{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///src/app/src/common/services/notification.ts","webpack:///./node_modules/aurelia-router/dist/native-modules/aurelia-router.js","webpack:///src/app/src/common/services/app-http-client.ts","webpack:///src/app/src/main/admin/services/companies/company-group-service.ts","webpack:///src/app/src/main/admin/services/agreements/agreement-plan-service.ts","webpack:///src/app/src/main/admin/services/thematic-groups/thematic-variables-service.ts","webpack:///src/app/src/main/admin/services/companies/company-settings-service.ts","webpack:///src/app/src/main/admin/services/perfiltic/perfiltic-service.ts","webpack:///src/app/src/models/questionaries/discType.ts","webpack:///src/app/src/models/security/user.ts","webpack:///src/app/src/models/test-position/positionActivationType.ts","webpack:///src/app/src/models/agreements/agreement.ts","webpack:///src/app/src/models/companies/company-settings.ts","webpack:///./node_modules/moment/moment.js","webpack:///src/app/src/models/scales/scale.ts","webpack:///src/app/src/models/test-organization/organizationActivationType.ts","webpack:///src/app/src/models/plans/spendMode.ts","webpack:///src/app/src/models/questions/reviewerStatusType.ts","webpack:///src/app/src/main/test/messages/personActivationMessage.ts","webpack:///src/app/src/main/admin/services/companies/company-group-master-service.ts","webpack:///src/app/src/main/admin/services/test-core/news-service.ts","webpack:///src/app/src/models/test-perfiltic/test.ts","webpack:///src/app/src/models/test-core/test-questionary.ts","webpack:///src/app/src/models/questionaries/questionaryType.ts","webpack:///src/app/src/main/test/services/people/bulk-download-service.ts","webpack:///src/app/src/main/admin/services/questionaries/custom-company-questionary-service.ts","webpack:///src/app/src/main/admin/services/users/core-user-service.ts","webpack:///src/app/src/main/admin/services/contacts/contact-service.ts","webpack:///src/app/src/main/admin/services/test-management/company-sheet-service.ts","webpack:///src/app/src/main/admin/services/test-management/category-sheet-service.ts","webpack:///src/app/src/main/admin/services/questionaries/custom-company-question-service.ts","webpack:///src/app/src/main/admin/services/thematic-groups/thematic-association-service.ts","webpack:///src/app/src/main/admin/services/scales/scale-service.ts","webpack:///src/app/src/main/admin/services/questionaries/modular-questionary-service.ts","webpack:///./node_modules/aurelia-metadata/dist/native-modules/aurelia-metadata.js","webpack:///src/app/src/main/admin/services/archetypes/archetype-service.ts","webpack:///./node_modules/toastr/toastr.js","webpack:///src/app/src/models/questionaries/questionaryLanguage.ts","webpack:///src/app/src/models/localizations/languages.ts","webpack:///src/app/src/models/contacts/contact.ts","webpack:///./node_modules/aurelia-open-id-connect/dist/native-modules/open-id-connect-constants.js","webpack:///src/app/src/models/test-core/inbox/inboxByUserStatus.ts","webpack:///src/app/src/models/test-person/personMode.ts","webpack:///src/app/src/models/test-person/activationType.ts","webpack:///src/app/src/models/wootric/WootricComponentName.ts","webpack:///src/app/src/models/questionaries/noDiscType.ts","webpack:///src/app/src/models/test-core/sheets/sheet.ts","webpack:///src/app/src/models/talents/wallet.ts","webpack:///src/app/src/models/talents/transaction.ts","webpack:///src/app/src/models/plans/testPlanItemType.ts","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/crypto-js/evpkdf.js","webpack:///./node_modules/aurelia-open-id-connect/dist/native-modules/open-id-connect-roles.js","webpack:///./node_modules/aurelia-dialog/dist/native-modules/dialog-cancel-error.js","webpack:///src/app/src/messages/currentCompanyChangeMessage.ts","webpack:///./node_modules/file-saver/FileSaver.js","webpack:///src/app/src/models/test-person/typeActivationUrl.ts","webpack:///src/app/src/models/questions/questionType.ts","webpack:///src/app/src/models/questionaries/organizationType.ts","webpack:///src/app/src/models/plans/planType.ts","webpack:///./node_modules/css-loader/lib/css-base.js","webpack:///./node_modules/crypto-js/enc-base64.js","webpack:///./node_modules/crypto-js/md5.js","webpack:///./node_modules/aurelia-dialog/dist/native-modules/renderer.js","webpack:///./node_modules/aurelia-dialog/dist/native-modules/dialog-settings.js","webpack:///src/app/src/models/test-core/inbox/inbox.ts","webpack:///src/app/src/main/test/messages/personDemographicDataEditMessage.ts","webpack:///src/app/src/models/team/team.ts","webpack:///src/app/src/main/admin/services/companies/core-company-service.ts","webpack:///src/app/src/models/test-organization/organization.ts","webpack:///src/app/src/models/thematic-groups/thematic-variable.ts","webpack:///src/app/src/models/thematic-groups/thematic-group.ts","webpack:///./node_modules/numeral/numeral.js","webpack:///./node_modules/aurelia-dialog/dist/native-modules/lifecycle.js","webpack:///src/app/src/models/test-person/whoCanSeeReport.ts","webpack:///src/app/src/main/admin/services/test-management/company-disc-profile-service.ts","webpack:///src/app/src/main/test/services/team/team-person-service.ts","webpack:///src/app/src/main/admin/services/agreements/agreement-master-service.ts","webpack:///src/app/src/main/admin/services/pdf/pdf-service.ts","webpack:///src/app/src/models/questions/questionUse.ts","webpack:///src/app/src/main/components/wootric.ts","webpack:///src/app/src/models/talents/transaction-type.ts","webpack:///src/app/src/main/admin/services/test-core/core-sheet-service.ts","webpack:///src/app/src/models/catalogs/educationalLevel.ts","webpack:///src/app/src/main/test/services/people/comment-service.ts","webpack:///src/app/src/main/test/services/people/email-history-service.ts","webpack:///src/app/src/main/test/services/people/person-observer-service.ts","webpack:///src/app/src/main/test/services/people/bulk-results-export-service.ts","webpack:///src/app/src/main/test/services/position/position-competence-service.ts","webpack:///src/app/src/main/test/services/team/team-activation-service.ts","webpack:///src/app/src/main/admin/services/localizations/core-language-service.ts","webpack:///src/app/src/models/agreements/activityStatus.ts","webpack:///src/app/src/models/talents/export-transaction-type.ts","webpack:///src/app/src/main/admin/services/talents/bulk-talents-export-service.ts","webpack:///src/app/src/main/admin/services/test-management/questionary-configuration-service.ts","webpack:///src/app/src/main/admin/services/questionaries/custom-company-modular-question-service.ts","webpack:///src/app/src/main/admin/services/questionaries/question-history-service.ts","webpack:///src/app/src/main/admin/services/messages/message-template-service.ts","webpack:///src/app/src/main/admin/services/groups/second-password-service.ts","webpack:///./node_modules/i18next/dist/es/logger.js","webpack:///./node_modules/i18next/dist/es/EventEmitter.js","webpack:///./node_modules/i18next/dist/es/utils.js","webpack:///./node_modules/i18next/dist/es/ResourceStore.js","webpack:///./node_modules/i18next/dist/es/postProcessor.js","webpack:///./node_modules/i18next/dist/es/Translator.js","webpack:///./node_modules/i18next/dist/es/LanguageUtils.js","webpack:///./node_modules/i18next/dist/es/PluralResolver.js","webpack:///./node_modules/i18next/dist/es/Interpolator.js","webpack:///./node_modules/i18next/dist/es/BackendConnector.js","webpack:///./node_modules/i18next/dist/es/CacheConnector.js","webpack:///./node_modules/i18next/dist/es/defaults.js","webpack:///./node_modules/i18next/dist/es/i18next.js","webpack:///./node_modules/i18next/dist/es/index.js","webpack:///./node_modules/style-loader/lib/addStyles.js","webpack:///./src/config.js","webpack:///./node_modules/aurelia-permission/dist/amd/authorization-service.js","webpack:///./node_modules/aurelia-dialog/dist/native-modules/dialog-controller.js","webpack:///./node_modules/aurelia-templating-router/dist/native-modules/router-view.js","webpack:///./node_modules/aurelia-history/dist/native-modules/aurelia-history.js","webpack:///src/app/src/messages/companyDeletedMessage.ts","webpack:///src/app/src/models/microsite/demographicData.ts","webpack:///src/app/src/models/test-person/personObserver.ts","webpack:///src/app/src/main/test/services/people/response-questionary-videointerview-service.ts","webpack:///src/app/src/models/questions/topic.ts","webpack:///./node_modules/crypto-js/index.js","webpack:///./node_modules/bluebird/js/browser/bluebird.js-exposed","webpack:///src/app/src/main/test/services/people/person-service.ts","webpack:///src/app/src/models/test-position/positionExportStatus.ts","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/crypto-js/x64-core.js","webpack:///./assets/images/featured_star.svg","webpack:///./assets/images/logo.png","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/array-repeat-strategy.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/map-repeat-strategy.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/set-repeat-strategy.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/number-repeat-strategy.js","webpack:///./node_modules/aurelia-open-id-connect/dist/native-modules/open-id-connect.js","webpack:///src/app/src/models/test-reports/reports/parameter.ts","webpack:///./node_modules/aurelia-dialog/dist/native-modules/dialog-configuration.js","webpack:///./node_modules/aurelia-i18n/dist/native-modules/defaultTranslations/relative.time.js","webpack:///./node_modules/aurelia-i18n/dist/native-modules/relativeTime.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/if-core.js","webpack:///./node_modules/aurelia-i18n/dist/native-modules/utils.js","webpack:///src/app/src/models/test-management/disc-profiles/company-disc-profile.ts","webpack:///src/app/src/models/test-core/news/news.ts","webpack:///src/app/src/models/test-management/questionary-groups/questionary-group-thematic-associate.ts","webpack:///src/app/src/main/test/messages/personCommentEditMessage.ts","webpack:///src/app/src/models/test-person/comment.ts","webpack:///src/app/src/models/test-position/positionEvaluator.ts","webpack:///src/app/src/models/questionaries/itemToQualify.ts","webpack:///src/app/src/models/team/teamPerson.ts","webpack:///src/app/src/models/test-organization/organizationEvaluator.ts","webpack:///src/app/src/models/profiles/profile.ts","webpack:///src/app/src/models/agreements/observationType.ts","webpack:///src/app/src/models/agreements/activity.ts","webpack:///src/app/src/models/agreements/agreementFile.ts","webpack:///src/app/src/messages/talentAssigmentMessage.ts","webpack:///src/app/src/models/test-management/disc-styles/company-disc-style.ts","webpack:///src/app/src/models/questions/questionHistory.ts","webpack:///src/app/src/models/plans/test-plan-item.ts","webpack:///src/app/src/main/admin/services/agreements/agreement-service.ts","webpack:///src/app/src/models/plans/other-plan-item.ts","webpack:///./node_modules/moment-timezone/index.js","webpack:///./node_modules/corejs-typeahead/dist/bloodhound.js","webpack:///./node_modules/nprogress/nprogress.js","webpack:///src/app/src/models/test-core/competences/check-status-company-competence.ts","webpack:///./node_modules/bluebird/js/browser/bluebird.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/jquery/dist/jquery.js-exposed","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/crypto-js/sha1.js","webpack:///./node_modules/aurelia-dependency-injection/dist/native-modules/aurelia-dependency-injection.js","webpack:///./node_modules/crypto-js/hmac.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/compose.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/if.js","webpack:///./node_modules/flatpickr/dist/flatpickr.js","webpack:///./node_modules/aurelia-route-recognizer/dist/native-modules/aurelia-route-recognizer.js","webpack:///src/app/src/main/test/services/people/public-person-service.ts","webpack:///src/app/src/common/services/public-http-client.ts","webpack:///src/app/src/main/components/sales-iq.ts","webpack:///src/app/src/main/components/survey-zoho.ts","webpack:///src/app/src/main/admin/services/test-management/company-test-plan-service.ts","webpack:///src/app/src/models/test-reports/reports/report.ts","webpack:///./node_modules/object-to-formdata/index.js","webpack:///src/app/src/common/utils/url-param-service.ts","webpack:///src/app/src/main/services/reports/default-colors-reports-service.ts","webpack:///src/app/src/main/admin/services/test-management/questionary-sheet-service.ts","webpack:///src/app/src/main/test/services/people/activation-thematic-associete-service.ts","webpack:///src/app/src/main/test/services/people/people-resume-service.ts","webpack:///src/app/src/models/microsite/responseQuestionary.ts","webpack:///src/app/src/models/test-person/activationQuestionary.ts","webpack:///src/app/src/models/test-result/result.ts","webpack:///src/app/src/main/test/services/people/crypto-service.ts","webpack:///src/app/src/models/test-person/person.ts","webpack:///src/app/src/main/test/services/position/position-export-by-company-service.ts","webpack:///src/app/src/main/test/services/position/position-evaluator-service.ts","webpack:///src/app/src/main/test/services/team/team-person-activation-service.ts","webpack:///src/app/src/main/test/services/team/team-evaluator-service.ts","webpack:///src/app/src/main/test/services/organization/organization-evaluator-service.ts","webpack:///src/app/src/main/test/services/tags/tags-managment-service.ts","webpack:///src/app/src/main/test/services/archive/archive-service.ts","webpack:///src/app/src/main/admin/services/groups/permission-service.ts","webpack:///src/app/src/main/admin/services/agreements/agreement-terms-pay-service.ts","webpack:///src/app/src/main/admin/services/agreements/agreement-customer-req-service.ts","webpack:///src/app/src/main/admin/services/questionaries/questionary-service.ts","webpack:///src/app/src/main/admin/services/franchises/business-company-service.ts","webpack:///src/app/src/main/admin/services/franchises/bank-information-service.ts","webpack:///src/app/src/main/admin/services/agreements/activity-service.ts","webpack:///src/app/src/main/admin/services/agreements/agreement-file-service.ts","webpack:///src/app/src/main/admin/services/companies/company-detail-master-service.ts","webpack:///src/app/src/main/admin/services/companies/password-policy-service.ts","webpack:///src/app/src/main/admin/services/talents/talent-plan-service.ts","webpack:///src/app/src/main/test/services/buk/buk-service.ts","webpack:///src/app/src/main/admin/services/test-management/company-disc-style-service.ts","webpack:///src/app/src/models/questions/video-interview-configuration-status.ts","webpack:///src/app/src/models/security/role.ts","webpack:///src/app/src/main/admin/services/test-management/report-template-predictor-service.ts","webpack:///src/app/src/main/admin/services/test-management/default-colors-reports-service.ts","webpack:///src/app/src/main/admin/services/messages/message-summary-service.ts","webpack:///src/app/src/main/admin/services/users/user-api-application-service.ts","webpack:///src/app/src/main/admin/services/test-core/core-company-competence-service.ts","webpack:///src/app/src/main/admin/services/test-core/core-sheet-language-service.ts","webpack:///src/app/src/main/admin/services/test-core/inbox-by-user-service.ts","webpack:///src/app/src/main/admin/services/groups/core-permission-service.ts","webpack:///src/app/src/main/admin/services/plans/plan-questionary-service.ts","webpack:///src/app/src/main/admin/services/plans/plan-report-service.ts","webpack:///./node_modules/jquery/dist/jquery.js-exposed?28a1","webpack:///src/app/src/main/admin/services/plans/plan-sheet-service.ts","webpack:///src/app/src/main/admin/services/plans/test-plan-item-service.ts","webpack:///src/app/src/main/admin/services/plans/other-plan-item-service.ts","webpack:///src/app/src/main/admin/services/messages/message-agreement-service.ts","webpack:///src/app/src/main/admin/services/messages/message-talent-service.ts","webpack:///src/app/src/main/admin/services/test-management/questionary-configuration-without-company-service.ts","webpack:///src/app/src/main/admin/services/archetypes/archetype-localization-service.ts","webpack:///src/app/src/main/test/services/position/position-localization-service.ts","webpack:///src/app/src/main/admin/services/habeas-data-by-country/habeas-data-country-service.ts","webpack:///src/app/src/main/admin/services/localizations/localization-service.ts","webpack:///./node_modules/aurelia-pal/dist/native-modules/aurelia-pal.js","webpack:///src/app/src/main/admin/services/test-management/report-template-service.ts","webpack:///src/app/src/main/admin/services/localizations/label-service.ts","webpack:///./node_modules/aurelia-i18n/dist/native-modules/base-i18n.js","webpack:///./node_modules/aurelia-i18n/dist/native-modules/aurelia-i18n-loader.js","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/moment/locale/ar.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/moment/locale/ar-sa.js","webpack:///src/app/src/main/admin/services/test-management/company-questionary-service.ts","webpack:///./node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/moment/locale/az.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/bg.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/moment/locale/br.js","webpack:///./node_modules/moment/locale/bs.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./node_modules/aurelia-logging/dist/native-modules/aurelia-logging.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/moment/locale/cv.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/de.js","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/moment/locale/dv.js","webpack:///./node_modules/moment/locale/el.js","webpack:///./node_modules/moment/locale/en-au.js","webpack:///src/app/src/common/services/session-service.ts","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/moment/locale/en-nz.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/moment/locale/es-us.js","webpack:///./node_modules/moment/locale/et.js","webpack:///src/app/src/main/admin/services/thematic-groups/thematic-group-service.ts","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/fa.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/moment/locale/fo.js","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/moment/locale/fy.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/moment/locale/gl.js","webpack:///src/app/src/main/admin/services/plans/plan-service.ts","webpack:///./node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/moment/locale/hr.js","webpack:///./node_modules/moment/locale/hu.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./node_modules/moment/locale/is.js","webpack:///./node_modules/moment/locale/it.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/repeat-utilities.js","webpack:///./node_modules/moment/locale/ja.js","webpack:///./node_modules/moment/locale/jv.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/moment/locale/kk.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./node_modules/moment/locale/ko.js","webpack:///./node_modules/moment/locale/ky.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///src/app/src/main/test/services/position/position-service.ts","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./node_modules/moment/locale/mi.js","webpack:///./node_modules/moment/locale/mk.js","webpack:///./node_modules/moment/locale/ml.js","webpack:///./node_modules/moment/locale/mn.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///src/app/src/main/test/services/people/activation-service.ts","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/moment/locale/my.js","webpack:///./node_modules/moment/locale/nb.js","webpack:///./node_modules/moment/locale/ne.js","webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/moment/locale/pl.js","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/crypto-js/core.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/moment/locale/ro.js","webpack:///./node_modules/moment/locale/ru.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/moment/locale/se.js","webpack:///./node_modules/moment/locale/si.js","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/moment/locale/sr.js","webpack:///src/app/src/common/store/store-service.ts","webpack:///src/app/src/common/utils/file-accept-validator.ts","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/te.js","webpack:///./node_modules/moment/locale/tet.js","webpack:///./node_modules/moment/locale/tg.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///src/app/src/main/test/services/people/activation-questionary-service.ts","webpack:///./node_modules/moment/locale/tlh.js","webpack:///./node_modules/moment/locale/tr.js","webpack:///./node_modules/moment/locale/tzl.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///src/app/src/main/admin/services/talents/transaction-service.ts","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./node_modules/aurelia-permission/dist/amd/permission-store.js","webpack:///./node_modules/aurelia-dialog/dist/native-modules/dialog-service.js","webpack:///./node_modules/bcx-aurelia-dnd/dist/index.js","webpack:///./node_modules/bcx-aurelia-reorderable-repeat/dist/reorderable-group-map.js","webpack:///src/app/src/main/services/catalogs/catalog-service.ts","webpack:///./node_modules/aurelia-bootstrap-tagsinput/dist/commonjs/picker-global-options.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./assets/images/tht_Adv_hrr_no_adq.png","webpack:///./node_modules/crypto-js/sha256.js","webpack:///./node_modules/crypto-js/sha512.js","webpack:///src/app/src/config/i18n-config.ts","webpack:///./node_modules/i18next-xhr-backend/index.js","webpack:///src/app/src/config/open-id-connect-configuration.ts","webpack:///src/app/src/config/quill-config.ts","webpack:///src/app/src/common/store/store-initial-state.ts","webpack:///./node_modules/oidc-client/lib/oidc-client.min.js","webpack:///src/app/src/messages/peopleLoadedMessage.ts","webpack:///./node_modules/aurelia-open-id-connect/dist/native-modules/open-id-connect-routing.js","webpack:///./node_modules/aurelia-open-id-connect/dist/native-modules/open-id-connect-authorize-step.js","webpack:///./node_modules/aurelia-open-id-connect/dist/native-modules/open-id-connect-navigation-strategies.js","webpack:///./node_modules/aurelia-dialog/dist/native-modules/dialog-renderer.js","webpack:///./node_modules/aurelia-dialog/dist/native-modules/dialog-close-error.js","webpack:///./node_modules/extend/index.js","webpack:///./node_modules/flatpickr/dist/l10n/es.js","webpack:///src/app/src/models/test-reports/reports/reportActivation.ts","webpack:///src/app/src/models/test-person/bulkDownload.ts","webpack:///src/app/src/models/test-person/tests.ts","webpack:///src/app/src/models/test-person/personResume.ts","webpack:///src/app/src/models/emails-history/email-history.ts","webpack:///src/app/src/models/test-person/bulkResultsExport.ts","webpack:///src/app/src/models/test-position/positionExportByCompany.ts","webpack:///src/app/src/models/test-position/positionCompetence.ts","webpack:///src/app/src/common/utils/request-sequencer.ts","webpack:///src/app/src/models/companies/company-change.ts","webpack:///src/app/src/models/companies/company-group-master.ts","webpack:///src/app/src/models/agreements/quota.ts","webpack:///src/app/src/models/agreements/agreementTermsOfPay.ts","webpack:///src/app/src/main/test/services/team/team-service.ts","webpack:///src/app/src/models/agreements/agreementCustomerReq.ts","webpack:///src/app/src/models/companies/company-detail-master.ts","webpack:///src/app/src/models/companies/password-policy.ts","webpack:///src/app/src/models/talents/bulkTalentsExport.ts","webpack:///src/app/src/models/test-core/report-templates/report-template-thematic-associate.ts","webpack:///src/app/src/models/test-core/report-templates/disc-selection-options/disc-selection-reason-code.ts","webpack:///src/app/src/models/test-management/questionary-groups/questionaryGroup.ts","webpack:///src/app/src/models/messages/message-summary-report.ts","webpack:///src/app/src/models/security/userApiApplication.ts","webpack:///src/app/src/models/security/password-validation.ts","webpack:///src/app/src/main/admin/services/groups/group-service.ts","webpack:///src/app/src/models/test-core/sheets/sheetLanguage.ts","webpack:///src/app/src/models/test-core/inbox/inboxByUser.ts","webpack:///src/app/src/models/second-password/reset-second-password.ts","webpack:///src/app/src/models/second-password/second-password.ts","webpack:///src/app/src/models/companies/company-group.ts","webpack:///src/app/src/models/companies/company-detail.ts","webpack:///src/app/src/models/questionaries/questionaryLocalization.ts","webpack:///src/app/src/models/questionaries/localizationType.ts","webpack:///src/app/src/models/archetypes/archetype.ts","webpack:///src/app/src/models/educational-levels-by-country/educational-level-country.ts","webpack:///src/app/src/main/admin/services/localizations/language-service.ts","webpack:///src/app/src/models/habeas-data-by-country/habeas-data-country.ts","webpack:///src/app/src/models/localizations/language.ts","webpack:///src/app/src/models/localizations/localization.ts","webpack:///src/app/src/models/localizations/label.ts","webpack:///./node_modules/nprogress/nprogress.css?ab9a","webpack:///./node_modules/nprogress/nprogress.css","webpack:///./node_modules/style-loader/lib/urls.js","webpack:///./node_modules/toastr/build/toastr.min.css?4a13","webpack:///./node_modules/aurelia-path/dist/native-modules/aurelia-path.js","webpack:///./node_modules/toastr/build/toastr.min.css","webpack:///./node_modules/quill/dist/quill.snow.css?3beb","webpack:///./node_modules/quill/dist/quill.snow.css","webpack:///./node_modules/bootstrap-tagsinput/dist/bootstrap-tagsinput.css?02af","webpack:///./node_modules/bootstrap-tagsinput/dist/bootstrap-tagsinput.css","webpack:///./assets/styles/main.scss?75b6","webpack:///./assets/styles/main.scss","webpack:///./node_modules/i18next-xhr-backend/dist/commonjs/index.js","webpack:///./node_modules/i18next-xhr-backend/dist/commonjs/utils.js","webpack:///./node_modules/i18next-xhr-backend/dist/commonjs/ajax.js","webpack:///src/app/src/common/services/bootstrap-form-renderer.ts","webpack:///src/app/src/models/companies/company.ts","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./node_modules/moment-timezone/moment-timezone.js","webpack:///./node_modules/numeral/locales.js","webpack:///./node_modules/corejs-typeahead/dist/typeahead.bundle.js","webpack:///./node_modules/aurelia-permission/dist/amd/authorize-route-step.js","webpack:///./node_modules/quill/dist/quill.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/base64-js/index.js","webpack:///src/app/src/models/test-person/personActivationType.ts","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/bcx-aurelia-reorderable-repeat/dist/reorderable-repeat.js","webpack:///./node_modules/bcx-aurelia-reorderable-repeat/dist/reorderable-repeat-strategy-locator.js","webpack:///./node_modules/bcx-aurelia-reorderable-repeat/dist/simple-array-repeat-strategy.js","webpack:///./node_modules/bcx-aurelia-reorderable-repeat/dist/repeater-dnd-type.js","webpack:///./node_modules/bcx-aurelia-reorderable-repeat/dist/reorderable-direction.js","webpack:///./node_modules/bcx-aurelia-reorderable-repeat/dist/reorderable-group.js","webpack:///./node_modules/bcx-aurelia-reorderable-repeat/dist/reorderable-group-for.js","webpack:///./node_modules/bcx-aurelia-reorderable-repeat/dist/reorderable-dnd-preview.js","webpack:///src/app/src/models/security/userState.ts","webpack:///./node_modules/bcx-aurelia-reorderable-repeat/dist/reorderable-dnd-handler-selector.js","webpack:///./node_modules/bcx-aurelia-reorderable-repeat/dist/reorderable-after-reordering.js","webpack:///./node_modules/bootstrap-tagsinput/dist/bootstrap-tagsinput.js","webpack:///./node_modules/aurelia-bootstrap-tagsinput/dist/commonjs/picker-config.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./assets/images/logotype-2025.svg","webpack:///./assets/images/avatar.png","webpack:///./assets/images/logo-tht.svg","webpack:///./assets/images/logo-tht-2025.svg","webpack:///./assets/images/logo-tht-blue.svg","webpack:///src/app/src/main/admin/services/users/user-service.ts","webpack:///./assets/images/notification-icon.svg","webpack:///./assets/images/tht_photo_check_match.svg","webpack:///./assets/images/download-not-available.svg","webpack:///./node_modules/crypto-js/lib-typedarrays.js","webpack:///./node_modules/crypto-js/enc-utf16.js","webpack:///./node_modules/crypto-js/enc-base64url.js","webpack:///./node_modules/crypto-js/sha224.js","webpack:///./node_modules/crypto-js/sha384.js","webpack:///./node_modules/crypto-js/sha3.js","webpack:///src/app/src/models/test-person/activation.ts","webpack:///./node_modules/crypto-js/ripemd160.js","webpack:///./node_modules/crypto-js/pbkdf2.js","webpack:///./node_modules/crypto-js/mode-cfb.js","webpack:///./node_modules/crypto-js/mode-ctr.js","webpack:///./node_modules/crypto-js/mode-ctr-gladman.js","webpack:///./node_modules/crypto-js/mode-ofb.js","webpack:///./node_modules/crypto-js/mode-ecb.js","webpack:///./node_modules/crypto-js/pad-ansix923.js","webpack:///./node_modules/crypto-js/pad-iso10126.js","webpack:///./node_modules/crypto-js/pad-iso97971.js","webpack:///src/app/src/models/agreements/agreementStatus.ts","webpack:///./node_modules/crypto-js/pad-zeropadding.js","webpack:///./node_modules/crypto-js/pad-nopadding.js","webpack:///./node_modules/crypto-js/format-hex.js","webpack:///./node_modules/crypto-js/aes.js","webpack:///./node_modules/crypto-js/tripledes.js","webpack:///./node_modules/crypto-js/rc4.js","webpack:///./node_modules/crypto-js/rabbit.js","webpack:///./node_modules/crypto-js/rabbit-legacy.js","webpack:///./assets/images/tht_photo_check_insufficient_data.svg","webpack:///./node_modules/aurelia-webpack-plugin/runtime/pal-loader-entry.js","webpack:///src/app/src/models/questionaries/questionary.ts","webpack:///./node_modules/aurelia-loader-webpack/dist/native-modules/aurelia-loader-webpack.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/aurelia-bootstrapper/dist/native-modules/aurelia-bootstrapper.js","webpack:///./node_modules/aurelia-polyfills/dist/native-modules/aurelia-polyfills.js","webpack:///src/app/src/models/questions/response-option.ts","webpack:///src/app/src/models/test-core/report-templates/report-template.ts","webpack:///src/app/src/main/admin/services/talents/wallet-service.ts","webpack:///src/app/src/config/predefined-permissions.ts","webpack:///src/app/src/main/test/services/organization/organization-service.ts","webpack:///src/app/src/main/admin/services/questionaries/question-service.ts","webpack:///src/app/src/main/test-reports/services/report-service.ts","webpack:///src/app/src/main/admin/services/groups/core-group-service.ts","webpack:///src/app/src/models/questions/question.ts","webpack:///src/app/src/models/test-person/bulkActivation.ts","webpack:///(webpack)/buildin/global.js","webpack:///src/app/src/common/utils/utility.ts","webpack:///src/app/src/main/admin/services/test-management/company-competence-service.ts","webpack:///./node_modules/crypto-js/cipher-core.js","webpack:///src/app/src/common/services/company-app-http-client.ts","webpack:///./node_modules/aurelia-task-queue/dist/native-modules/aurelia-task-queue.js","webpack:///src/app/src/models/test-person/activationThematicAssociate.ts","webpack:///src/app/src/messages/userInfoLoadedMessage.ts","webpack:///src/app/src/models/groups/group.ts","webpack:///./node_modules/aurelia-loader/dist/native-modules/aurelia-loader.js","webpack:///src/app/src/models/plans/plan.ts","webpack:///src/app/src/models/security/userExportStatus.ts","webpack:///./node_modules/aurelia-i18n/dist/native-modules/i18n.js","webpack:///src/app/src/main/test/services/people/bulk-activation-service.ts","webpack:///src/app/src/main/admin/services/test-management/questionary-group-service.ts","webpack:///./node_modules/aurelia-binding/dist/native-modules/aurelia-binding.js","webpack:///src/app/src/main/test/services/result/result-service.ts","webpack:///src/app/src/main/test/services/core/disc-adjective-service.ts","webpack:///src/app/src/main/admin/services/questionaries/custom-company-modular-questionary-service.ts","webpack:///src/app/src/main/admin/services/companies/company-detail-service.ts","webpack:///src/app/src/models/questions/questionInteractionType.ts","webpack:///./node_modules/aurelia-fetch-client/dist/native-modules/aurelia-fetch-client.js","webpack:///src/app/src/messages/companyEditedMessage.ts","webpack:///src/app/src/messages/companiesLoadedMessage.ts","webpack:///./node_modules/aurelia-open-id-connect/dist/native-modules/open-id-connect-configuration-manager.js","webpack:///./node_modules/aurelia-open-id-connect/dist/native-modules/open-id-connect-logger.js","webpack:///./node_modules/aurelia-templating/dist/native-modules/aurelia-templating.js","webpack:///src/app/src/models/agreements/observation.ts","webpack:///src/app/src/models/test-position/position.ts","webpack:///src/app/src/main/services/companies/company-info-service.ts","webpack:///src/app/src/main/admin/services/test-core/inbox-service.ts","webpack:///src/app/src/main/admin/services/agreements/observation-service.ts","webpack:///src/app/src/main/admin/services/service-rating/service-rating-service.ts","webpack:///src/app/src/main/test/services/people/person-demographic-data-service.ts","webpack:///src/app/src/main/admin/services/educational-levels-by-country/educational-level-country-service.ts","webpack:///src/app/src/main/admin/services/profiles/profile-service.ts","webpack:///src/app/src/main/admin/services/users/master-user-service.ts","webpack:///src/app/src/app.ts","webpack:///./src/app.html","webpack:///./node_modules/aurelia-animator-css/dist/native-modules/aurelia-animator-css.js","webpack:///./node_modules/aurelia-bootstrap-tagsinput/dist/commonjs/index.js","webpack:///./node_modules/aurelia-bootstrap-tagsinput/dist/commonjs/abp-tags-input.js","webpack:///./node_modules/aurelia-bootstrap-tagsinput/dist/commonjs/abp-tags-input.html","webpack:///./node_modules/aurelia-dialog/dist/native-modules/aurelia-dialog.js","webpack:///./node_modules/aurelia-event-aggregator/dist/native-modules/aurelia-event-aggregator.js","webpack:///./node_modules/aurelia-flatpickr/dist/commonjs/index.js","webpack:///./node_modules/aurelia-flatpickr/dist/commonjs/aurelia-flatpickr.js","webpack:///./node_modules/aurelia-flatpickr/dist/commonjs/aurelia-flatpickr.html","webpack:///./node_modules/aurelia-framework/dist/native-modules/aurelia-framework.js","webpack:///./node_modules/aurelia-history-browser/dist/native-modules/aurelia-history-browser.js","webpack:///./node_modules/aurelia-i18n/dist/native-modules/aurelia-i18n.js","webpack:///./node_modules/aurelia-i18n/dist/native-modules/df.js","webpack:///./node_modules/aurelia-i18n/dist/native-modules/nf.js","webpack:///./node_modules/aurelia-i18n/dist/native-modules/rt.js","webpack:///./node_modules/aurelia-i18n/dist/native-modules/t.js","webpack:///./node_modules/aurelia-logging-console/dist/native-modules/aurelia-logging-console.js","webpack:///./node_modules/aurelia-open-id-connect/dist/native-modules/open-id-connect-configuration.js","webpack:///./node_modules/aurelia-open-id-connect/dist/native-modules/open-id-connect-factory.js","webpack:///./node_modules/aurelia-open-id-connect/dist/native-modules/plugin.js","webpack:///./node_modules/aurelia-open-id-connect/dist/native-modules/open-id-connect-navigation-filter.js","webpack:///./node_modules/aurelia-open-id-connect/dist/native-modules/open-id-connect-user-block.js","webpack:///./node_modules/aurelia-open-id-connect/dist/native-modules/open-id-connect-user-block.html","webpack:///./node_modules/aurelia-open-id-connect/dist/native-modules/open-id-connect-user-debug.js","webpack:///./node_modules/aurelia-open-id-connect/dist/native-modules/open-id-connect-user-debug.html","webpack:///./node_modules/aurelia-pal-browser/dist/native-modules/aurelia-pal-browser.js","webpack:///./node_modules/aurelia-permission/dist/amd/aurelia-permission.js","webpack:///./node_modules/aurelia-permission/dist/amd/global-permission-enable.js","webpack:///./node_modules/aurelia-permission/dist/amd/global-permission-show.js","webpack:///./node_modules/aurelia-permission/dist/amd/permission-filter.js","webpack:///./node_modules/aurelia-quill-plugin/dist/commonjs/index.js","webpack:///./node_modules/aurelia-quill-plugin/dist/commonjs/quill-editor.js","webpack:///./node_modules/aurelia-templating-binding/dist/native-modules/aurelia-templating-binding.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/else.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/with.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/null-repeat-strategy.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/repeat-strategy-locator.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/analyze-view-factory.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/abstract-repeater.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/repeat.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/show.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/aurelia-hide-style.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/hide.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/sanitize-html.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/replaceable.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/focus.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/html-sanitizer.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/css-resource.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/attr-binding-behavior.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/binding-mode-behaviors.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/throttle-binding-behavior.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/debounce-binding-behavior.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/self-binding-behavior.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/signal-binding-behavior.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/update-trigger-binding-behavior.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/binding-signaler.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/html-resource-plugin.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/dynamic-element.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/aurelia-templating-resources.js","webpack:///./node_modules/aurelia-templating-router/dist/native-modules/route-loader.js","webpack:///./node_modules/aurelia-templating-router/dist/native-modules/route-href.js","webpack:///./node_modules/aurelia-templating-router/dist/native-modules/aurelia-templating-router.js","webpack:///./node_modules/aurelia-ui-virtualization/dist/native-modules/aurelia-ui-virtualization.js","webpack:///./node_modules/aurelia-validation/dist/native-modules/aurelia-validation.js","webpack:///./node_modules/bcx-aurelia-reorderable-repeat/dist/index.js","webpack:///src/app/src/common/resources/attributes/t-html.ts","webpack:///src/app/src/common/resources/elements/ux/back-to-top/back-to-top.ts","webpack:///src/app/src/common/resources/elements/ux/bootstrap-tooltip/bootstrap-tooltip.ts","webpack:///src/app/src/common/resources/elements/ux/breadcrumbs/ux-aurelia-crumbs.ts","webpack:///./src/common/resources/elements/ux/breadcrumbs/ux-aurelia-crumbs.html","webpack:///src/app/src/common/resources/elements/ux/carousel/carousel.ts","webpack:///./src/common/resources/elements/ux/carousel/carousel.html","webpack:///src/app/src/common/resources/elements/ux/clipboard/ux-clipboard.ts","webpack:///src/app/src/common/resources/elements/ux/datatable/ux-datatable.ts","webpack:///src/app/src/common/resources/elements/ux/datatable/ux-datatable-pagination.ts","webpack:///src/app/src/common/resources/elements/ux/date-picker/ux-date-picker.ts","webpack:///./src/common/resources/elements/ux/date-picker/ux-date-picker.html","webpack:///src/app/src/common/resources/elements/ux/loading-indicator/ux-loading-indicator.ts","webpack:///src/app/src/common/resources/elements/ux/range-input/range-input.ts","webpack:///./src/common/resources/elements/ux/range-input/range-input.html","webpack:///./src/common/resources/elements/ux/side-well/ux-side-well.html","webpack:///./src/common/resources/elements/ux/validation-summary/ux-validation-summary.html","webpack:///./src/common/resources/elements/ux/well/ux-well.html","webpack:///src/app/src/common/resources/index.ts","webpack:///src/app/src/common/resources/value-converters/currency-format.ts","webpack:///src/app/src/common/resources/value-converters/date-format.ts","webpack:///src/app/src/common/resources/value-converters/date-time-format.ts","webpack:///src/app/src/common/resources/value-converters/filter.ts","webpack:///./node_modules/flatpickr/dist/flatpickr.css","webpack:///src/app/src/gui.ts","webpack:///./src/gui.html","webpack:///src/app/src/home.ts","webpack:///./src/home.html","webpack:///src/app/src/main.ts","webpack:///src/app/src/main/admin/admin-child-router.ts","webpack:///./src/main/admin/admin-child-router.html","webpack:///src/app/src/main/admin/pages/agreements/agreement-list.ts","webpack:///src/app/src/main/admin/pages/agreements/agreement-list-child-router.ts","webpack:///./src/main/admin/pages/agreements/agreement-list-child-router.html","webpack:///./src/main/admin/pages/agreements/agreement-list.html","webpack:///src/app/src/main/admin/pages/agreements/agreement-readonly-mode-modal.ts","webpack:///./src/main/admin/pages/agreements/agreement-readonly-mode-modal.html","webpack:///src/app/src/main/admin/pages/agreements/agreements-to-approve.ts","webpack:///./src/main/admin/pages/agreements/agreements-to-approve.html","webpack:///src/app/src/main/admin/pages/agreements/change-state-agreement-confirmation.ts","webpack:///./src/main/admin/pages/agreements/change-state-agreement-confirmation.html","webpack:///src/app/src/main/admin/pages/agreements/edition/activity-list.ts","webpack:///./src/main/admin/pages/agreements/edition/activity-list.html","webpack:///src/app/src/main/admin/pages/agreements/edition/activity-modal.ts","webpack:///./src/main/admin/pages/agreements/edition/activity-modal.html","webpack:///src/app/src/main/admin/pages/agreements/edition/agreement-customer-req.ts","webpack:///./src/main/admin/pages/agreements/edition/agreement-customer-req.html","webpack:///src/app/src/main/admin/pages/agreements/edition/agreement-edit.ts","webpack:///./src/main/admin/pages/agreements/edition/agreement-edit.html","webpack:///src/app/src/main/admin/pages/agreements/edition/agreement-file-list.ts","webpack:///./src/main/admin/pages/agreements/edition/agreement-file-list.html","webpack:///src/app/src/main/admin/pages/agreements/edition/agreement-file-modal.ts","webpack:///./src/main/admin/pages/agreements/edition/agreement-file-modal.html","webpack:///src/app/src/main/admin/pages/agreements/edition/agreement-terms-pay-edit.ts","webpack:///./src/main/admin/pages/agreements/edition/agreement-terms-pay-edit.html","webpack:///src/app/src/main/admin/pages/agreements/edition/edition-child-router.ts","webpack:///./src/main/admin/pages/agreements/edition/edition-child-router.html","webpack:///src/app/src/main/admin/pages/agreements/edition/quota-modal.ts","webpack:///./src/main/admin/pages/agreements/edition/quota-modal.html","webpack:///src/app/src/main/admin/pages/agreements/edition/terms-conditions-edit.ts","webpack:///./src/main/admin/pages/agreements/edition/terms-conditions-edit.html","webpack:///src/app/src/main/admin/pages/agreements/edition/test-plan-item-list-modal.ts","webpack:///./src/main/admin/pages/agreements/edition/test-plan-item-list-modal.html","webpack:///src/app/src/main/admin/pages/agreements/readonly/addendum-list.ts","webpack:///./src/main/admin/pages/agreements/readonly/addendum-list.html","webpack:///src/app/src/main/admin/pages/agreements/readonly/addendum-modal.ts","webpack:///./src/main/admin/pages/agreements/readonly/addendum-modal.html","webpack:///src/app/src/main/admin/pages/agreements/readonly/agreement-readonly-mode.ts","webpack:///./src/main/admin/pages/agreements/readonly/agreement-readonly-mode.html","webpack:///src/app/src/main/admin/pages/agreements/readonly/internal-notes-list.ts","webpack:///./src/main/admin/pages/agreements/readonly/internal-notes-list.html","webpack:///src/app/src/main/admin/pages/agreements/readonly/note-modal.ts","webpack:///./src/main/admin/pages/agreements/readonly/note-modal.html","webpack:///src/app/src/main/admin/pages/agreements/readonly/public-notes-list.ts","webpack:///./src/main/admin/pages/agreements/readonly/public-notes-list.html","webpack:///src/app/src/main/admin/pages/agreements/readonly/readonly-child-router.ts","webpack:///./src/main/admin/pages/agreements/readonly/readonly-child-router.html","webpack:///src/app/src/main/admin/pages/archetypes/archetype-child-router.ts","webpack:///./src/main/admin/pages/archetypes/archetype-child-router.html","webpack:///src/app/src/main/admin/pages/archetypes/archetype-edit.ts","webpack:///./src/main/admin/pages/archetypes/archetype-edit.html","webpack:///src/app/src/main/admin/pages/archetypes/archetype-list.ts","webpack:///src/app/src/main/admin/pages/archetypes/archetype-list-child-router.ts","webpack:///./src/main/admin/pages/archetypes/archetype-list-child-router.html","webpack:///./src/main/admin/pages/archetypes/archetype-list.html","webpack:///src/app/src/main/admin/pages/archetypes/archetype-modal.ts","webpack:///./src/main/admin/pages/archetypes/archetype-modal.html","webpack:///src/app/src/main/admin/pages/archetypes/localizations/archetype-localization-list.ts","webpack:///./src/main/admin/pages/archetypes/localizations/archetype-localization-list.html","webpack:///src/app/src/main/admin/pages/archetypes/localizations/archetype-localization-modal.ts","webpack:///./src/main/admin/pages/archetypes/localizations/archetype-localization-modal.html","webpack:///src/app/src/main/admin/pages/companies-master/company-master-child-router.ts","webpack:///./src/main/admin/pages/companies-master/company-master-child-router.html","webpack:///src/app/src/main/admin/pages/companies-master/company-master-edit.ts","webpack:///./src/main/admin/pages/companies-master/company-master-edit.html","webpack:///src/app/src/main/admin/pages/companies/company-child-router.ts","webpack:///./src/main/admin/pages/companies/company-child-router.html","webpack:///src/app/src/main/admin/pages/companies/company-edit.ts","webpack:///./src/main/admin/pages/companies/company-edit.html","webpack:///src/app/src/main/admin/pages/companies/company-external-activations-edit.ts","webpack:///./src/main/admin/pages/companies/company-external-activations-edit.html","webpack:///src/app/src/main/admin/pages/companies/company-password-policy-edit.ts","webpack:///./src/main/admin/pages/companies/company-password-policy-edit.html","webpack:///src/app/src/main/admin/pages/companies/company-settings-edit.ts","webpack:///./src/main/admin/pages/companies/company-settings-edit.html","webpack:///src/app/src/main/admin/pages/company-groups-master/company-group-master-child-router.ts","webpack:///./src/main/admin/pages/company-groups-master/company-group-master-child-router.html","webpack:///src/app/src/main/admin/pages/company-groups-master/company-group-master-list-child-router.ts","webpack:///./src/main/admin/pages/company-groups-master/company-group-master-list-child-router.html","webpack:///src/app/src/main/admin/pages/company-groups-master/company-group-master-list-selector.ts","webpack:///./src/main/admin/pages/company-groups-master/company-group-master-list-selector.html","webpack:///src/app/src/main/admin/pages/company-groups-master/company-group-master-view.ts","webpack:///./src/main/admin/pages/company-groups-master/company-group-master-view.html","webpack:///src/app/src/main/admin/pages/company-groups-master/company-list-selector.ts","webpack:///./src/main/admin/pages/company-groups-master/company-list-selector.html","webpack:///src/app/src/main/admin/pages/company-groups/company-group-child-router.ts","webpack:///./src/main/admin/pages/company-groups/company-group-child-router.html","webpack:///src/app/src/main/admin/pages/company-groups/company-group-edit.ts","webpack:///./src/main/admin/pages/company-groups/company-group-edit.html","webpack:///src/app/src/main/admin/pages/company-groups/company-group-franchise-list-child-router.ts","webpack:///./src/main/admin/pages/company-groups/company-group-franchise-list-child-router.html","webpack:///src/app/src/main/admin/pages/company-groups/company-group-franchises.ts","webpack:///./src/main/admin/pages/company-groups/company-group-franchises.html","webpack:///src/app/src/main/admin/pages/company-groups/company-group-list.ts","webpack:///src/app/src/main/admin/pages/company-groups/company-group-list-child-router.ts","webpack:///./src/main/admin/pages/company-groups/company-group-list-child-router.html","webpack:///./src/main/admin/pages/company-groups/company-group-list.html","webpack:///src/app/src/main/admin/pages/contacts/contact-list.ts","webpack:///./src/main/admin/pages/contacts/contact-list.html","webpack:///src/app/src/main/admin/pages/contacts/contact-modal.ts","webpack:///./src/main/admin/pages/contacts/contact-modal.html","webpack:///src/app/src/main/admin/pages/core-groups/core-group-child-router.ts","webpack:///./src/main/admin/pages/core-groups/core-group-child-router.html","webpack:///src/app/src/main/admin/pages/core-groups/core-group-create-card.ts","webpack:///./src/main/admin/pages/core-groups/core-group-create-card.html","webpack:///src/app/src/main/admin/pages/core-groups/core-group-delete-modal.ts","webpack:///./src/main/admin/pages/core-groups/core-group-delete-modal.html","webpack:///src/app/src/main/admin/pages/core-groups/core-group-edit.ts","webpack:///./src/main/admin/pages/core-groups/core-group-edit.html","webpack:///src/app/src/main/admin/pages/core-groups/core-group-list.ts","webpack:///src/app/src/main/admin/pages/core-groups/core-group-list-child-router.ts","webpack:///./src/main/admin/pages/core-groups/core-group-list-child-router.html","webpack:///./src/main/admin/pages/core-groups/core-group-list.html","webpack:///src/app/src/main/admin/pages/core-groups/core-group-modal.ts","webpack:///./src/main/admin/pages/core-groups/core-group-modal.html","webpack:///src/app/src/main/admin/pages/core-groups/core-permissions/core-permission-edit.ts","webpack:///./src/main/admin/pages/core-groups/core-permissions/core-permission-edit.html","webpack:///src/app/src/main/admin/pages/core-groups/core-permissions/second-password-modal.ts","webpack:///./src/main/admin/pages/core-groups/core-permissions/second-password-modal.html","webpack:///src/app/src/main/admin/pages/core-groups/reset-second-password-card.ts","webpack:///./src/main/admin/pages/core-groups/reset-second-password-card.html","webpack:///src/app/src/main/admin/pages/core-groups/reset-second-password-modal.ts","webpack:///./src/main/admin/pages/core-groups/reset-second-password-modal.html","webpack:///src/app/src/main/admin/pages/core-users/core-user-child-router.ts","webpack:///./src/main/admin/pages/core-users/core-user-child-router.html","webpack:///./src/main/admin/pages/core-users/core-user-create-card.html","webpack:///src/app/src/main/admin/pages/core-users/core-user-edit.ts","webpack:///./src/main/admin/pages/core-users/core-user-edit.html","webpack:///src/app/src/main/admin/pages/core-users/core-user-list.ts","webpack:///src/app/src/main/admin/pages/core-users/core-user-list-child-router.ts","webpack:///./src/main/admin/pages/core-users/core-user-list-child-router.html","webpack:///./src/main/admin/pages/core-users/core-user-list.html","webpack:///src/app/src/main/admin/pages/educational-levels-by-country/educational-level-country-list.ts","webpack:///src/app/src/main/admin/pages/educational-levels-by-country/educational-level-country-list-child-router.ts","webpack:///./src/main/admin/pages/educational-levels-by-country/educational-level-country-list-child-router.html","webpack:///./src/main/admin/pages/educational-levels-by-country/educational-level-country-list.html","webpack:///src/app/src/main/admin/pages/educational-levels-by-country/educational-level-country-modal.ts","webpack:///./src/main/admin/pages/educational-levels-by-country/educational-level-country-modal.html","webpack:///./src/main/admin/pages/errors/admin-unknown-route.html","webpack:///src/app/src/main/admin/pages/franchises/franchise-dropdown-selector.ts","webpack:///./src/main/admin/pages/franchises/franchise-dropdown-selector.html","webpack:///src/app/src/main/admin/pages/franchises/franchise-selector.ts","webpack:///./src/main/admin/pages/franchises/franchise-selector.html","webpack:///src/app/src/main/admin/pages/groups/group-child-router.ts","webpack:///./src/main/admin/pages/groups/group-child-router.html","webpack:///src/app/src/main/admin/pages/groups/group-create-card.ts","webpack:///./src/main/admin/pages/groups/group-create-card.html","webpack:///src/app/src/main/admin/pages/groups/group-delete-modal.ts","webpack:///./src/main/admin/pages/groups/group-delete-modal.html","webpack:///src/app/src/main/admin/pages/groups/group-edit.ts","webpack:///./src/main/admin/pages/groups/group-edit.html","webpack:///src/app/src/main/admin/pages/groups/group-list.ts","webpack:///src/app/src/main/admin/pages/groups/group-list-child-router.ts","webpack:///./src/main/admin/pages/groups/group-list-child-router.html","webpack:///./src/main/admin/pages/groups/group-list.html","webpack:///src/app/src/main/admin/pages/groups/group-modal.ts","webpack:///./src/main/admin/pages/groups/group-modal.html","webpack:///src/app/src/main/admin/pages/groups/permissions/permission-edit.ts","webpack:///./src/main/admin/pages/groups/permissions/permission-edit.html","webpack:///src/app/src/main/admin/pages/habeas-data-by-country/habeas-data-country-list.ts","webpack:///src/app/src/main/admin/pages/habeas-data-by-country/habeas-data-country-list-child-router.ts","webpack:///./src/main/admin/pages/habeas-data-by-country/habeas-data-country-list-child-router.html","webpack:///./src/main/admin/pages/habeas-data-by-country/habeas-data-country-list.html","webpack:///src/app/src/main/admin/pages/home/home.ts","webpack:///./src/main/admin/pages/home/home.html","webpack:///src/app/src/main/admin/pages/labels/label-list.ts","webpack:///./src/main/admin/pages/labels/label-list.html","webpack:///src/app/src/main/admin/pages/labels/label-modal.ts","webpack:///./src/main/admin/pages/labels/label-modal.html","webpack:///src/app/src/main/admin/pages/languages/language-child-router.ts","webpack:///./src/main/admin/pages/languages/language-child-router.html","webpack:///./src/main/admin/pages/languages/language-create-card.html","webpack:///src/app/src/main/admin/pages/languages/language-edit.ts","webpack:///./src/main/admin/pages/languages/language-edit.html","webpack:///src/app/src/main/admin/pages/languages/language-list.ts","webpack:///src/app/src/main/admin/pages/languages/language-list-child-router.ts","webpack:///./src/main/admin/pages/languages/language-list-child-router.html","webpack:///./src/main/admin/pages/languages/language-list.html","webpack:///src/app/src/main/admin/pages/languages/localizations/localization-list.ts","webpack:///./src/main/admin/pages/languages/localizations/localization-list.html","webpack:///src/app/src/main/admin/pages/languages/localizations/localization-modal.ts","webpack:///./src/main/admin/pages/languages/localizations/localization-modal.html","webpack:///src/app/src/main/admin/pages/master-users/master-user-child-router.ts","webpack:///./src/main/admin/pages/master-users/master-user-child-router.html","webpack:///src/app/src/main/admin/pages/master-users/master-user-create-card.ts","webpack:///./src/main/admin/pages/master-users/master-user-create-card.html","webpack:///src/app/src/main/admin/pages/master-users/master-user-edit.ts","webpack:///./src/main/admin/pages/master-users/master-user-edit.html","webpack:///src/app/src/main/admin/pages/master-users/master-user-list.ts","webpack:///src/app/src/main/admin/pages/master-users/master-user-list-child-router.ts","webpack:///./src/main/admin/pages/master-users/master-user-list-child-router.html","webpack:///./src/main/admin/pages/master-users/master-user-list.html","webpack:///src/app/src/main/admin/pages/messages/message-child-router.ts","webpack:///./src/main/admin/pages/messages/message-child-router.html","webpack:///src/app/src/main/admin/pages/messages/message-edit.ts","webpack:///./src/main/admin/pages/messages/message-edit.html","webpack:///src/app/src/main/admin/pages/messages/message-franchise-agreement.ts","webpack:///./src/main/admin/pages/messages/message-franchise-agreement.html","webpack:///src/app/src/main/admin/pages/messages/message-franchise-child-router.ts","webpack:///./src/main/admin/pages/messages/message-franchise-child-router.html","webpack:///src/app/src/main/admin/pages/messages/message-franchise-list-child-router.ts","webpack:///./src/main/admin/pages/messages/message-franchise-list-child-router.html","webpack:///src/app/src/main/admin/pages/messages/message-franchise-main.ts","webpack:///./src/main/admin/pages/messages/message-franchise-main.html","webpack:///src/app/src/main/admin/pages/messages/message-franchise-talent.ts","webpack:///./src/main/admin/pages/messages/message-franchise-talent.html","webpack:///src/app/src/main/admin/pages/messages/message-franchises.ts","webpack:///./src/main/admin/pages/messages/message-franchises.html","webpack:///src/app/src/main/admin/pages/messages/message-list-child-router.ts","webpack:///./src/main/admin/pages/messages/message-list-child-router.html","webpack:///src/app/src/main/admin/pages/messages/message-main.ts","webpack:///./src/main/admin/pages/messages/message-main.html","webpack:///src/app/src/main/admin/pages/messages/message-summary.ts","webpack:///./src/main/admin/pages/messages/message-summary.html","webpack:///src/app/src/main/admin/pages/modular-questionaries/modular-questionary-child-router.ts","webpack:///./src/main/admin/pages/modular-questionaries/modular-questionary-child-router.html","webpack:///./src/main/admin/pages/modular-questionaries/modular-questionary-create-card.html","webpack:///src/app/src/main/admin/pages/modular-questionaries/modular-questionary-edit.ts","webpack:///./src/main/admin/pages/modular-questionaries/modular-questionary-edit.html","webpack:///src/app/src/main/admin/pages/modular-questionaries/modular-questionary-list.ts","webpack:///src/app/src/main/admin/pages/modular-questionaries/modular-questionary-list-child-router.ts","webpack:///./src/main/admin/pages/modular-questionaries/modular-questionary-list-child-router.html","webpack:///./src/main/admin/pages/modular-questionaries/modular-questionary-list.html","webpack:///src/app/src/main/admin/pages/modular-questionaries/modular-questions/modular-question-child-router.ts","webpack:///./src/main/admin/pages/modular-questionaries/modular-questions/modular-question-child-router.html","webpack:///./src/main/admin/pages/modular-questionaries/modular-questions/modular-question-create-card.html","webpack:///src/app/src/main/admin/pages/modular-questionaries/modular-questions/modular-question-edit.ts","webpack:///./src/main/admin/pages/modular-questionaries/modular-questions/modular-question-edit.html","webpack:///src/app/src/main/admin/pages/modular-questionaries/modular-questions/modular-question-list.ts","webpack:///src/app/src/main/admin/pages/modular-questionaries/modular-questions/modular-question-list-child-router.ts","webpack:///./src/main/admin/pages/modular-questionaries/modular-questions/modular-question-list-child-router.html","webpack:///./src/main/admin/pages/modular-questionaries/modular-questions/modular-question-list.html","webpack:///src/app/src/main/admin/pages/modular-questionaries/modular-questions/modular-question-type-selection.ts","webpack:///./src/main/admin/pages/modular-questionaries/modular-questions/modular-question-type-selection.html","webpack:///src/app/src/main/admin/pages/modular-questionaries/modular-thematic-variables/modular-thematic-variable-child-router.ts","webpack:///./src/main/admin/pages/modular-questionaries/modular-thematic-variables/modular-thematic-variable-child-router.html","webpack:///src/app/src/main/admin/pages/modular-questionaries/modular-thematic-variables/modular-thematic-variable-create-card.ts","webpack:///./src/main/admin/pages/modular-questionaries/modular-thematic-variables/modular-thematic-variable-create-card.html","webpack:///src/app/src/main/admin/pages/modular-questionaries/modular-thematic-variables/modular-thematic-variable-edit.ts","webpack:///./src/main/admin/pages/modular-questionaries/modular-thematic-variables/modular-thematic-variable-edit.html","webpack:///src/app/src/main/admin/pages/modular-questionaries/modular-thematic-variables/modular-thematic-variable-list.ts","webpack:///src/app/src/main/admin/pages/modular-questionaries/modular-thematic-variables/modular-thematic-variable-list-child-router.ts","webpack:///./src/main/admin/pages/modular-questionaries/modular-thematic-variables/modular-thematic-variable-list-child-router.html","webpack:///./src/main/admin/pages/modular-questionaries/modular-thematic-variables/modular-thematic-variable-list.html","webpack:///src/app/src/main/admin/pages/modular-scales/modular-scale-list.ts","webpack:///src/app/src/main/admin/pages/modular-scales/modular-scale-list-child-router.ts","webpack:///./src/main/admin/pages/modular-scales/modular-scale-list-child-router.html","webpack:///./src/main/admin/pages/modular-scales/modular-scale-list.html","webpack:///src/app/src/main/admin/pages/modular-scales/modular-scale-modal.ts","webpack:///./src/main/admin/pages/modular-scales/modular-scale-modal.html","webpack:///src/app/src/main/admin/pages/modular-scales/modular-scale-thematic-variables.ts","webpack:///./src/main/admin/pages/modular-scales/modular-scale-thematic-variables.html","webpack:///src/app/src/main/admin/pages/plans/cross-plan-items/cross-plan-items-edit.ts","webpack:///./src/main/admin/pages/plans/cross-plan-items/cross-plan-items-edit.html","webpack:///src/app/src/main/admin/pages/plans/other-plan-items/other-plan-item-list.ts","webpack:///./src/main/admin/pages/plans/other-plan-items/other-plan-item-list.html","webpack:///src/app/src/main/admin/pages/plans/other-plan-items/other-plan-item-modal.ts","webpack:///./src/main/admin/pages/plans/other-plan-items/other-plan-item-modal.html","webpack:///src/app/src/main/admin/pages/plans/plan-child-router.ts","webpack:///./src/main/admin/pages/plans/plan-child-router.html","webpack:///src/app/src/main/admin/pages/plans/plan-edit.ts","webpack:///./src/main/admin/pages/plans/plan-edit.html","webpack:///src/app/src/main/admin/pages/plans/plan-franchise-list-child-router.ts","webpack:///./src/main/admin/pages/plans/plan-franchise-list-child-router.html","webpack:///src/app/src/main/admin/pages/plans/plan-franchises.ts","webpack:///./src/main/admin/pages/plans/plan-franchises.html","webpack:///src/app/src/main/admin/pages/plans/plan-list.ts","webpack:///src/app/src/main/admin/pages/plans/plan-list-child-router.ts","webpack:///./src/main/admin/pages/plans/plan-list-child-router.html","webpack:///./src/main/admin/pages/plans/plan-list.html","webpack:///src/app/src/main/admin/pages/plans/plan-selection-franchises.ts","webpack:///./src/main/admin/pages/plans/plan-selection-franchises.html","webpack:///src/app/src/main/admin/pages/plans/plans-home.ts","webpack:///./src/main/admin/pages/plans/plans-home.html","webpack:///src/app/src/main/admin/pages/plans/test-plan-items/custom-report-spend-mode.ts","webpack:///./src/main/admin/pages/plans/test-plan-items/custom-report-spend-mode.html","webpack:///src/app/src/main/admin/pages/plans/test-plan-items/test-plan-item-list.ts","webpack:///./src/main/admin/pages/plans/test-plan-items/test-plan-item-list.html","webpack:///src/app/src/main/admin/pages/plans/test-plan-items/test-plan-item-modal.ts","webpack:///./src/main/admin/pages/plans/test-plan-items/test-plan-item-modal.html","webpack:///src/app/src/main/admin/pages/position-reference-disc/position-reference-disc-edit.ts","webpack:///./src/main/admin/pages/position-reference-disc/position-reference-disc-edit.html","webpack:///src/app/src/main/admin/pages/position-reference/localization/position-reference-localization-list.ts","webpack:///./src/main/admin/pages/position-reference/localization/position-reference-localization-list.html","webpack:///src/app/src/main/admin/pages/position-reference/localization/position-reference-localization-modal.ts","webpack:///./src/main/admin/pages/position-reference/localization/position-reference-localization-modal.html","webpack:///src/app/src/main/admin/pages/position-reference/position-reference-child-router.ts","webpack:///./src/main/admin/pages/position-reference/position-reference-child-router.html","webpack:///src/app/src/main/admin/pages/position-reference/position-reference-edit.ts","webpack:///./src/main/admin/pages/position-reference/position-reference-edit.html","webpack:///src/app/src/main/admin/pages/position-reference/position-reference-list.ts","webpack:///src/app/src/main/admin/pages/position-reference/position-reference-list-child-router.ts","webpack:///./src/main/admin/pages/position-reference/position-reference-list-child-router.html","webpack:///./src/main/admin/pages/position-reference/position-reference-list.html","webpack:///src/app/src/main/admin/pages/profiles/profile-child-router.ts","webpack:///./src/main/admin/pages/profiles/profile-child-router.html","webpack:///./src/main/admin/pages/profiles/profile-create-card.html","webpack:///src/app/src/main/admin/pages/profiles/profile-delete-modal.ts","webpack:///./src/main/admin/pages/profiles/profile-delete-modal.html","webpack:///src/app/src/main/admin/pages/profiles/profile-edit.ts","webpack:///./src/main/admin/pages/profiles/profile-edit.html","webpack:///src/app/src/main/admin/pages/profiles/profile-list.ts","webpack:///src/app/src/main/admin/pages/profiles/profile-list-child-router.ts","webpack:///./src/main/admin/pages/profiles/profile-list-child-router.html","webpack:///./src/main/admin/pages/profiles/profile-list.html","webpack:///src/app/src/main/admin/pages/questionaries/questionary-child-router.ts","webpack:///./src/main/admin/pages/questionaries/questionary-child-router.html","webpack:///./src/main/admin/pages/questionaries/questionary-create-card.html","webpack:///src/app/src/main/admin/pages/questionaries/questionary-create-translation.ts","webpack:///./src/main/admin/pages/questionaries/questionary-create-translation.html","webpack:///src/app/src/main/admin/pages/questionaries/questionary-edit.ts","webpack:///./src/main/admin/pages/questionaries/questionary-edit.html","webpack:///src/app/src/main/admin/pages/questionaries/questionary-kanban.ts","webpack:///./src/main/admin/pages/questionaries/questionary-kanban.html","webpack:///src/app/src/main/admin/pages/questionaries/questionary-list.ts","webpack:///src/app/src/main/admin/pages/questionaries/questionary-list-child-router.ts","webpack:///./src/main/admin/pages/questionaries/questionary-list-child-router.html","webpack:///./src/main/admin/pages/questionaries/questionary-list.html","webpack:///src/app/src/main/admin/pages/questionaries/questionary-translate-child-router.ts","webpack:///./src/main/admin/pages/questionaries/questionary-translate-child-router.html","webpack:///src/app/src/main/admin/pages/questionaries/questions/question-child-router.ts","webpack:///./src/main/admin/pages/questionaries/questions/question-child-router.html","webpack:///src/app/src/main/admin/pages/questionaries/questions/question-config-modal.ts","webpack:///./src/main/admin/pages/questionaries/questions/question-config-modal.html","webpack:///./src/main/admin/pages/questionaries/questions/question-create-card.html","webpack:///src/app/src/main/admin/pages/questionaries/questions/question-edit.ts","webpack:///./src/main/admin/pages/questionaries/questions/question-edit.html","webpack:///src/app/src/main/admin/pages/questionaries/questions/question-list.ts","webpack:///src/app/src/main/admin/pages/questionaries/questions/question-list-child-router.ts","webpack:///./src/main/admin/pages/questionaries/questions/question-list-child-router.html","webpack:///./src/main/admin/pages/questionaries/questions/question-list.html","webpack:///src/app/src/main/admin/pages/questionaries/questions/question-type-selection.ts","webpack:///./src/main/admin/pages/questionaries/questions/question-type-selection.html","webpack:///src/app/src/main/admin/pages/scales/scale-list.ts","webpack:///src/app/src/main/admin/pages/scales/scale-list-child-router.ts","webpack:///./src/main/admin/pages/scales/scale-list-child-router.html","webpack:///./src/main/admin/pages/scales/scale-list.html","webpack:///src/app/src/main/admin/pages/scales/scale-modal.ts","webpack:///./src/main/admin/pages/scales/scale-modal.html","webpack:///src/app/src/main/admin/pages/scales/scale-questionaries.ts","webpack:///./src/main/admin/pages/scales/scale-questionaries.html","webpack:///src/app/src/main/admin/pages/scales/scale-questionary-list-child-router.ts","webpack:///./src/main/admin/pages/scales/scale-questionary-list-child-router.html","webpack:///src/app/src/main/admin/pages/scales/scale-thematic-group-list-child-router.ts","webpack:///./src/main/admin/pages/scales/scale-thematic-group-list-child-router.html","webpack:///src/app/src/main/admin/pages/scales/scale-thematic-groups.ts","webpack:///./src/main/admin/pages/scales/scale-thematic-groups.html","webpack:///src/app/src/main/admin/pages/scales/scale-thematic-variable-list-child-router.ts","webpack:///./src/main/admin/pages/scales/scale-thematic-variable-list-child-router.html","webpack:///src/app/src/main/admin/pages/scales/scale-thematic-variables.ts","webpack:///./src/main/admin/pages/scales/scale-thematic-variables.html","webpack:///src/app/src/main/admin/pages/talents/bulk-talents-export-list.ts","webpack:///./src/main/admin/pages/talents/bulk-talents-export-list.html","webpack:///src/app/src/main/admin/pages/talents/has-low-balance-modal.ts","webpack:///./src/main/admin/pages/talents/has-low-balance-modal.html","webpack:///src/app/src/main/admin/pages/talents/talent-assignment-card.ts","webpack:///./src/main/admin/pages/talents/talent-assignment-card.html","webpack:///src/app/src/main/admin/pages/talents/talent-balances-list.ts","webpack:///./src/main/admin/pages/talents/talent-balances-list.html","webpack:///src/app/src/main/admin/pages/talents/talent-consolidated-list.ts","webpack:///./src/main/admin/pages/talents/talent-consolidated-list.html","webpack:///src/app/src/main/admin/pages/talents/talent-export-card.ts","webpack:///./src/main/admin/pages/talents/talent-export-card.html","webpack:///src/app/src/main/admin/pages/talents/talent-list-child-router.ts","webpack:///./src/main/admin/pages/talents/talent-list-child-router.html","webpack:///src/app/src/main/admin/pages/talents/talent-main.ts","webpack:///./src/main/admin/pages/talents/talent-main.html","webpack:///src/app/src/main/admin/pages/talents/talent-modal.ts","webpack:///./src/main/admin/pages/talents/talent-modal.html","webpack:///src/app/src/main/admin/pages/talents/talent-plans-card.ts","webpack:///./src/main/admin/pages/talents/talent-plans-card.html","webpack:///src/app/src/main/admin/pages/talents/talent-remove.ts","webpack:///./src/main/admin/pages/talents/talent-remove-card.html","webpack:///./src/main/admin/pages/talents/talent-remove.html","webpack:///src/app/src/main/admin/pages/talents/talent-test-plan-items-modal.ts","webpack:///./src/main/admin/pages/talents/talent-test-plan-items-modal.html","webpack:///src/app/src/main/admin/pages/talents/talent-transfer.ts","webpack:///./src/main/admin/pages/talents/talent-transfer-card.html","webpack:///src/app/src/main/admin/pages/talents/talent-transfer-list.ts","webpack:///./src/main/admin/pages/talents/talent-transfer-list.html","webpack:///./src/main/admin/pages/talents/talent-transfer.html","webpack:///src/app/src/main/admin/pages/test-core/company-competences/company-competence-list.ts","webpack:///src/app/src/main/admin/pages/test-core/company-competences/company-competence-list-child-router.ts","webpack:///./src/main/admin/pages/test-core/company-competences/company-competence-list-child-router.html","webpack:///./src/main/admin/pages/test-core/company-competences/company-competence-list.html","webpack:///src/app/src/main/admin/pages/test-core/company-competences/dichotomous-couple-list-modal.ts","webpack:///./src/main/admin/pages/test-core/company-competences/dichotomous-couple-list-modal.html","webpack:///src/app/src/main/admin/pages/test-core/inbox/inbox-by-user/inbox-user-list.ts","webpack:///src/app/src/main/admin/pages/test-core/inbox/inbox-by-user/inbox-user-list-child-router.ts","webpack:///./src/main/admin/pages/test-core/inbox/inbox-by-user/inbox-user-list-child-router.html","webpack:///./src/main/admin/pages/test-core/inbox/inbox-by-user/inbox-user-list.html","webpack:///src/app/src/main/admin/pages/test-core/inbox/inbox-child-router.ts","webpack:///./src/main/admin/pages/test-core/inbox/inbox-child-router.html","webpack:///./src/main/admin/pages/test-core/inbox/inbox-create-card.html","webpack:///src/app/src/main/admin/pages/test-core/inbox/inbox-edit.ts","webpack:///./src/main/admin/pages/test-core/inbox/inbox-edit.html","webpack:///src/app/src/main/admin/pages/test-core/inbox/inbox-list.ts","webpack:///src/app/src/main/admin/pages/test-core/inbox/inbox-list-child-router.ts","webpack:///./src/main/admin/pages/test-core/inbox/inbox-list-child-router.html","webpack:///./src/main/admin/pages/test-core/inbox/inbox-list.html","webpack:///src/app/src/main/admin/pages/test-core/news/news-child-router.ts","webpack:///./src/main/admin/pages/test-core/news/news-child-router.html","webpack:///./src/main/admin/pages/test-core/news/news-create-card.html","webpack:///src/app/src/main/admin/pages/test-core/news/news-edit.ts","webpack:///./src/main/admin/pages/test-core/news/news-edit.html","webpack:///src/app/src/main/admin/pages/test-core/news/news-list.ts","webpack:///src/app/src/main/admin/pages/test-core/news/news-list-child-router.ts","webpack:///./src/main/admin/pages/test-core/news/news-list-child-router.html","webpack:///./src/main/admin/pages/test-core/news/news-list.html","webpack:///src/app/src/main/admin/pages/test-core/service-rating/service-rating-child-router.ts","webpack:///./src/main/admin/pages/test-core/service-rating/service-rating-child-router.html","webpack:///src/app/src/main/admin/pages/test-core/service-rating/service-rating-edit.ts","webpack:///./src/main/admin/pages/test-core/service-rating/service-rating-edit.html","webpack:///src/app/src/main/admin/pages/test-core/service-rating/service-rating-list.ts","webpack:///src/app/src/main/admin/pages/test-core/service-rating/service-rating-list-child-router.ts","webpack:///./src/main/admin/pages/test-core/service-rating/service-rating-list-child-router.html","webpack:///./src/main/admin/pages/test-core/service-rating/service-rating-list.html","webpack:///src/app/src/main/admin/pages/test-core/sheets/sheet-card.ts","webpack:///src/app/src/main/admin/pages/test-core/sheets/sheet-card-small.ts","webpack:///./src/main/admin/pages/test-core/sheets/sheet-card-small.html","webpack:///./src/main/admin/pages/test-core/sheets/sheet-card.html","webpack:///src/app/src/main/admin/pages/test-core/sheets/sheet-full-description-modal.ts","webpack:///./src/main/admin/pages/test-core/sheets/sheet-full-description-modal.html","webpack:///src/app/src/main/admin/pages/test-core/sheets/sheet-language-modal.ts","webpack:///./src/main/admin/pages/test-core/sheets/sheet-language-modal.html","webpack:///src/app/src/main/admin/pages/test-core/sheets/sheet-list.ts","webpack:///src/app/src/main/admin/pages/test-core/sheets/sheet-list-child-router.ts","webpack:///./src/main/admin/pages/test-core/sheets/sheet-list-child-router.html","webpack:///./src/main/admin/pages/test-core/sheets/sheet-list.html","webpack:///src/app/src/main/admin/pages/test-core/test-core-child-router.ts","webpack:///./src/main/admin/pages/test-core/test-core-child-router.html","webpack:///src/app/src/main/admin/pages/test-core/test-core-home.ts","webpack:///./src/main/admin/pages/test-core/test-core-home.html","webpack:///src/app/src/main/admin/pages/test-management/custom-company-modular-questionaries/custom-company-modular-questionary-child-router.ts","webpack:///./src/main/admin/pages/test-management/custom-company-modular-questionaries/custom-company-modular-questionary-child-router.html","webpack:///./src/main/admin/pages/test-management/custom-company-modular-questionaries/custom-company-modular-questionary-create-card.html","webpack:///src/app/src/main/admin/pages/test-management/custom-company-modular-questionaries/custom-company-modular-questionary-edit.ts","webpack:///./src/main/admin/pages/test-management/custom-company-modular-questionaries/custom-company-modular-questionary-edit.html","webpack:///src/app/src/main/admin/pages/test-management/custom-company-modular-questionaries/custom-company-modular-questionary-list.ts","webpack:///src/app/src/main/admin/pages/test-management/custom-company-modular-questionaries/custom-company-modular-questionary-list-child-router.ts","webpack:///./src/main/admin/pages/test-management/custom-company-modular-questionaries/custom-company-modular-questionary-list-child-router.html","webpack:///./src/main/admin/pages/test-management/custom-company-modular-questionaries/custom-company-modular-questionary-list.html","webpack:///src/app/src/main/admin/pages/test-management/custom-company-modular-questionaries/custom-company-modular-questions/custom-company-modular-question-child-router.ts","webpack:///./src/main/admin/pages/test-management/custom-company-modular-questionaries/custom-company-modular-questions/custom-company-modular-question-child-router.html","webpack:///./src/main/admin/pages/test-management/custom-company-modular-questionaries/custom-company-modular-questions/custom-company-modular-question-create-card.html","webpack:///src/app/src/main/admin/pages/test-management/custom-company-modular-questionaries/custom-company-modular-questions/custom-company-modular-question-edit.ts","webpack:///./src/main/admin/pages/test-management/custom-company-modular-questionaries/custom-company-modular-questions/custom-company-modular-question-edit.html","webpack:///src/app/src/main/admin/pages/test-management/custom-company-modular-questionaries/custom-company-modular-questions/custom-company-modular-question-list.ts","webpack:///src/app/src/main/admin/pages/test-management/custom-company-modular-questionaries/custom-company-modular-questions/custom-company-modular-question-list-child-router.ts","webpack:///./src/main/admin/pages/test-management/custom-company-modular-questionaries/custom-company-modular-questions/custom-company-modular-question-list-child-router.html","webpack:///./src/main/admin/pages/test-management/custom-company-modular-questionaries/custom-company-modular-questions/custom-company-modular-question-list.html","webpack:///src/app/src/main/admin/pages/test-management/custom-company-modular-questionaries/custom-company-modular-questions/custom-company-modular-question-type-selection.ts","webpack:///./src/main/admin/pages/test-management/custom-company-modular-questionaries/custom-company-modular-questions/custom-company-modular-question-type-selection.html","webpack:///src/app/src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questionary-child-router.ts","webpack:///./src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questionary-child-router.html","webpack:///./src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questionary-create-card.html","webpack:///src/app/src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questionary-edit.ts","webpack:///./src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questionary-edit.html","webpack:///src/app/src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questionary-list.ts","webpack:///src/app/src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questionary-list-child-router.ts","webpack:///./src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questionary-list-child-router.html","webpack:///./src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questionary-list.html","webpack:///./src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questionary-videointerview-create-card.html","webpack:///src/app/src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questions/custom-company-question-child-router.ts","webpack:///./src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questions/custom-company-question-child-router.html","webpack:///src/app/src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questions/custom-company-question-config-modal.ts","webpack:///./src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questions/custom-company-question-config-modal.html","webpack:///src/app/src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questions/custom-company-question-create-card.ts","webpack:///./src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questions/custom-company-question-create-card.html","webpack:///src/app/src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questions/custom-company-question-edit.ts","webpack:///./src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questions/custom-company-question-edit.html","webpack:///src/app/src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questions/custom-company-question-list.ts","webpack:///src/app/src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questions/custom-company-question-list-child-router.ts","webpack:///./src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questions/custom-company-question-list-child-router.html","webpack:///./src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questions/custom-company-question-list.html","webpack:///src/app/src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questions/custom-company-question-type-selection.ts","webpack:///./src/main/admin/pages/test-management/custom-company-questionaries/custom-company-questions/custom-company-question-type-selection.html","webpack:///src/app/src/main/admin/pages/test-management/default-colors-reports/default-colors-report-child-router.ts","webpack:///./src/main/admin/pages/test-management/default-colors-reports/default-colors-report-child-router.html","webpack:///src/app/src/main/admin/pages/test-management/default-colors-reports/default-colors-report-edit.ts","webpack:///./src/main/admin/pages/test-management/default-colors-reports/default-colors-report-edit.html","webpack:///src/app/src/main/admin/pages/test-management/default-colors-reports/default-colors-report-list.ts","webpack:///src/app/src/main/admin/pages/test-management/default-colors-reports/default-colors-report-list-child-router.ts","webpack:///./src/main/admin/pages/test-management/default-colors-reports/default-colors-report-list-child-router.html","webpack:///./src/main/admin/pages/test-management/default-colors-reports/default-colors-report-list.html","webpack:///src/app/src/main/admin/pages/test-management/default-colors-reports/default-colors-report-sheet-list-edit.ts","webpack:///./src/main/admin/pages/test-management/default-colors-reports/default-colors-report-sheet-list-edit.html","webpack:///src/app/src/main/admin/pages/test-management/disc-profiles/disc-profile-edit.ts","webpack:///./src/main/admin/pages/test-management/disc-profiles/disc-profile-edit.html","webpack:///src/app/src/main/admin/pages/test-management/disc-styles/disc-style-list.ts","webpack:///./src/main/admin/pages/test-management/disc-styles/disc-style-list.html","webpack:///src/app/src/main/admin/pages/test-management/disc-styles/disc-style-modal.ts","webpack:///./src/main/admin/pages/test-management/disc-styles/disc-style-modal.html","webpack:///src/app/src/main/admin/pages/test-management/questionaries-configuration/questionary-configuration-list.ts","webpack:///./src/main/admin/pages/test-management/questionaries-configuration/questionary-configuration-list.html","webpack:///src/app/src/main/admin/pages/test-management/questionary-groups/questionary-group-child-router.ts","webpack:///./src/main/admin/pages/test-management/questionary-groups/questionary-group-child-router.html","webpack:///./src/main/admin/pages/test-management/questionary-groups/questionary-group-create-card.html","webpack:///src/app/src/main/admin/pages/test-management/questionary-groups/questionary-group-edit.ts","webpack:///./src/main/admin/pages/test-management/questionary-groups/questionary-group-edit.html","webpack:///src/app/src/main/admin/pages/test-management/questionary-groups/questionary-group-list.ts","webpack:///src/app/src/main/admin/pages/test-management/questionary-groups/questionary-group-list-child-router.ts","webpack:///./src/main/admin/pages/test-management/questionary-groups/questionary-group-list-child-router.html","webpack:///./src/main/admin/pages/test-management/questionary-groups/questionary-group-list.html","webpack:///src/app/src/main/admin/pages/test-management/report-templates-predictor/report-template-predictor-child-router.ts","webpack:///./src/main/admin/pages/test-management/report-templates-predictor/report-template-predictor-child-router.html","webpack:///src/app/src/main/admin/pages/test-management/report-templates-predictor/report-template-predictor-edit.ts","webpack:///./src/main/admin/pages/test-management/report-templates-predictor/report-template-predictor-edit.html","webpack:///src/app/src/main/admin/pages/test-management/report-templates-predictor/report-template-predictor-list.ts","webpack:///src/app/src/main/admin/pages/test-management/report-templates-predictor/report-template-predictor-list-child-router.ts","webpack:///./src/main/admin/pages/test-management/report-templates-predictor/report-template-predictor-list-child-router.html","webpack:///./src/main/admin/pages/test-management/report-templates-predictor/report-template-predictor-list.html","webpack:///src/app/src/main/admin/pages/test-management/report-templates-predictor/sheet-predictor-list-edit.ts","webpack:///./src/main/admin/pages/test-management/report-templates-predictor/sheet-predictor-list-edit.html","webpack:///src/app/src/main/admin/pages/test-management/report-templates/disc-selection-modal.ts","webpack:///./src/main/admin/pages/test-management/report-templates/disc-selection-modal.html","webpack:///src/app/src/main/admin/pages/test-management/report-templates/report-template-child-router.ts","webpack:///./src/main/admin/pages/test-management/report-templates/report-template-child-router.html","webpack:///./src/main/admin/pages/test-management/report-templates/report-template-create-card.html","webpack:///src/app/src/main/admin/pages/test-management/report-templates/report-template-edit.ts","webpack:///./src/main/admin/pages/test-management/report-templates/report-template-edit.html","webpack:///src/app/src/main/admin/pages/test-management/report-templates/report-template-list.ts","webpack:///src/app/src/main/admin/pages/test-management/report-templates/report-template-list-child-router.ts","webpack:///./src/main/admin/pages/test-management/report-templates/report-template-list-child-router.html","webpack:///./src/main/admin/pages/test-management/report-templates/report-template-list.html","webpack:///src/app/src/main/admin/pages/test-management/test-management-child-router.ts","webpack:///./src/main/admin/pages/test-management/test-management-child-router.html","webpack:///src/app/src/main/admin/pages/test-management/test-management-home.ts","webpack:///./src/main/admin/pages/test-management/test-management-home.html","webpack:///src/app/src/main/admin/pages/thematic-groups/thematic-associations/thematic-association-list.ts","webpack:///./src/main/admin/pages/thematic-groups/thematic-associations/thematic-association-list.html","webpack:///src/app/src/main/admin/pages/thematic-groups/thematic-associations/thematic-association-modal.ts","webpack:///./src/main/admin/pages/thematic-groups/thematic-associations/thematic-association-modal.html","webpack:///src/app/src/main/admin/pages/thematic-groups/thematic-group-child-router.ts","webpack:///./src/main/admin/pages/thematic-groups/thematic-group-child-router.html","webpack:///src/app/src/main/admin/pages/thematic-groups/thematic-group-edit.ts","webpack:///./src/main/admin/pages/thematic-groups/thematic-group-edit.html","webpack:///src/app/src/main/admin/pages/thematic-groups/thematic-group-list.ts","webpack:///src/app/src/main/admin/pages/thematic-groups/thematic-group-list-child-router.ts","webpack:///./src/main/admin/pages/thematic-groups/thematic-group-list-child-router.html","webpack:///./src/main/admin/pages/thematic-groups/thematic-group-list.html","webpack:///src/app/src/main/admin/pages/thematic-groups/thematic-group-questionaries.ts","webpack:///./src/main/admin/pages/thematic-groups/thematic-group-questionaries.html","webpack:///src/app/src/main/admin/pages/thematic-groups/thematic-group-questionary-list-child-router.ts","webpack:///./src/main/admin/pages/thematic-groups/thematic-group-questionary-list-child-router.html","webpack:///src/app/src/main/admin/pages/thematic-groups/thematic-variables/thematic-variable-list.ts","webpack:///./src/main/admin/pages/thematic-groups/thematic-variables/thematic-variable-list.html","webpack:///src/app/src/main/admin/pages/thematic-groups/thematic-variables/thematic-variable-modal.ts","webpack:///./src/main/admin/pages/thematic-groups/thematic-variables/thematic-variable-modal.html","webpack:///src/app/src/main/admin/pages/user-api-applications/user-api-application-child-router.ts","webpack:///./src/main/admin/pages/user-api-applications/user-api-application-child-router.html","webpack:///src/app/src/main/admin/pages/user-api-applications/user-api-application-edit.ts","webpack:///./src/main/admin/pages/user-api-applications/user-api-application-edit.html","webpack:///src/app/src/main/admin/pages/user-api-applications/user-api-application-list-child-router.ts","webpack:///./src/main/admin/pages/user-api-applications/user-api-application-list-child-router.html","webpack:///src/app/src/main/admin/pages/user-api-applications/user-list.ts","webpack:///./src/main/admin/pages/user-api-applications/user-list.html","webpack:///src/app/src/main/admin/pages/users/password-validation-modal.ts","webpack:///./src/main/admin/pages/users/password-validation-modal.html","webpack:///src/app/src/main/admin/pages/users/user-archive-list.ts","webpack:///./src/main/admin/pages/users/user-archive-list-card.html","webpack:///./src/main/admin/pages/users/user-archive-list.html","webpack:///src/app/src/main/admin/pages/users/user-change-company-modal.ts","webpack:///./src/main/admin/pages/users/user-change-company-modal.html","webpack:///src/app/src/main/admin/pages/users/user-child-router.ts","webpack:///./src/main/admin/pages/users/user-child-router.html","webpack:///./src/main/admin/pages/users/user-create-card.html","webpack:///src/app/src/main/admin/pages/users/user-edit.ts","webpack:///./src/main/admin/pages/users/user-edit.html","webpack:///src/app/src/main/admin/pages/users/user-list.ts","webpack:///src/app/src/main/admin/pages/users/user-list-child-router.ts","webpack:///./src/main/admin/pages/users/user-list-child-router.html","webpack:///./src/main/admin/pages/users/user-list.html","webpack:///src/app/src/main/admin/pages/users/user-login-info-modal.ts","webpack:///./src/main/admin/pages/users/user-login-info-modal.html","webpack:///src/app/src/main/admin/pages/users/user-master-list.ts","webpack:///./src/main/admin/pages/users/user-master-list.html","webpack:///src/app/src/main/components/activation-confirmation.ts","webpack:///./src/main/components/activation-confirmation.html","webpack:///src/app/src/main/components/activation-link-modal.ts","webpack:///./src/main/components/activation-link-modal.html","webpack:///src/app/src/main/components/bulk-upload-question-card.ts","webpack:///./src/main/components/bulk-upload-question-card.html","webpack:///src/app/src/main/components/bulk-upload-scale-card.ts","webpack:///./src/main/components/bulk-upload-scale-card.html","webpack:///src/app/src/main/components/carousel-news.ts","webpack:///./src/main/components/carousel-news.html","webpack:///src/app/src/main/components/change-state-confirmation.ts","webpack:///./src/main/components/change-state-confirmation.html","webpack:///src/app/src/main/components/company-logo.ts","webpack:///./src/main/components/company-logo.html","webpack:///src/app/src/main/components/company-selector.ts","webpack:///./src/main/components/company-selector.html","webpack:///src/app/src/main/components/company-tags-input.ts","webpack:///./src/main/components/company-tags-input.html","webpack:///src/app/src/main/components/convert-master-confirmation.ts","webpack:///./src/main/components/convert-master-confirmation.html","webpack:///src/app/src/main/components/convert-user-confirmation.ts","webpack:///./src/main/components/convert-user-confirmation.html","webpack:///src/app/src/main/components/deactivate-confirmation.ts","webpack:///./src/main/components/deactivate-confirmation.html","webpack:///src/app/src/main/components/delete-confirmation.ts","webpack:///./src/main/components/delete-confirmation.html","webpack:///src/app/src/main/components/dimension-activated-modal.ts","webpack:///./src/main/components/dimension-activated-modal.html","webpack:///src/app/src/main/components/dimension-selector-modal.ts","webpack:///./src/main/components/dimension-selector-modal.html","webpack:///./src/main/components/disc-avatar.html","webpack:///src/app/src/main/components/env-warning.ts","webpack:///./src/main/components/env-warning.html","webpack:///src/app/src/main/components/event-reconstruction-response-options.ts","webpack:///./src/main/components/event-reconstruction-response-options.html","webpack:///src/app/src/main/components/export-questionary-questions-card.ts","webpack:///./src/main/components/export-questionary-questions-card.html","webpack:///src/app/src/main/components/illustrated-dialogue-response-options.ts","webpack:///./src/main/components/illustrated-dialogue-response-options.html","webpack:///src/app/src/main/components/inbox-notification.ts","webpack:///./src/main/components/inbox-notification.html","webpack:///src/app/src/main/components/index.ts","webpack:///src/app/src/main/components/interaction-type-change-confirmation.ts","webpack:///./src/main/components/interaction-type-change-confirmation.html","webpack:///src/app/src/main/components/microstory-response-options.ts","webpack:///./src/main/components/microstory-response-options.html","webpack:///src/app/src/main/components/multiple-choice-list-response-options.ts","webpack:///./src/main/components/multiple-choice-list-response-options.html","webpack:///src/app/src/main/components/multiselect-tht.ts","webpack:///./src/main/components/multiselect-tht.html","webpack:///src/app/src/main/components/multiselector-dimensions.ts","webpack:///./src/main/components/multiselector-dimensions.html","webpack:///src/app/src/main/components/nav-bar.ts","webpack:///./src/main/components/nav-bar.html","webpack:///./src/main/components/nav-menu.html","webpack:///./src/main/components/organization-header.html","webpack:///./src/main/components/person-header.html","webpack:///./src/main/components/position-header.html","webpack:///src/app/src/main/components/question-history-modal.ts","webpack:///./src/main/components/question-history-modal.html","webpack:///src/app/src/models/questionaries/questionaryIncompatibilty.ts","webpack:///src/app/src/main/components/questionary-selector.ts","webpack:///./src/main/components/questionary-selector.html","webpack:///src/app/src/main/components/restore-confirmation.ts","webpack:///./src/main/components/restore-confirmation.html","webpack:///src/app/src/main/components/select-people-list.ts","webpack:///./src/main/components/select-people-list.html","webpack:///src/app/src/main/components/side-bar.ts","webpack:///./src/main/components/side-bar.html","webpack:///src/app/src/main/components/single-choice-list-response-options.ts","webpack:///./src/main/components/single-choice-list-response-options.html","webpack:///src/app/src/main/components/success-registration-modal.ts","webpack:///./src/main/components/success-registration-modal.html","webpack:///src/app/src/main/components/talent-export-confirmation.ts","webpack:///./src/main/components/talent-export-confirmation.html","webpack:///./src/main/components/team-header.html","webpack:///./src/main/components/three-tags.html","webpack:///src/app/src/main/components/view-wallet.ts","webpack:///./src/main/components/view-wallet.html","webpack:///src/app/src/main/main-child-router.ts","webpack:///./src/main/main-child-router.html","webpack:///./src/main/pages/errors/what-happened.html","webpack:///src/app/src/main/pages/home/main-home.ts","webpack:///./src/main/pages/home/main-home.html","webpack:///src/app/src/main/test-reports/components/report-parameter.ts","webpack:///./src/main/test-reports/components/report-parameter.html","webpack:///src/app/src/main/test-reports/components/report-weights-modal.ts","webpack:///./src/main/test-reports/components/report-weights-modal.html","webpack:///src/app/src/main/test-reports/components/select-activation-list.ts","webpack:///./src/main/test-reports/components/select-activation-list.html","webpack:///src/app/src/main/test-reports/components/select-adjustment-list.ts","webpack:///./src/main/test-reports/components/select-adjustment-list.html","webpack:///src/app/src/main/test-reports/components/select-observation-list.ts","webpack:///./src/main/test-reports/components/select-observation-list.html","webpack:///src/app/src/main/test-reports/components/select-observer-list.ts","webpack:///./src/main/test-reports/components/select-observer-list.html","webpack:///src/app/src/main/test-reports/components/select-organization-list.ts","webpack:///./src/main/test-reports/components/select-organization-list.html","webpack:///src/app/src/main/test-reports/components/select-person-list.ts","webpack:///./src/main/test-reports/components/select-person-list.html","webpack:///src/app/src/main/test-reports/components/select-person-questionary-list.ts","webpack:///./src/main/test-reports/components/select-person-questionary-list.html","webpack:///src/app/src/main/test-reports/components/select-position-list.ts","webpack:///./src/main/test-reports/components/select-position-list.html","webpack:///src/app/src/main/test-reports/components/select-questionary-team-list.ts","webpack:///./src/main/test-reports/components/select-questionary-team-list.html","webpack:///src/app/src/main/test-reports/components/select-team-list.ts","webpack:///./src/main/test-reports/components/select-team-list.html","webpack:///src/app/src/main/test-reports/pages/home/home.ts","webpack:///./src/main/test-reports/pages/home/home.html","webpack:///src/app/src/main/test-reports/pages/reports/report-child-router.ts","webpack:///./src/main/test-reports/pages/reports/report-child-router.html","webpack:///src/app/src/main/test-reports/pages/reports/report-edit.ts","webpack:///./src/main/test-reports/pages/reports/report-edit.html","webpack:///src/app/src/main/test-reports/pages/reports/report-list.ts","webpack:///src/app/src/main/test-reports/pages/reports/report-list-child-router.ts","webpack:///./src/main/test-reports/pages/reports/report-list-child-router.html","webpack:///./src/main/test-reports/pages/reports/report-list.html","webpack:///src/app/src/main/test-reports/pages/reports/select-sheet-modal.ts","webpack:///./src/main/test-reports/pages/reports/select-sheet-modal.html","webpack:///src/app/src/main/test-reports/test-report-child-router.ts","webpack:///./src/main/test-reports/test-report-child-router.html","webpack:///src/app/src/main/test/pages/archive/archive-list.ts","webpack:///src/app/src/main/test/pages/archive/archive-list-child-router.ts","webpack:///./src/main/test/pages/archive/archive-list-child-router.html","webpack:///./src/main/test/pages/archive/archive-list.html","webpack:///src/app/src/main/test/pages/bulk-activation/bulk-activation-create.ts","webpack:///./src/main/test/pages/bulk-activation/bulk-activation-create.html","webpack:///src/app/src/main/test/pages/bulk-activation/bulk-activation-item-list.ts","webpack:///src/app/src/main/test/pages/bulk-activation/bulk-activation-item-list-child-router.ts","webpack:///./src/main/test/pages/bulk-activation/bulk-activation-item-list-child-router.html","webpack:///./src/main/test/pages/bulk-activation/bulk-activation-item-list.html","webpack:///src/app/src/main/test/pages/bulk-activation/bulk-activation-list.ts","webpack:///src/app/src/main/test/pages/bulk-activation/bulk-activation-list-child-router.ts","webpack:///./src/main/test/pages/bulk-activation/bulk-activation-list-child-router.html","webpack:///./src/main/test/pages/bulk-activation/bulk-activation-list.html","webpack:///src/app/src/main/test/pages/bulk-download/bulk-activation-converted.ts","webpack:///./src/main/test/pages/bulk-download/bulk-activation-converted.html","webpack:///src/app/src/main/test/pages/bulk-download/bulk-download-confirmation-modal.ts","webpack:///./src/main/test/pages/bulk-download/bulk-download-confirmation-modal.html","webpack:///src/app/src/main/test/pages/bulk-download/bulk-download-create.ts","webpack:///./src/main/test/pages/bulk-download/bulk-download-create.html","webpack:///src/app/src/main/test/pages/bulk-download/bulk-download-list.ts","webpack:///src/app/src/main/test/pages/bulk-download/bulk-download-list-child-router.ts","webpack:///./src/main/test/pages/bulk-download/bulk-download-list-child-router.html","webpack:///./src/main/test/pages/bulk-download/bulk-download-list.html","webpack:///src/app/src/main/test/pages/bulk-observation/bulk-observation-child-router.ts","webpack:///./src/main/test/pages/bulk-observation/bulk-observation-child-router.html","webpack:///src/app/src/main/test/pages/bulk-observation/bulk-observation-create.ts","webpack:///./src/main/test/pages/bulk-observation/bulk-observation-create.html","webpack:///src/app/src/main/test/pages/bulk-results-export/bulk-results-export-child-router.ts","webpack:///./src/main/test/pages/bulk-results-export/bulk-results-export-child-router.html","webpack:///src/app/src/main/test/pages/bulk-results-export/bulk-results-export-create.ts","webpack:///./src/main/test/pages/bulk-results-export/bulk-results-export-create.html","webpack:///src/app/src/main/test/pages/bulk-results-export/bulk-results-export-list.ts","webpack:///./src/main/test/pages/bulk-results-export/bulk-results-export-list.html","webpack:///src/app/src/main/test/pages/home/home.ts","webpack:///./src/main/test/pages/home/home.html","webpack:///src/app/src/main/test/pages/homologation/homologation-child-router.ts","webpack:///./src/main/test/pages/homologation/homologation-child-router.html","webpack:///src/app/src/main/test/pages/homologation/homologation-edit.ts","webpack:///./src/main/test/pages/homologation/homologation-edit.html","webpack:///src/app/src/main/test/pages/homologation/homologation-list.ts","webpack:///./src/main/test/pages/homologation/homologation-list.html","webpack:///src/app/src/main/test/pages/homologation/homologation-modal.ts","webpack:///./src/main/test/pages/homologation/homologation-modal.html","webpack:///src/app/src/main/test/pages/observation/observation-child-router.ts","webpack:///./src/main/test/pages/observation/observation-child-router.html","webpack:///src/app/src/main/test/pages/observation/observation-edit.ts","webpack:///src/app/src/main/test/pages/observation/observation-edit-modal.ts","webpack:///./src/main/test/pages/observation/observation-edit-modal.html","webpack:///./src/main/test/pages/observation/observation-edit.html","webpack:///src/app/src/main/test/pages/observation/observation-list.ts","webpack:///./src/main/test/pages/observation/observation-list.html","webpack:///src/app/src/main/test/pages/observation/observers/observer-bulk-activation-modal.ts","webpack:///./src/main/test/pages/observation/observers/observer-bulk-activation-modal.html","webpack:///src/app/src/main/test/pages/observation/observers/observer-edit-modal.ts","webpack:///./src/main/test/pages/observation/observers/observer-edit-modal.html","webpack:///src/app/src/main/test/pages/observation/observers/observer-list.ts","webpack:///src/app/src/main/test/pages/observation/observers/observer-list-child-router.ts","webpack:///./src/main/test/pages/observation/observers/observer-list-child-router.html","webpack:///./src/main/test/pages/observation/observers/observer-list.html","webpack:///src/app/src/main/test/pages/organization-disc/organization-disc-edit.ts","webpack:///./src/main/test/pages/organization-disc/organization-disc-edit.html","webpack:///src/app/src/main/test/pages/organization-evaluator/organization-evaluator-bulk-activation-modal.ts","webpack:///./src/main/test/pages/organization-evaluator/organization-evaluator-bulk-activation-modal.html","webpack:///src/app/src/main/test/pages/organization-evaluator/organization-evaluator-edit-modal.ts","webpack:///./src/main/test/pages/organization-evaluator/organization-evaluator-edit-modal.html","webpack:///src/app/src/main/test/pages/organization-evaluator/organization-evaluator-list.ts","webpack:///src/app/src/main/test/pages/organization-evaluator/organization-evaluator-list-child-router.ts","webpack:///./src/main/test/pages/organization-evaluator/organization-evaluator-list-child-router.html","webpack:///./src/main/test/pages/organization-evaluator/organization-evaluator-list.html","webpack:///src/app/src/main/test/pages/organization/organization-child-router.ts","webpack:///./src/main/test/pages/organization/organization-child-router.html","webpack:///src/app/src/main/test/pages/organization/organization-edit.ts","webpack:///./src/main/test/pages/organization/organization-edit.html","webpack:///src/app/src/main/test/pages/organization/organization-list.ts","webpack:///src/app/src/main/test/pages/organization/organization-list-child-router.ts","webpack:///./src/main/test/pages/organization/organization-list-child-router.html","webpack:///./src/main/test/pages/organization/organization-list.html","webpack:///src/app/src/main/test/pages/people-comment/people-comment-edit-modal.ts","webpack:///./src/main/test/pages/people-comment/people-comment-edit-modal.html","webpack:///src/app/src/main/test/pages/people-comment/people-comment-list.ts","webpack:///./src/main/test/pages/people-comment/people-comment-list.html","webpack:///src/app/src/main/test/pages/people-competence/company-competence-modal.ts","webpack:///./src/main/test/pages/people-competence/company-competence-modal.html","webpack:///src/app/src/main/test/pages/people-competence/competence-activated-modal.ts","webpack:///./src/main/test/pages/people-competence/competence-activated-modal.html","webpack:///src/app/src/main/test/pages/people-competence/competence-activated-weight-modal.ts","webpack:///./src/main/test/pages/people-competence/competence-activated-weight-modal.html","webpack:///src/app/src/main/test/pages/people-competence/competence-activation-selector.ts","webpack:///./src/main/test/pages/people-competence/competence-activation-selector.html","webpack:///src/app/src/main/test/pages/people-demographic/person-demographic-data.ts","webpack:///./src/main/test/pages/people-demographic/person-demographic-data.html","webpack:///src/app/src/main/test/pages/people-demographic/person-demographic-modal.ts","webpack:///./src/main/test/pages/people-demographic/person-demographic-modal.html","webpack:///src/app/src/main/test/pages/people-history-email/people-history-email-details-modal.ts","webpack:///./src/main/test/pages/people-history-email/people-history-email-details-modal.html","webpack:///src/app/src/main/test/pages/people-history-email/people-history-email-list.ts","webpack:///./src/main/test/pages/people-history-email/people-history-email-list.html","webpack:///src/app/src/main/test/pages/people-questionary/people-questionary-activation-modal.ts","webpack:///./src/main/test/pages/people-questionary/people-questionary-activation-modal.html","webpack:///src/app/src/main/test/pages/people-questionary/people-questionary-list.ts","webpack:///./src/main/test/pages/people-questionary/people-questionary-list.html","webpack:///src/app/src/main/test/pages/people-resume/people-resume-edit.ts","webpack:///./src/main/test/pages/people-resume/people-resume-edit.html","webpack:///src/app/src/main/test/pages/people-tags/person-tags.ts","webpack:///src/app/src/main/test/pages/people-tags/person-tags-modal.ts","webpack:///./src/main/test/pages/people-tags/person-tags-modal.html","webpack:///./src/main/test/pages/people-tags/person-tags.html","webpack:///src/app/src/main/test/pages/people-test-control/people-test-control-edit.ts","webpack:///./src/main/test/pages/people-test-control/people-test-control-edit.html","webpack:///src/app/src/main/test/pages/people-test-control/test-control-image-gallery-modal.ts","webpack:///./src/main/test/pages/people-test-control/test-control-image-gallery-modal.html","webpack:///src/app/src/main/test/pages/people-videointerview/people-videointerview-child-router.ts","webpack:///./src/main/test/pages/people-videointerview/people-videointerview-child-router.html","webpack:///src/app/src/main/test/pages/people-videointerview/people-videointerview-edit.ts","webpack:///./src/main/test/pages/people-videointerview/people-videointerview-edit.html","webpack:///src/app/src/main/test/pages/people-videointerview/request-qualification-video-interview-modal.ts","webpack:///./src/main/test/pages/people-videointerview/request-qualification-video-interview-modal.html","webpack:///src/app/src/main/test/pages/people/agreement-expiration-modal.ts","webpack:///./src/main/test/pages/people/agreement-expiration-modal.html","webpack:///src/app/src/main/test/pages/people/filtered-reminder-confirmation-modal.ts","webpack:///./src/main/test/pages/people/filtered-reminder-confirmation-modal.html","webpack:///src/app/src/main/test/pages/people/person-activation-confirmation-modal.ts","webpack:///./src/main/test/pages/people/person-activation-confirmation-modal.html","webpack:///src/app/src/main/test/pages/people/person-activation-create.ts","webpack:///./src/main/test/pages/people/person-activation-create.html","webpack:///src/app/src/main/test/pages/people/person-child-router.ts","webpack:///./src/main/test/pages/people/person-child-router.html","webpack:///src/app/src/main/test/pages/people/person-delete-modal.ts","webpack:///./src/main/test/pages/people/person-delete-modal.html","webpack:///src/app/src/main/test/pages/people/person-edit.ts","webpack:///./src/main/test/pages/people/person-edit.html","webpack:///src/app/src/main/test/pages/people/person-email-exists-modal.ts","webpack:///./src/main/test/pages/people/person-email-exists-modal.html","webpack:///src/app/src/main/test/pages/people/person-list.ts","webpack:///src/app/src/main/test/pages/people/person-list-child-router.ts","webpack:///./src/main/test/pages/people/person-list-child-router.html","webpack:///./src/main/test/pages/people/person-list.html","webpack:///src/app/src/main/test/pages/people/person-login-info-modal.ts","webpack:///./src/main/test/pages/people/person-login-info-modal.html","webpack:///src/app/src/main/test/pages/people/person-predictor-confirmation-modal.ts","webpack:///./src/main/test/pages/people/person-predictor-confirmation-modal.html","webpack:///src/app/src/main/test/pages/people/public-person-form.ts","webpack:///./src/main/test/pages/people/public-person-form.html","webpack:///src/app/src/main/test/pages/position-competence/position-competence-edit-modal.ts","webpack:///./src/main/test/pages/position-competence/position-competence-edit-modal.html","webpack:///src/app/src/main/test/pages/position-competence/position-competence-list.ts","webpack:///src/app/src/main/test/pages/position-competence/position-competence-list-child-router.ts","webpack:///./src/main/test/pages/position-competence/position-competence-list-child-router.html","webpack:///./src/main/test/pages/position-competence/position-competence-list.html","webpack:///src/app/src/main/test/pages/position-disc/position-disc-edit.ts","webpack:///./src/main/test/pages/position-disc/position-disc-edit.html","webpack:///src/app/src/main/test/pages/position-evaluator/position-evaluator-bulk-activation-modal.ts","webpack:///./src/main/test/pages/position-evaluator/position-evaluator-bulk-activation-modal.html","webpack:///src/app/src/main/test/pages/position-evaluator/position-evaluator-edit-modal.ts","webpack:///./src/main/test/pages/position-evaluator/position-evaluator-edit-modal.html","webpack:///src/app/src/main/test/pages/position-evaluator/position-evaluator-list.ts","webpack:///src/app/src/main/test/pages/position-evaluator/position-evaluator-list-child-router.ts","webpack:///./src/main/test/pages/position-evaluator/position-evaluator-list-child-router.html","webpack:///./src/main/test/pages/position-evaluator/position-evaluator-list.html","webpack:///src/app/src/main/test/pages/position-reference/position-reference-list.ts","webpack:///./src/main/test/pages/position-reference/position-reference-list.html","webpack:///src/app/src/main/test/pages/position/position-child-router.ts","webpack:///./src/main/test/pages/position/position-child-router.html","webpack:///src/app/src/main/test/pages/position/position-edit.ts","webpack:///./src/main/test/pages/position/position-edit.html","webpack:///src/app/src/main/test/pages/position/position-export-card.ts","webpack:///./src/main/test/pages/position/position-export-card.html","webpack:///src/app/src/main/test/pages/position/position-list.ts","webpack:///src/app/src/main/test/pages/position/position-list-child-router.ts","webpack:///./src/main/test/pages/position/position-list-child-router.html","webpack:///./src/main/test/pages/position/position-list.html","webpack:///src/app/src/main/test/pages/tags/tags-list.ts","webpack:///src/app/src/main/test/pages/tags/tags-list-child-router.ts","webpack:///./src/main/test/pages/tags/tags-list-child-router.html","webpack:///./src/main/test/pages/tags/tags-list.html","webpack:///src/app/src/main/test/pages/tags/tags-modal.ts","webpack:///./src/main/test/pages/tags/tags-modal.html","webpack:///src/app/src/main/test/pages/team-activation/team-activation-create.ts","webpack:///./src/main/test/pages/team-activation/team-activation-create.html","webpack:///src/app/src/main/test/pages/team-activation/team-activation-list.ts","webpack:///src/app/src/main/test/pages/team-activation/team-activation-list-child-router.ts","webpack:///./src/main/test/pages/team-activation/team-activation-list-child-router.html","webpack:///./src/main/test/pages/team-activation/team-activation-list.html","webpack:///src/app/src/main/test/pages/team-evaluator/team-evaluator-list.ts","webpack:///src/app/src/main/test/pages/team-evaluator/team-evaluator-list-child-router.ts","webpack:///./src/main/test/pages/team-evaluator/team-evaluator-list-child-router.html","webpack:///./src/main/test/pages/team-evaluator/team-evaluator-list.html","webpack:///src/app/src/main/test/pages/team-person/team-person-activation-list-modal.ts","webpack:///./src/main/test/pages/team-person/team-person-activation-list-modal.html","webpack:///src/app/src/main/test/pages/team-person/team-person-disc-activation-modal.ts","webpack:///./src/main/test/pages/team-person/team-person-disc-activation-modal.html","webpack:///src/app/src/main/test/pages/team-person/team-person-list.ts","webpack:///src/app/src/main/test/pages/team-person/team-person-list-child-router.ts","webpack:///./src/main/test/pages/team-person/team-person-list-child-router.html","webpack:///./src/main/test/pages/team-person/team-person-list.html","webpack:///src/app/src/main/test/pages/team/team-child-router.ts","webpack:///./src/main/test/pages/team/team-child-router.html","webpack:///src/app/src/main/test/pages/team/team-edit.ts","webpack:///./src/main/test/pages/team/team-edit.html","webpack:///src/app/src/main/test/pages/team/team-list.ts","webpack:///src/app/src/main/test/pages/team/team-list-child-router.ts","webpack:///./src/main/test/pages/team/team-list-child-router.html","webpack:///./src/main/test/pages/team/team-list.html","webpack:///src/app/src/main/test/test-child-router.ts","webpack:///./src/main/test/test-child-router.html","webpack:///src/app/src/models/adjustment/operator.ts","webpack:///src/app/src/models/adjustment/operatorViewEngineHooks.ts","webpack:///src/app/src/models/agreements/activityStatusViewEngineHooks.ts","webpack:///src/app/src/models/agreements/agreementDuration.ts","webpack:///src/app/src/models/agreements/agreementDurationViewEngineHooks.ts","webpack:///src/app/src/models/agreements/agreementStatusViewEngineHooks.ts","webpack:///src/app/src/models/agreements/companyType.ts","webpack:///src/app/src/models/agreements/companyTypeViewEngineHooks.ts","webpack:///src/app/src/models/agreements/corporateIdType.ts","webpack:///src/app/src/models/agreements/corporateIdTypeViewEngineHooks.ts","webpack:///src/app/src/models/agreements/notify.ts","webpack:///src/app/src/models/agreements/notifyViewEngineHooks.ts","webpack:///src/app/src/models/archetypes/archetypeType.ts","webpack:///src/app/src/models/archetypes/archetypeTypeViewEngineHooks.ts","webpack:///src/app/src/models/catalogs/ageRange.ts","webpack:///src/app/src/models/catalogs/ageRangeViewEngineHooks.ts","webpack:///src/app/src/models/catalogs/educationalLevelViewEngineHooks.ts","webpack:///src/app/src/models/catalogs/genre.ts","webpack:///src/app/src/models/catalogs/genreViewEngineHooks.ts","webpack:///src/app/src/models/companies/companyOrganizationType.ts","webpack:///src/app/src/models/companies/companyOrganizationTypeViewEngineHooks.ts","webpack:///src/app/src/models/companies/passwordChangingPeriod.ts","webpack:///src/app/src/models/companies/passwordChangingPeriodViewEngineHooks.ts","webpack:///src/app/src/models/localizations/labelModule.ts","webpack:///src/app/src/models/localizations/labelModuleViewEngineHooks.ts","webpack:///src/app/src/models/messages/message-period.ts","webpack:///src/app/src/models/messages/messagePeriodViewEngineHooks.ts","webpack:///src/app/src/models/plans/demoLimitTime.ts","webpack:///src/app/src/models/plans/demoLimitTimeViewEngineHooks.ts","webpack:///src/app/src/models/plans/otherPlanItemType.ts","webpack:///src/app/src/models/plans/otherPlanItemTypeViewEngineHooks.ts","webpack:///src/app/src/models/plans/planTypeViewEngineHooks.ts","webpack:///src/app/src/models/plans/selectionPlanComponentType.ts","webpack:///src/app/src/models/plans/selectionPlanComponentTypeViewEngineHooks.ts","webpack:///src/app/src/models/plans/spendModeViewEngineHooks.ts","webpack:///src/app/src/models/plans/talentChargeFrequency.ts","webpack:///src/app/src/models/plans/talentChargeFrequencyViewEngineHooks.ts","webpack:///src/app/src/models/plans/testPlanItemTypeViewEngineHooks.ts","webpack:///src/app/src/models/plans/visualizationType.ts","webpack:///src/app/src/models/plans/visualizationTypeViewEngineHooks.ts","webpack:///src/app/src/models/questionaries/disc.ts","webpack:///src/app/src/models/questionaries/discTypeViewEngineHooks.ts","webpack:///src/app/src/models/questionaries/discViewEngineHooks.ts","webpack:///src/app/src/models/questionaries/gameTest.ts","webpack:///src/app/src/models/questionaries/gameTestViewEngineHooks.ts","webpack:///src/app/src/models/questionaries/itemToQualifyViewEngineHooks.ts","webpack:///src/app/src/models/questionaries/modularQuestionaryNoDiscTypeViewEngineHooks.ts","webpack:///src/app/src/models/questionaries/noDiscTypeViewEngineHooks.ts","webpack:///src/app/src/models/questionaries/organizationTypeViewEngineHooks.ts","webpack:///src/app/src/models/questionaries/questionaryTypeViewEngineHooks.ts","webpack:///src/app/src/models/questions/questionInteractionTypeViewEngineHooks.ts","webpack:///src/app/src/models/questions/questionTypeViewEngineHooks.ts","webpack:///src/app/src/models/questions/reviewerStatusTypeViewEngineHooks.ts","webpack:///src/app/src/models/security/roleViewEngineHooks.ts","webpack:///src/app/src/models/security/userStateViewEngineHooks.ts","webpack:///src/app/src/models/talents/exportTransactionTypeViewEngineHooks.ts","webpack:///src/app/src/models/talents/transactionTypeViewEngineHooks.ts","webpack:///src/app/src/models/test-archive/archiveType.ts","webpack:///src/app/src/models/test-archive/archiveTypeViewEngineHooks.ts","webpack:///src/app/src/models/test-core/inbox/inboxByUserStatusViewEngineHooks.ts","webpack:///src/app/src/models/test-core/test-control/testControlStatus.ts","webpack:///src/app/src/models/test-core/test-control/testControlStatusViewEngineHook.ts","webpack:///src/app/src/models/test-organization/organizationActivationTypeViewEngineHooks.ts","webpack:///src/app/src/models/test-perfiltic/difficulty.ts","webpack:///src/app/src/models/test-perfiltic/difficultyViewEngineHooks.ts","webpack:///src/app/src/models/test-person/activationQuestionaryStatus.ts","webpack:///src/app/src/models/test-person/activationQuestionaryStatusViewEngineHooks.ts","webpack:///src/app/src/models/test-person/observerRole.ts","webpack:///src/app/src/models/test-person/observerRoleViewEngineHooks.ts","webpack:///src/app/src/models/test-person/personActivationTypeViewEngineHooks.ts","webpack:///src/app/src/models/test-person/personModeViewEngineHooks.ts","webpack:///src/app/src/models/test-person/questionaryWay.ts","webpack:///src/app/src/models/test-person/questionaryWayViewEngineHooks.ts","webpack:///src/app/src/models/test-person/testsViewEngineHooks.ts","webpack:///src/app/src/models/test-person/whoCanSeeReportViewEngineHooks.ts","webpack:///src/app/src/models/test-position/positionActivationTypeViewEngineHooks.ts","webpack:///src/app/src/models/test-position/positionLevel.ts","webpack:///src/app/src/models/test-position/positionLevelViewEngineHooks.ts","webpack:///src/app/src/models/test-position/positionQuestionaryType.ts","webpack:///src/app/src/models/test-position/positionQuestionaryTypeViewEngineHooks.ts","webpack:///src/app/src/models/test-reports/reports/parameterViewEngineHooks.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","0","__webpack_require__","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","s","i18n","this","logger","getLogger","info","params","tr","success","warning","item","val","Array","isArray","Notification","_typeof","iterator","obj","constructor","_createClass","defineProperties","props","descriptor","configurable","writable","Constructor","protoProps","staticProps","_normalizeAbsolutePath","path","hasPushState","absolute","arguments","substring","_createRootedPath","fragment","baseUrl","isAbsoluteUrl","test","_resolveUrl","isRootedPath","_ensureArrayWithSingleRoutePerConfig","config","routeConfigs","route","ii","current","assign","CommitChangesStep","run","navigationInstruction","next","_commitChanges","then","_updateTitle","NavigationInstruction","init","plan","options","viewPortInstructions","ancestorParams","currentParams","hasChildRouter","getWildCardName","unshift","parentInstruction","allParams","apply","queryParams","concat","lifecycleArgs","getAllInstructions","instructions","_key","childInstruction","childNavigationInstruction","getAllPreviousInstructions","map","previousInstruction","filter","addViewPortInstruction","viewPortName","strategy","component","currentViewPort","childRouter","wildcardIndex","lastIndexOf","substr","getWildcardPath","wildcardName","queryString","getBaseUrl","_this","decodeURI","nonEmptyRoute","router","routes","find","encodeURI","waitToSwap","_this2","currentInstruction","navModel","isActive","refreshNavigation","loads","delaySwaps","_loop","viewPortInstruction","viewPort","viewPorts","activationStrategy","replace","parentCatchHandler","process","x","forEach","swap","instruction","title","_buildTitle","titleSeparator","history","setTitle","separator","childTitles","transformTitle","_viewPortInstruction","childTitle","join","NavModel","relativeHref","href","settings","updateTitle","isNavigationCommand","navigate","Redirect","url","trigger","shouldContinueProcessing","setRouter","appRouter","useAppRouter","RedirectToRoute","navigateToRoute","pipelineStatus","completed","canceled","rejected","running","Pipeline","steps","addStep","step","getSteps","index","complete","currentStep","createCompletionHandler","cancel","status","output","RouterConfiguration","pipelineSteps","addPipelineStep","addAuthorizeStep","addPreActivateStep","addPreRenderStep","addPostRenderStep","fallbackRoute","_fallbackRoute","mapRoute","useViewPortDefaults","viewPortConfig","viewPortDefaults","_routeConfig","createNavModel","addRoute","mapUnknownRoutes","unknownRouteConfig","exportToRouter","handleUnknownRoutes","isRoot","pipelineProvider","_i","_ii","_pipelineSteps$_i","_name","_step","noChange","invokeLifecycle","BuildNavigationPlanStep","_buildNavigationPlan","catch","forceLifecycleMinimum","_router","_createNavigationInstruction","redirect","newInstruction","_key2","redirectLocation","generate","prev","defaults","newParams","prevParams","nextParams","nextWildCardName","_key3","_key4","compareQueryParams","prevQueryParams","nextQueryParams","_key5","_key6","hasDifferentParameterValues","pending","_loop2","prevViewPortInstruction","nextViewPortConfig","viewPortPlan","prevComponent","prevModuleId","viewModel","_prevViewPortInstruct","determineActivationStrategy","task","childPlan","Router","container","_this3","parent","reset","_this4","isConfigured","isNavigating","isExplicitNavigation","isExplicitNavigationBack","isNavigatingFirst","isNavigatingNew","isNavigatingRefresh","isNavigatingForward","isNavigatingBack","couldDeactivate","navigation","_fallbackOrder","_recognizer","_childRecognizer","_configuredPromise","_resolveConfiguredPromise","registerViewPort","ensureConfigured","configure","callbackOrConfig","_this5","result","_hasPushState","navigateBack","createChild","hasRoute","rootedPath","getAbsoluteRoot","order","nav","validateRouteConfig","navigationStrategy","view","charAt","caseSensitive","state","add","handler","_settings","withChild","JSON","parse","stringify","indexOf","types","dynamics","stars","sort","a","b","hasOwnRoute","_this6","catchAllHandler","_createRouteConfig","_current","_refreshBaseUrl","generateBaseUrl","queryIndex","results","recognize","instructionInit","first","_instruction","evaluateNavigationStrategy","_instruction2","_router2","_parentCatchAllHandler","newParentInstruction","_findParentInstructionFromRouter","_instruction3","_this7","_name2","evaluator","context","CanDeactivatePreviousStep","processDeactivatable","CanActivateNextStep","processActivatable","DeactivatePreviousStep","ActivateNextStep","callbackName","ignoreResult","infos","findDeactivatable","list","_viewPortPlan","addPreviousDeactivatable","inspect","shouldContinue","iterate","processPotential","prevViewModel","findActivatable","keys","_current2$viewModel","_current2","SafeSubscription","subscriptionFunc","_subscribed","_subscription","unsubscribe","subscribe","obs","sub","subscribed","_error","RouteLoader","loadRoute","LoadRouteStep","routeLoader","inject","loadNewRoute","loadPromises","determineWhatToLoad","toLoad","_viewPortPlan2","_viewPortInstruction3","childContainer","getChildRouter","configureRouter","loadComponent","PipelineSlot","alias","slotName","slotAlias","_this8","PipelineProvider","_createPipelineSlot","createPipeline","_this9","useCanDeactivateStep","pipeline","_findStep","found","includes","removeStep","slot","splice","_clearSteps","AppRouter","_Router","events","_this10","self","ReferenceError","_possibleConstructorReturn","subClass","superClass","TypeError","setPrototypeOf","__proto__","_inherits","maxInstructionCount","_queue","loadUrl","_this11","_queueInstruction","restorePreviousLocation","_this12","_dequeueInstruction","_findViewModel","resolveConfiguredPromise","activate","routeHandler","deactivate","_this13","_this14","instructionCount","navtracker","getState","currentNavigationTracker","Date","now","setState","publish","processResult","resolveInstruction","finalResult","navigationCommandResult","_","innerResult","isInnerInstruction","eventArgs","eventName","_queryString","previousLocation","sessionService","ea","useTraditionalUriTemplates","isRequesting","backendUrl","URLS_BACKEND","configuteClient","isFormData","getUser","user","access_token","withDefaults","credentials","headers","method","body","isBlob","requestOptions","contentType","toLowerCase","fetch","response","json","blob","requestFormData","download","resource","idOrCriteria","filename","mimetype","getRequestPath","file","File","saveAs","getById","id","criteria","post","update","updateById","patch","patchOne","delete","deleteById","traditional","hasSlash","String","AppHttpClient","client","franchiseId","parameters","getAll","model","changeState","CompanyGroupService","getBillablePlansByFranchiseId","planId","getTestPlanItemsByPlanId","AgreementPlanService","thematicGroupId","ThematicVariablesService","companyId","CompanySettingsService","PerfilticService","DiscType","PositionActivationType","startDate","endDate","operationCountries","activities","company","demoSelectionStartDate","hookCallback","some","hooks","input","toString","isObject","isUndefined","isNumber","isDate","arr","fn","res","hasOwnProp","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","getParsingFlags","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","len","momentProperties","copyConfig","to","from","prop","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","updateInProgress","Moment","updateOffset","isMoment","absFloor","number","Math","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","compareArrays","array1","array2","dontConvert","min","lengthDiff","abs","diffs","warn","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","arg","args","stack","deprecations","deprecateSimple","isFunction","Function","mergeConfigs","parentConfig","childConfig","Locale","set","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","zeroFill","targetLength","forceSign","absNumber","zerosToFill","pow","max","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","callback","func","localeData","formatMoment","expandFormat","array","match","mom","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","regexes","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","RegExp","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInYear","year","isLeapYear","y","parseTwoDigitYear","parseInt","getSetYear","makeGetSet","keepTime","set$1","month","date","daysInMonth","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","MONTHS_IN_FORMAT","defaultLocaleMonths","split","defaultLocaleMonthsShort","handleStrictParse","monthName","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","getSetMonth","defaultMonthsShortRegex","defaultMonthsRegex","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createDate","h","M","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","day","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","globalLocale","getSetHour","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","MM","yy","meridiemParse","locales","localeFamilies","normalizeLocale","loadLocale","oldLocale","_abbr","getSetGlobalLocale","values","getLocale","defineLocale","abbr","_config","parentLocale","names","j","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","currentDateArray","w","weekYear","temp","weekdayOverflow","GG","W","E","createLocal","_week","curWeek","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","getDay","setUTCMinutes","getUTCMinutes","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","string","exec","configFromStringAndFormat","untruncateYear","yearStr","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromRFC2822","monthStr","dayStr","hourStr","minuteStr","secondStr","parsedArray","weekdayStr","parsedInput","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","hour","isPm","meridiemHour","meridiemFixWrap","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromStringAndArray","createFromInputFallback","configFromString","minute","second","millisecond","configFromObject","configFromInput","isUTC","getOwnPropertyNames","k","isObjectEmpty","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","years","quarters","quarter","weeks","days","milliseconds","unitHasDecimal","parseFloat","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","round","offset","utcOffset","sign","offsetFromString","chunkOffset","matcher","matches","parts","cloneWithOffset","diff","clone","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","diffRes","base","parseIso","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","direction","period","tmp","addSubtract","isAdding","invalid","subtract","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetSecond","parseMs","getSetMillisecond","proto","preParsePostFormat","time","formats","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","getPrioritizedUnits","isoWeekday","toArray","toObject","toDate","toISOString","keepOffset","zone","isLocal","prefix","suffix","toJSON","unix","creationData","isoWeek","isoWeeks","weekInfo","isoWeeksInYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","toUpperCase","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","source","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","Y","D","toFixed","total","totalSign","ymSign","daysSign","hmsSign","proto$2","monthsFromDays","withSuffix","posNegDuration","relativeTime$1","toIsoString","version","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","factory","OrganizationActivationType","SpendMode","ReviewerStatusType","CompanyGroupMasterService","getAllByCompany","news","NewsService","sheets","QuestionaryType","convertBulkActivation","getGenerationReportCost","regenerateBulkDownload","BulkDownloadService","isVideoInterview","CustomCompanyQuestionaryService","getByRole","roleId","resendActivationMessage","CoreUserService","getall","ContactService","search","CompanySheetService","reportTemplateId","languageId","listByItemToQualify","itemToQualify","organizationType","ItemToQualify","OrganizationType","Search","CategorySheetService","questionaryId","getVideoInterviewSettings","uploadImage","image","formData","FormData","append","CustomCompanyQuestionService","getWeightByQuestionId","questionId","ThematicAssociationService","thematicVariableId","bulkUpload","ScaleService","currentQuestionary","createLogFile","ModularQuestionaryService","_extends","metadata","paramTypes","propertyType","properties","metadataKey","targetKey","getOwn","getPrototypeOf","Reflect","getOwnMetadata","define","metadataValue","defineMetadata","getOrCreateOwn","Type","originStorage","Map","unknownOrigin","freeze","moduleMember","Origin","origin","eachModule","decorators","_len","rest","applicator","on","deprecated","optionsOrTarget","maybeKey","maybeDescriptor","decorator","methodSignature","SyntaxError","mixin","behavior","instanceKeys","possible","resolvedTarget","alwaysValid","noCompose","ensureProtocolOptions","validate","compose","createProtocolValidator","createProtocolAsserter","protocol","assert","hidden","decorates","ArchetypeService","$","$container","listener","previousToast","toastId","toastType","toastr","clear","$toastElement","clearOptions","getOptions","getContainer","clearToast","toastsToClear","children","clearContainer","remove","removeToast","optionsOverride","notify","iconClass","iconClasses","containerId","attr","addClass","positionClass","appendTo","createContainer","force","hideMethod","hideDuration","easing","hideEasing","preventDuplicates","shouldExit","intervalId","$titleElement","$messageElement","$progressElement","$closeElement","closeHtml","progressBar","hideEta","maxHideTime","startTime","toastClass","escapeHtml","titleClass","messageClass","setMessage","closeButton","closeClass","prepend","progressClass","rtl","newestOnTop","ariaValue","setAria","hide","showMethod","showDuration","showEasing","onShown","timeOut","hideToast","setInterval","updateProgress","closeOnHover","hover","stickAround","delayedHideToast","onclick","tapToDismiss","click","stopPropagation","cancelBubble","onCloseClick","debug","log","override","closeMethod","closeDuration","closeEasing","onHidden","endTime","extendedTimeOut","stop","percentage","width","is","Languages","LoginRedirectKey","InboxByUserStatus","PersonMode","ActivationType","WootricComponentName","NoDiscType","questionaries","sheetLanguages","wallet","sourceUser","targetUser","questionary","TestPlanItemType","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","noop","nextTick","browser","env","argv","versions","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","C","C_lib","Base","WordArray","C_algo","MD5","EvpKDF","CryptoJS","lib","algo","cfg","keySize","hasher","iterations","compute","password","salt","block","derivedKey","derivedKeyWords","words","finalize","sigBytes","OpenIdConnectRoles","createDialogCancelError","wasCancelled","currentCompanyId","navigator","userAgent","doc","get_URL","URL","webkitURL","save_link","createElementNS","can_use_save_link","is_safari","HTMLElement","safari","is_chrome_ios","throw_outside","ex","setImmediate","revoke","revokeObjectURL","auto_bom","Blob","fromCharCode","FileSaver","no_auto_bom","object_url","filesaver","dispatch_all","event_types","dispatch","readyState","INIT","createObjectURL","node","MouseEvent","dispatchEvent","DONE","FileReader","reader","onloadend","open","location","readAsDataURL","fs_error","FS_proto","msSaveOrOpenBlob","abort","WRITING","onwritestart","onprogress","onwrite","onabort","onwriteend","content","TypeActivationUrl","QuestionType","PlanType","useSourceMap","cssMapping","btoa","sourceMapping","sourceMap","unescape","encodeURIComponent","sourceURLs","sources","sourceRoot","cssWithMappingToString","mediaQuery","alreadyImportedModules","enc","Base64","wordArray","_map","clamp","base64Chars","triplet","paddingChar","base64Str","base64StrLength","reverseMap","_reverseMap","charCodeAt","paddingIndex","nBytes","bits1","bits2","bitsCombined","parseLoop","Hasher","T","sin","_doReset","_hash","_doProcessBlock","offset_i","M_offset_i","H","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","FF","HH","II","_doFinalize","dataWords","nBitsTotal","_nDataBytes","nBitsLeft","nBitsTotalH","nBitsTotalL","_process","hash","H_i","_createHelper","HmacMD5","_createHmacHelper","Renderer","getDialogContainer","showDialog","dialogController","hideDialog","DefaultDialogSettings","lock","startingZIndex","centerHorizontalOnly","rejectOnCancel","ignoreTransitions","franchiseMaster","franchise","planTest","planSelection","franchisesMaster","franchises","plansTest","plansSelection","companiesName","getSettingsById","getByRoleId","CoreCompanyService","isManipulationScale","isDiscQuestionary","questions","numeral","decimal","binary","unformatRegex","currentLocale","zeroFormat","nullFormat","scalePercentBy100","Numeral","_input","_value","kind","unformatFunction","regexp","isNumeral","regexps","unformat","stringToNumber","Number","numberToFormat","leadingCount","abbrForce","int","precision","signed","thousands","negP","optDec","neg","abbreviations","trillion","billion","million","thousand","delimiters","abbreviation","stringOriginal","currency","symbol","insert","subString","start","reduce","multiplier","correctionFactor","accum","mn","maxDecimals","optionals","boundedPrecision","optionalsRegExp","power","splitValue","minDecimals","register","culture","_decimalSep","_thousandSep","_currSymbol","_valArray","_abbrObj","_thousandRegEx","trim","formatFunction","corrFactor","curr","currI","O","multiply","divide","difference","space","suffixes","bytes","bytesMultiplier","symbols","before","after","toExponential","timeArray","instance","WhoCanSeeReport","getDiscByLanguage","CompanyDiscProfileService","peopleList","teamId","TeamPersonService","listToApprove","changeStatusToApproved","AgreementMasterService","print","html","fullName","pdfPrinterUrl","URLS_PDF_PRINTER","withBaseUrl","printById","reportsUrl","URLS_REPORTS","reportClient","pdfPrinterClient","text","PdfService","QuestionUse","serviceRatingService","attached","profile","setupScript","getServiceRatingSettings","serviceRating","setToken","currentToken","toTimestamp","basic_info","createdOn","timestamp","innerHTML","userName","beacon","sdk","mainHome","statusSurvey1","tokenSurvey1","personList","statusSurvey2","tokenSurvey2","personActivationCreate","statusSurvey3","tokenSurvey3","strDate","datum","Wootric","TransactionType","CoreSheetService","EducationalLevel","personId","CommentService","toEmail","EmailHistoryService","observedId","activationId","getWeightAllEvaluatorsByActivation","createBulkActivation","filedata","fileName","PersonObserverService","getMediaByBulkActivationId","BulkResultsExportService","positionId","getAllCompetences","PositionCompetenceService","TeamActivationService","CoreLanguageService","ActivityStatus","ExportTransactionType","BulkTalentsExportService","getConfigurationByQuestionaryId","QuestionaryConfigurationService","CustomCompanyModularQuestionService","getByQuestionId","QuestionHistoryService","getMessageByTemplateName","templateName","MessageTemplateService","SecondPasswordService","_classCallCheck","consoleLogger","_console","arr2","_toConsumableArray","Logger","concreteLogger","setDebug","bool","forward","_len2","_len3","_len4","lvl","debugOnly","moduleName","EventEmitter","observers","cloned","observer","_cloned","_ref","makeString","copy","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","setPath","newValue","_getLastOfPath","getPath","_getLastOfPath3","str","_entityMap","getOwnPropertyDescriptor","_defaults","_EventEmitter","ResourceStore","defaultNS","addNamespaces","removeNamespaces","getResource","lng","keySeparator","addResource","silent","addResources","resources","addResourceBundle","deep","overwrite","pack","deepExtend","removeResourceBundle","hasResourceBundle","getResourceBundle","compatibilityAPI","processors","addPostProcessor","handle","translator","processor","Translator","services","changeLanguage","language","exists","interpolation","extractFromKey","nsSeparator","namespaces","translate","overloadTranslationOptionHandler","_extractFromKey","namespace","appendNamespaceToCIMode","resType","noObject","joinArrays","returnObjects","returnedObjectHandler","extendTranslation","usedDefault","usedKey","isValidLookup","defaultValue","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","saveMissing","missingKeyHandler","backendConnector","appendNamespaceToMissingKey","parseMissingKeyHandler","interpolator","defaultVariables","interpolate","nest","postProcess","postProcessorNames","applyPostProcessor","postProcessor","extracted","fallbackNS","needsPluralHandling","count","needsContextHandling","codes","code","finalKey","finalKeys","pluralSuffix","pluralResolver","getSuffix","contextSeparator","possibleKey","pop","returnNull","returnEmptyString","resourceStore","capitalize","LanguageUtil","whitelist","getScriptPartFromCode","formatLanguageCode","getLanguagePartFromCode","specialCases","lowerCaseLng","part","cleanCode","isWhitelisted","load","nonExplicitWhitelist","fallbacks","default","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","createRules","rules","numbers","plurals","PluralResolver","addRule","getRule","needsPlural","rule","idx","noAbs","simplifyPluralSuffix","returnSuffix","compatibilityJSON","Interpolator","escape","escapeValue","iOpts","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","maxReplaces","resetRegExp","regexpStr","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","nestingRegexp","replaces","regexSafe","handleFormat","f","clonedOptions","handleHasOptions","optionsString","_slicedToArray","_arr","_n","_e","_s","done","sliceIterator","Connector","backend","store","queueLoad","languages","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","loaded","errors","_name$split","_name$split2","q","_getLastOfPath2","what","read","fcName","tried","wait","allowMultiLoading","readMulti","_name$split3","_name$split4","bundle","loadOne","reload","_name$split5","_name$split6","fallbackValue","cache","loadLngs","enabled","save","transformOptions","I18n","external","isInitialized","isClone","_ret","initImmediate","createClassOnDemand","ClassOrObject","preload","pluralSeparator","_format","lu","LanguageUtils","cacheConnector","BackendConnector","CacheConnector","languageDetector","detection","storeApi","_store","loadResources","reloadResources","use","setLng","cacheUserLanguage","async","detect","getFixedT","fixedT","opts","_translator","_translator2","setDefaultNamespace","loadNamespaces","loadLanguages","preloaded","newLngs","createInstance","cloneInstance","mergedOptions","membersToCopy","i18next","memo","stylesInDom","isOldIE","atob","getTarget","querySelector","getElement","styleTarget","HTMLIFrameElement","contentDocument","singleton","singletonCounter","stylesInsertedAtTop","fixUrls","addStylesToDom","styles","domStyle","refs","addStyle","listToStyles","newStyles","css","media","insertStyleElement","style","insertInto","lastStyleElementInsertedAtTop","insertAt","nextSibling","insertBefore","firstChild","removeStyleElement","parentNode","removeChild","createStyleElement","attrs","nonce","getNonce","addAttrs","el","transform","styleIndex","applyToSingletonTag","link","rel","createLinkElement","updateLink","applyToTag","newObj","DEBUG","newList","mayRemove","textStore","replaceText","replacement","Boolean","styleSheet","cssText","cssNode","createTextNode","childNodes","autoFixUrls","convertToAbsoluteUrls","oldSrc","URLS_FRONTEND","URLS_MICROSITE","URLS_PREDICTOR","URLS_ROBOTHUNTER","KEY_CRYPTO","KEY_PLUS","KEY_SLASH","KEY_EQUAL","desc","decorate","__metadata","v","require","aurelia_dependency_injection_1","permission_store_1","AuthorizationService","permissionStore","isAuthorized","permissions","permissionDefinitions","getPermissionDefinitions","noDefinitionsSet","anyPermissionDefinitionIsTrue","isAuthorizedByPermissionName","permissionNames","permission","getPermissionName","onlyAuthorizePermissions","permissionDefinition","getDefinition","__decorate","autoinject","DialogController","renderer","releaseResources","controller","unbind","cancelOperation","ok","close","closeError","closePromise","dialogResult","reason","canDeactivate","_class","_class2","_descriptor","_descriptor2","_descriptor3","_descriptor4","_initDefineProp","initializer","_applyDecoratedDescriptor","reverse","RouterView","_dec","element","viewSlot","viewLocator","compositionTransaction","compositionEngine","getAttribute","initialComposition","compositionTransactionNotifier","enlist","Element","created","owningView","bindingContext","overrideContext","viewModelResource","RouterViewLocator","_notify","layoutInstruction","layoutViewModel","layoutView","layoutModel","viewStrategy","getViewStrategy","makeRelativeTo","viewFactory","compositionTransactionOwnershipToken","tryCapture","dynamic","previousView","work","swapStrategy","swapOrder","ready","automate","waitForCompositionComplete","createController","distributeView","slots","newView","findNearest","routerView","mi","History","getByActivationQuestionaryId","activationQuestionaryId","getResponsesToRateByQuestionaryId","responseQuestionary","requestQualificationVideoInterview","ResponseQuestionaryVideoInterviewService","Topic","getLoginInfoById","regeneratePassword","put","predictorConsumption","transactionType","getPredictorTalentsConsumption","sendRemindersByFilter","getListByFilter","sendReminder","updateTags","tags","existsEmail","email","PersonService","PositionExportStatus","Timeout","clearFn","_id","_clearFn","scope","clearInterval","unref","ref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","global","clearImmediate","X32WordArray","C_x64","x64","Word","high","low","toX32","x64Words","x64WordsLength","x32Words","x64Word","wordsLength","ArrayRepeatStrategy","getCollectionObserver","observerLocator","items","getArrayObserver","instanceChanged","repeat","itemsLength","views","viewsLength","viewsRequireLifecycle","childrenSnapshot","itemNameInBindingContext","itemsPreviouslyInViews","viewsToRemove","oldItem","updateViews","removePromise","removeViews","_index","indexOfView","_view","insertView","moveView","_inPlaceProcessItems","removeAllViews","_standardProcessInstanceChanged","addView","viewCount","removeView","last","middle","$middle","$last","updateBindings","instanceMutated","splices","__queuedSplices","_splices$i","removed","addedCount","__array","maybePromise","_runSplices","queuedSplices","runQueuedSplices","nextPromise","removeDelta","rmPromises","jj","viewOrPromise","spliceIndexLow","_handleAddedSplices","spliceIndex","arrayLength","addIndex","end","MapRepeatStrategy","getMapObserver","_standardProcessItems","size","records","removeIndex","record","_getViewIndexByKey","oldValue","SetRepeatStrategy","getSetObserver","_getViewIndexByValue","NumberRepeatStrategy","childrenLength","__assign","__awaiter","thisArg","_arguments","P","generator","fulfilled","__generator","g","label","sent","trys","ops","verb","op","OpenIdConnect","openIdConnectRouting","configuration","userManager","routerConfiguration","login","loginRedirectValue","signinRedirect","logout","err_1","signoutRedirect","logoutRedirectRoute","loginSilent","signinSilent","addOrRemoveHandler","startsWith","observeUser","Parameter","defaultRenderer","UxDialog","UxDialogHeader","UxDialogBody","UxDialogFooter","AttachFocus","defaultCSSText","DialogConfiguration","frameworkConfiguration","applySetter","fwConfig","_apply","transient","injectStyles","globalResources","useDefaults","useRenderer","useCSS","useStandardResources","useResource","resourceName","translations","ar","translation","en","es","it","de","nl","fr","th","sv","da","no","ja","jp","pt","zh","RelativeTime","service","i18nextReady","setup","trans","alternateFb","baseLocale","addTranslationResource","subkey","getRelativeTime","timeDiff","getTimeDiffDescription","timeDivisor","unitAmount","IfCore","showing","isCaching","returnToCache","_show","isBound","_hide","isInteger","LazyOptional","hasResolver","of","ObservationType","getLastAgreementByCompany","getExpirationWarning","hasSeenExpirationMessage","robothunterByCompany","getAgreementsByCompanyId","isRobotHunter","getReadOnlyById","changeStatusToDraft","changeStatusToReview","changeStatusToForwarded","changeStatusToValid","changeStatusToCancelled","resendToApprove","getTestControlCompanySettingsByCompanyId","AgreementService","tz","root","a0","isMsie","isBlankString","escapeRegExChars","isString","isPlainObject","isElement","nodeType","isJQuery","toStr","proxy","each","collection","cb","grep","every","identity","getIdGenerator","counter","templatify","defer","debounce","immediate","later","callNow","throttle","previous","remaining","guid","_p8","random","tokenizers","nonword","whitespace","ngram","getObjTokenizer","word","char","tokenizer","LruCache","maxSize","List","tail","Node","tailItem","moveToFront","PersistentStorage","LOCAL_STORAGE","localStorage","setItem","removeItem","ttlKey","keyMatcher","ls","_noop","_prefix","_ttlKey","isExpired","_safeSet","decode","getItem","ttl","encode","gatherMatchingKeys","parseJSON","Transport","pendingRequestsCount","pendingRequests","sharedCache","maxPendingRequests","cancelled","lastReq","_send","transport","_get","limiter","_cache","setMaxPendingRequests","num","resetCache","_fingerprint","param","fingerprint","jqXhr","resp","fail","always","onDeckRequestArgs","SearchIndex","datumTokenizer","queryTokenizer","identify","matchAnyQueryToken","bootstrap","datums","trie","normalizeTokens","chars","ch","newNode","ids","query","arrayA","arrayB","ai","bi","intersection","lenArrayA","lenArrayB","getIntersection","seen","uniques","unique","serialize","Prefetch","prepare","thumbprint","storage","cacheKey","dataType","fromCache","stored","fromNetwork","Remote","indexResponse","cancelLastRequest","oParser","sorter","initialize","sufficient","indexRemote","prefetch","remote","callbackToDeferred","ajax","parsePrefetch","wildcard","rateLimitBy","rateLimitWait","toRemotePrepare","toLimiter","parseRemote","deferred","Deferred","old","Bloodhound","noConflict","__ttAdapter","sync","_loadPrefetch","serialized","_initialize","initPromise","nonDuplicates","clearPrefetchCache","clearRemoteCache","ttAdapter","initial","NProgress","Settings","minimum","positionUsing","speed","trickle","trickleRate","trickleSpeed","showSpinner","barSelector","spinnerSelector","template","toBarPerc","started","isStarted","progress","render","bar","ease","offsetWidth","getPositioningCSS","barCSS","transition","barPositionCSS","opacity","inc","amount","$promise","fromStart","isRendered","getElementById","documentElement","spinner","perc","removeElement","removeClass","bodyStyle","vendorPrefix","cssPrefixes","cssProps","getStyleProp","letter","vendorName","capName","getVendorProp","applyCss","hasClass","classList","oldList","className","CheckStatusCompanyCompetence","_dereq_","SomePromiseArray","_SomePromiseArray","any","setHowMany","setUnwrap","firstLineError","schedule","Queue","util","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","_trampolineEnabled","drainQueues","_drainQueues","_schedule","AsyncInvokeLater","receiver","_queueTick","AsyncInvoke","AsyncSettlePromises","_pushOne","_drainQueue","_drainQueueStep","_settlePromises","setScheduler","hasCustomScheduler","enableTrampoline","disableTrampolineIfNecessary","hasDevTools","haveItemsQueued","fatalError","isNode","stderr","write","exit","throwLater","invokeLater","invoke","settlePromises","_reset","INTERNAL","tryConvertToPromise","calledBind","rejectThis","_reject","targetRejected","promiseRejectionQueued","bindingPromise","_then","bindingResolved","_bitField","_resolveCallback","bindingRejected","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","bluebird","cr","callerCache","getterCache","canEvaluate","caller","methodName","classString","ensureMethod","namedGetter","indexedGetter","isIdentifier","propertyName","maybeGetter","getGetter","PromiseArray","apiRejection","tryCatch","errorObj","_async","cancellation","_warn","child","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","NEXT_FILTER","getKeys","instances","boundTo","predicateLoop","matchesPredicate","longStackTraces","contextStack","Context","_trace","CapturedTrace","peekContext","_promiseCreated","_pushContext","_popContext","_peekContext","trace","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","ctx","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","getDomain","_getDomain","Warning","es5","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","warnings","wForgottenReturn","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejection","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","onPossiblyUnhandledRejection","domain","domainBind","onUnhandledRejectionHandled","disableLongStackTraces","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","Promise_dereferenceTrace","_dereferenceTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","longStackTracesDereferenceTrace","hasLongStackTraces","fireDomEvent","CustomEvent","eventData","detail","cancelable","domEvent","Event","createEvent","initCustomEvent","fireGlobalEvent","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","branchesRemainingToCancel","warningsOption","_clearCancellationData","_execute","monitoring","_fireEvent","isFulfilled","ignoreSelf","_parent","attachExtraTrace","__stackCleaned__","parsed","parseStackAndMessage","notEnumerableProp","formatAndLogError","cleanStack","line","isTraceLine","isInternalFrame","shouldIgnore","stackFramesAsArray","isSoft","localHandler","localEventFired","formatNonError","maxChars","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","_promisesCreated","uncycle","inherits","nodes","stackToIndex","cycleEdgeNode","currentChildLength","stacks","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","isTTY","color","checkForgottenReturns","returnValue","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","caught","catchReturn","PromiseReduce","PromiseAll","promiseAllThis","mapSeries","_TypeError","_RangeError","Objectfreeze","subError","nameProperty","defaultMessage","SubError","CancellationError","TimeoutError","AggregateError","RangeError","methods","level","OperationalError","cause","indent","lines","errorTypes","RejectionError","isES5","getDescriptor","propertyIsWritable","has","ObjectKeys","PromiseMap","catchFilter","PassThroughHandlerContext","called","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","reasonOrValue","isFinallyHandler","isRejected","_passThrough","lastly","tap","tapCatch","handlerOrPredicate","catchInstances","Proxyable","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","coroutine","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","spawn","addYieldHandler","spread","MappingPromiseArray","_filter","constructor$","_callback","_preservedValues","_limit","_inFlight","_asyncInit","concurrency","_init$","_init","_values","preservedValues","_totalResolved","_resolve","booleans","_resolveFromSyncValue","attempt","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","spreadAdapter","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","adapter","22","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","APPLY","createContext","nodebackForPromise","check","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","deferReject","fillTypes","reflect","didFulfill","didReject","_setIsFinal","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","proxyable","shouldBind","_setFollowee","synchronous","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","_settlePromise","isPromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","toFastProperties","23","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","toResolutionValue","getActualLength","shouldCopyValues","isResolved","24","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","defaultFilter","propsFilter","isPromisified","hasPromisified","getDataPropertyOrDefault","promisifiableMethods","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","makeNodePromisified","makeNodePromisifiedEval","__","defaultThis","promisified","promisifyAll","promisifier","promisifiedKey","promisify","copyDescriptors","isClass","25","Es6Map","mapToEntries","extractEntry","PropertiesPromiseArray","entries","isMap","_isMap","castValue","entriesToMap","keyOffset","26","capacity","_capacity","_front","_willBeOverCapacity","_checkCapacity","wrapMask","front","_resizeTo","oldCapacity","srcIndex","dst","dstIndex","arrayMove","27","race","28","ReductionPromiseArray","initialValue","_each","_fn","_initialValue","_currentCancellable","_eachValues","valueOrReason","gotAccum","_gotAccum","gotValue","_eachComplete","sender","_resultCancelled$","29","div","toggleScheduled","div2","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","ProcessNextTick","isRecentNode","nativePromise","standalone","cordova","attributes","toggle","observe","disconnect","30","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","settle","31","CANCELLATION","_howMany","_unwrap","_initialized","howMany","isArrayResolved","_canPossiblyFulfill","_getRangeError","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","32","__isCancelled","33","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","34","HandleWrapper","afterValue","delay","successClear","failureClear","handleWrapper","afterTimeout","35","NULL","dispose","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","_context","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","doDispose","_unsetDisposable","using","spreadArgs","disposer","reflectedResources","resultPromise","inspections","_disposer","36","tryCatchTarget","globalObject","tryCatcher","Child","Parent","isPrimitive","maybeError","safeToString","appendee","excludedPrototypes","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","FakeConstructor","ic","foo","rident","filledRange","isError","ignore","ArrayFrom","itResult","hasEnvVariables","chrome","loadTimes","registerImmediate","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","onreadystatechange","addEventListener","attachEvent","noGlobal","getProto","class2type","hasOwn","fnToString","ObjectFunctionString","support","isWindow","preservedScriptAttributes","noModule","DOMEval","toType","jQuery","selector","rtrim","isArrayLike","jquery","pushStack","elems","merge","prevObject","elem","eq","copyIsArray","expando","isReady","Ctor","isEmptyObject","globalEval","makeArray","inArray","invert","callbackExpect","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","sortOrder","push_native","identifier","pseudos","rwhitespace","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escaped","escapedWhitespace","rcssescape","fcssescape","asCodePoint","unloadHandler","disabledAncestor","addCombinator","disabled","els","seed","nid","groups","newSelector","newContext","ownerDocument","getElementsByTagName","getElementsByClassName","qsa","nodeName","toSelector","testContext","querySelectorAll","qsaError","removeAttribute","cacheLength","markFunction","addHandle","attrHandle","siblingCheck","cur","sourceIndex","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","hasCompare","subWindow","defaultView","top","createComment","getElementsByName","attrId","getAttributeNode","tag","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","elements","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","nodeValue","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","simple","ofType","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","unmatched","innerText","elemLang","activeElement","hasFocus","tabIndex","checked","selected","selectedIndex","radio","checkbox","submit","combinator","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","isXMLDoc","escapeSelector","until","truncate","siblings","rneedsContext","needsContext","rsingleTag","winnow","qualifier","not","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","contents","sibling","targets","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","rnothtmlwhite","Identity","Thrower","adoptValue","noValue","Callbacks","flag","createOptions","firing","memory","fired","locked","firingIndex","fire","stopOnFalse","disable","fireWith","tuples","pipe","fns","newDefer","tuple","returned","onFulfilled","onRejected","onProgress","maxDepth","depth","special","mightThrow","notifyWith","resolveWith","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","resolveContexts","resolveValues","master","updateFunc","rerrorNames","readyException","readyList","removeEventListener","readyWait","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","camelCase","acceptData","owner","Data","uid","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","getData","removeData","_removeData","dequeue","startLength","_queueHooks","clearQueue","pnum","rcssNum","cssExpand","isHiddenWithinTree","display","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","show","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","td","_default","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","rhtml","buildFragment","scripts","selection","ignored","wrap","createDocumentFragment","htmlPrefilter","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","safeActiveElement","one","origFn","handleObjIn","eventHandle","handleObj","handlers","origType","elemData","triggered","delegateType","bindType","delegateCount","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","preventDefault","postDispatch","matchedHandlers","matchedSelectors","button","addProp","hook","originalEvent","noBubble","focus","blur","beforeunload","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","stopImmediatePropagation","altKey","bubbles","changedTouches","ctrlKey","eventPhase","metaKey","pageX","pageY","shiftKey","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","replaceWith","replaceChild","prependTo","insertAfter","replaceAll","original","rnumnonpx","getStyles","opener","getComputedStyle","rboxStyle","curCSS","computed","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","measure","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","emptyStyle","finalPropName","vendorPropName","setPositiveNumber","boxModelAdjustment","dimension","box","isBorderBox","computedVal","extra","delta","getWidthOrHeight","valueIsBorderBox","Tween","cssHooks","origName","isCustomProp","setProperty","getClientRects","getBoundingClientRect","left","margin","padding","border","expand","expanded","propHooks","percent","eased","fx","scrollTop","scrollLeft","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","height","createTween","animation","Animation","tweeners","stopped","prefilters","currentTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflowX","overflowY","prefilter","opt","speeds","fadeTo","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","classes","curValue","clazz","finalValue","toggleClass","stateVal","isValidValue","classNames","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","isTrigger","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","valueOrFunction","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","processData","accepts","responseFields","converters","ajaxSetup","ajaxPrefilter","ajaxTransport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","statusText","finalText","crossDomain","host","hasContent","ifModified","beforeSend","send","nativeStatusText","responses","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","offsetHeight","xhr","XMLHttpRequest","xhrSuccessStatus","1223","xhrSupported","cors","errorCallback","username","xhrFields","ontimeout","responseType","responseText","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","fnOver","fnOut","delegate","undelegate","holdReady","hold","isNumeric","_jQuery","_$","SHA1","HmacSHA1","_class3","_class4","_class5","_class6","_class7","_classInvokers","resolver","StrategyResolver","_singleton","Lazy","_dec2","All","_dec3","Optional","_dec4","checkParent","_checkParent","_dec5","Factory","_dec6","getResolver","NewInstance","_dec7","asKey","dynamicDependencies","dependency","registerInstance","getDecoratorDependencies","lazy","keyValue","optional","checkParentOrTarget","deco","newInstance","asKeyOrTarget","invoker","invokeAsFactory","potentialTarget","FactoryInvoker","dependencies","invokeWithDynamicDependencies","staticDependencies","registration","TransientRegistration","keyOrRegisterInChild","registerInChild","SingletonRegistration","registerResolver","existingResolver","registerTransient","_registerInChild","targetContainer","registerSingleton","validateKey","_emptyParameters","resolverDecorates","InvocationHandler","lookup","construct","classInvokers","deps","fallback","Container","_configuration","_onHandlerCreated","onHandlerCreated","_handlers","_resolvers","makeGlobal","setHandlerCreatedCallback","registerHandler","registerAlias","originalKey","aliasKey","allResolvers","autoRegister","_registration","autoRegisterAll","unregister","_registration2","_handler","_createInvocationHandler","ctor","_dependencies","_len5","Utf8","HMAC","_hasher","hasherBlockSize","blockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","messageUpdate","innerHash","Compose","viewResources","taskQueue","currentController","currentViewModel","changes","pendingTask","processChanges","removeAll","modelChanged","requestUpdate","viewChanged","viewModelChanged","composer","createInstruction","vm","tryActivateViewModel","completeCompositionTask","isEmpty","updateRequested","queueMicroTask","If","primaryProperty","_IfCore","_temp","condition","conditionChanged","_update","animating","elseVm","_swap","Flatpickr","bindToInstance","updateTime","noCalendar","selectedDates","isKeyDown","amPM","wheelDelta","deltaY","isHourElem","hourElement","isMinuteElem","minuteElement","incrementNumInput","pad","timeWrapper","minDateHasTime","setHoursFromInputs","updateValue","enableTime","enableSeconds","secondElement","compareDates","latestSelectedDateObj","minDate","getHours","getMinutes","maxDateHasTime","maxDate","setHours","setHoursFromDate","dateObj","getSeconds","isMobile","time_24hr","onYearInput","currentYearElement","changeYear","ev","onClick","processPostDayAnimation","_animationLoop","animateDays","daysContainer","animationName","animateMonths","navigationCurrentMonth","monthNav","previousSibling","oldCurMonth","jumpToDate","jumpDate","parseDate","currentYear","currentMonth","redraw","timeIncrement","inputElem","createNumberInput","inputClassName","wrapper","numInput","arrowUp","arrowDown","createDay","dayNumber","dateIsEnabled","isEnabled","dayElement","$i","formatDate","ariaDateFormat","todayDateElem","isDateSelected","selectedDateElem","minRangeDate","maxRangeDate","isDateInRange","weekNumbers","insertAdjacentHTML","getWeek","triggerEvent","focusOnDay","currentIndex","newIndex","targetNode","onMouseOver","changeMonth","afterDayAnim","buildDays","firstOfMonth","l10n","isRangeMode","prevMonthDays","utils","getDaysinMonth","dayIndex","dayNum","_hidePrevMonthArrow","_hideNextMonthArrow","updateNavigationCurrentMonth","dayContainer","clearNode","buildWeekdays","weekdayContainer","is_offset","skipAnimations","currentMonthElement","monthToStr","isCalendarElem","calendarContainer","documentClick","isOpen","inline","isCalendarElement","isInput","altInput","newYear","newYearNum","isNewYear","timeless","enable","dateToCheck","onKeyDown","calendarElem","allowInput","allowKeydown","allowInlineKeydown","setDate","altFormat","isTimeObj","timeContainer","selectDate","_delta","hoverDate","initialDate","rangeStartDate","rangeEndDate","containsDisabled","DAY","outOfRange","dayElem","onResize","static","positionCalendar","minMaxDateSetter","inverseDateObj","isValidDate","calendarHeight","calendarWidth","configPos","inputBounds","_positionElement","distanceFromBottom","innerHeight","bottom","showOnTop","rightMost","selectedDate","shouldChangeMonth","showTimeInput","closeOnSelect","single","range","setSelectedDate","inputDate","rangeSeparator","_supportsEvents","initEvent","triggerChange","mobileInput","mobileFormatStr","joinChar","dObj","onMonthNavScroll","isYear","mouseDelta","onMonthNavClick","isPrevMonth","prevMonthNav","isNextMonth","nextMonthNav","arrayify","date1","date2","triggerChangeEvent","_createElement","destroy","_type","instanceConfig","revFormat","F","boolOpts","defaultConfig","userConfig","dataset","_minDate","_maxDate","_i2","plugins","pluginConf","parseConfig","l10ns","altInputClass","placeholder","positionElement","setupInputs","parseDateRules","preloadedDate","defaultDate","_selectedDateObj","_showTimeInput","setupDates","yr","monthNumber","shorthandCurrentMonth","disableMobile","monthNavFragment","prevArrow","scrollTitle","yearInput","nextArrow","__hidePrevMonthArrow","__hideNextMonthArrow","buildMonthNav","innerContainer","weekWrapper","weekAbbreviation","rContainer","hourInput","minuteInput","defaultHour","defaultMinute","hourIncrement","minuteIncrement","secondInput","toggleTitle","buildTime","customAppend","build","inputType","setupMobile","debouncedResize","debouncedChange","ontouchstart","clickOpens","bindEvents","_flatpickr","nodeList","givenDate","onejan","onClose","onChange","onDayCreate","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","longhand","nth","localize","setDefaults","Z","G","J","K","S","U","frmt","shortMonth","setSeconds","unixSeconds","weekNumber","ISODate","setMinutes","tokenRegex","givenFormat","date_orig","fp_isUTC","parsedDate","matchIndex","regexStr","isBackSlash","fp_toUTC","HTMLCollection","flatpickr","NodeList","fp_incr","newDate","getUTCHours","getUTCSeconds","State","charSpec","nextStates","_iterator","_isArray","validChars","invalidChars","escapeRegex","StaticSegment","eachChar","DynamicSegment","consumed","StarSegment","EpsilonSegment","RouteRecognizer","rootState","currentState","skippableStates","statics","routeName","segments","normalizedRoute","splitRoute","segment","_match","_addSegment","addSegment","firstState","nextState","routeNames","_i3","getRoute","nameOrRoute","handlersFor","generationUsesHref","routeParams","segmentValue","states","isSlashDropped","normalizedPath","queryStart","pathLen","recognizeChar","solutions","_i4","sortSolutions","captures","currentCapture","RecognizeResults","_names","_params","isDynamic","findHandler","publicHttpClient","createPublicPerson","personData","recaptchaToken","firstName","lastName","payload","getCountries","validateToken","PublicPersonService","PublicHttpClient","SalesIq","SurveyZoho","isResultsExport","CompanyTestPlanService","sheetIds","observerIds","peopleIds","oneOrTwoPeopleIds","twoPeopleIds","threePeopleIds","positionIds","activationQuestionaryIds","adjustments","competenceIds","activations","questionariesTeam","competences","objectToFormData","fd","pre","indices","nulls","isNull","lastModifiedDate","isFile","getCompanyIdFromPath","pathname","getPersonIdFromPath","getBySheet","sheetId","getQuestionariesWithColors","DefaultColorsReportsService","getSheetsByQuestionary","getPrincipalSheetByQuestionary","QuestionarySheetService","getByActivationId","ActivationThematicAssociateService","PersonResumeService","notification","asignarKey","strData","AES","encrypt","decrypt","encodeSHA256","SHA256","CryptoService","engineersTests","getStatus","PositionExportByCompanyService","getWeightAllEvaluators","PositionEvaluatorService","getByPersonId","TeamPersonActivationService","TeamEvaluatorService","organizationId","OrganizationEvaluatorService","getByTagName","itemTag","updateOrDelete","tagId","TagManagmentService","ArchiveService","PermissionService","agreementId","AgreementTermsOfPayService","AgreementCustomerReqService","getAllTranslationsByQuestionary","createLocalization","updateLocalization","deleteLocalization","getCompetencesQuestionaries","QuestionaryService","BusinessCompanyService","businessCompanyId","BankInformationService","ActivityService","getMediaByAgreementFileId","AgreementFileService","CompanyDetailMasterService","PasswordPolicyService","TalentPlanService","getByProcessName","hasBukConnection","BukService","CompanyDiscStyleService","VideoInterviewConfigurationStatus","Role","hasPredictor","ReportTemplatePredictorService","hasDefaultReports","MessageSummaryService","UserApiApplicationService","changeAllState","getHasAllActivateCompanyCompetences","getDichotomousCouples","competenceId","CoreCompanyCompetenceService","thumbnailImage","CoreSheetLanguageService","InboxByUserService","CorePermissionService","getMissingByPlan","PlanQuestionaryService","PlanReportService","PlanSheetService","TestPlanItemsService","OtherPlanItemsService","MessageAgreementService","MessageTalentService","getConfigurationWithoutCompanyByQuestionaryId","updateWithoutCompany","QuestionaryConfigurationWithoutCompanyService","ArchetypeLocalizationService","PositionLocalizationService","getByCountryAndLanguage","updateOrCreate","HabeasDataCountryService","getLabelByIdLanguage","idLanguage","LocalizationService","innerError","skipIfAlreadyAggregate","FEATURE","PLATFORM","_moduleName","_x","DOM","initializePAL","getPropertyDescriptor","subject","pd","duplicate","getDiscSelectionOptions","ReportTemplateService","LabelService","BaseI18N","__i18nDisposer","updateTranslations","detached","Backend","with","loader","getDefaults","loadPath","loadText","addPath","moment","symbolMap","numberMap","pluralForm","pluralize","weekdaysParseExact","getAvailableByQuestionaryId","getAllByQuestionaryId","CompanyQuestionaryService","70","80","50","100","60","90","relativeTimeWithPlural","forms","lastDigit","last2Digits","relativeTimeWithMutation","mutationTable","softMutation","mutation","lastNumber","monthsParseExact","ll","lll","llll","logLevel","none","loggers","appenders","globalDefaultLevel","standardLevels","isStandardLevel","appendArgs","logFactory","_appenders$i","logFactoryCustom","appender","connectLoggers","_level","addAppender","removeAppender","getAppenders","clearAppenders","_level2","disconnectLoggers","addCustomLevel","removeCustomLevel","setLevel","getLevel","isDebugEnabled","plural","shortMonthsParse","longMonthsParse","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","openIdConnect","expired","removeUser","getProfile","SessionService","monthsShortDot","monthsStrictRegex","monthsShortStrictRegex","getSelectedByQuestionId","listWithThematicVariable","getByIdWithThematicVariable","deleteWithThematicVariable","createWithThematicVariable","updateWithThematicVariable","ThematicGroupService","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","changeTestItemsState","changeResultsExport","changeOtherItemsState","changeCrossItemsState","changeCustomReportSpendMode","spendMode","changeCandidateReport","changeVideoInterview","talents","changeViewWallets","changeShowLowBalanceMessage","changeTalentracker","changeTalentrackerColorFeedback","changeTalentrackerCoaching","changeTalentrackerDevelopmentPlan","changeTalentrackerJobOpportunities","PlanService","weekEndings","oneTime","updateOverrideContexts","startIndex","updateOverrideContext","createFullOverrideContext","even","$index","$first","$odd","$even","getItemsSourceExpression","attrName","behaviorInstructions","originalAttrName","sourceExpression","unwrapExpression","expression","unwrapped","isOneTime","updateOneTimeBinding","updateOneTimeBindings","40","isUpper","eifelerRegelAppliesToNumber","listPositionReference","PositionService","translateSingular","relativeTimeWithSingular","correctGrammaticalCase","wordKey","relativeTimeMr","listObserved","getAllByPersonId","getActivationLink","IdQuestionaryGroup","ReportTemplate","ActivationService","monthsNominative","monthsSubjective","crypto","globalThis","msCrypto","cryptoSecureRandomInt","getRandomValues","Uint32Array","randomBytes","readInt32LE","subtype","overrides","mixIn","$super","encoder","Hex","thisWords","thatWords","thisSigBytes","thatSigBytes","thatByte","C_enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","decodeURIComponent","utf8Str","BufferedBlockAlgorithm","_append","doFlush","processedWords","dataSigBytes","nBlocksReady","nWordsReady","_minBufferSize","nBytesReady","subscriptions","editCompanyState","deleteCompanyState","setCompaniesState","companies","setPeopleState","people","editCompany","currentCompany","deleteCompany","setUserBasicInfoState","userBasicInfo","setCurrentCompanyState","setCurrentPersonState","person","currentPerson","StoreService","escapeForPattern","assemblePattern","namePattern","typePattern","accept","nameParts","typeParts","FileAcceptValidator","listWithTestControl","getquestionnaires","getObserved","getCompanyCompetenceById","listpreviewresults","getLastActivationVideoInterview","listActivationVideoInterview","requalifyById","ActivationQuestionaryService","numbersNouns","numberNoun","hundred","ten","numberAsNoun","processHoursFunction","recordList","transferList","balancesList","consolidatedList","transfer","getUserByCompany","hasPredictorByPerson","TransactionService","PermissionStore","useDefaultDefinition","defaultDefinition","DefaultDefinition","definePermission","definition","defaultPermissionDefinition","definePermissions","definePermissionObject","permissionObject","rd","whenClosed","onfulfilled","onrejected","closeResult","DialogService","defaultSettings","controllers","hasOpenDialog","hasActiveDialog","validateSettings","createCompositionContext","ensureViewModel","compositionContext","_cancelOperation","composeAndShowDialog","createSettings","keyboard","overlayDismiss","resolveCloseResult","rejectCloseResult","removeController","openResult","canActivate","closeAll","unclosedControllers","unclosed","aureliaEventAggregator","_global","trPreview","tagName","childElementCount","liPreview","flex","listStyleType","unknownTagPreview","defaultPreview","_stylesInjected","rm","whichMouseButton","getPageRect","getScroll","getRectWidth","getRectHeight","clientHeight","getParent","isEditable","contentEditable","getCoord","getEventHost","DndSource","dndModel","dndElement","noPreview","hideCursor","centerPreviewToMousePosition","DndTarget","dndCanDrop","dndDrop","dndHover","indexOfElementOrDelegate","DndService","dndSources","dndTargets","previewDrawers","addPreviewDrawer","_grab","_release","_startBecauseMouseMoved","_preventGrabbed","_drag","passive","addSource","removeSource","addTarget","dnd","isProcessing","canDrop","removeTarget","_sourceOf","indexOfHandler","_startListeningEventualMovements","_element","_stopListeningEventualMovements","_startListeningMovements","_stopListeningMovements","_grabbed","_moveX","_moveY","_startingSource","_ungrab","_landingTargets","shallowTarget","_locationInfo","elementFromPoint","_start","_sourceElementRect","_sourceElement","_offsetX","_offsetY","_renderPreviewImage","_noPreview","dndPreview","_sourcePreview","_hideCursor","_centerPreviewToMousePosition","_removePreviewImage","isHoveringShallowly","isHovering","possibleTargets","getElementBehindPreview","_preview","_updatePreviewLocation","mouseStartAt","mouseEndAt","sourceElementRect","targetElementRect","previewElementRect","backgroundColor","EventAggregator","ReorderableGroupMap","WeakMap","_proto","repeater","repeaterId","group","getEconomicSectorAll","getCountryAll","getRegionsByCountryId","parentId","getCitiesByRegionId","getCurrencyAll","getProfessionAll","CatalogService","globalExtraOptions","bootstrapVersion","globalPickerOptions","tagClass","isPrime","sqrtN","sqrt","factor","getFractionalBits","nPrime","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","t1","HmacSHA256","X64Word","X64WordArray","X64Word_create","SHA512","H0","H1","H2","H3","H4","H5","H6","H7","H0h","H0l","H1h","H1l","H2h","H2l","H3h","H3l","H4h","H4l","H5h","H5l","H6h","H6l","H7h","H7l","ah","al","bh","bl","cl","dh","dl","eh","fh","fl","gh","gl","hl","Wil","Wih","Wi","gamma0xh","gamma0xl","gamma0h","gamma0l","gamma1xh","gamma1xl","gamma1h","gamma1l","Wi7","Wi7h","Wi7l","Wi16","Wi16h","Wi16l","t1l","chh","chl","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Ki","Kih","Kil","t1h","t2l","HmacSHA512","aurelia","production","configureAliases","getMessage","parser","getDisplayName","displayName","authorityUrl","hostUrl","INFO","publicRoutes","userManagerSettings","accessTokenExpiringNotificationTime","authority","automaticSilentRenew","checkSessionInterval","client_id","filterProtocolClaims","loadUserInfo","post_logout_redirect_uri","redirect_uri","response_type","silentRequestTimeout","silent_redirect_uri","includeIdTokenInSilentRenew","userStore","toolbar","theme","initialState","Log","Global","_testing","setXMLHttpRequest","sessionStorage","MetadataService","JsonService","_jsonService","resetSigningKeys","signingKeys","getMetadata","metadataUrl","getJson","metadataSeed","getIssuer","_getMetadataProperty","getAuthorizationEndpoint","getUserInfoEndpoint","getTokenEndpoint","getCheckSessionIframe","getEndSessionEndpoint","getRevocationEndpoint","getKeysEndpoint","getSigningKeys","_metadataUrl","UrlUtility","addQueryParam","parseUrlFragment","JoseUtil","jws","KeyUtil","X509","hextob64u","b64tohex","AllowedSigningAlgs","OidcClientSettings","client_secret","client_authentication","A","prompt","max_age","ui_locales","acr_values","R","I","response_mode","N","B","staleStateAge","clockSkew","clockService","V","ClockService","userInfoJwtIssuer","mergeClaims","z","stateStore","WebStorageStateStore","ResponseValidatorCtor","X","ResponseValidator","MetadataServiceCtor","Q","extraQueryParams","tt","et","extraTokenParams","rt","_authority","_metadata","_metadataSeed","_signingKeys","_client_id","_client_secret","_response_type","_scope","_redirect_uri","_post_logout_redirect_uri","_client_authentication","_prompt","_display","_max_age","_ui_locales","_acr_values","_resource","_response_mode","_filterProtocolClaims","_loadUserInfo","_staleStateAge","_clockSkew","_clockService","_userInfoJwtIssuer","_mergeClaims","_stateStore","_validator","_metadataService","_extraQueryParams","_extraTokenParams","getEpochTime","getAllKeys","_contentTypes","_XMLHttpRequest","_jwtHandler","postForm","SigninRequest","id_token_hint","login_hint","request_uri","request_type","skipUserInfo","isOidc","isCode","SigninState","code_verifier","code_challenge","isOAuth","_created","_request_type","toStorageString","fromStorageString","clearStaleState","OidcClient","createSigninRequest","readSigninResponseState","SigninResponse","processSigninResponse","validateSigninResponse","createSignoutRequest","SignoutRequest","readSignoutResponseState","SignoutResponse","ErrorResponse","processSignoutResponse","validateSignoutResponse","validator","metadataService","TokenClient","exchangeCode","grant_type","exchangeRefreshToken","refresh_token","error_description","error_uri","session_state","_nonce","_code_verifier","hashString","_code_challenge","hexToBase64Url","_skipUserInfo","Uint8Array","User","id_token","token_type","expires_at","expires_in","AccessTokenEvents","accessTokenExpiringTimer","Timer","accessTokenExpiredTimer","_accessTokenExpiringNotificationTime","_accessTokenExpiring","_accessTokenExpired","unload","addAccessTokenExpiring","addHandler","removeAccessTokenExpiring","removeHandler","addAccessTokenExpired","removeAccessTokenExpired","_callbacks","findIndex","raise","SessionMonitor","CheckSessionIFrame","_userManager","_CheckSessionIFrameCtor","_timer","addUserLoaded","addUserUnloaded","_stop","monitorAnonymousSession","querySessionStatus","sid","_sub","_sid","_checkSessionIFrame","_checkSessionInterval","_stopCheckSessionOnError","_raiseUserSessionChanged","_raiseUserSignedOut","_raiseUserSignedIn","stopCheckSessionOnError","_url","_interval","_stopOnError","_frame_origin","_frame","_boundMessageEvent","_message","contentWindow","_session_state","TokenRevocationClient","_XMLHttpRequestCtor","_revoke","CordovaPopupWindow","features","popupWindowFeatures","popupWindowTarget","startUrl","_isInAppBrowserInstalled","_popup","InAppBrowser","_exitCallbackEvent","_exitCallback","_loadStartCallbackEvent","_loadStartCallback","_success","Version","InMemoryWebStorage","UserManager","CordovaPopupNavigator","CordovaIFrameNavigator","UserInfoService","_userInfoService","_joseUtil","_tokenClient","_processSigninParams","_validateTokens","_processClaims","isOpenIdConnect","getClaims","_processCode","_validateIdTokenAndAccessToken","_validateIdToken","_validateIdTokenAttributes","validateJwtAttributes","_validateAccessToken","_getSigningKeyForJwt","header","kid","_filterByAlg","alg","_getSigningKeyForJwtWithSingleRetry","parseJwt","validateJwt","kty","at_hash","_getClaimsFromJwt","iss","KEYUTIL","superclass","nt","SHA384","HmacSHA384","fromNumber","fromString","appName","am","DB","DM","DV","FV","F1","F2","fromInt","mp","invDigit","mpl","mph","um","mt2","r2","q3","ONE","dlShiftTo","mu","convert","compareTo","mod","revert","divRemTo","mulTo","multiplyTo","sqrTo","squareTo","ZERO","subTo","copyTo","drShiftTo","fromRadix","lShiftTo","rShiftTo","isEven","exp","negate","toRadix","bitLength","modPowInt","multiplyUpperTo","multiplyLowerTo","dAddOffset","Ce","Te","Re","Rt","It","Dt","Ie","chunkSize","LN2","signum","intValue","dMultiply","testBit","bitwiseTo","shiftLeft","isProbablePrime","nextBytes","changeBit","addTo","modInt","millerRabin","getLowestSetBit","shiftRight","modPow","byteValue","shortValue","toByteArray","equals","and","or","xor","andNot","bitCount","setBit","clearBit","flipBit","remainder","divideAndRemainder","modInverse","gcd","square","De","Le","Ne","appVersion","Ue","Be","Oe","je","Me","He","dmp1","dmq1","coeff","Ve","Ke","curve","zinv","qe","fromBigInteger","infinity","doPublic","setPublic","isPublic","isPrivate","encryptOAEP","br","MessageDigest","Util","getCanonicalAlgName","getHashLength","Nr","hashHex","Ur","toBigInteger","getX","getY","isInfinity","twice","getInfinity","multiplyTwo","getQ","getA","getB","decodePointHex","getByteLength","getEncoded","toByteArrayUnsigned","decodeFrom","decodeFromHex","add2D","twice2D","multiply2D","isOnCurve","Sr","KJUR","asn1","ASN1Util","integerToByteHex","bigIntToMinTwosComplementsHex","getPEMStringFromHex","Mr","newObject","ASN1Object","DERBoolean","DERInteger","DERBitString","DEROctetString","DERNull","DERObjectIdentifier","DEREnumerated","DERUTF8String","DERNumericString","DERPrintableString","DERTeletexString","DERIA5String","DERUTCTime","DERGeneralizedTime","DERVisibleString","DERBMPString","DERSequence","DERSet","DERTaggedObject","explicit","jsonToASN1HEX","getEncodedHex","oidHexToInt","oidIntToHex","getLengthHexFromValue","hV","hTLV","isModified","getFreshValueHex","hL","hT","getValueHex","setByParam","tlv","DERAbstractString","getString","setString","Dr","setStringHex","hex","DERAbstractTime","localDateToUTC","zeroPadding","getMilliseconds","Pr","setByDateValue","setByDate","DERAbstractStructured","setByASN1ObjectArray","asn1Array","appendASN1Object","setByBigInteger","setByInteger","setValueHex","bigint","setHexValueIncludingUnusedBits","setUnusedBitsAndHexValue","setByBinaryString","setByBooleanArray","newFalseArray","bin","setValueOidString","setValueName","x509","OID","name2oid","setValueNameOrOid","oid","withMillis","millis","sortFlag","sortflag","isExplicit","asn1Object","setASN1Object","tage","tagi","wr","Fr","Er","xr","Ar","kr","Cr","Tr","Rr","Ir","qr","Gr","Lr","Jr","Br","Or","jr","Hr","Vr","Kr","Wr","zr","Yr","Xr","$r","getLblen","getL","getVblen","getVidx","getV","getTLV","getTLVblen","getNextSiblingIdx","getChildIdx","getNthChildIdx","getIdxbyList","getIdxbyListEx","isContextTag","getTLVbyList","getTLVbyListEx","getVbyList","getVbyListEx","getInt","getOID","Qr","getOIDName","oid2name","hextooidstr","dump","ommit_long_octet","isASN1HEX","oidname","x509ExtName","checkStrictDER","isHex","utf8tob64u","b64utoutf8","isBase64","isBase64URL","isIntegerArray","isPrintable","isIA5","isMail","DIGESTINFOHEAD","sha1","sha224","sha256","sha384","sha512","md2","md5","ripemd160","DEFAULTPROVIDER","hmacmd5","hmacsha1","hmacsha224","hmacsha256","hmacsha384","hmacsha512","hmacripemd160","MD5withRSA","SHA1withRSA","SHA224withRSA","SHA256withRSA","SHA384withRSA","SHA512withRSA","RIPEMD160withRSA","MD5withECDSA","SHA1withECDSA","SHA224withECDSA","SHA256withECDSA","SHA384withECDSA","SHA512withECDSA","RIPEMD160withECDSA","SHA1withDSA","SHA224withDSA","SHA256withDSA","MD5withRSAandMGF1","SHAwithRSAandMGF1","SHA1withRSAandMGF1","SHA224withRSAandMGF1","SHA256withRSAandMGF1","SHA384withRSAandMGF1","SHA512withRSAandMGF1","RIPEMD160withRSAandMGF1","CRYPTOJSMESSAGEDIGESTNAME","SHA224","RIPEMD160","getDigestInfoHex","getPaddedDigestInfoHex","digestString","digestHex","sha256Hex","sha512Hex","isKey","DSA","ECDSA","prov","SECURERANDOMGEN","getRandomHexOfNbytes","getRandomBigIntegerOfNbytes","getRandomHexOfNbits","getRandomBigIntegerOfNbits","getRandomBigIntegerZeroToMax","getRandomBigIntegerMinToMax","setAlgAndProvider","md","updateString","updateHex","digest","sjcl","codec","toBits","fromBits","algName","provName","HASHLENGTH","Mac","algProv","mac","pass","doFinal","doFinalString","doFinalHex","setPassword","utf8","rstr","b64","b64u","Signature","_setAlgNames","mdAlgName","pubkeyAlgName","_zeroPaddingOfSignature","Zr","getKey","prvKey","pubKey","sHashHex","ecprvhex","eccurvename","prv","hSign","signWithMessageHashPSS","pssSaltLen","signWithMessageHash","signString","signHex","verify","ecpubhex","pub","verifyWithMessageHashPSS","verifyWithMessageHash","algProvName","initParams","psssaltlen","prvkeypem","prvkeypas","Cipher","getAlgByKeyAndName","decryptOAEP","oidhex2name","ECParameterDB","getName","getBigRandom","setNamedCurve","ecparams","getByName","prvKeyHex","pubKeyHex","curveName","setPrivateKeyHex","setPublicKeyHex","getPublicKeyXYHex","keylen","getShortNISTPCurveName","generateKeyPairHex","biRSSigToASN1Sig","fromByteArrayUnsigned","serializeSig","verifyHex","parseSigHex","verifyRaw","Bitcoin","parseSig","toByteArraySigned","parseSigCompact","readPKCS5PrvKeyHex","readPKCS8PrvKeyHex","readPKCS8PubKeyHex","readCertPubKeyHex","parseSigHexInHexRS","asn1SigToConcatSig","concatSigToASN1Sig","hexRSSigToASN1Sig","regist","iv","ciphertext","proc","eproc","ivlen","TripleDES","DES","cipher","ivsalt","keyhex","ivhex","parsePKCS5PEM","getKeyAndUnusedIvByPasscodeAndIvsalt","decryptKeyB64","getDecryptedKeyHex","getEncryptedPKCS5PEMFromPrvKeyHex","parseHexOfEncryptedPKCS8","encryptionSchemeAlg","encryptionSchemeIV","pbkdf2Salt","pbkdf2Iter","getPBKDF2KeyHexFromParam","PBKDF2","_getPlainPKCS8HexFromEncryptedPKCS8PEM","getKeyFromEncryptedPKCS8PEM","getKeyFromPlainPrivatePKCS8Hex","parsePlainPrivatePKCS8Hex","algparam","algoid","keyidx","getKeyFromPlainPrivatePKCS8PEM","_getKeyFromPublicPKCS8Hex","parsePublicRawRSAKeyHex","parsePublicPKCS8Hex","xy","dp","dq","co","qi","setPrivateEx","setPrivate","crv","getPublicKeyFromCertHex","getPublicKeyFromCertPEM","generateKeypair","prvKeyObj","pubKeyObj","getPEM","SubjectPublicKeyInfo","seq","octstr","bitstr","null","getKeyFromCSRPEM","getKeyFromCSRHex","parseCSRHex","p8pubkeyhex","getKeyID","getJWKFromKey","getPosArrayOfChildrenFromHex","getHexValueArrayOfChildrenFromHex","readPrivateKeyFromPEMString","readPKCS5PubKeyHex","readCertHex","getPublicKeyHex","tn","rn","nn","AlgorithmIdentifier","PSSNAME2ASN1TLV","HEX2STAG","foffset","aExtInfo","getVersion","getSerialNumberHex","getSignatureAlgorithmField","getAlgorithmIdentifierName","getX500Name","getIssuerHex","getIssuerString","hex2dn","getSubject","getSubjectHex","getSubjectString","getNotBefore","getNotAfter","getPublicKeyIdx","getPublicKeyContentIdx","getPublicKey","getSignatureAlgorithmName","getSignatureValueHex","verifySignature","parseExt","critical","vidx","getExtInfo","getExtBasicConstraints","extname","cA","getExtKeyUsage","getExtKeyUsageString","getExtKeyUsageBin","KEYUSAGE_NAME","getExtSubjectKeyIdentifier","getExtAuthorityKeyIdentifier","getGeneralNames","issuer","dn","sn","getExtExtKeyUsage","getExtExtKeyUsageName","getExtSubjectAltName","getExtIssuerAltName","getGeneralName","rfc822","dns","uri","ip","getExtSubjectAltName2","getExtCRLDistributionPoints","getDistributionPoint","dpname","getDistributionPointName","full","getExtCRLDistributionPointsURI","getExtAIAInfo","ocsp","caissuer","getExtAuthorityInfoAccess","getExtCertificatePolicies","getPolicyInformation","policyoid","getPolicyQualifierInfo","cps","unotice","getUserNotice","exptext","getDisplayText","getExtCRLNumber","getExtCRLReason","getExtOcspNonce","getExtOcspNoCheck","getExtAdobeTimeStamp","reqauth","getX500NameRule","ds","getX500NameArray","dnarraytostr","getRDN","getAttrTypeAndValue","oid2atype","readCertPEM","getParam","serial","sigalg","notbefore","notafter","sbjpubkey","ext","getExtParamArray","sighex","getExtParam","extn","findExt","updateExtCDPFullURI","updateExtAIAOCSP","updateExtAIACAIssuer","getInfo","dname","doPrivate","signPSS","verifyPSS","SALT_LEN_HLEN","SALT_LEN_MAX","SALT_LEN_RECOVER","hex2rdn","hex2attrTypeValue","getPublicKeyInfoPropOfCertPEM","JWS","isSafeJSONString","parseJWS","parsedJWS","sigvalH","headB64U","payloadB64U","sigvalB64U","si","sigvalBI","headS","payloadS","readSafeJSONString","jwsalg2sigalg","headerObj","payloadObj","headerPP","payloadPP","sigHex","verifyJWT","includedArray","aud","IntDate","getNow","verifyAt","gracePeriod","nbf","iat","jti","HS256","HS384","HS512","RS256","RS384","RS512","ES256","ES384","PS256","PS384","PS512","getEncodedSignatureValueFromJWS","getJWKthumbprint","getZulu","intDate2UTCString","toUTCString","intDate2Zulu","SecureRandom","rng_seed_time","BigInteger","RSAKey","EDSA","an","un","cn","hn","ln","ASN1HEX","b64toBA","stoBA","BAtos","BAtohex","stohex","stob64","stob64u","b64utos","b64tob64u","b64utob64","hex2b64","b64utohex","utf8tob64","b64toutf8","utf8tohex","hextoutf8","hextorstr","rstrtohex","hextob64","hextob64nl","b64nltohex","hextopem","pemtohex","hextoArrayBuffer","ArrayBuffer","DataView","setUint8","ArrayBuffertohex","byteLength","getUint8","zulutomsec","zulutosec","zulutodate","datetozulu","getUTCMilliseconds","uricmptohex","hextouricmp","ipv6tohex","hextoipv6","hextoip","iptohex","encodeURIComponentAll","newline_toUnix","newline_toDos","hextoposhex","intarystrtohex","strdiffidx","xn","An","kn","Pn","Buffer","TYPED_ARRAY_SUPPORT","isEncoding","isBuffer","buffer","isView","readUInt16BE","fromByteArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","subarray","kMaxLength","poolSize","_augment","species","fill","allocUnsafe","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","readUIntLE","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","x5c","_validateJwt","azp","scopes","SilentRenewService","UserManagerSettings","_events","UserManagerEvents","_silentRenewService","startSilentRenew","monitorSession","_sessionMonitor","_tokenRevocationClient","_loadUser","storeUser","useReplaceToNavigate","_signinStart","_redirectNavigator","signinRedirectCallback","_signinEnd","signinPopup","popup_redirect_uri","_signin","_popupNavigator","signinPopupCallback","_signinCallback","_useRefreshToken","validateSubOnSilentRenew","current_sub","_signinSilentIframe","_validateIdTokenFromTokenRefreshToken","auth_time","_iframeNavigator","signinSilentCallback","signinCallback","signoutCallback","signoutRedirectCallback","signoutPopupCallback","query_status_response_type","_signoutStart","_signoutEnd","signoutPopup","popup_post_logout_redirect_uri","_signout","revokeAccessTokenOnSignout","_revokeInternal","revokeAccessToken","_revokeAccessTokenInternal","_revokeRefreshTokenInternal","stopSilentRenew","_userStore","_userStoreKey","redirectNavigator","popupNavigator","iframeNavigator","RedirectNavigator","PopupNavigator","IFrameNavigator","_popup_redirect_uri","_popup_post_logout_redirect_uri","_popupWindowFeatures","_popupWindowTarget","_silent_redirect_uri","_silentRequestTimeout","_automaticSilentRenew","_validateSubOnSilentRenew","_includeIdTokenInSilentRenew","_monitorSession","_monitorAnonymousSession","_query_status_response_type","_revokeAccessTokenOnSignout","PopupWindow","notifyOpener","_checkForPopupClosedTimer","_checkForPopupClosed","closed","IFrameWindow","notifyParent","_timeout","_origin","_userLoaded","_userUnloaded","_silentRenewError","_userSignedIn","_userSignedOut","_userSessionChanged","removeUserLoaded","removeUserUnloaded","addSilentRenewError","removeSilentRenewError","_raiseSilentRenewError","addUserSignedIn","removeUserSignedIn","addUserSignedOut","removeUserSignedOut","addUserSessionChanged","removeUserSessionChanged","_nowFunc","expiration","_timerHandle","_expiration","_tokenExpiring","OpenIdConnectRouting","openIdConnectConfiguration","openIdConnectNavigationStrategies","$window","addLoginRedirectRoute","addLogoutRedirectRoute","isSilentLogin","silentSignInCallback","signInRedirectCallback","redirectUri","signOutRedirectCallback","postLogoutRedirectUri","convertUriToAnchor","Window","OpenIdConnectAuthorizeStep","loginRedirect","requiresRole","Authenticated","unauthorizedRedirectRoute","role","roles","OpenIdConnectNavigationStrategies","redirectRoute","callbackHandler","loginRedirectRoute","redirectAfterCallback","runHandlerAndCompleteNavigationInstruction","pushState","transitionDurationName","prefixedNames","transitionEvent","transitions","OTransition","MozTransition","WebkitTransition","hasTransition","prefixed","DialogRenderer","DialogRenderer_1","keyboardEventHandler","getActionKey","dialogControllers","trackController","untrackController","getOwnElements","own","parentElement","attach","spacingWrapper","dialogContainer","dialogOverlay","zIndex","lastContainer","setAsActive","setAsInactive","setupClickHandling","_aureliaDialogHostClicked","closeDialogClick","clearClickHandling","centerDialog","vh","marginTop","marginBottom","awaitTransition","setActiveInactive","onTransitionEnd","createDialogCloseError","hasOwnConstructor","hasIsPrototypeOf","peopleWithReportIds","Tests","dichotomousCouples","isLatest","masterFranchiseId","masterCompanyId","groupId","subtotal","tax","agreement","quotas","TeamService","billingClosingDate","DiscSelectionReasonCode","questionaryIds","companyCompetenceIds","questionaryGroupThematicAssociates","getByCompanyId","customerCompanyId","groupIdToTransferUsers","groupIdToTransferUser","getPermissionNamesById","updatePermissionsNamesById","GroupService","LocalizationType","getLanguageName","cultures","LanguageService","locals","currentDir","fullMatch","origUrl","newUrl","unquotedOrigUrl","$1","relativeToFile","fileParts","normalizedBaseParts","ary","trimDots","path1","path2","schemeMatch","scheme","urlPrefix","trailingSlash","url1","url2","url3","encodeKey","buildParam","arrayKey","buildQueryString","pairs","processScalarParam","existedParam","parseComplexParam","keysLastIndex","prevValue","parseQueryString","pair","_interopRequireWildcard","_ajax","_ajax2","addQueryString","paramName","queryStringParams","ActiveXObject","withCredentials","customHeaders","unrender","valid","formGroup","webpackPolyfill","paths","webpackContext","req","webpackContextResolve","cachedGuess","zones","links","guesses","logError","momentVersion","major","minor","charCodeToInt","unpackBase60","whole","fractional","arrayToInt","mapIndices","unpack","offsets","untils","Infinity","intToUntil","abbrs","population","Zone","packedString","_set","OffsetAt","at","timeString","toTimeString","ZoneScore","offsetScore","abbrScore","findChange","mid","sortZoneScores","addToGuesses","guessesForUserOffsets","guessesOffset","offsetsLength","filteredGuesses","rebuildGuess","intlName","Intl","DateTimeFormat","resolvedOptions","timeZone","normalizeName","zoneScore","change","startYear","userOffsets","zoneScores","getZone","scoreOffsetAt","addZone","packed","normalized","addLink","normal0","normal1","needsOffset","isUnixTimestamp","unpacked","offsetNext","offsetPrev","moveAmbiguousForward","moveInvalidForward","offsetAt","dataVersion","_zones","_links","zoneExists","didShowError","guess","ignoreCache","abbrWrap","_z","defaultZone","setDefault","WWW","defaultClassNames","hint","menu","suggestion","selectable","cursor","highlight","www","borderColor","boxShadow","verticalAlign","inputWithNoHint","ltr","backgroundImage","buildSelectors","EventBus","deprecationMap","$el","cursorchange","autocomplete","_trigger","$e","deprecatedType","splitter","onSync","onAsync","callbacks","syncFlush","asyncFlush","getFlush","bindContext","wordsOnly","diacriticInsensitive","accented","patterns","escapedPatterns","escapedWord","accent_replacer","getRegex","traverse","hightlightTextNode","childNode","textNode","patternNode","wrapperNode","splitText","chr","Input","specialKeyCodeMap","$input","$hint","queryWhenFocused","$overflowHelper","whiteSpace","fontFamily","fontSize","fontStyle","fontVariant","wordSpacing","textIndent","textRendering","textTransform","_checkLanguageDirection","setHint","getHint","clearHint","clearHintIfInvalid","_updateDescendent","37","39","38","normalizeQuery","_onBlur","resetInputValue","_onFocus","_onKeydown","keyName","_managePreventDefault","_shouldTrigger","_onInput","_setQuery","getInputValue","withModifier","areEquivalent","hasDifferentWhitespace","onBlur","onFocus","onKeydown","onInput","getLangDir","getQuery","setQuery","setInputValue","hasQueryChangedSinceLastFocus","valIsPrefixOfHint","hasOverflow","constraint","isCursorAtEnd","valueLength","selectionStart","createRange","moveStart","Dataset","nameGenerator","templates","displayFn","notFound","displayKey","footer","_resetLastSuggestion","extractData","_overwrite","suggestions","_renderSuggestions","_renderPending","_renderNotFound","_empty","$lastSuggestion","_appendSuggestions","$fragment","_getSuggestionsFragment","_getHeader","_getFooter","_injectQuery","_query","syncCalled","rendered","Menu","$node","datasets","oDataset","_onSelectableClick","_onRendered","_allDatasetsEmpty","_onCleared","_propagate","_getSelectables","_removeCursor","$selectable","getActiveSelectable","_ensureVisible","elTop","elBottom","nodeScrollTop","nodeHeight","outerHeight","onSelectableClick","setCursor","setLanguageDirection","selectableRelativeToCursor","$selectables","$oldCursor","getSelectableData","getTopSelectable","isValidUpdate","Status","clip","cleared","DefaultMenu","Typeahead","onFocused","onBlurred","onEnterKeyed","onTabKeyed","onEscKeyed","onUpKeyed","onDownKeyed","onLeftKeyed","onRightKeyed","onQueryChanged","onWhitespaceChanged","eventBus","minLength","autoselect","_hacks","_onSelectableClicked","_onAsyncRequested","_onAsyncCanceled","_onAsyncReceived","_onDatasetRendered","_onDatasetCleared","_onLangDirChanged","$menu","hasActive","_updateHint","cursorClass","_onFocused","_minLengthMet","_onBlurred","_onEnterKeyed","_onTabKeyed","_onEscKeyed","_onUpKeyed","moveCursor","_onDownKeyed","_onLeftKeyed","_onRightKeyed","_onQueryChanged","_onWhitespaceChanged","_openIfActive","escapedQuery","setVal","getVal","$candidate","datasetName","ttEach","$els","typeahead","buildHintFromInput","backgroundAttachment","backgroundOrigin","backgroundPosition","backgroundRepeat","backgroundSize","readonly","required","spellcheck","prepInput","$elOrNull","$wrapper","defaultHint","defaultMenu","MenuConstructor","newVal","aurelia_router_1","authorization_service_1","AuthorizeRouteStep","authorizationService","defaultRedirectRoute","permissionInstruction","hasPermissionSettings","permissionSettings","noRoutePermissionsSet","only","redirectTo","instructionConfig","useDefaultRedirectRoute","container_1","format_1","leaf_1","scroll_1","inline_1","block_1","embed_1","text_1","attributor_1","class_1","style_1","store_1","Registry","Parchment","Scope","Format","Leaf","Embed","Scroll","Block","Inline","Text","Attributor","Attribute","Class","Style","Store","extendStatics","__extends","ParchmentError","_super","ANY","TEXT_NODE","LEVEL","BLOCK","INLINE","TYPE","DATA_KEY","BlotClass","bubble","blot","Definitions","Definition","blotName","tagNames","equal","NULL_CHARACTER","Delta","newOp","retain","lastOp","chop","predicate","partition","passed","failed","changeLength","iter","hasNext","nextOp","thisIter","otherIter","peekType","peekLength","thisOp","otherOp","strings","diffResult","opLength","INSERT","DELETE","EQUAL","eachLine","newline","peek","transformPosition","nextType","BlockEmbed","bubbleFormats","_extend2","_interopRequireDefault","_quillDelta2","_parchment2","_break2","_inline2","_text2","_Parchment$Embed","domNode","attribute","BLOCK_ATTRIBUTE","def","endsWith","BLOCK_BLOT","_Parchment$Block","descendants","leaf","defaultChild","allowedChildren","overload","expandConfig","_editor2","_emitter4","_module2","_selection","_selection2","_logger2","_theme2","_defineProperty","Quill","__quill","addContainer","scrollingContainer","emitter","scroll","editor","addModule","clipboard","EDITOR_CHANGE","TEXT_CHANGE","isBlank","SCROLL_UPDATE","mutations","lastRange","modify","setContents","readOnly","imports","refNode","setRange","_overload","_overload2","deleteText","scrollIntoView","API","getSelection","formatLine","formatText","setSelection","SILENT","_overload3","_overload4","_overload5","_overload6","bounds","getBounds","containerBounds","getLength","_overload7","_overload8","getContents","getFormat","MAX_VALUE","getRange","_overload9","_overload10","embed","insertEmbed","_overload11","_overload12","insertText","dangerouslyPasteHTML","_overload13","_overload14","removeFormat","deleted","applied","applyDelta","_overload15","_overload16","Range","USER","DEFAULTS","import","themeConfig","moduleConfig","moduleClass","modifier","oldDelta","shiftRange","_emitter","_emitter2","_map2","_map3","_map4","_Parchment$Inline","BLOT","isolate","moveChildren","selfIndex","otherIndex","_parchment","TextBlot","_Parchment$Text","_eventemitter2","_node$__quill$emitter","handleDOM","Emitter","SCROLL_BEFORE_UPDATE","SCROLL_OPTIMIZE","SELECTION_CHANGE","Module","quill","levels","newLevel","pSlice","objectKeys","isArguments","deepEqual","actual","expected","isUndefinedOrNull","ka","kb","objEquiv","attributeBit","ATTRIBUTE","canAdd","Code","_block2","_Inline","CodeBlock","_Block","frag","_descendant","descendant","deleteAt","nextNewline","newlineIndex","prevNewline","isolateLength","formatAt","_descendant3","_descendant4","searchIndex","optimize","TAB","_op2","_code2","_cursor2","_block","_clone2","_deepEqual2","ASCII","Editor","getDelta","consumeNextNewline","scrollLength","batchStart","bullet","normalizeDelta","_scroll$line","_scroll$line2","_line$descendant","batchEnd","lengthRemaining","lineLength","codeIndex","codeLength","leaves","formatsArr","blots","combineFormats","_scroll$line3","_scroll$line4","suffixLength","cursorIndex","textBlot","CONTENTS","oldText","newText","diffDelta","combined","merged","Selection","composing","mouseDown","savedRange","handleComposition","handleDragging","listenDOM","native","getNativeRange","setNativeRange","_context$range","startNode","startOffset","endNode","endOffset","restore","nativeRange","collapsed","_scroll$leaf","_scroll$leaf2","_leaf$position","_leaf$position2","setStart","_scroll$leaf3","_scroll$leaf4","_leaf$position3","_leaf$position4","setEnd","side","rangeCount","getRangeAt","normalizeNative","normalizedToRange","positions","indexes","_position","startContainer","endContainer","_scroll$leaf5","_scroll$leaf6","_leaf$position5","_leaf$position6","scrollBounds","removeAllRanges","addRange","rangeToNative","oldRange","_getRange","_getRange2","Break","linked_list_1","shadow_1","ContainerBlot","makeBlot","forEachAt","lengthLeft","childBlot","refBlot","targetParent","inclusive","addedNodes","removedNodes","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_FOLLOWING","FormatBlot","move","LeafBlot","INLINE_BLOT","keepNull","Iterator","retOp","_instanceof","nativeMap","nativeSet","Set","circular","includeNonEnumerable","allParents","allChildren","useBuffer","_clone","__isArray","__isRegExp","__getRegExpFlags","__isDate","keyChild","valueChild","entryChild","getOwnPropertySymbols","allPropertyNames","__objToStr","re","ignoreCase","multiline","clonePrototype","_container2","isLine","_Parchment$Scroll","batch","_line","_line2","_line3","_newlineIndex","getLines","takeRecords","SHORTKEY","_quill2","platform","Keyboard","_Module","bindings","addBinding","ENTER","handleEnter","BACKSPACE","handleBackspace","handleDelete","handleDeleteRange","listen","normalize","_quill$getLine","getLine","_quill$getLine2","_quill$getLeaf","getLeaf","_quill$getLeaf2","leafStart","offsetStart","_ref2","leafEnd","offsetEnd","prefixText","suffixText","curContext","makeEmbedArrowHandler","_ref3","where","LEFT","RIGHT","_quill$getLeaf3","_quill$getLine11","_quill$getLine13","curFormats","prevFormats","nextLength","_quill$getLine15","_quill$getLine17","nextFormats","firstFormats","lastFormats","lineFormats","makeCodeBlockHandler","_quill$scroll$descend","_quill$scroll$descend2","scrollIndex","getIndex","makeFormatHandler","shortKey","ESCAPE","UP","DOWN","cutoff","updateContents","_quill$getLine3","_quill$getLine4","_quill$getLine5","_quill$getLine6","_quill$getLine7","_quill$getLine8","_quill$getLine9","_quill$getLine10","Cursor","restoreText","_Parchment$Container","ColorStyle","ColorClass","ColorAttributor","_Parchment$Attributor","sanitize","_inline","Link","_sanitize","PROTOCOL_WHITELIST","SANITIZED_URL","protocols","_keyboard2","_dropdown2","optionsCounter","toggleAriaAttribute","Picker","buildPicker","togglePicker","hasAttribute","selectItem","buildItem","buildLabel","buildOptions","_embed2","_scroll2","_clipboard2","_history2","ShadowBlot","parentBlot","refDomNode","AttributorStore","ClassAttributor","camelize","StyleAttributor","Theme","themes","contentNode","leftGuard","rightGuard","prevLength","AlignStyle","AlignClass","AlignAttribute","BackgroundStyle","BackgroundClass","_color","DirectionStyle","DirectionClass","DirectionAttribute","FontClass","FontStyle","FontStyleAttributor","SizeStyle","SizeClass","getLastChangeIndex","lastRecorded","ignoreChange","userOnly","undo","redo","changeDelta","undoDelta","maxStack","deleteLength","changeIndex","endsWithNewlineChange","BaseTooltip","_colorPicker2","_iconPicker2","_picker2","_tooltip2","ALIGNS","COLORS","FONTS","HEADERS","SIZES","BaseTheme","_Theme","tooltip","textbox","pickers","picker","extendToolbar","icons","selects","fillSelect","align","formula","edit","fileInput","files","video","_Tooltip","boundsContainer","preview","linkRange","restoreFocus","LinkedList","curNode","curIndex","curLength","OBSERVER_CONFIG","characterData","characterDataOldValue","childList","subtree","ScrollBlot","mark","markParent","grandChild","InlineBlot","obj1","obj2","isEqual","BlockBlot","EmbedBlot","_toggle","DOMTokenList","searchString","subjectString","execCommand","diff_main","text1","text2","cursor_pos","commonlength","diff_commonPrefix","commonprefix","diff_commonSuffix","commonsuffix","longtext","shorttext","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","best_common","prefixLength","text1_a","text1_b","text2_a","text2_b","hm1","hm2","mid_common","diff_halfMatch_","diffs_a","diffs_b","text1_length","text2_length","max_d","v_offset","v_length","v1","v2","k1start","k1end","k2start","k2end","k1","k1_offset","y1","x1","k2_offset","x2","diff_bisectSplit_","k2","y2","diff_bisect_","diff_compute_","diff_cleanupMerge","pointer","count_delete","count_insert","text_delete","text_insert","norm","current_pos","next_pos","split_pos","d_left","d_right","cursor_normalize_diff","ndiffs","cursor_pointer","d_next","merge_tuples","fix_cursor","compact","starts_with_pair_end","fixed_diffs","fix_emoji","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","pointerend","left_d","right_d","shim","supportsArgumentsClass","supported","unsupported","propertyIsEnumerable","Events","EE","_eventsCount","eventNames","available","ee","a1","a2","a3","a4","a5","setMaxListeners","matchText","matchSpacing","matchNewline","matchBlot","matchAttributor","_extend3","_align","_background","_direction","_font","_size","DOM_KEY","CLIPBOARD_CONFIG","deltaEndsWith","ELEMENT_NODE","computeStyle","italic","bold","applyFormat","matchAlias","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","Clipboard","onPaste","matchVisual","addMatcher","_prepareMatching","prepareMatching","_prepareMatching2","textMatchers","childrenDelta","paste","_pair","endText","nextElementSibling","offsetTop","replacer","collapse","Bold","addControls","Toolbar","controls","_this$quill$selection","_quill$selection$getR","addButton","control","addSelect","clean","_picker","ColorPicker","_Picker","colorLabel","stroke","IconPicker","defaultItem","Tooltip","TEMPLATE","reference","rootBounds","verticalShift","_base","_base2","_link2","_icons2","TOOLBAR_CONFIG","SnowTheme","_BaseTheme","buildButtons","buildPickers","SnowTooltip","_BaseTooltip","_core2","_indent","_blockquote2","_header2","_list","_list2","_bold2","_italic2","_script2","_strike2","_underline2","_image2","_video2","_code","_formula2","_syntax2","_toolbar2","_bubble2","_snow2","IndentClass","ListItem","IdentAttributor","Blockquote","Header","_Container","listEventHandler","_bold","Italic","_Bold","Script","Strike","Underline","_link","ATTRIBUTES","Image","Video","_BlockEmbed","FormulaBlot","_Embed","katex","throwOnError","errorColor","Formula","CodeToken","SyntaxCodeBlock","_CodeBlock","_highlight","cachedText","Syntax","hljs","highlightAuto","BubbleTooltip","BubbleTheme","lastLine","_bounds","arrow","base64","ieee754","createBuffer","encodingOrOffset","byteOffset","fromArrayLike","fromArrayBuffer","encoding","fromObject","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","buf","foundIndex","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","hi","lo","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","decodeCodePointsArray","typedArraySupport","thisStart","thisEnd","thisCopy","targetCopy","toHex","checkOffset","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","mul","targetStart","INVALID_BASE64_RE","leadSurrogate","stringtrim","base64clean","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","PersonActivationType","isLE","mLen","eLen","eMax","eBias","nBits","ReorderableRepeat","_aureliaDependencyInjection","_aureliaBinding","_aureliaTemplating","_aureliaTemplatingResources","_reorderableRepeatStrategyLocator","_bcxAureliaDnd","_aureliaEventAggregator","_aureliaTaskQueue","_repeaterDndType","_reorderableGroupMap","_initializerDefineProperty","_assertThisInitialized","lookupClass","customAttribute","TaskQueue","BindingEngine","BoundViewFactory","TargetInstruction","ViewSlot","ViewResources","ObserverLocator","ReorderableRepeatStrategyLocator","templateController","_AbstractRepeater","bindingEngine","dndService","strategyLocator","groupMap","lookupFunctions","ignoreMutation","BindingBehavior","ValueConverter","_reorderableGroup","matcherBinding","_captureAndRemoveMatcherBinding","arrayObserver","collectionObserver","_itemsMutated","_subsribers","intention","_this2$intention","fromIndex","fromRepeaterId","toIndex","toRepeaterId","afterReordering","_reorderableAfterReorderingFunc","patchedItems","patchedItemsChanged","intentionChanged","newIntention","patched","itemsChanged","oldVal","getStrategy","instructionIds","expressions","targetProperty","evaluate","_registerDnd","targetIndex","skipAnimation","_unRegisterDnd","removeMany","removeAt","boundProperties","_additionalAttribute","au","_reorderableDirection","_dndHandlerSelector","_dndPreviewFunc","funcCall","_dndHover","_updateIntention","handlerSelector","_previewFunc","draggingMe","inSameGroup","beforeTarget","_this$dndService","isUsingGroup","originalIndex","nextIndex","AbstractRepeater","bindable","observable","_simpleArrayRepeatStrategy","strategies","addStrategy","SimpleArrayRepeatStrategy","ReorderableDirection","ReorderableGroup","ReorderableGroupFor","resetIntention","repeaterInfo","_this$dnd","defaultTargetIndex","ReorderableDndPreview","UserState","ReorderableDndHandlerSelector","ReorderableAfterReordering","defaultOptions","itemValue","itemText","itemTitle","freeInput","addOnBlur","maxTags","confirmKeys","delimiter","delimiterRegex","cancelConfirmKeysOnEmpty","onTagExists","$tag","trimValue","allowDuplicates","TagsInput","isInit","itemsArray","$element","isSelect","multiple","objectItems","placeholderText","inputSize","makeOptionItemFunction","makeOptionFunction","dontPushVal","pushVal","existing","maxInputLength","beforeItemAddEvent","htmlEncode","findInputWrapper","optionExists","$option","$existingTag","beforeItemRemoveEvent","refresh","processItems","texts","updater","highlighter","typeaheadjs","typeaheadConfig","typeaheadDatasets","valueKey","$inputWrapper","doGetCaretPosition","$prevTag","$nextTag","textLength","keyPressEvent","lookupList","maxLengthReached","keyCombination","alt","ctrl","elt","tagsinput","arg1","arg2","arg3","retVal","htmlEncodeContainer","oField","iCaretPos","oSel","PickerConfig","_pickerGlobalOptions","__webpack_amd_options__","listArchive","getAllEvaluators","userRestore","generateExport","getExportStatus","None","getExportDownloadUrl","UserService","superInit","typedArray","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Float32Array","Float64Array","typedArrayByteLength","swapEndian","Utf16","Utf16BE","utf16Chars","utf16Str","utf16StrLength","Utf16LE","Base64url","urlSafe","_safe_map","HmacSHA224","RHO_OFFSETS","PI_INDEXES","ROUND_CONSTANTS","newY","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","outputLength","_state","nBlockSizeLanes","M2i","M2i1","lane","tMsw","tLsw","Tx","Tx4","Tx1","Tx1Msw","Tx1Lsw","laneIndex","laneMsw","laneLsw","rhoOffset","TPiLane","T0","state0","TLane","Tx1Lane","Tx2Lane","roundConstant","blockSizeBits","outputLengthBytes","outputLengthLanes","hashWords","HmacSHA3","companyCompetences","activationThematicAssociates","_zl","_zr","_sl","_sr","_hl","_hr","dr","er","hr","zl","sl","sr","f1","f2","f3","f4","f5","rotl","HmacRIPEMD160","hmac","blockIndex","blockIndexWords","blockWords","blockWordsLength","intermediate","intermediateWords","CFB","BlockCipherMode","generateKeystreamAndEncrypt","keystream","_iv","_prevBlock","encryptBlock","Encryptor","processBlock","_cipher","Decryptor","thisBlock","CTR","_counter","CTRGladman","incWord","b1","b2","b3","incCounter","OFB","_keystream","ECB","decryptBlock","AnsiX923","blockSizeBytes","nPaddingBytes","lastBytePos","unpad","Ansix923","Iso10126","Iso97971","ZeroPadding","AgreementStatus","NoPadding","CipherParams","cipherParams","BlockCipher","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","xi","sx","x4","x8","RCON","_nRounds","_keyPriorReset","keyWords","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","_doCryptBlock","nRounds","s0","s1","s2","s3","t0","t2","t3","PC1","PC2","BIT_SHIFTS","SBOX_P","SBOX_MASK","keyBits","keyBitPos","subKeys","_subKeys","nSubKey","subKey","bitShift","invSubKeys","_invSubKeys","_lBlock","_rBlock","exchangeLR","exchangeRL","lBlock","rBlock","ivSize","mask","key1","key2","key3","_des1","createEncryptor","_des2","_des3","StreamCipher","RC4","keySigBytes","_S","keyByteIndex","keyByte","_j","generateKeystreamWord","keystreamWord","RC4Drop","drop","C_","Rabbit","_X","_C","_b","IV","IV_0","IV_1","i0","i2","i1","i3","gx","ga","gb","RabbitLegacy","Loader","WebpackLoader","TextTemplateLoader","loadTemplate","entry","address","createTemplateFromMarkup","ensureOriginOnExports","moduleExports","exportedValue","__useDefault","moduleRegistry","loaderPlugins","modulesBeingLoaded","useTemplateLoader","addPlugin","getOrCreateTemplateRegistryEntry","templateIsLoaded","templateLoader","registry","_import","defaultHMR","addressParts","loaderPlugin","plugin_1","asyncModuleId","hot","hmrContext","handleModuleChange","normalizeSync","relativeTo","loadAllModules","loadModule","beingLoaded","applyPluginToUrl","pluginName","originalModule","bootstrapPromises","startResolve","startPromise","isNodeLike","createLoader","preparePlatform","isRenderer","palModule","globalize","initializePal","bootstrapperName","frameworkPromise","frameworkName","Aurelia","appHost","configModuleId","customConfig","standardConfiguration","developmentLogging","setRoot","starting","appHosts","toConsole","bootstraps","dP","ObjectProto","toLength","iterCall","emptyMetadata","FEATURE_NO_ES2015","GOPS","setDescriptor","internalSymbol","DP","DPies","GOPN","GOPD","PIE","gOPN","gOPD","$defineProperties","hOP","pIE","addInternalIfNeeded","createWithSymbols","descriptors","$defineProperty","onlyNonSymbols","onlySymbols","setAndGetSymbol","sourceConstructor","_Symbol","description","newDescriptor","copyAsNonEnumerable","$getOwnPropertySymbols","cachedWindowNames","originalObjectGetOwnPropertyNames","o_O","protoDescriptor","tst","Si","AP","SP","returnThis","fromCodePoint","codePointAt","toInteger","return","arrayLike","aLen","mapfn","mapping","iterFn","FEATURE_NO_ES2016","searchElement","currentElement","hasDontEnumBug","dontEnums","dontEnumsLength","needsFix","gOPS","filterOS","keyOrSymbol","_createCollection","_createCollection2","createCollection","sharedDelete","sharedClear","sharedGet","mapHas","sharedSet","sharedIterator","_itp","_keys","sharedValues","mapEntries","sharedForEach","setHas","sharedAdd","objectOnly","Collection","sharedSize","itp","WeakSet","propertyKey","Target","ownKeys","FEATURE_NO_ESNEXT","metadataContainer","reportTemplateQuestionaryIds","reportTemplateThematicAssociates","getByUserId","getGeneralWallet","getUserWallet","getTotalBalanceByCompany","hasSeenLowBalanceMessage","WalletService","LanguageView","LanguageCreate","LanguageUpdate","LanguageDelete","LanguageActivate","LabelView","LabelCreate","LabelUpdate","LabelDelete","LocalizationView","LocalizationCreate","LocalizationUpdate","LocalizationDelete","EducationalLevelCountryView","EducationalLevelCountryUpdate","EducationalLevelCountryActivate","QuestionaryView","QuestionaryCreate","QuestionaryUpdate","QuestionaryDelete","QuestionaryActivate","QuestionaryReviewerInConstruction","QuestionaryReviewerInValidation","QuestionaryReviewerReturned","QuestionaryReviewerApproved","ScaleView","ScaleCreate","ScaleUpdate","ScaleDelete","ReportLabelsView","ReportLabelsCreate","ReportLabelsUpdate","ReportLabelsDelete","ReportLabelsActivate","ArchetypeView","ArchetypeCreate","ArchetypeUpdate","ArchetypeDelete","ArchetypeActivate","TestCoreCompetencesView","TestCoreCompetencesUpdate","TestCoreCompetencesActivate","TestCoreNewsView","TestCoreNewsUpdate","TestCoreNewsCreate","TestCoreNewsActivate","SheetView","SheetUpdate","SheetActivate","FranchiseView","FranchiseCreate","FranchiseUpdate","FranchiseDelete","FranchiseActivate","TestCoreInboxView","TestCoreInboxUpdate","TestCoreInboxCreate","TestCoreInboxActivate","PlanView","PlanCreate","PlanUpdate","PlanDelete","PlanActivate","CoreGroupView","CoreGroupCreate","CoreGroupUpdate","CoreGroupDelete","CoreUserView","CoreUserCreate","CoreUserUpdate","CoreUserDelete","CoreUserActivate","MessageView","MessageCreate","MessageUpdate","MessageDelete","MessageActivate","TestManagementCompetencesView","TestManagementCompetencesUpdate","CompanyGroupView","CompanyGroupCreate","CompanyGroupUpdate","CompanyGroupDelete","CompanyGroupActivate","CompanyView","CompanyCreate","CompanyUpdate","CompanyDelete","CompanyActivate","CompanyMasterView","CompanyMasterUpdate","PasswordPolicyView","PasswordPolicyUpdate","GroupView","GroupCreate","GroupUpdate","GroupDelete","MasterUserView","MasterUserCreate","MasterUserUpdate","MasterUserDelete","MasterUserActivate","UserView","UserCreate","UserUpdate","UserDelete","UserActivate","UserConvert","UserSwap","UserRegeneratePassword","ProfileView","ProfileCreate","ProfileUpdate","ProfileDelete","ServiceAgreementView","ServiceAgreementCreate","ServiceAgreementUpdate","ServiceAgreementDelete","ServiceAgreementActivate","ServiceAgreementStateChange","ServiceAgreementStateDraft","ServiceAgreementStateInReview","ServiceAgreementStateForwarded","ServiceAgreementStateApproved","ServiceAgreementStateCancelled","ServiceAgreementStateValid","ServiceAgreementPrivateNoteView","ServiceAgreementPrivateNoteCreate","ServiceAgreementPrivateNoteUpdate","ServiceAgreementPrivateNoteDelete","ServiceAgreementPublicNoteView","ServiceAgreementPublicNoteCreate","ServiceAgreementPublicNoteUpdate","ServiceAgreementPublicNoteDelete","TagsManagementView","TagsManagementCreate","TagsManagementUpdate","TagsManagementDelete","TestManagementQuestionaryGroupView","TestManagementQuestionaryGroupCreate","TestManagementQuestionaryGroupUpdate","TestManagementQuestionaryGroupDelete","TestManagementQuestionaryGroupShare","TestManagementReportView","TestManagementReportCreate","TestManagementReportUpdate","TestManagementReportDelete","TestManagementReportShare","TestManagementReportPredictorView","TestManagementReportPredictorCreate","TestManagementReportPredictorUpdate","TestManagementReportPredictorDelete","TestManagementDiscStyleView","TestManagementDiscStyleUpdate","TestManagementDiscProfileView","TestManagementDiscProfileUpdate","TestManagementQuestionaryConfigurationView","TestManagementQuestionaryConfigurationUpdate","TestManagementCustomCompanyQuestionaryView","TestManagementCustomCompanyQuestionaryCreate","TestManagementCustomCompanyQuestionaryUpdate","TestManagementCustomCompanyQuestionaryDelete","TestManagementCustomCompanyQuestionaryActivate","TestManagementCustomCompanyModularQuestionaryView","TestManagementCustomCompanyModularQuestionaryCreate","TestManagementCustomCompanyModularQuestionaryUpdate","TestManagementCustomCompanyModularQuestionaryDelete","TalentView","TalentAsign","TalentRemove","TalentTransfer","UserApiTokenView","UserApiTokenGeneration","PreferenceView","PreferenceUpdate","TestPersonView","TestPersonCreate","TestPersonUpdate","TestPersonDelete","TestPersonObservationView","TestPersonObservationCreate","TestPersonObservationUpdate","TestPersonObservationDelete","TestPersonHomologationView","TestPersonHomologationCreate","TestPersonHomologationUpdate","TestPersonHomologationDelete","TestPersonBulkView","TestPersonBulkCreate","TestPersonBulkUpdate","TestPersonBulkDelete","TestPersonBulkDownloadView","TestPersonBulkDownloadCreate","TestPersonBulkDownloadUpdate","TestPersonBulkDownloadDelete","TestPersonBulkResultsExportView","TestPersonBulkResultsExportCreate","TestPersonBulkResultsExportUpdate","TestPersonBulkResultsExportDelete","TestPersonBulkResultsExportEvaluatorsView","TestPositionView","TestPositionCreate","TestPositionUpdate","TestPositionDelete","TestPositionDirectView","TestPositionDirectCreate","TestPositionDirectUpdate","TestPositionDirectDelete","TestPositionConcertedView","TestPositionConcertedCreate","TestPositionConcertedUpdate","TestPositionConcertedDelete","TestCompanyView","TestCompanyCreate","TestCompanyUpdate","TestCompanyDelete","TestCompanyDirectView","TestCompanyDirectCreate","TestCompanyDirectUpdate","TestCompanyDirectDelete","TestCompanyConcertedView","TestCompanyConcertedCreate","TestCompanyConcertedUpdate","TestCompanyConcertedDelete","TestTeamView","TestTeamCreate","TestTeamUpdate","TestTeamDelete","TestTeamActivationView","TestTeamActivationCreate","TestArchiveView","TestArchiveUpdate","CrossFunctionalityTheMethod","CrossFunctionalityHelp","CrossFunctionalityChat","CrossFunctionalityMicrosite","AdminSelectionAdminCompanyView","AdminSelectionAdminCompanyUpdate","AdminSelectionAdminCompanyInactivate","AdminSelectionAdminCompanyCreate","AdminSelectionAdminCatalogsView","AdminSelectionAdminCatalogsUpdate","AdminSelectionAdminCatalogsInactivate","AdminSelectionAdminCatalogsCreate","AdminSelectionAdminTraductionsView","AdminSelectionAdminTraductionsUpdate","AdminSelectionAdminTraductionsInactivate","AdminSelectionAdminTraductionsCreate","AdminSelectionAdminPortalEdit","AdminSelectionAdminPortalChangelogo","AdminSelectionAdminThemeCreate","AdminSelectionAdminThemeView","AdminSelectionAdminThemeChangetheme","AdminSelectionAdminThemeUpdate","AdminSelectionAdminThemeDelete","AdminSelectionAdminExternalintegrationCreate","AdminSelectionAdminExternalintegrationManage","AdminSelectionAdminExternalintegrationUpdate","AdminSelectionAdminExternalintegrationAccess","AdminSelectionAdminExternalintegrationDelete","SelectionPredictorTrayectoryView","SelectionPredictorTrayectoryUpdate","SelectionPredictorTrayectoryInactivate","SelectionPredictorTrayectoryRequestreference","SelectionPredictorTrayectoryDownloadcvfile","SelectionPredictorTrayectoryCreate","SelectionPredictorTrayectoryViewCandidateDocuments","SelectionPredictorInternalnotesView","SelectionPredictorInternalnotesUpdate","SelectionPredictorInternalnotesInactivate","SelectionPredictorInternalnotesCreate","SelectionPredictorTasksView","SelectionPredictorTasksUpdate","SelectionPredictorTasksInactivate","SelectionPredictorTasksCreate","SelectionPredictorReportsView","SelectionPredictorReportsDownload","SelectionPredictorPersonsView","SelectionPredictorPersonsUpdate","SelectionPredictorPersonsDelete","SelectionPredictorPersonsSearch","SelectionPredictorCompleteinfoView","SelectionPredictorCompleteinfoRequest","SelectionPredictorContractManagment","SelectionPredictorReservedinfoView","SelectionPredictorReservedinfoCreate","SelectionPredictorReservedinfoDelete","SelectionPredictorReservedinfoUpdate","SelectionProcessProcessPublish","SelectionProcessProcessCreate","SelectionProcessProcessShare","SelectionProcessProcessEdit","SelectionProcessOfferCreate","SelectionProcessOfferEdit","SelectionProcessOfferUpdate","SelectionProcessOfferDelete","OrganizationService","listWithDisabled","getNextQuestion","getAllTranslationsByQuestion","getQuestionOptionByQuestion","QuestionService","findExisting","getWeights","ReportService","coreGroupIdToTransferUsers","downloadPdfById","CoreGroupService","isMandatory","isDisable","responseOptions","thematicGroupIds","thematicVariableIds","questionHistories","addSlash","calculateAge","dob","diff_ms","age_dt","normalizeSearchDateRange","StartDate","EndDate","endOfDay","CompanyCompetenceService","C_mode","CBC","Pkcs7","OpenSSLFormatter","SerializableCipher","OpenSSLKdf","PasswordBasedCipher","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","xformMode","_xformMode","dataUpdate","selectCipherStrategy","xorBlock","paddingWord","paddingWords","modeCreator","_mode","__creator","finalProcessedBlocks","formatter","OpenSSL","openSSLStr","ciphertextWords","encryptor","cipherCfg","algorithm","_parse","kdf","execute","derivedParams","companylogger","companySwitcherSubscriber","currentCompanyIdChanged","CompanyAppHttpClient","makeRequestFlushFromTimer","flush","timeoutHandle","handleFlushTimer","intervalHandle","flushing","longStacks","microTaskQueue","microTaskQueueCapacity","mutationObserver","requestFlushMicroTaskQueue","flushMicroTaskQueue","createMutationObserver","requestFlushTaskQueue","flushTaskQueue","_flushQueue","scan","newLength","filterFlushStack","onError","prepareQueueStack","queueTask","filterQueueStack","captureStack","TemplateDependency","TemplateRegistryEntry","factoryIsReady","_template","_factory","addDependency","finalSrc","requires","templateRegistry","UserExportStatus","I18N","signaler","globalVars","i18nextDefered","skipTranslationOnMissingKey","setLocale","signal","nf","NumberFormat","uf","comparer","thousandSeparator","decimalSeparator","df","fullOptions","registerGlobalVariable","unregisterGlobalVariable","l2","pname","_textContent","_innerHTML","attrCC","reservedNames","i18nLogger","newChild","_newChild","prependParser","ni","_prepended","pi","appendParser","_ni","_appended","listObservation","listItemsById","exportItemsById","stringId","difficulty","associate","addPeople","removePerson","bulkActivationId","itemId","BulkActivationService","getTalentsById","validateActivationVideoInterview","QuestionaryGroupService","_class8","_class9","_class10","_class12","_class13","_class14","_temp2","targetContext","sourceContext","createOverrideContext","parentOverrideContext","getContextFor","ancestor","oc","createScopeForTest","parentBindingContext","slotNames","versionSlotNames","lastSlot","ensureEnoughSlotNames","currentSlot","addObserver","observerSlots","_observerSlots","_version","observeProperty","getObserver","observeArray","unobserve","connectable","queued","nextId","minimumImmediate","isFlushRequested","animationFrameStart","__connectQueueId","connect","performance","enqueueBindingConnect","setConnectQueueThreshold","enableConnectQueue","disableConnectQueue","MAX_SAFE_INTEGER","getConnectQueueSize","addSubscriber","callable","hasSubscriber","_context0","_context1","_context2","_contextsRest","_callablesRest","_callable2","_callable1","_callable0","removeSubscriber","callables","arrayPool1","arrayPool2","poolUtilization","callSubscribers","context0","callable0","context1","callable1","context2","callable2","contextsRest","callablesRest","poolIndex","hasSubscribers","subscriberCollection","ExpressionObserver","getValue","setValue","toNumber","newSplice","ArraySplice","calcEditDistances","currentStart","currentEnd","oldStart","oldEnd","rowCount","columnCount","distances","north","west","spliceOperationsFromEditDistances","edits","northWest","calcSplices","prefixCount","suffixCount","sharedPrefix","sharedSuffix","_splice","oldIndex","searchLength","index1","index2","calculateSplices","previousValue","arraySplice","mergeSplice","start1","end1","start2","end2","inserted","insertionOffset","intersectCount","deleteCount","currentRemoved","projectArraySplices","changeRecords","createInitialSplices","getChangeRecords","newRecord","ModifyCollectionObserver","oldCollection","lengthPropertyName","addChangeRecord","changeRecord","lengthObserver","flushChangeRecords","getLengthObserver","CollectionLengthObserver","arrayProto","_getArrayObserver","ModifyArrayObserver","for","__au_patched__","notEmpty","methodCallResult","__array_observer__","oldArray","_ModifyCollectionObse","Expression","isAssignable","FEATURE_NO_UNPARSER","_Unparser","unparse","_Expression","visitor","visitBindingBehavior","bindingBehaviors","behaviorKey","evalList","_Expression2","allArgs","converter","valueConverters","toView","fromView","visitValueConverter","signals","connectBindingToSignal","Assign","_Expression3","vistor","visitAssign","Conditional","_Expression4","yes","visitConditional","AccessThis","_Expression5","visitAccessThis","AccessScope","_Expression6","visitAccessScope","AccessMember","_Expression7","visitAccessMember","AccessKeyed","_Expression8","getKeyed","setKeyed","visitAccessKeyed","CallScope","_Expression9","mustEvaluate","getFunction","visitCallScope","CallMember","_Expression10","visitCallMember","CallFunction","_Expression11","visitCallFunction","Binary","_Expression12","operation","autoConvertAdd","visitBinary","Unary","_Expression13","_this15","visitPrefix","LiteralPrimitive","_Expression14","_this16","visitLiteralPrimitive","LiteralString","_Expression15","_this17","visitLiteralString","LiteralTemplate","_Expression16","cooked","_this18","tagged","contextType","getScopeContext","getObjectContext","visitLiteralTemplate","LiteralArray","_Expression17","_this19","visitLiteralArray","LiteralObject","_Expression18","_this20","visitLiteralObject","mustExist","Unparser","writeArgs","conditional","literal","ExpressionCloner","cloneExpressionArray","clonedArray","visitUnary","unary","cloneExpression","bindingMode","oneWay","twoWay","Parser","ParserImplementation","parseBindingBehavior","tkn","T$EOF","nextToken","T$ExpressionTerminal","parseValueConverter","T$Ampersand","parseVariadicArgs","parseExpression","T$Bar","T$Colon","exprStart","parseConditional","T$Eq","parseBinary","T$Question","expect","minPrecedence","parseLeftHandSide","T$BinaryOp","opToken","T$Precedence","TokenValues","T$TokenMask","primary","T$Plus","T$Minus","T$Bang","T$TypeofKeyword","T$VoidKeyword","T$ParentScope","T$Period","T$AccessScopeTerminal","C$Ancestor","C$ShorthandProp","C$This","T$Identifier","C$Scope","T$ThisScope","T$LParen","T$RParen","C$Primary","T$LBracket","_elements","T$RBracket","T$Comma","T$LBrace","T$RBrace","T$IdentifierOrKeyword","T$Literal","T$StringLiteral","T$TemplateTail","T$TemplateContinuation","parseTemplate","T$NumericLiteral","T$NullKeyword","T$UndefinedKeyword","T$TrueKeyword","T$FalseKeyword","T$MemberOrCallExpression","C$Member","C$Keyed","C$Call","C$Tagged","scanTemplateTail","scanIdentifier","CharScanners","AsciiIdParts","IdParts","KeywordLookup","scanNumber","isFloat","scanString","quote","_unescaped","unescaped","scanTemplate","column","T$BarBar","T$AmpersandAmpersand","T$Caret","T$EqEq","T$BangEq","T$EqEqEq","T$BangEqEq","T$Lt","T$Gt","T$LtEq","T$GtEq","T$InKeyword","T$InstanceOfKeyword","T$Star","T$Percent","T$Slash","true","false","$this","$parent","in","instanceof","typeof","void","decompress","compressed","returnToken","unexpectedCharacter","ci","mapProto","_getMapObserver","ModifyMapObserver","_ModifyCollectionObse2","__map_observer__","hasValue","emLogger","findOriginalEventTarget","deepPath","standardStopPropagation","propagationStopped","handleCapturedEvent","orderedCallbacks","capturedCallbacks","orderedCallback","handleEvent","CapturedHandlerEntry","increment","decrement","handleDelegatedEvent","delegatedCallbacks","DelegateHandlerEntry","DelegationEntryHandler","targetEvent","EventHandler","DefaultEventStrategy","delegatedHandlers","capturedHandlers","disposable","handlerEntry","delegationStrategy","bubbling","previousCallback","capturing","EventManager","elementHandlerLookup","eventStrategyLookup","registerElementConfig","defaultEventStrategy","registerEventStrategy","getElementHandler","EventSubscriber","callbackOrListener","DirtyChecker","tracked","checkDelay","addProperty","scheduleDirtyCheck","removeProperty","_this22","isDirty","DirtyCheckProperty","dirtyChecker","propertyAccessor","PrimitiveObserver","primitive","doNotCache","SetterObserver","observing","getterValue","setterValue","convertProperty","XLinkAttributeObserver","attributeName","getAttributeNS","setAttributeNS","dataAttributeAccessor","DataAttributeObserver","StyleObserver","_setProperty","rx","ValueAttributeObserver","CheckedObserver","_dec8","initialSync","synchronizeElement","valueObserver","__observers__","elementValue","isRadio","synchronizeValue","SelectValueObserver","_dec9","synchronizeOptions","optionValue","_this23","_option","_ret2","_loop3","_this24","domObserver","ClassObserver","nameIndex","hasDeclaredDependencies","declarePropertyDependencies","computedFrom","ComputedExpression","_Expression19","_this25","createComputedObserver","svgElements","svgPresentationElements","svgPresentationAttributes","svgAnalyzer","FEATURE_NO_SVG","altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","circle","clipPath","defs","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","font","foreignObject","glyph","glyphRef","hkern","linearGradient","mpath","polygon","polyline","radialGradient","svg","switch","textPath","tref","tspan","vkern","SVGAnalyzer","altglyph","altglyphdef","altglyphitem","glyphref","isStandardSvgAttribute","presentationElements","presentationAttributes","_class11","eventManager","adapters","observersLookup","createPropertyObserver","getOrCreateObserversLookup","createObserversLookup","addAdapter","getAdapterObserver","xlinkResult","SVGElement","existingGetterOrSetter","adapterObserver","getAccessor","_getSetObserver","ObjectObservationAdapter","BindingExpression","discrete","createBinding","Binding","_dec10","updateTarget","targetObserver","updateSource","CallExpression","Call","callSource","$event","_this26","ValueConverterResource","convention","registerValueConverter","valueConverter","nameOrTarget","BindingBehaviorResource","registerBindingBehavior","bindingBehavior","ListenerExpression","Listener","getAU","NameExpression","apiName","NameBinder","locateAPI","LookupFunctions","createBindingExpression","propertyObserver","_this27","_this28","expressionObserver","registerAdapter","setProto","ModifySetObserver","_ModifyCollectionObse3","__set_observer__","oldSize","targetOrConfig","isClassDecorator","innerPropertyName","innerPropertyDescriptor","changeHandler","signalBindings","getAllByPositionId","createToPosition","getAllByOrganizationId","createToOrganization","createToPerson","ResultService","DiscAdjectiveService","CustomCompanyModularQuestionaryService","getDemoPlansByFranchiseId","CompanyDetailService","QuestionInteractionType","retryStrategy","defaultRetryConfig","maxRetries","RetryInterceptor","retryConfig","_request","requestClone","_response","_x2","_x3","responseError","httpClient","doRetry","minRandomInterval","maxRandomInterval","retryStrategies","calculateDelay","newRequest","beforeRetry","retryCount","HttpClientConfiguration","interceptors","withInterceptor","interceptor","useStandardConfiguration","rejectErrorResponses","rejectOnError","withRetry","HttpClient","activeRequestCount","normalizedConfig","isPrototypeOf","Headers","retryInterceptorIndex","_fetch","_x6","_x7","trackRequestStart","buildRequest","http","applyInterceptors","processRequest","Response","Request","processResponse","trackRequestEnd","requestContentType","parsedDefaultHeaders","parsedHeaders","parseHeaderValues","bodyObj","requestInit","absoluteUrlRegexp","getRequestUrl","isJSON","defaultHeaders","setDefaultHeaders","callFetch","createCustomEvent","successName","errorName","interceptorArgs","chain","successHandler","errorHandler","default_1","dto","_loginRedirectRoute","_logoutRedirectRoute","_unauthorizedRedirectRoute","_logLevel","_userManagerSettings","defaultClientUri","ensureRouteValueBeginsWithSlash","OpenIdConnectLogger","NONE","setLogLevel","WARN","ERROR","validOidcClientLevels","_temp3","_class15","_temp4","_class16","_class17","_class18","animationEvent","enterBegin","enterActive","enterDone","enterTimeout","leaveBegin","leaveActive","leaveDone","leaveTimeout","staggerNext","removeClassBegin","removeClassActive","removeClassDone","removeClassTimeout","addClassBegin","addClassActive","addClassDone","addClassTimeout","animateBegin","animateActive","animateDone","animateTimeout","sequenceBegin","sequenceDone","Animator","enter","leave","runSequence","animations","registerEffect","effectName","unregisterEffect","CompositionTransactionNotifier","_compositionCount","_tryCompleteTransaction","CompositionTransactionOwnershipToken","_ownershipToken","_createThenable","CompositionTransaction","capitalMatcher","addHyphenAndLower","_hyphenate","_isAllWhitespace","auInterpolationTarget","ViewEngineHooksResource","registerViewEngineHooks","viewEngineHooks","ElementEvents","_enqueueHandler","_dequeueHandler","captureOrOptions","eventHandler","EventHandlerImpl","subscribeOnce","subscription","disposeAll","capture","ResourceLoadContext","hasDependency","ViewCompileInstruction","targetShadowDOM","compileSurrogate","associatedModuleId","normal","BehaviorInstruction","enhance","unitTest","anchorIsContainer","containerless","initiatedByBehavior","inheritBindingContext","biProto","partReplacements","skipContentProcessing","contentFactory","shadowSlot","parentInjectorId","contentExpression","letElement","lifting","liftingInstruction","noExpressions","providers","injectorId","elementInstruction","surrogate","tiProto","slotFallbackFactory","loadViewFactory","RelativeViewStrategy","absolutePath","viewEngine","compileInstruction","loadContext","ConventionalViewStrategy","viewUrl","convertOriginToViewUrl","NoViewStrategy","dependencyBaseUrl","TemplateRegistryViewStrategy","InlineViewStrategy","markup","StaticViewStrategy","appResources","viewCompiler","elDeps","dep","elementName","exported","ViewLocator","$view","viewStrategyMetadataKey","createFallbackViewStrategy","BindingLanguage","inspectAttribute","attrValue","createAttributeInstruction","existingInstruction","createLetExpressions","inspectTextContent","noNodes","SlotCustomAttribute","auSlotAttribute","valueChanged","PassThroughSlot","destinationName","fallbackFactory","destinationSlot","projections","contentView","renderFallbackContent","projectionSource","ownerView","ShadowDOM","passThroughTo","addNode","removeNodes","needsFallbackRendering","projectFrom","ShadowSlot","isContentProjectionSource","projectFromAnchors","destinationSlots","destination","distributeNodes","auOwnerView","auProjectionSource","auAssignedSlot","_findAnchor","undistributeView","hasSlots","auSlotProjectFrom","_children","auProjectionChildren","_child","undistributeAll","_children2","_child2","_children3","viewIndex","lastView","projectTo","insertNodesBefore","fallbackSlots","getSlotName","defaultSlotKey","destinationOverride","currentNode","_slotName","validateBehaviorName","newName","bindingLanguage","hasParent","getValueConverter","getBindingBehavior","attributeMap","beforeCompile","afterCompile","beforeCreate","afterCreate","beforeBind","beforeUnbind","$resource","HtmlBehaviorResource","resourceType","liftsContent","attributeDefaultBindingMode","defaultBindingMode","_bindables","bindables","currentProps","newProp","BindableProperty","existed","registerWith","_tryAddHook","_invokeHook","two","three","four","getBindingLanguage","bindingLanguageFallback","patchInParent","newParent","originalParent","relativeToView","registerElement","mapAttribute","registerAttribute","knownAttribute","registerValue","impl","resourceTypeMeta","View","isAttached","viewModelScope","animatableElement","_isUserControlled","returnViewToCache","_systemUpdate","appendNodesTo","getAnimatableElement","animator","contentSelectors","animateView","transformChildNodesIntoView","_children4","removeAction","_child3","projectToSlots","_projectionAdd","_projectionInsert","_projectionMove","_projectionRemove","_projectionRemoveAt","_projectionRemoveMany","_projectionRemoveAll","providerResolverInstance","ProviderResolver","__providerId__","elementContainerGet","boundViewFactory","_partReplacements","elementEvents","superGet","applyInstructions","containers","shadowSlots","elementContainer","commentAnchor","slotDestination","replaceNode","contentElement","makeElementIntoAnchor","createElementContainer","styleStringToObject","firstIndexOfColon","styleObjectToString","parentContainer","factoryCreateInstruction","setCacheSize","doNotOverrideIfAlreadySet","getCachedView","ViewFactory","cacheSize","cachedView","instructables","instructable","surrogateInstruction","currentAttributeValue","styleObject","applySurrogateInstruction","nextInjectorId","lastAUTargetID","makeIntoInstructionTarget","auTargetID","defaultLetHandler","ViewCompiler","adoptNode","shadowDOM","_compileNode","targetId","ins","_compileSurrogate","targetLightDOM","_compileElement","wholeText","currentChild","hasValues","command","hasOptions","_primaryProperty","alteredAttr","_configureProperties","attrToRemove","elementProperty","compiler","auShadowSlot","_child4","makeShadowSlot","namespaceURI","processAttributes","_primaryProperty2","ResourceModule","moduleInstance","mainResource","onLoaded","vs","main","ResourceDescription","ModuleAnalyzer","getAnalysis","analyze","mainResourceKey","fallbackKey","conventional","resourceModule","ProxyViewFactory","auSlotBehavior","ViewEngine","moduleAnalyzer","_pluginMap","addResourcePlugin","extension","urlOrRegistryEntry","ensureRegistryEntry","registryEntry","loadTemplateResources","importIds","viewModelRequires","viewModelRequireMetadataKey","templateImportCount","importId","importViewResources","importViewModelResource","moduleImport","viewModelModule","normalizedId","moduleIds","_applyLoaderPlugin","analysis","associatedModule","allAnalysis","Controller","observerLookup","handlesBind","_ensurePropertiesDefined","handlesCreated","skipSelfSubscriber","selfSubscriber","publishing","__parentOverrideContext","_ii2","_boundProperties","handlesUnbind","handlesAttached","handlesDetached","BehaviorPropertyObserver","notqueued","_behavior","nameOrConfig","_configureDescriptor","defineOn","handlerName","createObserver","changeHandlerName","propertyChanged","behaviorHandlesBind","_createDynamicProperty","lastProviderId","doProcessContent","doProcessAttributes","shadowDOMOptions","processContent","usesShadowDOM","childBindings","hasDynamicOptions","addChildBinding","htmlName","_copyInheritedProperties","transientView","_partReplacements2","hasChildNodes","toReplace","removeNode","viewHost","attachShadow","boundary","_ii3","_i5","_ii4","_i6","_ii5","_i7","_ii6","_i8","_ii7","__propertiesDefined__","derived","_i9","_ii8","createChildObserverDecorator","selectorOrConfig","actualTarget","ChildObserver","ChildObserverBinder","noMutations","trackMutation","groupedMutations","binder","onChildChange","binders","bindersLength","_i10","_ii9","added","_node","onRemove","_jj","_node2","_k","_binder","onAdd","assignedSlot","anchors","_i11","_ii10","__childObserver__","_value2","_value3","previousElementSibling","SwapStrategies","skipActivation","CompositionEngine","previousViews","_createControllerAndSwap","transaction","ElementConfigResource","instanceOrConfig","customElement","nameOrConfigOrTarget","descriptor2","dynamicOptions","defaultShadowDOMOptions","useShadowDOM","targetOrOptions","doNotProcessContent","useViewStrategy","useView","inlineView","noView","targetOrDependencies","templateOrConfig","elementConfig","_key7","TemplatingEngine","_dec11","_container","_moduleAnalyzer","_viewCompiler","_compositionEngine","configureAnimator","compilerInstructions","letExpressions","getLogoUrl","CompanyInfoService","inbox","InboxService","addendumList","publicNoteList","privateNoteList","createAddendum","createPublicNote","createPrivateNote","updateAddendum","updatePrivateNote","updatePublicNote","deleteAddendum","deletePublicNote","deletePrivateNote","ObservationService","getSalesIqSettings","getSurveyZohoSettings","ServiceRatingService","PersonDemographicDataService","getByCountry","countryId","EducationalLevelCountryService","profileIdToTransferUsers","ProfileService","changeUserCompany","convertToUser","MasterUserService","coreCompanyService","currentRoute","urlParams","URLSearchParams","userChanged","loadUserProfile","loadCompanies","setFlatpickrLocale","cleanPath","replaceState","hideBreadcrumb","public","App","CssAnimator","useAnimationDoneClasses","animationEnteredClass","animationLeftClass","isAnimating","verifyKeyframesExist","_addMultipleEventListener","evts","_removeMultipleEventListener","_getElementAnimationDelay","styl","_getElementAnimationNames","animationNames","_performSingleAnimate","_triggerDOMEvent","eventType","_animationChangeWithValidKeyframe","prevAnimationNames","newAnimationNames","keyframesRuleType","CSSRule","KEYFRAMES_RULE","MOZ_KEYFRAMES_RULE","WEBKIT_KEYFRAMES_RULE","styleSheets","cssRules","cssRule","_stateAnim","doneClass","auClass","auClassActive","_animStart","animHasStarted","evAnimStart","_animEnd","evAnimEnd","attrib","cleanupAnimation","suppressEvents","_animStart2","_animEnd2","_animStart3","_animEnd3","AbpTagsInputCustomElement","_pickerConfig","_abpTagsInput","_descriptor5","_descriptor6","_descriptor7","_descriptor8","_descriptor9","_descriptor10","_aureliaFramework","_jquery","_jquery2","elm","domElm","pickerOptions","applyExposeEvents","exposeMethods","onBeforeItemAdd","onBeforeItemRemove","preventRefresh","suppressValueChanged","onItemAdded","onItemAddedOnInit","onItemRemoved","areEqualArray","arr1","newValueSplit","oldValueSplit","frameworkConfig","applyConfig","Handler","messageType","invokeCallback","invokeHandler","eventLookup","messageHandlers","subscribers","includeEventsIn","AureliaFlatpickrCustomElement","_flatpickr2","dateStr","_datesAreSynced","_cloneDate","modelDates","modelDate","viewDate","FrameworkConfiguration","hostConfigured","_started","action","applicationHost","_configureHost","engine","_onAureliaComposed","hostSlot","extPattern","runTasks","tasks","resourcesToLoad","getExt","isOtherResource","removeExt","addOriginalExt","_normalize","loadBehaviors","behaviorsToLoad","assertProcessed","processed","invalidConfigMsg","preTasks","postTasks","configuredPlugins","preTask","postTask","_instance","feature","plugin","hasIndex","_moduleId","resourcesRelativeTo","toAdd","grandParent","meta","globalName","resourcePath","_plugin","pluginConfig","_addNormalizedPlugin","defaultBindingLanguage","defaultResources","eventAggregator","basicConfiguration","ConsoleAppender","_loadPlugin","loadPlugin","LogManager","LinkHandler","DefaultLinkHandler","_LinkHandler","_DefaultLinkHandler$g","getEventInfo","shouldHandleEvent","findClosestAnchor","targetIsThisWindow","leftButtonClicked","isRelative","targetWindow","BrowserHistory","_History","linkHandler","_isActive","_checkUrlCallback","_checkUrl","wantsPushState","rootStripper","_wantsHashChange","hashChange","loc","atRoot","_getFragment","_getHash","routeStripper","_loadUrl","hostname","port","_ref$trigger","_ref$replace","absoluteUrl","updateHash","back","_location","forcePushState","fragmentOverride","_href","registerI18N","htmlBehaviorResource","htmlParamsResource","i18nName","poly","DfValueConverter","dfOrOptions","DfBindingBehavior","signalBindingBehavior","rewritten","NfValueConverter","nfOrOptions","NfBindingBehavior","RtValueConverter","RtBindingBehavior","TValueConverter","TParamsCustomAttribute","TCustomAttribute","tparams","lazyParams","oldParams","paramsChanged","TBindingBehavior","_console2","_console3","_console4","createOpenIdConnectConfiguration","createOpenIdConnectLogger","createUserManager","retrieveUserlandConfig","configManager","openIdConnectLogger","navModels","requiredRoles","Anonymous","_PLATFORM","FEATURE_NO_IE","strTrim","arrIndexOf","emptyArray","DOMEx","DOMException","checkTokenAndGetIndex","ClassList","trimmedClasses","_updateClassName","classListProto","updated","testElement","createMethod","_filterEntries","_entries","_clearEntries","entryType","nowOffset","timing","navigationStart","_marksIndex","webkitMark","webkitMeasure","startMark","endMark","getEntriesByType","webkitGetEntriesByType","getEntriesByName","webkitGetEntriesByName","clearMarks","webkitClearMarks","clearMeasures","webkitClearMeasures","con","nop","_CustomEvent","_FEATURE","scopedCSS","htmlTemplateElement","WebKitMutationObserver","ensureHTMLTemplateElement","fixSVGTemplateElement","fixHTMLTemplateElement","childTemplates","shadowPoly","ShadowDOMPolyfill","_DOM","createAttribute","createTemplateElement","appendNode","oldStyle","dom","authorize_route_step_1","global_permission_show_1","global_permission_enable_1","permission_filter_1","GlobalPermissionShow","GlobalPermissionEnable","PermissionFilterValueConverter","framework","authorizeRouteStep","aurelia_framework_1","can","canPermissions","disableElement","hideElement","filterExpression","permissionConfig","QuillEditor","_quillEditor","aureliaConfig","editorConfig","_quill","_textChanged","onTextChanged","quillEditor","cleanModules","AttributeMap","allElements","registerUniversal","InterpolationBindingExpression","ChildInterpolationBinding","InterpolationBinding","validateTarget","targetAccessor","rawValue","LetExpression","toBindingContext","LetBinding","LetInterpolationBindingExpression","LetInterpolationBinding","interpolationBinding","createInterpolationBinding","SyntaxInterpreter","interpret","handleUnknownCommand","determineDefaultBindingMode","inString","inEscape","foundName","_getPrimaryPropertyName","isDestructuring","TemplatingBindingLanguage","_BindingLanguage","syntaxInterpreter","emptyStringExpression","toBindingContextAttr","interpolationParts","parseInterpolation","theInfo","interpolationStart","partIndex","Else","_registerInIf","ifVm","if","With","NullRepeatStrategy","RepeatStrategyLocator","lifecycleOptionalBehaviors","behaviorRequiresLifecycle","targetRequiresLifecycle","behaviors","_viewsRequireLifecycle","Repeat","_unsubscribeCollection","callContext","_observeInnerCollection","_observeCollection","_getInnerCollection","handleCollectionMutated","handleInnerCollectionMutated","newItems","injectAureliaHideStyleAtBoundary","domBoundary","hasAureliaHideStyle","Show","Hide","SCRIPT_REGEX","HTMLSanitizer","SanitizeHTMLValueConverter","sanitizer","untrustedMarkup","Replaceable","Focus","needsApply","cssUrlMatcher","CSSResource","_scoped","_alreadyGloballyInjected","fixupCSSUrls","CSSViewEngineHooks","_createCSSResource","_CSSViewEngineHooks","ViewCSS","AttrBindingBehavior","modeBindingBehavior","originalMode","throttleState","elapsed","timeoutId","throttledMethod","ThrottleBindingBehavior","methodToThrottle","originalName","unset","debounceCallSource","debounceState","debouncedMethod","debounceCall","callContextToDebounce","_oldValue","DebounceBindingBehavior","isCallSource","methodToDebounce","debouncer","handleSelfEvent","selfEventCallSource","SelfBindingBehavior","BindingSignaler","SignalBindingBehavior","bindingSignaler","signalName","_bindings","_bindings2","eventNamesRequired","notApplicableMessage","UpdateTriggerBindingBehavior","originalHandler","getElementName","bindableNames","DynamicElement","_createDynamicElement","styleResourcePlugin","EmptyClass","_RouteLoader","TemplatingRouteLoader","DynamicClass","createDynamicClass","RouteHref","processChange","attributeChanged","rebindView","collectionIndex","rebindAndMoveView","moveToBottom","templateStrategy","moveViewLast","bottomBufferEl","moveViewFirst","topBufferEl","calcMinViewsRequired","scrollerHeight","itemHeight","Math$floor","Math$abs","Math$max","Math$min","Math$round","$isNaN","htmlElement","$raf","getScrollerElement","hasOverflowScroll","getElementDistanceToTopOfDocument","clientTop","getStyleValues","currentStyle","styleValue","calcOuterHeight","insertBeforeNode","bottomBuffer","getDistanceToParent","childOffsetTop","ArrayVirtualRepeatStrategy","createFirstRow","initCalculation","itemCount","scrollerInfo","getScrollerInfo","existingViewCount","firstView","scroll_el_height","minViewsRequired","onAttached","getMore","isNearBottom","lastViewIndex","getViewRange","scrollerEl","realScrollTop","scroller","topBufferDistance","scrollerScrollTop","distanceToTop","realViewCount","firstVisibleIndex","lastVisibleIndex","updateBuffers","topBufferHeight","bottomBufferHeight","updateBufferElements","isNearTop","edgeDistance","_remeasure","_standardProcessInstanceMutated","$repeat","currItemCount","resetCalculation","max_views_count","realViewsCount","currIndex","odd","queuedSplices_1","runQueuedSplices_1","newArray","totalRemovedCount","totalAddedCount","spliceCount","newArraySize","allSplicesAreInplace","removedCount","firstIndexAfterMutation","originalSize","currViewCount","newViewCount","enableScroll","scroller_scroll_top","top_buffer_distance","real_scroll_top","first_index_after_scroll_adjustment","viewsRequiredCount","newTopBufferItemCount","viewCountDelta","newBotBufferItemCount","updateAllViews","viewLength","remeasure","firstViewIndex","top_buffer_item_count_after_scroll_adjustment","bot_buffer_item_count_after_scroll_adjustment","_handlingMutations","revertScrollCheckGuard","NullVirtualRepeatStrategy","VirtualRepeatStrategyLocator","DefaultTemplateStrategy","getScrollContainer","topBuffer","referenceNode","createBuffers","removeBuffers","getFirstElement","firstEl","getLastElement","lastEl","BaseTableTemplateStrategy","getTable","TableBodyStrategy","TableRowStrategy","ListTemplateStrategy","TemplateStrategyLocator","parentTagName","VirtualizationEvents","scrollerSizeChange","itemSizeChange","VirtualRepeat","collectionStrategyLocator","templateStrategyLocator","_isAttached","_ticking","_calledGetMore","_skipNextScrollHandle","_lastGetMore","_onScroll","isFixedHeightContainer","scrollListener","_currScrollerInfo","firstElement","_calcDistanceToTopInterval","prevDistanceToTop","currDistanceToTop","currentScrollerInfo","prevScrollerInfo","_handleScroll","scrollCt","unobserveScroller","_currScrollerContentRect","$clearInterval","_sizeInterval","calculationSignals","$setInterval","$clearInterval_1","observeScroller","_ignoreMutation","getScroller","isHandlingMutations","prevScrollerInfo_1","currentScrollerInfo_1","old_range_start_index","old_range_end_index","new_range_start_index","new_range_end_index","scrolling_state","didMovedViews","views_to_move_count","_moveViews","viewsCount","topIndex","revertCalledGetMore","firstViewElement","scrollContext","isAtBottom","isAtTop","$scrollContext","skipUpdate","ResizeObserverConstructor","ResizeObserver","_scrollerResizeObserver","oldRect","newRect","contentRect","sizeChangeHandler","elEvents","_scrollerEvents","sizeChangeEventsHandler","scrollerEvents","InfiniteScrollNext","getTargetDOMElement","getObject","objectExpression","getPropertyInfo","originalExpression","PropertyAccessorParser","accessorText","getAccessorExpression","accessor","validateTrigger","Validator","ValidateResult","ValidateEvent","controllerValidateResult","ValidationController","propertyParser","renderers","validating","objects","finishValidating","eventCallbacks","addObject","removeObject","processResultDelta","addError","resolvedPropertyName","__manuallyAdded__","removeError","addRenderer","removeRenderer","registerBinding","propertyInfo","unregisterBinding","resetBinding","getInstructionPredicate","predicate_1","object_1","propertyName_1","rules_1","ruleExists","object_2","propertyName_2","rules_2","validateObject","validateProperty","_c","resultSets","returnPromise","newResults","oldResults","invokeCallbacks","exception","getAssociatedElements","_loop_1","oldResult","this_1","newResultIndex","newResult","elements_1","oldResults_1","newResults_1","validateBinding","registeredBinding","changeTrigger","newTrigger","bindings_1","revalidateErrors","ValidateBindingBehaviorBase","rulesOrController","validationController","getValidateTrigger","vbbUpdateSource","validateBlurHandler","manual","standardUpdateTarget","ValidateBindingBehavior","ValidateManuallyBindingBehavior","ValidateOnBlurBindingBehavior","ValidateOnChangeBindingBehavior","ValidateOnChangeOrBlurBindingBehavior","changeOrBlur","ValidationControllerFactory","createForCurrentScope","ValidationErrorsCustomAttribute","boundaryElement","controllerAccessor","errorsInternal","interestingElements","ValidationRendererCustomAttribute","Rules","ExpressionVisitor","visitChain","visitArgs","ValidationMessageParser","bindinqLanguage","nullExpression","undefinedExpression","coalesce","MessageExpressionValidator","originalMessage","validationMessages","maxLength","minItems","maxItems","ValidationMessageProvider","StandardValidator","messageProvider","messageKey","$displayName","$propertyName","$value","$object","$config","$getDisplayName","validateRuleSequence","ruleSequence","sequence","validateAllProperties","allValid","promiseOrBoolean","FluentRuleCustomizer","fluentEnsure","fluentRules","parsers","_addRule","withMessageKey","withMessage","ensure","ensureObject","satisfies","satisfiesRule","expectedValue","FluentRules","customRules","argsToConfig","FluentEnsure","assertInitialized","mergeRules","existingRules","ValidationRules","messageParser","customRule","taggedRules","untaggedRules","AureliaValidationConfiguration","validatorType","customValidator","_aureliaPal","_reorderableRepeat","_reorderableGroupFor","_reorderableDndPreview","_reorderableDndHandlerSelector","_reorderableAfterReordering","translated","THtmlCustomAttribute","onScrollChange","MinimumWindowScroll","AnimationTime","BackToTopCustomElement","ScrollEventName","titleChanged","BootstrapTooltipCustomAttribute","shouldShowBreadcrumb","parentInstructions","getParentInstructions","checkHideBreadcrumb","childRoute","inst","UxAureliaCrumbsCustomElement","showNav","heading","perPage","draggable","loop","onInit","sliderWidth","sliderTransform","transformDuration","resizeAnimRunning","slideAnimRunning","initialized","pointerDown","drag","startX","endX","startY","letItGo","mergeSettings","attrname","webkitOrNot","resizeHandler","carouselContainer","touchstartHandler","touchendHandler","touchmoveHandler","mousedownHandler","mouseupHandler","mouseleaveHandler","mousemoveHandler","carouselWidth","viewPortWidth","resolveSlidesNumber","howManySlides","innerElements","beforeChange","currentSlide","slideToCurrent","goTo","updateAfterDrag","movement","movementDistance","howManySliderToSlide","innerWidth","resizeWorker","clearDrag","touchmoveWorker","mousemoveWorker","preventClickOnDrag","transformProperty","sliderFrame","Carousel","pointerEvents","handleClick","srcElement","queryCommandSupported","hiddenElement","ClipboardCustomAttribute","pageSize","totalRecords","tableData","currentPage","refreshing","totalPages","canGetMoreItems","updateRecordInfo","getMoreItems","changePage","onRefresh","UxDatatableParameters","UxDatatableCustomAttribute","onSearchChange","UxDatatableSearchCustomElement","labelFiltered","UxDatatableInfoCustomElement","pageForItems","pagesNumber","initialPage","totalpagesheet","trunc","totalPage","itemsByPage","validateIsaFunction","pushPagesNumber","calculateSkip","refreshResponse","getFirstPage","getLastPage","getPage","page","getNextPage","getPrevPage","UxDatatablePagination","UxDatePickerCustomElement","UxLoadingIndicator","minRange","maxRange","elMax","elMin","elMinRange","elMaxRange","inputElement","elWidth","thumb","thumbPercent","RangeInput","genericCulture","CurrencyFormatValueConverter","DateFormatValueConverter","timezone","dateTimeFormat","DateTimeFormatValueConverter","filter_on","cols","showResults","arrayIn","routeConfig","Home","companySettings","getCompanySettings","icon","isHome","hasGroupManagement","hasProfileManagement","hasUserManagement","hasTalentManagement","hasNotificationManagement","hasPreferenceManagement","Master","AdminChildRouter","agreementService","pdfService","dialogService","agreements","isMaster","companyGroupId","companyDetailId","databind","uxDatatable","indexOfEditedModel","pdfExport","agreementBody","AgreementList","AgreementChildRouter","AgreementReadOnlyModeModal","agreementMasterService","AgreementsToApprove","agreementstatus","ChangeStateAgreementConfirmation","activityService","agreementStatus","InternalDraft","activityStatus","Pending","activity","ActivityList","validationControllerFactory","configureValidationRules","ActivityModal","agreementCustomerReqService","businessCompanyService","bankInformationService","businessCompanies","bankInformations","keepEditing","filterBank","bankInformationId","AgreementCustomerReqEdit","catalogService","contactService","agreementPlanService","companyDetailService","plans","allPlans","selectionPlans","contacts","countries","isTestItemsActive","legalContactChange","officialContactChange","approveContactChange","isDemoSelectionPlan","onIsDemoChange","isDemo","createContact","legalContact","legalRepresentativeId","legalRepresentative","officialContact","officialInterlocutorId","officialInterlocutor","approveContact","whoApproveId","WhoApprove","viewTestPlanItems","viewSelectionPlanItems","selectionPlanId","AgreementEdit","agreementFileService","getPrivateMedia","privateUrl","AgreementFileList","setFile","fileUrl","AgreementFileModal","agreementTermPayService","currencies","percentageTotal","subtotaltermspay","taxtotaltermspay","alltotaltermspay","calculateTotals","invoicePerson","invoicePersonId","validateTotalAndQuotasValues","createQuota","AgreementTermsOfPayId","updateQuota","editQuota","originalQuota","removeQuota","deleteQuota","tempSubtotal","tempTax","tempAlltotal","tempAllPercentage","quota","purchaseValue","getTotal","item1","item2","AgreementTermsOfPayEdit","EditNavegationChildRouter","QuotaModal","TermsConditionsEdit","TestPlanItemListModal","observationService","AddendumList","AddendumModal","isComplete","ManagementReview","ForwardedClient","Approved","Valid","Cancelled","requestChanges","note","resendApprove","AgreementReadonlyMode","InternalNote","InternalNotesList","NoteModal","PublicNote","PublicNotesList","AgreementReadOnlyChildRouter","ArchetypeChildRouteer","archetypeService","archetypes","saveAndContinue","ArchetypeEdit","ArchetypeList","ArchetypeListChildRouter","ArchetypeModal","languageService","archetypelocalizationservice","isLoaded","LanguageId","ArchetypeLocalizationList","ArchetypeLocalizationModal","CompanyMasterChildRouter","companyDetailMasterService","setFranchiseAndCompanyGroup","companyGroup","logoUrl","base64data","logo","logoFileName","unSetFile","CompanyMasterEdit","CompanyChildRouter","planService","companyGroupService","companyService","demoPlans","demoAllPlans","demoSelectionPlans","economicSectors","regions","cities","regionId","filterDemo","filterRegion","cityId","filterCity","CompanyEdit","companySettingsService","companyQuestionaryService","competencesQuestionaries","comapnyGroupId","CompanySettingsEdit","passwordPolicyService","requirePasswordChanging","filterLockout","hasChanged","lockoutMaxFailedAccessAttempts","filterChangingPeriod","passwordChangingPeriod","CompanyPasswordPolicyEdit","CompanyGroupMasterChildRouter","CompanyGroupMasterListChildRouter","companyGroupMasterService","masterFranchises","Query","hasSearchQuery","SearchAll","firstResultFranchise","Franchise","MasterFranchise","companyGroups","masterFranchiseChanged","visibleFranchises","selectFranshise","CompanyGroupMasterListSelector","CompanyGroupMasterView","CompanyListSelector","CompanyGroupChildRouter","CompanyGroupEdit","CompanyGroupFranchiseListChildRouter","firstResultFranchiseId","childrenId","changeCompanyState","changeCompanyGroupState","CompanyGroupList","CompanyGroupListChildRouter","contact","orginialItem","ContactList","ContactModal","CoreGroupChildRouter","coreGroupService","coreGroupId","CoreGroupCreateCard","groupToDelete","coreGroups","CoreGroupDeleteModal","CoreGroupEdit","coregroupService","CoreGroupList","CoreGroupListChildRouter","CoreGroupModal","corePermissionService","groupPermissionNamesSelected","disableSets","setNames","groupPermissionName","toggleSet","generatePdf","getSubModulesByModule","getSetsBySubModule","subModuleName","getSelectedSetNameBySubModule","setPermissionNames","getGroupPermissionsBySet","setName","groupPermissionName2","isRestricted","validateSecondPassword","CorePermissionEdit","secondPasswordService","SecondPasswordModal","resetSecondPassword","ResetSecondPasswordCard","ResetSecondPasswordModal","otherPropertyName","CoreUserChildRouter","coreUserService","coreUserId","userState","CoreUserEdit","Active","Inactive","CoreUserList","CoreUserListChildRouter","educationalLevelCountryService","CountryId","EducationallevelCountryList","EducationalLevelCountryListChildRouter","EducationalLevelCountryModal","FranchiseDropdownSelector","setMasterFranchiseId","franchiseIdChanged","FranchiseSelector","GroupChildRouter","groupService","GroupCreateCard","GroupDeleteModal","GroupEdit","isMasterGroup","mastergroup","companyDetail","GroupList","GroupModal","permissionService","groupPermissionSet","PermissionEdit","habeasDataCountryService","habeasData","HabeasDataCountryList","HabeasDataCountryListChildRouter","labelService","LabelList","LabelModal","LanguageChildRouter","LanguageEdit","LanguageList","LanguageListChildRouter","localizationService","LocalizationList","LocalizationModal","MasterUserChildRouter","MasterUserCreateCard","masterUserService","masterUserId","currentCompanyGroup","MasterUserEdit","canDelete","exportStatus","validateCanDeleted","refreshCompany","checkExportStatus","viewLoginInfo","userId","exportUsers","Processing","downloadExport","MasterUserList","UserListChildRouter","MessageChildRouter","languagesService","messageTemplateService","messageId","MessageEdit","messageAgreementService","expreRegular","MessageFranchiseAgreement","MessageFranchiseListChildRouter","MessageFranchiseMain","messageTalentService","MessageFranchiseTalent","MessageListChildRouter","messagesTemplates","toSummary","MessageMain","messageSummaryService","isConsumption","isActiveUser","isActivityDelivery","ban","consumptionPeriod","pendingPeriod","activeUserPeriod","activityDeliveryPeriod","MessageSummary","Permission","ModularQuestionaryChild","questionariesService","questionaryType","perfilticservice","questionaryService","programmingLanguages","incompatibleQuestionaryIds","NoDisc","Person","noDiscType","General","hasManipulationScale","EngineersTest","changeNoDiscType","itm","programmingLanguageId","isModular","changeItemToQualify","Performance","Potential","Observed","filterQuestionaries","questionaryIncompatibilities","ModularQuestionaryEdit","selectLanguage","selectedLanguageId","deletemanager","isOriginal","ModularQuestionaryList","ModularQuestionaryListChildRouter","ModularQuestionChildRouter","questionService","thematicGroupService","thematicAssociationService","questionHistoryService","allowedReviewerStatusTypes","isTheLastQuestion","availableDimensions","observation","filteredQuestionInteractionTypes","isGameTest","previousInteractionType","questionType","SingleChoiceList","MultipleChoiceList","applyWeightValidation","runComponentBusinessValidation","businessErrors","validateBusinessRules","loadAllowedReviewerStatusTypes","permissionMap","InConstruction","InValidation","Returned","Aproved","loadSelectedDimensions","associationWeights","assignWeightsToResponseOptions","questionTypeId","reviewerStatusType","DescriptiveText","OpenAnswerQuestion","addResponseOption","hasGameTest","loadFilteredQuestionInteractionTypes","questionInteractionType","loadDimensions","openProperties","histories","selectedDimensions","getQuestionTypeValue","nextQuestion","SingleImageChoiceList","MultipleImageChoiceList","SingleChoiceListWithComments","questionUse","Evaluation","Microstory","microstoryComponent","EventReconstruction","ActionRanking","eventReconstructionComponent","IllustratedDialogue","illustratedDialogueComponent","IconSlider","IconicScale","Meteogram","SemanticDifferential","singleChoiceListComponent","DragChips","dragChipsComponent","formulation","questionHistory","executeActionWithNotification","successMessage","question","isColumn","responseOption","deleteResponseOption","thumbnailImageUrl","getQuestionUsesByQuestionType","Matrix","Example","Instruction","Farewell","weights","weightObj","weight","onInteractionTypeChanged","hasExistingOptions","clearResponseOptions","ModularQuestionEdit","questionaryConfigurationService","modularQuestionaryService","xlsxExampleUrl","questionaryConfiguration","updateConfigurations","uploadBulk","ModularQuestionList","MModularQuestionListChildRouter","tabItem","createQuestion","QuestionTypeSelection","ModularThematicVariableChild","ModularThematicVariableCreateCard","ModularThematicVariableEdit","ModularThematicVariableList","ModularThematicVariableListChildRouter","scaleService","thematicVariablesService","thematicVariable","originalItem","Genre","genre","educationalLevel","AgeRange","ageRange","goBack","ModularScaleList","ModularScaleListChildRouter","allCompanies","organizationGroups","loadCountries","localeCompare","selectedCompany","selectedOrganizationGroupId","selectedGroup","selectedFranchiseId","selectedFranchise","selectedMasterFranchiseId","onMasterFranchiseChange","onFranchiseChange","onOrganizationGroupChange","ModularScaleModal","allVariables","variable","thematicGroupName","loadGroups","groupsResponse","ModularScaleThematicVariables","isCrossItemsActive","hasHelp","hasTheMethod","hasWebChat","hasMicrosite","CrossPlanItemsEdit","otherTestModuleService","OtherPlanItemList","OtherPlanItemModal","PlanChildRouter","additionalTalentsSpendMode","UniqueRetail","onPlanTypeChange","planType","Demo","hasEmploymentPortal","isDataBasePublic","Billable","Unlimitted","PlanEdit","PlanFranchiseListChildRouter","PlanList","PlanListChildRouter","PlansHome","customReportsSpendMode","CustomReportSpendMode","planTestModuleService","questionaryName","reportTemplateName","sheetName","videoInterviewTalents","talentrackerColorFeedbackTalents","talentrackerCoachingTalents","talentrackerDevelopmentPlanTalents","talentrackerJobOpportunitiesTalents","TestPlanItemList","planQuestionaryService","planReportService","planSheetService","reports","GetItemTypeInfo","Report","Questionary","searchQuestionaries","Sheet","OnChangeQuestionariesGroup","questionariesFilter","TestPlanItemModal","positionService","resultService","discAdjectiveService","positionDiscList","discAdjetives","getPositionDisc","getDiscAdjetives","adjectives","scoreRange","getPositions","allPositionDisc","discIds","filteredItems","disc","calculateLabel","changeItem","stamp","maxItem","highestDisc","PositionDiscEdit","positionlocalizationservice","PositionReferenceLocalizationList","PositionReferenceLocalizationModal","PositionReferenceChildRouter","companyInfoService","positionDiscQuestionaries","educationalLevelCountries","positionReference","positionActivationType","Reference","notificationInfo","PositionReferenceEdit","PositionReferenceList","PositionReferenceListChildRouter","ProfileChildRouter","profileService","profileToDelete","profiles","ProfileDeleteModal","profileId","ProfileEdit","idToTransfer","ProfileList","ProfileListChildRouter","QuestionaryChild","translatedQuestionnaries","translatedmodel","questionaryLanguageId","labelId","localizationTypeId","QuestionaryCreateTranslation","QuestionaryEdit","selectQuestionary","QuestionaryKanban","deleteLoca","QuestionaryList","QuestionaryListChildRouter","QuestionaryTranslateChildRouter","QuestionChildRouter","toggleTextSize","isTextSizeAvailable","textSizeOptions","textSizeMin","textSizeMax","textSizeOptionSelected","textSize","toggleTextSizeDetail","QuestionConfigModal","modelTranslated","isTranslation","questionLanguageId","isAnUpdate","languageIdDefault","responseOptionRules","QuestionEdit","QuestionList","ScaleList","ScaleListChildRouter","ScaleModal","ScaleQuestionaryListChildRouter","ThematicGroupListChildRouter","ScaleThematicGroups","ThematicVariableListChildRouter","ScaleThematicVariables","bulkTalentsExportService","BulkTalentsExportList","walletService","HasLowBalanceModal","transactionService","TalentAssignmentCard","total_balance","talent","today","users","TalentBalancesList","TalentConsolidatedList","exportTransactionTypeId","totalResults","transactionTypeId","TransactionId","UserId","TalentExportCard","TalentListChildRouter","TalentMain","TalentModal","TalentPlansCard","current_balance","remaining_balance","balance_removed","observationRemove","getSum","calcular","canDiscountGeneralWallet","talentPlanService","TalentPlanItemsModal","transfer_balance","selectWallet","balance_user","wallets","tempWallet","filterUser","tran","sourceUserId","targetUserId","TalentTransferList","companyCompetenceService","isAllActivate","isCheckActivate","hasDimension","hasSelectLanguage","languageList","competencesQuestionaryId","Spanish","competenceQuestionary","setUserLanguage","checkAllActivate","competenceName","activeLang","lg","CompanyCompetenceList","SheetListChildRouter","DichotomousCoupleListModal","inboxService","inboxByUserService","inboxList","getInboxByCurrentCompany","planIdsTest","planIdsSelection","unRead","inboxByUserStatus","Received","selectInbox","inboxId","bodyText","subjectText","modelInboxByUser","InboxByUserList","InboxViewChildRouter","InboxChildRouter","initHieranchyLevelCompanyIdByRole","plansList","listPlansTest","companiesList","InboxEdit","getListPlans","getListFranchises","getListCompanies","planTestList","planSelectionList","franchiseMasterList","franchiseList","InboxList","InboxListChildRouter","NewsChildRouter","newsService","newsId","listPlansSelection","NewsEdit","newsList","NewsList","NewsListChildRouter","ServiceRatingChildRouter","UserSettingEdit","UserSettingList","showDimensions","dimensionClick","styleString","checkedChanged","disposeSubscription","synchronizeView","sheet","synchronizeModel","viewFullDescription","SheetCard","SheetCardSmall","coreSheetService","SheetFullDescriptionModal","setThumbnailImage","thumbnailImageFileName","setImage","imageFileName","imageUrl","SheetLanguageModal","coreSheetLanguageService","SheetList","TestCoreChildRouter","TestManagementHome","customCompanyModularQuestionaryService","scalesRoute","CustomCompanyModularQuestionaryChild","CustomCompanyModularQuestionaryEdit","CustomCompanyModularQuestionaryList","CustomCompanyModularQuestionChildRouter","customCompanyModularQuestionService","countOfQuestion","openHistory","CodeRandom","charactersLength","characters","allowOneResponseByColumn","allowOneResponseByRow","CustomCompanyModularQuestionEdit","CustomCompanyModularQuestionList","CustomCompanyModularQuestionListChildRouter","CustomCompanyModularQuestionTypeSelection","CustomCompanyQuestionaryChild","customCompanyQuestionaryService","customCompanyQuestionService","questionWarning","questionExample","questionFarewell","averageTime","validateIsVideoInterview","VideoInterview","Curriculum","ExpectationsTeam","JobProspects","Team","addDefaultQuestions","CustomCompanyQuestionaryEdit","isVideoInterviewTest","isVideoInterViewTest","CustomCompanyQuestionaryList","CustomCompanyQuestionChildRouter","CustomCompanyQuestionConfigModal","effectiveEvaluationQuestionCount","canCreate","CustomCompanyQuestionCreateCard","videoInterviewEvaluationRangeInfo","loadVideoInterviewSettings","maximumVideoInterviewEvaluationQuestions","maximumEvaluationQuestionCount","maximum","navigateToQuestionList","questionListUrl","CustomCompanyQuestionEdit","hasRequiredVideoInterviewQuestions","videoInterviewMaximumReachedMessage","videoInterviewConfigurationStatus","MaximumReached","CustomCompanyQuestionTypeSelection","DefaultColorsReportChildRouter","reportTemplateService","DefaultColorsReportEdit","generalReportService","clearFilters","updateCompanySettings","DefaultColorsReportList","companySheetService","categorySheetService","categories","questionariesCount","price","sheetIdsWithCompetencesEnabled","sheetIdsWithCompetences","sheetAvailable","isCompetenceActive","640","768","1080","autoPlay","autoPlayInterval","setSheetIdsWhitCompetences","fillSheetIdsWithCompetencesEnabled","setDurationAndPrice","setSheetAvailable","changeSheetState","changeSheetIdsWithCompetencesEnabled","selectCompanyCompetence","talentsPrice","isCompetenceType","Competences","orderChanged","orderedItems","hasAddsheetIds","dialogModel","selectedCompanyCompetenceIds","idSheet","sheetIdsWithCompentenceChanged","indexCompetenceSheetIds","indexModelSheetIds","indexCompetenceEnabledSheetIds","DefaultColorsReportSheetListEdit","companyDiscProfileService","coreLanguageService","CompanyDiscProfileList","companyDiscStyleService","model1","CompanyDiscStyleList","CompanyDiscStyleModal","companyHasTestControl","hasTestControl","isDaysBetween0And365","daysForDeadline","QuestionaryConfigurationList","QuestionaryGroupChildRouter","questionaryGroupService","bukService","modularThematicTimes","questionaries2","discs","noDiscs","engineersTest","modularTests","isModularActive","hasBukActivationTest","validBukCompanyIntegration","questionaryGroupId","cleanupObsoleteQuestionaries","setDuration","submitComplete","isExternalBukActivationTest","processBukIds","bukProcess","processStageBukIds","processStageIds","processBukNames","nameProcesses","selectedLanguageIds","qId","incompatibleId","incompatibleQuestionaryId","incompatibleQ","Disc","showCompetences","newModularQuestionaryId","aux","selectThematics","availableThematics","associatesForQuestionary","thematic","originalCount","validQuestionaryIds","allDimensions","enabledDimensions","newAssociates","dim","modalModel","associates","isSelected","addRemoveQuestionary","showThematics","questionaryLanguage","newModularId","QuestionaryGroupEdit","seeActivatedDimensions","selectedThematicAssociates","share","QuestionaryGroupList","ReportPredictorChildRouter","ReportPredictorEdit","reportTemplatePredictorService","ReportPredictorList","SheetPredictorListEdit","selectedId","DiscSelectionModal","ReportChildRouter","questionariesNames","sheetDimensionsVisible","selectedDiscQuestionaryId","discPopupOpenedOnce","discOptions","lastSavedSheetSignature","discPromptShownForCurrentSheetChange","ItemsToQualify","OrganizationTypes","cleanupObsoleteSheets","updateSheetDimensionsVisible","getSheetSignature","databindSheets","initializeSheetData","databindSheetsForNewTemplate","onItemToQualifyChange","Organization","onOrganizationTypeChange","syncReportTemplateQuestionaryIds","markDiscStateAsSaved","submitSheets","wasRemoved","changedSheet","sheetHasDisc","evaluateDiscSelection","fullSheet","modularQuestionaries","mq","getEffectiveQuestionariesFromSelectedSheets","associatesForQ","getLocalizedQuestionaryName","localizedQuestionary","effectiveQuestionaries","discQuestionaries","discByLanguage","discCandidates","effectiveDiscQuestionary","resolveEffectiveDiscQuestionary","validSheetIds","validSheets","previousSheetIds","hasSheetSetChanged","addedSheetIds","shouldOpenDiscModal","handleAddedModularSheets","isDiscSelectorApplicable","openModalIfNeeded","currentSheetSignature","hasSheetChangeFromSavedState","hasDiscContext","hasDiscSelectionContext","selectedQuestionaryId","availableQuestionaries","requiresPopup","reasonCode","availableCount","availableIds","isSelectionStillValid","effectiveSelectedQuestionaryId","shouldOpenModalByOptions","openDiscSelectionModal","hasCurrentSelection","resolvedDiscSelectionId","resolveDiscSelectionCandidate","allowFirstAvailableFallback","defaultQuestionaryId","DefaultLanguageFallback","currentSelection","addedId","CompanyCompetenceModal","isModularType","openSheetDimensions","getModularQuestionaries","triggerSheet","deselectSheet","sheetIdIndex","sheetIndex","ReportEdit","duplicateTemplates","searchDuplicateTemplates","duplicateFilter","selectedDuplicateId","isDuplicating","updateDuplicateTemplates","isDefault","seeActivatedCompetences","companyCompetence","onChangeDuplicateFilter","duplicateReport","ReportList","TestManagementChildRouter","questionAssociation","ThematicAssociationList","thematicVariableService","thematicVariables","bindValidationRules","unbindValidationRules","ThematicAssociationModal","ThematicGroupChildRouter","leftQuestions","rightQuestions","leftSearch","rightSearch","questionsToInclude","questionsToExclude","selectAllLeft","selectAllRight","chargeQuestionList","filterLeftQuestions","filterRightQuestions","includeSelectedQuestions","excludeSelectedQuestions","selectLeftQuestion","selectRightQuestion","ThematicGroupEdit","ThematicGroupList","ThematicGroupQuestionaryListChildRouter","thematicGroup","ThematicVariableList","ThematicVariableModal","UserApiApplicationChildRouter","userService","userApiApplicationService","validateUser","UserApiApplicationEdit","UserApiApplicationListChildRouter","UserApiApplicationUserList","PasswordValidationModal","UserArchiveList","newModelUser","masterCompanyList","masterCompanies","companyList","Customer","groupList","companyName","businessName","UserChangeCompanyModal","UserChildRouter","UserEdit","isExporting","changeCompanyUser","userWallet","convertMaster","UserList","loginInfo","directLoginUrlElement","UserLoginInfoModal","UserMasterList","ActivationConfirmation","activationService","activationLink","activationError","copyActivationLink","writeText","ActivationLinkModal","bulkFile","bulkFileName","isBulkUploading","setBulkFile","resetFileInput","uploadFunction","onUploaded","BulkUploadQuestionCard","qtyCreated","qtyUpdated","BulkUploadScaleCard","CarouselNewsCustomElement","ChangeStateConfirmation","currentCompanyChanged","externalLogoUrl","currentPersonChanged","externalLogoUrlChanged","CompanyLogo","setRootCompany","loadCurrentCompany","rootCompany","switchCompany","fragmentParts","newFragment","CompanySelector","apiUrl","companyTags","prepareQuery","companyTagsChanged","CompanyTagsInput","ConvertMasterConfirmation","ConvertUserConfirmation","DeactivateConfirmation","DeleteConfirmation","activationThematicAssociateService","dimensions","groupedByQuestionary","loadFromActivation","loadFromQuestionaryGroup","loadFromReportTemplate","grouped","filteredDimensions","DimensionActivatedModal","selectedDimensionIds","selectedVariableIds","selectionLabels","totalAverageTime","isActivation","searchValue","definedColumns","updateSelectionLabels","buildAssociates","dimId","DimensionSelectorModal","isStage","isDev","EnvWarning","isEvaluationQuestion","applyOptionValidation","addOption","deleteOption","orders","uniqueOrders","EventReconstructionResponseOptions","exportFunction","onExported","ExportQuestionaryQuestionsCard","IllustratedDialogueResponseOptions","buttonDisable","InboxNotification","InteractionTypeChangeConfirmation","applyParentValidation","applyChildValidation","addRootOption","deleteRootOption","addChildOption","removeChildOption","childIndex","MicrostoryResponseOptions","MultipleChoiceListResponseOptions","genericFilter","paramsList","checkedMap","syncCheckedMap","paramsListChanged","MultiselectThtCustomElement","idProp","nameProp","variableIdProp","selectedIds","showManipulationScale","selectedMap","syncMap","selectedIdsChanged","selectedVariableIdsChanged","variableId","vIdx","manageUserUrl","micrositeUrl","publicPageCompanyLogo","isPublicActivationPage","checkIfPublicActivationPage","setPublicCompanyLogo","currentUrl","currentHash","NavBar","QuestionHistoryModal","searchText","filteredList","selectedItems","filterList","updateSelectedItems","searchTextChanged","incompatibility","QuestionaryIncompatibility","QuestionarySelectorCustomElement","RestoreConfirmation","personService","banIds","auxItems","itemAvailable","checkAmount","selectedCurrent","banCheck","report","getSelectionLabel","selectionLabel","selectParameter","banGeneral","parameterCurrent","OneOrTwoPeople","TwoPeople","ThreePeople","CompareToPerson","compareToPersonId","People","Leader","selectedAmount","SelectPeopleList","showReturnHome","updateShowReturnHome","pushable","sidebar","sidebarPin","sidebarToggler","SideBar","SingleChoiceListResponseOptions","closeModal","SuccessRegistrationModal","TalentExportConfirmation","isViewWallet","planIsViewWallet","walletByUserId","generalWallet","ViewWallet","updateNavigationMenu","isModuleTitle","mapNavigation","navigationMenu","mapNavigationItem","updateNavModels","instructionDepth","resetDepth","MainChildRouter","salesIq","surveyZoho","imageAddr","downloadSize","newsNumber","urlServiceEvaluation","companyJobsUrl","salesIqSettings","surveyZohoSettings","isVisibleInCommonSettingPage","openZohoSurveyModal","getNewsByCurrentCompany","networkInfo","isClassActivate","showNetworkResults","speedBps","speedKbps","bitsLoaded","MainHome","ReportParameter","reportService","sumWeight","reportId","sum","ReportWeightsModal","updateTotal","reportactivation","reportActivation","isAvailable","SelectActivationList","companyDisc","SelectAdjustmentList","formattedDate","Observers","TwoObservers","selectedPerformance","selectedPotential","SelectObservationList","SelectObserverList","organizationService","CompareToOrganization","compateToOrganizationId","SelectOrganizationList","SelectPersonList","activationQuestionaryService","isDiscType","activationType","Position","applicationDate","SelectPersonQuestionaryList","isReferencePosition","ZeroOrOnePosition","Positions","CompareToPosition","compareToPositionId","changeList","isCompany","SelectPositionList","teamPersonService","teamParameters","teamRefresh","PersonIds","teamDatabind","newReportQuestionaryTeam","activationQuestionaryCompetences","reportQuestionaryTeam","isTeam","SelectQuestionaryTeamList","teamService","CompareToTeam","compareToTeamId","SelectTeamList","ReportHome","isReport","showActivationParameter","companySheets","calculatedPrice","reportTemplates","organization","team","filterReportTemplates","searchReportTemplates","OnChangeReportFilter","reportFilter","changeReport","showParameters","hideParameters","reportTemplate","personActivationQuestionaries","setParameters","activationParameterIndex","Activation","questionaryParameterIndex","activationQuestionaryStatus","Finalized","activationQuestionaryItem","removeQuestionaryById","validQuestionaries","calculateTemplatePrice","par","parameter","sheetSelect","questioesDisc","questioesNoDisc","numberQuestionaries","processActivationQuestionaries","processObserverActivations","isThereDisc","activationQuestionary","QuestionaryTeam","testReportsUrl","filterByQuestionary","activationQuestionaryList","filterByDISC","actQuestionarySelected","activationQuestionarie","activation","newReportActivation","buildNewReportActivation","finalizedActivationQuestionaries","generalQuestionariesActivation","filteredQuestionaryActivation","itemActQuestionary","observerActivationId","newObserverReportActivation","templateSheet","companySheet","cs","reportChangeSequencer","isChangingReport","reportChangePromise","hasLowBalance","showHasLowBalanceModal","PersonId","PositionId","OrganizationId","TeamId","talentsQuantity","viewReport","viewWeights","doChangeReport","ReportListChildRouter","selectedSheetIds","SelectSheetModal","TestReportChildRouter","archiveService","TeamList","ArchiveListChildRouter","bulkActivationService","avgTimeModular","questionaryFilter","searchQuestionary","selectedQuestionaries","qty","avg","hasCompetences","hasEngineersTest","hasModular","csvExampleUrl","isEngineersTests","isCareerPath","getQuestionaryGroups","questionaryGroups","getReportTemplates","searchQuestionaryGroup","searchReport","changeBattery","qg","thematicAssociates","calculateAvgTime","isNewTest","validateEngineersTests","validateQuestionaryCareerPath","cleanCompanyCompetences","questionaryGroup","isValidActivationVideoInterview","isInvalid","changeQuestionary","testQuestionary","nonModular","nonModularAvg","modularAvg","hasCompetencesFilter","resolveQuestionariesForReportTemplate","activationAssociate","persistedIds","selectedFromPersisted","qCareerPaths","CareerPath","changeTag","OnChangeQuestionary","OnChangeQuestionaryGroup","questionaryGroupFilter","OnChangeReport","personMode","Direct","invitationExpireDate","discCount","selectedTests","createQuestionaryGroup","createReportTemplate","existQuestionary","BulkActivationModal","isObservation","isEmailActivation","addPeopleFileName","isSendingReminder","parentSettings","exportItems","micrositeUrlElement","sendIndividualReminder","estimatedMinutes","saveBase64File","byteCharacters","byteNumbers","setAddPeopleFile","addPeopleFiledata","addModel","BulkActivationItemList","BulkActivationItemListChildRouter","BulkActivationList","BulkActivationListChildRouter","bulkDownloadService","showDisableParameter","reportToPeople","bulkActivation","qIndex","BulkActivationConverted","BulkDownloadConfirmationModal","selectedQuestionaryIds","parPeople","BulkDownloadCreate","BulkDownloadList","BulkDownloadListChildRouter","BulkObservationChildRouter","observationQuestionaries","getQuestionaries","BulkObservationCreate","BulkResultsExportChildRouter","questionaryByCompanyService","bulkResultsExportService","generalQuestionaries","requestSequence","UsersIds","updateQuestionaries","ResultsExportQuestionaryByCompany","currentRequest","ResultsExportQuestionary","onQuestionaryTypeChanged","selectedUser","setEvaluators","resultsExportQuestionary","QuestionaryByCompany","questionaryByCompanyId","usersIds","BulkResultsExportCreate","BulkResultsExportList","TestHome","HomologationChildRouter","resultDiscNaturalList","resultDiscAdaptedList","getDiscData","personActivationType","Homologation","whoCanSeeReport","OnlyOrganization","getDiscDataFromActivation","Natural","Adapted","lastDiscApplicationDate","saveActivation","resultDiscList","discType","allPersonDisc","HomologationEdit","HomologationList","HomologationModal","ObservationChildRouter","getPerson","ObservationEdit","ObservationEditModal","ObservationList","ObserverBulkActivationModal","personObserverService","totalWeight","ObserverEditModal","personDemographicDataService","getdemographicData","getPersonDemographicData","confirmMoreActivations","getAgain","demographicData","createActivation","Normal","ObserverList","ObserverListChildRouter","organizationDiscList","getOrganizationDisc","allOrgDisc","orgDiscList","OrganizationDiscEdit","OrganizationEvaluatorBulkActivationModal","OrganizationEvaluatorEditModal","organizationEvaluatorService","organizationActivationType","Concerted","OrganizationEvaluatorList","OrganizationEvaluatorListChildRouter","OrganizationChildRouter","orgDiscQuestionaries","Individual","OrganizationEdit","sendFilteredReminder","OrganizationList","OrganizationListChildRouter","PeopleCommentEditModal","commentService","PeopleCommentList","selectedCompetence","getByActivationQuestionary","CompetenceActivatedModal","newReportCompetence","companyCompetenceId","initValue","reportCompetence","indexCompetencesQuestionary","CompetenceActivatedWeightModal","CompetenceActivationSelector","PersonDemographicData","professions","maxAge","tempModel","isValidAge","birthday","filterRegionAndEducation","age","PersonDemographicDataModal","historyEmailService","msgId","PeopleHistoryEmailDetailsModal","PeopleHistoryEmailList","setDefaultDateRange","MAX_RANGE_DAYS","viewDetailsMessages","hasTalentsPrice","validateHasTalents","changeReportParameter","PeopleQuestionaryActivationModal","defaultColorsReportsService","questionarySheetService","colorsQuestionaryPrices","ActivationQuestionaryStatus","requalify","hasColorsReport","getTalentsPrice","generateColorsReport","principalSheet","colorsTemplate","templateDetail","existingReport","PeopleQuestionaryList","personResumeService","PeopleResumeEdit","PersonTags","PersonTagsModal","TestControlStatusId","testControlPerson","allowTestControl","logFileUrl","pictureUrl","openImageGallery","images","validImages","adjustedIndex","PeopleTestControlEdit","currentImageIndex","totalImages","centerHorizontally","centerVertically","updateCurrentImage","currentImage","nextImage","previousImage","selectImage","onPageChange","goToFirst","goToLast","TestControlImageGalleryModal","PeopleVideoInterviewChildRouter","responseQuestionaryVideoInterviewService","cryptoService","testQuestionService","generalTopic","selectedOption","hasListActivation","noActivation","vValidate","imagenHide","pActivationQuestionaryId","pActivationId","pResponseQuestionaryId","getNewToken","Question1","viewResponse","topic","responseRatedQuestionModel","selectResponse","loadQuestions","pQuestionaryId","responseRatedQuestionary","responseRatedQuestions","resetSelectedResponse","selectedResponse","idPregunta","pTopic","answer","videoSrc","openResponseText","ratedAnswer","exampleFormControlTextarea1","selectRatedOption","selectedOptionId","sendQualification","pStamp","shareVideoInterview","destinationEmail","notManualUrl","PeopleVideoInterviewEdit","RequestQualificationVideoInterviewModal","AgreementExpirationModal","quantity","FilteredReminderConfirmationModal","PersonActivationConfirmationModal","wootric","sessionStorageModel","Linkedin","indicativeCountry","phone","checkIsThereSessionStageObject","checkUndefined","handleChange","concatenatePhone","country","phoneCode","emailExists","saveReport","PersonActivationCreate","urlParamService","hasTestControlInfo","PersonChildRouter","personToDelete","PersonDeleteModal","showHomologations","showObservations","routerConfig","getActivations","setShowHomologationList","setShowObservationList","createObservation","PersonEdit","EmailExists","companyTestPlanService","parametersAgreemnt","planByCompanyId","showExpirationWarning","hasSeen","showAgreementExpirationModal","validateIsResultExport","predictor","Predictor","predictorTalents","toPredictor","PersonList","PersonListChildRouter","directLoginUrl","PersonLoginInfoModal","PersonPredictorConfirmationModal","publicPersonService","activationToken","isTokenValid","isLoadingToken","tokenErrorMessage","canSave","isRecaptchaLoaded","recaptchaWidgetId","recaptchaSiteKey","validateActivationToken","loadRecaptcha","companyLogoUrl","showSuccessModal","redirectToMicrosite","grecaptcha","onRecaptchaLoad","renderRecaptchaWidget","siteKey","resetRecaptcha","PublicPersonForm","positionCompetenceService","directCompetenceValue","positionCompetenceId","getCompetences","fillCompetenceData","changeSelectedCompetence","ittm","dc","competence","cpt","selectedCompetenceName","competenceDescription","PositionCompetenceEditModal","complementaryName","PositionCompetenceList","PositionCompetenceListChildRouter","DISC_LEVEL_LOW_MAX","DISC_LEVEL_MEDIUM_MAX","PositionEvaluatorBulkActivationModal","PositionEvaluatorEditModal","positionEvaluatorService","PositionEvaluatorList","PositionEvaluatorListChildRouter","PositionChildRouter","getEducationalLevelName","educationalLevelName","PositionEdit","positionExportByCompanyService","refreshStatus","stopPolling","startPolling","exportPositions","downloadFile","pollingHandle","PositionExportCard","PositionList","PositionListChildRouter","tagManagmentService","modal","tagNewName","tagCount","personCount","positionCount","teamCount","organizationCount","bulkActivationCount","bulkResultCount","bulkDownloadCount","isUpdate","editOrDelete","tagInfo","oldTagName","TagsList","TagsListChildRouter","TagsModal","teamActivation","modelTeam","TeamActivationCreate","teamActivationService","peopleParameters","getMorePeople","peopleUxDatatable","TeamActivationList","TeamActivationListChildRouter","teamEvaluatorService","modelActivation","TeamEvaluatorList","TeamvaluatorListChildRouter","teamPersonActivationService","TeamPersonActivationListModal","TeamPersonDiscActivationModal","peopleToInclude","peopleToExclude","peopleRefresh","peopleDatabind","addItem","teamPerson","addWithCustomActivation","addWithPersonActivation","TeamPersonList","TeamPersonListChildRouter","TeamChildRouter","TeamEdit","TeamListChildRouter","TestChildRouter","Operator","AgreementDuration","CompanyType","CorporateIdType","Notify","archetypeType","CompanyOrganizationType","PasswordChangingPeriod","LabelModule","MessagePeriod","DemoLimitTime","OtherPlanItemType","SelectionPlanComponentType","TalentChargeFrequency","VisualizationType","GameTest","archiveType","TestControlStatus","Difficulty","ObserverRole","QuestionaryWay","PositionLevel","PositionQuestionaryType"],"mappings":"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OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,gBAAiB,IACjB,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,YAAa,IACb,eAAgB,IAChB,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,QAAS,IACT,WAAY,IACZ,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,QAAS,IACT,WAAY,IACZ,OAAQ,IACR,UAAW,IACX,QAAS,IACT,WAAY,IACZ,QAAS,IACT,aAAc,IACd,gBAAiB,IACjB,WAAY,IACZ,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,YAAa,IACb,eAAgB,IAChB,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,gBAAiB,IACjB,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,KAIf,SAASo0M,EAAeC,GACvB,IAAIz8L,EAAK08L,EAAsBD,GAC/B,OAAOx9M,EAAoB+gB,GAE5B,SAAS08L,EAAsBD,GAC9B,IAAIx9M,EAAoB6C,EAAEsG,EAAKq0M,GAAM,CACpC,IAAIp9M,EAAI,IAAImB,MAAM,uBAAyBi8M,EAAM,KAEjD,MADAp9M,EAAEu4D,KAAO,mBACHv4D,EAEP,OAAO+I,EAAIq0M,GAEZD,EAAexkM,KAAO,WACrB,OAAO1Z,OAAO0Z,KAAK5P,IAEpBo0M,EAAe98M,QAAUg9M,EACzBv9M,EAAOD,QAAUs9M,EACjBA,EAAex8L,GAAK,K,oBC3QpB;;;;;CAMC,SAAU+7D,EAAM/vC,GAChB,aAGkC7sC,EAAOD,QACxCC,EAAOD,QAAU8sC,EAAQ,EAAQ,MAEjC,EAAO,CAAC,YAAkB,0BAAP,EAAF,GAAS,gCAP5B,CAWEvoC,GAAM,SAAU2pJ,GACjB,aAQA,IAKCuvD,EAJAC,EAAQ,GACRC,EAAQ,GACRzlL,EAAQ,GACR0lL,EAAU,GAGN1vD,GAAoC,iBAAnBA,EAAOviH,SAC5BkyK,EAAS,gGAGV,IAAIC,EAAgB5vD,EAAOviH,QAAQ9b,MAAM,KACxCkuL,GAASD,EAAc,GACvBE,GAASF,EAAc,GAWxB,SAASG,EAAc5uF,GACtB,OAAIA,EAAW,GACPA,EAAW,GACRA,EAAW,GACdA,EAAW,GAEZA,EAAW,GAGnB,SAAS6uF,EAAaljL,GACrB,IAAI/7B,EAAI,EACP0hC,EAAQ3F,EAAOnL,MAAM,KACrBsuL,EAAQx9K,EAAM,GACdy9K,EAAaz9K,EAAM,IAAM,GACzBopB,EAAa,EAEb/hB,EAAM,EACN1H,EAAO,EASR,IAN6B,KAAzBtF,EAAO0nB,WAAW,KACrBzjD,EAAI,EACJqhC,GAAQ,GAIDrhC,EAAIk/M,EAAMh/M,OAAQF,IAEzB+oC,EAAM,GAAKA,EADLi2K,EAAcE,EAAMz7J,WAAWzjD,IAKtC,IAAKA,EAAI,EAAGA,EAAIm/M,EAAWj/M,OAAQF,IAClC8qD,GAA0B,GAE1B/hB,GADMi2K,EAAcG,EAAW17J,WAAWzjD,IAC7B8qD,EAGd,OAAO/hB,EAAM1H,EAGd,SAAS+9K,EAAYxyL,GACpB,IAAK,IAAI5sB,EAAI,EAAGA,EAAI4sB,EAAM1sB,OAAQF,IACjC4sB,EAAM5sB,GAAKi/M,EAAaryL,EAAM5sB,IAYhC,SAASq/M,EAAY11K,EAAQu9G,GAC5B,IAAclnJ,EAAV+oC,EAAM,GAEV,IAAK/oC,EAAI,EAAGA,EAAIknJ,EAAQhnJ,OAAQF,IAC/B+oC,EAAI/oC,GAAK2pC,EAAOu9G,EAAQlnJ,IAGzB,OAAO+oC,EAGR,SAASu2K,EAAQvjL,GAChB,IAAIp8B,EAAOo8B,EAAOnL,MAAM,KACvB2uL,EAAU5/M,EAAK,GAAGixB,MAAM,KACxBs2H,EAAUvnJ,EAAK,GAAGixB,MAAM,IACxB4uL,EAAU7/M,EAAK,GAAGixB,MAAM,KAQzB,OANAwuL,EAAWG,GACXH,EAAWl4D,GACXk4D,EAAWI,GA1BZ,SAAqB5yL,EAAO1sB,GAC3B,IAAK,IAAIF,EAAI,EAAGA,EAAIE,EAAQF,IAC3B4sB,EAAM5sB,GAAKyoB,KAAKyY,OAAOtU,EAAM5sB,EAAI,IAAM,GAAiB,IAAX4sB,EAAM5sB,IAGpD4sB,EAAM1sB,EAAS,GAAKu/M,IAuBpBC,CAAWF,EAAQt4D,EAAQhnJ,QAEpB,CACN8C,KAAarD,EAAK,GAClBggN,MAAaN,EAAW1/M,EAAK,GAAGixB,MAAM,KAAMs2H,GAC5Cq4D,QAAaF,EAAWE,EAASr4D,GACjCs4D,OAAaA,EACbI,WAAuB,EAAVjgN,EAAK,IAQpB,SAASkgN,EAAMC,GACVA,GACHx6M,KAAKy6M,KAAKT,EAAOQ,IAqEnB,SAASE,EAASC,GACjB,IAAIC,EAAaD,EAAGE,eAChBrnL,EAAOonL,EAAWrzL,MAAM,gBAaf,SARZiM,EAJGA,GAAQA,EAAK,IAGhBA,EAAOA,EAAK,GAAGjM,MAAM,WACPiM,EAAKxrB,KAAK,SAAMpK,GAI9B41B,EAAOonL,EAAWrzL,MAAM,gBACViM,EAAK,QAAK51B,KAIxB41B,OAAO51B,GAGRoC,KAAK26M,IAAMA,EACX36M,KAAKwzB,KAAOA,EACZxzB,KAAK67B,OAAS8+K,EAAGh+K,oBAGlB,SAASm+K,EAAUr5K,GAClBzhC,KAAKyhC,KAAOA,EACZzhC,KAAK+6M,YAAc,EACnB/6M,KAAKg7M,UAAY,EAUlB,SAASC,EAAW1uI,EAAKD,GAGxB,IAFA,IAAI4uI,EAAK5+K,EAEDA,EAAyC,MAAhCgwC,EAAKquI,GAAKpuI,EAAIouI,IAAM,KAAO,KAC3CO,EAAM,IAAIR,EAAS,IAAIrhM,KAAKkzD,EAAIouI,GAAKr+K,KAC7BT,SAAW0wC,EAAI1wC,OACtB0wC,EAAM2uI,EAEN5uI,EAAO4uI,EAIT,OAAO3uI,EA2BR,SAAS4uI,EAAgBzpM,EAAGC,GAC3B,OAAID,EAAEqpM,cAAgBppM,EAAEopM,YAChBrpM,EAAEqpM,YAAcppM,EAAEopM,YAEtBrpM,EAAEspM,YAAcrpM,EAAEqpM,UACdtpM,EAAEspM,UAAYrpM,EAAEqpM,UAEjBrpM,EAAE8vB,KAAK64K,WAAa5oM,EAAE+vB,KAAK64K,WAGnC,SAASc,EAAc19M,EAAMu8M,GAC5B,IAAIv/M,EAAGmhC,EAEP,IADAi+K,EAAWG,GACNv/M,EAAI,EAAGA,EAAIu/M,EAAQr/M,OAAQF,IAC/BmhC,EAASo+K,EAAQv/M,GACjB2+M,EAAQx9K,GAAUw9K,EAAQx9K,IAAW,GACrCw9K,EAAQx9K,GAAQn+B,IAAQ,EAI1B,SAAS29M,EAAuBpB,GAC/B,IAGCv/M,EAAGk5B,EAAG0nL,EAHHC,EAAgBtB,EAAQr/M,OAC3B4gN,EAAkB,GAClB/3K,EAAM,GAGP,IAAK/oC,EAAI,EAAGA,EAAI6gN,EAAe7gN,IAE9B,IAAKk5B,KADL0nL,EAAgBjC,EAAQY,EAAQv/M,GAAGmhC,SAAW,GAEzCy/K,EAAcvgN,eAAe64B,KAChC4nL,EAAgB5nL,IAAK,GAKxB,IAAKl5B,KAAK8gN,EACLA,EAAgBzgN,eAAeL,IAClC+oC,EAAIvoC,KAAKy4B,EAAMj5B,IAIjB,OAAO+oC,EAGR,SAASg4K,IAGR,IACC,IAAIC,EAAWC,KAAKC,iBAAiBC,kBAAkBC,SACvD,GAAIJ,GAAYA,EAAS9gN,OAAS,EAAG,CACpC,IAAI8C,EAAOi2B,EAAMooL,EAAcL,IAC/B,GAAIh+M,EACH,OAAOA,EAER47M,EAAS,yBAA2BoC,EAAW,2DAE/C,MAAO9/M,IAIT,IAICogN,EAAWthN,EAAGk5B,EAJXqmL,EApFL,WACC,IAGCgC,EAAQh5M,EAAMvI,EAHXwhN,GAAY,IAAI7iM,MAAO4T,cAAgB,EAC1C2hD,EAAO,IAAI8rI,EAAS,IAAIrhM,KAAK6iM,EAAW,EAAG,IAC3CjC,EAAU,CAACrrI,GAGZ,IAAKl0E,EAAI,EAAGA,EAAI,GAAIA,KACnBuI,EAAO,IAAIy3M,EAAS,IAAIrhM,KAAK6iM,EAAWxhN,EAAG,KAClCmhC,SAAW+yC,EAAK/yC,SACxBogL,EAAShB,EAAWrsI,EAAM3rE,GAC1Bg3M,EAAQ/+M,KAAK+gN,GACbhC,EAAQ/+M,KAAK,IAAIw/M,EAAS,IAAIrhM,KAAK4iM,EAAOtB,GAAK,QAEhD/rI,EAAO3rE,EAGR,IAAKvI,EAAI,EAAGA,EAAI,EAAGA,IAClBu/M,EAAQ/+M,KAAK,IAAIw/M,EAAS,IAAIrhM,KAAK6iM,EAAYxhN,EAAG,EAAG,KACrDu/M,EAAQ/+M,KAAK,IAAIw/M,EAAS,IAAIrhM,KAAK6iM,EAAYxhN,EAAG,EAAG,KAGtD,OAAOu/M,EA+DOkC,GACbZ,EAAgBtB,EAAQr/M,OACxBy+M,EAAUgC,EAAsBpB,GAChCmC,EAAa,GAGd,IAAK1hN,EAAI,EAAGA,EAAI2+M,EAAQz+M,OAAQF,IAAK,CAEpC,IADAshN,EAAY,IAAIlB,EAAUuB,EAAQhD,EAAQ3+M,IAAK6gN,GAC1C3nL,EAAI,EAAGA,EAAI2nL,EAAe3nL,IAC9BooL,EAAUM,cAAcrC,EAAQrmL,IAEjCwoL,EAAWlhN,KAAK8gN,GAKjB,OAFAI,EAAW3qM,KAAK0pM,GAETiB,EAAWxhN,OAAS,EAAIwhN,EAAW,GAAG36K,KAAK/jC,UAAOE,EAc1D,SAASm+M,EAAer+M,GACvB,OAAQA,GAAQ,IAAI6d,cAAcxU,QAAQ,MAAO,KAGlD,SAASw1M,EAASC,GACjB,IAAI9hN,EAAGgD,EAAM4tB,EAAOmxL,EAMpB,IAJsB,iBAAXD,IACVA,EAAS,CAACA,IAGN9hN,EAAI,EAAGA,EAAI8hN,EAAO5hN,OAAQF,IAG9B+hN,EAAaV,EADbr+M,GADA4tB,EAAQkxL,EAAO9hN,GAAG4wB,MAAM,MACX,IAEb6tL,EAAMsD,GAAcD,EAAO9hN,GAC3Bi5B,EAAM8oL,GAAc/+M,EACpB09M,EAAaqB,EAAYnxL,EAAM,GAAGA,MAAM,MAI1C,SAAS+wL,EAAS3+M,EAAMssF,GAEvBtsF,EAAOq+M,EAAcr+M,GAErB,IACIukE,EADAxgC,EAAO03K,EAAMz7M,GAGjB,OAAI+jC,aAAgB84K,EACZ94K,EAGY,iBAATA,GACVA,EAAO,IAAI84K,EAAK94K,GAChB03K,EAAMz7M,GAAQ+jC,EACPA,GAIJ23K,EAAM17M,IAASssF,IAAWqyH,IAAYp6I,EAAOo6I,EAAQjD,EAAM17M,GAAO2+M,MACrE56K,EAAO03K,EAAMz7M,GAAQ,IAAI68M,GACpBE,KAAKx4I,GACVxgC,EAAK/jC,KAAOi2B,EAAMj2B,GACX+jC,GAGD,KAeR,SAASi7K,EAASt3L,GACjB,IAAI1qB,EAAG0b,EAAOumM,EAASC,EAMvB,IAJuB,iBAAZx3L,IACVA,EAAU,CAACA,IAGP1qB,EAAI,EAAGA,EAAI0qB,EAAQxqB,OAAQF,IAG/BiiN,EAAUZ,GAFV3lM,EAAQgP,EAAQ1qB,GAAG4wB,MAAM,MAEK,IAC9BsxL,EAAUb,EAAc3lM,EAAM,IAE9BgjM,EAAMuD,GAAWC,EACjBjpL,EAAMgpL,GAAWvmM,EAAM,GAEvBgjM,EAAMwD,GAAWD,EACjBhpL,EAAMipL,GAAWxmM,EAAM,GAkBzB,SAASymM,EAAa5+M,GACrB,IAAI6+M,EAA4B,MAAT7+M,EAAEskB,IAAuB,MAATtkB,EAAEskB,GACzC,SAAUtkB,EAAE+rB,SAAkBpsB,IAAXK,EAAEwkB,MAAwBq6L,GAG9C,SAASxD,EAAU77M,GACK,oBAAZgC,SAAoD,mBAAlBA,QAAQ3C,OACpD2C,QAAQ3C,MAAMW,GAQhB,SAAS46E,EAAIt5D,GACZ,IAAI0F,EAAO/jB,MAAM5F,UAAU+E,MAAM7E,KAAK8G,UAAW,GAAI,GACpDpE,EAAOoE,UAAUA,UAAUlH,OAAS,GACpC6mC,EAAO46K,EAAQ3+M,GACf+lC,EAAOkmH,EAAO3pI,IAAI/b,MAAM,KAAMwgB,GAQ/B,OANIgd,IAASkoH,EAAO3mI,SAASjE,IAAU89L,EAAYp5K,IAClDA,EAAI3yB,IAAI2wB,EAAKtwB,MAAMsyB,GAAM,WAG1BA,EAAI40C,GAAG36E,GAEA+lC,GA1cJ+1K,EAAQ,GAAgB,IAAVA,GAAeC,EAAQ,IACxCH,EAAS,wEAA0E3vD,EAAOviH,QAAU,sBAuGrGmzK,EAAKz/M,UAAY,CAChB2/M,KAAO,SAAUsC,GAChB/8M,KAAKtC,KAAaq/M,EAASr/M,KAC3BsC,KAAKq6M,MAAa0C,EAAS1C,MAC3Br6M,KAAKk6M,OAAa6C,EAAS7C,OAC3Bl6M,KAAKi6M,QAAa8C,EAAS9C,QAC3Bj6M,KAAKs6M,WAAayC,EAASzC,YAG5BrsI,OAAS,SAAUjkB,GAClB,IAECtvD,EAFG8C,GAAUwsD,EACbkwJ,EAASl6M,KAAKk6M,OAGf,IAAKx/M,EAAI,EAAGA,EAAIw/M,EAAOt/M,OAAQF,IAC9B,GAAI8C,EAAS08M,EAAOx/M,GACnB,OAAOA,GAKVyW,MAAQ,SAAU64C,GACjB,IAICnuB,EAAQmhL,EAAYC,EAAYviN,EAJ7B8C,GAAWwsD,EACdiwJ,EAAUj6M,KAAKi6M,QACfC,EAAUl6M,KAAKk6M,OACf1zL,EAAU0zL,EAAOt/M,OAAS,EAG3B,IAAKF,EAAI,EAAGA,EAAI8rB,EAAK9rB,IAWpB,GAVAmhC,EAAao+K,EAAQv/M,GACrBsiN,EAAa/C,EAAQv/M,EAAI,GACzBuiN,EAAahD,EAAQv/M,EAAIA,EAAI,EAAIA,GAE7BmhC,EAASmhL,GAAc3kI,EAAG6kI,qBAC7BrhL,EAASmhL,EACCnhL,EAASohL,GAAc5kI,EAAG8kI,qBACpCthL,EAASohL,GAGNz/M,EAAS08M,EAAOx/M,GAAe,IAATmhC,EACzB,OAAOo+K,EAAQv/M,GAIjB,OAAOu/M,EAAQzzL,IAGhBgN,KAAO,SAAUhM,GAChB,OAAOxnB,KAAKq6M,MAAMr6M,KAAKiuE,OAAOzmD,KAG/BqU,OAAS,SAAUrU,GAElB,OADA8xL,EAAS,8DACFt5M,KAAKi6M,QAAQj6M,KAAKiuE,OAAOzmD,KAGjCsU,UAAY,SAAUtU,GACrB,OAAOxnB,KAAKi6M,QAAQj6M,KAAKiuE,OAAOzmD,MAsClCszL,EAAUhgN,UAAUwhN,cAAgB,SAAUc,GAC7Cp9M,KAAK+6M,aAAe53L,KAAKa,IAAIhkB,KAAKyhC,KAAK3F,UAAUshL,EAASzC,IAAMyC,EAASvhL,QACrE77B,KAAKyhC,KAAKjO,KAAK4pL,EAASzC,IAAI5zM,QAAQ,UAAW,MAAQq2M,EAAS5pL,MACnExzB,KAAKg7M,aAmQP3iI,EAAGjxC,QA7dW,SA8ddixC,EAAGglI,YAAe,GAClBhlI,EAAGilI,OAAenE,EAClB9gI,EAAGklI,OAAenE,EAClB/gI,EAAGonE,OAAe9rH,EAClB0kD,EAAGvnE,IAAeyrM,EAClBlkI,EAAGpW,KAAey6I,EAClBrkI,EAAG3iB,KAnDH,SAAmBr7D,GAClBkiN,EAAQliN,EAAK8+M,OACbuD,EAAQriN,EAAK++M,OACb/gI,EAAGglI,YAAchjN,EAAK+sC,SAiDvBixC,EAAG52C,KAAe46K,EAClBhkI,EAAGmlI,WA/CH,SAASA,EAAY9/M,GAKpB,OAJK8/M,EAAWC,eACfD,EAAWC,cAAe,EACzBnE,EAAS,yBAA2B57M,EAAO,uDAAyDA,EAAO,SAEpG2+M,EAAQ3+M,IA2ClB26E,EAAGqlI,MAnJH,SAAgBC,GAIf,OAHKzE,IAAeyE,IACnBzE,EAAcuC,KAERvC,GAgJR7gI,EAAG1kD,MAxFH,WACC,IAAIj5B,EAAG+oC,EAAM,GAEb,IAAK/oC,KAAKi5B,EACLA,EAAM54B,eAAeL,KAAOy+M,EAAMz+M,IAAMy+M,EAAMC,EAAM1+M,MAAQi5B,EAAMj5B,IACrE+oC,EAAIvoC,KAAKy4B,EAAMj5B,IAIjB,OAAO+oC,EAAIhyB,QAgFZ4mE,EAAGkiI,KAAeA,EAClBliI,EAAG2hI,OAAeA,EAClB3hI,EAAGshI,aAAeA,EAClBthI,EAAGwkI,YAAeA,EAClBxkI,EAAG8kI,oBAAuB,EAC1B9kI,EAAG6kI,sBAAuB,EAM1B,IAqDwB37H,EArDpBjiE,EAAKqqI,EAAOrqI,GA8ChB,SAASs+L,EAAUr8H,GAClB,OAAO,WACN,OAAIvhF,KAAK69M,GAAa79M,KAAK69M,GAAGrqL,KAAKxzB,MAC5BuhF,EAAIvmF,KAAKgF,OA/ClB2pJ,EAAOtxE,GAAKA,EAEZsxE,EAAOm0D,YAAc,KAErBn0D,EAAO5mI,aAAe,SAAUyE,EAAKiD,GACpC,IACCoR,EADG4F,EAAOkoH,EAAOm0D,iBAGHlgN,IAAX4pB,EAAIq2L,KACHp8K,GAAQo7K,EAAYr1L,KAASA,EAAI9E,SACpC8E,EAAIjG,GAAKooI,EAAO3pI,IAAIwH,EAAIwC,IAAIzI,GAC5BiG,EAAIxH,MAAMlP,IAAI2wB,EAAKtwB,MAAMqW,GAAM,YAEhCA,EAAIq2L,GAAKp8K,GAENja,EAAIq2L,KACPhiL,EAASrU,EAAIq2L,GAAG/hL,UAAUtU,GACtBrE,KAAKa,IAAI6X,GAAU,KACtBA,GAAkB,SAEGj+B,IAAlB4pB,EAAIsU,UACPtU,EAAIsU,WAAWD,EAAQpR,GAEvBjD,EAAIia,KAAK5F,EAAQpR,KAKpBnL,EAAG+4D,GAAK,SAAU36E,EAAM+sB,GACvB,GAAI/sB,EAAM,CACT,GAAoB,iBAATA,EACV,MAAM,IAAIX,MAAM,wCAA0CW,EAAO,YAAcA,EAAO,KAQvF,OANAsC,KAAK69M,GAAKxB,EAAQ3+M,GACdsC,KAAK69M,GACRl0D,EAAO5mI,aAAa/iB,KAAMyqB,GAE1B6uL,EAAS,mCAAqC57M,EAAO,4DAE/CsC,KAER,GAAIA,KAAK69M,GAAM,OAAO79M,KAAK69M,GAAGngN,MAiB/B4hB,EAAG0jB,SAAW46K,EAASt+L,EAAG0jB,UAC1B1jB,EAAGyjB,SAAW66K,EAASt+L,EAAGyjB,UAC1BzjB,EAAGU,KATqBuhE,EASIjiE,EAAGU,IARvB,WAEN,OADAhgB,KAAK69M,GAAK,KACHt8H,EAAIt9E,MAAMjE,KAAM8B,aAQzB6nJ,EAAOtxE,GAAG0lI,WAAa,SAASrgN,GAK/B,OAJI87M,EAAQ,GAAgB,IAAVA,GAAeC,EAAQ,IACxCH,EAAS,qFAAuF3vD,EAAOviH,QAAU,KAElHuiH,EAAOm0D,YAAcpgN,EAAO2+M,EAAQ3+M,GAAQ,KACrCisJ,GAIR,IAAI1nI,EAAmB0nI,EAAO1nI,iBAY9B,MAXyD,mBAArDpnB,OAAOC,UAAUkkB,SAAShkB,KAAKinB,IAElCA,EAAiB/mB,KAAK,MACtB+mB,EAAiB/mB,KAAK,OACZ+mB,IAEVA,EAAiB47L,GAAK,MAKhBl0D,M,qqq4BCnmBR;;;;;;GASQ,EAAO,CAAC,aAAmB,0BAAP,EAMpB,SAAU9mG,GAstBlB,IACYwE,EAptBJxE,EAAQsD,SAAS,SAAU,KAAM,CACjCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,MACVD,QAAS,MACTD,QAAS,OACTD,SAAU,QAEd39B,QAAS,SAAU9D,GASf,MAAO,IAEXgiC,SAAU,CACNC,OAAQ,QAQhBtC,EAAQsD,SAAS,SAAU,MAAO,CAC9BpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,IACVD,QAAS,KACTD,QAAS,KACTD,SAAU,KAEd39B,QAAS,SAAU9D,GACf,MAAO,KAEXgiC,SAAU,CACNC,OAAQ,OAOZtC,EAAQsD,SAAS,SAAU,KAAM,CACjCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,OACVD,QAAS,OACTD,QAAS,IACTD,SAAU,KAEd39B,QAAS,WACL,MAAO,KAEXk+B,SAAU,CACNC,OAAQ,QAOZtC,EAAQsD,SAAS,SAAU,QAAS,CACpCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,IACVD,QAAS,MACTD,QAAS,MACTD,SAAU,KAEd39B,QAAS,SAAU9D,GACf,MAAO,KAEXgiC,SAAU,CACNC,OAAQ,SAOZtC,EAAQsD,SAAS,SAAU,QAAS,CACpCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,IACVD,QAAS,IACTD,QAAS,IACTD,SAAU,KAEd39B,QAAS,SAAU9D,GACf,MAAO,KAEXgiC,SAAU,CACNC,OAAQ,SAOZtC,EAAQsD,SAAS,SAAU,KAAM,CACjCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,IACVD,QAAS,IACTD,QAAS,IACTD,SAAU,KAEd39B,QAAS,SAAU9D,GACf,MAAO,KAEXgiC,SAAU,CACNC,OAAQ,OAOZtC,EAAQsD,SAAS,SAAU,QAAS,CACpCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,IACVD,QAAS,IACTD,QAAS,IACTD,SAAU,KAEd39B,QAAS,SAAU9D,GACf,IAAIvR,EAAIuR,EAAS,GACjB,OAAmC,MAAvBA,EAAS,IAAM,IAAa,KAC7B,IAANvR,EAAW,KACL,IAANA,EAAW,KACL,IAANA,EAAW,KAAO,MAE3BuzC,SAAU,CACNC,OAAQ,OAOZtC,EAAQsD,SAAS,SAAU,QAAS,CACpCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,IACVD,QAAS,IACTD,QAAS,IACTD,SAAU,KAEd39B,QAAS,SAAU9D,GACf,IAAIvR,EAAIuR,EAAS,GACjB,OAAmC,MAAvBA,EAAS,IAAM,IAAa,KAC7B,IAANvR,EAAW,KACL,IAANA,EAAW,KACL,IAANA,EAAW,KAAO,MAE3BuzC,SAAU,CACNC,OAAQ,OAOZtC,EAAQsD,SAAS,SAAU,QAAS,CACpCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,IACVD,QAAS,IACTD,QAAS,IACTD,SAAU,KAEd39B,QAAS,SAAU9D,GACf,IAAIvR,EAAIuR,EAAS,GACjB,OAAmC,MAAvBA,EAAS,IAAM,IAAa,KAC7B,IAANvR,EAAW,KACD,IAANA,EAAW,KACD,IAANA,EAAW,KAAO,MAEnCuzC,SAAU,CACNC,OAAQ,OAOZtC,EAAQsD,SAAS,SAAU,QAAS,CACpCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,IACVD,QAAS,KACTD,QAAS,IACTD,SAAU,KAEd39B,QAAS,SAAU9D,GACf,IAAIvR,EAAIuR,EAAS,GACjB,OAAc,IAANvR,GAAiB,IAANA,EAAW,KACnB,IAANA,EAAW,KACD,IAANA,GAAiB,IAANA,EAAW,KACZ,IAANA,EAAW,KACD,IAANA,EAAW,KAAO,MAEvCuzC,SAAU,CACNC,OAAQ,OAOZtC,EAAQsD,SAAS,SAAU,KAAM,CACjCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,IACVD,QAAS,KACTD,QAAS,IACTD,SAAU,KAEd39B,QAAS,SAAU9D,GACf,IAAIvR,EAAIuR,EAAS,GACjB,OAAc,IAANvR,GAAiB,IAANA,EAAW,KACnB,IAANA,EAAW,KACL,IAANA,GAAiB,IAANA,EAAW,KAC9B,IAANA,EAAW,KACL,IAANA,EAAW,KAAO,MAEbuzC,SAAU,CACNC,OAAQ,OAOZtC,EAAQsD,SAAS,SAAU,KAAM,CACjCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,OACVD,QAAS,OACTD,QAAS,OACTD,SAAU,QAEd39B,QAAS,SAAU9D,GACf,MAAO,KAEXgiC,SAAU,CACNC,OAAQ,OAOZtC,EAAQsD,SAAS,SAAU,KAAM,CACjCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,IACVD,QAAS,IACTD,QAAS,IACTD,SAAU,KAEd39B,QAAS,SAAU9D,GACf,MAAO,KAEXgiC,SAAU,CACNC,OAAQ,OAOZtC,EAAQsD,SAAS,SAAU,QAAS,CACpCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,IACVD,QAAS,IACTD,QAAS,IACTD,SAAU,KAEd39B,QAAU,SAAU9D,GAChB,OAAkB,IAAXA,EAAe,KAAO,KAEjCgiC,SAAU,CACNC,OAAQ,OAOZtC,EAAQsD,SAAS,SAAU,QAAS,CACpCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,IACVD,QAAS,IACTD,QAAS,IACTD,SAAU,KAEd39B,QAAU,SAAU9D,GAChB,OAAkB,IAAXA,EAAe,KAAO,KAEjCgiC,SAAU,CACNC,OAAQ,SAOZtC,EAAQsD,SAAS,SAAU,KAAM,CACjCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,IACVD,QAAS,IACTD,QAAS,IACTD,SAAU,KAEd39B,QAAU,SAAU9D,GAChB,OAAkB,IAAXA,EAAe,KAAO,KAEjCgiC,SAAU,CACNC,OAAQ,OAOZtC,EAAQsD,SAAS,SAAU,KAAM,CACjCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,IACVD,QAAS,IACTD,QAAS,MACTD,SAAU,KAEd39B,QAAS,SAAU9D,GACf,MAAO,KAEXgiC,SAAU,CACNC,OAAQ,SAOZtC,EAAQsD,SAAS,SAAU,KAAM,CACjCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,OACVD,QAAS,MACTD,QAAS,IACTD,SAAU,KAEd39B,QAAS,SAAU9D,GACf,MAAO,KAEXgiC,SAAU,CACNC,OAAQ,OAOZtC,EAAQsD,SAAS,SAAU,KAAM,CACjCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,IACVD,QAAS,KACTD,QAAS,KACTD,SAAU,KAEd39B,QAAS,SAAU9D,GACf,MAAO,KAEXgiC,SAAU,CACNC,OAAQ,OAOZtC,EAAQsD,SAAS,SAAU,KAAM,CACjCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,UACVD,QAAS,SACTD,QAAS,UACTD,SAAU,WAEd39B,QAAS,SAAU9D,GACf,MAAO,KAEXgiC,SAAU,CACNC,OAAQ,OAOZtC,EAAQsD,SAAS,SAAU,QAAS,CACpCpB,WAAY,CACRT,UAAW,IACXxB,QAAW,KAEf4B,cAAe,CACXI,SAAW,IACXD,QAAW,OACXD,QAAW,OACXD,SAAW,QAEf39B,QAAU,SAAU9D,GAChB,IAAIu6J,EAAYv6J,EAAS,IAEzB,OAAmB,IAAXA,GAAgBu6J,GAAa,GAAmB,IAAdA,GAAmBA,GAAa,GAAM,MAAQ,MAE5Fv4H,SAAU,CACNC,OAAQ,QAOZtC,EAAQsD,SAAS,SAAU,QAAS,CACpCpB,WAAY,CACRT,UAAW,IACXxB,QAAW,KAEf4B,cAAe,CACXI,SAAW,IACXD,QAAW,MACXD,QAAW,MACXD,SAAW,OAEf39B,QAAU,SAAU9D,GAChB,IAAIu6J,EAAYv6J,EAAS,IACzB,OAAmB,IAAXA,GAAgBu6J,GAAa,GAAmB,IAAdA,GAAmBA,GAAa,GAAM,MAAQ,MAE5Fv4H,SAAU,CACNC,OAAQ,QAOZtC,EAAQsD,SAAS,SAAU,KAAM,CACjCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,IACVD,QAAS,IACTD,QAAS,IACTD,SAAU,KAEd39B,QAAS,SAAU9D,GACf,MAAO,KAEXgiC,SAAU,CACNC,OAAQ,QAOZtC,EAAQsD,SAAS,SAAU,KAAM,CACjCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,OACVD,QAAS,MACTD,QAAS,MACTD,SAAU,OAEd39B,QAAS,SAAU9D,GACf,MAAO,KAEXgiC,SAAU,CACNC,OAAQ,SAOZtC,EAAQsD,SAAS,SAAU,QAAS,CACpCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,MACVD,QAAS,UACTD,QAAS,IACTD,SAAU,KAEd39B,QAAS,SAAU9D,GACf,MAAO,KAEXgiC,SAAU,CACNC,OAAQ,QAOZtC,EAAQsD,SAAS,SAAU,QAAS,CACpCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,IACVD,QAAS,IACTD,QAAS,IACTD,SAAU,KAEd39B,QAAU,SAAU9D,GAChB,MAAO,KAEXgiC,SAAU,CACNC,OAAQ,OAOZtC,EAAQsD,SAAS,SAAU,QAAS,CACpCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,OACVD,QAAS,MACTD,QAAS,IACTD,SAAU,KAEd39B,QAAS,WAIL,MAAO,KAEXk+B,SAAU,CACNC,OAAQ,OAOZtC,EAAQsD,SAAS,SAAU,KAAM,CACjCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,OACVD,QAAS,OACTD,QAAS,QACTD,SAAU,SAEd39B,QAAS,WAIL,MAAO,KAEXk+B,SAAU,CACNC,OAAQ,UAOZtC,EAAQsD,SAAS,SAAU,KAAM,CACjCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,OACVD,QAAS,OACTD,QAAS,IACTD,SAAU,KAEd39B,QAAS,WACL,MAAO,KAEXk+B,SAAU,CACNC,OAAQ,OAOZtC,EAAQsD,SAAS,SAAU,KAAM,CACjCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,IACVD,QAAS,MACTD,QAAS,MACTD,SAAU,YAEd39B,QAAS,WACL,MAAO,KAEXk+B,SAAU,CACNC,OAAQ,OAShBtC,EAAQsD,SAAS,SAAU,KAAM,CAC7BpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,MACVD,QAAS,OACTD,QAAS,UACTD,SAAU,YAEd39B,QAAS,SAAU9D,GACf,MAAO,KAEXgiC,SAAU,CACNC,OAAQ,OAORkC,EAAW,CACXgP,EAAG,QACHI,EAAG,QACHG,EAAG,QACHwzF,GAAI,QACJC,GAAI,QAEJ/zF,EAAG,OACHK,EAAG,OACHa,GAAI,OACJ8yF,GAAI,OAEJ/zF,EAAG,QACHC,EAAG,QACH+zF,IAAK,QAEL7zF,EAAG,OAEHG,EAAG,QACHC,GAAI,QACJuyC,GAAI,QAEJmhD,GAAI,QACJC,GAAI,SAGZ5nG,EAAQsD,SAAS,SAAU,KAAM,CAC7BpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,MACVD,QAAS,SACTD,QAAS,SACTD,SAAU,WAEd39B,QAAS,SAAU9D,GACf,GAAe,IAAXA,EACA,MAAO,QAGX,IAAIxR,EAAIwR,EAAS,GAInB,OAAOmkC,EAAS31C,IAAM21C,EAHZnkC,EAAS,IAAMxR,IAGY21C,EAF3BnkC,GAAU,IAAM,IAAM,OAIlCgiC,SAAU,CACNC,OAAQ,OAOZtC,EAAQsD,SAAS,SAAU,QAAS,CACpCpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,OACVD,QAAS,MACTD,QAAS,OACTD,SAAU,OAEd39B,QAAS,WAIL,MAAO,IAEXk+B,SAAU,CACNC,OAAQ,OAQhBtC,EAAQsD,SAAS,SAAU,KAAM,CAC7BpB,WAAY,CACRT,UAAW,IACXxB,QAAS,KAEb4B,cAAe,CACXI,SAAU,SACVD,QAAS,SACTD,QAAS,MACTD,SAAU,aAEd39B,QAAS,WACL,MAAO,KAEXk+B,SAAU,CACNC,OAAQ,SA9zBe,gC,qBCTnC,oBAMUmzB;;;;;;AAAAA,EAUPt4E,KARK,EAAO,CAAE,YAER,KAFoB,EAAF,SAAWu4E,GAC1B,OAAOD,EAAiB,YAOlBxpC,EAP8BypC,EAQxC1+D,EAAI,WACJ,aACA,MAAO,CACH2+D,OAAQ,WACJ,QAAO,kBAAkBp2E,KAAK+2C,UAAUC,YAAaD,UAAUC,UAAU7xB,MAAM,4BAA4B,IAE/GkxD,cAAe,SAAStpB,GACpB,OAAQA,GAAO,QAAQ/sD,KAAK+sD,IAEhCupB,iBAAkB,SAASvpB,GACvB,OAAOA,EAAIpoD,QAAQ,sCAAuC,SAE9D4xE,SAAU,SAAS53E,GACf,MAAsB,iBAARA,GAElBoe,SAAU,SAASpe,GACf,MAAsB,iBAARA,GAElBJ,QAASmuC,EAAEnuC,QACXkkB,WAAYiqB,EAAEjqB,WACd5F,SAAU6vB,EAAE8pC,cACZ15D,YAAa,SAASne,GAClB,YAAsB,IAARA,GAElB83E,UAAW,SAAS93E,GAChB,SAAUA,GAAwB,IAAjBA,EAAI+3E,WAEzBC,SAAU,SAASh4E,GACf,OAAOA,aAAe+tC,GAE1BkqC,MAAO,SAAel5E,GAClB,OAAO+Z,EAAEqF,YAAYpf,IAAY,OAANA,EAAa,GAAKA,EAAI,IAErDX,KAAM2vC,EAAEmqC,MACRC,KAAM,SAASC,EAAYC,GACvBtqC,EAAEoqC,KAAKC,GACP,SAAqBxvE,EAAO/K,GACxB,OAAOw6E,EAAGx6E,EAAO+K,OAGzBhF,IAAKmqC,EAAEnqC,IACPE,OAAQiqC,EAAEuqC,KACVC,MAAO,SAASv4E,EAAKqB,GACjB,IAAI2N,GAAS,EACb,OAAKhP,GAGL+tC,EAAEoqC,KAAKn4E,GAAK,SAAS7B,EAAKuB,GACtB,KAAMsP,EAAS3N,EAAKpH,KAAK,KAAMyF,EAAKvB,EAAK6B,IACrC,OAAO,OAGNgP,GAPEA,GASf8O,KAAM,SAAS9d,EAAKqB,GAChB,IAAI2N,GAAS,EACb,OAAKhP,GAGL+tC,EAAEoqC,KAAKn4E,GAAK,SAAS7B,EAAKuB,GACtB,GAAIsP,EAAS3N,EAAKpH,KAAK,KAAMyF,EAAKvB,EAAK6B,GACnC,OAAO,OAGNgP,GAPEA,GASf89B,MAAOiB,EAAErvB,OACT85D,SAAU,SAASryE,GACf,OAAOA,GAEXq1B,MAAO,SAASx7B,GACZ,OAAO+tC,EAAErvB,QAAO,EAAM,GAAI1e,IAE9By4E,eAAgB,WACZ,IAAIC,EAAU,EACd,OAAO,WACH,OAAOA,MAGfC,WAAY,SAAoB34E,GAC5B,OAAO+tC,EAAEjqB,WAAW9jB,GAAOA,EAC3B,WACI,OAAOmc,OAAOnc,KAGtB44E,MAAO,SAASr6D,GACZzhB,WAAWyhB,EAAI,IAEnBs6D,SAAU,SAAS1yD,EAAM00C,EAAMie,GAC3B,IAAIr9E,EAASuT,EACb,OAAO,WACH,IAAsC+pE,EAAOC,EAAzC5mE,EAAUnT,KAAMykB,EAAO3iB,UAa3B,OAZAg4E,EAAQ,WACJt9E,EAAU,KACLq9E,IACD9pE,EAASmX,EAAKjjB,MAAMkP,EAASsR,KAGrCs1D,EAAUF,IAAcr9E,EACxBW,aAAaX,GACbA,EAAUqB,WAAWi8E,EAAOle,GACxBme,IACAhqE,EAASmX,EAAKjjB,MAAMkP,EAASsR,IAE1B1U,IAGfiqE,SAAU,SAAS9yD,EAAM00C,GACrB,IAAIzoD,EAASsR,EAAMjoB,EAASuT,EAAQkqE,EAAUH,EAO9C,OANAG,EAAW,EACXH,EAAQ,WACJG,EAAW,IAAI5gE,KACf7c,EAAU,KACVuT,EAASmX,EAAKjjB,MAAMkP,EAASsR,IAE1B,WACH,IAAInL,EAAM,IAAID,KAAQ6gE,EAAYte,GAAQtiD,EAAM2gE,GAWhD,OAVA9mE,EAAUnT,KACVykB,EAAO3iB,UACHo4E,GAAa,GACb/8E,aAAaX,GACbA,EAAU,KACVy9E,EAAW3gE,EACXvJ,EAASmX,EAAKjjB,MAAMkP,EAASsR,IACrBjoB,IACRA,EAAUqB,WAAWi8E,EAAOI,IAEzBnqE,IAGfqB,UAAW,SAAS3Q,GAChB,OAAOoZ,EAAE8+D,SAASl4E,GAAOA,EAAMyQ,KAAKE,UAAU3Q,IAElD05E,KAAM,WACF,SAASC,EAAIt6E,GACT,IAAIlD,GAAKumB,KAAKk3D,SAASr7D,SAAS,IAAM,aAAa1Z,OAAO,EAAG,GAC7D,OAAOxF,EAAI,IAAMlD,EAAE0I,OAAO,EAAG,GAAK,IAAM1I,EAAE0I,OAAO,EAAG,GAAK1I,EAE7D,MAAO,MAAQw9E,IAAQA,GAAI,GAAQA,GAAI,GAAQA,KAEnDhkC,KAAM,cA5IN,GAgJJkkC,EAAa,WACb,aACA,MAAO,CACHC,QAASA,EACTC,WAAYA,EACZC,MAAOA,EACP15E,IAAK,CACDw5E,QAASG,EAAgBH,GACzBC,WAAYE,EAAgBF,GAC5BC,MAAOC,EAAgBD,KAG/B,SAASD,EAAWrrB,GAEhB,OADAA,EAAMt1C,EAAEm/D,MAAM7pB,IACDA,EAAI7jC,MAAM,OAAS,GAEpC,SAASivD,EAAQprB,GAEb,OADAA,EAAMt1C,EAAEm/D,MAAM7pB,IACDA,EAAI7jC,MAAM,OAAS,GAEpC,SAASmvD,EAAMtrB,GACXA,EAAMt1C,EAAEm/D,MAAM7pB,GACd,IAAIxlC,EAAS,GAAIgxD,EAAO,GASxB,OARA9gE,EAAEq/D,KAAK/pB,EAAI7jC,MAAM,KAAK,SAASsvD,GACvBA,EAAKrzD,MAAM,OACXozD,EAAO,IAEPhxD,EAAOzuB,KAAKy/E,EAAOC,GACnBD,GAAQC,MAGTjxD,EAEX,SAAS+wD,EAAgBG,GACrB,OAAO,SAAgBtmE,GAEnB,OADAA,EAAOsF,EAAElZ,QAAQ4T,GAAQA,EAAO,GAAG1U,MAAM7E,KAAK8G,UAAW,GAClD,SAAkBzD,GACrB,IAAIsrB,EAAS,GAIb,OAHA9P,EAAEq/D,KAAK3kE,GAAM,SAAS2lB,GAClBvQ,EAASA,EAAOxlB,OAAO02E,EAAUhhE,EAAEm/D,MAAM36E,EAAE67B,SAExCvQ,KAzCN,GA8CbmxD,EAAW,WACX,aACA,SAASA,EAASC,GACd/6E,KAAK+6E,QAAUlhE,EAAEsF,SAAS47D,GAAWA,EAAU,IAC/C/6E,KAAKwO,QACDxO,KAAK+6E,SAAW,IAChB/6E,KAAKmlB,IAAMnlB,KAAKxB,IAAMswC,EAAEsH,MAkChC,SAAS4kC,IACLh7E,KAAKlC,KAAOkC,KAAKi7E,KAAO,KAoB5B,SAASC,EAAKh8E,EAAKuB,GACfT,KAAKd,IAAMA,EACXc,KAAKS,IAAMA,EACXT,KAAK0M,KAAO1M,KAAKiD,KAAO,KAE5B,OAzDA4W,EAAEg0B,MAAMitC,EAAShgF,UAAW,CACxBqqB,IAAK,SAAajmB,EAAKuB,GACnB,IAA+By6C,EAA3BigC,EAAWn7E,KAAK8T,KAAKmnE,KACrBj7E,KAAK0wE,MAAQ1wE,KAAK+6E,UAClB/6E,KAAK8T,KAAKg8B,OAAOqrC,UACVn7E,KAAK8gD,KAAKq6B,EAASj8E,KAC1Bc,KAAK0wE,SAELx1B,EAAOl7C,KAAK8gD,KAAK5hD,KACjBg8C,EAAKz6C,IAAMA,EACXT,KAAK8T,KAAKsnE,YAAYlgC,KAEtBA,EAAO,IAAIggC,EAAKh8E,EAAKuB,GACrBT,KAAK8T,KAAKhD,IAAIoqC,GACdl7C,KAAK8gD,KAAK5hD,GAAOg8C,EACjBl7C,KAAK0wE,SAGblyE,IAAK,SAAaU,GACd,IAAIg8C,EAAOl7C,KAAK8gD,KAAK5hD,GACrB,GAAIg8C,EAEA,OADAl7C,KAAK8T,KAAKsnE,YAAYlgC,GACfA,EAAKz6C,KAGpB+N,MAAO,WACHxO,KAAK0wE,KAAO,EACZ1wE,KAAK8gD,KAAO,GACZ9gD,KAAK8T,KAAO,IAAIknE,KAMxBnhE,EAAEg0B,MAAMmtC,EAAKlgF,UAAW,CACpBgW,IAAK,SAAaoqC,GACVl7C,KAAKlC,OACLo9C,EAAKj4C,KAAOjD,KAAKlC,KACjBkC,KAAKlC,KAAK4O,KAAOwuC,GAErBl7C,KAAKlC,KAAOo9C,EACZl7C,KAAKi7E,KAAOj7E,KAAKi7E,MAAQ//B,GAE7BpL,OAAQ,SAAgBoL,GACpBA,EAAKxuC,KAAOwuC,EAAKxuC,KAAKzJ,KAAOi4C,EAAKj4C,KAAOjD,KAAKlC,KAAOo9C,EAAKj4C,KAC1Di4C,EAAKj4C,KAAOi4C,EAAKj4C,KAAKyJ,KAAOwuC,EAAKxuC,KAAO1M,KAAKi7E,KAAO//B,EAAKxuC,MAE9D0uE,YAAa,SAASlgC,GAClBl7C,KAAK8vC,OAAOoL,GACZl7C,KAAK8Q,IAAIoqC,MAQV4/B,EAlEI,GAoEXO,EAAoB,WACpB,aACA,IAAIC,EACJ,KACIA,EAAgB37E,OAAO47E,cACTC,QAAQ,MAAO,KAC7BF,EAAcG,WAAW,OAC3B,MAAOj8E,GACL87E,EAAgB,KAEpB,SAASD,EAAkBxpB,EAAWhe,GAClC7zC,KAAK2hC,OAAS,CAAE,KAAMkwB,EAAW,MAAO7pD,KAAK,IAC7ChI,KAAK07E,OAAS,UACd17E,KAAK27E,WAAa,IAAIvyD,OAAO,IAAMvP,EAAE6+D,iBAAiB14E,KAAK2hC,SAC3D3hC,KAAK47E,GAAK/nC,GAAYynC,GACrBt7E,KAAK47E,IAAM57E,KAAK67E,QAqDrB,OAnDAhiE,EAAEg0B,MAAMwtC,EAAkBvgF,UAAW,CACjCghF,QAAS,SAAS58E,GACd,OAAOc,KAAK2hC,OAASziC,GAEzB68E,QAAS,SAAS78E,GACd,OAAOc,KAAK87E,QAAQ58E,GAAOc,KAAK07E,QAEpCG,MAAO,WACH77E,KAAKxB,IAAMwB,KAAKmlB,IAAMnlB,KAAK8vC,OAAS9vC,KAAKqvC,MAAQrvC,KAAKg8E,UAAYniE,EAAEu8B,MAExE6lC,SAAU,SAAS/8E,EAAKuB,GACpB,IACIT,KAAK47E,GAAGJ,QAAQt8E,EAAKuB,GACvB,MAAOjB,GACY,uBAAbA,EAAI9B,OACJsC,KAAKqvC,QACLrvC,KAAK67E,WAIjBr9E,IAAK,SAASU,GAIV,OAHIc,KAAKg8E,UAAU98E,IACfc,KAAK8vC,OAAO5wC,GAETg9E,EAAOl8E,KAAK47E,GAAGO,QAAQn8E,KAAK87E,QAAQ58E,MAE/CimB,IAAK,SAASjmB,EAAKuB,EAAK27E,GAMpB,OALIviE,EAAEsF,SAASi9D,GACXp8E,KAAKi8E,SAASj8E,KAAK+7E,QAAQ78E,GAAMm9E,EAAO/iE,IAAQ8iE,IAEhDp8E,KAAK47E,GAAGH,WAAWz7E,KAAK+7E,QAAQ78E,IAE7Bc,KAAKi8E,SAASj8E,KAAK87E,QAAQ58E,GAAMm9E,EAAO57E,KAEnDqvC,OAAQ,SAAS5wC,GAGb,OAFAc,KAAK47E,GAAGH,WAAWz7E,KAAK+7E,QAAQ78E,IAChCc,KAAK47E,GAAGH,WAAWz7E,KAAK87E,QAAQ58E,IACzBc,MAEXqvC,MAAO,WACH,IAAI30C,EAAG6Z,EAqBf,SAA4BonE,GACxB,IAAIjhF,EAAGwE,EAAKqV,EAAO,GAAIyN,EAAMs5D,EAAc1gF,OAC3C,IAAKF,EAAI,EAAGA,EAAIsnB,EAAKtnB,KACZwE,EAAMo8E,EAAcp8E,IAAIxE,IAAI6sB,MAAMo0D,IACnCpnE,EAAKrZ,KAAKgE,EAAI6H,QAAQ40E,EAAY,KAG1C,OAAOpnE,EA5BW+nE,CAAmBt8E,KAAK27E,YACtC,IAAKjhF,EAAI6Z,EAAK3Z,OAAQF,KAClBsF,KAAK8vC,OAAOv7B,EAAK7Z,IAErB,OAAOsF,MAEXg8E,UAAW,SAAS98E,GAChB,IAAIk9E,EAAMF,EAAOl8E,KAAK47E,GAAGO,QAAQn8E,KAAK+7E,QAAQ78E,KAC9C,SAAO2a,EAAEsF,SAASi9D,IAAQ9iE,IAAQ8iE,MAGnCf,EACP,SAAS/hE,IACL,OAAO,IAAID,MAAOmI,UAEtB,SAAS66D,EAAO57E,GACZ,OAAOyQ,KAAKE,UAAUyI,EAAEqF,YAAYze,GAAO,KAAOA,GAEtD,SAASy7E,EAAOz7E,GACZ,OAAOquC,EAAEytC,UAAU97E,IA5EH,GAwFpB+7E,EAAY,WACZ,aACA,IAAIC,EAAuB,EAAGC,EAAkB,GAAIC,EAAc,IAAI7B,EAAS,IAC/E,SAAS0B,EAAUn+E,GACfA,EAAIA,GAAK,GACT2B,KAAK48E,mBAAqBv+E,EAAEu+E,oBAAsB,EAClD58E,KAAK68E,WAAY,EACjB78E,KAAK88E,QAAU,KACf98E,KAAK+8E,MAAQ1+E,EAAE2+E,UACfh9E,KAAKi9E,KAAO5+E,EAAE6+E,QAAU7+E,EAAE6+E,QAAQl9E,KAAKi9E,MAAQj9E,KAAKi9E,KACpDj9E,KAAKm9E,QAAqB,IAAZ9+E,EAAEk+D,MAAkB,IAAIue,EAAS,GAAK6B,EA8DxD,OA5DAH,EAAUY,sBAAwB,SAA+BC,GAC7Dr9E,KAAK48E,mBAAqBS,GAE9Bb,EAAUc,WAAa,WACnBX,EAAYnuE,SAEhBqL,EAAEg0B,MAAM2uC,EAAU1hF,UAAW,CACzByiF,aAAc,SAAqBl/E,GAE/B,OADAA,EAAIA,GAAK,IACAoK,IAAMpK,EAAEf,KAAOwxC,EAAE0uC,MAAMn/E,EAAEhE,MAAQ,KAE9C4iF,KAAM,SAAS5+E,EAAG+6E,GACd,IAAiBqE,EAAaC,EAA1B79C,EAAO7/B,KAaX,SAASw6D,EAAKmjB,GACVvE,EAAG,KAAMuE,GACT99C,EAAKs9C,OAAOh4D,IAAIs4D,EAAaE,GAEjC,SAASC,IACLxE,GAAG,GAEP,SAASyE,IACLpB,WACOC,EAAgBe,GACnB59C,EAAKi+C,oBACLj+C,EAAKo9C,KAAKh5E,MAAM47B,EAAMA,EAAKi+C,mBAC3Bj+C,EAAKi+C,kBAAoB,MAxBjCL,EAAcz9E,KAAKu9E,aAAal/E,GAC5B2B,KAAK68E,WAAaY,IAAgBz9E,KAAK88E,WAGvCY,EAAQhB,EAAgBe,IACxBC,EAAMljB,KAAKA,GAAMojB,KAAKA,GACfnB,EAAuBz8E,KAAK48E,oBACnCH,IACAC,EAAgBe,GAAez9E,KAAK+8E,MAAM1+E,GAAGm8D,KAAKA,GAAMojB,KAAKA,GAAMC,OAAOA,IAE1E79E,KAAK89E,kBAAoB,GAAGj+E,MAAM7E,KAAK8G,UAAW,KAkB1DtD,IAAK,SAASH,EAAG+6E,GACb,IAAIuE,EAAMF,EACVrE,EAAKA,GAAMtqC,EAAEsH,KACb/3C,EAAIwb,EAAE8+D,SAASt6E,GAAK,CAChBoK,IAAKpK,GACLA,GAAK,GACTo/E,EAAcz9E,KAAKu9E,aAAal/E,GAChC2B,KAAK68E,WAAY,EACjB78E,KAAK88E,QAAUW,GACXE,EAAO39E,KAAKm9E,OAAO3+E,IAAIi/E,IACvBrE,EAAG,KAAMuE,GAET39E,KAAKi9E,KAAK5+E,EAAG+6E,IAGrBrvE,OAAQ,WACJ/J,KAAK68E,WAAY,KAGlBL,EAxEK,GA0EZuB,EAAcp+E,OAAOo+E,YAAc,WACnC,aAEA,SAASA,EAAY1/E,IACjBA,EAAIA,GAAK,IACF2/E,gBAAmB3/E,EAAE4/E,gBACxBnvC,EAAEhyC,MAAM,uDAEZkD,KAAKk+E,SAAW7/E,EAAE6/E,UAAYrkE,EAAEzI,UAChCpR,KAAKg+E,eAAiB3/E,EAAE2/E,eACxBh+E,KAAKi+E,eAAiB5/E,EAAE4/E,eACxBj+E,KAAKm+E,mBAAqB9/E,EAAE8/E,mBAC5Bn+E,KAAKwO,QA4ET,OA1EAqL,EAAEg0B,MAAMkwC,EAAYjjF,UAAW,CAC3BsjF,UAAW,SAAmB//E,GAC1B2B,KAAKq+E,OAAShgF,EAAEggF,OAChBr+E,KAAKs+E,KAAOjgF,EAAEigF,MAElBxtE,IAAK,SAASzW,GACV,IAAIwlC,EAAO7/B,KACX3F,EAAOwf,EAAElZ,QAAQtG,GAAQA,EAAO,CAAEA,GAClCwf,EAAEq/D,KAAK7+E,GAAM,SAAS0wD,GAClB,IAAIxuC,EAAIoN,EACRkW,EAAKw+C,OAAO9hE,EAAKsjB,EAAKq+C,SAASnzB,IAAUA,EACzCphC,EAAS40D,EAAgB1+C,EAAKm+C,eAAejzB,IAC7ClxC,EAAEq/D,KAAKvvD,GAAQ,SAAS7C,GACpB,IAAIo0B,EAAMsjC,EAAOC,EAGjB,IAFAvjC,EAAOrb,EAAKy+C,KACZE,EAAQ13D,EAAMwE,MAAM,IACbmzD,EAAKD,EAAMnjF,UACd6/C,EAAOA,EAAa,EAAEujC,KAAQvjC,EAAa,EAAEujC,GAAMC,MAC3C,EAAExjF,KAAKqhB,UAK/B/d,IAAK,SAAamgF,GACd,IAAI9+C,EAAO7/B,KACX,OAAO6Z,EAAElV,IAAIg6E,GAAK,SAASpiE,GACvB,OAAOsjB,EAAKw+C,OAAO9hE,OAG3BstB,OAAQ,SAAgB+0C,GACpB,IAAiBj1D,EAAQwS,EAArB0D,EAAO7/B,KAsBX,OArBA2pB,EAAS40D,EAAgBv+E,KAAKi+E,eAAeW,IAC7C/kE,EAAEq/D,KAAKvvD,GAAQ,SAAS7C,GACpB,IAAIo0B,EAAMsjC,EAAOC,EAAIE,EACrB,GAAIxiD,GAA8B,IAAnBA,EAAQvhC,SAAiBilC,EAAKs+C,mBACzC,OAAO,EAIX,IAFAjjC,EAAOrb,EAAKy+C,KACZE,EAAQ13D,EAAMwE,MAAM,IACb4vB,IAASujC,EAAKD,EAAMnjF,UACvB6/C,EAAOA,EAAa,EAAEujC,GAE1B,GAAIvjC,GAAyB,IAAjBsjC,EAAM5jF,OACd+jF,EAAMzjC,EAAQ,EAAEr7C,MAAM,GACtBs8B,EAAUA,EAwD1B,SAAyB0iD,EAAQC,GAC7B,IAAIC,EAAK,EAAGC,EAAK,EAAGC,EAAe,GACnCJ,EAASA,EAAOptE,OAChBqtE,EAASA,EAAOrtE,OAEhB,IADA,IAAIytE,EAAYL,EAAOjkF,OAAQukF,EAAYL,EAAOlkF,OAC3CmkF,EAAKG,GAAaF,EAAKG,GACtBN,EAAOE,GAAMD,EAAOE,GACpBD,KACOF,EAAOE,GAAMD,EAAOE,KAG3BC,EAAa/jF,KAAK2jF,EAAOE,IACzBA,KAHAC,KAOR,OAAOC,EAxEyBG,CAAgBjjD,EAASwiD,GAAOA,OAEpD,IAAK9+C,EAAKs+C,mBAEN,OADAhiD,EAAU,IACH,KAIZA,EAAUtiB,EAAElV,IAsC3B,SAAgB2iB,GAEZ,IADA,IAAI+3D,EAAO,GAAIC,EAAU,GAChB5kF,EAAI,EAAGsnB,EAAMsF,EAAM1sB,OAAQF,EAAIsnB,EAAKtnB,IACpC2kF,EAAK/3D,EAAM5sB,MACZ2kF,EAAK/3D,EAAM5sB,KAAM,EACjB4kF,EAAQpkF,KAAKosB,EAAM5sB,KAG3B,OAAO4kF,EA9CoBC,CAAOpjD,IAAU,SAAS5f,GAC7C,OAAOsjB,EAAKw+C,OAAO9hE,MAClB,IAETve,IAAK,WACD,IAAIq1B,EAAS,GACb,IAAK,IAAIn0B,KAAOc,KAAKq+E,OACjBhrD,EAAOn4B,KAAK8E,KAAKq+E,OAAOn/E,IAE5B,OAAOm0B,GAEX7kB,MAAO,WACHxO,KAAKq+E,OAAS,GACdr+E,KAAKs+E,KAAOI,KAEhBc,UAAW,WACP,MAAO,CACHnB,OAAQr+E,KAAKq+E,OACbC,KAAMt+E,KAAKs+E,SAIhBP,EACP,SAASQ,EAAgB50D,GAOrB,OANAA,EAAS9P,EAAEhV,OAAO8kB,GAAQ,SAAS7C,GAC/B,QAASA,KAEb6C,EAAS9P,EAAElV,IAAIglB,GAAQ,SAAS7C,GAC5B,OAAOA,EAAMvL,iBAIrB,SAASmjE,IACL,IAAIxjC,EAAO,CACX,EAAY,GACZ,EAAiB,IACjB,OAAOA,GAtGwB,GAqInCukC,EAAW,WACX,aACA,IAAIlrE,EAMJ,SAASkrE,EAASphF,GACd2B,KAAKyI,IAAMpK,EAAEoK,IACbzI,KAAKo8E,IAAM/9E,EAAE+9E,IACbp8E,KAAKu8D,MAAQl+D,EAAEk+D,MACfv8D,KAAK0/E,QAAUrhF,EAAEqhF,QACjB1/E,KAAK8hE,UAAYzjE,EAAEyjE,UACnB9hE,KAAKg9E,UAAY3+E,EAAE2+E,UACnBh9E,KAAK2/E,WAAathF,EAAEshF,WACpB3/E,KAAK4/E,QAAU,IAAIvE,EAAkBh9E,EAAEwhF,UAgD3C,OA7DAtrE,EAAO,CACHla,KAAM,OACNo0C,SAAU,WACVkxC,WAAY,cAYhB9lE,EAAEg0B,MAAM4xC,EAAS3kF,UAAW,CACxBkW,UAAW,WACP,MAAO,CACHvI,IAAKzI,KAAKyI,IACVnL,KAAM,MACNwiF,SAAU,SAGlBllB,MAAO,SAAevgE,GACb2F,KAAKu8D,QAGVv8D,KAAK4/E,QAAQz6D,IAAI5Q,EAAKla,KAAMA,EAAM2F,KAAKo8E,KACvCp8E,KAAK4/E,QAAQz6D,IAAI5Q,EAAKk6B,SAAUiN,SAASjN,SAAUzuC,KAAKo8E,KACxDp8E,KAAK4/E,QAAQz6D,IAAI5Q,EAAKorE,WAAY3/E,KAAK2/E,WAAY3/E,KAAKo8E,OAE5D2D,UAAW,WACP,IAAiB/D,EAAbgE,EAAS,GACb,OAAKhgF,KAAKu8D,OAGVyjB,EAAO3lF,KAAO2F,KAAK4/E,QAAQphF,IAAI+V,EAAKla,MACpC2lF,EAAOvxC,SAAWzuC,KAAK4/E,QAAQphF,IAAI+V,EAAKk6B,UACxCuxC,EAAOL,WAAa3/E,KAAK4/E,QAAQphF,IAAI+V,EAAKorE,YAC1C3D,EAAYgE,EAAOL,aAAe3/E,KAAK2/E,YAAcK,EAAOvxC,WAAaiN,SAASjN,SAC3EuxC,EAAO3lF,OAAS2hF,EAAYgE,EAAO3lF,KAAO,MANtC,MAQf4lF,YAAa,SAAS7G,GAClB,IAAiBhxE,EAAby3B,EAAO7/B,KACNo5E,IAGLhxE,EAAWpI,KAAK0/E,QAAQ1/E,KAAKgR,aAC7BhR,KAAKg9E,UAAU50E,GAAUw1E,MACzB,WACIxE,GAAG,MAFgC5e,MAIvC,SAAoBmjB,GAChBvE,EAAG,KAAMv5C,EAAKiiC,UAAU6b,SAGhCtuC,MAAO,WAEH,OADArvC,KAAK4/E,QAAQvwC,QACNrvC,QAGRy/E,EAhEI,GAkEXS,EAAS,WACT,aACA,SAASA,EAAO7hF,GACZ2B,KAAKyI,IAAMpK,EAAEoK,IACbzI,KAAK0/E,QAAUrhF,EAAEqhF,QACjB1/E,KAAK8hE,UAAYzjE,EAAEyjE,UACnB9hE,KAAKmgF,cAAgB9hF,EAAE8hF,cACvBngF,KAAKg9E,UAAY,IAAIR,EAAU,CAC3BjgB,MAAOl+D,EAAEk+D,MACT2gB,QAAS7+E,EAAE6+E,QACXF,UAAW3+E,EAAE2+E,UACbJ,mBAAoBv+E,EAAEu+E,qBA2B9B,OAxBA/iE,EAAEg0B,MAAMqyC,EAAOplF,UAAW,CACtBkW,UAAW,WACP,MAAO,CACHvI,IAAKzI,KAAKyI,IACVnL,KAAM,MACNwiF,SAAU,SAGlBthF,IAAK,SAAaogF,EAAOxF,GACrB,IAAiBhxE,EAAby3B,EAAO7/B,KACX,GAAKo5E,EAKL,OAFAwF,EAAQA,GAAS,GACjBx2E,EAAWpI,KAAK0/E,QAAQd,EAAO5+E,KAAKgR,aAC7BhR,KAAKg9E,UAAUx+E,IAAI4J,GAC1B,SAAoB5I,EAAKm+E,GACfvE,EAAN55E,EAAS,GAASqgC,EAAKiiC,UAAU6b,QAGzCyC,kBAAmB,WACfpgF,KAAKg9E,UAAUjzE,YAGhBm2E,EAtCE,GAwCTG,EAAU,WACV,aACA,OAAO,SAAehiF,GAClB,IAAIsO,EAAU2zE,EAwBd,OAvBA3zE,EAAW,CACP4zE,YAAY,EACZrC,SAAUrkE,EAAEzI,UACZ4sE,eAAgB,KAChBC,eAAgB,KAChBE,oBAAoB,EACpBqC,WAAY,EACZC,aAAa,EACbH,OAAQ,KACR7jD,MAAO,GACPikD,SAAU,KACVC,OAAQ,QAEZtiF,EAAIwb,EAAEg0B,MAAMlhC,EAAUtO,GAAK,KACxB2/E,gBAAkBlvC,EAAEhyC,MAAM,+BAC5BuB,EAAE4/E,gBAAkBnvC,EAAEhyC,MAAM,8BAC7BwjF,EAASjiF,EAAEiiF,OACXjiF,EAAEiiF,OAASA,EAAS,SAASp5E,GACzB,OAAOA,EAAEuK,KAAK6uE,IACdzmE,EAAE0/D,SACNl7E,EAAEo+B,MAAQ5iB,EAAEgL,WAAWxmB,EAAEo+B,OAASp+B,EAAEo+B,QAAUp+B,EAAEo+B,MAChDp+B,EAAEqiF,SAIN,SAAuBriF,GACnB,IAAIsO,EACJ,OAAKtO,GAGLsO,EAAW,CACPlE,IAAK,KACL2zE,IAAK,MACL7f,OAAO,EACPsjB,SAAU,KACVF,WAAY,GACZD,QAAS7lE,EAAE0/D,SACXzX,UAAWjoD,EAAE0/D,SACbyD,UAAW,MAEf3+E,EAAIwb,EAAE8+D,SAASt6E,GAAK,CAChBoK,IAAKpK,GACLA,IACJA,EAAIwb,EAAEg0B,MAAMlhC,EAAUtO,IACnBoK,KAAOqmC,EAAEhyC,MAAM,mCAClBuB,EAAEyjE,UAAYzjE,EAAEwG,QAAUxG,EAAEyjE,UAC5BzjE,EAAEwhF,SAAWxhF,EAAEwhF,UAAYxhF,EAAEoK,IAC7BpK,EAAEshF,WAvjBI,QAujBmBthF,EAAEshF,WAC3BthF,EAAE2+E,UAAY3+E,EAAE2+E,UAAY4D,EAAmBviF,EAAE2+E,WAAaluC,EAAE+xC,KACzDxiF,GArBI,KAPEyiF,CAAcziF,EAAEqiF,UAC7BriF,EAAEsiF,OA6BN,SAAqBtiF,GACjB,IAAIsO,EACJ,GAAKtO,EA4BL,OAzBAsO,EAAW,CACPlE,IAAK,KACL8zD,OAAO,EACPmjB,QAAS,KACT34E,QAAS,KACTg6E,SAAU,KACV7D,QAAS,KACT8D,YAAa,WACbC,cAAe,IACfnf,UAAWjoD,EAAE0/D,SACbyD,UAAW,MAEf3+E,EAAIwb,EAAE8+D,SAASt6E,GAAK,CAChBoK,IAAKpK,GACLA,IACJA,EAAIwb,EAAEg0B,MAAMlhC,EAAUtO,IACnBoK,KAAOqmC,EAAEhyC,MAAM,iCAClBuB,EAAEyjE,UAAYzjE,EAAEwG,QAAUxG,EAAEyjE,UAC5BzjE,EAAEqhF,QASN,SAAyBrhF,GACrB,IAAIqhF,EAAS34E,EAASg6E,EAItB,OAHArB,EAAUrhF,EAAEqhF,QACZ34E,EAAU1I,EAAE0I,QACZg6E,EAAW1iF,EAAE0iF,SACTrB,IAIAA,EADA34E,EAQJ,SAA0B63E,EAAOx2E,GAE7B,OADAA,EAASK,IAAM1B,EAAQqB,EAASK,IAAKm2E,GAC9Bx2E,GARA/J,EAAE0iF,SAUb,SAA2BnC,EAAOx2E,GAE9B,OADAA,EAASK,IAAML,EAASK,IAAI1B,QAAQg6E,EAAU/jC,mBAAmB4hC,IAC1Dx2E,GAEX,SAAyBw2E,EAAOx2E,GAC5B,OAAOA,IAlCC84E,CAAgB7iF,GAC5BA,EAAE6+E,QAoCN,SAAmB7+E,GACf,IAAI6+E,EAAShiE,EAAQ0gD,EAOrB,OANAshB,EAAU7+E,EAAE6+E,QACZhiE,EAAS7c,EAAE2iF,YACXplB,EAAOv9D,EAAE4iF,cACJ/D,IACDA,EAAU,cAAc96E,KAAK8Y,GAQjC,SAAkB0gD,GACd,OAAO,SAAkBt8C,GACrB,OAAOzF,EAAEmgE,SAAS16D,EAAIs8C,IAVaoe,CAASpe,GAGpD,SAAkBA,GACd,OAAO,SAAkBt8C,GACrB,OAAOzF,EAAE+/D,SAASt6D,EAAIs8C,IAL8Bge,CAAShe,IAE9DshB,EA5CKiE,CAAU9iF,GACtBA,EAAE2+E,UAAY3+E,EAAE2+E,UAAY4D,EAAmBviF,EAAE2+E,WAAaluC,EAAE+xC,YACzDxiF,EAAE0I,eACF1I,EAAE0iF,gBACF1iF,EAAE2iF,mBACF3iF,EAAE4iF,cACF5iF,EA3DI+iF,CAAY/iF,EAAEsiF,QAClBtiF,GA4GX,SAASuiF,EAAmBthE,GACxB,OAAO,SAAiBjhB,GACpB,IAAIgjF,EAAWvyC,EAAEwyC,WAEjB,OADAhiE,EAAGjhB,GAEH,SAAmBs/E,GACf9jE,EAAE8/D,OAAM,WACJ0H,EAASplF,QAAQ0hF,SAGzB,SAAiBn+E,GACbqa,EAAE8/D,OAAM,WACJ0H,EAASnlF,OAAOsD,SARjB6hF,IA3IL,GAyJG,WACb,aACA,IAAIE,EAEJ,SAASC,EAAWnjF,GAChBA,EAAIgiF,EAAQhiF,GACZ2B,KAAKsgF,OAASjiF,EAAEiiF,OAChBtgF,KAAKk+E,SAAW7/E,EAAE6/E,SAClBl+E,KAAKwgF,WAAaniF,EAAEmiF,WACpBxgF,KAAKygF,YAAcpiF,EAAEoiF,YACrBzgF,KAAKy8B,MAAQp+B,EAAEo+B,MACfz8B,KAAK2gF,OAAStiF,EAAEsiF,OAAS,IAAIT,EAAO7hF,EAAEsiF,QAAU,KAChD3gF,KAAK0gF,SAAWriF,EAAEqiF,SAAW,IAAIjB,EAASphF,EAAEqiF,UAAY,KACxD1gF,KAAK2J,MAAQ,IAAIo0E,EAAY,CACzBG,SAAUl+E,KAAKk+E,SACfF,eAAgB3/E,EAAE2/E,eAClBC,eAAgB5/E,EAAE4/E,kBAEL,IAAjB5/E,EAAEkiF,YAAwBvgF,KAAKugF,aAqGnC,OApHAgB,EAAM5hF,QAAUA,OAAO6hF,WAiBvBA,EAAWC,WAAa,WAEpB,OADA9hF,SAAWA,OAAO6hF,WAAaD,GACxBC,GAEXA,EAAWlH,WAAaA,EACxBzgE,EAAEg0B,MAAM2zC,EAAW1mF,UAAW,CAC1B4mF,YAAa,WACT,IAAI7hD,EAAO7/B,KACX,OAAOA,KAAK2gF,OACZ,SAAmB/B,EAAO+C,EAAMtjB,GAC5B,OAAOx+B,EAAKgK,OAAO+0C,EAAO+C,EAAMtjB,IAEpC,SAAsBugB,EAAO+C,GACzB,OAAO9hD,EAAKgK,OAAO+0C,EAAO+C,KAGlCC,cAAe,WACX,IAAiBP,EAAUQ,EAAvBhiD,EAAO7/B,KAUX,OATAqhF,EAAWvyC,EAAEwyC,WACRthF,KAAK0gF,UAECmB,EAAa7hF,KAAK0gF,SAASX,cAClC//E,KAAK2J,MAAMy0E,UAAUyD,GACrBR,EAASplF,WAET+D,KAAK0gF,SAAST,aAGlB,SAAczgF,EAAKnF,GACf,GAAImF,EACA,OAAO6hF,EAASnlF,SAEpB2jC,EAAK/uB,IAAIzW,GACTwlC,EAAK6gD,SAAS9lB,MAAM/6B,EAAKl2B,MAAM61E,aAC/B6B,EAASplF,aAdTolF,EAASplF,UAONolF,EAAStlF,WAUpB+lF,YAAa,WACT,IAAIjiD,EAAO7/B,KAGX,OAFAA,KAAKqvC,SACJrvC,KAAK+hF,YAAc/hF,KAAK4hF,iBAAiBpnB,MAE1C,WACI36B,EAAK/uB,IAAI+uB,EAAKpD,UAFXz8B,KAAK+hF,aAKhBxB,WAAY,SAAoB7vC,GAC5B,OAAQ1wC,KAAK+hF,aAAerxC,EAAQ1wC,KAAK8hF,cAAgB9hF,KAAK+hF,aAElEjxE,IAAK,SAAazW,GAEd,OADA2F,KAAK2J,MAAMmH,IAAIzW,GACR2F,MAEXxB,IAAK,SAAamgF,GAEd,OADAA,EAAM9kE,EAAElZ,QAAQg+E,GAAOA,EAAM,GAAG9+E,MAAM7E,KAAK8G,WACpC9B,KAAK2J,MAAMnL,IAAImgF,IAE1B90C,OAAQ,SAAgB+0C,EAAO+C,EAAMtjB,GACjC,IAAiB5hC,EAAboD,EAAO7/B,KAUX,OATA2hF,EAAOA,GAAQ9nE,EAAEu8B,KACjBioB,EAAQA,GAASxkD,EAAEu8B,KACnB3Z,EAAQz8B,KAAKsgF,OAAOtgF,KAAK2J,MAAMkgC,OAAO+0C,IACtC+C,EAAK3hF,KAAK2gF,OAASlkD,EAAM58B,QAAU48B,GAC/Bz8B,KAAK2gF,QAAUlkD,EAAM7hC,OAASoF,KAAKwgF,WACnCxgF,KAAK2gF,OAAOniF,IAAIogF,GAKpB,SAAuB+B,GACnB,IAAIqB,EAAgB,GACpBnoE,EAAEq/D,KAAKyH,GAAQ,SAASliF,IACnBob,EAAEgF,KAAK4d,GAAO,SAAS9gC,GACpB,OAAOkkC,EAAKq+C,SAASz/E,KAAOohC,EAAKq+C,SAASviF,OACxCqmF,EAAc9mF,KAAKuD,MAE7BohC,EAAK4gD,aAAe5gD,EAAK/uB,IAAIkxE,GAC7B3jB,EAAM2jB,MAZChiF,KAAK2gF,QACZ3gF,KAAK2gF,OAAOP,oBAETpgF,MAYXhC,IAAK,WACD,OAAOgC,KAAK2J,MAAM3L,OAEtBqxC,MAAO,WAEH,OADArvC,KAAK2J,MAAM6E,QACJxO,MAEXiiF,mBAAoB,WAEhB,OADAjiF,KAAK0gF,UAAY1gF,KAAK0gF,SAASrxC,QACxBrvC,MAEXkiF,iBAAkB,WAEd,OADA1F,EAAUc,aACHt9E,MAEXmiF,UAAW,WACP,OAAOniF,KAAK0hF,iBAGbF,EAvHM,IA7yBZ,IAAS1yC,EACVj1B,EAgJAygE,EA8CAQ,EAoEAO,EAwFAmB,EA0EAuB,EAqIA0B,EAkEAS,EAwCAG,GA1pBC,2BAi7BD,EAAO,CAAE,YAER,KAFoB,EAAF,SAAW9H,GAC1B,OAOMzpC,EAPSypC,EAQnB1+D,EAAI,WACJ,aACA,MAAO,CACH2+D,OAAQ,WACJ,QAAO,kBAAkBp2E,KAAK+2C,UAAUC,YAAaD,UAAUC,UAAU7xB,MAAM,4BAA4B,IAE/GkxD,cAAe,SAAStpB,GACpB,OAAQA,GAAO,QAAQ/sD,KAAK+sD,IAEhCupB,iBAAkB,SAASvpB,GACvB,OAAOA,EAAIpoD,QAAQ,sCAAuC,SAE9D4xE,SAAU,SAAS53E,GACf,MAAsB,iBAARA,GAElBoe,SAAU,SAASpe,GACf,MAAsB,iBAARA,GAElBJ,QAASmuC,EAAEnuC,QACXkkB,WAAYiqB,EAAEjqB,WACd5F,SAAU6vB,EAAE8pC,cACZ15D,YAAa,SAASne,GAClB,YAAsB,IAARA,GAElB83E,UAAW,SAAS93E,GAChB,SAAUA,GAAwB,IAAjBA,EAAI+3E,WAEzBC,SAAU,SAASh4E,GACf,OAAOA,aAAe+tC,GAE1BkqC,MAAO,SAAel5E,GAClB,OAAO+Z,EAAEqF,YAAYpf,IAAY,OAANA,EAAa,GAAKA,EAAI,IAErDX,KAAM2vC,EAAEmqC,MACRC,KAAM,SAASC,EAAYC,GACvBtqC,EAAEoqC,KAAKC,GACP,SAAqBxvE,EAAO/K,GACxB,OAAOw6E,EAAGx6E,EAAO+K,OAGzBhF,IAAKmqC,EAAEnqC,IACPE,OAAQiqC,EAAEuqC,KACVC,MAAO,SAASv4E,EAAKqB,GACjB,IAAI2N,GAAS,EACb,OAAKhP,GAGL+tC,EAAEoqC,KAAKn4E,GAAK,SAAS7B,EAAKuB,GACtB,KAAMsP,EAAS3N,EAAKpH,KAAK,KAAMyF,EAAKvB,EAAK6B,IACrC,OAAO,OAGNgP,GAPEA,GASf8O,KAAM,SAAS9d,EAAKqB,GAChB,IAAI2N,GAAS,EACb,OAAKhP,GAGL+tC,EAAEoqC,KAAKn4E,GAAK,SAAS7B,EAAKuB,GACtB,GAAIsP,EAAS3N,EAAKpH,KAAK,KAAMyF,EAAKvB,EAAK6B,GACnC,OAAO,OAGNgP,GAPEA,GASf89B,MAAOiB,EAAErvB,OACT85D,SAAU,SAASryE,GACf,OAAOA,GAEXq1B,MAAO,SAASx7B,GACZ,OAAO+tC,EAAErvB,QAAO,EAAM,GAAI1e,IAE9By4E,eAAgB,WACZ,IAAIC,EAAU,EACd,OAAO,WACH,OAAOA,MAGfC,WAAY,SAAoB34E,GAC5B,OAAO+tC,EAAEjqB,WAAW9jB,GAAOA,EAC3B,WACI,OAAOmc,OAAOnc,KAGtB44E,MAAO,SAASr6D,GACZzhB,WAAWyhB,EAAI,IAEnBs6D,SAAU,SAAS1yD,EAAM00C,EAAMie,GAC3B,IAAIr9E,EAASuT,EACb,OAAO,WACH,IAAsC+pE,EAAOC,EAAzC5mE,EAAUnT,KAAMykB,EAAO3iB,UAa3B,OAZAg4E,EAAQ,WACJt9E,EAAU,KACLq9E,IACD9pE,EAASmX,EAAKjjB,MAAMkP,EAASsR,KAGrCs1D,EAAUF,IAAcr9E,EACxBW,aAAaX,GACbA,EAAUqB,WAAWi8E,EAAOle,GACxBme,IACAhqE,EAASmX,EAAKjjB,MAAMkP,EAASsR,IAE1B1U,IAGfiqE,SAAU,SAAS9yD,EAAM00C,GACrB,IAAIzoD,EAASsR,EAAMjoB,EAASuT,EAAQkqE,EAAUH,EAO9C,OANAG,EAAW,EACXH,EAAQ,WACJG,EAAW,IAAI5gE,KACf7c,EAAU,KACVuT,EAASmX,EAAKjjB,MAAMkP,EAASsR,IAE1B,WACH,IAAInL,EAAM,IAAID,KAAQ6gE,EAAYte,GAAQtiD,EAAM2gE,GAWhD,OAVA9mE,EAAUnT,KACVykB,EAAO3iB,UACHo4E,GAAa,GACb/8E,aAAaX,GACbA,EAAU,KACVy9E,EAAW3gE,EACXvJ,EAASmX,EAAKjjB,MAAMkP,EAASsR,IACrBjoB,IACRA,EAAUqB,WAAWi8E,EAAOI,IAEzBnqE,IAGfqB,UAAW,SAAS3Q,GAChB,OAAOoZ,EAAE8+D,SAASl4E,GAAOA,EAAMyQ,KAAKE,UAAU3Q,IAElD05E,KAAM,WACF,SAASC,EAAIt6E,GACT,IAAIlD,GAAKumB,KAAKk3D,SAASr7D,SAAS,IAAM,aAAa1Z,OAAO,EAAG,GAC7D,OAAOxF,EAAI,IAAMlD,EAAE0I,OAAO,EAAG,GAAK,IAAM1I,EAAE0I,OAAO,EAAG,GAAK1I,EAE7D,MAAO,MAAQw9E,IAAQA,GAAI,GAAQA,GAAI,GAAQA,KAEnDhkC,KAAM,cA5IN,GA+IJ4nK,EAAM,WACN,aACA,IAAIC,EAAoB,CACpBlwE,QAAS,oBACThvH,MAAO,WACPm/L,KAAM,UACNC,KAAM,UACN7nE,QAAS,aACT8nE,WAAY,gBACZC,WAAY,gBACZl+L,MAAO,WACPs7B,KAAM,UACN6iK,OAAQ,YACRC,UAAW,gBAEf,OACA,SAAelgN,GACX,IAAImgN,EAAKlnF,EAkBMp5H,EAcXyiE,EAxBJ,OAPA22D,EAAUz9G,EAAEg0B,MAAM,GAAIowK,EAAmB5/M,GAOlC,CACHsiE,KAPJ69I,EAAM,CACF79I,KA6BAA,EAAM,CACNotE,QAAS,CACLpe,SAAU,WACVhL,QAAS,gBAEbu5F,KAAM,CACFvuF,SAAU,WACVpY,IAAK,IACLwa,KAAM,IACN0sF,YAAa,cACbC,UAAW,OACX76H,QAAS,KAEb9kE,MAAO,CACH4wG,SAAU,WACVgvF,cAAe,MACf5+C,gBAAiB,eAErB6+C,gBAAiB,CACbjvF,SAAU,WACVgvF,cAAe,OAEnBR,KAAM,CACFxuF,SAAU,WACVpY,IAAK,OACLwa,KAAM,IACNmhF,OAAQ,MACRvuF,QAAS,QAEbk6F,IAAK,CACD9sF,KAAM,IACNvC,MAAO,QAEXp9E,IAAK,CACD2/E,KAAM,OACNvC,MAAO,OAGX31G,EAAE2+D,UACF3+D,EAAEg0B,MAAM8yB,EAAI5hD,MAAO,CACf+/L,gBAAiB,wFAGlBn+I,GAvEH22D,QAASA,EACT9uE,MAaWtqD,EAbKo5H,EAcb,CACHyW,QAAS,gBAAkB7vI,EAAE6vI,QAAU,YACvCowE,KAAM,8BAAgCjgN,EAAEigN,KAAO,aAf/C9kG,UAAW0lG,EAAeznF,KAGjB32D,IACTnY,KAAMg2J,EAAIh2J,KACV8uE,QAASknF,EAAIlnF,QACbje,UAAWmlG,EAAInlG,UACfxrE,MAAO,SAASxvC,GACZwb,EAAEg0B,MAAMxvC,EAAGmgN,MAUvB,SAASO,EAAeznF,GACpB,IAAIje,EAAY,GAIhB,OAHAx/F,EAAEq/D,KAAKo+C,GAAS,SAASrzD,EAAG/pC,GACxBm/E,EAAUn/E,GAAK,IAAM+pC,KAElBo1C,GA9CL,GA+FN2lG,EAAW,WACX,aACA,IAAeC,EAQf,SAASD,EAAS3gN,GACTA,GAAMA,EAAEwjE,IACT/yB,EAAEhyC,MAAM,mCAEZkD,KAAKk/M,IAAMpwK,EAAEzwC,EAAEwjE,IAsBnB,OAhCAo9I,EAAiB,CACb57H,OAAQ,WACR87H,aAAc,gBACdxsG,OAAQ,WACRysG,aAAc,iBAQlBvlM,EAAEg0B,MAAMmxK,EAASlkN,UAAW,CACxBukN,SAAU,SAAS/hN,EAAMmnB,GACrB,IAAI66L,EAAKxwK,EAAE+iD,MAfP,aAeyBv0F,GAE7B,OADA0C,KAAKk/M,IAAIx2M,QAAQ1N,KAAKgF,KAAKk/M,IAAKI,EAAI76L,GAAQ,IACrC66L,GAEX73J,OAAQ,SAASnqD,GACb,IAAImnB,EAGJ,OAFAA,EAAO,GAAG5kB,MAAM7E,KAAK8G,UAAW,GAC3B9B,KAAKq/M,SAAS,SAAW/hN,EAAMmnB,GAC1BslG,sBAEdrhH,QAAS,SAASpL,GACd,IAAIiiN,EACJv/M,KAAKq/M,SAAS/hN,EAAM,GAAGuC,MAAM7E,KAAK8G,UAAW,KACzCy9M,EAAiBN,EAAe3hN,KAChC0C,KAAKq/M,SAASE,EAAgB,GAAG1/M,MAAM7E,KAAK8G,UAAW,OAI5Dk9M,EApCI,GAsCX9wJ,EAAe,WACf,aACA,IAAIsxJ,EAAW,MAAOnpK,EAmEd12C,OAAOu6C,aACM,SAA8B56B,GACvC46B,GAAa,WACT56B,QAIK,SAA4BA,GACrCzhB,YAAW,WACPyhB,MACD,IA5Ef,MAAO,CACHmgM,OAyBJ,SAAgBnuM,EAAO8nE,EAAIjmE,GACvB,OAAOk6B,EAAGryC,KAAKgF,KAAM,OAAQsR,EAAO8nE,EAAIjmE,IAzBxCusM,QAqBJ,SAAiBpuM,EAAO8nE,EAAIjmE,GACxB,OAAOk6B,EAAGryC,KAAKgF,KAAM,QAASsR,EAAO8nE,EAAIjmE,IArBzCyjC,IA0BJ,SAAatlC,GACT,IAAIhU,EACJ,IAAK0C,KAAKizK,WACN,OAAOjzK,KAGX,IADAsR,EAAQA,EAAMga,MAAMk0L,GACbliN,EAAOgU,EAAMjW,gBACT2E,KAAKizK,WAAW31K,GAE3B,OAAO0C,MAlCP0I,QAoCJ,SAAiB4I,GACb,IAAIhU,EAAMqiN,EAAWl7L,EAAMm7L,EAAWC,EACtC,IAAK7/M,KAAKizK,WACN,OAAOjzK,KAIX,IAFAsR,EAAQA,EAAMga,MAAMk0L,GACpB/6L,EAAO,GAAG5kB,MAAM7E,KAAK8G,UAAW,IACxBxE,EAAOgU,EAAMjW,WAAaskN,EAAY3/M,KAAKizK,WAAW31K,KAC1DsiN,EAAYE,EAASH,EAAUh+H,KAAM3hF,KAAM,CAAE1C,GAAO6G,OAAOsgB,IAC3Do7L,EAAaC,EAASH,EAAUthJ,MAAOr+D,KAAM,CAAE1C,GAAO6G,OAAOsgB,IAC7Dm7L,KAAevpK,EAASwpK,GAE5B,OAAO7/M,OA9CX,SAASqtC,EAAGnyB,EAAQ5J,EAAO8nE,EAAIjmE,GAC3B,IAAI7V,EACJ,IAAK87E,EACD,OAAOp5E,KAKX,IAHAsR,EAAQA,EAAMga,MAAMk0L,GACpBpmI,EAAKjmE,EAqET,SAAqBmM,EAAInM,GACrB,OAAOmM,EAAGngB,KAAOmgB,EAAGngB,KAAKgU,GAAW,WAChCmM,EAAGrb,MAAMkP,EAAS,GAAGtT,MAAM7E,KAAK8G,UAAW,KAvEhCi+M,CAAY3mI,EAAIjmE,GAAWimE,EAC1Cp5E,KAAKizK,WAAajzK,KAAKizK,YAAc,GAC9B31K,EAAOgU,EAAMjW,SAChB2E,KAAKizK,WAAW31K,GAAQ0C,KAAKizK,WAAW31K,IAAS,CAC7CqkF,KAAM,GACNtjB,MAAO,IAEXr+D,KAAKizK,WAAW31K,GAAM4d,GAAQhgB,KAAKk+E,GAEvC,OAAOp5E,KAiCX,SAAS8/M,EAASH,EAAWxsM,EAASsR,GAClC,OACA,WAEI,IADA,IAAIo4D,EACKniF,EAAI,EAAGsnB,EAAM29L,EAAU/kN,QAASiiF,GAAaniF,EAAIsnB,EAAKtnB,GAAK,EAChEmiF,GAAkD,IAAtC8iI,EAAUjlN,GAAGuJ,MAAMkP,EAASsR,GAE5C,OAAQo4D,IAhED,GA0Ff0hI,EAAY,SAASllK,GACrB,aACA,IAAI1sC,EAAW,CACXuuC,KAAM,KACN0+D,QAAS,KACT2gD,QAAS,SACTj1E,UAAW,KACX06H,WAAW,EACXpvM,eAAe,EACfqvM,sBAAsB,GAEtBC,EAAW,CACXr1C,EAAG,wDACHS,EAAG,0BACH9zH,EAAG,mCACHjR,EAAG,wCACHpR,EAAG,0CACH+gH,EAAG,yBACH0E,EAAG,oCACH17F,EAAG,iCACHisH,EAAG,6DACHtwB,EAAG,uBACHC,EAAG,uCACH/oH,EAAG,yCACHhF,EAAG,kDACHs+I,EAAG,qCACHrkH,EAAG,8CACHyqB,EAAG,iCACH46F,EAAG,cACHnB,EAAG,qCACHnwB,EAAG,iCACHp8F,EAAG,+BACHq8F,EAAG,wCACH0wB,EAAG,+BACHx2I,EAAG,wBACHg3I,EAAG,yBACH5lI,EAAG,4BACHq0G,EAAG,4BAEP,OAAO,SAAoBt8I,GACvB,IAAI2qB,GACJ3qB,EAAIwb,EAAEg0B,MAAM,GAAIlhC,EAAUtO,IACnB68C,MAAS78C,EAAEu7G,UAGlBv7G,EAAEu7G,QAAU//F,EAAElZ,QAAQtC,EAAEu7G,SAAWv7G,EAAEu7G,QAAU,CAAEv7G,EAAEu7G,SACnD5wF,EA6BJ,SAAkBm3L,EAAUvvM,EAAeovM,EAAWC,GAElD,IADA,IAA0BnkE,EAAtBskE,EAAkB,GACb1lN,EAAI,EAAGsnB,EAAMm+L,EAASvlN,OAAQF,EAAIsnB,EAAKtnB,IAAK,CACjD,IAAI2lN,EAAcxmM,EAAE6+D,iBAAiBynI,EAASzlN,IAC1CulN,IACAI,EAAcA,EAAYt5M,QAAQ,MAAOu5M,IAE7CF,EAAgBllN,KAAKmlN,GAGzB,OADAvkE,EAAWkkE,EAAY,OAASI,EAAgBp4M,KAAK,KAAO,OAAS,IAAMo4M,EAAgBp4M,KAAK,KAAO,IAChG4I,EAAgB,IAAIwY,OAAO0yH,GAAY,IAAI1yH,OAAO0yH,EAAU,KAvC3DykE,CAASliN,EAAEu7G,QAASv7G,EAAEuS,cAAevS,EAAE2hN,UAAW3hN,EAAE4hN,sBAc5D,SAASO,EAAS3+I,EAAI4+I,GAElB,IADA,IAAIC,EACKhmN,EAAI,EAAGA,EAAImnE,EAAGqB,WAAWtoE,OAAQF,IADV,KAE5BgmN,EAAY7+I,EAAGqB,WAAWxoE,IACZo+E,SACVp+E,GAAK+lN,EAAmBC,GAAa,EAAI,EAEzCF,EAASE,EAAWD,GApBhCD,CAASniN,EAAE68C,MACX,SAA4BylK,GACxB,IAAIp5L,EAAOq5L,EAAaC,EASxB,OARIt5L,EAAQyB,EAAM0N,KAAKiqL,EAAStmN,SAC5BwmN,EAAcxnK,EAAI/8C,cAAc+B,EAAEk8J,SAClCl8J,EAAEinF,YAAcu7H,EAAYv7H,UAAYjnF,EAAEinF,YAC1Cs7H,EAAcD,EAASG,UAAUv5L,EAAM5d,QAC3Bm3M,UAAUv5L,EAAM,GAAG3sB,QAC/BimN,EAAY9iN,YAAY6iN,EAAY15F,WAAU,IAC9Cy5F,EAASr/I,WAAWysD,aAAa8yF,EAAaD,MAEzCr5L,OAcjB,SAAS+4L,EAAgBS,GACrB,OAAOb,EAASa,EAAIh9K,gBAAkBg9K,GAzE9B,CAuFdphN,OAAOtD,UACL2kN,EAAQ,WACR,aACA,IAAIC,EAUJ,SAASD,EAAM3iN,EAAGmgN,GA+LlB,IAA6B0C,GA9LzB7iN,EAAIA,GAAK,IACF0gB,OACH+vB,EAAEhyC,MAAM,oBAEZ0hN,EAAI3wK,MAAM7tC,MACVA,KAAKmhN,MAAQryK,EAAEzwC,EAAE6/M,MACjBl+M,KAAKkhN,OAASpyK,EAAEzwC,EAAE0gB,OAClB/e,KAAKkhN,OAAO7wK,KAAK,CACb,wBAAyB,GACzB,YAAarwC,KAAKkhN,OAAO7wK,KAAK,MAAQ,WACtC6gK,KAAM,WACN,gBAAiB,OACjB,oBAAqB,SAEzBpiK,EAAE0vK,EAAIL,MAAM9tK,KAAK,KAAMrwC,KAAKkhN,OAAO7wK,KAAK,MAAQ,YAChDrwC,KAAK4+E,MAAQ5+E,KAAKkhN,OAAOzgN,MACzBT,KAAKohN,iBAAmBphN,KAAK66G,WAAa76G,KAAK4+E,MAAQ,KACvD5+E,KAAKqhN,iBA6KoBH,EA7KkBlhN,KAAKkhN,OA8KzCpyK,EAAE,kCAAkC6xB,IAAI,CAC3CgvD,SAAU,WACVY,WAAY,SACZ+wF,WAAY,MACZC,WAAYL,EAAOvgJ,IAAI,eACvB6gJ,SAAUN,EAAOvgJ,IAAI,aACrB8gJ,UAAWP,EAAOvgJ,IAAI,cACtB+gJ,YAAaR,EAAOvgJ,IAAI,gBACxB+vD,WAAYwwF,EAAOvgJ,IAAI,eACvBghJ,YAAaT,EAAOvgJ,IAAI,gBACxB8vD,cAAeywF,EAAOvgJ,IAAI,kBAC1BihJ,WAAYV,EAAOvgJ,IAAI,eACvBkhJ,cAAeX,EAAOvgJ,IAAI,kBAC1BmhJ,cAAeZ,EAAOvgJ,IAAI,oBAC3BstD,YAAYizF,IA3LflhN,KAAK+hN,0BACqB,IAAtB/hN,KAAKmhN,MAAMvmN,SACXoF,KAAKgiN,QAAUhiN,KAAKiiN,QAAUjiN,KAAKkiN,UAAYliN,KAAKmiN,mBAAqBtoM,EAAEu8B,MAE/Ep2C,KAAKy/M,OAAO,eAAgBz/M,KAAKoiN,mBAuKrC,OAvMAnB,EAAoB,CAChBpqJ,EAAG,MACHswC,GAAI,MACJk7G,GAAI,OACJC,GAAI,QACJrrJ,GAAI,QACJsrJ,GAAI,KACJjxD,GAAI,QA2BR0vD,EAAMwB,eAAiB,SAASrzJ,GAC5B,OAAOt1C,EAAEm/D,MAAM7pB,GAAKpoD,QAAQ,QAAS,IAAIA,QAAQ,UAAW,MAEhE8S,EAAEg0B,MAAMmzK,EAAMlmN,UAAWozD,EAAc,CACnCu0J,QAAS,WACLziN,KAAK0iN,kBACL1iN,KAAK0I,QAAQ,YAEjBi6M,SAAU,WACN3iN,KAAKohN,iBAAmBphN,KAAK4+E,MAC7B5+E,KAAK0I,QAAQ,YAEjBk6M,WAAY,SAAmBtD,GAC3B,IAAIuD,EAAU5B,EAAkB3B,EAAG1zF,OAAS0zF,EAAGv0F,SAC/C/qH,KAAK8iN,sBAAsBD,EAASvD,GAChCuD,GAAW7iN,KAAK+iN,eAAeF,EAASvD,IACxCt/M,KAAK0I,QAAQm6M,EAAU,QAASvD,IAGxC0D,SAAU,WACNhjN,KAAKijN,UAAUjjN,KAAKkjN,iBACpBljN,KAAKmiN,qBACLniN,KAAK+hN,2BAETe,sBAAuB,SAA8BD,EAASvD,GAC1D,IAAIn2F,EACJ,OAAQ05F,GACN,IAAK,KACL,IAAK,OACH15F,GAAkBg6F,EAAa7D,GAC/B,MAEF,QACEn2F,GAAiB,EAErBA,GAAkBm2F,EAAGn2F,kBAEzB45F,eAAgB,SAAuBF,EAASvD,GAC5C,IAAI52M,EACJ,OAAQm6M,GACN,IAAK,MACHn6M,GAAWy6M,EAAa7D,GACxB,MAEF,QACE52M,GAAU,EAEd,OAAOA,GAEXq5M,wBAAyB,WACrB,IAAIzqK,GAAOt3C,KAAKkhN,OAAOvgJ,IAAI,cAAgB,OAAOplD,cAC9Cvb,KAAKs3C,MAAQA,IACbt3C,KAAKs3C,IAAMA,EACXt3C,KAAKmhN,MAAM9wK,KAAK,MAAOiH,GACvBt3C,KAAK0I,QAAQ,iBAAkB4uC,KAGvC2rK,UAAW,SAAkBxiN,EAAKuvD,GAC9B,IAAIozJ,EAAeC,EA6HG3xM,EAAGC,EAAHD,EA5HejR,EA4HZkR,EA5HiB3R,KAAK4+E,MAC/CykI,KADAD,EA6HGpC,EAAMwB,eAAe9wM,KAAOsvM,EAAMwB,eAAe7wM,KA5HX3R,KAAK4+E,MAAMhkF,SAAW6F,EAAI7F,OACnEoF,KAAK4+E,MAAQn+E,EACRuvD,GAAWozJ,GAEJpzJ,GAAUqzJ,GAClBrjN,KAAK0I,QAAQ,oBAAqB1I,KAAK4+E,OAFvC5+E,KAAK0I,QAAQ,eAAgB1I,KAAK4+E,QAK1CwjI,kBAAmB,SAA0BplN,EAAOuf,GAChDvc,KAAKkhN,OAAO7wK,KAAK,wBAAyB9zB,IAE9Cpd,KAAM,WACF,IAAiBmkN,EAAQC,EAASC,EAAWC,EAAzC5jL,EAAO7/B,KAgBX,OAfAsjN,EAASzpM,EAAE1a,KAAKa,KAAKyiN,QAASziN,MAC9BujN,EAAU1pM,EAAE1a,KAAKa,KAAK2iN,SAAU3iN,MAChCwjN,EAAY3pM,EAAE1a,KAAKa,KAAK4iN,WAAY5iN,MACpCyjN,EAAU5pM,EAAE1a,KAAKa,KAAKgjN,SAAUhjN,MAChCA,KAAKkhN,OAAO7zK,GAAG,UAAWi2K,GAAQj2K,GAAG,WAAYk2K,GAASl2K,GAAG,aAAcm2K,IACtE3pM,EAAE2+D,UAAY3+D,EAAE2+D,SAAW,EAC5Bx4E,KAAKkhN,OAAO7zK,GAAG,WAAYo2K,GAE3BzjN,KAAKkhN,OAAO7zK,GAAG,0CAA0C,SAASiyK,GAC1D2B,EAAkB3B,EAAG1zF,OAAS0zF,EAAGv0F,UAGrClxG,EAAE8/D,MAAM9/D,EAAE1a,KAAK0gC,EAAKmjL,SAAUnjL,EAAMy/K,OAGrCt/M,MAEX4pH,MAAO,WACH5pH,KAAKkhN,OAAOt3F,SAEhBC,KAAM,WACF7pH,KAAKkhN,OAAOr3F,QAEhB65F,WAAY,WACR,OAAO1jN,KAAKs3C,KAEhBqsK,SAAU,WACN,OAAO3jN,KAAK4+E,OAAS,IAEzBglI,SAAU,SAAkBnjN,EAAKuvD,GAC7BhwD,KAAK6jN,cAAcpjN,GACnBT,KAAKijN,UAAUxiN,EAAKuvD,IAExB8zJ,8BAA+B,WAC3B,OAAO9jN,KAAK4+E,QAAU5+E,KAAKohN,kBAE/B8B,cAAe,WACX,OAAOljN,KAAKkhN,OAAOzgN,OAEvBojN,cAAe,SAAuBjlN,GAClCoB,KAAKkhN,OAAOzgN,IAAI7B,GAChBoB,KAAKmiN,qBACLniN,KAAK+hN,2BAETW,gBAAiB,WACb1iN,KAAK6jN,cAAc7jN,KAAK4+E,QAE5BqjI,QAAS,WACL,OAAOjiN,KAAKmhN,MAAM1gN,OAEtBuhN,QAAS,SAAiBpjN,GACtBoB,KAAKmhN,MAAM1gN,IAAI7B,IAEnBsjN,UAAW,WACPliN,KAAKgiN,QAAQ,KAEjBG,mBAAoB,WAChB,IAAI1hN,EAAKy9M,EAAM6F,EAGfA,GAFAtjN,EAAMT,KAAKkjN,oBACXhF,EAAOl+M,KAAKiiN,YAC8C,IAAtB/D,EAAK7sM,QAAQ5Q,IAC/B,KAARA,IAAcsjN,GAAsB/jN,KAAKgkN,gBACvChkN,KAAKkiN,aAErBrnG,SAAU,WACN,OAAO76G,KAAKkhN,OAAO3sK,GAAG,WAE1ByvK,YAAa,WACT,IAAIC,EAAajkN,KAAKkhN,OAAO5sK,QAAU,EAEvC,OADAt0C,KAAKqhN,gBAAgBn4J,KAAKlpD,KAAKkjN,iBACxBljN,KAAKqhN,gBAAgB/sK,SAAW2vK,GAE3CC,cAAe,WACX,IAAIC,EAAaC,EAAgB9vE,EAGjC,OAFA6vE,EAAcnkN,KAAKkhN,OAAOzgN,MAAM7F,OAChCwpN,EAAiBpkN,KAAKkhN,OAAO,GAAGkD,eAC5BvqM,EAAEsF,SAASilM,GACJA,IAAmBD,GACnB9nN,SAASuqH,aAChB0tB,EAAQj4I,SAASuqH,UAAUy9F,eACrBC,UAAU,aAAcH,GACvBA,IAAgB7vE,EAAMprF,KAAKtuD,SAI1Ck7I,QAAS,WACL91I,KAAKmhN,MAAMvqK,IAAI,OACf52C,KAAKkhN,OAAOtqK,IAAI,OAChB52C,KAAKqhN,gBAAgBvxK,SACrB9vC,KAAKmhN,MAAQnhN,KAAKkhN,OAASlhN,KAAKqhN,gBAAkBvyK,EAAE,YAGrDkyK,EAqBP,SAASmC,EAAa7D,GAClB,OAAOA,EAAGj1F,QAAUi1F,EAAG90F,SAAW80F,EAAG50F,SAAW40F,EAAGz0F,UAhO/C,GAmOR05F,EAAU,WACV,aACA,IAAIhwM,EAAMiwM,EAOV,SAASD,EAAQlmN,EAAGmgN,GAqMpB,IAAqBrvJ,EAnBCw1D,EAOA8/F,EAAWC,GAxL7BrmN,EAAIA,GAAK,IACPomN,UAAYpmN,EAAEomN,WAAa,GAC7BpmN,EAAEomN,UAAUE,SAAWtmN,EAAEomN,UAAUE,UAAYtmN,EAAEomN,UAAUtkM,MACtD9hB,EAAEgmC,QACHyK,EAAEhyC,MAAM,kBAEPuB,EAAE68C,MACHpM,EAAEhyC,MAAM,gBAERuB,EAAEX,OA2LWyxD,EA3LU9wD,EAAEX,MA4LtB,mBAAmB0E,KAAK+sD,KA3L3BrgB,EAAEhyC,MAAM,yBAA2BuB,EAAEX,MAEzC8gN,EAAI3wK,MAAM7tC,MACVA,KAAKu+M,YAAclgN,EAAEkgN,UACrBv+M,KAAKtC,KAAOmc,EAAEm/D,MAAM36E,EAAEX,MAAQ8mN,KAC9BxkN,KAAK2nC,MAAQtpC,EAAEspC,OAAS,EACxB3nC,KAAK0kN,WAkKL//F,GADkBA,EAjKYtmH,EAAEsmH,SAAWtmH,EAAEumN,aAkKxB/qM,EAAEzI,UAChByI,EAAEgL,WAAW8/F,GAAWA,EAC/B,SAAmB5jH,GACf,OAAOA,EAAI4jH,KApKf3kH,KAAKykN,WAuKaA,EAvKYpmN,EAAEomN,UAuKHC,EAvKc1kN,KAAK0kN,UAwKzC,CACHC,SAAUF,EAAUE,UAAY9qM,EAAE6/D,WAAW+qI,EAAUE,UACvDn3M,QAASi3M,EAAUj3M,SAAWqM,EAAE6/D,WAAW+qI,EAAUj3M,SACrD8pK,OAAQmtC,EAAUntC,QAAUz9J,EAAE6/D,WAAW+qI,EAAUntC,QACnDutC,OAAQJ,EAAUI,QAAUhrM,EAAE6/D,WAAW+qI,EAAUI,QACnDzG,WAAYqG,EAAUrG,YAE1B,SAA4BjrM,GACxB,OAAO27B,EAAE,uBAAuBuB,KAAK,KAAMx2B,EAAEsgE,QAAQjxB,KAAKw7J,EAAUvxM,OA/KxEnT,KAAKqkC,OAAShmC,EAAEgmC,OAAOq9C,YAAcrjF,EAAEgmC,OAAOq9C,cAAgBrjF,EAAEgmC,OAChErkC,KAAKq+D,MAAQxkD,EAAEqF,YAAY7gB,EAAEggE,OAASr+D,KAAKqkC,OAAOzpC,OAAS,IAAMyD,EAAEggE,MACnEr+D,KAAK8kN,uBACL9kN,KAAKk/M,IAAMpwK,EAAEzwC,EAAE68C,MAAM7K,KAAK,OAAQ,gBAAgBC,SAAStwC,KAAKs3H,QAAQgf,SAAShmG,SAAStwC,KAAKs3H,QAAQgf,QAAU,IAAMt2I,KAAKtC,MA2JhI,OAvLA6W,EAAO,CACH+hI,QAAS,wBACT71I,IAAK,wBACLM,IAAK,wBAETyjN,EAAgB3qM,EAAE2/D,iBAyBlB+qI,EAAQQ,YAAc,SAAqBljJ,GACvC,IAAIq9I,EAAMpwK,EAAE+yB,GACZ,OAAIq9I,EAAI7kN,KAAKka,EAAKxT,KACP,CACHu1I,QAAS4oE,EAAI7kN,KAAKka,EAAK+hI,UAAY,GACnC71I,IAAKy+M,EAAI7kN,KAAKka,EAAK9T,MAAQ,GAC3BM,IAAKm+M,EAAI7kN,KAAKka,EAAKxT,MAAQ,MAG5B,MAEX8Y,EAAEg0B,MAAM02K,EAAQzpN,UAAWozD,EAAc,CACrC82J,WAAY,SAAmBpmI,EAAOqmI,IAClCA,EAAcA,GAAe,IACbrqN,OACZoF,KAAKklN,mBAAmBtmI,EAAOqmI,GACxBjlN,KAAKq+D,OAASr+D,KAAKykN,UAAUj3M,QACpCxN,KAAKmlN,eAAevmI,IACZ5+E,KAAKq+D,OAASr+D,KAAKykN,UAAUE,SACrC3kN,KAAKolN,gBAAgBxmI,GAErB5+E,KAAKqlN,SAETrlN,KAAK0I,QAAQ,WAAYu8M,GAAa,EAAOjlN,KAAKtC,OAEtD62J,QAAS,SAAgB31E,EAAOqmI,IAC5BA,EAAcA,GAAe,IACbrqN,QAAUoF,KAAKslN,gBAAgB1qN,OAC3CoF,KAAKulN,mBAAmB3mI,EAAOqmI,GACxBA,EAAYrqN,OACnBoF,KAAKklN,mBAAmBtmI,EAAOqmI,IACvBjlN,KAAKslN,gBAAgB1qN,QAAUoF,KAAKykN,UAAUE,UACtD3kN,KAAKolN,gBAAgBxmI,GAEzB5+E,KAAK0I,QAAQ,WAAYu8M,GAAa,EAAMjlN,KAAKtC,OAErDwnN,mBAAoB,SAA2BtmI,EAAOqmI,GAClD,IAAIO,EACJA,EAAYxlN,KAAKylN,wBAAwB7mI,EAAOqmI,GAChDjlN,KAAKslN,gBAAkBE,EAAU51K,WAAWg/B,OAC5C5uE,KAAKk/M,IAAI12J,KAAKg9J,GAAWtzK,QAAQlyC,KAAK0lN,WAAW9mI,EAAOqmI,IAAcn6K,OAAO9qC,KAAK2lN,WAAW/mI,EAAOqmI,KAExGM,mBAAoB,SAA2B3mI,EAAOqmI,GAClD,IAAIO,EAAWF,EAEfA,GADAE,EAAYxlN,KAAKylN,wBAAwB7mI,EAAOqmI,IACpBr1K,WAAWg/B,OACvC5uE,KAAKslN,gBAAgB59J,MAAM89J,GAC3BxlN,KAAKslN,gBAAkBA,GAE3BH,eAAgB,SAAuBvmI,GACnC,IAAIoE,EAAWhjF,KAAKykN,UAAUj3M,QAC9BxN,KAAK8kN,uBACL9hI,GAAYhjF,KAAKk/M,IAAI12J,KAAKw6B,EAAS,CAC/BpE,MAAOA,EACP03D,QAASt2I,KAAKtC,SAGtB0nN,gBAAiB,SAAwBxmI,GACrC,IAAIoE,EAAWhjF,KAAKykN,UAAUE,SAC9B3kN,KAAK8kN,uBACL9hI,GAAYhjF,KAAKk/M,IAAI12J,KAAKw6B,EAAS,CAC/BpE,MAAOA,EACP03D,QAASt2I,KAAKtC,SAGtB2nN,OAAQ,WACJrlN,KAAKk/M,IAAI/+L,QACTngB,KAAK8kN,wBAETW,wBAAyB,SAAgC7mI,EAAOqmI,GAC5D,IAAiBhjN,EAAb49B,EAAO7/B,KAaX,OAZAiC,EAAW5F,SAAS0qH,yBACpBltG,EAAEq/D,KAAK+rI,GAAa,SAA2B7G,GAC3C,IAAIc,EAAK/rM,EACTA,EAAU0sB,EAAK+lL,aAAahnI,EAAOw/H,GACnCc,EAAMpwK,EAAEjP,EAAK4kL,UAAUrG,WAAWjrM,IAAU9Y,KAAKka,EAAK+hI,QAASz2G,EAAKniC,MAAMrD,KAAKka,EAAKxT,IAAKq9M,GAAY/jN,KAAKka,EAAK9T,IAAKo/B,EAAK6kL,UAAUtG,IAAa9tK,SAASzQ,EAAKy3F,QAAQ8mF,WAAa,IAAMv+K,EAAKy3F,QAAQ+mF,YACtMp8M,EAASlE,YAAYmhN,EAAI,OAE7Bl/M,KAAKu+M,WAAaA,EAAU,CACxBj5H,UAAWtlF,KAAKs3H,QAAQinF,UACxBrjK,KAAMj5C,EACN23G,QAASh7B,IAEN9vC,EAAE7sC,IAEb0jN,WAAY,SAAmB/mI,EAAOqmI,GAClC,OAAOjlN,KAAKykN,UAAUI,OAAS7kN,KAAKykN,UAAUI,OAAO,CACjDjmI,MAAOA,EACPqmI,YAAaA,EACb3uE,QAASt2I,KAAKtC,OACb,MAETgoN,WAAY,SAAmB9mI,EAAOqmI,GAClC,OAAOjlN,KAAKykN,UAAUntC,OAASt3K,KAAKykN,UAAUntC,OAAO,CACjD14F,MAAOA,EACPqmI,YAAaA,EACb3uE,QAASt2I,KAAKtC,OACb,MAETonN,qBAAsB,WAClB9kN,KAAKslN,gBAAkBx2K,KAE3B82K,aAAc,SAAqBhnI,EAAO79E,GACtC,OAAO8Y,EAAEoF,SAASle,GAAO8Y,EAAEg0B,MAAM,CAC7Bg4K,OAAQjnI,GACT79E,GAAOA,GAEd2b,OAAQ,SAAgBkiE,GACpB,IAAI/+C,EAAO7/B,KAAMmJ,GAAW,EAAO28M,GAAa,EAAOC,EAAW,EASlE,SAASpkI,EAAKsjI,GACNa,IAGJA,GAAa,EACbb,GAAeA,GAAe,IAAIplN,MAAM,EAAGggC,EAAK8H,OAChDo+K,EAAWd,EAAYrqN,OACvBilC,EAAKmlL,WAAWpmI,EAAOqmI,GACnBc,EAAWlmL,EAAK8H,OAAS9H,EAAKw+B,OAC9Bx+B,EAAKn3B,QAAQ,iBAAkBk2E,EAAO/+C,EAAKniC,OAjBnDsC,KAAK+J,SACL/J,KAAK+J,OAAS,WACVZ,GAAW,EACX02B,EAAK91B,OAAS+kC,EAAEsH,KAChBvW,EAAKw+B,OAASx+B,EAAKn3B,QAAQ,gBAAiBk2E,EAAO/+C,EAAKniC,OAE5DsC,KAAKqkC,OAAOu6C,EAAO+C,GAcnB,SAAesjI,GAEX,GADAA,EAAcA,GAAe,IACxB97M,GAAY48M,EAAWlmL,EAAK8H,MAAO,CACpC9H,EAAK91B,OAAS+kC,EAAEsH,KAChB,IAAI+hB,EAAMh1C,KAAKa,IAAI+hM,EAAWlmL,EAAK8H,OACnCo+K,GAAY5tJ,EACZt4B,EAAK00H,QAAQ31E,EAAOqmI,EAAYplN,MAAM,EAAGs4D,IACzCt4B,EAAKw+B,OAASx+B,EAAKn3B,QAAQ,gBAAiBk2E,EAAO/+C,EAAKniC,WApB/DooN,GAAcnkI,EAAK,KAwBxB53E,OAAQ+kC,EAAEsH,KACV/G,MAAO,WACHrvC,KAAKqlN,SACLrlN,KAAK+J,SACL/J,KAAK0I,QAAQ,YAEjB4gI,QAAS,WACL,OAAOtpI,KAAKk/M,IAAI3qK,GAAG,WAEvBuhG,QAAS,WACL91I,KAAKk/M,IAAMpwK,EAAE,YAGdy1K,EA1LG,GAkNVyB,EAAO,WACP,aACA,SAASA,EAAK3nN,EAAGmgN,GACb,IAAI3+K,EAAO7/B,MACX3B,EAAIA,GAAK,IACF68C,MACHpM,EAAEhyC,MAAM,oBAEZ0hN,EAAI3wK,MAAM7tC,MACVA,KAAKimN,MAAQn3K,EAAEzwC,EAAE68C,MACjBl7C,KAAK4+E,MAAQ,KACb5+E,KAAKkmN,SAAWrsM,EAAElV,IAAItG,EAAE6nN,UACxB,SAA2BC,GACvB,IAAIjrK,EAAOrb,EAAKomL,MAAMjgN,KAAKmgN,EAASjrK,MAAM3oC,QAE1C,OADA4zM,EAASjrK,KAAOA,EAAKtgD,OAASsgD,EAAOpM,EAAE,SAAS0B,SAAS3Q,EAAKomL,OACvD,IAAI1B,EAAQ4B,EAAU3H,MAkIrC,OA/HA3kM,EAAEg0B,MAAMm4K,EAAKlrN,UAAWozD,EAAc,CAClCk4J,mBAAoB,SAA2B9G,GAC3Ct/M,KAAK0I,QAAQ,oBAAqBomC,EAAEwwK,EAAGt2F,iBAE3Cq9F,YAAa,SAAoB/oN,EAAMg5I,EAAS2uE,EAAa5mJ,GACzDr+D,KAAKimN,MAAMvuF,YAAY13H,KAAKs3H,QAAQn3G,MAAOngB,KAAKsmN,qBAChDtmN,KAAK0I,QAAQ,kBAAmB4tI,EAAS2uE,EAAa5mJ,IAE1DkoJ,WAAY,WACRvmN,KAAKimN,MAAMvuF,YAAY13H,KAAKs3H,QAAQn3G,MAAOngB,KAAKsmN,qBAChDtmN,KAAK0I,QAAQ,mBAEjB89M,WAAY,WACRxmN,KAAK0I,QAAQzE,MAAMjE,KAAM8B,YAE7BwkN,kBAAmB,WACf,OAAOzsM,EAAEy/D,MAAMt5E,KAAKkmN,SAAUrsM,EAAE1a,MAAK,SAAwBm3I,GACzD,IAAIhN,EAAUgN,EAAQhN,UAEtB,OADAtpI,KAAKimN,MAAM51K,KAAK,iBAAkBi5F,GAC3BA,IACRtpI,QAEPymN,gBAAiB,WACb,OAAOzmN,KAAKimN,MAAMjgN,KAAKhG,KAAKq5G,UAAUglG,aAE1CqI,cAAe,WACX,IAAIC,EAAc3mN,KAAK4mN,sBACvBD,GAAeA,EAAYniI,YAAYxkF,KAAKs3H,QAAQgnF,SAExDuI,eAAgB,SAAuB3H,GACnC,IAAI4H,EAAOC,EAAUC,EAAeC,EAEpCF,GADAD,EAAQ5H,EAAIvvF,WAAWpY,KACJ2nG,EAAIgI,aAAY,GACnCF,EAAgBhnN,KAAKimN,MAAMxzF,YAC3Bw0F,EAAajnN,KAAKimN,MAAMxyF,SAAWnpG,SAAStqB,KAAKimN,MAAMtlJ,IAAI,cAAe,IAAMr2C,SAAStqB,KAAKimN,MAAMtlJ,IAAI,iBAAkB,IACtHmmJ,EAAQ,EACR9mN,KAAKimN,MAAMxzF,UAAUu0F,EAAgBF,GAC9BG,EAAaF,GACpB/mN,KAAKimN,MAAMxzF,UAAUu0F,GAAiBD,EAAWE,KAGzD9nN,KAAM,WACF,IAAiBgoN,EAAbtnL,EAAO7/B,KAYX,OAXAmnN,EAAoBttM,EAAE1a,KAAKa,KAAKomN,mBAAoBpmN,MACpDA,KAAKimN,MAAM54K,GAAG,WAAYrtC,KAAKq5G,UAAUglG,WAAY8I,GACrDnnN,KAAKimN,MAAM54K,GAAG,YAAartC,KAAKq5G,UAAUglG,YAAY,WAClDx+K,EAAKunL,UAAUt4K,EAAE9uC,UAErBA,KAAKimN,MAAM54K,GAAG,cAAc,WACxBxN,EAAK6mL,mBAET7sM,EAAEq/D,KAAKl5E,KAAKkmN,UAAU,SAAS5vE,GAC3BA,EAAQmpE,OAAO,iBAAkB5/K,EAAK2mL,WAAY3mL,GAAM4/K,OAAO,gBAAiB5/K,EAAK2mL,WAAY3mL,GAAM4/K,OAAO,gBAAiB5/K,EAAK2mL,WAAY3mL,GAAM4/K,OAAO,WAAY5/K,EAAKwmL,YAAaxmL,GAAM4/K,OAAO,UAAW5/K,EAAK0mL,WAAY1mL,MAEjO7/B,MAEXmxI,OAAQ,WACJ,OAAOnxI,KAAKimN,MAAM9gI,SAASnlF,KAAKs3H,QAAQ77E,OAE5CA,KAAM,WACFz7C,KAAKimN,MAAMxzF,UAAU,GACrBzyH,KAAKimN,MAAM31K,SAAStwC,KAAKs3H,QAAQ77E,OAErCoqB,MAAO,WACH7lE,KAAKimN,MAAM51K,KAAK,iBAAiB,GACjCrwC,KAAKimN,MAAMzhI,YAAYxkF,KAAKs3H,QAAQ77E,MACpCz7C,KAAK0mN,iBAETW,qBAAsB,SAA8B/vK,GAChDt3C,KAAKimN,MAAM51K,KAAK,MAAOiH,IAE3BgwK,2BAA4B,SAAoCj2F,GAC5D,IAAIk2F,EAAcC,EAAsBj4E,EAOxC,OANAi4E,EAAaxnN,KAAK4mN,sBAClBW,EAAevnN,KAAKymN,mBAKC,KADrBl3E,GADAA,IADAA,GADWi4E,EAAaD,EAAa59M,MAAM69M,IAAe,GACpCn2F,GACC,IAAMk2F,EAAa3sN,OAAS,GAAK,IACjC,EAAI2sN,EAAa3sN,OAAS,EAAI20I,GAC5B,KAAOg4E,EAAa71G,GAAG69B,IAEpD63E,UAAW,SAAmBT,GAC1B3mN,KAAK0mN,iBACDC,EAAcA,GAAeA,EAAYp0M,WACzCo0M,EAAYr2K,SAAStwC,KAAKs3H,QAAQgnF,QAClCt+M,KAAK6mN,eAAeF,KAG5Bc,kBAAmB,SAA2BvI,GAC1C,OAAOA,GAAOA,EAAItkN,OAAS2pN,EAAQQ,YAAY7F,GAAO,MAE1D0H,oBAAqB,WACjB,IAAID,EAAc3mN,KAAKymN,kBAAkB5hN,OAAO7E,KAAKq5G,UAAUilG,QAAQ/rM,QACvE,OAAOo0M,EAAY/rN,OAAS+rN,EAAc,MAE9Ce,iBAAkB,WACd,IAAIf,EAAc3mN,KAAKymN,kBAAkBl0M,QACzC,OAAOo0M,EAAY/rN,OAAS+rN,EAAc,MAE9CjqM,OAAQ,SAAgBkiE,GACpB,IAAI+oI,EAAgB/oI,IAAU5+E,KAAK4+E,MAKnC,OAJI+oI,IACA3nN,KAAK4+E,MAAQA,EACb/kE,EAAEq/D,KAAKl5E,KAAKkmN,UAGhB,SAAuB5vE,GACnBA,EAAQ55H,OAAOkiE,OAFZ+oI,GAKXxnM,MAAO,WACHtG,EAAEq/D,KAAKl5E,KAAKkmN,UAGZ,SAAsB5vE,GAClBA,EAAQjnG,WAHZrvC,KAAK4+E,MAAQ,KACb5+E,KAAKimN,MAAM31K,SAAStwC,KAAKs3H,QAAQn3G,QAKrC21H,QAAS,WACL91I,KAAKimN,MAAMrvK,IAAI,OACf52C,KAAKimN,MAAQn3K,EAAE,SACfj1B,EAAEq/D,KAAKl5E,KAAKkmN,UACZ,SAAwB5vE,GACpBA,EAAQR,gBAIbkwE,EAjJA,GAmJP4B,EAAS,WACT,aACA,SAASA,EAAOpkN,GACZxD,KAAKk/M,IAAMpwK,EAAE,gBAAiB,CAC1BoiK,KAAM,SACN,YAAa,WACdvwI,IAAI,CACHgvD,SAAU,WACVsC,QAAS,IACTC,OAAQ,IACRuB,OAAQ,MACRn/E,MAAO,MACP,gBAAiB,OACjB,eAAgB,OAChBh0B,SAAU,SACVunM,KAAM,gBACN,cAAe,WAEnBrkN,EAAQ09M,OAAOx5J,MAAM1nD,KAAKk/M,KAC1BrlM,EAAEq/D,KAAK11E,EAAQ26M,KAAK+H,SAAUrsM,EAAE1a,MAAK,SAASm3I,GACtCA,EAAQmpE,SACRnpE,EAAQmpE,OAAO,WAAY5lM,EAAE1a,KAAKa,KAAK0c,OAAQ1c,OAC/Cs2I,EAAQmpE,OAAO,UAAW5lM,EAAE1a,KAAKa,KAAK8nN,QAAS9nN,UAEpDA,OAuBP,OArBA6Z,EAAEg0B,MAAM+5K,EAAO9sN,UAAW,CACtB4hB,OAAQ,SAAgB1f,EAAOioN,GAC3B,IACIrsK,EADAh+C,EAASqqN,EAAYrqN,OAGrBg+C,EADW,IAAXh+C,EACQ,CACJmV,OAAQ,SACRwkC,GAAI,MAGA,CACJxkC,OAAQ,UACRwkC,GAAI,OAGZv0C,KAAKk/M,IAAIh2J,KAAKtuD,EAAS,IAAMg+C,EAAM7oC,OAAS,IAAM6oC,EAAMrE,GAAK,wDAEjEuzK,QAAS,WACL9nN,KAAKk/M,IAAIh2J,KAAK,OAGf0+J,EA/CE,GAiDTG,EAAc,WACd,aACA,IAAIjoN,EAAIkmN,EAAKlrN,UACb,SAASitN,IACL/B,EAAK/hN,MAAMjE,KAAM,GAAGH,MAAM7E,KAAK8G,UAAW,IAsC9C,OApCA+X,EAAEg0B,MAAMk6K,EAAYjtN,UAAWkrN,EAAKlrN,UAAW,CAC3C2gD,KAAM,WAEF,OADCz7C,KAAKsmN,qBAAuBtmN,KAAK82E,QAC3Bh3E,EAAE27C,KAAKx3C,MAAMjE,KAAM,GAAGH,MAAM7E,KAAK8G,UAAW,KAEvD+jE,MAAO,WAEH,OADA7lE,KAAKg3E,QACEl3E,EAAE+lE,MAAM5hE,MAAMjE,KAAM,GAAGH,MAAM7E,KAAK8G,UAAW,KAExDukN,YAAa,WAMT,OALIrmN,KAAKsmN,oBACLtmN,KAAKg3E,QAELh3E,KAAKmxI,UAAYnxI,KAAK82E,QAEnBh3E,EAAEumN,YAAYpiN,MAAMjE,KAAM,GAAGH,MAAM7E,KAAK8G,UAAW,KAE9DykN,WAAY,WAMR,OALIvmN,KAAKsmN,oBACLtmN,KAAKg3E,QAELh3E,KAAKmxI,UAAYnxI,KAAK82E,QAEnBh3E,EAAEymN,WAAWtiN,MAAMjE,KAAM,GAAGH,MAAM7E,KAAK8G,UAAW,KAE7DulN,qBAAsB,SAA8B/vK,GAEhD,OADAt3C,KAAKimN,MAAMtlJ,IAAY,QAARrpB,EAAgBt3C,KAAK2gE,IAAIk+I,IAAM7+M,KAAK2gE,IAAIvuB,KAChDtyC,EAAEunN,qBAAqBpjN,MAAMjE,KAAM,GAAGH,MAAM7E,KAAK8G,UAAW,KAEvEk1E,MAAO,WACHh3E,KAAKimN,MAAMzzK,QAEfskC,MAAO,WACH92E,KAAKimN,MAAMtlJ,IAAI,UAAW,YAG3BonJ,EA1CO,GA4CdC,EAAY,WACZ,aACA,SAASA,EAAU3pN,EAAGmgN,GAClB,IAAIyJ,EAAWC,EAAWC,EAAcC,EAAYC,EAAYC,EAAWC,EAAaC,EAAaC,EAAcC,EAAgBC,GACnItqN,EAAIA,GAAK,IACF0gB,OACH+vB,EAAEhyC,MAAM,iBAEPuB,EAAE8/M,MACHrvK,EAAEhyC,MAAM,gBAEPuB,EAAEuqN,UACH95K,EAAEhyC,MAAM,qBAEZ0hN,EAAI3wK,MAAM7tC,MACVA,KAAK4oN,SAAWvqN,EAAEuqN,SAClB5oN,KAAK6oN,UAAYhvM,EAAEsF,SAAS9gB,EAAEwqN,WAAaxqN,EAAEwqN,UAAY,EACzD7oN,KAAK+e,MAAQ1gB,EAAE0gB,MACf/e,KAAKm+M,KAAO9/M,EAAE8/M,KACdn+M,KAAKy8D,SAAU,EACfz8D,KAAK8oN,aAAezqN,EAAEyqN,WACtB9oN,KAAK8rE,QAAS,EACd9rE,KAAK+e,MAAM87F,YAAc76G,KAAK4Y,WAC9B5Y,KAAKs3C,IAAMt3C,KAAK+e,MAAM2kM,aACtB1jN,KAAK+oN,SACL/oN,KAAKm+M,KAAKh/M,OAAOsgN,OAAO,oBAAqBz/M,KAAKgpN,qBAAsBhpN,MAAMy/M,OAAO,iBAAkBz/M,KAAKipN,kBAAmBjpN,MAAMy/M,OAAO,gBAAiBz/M,KAAKkpN,iBAAkBlpN,MAAMy/M,OAAO,gBAAiBz/M,KAAKmpN,iBAAkBnpN,MAAMy/M,OAAO,kBAAmBz/M,KAAKopN,mBAAoBppN,MAAMy/M,OAAO,iBAAkBz/M,KAAKqpN,kBAAmBrpN,MACzVioN,EAAY/pN,EAAE8B,KAAM,WAAY,OAAQ,cACxCkoN,EAAYhqN,EAAE8B,KAAM,aAAc,cAClCmoN,EAAejqN,EAAE8B,KAAM,WAAY,SAAU,iBAC7CooN,EAAalqN,EAAE8B,KAAM,WAAY,SAAU,eAC3CqoN,EAAanqN,EAAE8B,KAAM,WAAY,eACjCsoN,EAAYpqN,EAAE8B,KAAM,WAAY,OAAQ,cACxCuoN,EAAcrqN,EAAE8B,KAAM,WAAY,OAAQ,gBAC1CwoN,EAActqN,EAAE8B,KAAM,WAAY,SAAU,gBAC5CyoN,EAAevqN,EAAE8B,KAAM,WAAY,SAAU,iBAC7C0oN,EAAiBxqN,EAAE8B,KAAM,gBAAiB,mBAC1C2oN,EAAsBzqN,EAAE8B,KAAM,gBAAiB,wBAC/CA,KAAK+e,MAAM5f,OAAOsgN,OAAO,UAAWwI,EAAWjoN,MAAMy/M,OAAO,UAAWyI,EAAWloN,MAAMy/M,OAAO,aAAc0I,EAAcnoN,MAAMy/M,OAAO,WAAY2I,EAAYpoN,MAAMy/M,OAAO,WAAY4I,EAAYroN,MAAMy/M,OAAO,UAAW6I,EAAWtoN,MAAMy/M,OAAO,YAAa8I,EAAavoN,MAAMy/M,OAAO,YAAa+I,EAAaxoN,MAAMy/M,OAAO,aAAcgJ,EAAczoN,MAAMy/M,OAAO,eAAgBiJ,EAAgB1oN,MAAMy/M,OAAO,oBAAqBkJ,EAAqB3oN,MAAMy/M,OAAO,iBAAkBz/M,KAAKspN,kBAAmBtpN,MAiP9f,OA/OA6Z,EAAEg0B,MAAMm6K,EAAUltN,UAAW,CACzBiuN,OAAQ,WACJ,IAAI7H,EAAQqI,EACZrI,EAASlhN,KAAK+e,MAAMmiM,QAAUpyK,EAAE,SAChCy6K,EAAQvpN,KAAKm+M,KAAK8H,OAASn3K,EAAE,SAC7BoyK,EAAO7zK,GAAG,WAAW,SAASiyK,GAC1B,IAAIxzI,EAAQxlE,EAAUkjN,EACtB19I,EAASzvE,SAASu+G,cAClBt0G,EAAWijN,EAAMh1K,GAAGu3B,GACpB09I,EAAYD,EAAM3vH,IAAI9tB,GAAQlxE,OAAS,EACnCif,EAAE2+D,WAAalyE,GAAYkjN,KAC3BlK,EAAGn2F,iBACHm2F,EAAGl1F,2BACHvwG,EAAE8/D,OAAM,WACJunI,EAAOt3F,eAInB2/F,EAAMl8K,GAAG,gBAAgB,SAASiyK,GAC9BA,EAAGn2F,qBAGX6/F,qBAAsB,SAA6B1rN,EAAM4hN,GACrDl/M,KAAK2yG,OAAOusG,IAEhBmK,kBAAmB,WACfrpN,KAAKypN,eAETL,mBAAoB,SAA2B9rN,EAAM2nN,EAAa5mJ,EAAOi4E,GAErE,GADAt2I,KAAKypN,cACDzpN,KAAK8oN,WAAY,CACjB,IAAIY,EAAc1pN,KAAKq5G,UAAUilG,OAAOh5M,OAAO,GAC/CtF,KAAKm+M,KAAK8H,MAAMjgN,KAAKhG,KAAKq5G,UAAU+kG,YAAY7rM,QAAQ+9B,SAASo5K,GAErE1pN,KAAK4oN,SAASlgN,QAAQ,SAAUu8M,EAAa5mJ,EAAOi4E,IAExD2yE,kBAAmB,SAA0B3rN,EAAMg5I,EAAS13D,GACxD5+E,KAAK4oN,SAASlgN,QAAQ,eAAgBk2E,EAAO03D,IAEjD4yE,iBAAkB,SAAyB5rN,EAAMg5I,EAAS13D,GACtD5+E,KAAK4oN,SAASlgN,QAAQ,cAAek2E,EAAO03D,IAEhD6yE,iBAAkB,SAAyB7rN,EAAMg5I,EAAS13D,GACtD5+E,KAAK4oN,SAASlgN,QAAQ,eAAgBk2E,EAAO03D,IAEjDqzE,WAAY,WACR3pN,KAAK4pN,iBAAmB5pN,KAAKm+M,KAAKzhM,OAAO1c,KAAK+e,MAAM4kM,aAExDkG,WAAY,WACJ7pN,KAAK+e,MAAM+kM,iCACX9jN,KAAK4oN,SAASlgN,QAAQ,SAAU1I,KAAK+e,MAAM4kM,aAGnDmG,cAAe,SAAsBxsN,EAAMgiN,GACvC,IAAIqH,GACAA,EAAc3mN,KAAKm+M,KAAKyI,uBACpB5mN,KAAK2yG,OAAOg0G,KACZrH,EAAGn2F,iBACHm2F,EAAG9rK,mBAEAxzC,KAAK8oN,YACR9oN,KAAK2yG,OAAO3yG,KAAKm+M,KAAKuJ,sBACtBpI,EAAGn2F,iBACHm2F,EAAG9rK,oBAIfu2K,YAAa,SAAoBzsN,EAAMgiN,GACnC,IAAIqH,GACAA,EAAc3mN,KAAKm+M,KAAKyI,uBACxB5mN,KAAK2yG,OAAOg0G,IAAgBrH,EAAGn2F,kBACxBw9F,EAAc3mN,KAAKm+M,KAAKuJ,qBAC/B1nN,KAAKo/M,aAAauH,IAAgBrH,EAAGn2F,kBAG7C6gG,YAAa,WACThqN,KAAK6lE,SAETokJ,WAAY,WACRjqN,KAAKkqN,YAAY,IAErBC,aAAc,WACVnqN,KAAKkqN,WAAW,IAEpBE,aAAc,WACO,QAAbpqN,KAAKs3C,KAAiBt3C,KAAK+e,MAAMmlM,iBACjClkN,KAAKo/M,aAAap/M,KAAKm+M,KAAKyI,uBAAyB5mN,KAAKm+M,KAAKuJ,qBAGvE2C,cAAe,WACM,QAAbrqN,KAAKs3C,KAAiBt3C,KAAK+e,MAAMmlM,iBACjClkN,KAAKo/M,aAAap/M,KAAKm+M,KAAKyI,uBAAyB5mN,KAAKm+M,KAAKuJ,qBAGvE4C,gBAAiB,SAAwB1uN,EAAGgjF,GACxC5+E,KAAK4pN,cAAchrI,GAAS5+E,KAAKm+M,KAAKzhM,OAAOkiE,GAAS5+E,KAAKm+M,KAAKh+L,SAEpEoqM,qBAAsB,WAClBvqN,KAAKypN,eAETH,kBAAmB,SAA0B1tN,EAAG07C,GACxCt3C,KAAKs3C,MAAQA,IACbt3C,KAAKs3C,IAAMA,EACXt3C,KAAKm+M,KAAKkJ,qBAAqB/vK,KAGvCkzK,cAAe,WACXxqN,KAAKsG,YAActG,KAAKy7C,QAE5BmuK,cAAe,SAAsBhrI,GAEjC,OADAA,EAAQ/kE,EAAE8+D,SAASiG,GAASA,EAAQ5+E,KAAK+e,MAAM4kM,YAAc,IAChD/oN,QAAUoF,KAAK6oN,WAEhCY,YAAa,WACT,IAAI9C,EAAatsN,EAAMoG,EAAKm+E,EAAO6rI,EAA+BljM,EAClEo/L,EAAc3mN,KAAKm+M,KAAKuJ,mBACxBrtN,EAAO2F,KAAKm+M,KAAKsJ,kBAAkBd,GACnClmN,EAAMT,KAAK+e,MAAMmkM,iBACb7oN,GAASwf,EAAE4+D,cAAch4E,IAAST,KAAK+e,MAAMilM,cAO7ChkN,KAAK+e,MAAMmjM,aANXtjI,EAAQoiI,EAAMwB,eAAe/hN,GAC7BgqN,EAAe5wM,EAAE6+D,iBAAiBkG,IAElCr3D,EADkB,IAAI6B,OAAO,OAASqhM,EAAe,SAAU,KACvC/zL,KAAKr8B,EAAKoG,OACzBT,KAAK+e,MAAMijM,QAAQvhN,EAAM8mB,EAAM,MAKhD+mH,UAAW,WACP,OAAOtuI,KAAKy8D,SAEhBm1E,OAAQ,WACJ5xI,KAAKy8D,SAAU,GAEnBkkD,QAAS,WACL3gH,KAAKy8D,SAAU,GAEnBn2D,SAAU,WACN,OAAOtG,KAAK8rE,QAEhBlzD,SAAU,WACN,QAAI5Y,KAAKsG,eAEGtG,KAAKsuI,aAAetuI,KAAK4oN,SAASnhK,OAAO,aAGjDznD,KAAK8rE,QAAS,EACd9rE,KAAK4oN,SAASlgN,QAAQ,WACf,IAGfoQ,WAAY,WACR,OAAK9Y,KAAKsG,aAECtG,KAAK4oN,SAASnhK,OAAO,UAG5BznD,KAAK8rE,QAAS,EACd9rE,KAAK6lE,QACL7lE,KAAK4oN,SAASlgN,QAAQ,SACf,IAGfyoI,OAAQ,WACJ,OAAOnxI,KAAKm+M,KAAKhtE,UAErB11F,KAAM,WAMF,OALKz7C,KAAKmxI,UAAanxI,KAAK4oN,SAASnhK,OAAO,UACxCznD,KAAKm+M,KAAK1iK,OACVz7C,KAAKypN,cACLzpN,KAAK4oN,SAASlgN,QAAQ,SAEnB1I,KAAKmxI,UAEhBtrE,MAAO,WAOH,OANI7lE,KAAKmxI,WAAanxI,KAAK4oN,SAASnhK,OAAO,WACvCznD,KAAKm+M,KAAKt4I,QACV7lE,KAAK+e,MAAMmjM,YACXliN,KAAK+e,MAAM2jM,kBACX1iN,KAAK4oN,SAASlgN,QAAQ,WAElB1I,KAAKmxI,UAEjBu5E,OAAQ,SAAgBjqN,GACpBT,KAAK+e,MAAM6kM,SAAS/pM,EAAEm/D,MAAMv4E,KAEhCkqN,OAAQ,WACJ,OAAO3qN,KAAK+e,MAAM4kM,YAEtBhxG,OAAQ,SAAgBg0G,GACpB,IAAItsN,EAAO2F,KAAKm+M,KAAKsJ,kBAAkBd,GACvC,SAAItsN,GAAS2F,KAAK4oN,SAASnhK,OAAO,SAAUptD,EAAK0G,IAAK1G,EAAKi8I,WACvDt2I,KAAK+e,MAAM6kM,SAASvpN,EAAKoG,KAAK,GAC9BT,KAAK4oN,SAASlgN,QAAQ,SAAUrO,EAAK0G,IAAK1G,EAAKi8I,SAC/Ct2I,KAAK6lE,QACE,KAIfu5I,aAAc,SAAsBuH,GAChC,IAAI/nI,EAAOvkF,EAIX,OAHAukF,EAAQ5+E,KAAK+e,MAAM4kM,eACnBtpN,EAAO2F,KAAKm+M,KAAKsJ,kBAAkBd,KACjB/nI,IAAUvkF,EAAKoG,KACjBT,KAAK4oN,SAASnhK,OAAO,eAAgBptD,EAAK0G,IAAK1G,EAAKi8I,WAChEt2I,KAAK+e,MAAM6kM,SAASvpN,EAAKoG,KACzBT,KAAK4oN,SAASlgN,QAAQ,eAAgBrO,EAAK0G,IAAK1G,EAAKi8I,SAC9C,KAIf4zE,WAAY,SAAoB74F,GAC5B,IAAIzyC,EAAOgsI,EAAYvwN,EAAM+jN,EAAYyM,EAAyBtuM,EASlE,OARAqiE,EAAQ5+E,KAAK+e,MAAM4kM,WACnBiH,EAAa5qN,KAAKm+M,KAAKmJ,2BAA2Bj2F,GAElD+sF,GADA/jN,EAAO2F,KAAKm+M,KAAKsJ,kBAAkBmD,IACfvwN,EAAK0G,IAAM,KAC/B8pN,EAAcxwN,EAAOA,EAAKi8I,QAAU,KACpC/5H,EAAKquM,EAAaA,EAAWv6K,KAAK,MAAQ,KAC1CrwC,KAAK+e,MAAMrW,QAAQ,eAAgB6T,KACtBvc,KAAK4pN,iBAAmB5pN,KAAKm+M,KAAKzhM,OAAOkiE,IAClC5+E,KAAK4oN,SAASnhK,OAAO,eAAgB22J,EAAYyM,KACjE7qN,KAAKm+M,KAAKiJ,UAAUwD,GAChBvwN,EACA2F,KAAK+e,MAAM8kM,cAAcxpN,EAAKoG,MAE9BT,KAAK+e,MAAM2jM,kBACX1iN,KAAKypN,eAETzpN,KAAK4oN,SAASlgN,QAAQ,eAAgB01M,EAAYyM,GAC3C,KAIf/0E,QAAS,WACL91I,KAAK+e,MAAM+2H,UACX91I,KAAKm+M,KAAKroE,aAGXkyE,EACP,SAAS9pN,EAAEqwF,GACP,IAAI0K,EAAU,GAAGp5F,MAAM7E,KAAK8G,UAAW,GACvC,OAAO,WACH,IAAI2iB,EAAO,GAAG5kB,MAAM7E,KAAK8G,WACzB+X,EAAEq/D,KAAK+f,GAAS,SAAS/9E,GACrB,OAAOqzE,EAAIrzE,GAAQjX,MAAMsqF,EAAK9pE,QA5R9B,QAiShB,WACI,aACA,IAAI88D,EAAKhtE,EAAM0kF,EA4Kf,SAAS6xH,EAAOC,EAAMzrM,GAClByrM,EAAK7xI,MAAK,WACN,IAAsB8xI,EAAlB9J,EAASpyK,EAAE9uC,OACdgrN,EAAY9J,EAAO7mN,KAAKka,EAAKy2M,aAAe1rM,EAAG0rM,EAAW9J,MAGnE,SAAS+J,EAAmB/J,EAAQ1C,GAChC,OAAO0C,EAAO3kL,QAAQ+T,SAASkuK,EAAIlnF,QAAQ4mF,MAAMj6F,aAAatjD,IAAI69I,EAAI79I,IAAIu9I,MAAMv9I,KAuBvDu+I,EAvB+EgC,EAwBjG,CACHgK,qBAAsBhM,EAAIv+I,IAAI,yBAC9BmvD,eAAgBovF,EAAIv+I,IAAI,mBACxBo/F,gBAAiBm/C,EAAIv+I,IAAI,oBACzBm+I,gBAAiBI,EAAIv+I,IAAI,oBACzBwqJ,iBAAkBjM,EAAIv+I,IAAI,qBAC1ByqJ,mBAAoBlM,EAAIv+I,IAAI,uBAC5B0qJ,iBAAkBnM,EAAIv+I,IAAI,qBAC1B2qJ,eAAgBpM,EAAIv+I,IAAI,sBAhCqFt+C,KAAK,CAClHkpM,UAAU,EACVC,UAAU,IACX/0F,WAAW,uBAAuBjyC,YAAY,YAAYn0C,KAAK,CAC9Do7K,WAAY,QACZp0F,UAAW,IAkBnB,IAA6B6nF,EAf7B,SAASwM,EAAUxK,EAAQ1C,GACvB0C,EAAO7mN,KAAKka,EAAKktD,MAAO,CACpBnqB,IAAK4pK,EAAO7wK,KAAK,OACjB+uK,aAAc8B,EAAO7wK,KAAK,gBAC1Bo7K,WAAYvK,EAAO7wK,KAAK,cACxBywB,MAAOogJ,EAAO7wK,KAAK,WAEvB6wK,EAAO5wK,SAASkuK,EAAIlnF,QAAQv4G,OAAOsxB,KAAK,CACpCo7K,YAAY,IAEhB,KACKvK,EAAO7wK,KAAK,QAAU6wK,EAAO7wK,KAAK,MAAO,QAC5C,MAAOz0C,IACT,OAAOslN,EA2BX,SAASyK,EAAU5qN,GACf,IAAam+M,EAGb,OADAA,EADUrlM,EAAEk/D,SAASh4E,IAAQ8Y,EAAEg/D,UAAU93E,GACzB+tC,EAAE/tC,GAAKwR,QAAU,IACtB3X,OAASskN,EAAM,KAtO9B39H,EAAMzyC,EAAExvB,GAAG0rM,UACXz2M,EAAO,CACHiqM,IAAK,SACL/8I,MAAO,WACPupJ,UAAW,gBAEf/xH,EAAU,CACN1Y,WAAY,SAAoBliF,EAAG6nN,GAC/B,IAAI1H,EAIJ,OAHA0H,EAAWrsM,EAAElZ,QAAQulN,GAAYA,EAAW,GAAGrmN,MAAM7E,KAAK8G,UAAW,GAErE08M,EAAMR,GADN3/M,EAAIA,GAAK,IACGw5H,YACL73H,KAAKk5E,KAAK45H,GACjB,SAASA,IACL,IAAIoO,EAAQ0K,EAAUzK,EAAOoI,EAAOsC,EAAaC,EAAalD,EAAU7pM,EAAOo/L,EAAc6M,EAAWe,EACxGlyM,EAAEq/D,KAAKgtI,GAAU,SAAS/nN,GACtBA,EAAEogN,YAAclgN,EAAEkgN,aAEtB2C,EAASpyK,EAAE9uC,MACX4rN,EAAW98K,EAAE0vK,EAAIh2J,KAAKulF,SACtBozE,EAAQwK,EAAUttN,EAAE6/M,MACpBqL,EAAQoC,EAAUttN,EAAE8/M,MACpB0N,GAAyB,IAAXxtN,EAAE6/M,OAAmBiD,EACnC2K,GAAyB,IAAXztN,EAAE8/M,OAAmBoL,EACnCsC,IAAgB1K,EAAQ8J,EAAmB/J,EAAQ1C,IACnDsN,IAAgBvC,EAAQz6K,EAAE0vK,EAAIh2J,KAAK21J,MAAMx9I,IAAI69I,EAAI79I,IAAIw9I,OACrDgD,GAASA,EAAM1gN,IAAI,IACnBygN,EAASwK,EAAUxK,EAAQ1C,IACvBqN,GAAeC,KACfF,EAASjrJ,IAAI69I,EAAI79I,IAAIotE,SACrBmzE,EAAOvgJ,IAAIkrJ,EAAcrN,EAAI79I,IAAI5hD,MAAQy/L,EAAI79I,IAAIi+I,iBACjDsC,EAAOp6F,KAAK8kG,GAAUr9M,SAAS2jC,QAAQ25K,EAAc1K,EAAQ,MAAMr2K,OAAOghL,EAAcvC,EAAQ,OAEpGwC,EAAkBD,EAAc/D,EAAc/B,EAC9C4C,EAAW,IAAI5J,EAAS,CACpBn9I,GAAIq/I,IAERniM,EAAQ,IAAIiiM,EAAM,CACd9C,KAAMiD,EACNpiM,MAAOmiM,GACR1C,GACHL,EAAO,IAAI4N,EAAgB,CACvB7wK,KAAMquK,EACNrD,SAAUA,GACX1H,GACM,IAAIoJ,EAAO,CAChB1G,OAAQA,EACR/C,KAAMA,IAEV6M,EAAY,IAAIhD,EAAU,CACtBjpM,MAAOA,EACPo/L,KAAMA,EACNyK,SAAUA,EACVC,UAAWxqN,EAAEwqN,UACbC,WAAYzqN,EAAEyqN,YACftK,GACH0C,EAAO7mN,KAAKka,EAAKiqM,IAAKA,GACtB0C,EAAO7mN,KAAKka,EAAKy2M,UAAWA,KAGpC18E,UAAW,WACP,IAAI7xE,EAIJ,OAHAquJ,EAAO9qN,KAAKuS,SAAS,SAAS1T,GAC1B49D,EAAU59D,EAAEyvI,eAET7xE,GAEXm1E,OAAQ,WAIJ,OAHAk5E,EAAO9qN,MAAM,SAASnB,GAClBA,EAAE+yI,YAEC5xI,MAEX2gH,QAAS,WAIL,OAHAmqG,EAAO9qN,MAAM,SAASnB,GAClBA,EAAE8hH,aAEC3gH,MAEXsG,SAAU,WACN,IAAIwlE,EAIJ,OAHAg/I,EAAO9qN,KAAKuS,SAAS,SAAS1T,GAC1BitE,EAASjtE,EAAEyH,cAERwlE,GAEXlzD,SAAU,WAIN,OAHAkyM,EAAO9qN,MAAM,SAASnB,GAClBA,EAAE+Z,cAEC5Y,MAEX8Y,WAAY,WAIR,OAHAgyM,EAAO9qN,MAAM,SAASnB,GAClBA,EAAEia,gBAEC9Y,MAEXmxI,OAAQ,WACJ,IAAI11F,EAIJ,OAHAqvK,EAAO9qN,KAAKuS,SAAS,SAAS1T,GAC1B48C,EAAO58C,EAAEsyI,YAEN11F,GAEXA,KAAM,WAIF,OAHAqvK,EAAO9qN,MAAM,SAASnB,GAClBA,EAAE48C,UAECz7C,MAEX6lE,MAAO,WAIH,OAHAilJ,EAAO9qN,MAAM,SAASnB,GAClBA,EAAEgnE,WAEC7lE,MAEX2yG,OAAQ,SAAgB9wC,GACpB,IAAIvhE,GAAU,EAAO4+M,EAAMpwK,EAAE+yB,GAI7B,OAHAipJ,EAAO9qN,KAAKuS,SAAS,SAAS1T,GAC1ByB,EAAUzB,EAAE8zG,OAAOusG,MAEhB5+M,GAEX8+M,aAAc,SAAsBv9I,GAChC,IAAIvhE,GAAU,EAAO4+M,EAAMpwK,EAAE+yB,GAI7B,OAHAipJ,EAAO9qN,KAAKuS,SAAS,SAAS1T,GAC1ByB,EAAUzB,EAAEugN,aAAaF,MAEtB5+M,GAEX4pN,WAAY,SAAoB74F,GAC5B,IAAI/wH,GAAU,EAId,OAHAwqN,EAAO9qN,KAAKuS,SAAS,SAAS1T,GAC1ByB,EAAUzB,EAAEqrN,WAAW74F,MAEpB/wH,GAEXG,IAAK,SAAaurN,GACd,IAAIptI,EACJ,OAAK98E,UAAUlH,QAMXkwN,EAAO9qN,MAAM,SAASnB,GAClBA,EAAE6rN,OAAO7wM,EAAEm/D,MAAMgzI,OAEdhsN,OARP8qN,EAAO9qN,KAAKuS,SAAS,SAAS1T,GAC1B+/E,EAAQ//E,EAAE8rN,YAEP/rI,IAQfk3D,QAAS,WAKL,OAJAg1E,EAAO9qN,MAAM,SAASgrN,EAAW9J,IA4DzC,SAAgBA,GACZ,IAAI1C,EAAKoN,EACTpN,EAAM0C,EAAO7mN,KAAKka,EAAKiqM,KACvBoN,EAAW1K,EAAO3yM,SAAS1J,OAAO25M,EAAInlG,UAAU00B,SAChDl0H,EAAEq/D,KAAKgoI,EAAO7mN,KAAKka,EAAKktD,QAAQ,SAAShhE,EAAKvB,GAC1C2a,EAAEqF,YAAYze,GAAOygN,EAAOzqF,WAAWv3H,GAAOgiN,EAAO7wK,KAAKnxC,EAAKuB,MAEnEygN,EAAOj9F,WAAW1vG,EAAKy2M,WAAW/mG,WAAW1vG,EAAKiqM,KAAKv6F,WAAW1vG,EAAK87B,MAAMm0C,YAAYg6H,EAAIlnF,QAAQv4G,OACjG6sM,EAAShxN,SACTsmN,EAAOrzF,SAASI,YAAY29F,GAC5BA,EAAS97K,UArELiqI,CAAOmnC,GACP8J,EAAUl1E,aAEP91I,OAGf8uC,EAAExvB,GAAG0rM,UAAY,SAAS9vM,GACtB,OAAI+9E,EAAQ/9E,GACD+9E,EAAQ/9E,GAAQjX,MAAMjE,KAAM,GAAGH,MAAM7E,KAAK8G,UAAW,IAErDm3F,EAAQ1Y,WAAWt8E,MAAMjE,KAAM8B,YAG9CgtC,EAAExvB,GAAG0rM,UAAUvpI,WAAa,WAExB,OADA3yC,EAAExvB,GAAG0rM,UAAYzpI,EACVvhF,MA5Kf,GA74CK,IAAS8uC,EACVj1B,EA+IAmkM,EA+FAgB,EAsCA9wJ,EA0FAqwJ,EAwFAyC,EAmOAuD,EAkNAyB,EAmJA4B,EAiDAG,EA4CAC,GAlnCC,6B,oDC77BT,IAAI,EAAJ,6CACI,IAA2H7pN,EAAvHD,EAAI4D,UAAUlH,OAAQ6D,EAAIP,EAAI,EAAIV,EAAkB,OAATsmE,EAAgBA,EAAOjpE,OAAOw0D,yBAAyB7xD,EAAQ0B,GAAO4kE,EACrH,GAAuB,iBAAZ53B,SAAoD,mBAArBA,QAAQ63B,SAAyBtlE,EAAIytC,QAAQ63B,SAAS92B,EAAYzvC,EAAQ0B,EAAK4kE,QACpH,IAAK,IAAIppE,EAAIuyC,EAAWryC,OAAS,EAAGF,GAAK,EAAGA,KAASyD,EAAI8uC,EAAWvyC,MAAI+D,GAAKP,EAAI,EAAIC,EAAEM,GAAKP,EAAI,EAAIC,EAAEX,EAAQ0B,EAAKT,GAAKN,EAAEX,EAAQ0B,KAAST,GAChJ,OAAOP,EAAI,GAAKO,GAAK5D,OAAOyD,eAAed,EAAQ0B,EAAKT,GAAIA,GAE5DulE,EAAchkE,MAAQA,KAAKgkE,YAAe,SAAU9pC,EAAG+pC,GACvD,GAAuB,iBAAZ/3B,SAAoD,mBAArBA,QAAQR,SAAyB,OAAOQ,QAAQR,SAASxR,EAAG+pC,IAE1G,EAAO,CAAC,EAAW,EAAW,MAAgC,KAAkB,aAkC/E,KAlC2G,EAAF,SAAYC,EAASzoE,EAAS0oE,EAAgC8nJ,EAAkBC,GACtL,aACArxN,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IACtD,IAAIutN,EAAsB,WACtB,SAASA,EAAmBC,GACxBpsN,KAAKosN,qBAAuBA,EAC5BpsN,KAAKqsN,qBAAuB,GAyBhC,OAvBAF,EAAmBrxN,UAAUiI,IAAM,SAAUC,EAAuBC,GAChE,IAUI+mB,EAVArkB,EAAQ3F,KAERssN,EADkBtpN,EAAsBqB,qBAAqBuiE,UACrB5gE,MAAK,SAAUqB,GAAe,OAAO1B,EAAM4mN,sBAAsBllN,EAAY7E,WACrHgqN,EAAqBF,EAAwBA,EAAsB9pN,OAAO4F,SAAS28D,WAAa,KAChG0nJ,GAAyBH,EACzB/nJ,EAAsC,OAAvBioJ,IAAgCxiM,EAAKhqB,KAAKosN,sBAAsB7nJ,aAAatgE,MAAM+lB,EAAIwiM,EAAmBE,MAC7H,OAAID,GAAyBloJ,EAClBthE,IAEJA,EAAK8G,OAAO,IAAIkiN,EAAiBzjN,SAASgkN,EAAmBG,YAAc3sN,KAAKqsN,wBAG3FF,EAAmBrxN,UAAUyxN,sBAAwB,SAAUK,GAC3D,OAAOA,EAAkBxkN,UAAYwkN,EAAkBxkN,SAAS28D,YAEpEonJ,EAAmBrxN,UAAU+xN,wBAA0B,SAAUnqN,GAC7D1C,KAAKqsN,qBAAuB3pN,GAEhCypN,EAAqB/mJ,EAAW,CAC5BjB,EAA+BkB,aAC/BrB,EAAW,oBAAqB,CAACkoJ,EAAwBr2J,WAC1Ds2J,GA3BkB,GA8BzB1wN,EAAQo6D,QAAUs2J,GACrB,4B,qBC3CD;;;;;;;AAMA,IAAiD5jL,EAS9B,oBAAT9wB,MAAuBA,KATgB8wB,EASH,WAC9C,OAAgB,SAAUptC,GAEhB,IAAIG,EAAmB,GAGvB,SAASE,EAAoBlB,GAG5B,GAAGgB,EAAiBhB,GACnB,OAAOgB,EAAiBhB,GAAUmB,QAGnC,IAAIC,EAASJ,EAAiBhB,GAAY,CACzCI,EAAGJ,EACHqB,GAAG,EACHF,QAAS,IAUV,OANAN,EAAQb,GAAUU,KAAKU,EAAOD,QAASC,EAAQA,EAAOD,QAASD,GAG/DE,EAAOC,GAAI,EAGJD,EAAOD,QAqCf,OAhCAD,EAAoByC,EAAI9C,EAGxBK,EAAoB0C,EAAI5C,EAGxBE,EAAoB2C,EAAI,SAAS1C,EAASiC,EAAMU,GAC3C5C,EAAoB6C,EAAE5C,EAASiC,IAClC7C,OAAOyD,eAAe7C,EAASiC,EAAM,CACpC2D,cAAc,EACd9C,YAAY,EACZC,IAAKJ,KAMR5C,EAAoB4D,EAAI,SAAS1D,GAChC,IAAI0C,EAAS1C,GAAUA,EAAOqD,WAC7B,WAAwB,OAAOrD,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAF,EAAoB2C,EAAEC,EAAQ,IAAKA,GAC5BA,GAIR5C,EAAoB6C,EAAI,SAASgB,EAAQC,GAAY,OAAOzE,OAAOC,UAAUC,eAAeC,KAAKqE,EAAQC,IAGzG9D,EAAoBoB,EAAI,GAGjBpB,EAAoBA,EAAoBsE,EAAI,KA9D7C,CAiEN,CAEJ,SAAUpE,EAAQD,EAASD,GAEjC,aAEAX,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IACtD,IAAIkuN,EAActxN,EAAoB,IAClCuxN,EAAWvxN,EAAoB,IAC/BwxN,EAASxxN,EAAoB,IAC7ByxN,EAAWzxN,EAAoB,IAC/B0xN,EAAW1xN,EAAoB,IAC/B2xN,EAAU3xN,EAAoB,IAC9B4xN,EAAU5xN,EAAoB,IAC9B6xN,EAAS7xN,EAAoB,IAC7B8xN,EAAe9xN,EAAoB,IACnC+xN,EAAU/xN,EAAoB,IAC9BgyN,EAAUhyN,EAAoB,IAC9BiyN,EAAUjyN,EAAoB,IAC9BkyN,EAAWlyN,EAAoB,GAC/BmyN,EAAY,CACZC,MAAOF,EAASE,MAChB3uN,OAAQyuN,EAASzuN,OACjB+G,KAAM0nN,EAAS1nN,KACf44E,MAAO8uI,EAAS9uI,MAChBz4B,SAAUunK,EAASvnK,SACnB4/E,UAAW+mF,EAAYj3J,QACvBg4J,OAAQd,EAASl3J,QACjBi4J,KAAMd,EAAOn3J,QACbk4J,MAAOX,EAAQv3J,QACfm4J,OAAQf,EAASp3J,QACjBo4J,MAAOd,EAAQt3J,QACfq4J,OAAQhB,EAASr3J,QACjBs4J,KAAMd,EAAOx3J,QACbu4J,WAAY,CACRC,UAAWf,EAAaz3J,QACxBy4J,MAAOf,EAAQ13J,QACf04J,MAAOf,EAAQ33J,QACf24J,MAAOf,EAAQ53J,UAGvBp6D,EAAQo6D,QAAU83J,GAKZ,SAAUjyN,EAAQD,EAASD,GAEjC,aAEA,IACQizN,EADJC,EAAa1uN,MAAQA,KAAK0uN,YACtBD,EAAgB5zN,OAAOkd,gBACtB,CAAEC,UAAW,cAAgBtX,OAAS,SAAUvC,EAAGwT,GAAKxT,EAAE6Z,UAAYrG,IACvE,SAAUxT,EAAGwT,GAAK,IAAK,IAAI/U,KAAK+U,EAAOA,EAAE5W,eAAe6B,KAAIuB,EAAEvB,GAAK+U,EAAE/U,KAClE,SAAUuB,EAAGwT,GAEhB,SAASszF,IAAOjlG,KAAKgB,YAAc7C,EADnCswN,EAActwN,EAAGwT,GAEjBxT,EAAErD,UAAkB,OAAN6W,EAAa9W,OAAOoE,OAAO0S,IAAMszF,EAAGnqG,UAAY6W,EAAE7W,UAAW,IAAImqG,KAGvFpqG,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IACtD,IAAI+vN,EAAgC,SAAUC,GAE1C,SAASD,EAAelxN,GACpB,IAAIkI,EAAQ3F,KAKZ,OAJAvC,EAAU,eAAiBA,GAC3BkI,EAAQipN,EAAO5zN,KAAKgF,KAAMvC,IAAYuC,MAChCvC,QAAUA,EAChBkI,EAAMjI,KAAOiI,EAAM3E,YAAYtD,KACxBiI,EAEX,OATA+oN,EAAUC,EAAgBC,GASnBD,EAVwB,CAWjC5xN,OACFtB,EAAQkzN,eAAiBA,EACzB,IAKIf,EALA3kH,EAAa,GACbquB,EAAU,GACV3sD,EAAO,GACPr5D,EAAQ,GAwCZ,SAASstE,EAAMA,EAAOxT,GAElB,IAAI7jD,EACJ,QAFc,IAAV6jD,IAAoBA,EAAQwiJ,EAAMiB,KAEjB,iBAAVjwI,EACPr3D,EAAQjW,EAAMstE,IAAUqqB,EAAWrqB,QAGlC,GAAIA,aAAiBuvI,MAAQvvI,EAAgB,WAAM1D,KAAK4zI,UACzDvnM,EAAQjW,EAAY,UAEnB,GAAqB,iBAAVstE,EACRA,EAAQgvI,EAAMmB,MAAQnB,EAAMoB,MAC5BznM,EAAQjW,EAAa,MAEhBstE,EAAQgvI,EAAMmB,MAAQnB,EAAMqB,SACjC1nM,EAAQjW,EAAc,aAGzB,GAAIstE,aAAiB/kC,YAAa,CACnC,IAAIlmB,GAASirD,EAAMxX,aAAa,UAAY,IAAI97C,MAAM,OACtD,IAAK,IAAI5wB,KAAKi5B,EAEV,GADApM,EAAQ+vG,EAAQ3jG,EAAMj5B,IAElB,MAER6sB,EAAQA,GAASojD,EAAKiU,EAAM27E,SAEhC,OAAa,MAAThzI,EACO,KAEP6jD,EAAQwiJ,EAAMmB,MAAQxnM,EAAM6jD,OAASA,EAAQwiJ,EAAMsB,KAAO3nM,EAAM6jD,MACzD7jD,EACJ,KAvEX9rB,EAAQ0zN,SAAW,SAEnB,SAAWvB,GACPA,EAAMA,EAAY,KAAI,GAAK,OAC3BA,EAAMA,EAAa,MAAI,IAAM,QAC7BA,EAAMA,EAAiB,UAAI,IAAM,YACjCA,EAAMA,EAAY,KAAI,IAAM,OAC5BA,EAAMA,EAAc,OAAI,GAAK,SAC7BA,EAAMA,EAAa,MAAI,IAAM,QAC7BA,EAAMA,EAAkB,WAAI,IAAM,aAClCA,EAAMA,EAAmB,YAAI,GAAK,cAClCA,EAAMA,EAAuB,gBAAI,GAAK,kBACtCA,EAAMA,EAAwB,iBAAI,GAAK,mBACvCA,EAAMA,EAAW,IAAI,IAAM,MAX/B,CAYGA,EAAQnyN,EAAQmyN,QAAUnyN,EAAQmyN,MAAQ,KAY7CnyN,EAAQwD,OAXR,SAAgB8f,EAAOngB,GACnB,IAAI2oB,EAAQq3D,EAAM7/D,GAClB,GAAa,MAATwI,EACA,MAAM,IAAIonM,EAAe,oBAAsB5vM,EAAQ,SAE3D,IAAIqwM,EAAY7nM,EACZ2zB,EAEJn8B,aAAiBm8D,MAAQn8D,EAAgB,WAAMm8D,KAAK4zI,UAAY/vM,EAAQqwM,EAAUnwN,OAAOL,GACzF,OAAO,IAAIwwN,EAAUl0K,EAAMt8C,IAc/BnD,EAAQuK,KAXR,SAASA,EAAKk1C,EAAMm0K,GAEhB,YADe,IAAXA,IAAqBA,GAAS,GACtB,MAARn0K,EACO,KAEmB,MAA1BA,EAAKz/C,EAAQ0zN,UACNj0K,EAAKz/C,EAAQ0zN,UAAUG,KAC9BD,EACOrpN,EAAKk1C,EAAKomB,WAAY+tJ,GAC1B,MAqCX5zN,EAAQmjF,MAAQA,EA6ChBnjF,EAAQ0qD,SA5CR,SAASA,IAEL,IADA,IAAIopK,EAAc,GACT/jN,EAAK,EAAGA,EAAK1J,UAAUlH,OAAQ4Q,IACpC+jN,EAAY/jN,GAAM1J,UAAU0J,GAEhC,GAAI+jN,EAAY30N,OAAS,EACrB,OAAO20N,EAAY5qN,KAAI,SAAUxG,GAC7B,OAAOgoD,EAAShoD,MAGxB,IAAIqxN,EAAaD,EAAY,GAC7B,GAAmC,iBAAxBC,EAAWC,UAAwD,iBAAxBD,EAAW5+D,SAC7D,MAAM,IAAI+9D,EAAe,sBAExB,GAA4B,aAAxBa,EAAWC,SAChB,MAAM,IAAId,EAAe,kCAG7B,GADAr9M,EAAMk+M,EAAWC,UAAYD,EAAW5+D,UAAY4+D,EAClB,iBAAvBA,EAAW3M,QAClB55G,EAAWumH,EAAW3M,SAAW2M,OAMjC,GAH4B,MAAxBA,EAAWlqI,YACXgyC,EAAQk4F,EAAWlqI,WAAakqI,GAEV,MAAtBA,EAAWj1D,QAAiB,CACxB75J,MAAMC,QAAQ6uN,EAAWj1D,SACzBi1D,EAAWj1D,QAAUi1D,EAAWj1D,QAAQ51J,KAAI,SAAU41J,GAClD,OAAOA,EAAQx2H,iBAInByrL,EAAWj1D,QAAUi1D,EAAWj1D,QAAQx2H,cAE5C,IAAI2rL,EAAWhvN,MAAMC,QAAQ6uN,EAAWj1D,SAAWi1D,EAAWj1D,QAAU,CAACi1D,EAAWj1D,SACpFm1D,EAASvoN,SAAQ,SAAUywG,GACN,MAAbjtC,EAAKitC,IAAwC,MAAxB43G,EAAWlqI,YAChC3a,EAAKitC,GAAO43G,MAK5B,OAAOA,IAOL,SAAU9zN,EAAQD,EAASD,GAEjC,IAAI8gC,EAAO9gC,EAAoB,IAC3Bm0N,EAAQn0N,EAAoB,IAC5BikB,EAASjkB,EAAoB,GAC7B22E,EAAK32E,EAAoB,IAGzBo0N,EAAiB1yM,OAAOq9B,aAAa,GAGrCs1K,EAAQ,SAAU59I,GAEhBvxE,MAAMC,QAAQsxE,GAChBjyE,KAAKiyE,IAAMA,EACK,MAAPA,GAAevxE,MAAMC,QAAQsxE,EAAIA,KAC1CjyE,KAAKiyE,IAAMA,EAAIA,IAEfjyE,KAAKiyE,IAAM,IAKf49I,EAAM/0N,UAAUsqD,OAAS,SAAU8D,EAAM+/C,GACvC,IAAI6mH,EAAQ,GACZ,OAAoB,IAAhB5mK,EAAKtuD,OAAqBoF,MAC9B8vN,EAAM1qK,OAAS8D,EACG,MAAd+/C,GAA4C,iBAAfA,GAA2BpuG,OAAO0Z,KAAK00F,GAAYruG,OAAS,IAC3Fk1N,EAAM7mH,WAAaA,GAEdjpG,KAAK9E,KAAK40N,KAGnBD,EAAM/0N,UAAkB,OAAI,SAAUF,GACpC,OAAIA,GAAU,EAAUoF,KACjBA,KAAK9E,KAAK,CAAE,OAAUN,KAG/Bi1N,EAAM/0N,UAAUi1N,OAAS,SAAUn1N,EAAQquG,GACzC,GAAIruG,GAAU,EAAG,OAAOoF,KACxB,IAAI8vN,EAAQ,CAAEC,OAAQn1N,GAItB,OAHkB,MAAdquG,GAA4C,iBAAfA,GAA2BpuG,OAAO0Z,KAAK00F,GAAYruG,OAAS,IAC3Fk1N,EAAM7mH,WAAaA,GAEdjpG,KAAK9E,KAAK40N,IAGnBD,EAAM/0N,UAAUI,KAAO,SAAU40N,GAC/B,IAAInmN,EAAQ3J,KAAKiyE,IAAIr3E,OACjBo1N,EAAShwN,KAAKiyE,IAAItoE,EAAQ,GAE9B,GADAmmN,EAAQrwM,GAAO,EAAM,GAAIqwM,GACH,iBAAXE,EAAqB,CAC9B,GAA+B,iBAApBF,EAAc,QAA8C,iBAArBE,EAAe,OAE/D,OADAhwN,KAAKiyE,IAAItoE,EAAQ,GAAK,CAAE,OAAUqmN,EAAe,OAAIF,EAAc,QAC5D9vN,KAIT,GAAgC,iBAArBgwN,EAAe,QAAkC,MAAhBF,EAAM1qK,SAChDz7C,GAAS,EAEa,iBADtBqmN,EAAShwN,KAAKiyE,IAAItoE,EAAQ,KAGxB,OADA3J,KAAKiyE,IAAInuE,QAAQgsN,GACV9vN,KAGX,GAAI2vN,EAAMG,EAAM7mH,WAAY+mH,EAAO/mH,YAAa,CAC9C,GAA4B,iBAAjB6mH,EAAM1qK,QAAgD,iBAAlB4qK,EAAO5qK,OAGpD,OAFAplD,KAAKiyE,IAAItoE,EAAQ,GAAK,CAAEy7C,OAAQ4qK,EAAO5qK,OAAS0qK,EAAM1qK,QACtB,iBAArB0qK,EAAM7mH,aAAyBjpG,KAAKiyE,IAAItoE,EAAQ,GAAGs/F,WAAa6mH,EAAM7mH,YAC1EjpG,KACF,GAA4B,iBAAjB8vN,EAAMC,QAAgD,iBAAlBC,EAAOD,OAG3D,OAFA/vN,KAAKiyE,IAAItoE,EAAQ,GAAK,CAAEomN,OAAQC,EAAOD,OAASD,EAAMC,QACtB,iBAArBD,EAAM7mH,aAAyBjpG,KAAKiyE,IAAItoE,EAAQ,GAAGs/F,WAAa6mH,EAAM7mH,YAC1EjpG,MASb,OALI2J,IAAU3J,KAAKiyE,IAAIr3E,OACrBoF,KAAKiyE,IAAI/2E,KAAK40N,GAEd9vN,KAAKiyE,IAAI96D,OAAOxN,EAAO,EAAGmmN,GAErB9vN,MAGT6vN,EAAM/0N,UAAUm1N,KAAO,WACrB,IAAID,EAAShwN,KAAKiyE,IAAIjyE,KAAKiyE,IAAIr3E,OAAS,GAIxC,OAHIo1N,GAAUA,EAAOD,SAAWC,EAAO/mH,YACrCjpG,KAAKiyE,IAAItd,MAEJ30D,MAGT6vN,EAAM/0N,UAAU+J,OAAS,SAAUqrN,GACjC,OAAOlwN,KAAKiyE,IAAIptE,OAAOqrN,IAGzBL,EAAM/0N,UAAUqM,QAAU,SAAU+oN,GAClClwN,KAAKiyE,IAAI9qE,QAAQ+oN,IAGnBL,EAAM/0N,UAAU6J,IAAM,SAAUurN,GAC9B,OAAOlwN,KAAKiyE,IAAIttE,IAAIurN,IAGtBL,EAAM/0N,UAAUq1N,UAAY,SAAUD,GACpC,IAAIE,EAAS,GAAIC,EAAS,GAK1B,OAJArwN,KAAKmH,SAAQ,SAASgrE,IACP+9I,EAAU/9I,GAAMi+I,EAASC,GAC/Bn1N,KAAKi3E,MAEP,CAACi+I,EAAQC,IAGlBR,EAAM/0N,UAAUyqD,OAAS,SAAU2qK,EAAW9tI,GAC5C,OAAOpiF,KAAKiyE,IAAI1sB,OAAO2qK,EAAW9tI,IAGpCytI,EAAM/0N,UAAUw1N,aAAe,WAC7B,OAAOtwN,KAAKulD,QAAO,SAAU3qD,EAAQ62G,GACnC,OAAIA,EAAKrsD,OACAxqD,EAASu3E,EAAGv3E,OAAO62G,GACjBA,EAAK30F,OACPliB,EAAS62G,EAAK30F,OAEhBliB,IACN,IAGLi1N,EAAM/0N,UAAUF,OAAS,WACvB,OAAOoF,KAAKulD,QAAO,SAAU3qD,EAAQ62G,GACnC,OAAO72G,EAASu3E,EAAGv3E,OAAO62G,KACzB,IAGLo+G,EAAM/0N,UAAU+E,MAAQ,SAAUylD,EAAOgrB,GACvChrB,EAAQA,GAAS,EACE,iBAARgrB,IAAkBA,EAAM6pI,KAInC,IAHA,IAAIloI,EAAM,GACNs+I,EAAOp+I,EAAGrxE,SAASd,KAAKiyE,KACxBtoE,EAAQ,EACLA,EAAQ2mE,GAAOigJ,EAAKC,WAAW,CACpC,IAAIC,EACA9mN,EAAQ27C,EACVmrK,EAASF,EAAKttN,KAAKqiD,EAAQ37C,IAE3B8mN,EAASF,EAAKttN,KAAKqtE,EAAM3mE,GACzBsoE,EAAI/2E,KAAKu1N,IAEX9mN,GAASwoE,EAAGv3E,OAAO61N,GAErB,OAAO,IAAIZ,EAAM59I,IAInB49I,EAAM/0N,UAAUwzC,QAAU,SAAUjU,GAIlC,IAHA,IAAIq2L,EAAWv+I,EAAGrxE,SAASd,KAAKiyE,KAC5B0+I,EAAYx+I,EAAGrxE,SAASu5B,EAAM43C,KAC9Bo/C,EAAQ,IAAIw+F,EACTa,EAASF,WAAaG,EAAUH,WACrC,GAA6B,WAAzBG,EAAUC,WACZv/F,EAAMn2H,KAAKy1N,EAAU1tN,aAChB,GAA4B,WAAxBytN,EAASE,WAClBv/F,EAAMn2H,KAAKw1N,EAASztN,YACf,CACL,IAAIrI,EAASuoB,KAAKW,IAAI4sM,EAASG,aAAcF,EAAUE,cACnDC,EAASJ,EAASztN,KAAKrI,GACvBm2N,EAAUJ,EAAU1tN,KAAKrI,GAC7B,GAA8B,iBAAnBm2N,EAAQhB,OAAqB,CACtC,IAAID,EAAQ,GACiB,iBAAlBgB,EAAOf,OAChBD,EAAMC,OAASn1N,EAEfk1N,EAAM1qK,OAAS0rK,EAAO1rK,OAGxB,IAAI6jD,EAAa92B,EAAG82B,WAAW36D,QAAQwiL,EAAO7nH,WAAY8nH,EAAQ9nH,WAAqC,iBAAlB6nH,EAAOf,QACxF9mH,IAAY6mH,EAAM7mH,WAAaA,GACnCooB,EAAMn2H,KAAK40N,OAG2B,iBAAtBiB,EAAgB,QAA2C,iBAAlBD,EAAOf,QAChE1+F,EAAMn2H,KAAK61N,GAIjB,OAAO1/F,EAAM4+F,QAGfJ,EAAM/0N,UAAUqJ,OAAS,SAAUk2B,GACjC,IAAIg3F,EAAQ,IAAIw+F,EAAM7vN,KAAKiyE,IAAIpyE,SAK/B,OAJIw6B,EAAM43C,IAAIr3E,OAAS,IACrBy2H,EAAMn2H,KAAKm/B,EAAM43C,IAAI,IACrBo/C,EAAMp/C,IAAMo/C,EAAMp/C,IAAI9tE,OAAOk2B,EAAM43C,IAAIpyE,MAAM,KAExCwxH,GAGTw+F,EAAM/0N,UAAUwhC,KAAO,SAAUjC,EAAO1wB,GACtC,GAAI3J,KAAKiyE,MAAQ53C,EAAM43C,IACrB,OAAO,IAAI49I,EAEb,IAAImB,EAAU,CAAChxN,KAAMq6B,GAAO11B,KAAI,SAAU0sH,GACxC,OAAOA,EAAM1sH,KAAI,SAAUwtE,GACzB,GAAiB,MAAbA,EAAG/sB,OACL,MAA4B,iBAAd+sB,EAAG/sB,OAAsB+sB,EAAG/sB,OAASwqK,EAGrD,MAAM,IAAI7yN,MAAM,kBADJs0H,IAAUh3F,EAAS,KAAO,QACI,oBACzCryB,KAAK,OAENqpH,EAAQ,IAAIw+F,EACZoB,EAAa30L,EAAK00L,EAAQ,GAAIA,EAAQ,GAAIrnN,GAC1C+mN,EAAWv+I,EAAGrxE,SAASd,KAAKiyE,KAC5B0+I,EAAYx+I,EAAGrxE,SAASu5B,EAAM43C,KA6BlC,OA5BAg/I,EAAW9pN,SAAQ,SAAUlC,GAE3B,IADA,IAAIrK,EAASqK,EAAU,GAAGrK,OACnBA,EAAS,GAAG,CACjB,IAAIs2N,EAAW,EACf,OAAQjsN,EAAU,IAChB,KAAKq3B,EAAK60L,OACRD,EAAW/tM,KAAKW,IAAI6sM,EAAUE,aAAcj2N,GAC5Cy2H,EAAMn2H,KAAKy1N,EAAU1tN,KAAKiuN,IAC1B,MACF,KAAK50L,EAAK80L,OACRF,EAAW/tM,KAAKW,IAAIlpB,EAAQ81N,EAASG,cACrCH,EAASztN,KAAKiuN,GACd7/F,EAAc,OAAE6/F,GAChB,MACF,KAAK50L,EAAK+0L,MACRH,EAAW/tM,KAAKW,IAAI4sM,EAASG,aAAcF,EAAUE,aAAcj2N,GACnE,IAAIk2N,EAASJ,EAASztN,KAAKiuN,GACvBH,EAAUJ,EAAU1tN,KAAKiuN,GACzBvB,EAAMmB,EAAO1rK,OAAQ2rK,EAAQ3rK,QAC/BisE,EAAM0+F,OAAOmB,EAAU/+I,EAAG82B,WAAW3sE,KAAKw0L,EAAO7nH,WAAY8nH,EAAQ9nH,aAErEooB,EAAMn2H,KAAK61N,GAAiB,OAAEG,GAIpCt2N,GAAUs2N,MAGP7/F,EAAM4+F,QAGfJ,EAAM/0N,UAAUw2N,SAAW,SAAUpB,EAAWqB,GAC9CA,EAAUA,GAAW,KAIrB,IAHA,IAAIhB,EAAOp+I,EAAGrxE,SAASd,KAAKiyE,KACxBwiB,EAAO,IAAIo7H,EACXn1N,EAAI,EACD61N,EAAKC,WAAW,CACrB,GAAwB,WAApBD,EAAKK,WAAyB,OAClC,IAAIE,EAASP,EAAKiB,OACdlsK,EAAQ6sB,EAAGv3E,OAAOk2N,GAAUP,EAAKM,aACjClnN,EAAiC,iBAAlBmnN,EAAO1rK,OACxB0rK,EAAO1rK,OAAO/zC,QAAQkgN,EAASjsK,GAASA,GAAS,EACnD,GAAI37C,EAAQ,EACV8qF,EAAKv5F,KAAKq1N,EAAKttN,aACV,GAAI0G,EAAQ,EACjB8qF,EAAKv5F,KAAKq1N,EAAKttN,KAAK0G,QACf,CACL,IAA0D,IAAtDumN,EAAUz7H,EAAM87H,EAAKttN,KAAK,GAAGgmG,YAAc,GAAIvuG,GACjD,OAEFA,GAAK,EACL+5F,EAAO,IAAIo7H,GAGXp7H,EAAK75F,SAAW,GAClBs1N,EAAUz7H,EAAM,GAAI/5F,IAIxBm1N,EAAM/0N,UAAUgnE,UAAY,SAAUznC,EAAOpU,GAE3C,GADAA,IAAaA,EACQ,iBAAVoU,EACT,OAAOr6B,KAAKyxN,kBAAkBp3L,EAAOpU,GAKvC,IAHA,IAAIyqM,EAAWv+I,EAAGrxE,SAASd,KAAKiyE,KAC5B0+I,EAAYx+I,EAAGrxE,SAASu5B,EAAM43C,KAC9Bo/C,EAAQ,IAAIw+F,EACTa,EAASF,WAAaG,EAAUH,WACrC,GAA4B,WAAxBE,EAASE,aAA4B3qM,GAAqC,WAAzB0qM,EAAUC,WAExD,GAA6B,WAAzBD,EAAUC,WACnBv/F,EAAMn2H,KAAKy1N,EAAU1tN,YAChB,CACL,IAAIrI,EAASuoB,KAAKW,IAAI4sM,EAASG,aAAcF,EAAUE,cACnDC,EAASJ,EAASztN,KAAKrI,GACvBm2N,EAAUJ,EAAU1tN,KAAKrI,GAC7B,GAAIk2N,EAAe,OAEjB,SACSC,EAAgB,OACzB1/F,EAAMn2H,KAAK61N,GAGX1/F,EAAM0+F,OAAOn1N,EAAQu3E,EAAG82B,WAAWnnC,UAAUgvJ,EAAO7nH,WAAY8nH,EAAQ9nH,WAAYhjF,SAdtForG,EAAM0+F,OAAO59I,EAAGv3E,OAAO81N,EAASztN,SAkBpC,OAAOouH,EAAM4+F,QAGfJ,EAAM/0N,UAAU22N,kBAAoB,SAAU9nN,EAAOsc,GACnDA,IAAaA,EAGb,IAFA,IAAIyqM,EAAWv+I,EAAGrxE,SAASd,KAAKiyE,KAC5Bp2C,EAAS,EACN60L,EAASF,WAAa30L,GAAUlyB,GAAO,CAC5C,IAAI/O,EAAS81N,EAASG,aAClBa,EAAWhB,EAASE,WACxBF,EAASztN,OACQ,WAAbyuN,GAGoB,WAAbA,IAA0B71L,EAASlyB,IAAUsc,KACtDtc,GAAS/O,GAEXihC,GAAUjhC,GALR+O,GAASwZ,KAAKW,IAAIlpB,EAAQ+O,EAAQkyB,GAOtC,OAAOlyB,GAITjO,EAAOD,QAAUo0N,GAKX,SAAUn0N,EAAQD,GAExB,aAEA,IAAI80G,EAAS11G,OAAOC,UAAUC,eAC1Bi+E,EAAQn+E,OAAOC,UAAUkkB,SAEzBre,EAAU,SAAiB0e,GAC9B,MAA6B,mBAAlB3e,MAAMC,QACTD,MAAMC,QAAQ0e,GAGK,mBAApB25D,EAAMh+E,KAAKqkB,IAGfu5D,EAAgB,SAAuB73E,GAC1C,IAAKA,GAA2B,oBAApBi4E,EAAMh+E,KAAK+F,GACtB,OAAO,EAGR,IASI7B,EATAg1M,EAAoB3jG,EAAOv1G,KAAK+F,EAAK,eACrCozM,EAAmBpzM,EAAIC,aAAeD,EAAIC,YAAYlG,WAAay1G,EAAOv1G,KAAK+F,EAAIC,YAAYlG,UAAW,iBAE9G,GAAIiG,EAAIC,cAAgBkzM,IAAsBC,EAC7C,OAAO,EAMR,IAAKj1M,KAAO6B,GAEZ,YAAsB,IAAR7B,GAAuBqxG,EAAOv1G,KAAK+F,EAAK7B,IAGvDxD,EAAOD,QAAU,SAASgkB,IACzB,IAAIjc,EAAS9F,EAAMf,EAAK8xD,EAAMkjD,EAAap1E,EACvC/+B,EAASsE,UAAU,GACnBpH,EAAI,EACJE,EAASkH,UAAUlH,OACnBw1D,GAAO,EAaX,IAVsB,kBAAX5yD,IACV4yD,EAAO5yD,EACPA,EAASsE,UAAU,IAAM,GAEzBpH,EAAI,IAES,MAAV8C,GAAqC,iBAAXA,GAAyC,mBAAXA,KAC3DA,EAAS,IAGH9C,EAAIE,IAAUF,EAGpB,GAAe,OAFf8I,EAAU1B,UAAUpH,IAInB,IAAKgD,KAAQ8F,EACZ7G,EAAMa,EAAOE,GAITF,KAHJixD,EAAOjrD,EAAQ9F,MAKV0yD,GAAQ3B,IAASmqB,EAAcnqB,KAAUkjD,EAAchxG,EAAQ8tD,MAC9DkjD,GACHA,GAAc,EACdp1E,EAAQ5/B,GAAOgE,EAAQhE,GAAOA,EAAM,IAEpC4/B,EAAQ5/B,GAAOi8E,EAAcj8E,GAAOA,EAAM,GAI3Ca,EAAOE,GAAQ+hB,EAAO2wC,EAAM7zB,EAAOkyB,SAGT,IAATA,IACjBjxD,EAAOE,GAAQ+wD,IAQpB,OAAOjxD,IAMF,SAAU9B,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQo6D,QAAUp6D,EAAQk2N,WAAal2N,EAAQm2N,mBAAgBh0N,EAE/D,IAAIqD,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAEf07E,EAAO,SAASz+E,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,GAIrZgrI,EAAWC,EAFDt2N,EAAoB,IAM9Bu2N,EAAeD,EAFDt2N,EAAoB,IAMlCw2N,EAAcF,EAFDt2N,EAAoB,IAMjCy2N,EAAUH,EAFDt2N,EAAoB,KAM7B02N,EAAWJ,EAFDt2N,EAAoB,IAM9B22N,EAASL,EAFDt2N,EAAoB,IAIhC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEvF,SAASmsD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAElO,SAASid,EAAUL,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAEje,IAEI85M,EAAa,SAAUS,GAGzB,SAAST,IAGP,OAFAzkK,EAAgBltD,KAAM2xN,GAEfh6M,EAA2B3X,MAAO2xN,EAAW35M,WAAand,OAAOoxC,eAAe0lL,IAAa1tN,MAAMjE,KAAM8B,YAwClH,OA7CAmW,EAAU05M,EAAYS,GAQtBnxN,EAAa0wN,EAAY,CAAC,CACxBzyN,IAAK,SACLN,MAAO,WACLq+E,EAAK00I,EAAW72N,UAAUkd,WAAand,OAAOoxC,eAAe0lL,EAAW72N,WAAY,SAAUkF,MAAMhF,KAAKgF,MACzGA,KAAKipG,WAAa,IAAI+oH,EAAYn8J,QAAQu4J,WAAWI,MAAMxuN,KAAKqyN,WAEjE,CACDnzN,IAAK,QACLN,MAAO,WACL,OAAO,IAAImzN,EAAal8J,SAAUzQ,OAAOplD,KAAKpB,SAAS,EAAIizN,EAASh8J,SAAS71D,KAAKw/B,UAAWx/B,KAAKipG,WAAW51E,aAE9G,CACDn0B,IAAK,SACLN,MAAO,SAAgBlB,EAAMkB,GAC3B,IAAI0zN,EAAYN,EAAYn8J,QAAQ+oB,MAAMlhF,EAAMs0N,EAAYn8J,QAAQ+3J,MAAM2E,iBACzD,MAAbD,GACFtyN,KAAKipG,WAAWqpH,UAAUA,EAAW1zN,KAGxC,CACDM,IAAK,WACLN,MAAO,SAAkB+K,EAAO/O,EAAQ8C,EAAMkB,GAC5CoB,KAAK4f,OAAOliB,EAAMkB,KAEnB,CACDM,IAAK,WACLN,MAAO,SAAkB+K,EAAO/K,EAAO4zN,GACrC,GAAqB,iBAAV5zN,GAAsBA,EAAM6zN,SAAS,MAAO,CACrD,IAAIh6K,EAAQu5K,EAAYn8J,QAAQ52D,OAAOgvN,EAAMwB,UAC7CzvN,KAAKuO,OAAO4yD,aAAa1oB,EAAiB,IAAV9uC,EAAc3J,KAAOA,KAAKiD,MAC1Dw1C,EAAMwoB,SAAS,EAAGriE,EAAMiB,MAAM,GAAI,SAElCo9E,EAAK00I,EAAW72N,UAAUkd,WAAand,OAAOoxC,eAAe0lL,EAAW72N,WAAY,WAAYkF,MAAMhF,KAAKgF,KAAM2J,EAAO/K,EAAO4zN,OAK9Hb,EA9CQ,CA+CfK,EAAYn8J,QAAQk4J,OAEtB4D,EAAWvmJ,MAAQ4mJ,EAAYn8J,QAAQ+3J,MAAM8E,WAI7C,IAAIzE,EAAQ,SAAU0E,GAGpB,SAAS1E,EAAMoE,GACbnlK,EAAgBltD,KAAMiuN,GAEtB,IAAI9nN,EAASwR,EAA2B3X,MAAOiuN,EAAMj2M,WAAand,OAAOoxC,eAAegiL,IAAQjzN,KAAKgF,KAAMqyN,IAG3G,OADAlsN,EAAOo2D,MAAQ,GACRp2D,EAyHT,OAjIA8R,EAAUg2M,EAAO0E,GAWjB1xN,EAAagtN,EAAO,CAAC,CACnB/uN,IAAK,QACLN,MAAO,WAUL,OATwB,MAApBoB,KAAKu8D,MAAM80D,QACbrxH,KAAKu8D,MAAM80D,MAAQrxH,KAAK4yN,YAAYZ,EAAYn8J,QAAQi4J,MAAMvoK,QAAO,SAAU8rE,EAAOwhG,GACpF,OAAsB,IAAlBA,EAAKj4N,SACAy2H,EAEAA,EAAMjsE,OAAOytK,EAAKj0N,QAASgzN,EAAciB,MAEjD,IAAId,EAAal8J,SAAWzQ,OAAO,KAAMwsK,EAAc5xN,QAErDA,KAAKu8D,MAAM80D,QAEnB,CACDnyH,IAAK,WACLN,MAAO,SAAkB+K,EAAO/O,GAC9BqiF,EAAKgxI,EAAMnzN,UAAUkd,WAAand,OAAOoxC,eAAegiL,EAAMnzN,WAAY,WAAYkF,MAAMhF,KAAKgF,KAAM2J,EAAO/O,GAC9GoF,KAAKu8D,MAAQ,KAEd,CACDr9D,IAAK,WACLN,MAAO,SAAkB+K,EAAO/O,EAAQ8C,EAAMkB,GACxChE,GAAU,IACVo3N,EAAYn8J,QAAQ+oB,MAAMlhF,EAAMs0N,EAAYn8J,QAAQ+3J,MAAMoB,OACxDrlN,EAAQ/O,IAAWoF,KAAKpF,UAC1BoF,KAAK4f,OAAOliB,EAAMkB,GAGpBq+E,EAAKgxI,EAAMnzN,UAAUkd,WAAand,OAAOoxC,eAAegiL,EAAMnzN,WAAY,WAAYkF,MAAMhF,KAAKgF,KAAM2J,EAAOwZ,KAAKW,IAAIlpB,EAAQoF,KAAKpF,SAAW+O,EAAQ,GAAIjM,EAAMkB,GAEnKoB,KAAKu8D,MAAQ,MAEd,CACDr9D,IAAK,WACLN,MAAO,SAAkB+K,EAAO/K,EAAO4zN,GACrC,GAAW,MAAPA,EAAa,OAAOv1I,EAAKgxI,EAAMnzN,UAAUkd,WAAand,OAAOoxC,eAAegiL,EAAMnzN,WAAY,WAAYkF,MAAMhF,KAAKgF,KAAM2J,EAAO/K,EAAO4zN,GAC7I,GAAqB,IAAjB5zN,EAAMhE,OAAV,CACA,IAAI0+F,EAAQ16F,EAAM0sB,MAAM,MACpB49B,EAAOowC,EAAMj+F,QACb6tD,EAAKtuD,OAAS,IACZ+O,EAAQ3J,KAAKpF,SAAW,GAA2B,MAAtBoF,KAAK4vC,SAASqrC,KAC7CgC,EAAKgxI,EAAMnzN,UAAUkd,WAAand,OAAOoxC,eAAegiL,EAAMnzN,WAAY,WAAYkF,MAAMhF,KAAKgF,KAAMmjB,KAAKW,IAAIna,EAAO3J,KAAKpF,SAAW,GAAIsuD,GAE3IlpD,KAAK4vC,SAASqrC,KAAKha,SAASjhE,KAAK4vC,SAASqrC,KAAKrgF,SAAUsuD,GAE3DlpD,KAAKu8D,MAAQ,IAEf,IAAI9jB,EAAQz4C,KACZs5F,EAAM/zC,QAAO,SAAU57C,EAAO8qF,GAG5B,OAFAh8C,EAAQA,EAAMntB,MAAM3hB,GAAO,IACrBs3D,SAAS,EAAGwzB,GACXA,EAAK75F,SACX+O,EAAQu/C,EAAKtuD,WAEjB,CACDsE,IAAK,eACLN,MAAO,SAAsB0wN,EAAM/jJ,GACjC,IAAIztE,EAAOkC,KAAK4vC,SAAS9xC,KACzBm/E,EAAKgxI,EAAMnzN,UAAUkd,WAAand,OAAOoxC,eAAegiL,EAAMnzN,WAAY,eAAgBkF,MAAMhF,KAAKgF,KAAMsvN,EAAM/jJ,GAC7GztE,aAAgBm0N,EAAQp8J,SAC1B/3D,EAAKgyC,SAEP9vC,KAAKu8D,MAAQ,KAEd,CACDr9D,IAAK,SACLN,MAAO,WAIL,OAHyB,MAArBoB,KAAKu8D,MAAM3hE,SACboF,KAAKu8D,MAAM3hE,OAASqiF,EAAKgxI,EAAMnzN,UAAUkd,WAAand,OAAOoxC,eAAegiL,EAAMnzN,WAAY,SAAUkF,MAAMhF,KAAKgF,MAxItG,GA0IRA,KAAKu8D,MAAM3hE,SAEnB,CACDsE,IAAK,eACLN,MAAO,SAAsBpB,EAAQ+tE,GACnC0R,EAAKgxI,EAAMnzN,UAAUkd,WAAand,OAAOoxC,eAAegiL,EAAMnzN,WAAY,eAAgBkF,MAAMhF,KAAKgF,KAAMxC,EAAQ+tE,GACnHvrE,KAAKu8D,MAAQ,KAEd,CACDr9D,IAAK,WACLN,MAAO,SAAkBuU,GACvB8pE,EAAKgxI,EAAMnzN,UAAUkd,WAAand,OAAOoxC,eAAegiL,EAAMnzN,WAAY,WAAYkF,MAAMhF,KAAKgF,KAAMmT,GACvGnT,KAAKu8D,MAAQ,KAEd,CACDr9D,IAAK,OACLN,MAAO,SAAc+K,GACnB,OAAOszE,EAAKgxI,EAAMnzN,UAAUkd,WAAand,OAAOoxC,eAAegiL,EAAMnzN,WAAY,OAAQkF,MAAMhF,KAAKgF,KAAM2J,GAAO,KAElH,CACDzK,IAAK,cACLN,MAAO,SAAqBqsF,GAC1BhO,EAAKgxI,EAAMnzN,UAAUkd,WAAand,OAAOoxC,eAAegiL,EAAMnzN,WAAY,cAAekF,MAAMhF,KAAKgF,KAAMirF,GAC1GjrF,KAAKu8D,MAAQ,KAEd,CACDr9D,IAAK,QACLN,MAAO,SAAe+K,GACpB,IAAI+mC,EAAQ5uC,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,IAAmBA,UAAU,GAE3E,GAAI4uC,IAAoB,IAAV/mC,GAAeA,GAAS3J,KAAKpF,SAxK5B,GAwKwD,CACrE,IAAI2hC,EAAQv8B,KAAKu8B,QACjB,OAAc,IAAV5yB,GACF3J,KAAKuO,OAAO4yD,aAAa5kC,EAAOv8B,MACzBA,OAEPA,KAAKuO,OAAO4yD,aAAa5kC,EAAOv8B,KAAKiD,MAC9Bs5B,GAGT,IAAIt5B,EAAOg6E,EAAKgxI,EAAMnzN,UAAUkd,WAAand,OAAOoxC,eAAegiL,EAAMnzN,WAAY,QAASkF,MAAMhF,KAAKgF,KAAM2J,EAAO+mC,GAEtH,OADA1wC,KAAKu8D,MAAQ,GACNt5D,MAKNgrN,EAlIG,CAmIV+D,EAAYn8J,QAAQo4J,OAOtB,SAAS2D,EAActC,GACrB,IAAI9vL,EAAU19B,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,GAElF,OAAY,MAARwtN,EAAqB9vL,GACG,mBAAjB8vL,EAAK9vL,UACdA,GAAU,EAAIqyL,EAASh8J,SAASr2B,EAAS8vL,EAAK9vL,YAE7B,MAAf8vL,EAAK/gN,QAA0C,UAAxB+gN,EAAK/gN,OAAOkhN,UAAwBH,EAAK/gN,OAAOmvI,QAAQtyE,QAAUkkJ,EAAK5xE,QAAQtyE,MACjG5rC,EAEFoyL,EAActC,EAAK/gN,OAAQixB,IAfpCyuL,EAAMwB,SAAW,QACjBxB,EAAM1zD,QAAU,IAChB0zD,EAAM6E,aAAe,QACrB7E,EAAM8E,gBAAkB,CAACb,EAASr8J,QAASm8J,EAAYn8J,QAAQk4J,MAAOoE,EAAOt8J,SAe7Ep6D,EAAQm2N,cAAgBA,EACxBn2N,EAAQk2N,WAAaA,EACrBl2N,EAAQo6D,QAAUo4J,GAIZ,SAAUvyN,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQo6D,QAAUp6D,EAAQu3N,SAAWv3N,EAAQw3N,kBAAer1N,EAE5D,IAAIiD,EAA4B,mBAAXnC,QAAoD,iBAApBA,OAAOoC,SAAwB,SAAUC,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAXrC,QAAyBqC,EAAIC,cAAgBtC,QAAUqC,IAAQrC,OAAO5D,UAAY,gBAAkBiG,GAElQo5D,EAAgb,SAAU96C,EAAK3kB,GAAK,GAAIgG,MAAMC,QAAQ0e,GAAQ,OAAOA,EAAY,GAAI3gB,OAAOoC,YAAYjG,OAAOwkB,GAAQ,OAAxf,SAAuBA,EAAK3kB,GAAK,IAAI0/D,EAAO,GAAQC,GAAK,EAAU94C,GAAK,EAAW+4C,OAAK18D,EAAW,IAAM,IAAK,IAAiC28D,EAA7B/uD,EAAK6T,EAAI3gB,OAAOoC,cAAmBu5D,GAAME,EAAK/uD,EAAGvI,QAAQu3D,QAAoBJ,EAAKl/D,KAAKq/D,EAAG37D,QAAYlE,GAAK0/D,EAAKx/D,SAAWF,GAA3D2/D,GAAK,IAAoE,MAAO76D,GAAO+hB,GAAK,EAAM+4C,EAAK96D,EAAO,QAAU,KAAW66D,GAAM7uD,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAI+V,EAAI,MAAM+4C,GAAQ,OAAOF,EAA6HK,CAAcp7C,EAAK3kB,GAAa,MAAM,IAAIod,UAAU,yDAEllB7W,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAEnB/F,EAAoB,IAEpB,IAEIu2N,EAAeD,EAFDt2N,EAAoB,IAMlC03N,EAAWpB,EAFDt2N,EAAoB,KAM9B23N,EAAYrB,EAFAt2N,EAAoB,IAMhC43N,EAAWtB,EAFDt2N,EAAoB,IAM9Bw2N,EAAcF,EAFDt2N,EAAoB,IAIjC63N,EAAa73N,EAAoB,IAEjC83N,EAAcxB,EAAuBuB,GAIrCxB,EAAWC,EAFDt2N,EAAoB,IAM9B+3N,EAAWzB,EAFDt2N,EAAoB,KAM9Bg4N,EAAU1B,EAFDt2N,EAAoB,KAIjC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEvF,SAAS0yN,EAAgB1yN,EAAK7B,EAAKN,GAAiK,OAApJM,KAAO6B,EAAOlG,OAAOyD,eAAeyC,EAAK7B,EAAK,CAAEN,MAAOA,EAAOL,YAAY,EAAM8C,cAAc,EAAMC,UAAU,IAAkBP,EAAI7B,GAAON,EAAgBmC,EAE3M,SAASmsD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,IAAI67B,GAAQ,EAAI4/K,EAAS19J,SAAS,SAE9B69J,EAAQ,WAqDV,SAASA,EAAMrlN,GACb,IAAIlI,EAASnG,KAETwD,EAAU1B,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,GAMlF,GAJAorD,EAAgBltD,KAAM0zN,GAEtB1zN,KAAKwD,QAAUyvN,EAAa5kN,EAAW7K,GACvCxD,KAAKqO,UAAYrO,KAAKwD,QAAQ6K,UACR,MAAlBrO,KAAKqO,UACP,OAAOslC,EAAM72C,MAAM,0BAA2BuR,GAE5CrO,KAAKwD,QAAQmwC,OACf+/K,EAAM//K,MAAM3zC,KAAKwD,QAAQmwC,OAE3B,IAAI6U,EAAOxoD,KAAKqO,UAAU47C,UAAUtD,OACpC3mD,KAAKqO,UAAU+2E,UAAUt0E,IAAI,gBAC7B9Q,KAAKqO,UAAU47C,UAAY,GAC3BjqD,KAAKqO,UAAUslN,QAAU3zN,KACzBA,KAAKs4E,KAAOt4E,KAAK4zN,aAAa,aAC9B5zN,KAAKs4E,KAAK8M,UAAUt0E,IAAI,YACxB9Q,KAAKs4E,KAAK57E,aAAa,cAAc,GACrCsD,KAAK6zN,mBAAqB7zN,KAAKwD,QAAQqwN,oBAAsB7zN,KAAKs4E,KAClEt4E,KAAK8zN,QAAU,IAAIX,EAAUt9J,QAC7B71D,KAAK+zN,OAAS/B,EAAYn8J,QAAQ52D,OAAOe,KAAKs4E,KAAM,CAClDw7I,QAAS9zN,KAAK8zN,QACd7+J,UAAWj1D,KAAKwD,QAAQg8B,UAE1Bx/B,KAAKg0N,OAAS,IAAId,EAASr9J,QAAQ71D,KAAK+zN,QACxC/zN,KAAK4mH,UAAY,IAAI0sG,EAAYz9J,QAAQ71D,KAAK+zN,OAAQ/zN,KAAK8zN,SAC3D9zN,KAAKqoK,MAAQ,IAAIroK,KAAKwD,QAAQ6kK,MAAMroK,KAAMA,KAAKwD,SAC/CxD,KAAK05J,SAAW15J,KAAKqoK,MAAM4rD,UAAU,YACrCj0N,KAAKk0N,UAAYl0N,KAAKqoK,MAAM4rD,UAAU,aACtCj0N,KAAKyH,QAAUzH,KAAKqoK,MAAM4rD,UAAU,WACpCj0N,KAAKqoK,MAAM/kK,OACXtD,KAAK8zN,QAAQzmL,GAAG8lL,EAAUt9J,QAAQt+C,OAAO48M,eAAe,SAAU72N,GAC5DA,IAAS61N,EAAUt9J,QAAQt+C,OAAO68M,aACpCjuN,EAAOmyE,KAAK8M,UAAU8jB,OAAO,WAAY/iG,EAAO6tN,OAAOK,cAG3Dr0N,KAAK8zN,QAAQzmL,GAAG8lL,EAAUt9J,QAAQt+C,OAAO+8M,eAAe,SAAUjwL,EAAQkwL,GACxE,IAAIjgF,EAAQnuI,EAAOygH,UAAU4tG,UACzB7qN,EAAQ2qI,GAA0B,IAAjBA,EAAM15I,OAAe05I,EAAM3qI,WAAQ/L,EACxD62N,EAAOz5N,KAAKmL,GAAQ,WAClB,OAAOA,EAAO6tN,OAAOt3M,OAAO,KAAM63M,EAAW5qN,KAC5C06B,MAEL,IAAI46E,EAAWj/G,KAAKk0N,UAAUt6C,QAAQ,yDAA2DpxH,EAAO,qBACxGxoD,KAAK00N,YAAYz1G,GACjBj/G,KAAKyH,QAAQ4nC,QACTrvC,KAAKwD,QAAQuzI,aACf/2I,KAAKs4E,KAAK57E,aAAa,mBAAoBsD,KAAKwD,QAAQuzI,aAEtD/2I,KAAKwD,QAAQmxN,UACf30N,KAAK2gH,UAmYT,OA7eA1/G,EAAayyN,EAAO,KAAM,CAAC,CACzBx0N,IAAK,QACLN,MAAO,SAAe+oC,IACN,IAAVA,IACFA,EAAQ,OAEV4rL,EAAS19J,QAAQqjC,MAAMvxD,KAExB,CACDzoC,IAAK,OACLN,MAAO,SAAcs8C,GACnB,OAAOA,EAAKy4K,SAAW3B,EAAYn8J,QAAQ7vD,KAAKk1C,KAEjD,CACDh8C,IAAK,SACLN,MAAO,SAAiBlB,GAItB,OAH0B,MAAtBsC,KAAK40N,QAAQl3N,IACfi2C,EAAM72C,MAAM,iBAAmBY,EAAO,qCAEjCsC,KAAK40N,QAAQl3N,KAErB,CACDwB,IAAK,WACLN,MAAO,SAAkB+C,EAAMnE,GAC7B,IAAImI,EAAQ3F,KAERqwD,EAAYvuD,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,IAAmBA,UAAU,GAE/E,GAAoB,iBAATH,EAAmB,CAC5B,IAAIjE,EAAOiE,EAAKivJ,UAAYjvJ,EAAK8tN,SACb,iBAAT/xN,EAETsC,KAAKmmD,SAAS,WAAazoD,EAAMiE,EAAMnE,GAEvC3C,OAAO0Z,KAAK5S,GAAMwF,SAAQ,SAAUjI,GAClCyG,EAAMwgD,SAASjnD,EAAKyC,EAAKzC,GAAM1B,WAIT,MAAtBwC,KAAK40N,QAAQjzN,IAAkB0uD,GACjC1c,EAAMzvB,KAAK,eAAiBviB,EAAO,QAASnE,GAE9CwC,KAAK40N,QAAQjzN,GAAQnE,GAChBmE,EAAKwxE,WAAW,WAAaxxE,EAAKwxE,WAAW,cAAoC,aAApB31E,EAAOiyN,SACvEuC,EAAYn8J,QAAQ1P,SAAS3oD,GACpBmE,EAAKwxE,WAAW,YAAyC,mBAApB31E,EAAO2oD,UACrD3oD,EAAO2oD,eAgEfllD,EAAayyN,EAAO,CAAC,CACnBx0N,IAAK,eACLN,MAAO,SAAsByP,GAC3B,IAAIwmN,EAAU/yN,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,KAElF,GAAyB,iBAAduM,EAAwB,CACjC,IAAIi3E,EAAYj3E,GAChBA,EAAYhS,SAASC,cAAc,QACzB8oF,UAAUt0E,IAAIw0E,GAG1B,OADAtlF,KAAKqO,UAAU8yD,aAAa9yD,EAAWwmN,GAChCxmN,IAER,CACDnP,IAAK,OACLN,MAAO,WACLoB,KAAK4mH,UAAUkuG,SAAS,QAEzB,CACD51N,IAAK,aACLN,MAAO,SAAoB+K,EAAO/O,EAAQypC,GACxC,IAAI/1B,EAAStO,KAET+0N,EAAY/B,EAASrpN,EAAO/O,EAAQypC,GAEpC2wL,EAAa76J,EAAe46J,EAAW,GAM3C,OAJAprN,EAAQqrN,EAAW,GACnBp6N,EAASo6N,EAAW,GACpB3wL,EAAS2wL,EAAW,GAEbP,EAAOz5N,KAAKgF,MAAM,WACvB,OAAOsO,EAAO0lN,OAAOiB,WAAWtrN,EAAO/O,KACtCypC,EAAQ16B,GAAQ,EAAI/O,KAExB,CACDsE,IAAK,UACLN,MAAO,WACLoB,KAAK4xI,QAAO,KAEb,CACD1yI,IAAK,SACLN,MAAO,WACL,IAAI69D,IAAU36D,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,KAAmBA,UAAU,GAE7E9B,KAAK+zN,OAAOniF,OAAOn1E,GACnBz8D,KAAKqO,UAAU+2E,UAAU8jB,OAAO,eAAgBzsC,KAEjD,CACDv9D,IAAK,QACLN,MAAO,WACL,IAAI6zH,EAAYzyH,KAAK6zN,mBAAmBphG,UACxCzyH,KAAK4mH,UAAUgD,QACf5pH,KAAK6zN,mBAAmBphG,UAAYA,EACpCzyH,KAAKk1N,mBAEN,CACDh2N,IAAK,SACLN,MAAO,SAAgBlB,EAAMkB,GAC3B,IAAI6P,EAASzO,KAETqkC,EAASviC,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAKqxN,EAAUt9J,QAAQ3Y,QAAQi4K,IAE3G,OAAOV,EAAOz5N,KAAKgF,MAAM,WACvB,IAAIs0I,EAAQ7lI,EAAO2mN,cAAa,GAC5BnZ,EAAS,IAAI8V,EAAal8J,QAC9B,GAAa,MAATy+E,EACF,OAAO2nE,EACF,GAAI+V,EAAYn8J,QAAQ+oB,MAAMlhF,EAAMs0N,EAAYn8J,QAAQ+3J,MAAMoB,OACnE/S,EAASxtM,EAAOulN,OAAOqB,WAAW/gF,EAAM3qI,MAAO2qI,EAAM15I,OAAQ64N,EAAgB,GAAI/1N,EAAMkB,QAClF,IAAqB,IAAjB01I,EAAM15I,OAEf,OADA6T,EAAOm4G,UAAUhnG,OAAOliB,EAAMkB,GACvBq9M,EAEPA,EAASxtM,EAAOulN,OAAOsB,WAAWhhF,EAAM3qI,MAAO2qI,EAAM15I,OAAQ64N,EAAgB,GAAI/1N,EAAMkB,IAGzF,OADA6P,EAAO8mN,aAAajhF,EAAO6+E,EAAUt9J,QAAQ3Y,QAAQs4K,QAC9CvZ,IACN53K,KAEJ,CACDnlC,IAAK,aACLN,MAAO,SAAoB+K,EAAO/O,EAAQ8C,EAAMkB,EAAOylC,GACrD,IAEI7E,EAFA1vB,EAAS9P,KAITy1N,EAAazC,EAASrpN,EAAO/O,EAAQ8C,EAAMkB,EAAOylC,GAElDqxL,EAAav7J,EAAes7J,EAAY,GAO5C,OALA9rN,EAAQ+rN,EAAW,GACnB96N,EAAS86N,EAAW,GACpBl2L,EAAUk2L,EAAW,GACrBrxL,EAASqxL,EAAW,GAEbjB,EAAOz5N,KAAKgF,MAAM,WACvB,OAAO8P,EAAOkkN,OAAOqB,WAAW1rN,EAAO/O,EAAQ4kC,KAC9C6E,EAAQ16B,EAAO,KAEnB,CACDzK,IAAK,aACLN,MAAO,SAAoB+K,EAAO/O,EAAQ8C,EAAMkB,EAAOylC,GACrD,IAEI7E,EAFA3tB,EAAS7R,KAIT21N,EAAa3C,EAASrpN,EAAO/O,EAAQ8C,EAAMkB,EAAOylC,GAElDuxL,EAAaz7J,EAAew7J,EAAY,GAO5C,OALAhsN,EAAQisN,EAAW,GACnBh7N,EAASg7N,EAAW,GACpBp2L,EAAUo2L,EAAW,GACrBvxL,EAASuxL,EAAW,GAEbnB,EAAOz5N,KAAKgF,MAAM,WACvB,OAAO6R,EAAOmiN,OAAOsB,WAAW3rN,EAAO/O,EAAQ4kC,KAC9C6E,EAAQ16B,EAAO,KAEnB,CACDzK,IAAK,YACLN,MAAO,SAAmB+K,GACxB,IAAI/O,EAASkH,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,EAE7E+zN,OAAS,EAEXA,EADmB,iBAAVlsN,EACA3J,KAAK4mH,UAAUkvG,UAAUnsN,EAAO/O,GAEhCoF,KAAK4mH,UAAUkvG,UAAUnsN,EAAMA,MAAOA,EAAM/O,QAEvD,IAAIm7N,EAAkB/1N,KAAKqO,UAAUyjH,wBACrC,MAAO,CACLgiB,OAAQ+hF,EAAO/hF,OAASiiF,EAAgBx+G,IACxCkc,OAAQoiG,EAAOpiG,OACf1B,KAAM8jG,EAAO9jG,KAAOgkG,EAAgBhkG,KACpCvC,MAAOqmG,EAAOrmG,MAAQumG,EAAgBhkG,KACtCxa,IAAKs+G,EAAOt+G,IAAMw+G,EAAgBx+G,IAClCjjE,MAAOuhL,EAAOvhL,SAGjB,CACDp1C,IAAK,cACLN,MAAO,WACL,IAAI+K,EAAQ7H,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,EAC5ElH,EAASkH,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK9B,KAAKg2N,YAAcrsN,EAEhGssN,EAAajD,EAASrpN,EAAO/O,GAE7Bs7N,EAAa/7J,EAAe87J,EAAY,GAK5C,OAHAtsN,EAAQusN,EAAW,GACnBt7N,EAASs7N,EAAW,GAEbl2N,KAAKg0N,OAAOmC,YAAYxsN,EAAO/O,KAEvC,CACDsE,IAAK,YACLN,MAAO,WACL,IAAI+K,EAAQ7H,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK9B,KAAKo1N,cAAa,GAC9Fx6N,EAASkH,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,EAEjF,MAAqB,iBAAV6H,EACF3J,KAAKg0N,OAAOoC,UAAUzsN,EAAO/O,GAE7BoF,KAAKg0N,OAAOoC,UAAUzsN,EAAMA,MAAOA,EAAM/O,UAGnD,CACDsE,IAAK,WACLN,MAAO,SAAkB0wN,GACvB,OAAOA,EAAKzzL,OAAO77B,KAAK+zN,UAEzB,CACD70N,IAAK,YACLN,MAAO,WACL,OAAOoB,KAAK+zN,OAAOn5N,WAEpB,CACDsE,IAAK,UACLN,MAAO,SAAiB+K,GACtB,OAAO3J,KAAK+zN,OAAOlB,KAAKlpN,KAEzB,CACDzK,IAAK,UACLN,MAAO,SAAiB+K,GACtB,OAAO3J,KAAK+zN,OAAOt/H,KAAK9qF,KAEzB,CACDzK,IAAK,WACLN,MAAO,WACL,IAAI+K,EAAQ7H,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,EAC5ElH,EAASkH,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAKiiD,OAAOsyK,UAExF,MAAqB,iBAAV1sN,EACF3J,KAAK+zN,OAAOz6H,MAAM3vF,EAAMA,MAAOA,EAAM/O,QAErCoF,KAAK+zN,OAAOz6H,MAAM3vF,EAAO/O,KAGnC,CACDsE,IAAK,YACLN,MAAO,SAAmBlB,GACxB,OAAOsC,KAAKqoK,MAAMltK,QAAQuC,KAE3B,CACDwB,IAAK,eACLN,MAAO,WACL,IAAIgrH,EAAQ9nH,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,IAAmBA,UAAU,GAI3E,OAFI8nH,GAAO5pH,KAAK4pH,QAChB5pH,KAAK0c,SACE1c,KAAK4mH,UAAU0vG,WAAW,KAElC,CACDp3N,IAAK,UACLN,MAAO,WACL,IAAI+K,EAAQ7H,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,EAC5ElH,EAASkH,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK9B,KAAKg2N,YAAcrsN,EAEhG4sN,EAAavD,EAASrpN,EAAO/O,GAE7B47N,EAAcr8J,EAAeo8J,EAAY,GAK7C,OAHA5sN,EAAQ6sN,EAAY,GACpB57N,EAAS47N,EAAY,GAEdx2N,KAAKg0N,OAAOzhH,QAAQ5oG,EAAO/O,KAEnC,CACDsE,IAAK,WACLN,MAAO,WACL,OAAOoB,KAAK4mH,UAAU/L,aAEvB,CACD37G,IAAK,cACLN,MAAO,SAAqB+K,EAAO8sN,EAAO73N,GACxC,IAAIoU,EAAShT,KAETqkC,EAASviC,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK4xN,EAAMx2K,QAAQi4K,IAE/F,OAAOV,EAAOz5N,KAAKgF,MAAM,WACvB,OAAOgT,EAAOghN,OAAO0C,YAAY/sN,EAAO8sN,EAAO73N,KAC9CylC,EAAQ16B,KAEZ,CACDzK,IAAK,aACLN,MAAO,SAAoB+K,EAAOu/C,EAAMxrD,EAAMkB,EAAOylC,GACnD,IAEI7E,EAFAjpB,EAASvW,KAIT22N,EAAc3D,EAASrpN,EAAO,EAAGjM,EAAMkB,EAAOylC,GAE9CuyL,EAAcz8J,EAAew8J,EAAa,GAM9C,OAJAhtN,EAAQitN,EAAY,GACpBp3L,EAAUo3L,EAAY,GACtBvyL,EAASuyL,EAAY,GAEdnC,EAAOz5N,KAAKgF,MAAM,WACvB,OAAOuW,EAAOy9M,OAAO6C,WAAWltN,EAAOu/C,EAAM1pB,KAC5C6E,EAAQ16B,EAAOu/C,EAAKtuD,UAExB,CACDsE,IAAK,YACLN,MAAO,WACL,OAAQoB,KAAKqO,UAAU+2E,UAAUguB,SAAS,iBAE3C,CACDl0G,IAAK,MACLN,MAAO,WACL,OAAOoB,KAAK8zN,QAAQl9K,IAAI3yC,MAAMjE,KAAK8zN,QAAShyN,aAE7C,CACD5C,IAAK,KACLN,MAAO,WACL,OAAOoB,KAAK8zN,QAAQzmL,GAAGppC,MAAMjE,KAAK8zN,QAAShyN,aAE5C,CACD5C,IAAK,OACLN,MAAO,WACL,OAAOoB,KAAK8zN,QAAQn9K,KAAK1yC,MAAMjE,KAAK8zN,QAAShyN,aAE9C,CACD5C,IAAK,YACLN,MAAO,SAAmB+K,EAAO6+C,EAAMnkB,GACrCrkC,KAAKk0N,UAAU4C,qBAAqBntN,EAAO6+C,EAAMnkB,KAElD,CACDnlC,IAAK,eACLN,MAAO,SAAsB+K,EAAO/O,EAAQypC,GAC1C,IAAI1tB,EAAS3W,KAET+2N,EAAc/D,EAASrpN,EAAO/O,EAAQypC,GAEtC2yL,EAAc78J,EAAe48J,EAAa,GAM9C,OAJAptN,EAAQqtN,EAAY,GACpBp8N,EAASo8N,EAAY,GACrB3yL,EAAS2yL,EAAY,GAEdvC,EAAOz5N,KAAKgF,MAAM,WACvB,OAAO2W,EAAOq9M,OAAOiD,aAAattN,EAAO/O,KACxCypC,EAAQ16B,KAEZ,CACDzK,IAAK,iBACLN,MAAO,WACLoB,KAAK4mH,UAAUsuG,eAAel1N,KAAK6zN,sBAEpC,CACD30N,IAAK,cACLN,MAAO,SAAqByyH,GAC1B,IAAI75G,EAAUxX,KAEVqkC,EAASviC,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAKqxN,EAAUt9J,QAAQ3Y,QAAQi4K,IAE3G,OAAOV,EAAOz5N,KAAKgF,MAAM,WACvBqxH,EAAQ,IAAI0gG,EAAal8J,QAAQw7D,GACjC,IAAIz2H,EAAS4c,EAAQw+M,YACjBkB,EAAU1/M,EAAQw8M,OAAOiB,WAAW,EAAGr6N,GACvCu8N,EAAU3/M,EAAQw8M,OAAOoD,WAAW/lG,GACpC2+F,EAASmH,EAAQllJ,IAAIklJ,EAAQllJ,IAAIr3E,OAAS,GAM9C,OALc,MAAVo1N,GAA2C,iBAAlBA,EAAO5qK,QAAmE,OAA5C4qK,EAAO5qK,OAAO4qK,EAAO5qK,OAAOxqD,OAAS,KAC9F4c,EAAQw8M,OAAOiB,WAAWz9M,EAAQw+M,YAAc,EAAG,GACnDmB,EAAQr6M,OAAO,IAEPo6M,EAAQ5oL,QAAQ6oL,KAEzB9yL,KAEJ,CACDnlC,IAAK,eACLN,MAAO,SAAsB+K,EAAO/O,EAAQypC,GAC1C,GAAa,MAAT16B,EACF3J,KAAK4mH,UAAUkuG,SAAS,KAAMl6N,GAAU84N,EAAMx2K,QAAQi4K,SACjD,CACL,IAAIkC,EAAcrE,EAASrpN,EAAO/O,EAAQypC,GAEtCizL,EAAcn9J,EAAek9J,EAAa,GAE9C1tN,EAAQ2tN,EAAY,GACpB18N,EAAS08N,EAAY,GACrBjzL,EAASizL,EAAY,GAErBt3N,KAAK4mH,UAAUkuG,SAAS,IAAIzB,EAAWkE,MAAM5tN,EAAO/O,GAASypC,GACzDA,IAAW8uL,EAAUt9J,QAAQ3Y,QAAQs4K,QACvCx1N,KAAK4mH,UAAUsuG,eAAel1N,KAAK6zN,uBAIxC,CACD30N,IAAK,UACLN,MAAO,SAAiBsqD,GACtB,IAAI7kB,EAASviC,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAKqxN,EAAUt9J,QAAQ3Y,QAAQi4K,IAEvG9jG,GAAQ,IAAI0gG,EAAal8J,SAAUzQ,OAAO8D,GAC9C,OAAOlpD,KAAK00N,YAAYrjG,EAAOhtF,KAEhC,CACDnlC,IAAK,SACLN,MAAO,WACL,IAAIylC,EAASviC,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAKqxN,EAAUt9J,QAAQ3Y,QAAQs6K,KAEvGvb,EAASj8M,KAAK+zN,OAAOr3M,OAAO2nB,GAEhC,OADArkC,KAAK4mH,UAAUlqG,OAAO2nB,GACf43K,IAER,CACD/8M,IAAK,iBACLN,MAAO,SAAwByyH,GAC7B,IAAIh5G,EAAUrY,KAEVqkC,EAASviC,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAKqxN,EAAUt9J,QAAQ3Y,QAAQi4K,IAE3G,OAAOV,EAAOz5N,KAAKgF,MAAM,WAEvB,OADAqxH,EAAQ,IAAI0gG,EAAal8J,QAAQw7D,GAC1Bh5G,EAAQ27M,OAAOoD,WAAW/lG,EAAOhtF,KACvCA,GAAQ,OAIRqvL,EA9eG,GAugBZ,SAAST,EAAa5kN,EAAWgoI,GAS/B,IARAA,GAAa,EAAIw7E,EAASh8J,UAAS,EAAM,CACvCxnD,UAAWA,EACXlT,QAAS,CACP+4N,WAAW,EACXx6D,UAAU,EACVjyJ,SAAS,IAEV4uI,IACagyB,OAAShyB,EAAWgyB,QAAUqrD,EAAM+D,SAASpvD,OAI3D,GADAhyB,EAAWgyB,MAAQqrD,EAAMgE,OAAO,UAAYrhF,EAAWgyB,OAC/B,MAApBhyB,EAAWgyB,MACb,MAAM,IAAItrK,MAAM,iBAAmBs5I,EAAWgyB,MAAQ,+BAJxDhyB,EAAWgyB,MAAQmrD,EAAQ39J,QAO7B,IAAI8hK,GAAc,EAAI9F,EAASh8J,UAAS,EAAM,GAAIwgF,EAAWgyB,MAAMovD,UACnE,CAACE,EAAathF,GAAYlvI,SAAQ,SAAU3E,GAC1CA,EAAOrH,QAAUqH,EAAOrH,SAAW,GACnCN,OAAO0Z,KAAK/R,EAAOrH,SAASgM,SAAQ,SAAUzL,IACb,IAA3B8G,EAAOrH,QAAQO,KACjB8G,EAAOrH,QAAQO,GAAU,UAI/B,IACIk8N,EADc/8N,OAAO0Z,KAAKojN,EAAYx8N,SAASgJ,OAAOtJ,OAAO0Z,KAAK8hI,EAAWl7I,UAClDoqD,QAAO,SAAU/iD,EAAQ9E,GACtD,IAAIm6N,EAAcnE,EAAMgE,OAAO,WAAah6N,GAM5C,OALmB,MAAfm6N,EACFlkL,EAAM72C,MAAM,eAAiBY,EAAO,4CAEpC8E,EAAO9E,GAAQm6N,EAAYJ,UAAY,GAElCj1N,IACN,IAmBH,OAjB0B,MAAtB6zI,EAAWl7I,SAAmBk7I,EAAWl7I,QAAQitK,SAAW/xB,EAAWl7I,QAAQitK,QAAQpnK,cAAgBnG,SACzGw7I,EAAWl7I,QAAQitK,QAAU,CAC3B/5J,UAAWgoI,EAAWl7I,QAAQitK,UAGlC/xB,GAAa,EAAIw7E,EAASh8J,UAAS,EAAM,GAAI69J,EAAM+D,SAAU,CAAEt8N,QAASy8N,GAAgBD,EAAathF,GACrG,CAAC,SAAU,YAAa,sBAAsBlvI,SAAQ,SAAUjI,GAC/B,iBAApBm3I,EAAWn3I,KACpBm3I,EAAWn3I,GAAO7C,SAASsjE,cAAc02E,EAAWn3I,QAGxDm3I,EAAWl7I,QAAUN,OAAO0Z,KAAK8hI,EAAWl7I,SAASoqD,QAAO,SAAU/iD,EAAQ9E,GAI5E,OAHI24I,EAAWl7I,QAAQuC,KACrB8E,EAAO9E,GAAQ24I,EAAWl7I,QAAQuC,IAE7B8E,IACN,IACI6zI,EAKT,SAASo+E,EAAOqD,EAAUzzL,EAAQ16B,EAAOtO,GACvC,GAAI2E,KAAKwD,QAAQsc,SAAW9f,KAAKsuI,aAAejqG,IAAW8uL,EAAUt9J,QAAQ3Y,QAAQs6K,KACnF,OAAO,IAAIzF,EAAal8J,QAE1B,IAAIy+E,EAAiB,MAAT3qI,EAAgB,KAAO3J,KAAKo1N,eACpC2C,EAAW/3N,KAAKg0N,OAAO3iG,MACvB4qF,EAAS6b,IAUb,GATa,MAATxjF,KACY,IAAV3qI,IAAgBA,EAAQ2qI,EAAM3qI,OACrB,MAATtO,EACFi5I,EAAQ0jF,EAAW1jF,EAAO2nE,EAAQ53K,GACf,IAAVhpC,IACTi5I,EAAQ0jF,EAAW1jF,EAAO3qI,EAAOtO,EAAOgpC,IAE1CrkC,KAAKu1N,aAAajhF,EAAO6+E,EAAUt9J,QAAQ3Y,QAAQs4K,SAEjDvZ,EAAOrhN,SAAW,EAAG,CACvB,IAAIq9N,EAKEC,EAHFzzM,EAAO,CAAC0uM,EAAUt9J,QAAQt+C,OAAO68M,YAAanY,EAAQ8b,EAAU1zL,IACnE4zL,EAAWj4N,KAAK8zN,SAAS/8K,KAAK9yC,MAAMg0N,EAAU,CAAC9E,EAAUt9J,QAAQt+C,OAAO48M,eAAehwN,OAAOsgB,IAC3F4f,IAAW8uL,EAAUt9J,QAAQ3Y,QAAQs4K,SAGtC0C,EAAYl4N,KAAK8zN,SAAS/8K,KAAK9yC,MAAMi0N,EAAWzzM,GAGrD,OAAOw3L,EAGT,SAAS+W,EAASrpN,EAAO/O,EAAQ8C,EAAMkB,EAAOylC,GAC5C,IAAI7E,EAAU,GAwBd,MAvB2B,iBAAhB71B,EAAMA,OAA8C,iBAAjBA,EAAM/O,OAE5B,iBAAXA,GACTypC,EAASzlC,EAAOA,EAAQlB,EAAMA,EAAO9C,EAAQA,EAAS+O,EAAM/O,OAAQ+O,EAAQA,EAAMA,QAElF/O,EAAS+O,EAAM/O,OAAQ+O,EAAQA,EAAMA,OAEZ,iBAAX/O,IAChBypC,EAASzlC,EAAOA,EAAQlB,EAAMA,EAAO9C,EAAQA,EAAS,GAGY,iBAA/C,IAAT8C,EAAuB,YAAcmD,EAAQnD,KACvD8hC,EAAU9hC,EACV2mC,EAASzlC,GACgB,iBAATlB,IACH,MAATkB,EACF4gC,EAAQ9hC,GAAQkB,EAEhBylC,EAAS3mC,GAKN,CAACiM,EAAO/O,EAAQ4kC,EADvB6E,EAASA,GAAU8uL,EAAUt9J,QAAQ3Y,QAAQi4K,KAI/C,SAAS6C,EAAW1jF,EAAO3qI,EAAO/O,EAAQypC,GACxC,GAAa,MAATiwG,EAAe,OAAO,KAC1B,IAAIhvF,OAAQ,EACRgrB,OAAM,EACV,GAAI3mE,aAAiBooN,EAAal8J,QAAS,CACzC,IAAInY,EAAO,CAAC42F,EAAM3qI,MAAO2qI,EAAM3qI,MAAQ2qI,EAAM15I,QAAQ+J,KAAI,SAAUqsB,GACjE,OAAOrnB,EAAM8nN,kBAAkBzgM,EAAKqT,IAAW8uL,EAAUt9J,QAAQ3Y,QAAQs6K,SAGvEW,EAAQh+J,EAAezc,EAAM,GAEjC4H,EAAQ6yK,EAAM,GACd7nJ,EAAM6nJ,EAAM,OACP,CACL,IAAIC,EAAQ,CAAC9jF,EAAM3qI,MAAO2qI,EAAM3qI,MAAQ2qI,EAAM15I,QAAQ+J,KAAI,SAAUqsB,GAClE,OAAIA,EAAMrnB,GAASqnB,IAAQrnB,GAAS06B,IAAW8uL,EAAUt9J,QAAQ3Y,QAAQs6K,KAAaxmM,EAClFp2B,GAAU,EACLo2B,EAAMp2B,EAENuoB,KAAKqD,IAAI7c,EAAOqnB,EAAMp2B,MAI7By9N,EAAQl+J,EAAei+J,EAAO,GAElC9yK,EAAQ+yK,EAAM,GACd/nJ,EAAM+nJ,EAAM,GAEd,OAAO,IAAIhF,EAAWkE,MAAMjyK,EAAOgrB,EAAMhrB,GAvK3CouK,EAAM+D,SAAW,CACf5B,OAAQ,KACRr2L,QAAS,KACTrkC,QAAS,GACT47I,YAAa,GACb49E,UAAU,EACVd,mBAAoB,KACpB/zM,QAAQ,EACRuoJ,MAAO,WAETqrD,EAAMn8M,OAAS47M,EAAUt9J,QAAQt+C,OACjCm8M,EAAMx2K,QAAUi2K,EAAUt9J,QAAQ3Y,QAElCw2K,EAAMtsL,QAA2B,QAEjCssL,EAAMkB,QAAU,CACd,MAAS7C,EAAal8J,QACtB,UAAam8J,EAAYn8J,QACzB,cAAeu9J,EAASv9J,QACxB,aAAc29J,EAAQ39J,SAuJxBp6D,EAAQw3N,aAAeA,EACvBx3N,EAAQu3N,SAAWA,EACnBv3N,EAAQo6D,QAAU69J,GAIZ,SAAUh4N,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAAIqC,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAEf07E,EAAO,SAASz+E,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,GAIrZsrI,EAASL,EAFDt2N,EAAoB,IAM5Bw2N,EAAcF,EAFDt2N,EAAoB,IAIrC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEvF,SAASmsD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAIlO,IAAIkzN,EAAS,SAAUoK,GAGrB,SAASpK,IAGP,OAFAhhK,EAAgBltD,KAAMkuN,GAEfv2M,EAA2B3X,MAAOkuN,EAAOl2M,WAAand,OAAOoxC,eAAeiiL,IAASjqN,MAAMjE,KAAM8B,YA0C1G,OAlDF,SAAmB8V,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAG/dI,CAAUi2M,EAAQoK,GAQlBr3N,EAAaitN,EAAQ,CAAC,CACpBhvN,IAAK,WACLN,MAAO,SAAkB+K,EAAO/O,EAAQ8C,EAAMkB,GAC5C,GAAIsvN,EAAO51G,QAAQt4G,KAAK09I,QAAQ+xE,SAAU/xN,GAAQ,GAAKs0N,EAAYn8J,QAAQ+oB,MAAMlhF,EAAMs0N,EAAYn8J,QAAQ+3J,MAAM2K,MAAO,CACtH,IAAIjJ,EAAOtvN,KAAKw4N,QAAQ7uN,EAAO/O,GAC3BgE,GACF0wN,EAAKxoG,KAAKppH,EAAMkB,QAGlBq+E,EAAKixI,EAAOpzN,UAAUkd,WAAand,OAAOoxC,eAAeiiL,EAAOpzN,WAAY,WAAYkF,MAAMhF,KAAKgF,KAAM2J,EAAO/O,EAAQ8C,EAAMkB,KAGjI,CACDM,IAAK,WACLN,MAAO,SAAkBuU,GAEvB,GADA8pE,EAAKixI,EAAOpzN,UAAUkd,WAAand,OAAOoxC,eAAeiiL,EAAOpzN,WAAY,WAAYkF,MAAMhF,KAAKgF,KAAMmT,GACrGnT,KAAKuO,kBAAkB2/M,GAAUA,EAAO51G,QAAQt4G,KAAK09I,QAAQ+xE,SAAUzvN,KAAKuO,OAAOmvI,QAAQ+xE,UAAY,EAAG,CAC5G,IAAIlhN,EAASvO,KAAKuO,OAAOiqN,QAAQx4N,KAAK67B,SAAU77B,KAAKpF,UACrDoF,KAAKy4N,aAAalqN,GAClBA,EAAOu4G,KAAK9mH,UAGd,CAAC,CACHd,IAAK,UACLN,MAAO,SAAiB6Y,EAAM4iB,GAC5B,IAAIq+L,EAAYxK,EAAO59M,MAAMe,QAAQoG,GACjCkhN,EAAazK,EAAO59M,MAAMe,QAAQgpB,GACtC,OAAIq+L,GAAa,GAAKC,GAAc,EAC3BD,EAAYC,EACVlhN,IAAS4iB,EACX,EACE5iB,EAAO4iB,GACR,EAED,MAKN6zL,EAhDI,CAiDX8D,EAAYn8J,QAAQq4J,QAEtBA,EAAO6E,gBAAkB,CAAC7E,EAAQ8D,EAAYn8J,QAAQk4J,MAAOoE,EAAOt8J,SAEpEq4J,EAAO59M,MAAQ,CAAC,SAAU,SAC1B,YAAa,SAAU,SAAU,OAAQ,SAAU,OAAQ,QAG3D7U,EAAQo6D,QAAUq4J,GAIZ,SAAUxyN,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAIgCmC,EAJ5B63N,EAAap9N,EAAoB,GAMrC,SAAS0xD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAIlO,IAAI69N,EAAW,SAAUC,GAGvB,SAASD,IAGP,OAFA3rK,EAAgBltD,KAAM64N,GAEflhN,EAA2B3X,MAAO64N,EAAS7gN,WAAand,OAAOoxC,eAAe4sL,IAAW50N,MAAMjE,KAAM8B,YAG9G,OAXF,SAAmB8V,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAG/dI,CAAU4gN,EAAUC,GAQbD,EATM,GARiB93N,EAFS63N,IAEY73N,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,IAkBzE80D,QAAQs4J,MAEtB1yN,EAAQo6D,QAAUgjK,GAIZ,SAAUn9N,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAAIqC,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAEf07E,EAAO,SAASz+E,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,GAIrZkyI,EAAiBjH,EAFDt2N,EAAoB,KAQxC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAQvF,IAAI4yC,GAAQ,EAVGm+K,EAFDt2N,EAAoB,KAYTq6D,SAAS,gBAErB,CAAC,kBAAmB,YAAa,UAAW,SAElD1uD,SAAQ,SAAU8S,GACvB5d,SAAS6zG,iBAAiBj2F,GAAW,WACnC,IAAK,IAAIizB,EAAOprC,UAAUlH,OAAQ6pB,EAAO/jB,MAAMwsC,GAAO3oC,EAAO,EAAGA,EAAO2oC,EAAM3oC,IAC3EkgB,EAAKlgB,GAAQzC,UAAUyC,GAGzB,GAAG1E,MAAM7E,KAAKqB,SAAS85G,iBAAiB,kBAAkBhvG,SAAQ,SAAU+zC,GAGxE,IAAI89K,EADF99K,EAAKy4K,SAAWz4K,EAAKy4K,QAAQG,UAG9BkF,EAAwB99K,EAAKy4K,QAAQG,SAASmF,UAAUh1N,MAAM+0N,EAAuBv0M,YAM9F,IAAIy0M,EAAU,SAAU3pK,GAGtB,SAAS2pK,KA9BX,SAAyBrxK,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCA+B5Go1C,CAAgBltD,KAAMk5N,GAEtB,IAAIvzN,EA/BR,SAAoC8R,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EA+BlN2c,CAA2B3X,MAAOk5N,EAAQlhN,WAAand,OAAOoxC,eAAeitL,IAAUl+N,KAAKgF,OAIxG,OAFA2F,EAAMuxC,UAAY,GAClBvxC,EAAM0nC,GAAG,QAASsG,EAAM72C,OACjB6I,EAmCT,OApEF,SAAmBiS,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAwB/dI,CAAUihN,EAAS3pK,GAYnBtuD,EAAai4N,EAAS,CAAC,CACrBh6N,IAAK,OACLN,MAAO,WACL+0C,EAAMC,IAAI3vC,MAAM0vC,EAAO7xC,WACvBm7E,EAAKi8I,EAAQp+N,UAAUkd,WAAand,OAAOoxC,eAAeitL,EAAQp+N,WAAY,OAAQkF,MAAMiE,MAAMjE,KAAM8B,aAEzG,CACD5C,IAAK,YACLN,MAAO,SAAmB5B,GACxB,IAAK,IAAI4wD,EAAQ9rD,UAAUlH,OAAQ6pB,EAAO/jB,MAAMktD,EAAQ,EAAIA,EAAQ,EAAI,GAAIrhD,EAAQ,EAAGA,EAAQqhD,EAAOrhD,IACpGkY,EAAKlY,EAAQ,GAAKzK,UAAUyK,IAG7BvM,KAAKk3C,UAAUl6C,EAAMM,OAAS,IAAI6J,SAAQ,SAAUonD,GACnD,IAAIrT,EAAOqT,EAAKrT,KACZnqC,EAAUw9C,EAAKx9C,SAEf/T,EAAMQ,SAAW09C,GAAQA,EAAKk4D,SAASp2G,EAAMQ,UAC/CuT,EAAQ9M,WAAMrG,EAAW,CAACZ,GAAOmH,OAAOsgB,SAI7C,CACDvlB,IAAK,YACLN,MAAO,SAAmBqb,EAAWihC,EAAMnqC,GACpC/Q,KAAKk3C,UAAUj9B,KAClBja,KAAKk3C,UAAUj9B,GAAa,IAE9Bja,KAAKk3C,UAAUj9B,GAAW/e,KAAK,CAAEggD,KAAMA,EAAMnqC,QAASA,QAInDmoN,EA7CK,CA8CZH,EAAeljK,SAEjBqjK,EAAQ3hN,OAAS,CACf48M,cAAe,gBACfgF,qBAAsB,uBACtBC,gBAAiB,kBACjB9E,cAAe,gBACf+E,iBAAkB,mBAClBjF,YAAa,eAEf8E,EAAQh8K,QAAU,CAChBi4K,IAAK,MACLK,OAAQ,SACRgC,KAAM,QAGR/7N,EAAQo6D,QAAUqjK,GAIZ,SAAUx9N,EAAQD,EAASD,GAEjC,aAOA,SAAS0xD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAJhHjd,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAKT,IAAI06N,EAAS,SAASA,EAAOC,GAC3B,IAAI/1N,EAAU1B,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,GAElForD,EAAgBltD,KAAMs5N,GAEtBt5N,KAAKu5N,MAAQA,EACbv5N,KAAKwD,QAAUA,GAGjB81N,EAAO7B,SAAW,GAElBh8N,EAAQo6D,QAAUyjK,GAIZ,SAAU59N,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAET,IAAI46N,EAAS,CAAC,QAAS,OAAQ,MAAO,QAClCtgI,EAAQ,OAEZ,SAASvlD,EAAMz4B,GACb,GAAIs+M,EAAOnoN,QAAQ6J,IAAWs+M,EAAOnoN,QAAQ6nF,GAAQ,CAGnD,IAFA,IAAI9rC,EAEKlgB,EAAOprC,UAAUlH,OAAQ6pB,EAAO/jB,MAAMwsC,EAAO,EAAIA,EAAO,EAAI,GAAI3oC,EAAO,EAAGA,EAAO2oC,EAAM3oC,IAC9FkgB,EAAKlgB,EAAO,GAAKzC,UAAUyC,IAG5B6oD,EAAW3tD,SAASyb,GAAQjX,MAAMmpD,EAAU3oC,IAIjD,SAASotC,EAAU7yD,GACjB,OAAOw6N,EAAOj0K,QAAO,SAAUtlD,EAAQib,GAErC,OADAjb,EAAOib,GAAUy4B,EAAMx0C,KAAKM,QAASyb,EAAQlc,GACtCiB,IACN,IAGL0zC,EAAMulD,MAAQrnC,EAAUqnC,MAAQ,SAAUugI,GACxCvgI,EAAQugI,GAGVh+N,EAAQo6D,QAAUhE,GAIZ,SAAUn2D,EAAQD,EAASD,GAEjC,IAAIk+N,EAASh5N,MAAM5F,UAAU+E,MACzB85N,EAAan+N,EAAoB,IACjCo+N,EAAcp+N,EAAoB,IAElCq+N,EAAYn+N,EAAOD,QAAU,SAAUq+N,EAAQC,EAAUt7J,GAG3D,OAFKA,IAAMA,EAAO,IAEdq7J,IAAWC,IAGJD,aAAkBzgN,MAAQ0gN,aAAoB1gN,KAChDygN,EAAOt4M,YAAcu4M,EAASv4M,WAI3Bs4M,IAAWC,GAA6B,iBAAVD,GAAyC,iBAAZC,EAC9Dt7J,EAAK3+C,OAASg6M,IAAWC,EAAWD,GAAUC,EA0BzD,SAAkBroN,EAAGC,EAAG8sD,GACtB,IAAI/jE,EAAGwE,EACP,GAAI86N,EAAkBtoN,IAAMsoN,EAAkBroN,GAC5C,OAAO,EAET,GAAID,EAAE5W,YAAc6W,EAAE7W,UAAW,OAAO,EAGxC,GAAI8+N,EAAYloN,GACd,QAAKkoN,EAAYjoN,KAGjBD,EAAIgoN,EAAO1+N,KAAK0W,GAChBC,EAAI+nN,EAAO1+N,KAAK2W,GACTkoN,EAAUnoN,EAAGC,EAAG8sD,IAEzB,GAAI0nI,EAASz0L,GAAI,CACf,IAAKy0L,EAASx0L,GACZ,OAAO,EAET,GAAID,EAAE9W,SAAW+W,EAAE/W,OAAQ,OAAO,EAClC,IAAKF,EAAI,EAAGA,EAAIgX,EAAE9W,OAAQF,IACxB,GAAIgX,EAAEhX,KAAOiX,EAAEjX,GAAI,OAAO,EAE5B,OAAO,EAET,IACE,IAAIu/N,EAAKN,EAAWjoN,GAChBwoN,EAAKP,EAAWhoN,GACpB,MAAO/V,GACP,OAAO,EAIT,GAAIq+N,EAAGr/N,QAAUs/N,EAAGt/N,OAClB,OAAO,EAKT,IAHAq/N,EAAGxoN,OACHyoN,EAAGzoN,OAEE/W,EAAIu/N,EAAGr/N,OAAS,EAAGF,GAAK,EAAGA,IAC9B,GAAIu/N,EAAGv/N,IAAMw/N,EAAGx/N,GACd,OAAO,EAIX,IAAKA,EAAIu/N,EAAGr/N,OAAS,EAAGF,GAAK,EAAGA,IAE9B,GADAwE,EAAM+6N,EAAGv/N,IACJm/N,EAAUnoN,EAAExS,GAAMyS,EAAEzS,GAAMu/D,GAAO,OAAO,EAE/C,cAAc/sD,UAAaC,EAnElBwoN,CAASL,EAAQC,EAAUt7J,KAItC,SAASu7J,EAAkBp7N,GACzB,OAAOA,QAGT,SAASunM,EAAUj/L,GACjB,SAAKA,GAAkB,iBAANA,GAAsC,iBAAbA,EAAEtM,QACtB,mBAAXsM,EAAEunD,MAA0C,mBAAZvnD,EAAErH,OAGzCqH,EAAEtM,OAAS,GAAqB,iBAATsM,EAAE,MA4DzB,SAAUxL,EAAQD,EAASD,GAEjC,aAEAX,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IACtD,IAAI8uN,EAAWlyN,EAAoB,GAC/B4yN,EAA4B,WAC5B,SAASA,EAAWx9D,EAAUiyD,EAASr/M,QACnB,IAAZA,IAAsBA,EAAU,IACpCxD,KAAK4wJ,SAAWA,EAChB5wJ,KAAK6iN,QAAUA,EACf,IAAIuX,EAAe1M,EAASE,MAAMsB,KAAOxB,EAASE,MAAMyM,UACnC,MAAjB72N,EAAQ4nE,MAERprE,KAAKorE,MAAS5nE,EAAQ4nE,MAAQsiJ,EAASE,MAAMmB,MAASqL,EAGtDp6N,KAAKorE,MAAQsiJ,EAASE,MAAMyM,UAEP,MAArB72N,EAAQyxD,YACRj1D,KAAKi1D,UAAYzxD,EAAQyxD,WAoCjC,OAlCAm5J,EAAW75M,KAAO,SAAU2mC,GACxB,MAAO,GAAGv2C,IAAI3J,KAAKkgD,EAAK+tD,YAAY,SAAUzoG,GAC1C,OAAOA,EAAK9C,SAGpB0wN,EAAWtzN,UAAUgW,IAAM,SAAUoqC,EAAMt8C,GACvC,QAAKoB,KAAKs6N,OAAOp/K,EAAMt8C,KAEvBs8C,EAAKx+C,aAAasD,KAAK6iN,QAASjkN,IACzB,IAEXwvN,EAAWtzN,UAAUw/N,OAAS,SAAUp/K,EAAMt8C,GAE1C,OAAa,MADD8uN,EAAS9uI,MAAM1jC,EAAMwyK,EAASE,MAAM2K,MAAQv4N,KAAKorE,MAAQsiJ,EAASE,MAAMsB,SAG9D,MAAlBlvN,KAAKi1D,YAEY,iBAAVr2D,EACAoB,KAAKi1D,UAAU5jD,QAAQzS,EAAMmI,QAAQ,QAAS,MAAQ,EAGtD/G,KAAKi1D,UAAU5jD,QAAQzS,IAAU,KAGhDwvN,EAAWtzN,UAAUg1C,OAAS,SAAUoL,GACpCA,EAAKm7D,gBAAgBr2G,KAAK6iN,UAE9BuL,EAAWtzN,UAAU8D,MAAQ,SAAUs8C,GACnC,IAAIt8C,EAAQs8C,EAAKksB,aAAapnE,KAAK6iN,SACnC,OAAI7iN,KAAKs6N,OAAOp/K,EAAMt8C,IAAUA,EACrBA,EAEJ,IAEJwvN,EAlDoB,GAoD/B3yN,EAAQo6D,QAAUu4J,GAKZ,SAAU1yN,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQo6D,QAAUp6D,EAAQ8+N,UAAO38N,EAEjC,IAAIu8D,EAAgb,SAAU96C,EAAK3kB,GAAK,GAAIgG,MAAMC,QAAQ0e,GAAQ,OAAOA,EAAY,GAAI3gB,OAAOoC,YAAYjG,OAAOwkB,GAAQ,OAAxf,SAAuBA,EAAK3kB,GAAK,IAAI0/D,EAAO,GAAQC,GAAK,EAAU94C,GAAK,EAAW+4C,OAAK18D,EAAW,IAAM,IAAK,IAAiC28D,EAA7B/uD,EAAK6T,EAAI3gB,OAAOoC,cAAmBu5D,GAAME,EAAK/uD,EAAGvI,QAAQu3D,QAAoBJ,EAAKl/D,KAAKq/D,EAAG37D,QAAYlE,GAAK0/D,EAAKx/D,SAAWF,GAA3D2/D,GAAK,IAAoE,MAAO76D,GAAO+hB,GAAK,EAAM+4C,EAAK96D,EAAO,QAAU,KAAW66D,GAAM7uD,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAI+V,EAAI,MAAM+4C,GAAQ,OAAOF,EAA6HK,CAAcp7C,EAAK3kB,GAAa,MAAM,IAAIod,UAAU,yDAEllB7W,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAEf07E,EAAO,SAASz+E,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,GAIrZkrI,EAAeD,EAFDt2N,EAAoB,IAMlCw2N,EAAcF,EAFDt2N,EAAoB,IAMjCg/N,EAAU1I,EAFDt2N,EAAoB,IAM7B02N,EAAWJ,EAFDt2N,EAAoB,IAM9B22N,EAASL,EAFDt2N,EAAoB,IAIhC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEvF,SAASmsD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAElO,SAASid,EAAUL,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAEje,IAAI0iN,EAAO,SAAUE,GAGnB,SAASF,IAGP,OAFArtK,EAAgBltD,KAAMu6N,GAEf5iN,EAA2B3X,MAAOu6N,EAAKviN,WAAand,OAAOoxC,eAAesuL,IAAOt2N,MAAMjE,KAAM8B,YAGtG,OARAmW,EAAUsiN,EAAME,GAQTF,EATE,CAUTrI,EAASr8J,SAEX0kK,EAAK9K,SAAW,OAChB8K,EAAKhgE,QAAU,OAEf,IAAImgE,EAAY,SAAUC,GAGxB,SAASD,IAGP,OAFAxtK,EAAgBltD,KAAM06N,GAEf/iN,EAA2B3X,MAAO06N,EAAU1iN,WAAand,OAAOoxC,eAAeyuL,IAAYz2N,MAAMjE,KAAM8B,YA6HhH,OAlIAmW,EAAUyiN,EAAWC,GAQrB15N,EAAay5N,EAAW,CAAC,CACvBx7N,IAAK,QACLN,MAAO,WACL,IAAI0P,EAAStO,KAETkpD,EAAOlpD,KAAKqyN,QAAQl5G,YAKxB,OAJIjwD,EAAKupK,SAAS,QAEhBvpK,EAAOA,EAAKrpD,MAAM,GAAI,IAEjBqpD,EAAK59B,MAAM,MAAMi6B,QAAO,SAAU8rE,EAAOupG,GAC9C,OAAOvpG,EAAMjsE,OAAOw1K,GAAMx1K,OAAO,KAAM92C,EAAOkxB,aAC7C,IAAIuyL,EAAal8J,WAErB,CACD32D,IAAK,SACLN,MAAO,SAAgBlB,EAAMkB,GAC3B,GAAIlB,IAASsC,KAAK09I,QAAQ+xE,WAAY7wN,EAAtC,CAEA,IAAIi8N,EAAc76N,KAAK86N,WAAW3I,EAAOt8J,QAAS71D,KAAKpF,SAAW,GAE9DsuD,EADeiR,EAAe0gK,EAAa,GACvB,GAEZ,MAAR3xK,GACFA,EAAK6xK,SAAS7xK,EAAKtuD,SAAW,EAAG,GAEnCqiF,EAAKy9I,EAAU5/N,UAAUkd,WAAand,OAAOoxC,eAAeyuL,EAAU5/N,WAAY,SAAUkF,MAAMhF,KAAKgF,KAAMtC,EAAMkB,MAEpH,CACDM,IAAK,WACLN,MAAO,SAAkB+K,EAAO/O,EAAQ8C,EAAMkB,GAC5C,GAAe,IAAXhE,GACoE,MAApEo3N,EAAYn8J,QAAQ+oB,MAAMlhF,EAAMs0N,EAAYn8J,QAAQ+3J,MAAMoB,SAAkBtxN,IAASsC,KAAK09I,QAAQ+xE,UAAY7wN,IAAUoB,KAAK09I,QAAQl+G,QAAQx/B,KAAKqyN,UAAtJ,CAGA,IAAI2I,EAAch7N,KAAKi7N,aAAatxN,GACpC,KAAIqxN,EAAc,GAAKA,GAAerxN,EAAQ/O,GAA9C,CACA,IAAIsgO,EAAcl7N,KAAKi7N,aAAatxN,GAAO,GAAQ,EAC/CwxN,EAAgBH,EAAcE,EAAc,EAC5C5L,EAAOtvN,KAAKw4N,QAAQ0C,EAAaC,GACjCl4N,EAAOqsN,EAAKrsN,KAChBqsN,EAAK1vM,OAAOliB,EAAMkB,GACdqE,aAAgBy3N,GAClBz3N,EAAKm4N,SAAS,EAAGzxN,EAAQuxN,EAActgO,EAASugO,EAAez9N,EAAMkB,OAGxE,CACDM,IAAK,WACLN,MAAO,SAAkB+K,EAAO/K,EAAO4zN,GACrC,GAAW,MAAPA,EAAJ,CAEA,IAAI6I,EAAer7N,KAAK86N,WAAW3I,EAAOt8J,QAASlsD,GAC/C2xN,EAAenhK,EAAekhK,EAAc,GAC5CnyK,EAAOoyK,EAAa,GACpBz/L,EAASy/L,EAAa,GAE1BpyK,EAAK+X,SAASplC,EAAQj9B,MAEvB,CACDM,IAAK,SACLN,MAAO,WACL,IAAIhE,EAASoF,KAAKqyN,QAAQl5G,YAAYv+G,OACtC,OAAKoF,KAAKqyN,QAAQl5G,YAAYs5G,SAAS,MAGhC73N,EAFEA,EAAS,IAInB,CACDsE,IAAK,eACLN,MAAO,SAAsB28N,GAC3B,IAAI30J,EAAU9kE,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,IAAmBA,UAAU,GAE7E,GAAK8kE,EAIH,OAAO5mE,KAAKqyN,QAAQl5G,YAAYt5G,MAAM,EAAG07N,GAAal2N,YAAY,MAHlE,IAAIw2B,EAAS77B,KAAKqyN,QAAQl5G,YAAYt5G,MAAM07N,GAAalqN,QAAQ,MACjE,OAAOwqB,GAAU,EAAI0/L,EAAc1/L,GAAU,IAKhD,CACD38B,IAAK,WACLN,MAAO,SAAkBuU,GAClBnT,KAAKqyN,QAAQl5G,YAAYs5G,SAAS,OACrCzyN,KAAKjC,YAAYi0N,EAAYn8J,QAAQ52D,OAAO,OAAQ,OAEtDg+E,EAAKy9I,EAAU5/N,UAAUkd,WAAand,OAAOoxC,eAAeyuL,EAAU5/N,WAAY,WAAYkF,MAAMhF,KAAKgF,KAAMmT,GAC/G,IAAIlQ,EAAOjD,KAAKiD,KACJ,MAARA,GAAgBA,EAAKyJ,OAAS1M,MAAQiD,EAAKy6I,QAAQ+xE,WAAazvN,KAAK09I,QAAQ+xE,UAAYzvN,KAAK09I,QAAQl+G,QAAQx/B,KAAKqyN,WAAapvN,EAAKy6I,QAAQl+G,QAAQv8B,EAAKovN,WAC5JpvN,EAAKu4N,SAASroN,GACdlQ,EAAKw1N,aAAaz4N,MAClBiD,EAAK6sC,YAGR,CACD5wC,IAAK,UACLN,MAAO,SAAiBpB,GACtBy/E,EAAKy9I,EAAU5/N,UAAUkd,WAAand,OAAOoxC,eAAeyuL,EAAU5/N,WAAY,UAAWkF,MAAMhF,KAAKgF,KAAMxC,GAC9G,GAAGqC,MAAM7E,KAAKgF,KAAKqyN,QAAQl8G,iBAAiB,MAAMhvG,SAAQ,SAAU+zC,GAClE,IAAIo0K,EAAO0C,EAAYn8J,QAAQ7vD,KAAKk1C,GACxB,MAARo0K,EACFp0K,EAAKomB,WAAWC,YAAYrmB,GACnBo0K,aAAgB0C,EAAYn8J,QAAQk4J,MAC7CuB,EAAKx/K,SAELw/K,EAAKhxF,eAIT,CAAC,CACHp/H,IAAK,SACLN,MAAO,SAAgBA,GACrB,IAAIyzN,EAAUp1I,EAAKy9I,EAAU1iN,WAAand,OAAOoxC,eAAeyuL,GAAY,SAAU16N,MAAMhF,KAAKgF,KAAMpB,GAEvG,OADAyzN,EAAQ31N,aAAa,cAAc,GAC5B21N,IAER,CACDnzN,IAAK,UACLN,MAAO,WACL,OAAO,MAIJ87N,EAnIO,CAoIdF,EAAQ3kK,SAEV6kK,EAAUjL,SAAW,aACrBiL,EAAUngE,QAAU,MACpBmgE,EAAUe,IAAM,KAEhBhgO,EAAQ8+N,KAAOA,EACf9+N,EAAQo6D,QAAU6kK,GAIZ,SAAUh/N,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAAIiC,EAA4B,mBAAXnC,QAAoD,iBAApBA,OAAOoC,SAAwB,SAAUC,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAXrC,QAAyBqC,EAAIC,cAAgBtC,QAAUqC,IAAQrC,OAAO5D,UAAY,gBAAkBiG,GAElQo5D,EAAgb,SAAU96C,EAAK3kB,GAAK,GAAIgG,MAAMC,QAAQ0e,GAAQ,OAAOA,EAAY,GAAI3gB,OAAOoC,YAAYjG,OAAOwkB,GAAQ,OAAxf,SAAuBA,EAAK3kB,GAAK,IAAI0/D,EAAO,GAAQC,GAAK,EAAU94C,GAAK,EAAW+4C,OAAK18D,EAAW,IAAM,IAAK,IAAiC28D,EAA7B/uD,EAAK6T,EAAI3gB,OAAOoC,cAAmBu5D,GAAME,EAAK/uD,EAAGvI,QAAQu3D,QAAoBJ,EAAKl/D,KAAKq/D,EAAG37D,QAAYlE,GAAK0/D,EAAKx/D,SAAWF,GAA3D2/D,GAAK,IAAoE,MAAO76D,GAAO+hB,GAAK,EAAM+4C,EAAK96D,EAAO,QAAU,KAAW66D,GAAM7uD,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAI+V,EAAI,MAAM+4C,GAAQ,OAAOF,EAA6HK,CAAcp7C,EAAK3kB,GAAa,MAAM,IAAIod,UAAU,yDAEllB7W,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAIfwwN,EAAeD,EAFDt2N,EAAoB,IAMlCkgO,EAAO5J,EAFDt2N,EAAoB,KAM1Bw2N,EAAcF,EAFDt2N,EAAoB,IAMjCmgO,EAAS7J,EAFDt2N,EAAoB,KAM5BogO,EAAW9J,EAFDt2N,EAAoB,KAI9BqgO,EAASrgO,EAAoB,GAE7Bg/N,EAAU1I,EAAuB+J,GAIjC5J,EAAUH,EAFDt2N,EAAoB,KAM7BsgO,EAAUhK,EAFDt2N,EAAoB,KAM7BugO,EAAcjK,EAFDt2N,EAAoB,KAMjCq2N,EAAWC,EAFDt2N,EAAoB,IAIlC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAMvF,IAAIi7N,EAAQ,WAERC,EAAS,WACX,SAASA,EAAOlI,IALlB,SAAyBlsK,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAM5Go1C,CAAgBltD,KAAMi8N,GAEtBj8N,KAAK+zN,OAASA,EACd/zN,KAAKqxH,MAAQrxH,KAAKk8N,WA6PpB,OA1PAj7N,EAAag7N,EAAQ,CAAC,CACpB/8N,IAAK,aACLN,MAAO,SAAoByyH,GACzB,IAAI1rH,EAAQ3F,KAERm8N,GAAqB,EACzBn8N,KAAK+zN,OAAOr3M,SACZ,IAAI0/M,EAAep8N,KAAK+zN,OAAOn5N,SAoD/B,OAnDAoF,KAAK+zN,OAAOsI,cACZhrG,EAoQN,SAAwBA,GACtB,OAAOA,EAAM9rE,QAAO,SAAU8rE,EAAOl/C,GACnC,GAAkB,IAAdA,EAAG/sB,OAAc,CACnB,IAAI6jD,GAAa,EAAI6yH,EAAQjmK,SAASsc,EAAG82B,YAEzC,cADOA,EAAkB,MAClBooB,EAAMjsE,OAAO,CAAEza,MAAOwnC,EAAG82B,WAAWt+D,OAASs+D,GAWtD,GATqB,MAAjB92B,EAAG82B,aAA8C,IAAvB92B,EAAG82B,WAAWn1F,OAA0C,IAAzBq+D,EAAG82B,WAAWqzH,UACzEnqJ,GAAK,EAAI2pJ,EAAQjmK,SAASsc,IACnB82B,WAAWn1F,KAChBq+D,EAAG82B,WAAWn1F,KAAO,WAErBq+D,EAAG82B,WAAWn1F,KAAO,gBACdq+D,EAAG82B,WAAWqzH,SAGA,iBAAdnqJ,EAAG/sB,OAAqB,CACjC,IAAI8D,EAAOipB,EAAG/sB,OAAOr+C,QAAQ,QAAS,MAAMA,QAAQ,MAAO,MAC3D,OAAOsqH,EAAMjsE,OAAO8D,EAAMipB,EAAG82B,YAE/B,OAAOooB,EAAMn2H,KAAKi3E,KACjB,IAAI4/I,EAAal8J,SAzRR0mK,CAAelrG,IACjB9rE,QAAO,SAAU57C,EAAOwoE,GAC5B,IAAIv3E,EAASu3E,EAAG49I,QAAU59I,EAAGr1D,QAAUq1D,EAAG/sB,OAAOxqD,QAAU,EACvDquG,EAAa92B,EAAG82B,YAAc,GAClC,GAAiB,MAAb92B,EAAG/sB,OAAgB,CACrB,GAAyB,iBAAd+sB,EAAG/sB,OAAqB,CACjC,IAAI8D,EAAOipB,EAAG/sB,OACV8D,EAAKupK,SAAS,OAAS0J,IACzBA,GAAqB,EACrBjzK,EAAOA,EAAKrpD,MAAM,GAAI,IAEpB8J,GAASyyN,IAAiBlzK,EAAKupK,SAAS,QAC1C0J,GAAqB,GAEvBx2N,EAAMouN,OAAO9yJ,SAASt3D,EAAOu/C,GAE7B,IAAIszK,EAAe72N,EAAMouN,OAAOt/H,KAAK9qF,GACjC8yN,EAAgBtiK,EAAeqiK,EAAc,GAC7C/nI,EAAOgoI,EAAc,GACrB5gM,EAAS4gM,EAAc,GAEvBj9L,GAAU,EAAIqyL,EAASh8J,SAAS,IAAI,EAAIgmK,EAAOjK,eAAen9H,IAClE,GAAIA,aAAgB+lI,EAAQ3kK,QAAS,CACnC,IAAI6mK,EAAmBjoI,EAAKqmI,WAAW9I,EAAYn8J,QAAQi4J,KAAMjyL,GAE7Dg3L,EADoB14J,EAAeuiK,EAAkB,GAC5B,GAE7Bl9L,GAAU,EAAIqyL,EAASh8J,SAASr2B,GAAS,EAAIq8L,EAAOjK,eAAeiB,IAErE5pH,EAAayyH,EAAK7lK,QAAQozC,WAAW3sE,KAAKkD,EAASypE,IAAe,QAC7D,GAA2B,WAAvBpoG,EAAQsxE,EAAG/sB,QAAsB,CAC1C,IAAIlmD,EAAMrE,OAAO0Z,KAAK49D,EAAG/sB,QAAQ,GACjC,GAAW,MAAPlmD,EAAa,OAAOyK,EACxBhE,EAAMouN,OAAO9yJ,SAASt3D,EAAOzK,EAAKizE,EAAG/sB,OAAOlmD,IAE9Ck9N,GAAgBxhO,EAKlB,OAHAC,OAAO0Z,KAAK00F,GAAY9hG,SAAQ,SAAUzJ,GACxCiI,EAAMouN,OAAOqH,SAASzxN,EAAO/O,EAAQ8C,EAAMurG,EAAWvrG,OAEjDiM,EAAQ/O,IACd,GACHy2H,EAAM9rE,QAAO,SAAU57C,EAAOwoE,GAC5B,MAAyB,iBAAdA,EAAGr1D,QACZnX,EAAMouN,OAAOgH,SAASpxN,EAAOwoE,EAAGr1D,QACzBnT,GAEFA,GAASwoE,EAAG49I,QAAU59I,EAAG/sB,OAAOxqD,QAAU,KAChD,GACHoF,KAAK+zN,OAAO4I,WACL38N,KAAK0c,OAAO20G,KAEpB,CACDnyH,IAAK,aACLN,MAAO,SAAoB+K,EAAO/O,GAEhC,OADAoF,KAAK+zN,OAAOgH,SAASpxN,EAAO/O,GACrBoF,KAAK0c,QAAO,IAAIq1M,EAAal8J,SAAUk6J,OAAOpmN,GAAOmT,OAAOliB,MAEpE,CACDsE,IAAK,aACLN,MAAO,SAAoB+K,EAAO/O,GAChC,IAAIuL,EAASnG,KAETw/B,EAAU19B,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,GAoBlF,OAlBA9B,KAAK+zN,OAAOr3M,SACZ7hB,OAAO0Z,KAAKirB,GAASr4B,SAAQ,SAAUyY,GACrC,GAA+B,MAA3BzZ,EAAO4tN,OAAO9+J,WAAsB9uD,EAAO4tN,OAAO9+J,UAAUr1C,GAAhE,CACA,IAAI05E,EAAQnzF,EAAO4tN,OAAOz6H,MAAM3vF,EAAOwZ,KAAKqD,IAAI5rB,EAAQ,IACpDgiO,EAAkBhiO,EACtB0+F,EAAMnyF,SAAQ,SAAUstF,GACtB,IAAIooI,EAAapoI,EAAK75F,SACtB,GAAM65F,aAAgBknI,EAAO9lK,QAEtB,CACL,IAAIinK,EAAYnzN,EAAQ8qF,EAAK54D,OAAO11B,EAAO4tN,QACvCgJ,EAAatoI,EAAKwmI,aAAa6B,EAAYF,GAAmBE,EAAY,EAC9EroI,EAAK2mI,SAAS0B,EAAWC,EAAYn9M,EAAQ4f,EAAQ5f,SAJrD60E,EAAK70E,OAAOA,EAAQ4f,EAAQ5f,IAM9Bg9M,GAAmBC,SAGvB78N,KAAK+zN,OAAOyH,WACLx7N,KAAK0c,QAAO,IAAIq1M,EAAal8J,SAAUk6J,OAAOpmN,GAAOomN,OAAOn1N,GAAQ,EAAIkhO,EAAQjmK,SAASr2B,OAEjG,CACDtgC,IAAK,aACLN,MAAO,SAAoB+K,EAAO/O,GAChC,IAAI0T,EAAStO,KAETw/B,EAAU19B,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,GAKlF,OAHAjH,OAAO0Z,KAAKirB,GAASr4B,SAAQ,SAAUyY,GACrCtR,EAAOylN,OAAOqH,SAASzxN,EAAO/O,EAAQglB,EAAQ4f,EAAQ5f,OAEjD5f,KAAK0c,QAAO,IAAIq1M,EAAal8J,SAAUk6J,OAAOpmN,GAAOomN,OAAOn1N,GAAQ,EAAIkhO,EAAQjmK,SAASr2B,OAEjG,CACDtgC,IAAK,cACLN,MAAO,SAAqB+K,EAAO/O,GACjC,OAAOoF,KAAKqxH,MAAMxxH,MAAM8J,EAAOA,EAAQ/O,KAExC,CACDsE,IAAK,WACLN,MAAO,WACL,OAAOoB,KAAK+zN,OAAOz6H,QAAQ/zC,QAAO,SAAU8rE,EAAO58B,GACjD,OAAO48B,EAAMltH,OAAOswF,EAAK48B,WACxB,IAAI0gG,EAAal8J,WAErB,CACD32D,IAAK,YACLN,MAAO,SAAmB+K,GACxB,IAAI/O,EAASkH,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,EAE7Ew3F,EAAQ,GACR0jI,EAAS,GACE,IAAXpiO,EACFoF,KAAK+zN,OAAOpyN,KAAKgI,GAAOxC,SAAQ,SAAUxF,GACxC,IACI2tN,EADQn1J,EAAex4D,EAAM,GAChB,GAEb2tN,aAAgBkL,EAAQ3kK,QAC1ByjC,EAAMp+F,KAAKo0N,GACFA,aAAgB0C,EAAYn8J,QAAQi4J,MAC7CkP,EAAO9hO,KAAKo0N,OAIhBh2H,EAAQt5F,KAAK+zN,OAAOz6H,MAAM3vF,EAAO/O,GACjCoiO,EAASh9N,KAAK+zN,OAAOnB,YAAYZ,EAAYn8J,QAAQi4J,KAAMnkN,EAAO/O,IAEpE,IAAIqiO,EAAa,CAAC3jI,EAAO0jI,GAAQr4N,KAAI,SAAUu4N,GAC7C,GAAqB,IAAjBA,EAAMtiO,OAAc,MAAO,GAE/B,IADA,IAAI4kC,GAAU,EAAIq8L,EAAOjK,eAAesL,EAAM7hO,SACvCR,OAAO0Z,KAAKirB,GAAS5kC,OAAS,GAAG,CACtC,IAAI00N,EAAO4N,EAAM7hO,QACjB,GAAY,MAARi0N,EAAc,OAAO9vL,EACzBA,EAAU29L,GAAe,EAAItB,EAAOjK,eAAetC,GAAO9vL,GAE5D,OAAOA,KAET,OAAOqyL,EAASh8J,QAAQ5xD,MAAM4tN,EAASh8J,QAASonK,KAEjD,CACD/9N,IAAK,UACLN,MAAO,SAAiB+K,EAAO/O,GAC7B,OAAOoF,KAAKm2N,YAAYxsN,EAAO/O,GAAQiK,QAAO,SAAUstE,GACtD,MAA4B,iBAAdA,EAAG/sB,UAChBzgD,KAAI,SAAUwtE,GACf,OAAOA,EAAG/sB,UACTp9C,KAAK,MAET,CACD9I,IAAK,cACLN,MAAO,SAAqB+K,EAAO8sN,EAAO73N,GAExC,OADAoB,KAAK+zN,OAAO9yJ,SAASt3D,EAAO8sN,EAAO73N,GAC5BoB,KAAK0c,QAAO,IAAIq1M,EAAal8J,SAAUk6J,OAAOpmN,GAAOy7C,OAnLlE,SAAyBrkD,EAAK7B,EAAKN,GAAiK,OAApJM,KAAO6B,EAAOlG,OAAOyD,eAAeyC,EAAK7B,EAAK,CAAEN,MAAOA,EAAOL,YAAY,EAAM8C,cAAc,EAAMC,UAAU,IAAkBP,EAAI7B,GAAON,EAAgBmC,EAmLlI0yN,CAAgB,GAAIgD,EAAO73N,OAE/F,CACDM,IAAK,aACLN,MAAO,SAAoB+K,EAAOu/C,GAChC,IAAIz6C,EAASzO,KAETw/B,EAAU19B,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,GAOlF,OALAonD,EAAOA,EAAKniD,QAAQ,QAAS,MAAMA,QAAQ,MAAO,MAClD/G,KAAK+zN,OAAO9yJ,SAASt3D,EAAOu/C,GAC5BruD,OAAO0Z,KAAKirB,GAASr4B,SAAQ,SAAUyY,GACrCnR,EAAOslN,OAAOqH,SAASzxN,EAAOu/C,EAAKtuD,OAAQglB,EAAQ4f,EAAQ5f,OAEtD5f,KAAK0c,QAAO,IAAIq1M,EAAal8J,SAAUk6J,OAAOpmN,GAAOy7C,OAAO8D,GAAM,EAAI4yK,EAAQjmK,SAASr2B,OAE/F,CACDtgC,IAAK,UACLN,MAAO,WACL,GAAmC,GAA/BoB,KAAK+zN,OAAOnkL,SAASh1C,OAAa,OAAO,EAC7C,GAAIoF,KAAK+zN,OAAOnkL,SAASh1C,OAAS,EAAG,OAAO,EAC5C,IAAI69C,EAAQz4C,KAAK+zN,OAAOnkL,SAAS9xC,KACjC,OAAI26C,EAAMilG,QAAQ+xE,WAAa+K,EAAQ3kK,QAAQ45J,YAC3Ch3K,EAAM7I,SAASh1C,OAAS,IACrB69C,EAAM7I,SAAS9xC,gBAAgBm0N,EAAQp8J,UAE/C,CACD32D,IAAK,eACLN,MAAO,SAAsB+K,EAAO/O,GAClC,IAAIsuD,EAAOlpD,KAAKuyG,QAAQ5oG,EAAO/O,GAE3BwiO,EAAgBp9N,KAAK+zN,OAAOt/H,KAAK9qF,EAAQ/O,GACzCyiO,EAAgBljK,EAAeijK,EAAe,GAC9C3oI,EAAO4oI,EAAc,GACrBxhM,EAASwhM,EAAc,GAEvBC,EAAe,EACf17L,EAAS,IAAImwL,EAAal8J,QAClB,MAAR4+B,IAIA6oI,EAHI7oI,aAAgBknI,EAAO9lK,QAGZ4+B,EAAKwmI,aAAap/L,GAAUA,EAAS,EAFrC44D,EAAK75F,SAAWihC,EAIjC+F,EAAS6yD,EAAK48B,QAAQxxH,MAAMg8B,EAAQA,EAASyhM,EAAe,GAAGl4K,OAAO,OAExE,IACI9oB,EADWt8B,KAAKm2N,YAAYxsN,EAAO/O,EAAS0iO,GAC5BhhM,MAAK,IAAIy1L,EAAal8J,SAAUzQ,OAAO8D,GAAM/kD,OAAOy9B,IACpEyvF,GAAQ,IAAI0gG,EAAal8J,SAAUk6J,OAAOpmN,GAAOxF,OAAOm4B,GAC5D,OAAOt8B,KAAKo3N,WAAW/lG,KAExB,CACDnyH,IAAK,SACLN,MAAO,SAAgBq9M,GACrB,IAAIsY,EAAYzyN,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,GAChFy7N,EAAcz7N,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,QAAKlE,EAElFm6N,EAAW/3N,KAAKqxH,MACpB,GAAyB,IAArBkjG,EAAU35N,QAAsC,kBAAtB25N,EAAU,GAAGj3N,MAA4Bi3N,EAAU,GAAG/2N,OAAOnD,KAAKktB,MAAMy0M,IAAUhK,EAAYn8J,QAAQ7vD,KAAKuuN,EAAU,GAAG/2N,QAAS,CAE7J,IAAIggO,EAAWxL,EAAYn8J,QAAQ7vD,KAAKuuN,EAAU,GAAG/2N,QACjDgiC,GAAU,EAAIq8L,EAAOjK,eAAe4L,GACpC7zN,EAAQ6zN,EAAS3hM,OAAO77B,KAAK+zN,QAC7BhjJ,EAAWwjJ,EAAU,GAAGxjJ,SAAShqE,QAAQ60N,EAAS/lK,QAAQ4nK,SAAU,IACpEC,GAAU,IAAI3L,EAAal8J,SAAUzQ,OAAO2rB,GAC5C4sJ,GAAU,IAAI5L,EAAal8J,SAAUzQ,OAAOo4K,EAAS5+N,SACrDg/N,GAAY,IAAI7L,EAAal8J,SAAUk6J,OAAOpmN,GAAOxF,OAAOu5N,EAAQphM,KAAKqhM,EAASJ,IACtFthB,EAAS2hB,EAAUr4K,QAAO,SAAU8rE,EAAOl/C,GACzC,OAAIA,EAAG/sB,OACEisE,EAAMjsE,OAAO+sB,EAAG/sB,OAAQ5lB,GAExB6xF,EAAMn2H,KAAKi3E,KAEnB,IAAI4/I,EAAal8J,SACpB71D,KAAKqxH,MAAQ0mG,EAASzpL,QAAQ2tK,QAE9Bj8M,KAAKqxH,MAAQrxH,KAAKk8N,WACbjgB,IAAW,EAAI8f,EAAYlmK,SAASkiK,EAASzpL,QAAQ2tK,GAASj8M,KAAKqxH,SACtE4qF,EAAS8b,EAASz7L,KAAKt8B,KAAKqxH,MAAOksG,IAGvC,OAAOthB,MAIJggB,EAlQI,GAqQb,SAASkB,EAAe39L,EAASq+L,GAC/B,OAAOhjO,OAAO0Z,KAAKspN,GAAUt4K,QAAO,SAAUu4K,EAAQpgO,GACpD,OAAqB,MAAjB8hC,EAAQ9hC,KACRmgO,EAASngO,KAAU8hC,EAAQ9hC,GAC7BogO,EAAOpgO,GAAQmgO,EAASngO,GACfgD,MAAMC,QAAQk9N,EAASngO,IAC5BmgO,EAASngO,GAAM2T,QAAQmuB,EAAQ9hC,IAAS,IAC1CogO,EAAOpgO,GAAQmgO,EAASngO,GAAMyG,OAAO,CAACq7B,EAAQ9hC,MAGhDogO,EAAOpgO,GAAQ,CAACmgO,EAASngO,GAAO8hC,EAAQ9hC,KARRogO,IAWjC,IA2BLriO,EAAQo6D,QAAUomK,GAIZ,SAAUvgO,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQo6D,QAAUp6D,EAAQ87N,WAAQ35N,EAElC,IAAIu8D,EAAgb,SAAU96C,EAAK3kB,GAAK,GAAIgG,MAAMC,QAAQ0e,GAAQ,OAAOA,EAAY,GAAI3gB,OAAOoC,YAAYjG,OAAOwkB,GAAQ,OAAxf,SAAuBA,EAAK3kB,GAAK,IAAI0/D,EAAO,GAAQC,GAAK,EAAU94C,GAAK,EAAW+4C,OAAK18D,EAAW,IAAM,IAAK,IAAiC28D,EAA7B/uD,EAAK6T,EAAI3gB,OAAOoC,cAAmBu5D,GAAME,EAAK/uD,EAAGvI,QAAQu3D,QAAoBJ,EAAKl/D,KAAKq/D,EAAG37D,QAAYlE,GAAK0/D,EAAKx/D,SAAWF,GAA3D2/D,GAAK,IAAoE,MAAO76D,GAAO+hB,GAAK,EAAM+4C,EAAK96D,EAAO,QAAU,KAAW66D,GAAM7uD,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAI+V,EAAI,MAAM+4C,GAAQ,OAAOF,EAA6HK,CAAcp7C,EAAK3kB,GAAa,MAAM,IAAIod,UAAU,yDAEllB7W,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAIfywN,EAAcF,EAFDt2N,EAAoB,IAMjCsgO,EAAUhK,EAFDt2N,EAAoB,KAM7BugO,EAAcjK,EAFDt2N,EAAoB,KAMjC23N,EAAYrB,EAFAt2N,EAAoB,IAQpC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEvF,SAASusD,EAAmBjuC,GAAO,GAAI3e,MAAMC,QAAQ0e,GAAM,CAAE,IAAK,IAAI3kB,EAAI,EAAG2yD,EAAO3sD,MAAM2e,EAAIzkB,QAASF,EAAI2kB,EAAIzkB,OAAQF,IAAO2yD,EAAK3yD,GAAK2kB,EAAI3kB,GAAM,OAAO2yD,EAAe,OAAO3sD,MAAM0hB,KAAK/C,GAE1L,SAAS6tC,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,IAAI67B,GAAQ,EARGm+K,EAFDt2N,EAAoB,KAUTq6D,SAAS,mBAE9B0hK,EAAQ,SAASA,EAAM5tN,GACzB,IAAI/O,EAASkH,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,EAEjForD,EAAgBltD,KAAMu3N,GAEtBv3N,KAAK2J,MAAQA,EACb3J,KAAKpF,OAASA,GAGZmjO,EAAY,WACd,SAASA,EAAUhK,EAAQD,GACzB,IAAInuN,EAAQ3F,KAEZktD,EAAgBltD,KAAM+9N,GAEtB/9N,KAAK8zN,QAAUA,EACf9zN,KAAK+zN,OAASA,EACd/zN,KAAKg+N,WAAY,EACjBh+N,KAAKi+N,WAAY,EACjBj+N,KAAKs4E,KAAOt4E,KAAK+zN,OAAO1B,QACxBryN,KAAKs+M,OAAS0T,EAAYn8J,QAAQ52D,OAAO,SAAUe,MAEnDA,KAAKw0N,UAAYx0N,KAAKk+N,WAAa,IAAI3G,EAAM,EAAG,GAChDv3N,KAAKm+N,oBACLn+N,KAAKo+N,iBACLp+N,KAAK8zN,QAAQuK,UAAU,kBAAmBhiO,UAAU,WAC7CsJ,EAAMs4N,WACTpgO,WAAW8H,EAAM+W,OAAOvd,KAAKwG,EAAOwtN,EAAUt9J,QAAQ3Y,QAAQs6K,MAAO,MAGzEx3N,KAAK8zN,QAAQzmL,GAAG8lL,EAAUt9J,QAAQt+C,OAAO48M,eAAe,SAAU72N,EAAM+zH,GAClE/zH,IAAS61N,EAAUt9J,QAAQt+C,OAAO68M,aAAe/iG,EAAMz2H,SAAW,GACpE+K,EAAM+W,OAAOy2M,EAAUt9J,QAAQ3Y,QAAQs4K,WAG3Cx1N,KAAK8zN,QAAQzmL,GAAG8lL,EAAUt9J,QAAQt+C,OAAO4hN,sBAAsB,WAC7D,GAAKxzN,EAAMk1G,WAAX,CACA,IAAIyjH,EAAS34N,EAAM44N,iBACL,MAAVD,GACAA,EAAOh5K,MAAMpK,OAASv1C,EAAM24M,OAAOqC,UAEvCh7M,EAAMmuN,QAAQn9K,KAAKw8K,EAAUt9J,QAAQt+C,OAAO+8M,eAAe,WACzD,IACE3uN,EAAM64N,eAAeF,EAAOh5K,MAAMpK,KAAMojL,EAAOh5K,MAAMzpB,OAAQyiM,EAAOhuJ,IAAIp1B,KAAMojL,EAAOhuJ,IAAIz0C,QACzF,MAAOgrF,YAGb7mH,KAAK8zN,QAAQzmL,GAAG8lL,EAAUt9J,QAAQt+C,OAAO6hN,iBAAiB,SAAU7E,EAAWphN,GAC7E,GAAIA,EAAQmhI,MAAO,CACjB,IAAImqF,EAAiBtrN,EAAQmhI,MACzBoqF,EAAYD,EAAeC,UAC3BC,EAAcF,EAAeE,YAC7BC,EAAUH,EAAeG,QACzBC,EAAYJ,EAAeI,UAE/Bl5N,EAAM64N,eAAeE,EAAWC,EAAaC,EAASC,OAG1D7+N,KAAK0c,OAAOy2M,EAAUt9J,QAAQ3Y,QAAQs4K,QA8WxC,OA3WAv0N,EAAa88N,EAAW,CAAC,CACvB7+N,IAAK,oBACLN,MAAO,WACL,IAAIuH,EAASnG,KAEbA,KAAKs4E,KAAK43B,iBAAiB,oBAAoB,WAC7C/pG,EAAO63N,WAAY,KAErBh+N,KAAKs4E,KAAK43B,iBAAiB,kBAAkB,WAE3C,GADA/pG,EAAO63N,WAAY,EACf73N,EAAOm4M,OAAO/vM,OAAQ,CACxB,IAAI+lI,EAAQnuI,EAAOm4M,OAAOwgB,UAC1B,IAAKxqF,EAAO,OACZz2I,YAAW,WACTsI,EAAOq4N,eAAelqF,EAAMoqF,UAAWpqF,EAAMqqF,YAAarqF,EAAMsqF,QAAStqF,EAAMuqF,aAC9E,SAIR,CACD3/N,IAAK,iBACLN,MAAO,WACL,IAAI0P,EAAStO,KAEbA,KAAK8zN,QAAQuK,UAAU,YAAahiO,SAAS8e,MAAM,WACjD7M,EAAO2vN,WAAY,KAErBj+N,KAAK8zN,QAAQuK,UAAU,UAAWhiO,SAAS8e,MAAM,WAC/C7M,EAAO2vN,WAAY,EACnB3vN,EAAOoO,OAAOy2M,EAAUt9J,QAAQ3Y,QAAQs6K,WAG3C,CACDt4N,IAAK,QACLN,MAAO,WACDoB,KAAK66G,aACT76G,KAAKs4E,KAAKsxC,QACV5pH,KAAK80N,SAAS90N,KAAKk+N,eAEpB,CACDh/N,IAAK,SACLN,MAAO,SAAgB0+D,EAAS1+D,GAC9B,GAA6B,MAAzBoB,KAAK+zN,OAAO9+J,WAAsBj1D,KAAK+zN,OAAO9+J,UAAUqI,GAA5D,CACAt9D,KAAK+zN,OAAOr3M,SACZ,IAAIqiN,EAAc/+N,KAAKu+N,iBACvB,GAAmB,MAAfQ,GAAwBA,EAAYT,OAAOU,YAAahN,EAAYn8J,QAAQ+oB,MAAMthB,EAAS00J,EAAYn8J,QAAQ+3J,MAAMoB,OAAzH,CACA,GAAI+P,EAAYz5K,MAAMpK,OAASl7C,KAAKs+M,OAAOqC,SAAU,CACnD,IAAI2O,EAAO0C,EAAYn8J,QAAQ7vD,KAAK+4N,EAAYz5K,MAAMpK,MAAM,GAC5D,GAAY,MAARo0K,EAAc,OAElB,GAAIA,aAAgB0C,EAAYn8J,QAAQi4J,KAAM,CAC5C,IAAIpmK,EAAQ4nK,EAAKhkM,MAAMyzM,EAAYz5K,MAAMzpB,QACzCyzL,EAAK/gN,OAAO4yD,aAAanhE,KAAKs+M,OAAQ52J,QAEtC4nK,EAAKnuJ,aAAanhE,KAAKs+M,OAAQygB,EAAYz5K,MAAMpK,MAEnDl7C,KAAKs+M,OAAOxL,SAEd9yM,KAAKs+M,OAAO1+L,OAAO09C,EAAS1+D,GAC5BoB,KAAK+zN,OAAOyH,WACZx7N,KAAKw+N,eAAex+N,KAAKs+M,OAAOqC,SAAU3gN,KAAKs+M,OAAOqC,SAAStmN,KAAKO,QACpEoF,KAAK0c,aAEN,CACDxd,IAAK,YACLN,MAAO,SAAmB+K,GACxB,IAAI/O,EAASkH,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,EAE7Es6N,EAAep8N,KAAK+zN,OAAOn5N,SAC/B+O,EAAQwZ,KAAKW,IAAIna,EAAOyyN,EAAe,GACvCxhO,EAASuoB,KAAKW,IAAIna,EAAQ/O,EAAQwhO,EAAe,GAAKzyN,EACtD,IAAIuxC,OAAO,EACP+jL,EAAej/N,KAAK+zN,OAAOlB,KAAKlpN,GAChCu1N,EAAgB/kK,EAAe8kK,EAAc,GAC7CpM,EAAOqM,EAAc,GACrBrjM,EAASqjM,EAAc,GAC3B,GAAY,MAARrM,EAAc,OAAO,KAEzB,IAAIsM,EAAiBtM,EAAKljG,SAAS9zF,GAAQ,GAEvCujM,EAAkBjlK,EAAeglK,EAAgB,GAErDjkL,EAAOkkL,EAAgB,GACvBvjM,EAASujM,EAAgB,GAEzB,IAAI9qF,EAAQj4I,SAASgoN,cACrB,GAAIzpN,EAAS,EAAG,CACd05I,EAAM+qF,SAASnkL,EAAMrf,GAErB,IAAIyjM,EAAgBt/N,KAAK+zN,OAAOlB,KAAKlpN,EAAQ/O,GAEzC2kO,EAAgBplK,EAAemlK,EAAe,GAKlD,GAHAzM,EAAO0M,EAAc,GACrB1jM,EAAS0jM,EAAc,GAEX,MAAR1M,EAAc,OAAO,KAEzB,IAAI2M,EAAkB3M,EAAKljG,SAAS9zF,GAAQ,GAExC4jM,EAAkBtlK,EAAeqlK,EAAiB,GAMtD,OAJAtkL,EAAOukL,EAAgB,GACvB5jM,EAAS4jM,EAAgB,GAEzBnrF,EAAMorF,OAAOxkL,EAAMrf,GACZy4G,EAAMxiB,wBAEb,IAAI6tG,EAAO,OACPh/F,OAAO,EAeX,OAdIzlF,aAAgBizK,MACdtyL,EAASqf,EAAK7gD,KAAKO,QACrB05I,EAAM+qF,SAASnkL,EAAMrf,GACrBy4G,EAAMorF,OAAOxkL,EAAMrf,EAAS,KAE5By4G,EAAM+qF,SAASnkL,EAAMrf,EAAS,GAC9By4G,EAAMorF,OAAOxkL,EAAMrf,GACnB8jM,EAAO,SAETh/F,EAAO2T,EAAMxiB,0BAEb6O,EAAOkyF,EAAKR,QAAQvgG,wBAChBj2F,EAAS,IAAG8jM,EAAO,UAElB,CACL7rF,OAAQnT,EAAKppB,IAAMopB,EAAKlN,OACxBA,OAAQkN,EAAKlN,OACb1B,KAAM4O,EAAKg/F,GACXnwG,MAAOmR,EAAKg/F,GACZpoH,IAAKopB,EAAKppB,IACVjjE,MAAO,KAIZ,CACDp1C,IAAK,iBACLN,MAAO,WACL,IAAIgoH,EAAYvqH,SAAS+4N,eACzB,GAAiB,MAAbxuG,GAAqBA,EAAUg5G,YAAc,EAAG,OAAO,KAC3D,IAAIb,EAAcn4G,EAAUi5G,WAAW,GACvC,GAAmB,MAAfd,EAAqB,OAAO,KAChC,IAAIzqF,EAAQt0I,KAAK8/N,gBAAgBf,GAEjC,OADAprL,EAAMxzC,KAAK,iBAAkBm0I,GACtBA,IAER,CACDp1I,IAAK,WACLN,MAAO,WACL,IAAI69M,EAAaz8M,KAAKu+N,iBACtB,OAAkB,MAAd9hB,EAA2B,CAAC,KAAM,MAE/B,CADKz8M,KAAK+/N,kBAAkBtjB,GACpBA,KAEhB,CACDv9M,IAAK,WACLN,MAAO,WACL,OAAOvC,SAASu+G,gBAAkB56G,KAAKs4E,OAExC,CACDp5E,IAAK,oBACLN,MAAO,SAA2B01I,GAChC,IAAI7lI,EAASzO,KAETggO,EAAY,CAAC,CAAC1rF,EAAMhvF,MAAMpK,KAAMo5F,EAAMhvF,MAAMzpB,SAC3Cy4G,EAAMgqF,OAAOU,WAChBgB,EAAU9kO,KAAK,CAACo5I,EAAMhkE,IAAIp1B,KAAMo5F,EAAMhkE,IAAIz0C,SAE5C,IAAIokM,EAAUD,EAAUr7N,KAAI,SAAUgrH,GACpC,IAAIuwG,EAAY/lK,EAAew1D,EAAU,GACrCz0E,EAAOglL,EAAU,GACjBrkM,EAASqkM,EAAU,GAEnB5Q,EAAO0C,EAAYn8J,QAAQ7vD,KAAKk1C,GAAM,GACtCvxC,EAAQ2lN,EAAKzzL,OAAOptB,EAAOslN,QAC/B,OAAe,IAAXl4L,EACKlyB,EACE2lN,aAAgB0C,EAAYn8J,QAAQkwE,UACtCp8H,EAAQ2lN,EAAK10N,SAEb+O,EAAQ2lN,EAAK3lN,MAAMuxC,EAAMrf,MAGhCy0C,EAAMntD,KAAKW,IAAIX,KAAKqD,IAAIviB,MAAMkf,KAAMmqC,EAAmB2yK,IAAWjgO,KAAK+zN,OAAOn5N,SAAW,GACzF0qD,EAAQniC,KAAKW,IAAI7f,MAAMkf,KAAM,CAACmtD,GAAKnsE,OAAOmpD,EAAmB2yK,KACjE,OAAO,IAAI1I,EAAMjyK,EAAOgrB,EAAMhrB,KAE/B,CACDpmD,IAAK,kBACLN,MAAO,SAAyBmgO,GAC9B,IAAK3rH,EAASpzG,KAAKs4E,KAAMymJ,EAAYoB,kBAAoBpB,EAAYC,YAAc5rH,EAASpzG,KAAKs4E,KAAMymJ,EAAYqB,cACjH,OAAO,KAET,IAAI9rF,EAAQ,CACVhvF,MAAO,CAAEpK,KAAM6jL,EAAYoB,eAAgBtkM,OAAQkjM,EAAYJ,aAC/DruJ,IAAK,CAAEp1B,KAAM6jL,EAAYqB,aAAcvkM,OAAQkjM,EAAYF,WAC3DP,OAAQS,GAkBV,MAhBA,CAACzqF,EAAMhvF,MAAOgvF,EAAMhkE,KAAKnpE,SAAQ,SAAUwoH,GAGzC,IAFA,IAAIz0E,EAAOy0E,EAASz0E,KAChBrf,EAAS8zF,EAAS9zF,SACbqf,aAAgBizK,OAASjzK,EAAKgoB,WAAWtoE,OAAS,GACzD,GAAIsgD,EAAKgoB,WAAWtoE,OAASihC,EAC3Bqf,EAAOA,EAAKgoB,WAAWrnC,GACvBA,EAAS,MACJ,IAAIqf,EAAKgoB,WAAWtoE,SAAWihC,EAIpC,MAFAA,GADAqf,EAAOA,EAAKm/D,qBACa8zG,KAAOjzK,EAAK7gD,KAAKO,OAASsgD,EAAKgoB,WAAWtoE,OAAS,EAKhF+0H,EAASz0E,KAAOA,EAAMy0E,EAAS9zF,OAASA,KAEnCy4G,IAER,CACDp1I,IAAK,gBACLN,MAAO,SAAuB01I,GAC5B,IAAIxkI,EAAS9P,KAETigO,EAAU3rF,EAAM0qF,UAAY,CAAC1qF,EAAM3qI,OAAS,CAAC2qI,EAAM3qI,MAAO2qI,EAAM3qI,MAAQ2qI,EAAM15I,QAC9E6pB,EAAO,GACP23M,EAAep8N,KAAK+zN,OAAOn5N,SAoB/B,OAnBAqlO,EAAQ94N,SAAQ,SAAUwC,EAAOjP,GAC/BiP,EAAQwZ,KAAKW,IAAIs4M,EAAe,EAAGzyN,GACnC,IAAIuxC,EACAmlL,EAAgBvwN,EAAOikN,OAAOlB,KAAKlpN,GACnC22N,EAAgBnmK,EAAekmK,EAAe,GAC9CxN,EAAOyN,EAAc,GACrBzkM,EAASykM,EAAc,GACvBC,EAAkB1N,EAAKljG,SAAS9zF,EAAc,IAANnhC,GAExC8lO,EAAkBrmK,EAAeomK,EAAiB,GAEtDrlL,EAAOslL,EAAgB,GACvB3kM,EAAS2kM,EAAgB,GAEzB/7M,EAAKvpB,KAAKggD,EAAMrf,MAEdpX,EAAK7pB,OAAS,IAChB6pB,EAAOA,EAAKtgB,OAAOsgB,IAEdA,IAER,CACDvlB,IAAK,iBACLN,MAAO,SAAwBi1N,GAC7B,IAAIv/E,EAAQt0I,KAAKw0N,UACjB,GAAa,MAATlgF,EAAJ,CACA,IAAIuhF,EAAS71N,KAAK81N,UAAUxhF,EAAM3qI,MAAO2qI,EAAM15I,QAC/C,GAAc,MAAVi7N,EAAJ,CACA,IAAIluL,EAAQ3nC,KAAK+zN,OAAOn5N,SAAW,EAE/B4hO,EAAex8N,KAAK+zN,OAAOt/H,KAAKtxE,KAAKW,IAAIwwH,EAAM3qI,MAAOg+B,IAEtDp1B,EADgB4nD,EAAeqiK,EAAc,GACvB,GAEtB5tJ,EAAOr8D,EACX,GAAI+hI,EAAM15I,OAAS,EAAG,CACpB,IAAIwiO,EAAgBp9N,KAAK+zN,OAAOt/H,KAAKtxE,KAAKW,IAAIwwH,EAAM3qI,MAAQ2qI,EAAM15I,OAAQ+sC,IAI1EinC,EAFoBzU,EAAeijK,EAAe,GAE7B,GAEvB,GAAa,MAAT7qN,GAAyB,MAARq8D,EAArB,CACA,IAAI6xJ,EAAe5M,EAAmB/hG,wBAClC+jG,EAAOt+G,IAAMkpH,EAAalpH,IAC5Bs8G,EAAmBphG,WAAaguG,EAAalpH,IAAMs+G,EAAOt+G,IACjDs+G,EAAO/hF,OAAS2sF,EAAa3sF,SACtC+/E,EAAmBphG,WAAaojG,EAAO/hF,OAAS2sF,EAAa3sF,aAGhE,CACD50I,IAAK,iBACLN,MAAO,SAAwB8/N,EAAWC,GACxC,IAAIC,EAAU98N,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK48N,EAC9EG,EAAY/8N,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK68N,EAChFjuL,EAAQ5uC,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,IAAmBA,UAAU,GAG3E,GADA6xC,EAAMxzC,KAAK,iBAAkBu+N,EAAWC,EAAaC,EAASC,GAC7C,MAAbH,GAA8C,MAAxB1+N,KAAKs4E,KAAKhX,YAA8C,MAAxBo9J,EAAUp9J,YAA4C,MAAtBs9J,EAAQt9J,WAAlG,CAGA,IAAIslD,EAAYvqH,SAAS+4N,eACzB,GAAiB,MAAbxuG,EACJ,GAAiB,MAAb83G,EAAmB,CAChB1+N,KAAK66G,YAAY76G,KAAKs4E,KAAKsxC,QAChC,IAAI00G,GAAUt+N,KAAKu+N,kBAAoB,IAAID,OAC3C,GAAc,MAAVA,GAAkB5tL,GAASguL,IAAcJ,EAAO6B,gBAAkBxB,IAAgBL,EAAOK,aAAeC,IAAYN,EAAO8B,cAAgBvB,IAAcP,EAAOO,UAAW,CAEpJ,MAArBH,EAAUnkE,UACZokE,EAAc,GAAGttN,QAAQrW,KAAK0jO,EAAUp9J,WAAW4B,WAAYw7J,GAC/DA,EAAYA,EAAUp9J,YAED,MAAnBs9J,EAAQrkE,UACVskE,EAAY,GAAGxtN,QAAQrW,KAAK4jO,EAAQt9J,WAAW4B,WAAY07J,GAC3DA,EAAUA,EAAQt9J,YAEpB,IAAIgzE,EAAQj4I,SAASgoN,cACrB/vE,EAAM+qF,SAASX,EAAWC,GAC1BrqF,EAAMorF,OAAOd,EAASC,GACtBj4G,EAAU85G,kBACV95G,EAAU+5G,SAASrsF,SAGrB1tB,EAAU85G,kBACV1gO,KAAKs4E,KAAKuxC,OACVxtH,SAAS8e,KAAKyuG,WAGjB,CACD1qH,IAAK,WACLN,MAAO,SAAkB01I,GACvB,IAAI5jG,EAAQ5uC,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,IAAmBA,UAAU,GACvEuiC,EAASviC,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAKqxN,EAAUt9J,QAAQ3Y,QAAQi4K,IAO3G,GALqB,iBAAVzkL,IACTrM,EAASqM,EACTA,GAAQ,GAEViD,EAAMxzC,KAAK,WAAYm0I,GACV,MAATA,EAAe,CACjB,IAAI7vH,EAAOzkB,KAAK4gO,cAActsF,GAC9Bt0I,KAAKw+N,eAAev6N,MAAMjE,KAAMstD,EAAmB7oC,GAAMtgB,OAAO,CAACusC,UAEjE1wC,KAAKw+N,eAAe,MAEtBx+N,KAAK0c,OAAO2nB,KAEb,CACDnlC,IAAK,SACLN,MAAO,WACL,IAAIylC,EAASviC,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAKqxN,EAAUt9J,QAAQ3Y,QAAQs6K,KAEvGqJ,EAAW7gO,KAAKw0N,UAEhBsM,EAAY9gO,KAAKs2N,WACjByK,EAAa5mK,EAAe2mK,EAAW,GACvCtM,EAAYuM,EAAW,GACvBhC,EAAcgC,EAAW,GAM7B,GAJA/gO,KAAKw0N,UAAYA,EACK,MAAlBx0N,KAAKw0N,YACPx0N,KAAKk+N,WAAal+N,KAAKw0N,aAEpB,EAAIuH,EAAYlmK,SAASgrK,EAAU7gO,KAAKw0N,WAAY,CACvD,IAAIyD,GAECj4N,KAAKg+N,WAA4B,MAAfe,GAAuBA,EAAYT,OAAOU,WAAaD,EAAYz5K,MAAMpK,OAASl7C,KAAKs+M,OAAOqC,UACnH3gN,KAAKs+M,OAAOwgB,UAEd,IAGM5G,EAHFzzM,EAAO,CAAC0uM,EAAUt9J,QAAQt+C,OAAO8hN,kBAAkB,EAAIyC,EAAQjmK,SAAS71D,KAAKw0N,YAAY,EAAIsH,EAAQjmK,SAASgrK,GAAWx8L,IAC5H4zL,EAAWj4N,KAAK8zN,SAAS/8K,KAAK9yC,MAAMg0N,EAAU,CAAC9E,EAAUt9J,QAAQt+C,OAAO48M,eAAehwN,OAAOsgB,IAC3F4f,IAAW8uL,EAAUt9J,QAAQ3Y,QAAQs4K,SAGtC0C,EAAYl4N,KAAK8zN,SAAS/8K,KAAK9yC,MAAMi0N,EAAWzzM,QAMlDs5M,EA/ZO,GAkahB,SAAS3qH,EAAS7kG,EAAQusN,GACxB,IAEEA,EAAWx5J,WACX,MAAO1lE,GACP,OAAO,EAOT,OAHIk/N,aAAsB3M,OACxB2M,EAAaA,EAAWx5J,YAEnB/yD,EAAO6kG,SAAS0nH,GAGzBr/N,EAAQ87N,MAAQA,EAChB97N,EAAQo6D,QAAUkoK,GAIZ,SAAUriO,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAQgCmC,EAR5BE,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAIfq3N,EAAap9N,EAAoB,GAMrC,SAAS0xD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAIlO,IAAIgmO,EAAQ,SAAU5O,GAGpB,SAAS4O,IAGP,OAFA9zK,EAAgBltD,KAAMghO,GAEfrpN,EAA2B3X,MAAOghO,EAAMhpN,WAAand,OAAOoxC,eAAe+0L,IAAQ/8N,MAAMjE,KAAM8B,YA6BxG,OArCF,SAAmB8V,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAG/dI,CAAU+oN,EAAO5O,GAQjBnxN,EAAa+/N,EAAO,CAAC,CACnB9hO,IAAK,aACLN,MAAO,SAAoB2P,EAAQg9D,GACF,IAA3Bh9D,EAAOqhC,SAASh1C,OA1Bf,SAAS4D,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,EA2BjZ5J,CAAK+jJ,EAAMlmO,UAAUkd,WAAand,OAAOoxC,eAAe+0L,EAAMlmO,WAAY,aAAckF,MAAMhF,KAAKgF,KAAMuO,EAAQg9D,GAEjHvrE,KAAK8vC,WAGR,CACD5wC,IAAK,SACLN,MAAO,WACL,OAAO,IAER,CACDM,IAAK,QACLN,MAAO,WACL,MAAO,MAEP,CAAC,CACHM,IAAK,QACLN,MAAO,gBAKFoiO,EAnCG,GARoBjgO,EAFS63N,IAEY73N,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,IA4CzE80D,QAAQk4J,OAEtBiT,EAAMvR,SAAW,QACjBuR,EAAMzmE,QAAU,KAEhB9+J,EAAQo6D,QAAUmrK,GAIZ,SAAUtlO,EAAQD,EAASD,GAEjC,aAEA,IACQizN,EADJC,EAAa1uN,MAAQA,KAAK0uN,YACtBD,EAAgB5zN,OAAOkd,gBACtB,CAAEC,UAAW,cAAgBtX,OAAS,SAAUvC,EAAGwT,GAAKxT,EAAE6Z,UAAYrG,IACvE,SAAUxT,EAAGwT,GAAK,IAAK,IAAI/U,KAAK+U,EAAOA,EAAE5W,eAAe6B,KAAIuB,EAAEvB,GAAK+U,EAAE/U,KAClE,SAAUuB,EAAGwT,GAEhB,SAASszF,IAAOjlG,KAAKgB,YAAc7C,EADnCswN,EAActwN,EAAGwT,GAEjBxT,EAAErD,UAAkB,OAAN6W,EAAa9W,OAAOoE,OAAO0S,IAAMszF,EAAGnqG,UAAY6W,EAAE7W,UAAW,IAAImqG,KAGvFpqG,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IACtD,IAAIqiO,EAAgBzlO,EAAoB,IACpC0lO,EAAW1lO,EAAoB,IAC/BkyN,EAAWlyN,EAAoB,GAC/B2lO,EAA+B,SAAUvS,GAEzC,SAASuS,EAAc9O,GACnB,IAAI1sN,EAAQipN,EAAO5zN,KAAKgF,KAAMqyN,IAAYryN,KAE1C,OADA2F,EAAMuzI,QACCvzI,EAwNX,OA5NA+oN,EAAUyS,EAAevS,GAMzBuS,EAAcrmO,UAAUiD,YAAc,SAAUs8B,GAC5Cr6B,KAAKmhE,aAAa9mC,IAEtB8mM,EAAcrmO,UAAUg4M,OAAS,WAC7B8b,EAAO9zN,UAAUg4M,OAAO93M,KAAKgF,MAC7BA,KAAK4vC,SAASzoC,SAAQ,SAAU8jF,GAC5BA,EAAM6nH,aAGdquB,EAAcrmO,UAAUo+I,MAAQ,WAC5B,IAAIvzI,EAAQ3F,KACZA,KAAK4vC,SAAW,IAAIqxL,EAAcprK,QAElC,GAAGh2D,MACE7E,KAAKgF,KAAKqyN,QAAQnvJ,YAClB0D,UACAz/D,SAAQ,SAAU+zC,GACnB,IACI,IAAI+vC,EAAQm2I,EAASlmL,GACrBv1C,EAAMw7D,aAAa8pB,EAAOtlF,EAAMiqC,SAAS9xC,WAAQF,GAErD,MAAO4B,GACH,GAAIA,aAAekuN,EAASiB,eACxB,OAEA,MAAMnvN,OAItB2hO,EAAcrmO,UAAUigO,SAAW,SAAUpxN,EAAO/O,GAChD,GAAc,IAAV+O,GAAe/O,IAAWoF,KAAKpF,SAC/B,OAAOoF,KAAK8vC,SAEhB9vC,KAAK4vC,SAASyxL,UAAU13N,EAAO/O,GAAQ,SAAUqwF,EAAOpvD,EAAQjhC,GAC5DqwF,EAAM8vI,SAASl/L,EAAQjhC,OAG/BumO,EAAcrmO,UAAUggO,WAAa,SAAUt+M,EAAU7S,GACrD,IAAIqgB,EAAKhqB,KAAK4vC,SAAS5pC,KAAK2D,GAAQshF,EAAQjhE,EAAG,GAAI6R,EAAS7R,EAAG,GAC/D,OAA0B,MAArBxN,EAASizM,UAAoBjzM,EAASyuE,IACjB,MAArBzuE,EAASizM,UAAoBxkI,aAAiBzuE,EACxC,CAACyuE,EAAOpvD,GAEVovD,aAAiBk2I,EACfl2I,EAAM6vI,WAAWt+M,EAAUqf,GAG3B,CAAC,MAAO,IAGvBslM,EAAcrmO,UAAU83N,YAAc,SAAUp2M,EAAU7S,EAAO/O,QAC/C,IAAV+O,IAAoBA,EAAQ,QACjB,IAAX/O,IAAqBA,EAASmpD,OAAOsyK,WACzC,IAAIzD,EAAc,GACd0O,EAAa1mO,EAWjB,OAVAoF,KAAK4vC,SAASyxL,UAAU13N,EAAO/O,GAAQ,SAAUqwF,EAAOthF,EAAO/O,IACjC,MAArB4hB,EAASizM,UAAoBjzM,EAASyuE,IACjB,MAArBzuE,EAASizM,UAAoBxkI,aAAiBzuE,IAC/Co2M,EAAY13N,KAAK+vF,GAEjBA,aAAiBk2I,IACjBvO,EAAcA,EAAYzuN,OAAO8mF,EAAM2nI,YAAYp2M,EAAU7S,EAAO23N,KAExEA,GAAc1mO,KAEXg4N,GAEXuO,EAAcrmO,UAAU+yH,OAAS,WAC7B7tH,KAAK4vC,SAASzoC,SAAQ,SAAU8jF,GAC5BA,EAAM4iC,YAEV+gG,EAAO9zN,UAAU+yH,OAAO7yH,KAAKgF,OAEjCmhO,EAAcrmO,UAAUsgO,SAAW,SAAUzxN,EAAO/O,EAAQ8C,EAAMkB,GAC9DoB,KAAK4vC,SAASyxL,UAAU13N,EAAO/O,GAAQ,SAAUqwF,EAAOpvD,EAAQjhC,GAC5DqwF,EAAMmwI,SAASv/L,EAAQjhC,EAAQ8C,EAAMkB,OAG7CuiO,EAAcrmO,UAAUmmE,SAAW,SAAUt3D,EAAO/K,EAAO4zN,GACvD,IAAIxoM,EAAKhqB,KAAK4vC,SAAS5pC,KAAK2D,GAAQshF,EAAQjhE,EAAG,GAAI6R,EAAS7R,EAAG,GAC/D,GAAIihE,EACAA,EAAMhqB,SAASplC,EAAQj9B,EAAO4zN,OAE7B,CACD,IAAIlD,EAAc,MAAPkD,EAAc9E,EAASzuN,OAAO,OAAQL,GAAS8uN,EAASzuN,OAAOL,EAAO4zN,GACjFxyN,KAAKjC,YAAYuxN,KAGzB6R,EAAcrmO,UAAUqmE,aAAe,SAAUogK,EAAWC,GACxD,GAAoC,MAAhCxhO,KAAK09I,QAAQq1E,kBACZ/yN,KAAK09I,QAAQq1E,gBAAgBl0M,MAAK,SAAUosE,GACzC,OAAOs2I,aAAqBt2I,KAEhC,MAAM,IAAIyiI,EAASiB,eAAe,iBAAmB4S,EAAU7jF,QAAQ+xE,SAAW,SAAWzvN,KAAK09I,QAAQ+xE,UAE9G8R,EAAUxgK,WAAW/gE,KAAMwhO,IAE/BL,EAAcrmO,UAAUF,OAAS,WAC7B,OAAOoF,KAAK4vC,SAAS2V,QAAO,SAAU+Z,EAAM2rB,GACxC,OAAO3rB,EAAO2rB,EAAMrwF,WACrB,IAEPumO,EAAcrmO,UAAU29N,aAAe,SAAUgJ,EAAc5M,GAC3D70N,KAAK4vC,SAASzoC,SAAQ,SAAU8jF,GAC5Bw2I,EAAatgK,aAAa8pB,EAAO4pI,OAGzCsM,EAAcrmO,UAAU0gO,SAAW,SAAUroN,GAEzC,GADAy7M,EAAO9zN,UAAU0gO,SAASxgO,KAAKgF,KAAMmT,GACR,IAAzBnT,KAAK4vC,SAASh1C,OACd,GAAiC,MAA7BoF,KAAK09I,QAAQo1E,aAAsB,CACnC,IAAI7nI,EAAQyiI,EAASzuN,OAAOe,KAAK09I,QAAQo1E,cACzC9yN,KAAKjC,YAAYktF,GACjBA,EAAMuwI,SAASroN,QAGfnT,KAAK8vC,UAIjBqxL,EAAcrmO,UAAU6G,KAAO,SAAUgI,EAAO+3N,QAC1B,IAAdA,IAAwBA,GAAY,GACxC,IAAI13M,EAAKhqB,KAAK4vC,SAAS5pC,KAAK2D,EAAO+3N,GAAYz2I,EAAQjhE,EAAG,GAAI6R,EAAS7R,EAAG,GACtE2lG,EAAW,CAAC,CAAC3vH,KAAM2J,IACvB,OAAIshF,aAAiBk2I,EACVxxG,EAASxrH,OAAO8mF,EAAMtpF,KAAKk6B,EAAQ6lM,KAE5B,MAATz2I,GACL0kC,EAASz0H,KAAK,CAAC+vF,EAAOpvD,IAEnB8zF,IAEXwxG,EAAcrmO,UAAUymE,YAAc,SAAU0pB,GAC5CjrF,KAAK4vC,SAASE,OAAOm7C,IAEzBk2I,EAAcrmO,UAAUiM,QAAU,SAAUvJ,GACpCA,aAAkB2jO,GAClB3jO,EAAOi7N,aAAaz4N,MAExB4uN,EAAO9zN,UAAUiM,QAAQ/L,KAAKgF,KAAMxC,IAExC2jO,EAAcrmO,UAAUwwB,MAAQ,SAAU3hB,EAAO+mC,GAE7C,QADc,IAAVA,IAAoBA,GAAQ,IAC3BA,EAAO,CACR,GAAc,IAAV/mC,EACA,OAAO3J,KACX,GAAI2J,IAAU3J,KAAKpF,SACf,OAAOoF,KAAKiD,KAEpB,IAAIykD,EAAQ1nD,KAAKu8B,QAMjB,OALAv8B,KAAKuO,OAAO4yD,aAAazZ,EAAO1nD,KAAKiD,MACrCjD,KAAK4vC,SAASyxL,UAAU13N,EAAO3J,KAAKpF,UAAU,SAAUqwF,EAAOpvD,EAAQjhC,GACnEqwF,EAAQA,EAAM3/D,MAAMuQ,EAAQ6U,GAC5BgX,EAAM3pD,YAAYktF,MAEfvjC,GAEXy5K,EAAcrmO,UAAUwjI,OAAS,WAC7Bt+H,KAAKy4N,aAAaz4N,KAAKuO,OAAQvO,KAAKiD,MACpCjD,KAAK8vC,UAETqxL,EAAcrmO,UAAU4hB,OAAS,SAAU63M,EAAWphN,GAClD,IAAIxN,EAAQ3F,KACR2hO,EAAa,GACbC,EAAe,GACnBrN,EAAUptN,SAAQ,SAAU8jJ,GACpBA,EAASztJ,SAAWmI,EAAM0sN,SAA6B,cAAlBpnE,EAAS3tJ,OAC9CqkO,EAAWzmO,KAAK+I,MAAM09N,EAAY12E,EAAS02E,YAC3CC,EAAa1mO,KAAK+I,MAAM29N,EAAc32E,EAAS22E,kBAGvDA,EAAaz6N,SAAQ,SAAU+zC,GAI3B,KAAuB,MAAnBA,EAAKomB,YAEY,WAAjBpmB,EAAKq/G,SACLl+J,SAAS8e,KAAKg9F,wBAAwBj9D,GAAQggC,KAAK2mJ,gCAHvD,CAMA,IAAIvS,EAAO5B,EAAS1nN,KAAKk1C,GACb,MAARo0K,IAE2B,MAA3BA,EAAK+C,QAAQ/wJ,YAAsBguJ,EAAK+C,QAAQ/wJ,aAAe37D,EAAM0sN,SACrE/C,EAAKzhG,cAGb8zG,EACK98N,QAAO,SAAUq2C,GAClB,OAAOA,EAAKomB,YAAc37D,EAAM0sN,WAE/B5gN,MAAK,SAAUC,EAAGC,GACnB,OAAID,IAAMC,EACC,EACPD,EAAEymG,wBAAwBxmG,GAAKupE,KAAK4mJ,4BAC7B,GAEH,KAEP36N,SAAQ,SAAU+zC,GACnB,IAAIsmL,EAAU,KACU,MAApBtmL,EAAKgmB,cACLsgK,EAAU9T,EAAS1nN,KAAKk1C,EAAKgmB,cAEjC,IAAIouJ,EAAO8R,EAASlmL,GAChBo0K,EAAKrsN,MAAQu+N,GAAwB,MAAblS,EAAKrsN,OACV,MAAfqsN,EAAK/gN,QACL+gN,EAAK/gN,OAAOgzD,YAAY57D,GAE5BA,EAAMw7D,aAAamuJ,EAAMkS,QAAW5jO,QAIzCujO,EA7NuB,CA8NhCD,EAASrrK,SACX,SAASurK,EAASlmL,GACd,IAAIo0K,EAAO5B,EAAS1nN,KAAKk1C,GACzB,GAAY,MAARo0K,EACA,IACIA,EAAO5B,EAASzuN,OAAOi8C,GAE3B,MAAOt/C,GACH0zN,EAAO5B,EAASzuN,OAAOyuN,EAASE,MAAMqB,QACtC,GAAGpvN,MAAM7E,KAAKkgD,EAAKgoB,YAAY/7D,SAAQ,SAAU8jF,GAE7CqkI,EAAK+C,QAAQt0N,YAAYktF,MAEzB/vC,EAAKomB,YACLpmB,EAAKomB,WAAWysD,aAAauhG,EAAK+C,QAASn3K,GAE/Co0K,EAAKxc,SAGb,OAAOwc,EAEX7zN,EAAQo6D,QAAUsrK,GAKZ,SAAUzlO,EAAQD,EAASD,GAEjC,aAEA,IACQizN,EADJC,EAAa1uN,MAAQA,KAAK0uN,YACtBD,EAAgB5zN,OAAOkd,gBACtB,CAAEC,UAAW,cAAgBtX,OAAS,SAAUvC,EAAGwT,GAAKxT,EAAE6Z,UAAYrG,IACvE,SAAUxT,EAAGwT,GAAK,IAAK,IAAI/U,KAAK+U,EAAOA,EAAE5W,eAAe6B,KAAIuB,EAAEvB,GAAK+U,EAAE/U,KAClE,SAAUuB,EAAGwT,GAEhB,SAASszF,IAAOjlG,KAAKgB,YAAc7C,EADnCswN,EAActwN,EAAGwT,GAEjBxT,EAAErD,UAAkB,OAAN6W,EAAa9W,OAAOoE,OAAO0S,IAAMszF,EAAGnqG,UAAY6W,EAAE7W,UAAW,IAAImqG,KAGvFpqG,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IACtD,IAAI0uN,EAAe9xN,EAAoB,IACnCiyN,EAAUjyN,EAAoB,IAC9BsxN,EAActxN,EAAoB,IAClCkyN,EAAWlyN,EAAoB,GAC/BumO,EAA4B,SAAUnT,GAEtC,SAASmT,EAAW1P,GAChB,IAAI1sN,EAAQipN,EAAO5zN,KAAKgF,KAAMqyN,IAAYryN,KAE1C,OADA2F,EAAMsjG,WAAa,IAAIwkH,EAAQ53J,QAAQlwD,EAAM0sN,SACtC1sN,EAmDX,OAvDA+oN,EAAUqT,EAAYnT,GAMtBmT,EAAWviM,QAAU,SAAU6yL,GAC3B,MAA4B,iBAAjBryN,KAAKu6J,UAGP75J,MAAMC,QAAQX,KAAKu6J,SACjB83D,EAAQ93D,QAAQh/I,mBADtB,IAKTwmN,EAAWjnO,UAAU8kB,OAAS,SAAUliB,EAAMkB,GAC1C,IAAIghB,EAAS8tM,EAAS9uI,MAAMlhF,GACxBkiB,aAAkB0tM,EAAaz3J,QAC/B71D,KAAKipG,WAAWqpH,UAAU1yM,EAAQhhB,GAE7BA,IACS,MAAVghB,GAAmBliB,IAASsC,KAAK09I,QAAQ+xE,UAAYzvN,KAAKw/B,UAAU9hC,KAAUkB,GAC9EoB,KAAK8tH,YAAYpwH,EAAMkB,KAInCmjO,EAAWjnO,UAAU0kC,QAAU,WAC3B,IAAIA,EAAUx/B,KAAKipG,WAAW51E,SAC1BzT,EAAS5f,KAAK09I,QAAQl+G,QAAQx/B,KAAKqyN,SAIvC,OAHc,MAAVzyM,IACA4f,EAAQx/B,KAAK09I,QAAQ+xE,UAAY7vM,GAE9B4f,GAEXuiM,EAAWjnO,UAAUgzH,YAAc,SAAUpwH,EAAMkB,GAC/C,IAAIgkE,EAAcgsJ,EAAO9zN,UAAUgzH,YAAY9yH,KAAKgF,KAAMtC,EAAMkB,GAEhE,OADAoB,KAAKipG,WAAWx6C,KAAKmU,GACdA,GAEXm/J,EAAWjnO,UAAU4hB,OAAS,SAAU63M,EAAWphN,GAC/C,IAAIxN,EAAQ3F,KACZ4uN,EAAO9zN,UAAU4hB,OAAO1hB,KAAKgF,KAAMu0N,EAAWphN,GAC1CohN,EAAU11M,MAAK,SAAUosI,GACzB,OAAOA,EAASztJ,SAAWmI,EAAM0sN,SAA6B,eAAlBpnE,EAAS3tJ,SAErD0C,KAAKipG,WAAWiwC,SAGxB6oF,EAAWjnO,UAAUgsH,KAAO,SAAUppH,EAAMkB,GACxC,IAAImvI,EAAU6gF,EAAO9zN,UAAUgsH,KAAK9rH,KAAKgF,KAAMtC,EAAMkB,GAIrD,OAHImvI,aAAmBg0F,GAAch0F,EAAQ2P,QAAQtyE,QAAUprE,KAAK09I,QAAQtyE,OACxEprE,KAAKipG,WAAW+4H,KAAKj0F,GAElBA,GAEJg0F,EAxDoB,CAyD7BjV,EAAYj3J,SACdp6D,EAAQo6D,QAAUksK,GAKZ,SAAUrmO,EAAQD,EAASD,GAEjC,aAEA,IACQizN,EADJC,EAAa1uN,MAAQA,KAAK0uN,YACtBD,EAAgB5zN,OAAOkd,gBACtB,CAAEC,UAAW,cAAgBtX,OAAS,SAAUvC,EAAGwT,GAAKxT,EAAE6Z,UAAYrG,IACvE,SAAUxT,EAAGwT,GAAK,IAAK,IAAI/U,KAAK+U,EAAOA,EAAE5W,eAAe6B,KAAIuB,EAAEvB,GAAK+U,EAAE/U,KAClE,SAAUuB,EAAGwT,GAEhB,SAASszF,IAAOjlG,KAAKgB,YAAc7C,EADnCswN,EAActwN,EAAGwT,GAEjBxT,EAAErD,UAAkB,OAAN6W,EAAa9W,OAAOoE,OAAO0S,IAAMszF,EAAGnqG,UAAY6W,EAAE7W,UAAW,IAAImqG,KAGvFpqG,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IACtD,IAAIsiO,EAAW1lO,EAAoB,IAC/BkyN,EAAWlyN,EAAoB,GAC/BymO,EAA0B,SAAUrT,GAEpC,SAASqT,IACL,OAAkB,OAAXrT,GAAmBA,EAAO3qN,MAAMjE,KAAM8B,YAAc9B,KAuB/D,OAzBA0uN,EAAUuT,EAAUrT,GAIpBqT,EAASrjO,MAAQ,SAAUyzN,GACvB,OAAO,GAEX4P,EAASnnO,UAAU6O,MAAQ,SAAUuxC,EAAMrf,GACvC,OAAI77B,KAAKqyN,UAAYn3K,GACjBl7C,KAAKqyN,QAAQl6G,wBAAwBj9D,GAAQggC,KAAK2mJ,+BAC3C1+M,KAAKW,IAAI+X,EAAQ,IAEpB,GAEZomM,EAASnnO,UAAU60H,SAAW,SAAUhmH,EAAO+3N,GAC3C,IAAI7lM,EAAS,GAAGxqB,QAAQrW,KAAKgF,KAAKuO,OAAO8jN,QAAQnvJ,WAAYljE,KAAKqyN,SAGlE,OAFI1oN,EAAQ,IACRkyB,GAAU,GACP,CAAC77B,KAAKuO,OAAO8jN,QAASx2L,IAEjComM,EAASnnO,UAAU8D,MAAQ,WACvB,OAAOorB,EAAK,IAAOhqB,KAAK09I,QAAQ+xE,UAAYzvN,KAAK09I,QAAQ9+I,MAAMoB,KAAKqyN,WAAY,EAAMroM,EACtF,IAAIA,GAERi4M,EAAS72J,MAAQsiJ,EAASE,MAAMsU,YACzBD,EA1BkB,CA2B3Bf,EAASrrK,SACXp6D,EAAQo6D,QAAUosK,GAKZ,SAAUvmO,EAAQD,EAASD,GAEjC,IAAIm0N,EAAQn0N,EAAoB,IAC5BikB,EAASjkB,EAAoB,GAG7Bw8C,EAAM,CACRixD,WAAY,CACV36D,QAAS,SAAU58B,EAAGC,EAAGwwN,GACN,iBAANzwN,IAAgBA,EAAI,IACd,iBAANC,IAAgBA,EAAI,IAC/B,IAAIs3F,EAAaxpF,GAAO,EAAM,GAAI9N,GASlC,IAAK,IAAIzS,KARJijO,IACHl5H,EAAapuG,OAAO0Z,KAAK00F,GAAY1jD,QAAO,SAAUkJ,EAAMvvD,GAI1D,OAHuB,MAAnB+pG,EAAW/pG,KACbuvD,EAAKvvD,GAAO+pG,EAAW/pG,IAElBuvD,IACN,KAEW/8C,OACC9T,IAAX8T,EAAExS,SAAiCtB,IAAX+T,EAAEzS,KAC5B+pG,EAAW/pG,GAAOwS,EAAExS,IAGxB,OAAOrE,OAAO0Z,KAAK00F,GAAYruG,OAAS,EAAIquG,OAAarrG,GAG3D0+B,KAAM,SAAS5qB,EAAGC,GACC,iBAAND,IAAgBA,EAAI,IACd,iBAANC,IAAgBA,EAAI,IAC/B,IAAIs3F,EAAapuG,OAAO0Z,KAAK7C,GAAGvN,OAAOtJ,OAAO0Z,KAAK5C,IAAI4zC,QAAO,SAAU0jD,EAAY/pG,GAIlF,OAHKywN,EAAMj+M,EAAExS,GAAMyS,EAAEzS,MACnB+pG,EAAW/pG,QAAkBtB,IAAX+T,EAAEzS,GAAqB,KAAOyS,EAAEzS,IAE7C+pG,IACN,IACH,OAAOpuG,OAAO0Z,KAAK00F,GAAYruG,OAAS,EAAIquG,OAAarrG,GAG3DkkE,UAAW,SAAUpwD,EAAGC,EAAGsU,GACzB,GAAiB,iBAANvU,EAAgB,OAAOC,EAClC,GAAiB,iBAANA,EAAX,CACA,IAAKsU,EAAU,OAAOtU,EACtB,IAAIs3F,EAAapuG,OAAO0Z,KAAK5C,GAAG4zC,QAAO,SAAU0jD,EAAY/pG,GAE3D,YADetB,IAAX8T,EAAExS,KAAoB+pG,EAAW/pG,GAAOyS,EAAEzS,IACvC+pG,IACN,IACH,OAAOpuG,OAAO0Z,KAAK00F,GAAYruG,OAAS,EAAIquG,OAAarrG,KAI7DkD,SAAU,SAAUmxE,GAClB,OAAO,IAAImwJ,EAASnwJ,IAGtBr3E,OAAQ,SAAUu3E,GAChB,MAA4B,iBAAjBA,EAAW,OACbA,EAAW,OACY,iBAAdA,EAAG49I,OACZ59I,EAAG49I,OAEkB,iBAAd59I,EAAG/sB,OAAsB+sB,EAAG/sB,OAAOxqD,OAAS,IAMhE,SAASwnO,EAASnwJ,GAChBjyE,KAAKiyE,IAAMA,EACXjyE,KAAK2J,MAAQ,EACb3J,KAAK67B,OAAS,EAGhBumM,EAAStnO,UAAU01N,QAAU,WAC3B,OAAOxwN,KAAK6wN,aAAe1W,KAG7BioB,EAAStnO,UAAUmI,KAAO,SAAUrI,GAC7BA,IAAQA,EAASu/M,KACtB,IAAIsW,EAASzwN,KAAKiyE,IAAIjyE,KAAK2J,OAC3B,GAAI8mN,EAAQ,CACV,IAAI50L,EAAS77B,KAAK67B,OACdq1L,EAAWl5K,EAAIp9C,OAAO61N,GAQ1B,GAPI71N,GAAUs2N,EAAWr1L,GACvBjhC,EAASs2N,EAAWr1L,EACpB77B,KAAK2J,OAAS,EACd3J,KAAK67B,OAAS,GAEd77B,KAAK67B,QAAUjhC,EAEe,iBAArB61N,EAAe,OACxB,MAAO,CAAE,OAAU71N,GAEnB,IAAIynO,EAAQ,GAYZ,OAXI5R,EAAOxnH,aACTo5H,EAAMp5H,WAAawnH,EAAOxnH,YAEC,iBAAlBwnH,EAAOV,OAChBsS,EAAMtS,OAASn1N,EACmB,iBAAlB61N,EAAOrrK,OACvBi9K,EAAMj9K,OAASqrK,EAAOrrK,OAAO9/C,OAAOu2B,EAAQjhC,GAG5CynO,EAAMj9K,OAASqrK,EAAOrrK,OAEjBi9K,EAGT,MAAO,CAAEtS,OAAQ5V,MAIrBioB,EAAStnO,UAAU02N,KAAO,WACxB,OAAOxxN,KAAKiyE,IAAIjyE,KAAK2J,QAGvBy4N,EAAStnO,UAAU+1N,WAAa,WAC9B,OAAI7wN,KAAKiyE,IAAIjyE,KAAK2J,OAETquC,EAAIp9C,OAAOoF,KAAKiyE,IAAIjyE,KAAK2J,QAAU3J,KAAK67B,OAExCs+K,KAIXioB,EAAStnO,UAAU81N,SAAW,WAC5B,OAAI5wN,KAAKiyE,IAAIjyE,KAAK2J,OAC8B,iBAAnC3J,KAAKiyE,IAAIjyE,KAAK2J,OAAe,OAC/B,SACyC,iBAAhC3J,KAAKiyE,IAAIjyE,KAAK2J,OAAOomN,OAC9B,SAEA,SAGJ,UAITr0N,EAAOD,QAAUu8C,GAKX,SAAUt8C,EAAQD,GAExB,IAAI8gC,EAAQ,WACZ,aAEA,SAAS+lM,EAAYvhO,EAAKzD,GACxB,OAAe,MAARA,GAAgByD,aAAezD,EAGxC,IAAIilO,EASAC,EAOA15H,EAfJ,IACEy5H,EAAY71L,IACZ,MAAM7yB,GAGN0oN,EAAY,aAId,IACEC,EAAYC,IACZ,MAAM5oN,GACN2oN,EAAY,aAId,IACE15H,EAAgB9sG,EAChB,MAAM6d,GACNivF,EAAgB,aAwBlB,SAASvsE,EAAMhuB,EAAQm0N,EAAUnhH,EAAOzmH,EAAW6nO,GACzB,iBAAbD,IACTnhH,EAAQmhH,EAASnhH,MACjBzmH,EAAY4nO,EAAS5nO,UACrB6nO,EAAuBD,EAASC,qBAChCD,EAAWA,EAASA,UAItB,IAAIE,EAAa,GACbC,EAAc,GAEdC,OAA6B,IAAV98B,EAoIvB,YAlIuB,IAAZ08B,IACTA,GAAW,QAEO,IAATnhH,IACTA,EAAQ44F,KAGV,SAAS4oB,EAAOx0N,EAAQgzG,GAEtB,GAAe,OAAXhzG,EACF,OAAO,KAET,GAAc,IAAVgzG,EACF,OAAOhzG,EAET,IAAI08E,EACA5rD,EACJ,GAAqB,iBAAV9wB,EACT,OAAOA,EAGT,GAAI+zN,EAAY/zN,EAAQg0N,GACtBt3I,EAAQ,IAAIs3I,OACP,GAAID,EAAY/zN,EAAQi0N,GAC7Bv3I,EAAQ,IAAIu3I,OACP,GAAIF,EAAY/zN,EAAQu6F,GAC7B7d,EAAQ,IAAI6d,GAAc,SAAU7sG,EAASC,GAC3CqS,EAAOpL,MAAK,SAASvE,GACnB3C,EAAQ8mO,EAAOnkO,EAAO2iH,EAAQ,OAC7B,SAAS/hH,GACVtD,EAAO6mO,EAAOvjO,EAAK+hH,EAAQ,eAG1B,GAAIhlF,EAAMymM,UAAUz0N,GACzB08E,EAAQ,QACH,GAAI1uD,EAAM0mM,WAAW10N,GAC1B08E,EAAQ,IAAI7hE,OAAO7a,EAAO81B,OAAQ6+L,EAAiB30N,IAC/CA,EAAOsZ,YAAWojE,EAAMpjE,UAAYtZ,EAAOsZ,gBAC1C,GAAI0U,EAAM4mM,SAAS50N,GACxB08E,EAAQ,IAAI5xE,KAAK9K,EAAOiT,eACnB,IAAIshN,GAAa98B,EAAOG,SAAS53L,GAGtC,OAFA08E,EAAQ,IAAI+6G,EAAOz3L,EAAO3T,QAC1B2T,EAAOkgD,KAAKw8B,GACLA,EACEq3I,EAAY/zN,EAAQxR,OAC7BkuF,EAAQpwF,OAAOoE,OAAOsP,QAEE,IAAbzT,GACTukC,EAAQxkC,OAAOoxC,eAAe19B,GAC9B08E,EAAQpwF,OAAOoE,OAAOogC,KAGtB4rD,EAAQpwF,OAAOoE,OAAOnE,GACtBukC,EAAQvkC,GAIZ,GAAI4nO,EAAU,CACZ,IAAI/4N,EAAQi5N,EAAWvxN,QAAQ9C,GAE/B,IAAc,GAAV5E,EACF,OAAOk5N,EAAYl5N,GAErBi5N,EAAW1nO,KAAKqT,GAChBs0N,EAAY3nO,KAAK+vF,GAiBnB,IAAK,IAAIvwF,KAdL4nO,EAAY/zN,EAAQg0N,IACtBh0N,EAAOpH,SAAQ,SAASvI,EAAOM,GAC7B,IAAIkkO,EAAWL,EAAO7jO,EAAKqiH,EAAQ,GAC/B8hH,EAAaN,EAAOnkO,EAAO2iH,EAAQ,GACvCt2B,EAAM9lE,IAAIi+M,EAAUC,MAGpBf,EAAY/zN,EAAQi0N,IACtBj0N,EAAOpH,SAAQ,SAASvI,GACtB,IAAI0kO,EAAaP,EAAOnkO,EAAO2iH,EAAQ,GACvCt2B,EAAMn6E,IAAIwyN,MAIA/0N,EAAQ,CACpB,IAAIkzD,EACApiC,IACFoiC,EAAQ5mE,OAAOw0D,yBAAyBhwB,EAAO3kC,IAG7C+mE,GAAsB,MAAbA,EAAMt8C,MAGnB8lE,EAAMvwF,GAAKqoO,EAAOx0N,EAAO7T,GAAI6mH,EAAQ,IAGvC,GAAI1mH,OAAO0oO,sBACT,KAAI/7K,EAAU3sD,OAAO0oO,sBAAsBh1N,GAC3C,IAAS7T,EAAI,EAAGA,EAAI8sD,EAAQ5sD,OAAQF,IAAK,CAGvC,IAAIyqD,EAASqC,EAAQ9sD,MACjB0G,EAAavG,OAAOw0D,yBAAyB9gD,EAAQ42C,KACtC/jD,EAAW7C,YAAeokO,KAG7C13I,EAAM9lC,GAAU49K,EAAOx0N,EAAO42C,GAASo8D,EAAQ,GAC1CngH,EAAW7C,YACd1D,OAAOyD,eAAe2sF,EAAO9lC,EAAQ,CACnC5mD,YAAY,MAMpB,GAAIokO,EACF,KAAIa,EAAmB3oO,OAAOo/B,oBAAoB1rB,GAClD,IAAS7T,EAAI,EAAGA,EAAI8oO,EAAiB5oO,OAAQF,IAAK,CAChD,IACI0G,EADAmpF,EAAei5I,EAAiB9oO,IAChC0G,EAAavG,OAAOw0D,yBAAyB9gD,EAAQg8E,KACvCnpF,EAAW7C,aAG7B0sF,EAAMV,GAAgBw4I,EAAOx0N,EAAOg8E,GAAeg3B,EAAQ,GAC3D1mH,OAAOyD,eAAe2sF,EAAOV,EAAc,CACzChsF,YAAY,MAKlB,OAAO0sF,EAGF83I,CAAOx0N,EAAQgzG,GAqBxB,SAASkiH,EAAWplO,GAClB,OAAOxD,OAAOC,UAAUkkB,SAAShkB,KAAKqD,GAmBxC,SAAS6kO,EAAiBQ,GACxB,IAAIviN,EAAQ,GAIZ,OAHIuiN,EAAG13J,SAAQ7qD,GAAS,KACpBuiN,EAAGC,aAAYxiN,GAAS,KACxBuiN,EAAGE,YAAWziN,GAAS,KACpBA,EAIT,OAxCAob,EAAMsnM,eAAiB,SAAwBt1N,GAC7C,GAAe,OAAXA,EACF,OAAO,KAET,IAAIrQ,EAAI,aAER,OADAA,EAAEpD,UAAYyT,EACP,IAAIrQ,GAQbq+B,EAAMknM,WAAaA,EAKnBlnM,EAAM4mM,SAHN,SAAkB9kO,GAChB,MAAoB,iBAANA,GAAoC,kBAAlBolO,EAAWplO,IAO7Ck+B,EAAMymM,UAHN,SAAmB3kO,GACjB,MAAoB,iBAANA,GAAoC,mBAAlBolO,EAAWplO,IAO7Ck+B,EAAM0mM,WAHN,SAAoB5kO,GAClB,MAAoB,iBAANA,GAAoC,oBAAlBolO,EAAWplO,IAW7Ck+B,EAAM2mM,iBAAmBA,EAElB3mM,EArPK,GAwPU,iBAAX7gC,GAAuBA,EAAOD,UACvCC,EAAOD,QAAU8gC,IAMb,SAAU7gC,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAAIu7D,EAAgb,SAAU96C,EAAK3kB,GAAK,GAAIgG,MAAMC,QAAQ0e,GAAQ,OAAOA,EAAY,GAAI3gB,OAAOoC,YAAYjG,OAAOwkB,GAAQ,OAAxf,SAAuBA,EAAK3kB,GAAK,IAAI0/D,EAAO,GAAQC,GAAK,EAAU94C,GAAK,EAAW+4C,OAAK18D,EAAW,IAAM,IAAK,IAAiC28D,EAA7B/uD,EAAK6T,EAAI3gB,OAAOoC,cAAmBu5D,GAAME,EAAK/uD,EAAGvI,QAAQu3D,QAAoBJ,EAAKl/D,KAAKq/D,EAAG37D,QAAYlE,GAAK0/D,EAAKx/D,SAAWF,GAA3D2/D,GAAK,IAAoE,MAAO76D,GAAO+hB,GAAK,EAAM+4C,EAAK96D,EAAO,QAAU,KAAW66D,GAAM7uD,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAI+V,EAAI,MAAM+4C,GAAQ,OAAOF,EAA6HK,CAAcp7C,EAAK3kB,GAAa,MAAM,IAAIod,UAAU,yDAEllB7W,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAEf07E,EAAO,SAASz+E,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,GAIrZmrI,EAAcF,EAFDt2N,EAAoB,IAMjC08N,EAAYpG,EAFDt2N,EAAoB,IAI/BqgO,EAASrgO,EAAoB,GAE7Bg/N,EAAU1I,EAAuB+J,GAIjC5J,EAAUH,EAFDt2N,EAAoB,KAM7BmgO,EAAS7J,EAFDt2N,EAAoB,KAM5BsoO,EAAchS,EAFDt2N,EAAoB,KAIrC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAQvF,SAASgjO,EAAOzU,GACd,OAAOA,aAAgBkL,EAAQ3kK,SAAWy5J,aAAgBuM,EAAOlK,WAGnE,IAAI3D,EAAS,SAAUgW,GAGrB,SAAShW,EAAOqE,EAAS7vN,IAb3B,SAAyBqlD,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAc5Go1C,CAAgBltD,KAAMguN,GAEtB,IAAIroN,EAdR,SAAoC8R,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAclN2c,CAA2B3X,MAAOguN,EAAOh2M,WAAand,OAAOoxC,eAAe+hL,IAAShzN,KAAKgF,KAAMqyN,IAa5G,OAXA1sN,EAAMmuN,QAAUtxN,EAAOsxN,QACnBpzN,MAAMC,QAAQ6B,EAAOyyD,aACvBtvD,EAAMsvD,UAAYzyD,EAAOyyD,UAAU1P,QAAO,SAAU0P,EAAWr1C,GAE7D,OADAq1C,EAAUr1C,IAAU,EACbq1C,IACN,KAGLtvD,EAAM0sN,QAAQniH,iBAAiB,mBAAmB,eAClDvqG,EAAM61N,WACN71N,EAAMisI,SACCjsI,EA0KT,OAnMF,SAAmBiS,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAO/dI,CAAU+1M,EAAQgW,GAqBlB/iO,EAAa+sN,EAAQ,CAAC,CACpB9uN,IAAK,aACLN,MAAO,WACLoB,KAAKikO,OAAQ,IAEd,CACD/kO,IAAK,WACLN,MAAO,WACLoB,KAAKikO,OAAQ,EACbjkO,KAAKw7N,aAEN,CACDt8N,IAAK,WACLN,MAAO,SAAkB+K,EAAO/O,GAC9B,IAAIspO,EAAQlkO,KAAKy0F,KAAK9qF,GAClBw6N,EAAShqK,EAAe+pK,EAAO,GAC/B3xN,EAAQ4xN,EAAO,GACftoM,EAASsoM,EAAO,GAEhBC,EAASpkO,KAAKy0F,KAAK9qF,EAAQ/O,GAE3Bg0E,EADSzU,EAAeiqK,EAAQ,GAClB,GAGlB,GADAnnJ,EAAK+wI,EAAOlzN,UAAUkd,WAAand,OAAOoxC,eAAe+hL,EAAOlzN,WAAY,WAAYkF,MAAMhF,KAAKgF,KAAM2J,EAAO/O,GACpG,MAARg0E,GAAgBr8D,IAAUq8D,GAAQ/yC,EAAS,EAAG,CAChD,GAAItpB,aAAiBspN,EAAOlK,YAAc/iJ,aAAgBitJ,EAAOlK,WAE/D,YADA3xN,KAAKw7N,WAGP,GAAIjpN,aAAiBopN,EAAO9lK,QAAS,CACnC,IAAIolK,EAAe1oN,EAAM0oN,aAAa1oN,EAAM3X,UAAU,GACtD,GAAIqgO,GAAgB,IAClB1oN,EAAQA,EAAM+Y,MAAM2vM,EAAe,MACrBrsJ,EAEZ,YADA5uE,KAAKw7N,gBAIJ,GAAI5sJ,aAAgB+sJ,EAAO9lK,QAAS,CACzC,IAAIwuK,EAAgBz1J,EAAKqsJ,aAAa,GAClCoJ,GAAiB,GACnBz1J,EAAKtjD,MAAM+4M,EAAgB,GAG/B,IAAI94J,EAAMqD,EAAKh/B,SAAS9xC,gBAAgBm0N,EAAQp8J,QAAU,KAAO+Y,EAAKh/B,SAAS9xC,KAC/EyU,EAAMkmN,aAAa7pJ,EAAMrD,GACzBh5D,EAAMu9B,SAER9vC,KAAKw7N,aAEN,CACDt8N,IAAK,SACLN,MAAO,WACL,IAAI69D,IAAU36D,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,KAAmBA,UAAU,GAE7E9B,KAAKqyN,QAAQ31N,aAAa,kBAAmB+/D,KAE9C,CACDv9D,IAAK,WACLN,MAAO,SAAkB+K,EAAO/O,EAAQglB,EAAQhhB,IACxB,MAAlBoB,KAAKi1D,WAAsBj1D,KAAKi1D,UAAUr1C,MAC9Cq9D,EAAK+wI,EAAOlzN,UAAUkd,WAAand,OAAOoxC,eAAe+hL,EAAOlzN,WAAY,WAAYkF,MAAMhF,KAAKgF,KAAM2J,EAAO/O,EAAQglB,EAAQhhB,GAChIoB,KAAKw7N,cAEN,CACDt8N,IAAK,WACLN,MAAO,SAAkB+K,EAAO/K,EAAO4zN,GACrC,GAAW,MAAPA,GAAiC,MAAlBxyN,KAAKi1D,WAAsBj1D,KAAKi1D,UAAUr2D,GAA7D,CACA,GAAI+K,GAAS3J,KAAKpF,SAChB,GAAW,MAAP43N,GAAoF,MAArER,EAAYn8J,QAAQ+oB,MAAMhgF,EAAOozN,EAAYn8J,QAAQ+3J,MAAMoB,OAAgB,CAC5F,IAAIM,EAAO0C,EAAYn8J,QAAQ52D,OAAOe,KAAK09I,QAAQo1E,cACnD9yN,KAAKjC,YAAYuxN,GACN,MAAPkD,GAAe5zN,EAAM6zN,SAAS,QAChC7zN,EAAQA,EAAMiB,MAAM,GAAI,IAE1ByvN,EAAKruJ,SAAS,EAAGriE,EAAO4zN,OACnB,CACL,IAAIiE,EAAQzE,EAAYn8J,QAAQ52D,OAAOL,EAAO4zN,GAC9CxyN,KAAKjC,YAAY04N,QAGnBx5I,EAAK+wI,EAAOlzN,UAAUkd,WAAand,OAAOoxC,eAAe+hL,EAAOlzN,WAAY,WAAYkF,MAAMhF,KAAKgF,KAAM2J,EAAO/K,EAAO4zN,GAEzHxyN,KAAKw7N,cAEN,CACDt8N,IAAK,eACLN,MAAO,SAAsB0wN,EAAM/jJ,GACjC,GAAI+jJ,EAAK5xE,QAAQtyE,QAAU4mJ,EAAYn8J,QAAQ+3J,MAAMsU,YAAa,CAChE,IAAIn0F,EAAUikF,EAAYn8J,QAAQ52D,OAAOe,KAAK09I,QAAQo1E,cACtD/kF,EAAQhwI,YAAYuxN,GACpBA,EAAOvhF,EAET9wD,EAAK+wI,EAAOlzN,UAAUkd,WAAand,OAAOoxC,eAAe+hL,EAAOlzN,WAAY,eAAgBkF,MAAMhF,KAAKgF,KAAMsvN,EAAM/jJ,KAEpH,CACDrsE,IAAK,OACLN,MAAO,SAAc+K,GACnB,OAAO3J,KAAK2B,KAAKgI,GAAOgrD,OAAS,CAAC,MAAO,KAE1C,CACDz1D,IAAK,OACLN,MAAO,SAAc+K,GACnB,OAAIA,IAAU3J,KAAKpF,SACVoF,KAAKy0F,KAAK9qF,EAAQ,GAEpB3J,KAAK86N,WAAWiJ,EAAQp6N,KAEhC,CACDzK,IAAK,QACLN,MAAO,WACL,IAAI+K,EAAQ7H,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,EAC5ElH,EAASkH,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAKiiD,OAAOsyK,UAEpFiO,EAAW,SAASA,EAAShV,EAAM3lN,EAAO/O,GAC5C,IAAI0+F,EAAQ,GACRgoI,EAAa1mO,EASjB,OARA00N,EAAK1/K,SAASyxL,UAAU13N,EAAO/O,GAAQ,SAAUqwF,EAAOthF,EAAO/O,GACzDmpO,EAAO94I,GACTqO,EAAMp+F,KAAK+vF,GACFA,aAAiB+mI,EAAYn8J,QAAQkwE,YAC9CzsC,EAAQA,EAAMn1F,OAAOmgO,EAASr5I,EAAOthF,EAAO23N,KAE9CA,GAAc1mO,KAET0+F,GAET,OAAOgrI,EAAStkO,KAAM2J,EAAO/O,KAE9B,CACDsE,IAAK,WACLN,MAAO,WACL,IAAI21N,EAAYzyN,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,GAChFqR,EAAUrR,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,IAE/D,IAAf9B,KAAKikO,QACThnJ,EAAK+wI,EAAOlzN,UAAUkd,WAAand,OAAOoxC,eAAe+hL,EAAOlzN,WAAY,WAAYkF,MAAMhF,KAAKgF,KAAMu0N,EAAWphN,GAChHohN,EAAU35N,OAAS,GACrBoF,KAAK8zN,QAAQ/8K,KAAKmhL,EAAUriK,QAAQt+C,OAAO6hN,gBAAiB7E,EAAWphN,MAG1E,CACDjU,IAAK,OACLN,MAAO,SAAc+K,GACnB,OAAOszE,EAAK+wI,EAAOlzN,UAAUkd,WAAand,OAAOoxC,eAAe+hL,EAAOlzN,WAAY,OAAQkF,MAAMhF,KAAKgF,KAAM2J,GAAO9J,MAAM,KAE1H,CACDX,IAAK,SACLN,MAAO,SAAgB21N,GACrB,IAAmB,IAAfv0N,KAAKikO,MAAT,CACA,IAAI5/L,EAAS6zL,EAAUriK,QAAQ3Y,QAAQs6K,KACd,iBAAdjD,IACTlwL,EAASkwL,GAEN7zN,MAAMC,QAAQ4zN,KACjBA,EAAYv0N,KAAKquD,SAASk2K,eAExBhQ,EAAU35N,OAAS,GACrBoF,KAAK8zN,QAAQ/8K,KAAKmhL,EAAUriK,QAAQt+C,OAAO4hN,qBAAsB90L,EAAQkwL,GAE3Et3I,EAAK+wI,EAAOlzN,UAAUkd,WAAand,OAAOoxC,eAAe+hL,EAAOlzN,WAAY,SAAUkF,MAAMhF,KAAKgF,KAAMu0N,EAAUpwN,OAAO,KACpHowN,EAAU35N,OAAS,GACrBoF,KAAK8zN,QAAQ/8K,KAAKmhL,EAAUriK,QAAQt+C,OAAO+8M,cAAejwL,EAAQkwL,QAKjEvG,EA7LI,CA8LXgE,EAAYn8J,QAAQm4J,QAEtBA,EAAOyB,SAAW,SAClBzB,EAAO1oI,UAAY,YACnB0oI,EAAOzzD,QAAU,MACjByzD,EAAO8E,aAAe,QACtB9E,EAAO+E,gBAAkB,CAACyH,EAAQ3kK,QAASgmK,EAAOlK,WAAYmS,EAAYjuK,SAE1Ep6D,EAAQo6D,QAAUm4J,GAIZ,SAAUtyN,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQ+oO,SAAW/oO,EAAQo6D,aAAUj4D,EAErC,IAAIiD,EAA4B,mBAAXnC,QAAoD,iBAApBA,OAAOoC,SAAwB,SAAUC,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAXrC,QAAyBqC,EAAIC,cAAgBtC,QAAUqC,IAAQrC,OAAO5D,UAAY,gBAAkBiG,GAElQo5D,EAAgb,SAAU96C,EAAK3kB,GAAK,GAAIgG,MAAMC,QAAQ0e,GAAQ,OAAOA,EAAY,GAAI3gB,OAAOoC,YAAYjG,OAAOwkB,GAAQ,OAAxf,SAAuBA,EAAK3kB,GAAK,IAAI0/D,EAAO,GAAQC,GAAK,EAAU94C,GAAK,EAAW+4C,OAAK18D,EAAW,IAAM,IAAK,IAAiC28D,EAA7B/uD,EAAK6T,EAAI3gB,OAAOoC,cAAmBu5D,GAAME,EAAK/uD,EAAGvI,QAAQu3D,QAAoBJ,EAAKl/D,KAAKq/D,EAAG37D,QAAYlE,GAAK0/D,EAAKx/D,SAAWF,GAA3D2/D,GAAK,IAAoE,MAAO76D,GAAO+hB,GAAK,EAAM+4C,EAAK96D,EAAO,QAAU,KAAW66D,GAAM7uD,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAI+V,EAAI,MAAM+4C,GAAQ,OAAOF,EAA6HK,CAAcp7C,EAAK3kB,GAAa,MAAM,IAAIod,UAAU,yDAEllB7W,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAIfu6N,EAAUhK,EAFDt2N,EAAoB,KAM7BugO,EAAcjK,EAFDt2N,EAAoB,KAMjCq2N,EAAWC,EAFDt2N,EAAoB,IAM9Bu2N,EAAeD,EAFDt2N,EAAoB,IAMlCkgO,EAAO5J,EAFDt2N,EAAoB,KAM1Bw2N,EAAcF,EAFDt2N,EAAoB,IAMjCipO,EAAU3S,EAFDt2N,EAAoB,IAM7B+3N,EAAWzB,EAFDt2N,EAAoB,KAM9B43N,EAAWtB,EAFDt2N,EAAoB,IAIlC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEvF,SAAS0yN,EAAgB1yN,EAAK7B,EAAKN,GAAiK,OAApJM,KAAO6B,EAAOlG,OAAOyD,eAAeyC,EAAK7B,EAAK,CAAEN,MAAOA,EAAOL,YAAY,EAAM8C,cAAc,EAAMC,UAAU,IAAkBP,EAAI7B,GAAON,EAAgBmC,EAQ3M,IAAI4yC,GAAQ,EAAI4/K,EAAS19J,SAAS,kBAE9B2uK,EAAW,OAAOpiO,KAAK+2C,UAAUurL,UAAY,UAAY,UAEzDC,EAAW,SAAUC,GAgBvB,SAASD,EAASpL,EAAO/1N,IA1B3B,SAAyBqkD,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCA2B5Go1C,CAAgBltD,KAAM2kO,GAEtB,IAAIh/N,EA3BR,SAAoC8R,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EA2BlN2c,CAA2B3X,MAAO2kO,EAAS3sN,WAAand,OAAOoxC,eAAe04L,IAAW3pO,KAAKgF,KAAMu5N,EAAO/1N,IAyBvH,OAvBAmC,EAAMk/N,SAAW,GACjBhqO,OAAO0Z,KAAK5O,EAAMnC,QAAQqhO,UAAU19N,SAAQ,SAAUzJ,IACvC,kBAATA,GAAsD,MAA1B67N,EAAMxF,OAAO9+J,WAAsBskK,EAAMxF,OAAO9+J,UAAgB,OAG5FtvD,EAAMnC,QAAQqhO,SAASnnO,IACzBiI,EAAMm/N,WAAWn/N,EAAMnC,QAAQqhO,SAASnnO,OAG5CiI,EAAMm/N,WAAW,CAAE5lO,IAAKylO,EAASpwN,KAAKwwN,MAAOl6G,SAAU,MAAQm6G,GAC/Dr/N,EAAMm/N,WAAW,CAAE5lO,IAAKylO,EAASpwN,KAAKwwN,MAAOr6G,QAAS,KAAMF,QAAS,KAAMH,OAAQ,OAAQ,eACvF,WAAWjoH,KAAK+2C,UAAUC,YAE5BzzC,EAAMm/N,WAAW,CAAE5lO,IAAKylO,EAASpwN,KAAK0wN,WAAa,CAAEjG,WAAW,GAAQkG,GACxEv/N,EAAMm/N,WAAW,CAAE5lO,IAAKylO,EAASpwN,KAAK68M,QAAU,CAAE4N,WAAW,GAAQmG,KAErEx/N,EAAMm/N,WAAW,CAAE5lO,IAAKylO,EAASpwN,KAAK0wN,WAAa,CAAEjG,WAAW,EAAMr9L,OAAQ,QAAUujM,GACxFv/N,EAAMm/N,WAAW,CAAE5lO,IAAKylO,EAASpwN,KAAK68M,QAAU,CAAE4N,WAAW,EAAMp9L,OAAQ,QAAUujM,IAEvFx/N,EAAMm/N,WAAW,CAAE5lO,IAAKylO,EAASpwN,KAAK0wN,WAAa,CAAEjG,WAAW,GAASoG,GACzEz/N,EAAMm/N,WAAW,CAAE5lO,IAAKylO,EAASpwN,KAAK68M,QAAU,CAAE4N,WAAW,GAASoG,GACtEz/N,EAAMm/N,WAAW,CAAE5lO,IAAKylO,EAASpwN,KAAK0wN,UAAW56G,OAAQ,KAAMG,QAAS,KAAME,QAAS,KAAMG,SAAU,MAAQ,CAAEm0G,WAAW,EAAMnjM,OAAQ,GAAKqpM,GAC/Iv/N,EAAM0/N,SACC1/N,EA+FT,OAjJF,SAAmBiS,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAO/dI,CAAU0sN,EAAUC,GAEpB3jO,EAAa0jO,EAAU,KAAM,CAAC,CAC5BzlO,IAAK,QACLN,MAAO,SAAe0gI,EAAKnoF,GAEzB,OADAA,EAAUmuL,EAAUnuL,IAChB,CAAC,SAAU,UAAW,UAAW,YAAYt4B,MAAK,SAAU3f,GAC9D,QAASi4C,EAAQj4C,KAASogI,EAAIpgI,IAAyB,OAAjBi4C,EAAQj4C,OAIzCi4C,EAAQj4C,OAASogI,EAAI1T,OAAS0T,EAAIvU,aAmC7C9pH,EAAa0jO,EAAU,CAAC,CACtBzlO,IAAK,aACLN,MAAO,SAAoBM,GACzB,IAAIiU,EAAUrR,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,GAC9EiP,EAAUjP,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,GAE9Eq1C,EAAUmuL,EAAUpmO,GACxB,GAAe,MAAXi4C,GAAkC,MAAfA,EAAQj4C,IAC7B,OAAOy0C,EAAMzvB,KAAK,4CAA6CizB,GAE1C,mBAAZhkC,IACTA,EAAU,CAAEpC,QAASoC,IAEA,mBAAZpC,IACTA,EAAU,CAAEA,QAASA,IAEvBomC,GAAU,EAAI06K,EAASh8J,SAAS1e,EAAShkC,EAASpC,GAClD/Q,KAAK6kO,SAAS1tL,EAAQj4C,KAAOc,KAAK6kO,SAAS1tL,EAAQj4C,MAAQ,GAC3Dc,KAAK6kO,SAAS1tL,EAAQj4C,KAAKhE,KAAKi8C,KAEjC,CACDj4C,IAAK,SACLN,MAAO,WACL,IAAIuH,EAASnG,KAEbA,KAAKu5N,MAAMjhJ,KAAK43B,iBAAiB,WAAW,SAAUovB,GACpD,IAAIA,EAAItV,iBAAR,CACA,IAAI4B,EAAQ0T,EAAI1T,OAAS0T,EAAIvU,QACzB85G,GAAY1+N,EAAO0+N,SAASj5G,IAAU,IAAI/mH,QAAO,SAAUsyC,GAC7D,OAAOwtL,EAASp9M,MAAM+3G,EAAKnoF,MAE7B,GAAwB,IAApB0tL,EAASjqO,OAAb,CACA,IAAI05I,EAAQnuI,EAAOozN,MAAMnE,eACzB,GAAa,MAAT9gF,GAAkBnuI,EAAOozN,MAAM1+G,WAAnC,CAEA,IAAI0qH,EAAiBp/N,EAAOozN,MAAMiM,QAAQlxF,EAAM3qI,OAC5C87N,EAAkBtrK,EAAeorK,EAAgB,GACjD9wI,EAAOgxI,EAAgB,GACvB5pM,EAAS4pM,EAAgB,GAEzBC,EAAiBv/N,EAAOozN,MAAMoM,QAAQrxF,EAAM3qI,OAC5Ci8N,EAAkBzrK,EAAeurK,EAAgB,GACjDG,EAAYD,EAAgB,GAC5BE,EAAcF,EAAgB,GAE9Br3K,EAAwB,IAAjB+lF,EAAM15I,OAAe,CAACirO,EAAWC,GAAe3/N,EAAOozN,MAAMoM,QAAQrxF,EAAM3qI,MAAQ2qI,EAAM15I,QAChGmrO,EAAQ5rK,EAAe5L,EAAM,GAC7By3K,EAAUD,EAAM,GAChBE,EAAYF,EAAM,GAElBG,EAAaL,aAAqB7T,EAAYn8J,QAAQs4J,KAAO0X,EAAUjnO,QAAQiB,MAAM,EAAGimO,GAAe,GACvGK,EAAaH,aAAmBhU,EAAYn8J,QAAQs4J,KAAO6X,EAAQpnO,QAAQiB,MAAMomO,GAAa,GAC9FG,EAAa,CACfpH,UAA4B,IAAjB1qF,EAAM15I,OACjBulB,MAAwB,IAAjBm0H,EAAM15I,QAAgB65F,EAAK75F,UAAY,EAC9CglB,OAAQzZ,EAAOozN,MAAMnD,UAAU9hF,GAC/Bz4G,OAAQA,EACR8F,OAAQukM,EACRtkM,OAAQukM,GAEMtB,EAAShmN,MAAK,SAAUs4B,GACtC,GAAyB,MAArBA,EAAQ6nL,WAAqB7nL,EAAQ6nL,YAAcoH,EAAWpH,UAAW,OAAO,EACpF,GAAqB,MAAjB7nL,EAAQh3B,OAAiBg3B,EAAQh3B,QAAUimN,EAAWjmN,MAAO,OAAO,EACxE,GAAsB,MAAlBg3B,EAAQtb,QAAkBsb,EAAQtb,SAAWuqM,EAAWvqM,OAAQ,OAAO,EAC3E,GAAIn7B,MAAMC,QAAQw2C,EAAQv3B,SAExB,GAAIu3B,EAAQv3B,OAAO05D,OAAM,SAAU57E,GACjC,OAAkC,MAA3B0oO,EAAWxmN,OAAOliB,MAEzB,OAAO,OAEJ,GAAgC,WAA5BmD,EAAQs2C,EAAQv3B,UAEpB/kB,OAAO0Z,KAAK4iC,EAAQv3B,QAAQ05D,OAAM,SAAU57E,GAC/C,OAA6B,IAAzBy5C,EAAQv3B,OAAOliB,GAAkD,MAA3B0oO,EAAWxmN,OAAOliB,IAC/B,IAAzBy5C,EAAQv3B,OAAOliB,GAAmD,MAA3B0oO,EAAWxmN,OAAOliB,IACtD,EAAIq+N,EAAYlmK,SAAS1e,EAAQv3B,OAAOliB,GAAO0oO,EAAWxmN,OAAOliB,OAExE,OAAO,EAGX,QAAsB,MAAlBy5C,EAAQxV,SAAmBwV,EAAQxV,OAAOv/B,KAAKgkO,EAAWzkM,SACxC,MAAlBwV,EAAQvV,SAAmBuV,EAAQvV,OAAOx/B,KAAKgkO,EAAWxkM,UACH,IAApDuV,EAAQpmC,QAAQ/V,KAAKmL,EAAQmuI,EAAO8xF,QAG3C9mG,EAAInW,2BAMLw7G,EA3IM,CA4IbvR,EAASv9J,SAqLX,SAASwwK,EAAsBnnO,EAAK2rH,GAClC,IAAIy7G,EAEAC,EAAQrnO,IAAQylO,EAASpwN,KAAKiyN,KAAO,SAAW,SACpD,OAIG/S,EAJI6S,EAAQ,CACbpnO,IAAKA,EACL2rH,SAAUA,EACVR,OAAQ,MACgBk8G,EAAO,MAAO9S,EAAgB6S,EAAO,WAAW,SAAiBhyF,GACzF,IAAI3qI,EAAQ2qI,EAAM3qI,MACdzK,IAAQylO,EAASpwN,KAAKkyN,QACxB98N,GAAS2qI,EAAM15I,OAAS,GAG1B,IAAI8rO,EAAkB1mO,KAAKu5N,MAAMoM,QAAQh8N,GAIzC,QAHsBwwD,EAAeusK,EAAiB,GAC3B,aAEL1U,EAAYn8J,QAAQk4J,QACtC7uN,IAAQylO,EAASpwN,KAAKiyN,KACpB37G,EACF7qH,KAAKu5N,MAAMhE,aAAajhF,EAAM3qI,MAAQ,EAAG2qI,EAAM15I,OAAS,EAAG6pO,EAAQ5uK,QAAQ3Y,QAAQs6K,MAEnFx3N,KAAKu5N,MAAMhE,aAAajhF,EAAM3qI,MAAQ,EAAG86N,EAAQ5uK,QAAQ3Y,QAAQs6K,MAG/D3sG,EACF7qH,KAAKu5N,MAAMhE,aAAajhF,EAAM3qI,MAAO2qI,EAAM15I,OAAS,EAAG6pO,EAAQ5uK,QAAQ3Y,QAAQs6K,MAE/Ex3N,KAAKu5N,MAAMhE,aAAajhF,EAAM3qI,MAAQ2qI,EAAM15I,OAAS,EAAG6pO,EAAQ5uK,QAAQ3Y,QAAQs6K,MAG7E,OACL8O,EAGN,SAASpB,EAAgB5wF,EAAOnhI,GAC9B,KAAoB,IAAhBmhI,EAAM3qI,OAAe3J,KAAKu5N,MAAMvD,aAAe,GAAnD,CAEA,IAAI2Q,EAAmB3mO,KAAKu5N,MAAMiM,QAAQlxF,EAAM3qI,OAE5C8qF,EADmBt6B,EAAewsK,EAAkB,GAC5B,GAExBnnM,EAAU,GACd,GAAuB,IAAnBrsB,EAAQ0oB,OAAc,CACxB,IAAI+qM,EAAmB5mO,KAAKu5N,MAAMiM,QAAQlxF,EAAM3qI,MAAQ,GAEpD+C,EADmBytD,EAAeysK,EAAkB,GAC5B,GAE5B,GAAY,MAARl6N,GAAgBA,EAAK9R,SAAW,EAAG,CACrC,IAAIisO,EAAapyI,EAAKj1D,UAClBsnM,EAAc9mO,KAAKu5N,MAAMnD,UAAU9hF,EAAM3qI,MAAQ,EAAG,GACxD61B,EAAUk8L,EAAK7lK,QAAQozC,WAAW3sE,KAAKuqM,EAAYC,IAAgB,IAIvE,IAAIlsO,EAAS,kCAAkCwH,KAAK+Q,EAAQwuB,QAAU,EAAI,EAC1E3hC,KAAKu5N,MAAMtE,WAAW3gF,EAAM3qI,MAAQ/O,EAAQA,EAAQ6pO,EAAQ5uK,QAAQ3Y,QAAQs6K,MACxE38N,OAAO0Z,KAAKirB,GAAS5kC,OAAS,GAChCoF,KAAKu5N,MAAMlE,WAAW/gF,EAAM3qI,MAAQ/O,EAAQA,EAAQ4kC,EAASilM,EAAQ5uK,QAAQ3Y,QAAQs6K,MAEvFx3N,KAAKu5N,MAAM3vG,SAGb,SAASu7G,EAAa7wF,EAAOnhI,GAE3B,IAAIvY,EAAS,kCAAkCwH,KAAK+Q,EAAQyuB,QAAU,EAAI,EAC1E,KAAI0yG,EAAM3qI,OAAS3J,KAAKu5N,MAAMvD,YAAcp7N,GAA5C,CACA,IAAI4kC,EAAU,GACVunM,EAAa,EAEbC,EAAmBhnO,KAAKu5N,MAAMiM,QAAQlxF,EAAM3qI,OAE5C8qF,EADmBt6B,EAAe6sK,EAAkB,GAC5B,GAE5B,GAAI7zN,EAAQ0oB,QAAU44D,EAAK75F,SAAW,EAAG,CACvC,IAAIqsO,EAAmBjnO,KAAKu5N,MAAMiM,QAAQlxF,EAAM3qI,MAAQ,GAEpD1G,EADmBk3D,EAAe8sK,EAAkB,GAC5B,GAE5B,GAAIhkO,EAAM,CACR,IAAI4jO,EAAapyI,EAAKj1D,UAClB0nM,EAAclnO,KAAKu5N,MAAMnD,UAAU9hF,EAAM3qI,MAAO,GACpD61B,EAAUk8L,EAAK7lK,QAAQozC,WAAW3sE,KAAKuqM,EAAYK,IAAgB,GACnEH,EAAa9jO,EAAKrI,UAGtBoF,KAAKu5N,MAAMtE,WAAW3gF,EAAM3qI,MAAO/O,EAAQ6pO,EAAQ5uK,QAAQ3Y,QAAQs6K,MAC/D38N,OAAO0Z,KAAKirB,GAAS5kC,OAAS,GAChCoF,KAAKu5N,MAAMlE,WAAW/gF,EAAM3qI,MAAQo9N,EAAa,EAAGnsO,EAAQ4kC,EAASilM,EAAQ5uK,QAAQ3Y,QAAQs6K,OAIjG,SAAS4N,EAAkB9wF,GACzB,IAAIh7C,EAAQt5F,KAAKu5N,MAAM+K,SAAShwF,GAC5B90G,EAAU,GACd,GAAI85D,EAAM1+F,OAAS,EAAG,CACpB,IAAIusO,EAAe7tI,EAAM,GAAG95D,UACxB4nM,EAAc9tI,EAAMA,EAAM1+F,OAAS,GAAG4kC,UAC1CA,EAAUk8L,EAAK7lK,QAAQozC,WAAW3sE,KAAK8qM,EAAaD,IAAiB,GAEvEnnO,KAAKu5N,MAAMtE,WAAW3gF,EAAOmwF,EAAQ5uK,QAAQ3Y,QAAQs6K,MACjD38N,OAAO0Z,KAAKirB,GAAS5kC,OAAS,GAChCoF,KAAKu5N,MAAMlE,WAAW/gF,EAAM3qI,MAAO,EAAG61B,EAASilM,EAAQ5uK,QAAQ3Y,QAAQs6K,MAEzEx3N,KAAKu5N,MAAMhE,aAAajhF,EAAM3qI,MAAO86N,EAAQ5uK,QAAQ3Y,QAAQs4K,QAC7Dx1N,KAAKu5N,MAAM3vG,QAGb,SAASo7G,EAAY1wF,EAAOnhI,GAC1B,IAAI7E,EAAStO,KAETs0I,EAAM15I,OAAS,GACjBoF,KAAKu5N,MAAMxF,OAAOgH,SAASzmF,EAAM3qI,MAAO2qI,EAAM15I,QAEhD,IAAIysO,EAAcxsO,OAAO0Z,KAAKpB,EAAQyM,QAAQ2lC,QAAO,SAAU8hL,EAAaznN,GAI1E,OAHIoyM,EAAYn8J,QAAQ+oB,MAAMh/D,EAAQoyM,EAAYn8J,QAAQ+3J,MAAMoB,SAAWtuN,MAAMC,QAAQwS,EAAQyM,OAAOA,MACtGynN,EAAYznN,GAAUzM,EAAQyM,OAAOA,IAEhCynN,IACN,IACHrnO,KAAKu5N,MAAM1C,WAAWviF,EAAM3qI,MAAO,KAAM09N,EAAa5C,EAAQ5uK,QAAQ3Y,QAAQs6K,MAG9Ex3N,KAAKu5N,MAAMhE,aAAajhF,EAAM3qI,MAAQ,EAAG86N,EAAQ5uK,QAAQ3Y,QAAQs4K,QACjEx1N,KAAKu5N,MAAM3vG,QACX/uH,OAAO0Z,KAAKpB,EAAQyM,QAAQzY,SAAQ,SAAUzJ,GACnB,MAArB2pO,EAAY3pO,KACZgD,MAAMC,QAAQwS,EAAQyM,OAAOliB,KACpB,SAATA,GACJ4Q,EAAOirN,MAAM35M,OAAOliB,EAAMyV,EAAQyM,OAAOliB,GAAO+mO,EAAQ5uK,QAAQ3Y,QAAQs6K,UAI5E,SAAS8P,EAAqBjuI,GAC5B,MAAO,CACLn6F,IAAKylO,EAASpwN,KAAKknN,IACnB5wG,UAAWxxB,EACXz5E,OAAQ,CAAE,cAAc,GACxB7O,QAAS,SAAiBujI,GACxB,IAAIomF,EAAY1I,EAAYn8J,QAAQ+oB,MAAM,cACtCj1E,EAAQ2qI,EAAM3qI,MACd/O,EAAS05I,EAAM15I,OAEf2sO,EAAwBvnO,KAAKu5N,MAAMxF,OAAO+G,WAAWJ,EAAW/wN,GAChE69N,EAAyBrtK,EAAeotK,EAAuB,GAC/D9uL,EAAQ+uL,EAAuB,GAC/B3rM,EAAS2rM,EAAuB,GAEpC,GAAa,MAAT/uL,EAAJ,CACA,IAAIgvL,EAAcznO,KAAKu5N,MAAMmO,SAASjvL,GAClC6M,EAAQ7M,EAAMwiL,aAAap/L,GAAQ,GAAQ,EAC3Cy0C,EAAM73B,EAAMwiL,aAAawM,EAAc5rM,EAASjhC,GAChD0+F,EAAQ7gD,EAAM45K,QAAQl5G,YAAYt5G,MAAMylD,EAAOgrB,GAAKhlD,MAAM,MAC9DuQ,EAAS,EACTy9D,EAAMnyF,SAAQ,SAAUstF,EAAM/5F,GACxB2+F,GACF5gD,EAAMwoB,SAAS3b,EAAQzpB,EAAQ6+L,EAAUe,KACzC5/L,GAAU6+L,EAAUe,IAAI7gO,OACd,IAANF,EACFiP,GAAS+wN,EAAUe,IAAI7gO,OAEvBA,GAAU8/N,EAAUe,IAAI7gO,QAEjB65F,EAAKthB,WAAWunJ,EAAUe,OACnChjL,EAAMsiL,SAASz1K,EAAQzpB,EAAQ6+L,EAAUe,IAAI7gO,QAC7CihC,GAAU6+L,EAAUe,IAAI7gO,OACd,IAANF,EACFiP,GAAS+wN,EAAUe,IAAI7gO,OAEvBA,GAAU8/N,EAAUe,IAAI7gO,QAG5BihC,GAAU44D,EAAK75F,OAAS,KAE1BoF,KAAKu5N,MAAM78M,OAAO+nN,EAAQ5uK,QAAQ3Y,QAAQs6K,MAC1Cx3N,KAAKu5N,MAAMhE,aAAa5rN,EAAO/O,EAAQ6pO,EAAQ5uK,QAAQ3Y,QAAQs4K,WAKrE,SAASmS,EAAkB/nN,GACzB,MAAO,CACL1gB,IAAK0gB,EAAO,GAAGmkB,cACf6jM,UAAU,EACV72N,QAAS,SAAiBujI,EAAOnhI,GAC/BnT,KAAKu5N,MAAM35M,OAAOA,GAASzM,EAAQyM,OAAOA,GAAS6kN,EAAQ5uK,QAAQ3Y,QAAQs6K,QAKjF,SAAS8N,EAAUnuL,GACjB,GAAuB,iBAAZA,GAA2C,iBAAZA,EACxC,OAAOmuL,EAAU,CAAEpmO,IAAKi4C,IAK1B,GAH0E,iBAAlD,IAAZA,EAA0B,YAAct2C,EAAQs2C,MAC1DA,GAAU,EAAI2kL,EAAQjmK,SAAS1e,GAAS,IAEf,iBAAhBA,EAAQj4C,IACjB,GAAgD,MAA5CylO,EAASpwN,KAAK4iC,EAAQj4C,IAAI6kC,eAC5BoT,EAAQj4C,IAAMylO,EAASpwN,KAAK4iC,EAAQj4C,IAAI6kC,mBACnC,IAA2B,IAAvBoT,EAAQj4C,IAAItE,OAGrB,OAAO,KAFPu8C,EAAQj4C,IAAMi4C,EAAQj4C,IAAI6kC,cAAcoa,WAAW,GASvD,OAJIhH,EAAQywL,WACVzwL,EAAQqtL,GAAYrtL,EAAQywL,gBACrBzwL,EAAQywL,UAEVzwL,EAtYTwtL,EAASpwN,KAAO,CACd0wN,UAAW,EACXxJ,IAAK,EACLsJ,MAAO,GACP8C,OAAQ,GACRrB,KAAM,GACNsB,GAAI,GACJrB,MAAO,GACPsB,KAAM,GACN3W,OAAQ,IAGVuT,EAASlN,SAAW,CAClBoN,SAAU,CACR,KAAQ8C,EAAkB,QAC1B,OAAUA,EAAkB,UAC5B,UAAaA,EAAkB,aAC/B,OAAU,CAERzoO,IAAKylO,EAASpwN,KAAKknN,IACnB77M,OAAQ,CAAC,aAAc,SAAU,QACjC7O,QAAS,SAAiBujI,EAAOnhI,GAC/B,GAAIA,EAAQ6rN,WAAgC,IAAnB7rN,EAAQ0oB,OAAc,OAAO,EACtD77B,KAAKu5N,MAAM35M,OAAO,SAAU,KAAM6kN,EAAQ5uK,QAAQ3Y,QAAQs6K,QAG9D,QAAW,CACTt4N,IAAKylO,EAASpwN,KAAKknN,IACnB5wG,UAAU,EACVjrG,OAAQ,CAAC,aAAc,SAAU,QAEjC7O,QAAS,SAAiBujI,EAAOnhI,GAC/B,GAAIA,EAAQ6rN,WAAgC,IAAnB7rN,EAAQ0oB,OAAc,OAAO,EACtD77B,KAAKu5N,MAAM35M,OAAO,SAAU,KAAM6kN,EAAQ5uK,QAAQ3Y,QAAQs6K,QAG9D,oBAAqB,CACnBt4N,IAAKylO,EAASpwN,KAAK0wN,UACnBjG,WAAW,EACXn0G,SAAU,KACVH,QAAS,KACTF,QAAS,KACTH,OAAQ,KACRzqG,OAAQ,CAAC,SAAU,QACnBic,OAAQ,EACR9qB,QAAS,SAAiBujI,EAAOnhI,GACF,MAAzBA,EAAQyM,OAAOy5E,OACjBr5F,KAAKu5N,MAAM35M,OAAO,SAAU,KAAM6kN,EAAQ5uK,QAAQ3Y,QAAQs6K,MAC1B,MAAvBrkN,EAAQyM,OAAO9L,MACxB9T,KAAKu5N,MAAM35M,OAAO,QAAQ,EAAO6kN,EAAQ5uK,QAAQ3Y,QAAQs6K,QAI/D,oBAAqB8P,GAAqB,GAC1C,qBAAsBA,GAAqB,GAC3C,aAAc,CACZpoO,IAAKylO,EAASpwN,KAAKknN,IACnB5wG,UAAU,EACVm0G,WAAW,EACXr9L,OAAQ,MACR5wB,QAAS,SAAiBujI,GACxBt0I,KAAKu5N,MAAMtE,WAAW3gF,EAAM3qI,MAAQ,EAAG,EAAG86N,EAAQ5uK,QAAQ3Y,QAAQs6K,QAGtE,IAAO,CACLt4N,IAAKylO,EAASpwN,KAAKknN,IACnB1qN,QAAS,SAAiBujI,GACxBt0I,KAAKu5N,MAAM9xN,QAAQugO,SACnB,IAAI32G,GAAQ,IAAI0gG,EAAal8J,SAAUk6J,OAAOz7E,EAAM3qI,OAAOmT,OAAOw3H,EAAM15I,QAAQwqD,OAAO,MACvFplD,KAAKu5N,MAAM0O,eAAe52G,EAAOozG,EAAQ5uK,QAAQ3Y,QAAQs6K,MACzDx3N,KAAKu5N,MAAM9xN,QAAQugO,SACnBhoO,KAAKu5N,MAAMhE,aAAajhF,EAAM3qI,MAAQ,EAAG86N,EAAQ5uK,QAAQ3Y,QAAQs4K,UAGrE,mBAAoB,CAClBt2N,IAAKylO,EAASpwN,KAAKwwN,MACnB/F,WAAW,EACXp/M,OAAQ,CAAC,QACTO,OAAO,EACPpP,QAAS,SAAiBujI,EAAOnhI,GAC/BnT,KAAKu5N,MAAM35M,OAAO,QAAQ,EAAO6kN,EAAQ5uK,QAAQ3Y,QAAQs6K,MACrDrkN,EAAQyM,OAAOy5E,QACjBr5F,KAAKu5N,MAAM35M,OAAO,UAAU,EAAO6kN,EAAQ5uK,QAAQ3Y,QAAQs6K,QAIjE,kBAAmB,CACjBt4N,IAAKylO,EAASpwN,KAAKwwN,MACnB/F,WAAW,EACXp/M,OAAQ,CAAE9L,KAAM,WAChB/C,QAAS,SAAiBujI,GACxB,IAAI4zF,EAAkBloO,KAAKu5N,MAAMiM,QAAQlxF,EAAM3qI,OAC3Cw+N,EAAkBhuK,EAAe+tK,EAAiB,GAClDzzI,EAAO0zI,EAAgB,GACvBtsM,EAASssM,EAAgB,GAEzB3oM,GAAU,EAAIqyL,EAASh8J,SAAS,GAAI4+B,EAAKj1D,UAAW,CAAE1rB,KAAM,YAC5Du9G,GAAQ,IAAI0gG,EAAal8J,SAAUk6J,OAAOz7E,EAAM3qI,OAAOy7C,OAAO,KAAM5lB,GAASuwL,OAAOt7H,EAAK75F,SAAWihC,EAAS,GAAGk0L,OAAO,EAAG,CAAEj8M,KAAM,cACtI9T,KAAKu5N,MAAM0O,eAAe52G,EAAOozG,EAAQ5uK,QAAQ3Y,QAAQs6K,MACzDx3N,KAAKu5N,MAAMhE,aAAajhF,EAAM3qI,MAAQ,EAAG86N,EAAQ5uK,QAAQ3Y,QAAQs4K,QACjEx1N,KAAKu5N,MAAMrE,mBAGf,eAAgB,CACdh2N,IAAKylO,EAASpwN,KAAKwwN,MACnB/F,WAAW,EACXp/M,OAAQ,CAAC,UACTgiB,OAAQ,KACR7wB,QAAS,SAAiBujI,EAAOnhI,GAC/B,IAAIi1N,EAAkBpoO,KAAKu5N,MAAMiM,QAAQlxF,EAAM3qI,OAC3C0+N,EAAkBluK,EAAeiuK,EAAiB,GAClD3zI,EAAO4zI,EAAgB,GACvBxsM,EAASwsM,EAAgB,GAEzBh3G,GAAQ,IAAI0gG,EAAal8J,SAAUk6J,OAAOz7E,EAAM3qI,OAAOy7C,OAAO,KAAMjyC,EAAQyM,QAAQmwM,OAAOt7H,EAAK75F,SAAWihC,EAAS,GAAGk0L,OAAO,EAAG,CAAEz4C,OAAQ,OAC/It3K,KAAKu5N,MAAM0O,eAAe52G,EAAOozG,EAAQ5uK,QAAQ3Y,QAAQs6K,MACzDx3N,KAAKu5N,MAAMhE,aAAajhF,EAAM3qI,MAAQ,EAAG86N,EAAQ5uK,QAAQ3Y,QAAQs4K,QACjEx1N,KAAKu5N,MAAMrE,mBAGf,gBAAiB,CACfh2N,IAAK,IACL8/N,WAAW,EACXp/M,OAAQ,CAAE9L,MAAM,GAChB6tB,OAAQ,kCACR5wB,QAAS,SAAiBujI,EAAOnhI,GAC/B,IAAIvY,EAASuY,EAAQwuB,OAAO/mC,OAExB0tO,EAAkBtoO,KAAKu5N,MAAMiM,QAAQlxF,EAAM3qI,OAC3C4+N,EAAkBpuK,EAAemuK,EAAiB,GAClD7zI,EAAO8zI,EAAgB,GACvB1sM,EAAS0sM,EAAgB,GAE7B,GAAI1sM,EAASjhC,EAAQ,OAAO,EAC5B,IAAIgE,OAAQ,EACZ,OAAQuU,EAAQwuB,OAAOglB,QACrB,IAAK,KAAK,IAAK,MACb/nD,EAAQ,YACR,MACF,IAAK,MACHA,EAAQ,UACR,MACF,IAAK,IAAI,IAAK,IACZA,EAAQ,SACR,MACF,QACEA,EAAQ,UAEZoB,KAAKu5N,MAAM1C,WAAWviF,EAAM3qI,MAAO,IAAK86N,EAAQ5uK,QAAQ3Y,QAAQs6K,MAChEx3N,KAAKu5N,MAAM9xN,QAAQugO,SACnB,IAAI32G,GAAQ,IAAI0gG,EAAal8J,SAAUk6J,OAAOz7E,EAAM3qI,MAAQkyB,GAAQ/e,OAAOliB,EAAS,GAAGm1N,OAAOt7H,EAAK75F,SAAW,EAAIihC,GAAQk0L,OAAO,EAAG,CAAEj8M,KAAMlV,IAC5IoB,KAAKu5N,MAAM0O,eAAe52G,EAAOozG,EAAQ5uK,QAAQ3Y,QAAQs6K,MACzDx3N,KAAKu5N,MAAM9xN,QAAQugO,SACnBhoO,KAAKu5N,MAAMhE,aAAajhF,EAAM3qI,MAAQ/O,EAAQ6pO,EAAQ5uK,QAAQ3Y,QAAQs4K,UAG1E,YAAa,CACXt2N,IAAKylO,EAASpwN,KAAKwwN,MACnB/F,WAAW,EACXp/M,OAAQ,CAAC,cACT+hB,OAAQ,QACRC,OAAQ,QACR7wB,QAAS,SAAiBujI,GACxB,IAAIk0F,EAAkBxoO,KAAKu5N,MAAMiM,QAAQlxF,EAAM3qI,OAC3C8+N,EAAmBtuK,EAAequK,EAAiB,GACnD/zI,EAAOg0I,EAAiB,GACxB5sM,EAAS4sM,EAAiB,GAE1Bp3G,GAAQ,IAAI0gG,EAAal8J,SAAUk6J,OAAOz7E,EAAM3qI,MAAQ8qF,EAAK75F,SAAWihC,EAAS,GAAGk0L,OAAO,EAAG,CAAE,aAAc,OAAQjzM,OAAO,GACjI9c,KAAKu5N,MAAM0O,eAAe52G,EAAOozG,EAAQ5uK,QAAQ3Y,QAAQs6K,QAG7D,aAAc6O,EAAsB1B,EAASpwN,KAAKiyN,MAAM,GACxD,mBAAoBH,EAAsB1B,EAASpwN,KAAKiyN,MAAM,GAC9D,cAAeH,EAAsB1B,EAASpwN,KAAKkyN,OAAO,GAC1D,oBAAqBJ,EAAsB1B,EAASpwN,KAAKkyN,OAAO,KA0NpEhrO,EAAQo6D,QAAU8uK,EAClBlpO,EAAQ+oO,SAAWA,GAIb,SAAU9oO,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAAIu7D,EAAgb,SAAU96C,EAAK3kB,GAAK,GAAIgG,MAAMC,QAAQ0e,GAAQ,OAAOA,EAAY,GAAI3gB,OAAOoC,YAAYjG,OAAOwkB,GAAQ,OAAxf,SAAuBA,EAAK3kB,GAAK,IAAI0/D,EAAO,GAAQC,GAAK,EAAU94C,GAAK,EAAW+4C,OAAK18D,EAAW,IAAM,IAAK,IAAiC28D,EAA7B/uD,EAAK6T,EAAI3gB,OAAOoC,cAAmBu5D,GAAME,EAAK/uD,EAAGvI,QAAQu3D,QAAoBJ,EAAKl/D,KAAKq/D,EAAG37D,QAAYlE,GAAK0/D,EAAKx/D,SAAWF,GAA3D2/D,GAAK,IAAoE,MAAO76D,GAAO+hB,GAAK,EAAM+4C,EAAK96D,EAAO,QAAU,KAAW66D,GAAM7uD,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAI+V,EAAI,MAAM+4C,GAAQ,OAAOF,EAA6HK,CAAcp7C,EAAK3kB,GAAa,MAAM,IAAIod,UAAU,yDAEllBmlE,EAAO,SAASz+E,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,GAErZ5lF,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAIfywN,EAAcF,EAFDt2N,EAAoB,IAMjC22N,EAASL,EAFDt2N,EAAoB,IAIhC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAQvF,IAAI2nO,EAAS,SAAUtW,GAUrB,SAASsW,EAAOrW,EAASzrG,IAhB3B,SAAyB/+D,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAiB5Go1C,CAAgBltD,KAAM0oO,GAEtB,IAAI/iO,EAjBR,SAAoC8R,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAiBlN2c,CAA2B3X,MAAO0oO,EAAO1wN,WAAand,OAAOoxC,eAAey8L,IAAS1tO,KAAKgF,KAAMqyN,IAM5G,OAJA1sN,EAAMihH,UAAYA,EAClBjhH,EAAMg7M,SAAWtkN,SAAS4mE,eAAeylK,EAAOjL,UAChD93N,EAAM0sN,QAAQt0N,YAAY4H,EAAMg7M,UAChCh7M,EAAMsmF,QAAU,EACTtmF,EAwHT,OA7IF,SAAmBiS,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAG/dI,CAAUywN,EAAQtW,GAElBnxN,EAAaynO,EAAQ,KAAM,CAAC,CAC1BxpO,IAAK,QACLN,MAAO,gBAiBTqC,EAAaynO,EAAQ,CAAC,CACpBxpO,IAAK,SACLN,MAAO,WAEc,MAAfoB,KAAKuO,QAAgBvO,KAAKuO,OAAOgzD,YAAYvhE,QAElD,CACDd,IAAK,SACLN,MAAO,SAAgBlB,EAAMkB,GAC3B,GAAqB,IAAjBoB,KAAKisF,QACP,OAAOhP,EAAKyrJ,EAAO5tO,UAAUkd,WAAand,OAAOoxC,eAAey8L,EAAO5tO,WAAY,SAAUkF,MAAMhF,KAAKgF,KAAMtC,EAAMkB,GAItH,IAFA,IAAIpB,EAASwC,KACT2J,EAAQ,EACK,MAAVnM,GAAkBA,EAAOkgJ,QAAQtyE,QAAU4mJ,EAAYn8J,QAAQ+3J,MAAM8E,YAC1E/oN,GAASnM,EAAOq+B,OAAOr+B,EAAO+Q,QAC9B/Q,EAASA,EAAO+Q,OAEJ,MAAV/Q,IACFwC,KAAKisF,QAAUy8I,EAAOjL,SAAS7iO,OAC/B4C,EAAOg+N,WACPh+N,EAAO49N,SAASzxN,EAAO++N,EAAOjL,SAAS7iO,OAAQ8C,EAAMkB,GACrDoB,KAAKisF,QAAU,KAGlB,CACD/sF,IAAK,QACLN,MAAO,SAAes8C,EAAMrf,GAC1B,OAAIqf,IAASl7C,KAAK2gN,SAAiB,EAC5B1jI,EAAKyrJ,EAAO5tO,UAAUkd,WAAand,OAAOoxC,eAAey8L,EAAO5tO,WAAY,QAASkF,MAAMhF,KAAKgF,KAAMk7C,EAAMrf,KAEpH,CACD38B,IAAK,SACLN,MAAO,WACL,OAAOoB,KAAKisF,UAEb,CACD/sF,IAAK,WACLN,MAAO,WACL,MAAO,CAACoB,KAAK2gN,SAAU3gN,KAAK2gN,SAAStmN,KAAKO,UAE3C,CACDsE,IAAK,SACLN,MAAO,WACLq+E,EAAKyrJ,EAAO5tO,UAAUkd,WAAand,OAAOoxC,eAAey8L,EAAO5tO,WAAY,SAAUkF,MAAMhF,KAAKgF,MACjGA,KAAKuO,OAAS,OAEf,CACDrP,IAAK,UACLN,MAAO,WACL,IAAIoB,KAAK4mH,UAAUo3G,WAA4B,MAAfh+N,KAAKuO,OAArC,CACA,IAAIoyM,EAAW3gN,KAAK2gN,SAChBrsE,EAAQt0I,KAAK4mH,UAAU23G,iBACvBoK,OAAc,EACdrjL,OAAQ,EACRgrB,OAAM,EACV,GAAa,MAATgkE,GAAiBA,EAAMhvF,MAAMpK,OAASylK,GAAYrsE,EAAMhkE,IAAIp1B,OAASylK,EAAU,CACjF,IAAIpyJ,EAAO,CAACoyJ,EAAUrsE,EAAMhvF,MAAMzpB,OAAQy4G,EAAMhkE,IAAIz0C,QACpD8sM,EAAcp6K,EAAK,GACnBjJ,EAAQiJ,EAAK,GACb+hB,EAAM/hB,EAAK,GAGb,KAAiC,MAA1BvuD,KAAKqyN,QAAQh4G,WAAqBr6G,KAAKqyN,QAAQh4G,YAAcr6G,KAAK2gN,UACvE3gN,KAAKqyN,QAAQ/wJ,WAAWH,aAAanhE,KAAKqyN,QAAQh4G,UAAWr6G,KAAKqyN,SAEpE,GAAIryN,KAAK2gN,SAAStmN,OAASquO,EAAOjL,SAAU,CAC1C,IAAIv0K,EAAOlpD,KAAK2gN,SAAStmN,KAAKixB,MAAMo9M,EAAOjL,UAAUz1N,KAAK,IACtDhI,KAAKiD,gBAAgBkvN,EAAOt8J,SAC9B8yK,EAAc3oO,KAAKiD,KAAKovN,QACxBryN,KAAKiD,KAAKg+D,SAAS,EAAG/X,GACtBlpD,KAAK2gN,SAAStmN,KAAOquO,EAAOjL,WAE5Bz9N,KAAK2gN,SAAStmN,KAAO6uD,EACrBlpD,KAAKuO,OAAO4yD,aAAa6wJ,EAAYn8J,QAAQ52D,OAAOe,KAAK2gN,UAAW3gN,MACpEA,KAAK2gN,SAAWtkN,SAAS4mE,eAAeylK,EAAOjL,UAC/Cz9N,KAAKqyN,QAAQt0N,YAAYiC,KAAK2gN,WAIlC,GADA3gN,KAAK8vC,SACQ,MAATwV,EAAe,CACjB,IAAI5H,EAAO,CAAC4H,EAAOgrB,GAAK3rE,KAAI,SAAUk3B,GACpC,OAAO1Y,KAAKqD,IAAI,EAAGrD,KAAKW,IAAI6kN,EAAYtuO,KAAKO,OAAQihC,EAAS,OAG5Ds8L,EAAQh+J,EAAezc,EAAM,GAKjC,OAHA4H,EAAQ6yK,EAAM,GACd7nJ,EAAM6nJ,EAAM,GAEL,CACLuG,UAAWiK,EACXhK,YAAar5K,EACbs5K,QAAS+J,EACT9J,UAAWvuJ,OAIhB,CACDpxE,IAAK,SACLN,MAAO,SAAgB21N,EAAWphN,GAChC,IAAIhN,EAASnG,KAEb,GAAIu0N,EAAU11M,MAAK,SAAUosI,GAC3B,MAAyB,kBAAlBA,EAAS3tJ,MAA4B2tJ,EAASztJ,SAAW2I,EAAOw6M,YACrE,CACF,IAAIrsE,EAAQt0I,KAAK8+N,UACbxqF,IAAOnhI,EAAQmhI,MAAQA,MAG9B,CACDp1I,IAAK,QACLN,MAAO,WACL,MAAO,OAIJ8pO,EA3II,CA4IX1W,EAAYn8J,QAAQk4J,OAEtB2a,EAAOjZ,SAAW,SAClBiZ,EAAOpjJ,UAAY,YACnBojJ,EAAOnuE,QAAU,OACjBmuE,EAAOjL,SAAW,SAGlBhiO,EAAQo6D,QAAU6yK,GAIZ,SAAUhtO,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAEIozN,EAAcF,EAFDt2N,EAAoB,IAIjCqgO,EAASrgO,EAAoB,GAE7Bg/N,EAAU1I,EAAuB+J,GAErC,SAAS/J,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEvF,SAASmsD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAIlO,IAAI+qI,EAAY,SAAU6iG,GAGxB,SAAS7iG,IAGP,OAFA74E,EAAgBltD,KAAM+lI,GAEfpuH,EAA2B3X,MAAO+lI,EAAU/tH,WAAand,OAAOoxC,eAAe85F,IAAY9hI,MAAMjE,KAAM8B,YAGhH,OAXF,SAAmB8V,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAG/dI,CAAU8tH,EAAW6iG,GAQd7iG,EATO,CAUdisF,EAAYn8J,QAAQkwE,WAEtBA,EAAUgtF,gBAAkB,CAACyH,EAAQ3kK,QAASgmK,EAAOlK,WAAY5rF,GAEjEtqI,EAAQo6D,QAAUkwE,GAIZ,SAAUrqI,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQotO,WAAaptO,EAAQqtO,WAAartO,EAAQstO,qBAAkBnrO,EAEpE,IAQgCmD,EAR5BE,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAIfq3N,EAAap9N,EAAoB,GAEjCw2N,GAE4BjxN,EAFS63N,IAEY73N,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEvF,SAASmsD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAIlO,IAAI+tO,EAAkB,SAAUC,GAG9B,SAASD,IAGP,OAFA77K,EAAgBltD,KAAM+oO,GAEfpxN,EAA2B3X,MAAO+oO,EAAgB/wN,WAAand,OAAOoxC,eAAe88L,IAAkB9kO,MAAMjE,KAAM8B,YAe5H,OAvBF,SAAmB8V,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAG/dI,CAAU8wN,EAAiBC,GAQ3B/nO,EAAa8nO,EAAiB,CAAC,CAC7B7pO,IAAK,QACLN,MAAO,SAAeyzN,GACpB,IAAIzzN,EA1BC,SAASJ,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,EA0BvY5J,CAAK8rJ,EAAgBjuO,UAAUkd,WAAand,OAAOoxC,eAAe88L,EAAgBjuO,WAAY,QAASkF,MAAMhF,KAAKgF,KAAMqyN,GACpI,OAAKzzN,EAAMu0E,WAAW,SACtBv0E,EAAQA,EAAMmI,QAAQ,UAAW,IAAIA,QAAQ,UAAW,IACjD,IAAMnI,EAAM0sB,MAAM,KAAK3mB,KAAI,SAAUM,GAC1C,OAAQ,KAAOqlB,SAASrlB,GAAW+Z,SAAS,KAAKnf,OAAO,MACvDmI,KAAK,KAJ8BpJ,MAQnCmqO,EArBa,CAsBpB/W,EAAYn8J,QAAQu4J,WAAWG,OAE7Bua,EAAa,IAAI9W,EAAYn8J,QAAQu4J,WAAWE,MAAM,QAAS,WAAY,CAC7EljJ,MAAO4mJ,EAAYn8J,QAAQ+3J,MAAMqB,SAE/B4Z,EAAa,IAAIE,EAAgB,QAAS,QAAS,CACrD39J,MAAO4mJ,EAAYn8J,QAAQ+3J,MAAMqB,SAGnCxzN,EAAQstO,gBAAkBA,EAC1BttO,EAAQqtO,WAAaA,EACrBrtO,EAAQotO,WAAaA,GAIf,SAAUntO,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQwtO,SAAWxtO,EAAQo6D,aAAUj4D,EAErC,IAQgCmD,EAR5BE,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAEf07E,EAAO,SAASz+E,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,GAErZqiJ,EAAU1tO,EAAoB,GAMlC,SAAS0xD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAIlO,IAAImuO,EAAO,SAAU1O,GAGnB,SAAS0O,IAGP,OAFAj8K,EAAgBltD,KAAMmpO,GAEfxxN,EAA2B3X,MAAOmpO,EAAKnxN,WAAand,OAAOoxC,eAAek9L,IAAOllO,MAAMjE,KAAM8B,YA+BtG,OAvCF,SAAmB8V,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAG/dI,CAAUkxN,EAAM1O,GAQhBx5N,EAAakoO,EAAM,CAAC,CAClBjqO,IAAK,SACLN,MAAO,SAAgBlB,EAAMkB,GAC3B,GAAIlB,IAASsC,KAAK09I,QAAQ+xE,WAAa7wN,EAAO,OAAOq+E,EAAKksJ,EAAKruO,UAAUkd,WAAand,OAAOoxC,eAAek9L,EAAKruO,WAAY,SAAUkF,MAAMhF,KAAKgF,KAAMtC,EAAMkB,GAC9JA,EAAQoB,KAAKgB,YAAYioO,SAASrqO,GAClCoB,KAAKqyN,QAAQ31N,aAAa,OAAQkC,MAElC,CAAC,CACHM,IAAK,SACLN,MAAO,SAAgBA,GACrB,IAAIs8C,EAAO+hC,EAAKksJ,EAAKnxN,WAAand,OAAOoxC,eAAek9L,GAAO,SAAUnpO,MAAMhF,KAAKgF,KAAMpB,GAI1F,OAHAA,EAAQoB,KAAKipO,SAASrqO,GACtBs8C,EAAKx+C,aAAa,OAAQkC,GAC1Bs8C,EAAKx+C,aAAa,SAAU,UACrBw+C,IAER,CACDh8C,IAAK,UACLN,MAAO,SAAiByzN,GACtB,OAAOA,EAAQjrJ,aAAa,UAE7B,CACDloE,IAAK,WACLN,MAAO,SAAkB6J,GACvB,OAAO2gO,EAAU3gO,EAAKzI,KAAKqpO,oBAAsB5gO,EAAMzI,KAAKspO,kBAIzDH,EArCE,GARqBpoO,EAFMmoO,IAEenoO,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,IA8C5E80D,SAOX,SAASuzK,EAAU3gO,EAAK8gO,GACtB,IAAIrrM,EAAS7hC,SAASC,cAAc,KACpC4hC,EAAO/1B,KAAOM,EACd,IAAIgmC,EAAWvQ,EAAO/1B,KAAKtI,MAAM,EAAGq+B,EAAO/1B,KAAKkJ,QAAQ,MACxD,OAAOk4N,EAAUl4N,QAAQo9B,IAAa,EATxC06L,EAAK1Z,SAAW,OAChB0Z,EAAK5uE,QAAU,IACf4uE,EAAKG,cAAgB,cACrBH,EAAKE,mBAAqB,CAAC,OAAQ,QAAS,SAAU,OAStD5tO,EAAQo6D,QAAUszK,EAClB1tO,EAAQwtO,SAAWG,GAIb,SAAU1tO,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAAIiC,EAA4B,mBAAXnC,QAAoD,iBAApBA,OAAOoC,SAAwB,SAAUC,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAXrC,QAAyBqC,EAAIC,cAAgBtC,QAAUqC,IAAQrC,OAAO5D,UAAY,gBAAkBiG,GAElQE,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAIfioO,EAAa1X,EAFDt2N,EAAoB,KAMhCiuO,EAAa3X,EAFDt2N,EAAoB,MAIpC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAIvF,IAAI2oO,EAAiB,EAErB,SAASC,EAAoB5iK,EAASurJ,GACpCvrJ,EAAQrqE,aAAa41N,IAAiD,SAApCvrJ,EAAQK,aAAakrJ,KAGzD,IAAIsX,EAAS,WACX,SAASA,EAAOj3H,GACd,IAAIhtG,EAAQ3F,MAVhB,SAAyB6nD,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAY5Go1C,CAAgBltD,KAAM4pO,GAEtB5pO,KAAK2yG,OAASA,EACd3yG,KAAKqO,UAAYhS,SAASC,cAAc,QACxC0D,KAAK6pO,cACL7pO,KAAK2yG,OAAO7xC,MAAM6jD,QAAU,OAC5B3kH,KAAK2yG,OAAOrxC,WAAWH,aAAanhE,KAAKqO,UAAWrO,KAAK2yG,QAEzD3yG,KAAK8xE,MAAMo+B,iBAAiB,aAAa,WACvCvqG,EAAMmkO,kBAER9pO,KAAK8xE,MAAMo+B,iBAAiB,WAAW,SAAUlzG,GAC/C,OAAQA,EAAM+tH,SAEZ,KAAKy+G,EAAW3zK,QAAQthD,KAAKwwN,MAC3Bp/N,EAAMmkO,eACN,MAGF,KAAKN,EAAW3zK,QAAQthD,KAAKszN,OAC3BliO,EAAM8yD,SACNz7D,EAAMmsH,qBAKZnpH,KAAK2yG,OAAOzC,iBAAiB,SAAUlwG,KAAK0c,OAAOvd,KAAKa,OA4K1D,OAzKAiB,EAAa2oO,EAAQ,CAAC,CACpB1qO,IAAK,eACLN,MAAO,WACLoB,KAAKqO,UAAU+2E,UAAU8jB,OAAO,eAEhCygI,EAAoB3pO,KAAK8xE,MAAO,iBAChC63J,EAAoB3pO,KAAKwD,QAAS,iBAEnC,CACDtE,IAAK,YACLN,MAAO,SAAmBinH,GACxB,IAAI1/G,EAASnG,KAETQ,EAAOnE,SAASC,cAAc,QA+BlC,OA9BAkE,EAAKs6G,SAAW,IAChBt6G,EAAK9D,aAAa,OAAQ,UAE1B8D,EAAK4kF,UAAUt0E,IAAI,kBACf+0G,EAAOkkH,aAAa,UACtBvpO,EAAK9D,aAAa,aAAcmpH,EAAOz+C,aAAa,UAElDy+C,EAAO1M,aACT34G,EAAK9D,aAAa,aAAcmpH,EAAO1M,aAEzC34G,EAAK0vG,iBAAiB,SAAS,WAC7B/pG,EAAO6jO,WAAWxpO,GAAM,MAE1BA,EAAK0vG,iBAAiB,WAAW,SAAUlzG,GACzC,OAAQA,EAAM+tH,SAEZ,KAAKy+G,EAAW3zK,QAAQthD,KAAKwwN,MAC3B5+N,EAAO6jO,WAAWxpO,GAAM,GACxBxD,EAAMmsH,iBACN,MAGF,KAAKqgH,EAAW3zK,QAAQthD,KAAKszN,OAC3B1hO,EAAOsyD,SACPz7D,EAAMmsH,qBAML3oH,IAER,CACDtB,IAAK,aACLN,MAAO,WACL,IAAIkzE,EAAQz1E,SAASC,cAAc,QAOnC,OANAw1E,EAAMsT,UAAUt0E,IAAI,mBACpBghE,EAAM7nB,UAAYw/K,EAAW5zK,QAC7Bic,EAAMgpC,SAAW,IACjBhpC,EAAMp1E,aAAa,OAAQ,UAC3Bo1E,EAAMp1E,aAAa,gBAAiB,SACpCsD,KAAKqO,UAAUtQ,YAAY+zE,GACpBA,IAER,CACD5yE,IAAK,eACLN,MAAO,WACL,IAAI0P,EAAStO,KAETwD,EAAUnH,SAASC,cAAc,QACrCkH,EAAQ4hF,UAAUt0E,IAAI,qBAGtBtN,EAAQ9G,aAAa,cAAe,QACpC8G,EAAQs3G,SAAW,KAGnBt3G,EAAQ+Y,GAAK,qBAAuBmtN,EACpCA,GAAkB,EAClB1pO,KAAK8xE,MAAMp1E,aAAa,gBAAiB8G,EAAQ+Y,IAEjDvc,KAAKwD,QAAUA,EAEf,GAAG3D,MAAM7E,KAAKgF,KAAK2yG,OAAOnvG,SAAS2D,SAAQ,SAAU0+G,GACnD,IAAIrlH,EAAO8N,EAAO27N,UAAUpkH,GAC5BriH,EAAQzF,YAAYyC,IACI,IAApBqlH,EAAO7K,UACT1sG,EAAO07N,WAAWxpO,MAGtBR,KAAKqO,UAAUtQ,YAAYyF,KAE5B,CACDtE,IAAK,cACLN,MAAO,WACL,IAAI6P,EAASzO,KAEb,GAAGH,MAAM7E,KAAKgF,KAAK2yG,OAAO1J,YAAY9hG,SAAQ,SAAU3G,GACtDiO,EAAOJ,UAAU3R,aAAa8D,EAAK9C,KAAM8C,EAAK5B,UAEhDoB,KAAKqO,UAAU+2E,UAAUt0E,IAAI,aAC7B9Q,KAAK8xE,MAAQ9xE,KAAKkqO,aAClBlqO,KAAKmqO,iBAEN,CACDjrO,IAAK,SACLN,MAAO,WACL,IAAIkR,EAAS9P,KAGbA,KAAK6lE,QAGLhoE,YAAW,WACT,OAAOiS,EAAOgiE,MAAM83C,UACnB,KAEJ,CACD1qH,IAAK,QACLN,MAAO,WACLoB,KAAKqO,UAAU+2E,UAAUt1C,OAAO,eAChC9vC,KAAK8xE,MAAMp1E,aAAa,gBAAiB,SACzCsD,KAAKwD,QAAQ9G,aAAa,cAAe,UAE1C,CACDwC,IAAK,aACLN,MAAO,SAAoB4B,GACzB,IAAIkI,EAAU5G,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,IAAmBA,UAAU,GAEzEk5G,EAAWh7G,KAAKqO,UAAUsxD,cAAc,gBAC5C,GAAIn/D,IAASw6G,IACG,MAAZA,GACFA,EAAS51B,UAAUt1C,OAAO,eAEhB,MAARtvC,IACJA,EAAK4kF,UAAUt0E,IAAI,eACnB9Q,KAAK2yG,OAAOsI,cAAgB,GAAG5pG,QAAQrW,KAAKwF,EAAK8gE,WAAW1xB,SAAUpvC,GAClEA,EAAKupO,aAAa,cACpB/pO,KAAK8xE,MAAMp1E,aAAa,aAAc8D,EAAK4mE,aAAa,eAExDpnE,KAAK8xE,MAAMukC,gBAAgB,cAEzB71G,EAAKupO,aAAa,cACpB/pO,KAAK8xE,MAAMp1E,aAAa,aAAc8D,EAAK4mE,aAAa,eAExDpnE,KAAK8xE,MAAMukC,gBAAgB,cAEzB3tG,IAAS,CACX,GAAqB,mBAAVmpF,MACT7xF,KAAK2yG,OAAOv3D,cAAc,IAAIy2C,MAAM,gBAC/B,GAAsE,YAAhD,oBAAVA,MAAwB,YAAchxF,EAAQgxF,QAAsB,CAErF,IAAI70F,EAAQX,SAASy1F,YAAY,SACjC90F,EAAM23I,UAAU,UAAU,GAAM,GAChC30I,KAAK2yG,OAAOv3D,cAAcp+C,GAE5BgD,KAAK6lE,WAGR,CACD3mE,IAAK,SACLN,MAAO,WACL,IAAIinH,OAAS,EACb,GAAI7lH,KAAK2yG,OAAOsI,eAAiB,EAAG,CAClC,IAAIz6G,EAAOR,KAAKqO,UAAUsxD,cAAc,sBAAsB/vB,SAAS5vC,KAAK2yG,OAAOsI,eACnF4K,EAAS7lH,KAAK2yG,OAAOnvG,QAAQxD,KAAK2yG,OAAOsI,eACzCj7G,KAAKgqO,WAAWxpO,QAEhBR,KAAKgqO,WAAW,MAElB,IAAI1jO,EAAqB,MAAVu/G,GAAkBA,IAAW7lH,KAAK2yG,OAAOhzC,cAAc,oBACtE3/D,KAAK8xE,MAAMsT,UAAU8jB,OAAO,YAAa5iG,OAItCsjO,EA1MI,GA6MbnuO,EAAQo6D,QAAU+zK,GAIZ,SAAUluO,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAEIozN,EAAcF,EAFDt2N,EAAoB,IAMjCipO,EAAU3S,EAFDt2N,EAAoB,IAI7BqgO,EAASrgO,EAAoB,GAE7Bg/N,EAAU1I,EAAuB+J,GAIjC5J,EAAUH,EAFDt2N,EAAoB,KAM7BsoO,EAAchS,EAFDt2N,EAAoB,KAMjCogO,EAAW9J,EAFDt2N,EAAoB,KAM9B4uO,EAAUtY,EAFDt2N,EAAoB,KAM7B02N,EAAWJ,EAFDt2N,EAAoB,IAM9B6uO,EAAWvY,EAFDt2N,EAAoB,KAM9B22N,EAASL,EAFDt2N,EAAoB,IAM5B8uO,EAAcxY,EAFDt2N,EAAoB,KAMjC+uO,EAAYzY,EAFDt2N,EAAoB,KAM/BguO,EAAa1X,EAFDt2N,EAAoB,KAIpC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEvF0jO,EAAQ5uK,QAAQ1P,SAAS,CACvB,cAAeq0K,EAAQ3kK,QACvB,oBAAqBgmK,EAAOlK,WAC5B,cAAeM,EAAQp8J,QACvB,kBAAmBiuK,EAAYjuK,QAC/B,eAAgB+lK,EAAS/lK,QACzB,cAAeu0K,EAAQv0K,QACvB,eAAgBq8J,EAASr8J,QACzB,eAAgBw0K,EAASx0K,QACzB,aAAcs8J,EAAOt8J,QAErB,oBAAqBy0K,EAAYz0K,QACjC,kBAAmB00K,EAAU10K,QAC7B,mBAAoB2zK,EAAW3zK,UAGjCm8J,EAAYn8J,QAAQ1P,SAASq0K,EAAQ3kK,QAASo8J,EAAQp8J,QAAS+lK,EAAS/lK,QAASq8J,EAASr8J,QAASw0K,EAASx0K,QAASs8J,EAAOt8J,SAE5Hp6D,EAAQo6D,QAAU4uK,EAAQ5uK,SAIpB,SAAUn6D,EAAQD,EAASD,GAEjC,aAEAX,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IACtD,IAAI8uN,EAAWlyN,EAAoB,GAC/BgvO,EAA4B,WAC5B,SAASA,EAAWnY,GAChBryN,KAAKqyN,QAAUA,EAEfryN,KAAKqyN,QAAQ3E,EAASyB,UAAY,CAAEG,KAAMtvN,MAkJ9C,OAhJAnF,OAAOyD,eAAeksO,EAAW1vO,UAAW,UAAW,CAEnD0D,IAAK,WACD,OAAOwB,KAAKgB,aAEhBzC,YAAY,EACZ8C,cAAc,IAElBmpO,EAAWvrO,OAAS,SAAUL,GAC1B,GAAoB,MAAhBoB,KAAKu6J,QACL,MAAM,IAAImzD,EAASiB,eAAe,mCAEtC,IAAIzzK,EAwBJ,OAvBIx6C,MAAMC,QAAQX,KAAKu6J,UACE,iBAAV37J,IACPA,EAAQA,EAAMmlC,cACVzZ,SAAS1rB,GAAOogB,aAAepgB,IAC/BA,EAAQ0rB,SAAS1rB,KAIrBs8C,EADiB,iBAAVt8C,EACAvC,SAASC,cAAc0D,KAAKu6J,QAAQ37J,EAAQ,IAE9CoB,KAAKu6J,QAAQlpJ,QAAQzS,IAAU,EAC7BvC,SAASC,cAAcsC,GAGvBvC,SAASC,cAAc0D,KAAKu6J,QAAQ,KAI/Cr/G,EAAO7+C,SAASC,cAAc0D,KAAKu6J,SAEnCv6J,KAAKslF,WACLpqC,EAAKkqC,UAAUt0E,IAAI9Q,KAAKslF,WAErBpqC,GAEXsvL,EAAW1vO,UAAUg4M,OAAS,WACP,MAAf9yM,KAAKuO,SACLvO,KAAK+zN,OAAS/zN,KAAKuO,OAAOwlN,SAGlCyW,EAAW1vO,UAAUyhC,MAAQ,WACzB,IAAI81L,EAAUryN,KAAKqyN,QAAQnrG,WAAU,GACrC,OAAOwmG,EAASzuN,OAAOozN,IAE3BmY,EAAW1vO,UAAU+yH,OAAS,WACP,MAAf7tH,KAAKuO,QACLvO,KAAKuO,OAAOgzD,YAAYvhE,aAErBA,KAAKqyN,QAAQ3E,EAASyB,WAEjCqb,EAAW1vO,UAAUigO,SAAW,SAAUpxN,EAAO/O,GAClCoF,KAAKw4N,QAAQ7uN,EAAO/O,GAC1Bk1C,UAET06L,EAAW1vO,UAAUsgO,SAAW,SAAUzxN,EAAO/O,EAAQ8C,EAAMkB,GAC3D,IAAI0wN,EAAOtvN,KAAKw4N,QAAQ7uN,EAAO/O,GAC/B,GAAiD,MAA7C8yN,EAAS9uI,MAAMlhF,EAAMgwN,EAASE,MAAM2K,OAAiB35N,EACrD0wN,EAAKxoG,KAAKppH,EAAMkB,QAEf,GAAsD,MAAlD8uN,EAAS9uI,MAAMlhF,EAAMgwN,EAASE,MAAMyM,WAAoB,CAC7D,IAAI9rN,EAASm/M,EAASzuN,OAAOe,KAAK09I,QAAQtyE,OAC1CkkJ,EAAKxoG,KAAKv4G,GACVA,EAAOqR,OAAOliB,EAAMkB,KAG5B4rO,EAAW1vO,UAAUmmE,SAAW,SAAUt3D,EAAO/K,EAAO4zN,GACpD,IAAIlD,EAAc,MAAPkD,EAAc9E,EAASzuN,OAAO,OAAQL,GAAS8uN,EAASzuN,OAAOL,EAAO4zN,GAC7EjnJ,EAAMvrE,KAAKsrB,MAAM3hB,GACrB3J,KAAKuO,OAAO4yD,aAAamuJ,EAAM/jJ,IAEnCi/J,EAAW1vO,UAAUimE,WAAa,SAAU0pK,EAAYjJ,QACpC,IAAZA,IAAsBA,EAAU,MACjB,MAAfxhO,KAAKuO,QACLvO,KAAKuO,OAAOqhC,SAASE,OAAO9vC,MAEhC,IAAI0qO,EAAa,KACjBD,EAAW76L,SAASuxB,aAAanhE,KAAMwhO,GACxB,MAAXA,IACAkJ,EAAalJ,EAAQnP,SAErBryN,KAAKqyN,QAAQ/wJ,YAAcmpK,EAAWpY,SACtCryN,KAAKqyN,QAAQnxJ,aAAewpK,GAC5BD,EAAWpY,QAAQlxJ,aAAanhE,KAAKqyN,QAASqY,GAElD1qO,KAAKuO,OAASk8N,EACdzqO,KAAK8yM,UAET03B,EAAW1vO,UAAU09N,QAAU,SAAU7uN,EAAO/O,GAC5C,IAAI4C,EAASwC,KAAKsrB,MAAM3hB,GAExB,OADAnM,EAAO8tB,MAAM1wB,GACN4C,GAEXgtO,EAAW1vO,UAAUF,OAAS,WAC1B,OAAO,GAEX4vO,EAAW1vO,UAAU+gC,OAAS,SAAUy8C,GAEpC,YADa,IAATA,IAAmBA,EAAOt4E,KAAKuO,QAChB,MAAfvO,KAAKuO,QAAkBvO,MAAQs4E,EACxB,EACJt4E,KAAKuO,OAAOqhC,SAAS/T,OAAO77B,MAAQA,KAAKuO,OAAOstB,OAAOy8C,IAElEkyJ,EAAW1vO,UAAU0gO,SAAW,SAAUroN,GAGC,MAAnCnT,KAAKqyN,QAAQ3E,EAASyB,kBAEfnvN,KAAKqyN,QAAQ3E,EAASyB,UAAUoF,WAG/CiW,EAAW1vO,UAAUg1C,OAAS,WACK,MAA3B9vC,KAAKqyN,QAAQ/wJ,YACbthE,KAAKqyN,QAAQ/wJ,WAAWC,YAAYvhE,KAAKqyN,SAE7CryN,KAAK6tH,UAET28G,EAAW1vO,UAAUiM,QAAU,SAAUvJ,GAChB,MAAjBA,EAAO+Q,SAEX/Q,EAAO+Q,OAAO4yD,aAAanhE,KAAMxC,EAAOyF,MACxCzF,EAAOsyC,WAEX06L,EAAW1vO,UAAUgzH,YAAc,SAAUpwH,EAAMkB,GAC/C,IAAIgkE,EAA8B,iBAATllE,EAAoBgwN,EAASzuN,OAAOvB,EAAMkB,GAASlB,EAE5E,OADAklE,EAAY77D,QAAQ/G,MACb4iE,GAEX4nK,EAAW1vO,UAAUwwB,MAAQ,SAAU3hB,EAAO+mC,GAC1C,OAAiB,IAAV/mC,EAAc3J,KAAOA,KAAKiD,MAErCunO,EAAW1vO,UAAU4hB,OAAS,SAAU63M,EAAWphN,KAGnDq3N,EAAW1vO,UAAUgsH,KAAO,SAAUppH,EAAMkB,GACxC,IAAImvI,EAA0B,iBAATrwI,EAAoBgwN,EAASzuN,OAAOvB,EAAMkB,GAASlB,EAKxE,OAJmB,MAAfsC,KAAKuO,QACLvO,KAAKuO,OAAO4yD,aAAa4sE,EAAS/tI,KAAKiD,MAE3C8qI,EAAQhwI,YAAYiC,MACb+tI,GAEXy8F,EAAW/a,SAAW,WACf+a,EAtJoB,GAwJ/B/uO,EAAQo6D,QAAU20K,GAKZ,SAAU9uO,EAAQD,EAASD,GAEjC,aAEAX,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IACtD,IAAI0uN,EAAe9xN,EAAoB,IACnC+xN,EAAU/xN,EAAoB,IAC9BgyN,EAAUhyN,EAAoB,IAC9BkyN,EAAWlyN,EAAoB,GAC/BmvO,EAAiC,WACjC,SAASA,EAAgBtY,GACrBryN,KAAKipG,WAAa,GAClBjpG,KAAKqyN,QAAUA,EACfryN,KAAKk5I,QAyDT,OAvDAyxF,EAAgB7vO,UAAUw3N,UAAY,SAAUA,EAAW1zN,GAEnDA,EACI0zN,EAAUxhN,IAAI9Q,KAAKqyN,QAASzzN,KACS,MAAjC0zN,EAAU1zN,MAAMoB,KAAKqyN,SACrBryN,KAAKipG,WAAWqpH,EAAU1hE,UAAY0hE,SAG/BtyN,KAAKipG,WAAWqpH,EAAU1hE,YAKzC0hE,EAAUxiL,OAAO9vC,KAAKqyN,gBACfryN,KAAKipG,WAAWqpH,EAAU1hE,YAGzC+5E,EAAgB7vO,UAAUo+I,MAAQ,WAC9B,IAAIvzI,EAAQ3F,KACZA,KAAKipG,WAAa,GAClB,IAAIA,EAAaqkH,EAAaz3J,QAAQthD,KAAKvU,KAAKqyN,SAC5C/6F,EAAUi2F,EAAQ13J,QAAQthD,KAAKvU,KAAKqyN,SACpChyJ,EAASmtJ,EAAQ33J,QAAQthD,KAAKvU,KAAKqyN,SACvCppH,EACK9kG,OAAOmzH,GACPnzH,OAAOk8D,GACPl5D,SAAQ,SAAUzJ,GACnB,IAAI2yC,EAAOq9K,EAAS9uI,MAAMlhF,EAAMgwN,EAASE,MAAMyM,WAC3ChqL,aAAgBi9K,EAAaz3J,UAC7BlwD,EAAMsjG,WAAW54D,EAAKugH,UAAYvgH,OAI9Cs6L,EAAgB7vO,UAAU2zD,KAAO,SAAUjxD,GACvC,IAAImI,EAAQ3F,KACZnF,OAAO0Z,KAAKvU,KAAKipG,YAAY9hG,SAAQ,SAAUjI,GAC3C,IAAIN,EAAQ+G,EAAMsjG,WAAW/pG,GAAKN,MAAM+G,EAAM0sN,SAC9C70N,EAAOoiB,OAAO1gB,EAAKN,OAG3B+rO,EAAgB7vO,UAAUknO,KAAO,SAAUxkO,GACvC,IAAImI,EAAQ3F,KACZA,KAAKyuD,KAAKjxD,GACV3C,OAAO0Z,KAAKvU,KAAKipG,YAAY9hG,SAAQ,SAAUjI,GAC3CyG,EAAMsjG,WAAW/pG,GAAK4wC,OAAOnqC,EAAM0sN,YAEvCryN,KAAKipG,WAAa,IAEtB0hI,EAAgB7vO,UAAUu4B,OAAS,WAC/B,IAAI1tB,EAAQ3F,KACZ,OAAOnF,OAAO0Z,KAAKvU,KAAKipG,YAAY1jD,QAAO,SAAU0jD,EAAYvrG,GAE7D,OADAurG,EAAWvrG,GAAQiI,EAAMsjG,WAAWvrG,GAAMkB,MAAM+G,EAAM0sN,SAC/CppH,IACR,KAEA0hI,EA7DyB,GA+DpClvO,EAAQo6D,QAAU80K,GAKZ,SAAUjvO,EAAQD,EAASD,GAEjC,aAEA,IACQizN,EADJC,EAAa1uN,MAAQA,KAAK0uN,YACtBD,EAAgB5zN,OAAOkd,gBACtB,CAAEC,UAAW,cAAgBtX,OAAS,SAAUvC,EAAGwT,GAAKxT,EAAE6Z,UAAYrG,IACvE,SAAUxT,EAAGwT,GAAK,IAAK,IAAI/U,KAAK+U,EAAOA,EAAE5W,eAAe6B,KAAIuB,EAAEvB,GAAK+U,EAAE/U,KAClE,SAAUuB,EAAGwT,GAEhB,SAASszF,IAAOjlG,KAAKgB,YAAc7C,EADnCswN,EAActwN,EAAGwT,GAEjBxT,EAAErD,UAAkB,OAAN6W,EAAa9W,OAAOoE,OAAO0S,IAAMszF,EAAGnqG,UAAY6W,EAAE7W,UAAW,IAAImqG,KAKvF,SAAS19E,EAAM2zB,EAAMvZ,GAEjB,OADgBuZ,EAAKksB,aAAa,UAAY,IAC7B97C,MAAM,OAAOzmB,QAAO,SAAUnH,GAC3C,OAAsC,IAA/BA,EAAK2T,QAAQswB,EAAS,QALrC9mC,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IAQtD,IAAIgsO,EAAiC,SAAUhc,GAE3C,SAASgc,IACL,OAAkB,OAAXhc,GAAmBA,EAAO3qN,MAAMjE,KAAM8B,YAAc9B,KA+B/D,OAjCA0uN,EAAUkc,EAAiBhc,GAI3Bgc,EAAgBr2N,KAAO,SAAU2mC,GAC7B,OAAQA,EAAKksB,aAAa,UAAY,IAAI97C,MAAM,OAAO3mB,KAAI,SAAUjH,GACjE,OAAOA,EACF4tB,MAAM,KACNzrB,MAAM,GAAI,GACVmI,KAAK,SAGlB4iO,EAAgB9vO,UAAUgW,IAAM,SAAUoqC,EAAMt8C,GAC5C,QAAKoB,KAAKs6N,OAAOp/K,EAAMt8C,KAEvBoB,KAAK8vC,OAAOoL,GACZA,EAAKkqC,UAAUt0E,IAAI9Q,KAAK6iN,QAAU,IAAMjkN,IACjC,IAEXgsO,EAAgB9vO,UAAUg1C,OAAS,SAAUoL,GAC3B3zB,EAAM2zB,EAAMl7C,KAAK6iN,SACvB17M,SAAQ,SAAUzJ,GACtBw9C,EAAKkqC,UAAUt1C,OAAOpyC,MAEI,IAA1Bw9C,EAAKkqC,UAAUxqF,QACfsgD,EAAKm7D,gBAAgB,UAG7Bu0H,EAAgB9vO,UAAU8D,MAAQ,SAAUs8C,GACxC,IACIt8C,GADS2oB,EAAM2zB,EAAMl7C,KAAK6iN,SAAS,IAAM,IAC1BhjN,MAAMG,KAAK6iN,QAAQjoN,OAAS,GAC/C,OAAOoF,KAAKs6N,OAAOp/K,EAAMt8C,GAASA,EAAQ,IAEvCgsO,EAlCyB,CAPjBpvO,EAAoB,IA0CxBq6D,SACfp6D,EAAQo6D,QAAU+0K,GAKZ,SAAUlvO,EAAQD,EAASD,GAEjC,aAEA,IACQizN,EADJC,EAAa1uN,MAAQA,KAAK0uN,YACtBD,EAAgB5zN,OAAOkd,gBACtB,CAAEC,UAAW,cAAgBtX,OAAS,SAAUvC,EAAGwT,GAAKxT,EAAE6Z,UAAYrG,IACvE,SAAUxT,EAAGwT,GAAK,IAAK,IAAI/U,KAAK+U,EAAOA,EAAE5W,eAAe6B,KAAIuB,EAAEvB,GAAK+U,EAAE/U,KAClE,SAAUuB,EAAGwT,GAEhB,SAASszF,IAAOjlG,KAAKgB,YAAc7C,EADnCswN,EAActwN,EAAGwT,GAEjBxT,EAAErD,UAAkB,OAAN6W,EAAa9W,OAAOoE,OAAO0S,IAAMszF,EAAGnqG,UAAY6W,EAAE7W,UAAW,IAAImqG,KAKvF,SAAS4lI,EAASntO,GACd,IAAI0+B,EAAQ1+B,EAAK4tB,MAAM,KACnB6hB,EAAO/Q,EACNv8B,MAAM,GACN8E,KAAI,SAAU4wD,GACf,OAAOA,EAAK,GAAGxxB,cAAgBwxB,EAAK11D,MAAM,MAEzCmI,KAAK,IACV,OAAOo0B,EAAM,GAAK+Q,EAVtBtyC,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IAYtD,IAAIksO,EAAiC,SAAUlc,GAE3C,SAASkc,IACL,OAAkB,OAAXlc,GAAmBA,EAAO3qN,MAAMjE,KAAM8B,YAAc9B,KA2B/D,OA7BA0uN,EAAUoc,EAAiBlc,GAI3Bkc,EAAgBv2N,KAAO,SAAU2mC,GAC7B,OAAQA,EAAKksB,aAAa,UAAY,IAAI97C,MAAM,KAAK3mB,KAAI,SAAU/F,GAE/D,OADUA,EAAM0sB,MAAM,KACX,GAAGq7B,WAGtBmkL,EAAgBhwO,UAAUgW,IAAM,SAAUoqC,EAAMt8C,GAC5C,QAAKoB,KAAKs6N,OAAOp/K,EAAMt8C,KAGvBs8C,EAAK4lB,MAAM+pK,EAAS7qO,KAAK6iN,UAAYjkN,GAC9B,IAEXksO,EAAgBhwO,UAAUg1C,OAAS,SAAUoL,GAEzCA,EAAK4lB,MAAM+pK,EAAS7qO,KAAK6iN,UAAY,GAChC3nK,EAAKksB,aAAa,UACnBlsB,EAAKm7D,gBAAgB,UAG7By0H,EAAgBhwO,UAAU8D,MAAQ,SAAUs8C,GAExC,IAAIt8C,EAAQs8C,EAAK4lB,MAAM+pK,EAAS7qO,KAAK6iN,UACrC,OAAO7iN,KAAKs6N,OAAOp/K,EAAMt8C,GAASA,EAAQ,IAEvCksO,EA9ByB,CAXjBtvO,EAAoB,IA0CxBq6D,SACfp6D,EAAQo6D,QAAUi1K,GAKZ,SAAUpvO,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAAIqC,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAIfwpO,EAAQ,WACV,SAASA,EAAMxR,EAAO/1N,IAHxB,SAAyBqkD,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAI5Go1C,CAAgBltD,KAAM+qO,GAEtB/qO,KAAKu5N,MAAQA,EACbv5N,KAAKwD,QAAUA,EACfxD,KAAK7E,QAAU,GAuBjB,OApBA8F,EAAa8pO,EAAO,CAAC,CACnB7rO,IAAK,OACLN,MAAO,WACL,IAAI+G,EAAQ3F,KAEZnF,OAAO0Z,KAAKvU,KAAKwD,QAAQrI,SAASgM,SAAQ,SAAUzJ,GACvB,MAAvBiI,EAAMxK,QAAQuC,IAChBiI,EAAMsuN,UAAUv2N,QAIrB,CACDwB,IAAK,YACLN,MAAO,SAAmBlB,GACxB,IAAIm6N,EAAc73N,KAAKu5N,MAAMv4N,YAAY02N,OAAO,WAAah6N,GAE7D,OADAsC,KAAK7E,QAAQuC,GAAQ,IAAIm6N,EAAY73N,KAAKu5N,MAAOv5N,KAAKwD,QAAQrI,QAAQuC,IAAS,IACxEsC,KAAK7E,QAAQuC,OAIjBqtO,EA7BG,GAgCZA,EAAMtT,SAAW,CACft8N,QAAS,IAEX4vO,EAAMC,OAAS,CACb,QAAWD,GAGbtvO,EAAQo6D,QAAUk1K,GAIZ,SAAUrvO,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAAIqC,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAMfywN,EAAcF,EAFDt2N,EAAoB,IAMjC22N,EAASL,EAFDt2N,EAAoB,IAIhC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAQvF,IAEIgtN,EAAQ,SAAUqE,GAGpB,SAASrE,EAAM7yK,IAXjB,SAAyB2M,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAY5Go1C,CAAgBltD,KAAM+tN,GAEtB,IAAIpoN,EAZR,SAAoC8R,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAYlN2c,CAA2B3X,MAAO+tN,EAAM/1M,WAAand,OAAOoxC,eAAe8hL,IAAQ/yN,KAAKgF,KAAMk7C,IAY1G,OAVAv1C,EAAMslO,YAAc5uO,SAASC,cAAc,QAC3CqJ,EAAMslO,YAAYvuO,aAAa,mBAAmB,GAClD,GAAGmD,MAAM7E,KAAK2K,EAAM0sN,QAAQnvJ,YAAY/7D,SAAQ,SAAUu5M,GACxD/6M,EAAMslO,YAAYltO,YAAY2iN,MAEhC/6M,EAAMulO,UAAY7uO,SAAS4mE,eAfd,UAgBbt9D,EAAMwlO,WAAa9uO,SAAS4mE,eAhBf,UAiBbt9D,EAAM0sN,QAAQt0N,YAAY4H,EAAMulO,WAChCvlO,EAAM0sN,QAAQt0N,YAAY4H,EAAMslO,aAChCtlO,EAAM0sN,QAAQt0N,YAAY4H,EAAMwlO,YACzBxlO,EAiET,OAvFF,SAAmBiS,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAK/dI,CAAU81M,EAAOqE,GAoBjBnxN,EAAa8sN,EAAO,CAAC,CACnB7uN,IAAK,QACLN,MAAO,SAAes8C,EAAMrf,GAC1B,OAAIqf,IAASl7C,KAAKkrO,UAAkB,EAChChwL,IAASl7C,KAAKmrO,WAAmB,EA7ChC,SAAS3sO,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,EA8C5Y5J,CAAK8wI,EAAMjzN,UAAUkd,WAAand,OAAOoxC,eAAe8hL,EAAMjzN,WAAY,QAASkF,MAAMhF,KAAKgF,KAAMk7C,EAAMrf,KAElH,CACD38B,IAAK,UACLN,MAAO,SAAiBs8C,GACtB,IAAIo5F,OAAQ,EACRqsE,OAAW,EACXz3J,EAAOhO,EAAK7gD,KAAKixB,MAnCV,UAmC4BtjB,KAAK,IAC5C,GAAIkzC,IAASl7C,KAAKkrO,UAChB,GAAIlrO,KAAK0M,gBAAgBylN,EAAOt8J,QAAS,CACvC,IAAIu1K,EAAaprO,KAAK0M,KAAK9R,SAC3BoF,KAAK0M,KAAKu0D,SAASmqK,EAAYliL,GAC/BorF,EAAQ,CACNoqF,UAAW1+N,KAAK0M,KAAK2lN,QACrBsM,YAAayM,EAAaliL,EAAKtuD,aAGjC+lN,EAAWtkN,SAAS4mE,eAAe/Z,GACnClpD,KAAKuO,OAAO4yD,aAAa6wJ,EAAYn8J,QAAQ52D,OAAO0hN,GAAW3gN,MAC/Ds0I,EAAQ,CACNoqF,UAAW/d,EACXge,YAAaz1K,EAAKtuD,aAGbsgD,IAASl7C,KAAKmrO,aACnBnrO,KAAKiD,gBAAgBkvN,EAAOt8J,SAC9B71D,KAAKiD,KAAKg+D,SAAS,EAAG/X,GACtBorF,EAAQ,CACNoqF,UAAW1+N,KAAKiD,KAAKovN,QACrBsM,YAAaz1K,EAAKtuD,UAGpB+lN,EAAWtkN,SAAS4mE,eAAe/Z,GACnClpD,KAAKuO,OAAO4yD,aAAa6wJ,EAAYn8J,QAAQ52D,OAAO0hN,GAAW3gN,KAAKiD,MACpEqxI,EAAQ,CACNoqF,UAAW/d,EACXge,YAAaz1K,EAAKtuD,UAKxB,OADAsgD,EAAK7gD,KApEM,SAqEJi6I,IAER,CACDp1I,IAAK,SACLN,MAAO,SAAgB21N,EAAWphN,GAChC,IAAIhN,EAASnG,KAEbu0N,EAAUptN,SAAQ,SAAU8jJ,GAC1B,GAAsB,kBAAlBA,EAAS3tJ,OAA6B2tJ,EAASztJ,SAAW2I,EAAO+kO,WAAajgF,EAASztJ,SAAW2I,EAAOglO,YAAa,CACxH,IAAI72F,EAAQnuI,EAAO24N,QAAQ7zE,EAASztJ,QAChC82I,IAAOnhI,EAAQmhI,MAAQA,WAM5By5E,EAnFG,CAoFViE,EAAYn8J,QAAQk4J,OAEtBtyN,EAAQo6D,QAAUk4J,GAIZ,SAAUryN,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQ4vO,WAAa5vO,EAAQ6vO,WAAa7vO,EAAQ8vO,oBAAiB3tO,EAEnE,IAIgCmD,EAJ5B63N,EAAap9N,EAAoB,GAEjCw2N,GAE4BjxN,EAFS63N,IAEY73N,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEnFyB,EAAS,CACX4oE,MAAO4mJ,EAAYn8J,QAAQ+3J,MAAMoB,MACjC/5J,UAAW,CAAC,QAAS,SAAU,YAG7Bs2K,EAAiB,IAAIvZ,EAAYn8J,QAAQu4J,WAAWC,UAAU,QAAS,QAAS7rN,GAChF8oO,EAAa,IAAItZ,EAAYn8J,QAAQu4J,WAAWE,MAAM,QAAS,WAAY9rN,GAC3E6oO,EAAa,IAAIrZ,EAAYn8J,QAAQu4J,WAAWG,MAAM,QAAS,aAAc/rN,GAEjF/G,EAAQ8vO,eAAiBA,EACzB9vO,EAAQ6vO,WAAaA,EACrB7vO,EAAQ4vO,WAAaA,GAIf,SAAU3vO,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQ+vO,gBAAkB/vO,EAAQgwO,qBAAkB7tO,EAEpD,IAMgCmD,EAN5B63N,EAAap9N,EAAoB,GAEjCw2N,GAI4BjxN,EAJS63N,IAIY73N,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAFnF2qO,EAASlwO,EAAoB,IAI7BiwO,EAAkB,IAAIzZ,EAAYn8J,QAAQu4J,WAAWE,MAAM,aAAc,QAAS,CACpFljJ,MAAO4mJ,EAAYn8J,QAAQ+3J,MAAMqB,SAE/Buc,EAAkB,IAAIE,EAAO3C,gBAAgB,aAAc,mBAAoB,CACjF39J,MAAO4mJ,EAAYn8J,QAAQ+3J,MAAMqB,SAGnCxzN,EAAQgwO,gBAAkBA,EAC1BhwO,EAAQ+vO,gBAAkBA,GAIpB,SAAU9vO,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQkwO,eAAiBlwO,EAAQmwO,eAAiBnwO,EAAQowO,wBAAqBjuO,EAE/E,IAIgCmD,EAJ5B63N,EAAap9N,EAAoB,GAEjCw2N,GAE4BjxN,EAFS63N,IAEY73N,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEnFyB,EAAS,CACX4oE,MAAO4mJ,EAAYn8J,QAAQ+3J,MAAMoB,MACjC/5J,UAAW,CAAC,QAGV42K,EAAqB,IAAI7Z,EAAYn8J,QAAQu4J,WAAWC,UAAU,YAAa,MAAO7rN,GACtFopO,EAAiB,IAAI5Z,EAAYn8J,QAAQu4J,WAAWE,MAAM,YAAa,eAAgB9rN,GACvFmpO,EAAiB,IAAI3Z,EAAYn8J,QAAQu4J,WAAWG,MAAM,YAAa,YAAa/rN,GAExF/G,EAAQowO,mBAAqBA,EAC7BpwO,EAAQmwO,eAAiBA,EACzBnwO,EAAQkwO,eAAiBA,GAInB,SAAUjwO,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQqwO,UAAYrwO,EAAQswO,eAAYnuO,EAExC,IAQgCmD,EAR5BE,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAIfq3N,EAAap9N,EAAoB,GAEjCw2N,GAE4BjxN,EAFS63N,IAEY73N,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEvF,SAASmsD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAIlO,IAAIwH,EAAS,CACX4oE,MAAO4mJ,EAAYn8J,QAAQ+3J,MAAMqB,OACjCh6J,UAAW,CAAC,QAAS,cAGnB62K,EAAY,IAAI9Z,EAAYn8J,QAAQu4J,WAAWE,MAAM,OAAQ,UAAW9rN,GAqBxEupO,EAAY,IAnBU,SAAU/C,GAGlC,SAASgD,IAGP,OAFA9+K,EAAgBltD,KAAMgsO,GAEfr0N,EAA2B3X,MAAOgsO,EAAoBh0N,WAAand,OAAOoxC,eAAe+/L,IAAsB/nO,MAAMjE,KAAM8B,YAUpI,OAzBF,SAAmB8V,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAU/dI,CAAU+zN,EAAqBhD,GAQ/B/nO,EAAa+qO,EAAqB,CAAC,CACjC9sO,IAAK,QACLN,MAAO,SAAes8C,GACpB,OAjCK,SAAS18C,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,EAiC5Y5J,CAAK+uJ,EAAoBlxO,UAAUkd,WAAand,OAAOoxC,eAAe+/L,EAAoBlxO,WAAY,QAASkF,MAAMhF,KAAKgF,KAAMk7C,GAAMn0C,QAAQ,QAAS,QAI3JilO,EAhBiB,CAiBxBha,EAAYn8J,QAAQu4J,WAAWG,OAEjB,CAAwB,OAAQ,cAAe/rN,GAE/D/G,EAAQswO,UAAYA,EACpBtwO,EAAQqwO,UAAYA,GAId,SAAUpwO,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQwwO,UAAYxwO,EAAQywO,eAAYtuO,EAExC,IAIgCmD,EAJ5B63N,EAAap9N,EAAoB,GAEjCw2N,GAE4BjxN,EAFS63N,IAEY73N,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEnFmrO,EAAY,IAAIla,EAAYn8J,QAAQu4J,WAAWE,MAAM,OAAQ,UAAW,CAC1EljJ,MAAO4mJ,EAAYn8J,QAAQ+3J,MAAMqB,OACjCh6J,UAAW,CAAC,QAAS,QAAS,UAE5Bg3K,EAAY,IAAIja,EAAYn8J,QAAQu4J,WAAWG,MAAM,OAAQ,YAAa,CAC5EnjJ,MAAO4mJ,EAAYn8J,QAAQ+3J,MAAMqB,OACjCh6J,UAAW,CAAC,OAAQ,OAAQ,UAG9Bx5D,EAAQywO,UAAYA,EACpBzwO,EAAQwwO,UAAYA,GAId,SAAUvwO,EAAQD,EAASD,GAEjC,aAGAE,EAAOD,QAAU,CACf,MAAS,CACP,GAAID,EAAoB,IACxB,OAAUA,EAAoB,IAC9B,MAASA,EAAoB,IAC7B,QAAWA,EAAoB,KAEjC,WAAcA,EAAoB,IAClC,WAAcA,EAAoB,IAClC,KAAQA,EAAoB,IAC5B,MAASA,EAAoB,IAC7B,KAAQA,EAAoB,IAC5B,aAAcA,EAAoB,IAClC,MAASA,EAAoB,IAC7B,UAAa,CACX,GAAIA,EAAoB,IACxB,IAAOA,EAAoB,KAE7B,MAAS,CACP,OAAUA,EAAoB,IAC9B,KAAQA,EAAoB,IAC5B,KAAQA,EAAoB,IAC5B,MAASA,EAAoB,KAE/B,QAAWA,EAAoB,IAC/B,OAAU,CACR,EAAKA,EAAoB,IACzB,EAAKA,EAAoB,KAE3B,OAAUA,EAAoB,IAC9B,MAASA,EAAoB,IAC7B,OAAU,CACR,KAAMA,EAAoB,IAC1B,KAAMA,EAAoB,KAE5B,KAAQA,EAAoB,IAC5B,KAAQ,CACN,QAAWA,EAAoB,IAC/B,OAAUA,EAAoB,KAC9B,MAASA,EAAoB,MAE/B,OAAU,CACR,IAAOA,EAAoB,KAC3B,MAASA,EAAoB,MAE/B,OAAUA,EAAoB,KAC9B,UAAaA,EAAoB,KACjC,MAASA,EAAoB,OAKzB,SAAUE,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQ0wO,mBAAqB1wO,EAAQo6D,aAAUj4D,EAE/C,IAAIqD,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAIfywN,EAAcF,EAFDt2N,EAAoB,IAMjCipO,EAAU3S,EAFDt2N,EAAoB,IAQjC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAQvF,IAAI0oE,EAAU,SAAUm7J,GAGtB,SAASn7J,EAAQ8vJ,EAAO/1N,IAT1B,SAAyBqkD,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAU5Go1C,CAAgBltD,KAAMypE,GAEtB,IAAI9jE,EAVR,SAAoC8R,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAUlN2c,CAA2B3X,MAAOypE,EAAQzxD,WAAand,OAAOoxC,eAAew9B,IAAUzuE,KAAKgF,KAAMu5N,EAAO/1N,IAkBrH,OAhBAmC,EAAMymO,aAAe,EACrBzmO,EAAM0mO,cAAe,EACrB1mO,EAAM0pC,QACN1pC,EAAM4zN,MAAMlsL,GAAGo3L,EAAQ5uK,QAAQt+C,OAAO48M,eAAe,SAAUl6M,EAAWo3G,EAAO0mG,EAAU1zL,GACrFpqB,IAAcwqN,EAAQ5uK,QAAQt+C,OAAO68M,aAAezuN,EAAM0mO,eACzD1mO,EAAMnC,QAAQ8oO,UAAYjoM,IAAWogM,EAAQ5uK,QAAQ3Y,QAAQs6K,KAGhE7xN,EAAMm8D,UAAUuvD,GAFhB1rH,EAAMkrE,OAAOwgD,EAAO0mG,OAKxBpyN,EAAM4zN,MAAM7/D,SAASorE,WAAW,CAAE5lO,IAAK,IAAK0oO,UAAU,GAAQjiO,EAAM4mO,KAAKptO,KAAKwG,IAC9EA,EAAM4zN,MAAM7/D,SAASorE,WAAW,CAAE5lO,IAAK,IAAK0oO,UAAU,EAAM/8G,UAAU,GAAQllH,EAAM6mO,KAAKrtO,KAAKwG,IAC1F,OAAOvD,KAAK+2C,UAAUurL,WACxB/+N,EAAM4zN,MAAM7/D,SAASorE,WAAW,CAAE5lO,IAAK,IAAK0oO,UAAU,GAAQjiO,EAAM6mO,KAAKrtO,KAAKwG,IAEzEA,EAwET,OAlGF,SAAmBiS,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAG/dI,CAAUwxD,EAASm7J,GA0BnB3jO,EAAawoE,EAAS,CAAC,CACrBvqE,IAAK,SACLN,MAAO,SAAgBylC,EAAQsoF,GAC7B,GAAkC,IAA9B3sH,KAAK0kB,MAAM2f,GAAQzpC,OAAvB,CACA,IAAIy2H,EAAQrxH,KAAK0kB,MAAM2f,GAAQswB,MAC/B30D,KAAK0kB,MAAMioG,GAAMzxH,KAAKm2H,GACtBrxH,KAAKosO,aAAe,EACpBpsO,KAAKqsO,cAAe,EACpBrsO,KAAKu5N,MAAM0O,eAAe52G,EAAMhtF,GAASogM,EAAQ5uK,QAAQ3Y,QAAQs6K,MACjEx3N,KAAKqsO,cAAe,EACpB,IAAI1iO,EAAQwiO,EAAmB96G,EAAMhtF,IACrCrkC,KAAKu5N,MAAMhE,aAAa5rN,MAEzB,CACDzK,IAAK,QACLN,MAAO,WACLoB,KAAK0kB,MAAQ,CAAE6nN,KAAM,GAAIC,KAAM,MAEhC,CACDttO,IAAK,SACLN,MAAO,WACLoB,KAAKosO,aAAe,IAErB,CACDltO,IAAK,SACLN,MAAO,SAAgB6tO,EAAa1U,GAClC,GAA+B,IAA3B0U,EAAYx6J,IAAIr3E,OAApB,CACAoF,KAAK0kB,MAAM8nN,KAAO,GAClB,IAAIE,EAAY1sO,KAAKu5N,MAAMpD,cAAc75L,KAAKy7L,GAC1C/tK,EAAY3wC,KAAKC,MACrB,GAAItZ,KAAKosO,aAAepsO,KAAKwD,QAAQ4nG,MAAQphD,GAAahqD,KAAK0kB,MAAM6nN,KAAK3xO,OAAS,EAAG,CACpF,IAAIy2H,EAAQrxH,KAAK0kB,MAAM6nN,KAAK53K,MAC5B+3K,EAAYA,EAAUp+L,QAAQ+iF,EAAMk7G,MACpCE,EAAcp7G,EAAMm7G,KAAKl+L,QAAQm+L,QAEjCzsO,KAAKosO,aAAepiL,EAEtBhqD,KAAK0kB,MAAM6nN,KAAKrxO,KAAK,CACnBsxO,KAAMC,EACNF,KAAMG,IAEJ1sO,KAAK0kB,MAAM6nN,KAAK3xO,OAASoF,KAAKwD,QAAQmpO,UACxC3sO,KAAK0kB,MAAM6nN,KAAKlxO,WAGnB,CACD6D,IAAK,OACLN,MAAO,WACLoB,KAAKi8M,OAAO,OAAQ,UAErB,CACD/8M,IAAK,YACLN,MAAO,SAAmByyH,GACxBrxH,KAAK0kB,MAAM6nN,KAAKplO,SAAQ,SAAU80M,GAChCA,EAAOswB,KAAOl7G,EAAMvvD,UAAUm6I,EAAOswB,MAAM,GAC3CtwB,EAAOuwB,KAAOn7G,EAAMvvD,UAAUm6I,EAAOuwB,MAAM,MAE7CxsO,KAAK0kB,MAAM8nN,KAAKrlO,SAAQ,SAAU80M,GAChCA,EAAOswB,KAAOl7G,EAAMvvD,UAAUm6I,EAAOswB,MAAM,GAC3CtwB,EAAOuwB,KAAOn7G,EAAMvvD,UAAUm6I,EAAOuwB,MAAM,QAG9C,CACDttO,IAAK,OACLN,MAAO,WACLoB,KAAKi8M,OAAO,OAAQ,YAIjBxyI,EAhGK,CAVCqoJ,EAFDt2N,EAAoB,IA6GvBq6D,SAsBX,SAASs2K,EAAmB96G,GAC1B,IAAIu7G,EAAev7G,EAAM9rE,QAAO,SAAU3qD,EAAQu3E,GAEhD,OADAv3E,GAAUu3E,EAAGr1D,QAAU,IAEtB,GACC+vN,EAAcx7G,EAAMz2H,SAAWgyO,EAInC,OAvBF,SAA+Bv7G,GAC7B,IAAI2+F,EAAS3+F,EAAMp/C,IAAIo/C,EAAMp/C,IAAIr3E,OAAS,GAC1C,OAAc,MAAVo1N,IACiB,MAAjBA,EAAO5qK,OACuB,iBAAlB4qK,EAAO5qK,QAAuB4qK,EAAO5qK,OAAOqtK,SAAS,MAE5C,MAArBzC,EAAO/mH,YACFpuG,OAAO0Z,KAAKy7M,EAAO/mH,YAAYpqF,MAAK,SAAUwxB,GACnD,OAA2E,MAApE2hL,EAAYn8J,QAAQ+oB,MAAMvuC,EAAM2hL,EAAYn8J,QAAQ+3J,MAAMoB,WAYjE8d,CAAsBz7G,KACxBw7G,GAAe,GAEVA,EA7BTpjK,EAAQguJ,SAAW,CACjBrsH,MAAO,IACPuhI,SAAU,IACVL,UAAU,GA6BZ7wO,EAAQo6D,QAAU4T,EAClBhuE,EAAQ0wO,mBAAqBA,GAIvB,SAAUzwO,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQo6D,QAAUp6D,EAAQsxO,iBAAcnvO,EAExC,IAAIqD,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAMfswN,EAAWC,EAFDt2N,EAAoB,IAM9Bu2N,EAAeD,EAFDt2N,EAAoB,IAMlC08N,EAAYpG,EAFDt2N,EAAoB,IAM/BguO,EAAa1X,EAFDt2N,EAAoB,KAMhCg4N,EAAU1B,EAFDt2N,EAAoB,KAM7BwxO,EAAgBlb,EAFDt2N,EAAoB,KAMnCyxO,EAAenb,EAFDt2N,EAAoB,KAMlC0xO,EAAWpb,EAFDt2N,EAAoB,KAM9B2xO,EAAYrb,EAFDt2N,EAAoB,KAInC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEvF,SAASmsD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAElO,SAASid,EAAUL,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAEje,IAAIu1N,EAAS,EAAC,EAAO,SAAU,QAAS,WAEpCC,EAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAEhYC,EAAQ,EAAC,EAAO,QAAS,aAEzBC,EAAU,CAAC,IAAK,IAAK,KAAK,GAE1BC,EAAQ,CAAC,SAAS,EAAO,QAAS,QAElCC,EAAY,SAAUC,GAGxB,SAASD,EAAUlU,EAAO/1N,GACxB0pD,EAAgBltD,KAAMytO,GAEtB,IAAI9nO,EAAQgS,EAA2B3X,MAAOytO,EAAUz1N,WAAand,OAAOoxC,eAAewhM,IAAYzyO,KAAKgF,KAAMu5N,EAAO/1N,IAkBzH,OADA+1N,EAAMzF,QAAQuK,UAAU,QAAShiO,SAAS8e,MAf3B,SAAS6zB,EAASpzC,GAC/B,IAAKS,SAAS8e,KAAKi4F,SAASmmH,EAAMjhJ,MAChC,OAAOj8E,SAAS8e,KAAKunG,oBAAoB,QAAS1zE,GAE/B,MAAjBrpC,EAAMgoO,SAAoBhoO,EAAMgoO,QAAQr1J,KAAK86B,SAASx3G,EAAE4B,SAAWnB,SAASu+G,gBAAkBj1G,EAAMgoO,QAAQC,SAAYjoO,EAAM4zN,MAAM1+G,YACtIl1G,EAAMgoO,QAAQn7L,OAEK,MAAjB7sC,EAAMkoO,SACRloO,EAAMkoO,QAAQ1mO,SAAQ,SAAU2mO,GACzBA,EAAOz/N,UAAU+kG,SAASx3G,EAAE4B,SAC/BswO,EAAOjoK,cAMRlgE,EAyET,OAhGAsS,EAAUw1N,EAAWC,GA0BrBzsO,EAAawsO,EAAW,CAAC,CACvBvuO,IAAK,YACLN,MAAO,SAAmBlB,GACxB,IAAIhC,EAtFC,SAAS8C,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,EAsFtY5J,CAAKwwJ,EAAU3yO,UAAUkd,WAAand,OAAOoxC,eAAewhM,EAAU3yO,WAAY,YAAakF,MAAMhF,KAAKgF,KAAMtC,GAI7H,MAHa,YAATA,GACFsC,KAAK+tO,cAAcryO,GAEdA,IAER,CACDwD,IAAK,eACLN,MAAO,SAAsBosH,EAASgjH,GACpChjH,EAAQ7jH,SAAQ,SAAUoiH,IACRA,EAAOniD,aAAa,UAAY,IACtC97C,MAAM,OAAOnkB,SAAQ,SAAUzJ,GACvC,GAAKA,EAAKy1E,WAAW,SACrBz1E,EAAOA,EAAKmC,MAAM,MAAMjF,QACL,MAAfozO,EAAMtwO,IACV,GAAa,cAATA,EACF6rH,EAAOt/D,UAAY+jL,EAAMtwO,GAAM,IAAMswO,EAAMtwO,GAAW,SACjD,GAA2B,iBAAhBswO,EAAMtwO,GACtB6rH,EAAOt/D,UAAY+jL,EAAMtwO,OACpB,CACL,IAAIkB,EAAQ2qH,EAAO3qH,OAAS,GACf,MAATA,GAAiBovO,EAAMtwO,GAAMkB,KAC/B2qH,EAAOt/D,UAAY+jL,EAAMtwO,GAAMkB,aAMxC,CACDM,IAAK,eACLN,MAAO,SAAsBqvO,EAASD,GACpC,IAAI7nO,EAASnG,KAEbA,KAAK6tO,QAAUI,EAAQtpO,KAAI,SAAUguG,GACnC,GAAIA,EAAOvtB,UAAUguB,SAAS,YAI5B,OAHsC,MAAlCT,EAAOhzC,cAAc,WACvBuuK,EAAWv7H,EAAQy6H,GAEd,IAAIH,EAAap3K,QAAQ88C,EAAQq7H,EAAMG,OACzC,GAAIx7H,EAAOvtB,UAAUguB,SAAS,kBAAoBT,EAAOvtB,UAAUguB,SAAS,YAAa,CAC9F,IAAIxzF,EAAS+yF,EAAOvtB,UAAUguB,SAAS,iBAAmB,aAAe,QAIzE,OAHsC,MAAlCT,EAAOhzC,cAAc,WACvBuuK,EAAWv7H,EAAQ06H,EAAmB,eAAXztN,EAA0B,UAAY,WAE5D,IAAIotN,EAAcn3K,QAAQ88C,EAAQq7H,EAAMpuN,IAW/C,OATsC,MAAlC+yF,EAAOhzC,cAAc,YACnBgzC,EAAOvtB,UAAUguB,SAAS,WAC5B86H,EAAWv7H,EAAQ26H,GACV36H,EAAOvtB,UAAUguB,SAAS,aACnC86H,EAAWv7H,EAAQ46H,GACV56H,EAAOvtB,UAAUguB,SAAS,YACnC86H,EAAWv7H,EAAQ66H,IAGhB,IAAIN,EAASr3K,QAAQ88C,MAQhC3yG,KAAKu5N,MAAMlsL,GAAG6qL,EAAUriK,QAAQt+C,OAAO48M,eAL1B,WACXhuN,EAAO0nO,QAAQ1mO,SAAQ,SAAU2mO,GAC/BA,EAAOpxN,mBAOR+wN,EAjGO,CAkGdja,EAAQ39J,SAEV43K,EAAUhW,UAAW,EAAI5F,EAASh8J,UAAS,EAAM,GAAI29J,EAAQ39J,QAAQ4hK,SAAU,CAC7Et8N,QAAS,CACPitK,QAAS,CACPrgD,SAAU,CACRqmH,QAAS,WACPpuO,KAAKu5N,MAAMlxD,MAAMslE,QAAQU,KAAK,YAEhC1jM,MAAO,WACL,IAAIr8B,EAAStO,KAETsuO,EAAYtuO,KAAKqO,UAAUsxD,cAAc,6BAC5B,MAAb2uK,KACFA,EAAYjyO,SAASC,cAAc,UACzBI,aAAa,OAAQ,QAC/B4xO,EAAU5xO,aAAa,SAAU,6DACjC4xO,EAAUlpJ,UAAUt0E,IAAI,YACxBw9N,EAAUp+H,iBAAiB,UAAU,WACnC,GAAuB,MAAnBo+H,EAAUC,OAAuC,MAAtBD,EAAUC,MAAM,GAAY,CACzD,IAAIhzL,EAAS,IAAID,WACjBC,EAAOr+C,OAAS,SAAUtB,GACxB,IAAI04I,EAAQhmI,EAAOirN,MAAMnE,cAAa,GACtC9mN,EAAOirN,MAAM0O,gBAAe,IAAIlW,EAAal8J,SAAUk6J,OAAOz7E,EAAM3qI,OAAOmT,OAAOw3H,EAAM15I,QAAQwqD,OAAO,CAAEza,MAAO/uC,EAAE4B,OAAOuS,SAAWmoN,EAAUriK,QAAQ3Y,QAAQs6K,MAC9JlpN,EAAOirN,MAAMhE,aAAajhF,EAAM3qI,MAAQ,EAAGuuN,EAAUriK,QAAQ3Y,QAAQs4K,QACrE8Y,EAAU1vO,MAAQ,IAEpB28C,EAAOI,cAAc2yL,EAAUC,MAAM,QAGzCvuO,KAAKqO,UAAUtQ,YAAYuwO,IAE7BA,EAAU/6L,SAEZi7L,MAAO,WACLxuO,KAAKu5N,MAAMlxD,MAAMslE,QAAQU,KAAK,eAOxC,IAAItB,EAAc,SAAU0B,GAG1B,SAAS1B,EAAYxT,EAAOmV,GAC1BxhL,EAAgBltD,KAAM+sO,GAEtB,IAAIt+N,EAASkJ,EAA2B3X,MAAO+sO,EAAY/0N,WAAand,OAAOoxC,eAAe8gM,IAAc/xO,KAAKgF,KAAMu5N,EAAOmV,IAI9H,OAFAjgO,EAAOm/N,QAAUn/N,EAAO6pE,KAAK3Y,cAAc,sBAC3ClxD,EAAO42N,SACA52N,EA2FT,OApGAwJ,EAAU80N,EAAa0B,GAYvBxtO,EAAa8rO,EAAa,CAAC,CACzB7tO,IAAK,SACLN,MAAO,WACL,IAAIkR,EAAS9P,KAEbA,KAAK4tO,QAAQ19H,iBAAiB,WAAW,SAAUlzG,GAC7CwsO,EAAW3zK,QAAQtuC,MAAMvqB,EAAO,UAClC8S,EAAO4sD,OACP1/D,EAAMmsH,kBACGqgH,EAAW3zK,QAAQtuC,MAAMvqB,EAAO,YACzC8S,EAAO/F,SACP/M,EAAMmsH,uBAIX,CACDjqH,IAAK,SACLN,MAAO,WACLoB,KAAKwyC,SAEN,CACDtzC,IAAK,OACLN,MAAO,WACL,IAAIE,EAAOgD,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,OAC3E6sO,EAAU7sO,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,KAElF9B,KAAKs4E,KAAK8M,UAAUt1C,OAAO,aAC3B9vC,KAAKs4E,KAAK8M,UAAUt0E,IAAI,cACT,MAAX69N,EACF3uO,KAAK4tO,QAAQhvO,MAAQ+vO,EACZ7vO,IAASkB,KAAKs4E,KAAKlR,aAAa,eACzCpnE,KAAK4tO,QAAQhvO,MAAQ,IAEvBoB,KAAK2vH,SAAS3vH,KAAKu5N,MAAMzD,UAAU91N,KAAKu5N,MAAM3yG,UAAUs3G,aACxDl+N,KAAK4tO,QAAQj7H,SACb3yG,KAAK4tO,QAAQlxO,aAAa,cAAesD,KAAK4tO,QAAQxmK,aAAa,QAAUtoE,IAAS,IACtFkB,KAAKs4E,KAAK57E,aAAa,YAAaoC,KAErC,CACDI,IAAK,eACLN,MAAO,WACL,IAAI6zH,EAAYzyH,KAAKu5N,MAAM1F,mBAAmBphG,UAC9CzyH,KAAKu5N,MAAM3vG,QACX5pH,KAAKu5N,MAAM1F,mBAAmBphG,UAAYA,IAE3C,CACDvzH,IAAK,OACLN,MAAO,WACL,IA2CmB6J,EACnB8e,EA5CI3oB,EAAQoB,KAAK4tO,QAAQhvO,MACzB,OAAQoB,KAAKs4E,KAAKlR,aAAa,cAC7B,IAAK,OAED,IAAIqrD,EAAYzyH,KAAKu5N,MAAMjhJ,KAAKm6C,UAC5BzyH,KAAK4uO,WACP5uO,KAAKu5N,MAAMjE,WAAWt1N,KAAK4uO,UAAW,OAAQhwO,EAAOs5N,EAAUriK,QAAQ3Y,QAAQs6K,aACxEx3N,KAAK4uO,YAEZ5uO,KAAK6uO,eACL7uO,KAAKu5N,MAAM35M,OAAO,OAAQhhB,EAAOs5N,EAAUriK,QAAQ3Y,QAAQs6K,OAE7Dx3N,KAAKu5N,MAAMjhJ,KAAKm6C,UAAYA,EAC5B,MAEJ,IAAK,QA6BPlrG,GADmB9e,EA1BW7J,GA2BlB2oB,MAAM,+EAAiF9e,EAAI8e,MAAM,kEA3BvG3oB,EA4BN2oB,GACMA,EAAM,IAAM,SAAW,4BAA8BA,EAAM,GAAK,eAEtEA,EAAQ9e,EAAI8e,MAAM,oDAEZA,EAAM,IAAM,SAAW,6BAA+BA,EAAM,GAAK,IAEpE9e,EAjCD,IAAK,UAED,IAAK7J,EAAO,MACZ,IAAI01I,EAAQt0I,KAAKu5N,MAAMnE,cAAa,GACpC,GAAa,MAAT9gF,EAAe,CACjB,IAAI3qI,EAAQ2qI,EAAM3qI,MAAQ2qI,EAAM15I,OAChCoF,KAAKu5N,MAAM7C,YAAY/sN,EAAO3J,KAAKs4E,KAAKlR,aAAa,aAAcxoE,EAAOs5N,EAAUriK,QAAQ3Y,QAAQs6K,MACxD,YAAxCx3N,KAAKs4E,KAAKlR,aAAa,cACzBpnE,KAAKu5N,MAAM1C,WAAWltN,EAAQ,EAAG,IAAKuuN,EAAUriK,QAAQ3Y,QAAQs6K,MAElEx3N,KAAKu5N,MAAMhE,aAAa5rN,EAAQ,EAAGuuN,EAAUriK,QAAQ3Y,QAAQs6K,OAMrEx3N,KAAK4tO,QAAQhvO,MAAQ,GACrBoB,KAAKwyC,WAIFu6L,EArGS,CAsGhBI,EAAUt3K,SAcZ,SAASq4K,EAAWv7H,EAAQt/E,GAC1B,IAAIm/B,EAAe1wD,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,IAAmBA,UAAU,GAElFuxB,EAAOlsB,SAAQ,SAAUvI,GACvB,IAAIinH,EAASxpH,SAASC,cAAc,UAChCsC,IAAU4zD,EACZqzD,EAAOnpH,aAAa,WAAY,YAEhCmpH,EAAOnpH,aAAa,QAASkC,GAE/B+zG,EAAO50G,YAAY8nH,MAIvBpqH,EAAQsxO,YAAcA,EACtBtxO,EAAQo6D,QAAU43K,GAIZ,SAAU/xO,EAAQD,EAASD,GAEjC,aAEAX,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IACtD,IAAIkwO,EAA4B,WAC5B,SAASA,IACL9uO,KAAKlC,KAAOkC,KAAKi7E,KAAO,KACxBj7E,KAAKpF,OAAS,EA8HlB,OA5HAk0O,EAAWh0O,UAAUgwC,OAAS,WAE1B,IADA,IAAI4qD,EAAQ,GACHlqF,EAAK,EAAGA,EAAK1J,UAAUlH,OAAQ4Q,IACpCkqF,EAAMlqF,GAAM1J,UAAU0J,GAE1BxL,KAAKmhE,aAAau0B,EAAM,GAAI,MACxBA,EAAM96F,OAAS,GACfoF,KAAK8qC,OAAO7mC,MAAMjE,KAAM01F,EAAM71F,MAAM,KAG5CivO,EAAWh0O,UAAUs4G,SAAW,SAAUl4D,GAEtC,IADA,IAAIy7D,EAAK1zG,EAAOjD,KAAKc,WACb61G,EAAM1zG,KACV,GAAI0zG,IAAQz7D,EACR,OAAO,EAEf,OAAO,GAEX4zL,EAAWh0O,UAAUqmE,aAAe,SAAUjmB,EAAM25K,GAC3C35K,IAELA,EAAKj4C,KAAO4xN,EACG,MAAXA,GACA35K,EAAKxuC,KAAOmoN,EAAQnoN,KACA,MAAhBmoN,EAAQnoN,OACRmoN,EAAQnoN,KAAKzJ,KAAOi4C,GAExB25K,EAAQnoN,KAAOwuC,EACX25K,IAAY70N,KAAKlC,OACjBkC,KAAKlC,KAAOo9C,IAGE,MAAbl7C,KAAKi7E,MACVj7E,KAAKi7E,KAAKh4E,KAAOi4C,EACjBA,EAAKxuC,KAAO1M,KAAKi7E,KACjBj7E,KAAKi7E,KAAO//B,IAGZA,EAAKxuC,KAAO,KACZ1M,KAAKlC,KAAOkC,KAAKi7E,KAAO//B,GAE5Bl7C,KAAKpF,QAAU,IAEnBk0O,EAAWh0O,UAAU+gC,OAAS,SAAUr+B,GAEpC,IADA,IAAImM,EAAQ,EAAGgtG,EAAM32G,KAAKlC,KACZ,MAAP64G,GAAa,CAChB,GAAIA,IAAQn5G,EACR,OAAOmM,EACXA,GAASgtG,EAAI/7G,SACb+7G,EAAMA,EAAI1zG,KAEd,OAAQ,GAEZ6rO,EAAWh0O,UAAUg1C,OAAS,SAAUoL,GAC/Bl7C,KAAKozG,SAASl4D,KAEF,MAAbA,EAAKxuC,OACLwuC,EAAKxuC,KAAKzJ,KAAOi4C,EAAKj4C,MACT,MAAbi4C,EAAKj4C,OACLi4C,EAAKj4C,KAAKyJ,KAAOwuC,EAAKxuC,MACtBwuC,IAASl7C,KAAKlC,OACdkC,KAAKlC,KAAOo9C,EAAKj4C,MACjBi4C,IAASl7C,KAAKi7E,OACdj7E,KAAKi7E,KAAO//B,EAAKxuC,MACrB1M,KAAKpF,QAAU,IAEnBk0O,EAAWh0O,UAAUgG,SAAW,SAAUiuO,GAGtC,YAFgB,IAAZA,IAAsBA,EAAU/uO,KAAKlC,MAElC,WACH,IAAIk/B,EAAM+xM,EAGV,OAFe,MAAXA,IACAA,EAAUA,EAAQ9rO,MACf+5B,IAGf8xM,EAAWh0O,UAAUkL,KAAO,SAAU2D,EAAO+3N,QACvB,IAAdA,IAAwBA,GAAY,GAExC,IADA,IAAI/qH,EAAK1zG,EAAOjD,KAAKc,WACb61G,EAAM1zG,KAAS,CACnB,IAAIrI,EAAS+7G,EAAI/7G,SACjB,GAAI+O,EAAQ/O,GACP8mO,GAAa/3N,IAAU/O,IAAuB,MAAZ+7G,EAAI1zG,MAAsC,IAAtB0zG,EAAI1zG,KAAKrI,UAChE,MAAO,CAAC+7G,EAAKhtG,GAEjBA,GAAS/O,EAEb,MAAO,CAAC,KAAM,IAElBk0O,EAAWh0O,UAAUqM,QAAU,SAAU8f,GAErC,IADA,IAAI0vF,EAAK1zG,EAAOjD,KAAKc,WACb61G,EAAM1zG,KACVgkB,EAAS0vF,IAGjBm4H,EAAWh0O,UAAUumO,UAAY,SAAU13N,EAAO/O,EAAQqsB,GACtD,KAAIrsB,GAAU,GAId,IAFA,IACI+7G,EADA3sF,EAAKhqB,KAAKgG,KAAK2D,GAAQ+0N,EAAY10M,EAAG,GACjCglN,EAAWrlO,EADmCqgB,EAAG,GACtB/mB,EAAOjD,KAAKc,SAAS49N,IACjD/nH,EAAM1zG,MAAW+rO,EAAWrlO,EAAQ/O,GAAQ,CAChD,IAAIq0O,EAAYt4H,EAAI/7G,SAChB+O,EAAQqlO,EACR/nN,EAAS0vF,EAAKhtG,EAAQqlO,EAAU7rN,KAAKW,IAAIlpB,EAAQo0O,EAAWC,EAAYtlO,IAGxEsd,EAAS0vF,EAAK,EAAGxzF,KAAKW,IAAImrN,EAAWtlO,EAAQ/O,EAASo0O,IAE1DA,GAAYC,IAGpBH,EAAWh0O,UAAU6J,IAAM,SAAUsiB,GACjC,OAAOjnB,KAAKulD,QAAO,SAAU+Z,EAAMq3C,GAE/B,OADAr3C,EAAKpkE,KAAK+rB,EAAS0vF,IACZr3C,IACR,KAEPwvK,EAAWh0O,UAAUyqD,OAAS,SAAUt+B,EAAUq4C,GAE9C,IADA,IAAIq3C,EAAK1zG,EAAOjD,KAAKc,WACb61G,EAAM1zG,KACVq8D,EAAOr4C,EAASq4C,EAAMq3C,GAE1B,OAAOr3C,GAEJwvK,EAjIoB,GAmI/BrzO,EAAQo6D,QAAUi5K,GAKZ,SAAUpzO,EAAQD,EAASD,GAEjC,aAEA,IACQizN,EADJC,EAAa1uN,MAAQA,KAAK0uN,YACtBD,EAAgB5zN,OAAOkd,gBACtB,CAAEC,UAAW,cAAgBtX,OAAS,SAAUvC,EAAGwT,GAAKxT,EAAE6Z,UAAYrG,IACvE,SAAUxT,EAAGwT,GAAK,IAAK,IAAI/U,KAAK+U,EAAOA,EAAE5W,eAAe6B,KAAIuB,EAAEvB,GAAK+U,EAAE/U,KAClE,SAAUuB,EAAGwT,GAEhB,SAASszF,IAAOjlG,KAAKgB,YAAc7C,EADnCswN,EAActwN,EAAGwT,GAEjBxT,EAAErD,UAAkB,OAAN6W,EAAa9W,OAAOoE,OAAO0S,IAAMszF,EAAGnqG,UAAY6W,EAAE7W,UAAW,IAAImqG,KAGvFpqG,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IACtD,IAAIkuN,EAActxN,EAAoB,IAClCkyN,EAAWlyN,EAAoB,GAC/B0zO,EAAkB,CAClBjmI,YAAY,EACZkmI,eAAe,EACfC,uBAAuB,EACvBC,WAAW,EACXC,SAAS,GAGTC,EAA4B,SAAU3gB,GAEtC,SAAS2gB,EAAWr0L,GAChB,IAAIv1C,EAAQipN,EAAO5zN,KAAKgF,KAAMk7C,IAASl7C,KAOvC,OANA2F,EAAMouN,OAASpuN,EACfA,EAAM0oD,SAAW,IAAIq6C,kBAAiB,SAAU6rH,GAC5C5uN,EAAM+W,OAAO63M,MAEjB5uN,EAAM0oD,SAAS86C,QAAQxjG,EAAM0sN,QAAS6c,GACtCvpO,EAAMmtM,SACCntM,EA8IX,OAvJA+oN,EAAU6gB,EAAY3gB,GAWtB2gB,EAAWz0O,UAAU+yH,OAAS,WAC1B+gG,EAAO9zN,UAAU+yH,OAAO7yH,KAAKgF,MAC7BA,KAAKquD,SAAS+6C,cAElBmmI,EAAWz0O,UAAUigO,SAAW,SAAUpxN,EAAO/O,GAC7CoF,KAAK0c,SACS,IAAV/S,GAAe/O,IAAWoF,KAAKpF,SAC/BoF,KAAK4vC,SAASzoC,SAAQ,SAAU8jF,GAC5BA,EAAMn7C,YAIV8+K,EAAO9zN,UAAUigO,SAAS//N,KAAKgF,KAAM2J,EAAO/O,IAGpD20O,EAAWz0O,UAAUsgO,SAAW,SAAUzxN,EAAO/O,EAAQ8C,EAAMkB,GAC3DoB,KAAK0c,SACLkyM,EAAO9zN,UAAUsgO,SAASpgO,KAAKgF,KAAM2J,EAAO/O,EAAQ8C,EAAMkB,IAE9D2wO,EAAWz0O,UAAUmmE,SAAW,SAAUt3D,EAAO/K,EAAO4zN,GACpDxyN,KAAK0c,SACLkyM,EAAO9zN,UAAUmmE,SAASjmE,KAAKgF,KAAM2J,EAAO/K,EAAO4zN,IAEvD+c,EAAWz0O,UAAU0gO,SAAW,SAAUjH,EAAWphN,GACjD,IAAIxN,EAAQ3F,UACM,IAAdu0N,IAAwBA,EAAY,SACxB,IAAZphN,IAAsBA,EAAU,IACpCy7M,EAAO9zN,UAAU0gO,SAASxgO,KAAKgF,KAAMmT,GAKrC,IAHA,IAAIw9D,EAAU,GAAG9wE,MAAM7E,KAAKgF,KAAKquD,SAASk2K,eAGnC5zJ,EAAQ/1E,OAAS,GACpB25N,EAAUr5N,KAAKy1E,EAAQhc,OA+B3B,IA7BA,IAAI66K,EAAO,SAAUlgB,EAAMmgB,QACJ,IAAfA,IAAyBA,GAAa,GAC9B,MAARngB,GAAgBA,IAAS3pN,GAEE,MAA3B2pN,EAAK+C,QAAQ/wJ,aAGgC,MAA7CguJ,EAAK+C,QAAQ3E,EAASyB,UAAUoF,YAEhCjF,EAAK+C,QAAQ3E,EAASyB,UAAUoF,UAAY,IAE5Ckb,GACAD,EAAKlgB,EAAK/gN,UAEditN,EAAW,SAAUlM,GAIc,MAAnCA,EAAK+C,QAAQ3E,EAASyB,WAE2B,MAA7CG,EAAK+C,QAAQ3E,EAASyB,UAAUoF,YAGhCjF,aAAgBxC,EAAYj3J,SAC5By5J,EAAK1/K,SAASzoC,QAAQq0N,GAE1BlM,EAAKkM,SAASroN,KAEd+mE,EAAYq6I,EACP75N,EAAI,EAAGw/E,EAAUt/E,OAAS,EAAGF,GAAK,EAAG,CAC1C,GAAIA,GA9Ec,IA+Ed,MAAM,IAAIqC,MAAM,mDA4BpB,IA1BAm9E,EAAU/yE,SAAQ,SAAU8jJ,GACxB,IAAIqkE,EAAO5B,EAAS1nN,KAAKilJ,EAASztJ,QAAQ,GAC9B,MAAR8xN,IAEAA,EAAK+C,UAAYpnE,EAASztJ,SACJ,cAAlBytJ,EAAS3tJ,MACTkyO,EAAK9hB,EAAS1nN,KAAKilJ,EAAS9d,iBAAiB,IAC7C,GAAGhmI,QAAQnM,KAAKiwJ,EAAS02E,YAAY,SAAUzmL,GAC3C,IAAI+vC,EAAQyiI,EAAS1nN,KAAKk1C,GAAM,GAChCs0L,EAAKvkJ,GAAO,GACRA,aAAiB6hI,EAAYj3J,SAC7Bo1B,EAAMr7C,SAASzoC,SAAQ,SAAUuoO,GAC7BF,EAAKE,GAAY,UAKN,eAAlBzkF,EAAS3tJ,MACdkyO,EAAKlgB,EAAK5iN,OAGlB8iO,EAAKlgB,OAETtvN,KAAK4vC,SAASzoC,QAAQq0N,GAEtB7qJ,GADAuJ,EAAY,GAAGr6E,MAAM7E,KAAKgF,KAAKquD,SAASk2K,gBACpB1kO,QACb8wE,EAAQ/1E,OAAS,GACpB25N,EAAUr5N,KAAKy1E,EAAQhc,SAGnC46K,EAAWz0O,UAAU4hB,OAAS,SAAU63M,EAAWphN,GAC/C,IAAIxN,EAAQ3F,UACI,IAAZmT,IAAsBA,EAAU,KACpCohN,EAAYA,GAAav0N,KAAKquD,SAASk2K,eAGlC5/N,KAAI,SAAUsmJ,GACf,IAAIqkE,EAAO5B,EAAS1nN,KAAKilJ,EAASztJ,QAAQ,GAC1C,OAAY,MAAR8xN,EACO,KAEsC,MAA7CA,EAAK+C,QAAQ3E,EAASyB,UAAUoF,WAEhCjF,EAAK+C,QAAQ3E,EAASyB,UAAUoF,UAAY,CAACtpE,GACtCqkE,IAIPA,EAAK+C,QAAQ3E,EAASyB,UAAUoF,UAAUr5N,KAAK+vJ,GACxC,SAGV9jJ,SAAQ,SAAUmoN,GACP,MAARA,GACAA,IAAS3pN,GAE0B,MAAnC2pN,EAAK+C,QAAQ3E,EAASyB,WAG1BG,EAAK5yM,OAAO4yM,EAAK+C,QAAQ3E,EAASyB,UAAUoF,WAAa,GAAIphN,MAGhB,MAA7CnT,KAAKqyN,QAAQ3E,EAASyB,UAAUoF,WAEhC3F,EAAO9zN,UAAU4hB,OAAO1hB,KAAKgF,KAAMA,KAAKqyN,QAAQ3E,EAASyB,UAAUoF,UAAWphN,GAElFnT,KAAKw7N,SAASjH,EAAWphN,IAE7Bo8N,EAAW9f,SAAW,SACtB8f,EAAWzc,aAAe,QAC1Byc,EAAWnkK,MAAQsiJ,EAASE,MAAM8E,WAClC6c,EAAWh1E,QAAU,MACdg1E,EAxJoB,CAyJ7BziB,EAAYj3J,SACdp6D,EAAQo6D,QAAU05K,GAKZ,SAAU7zO,EAAQD,EAASD,GAEjC,aAEA,IACQizN,EADJC,EAAa1uN,MAAQA,KAAK0uN,YACtBD,EAAgB5zN,OAAOkd,gBACtB,CAAEC,UAAW,cAAgBtX,OAAS,SAAUvC,EAAGwT,GAAKxT,EAAE6Z,UAAYrG,IACvE,SAAUxT,EAAGwT,GAAK,IAAK,IAAI/U,KAAK+U,EAAOA,EAAE5W,eAAe6B,KAAIuB,EAAEvB,GAAK+U,EAAE/U,KAClE,SAAUuB,EAAGwT,GAEhB,SAASszF,IAAOjlG,KAAKgB,YAAc7C,EADnCswN,EAActwN,EAAGwT,GAEjBxT,EAAErD,UAAkB,OAAN6W,EAAa9W,OAAOoE,OAAO0S,IAAMszF,EAAGnqG,UAAY6W,EAAE7W,UAAW,IAAImqG,KAGvFpqG,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IACtD,IAAImuN,EAAWvxN,EAAoB,IAC/BkyN,EAAWlyN,EAAoB,GAa/Bm0O,EAA4B,SAAU/gB,GAEtC,SAAS+gB,IACL,OAAkB,OAAX/gB,GAAmBA,EAAO3qN,MAAMjE,KAAM8B,YAAc9B,KA8C/D,OAhDA0uN,EAAUihB,EAAY/gB,GAItB+gB,EAAWnwM,QAAU,SAAU6yL,GAC3B,GAAIA,EAAQ93D,UAAYo1E,EAAWp1E,QAEnC,OAAOq0D,EAAOpvL,QAAQxkC,KAAKgF,KAAMqyN,IAErCsd,EAAW70O,UAAU8kB,OAAS,SAAUliB,EAAMkB,GAC1C,IAAI+G,EAAQ3F,KACRtC,IAASsC,KAAK09I,QAAQ+xE,UAAa7wN,EAUnCgwN,EAAO9zN,UAAU8kB,OAAO5kB,KAAKgF,KAAMtC,EAAMkB,IATzCoB,KAAK4vC,SAASzoC,SAAQ,SAAU8jF,GACtBA,aAAiB8hI,EAASl3J,UAC5Bo1B,EAAQA,EAAM67B,KAAK6oH,EAAWlgB,UAAU,IAE5C9pN,EAAMsjG,WAAWx6C,KAAKw8B,MAE1BjrF,KAAKs+H,WAMbqxG,EAAW70O,UAAUsgO,SAAW,SAAUzxN,EAAO/O,EAAQ8C,EAAMkB,GAC/B,MAAxBoB,KAAKw/B,UAAU9hC,IAAiBgwN,EAAS9uI,MAAMlhF,EAAMgwN,EAASE,MAAMyM,WACzDr6N,KAAKw4N,QAAQ7uN,EAAO/O,GAC1BglB,OAAOliB,EAAMkB,GAGlBgwN,EAAO9zN,UAAUsgO,SAASpgO,KAAKgF,KAAM2J,EAAO/O,EAAQ8C,EAAMkB,IAGlE+wO,EAAW70O,UAAU0gO,SAAW,SAAUroN,GACtCy7M,EAAO9zN,UAAU0gO,SAASxgO,KAAKgF,KAAMmT,GACrC,IAAIqsB,EAAUx/B,KAAKw/B,UACnB,GAAoC,IAAhC3kC,OAAO0Z,KAAKirB,GAAS5kC,OACrB,OAAOoF,KAAKs+H,SAEhB,IAAIr7H,EAAOjD,KAAKiD,KACZA,aAAgB0sO,GAAc1sO,EAAKyJ,OAAS1M,MApDxD,SAAiB4vO,EAAMC,GACnB,GAAIh1O,OAAO0Z,KAAKq7N,GAAMh1O,SAAWC,OAAO0Z,KAAKs7N,GAAMj1O,OAC/C,OAAO,EAEX,IAAK,IAAIynB,KAAQutN,EAEb,GAAIA,EAAKvtN,KAAUwtN,EAAKxtN,GACpB,OAAO,EAEf,OAAO,EA2CqDytN,CAAQtwM,EAASv8B,EAAKu8B,aAC1Ev8B,EAAKw1N,aAAaz4N,MAClBiD,EAAK6sC,WAGb6/L,EAAWlgB,SAAW,SACtBkgB,EAAWvkK,MAAQsiJ,EAASE,MAAMsU,YAClCyN,EAAWp1E,QAAU,OACdo1E,EAjDoB,CAkD7B5iB,EAASl3J,SACXp6D,EAAQo6D,QAAU85K,GAKZ,SAAUj0O,EAAQD,EAASD,GAEjC,aAEA,IACQizN,EADJC,EAAa1uN,MAAQA,KAAK0uN,YACtBD,EAAgB5zN,OAAOkd,gBACtB,CAAEC,UAAW,cAAgBtX,OAAS,SAAUvC,EAAGwT,GAAKxT,EAAE6Z,UAAYrG,IACvE,SAAUxT,EAAGwT,GAAK,IAAK,IAAI/U,KAAK+U,EAAOA,EAAE5W,eAAe6B,KAAIuB,EAAEvB,GAAK+U,EAAE/U,KAClE,SAAUuB,EAAGwT,GAEhB,SAASszF,IAAOjlG,KAAKgB,YAAc7C,EADnCswN,EAActwN,EAAGwT,GAEjBxT,EAAErD,UAAkB,OAAN6W,EAAa9W,OAAOoE,OAAO0S,IAAMszF,EAAGnqG,UAAY6W,EAAE7W,UAAW,IAAImqG,KAGvFpqG,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IACtD,IAAImuN,EAAWvxN,EAAoB,IAC/BkyN,EAAWlyN,EAAoB,GAC/Bu0O,EAA2B,SAAUnhB,GAErC,SAASmhB,IACL,OAAkB,OAAXnhB,GAAmBA,EAAO3qN,MAAMjE,KAAM8B,YAAc9B,KAiD/D,OAnDA0uN,EAAUqhB,EAAWnhB,GAIrBmhB,EAAUvwM,QAAU,SAAU6yL,GAC1B,IAAI93D,EAAUmzD,EAAS9uI,MAAMmxJ,EAAUtgB,UAAUl1D,QACjD,GAAI83D,EAAQ93D,UAAYA,EAExB,OAAOq0D,EAAOpvL,QAAQxkC,KAAKgF,KAAMqyN,IAErC0d,EAAUj1O,UAAU8kB,OAAS,SAAUliB,EAAMkB,GACS,MAA9C8uN,EAAS9uI,MAAMlhF,EAAMgwN,EAASE,MAAMoB,SAG/BtxN,IAASsC,KAAK09I,QAAQ+xE,UAAa7wN,EAIxCgwN,EAAO9zN,UAAU8kB,OAAO5kB,KAAKgF,KAAMtC,EAAMkB,GAHzCoB,KAAK8tH,YAAYiiH,EAAUtgB,YAMnCsgB,EAAUj1O,UAAUsgO,SAAW,SAAUzxN,EAAO/O,EAAQ8C,EAAMkB,GACR,MAA9C8uN,EAAS9uI,MAAMlhF,EAAMgwN,EAASE,MAAMoB,OACpChvN,KAAK4f,OAAOliB,EAAMkB,GAGlBgwN,EAAO9zN,UAAUsgO,SAASpgO,KAAKgF,KAAM2J,EAAO/O,EAAQ8C,EAAMkB,IAGlEmxO,EAAUj1O,UAAUmmE,SAAW,SAAUt3D,EAAO/K,EAAO4zN,GACnD,GAAW,MAAPA,GAA+D,MAAhD9E,EAAS9uI,MAAMhgF,EAAO8uN,EAASE,MAAMqB,QAEpDL,EAAO9zN,UAAUmmE,SAASjmE,KAAKgF,KAAM2J,EAAO/K,EAAO4zN,OAElD,CACD,IAAI9qK,EAAQ1nD,KAAKsrB,MAAM3hB,GACnB2lN,EAAO5B,EAASzuN,OAAOL,EAAO4zN,GAClC9qK,EAAMn5C,OAAO4yD,aAAamuJ,EAAM5nK,KAGxCqoL,EAAUj1O,UAAU4hB,OAAS,SAAU63M,EAAWphN,GAC1CgmC,UAAUC,UAAU7xB,MAAM,WAC1BvnB,KAAKk5I,QAGL01E,EAAO9zN,UAAU4hB,OAAO1hB,KAAKgF,KAAMu0N,EAAWphN,IAGtD48N,EAAUtgB,SAAW,QACrBsgB,EAAU3kK,MAAQsiJ,EAASE,MAAM8E,WACjCqd,EAAUx1E,QAAU,IACbw1E,EApDmB,CAqD5BhjB,EAASl3J,SACXp6D,EAAQo6D,QAAUk6K,GAKZ,SAAUr0O,EAAQD,EAASD,GAEjC,aAEA,IACQizN,EADJC,EAAa1uN,MAAQA,KAAK0uN,YACtBD,EAAgB5zN,OAAOkd,gBACtB,CAAEC,UAAW,cAAgBtX,OAAS,SAAUvC,EAAGwT,GAAKxT,EAAE6Z,UAAYrG,IACvE,SAAUxT,EAAGwT,GAAK,IAAK,IAAI/U,KAAK+U,EAAOA,EAAE5W,eAAe6B,KAAIuB,EAAEvB,GAAK+U,EAAE/U,KAClE,SAAUuB,EAAGwT,GAEhB,SAASszF,IAAOjlG,KAAKgB,YAAc7C,EADnCswN,EAActwN,EAAGwT,GAEjBxT,EAAErD,UAAkB,OAAN6W,EAAa9W,OAAOoE,OAAO0S,IAAMszF,EAAGnqG,UAAY6W,EAAE7W,UAAW,IAAImqG,KAGvFpqG,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IACtD,IACIoxO,EAA2B,SAAUphB,GAErC,SAASohB,IACL,OAAkB,OAAXphB,GAAmBA,EAAO3qN,MAAMjE,KAAM8B,YAAc9B,KAsB/D,OAxBA0uN,EAAUshB,EAAWphB,GAIrBohB,EAAUxwM,QAAU,SAAU6yL,KAG9B2d,EAAUl1O,UAAU8kB,OAAS,SAAUliB,EAAMkB,GAIzCgwN,EAAO9zN,UAAUsgO,SAASpgO,KAAKgF,KAAM,EAAGA,KAAKpF,SAAU8C,EAAMkB,IAEjEoxO,EAAUl1O,UAAUsgO,SAAW,SAAUzxN,EAAO/O,EAAQ8C,EAAMkB,GAC5C,IAAV+K,GAAe/O,IAAWoF,KAAKpF,SAC/BoF,KAAK4f,OAAOliB,EAAMkB,GAGlBgwN,EAAO9zN,UAAUsgO,SAASpgO,KAAKgF,KAAM2J,EAAO/O,EAAQ8C,EAAMkB,IAGlEoxO,EAAUl1O,UAAU0kC,QAAU,WAC1B,OAAOx/B,KAAK09I,QAAQl+G,QAAQx/B,KAAKqyN,UAE9B2d,EAzBmB,CADjBx0O,EAAoB,IA2BxBq6D,SACTp6D,EAAQo6D,QAAUm6K,GAKZ,SAAUt0O,EAAQD,EAASD,GAEjC,aAEA,IACQizN,EADJC,EAAa1uN,MAAQA,KAAK0uN,YACtBD,EAAgB5zN,OAAOkd,gBACtB,CAAEC,UAAW,cAAgBtX,OAAS,SAAUvC,EAAGwT,GAAKxT,EAAE6Z,UAAYrG,IACvE,SAAUxT,EAAGwT,GAAK,IAAK,IAAI/U,KAAK+U,EAAOA,EAAE5W,eAAe6B,KAAIuB,EAAEvB,GAAK+U,EAAE/U,KAClE,SAAUuB,EAAGwT,GAEhB,SAASszF,IAAOjlG,KAAKgB,YAAc7C,EADnCswN,EAActwN,EAAGwT,GAEjBxT,EAAErD,UAAkB,OAAN6W,EAAa9W,OAAOoE,OAAO0S,IAAMszF,EAAGnqG,UAAY6W,EAAE7W,UAAW,IAAImqG,KAGvFpqG,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IACtD,IAAIouN,EAASxxN,EAAoB,IAC7BkyN,EAAWlyN,EAAoB,GAC/Bq9N,EAA0B,SAAUjK,GAEpC,SAASiK,EAAS39K,GACd,IAAIv1C,EAAQipN,EAAO5zN,KAAKgF,KAAMk7C,IAASl7C,KAEvC,OADA2F,EAAMujD,KAAOvjD,EAAM+3I,QAAQ9+I,MAAM+G,EAAM0sN,SAChC1sN,EA0EX,OA9EA+oN,EAAUmK,EAAUjK,GAMpBiK,EAAS55N,OAAS,SAAUL,GACxB,OAAOvC,SAAS4mE,eAAerkE,IAEnCi6N,EAASj6N,MAAQ,SAAUyzN,GACvB,IAAInpK,EAAOmpK,EAAQh4N,KAInB,OAFI6uD,EAAgB,YAChBA,EAAOA,EAAgB,aACpBA,GAEX2vK,EAAS/9N,UAAUigO,SAAW,SAAUpxN,EAAO/O,GAC3CoF,KAAKqyN,QAAQh4N,KAAO2F,KAAKkpD,KAAOlpD,KAAKkpD,KAAKrpD,MAAM,EAAG8J,GAAS3J,KAAKkpD,KAAKrpD,MAAM8J,EAAQ/O,IAExFi+N,EAAS/9N,UAAU6O,MAAQ,SAAUuxC,EAAMrf,GACvC,OAAI77B,KAAKqyN,UAAYn3K,EACVrf,GAEH,GAEZg9L,EAAS/9N,UAAUmmE,SAAW,SAAUt3D,EAAO/K,EAAO4zN,GACvC,MAAPA,GACAxyN,KAAKkpD,KAAOlpD,KAAKkpD,KAAKrpD,MAAM,EAAG8J,GAAS/K,EAAQoB,KAAKkpD,KAAKrpD,MAAM8J,GAChE3J,KAAKqyN,QAAQh4N,KAAO2F,KAAKkpD,MAGzB0lK,EAAO9zN,UAAUmmE,SAASjmE,KAAKgF,KAAM2J,EAAO/K,EAAO4zN,IAG3DqG,EAAS/9N,UAAUF,OAAS,WACxB,OAAOoF,KAAKkpD,KAAKtuD,QAErBi+N,EAAS/9N,UAAU0gO,SAAW,SAAUroN,GACpCy7M,EAAO9zN,UAAU0gO,SAASxgO,KAAKgF,KAAMmT,GACrCnT,KAAKkpD,KAAOlpD,KAAK09I,QAAQ9+I,MAAMoB,KAAKqyN,SACX,IAArBryN,KAAKkpD,KAAKtuD,OACVoF,KAAK8vC,SAEA9vC,KAAKiD,gBAAgB41N,GAAY74N,KAAKiD,KAAKyJ,OAAS1M,OACzDA,KAAKihE,SAASjhE,KAAKpF,SAAUoF,KAAKiD,KAAKrE,SACvCoB,KAAKiD,KAAK6sC,WAGlB+oL,EAAS/9N,UAAU60H,SAAW,SAAUhmH,EAAO+3N,GAE3C,YADkB,IAAdA,IAAwBA,GAAY,GACjC,CAAC1hO,KAAKqyN,QAAS1oN,IAE1BkvN,EAAS/9N,UAAUwwB,MAAQ,SAAU3hB,EAAO+mC,GAExC,QADc,IAAVA,IAAoBA,GAAQ,IAC3BA,EAAO,CACR,GAAc,IAAV/mC,EACA,OAAO3J,KACX,GAAI2J,IAAU3J,KAAKpF,SACf,OAAOoF,KAAKiD,KAEpB,IAAIykD,EAAQgmK,EAASzuN,OAAOe,KAAKqyN,QAAQvR,UAAUn3M,IAGnD,OAFA3J,KAAKuO,OAAO4yD,aAAazZ,EAAO1nD,KAAKiD,MACrCjD,KAAKkpD,KAAOlpD,KAAK09I,QAAQ9+I,MAAMoB,KAAKqyN,SAC7B3qK,GAEXmxK,EAAS/9N,UAAU4hB,OAAS,SAAU63M,EAAWphN,GAC7C,IAAIxN,EAAQ3F,KACRu0N,EAAU11M,MAAK,SAAUosI,GACzB,MAAyB,kBAAlBA,EAAS3tJ,MAA4B2tJ,EAASztJ,SAAWmI,EAAM0sN,aAEtEryN,KAAKkpD,KAAOlpD,KAAK09I,QAAQ9+I,MAAMoB,KAAKqyN,WAG5CwG,EAAS/9N,UAAU8D,MAAQ,WACvB,OAAOoB,KAAKkpD,MAEhB2vK,EAASpJ,SAAW,OACpBoJ,EAASztJ,MAAQsiJ,EAASE,MAAMsU,YACzBrJ,EA/EkB,CAgF3B7L,EAAOn3J,SACTp6D,EAAQo6D,QAAUgjK,GAKZ,SAAUn9N,EAAQD,EAASD,GAEjC,aAGA,IAAIi2G,EAAOp1G,SAASC,cAAc,OAElC,GADAm1G,EAAKrsB,UAAU8jB,OAAO,cAAc,GAChCuI,EAAKrsB,UAAUguB,SAAS,cAAe,CACzC,IAAI68H,EAAUC,aAAap1O,UAAUouG,OACrCgnI,aAAap1O,UAAUouG,OAAS,SAAUpiF,EAAO4pB,GAC/C,OAAI5uC,UAAUlH,OAAS,IAAMoF,KAAKozG,SAAStsF,KAAY4pB,EAC9CA,EAEAu/L,EAAQj1O,KAAKgF,KAAM8mB,IAK3B5J,OAAOpiB,UAAUq4E,aACpBj2D,OAAOpiB,UAAUq4E,WAAa,SAAUg9J,EAAcxgH,GAEpD,OADAA,EAAWA,GAAY,EAChB3vH,KAAKsF,OAAOqqH,EAAUwgH,EAAav1O,UAAYu1O,IAIrDjzN,OAAOpiB,UAAU23N,WACpBv1M,OAAOpiB,UAAU23N,SAAW,SAAU0d,EAAcxgH,GAClD,IAAIygH,EAAgBpwO,KAAKgf,YACD,iBAAb2wG,IAA0BlsG,SAASksG,IAAaxsG,KAAKE,MAAMssG,KAAcA,GAAYA,EAAWygH,EAAcx1O,UACvH+0H,EAAWygH,EAAcx1O,QAE3B+0H,GAAYwgH,EAAav1O,OACzB,IAAIitB,EAAYuoN,EAAc/+N,QAAQ8+N,EAAcxgH,GACpD,OAAsB,IAAf9nG,GAAoBA,IAAc8nG,IAIxCjvH,MAAM5F,UAAUkL,MACnBnL,OAAOyD,eAAeoC,MAAM5F,UAAW,OAAQ,CAC7C8D,MAAO,SAAesxN,GACpB,GAAa,OAATlwN,KACF,MAAM,IAAI8X,UAAU,oDAEtB,GAAyB,mBAAdo4M,EACT,MAAM,IAAIp4M,UAAU,gCAOtB,IALA,IAGIlZ,EAHAkV,EAAOjZ,OAAOmF,MACdpF,EAASkZ,EAAKlZ,SAAW,EACzB22E,EAAUzvE,UAAU,GAGfpH,EAAI,EAAGA,EAAIE,EAAQF,IAE1B,GADAkE,EAAQkV,EAAKpZ,GACTw1N,EAAUl1N,KAAKu2E,EAAS3yE,EAAOlE,EAAGoZ,GACpC,OAAOlV,KAQjBvC,SAAS6zG,iBAAiB,oBAAoB,WAE5C7zG,SAASg0O,YAAY,wBAAwB,GAAO,GAEpDh0O,SAASg0O,YAAY,iBAAiB,GAAO,OAKzC,SAAU30O,EAAQD,GA8CxB,SAAS60O,EAAUC,EAAOC,EAAOC,GAE/B,GAAIF,GAASC,EACX,OAAID,EACK,CAAC,CAfG,EAeUA,IAEhB,IAILE,EAAa,GAAKF,EAAM31O,OAAS61O,KACnCA,EAAa,MAIf,IAAIC,EAAeC,EAAkBJ,EAAOC,GACxCI,EAAeL,EAAMxuO,UAAU,EAAG2uO,GAKtCA,EAAeG,EAJfN,EAAQA,EAAMxuO,UAAU2uO,GACxBF,EAAQA,EAAMzuO,UAAU2uO,IAIxB,IAAII,EAAeP,EAAMxuO,UAAUwuO,EAAM31O,OAAS81O,GAK9CzsN,EAyBN,SAAuBssN,EAAOC,GAC5B,IAAIvsN,EAEJ,IAAKssN,EAEH,MAAO,CAAC,CArEM,EAqEQC,IAGxB,IAAKA,EAEH,MAAO,CAAC,EA3EM,EA2EQD,IAGxB,IAAIQ,EAAWR,EAAM31O,OAAS41O,EAAM51O,OAAS21O,EAAQC,EACjDQ,EAAYT,EAAM31O,OAAS41O,EAAM51O,OAAS41O,EAAQD,EAClD71O,EAAIq2O,EAAS1/N,QAAQ2/N,GACzB,IAAU,GAANt2O,EASF,OAPAupB,EAAQ,CAAC,CAlFK,EAkFS8sN,EAAShvO,UAAU,EAAGrH,IACpC,CAlFI,EAkFSs2O,GACb,CApFK,EAoFSD,EAAShvO,UAAUrH,EAAIs2O,EAAUp2O,UAEpD21O,EAAM31O,OAAS41O,EAAM51O,SACvBqpB,EAAM,GAAG,GAAKA,EAAM,GAAG,IAxFX,GA0FPA,EAGT,GAAwB,GAApB+sN,EAAUp2O,OAGZ,MAAO,CAAC,EAhGM,EAgGQ21O,GAAQ,CA/FhB,EA+F8BC,IAI9C,IAAIl4M,EAwON,SAAyBi4M,EAAOC,GAC9B,IAAIO,EAAWR,EAAM31O,OAAS41O,EAAM51O,OAAS21O,EAAQC,EACjDQ,EAAYT,EAAM31O,OAAS41O,EAAM51O,OAAS41O,EAAQD,EACtD,GAAIQ,EAASn2O,OAAS,GAAwB,EAAnBo2O,EAAUp2O,OAAam2O,EAASn2O,OACzD,OAAO,KAeT,SAASq2O,EAAiBF,EAAUC,EAAWt2O,GAM7C,IAJA,IAGIw2O,EAAiBC,EAAiBC,EAAkBC,EAHpD97H,EAAOw7H,EAAShvO,UAAUrH,EAAGA,EAAIyoB,KAAKE,MAAM0tN,EAASn2O,OAAS,IAC9Dg5B,GAAK,EACL09M,EAAc,IAE8B,IAAxC19M,EAAIo9M,EAAU3/N,QAAQkkG,EAAM3hF,EAAI,KAAW,CACjD,IAAI29M,EAAeZ,EAAkBI,EAAShvO,UAAUrH,GACnBs2O,EAAUjvO,UAAU6xB,IACrD0pM,EAAeuT,EAAkBE,EAAShvO,UAAU,EAAGrH,GACtBs2O,EAAUjvO,UAAU,EAAG6xB,IACxD09M,EAAY12O,OAAS0iO,EAAeiU,IACtCD,EAAcN,EAAUjvO,UAAU6xB,EAAI0pM,EAAc1pM,GAChDo9M,EAAUjvO,UAAU6xB,EAAGA,EAAI29M,GAC/BL,EAAkBH,EAAShvO,UAAU,EAAGrH,EAAI4iO,GAC5C6T,EAAkBJ,EAAShvO,UAAUrH,EAAI62O,GACzCH,EAAmBJ,EAAUjvO,UAAU,EAAG6xB,EAAI0pM,GAC9C+T,EAAmBL,EAAUjvO,UAAU6xB,EAAI29M,IAG/C,OAAyB,EAArBD,EAAY12O,QAAcm2O,EAASn2O,OAC9B,CAACs2O,EAAiBC,EACjBC,EAAkBC,EAAkBC,GAErC,KAKX,IAKIh5M,EAaAk5M,EAASC,EAASC,EAASC,EAlB3BC,EAAMX,EAAiBF,EAAUC,EACV7tN,KAAKC,KAAK2tN,EAASn2O,OAAS,IAEnDi3O,EAAMZ,EAAiBF,EAAUC,EACV7tN,KAAKC,KAAK2tN,EAASn2O,OAAS,IAEvD,IAAKg3O,IAAQC,EACX,OAAO,KAOPv5M,EANUu5M,EAEAD,GAILA,EAAI,GAAGh3O,OAASi3O,EAAI,GAAGj3O,OAASg3O,EAHhCC,EAFAD,EAUHrB,EAAM31O,OAAS41O,EAAM51O,QACvB42O,EAAUl5M,EAAG,GACbm5M,EAAUn5M,EAAG,GACbo5M,EAAUp5M,EAAG,GACbq5M,EAAUr5M,EAAG,KAEbo5M,EAAUp5M,EAAG,GACbq5M,EAAUr5M,EAAG,GACbk5M,EAAUl5M,EAAG,GACbm5M,EAAUn5M,EAAG,IAEf,IAAIw5M,EAAax5M,EAAG,GACpB,MAAO,CAACk5M,EAASC,EAASC,EAASC,EAASG,GAvTnCC,CAAgBxB,EAAOC,GAChC,GAAIl4M,EAAI,CAEN,IAAIk5M,EAAUl5M,EAAG,GACbm5M,EAAUn5M,EAAG,GACbo5M,EAAUp5M,EAAG,GACbq5M,EAAUr5M,EAAG,GACbw5M,EAAax5M,EAAG,GAEhB05M,EAAU1B,EAAUkB,EAASE,GAC7BO,EAAU3B,EAAUmB,EAASE,GAEjC,OAAOK,EAAQ7tO,OAAO,CAAC,CA9GV,EA8GuB2tO,IAAcG,GAGpD,OAaF,SAAsB1B,EAAOC,GAW3B,IATA,IAAI0B,EAAe3B,EAAM31O,OACrBu3O,EAAe3B,EAAM51O,OACrBw3O,EAAQjvN,KAAKC,MAAM8uN,EAAeC,GAAgB,GAClDE,EAAWD,EACXE,EAAW,EAAIF,EACfG,EAAK,IAAI7xO,MAAM4xO,GACfE,EAAK,IAAI9xO,MAAM4xO,GAGVprO,EAAI,EAAGA,EAAIorO,EAAUprO,IAC5BqrO,EAAGrrO,IAAM,EACTsrO,EAAGtrO,IAAM,EAEXqrO,EAAGF,EAAW,GAAK,EACnBG,EAAGH,EAAW,GAAK,EAWnB,IAVA,IAAIhhH,EAAQ6gH,EAAeC,EAGvBvrI,EAASyqB,EAAQ,GAAK,EAGtBohH,EAAU,EACVC,EAAQ,EACRC,EAAU,EACVC,EAAQ,EACHz0O,EAAI,EAAGA,EAAIi0O,EAAOj0O,IAAK,CAE9B,IAAK,IAAI00O,GAAM10O,EAAIs0O,EAASI,GAAM10O,EAAIu0O,EAAOG,GAAM,EAAG,CASpD,IARA,IAAIC,EAAYT,EAAWQ,EAOvBE,GAJFC,EADEH,IAAO10O,GAAM00O,GAAM10O,GAAKo0O,EAAGO,EAAY,GAAKP,EAAGO,EAAY,GACxDP,EAAGO,EAAY,GAEfP,EAAGO,EAAY,GAAK,GAEbD,EACPG,EAAKd,GAAgBa,EAAKZ,GAC1B5B,EAAM5/N,OAAOqiO,IAAOxC,EAAM7/N,OAAOoiO,IACtCC,IACAD,IAGF,GADAR,EAAGO,GAAaE,EACZA,EAAKd,EAEPQ,GAAS,OACJ,GAAIK,EAAKZ,EAEdM,GAAW,OACN,GAAI7rI,IACLqsI,EAAYZ,EAAWhhH,EAAQwhH,IAClB,GAAKI,EAAYX,IAA8B,GAAlBE,EAAGS,GAAkB,CAEjE,IAAIC,EAAKhB,EAAeM,EAAGS,GAC3B,GAAID,GAAME,EAER,OAAOC,EAAkB5C,EAAOC,EAAOwC,EAAID,IAOnD,IAAK,IAAIK,GAAMj1O,EAAIw0O,EAASS,GAAMj1O,EAAIy0O,EAAOQ,GAAM,EAAG,CASpD,IARA,IAAIH,EAAYZ,EAAWe,EAOvBC,GAJFH,EADEE,IAAOj1O,GAAMi1O,GAAMj1O,GAAKq0O,EAAGS,EAAY,GAAKT,EAAGS,EAAY,GACxDT,EAAGS,EAAY,GAEfT,EAAGS,EAAY,GAAK,GAEbG,EACPF,EAAKhB,GAAgBmB,EAAKlB,GAC1B5B,EAAM5/N,OAAOuhO,EAAegB,EAAK,IACjC1C,EAAM7/N,OAAOwhO,EAAekB,EAAK,IACtCH,IACAG,IAGF,GADAb,EAAGS,GAAaC,EACZA,EAAKhB,EAEPU,GAAS,OACJ,GAAIS,EAAKlB,EAEdQ,GAAW,OACN,IAAK/rI,IACNksI,EAAYT,EAAWhhH,EAAQ+hH,IAClB,GAAKN,EAAYR,IAA8B,GAAlBC,EAAGO,GAAkB,CACjE,IAAIE,EAAKT,EAAGO,GAIZ,GAHIC,EAAKV,EAAWW,EAAKF,EAGrBE,IADJE,EAAKhB,EAAegB,GAGlB,OAAOC,EAAkB5C,EAAOC,EAAOwC,EAAID,KAQrD,MAAO,CAAC,EAvOQ,EAuOMxC,GAAQ,CAtOd,EAsO4BC,IApHrC8C,CAAa/C,EAAOC,GA3Ef+C,CAJZhD,EAAQA,EAAMxuO,UAAU,EAAGwuO,EAAM31O,OAAS81O,GAC1CF,EAAQA,EAAMzuO,UAAU,EAAGyuO,EAAM51O,OAAS81O,IAiB1C,OAXIE,GACF3sN,EAAMngB,QAAQ,CA1CD,EA0Cc8sO,IAEzBE,GACF7sN,EAAM/oB,KAAK,CA7CE,EA6CW41O,IAqX5B,SAAS0C,EAAkBvvN,GACzBA,EAAM/oB,KAAK,CAnaI,EAmaS,KAOxB,IANA,IAKIw1O,EALA+C,EAAU,EACVC,EAAe,EACfC,EAAe,EACfC,EAAc,GACdC,EAAc,GAEXJ,EAAUxvN,EAAMrpB,QACrB,OAAQqpB,EAAMwvN,GAAS,IACrB,KA7aY,EA8aVE,IACAE,GAAe5vN,EAAMwvN,GAAS,GAC9BA,IACA,MACF,KAnbY,EAobVC,IACAE,GAAe3vN,EAAMwvN,GAAS,GAC9BA,IACA,MACF,KAtbW,EAwbLC,EAAeC,EAAe,GACX,IAAjBD,GAAuC,IAAjBC,IAGH,KADrBjD,EAAeC,EAAkBkD,EAAaD,MAEvCH,EAAUC,EAAeC,EAAgB,GA7b3C,GA8bC1vN,EAAMwvN,EAAUC,EAAeC,EAAe,GAAG,GAEnD1vN,EAAMwvN,EAAUC,EAAeC,EAAe,GAAG,IAC7CE,EAAY9xO,UAAU,EAAG2uO,IAE7BzsN,EAAM9M,OAAO,EAAG,EAAG,CAnclB,EAocmB08N,EAAY9xO,UAAU,EAAG2uO,KAC7C+C,KAEFI,EAAcA,EAAY9xO,UAAU2uO,GACpCkD,EAAcA,EAAY7xO,UAAU2uO,IAIjB,KADrBA,EAAeG,EAAkBgD,EAAaD,MAE5C3vN,EAAMwvN,GAAS,GAAKI,EAAY9xO,UAAU8xO,EAAYj5O,OAClD81O,GAAgBzsN,EAAMwvN,GAAS,GACnCI,EAAcA,EAAY9xO,UAAU,EAAG8xO,EAAYj5O,OAC/C81O,GACJkD,EAAcA,EAAY7xO,UAAU,EAAG6xO,EAAYh5O,OAC/C81O,KAIa,IAAjBgD,EACFzvN,EAAM9M,OAAOs8N,EAAUE,EACnBD,EAAeC,EAAc,CAzd3B,EAydyCE,IACrB,IAAjBF,EACT1vN,EAAM9M,OAAOs8N,EAAUC,EACnBA,EAAeC,EAAc,EA7d3B,EA6dyCC,IAE/C3vN,EAAM9M,OAAOs8N,EAAUC,EAAeC,EAClCD,EAAeC,EAAc,EAhe3B,EAgeyCC,GAC3C,CAheE,EAgeYC,IAEpBJ,EAAUA,EAAUC,EAAeC,GACxBD,EAAe,EAAI,IAAMC,EAAe,EAAI,GAAK,GACvC,IAAZF,GAneF,GAmemBxvN,EAAMwvN,EAAU,GAAG,IAE7CxvN,EAAMwvN,EAAU,GAAG,IAAMxvN,EAAMwvN,GAAS,GACxCxvN,EAAM9M,OAAOs8N,EAAS,IAEtBA,IAEFE,EAAe,EACfD,EAAe,EACfE,EAAc,GACdC,EAAc,GAIe,KAA/B5vN,EAAMA,EAAMrpB,OAAS,GAAG,IAC1BqpB,EAAM0wC,MAMR,IAAI8zE,GAAU,EAGd,IAFAgrG,EAAU,EAEHA,EAAUxvN,EAAMrpB,OAAS,GA3fjB,GA4fTqpB,EAAMwvN,EAAU,GAAG,IA5fV,GA6fTxvN,EAAMwvN,EAAU,GAAG,KAEjBxvN,EAAMwvN,GAAS,GAAG1xO,UAAUkiB,EAAMwvN,GAAS,GAAG74O,OAC9CqpB,EAAMwvN,EAAU,GAAG,GAAG74O,SAAWqpB,EAAMwvN,EAAU,GAAG,IAEtDxvN,EAAMwvN,GAAS,GAAKxvN,EAAMwvN,EAAU,GAAG,GACnCxvN,EAAMwvN,GAAS,GAAG1xO,UAAU,EAAGkiB,EAAMwvN,GAAS,GAAG74O,OACrBqpB,EAAMwvN,EAAU,GAAG,GAAG74O,QACtDqpB,EAAMwvN,EAAU,GAAG,GAAKxvN,EAAMwvN,EAAU,GAAG,GAAKxvN,EAAMwvN,EAAU,GAAG,GACnExvN,EAAM9M,OAAOs8N,EAAU,EAAG,GAC1BhrG,GAAU,GACDxkH,EAAMwvN,GAAS,GAAG1xO,UAAU,EAAGkiB,EAAMwvN,EAAU,GAAG,GAAG74O,SAC5DqpB,EAAMwvN,EAAU,GAAG,KAErBxvN,EAAMwvN,EAAU,GAAG,IAAMxvN,EAAMwvN,EAAU,GAAG,GAC5CxvN,EAAMwvN,GAAS,GACXxvN,EAAMwvN,GAAS,GAAG1xO,UAAUkiB,EAAMwvN,EAAU,GAAG,GAAG74O,QAClDqpB,EAAMwvN,EAAU,GAAG,GACvBxvN,EAAM9M,OAAOs8N,EAAU,EAAG,GAC1BhrG,GAAU,IAGdgrG,IAGEhrG,GACF+qG,EAAkBvvN,GAxepBuvN,CAAkBvvN,GACA,MAAdwsN,IACFxsN,EA2iBJ,SAAqBA,EAAOwsN,GAC1B,IAAIqD,EA9CN,SAAgC7vN,EAAOwsN,GACrC,GAAmB,IAAfA,EACF,MAAO,CAjjBM,EAijBOxsN,GAEtB,IAAK,IAAI8vN,EAAc,EAAGr5O,EAAI,EAAGA,EAAIupB,EAAMrpB,OAAQF,IAAK,CACtD,IAAIyD,EAAI8lB,EAAMvpB,GACd,IAvjBc,IAujBVyD,EAAE,IArjBO,IAqjBeA,EAAE,GAAmB,CAC/C,IAAI61O,EAAWD,EAAc51O,EAAE,GAAGvD,OAClC,GAAI61O,IAAeuD,EACjB,MAAO,CAACt5O,EAAI,EAAGupB,GACV,GAAIwsN,EAAauD,EAAU,CAEhC/vN,EAAQA,EAAMpkB,QAEd,IAAIo0O,EAAYxD,EAAasD,EACzBG,EAAS,CAAC/1O,EAAE,GAAIA,EAAE,GAAG0B,MAAM,EAAGo0O,IAC9BE,EAAU,CAACh2O,EAAE,GAAIA,EAAE,GAAG0B,MAAMo0O,IAEhC,OADAhwN,EAAM9M,OAAOzc,EAAG,EAAGw5O,EAAQC,GACpB,CAACz5O,EAAI,EAAGupB,GAEf8vN,EAAcC,GAIpB,MAAM,IAAIj3O,MAAM,gCAsBLq3O,CAAsBnwN,EAAOwsN,GACpC4D,EAASP,EAAK,GACdQ,EAAiBR,EAAK,GACtB31O,EAAIk2O,EAAOC,GACXC,EAASF,EAAOC,EAAiB,GAErC,GAAS,MAALn2O,EAGF,OAAO8lB,EACF,GAvmBQ,IAumBJ9lB,EAAE,GAGX,OAAO8lB,EAEP,GAAc,MAAVswN,GAAkBp2O,EAAE,GAAKo2O,EAAO,KAAOA,EAAO,GAAKp2O,EAAE,GAIvD,OADAk2O,EAAOl9N,OAAOm9N,EAAgB,EAAGC,EAAQp2O,GAClCq2O,EAAaH,EAAQC,EAAgB,GACvC,GAAc,MAAVC,GAA8C,IAA5BA,EAAO,GAAGljO,QAAQlT,EAAE,IAAW,CAK1Dk2O,EAAOl9N,OAAOm9N,EAAgB,EAAG,CAACC,EAAO,GAAIp2O,EAAE,IAAK,CAAC,EAAGA,EAAE,KAC1D,IAAIyjC,EAAS2yM,EAAO,GAAG10O,MAAM1B,EAAE,GAAGvD,QAIlC,OAHIgnC,EAAOhnC,OAAS,GAClBy5O,EAAOl9N,OAAOm9N,EAAiB,EAAG,EAAG,CAACC,EAAO,GAAI3yM,IAE5C4yM,EAAaH,EAAQC,EAAgB,GAG5C,OAAOrwN,EA7kBDwwN,CAAWxwN,EAAOwsN,IAE5BxsN,EAwlBF,SAAoBA,GAQlB,IAPA,IAAIywN,GAAU,EACVC,EAAuB,SAASxlL,GAClC,OAAOA,EAAIhR,WAAW,IAAM,OAAUgR,EAAIhR,WAAW,IAAM,OAKpDzjD,EAAI,EAAGA,EAAIupB,EAAMrpB,OAAQF,GAAK,EAnpBxB,IAopBTupB,EAAMvpB,EAAE,GAAG,KAJmBy0D,EAIuBlrC,EAAMvpB,EAAE,GAAG,IAHzDyjD,WAAWgR,EAAIv0D,OAAO,IAAM,OAAUu0D,EAAIhR,WAAWgR,EAAIv0D,OAAO,IAAM,QAnpBnE,IAupBVqpB,EAAMvpB,EAAE,GAAG,IAAsBi6O,EAAqB1wN,EAAMvpB,EAAE,GAAG,KAtpBvD,IAupBVupB,EAAMvpB,GAAG,IAAsBi6O,EAAqB1wN,EAAMvpB,GAAG,MAC/Dg6O,GAAU,EAEVzwN,EAAMvpB,EAAE,GAAG,GAAKupB,EAAMvpB,EAAE,GAAG,GAAGmF,OAAO,GAAKokB,EAAMvpB,EAAE,GAAG,GACrDupB,EAAMvpB,GAAG,GAAKupB,EAAMvpB,EAAE,GAAG,GAAGmF,OAAO,GAAKokB,EAAMvpB,GAAG,GAEjDupB,EAAMvpB,EAAE,GAAG,GAAKupB,EAAMvpB,EAAE,GAAG,GAAGmF,MAAM,GAAI,IAZjB,IAASsvD,EAepC,IAAKulL,EACH,OAAOzwN,EAET,IAAI2wN,EAAc,GAClB,IAASl6O,EAAI,EAAGA,EAAIupB,EAAMrpB,OAAQF,GAAK,EACjCupB,EAAMvpB,GAAG,GAAGE,OAAS,GACvBg6O,EAAY15O,KAAK+oB,EAAMvpB,IAG3B,OAAOk6O,EArnBCC,CAAU5wN,GA+LpB,SAASkvN,EAAkB5C,EAAOC,EAAOtpO,EAAGkjB,GAC1C,IAAI0qN,EAASvE,EAAMxuO,UAAU,EAAGmF,GAC5B6tO,EAASvE,EAAMzuO,UAAU,EAAGqoB,GAC5B4qN,EAASzE,EAAMxuO,UAAUmF,GACzB+tO,EAASzE,EAAMzuO,UAAUqoB,GAGzBnG,EAAQqsN,EAAUwE,EAAQC,GAC1BG,EAAS5E,EAAU0E,EAAQC,GAE/B,OAAOhxN,EAAM9f,OAAO+wO,GAWtB,SAASvE,EAAkBJ,EAAOC,GAEhC,IAAKD,IAAUC,GAASD,EAAM5/N,OAAO,IAAM6/N,EAAM7/N,OAAO,GACtD,OAAO,EAQT,IAJA,IAAIwkO,EAAa,EACbC,EAAajyN,KAAKW,IAAIysN,EAAM31O,OAAQ41O,EAAM51O,QAC1Cy6O,EAAaD,EACbE,EAAe,EACZH,EAAaE,GACd9E,EAAMxuO,UAAUuzO,EAAcD,IAC9B7E,EAAMzuO,UAAUuzO,EAAcD,GAEhCC,EADAH,EAAaE,EAGbD,EAAaC,EAEfA,EAAalyN,KAAKE,OAAO+xN,EAAaD,GAAc,EAAIA,GAE1D,OAAOE,EAUT,SAASxE,EAAkBN,EAAOC,GAEhC,IAAKD,IAAUC,GACXD,EAAM5/N,OAAO4/N,EAAM31O,OAAS,IAAM41O,EAAM7/N,OAAO6/N,EAAM51O,OAAS,GAChE,OAAO,EAQT,IAJA,IAAIu6O,EAAa,EACbC,EAAajyN,KAAKW,IAAIysN,EAAM31O,OAAQ41O,EAAM51O,QAC1Cy6O,EAAaD,EACbG,EAAa,EACVJ,EAAaE,GACd9E,EAAMxuO,UAAUwuO,EAAM31O,OAASy6O,EAAY9E,EAAM31O,OAAS26O,IAC1D/E,EAAMzuO,UAAUyuO,EAAM51O,OAASy6O,EAAY7E,EAAM51O,OAAS26O,GAE5DA,EADAJ,EAAaE,EAGbD,EAAaC,EAEfA,EAAalyN,KAAKE,OAAO+xN,EAAaD,GAAc,EAAIA,GAE1D,OAAOE,EAgOT,IAAI/4M,EAAOg0M,EAwJX,SAASkE,EAAcvwN,EAAOqhC,EAAO1qD,GAEnC,IAAK,IAAIF,EAAI4qD,EAAQ1qD,EAAS,EAAGF,GAAK,GAAKA,GAAK4qD,EAAQ,EAAG5qD,IACzD,GAAIA,EAAI,EAAIupB,EAAMrpB,OAAQ,CACxB,IAAI46O,EAASvxN,EAAMvpB,GACf+6O,EAAUxxN,EAAMvpB,EAAE,GAClB86O,EAAO,KAAOC,EAAQ,IACxBxxN,EAAM9M,OAAOzc,EAAG,EAAG,CAAC86O,EAAO,GAAIA,EAAO,GAAKC,EAAQ,KAIzD,OAAOxxN,EAlKTqY,EAAK60L,OA9hBa,EA+hBlB70L,EAAK80L,QAhiBa,EAiiBlB90L,EAAK+0L,MA/hBY,EAiiBjB31N,EAAOD,QAAU6gC,GAoKX,SAAU5gC,EAAQD,GAMxB,SAASi6O,EAAM30O,GACb,IAAIwT,EAAO,GACX,IAAK,IAAIrV,KAAO6B,EAAKwT,EAAKrZ,KAAKgE,GAC/B,OAAOqV,GAPC7Y,EAAOD,QAAiC,mBAAhBZ,OAAO0Z,KACrC1Z,OAAO0Z,KAAOmhO,GAEVA,KAAOA,GAUT,SAAUh6O,EAAQD,GAExB,IAAIk6O,EAEI,sBAFqB,WAC3B,OAAO96O,OAAOC,UAAUkkB,SAAShkB,KAAK8G,WADX,GAO7B,SAAS8zO,EAAUv2O,GACjB,MAAiD,sBAA1CxE,OAAOC,UAAUkkB,SAAShkB,KAAKqE,GAIxC,SAASw2O,EAAYx2O,GACnB,OAAOA,GACY,iBAAVA,GACiB,iBAAjBA,EAAOzE,QACdC,OAAOC,UAAUC,eAAeC,KAAKqE,EAAQ,YAC5CxE,OAAOC,UAAUg7O,qBAAqB96O,KAAKqE,EAAQ,YACpD,GAdJ5D,EAAUC,EAAOD,QAAUk6O,EAAyBC,EAAYC,GAExDD,UAAYA,EAKpBn6O,EAAQo6O,YAAcA,GAahB,SAAUn6O,EAAQD,GAExB,aAEA,IAAIm+F,EAAM/+F,OAAOC,UAAUC,eACvB4mC,EAAS,IASb,SAASo0M,KA4BT,SAASC,EAAG12N,EAAInM,EAASwjC,GACvB32C,KAAKsf,GAAKA,EACVtf,KAAKmT,QAAUA,EACfnT,KAAK22C,KAAOA,IAAQ,EAUtB,SAASuX,IACPluD,KAAK+pM,QAAU,IAAIgsC,EACnB/1O,KAAKi2O,aAAe,EAlClBp7O,OAAOoE,SACT82O,EAAOj7O,UAAYD,OAAOoE,OAAO,OAM5B,IAAI82O,GAAS/9N,YAAW2pB,GAAS,IAqCxCusB,EAAapzD,UAAUo7O,WAAa,WAClC,IACI3+N,EACA7Z,EAFAi2B,EAAQ,GAIZ,GAA0B,IAAtB3zB,KAAKi2O,aAAoB,OAAOtiN,EAEpC,IAAKj2B,KAAS6Z,EAASvX,KAAK+pM,QACtBnwG,EAAI5+F,KAAKuc,EAAQ7Z,IAAOi2B,EAAMz4B,KAAKymC,EAASjkC,EAAKmC,MAAM,GAAKnC,GAGlE,OAAI7C,OAAO0oO,sBACF5vM,EAAMxvB,OAAOtJ,OAAO0oO,sBAAsBhsN,IAG5Coc,GAWTu6B,EAAapzD,UAAUo8C,UAAY,SAAmBl6C,EAAOq0D,GAC3D,IAAIiuE,EAAM39F,EAASA,EAAS3kC,EAAQA,EAChCm5O,EAAYn2O,KAAK+pM,QAAQzqE,GAE7B,GAAIjuE,EAAQ,QAAS8kL,EACrB,IAAKA,EAAW,MAAO,GACvB,GAAIA,EAAU72N,GAAI,MAAO,CAAC62N,EAAU72N,IAEpC,IAAK,IAAI5kB,EAAI,EAAGiB,EAAIw6O,EAAUv7O,OAAQw7O,EAAK,IAAI11O,MAAM/E,GAAIjB,EAAIiB,EAAGjB,IAC9D07O,EAAG17O,GAAKy7O,EAAUz7O,GAAG4kB,GAGvB,OAAO82N,GAUTloL,EAAapzD,UAAUi8C,KAAO,SAAc/5C,EAAOq5O,EAAIC,EAAIC,EAAIC,EAAIC,GACjE,IAAIn3G,EAAM39F,EAASA,EAAS3kC,EAAQA,EAEpC,IAAKgD,KAAK+pM,QAAQzqE,GAAM,OAAO,EAE/B,IAEI76G,EACA/pB,EAHAw8C,EAAYl3C,KAAK+pM,QAAQzqE,GACzBt9G,EAAMlgB,UAAUlH,OAIpB,GAAIs8C,EAAU53B,GAAI,CAGhB,OAFI43B,EAAUP,MAAM32C,KAAK62C,eAAe75C,EAAOk6C,EAAU53B,QAAI1hB,GAAW,GAEhEokB,GACN,KAAK,EAAG,OAAOk1B,EAAU53B,GAAGtkB,KAAKk8C,EAAU/jC,UAAU,EACrD,KAAK,EAAG,OAAO+jC,EAAU53B,GAAGtkB,KAAKk8C,EAAU/jC,QAASkjO,IAAK,EACzD,KAAK,EAAG,OAAOn/L,EAAU53B,GAAGtkB,KAAKk8C,EAAU/jC,QAASkjO,EAAIC,IAAK,EAC7D,KAAK,EAAG,OAAOp/L,EAAU53B,GAAGtkB,KAAKk8C,EAAU/jC,QAASkjO,EAAIC,EAAIC,IAAK,EACjE,KAAK,EAAG,OAAOr/L,EAAU53B,GAAGtkB,KAAKk8C,EAAU/jC,QAASkjO,EAAIC,EAAIC,EAAIC,IAAK,EACrE,KAAK,EAAG,OAAOt/L,EAAU53B,GAAGtkB,KAAKk8C,EAAU/jC,QAASkjO,EAAIC,EAAIC,EAAIC,EAAIC,IAAK,EAG3E,IAAK/7O,EAAI,EAAG+pB,EAAO,IAAI/jB,MAAMshB,EAAK,GAAItnB,EAAIsnB,EAAKtnB,IAC7C+pB,EAAK/pB,EAAI,GAAKoH,UAAUpH,GAG1Bw8C,EAAU53B,GAAGrb,MAAMizC,EAAU/jC,QAASsR,OACjC,CACL,IACImP,EADAh5B,EAASs8C,EAAUt8C,OAGvB,IAAKF,EAAI,EAAGA,EAAIE,EAAQF,IAGtB,OAFIw8C,EAAUx8C,GAAGi8C,MAAM32C,KAAK62C,eAAe75C,EAAOk6C,EAAUx8C,GAAG4kB,QAAI1hB,GAAW,GAEtEokB,GACN,KAAK,EAAGk1B,EAAUx8C,GAAG4kB,GAAGtkB,KAAKk8C,EAAUx8C,GAAGyY,SAAU,MACpD,KAAK,EAAG+jC,EAAUx8C,GAAG4kB,GAAGtkB,KAAKk8C,EAAUx8C,GAAGyY,QAASkjO,GAAK,MACxD,KAAK,EAAGn/L,EAAUx8C,GAAG4kB,GAAGtkB,KAAKk8C,EAAUx8C,GAAGyY,QAASkjO,EAAIC,GAAK,MAC5D,KAAK,EAAGp/L,EAAUx8C,GAAG4kB,GAAGtkB,KAAKk8C,EAAUx8C,GAAGyY,QAASkjO,EAAIC,EAAIC,GAAK,MAChE,QACE,IAAK9xN,EAAM,IAAKmP,EAAI,EAAGnP,EAAO,IAAI/jB,MAAMshB,EAAK,GAAI4R,EAAI5R,EAAK4R,IACxDnP,EAAKmP,EAAI,GAAK9xB,UAAU8xB,GAG1BsjB,EAAUx8C,GAAG4kB,GAAGrb,MAAMizC,EAAUx8C,GAAGyY,QAASsR,IAKpD,OAAO,GAYTypC,EAAapzD,UAAUuyC,GAAK,SAAYrwC,EAAOsiB,EAAInM,GACjD,IAAI67B,EAAW,IAAIgnM,EAAG12N,EAAInM,GAAWnT,MACjCs/H,EAAM39F,EAASA,EAAS3kC,EAAQA,EAMpC,OAJKgD,KAAK+pM,QAAQzqE,GACRt/H,KAAK+pM,QAAQzqE,GAAKhgH,GACvBtf,KAAK+pM,QAAQzqE,GAAO,CAACt/H,KAAK+pM,QAAQzqE,GAAMtwF,GADbhvC,KAAK+pM,QAAQzqE,GAAKpkI,KAAK8zC,IAD/BhvC,KAAK+pM,QAAQzqE,GAAOtwF,EAAUhvC,KAAKi2O,gBAIpDj2O,MAYTkuD,EAAapzD,UAAU67C,KAAO,SAAc35C,EAAOsiB,EAAInM,GACrD,IAAI67B,EAAW,IAAIgnM,EAAG12N,EAAInM,GAAWnT,MAAM,GACvCs/H,EAAM39F,EAASA,EAAS3kC,EAAQA,EAMpC,OAJKgD,KAAK+pM,QAAQzqE,GACRt/H,KAAK+pM,QAAQzqE,GAAKhgH,GACvBtf,KAAK+pM,QAAQzqE,GAAO,CAACt/H,KAAK+pM,QAAQzqE,GAAMtwF,GADbhvC,KAAK+pM,QAAQzqE,GAAKpkI,KAAK8zC,IAD/BhvC,KAAK+pM,QAAQzqE,GAAOtwF,EAAUhvC,KAAKi2O,gBAIpDj2O,MAaTkuD,EAAapzD,UAAU+7C,eAAiB,SAAwB75C,EAAOsiB,EAAInM,EAASwjC,GAClF,IAAI2oF,EAAM39F,EAASA,EAAS3kC,EAAQA,EAEpC,IAAKgD,KAAK+pM,QAAQzqE,GAAM,OAAOt/H,KAC/B,IAAKsf,EAGH,OAF4B,KAAtBtf,KAAKi2O,aAAoBj2O,KAAK+pM,QAAU,IAAIgsC,SACtC/1O,KAAK+pM,QAAQzqE,GAClBt/H,KAGT,IAAIk3C,EAAYl3C,KAAK+pM,QAAQzqE,GAE7B,GAAIpoF,EAAU53B,GAEP43B,EAAU53B,KAAOA,GACfq3B,IAAQO,EAAUP,MAClBxjC,GAAW+jC,EAAU/jC,UAAYA,IAEV,KAAtBnT,KAAKi2O,aAAoBj2O,KAAK+pM,QAAU,IAAIgsC,SACtC/1O,KAAK+pM,QAAQzqE,QAEtB,CACL,IAAK,IAAI5kI,EAAI,EAAG6c,EAAS,GAAI3c,EAASs8C,EAAUt8C,OAAQF,EAAIE,EAAQF,KAE7Dw8C,EAAUx8C,GAAG4kB,KAAOA,GACnBq3B,IAASO,EAAUx8C,GAAGi8C,MACtBxjC,GAAW+jC,EAAUx8C,GAAGyY,UAAYA,IAExCoE,EAAOrc,KAAKg8C,EAAUx8C,IAOtB6c,EAAO3c,OAAQoF,KAAK+pM,QAAQzqE,GAAyB,IAAlB/nH,EAAO3c,OAAe2c,EAAO,GAAKA,EACxC,KAAtBvX,KAAKi2O,aAAoBj2O,KAAK+pM,QAAU,IAAIgsC,SAC3C/1O,KAAK+pM,QAAQzqE,GAG3B,OAAOt/H,MAUTkuD,EAAapzD,UAAUg8C,mBAAqB,SAA4B95C,GACtE,IAAIsiI,EAaJ,OAXItiI,GACFsiI,EAAM39F,EAASA,EAAS3kC,EAAQA,EAC5BgD,KAAK+pM,QAAQzqE,KACa,KAAtBt/H,KAAKi2O,aAAoBj2O,KAAK+pM,QAAU,IAAIgsC,SACtC/1O,KAAK+pM,QAAQzqE,MAG3Bt/H,KAAK+pM,QAAU,IAAIgsC,EACnB/1O,KAAKi2O,aAAe,GAGfj2O,MAMTkuD,EAAapzD,UAAU87C,IAAMsX,EAAapzD,UAAU+7C,eACpDqX,EAAapzD,UAAU47C,YAAcwX,EAAapzD,UAAUuyC,GAK5D6gB,EAAapzD,UAAU47O,gBAAkB,WACvC,OAAO12O,MAMTkuD,EAAaikJ,SAAWxwK,EAKxBusB,EAAaA,aAAeA,OAKxB,IAAuBxyD,IACzBA,EAAOD,QAAUyyD,IAMb,SAAUxyD,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQk7O,UAAYl7O,EAAQm7O,aAAen7O,EAAQo7O,aAAep7O,EAAQq7O,UAAYr7O,EAAQs7O,gBAAkBt7O,EAAQo6D,aAAUj4D,EAElI,IAAIiD,EAA4B,mBAAXnC,QAAoD,iBAApBA,OAAOoC,SAAwB,SAAUC,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAXrC,QAAyBqC,EAAIC,cAAgBtC,QAAUqC,IAAQrC,OAAO5D,UAAY,gBAAkBiG,GAElQo5D,EAAgb,SAAU96C,EAAK3kB,GAAK,GAAIgG,MAAMC,QAAQ0e,GAAQ,OAAOA,EAAY,GAAI3gB,OAAOoC,YAAYjG,OAAOwkB,GAAQ,OAAxf,SAAuBA,EAAK3kB,GAAK,IAAI0/D,EAAO,GAAQC,GAAK,EAAU94C,GAAK,EAAW+4C,OAAK18D,EAAW,IAAM,IAAK,IAAiC28D,EAA7B/uD,EAAK6T,EAAI3gB,OAAOoC,cAAmBu5D,GAAME,EAAK/uD,EAAGvI,QAAQu3D,QAAoBJ,EAAKl/D,KAAKq/D,EAAG37D,QAAYlE,GAAK0/D,EAAKx/D,SAAWF,GAA3D2/D,GAAK,IAAoE,MAAO76D,GAAO+hB,GAAK,EAAM+4C,EAAK96D,EAAO,QAAU,KAAW66D,GAAM7uD,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAI+V,EAAI,MAAM+4C,GAAQ,OAAOF,EAA6HK,CAAcp7C,EAAK3kB,GAAa,MAAM,IAAIod,UAAU,yDAEllB7W,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAIfy1O,EAAWllB,EAFAt2N,EAAoB,IAM/Bu2N,EAAeD,EAFDt2N,EAAoB,IAMlCw2N,EAAcF,EAFDt2N,EAAoB,IAMjCipO,EAAU3S,EAFDt2N,EAAoB,IAM7B+3N,EAAWzB,EAFDt2N,EAAoB,KAM9B43N,EAAWtB,EAFDt2N,EAAoB,IAI9By7O,EAASz7O,EAAoB,IAE7B07O,EAAc17O,EAAoB,IAIlCmgO,EAAS7J,EAFDt2N,EAAoB,KAI5BkwO,EAASlwO,EAAoB,IAE7B27O,EAAa37O,EAAoB,IAEjC47O,EAAQ57O,EAAoB,IAE5B67O,EAAQ77O,EAAoB,IAEhC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEvF,SAAS0yN,EAAgB1yN,EAAK7B,EAAKN,GAAiK,OAApJM,KAAO6B,EAAOlG,OAAOyD,eAAeyC,EAAK7B,EAAK,CAAEN,MAAOA,EAAOL,YAAY,EAAM8C,cAAc,EAAMC,UAAU,IAAkBP,EAAI7B,GAAON,EAAgBmC,EAQ3M,IAAI4yC,GAAQ,EAAI4/K,EAAS19J,SAAS,mBAE9ByhL,EAAU,eAEVC,EAAmB,CAAC,CAACr8J,KAAK4zI,UAAW6nB,GAAY,CAACz7J,KAAK4zI,UAAW+nB,GAAe,CAAC,KA4PtF,SAAoB37L,EAAMm2E,GAIxB,OAHKmmH,EAAcnmH,EAAO,OACxBA,EAAMjsE,OAAO,MAERisE,IAhQgG,CAACn2C,KAAKu8J,aAAcZ,GAAe,CAAC37J,KAAKu8J,aAAcX,GAAY,CAAC57J,KAAKu8J,aAAcb,GAAe,CAAC17J,KAAKu8J,aAAcV,GAAkB,CAAC77J,KAAKu8J,aA2S3P,SAAqBv8L,EAAMm2E,GACzB,IAAI7xF,EAAU,GACVshC,EAAQ5lB,EAAK4lB,OAAS,GAc1B,OAbIA,EAAM2gJ,WAA8C,WAAjCi2B,EAAax8L,GAAMumK,YACxCjiL,EAAQm4M,QAAS,GAEf72K,EAAM4vD,aAAegnH,EAAax8L,GAAMw1E,WAAWv9C,WAAW,SAAW7oD,SAASotN,EAAax8L,GAAMw1E,aAAe,OACtHlxF,EAAQo4M,MAAO,GAEb/8O,OAAO0Z,KAAKirB,GAAS5kC,OAAS,IAChCy2H,EAAQwmH,EAAYxmH,EAAO7xF,IAEzBrE,WAAW2lC,EAAM8gJ,YAAc,GAAK,IAEtCvwF,GAAQ,IAAI0gG,EAAal8J,SAAUzQ,OAAO,MAAMjhD,OAAOktH,IAElDA,IA3T8Q,CAAC,KAuQxR,SAAqBn2E,EAAMm2E,GACzB,IAAI9pG,EAAQyqM,EAAYn8J,QAAQ+oB,MAAM1jC,GACtC,GAAa,MAAT3zB,GAAoC,cAAnBA,EAAMkoM,WAA6B+nB,EAAcnmH,EAAO,MAC3E,OAAOA,EAIT,IAFA,IAAIh4B,GAAU,EACV9qF,EAAS2sC,EAAKomB,YACV/yD,EAAO62E,UAAUguB,SAAS,iBAC2B,UAAtD4+G,EAAYn8J,QAAQ+oB,MAAMrwE,IAAW,IAAIkhN,WAC5Cp2H,GAAU,GAEZ9qF,EAASA,EAAO+yD,WAElB,OAAI+3B,GAAU,EAAUg4B,EACjBA,EAAM/iF,SAAQ,IAAIyjL,EAAal8J,SAAUk6J,OAAO1+F,EAAMz2H,SAAW,GAAGm1N,OAAO,EAAG,CAAE12H,OAAQA,OArR2M,CAAC,IAAKy+I,EAAW34O,KAAK24O,EAAY,SAAU,CAAC,IAAKA,EAAW34O,KAAK24O,EAAY,WAAY,CAAC,QAmQvY,WACE,OAAO,IAAI/lB,EAAal8J,WAlQtBkiL,EAAwB,CAACd,EAAO1L,eAAgB4L,EAAWtL,oBAAoBtmL,QAAO,SAAU+Z,EAAMjvB,GAExG,OADAivB,EAAKjvB,EAAKwyK,SAAWxyK,EACdivB,IACN,IAEC04K,EAAoB,CAACf,EAAO5L,WAAY6L,EAAY1L,gBAAiBE,EAAO7C,WAAYsO,EAAWxL,eAAgByL,EAAMrL,UAAWsL,EAAMpL,WAAW1mL,QAAO,SAAU+Z,EAAMjvB,GAE9K,OADAivB,EAAKjvB,EAAKwyK,SAAWxyK,EACdivB,IACN,IAEC24K,EAAY,SAAUrT,GAGxB,SAASqT,EAAU1e,EAAO/1N,IAzB5B,SAAyBqkD,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCA0B5Go1C,CAAgBltD,KAAMi4O,GAEtB,IAAItyO,EA1BR,SAAoC8R,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EA0BlN2c,CAA2B3X,MAAOi4O,EAAUjgO,WAAand,OAAOoxC,eAAegsM,IAAYj9O,KAAKgF,KAAMu5N,EAAO/1N,IAezH,OAbAmC,EAAM4zN,MAAMjhJ,KAAK43B,iBAAiB,QAASvqG,EAAMuyO,QAAQ/4O,KAAKwG,IAC9DA,EAAM0I,UAAY1I,EAAM4zN,MAAM3F,aAAa,gBAC3CjuN,EAAM0I,UAAU3R,aAAa,mBAAmB,GAChDiJ,EAAM0I,UAAU3R,aAAa,YAAa,GAC1CiJ,EAAMi2G,SAAW,GACjB27H,EAAiBpzO,OAAOwB,EAAMnC,QAAQo4G,UAAUz0G,SAAQ,SAAUonD,GAChE,IAAIw3K,EAAQ5rK,EAAe5L,EAAM,GAC7B0iD,EAAW80H,EAAM,GACjB7pM,EAAU6pM,EAAM,IAEfviO,EAAQ20O,aAAej8M,IAAY06M,IACxCjxO,EAAMyyO,WAAWnnI,EAAU/0E,MAEtBv2B,EAsGT,OA7IF,SAAmBiS,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAmB/dI,CAAUggO,EAAWrT,GAuBrB3jO,EAAag3O,EAAW,CAAC,CACvB/4O,IAAK,aACLN,MAAO,SAAoBqyG,EAAU/0E,GACnCl8B,KAAK47G,SAAS1gH,KAAK,CAAC+1G,EAAU/0E,MAE/B,CACDh9B,IAAK,UACLN,MAAO,SAAiB4pD,GACtB,GAAoB,iBAATA,EAET,OADAxoD,KAAKqO,UAAU47C,UAAYzB,EAAKzhD,QAAQ,eAAgB,MACjD/G,KAAK45K,UAEd,IAAIp6I,EAAUx/B,KAAKu5N,MAAMnD,UAAUp2N,KAAKu5N,MAAM3yG,UAAUs3G,WAAWv0N,OACnE,GAAI61B,EAAQm8L,EAAO9lK,QAAQ45J,UAAW,CACpC,IAAIvmK,EAAOlpD,KAAKqO,UAAUqsG,UAE1B,OADA16G,KAAKqO,UAAU47C,UAAY,IACpB,IAAI8nK,EAAal8J,SAAUzQ,OAAO8D,EAAMuqK,EAAgB,GAAIkI,EAAO9lK,QAAQ45J,SAAUjwL,EAAQm8L,EAAO9lK,QAAQ45J,YAGrH,IAAI4oB,EAAmBr4O,KAAKs4O,kBACxBC,EAAoBp+K,EAAek+K,EAAkB,GACrD96H,EAAkBg7H,EAAkB,GACpCC,EAAeD,EAAkB,GAEjClnH,EAyHV,SAASmvF,EAAStlK,EAAMqiE,EAAiBi7H,GAEvC,OAAIt9L,EAAK49B,WAAa59B,EAAK4zK,UAClB0pB,EAAajzL,QAAO,SAAU8rE,EAAOn1F,GAC1C,OAAOA,EAAQgf,EAAMm2E,KACpB,IAAI0gG,EAAal8J,SACX3a,EAAK49B,WAAa59B,EAAKu8L,aACzB,GAAGlyL,OAAOvqD,KAAKkgD,EAAKgoB,YAAc,IAAI,SAAUmuD,EAAOqvF,GAC5D,IAAI+3B,EAAgBj4B,EAASE,EAAWnjG,EAAiBi7H,GASzD,OARI93B,EAAU5nI,WAAa59B,EAAKu8L,eAC9BgB,EAAgBl7H,EAAgBh4D,QAAO,SAAUkzL,EAAev8M,GAC9D,OAAOA,EAAQwkL,EAAW+3B,KACzBA,GACHA,GAAiB/3B,EAAU42B,IAAY,IAAI/xL,QAAO,SAAUkzL,EAAev8M,GACzE,OAAOA,EAAQwkL,EAAW+3B,KACzBA,IAEEpnH,EAAMltH,OAAOs0O,KACnB,IAAI1mB,EAAal8J,SAEb,IAAIk8J,EAAal8J,QA7IV2qJ,CAASxgN,KAAKqO,UAAWkvG,EAAiBi7H,GAOtD,OALIhB,EAAcnmH,EAAO,OAAuD,MAA9CA,EAAMp/C,IAAIo/C,EAAMp/C,IAAIr3E,OAAS,GAAGquG,aAChEooB,EAAQA,EAAM/iF,SAAQ,IAAIyjL,EAAal8J,SAAUk6J,OAAO1+F,EAAMz2H,SAAW,GAAGkiB,OAAO,KAErF62B,EAAMC,IAAI,UAAW5zC,KAAKqO,UAAU47C,UAAWonE,GAC/CrxH,KAAKqO,UAAU47C,UAAY,GACpBonE,IAER,CACDnyH,IAAK,uBACLN,MAAO,SAA8B+K,EAAO6+C,GAC1C,IAAInkB,EAASviC,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK2iO,EAAQ5uK,QAAQ3Y,QAAQi4K,IAEzG,GAAqB,iBAAVxrN,EACT3J,KAAKu5N,MAAM7E,YAAY10N,KAAK45K,QAAQjwK,GAAQ6+C,GAC5CxoD,KAAKu5N,MAAMhE,aAAa,EAAGkP,EAAQ5uK,QAAQ3Y,QAAQs4K,YAC9C,CACL,IAAIkjB,EAAQ14O,KAAK45K,QAAQpxH,GACzBxoD,KAAKu5N,MAAM0O,gBAAe,IAAIlW,EAAal8J,SAAUk6J,OAAOpmN,GAAOxF,OAAOu0O,GAAQr0M,GAClFrkC,KAAKu5N,MAAMhE,aAAa5rN,EAAQ+uO,EAAM99O,SAAU6pO,EAAQ5uK,QAAQ3Y,QAAQs4K,WAG3E,CACDt2N,IAAK,UACLN,MAAO,SAAiBhD,GACtB,IAAIuK,EAASnG,KAEb,IAAIpE,EAAEouH,kBAAqBhqH,KAAKu5N,MAAMjrF,YAAtC,CACA,IAAIgG,EAAQt0I,KAAKu5N,MAAMnE,eACnB/jG,GAAQ,IAAI0gG,EAAal8J,SAAUk6J,OAAOz7E,EAAM3qI,OAChD8oH,EAAYzyH,KAAKu5N,MAAM1F,mBAAmBphG,UAC9CzyH,KAAKqO,UAAUu7G,QACf5pH,KAAKu5N,MAAM3yG,UAAUlqG,OAAO+nN,EAAQ5uK,QAAQ3Y,QAAQs4K,QACpD33N,YAAW,WACTwzH,EAAQA,EAAMltH,OAAOgC,EAAOyzK,WAAW98J,OAAOw3H,EAAM15I,QACpDuL,EAAOozN,MAAM0O,eAAe52G,EAAOozG,EAAQ5uK,QAAQ3Y,QAAQs6K,MAE3DrxN,EAAOozN,MAAMhE,aAAalkG,EAAMz2H,SAAW05I,EAAM15I,OAAQ6pO,EAAQ5uK,QAAQ3Y,QAAQs4K,QACjFrvN,EAAOozN,MAAM1F,mBAAmBphG,UAAYA,EAC5CtsH,EAAOozN,MAAM3vG,UACZ,MAEJ,CACD1qH,IAAK,kBACLN,MAAO,WACL,IAAI0P,EAAStO,KAETu9G,EAAkB,GAClBi7H,EAAe,GAsBnB,OArBAx4O,KAAK47G,SAASz0G,SAAQ,SAAU6wM,GAC9B,IAAI2gC,EAAQx+K,EAAe69I,EAAM,GAC7B/mG,EAAW0nI,EAAM,GACjBz8M,EAAUy8M,EAAM,GAEpB,OAAQ1nI,GACN,KAAK/1B,KAAK4zI,UACR0pB,EAAat9O,KAAKghC,GAClB,MACF,KAAKg/C,KAAKu8J,aACRl6H,EAAgBriH,KAAKghC,GACrB,MACF,QACE,GAAG/0B,QAAQnM,KAAKsT,EAAOD,UAAU8nG,iBAAiBlF,IAAW,SAAU/1D,GAErEA,EAAKo8L,GAAWp8L,EAAKo8L,IAAY,GACjCp8L,EAAKo8L,GAASp8O,KAAKghC,UAKpB,CAACqhF,EAAiBi7H,OAItBP,EA3HO,CA4Hd7kB,EAASv9J,SAOX,SAASgiL,EAAYxmH,EAAOzxG,EAAQhhB,GAClC,MAAwE,iBAAjD,IAAXghB,EAAyB,YAAc/e,EAAQ+e,IAClD/kB,OAAO0Z,KAAKqL,GAAQ2lC,QAAO,SAAU8rE,EAAOnyH,GACjD,OAAO24O,EAAYxmH,EAAOnyH,EAAK0gB,EAAO1gB,MACrCmyH,GAEIA,EAAM9rE,QAAO,SAAU8rE,EAAOl/C,GACnC,OAAIA,EAAG82B,YAAc92B,EAAG82B,WAAWrpF,GAC1ByxG,EAAMn2H,KAAKi3E,GAEXk/C,EAAMjsE,OAAO+sB,EAAG/sB,QAAQ,EAAI4xL,EAASnhL,SAAS,GAAI49J,EAAgB,GAAI7zM,EAAQhhB,GAAQuzE,EAAG82B,eAEjG,IAAI8oH,EAAal8J,SAIxB,SAAS6hL,EAAax8L,GACpB,OAAIA,EAAK49B,WAAaoC,KAAKu8J,aAAqB,GAEzCv8L,EADO,yBACWA,EADX,uBAC2Bv7C,OAAO4uH,iBAAiBrzE,IAGnE,SAASs8L,EAAcnmH,EAAOnoE,GAE5B,IADA,IAAI0vL,EAAU,GACLl+O,EAAI22H,EAAMp/C,IAAIr3E,OAAS,EAAGF,GAAK,GAAKk+O,EAAQh+O,OAASsuD,EAAKtuD,SAAUF,EAAG,CAC9E,IAAIy3E,EAAKk/C,EAAMp/C,IAAIv3E,GACnB,GAAyB,iBAAdy3E,EAAG/sB,OAAqB,MACnCwzL,EAAUzmK,EAAG/sB,OAASwzL,EAExB,OAAOA,EAAQ/4O,OAAO,EAAIqpD,EAAKtuD,UAAYsuD,EAG7C,SAAS66K,EAAO7oL,GACd,GAA+B,IAA3BA,EAAKgoB,WAAWtoE,OAAc,OAAO,EACzC,IAAIkmE,EAAQ42K,EAAax8L,GACzB,MAAO,CAAC,QAAS,aAAa7pC,QAAQyvD,EAAM6jD,UAAY,EA2B1D,SAASmzH,EAAWl4N,EAAQs7B,EAAMm2E,GAChC,OAAOwmH,EAAYxmH,EAAOzxG,GAAQ,GAGpC,SAASm3N,EAAgB77L,EAAMm2E,GAC7B,IAAIpoB,EAAa+oH,EAAYn8J,QAAQu4J,WAAWC,UAAU95M,KAAK2mC,GAC3Do8E,EAAU06F,EAAYn8J,QAAQu4J,WAAWE,MAAM/5M,KAAK2mC,GACpDmlB,EAAS2xJ,EAAYn8J,QAAQu4J,WAAWG,MAAMh6M,KAAK2mC,GACnD1b,EAAU,GAoBd,OAnBAypE,EAAW9kG,OAAOmzH,GAASnzH,OAAOk8D,GAAQl5D,SAAQ,SAAUzJ,GAC1D,IAAI2yC,EAAO2hL,EAAYn8J,QAAQ+oB,MAAMlhF,EAAMs0N,EAAYn8J,QAAQ+3J,MAAMyM,WACzD,MAARhqL,IACF7Q,EAAQ6Q,EAAKugH,UAAYvgH,EAAKzxC,MAAMs8C,GAChC1b,EAAQ6Q,EAAKugH,aAGP,OADZvgH,EAAO0nM,EAAsBr6O,KACR2yC,EAAKugH,WAAalzJ,GAAQ2yC,EAAKwyK,UAAYnlN,IAC9D8hC,EAAQ6Q,EAAKugH,UAAYvgH,EAAKzxC,MAAMs8C,SAASt9C,GAGnC,OADZyyC,EAAO2nM,EAAkBt6O,KACJ2yC,EAAKugH,WAAalzJ,GAAQ2yC,EAAKwyK,UAAYnlN,IAC9D2yC,EAAO2nM,EAAkBt6O,GACzB8hC,EAAQ6Q,EAAKugH,UAAYvgH,EAAKzxC,MAAMs8C,SAASt9C,OAG7C/C,OAAO0Z,KAAKirB,GAAS5kC,OAAS,IAChCy2H,EAAQwmH,EAAYxmH,EAAO7xF,IAEtB6xF,EAGT,SAASylH,EAAU57L,EAAMm2E,GACvB,IAAI9pG,EAAQyqM,EAAYn8J,QAAQ+oB,MAAM1jC,GACtC,GAAa,MAAT3zB,EAAe,OAAO8pG,EAC1B,GAAI9pG,EAAMzsB,qBAAqBk3N,EAAYn8J,QAAQk4J,MAAO,CACxD,IAAI0I,EAAQ,GACR73N,EAAQ2oB,EAAM3oB,MAAMs8C,GACX,MAATt8C,IACF63N,EAAMlvM,EAAMkoM,UAAY7wN,EACxByyH,GAAQ,IAAI0gG,EAAal8J,SAAUzQ,OAAOqxK,EAAOlvM,EAAMiY,QAAQ0b,SAE/B,mBAAlB3zB,EAAMiY,UACtB6xF,EAAQwmH,EAAYxmH,EAAO9pG,EAAMkoM,SAAUloM,EAAMiY,QAAQ0b,KAE3D,OAAOm2E,EA+BT,SAASwlH,EAAa37L,EAAMm2E,GAM1B,OALKmmH,EAAcnmH,EAAO,QACpB0yG,EAAO7oL,IAASm2E,EAAMz2H,SAAW,GAAKsgD,EAAKgmB,aAAe6iK,EAAO7oL,EAAKgmB,eACxEmwD,EAAMjsE,OAAO,MAGVisE,EAGT,SAASulH,EAAa17L,EAAMm2E,GAC1B,GAAI0yG,EAAO7oL,IAAoC,MAA3BA,EAAK29L,qBAA+BrB,EAAcnmH,EAAO,QAAS,CACpF,IAAI41F,EAAa/rK,EAAKsjF,aAAerjG,WAAWu8M,EAAax8L,GAAM04J,WAAaz4K,WAAWu8M,EAAax8L,GAAM24J,cAC1G34J,EAAK29L,mBAAmBC,UAAY59L,EAAK49L,UAAyB,IAAb7xB,GACvD51F,EAAMjsE,OAAO,MAGjB,OAAOisE,EAsBT,SAASslH,EAAUz7L,EAAMm2E,GACvB,IAAInoE,EAAOhO,EAAK7gD,KAEhB,GAAgC,QAA5B6gD,EAAKomB,WAAWi5F,QAClB,OAAOlpC,EAAMjsE,OAAO8D,EAAKvC,QAE3B,GAA2B,IAAvBuC,EAAKvC,OAAO/rD,QAAgBsgD,EAAKomB,WAAW8jB,UAAUguB,SAAS,gBACjE,OAAOie,EAET,IAAKqmH,EAAax8L,EAAKomB,YAAYggJ,WAAWnuI,WAAW,OAAQ,CAE/D,IAAI4lK,EAAW,SAAkBC,EAAUzxN,GAEzC,OADAA,EAAQA,EAAMxgB,QAAQ,aAAc,KACvBnM,OAAS,GAAKo+O,EAAW,IAAMzxN,GAG9C2hC,GADAA,EAAOA,EAAKniD,QAAQ,QAAS,KAAKA,QAAQ,MAAO,MACrCA,QAAQ,SAAUgyO,EAAS55O,KAAK45O,GAAU,KAC1B,MAAxB79L,EAAKiyF,iBAA2B42F,EAAO7oL,EAAKomB,aAAuC,MAAxBpmB,EAAKiyF,iBAA2B42F,EAAO7oL,EAAKiyF,oBACzGjkF,EAAOA,EAAKniD,QAAQ,OAAQgyO,EAAS55O,KAAK45O,GAAU,MAE9B,MAApB79L,EAAKgmB,aAAuB6iK,EAAO7oL,EAAKomB,aAAmC,MAApBpmB,EAAKgmB,aAAuB6iK,EAAO7oL,EAAKgmB,gBACjGhY,EAAOA,EAAKniD,QAAQ,OAAQgyO,EAAS55O,KAAK45O,GAAU,KAGxD,OAAO1nH,EAAMjsE,OAAO8D,GA5MtB+uL,EAAUxgB,SAAW,CACnB77G,SAAU,GACVu8H,aAAa,GA6Mf18O,EAAQo6D,QAAUoiL,EAClBx8O,EAAQs7O,gBAAkBA,EAC1Bt7O,EAAQq7O,UAAYA,EACpBr7O,EAAQo7O,aAAeA,EACvBp7O,EAAQm7O,aAAeA,EACvBn7O,EAAQk7O,UAAYA,GAId,SAAUj7O,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAQgCmC,EAR5BE,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAEf07E,EAAO,SAASz+E,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,GAErZqiJ,EAAU1tO,EAAoB,GAMlC,SAAS0xD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAIlO,IAAIi+O,EAAO,SAAUxe,GAGnB,SAASwe,IAGP,OAFA/rL,EAAgBltD,KAAMi5O,GAEfthO,EAA2B3X,MAAOi5O,EAAKjhO,WAAand,OAAOoxC,eAAegtM,IAAOh1O,MAAMjE,KAAM8B,YAuBtG,OA/BF,SAAmB8V,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAG/dI,CAAUghO,EAAMxe,GAQhBx5N,EAAag4O,EAAM,CAAC,CAClB/5O,IAAK,WACLN,MAAO,SAAkBuU,GACvB8pE,EAAKg8J,EAAKn+O,UAAUkd,WAAand,OAAOoxC,eAAegtM,EAAKn+O,WAAY,WAAYkF,MAAMhF,KAAKgF,KAAMmT,GACjGnT,KAAKqyN,QAAQ93D,UAAYv6J,KAAK09I,QAAQ6c,QAAQ,IAChDv6J,KAAK8tH,YAAY9tH,KAAK09I,QAAQ+xE,aAGhC,CAAC,CACHvwN,IAAK,SACLN,MAAO,WACL,OAAOq+E,EAAKg8J,EAAKjhO,WAAand,OAAOoxC,eAAegtM,GAAO,SAAUj5O,MAAMhF,KAAKgF,QAEjF,CACDd,IAAK,UACLN,MAAO,WACL,OAAO,MAIJq6O,EA7BE,GARqBl4O,EAFMmoO,IAEenoO,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,IAsC5E80D,SAEXojL,EAAKxpB,SAAW,OAChBwpB,EAAK1+E,QAAU,CAAC,SAAU,KAE1B9+J,EAAQo6D,QAAUojL,GAIZ,SAAUv9O,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQy9O,YAAcz9O,EAAQo6D,aAAUj4D,EAExC,IAAIu8D,EAAgb,SAAU96C,EAAK3kB,GAAK,GAAIgG,MAAMC,QAAQ0e,GAAQ,OAAOA,EAAY,GAAI3gB,OAAOoC,YAAYjG,OAAOwkB,GAAQ,OAAxf,SAAuBA,EAAK3kB,GAAK,IAAI0/D,EAAO,GAAQC,GAAK,EAAU94C,GAAK,EAAW+4C,OAAK18D,EAAW,IAAM,IAAK,IAAiC28D,EAA7B/uD,EAAK6T,EAAI3gB,OAAOoC,cAAmBu5D,GAAME,EAAK/uD,EAAGvI,QAAQu3D,QAAoBJ,EAAKl/D,KAAKq/D,EAAG37D,QAAYlE,GAAK0/D,EAAKx/D,SAAWF,GAA3D2/D,GAAK,IAAoE,MAAO76D,GAAO+hB,GAAK,EAAM+4C,EAAK96D,EAAO,QAAU,KAAW66D,GAAM7uD,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAI+V,EAAI,MAAM+4C,GAAQ,OAAOF,EAA6HK,CAAcp7C,EAAK3kB,GAAa,MAAM,IAAIod,UAAU,yDAEllB7W,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAIfwwN,EAAeD,EAFDt2N,EAAoB,IAMlCw2N,EAAcF,EAFDt2N,EAAoB,IAMjCipO,EAAU3S,EAFDt2N,EAAoB,IAM7B+3N,EAAWzB,EAFDt2N,EAAoB,KAM9B43N,EAAWtB,EAFDt2N,EAAoB,IAIlC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAMvF,SAAS4W,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAIlO,IAAI24C,GAAQ,EAAI4/K,EAAS19J,SAAS,iBAE9BsjL,EAAU,SAAUvU,GAGtB,SAASuU,EAAQ5f,EAAO/1N,IAX1B,SAAyBqkD,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAY5Go1C,CAAgBltD,KAAMm5O,GAEtB,IAaMn8K,EAbFr3D,EAAQgS,EAA2B3X,MAAOm5O,EAAQnhO,WAAand,OAAOoxC,eAAektM,IAAUn+O,KAAKgF,KAAMu5N,EAAO/1N,IAErH,GAAI9C,MAAMC,QAAQgF,EAAMnC,QAAQ6K,WAAY,CAC1C,IAAIA,EAAYhS,SAASC,cAAc,OACvC48O,EAAY7qO,EAAW1I,EAAMnC,QAAQ6K,WACrCkrN,EAAMlrN,UAAUizD,WAAWH,aAAa9yD,EAAWkrN,EAAMlrN,WACzD1I,EAAM0I,UAAYA,MAC0B,iBAA5B1I,EAAMnC,QAAQ6K,UAC9B1I,EAAM0I,UAAYhS,SAASsjE,cAAch6D,EAAMnC,QAAQ6K,WAEvD1I,EAAM0I,UAAY1I,EAAMnC,QAAQ6K,UAElC,OAAM1I,EAAM0I,qBAAqBwrC,aAKjCl0C,EAAM0I,UAAU+2E,UAAUt0E,IAAI,cAC9BnL,EAAMyzO,SAAW,GACjBzzO,EAAMoiH,SAAW,GACjBltH,OAAO0Z,KAAK5O,EAAMnC,QAAQukH,UAAU5gH,SAAQ,SAAUyY,GACpDja,EAAMitK,WAAWhzJ,EAAQja,EAAMnC,QAAQukH,SAASnoG,OAElD,GAAGzY,QAAQnM,KAAK2K,EAAM0I,UAAU8nG,iBAAiB,mBAAmB,SAAUp3F,GAC5EpZ,EAAMmtM,OAAO/zL,MAEfpZ,EAAM4zN,MAAMlsL,GAAGo3L,EAAQ5uK,QAAQt+C,OAAO48M,eAAe,SAAU72N,EAAMg3I,GAC/Dh3I,IAASmnO,EAAQ5uK,QAAQt+C,OAAO8hN,kBAClC1zN,EAAM+W,OAAO43H,MAGjB3uI,EAAM4zN,MAAMlsL,GAAGo3L,EAAQ5uK,QAAQt+C,OAAO6hN,iBAAiB,WACrD,IAAIigB,EAAwB1zO,EAAM4zN,MAAM3yG,UAAU0vG,WAE9ChiF,EADyBn6E,EAAek/K,EAAuB,GAChC,GAGnC1zO,EAAM+W,OAAO43H,MAER3uI,IAxBEq3D,EAAOrpB,EAAM72C,MAAM,iCAAkC6I,EAAMnC,SAAUmU,EAA2BhS,EAAOq3D,IA0IlH,OAnKF,SAAmBplD,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAK/dI,CAAUkhO,EAASvU,GA+CnB3jO,EAAak4O,EAAS,CAAC,CACrBj6O,IAAK,aACLN,MAAO,SAAoBghB,EAAQ7O,GACjC/Q,KAAK+nH,SAASnoG,GAAU7O,IAEzB,CACD7R,IAAK,SACLN,MAAO,SAAgBmgB,GACrB,IAAI5Y,EAASnG,KAET4f,EAAS,GAAG5Z,KAAKhL,KAAK+jB,EAAMqmE,WAAW,SAAUE,GACnD,OAAoC,IAA7BA,EAAUj0E,QAAQ,UAE3B,GAAKuO,EAAL,CAKA,GAJAA,EAASA,EAAO/f,MAAM,MAAMjF,QACN,WAAlBmkB,EAAMw7I,SACRx7I,EAAMriB,aAAa,OAAQ,UAEA,MAAzBsD,KAAK+nH,SAASnoG,GAAiB,CACjC,GAAmC,MAA/B5f,KAAKu5N,MAAMxF,OAAO9+J,WAA4D,MAAvCj1D,KAAKu5N,MAAMxF,OAAO9+J,UAAUr1C,GAErE,YADA+zB,EAAMzvB,KAAK,wCAAyCtE,EAAQb,GAG9D,GAAyC,MAArCizM,EAAYn8J,QAAQ+oB,MAAMh/D,GAE5B,YADA+zB,EAAMzvB,KAAK,2CAA4CtE,EAAQb,GAInE,IAAI9E,EAA8B,WAAlB8E,EAAMw7I,QAAuB,SAAW,QACxDx7I,EAAMmxF,iBAAiBj2F,GAAW,SAAUre,GAC1C,IAAIgD,OAAQ,EACZ,GAAsB,WAAlBmgB,EAAMw7I,QAAsB,CAC9B,GAAIx7I,EAAMk8F,cAAgB,EAAG,OAC7B,IAAID,EAAWj8F,EAAMvb,QAAQub,EAAMk8F,eAEjCr8G,GADEo8G,EAAS+uH,aAAa,cAGhB/uH,EAASp8G,QAAS,QAI1BA,GADEmgB,EAAMqmE,UAAUguB,SAAS,eAGnBr0F,EAAMngB,QAAUmgB,EAAMgrN,aAAa,UAE7CnuO,EAAEutH,iBAEJhjH,EAAOozN,MAAM3vG,QAEb,IAAI0vH,EAAwBnzO,EAAOozN,MAAM3yG,UAAU0vG,WAE/ChiF,EADyBn6E,EAAem/K,EAAuB,GAChC,GAEnC,GAA+B,MAA3BnzO,EAAO4hH,SAASnoG,GAClBzZ,EAAO4hH,SAASnoG,GAAQ5kB,KAAKmL,EAAQvH,QAChC,GAAIozN,EAAYn8J,QAAQ+oB,MAAMh/D,GAAQ9kB,qBAAqBk3N,EAAYn8J,QAAQk4J,MAAO,CAE3F,KADAnvN,EAAQksK,OAAO,SAAWlrJ,IACd,OACZzZ,EAAOozN,MAAM0O,gBAAe,IAAIlW,EAAal8J,SAAUk6J,OAAOz7E,EAAM3qI,OAAOmT,OAAOw3H,EAAM15I,QAAQwqD,OApH1G,SAAyBrkD,EAAK7B,EAAKN,GAAiK,OAApJM,KAAO6B,EAAOlG,OAAOyD,eAAeyC,EAAK7B,EAAK,CAAEN,MAAOA,EAAOL,YAAY,EAAM8C,cAAc,EAAMC,UAAU,IAAkBP,EAAI7B,GAAON,EAAgBmC,EAoH1F0yN,CAAgB,GAAI7zM,EAAQhhB,IAAS6lO,EAAQ5uK,QAAQ3Y,QAAQs6K,WAEpKrxN,EAAOozN,MAAM35M,OAAOA,EAAQhhB,EAAO6lO,EAAQ5uK,QAAQ3Y,QAAQs6K,MAE7DrxN,EAAOuW,OAAO43H,MAGhBt0I,KAAKo5O,SAASl+O,KAAK,CAAC0kB,EAAQb,OAE7B,CACD7f,IAAK,SACLN,MAAO,SAAgB01I,GACrB,IAAI90G,EAAmB,MAAT80G,EAAgB,GAAKt0I,KAAKu5N,MAAMnD,UAAU9hF,GACxDt0I,KAAKo5O,SAASjyO,SAAQ,SAAU6wM,GAC9B,IAAI2gC,EAAQx+K,EAAe69I,EAAM,GAC7Bp4L,EAAS+4N,EAAM,GACf55N,EAAQ45N,EAAM,GAElB,GAAsB,WAAlB55N,EAAMw7I,QAAsB,CAC9B,IAAI10C,OAAS,EACb,GAAa,MAATyuB,EACFzuB,EAAS,UACJ,GAAuB,MAAnBrmF,EAAQ5f,GACjBimG,EAAS9mG,EAAM4gD,cAAc,yBACxB,IAAKj/D,MAAMC,QAAQ6+B,EAAQ5f,IAAU,CAC1C,IAAIhhB,EAAQ4gC,EAAQ5f,GACC,iBAAVhhB,IACTA,EAAQA,EAAMmI,QAAQ,MAAO,QAE/B8+G,EAAS9mG,EAAM4gD,cAAc,iBAAmB/gE,EAAQ,MAE5C,MAAVinH,GACF9mG,EAAMngB,MAAQ,GACdmgB,EAAMk8F,eAAiB,GAEvB4K,EAAO7K,UAAW,OAGpB,GAAa,MAATs5B,EACFv1H,EAAMqmE,UAAUt1C,OAAO,kBAClB,GAAI/wB,EAAMgrN,aAAa,SAAU,CAGtC,IAAIzjO,EAAWk5B,EAAQ5f,KAAYb,EAAMqoD,aAAa,UAA+B,MAAnB5nC,EAAQ5f,IAAmB4f,EAAQ5f,GAAQZ,aAAeD,EAAMqoD,aAAa,UAA+B,MAAnB5nC,EAAQ5f,KAAoBb,EAAMqoD,aAAa,SAC1MroD,EAAMqmE,UAAU8jB,OAAO,YAAa5iG,QAEpCyY,EAAMqmE,UAAU8jB,OAAO,YAAgC,MAAnB1pE,EAAQ5f,WAO/Cu5N,EA/JK,CAgKZ/lB,EAASv9J,SAIX,SAAS0jL,EAAUlrO,EAAWuR,EAAQhhB,GACpC,IAAImgB,EAAQ1iB,SAASC,cAAc,UACnCyiB,EAAMriB,aAAa,OAAQ,UAC3BqiB,EAAMqmE,UAAUt0E,IAAI,MAAQ8O,GACf,MAAThhB,IACFmgB,EAAMngB,MAAQA,GAEhByP,EAAUtQ,YAAYghB,GAGxB,SAASm6N,EAAY7qO,EAAWonG,GACzB/0G,MAAMC,QAAQ80G,EAAO,MACxBA,EAAS,CAACA,IAEZA,EAAOtuG,SAAQ,SAAUiyO,GACvB,IAAI94E,EAAQjkK,SAASC,cAAc,QACnCgkK,EAAMl7E,UAAUt0E,IAAI,cACpBsoO,EAASjyO,SAAQ,SAAUqyO,GACzB,GAAuB,iBAAZA,EACTD,EAAUj5E,EAAOk5E,OACZ,CACL,IAAI55N,EAAS/kB,OAAO0Z,KAAKilO,GAAS,GAC9B56O,EAAQ46O,EAAQ55N,GAChBlf,MAAMC,QAAQ/B,GAW1B,SAAmByP,EAAWuR,EAAQyT,GACpC,IAAItU,EAAQ1iB,SAASC,cAAc,UACnCyiB,EAAMqmE,UAAUt0E,IAAI,MAAQ8O,GAC5ByT,EAAOlsB,SAAQ,SAAUvI,GACvB,IAAIinH,EAASxpH,SAASC,cAAc,WACtB,IAAVsC,EACFinH,EAAOnpH,aAAa,QAASkC,GAE7BinH,EAAOnpH,aAAa,WAAY,YAElCqiB,EAAMhhB,YAAY8nH,MAEpBx3G,EAAUtQ,YAAYghB,GAtBd06N,CAAUn5E,EAAO1gJ,EAAQhhB,GAEzB26O,EAAUj5E,EAAO1gJ,EAAQhhB,OAI/ByP,EAAUtQ,YAAYuiK,MAhC1B64E,EAAQ1hB,SAAW,GAmDnB0hB,EAAQ1hB,SAAW,CACjBppN,UAAW,KACX05G,SAAU,CACR2xH,MAAO,WACL,IAAIprO,EAAStO,KAETs0I,EAAQt0I,KAAKu5N,MAAMnE,eACvB,GAAa,MAAT9gF,EACJ,GAAoB,GAAhBA,EAAM15I,OAAa,CACrB,IAAI4kC,EAAUx/B,KAAKu5N,MAAMnD,YACzBv7N,OAAO0Z,KAAKirB,GAASr4B,SAAQ,SAAUzJ,GAEoC,MAArEs0N,EAAYn8J,QAAQ+oB,MAAMlhF,EAAMs0N,EAAYn8J,QAAQ+3J,MAAMqB,SAC5D3gN,EAAOirN,MAAM35M,OAAOliB,GAAM,WAI9BsC,KAAKu5N,MAAMtC,aAAa3iF,EAAOmwF,EAAQ5uK,QAAQ3Y,QAAQs6K,OAG3D/5L,UAAW,SAAmB7+B,GAC5B,IAAIuvO,EAAQnuO,KAAKu5N,MAAMnD,YAAmB,MAC5B,QAAVx3N,GAA4B,MAATuvO,EACrBnuO,KAAKu5N,MAAM35M,OAAO,QAAS,QAAS6kN,EAAQ5uK,QAAQ3Y,QAAQs6K,MAClD54N,GAAmB,UAAVuvO,GACnBnuO,KAAKu5N,MAAM35M,OAAO,SAAS,EAAO6kN,EAAQ5uK,QAAQ3Y,QAAQs6K,MAE5Dx3N,KAAKu5N,MAAM35M,OAAO,YAAahhB,EAAO6lO,EAAQ5uK,QAAQ3Y,QAAQs6K,OAEhEn+H,OAAQ,SAAgBz6F,GACtB,IAAI01I,EAAQt0I,KAAKu5N,MAAMnE,eACnB51L,EAAUx/B,KAAKu5N,MAAMnD,UAAU9hF,GAC/Bj7C,EAAS/uE,SAASkV,EAAQ65D,QAAU,GACxC,GAAc,OAAVz6F,GAA4B,OAAVA,EAAgB,CACpC,IAAIk5N,EAAqB,OAAVl5N,EAAiB,GAAK,EACX,QAAtB4gC,EAAQ/B,YAAqBq6L,IAAa,GAC9C93N,KAAKu5N,MAAM35M,OAAO,SAAUy5E,EAASy+H,EAAU2M,EAAQ5uK,QAAQ3Y,QAAQs6K,QAG3Ev1J,KAAM,SAAcrjE,IACJ,IAAVA,IACFA,EAAQksK,OAAO,oBAEjB9qK,KAAKu5N,MAAM35M,OAAO,OAAQhhB,EAAO6lO,EAAQ5uK,QAAQ3Y,QAAQs6K,OAE3D1jN,KAAM,SAAclV,GAClB,IAAI01I,EAAQt0I,KAAKu5N,MAAMnE,eACnB51L,EAAUx/B,KAAKu5N,MAAMnD,UAAU9hF,GACrB,UAAV11I,EACsB,YAApB4gC,EAAc,MAAuC,cAApBA,EAAc,KACjDx/B,KAAKu5N,MAAM35M,OAAO,QAAQ,EAAO6kN,EAAQ5uK,QAAQ3Y,QAAQs6K,MAEzDx3N,KAAKu5N,MAAM35M,OAAO,OAAQ,YAAa6kN,EAAQ5uK,QAAQ3Y,QAAQs6K,MAGjEx3N,KAAKu5N,MAAM35M,OAAO,OAAQhhB,EAAO6lO,EAAQ5uK,QAAQ3Y,QAAQs6K,SAMjE/7N,EAAQo6D,QAAUsjL,EAClB19O,EAAQy9O,YAAcA,GAIhB,SAAUx9O,EAAQD,GAExBC,EAAOD,QAAU,uOAIX,SAAUC,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAQgCmC,EAR5BE,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAEf07E,EAAO,SAASz+E,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,GAErZ8yJ,EAAUn+O,EAAoB,IAY9Bo+O,EAAc,SAAUC,GAG1B,SAASD,EAAYjnI,EAAQ7gC,IAT/B,SAAyBjqB,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAU5Go1C,CAAgBltD,KAAM45O,GAEtB,IAAIj0O,EAVR,SAAoC8R,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAUlN2c,CAA2B3X,MAAO45O,EAAY5hO,WAAand,OAAOoxC,eAAe2tM,IAAc5+O,KAAKgF,KAAM2yG,IAOtH,OALAhtG,EAAMmsE,MAAM7nB,UAAY6nB,EACxBnsE,EAAM0I,UAAU+2E,UAAUt0E,IAAI,mBAC9B,GAAGjR,MAAM7E,KAAK2K,EAAM0I,UAAU8nG,iBAAiB,mBAAoB,EAAG,GAAGhvG,SAAQ,SAAU3G,GACzFA,EAAK4kF,UAAUt0E,IAAI,iBAEdnL,EA0BT,OAzCF,SAAmBiS,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAG/dI,CAAU2hO,EAAaC,GAevB54O,EAAa24O,EAAa,CAAC,CACzB16O,IAAK,YACLN,MAAO,SAAmBinH,GACxB,IAAIrlH,EAAOy8E,EAAK28J,EAAY9+O,UAAUkd,WAAand,OAAOoxC,eAAe2tM,EAAY9+O,WAAY,YAAakF,MAAMhF,KAAKgF,KAAM6lH,GAE/H,OADArlH,EAAKsgE,MAAMi/F,gBAAkBl6C,EAAOz+C,aAAa,UAAY,GACtD5mE,IAER,CACDtB,IAAK,aACLN,MAAO,SAAoB4B,EAAMkI,GAC/Bu0E,EAAK28J,EAAY9+O,UAAUkd,WAAand,OAAOoxC,eAAe2tM,EAAY9+O,WAAY,aAAckF,MAAMhF,KAAKgF,KAAMQ,EAAMkI,GAC3H,IAAIoxO,EAAa95O,KAAK8xE,MAAMnS,cAAc,mBACtC/gE,EAAQ4B,GAAOA,EAAK4mE,aAAa,eAAsB,GACvD0yK,IACyB,SAAvBA,EAAWv/E,QACbu/E,EAAWh5K,MAAMi5K,OAASn7O,EAE1Bk7O,EAAWh5K,MAAMkmI,KAAOpoM,OAMzBg7O,EAvCS,GARc74O,EAFM44O,IAEe54O,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,IAgD5E80D,SAEXp6D,EAAQo6D,QAAU+jL,GAIZ,SAAUl+O,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAQgCmC,EAR5BE,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAIfo4O,EAAUn+O,EAAoB,IAY9Bw+O,EAAa,SAAUH,GAGzB,SAASG,EAAWrnI,EAAQq7H,IAT9B,SAAyBnmL,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAU5Go1C,CAAgBltD,KAAMg6O,GAEtB,IAAIr0O,EAVR,SAAoC8R,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAUlN2c,CAA2B3X,MAAOg6O,EAAWhiO,WAAand,OAAOoxC,eAAe+tM,IAAah/O,KAAKgF,KAAM2yG,IAQpH,OANAhtG,EAAM0I,UAAU+2E,UAAUt0E,IAAI,kBAC9B,GAAG3J,QAAQnM,KAAK2K,EAAM0I,UAAU8nG,iBAAiB,oBAAoB,SAAU31G,GAC7EA,EAAKypD,UAAY+jL,EAAMxtO,EAAK4mE,aAAa,eAAiB,OAE5DzhE,EAAMs0O,YAAct0O,EAAM0I,UAAUsxD,cAAc,gBAClDh6D,EAAMqkO,WAAWrkO,EAAMs0O,aAChBt0O,EAYT,OA5BF,SAAmBiS,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAG/dI,CAAU+hO,EAAYH,GAgBtB54O,EAAa+4O,EAAY,CAAC,CACxB96O,IAAK,aACLN,MAAO,SAAoB4B,EAAMkI,IAjC1B,SAASlK,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,GAkCnZ5J,CAAK+8J,EAAWl/O,UAAUkd,WAAand,OAAOoxC,eAAe+tM,EAAWl/O,WAAY,aAAckF,MAAMhF,KAAKgF,KAAMQ,EAAMkI,GACzHlI,EAAOA,GAAQR,KAAKi6O,YACpBj6O,KAAK8xE,MAAM7nB,UAAYzpD,EAAKypD,cAIzB+vL,EA1BQ,GARej5O,EAFM44O,IAEe54O,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,IAmC5E80D,SAEXp6D,EAAQo6D,QAAUmkL,GAIZ,SAAUt+O,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAAIqC,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAIf24O,EAAU,WACZ,SAASA,EAAQ3gB,EAAOmV,GACtB,IAAI/oO,EAAQ3F,MAJhB,SAAyB6nD,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAM5Go1C,CAAgBltD,KAAMk6O,GAEtBl6O,KAAKu5N,MAAQA,EACbv5N,KAAK0uO,gBAAkBA,GAAmBryO,SAAS8e,KACnDnb,KAAKs4E,KAAOihJ,EAAM3F,aAAa,cAC/B5zN,KAAKs4E,KAAKruB,UAAYjqD,KAAKgB,YAAYm5O,SACnCn6O,KAAKu5N,MAAMjhJ,OAASt4E,KAAKu5N,MAAM1F,oBACjC7zN,KAAKu5N,MAAMjhJ,KAAK43B,iBAAiB,UAAU,WACzCvqG,EAAM2yE,KAAKxX,MAAM8yI,WAAa,EAAIjuM,EAAM4zN,MAAMjhJ,KAAKm6C,UAAY,QAGnEzyH,KAAKwyC,OA4CP,OAzCAvxC,EAAai5O,EAAS,CAAC,CACrBh7O,IAAK,OACLN,MAAO,WACLoB,KAAKs4E,KAAK8M,UAAUt0E,IAAI,eAEzB,CACD5R,IAAK,WACLN,MAAO,SAAkBw7O,GACvB,IAAIroH,EAAOqoH,EAAUroH,KAAOqoH,EAAU9lM,MAAQ,EAAIt0C,KAAKs4E,KAAKkL,YAAc,EAEtE+zB,EAAM6iI,EAAUtmG,OAAS9zI,KAAKu5N,MAAMjhJ,KAAKm6C,UAC7CzyH,KAAKs4E,KAAKxX,MAAMixD,KAAOA,EAAO,KAC9B/xH,KAAKs4E,KAAKxX,MAAMy2C,IAAMA,EAAM,KAC5Bv3G,KAAKs4E,KAAK8M,UAAUt1C,OAAO,WAC3B,IAAIimL,EAAkB/1N,KAAK0uO,gBAAgB58G,wBACvCuoH,EAAar6O,KAAKs4E,KAAKw5C,wBACvBz2H,EAAQ,EASZ,GARIg/O,EAAW7qH,MAAQumG,EAAgBvmG,QACrCn0H,EAAQ06N,EAAgBvmG,MAAQ6qH,EAAW7qH,MAC3CxvH,KAAKs4E,KAAKxX,MAAMixD,KAAOA,EAAO12H,EAAQ,MAEpCg/O,EAAWtoH,KAAOgkG,EAAgBhkG,OACpC12H,EAAQ06N,EAAgBhkG,KAAOsoH,EAAWtoH,KAC1C/xH,KAAKs4E,KAAKxX,MAAMixD,KAAOA,EAAO12H,EAAQ,MAEpCg/O,EAAWvmG,OAASiiF,EAAgBjiF,OAAQ,CAC9C,IAAIrgB,EAAS4mH,EAAWvmG,OAASumG,EAAW9iI,IACxC+iI,EAAgBF,EAAUtmG,OAASsmG,EAAU7iI,IAAMkc,EACvDzzH,KAAKs4E,KAAKxX,MAAMy2C,IAAMA,EAAM+iI,EAAgB,KAC5Ct6O,KAAKs4E,KAAK8M,UAAUt0E,IAAI,WAE1B,OAAOzV,IAER,CACD6D,IAAK,OACLN,MAAO,WACLoB,KAAKs4E,KAAK8M,UAAUt1C,OAAO,cAC3B9vC,KAAKs4E,KAAK8M,UAAUt1C,OAAO,iBAIxBoqM,EA3DK,GA8Ddz+O,EAAQo6D,QAAUqkL,GAIZ,SAAUx+O,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAAIu7D,EAAgb,SAAU96C,EAAK3kB,GAAK,GAAIgG,MAAMC,QAAQ0e,GAAQ,OAAOA,EAAY,GAAI3gB,OAAOoC,YAAYjG,OAAOwkB,GAAQ,OAAxf,SAAuBA,EAAK3kB,GAAK,IAAI0/D,EAAO,GAAQC,GAAK,EAAU94C,GAAK,EAAW+4C,OAAK18D,EAAW,IAAM,IAAK,IAAiC28D,EAA7B/uD,EAAK6T,EAAI3gB,OAAOoC,cAAmBu5D,GAAME,EAAK/uD,EAAGvI,QAAQu3D,QAAoBJ,EAAKl/D,KAAKq/D,EAAG37D,QAAYlE,GAAK0/D,EAAKx/D,SAAWF,GAA3D2/D,GAAK,IAAoE,MAAO76D,GAAO+hB,GAAK,EAAM+4C,EAAK96D,EAAO,QAAU,KAAW66D,GAAM7uD,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAI+V,EAAI,MAAM+4C,GAAQ,OAAOF,EAA6HK,CAAcp7C,EAAK3kB,GAAa,MAAM,IAAIod,UAAU,yDAEllBmlE,EAAO,SAASz+E,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,GAErZ5lF,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAIfswN,EAAWC,EAFDt2N,EAAoB,IAM9B08N,EAAYpG,EAFDt2N,EAAoB,IAI/B++O,EAAQ/+O,EAAoB,IAE5Bg/O,EAAS1oB,EAAuByoB,GAIhCE,EAAS3oB,EAFDt2N,EAAoB,KAI5B63N,EAAa73N,EAAoB,IAIjCk/O,EAAU5oB,EAFDt2N,EAAoB,KAIjC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEvF,SAASmsD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAElO,SAASid,EAAUL,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAEje,IAAI8iO,EAAiB,CAAC,CAAC,CAAErjE,OAAQ,CAAC,IAAK,IAAK,KAAK,KAAW,CAAC,OAAQ,SAAU,YAAa,QAAS,CAAC,CAAExjK,KAAM,WAAa,CAAEA,KAAM,WAAa,CAAC,UAE7I8mO,EAAY,SAAUC,GAGxB,SAASD,EAAUrhB,EAAO/1N,GACxB0pD,EAAgBltD,KAAM46O,GAES,MAA3Bp3O,EAAQrI,QAAQitK,SAAwD,MAArC5kK,EAAQrI,QAAQitK,QAAQ/5J,YAC7D7K,EAAQrI,QAAQitK,QAAQ/5J,UAAYssO,GAGtC,IAAIh1O,EAAQgS,EAA2B3X,MAAO46O,EAAU5iO,WAAand,OAAOoxC,eAAe2uM,IAAY5/O,KAAKgF,KAAMu5N,EAAO/1N,IAGzH,OADAmC,EAAM4zN,MAAMlrN,UAAU+2E,UAAUt0E,IAAI,WAC7BnL,EAkBT,OA9BAsS,EAAU2iO,EAAWC,GAerB55O,EAAa25O,EAAW,CAAC,CACvB17O,IAAK,gBACLN,MAAO,SAAuBwpK,GAC5BA,EAAQ/5J,UAAU+2E,UAAUt0E,IAAI,WAChC9Q,KAAK86O,aAAa,GAAGj7O,MAAM7E,KAAKotK,EAAQ/5J,UAAU8nG,iBAAiB,WAAYukI,EAAQ7kL,SACvF71D,KAAK+6O,aAAa,GAAGl7O,MAAM7E,KAAKotK,EAAQ/5J,UAAU8nG,iBAAiB,WAAYukI,EAAQ7kL,SACvF71D,KAAK2tO,QAAU,IAAIqN,EAAYh7O,KAAKu5N,MAAOv5N,KAAKwD,QAAQqyN,QACpDztD,EAAQ/5J,UAAUsxD,cAAc,aAClC3/D,KAAKu5N,MAAM7/D,SAASorE,WAAW,CAAE5lO,IAAK,IAAK0oO,UAAU,IAAQ,SAAUtzF,EAAOnhI,GAC5Ei1J,EAAQrgD,SAAe,KAAE/sH,KAAKotK,GAAUj1J,EAAQyM,OAAOqiD,aAMxD24K,EA/BO,CAgCdJ,EAAO3kL,SAET+kL,EAAUnjB,UAAW,EAAI5F,EAASh8J,UAAS,EAAM,GAAI2kL,EAAO3kL,QAAQ4hK,SAAU,CAC5Et8N,QAAS,CACPitK,QAAS,CACPrgD,SAAU,CACR9lD,KAAM,SAAcrjE,GAClB,GAAIA,EAAO,CACT,IAAI01I,EAAQt0I,KAAKu5N,MAAMnE,eACvB,GAAa,MAAT9gF,GAAiC,GAAhBA,EAAM15I,OAAa,OACxC,IAAI+zO,EAAU3uO,KAAKu5N,MAAMhnH,QAAQ+hC,GAC7B,iBAAiBlyI,KAAKusO,IAA2C,IAA/BA,EAAQt9N,QAAQ,aACpDs9N,EAAU,UAAYA,GAEV3uO,KAAKu5N,MAAMlxD,MAAMslE,QACvBU,KAAK,OAAQM,QAErB3uO,KAAKu5N,MAAM35M,OAAO,QAAQ,SAQtC,IAAIo7N,EAAc,SAAUC,GAG1B,SAASD,EAAYzhB,EAAO1D,GAC1B3oK,EAAgBltD,KAAMg7O,GAEtB,IAAI70O,EAASwR,EAA2B3X,MAAOg7O,EAAYhjO,WAAand,OAAOoxC,eAAe+uM,IAAchgP,KAAKgF,KAAMu5N,EAAO1D,IAG9H,OADA1vN,EAAOwoO,QAAUxoO,EAAOmyE,KAAK3Y,cAAc,gBACpCx5D,EA0DT,OAlEA8R,EAAU+iO,EAAaC,GAWvBh6O,EAAa+5O,EAAa,CAAC,CACzB97O,IAAK,SACLN,MAAO,WACL,IAAI0P,EAAStO,KAEbi9E,EAAK+9J,EAAYlgP,UAAUkd,WAAand,OAAOoxC,eAAe+uM,EAAYlgP,WAAY,SAAUkF,MAAMhF,KAAKgF,MAC3GA,KAAKs4E,KAAK3Y,cAAc,eAAeuwC,iBAAiB,SAAS,SAAUlzG,GACrEsR,EAAOgqE,KAAK8M,UAAUguB,SAAS,cACjC9kG,EAAOouD,OAEPpuD,EAAO+/N,KAAK,OAAQ//N,EAAOqgO,QAAQx1H,aAErCn8G,EAAMmsH,oBAERnpH,KAAKs4E,KAAK3Y,cAAc,eAAeuwC,iBAAiB,SAAS,SAAUlzG,GACzE,GAAwB,MAApBsR,EAAOsgO,UAAmB,CAC5B,IAAIt6F,EAAQhmI,EAAOsgO,UACnBtgO,EAAOugO,eACPvgO,EAAOirN,MAAMjE,WAAWhhF,EAAO,QAAQ,EAAO4jF,EAAUriK,QAAQ3Y,QAAQs6K,aACjElpN,EAAOsgO,UAEhB5xO,EAAMmsH,iBACN76G,EAAOkkC,UAETxyC,KAAKu5N,MAAMlsL,GAAG6qL,EAAUriK,QAAQt+C,OAAO8hN,kBAAkB,SAAU/kF,EAAOusF,EAAUx8L,GAClF,GAAa,MAATiwG,EAAJ,CACA,GAAqB,IAAjBA,EAAM15I,QAAgBypC,IAAW6zL,EAAUriK,QAAQ3Y,QAAQs6K,KAAM,CACnE,IAAI+P,EAAwBj5N,EAAOirN,MAAMxF,OAAO+G,WAAW2f,EAAO5kL,QAASy+E,EAAM3qI,OAC7E69N,EAAyBrtK,EAAeotK,EAAuB,GAC/DtlK,EAAOulK,EAAuB,GAC9B3rM,EAAS2rM,EAAuB,GAEpC,GAAY,MAARvlK,EAAc,CAChB3zD,EAAOsgO,UAAY,IAAIvb,EAAWkE,MAAMjjF,EAAM3qI,MAAQkyB,EAAQomC,EAAKrnE,UACnE,IAAI+zO,EAAU8L,EAAO5kL,QAAQr2B,QAAQyiC,EAAKowJ,SAK1C,OAJA/jN,EAAOqgO,QAAQx1H,YAAcw1H,EAC7BrgO,EAAOqgO,QAAQjyO,aAAa,OAAQiyO,GACpCrgO,EAAOk3G,YACPl3G,EAAOqhH,SAASrhH,EAAOirN,MAAMzD,UAAUxnN,EAAOsgO,yBAIzCtgO,EAAOsgO,UAEhBtgO,EAAOkkC,aAGV,CACDtzC,IAAK,OACLN,MAAO,WACLq+E,EAAK+9J,EAAYlgP,UAAUkd,WAAand,OAAOoxC,eAAe+uM,EAAYlgP,WAAY,OAAQkF,MAAMhF,KAAKgF,MACzGA,KAAKs4E,KAAK+9B,gBAAgB,iBAIvB2kI,EAnES,CAoEhBT,EAAMxN,aAERiO,EAAYb,SAAW,CAAC,gEAAiE,mGAAoG,4BAA6B,6BAA6BnyO,KAAK,IAE5PvM,EAAQo6D,QAAU+kL,GAIZ,SAAUl/O,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAEIs8O,EAASppB,EAFDt2N,EAAoB,KAI5By7O,EAASz7O,EAAoB,IAE7B27O,EAAa37O,EAAoB,IAEjC2/O,EAAU3/O,EAAoB,IAI9B4/O,EAAetpB,EAFDt2N,EAAoB,KAMlC6/O,EAAWvpB,EAFDt2N,EAAoB,KAI9B8/O,EAAQ9/O,EAAoB,IAE5B+/O,EAASzpB,EAAuBwpB,GAEhCpE,EAAc17O,EAAoB,IAElCkwO,EAASlwO,EAAoB,IAE7B47O,EAAQ57O,EAAoB,IAE5B67O,EAAQ77O,EAAoB,IAI5BggP,EAAS1pB,EAFDt2N,EAAoB,KAM5BigP,EAAW3pB,EAFDt2N,EAAoB,KAM9Bi/O,EAAS3oB,EAFDt2N,EAAoB,KAM5BkgP,EAAW5pB,EAFDt2N,EAAoB,KAM9BmgP,EAAW7pB,EAFDt2N,EAAoB,KAM9BogP,EAAc9pB,EAFDt2N,EAAoB,KAMjCqgP,EAAU/pB,EAFDt2N,EAAoB,KAM7BsgP,EAAUhqB,EAFDt2N,EAAoB,KAI7BugP,EAAQvgP,EAAoB,IAE5BmgO,EAAS7J,EAAuBiqB,GAIhCC,EAAYlqB,EAFDt2N,EAAoB,KAM/BygP,EAAWnqB,EAFDt2N,EAAoB,KAM9B0gP,EAAYpqB,EAFDt2N,EAAoB,KAM/Bk/O,EAAU5oB,EAFDt2N,EAAoB,KAM7B0xO,EAAWpb,EAFDt2N,EAAoB,KAM9BwxO,EAAgBlb,EAFDt2N,EAAoB,KAMnCyxO,EAAenb,EAFDt2N,EAAoB,KAMlC2xO,EAAYrb,EAFDt2N,EAAoB,KAM/B2gP,EAAWrqB,EAFDt2N,EAAoB,MAM9B4gP,EAAStqB,EAFDt2N,EAAoB,KAIhC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEvFm6O,EAAOrlL,QAAQ1P,SAAS,CACtB,kCAAmCgxL,EAAWtL,mBAE9C,0BAA2BoL,EAAO3L,WAClC,+BAAgC4L,EAAYzL,gBAC5C,0BAA2BC,EAAO5C,WAClC,8BAA+BqO,EAAWvL,eAC1C,yBAA0BwL,EAAMtL,UAChC,yBAA0BuL,EAAMnL,UAEhC,0BAA2B+K,EAAO5L,WAClC,+BAAgC6L,EAAY1L,gBAC5C,0BAA2BE,EAAO7C,WAClC,8BAA+BsO,EAAWxL,eAC1C,yBAA0ByL,EAAMrL,UAChC,yBAA0BsL,EAAMpL,YAC/B,GAEHiP,EAAOrlL,QAAQ1P,SAAS,CACtB,gBAAiB8wL,EAAO3L,WACxB,oBAAqB6L,EAAWvL,eAChC,iBAAkBuP,EAAQkB,YAE1B,qBAAsBnF,EAAY1L,gBAClC,gBAAiBE,EAAO7C,WACxB,eAAgBuO,EAAMtL,UACtB,eAAgBuL,EAAMnL,UAEtB,qBAAsBkP,EAAavlL,QACnC,qBAAsB8lK,EAAO9lK,QAC7B,iBAAkBwlL,EAASxlL,QAC3B,eAAgB0lL,EAAO1lL,QAEvB,eAAgB2lL,EAAO3lL,QACvB,eAAgBkmL,EAAMxhB,KACtB,iBAAkBkhB,EAAS5lL,QAC3B,eAAgB4kL,EAAO5kL,QACvB,iBAAkB6lL,EAAS7lL,QAC3B,iBAAkB8lL,EAAS9lL,QAC3B,oBAAqB+lL,EAAY/lL,QAEjC,gBAAiBgmL,EAAQhmL,QACzB,gBAAiBimL,EAAQjmL,QAEzB,oBAAqBylL,EAAMgB,SAE3B,kBAAmBN,EAAUnmL,QAC7B,iBAAkBomL,EAASpmL,QAC3B,kBAAmBqmL,EAAUrmL,QAE7B,gBAAiBsmL,EAAStmL,QAC1B,cAAeumL,EAAOvmL,QAEtB,WAAY6kL,EAAQ7kL,QACpB,YAAaq3K,EAASr3K,QACtB,iBAAkBo3K,EAAap3K,QAC/B,kBAAmBm3K,EAAcn3K,QACjC,aAAcs3K,EAAUt3K,UACvB,GAEHp6D,EAAQo6D,QAAUqlL,EAAOrlL,SAInB,SAAUn6D,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQ4gP,iBAAcz+O,EAEtB,IAQgCmD,EAR5BE,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAEf07E,EAAO,SAASz+E,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,GAErZ+xI,EAAap9N,EAAoB,GAEjCw2N,GAE4BjxN,EAFS63N,IAEY73N,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEvF,SAASmsD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAIlO,IAsCIqhP,EAAc,IAtCI,SAAUrT,GAG9B,SAASuT,IAGP,OAFArvL,EAAgBltD,KAAMu8O,GAEf5kO,EAA2B3X,MAAOu8O,EAAgBvkO,WAAand,OAAOoxC,eAAeswM,IAAkBt4O,MAAMjE,KAAM8B,YA6B5H,OArCF,SAAmB8V,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAG/dI,CAAUskO,EAAiBvT,GAQ3B/nO,EAAas7O,EAAiB,CAAC,CAC7Br9O,IAAK,MACLN,MAAO,SAAas8C,EAAMt8C,GACxB,GAAc,OAAVA,GAA4B,OAAVA,EAAgB,CACpC,IAAIy6F,EAASr5F,KAAKpB,MAAMs8C,IAAS,EACjCt8C,EAAkB,OAAVA,EAAiBy6F,EAAS,EAAIA,EAAS,EAEjD,OAAc,IAAVz6F,GACFoB,KAAK8vC,OAAOoL,IACL,GAEA+hC,EAAKs/J,EAAgBzhP,UAAUkd,WAAand,OAAOoxC,eAAeswM,EAAgBzhP,WAAY,MAAOkF,MAAMhF,KAAKgF,KAAMk7C,EAAMt8C,KAGtI,CACDM,IAAK,SACLN,MAAO,SAAgBs8C,EAAMt8C,GAC3B,OAAOq+E,EAAKs/J,EAAgBzhP,UAAUkd,WAAand,OAAOoxC,eAAeswM,EAAgBzhP,WAAY,SAAUkF,MAAMhF,KAAKgF,KAAMk7C,EAAMt8C,IAAUq+E,EAAKs/J,EAAgBzhP,UAAUkd,WAAand,OAAOoxC,eAAeswM,EAAgBzhP,WAAY,SAAUkF,MAAMhF,KAAKgF,KAAMk7C,EAAM5wB,SAAS1rB,MAEzR,CACDM,IAAK,QACLN,MAAO,SAAes8C,GACpB,OAAO5wB,SAAS2yD,EAAKs/J,EAAgBzhP,UAAUkd,WAAand,OAAOoxC,eAAeswM,EAAgBzhP,WAAY,QAASkF,MAAMhF,KAAKgF,KAAMk7C,UAAUt9C,MAI/I2+O,EAnCa,CAoCpBvqB,EAAYn8J,QAAQu4J,WAAWE,OAEf,CAAoB,SAAU,YAAa,CAC3DljJ,MAAO4mJ,EAAYn8J,QAAQ+3J,MAAMoB,MACjC/5J,UAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAGnCx5D,EAAQ4gP,YAAcA,GAIhB,SAAU3gP,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAIgCmC,EAJ5B86N,EAASrgO,EAAoB,GAMjC,SAAS0xD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAIlO,IAAIwhP,EAAa,SAAU7hB,GAGzB,SAAS6hB,IAGP,OAFAtvL,EAAgBltD,KAAMw8O,GAEf7kO,EAA2B3X,MAAOw8O,EAAWxkO,WAAand,OAAOoxC,eAAeuwM,IAAav4O,MAAMjE,KAAM8B,YAGlH,OAXF,SAAmB8V,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAG/dI,CAAUukO,EAAY7hB,GAQf6hB,EATQ,GARez7O,EAFK86N,IAEgB96N,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,IAkB7E80D,SAEV2mL,EAAW/sB,SAAW,aACtB+sB,EAAWjiF,QAAU,aAErB9+J,EAAQo6D,QAAU2mL,GAIZ,SAAU9gP,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAMgCmC,EAN5BE,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAEfs6N,EAASrgO,EAAoB,GAMjC,SAAS0xD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAIlO,IAAIyhP,EAAS,SAAU9hB,GAGrB,SAAS8hB,IAGP,OAFAvvL,EAAgBltD,KAAMy8O,GAEf9kO,EAA2B3X,MAAOy8O,EAAOzkO,WAAand,OAAOoxC,eAAewwM,IAASx4O,MAAMjE,KAAM8B,YAU1G,OAlBF,SAAmB8V,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAG/dI,CAAUwkO,EAAQ9hB,GAQlB15N,EAAaw7O,EAAQ,KAAM,CAAC,CAC1Bv9O,IAAK,UACLN,MAAO,SAAiByzN,GACtB,OAAOryN,KAAKu6J,QAAQlpJ,QAAQghN,EAAQ93D,SAAW,MAI5CkiF,EAhBI,GARmB17O,EAFK86N,IAEgB96N,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,IAyB7E80D,SAEV4mL,EAAOhtB,SAAW,SAClBgtB,EAAOliF,QAAU,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MAEhD9+J,EAAQo6D,QAAU4mL,GAIZ,SAAU/gP,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQo6D,QAAUp6D,EAAQ6gP,cAAW1+O,EAErC,IAAIqD,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAEf07E,EAAO,SAASz+E,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,GAIrZmrI,EAAcF,EAFDt2N,EAAoB,IAMjCg/N,EAAU1I,EAFDt2N,EAAoB,IAM7BsoO,EAAchS,EAFDt2N,EAAoB,KAIrC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAIvF,SAASmsD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAElO,SAASid,EAAUL,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAEje,IAAIykO,EAAW,SAAU3hB,GAGvB,SAAS2hB,IAGP,OAFApvL,EAAgBltD,KAAMs8O,GAEf3kO,EAA2B3X,MAAOs8O,EAAStkO,WAAand,OAAOoxC,eAAeqwM,IAAWr4O,MAAMjE,KAAM8B,YAwC9G,OA7CAmW,EAAUqkO,EAAU3hB,GAQpB15N,EAAaq7O,EAAU,CAAC,CACtBp9O,IAAK,SACLN,MAAO,SAAgBlB,EAAMkB,GACvBlB,IAASs9E,EAAKy0I,UAAa7wN,EAG7Bq+E,EAAKq/J,EAASxhP,UAAUkd,WAAand,OAAOoxC,eAAeqwM,EAASxhP,WAAY,SAAUkF,MAAMhF,KAAKgF,KAAMtC,EAAMkB,GAFjHoB,KAAK8tH,YAAYkkG,EAAYn8J,QAAQ52D,OAAOe,KAAK09I,QAAQtyE,UAK5D,CACDlsE,IAAK,SACLN,MAAO,WACY,MAAboB,KAAK0M,MAA6B,MAAb1M,KAAKiD,KAC5BjD,KAAKuO,OAAOuhC,SAEZmtC,EAAKq/J,EAASxhP,UAAUkd,WAAand,OAAOoxC,eAAeqwM,EAASxhP,WAAY,SAAUkF,MAAMhF,KAAKgF,QAGxG,CACDd,IAAK,cACLN,MAAO,SAAqBlB,EAAMkB,GAEhC,OADAoB,KAAKuO,OAAOiqN,QAAQx4N,KAAK67B,OAAO77B,KAAKuO,QAASvO,KAAKpF,UAC/C8C,IAASsC,KAAKuO,OAAOmvI,QAAQ+xE,UAC/BzvN,KAAKuO,OAAOu/G,YAAYpwH,EAAMkB,GACvBoB,OAEPA,KAAKuO,OAAO+vH,SACLrhD,EAAKq/J,EAASxhP,UAAUkd,WAAand,OAAOoxC,eAAeqwM,EAASxhP,WAAY,cAAekF,MAAMhF,KAAKgF,KAAMtC,EAAMkB,OAG/H,CAAC,CACHM,IAAK,UACLN,MAAO,SAAiByzN,GACtB,OAAOA,EAAQ93D,UAAYv6J,KAAKu6J,aAAU38J,EAAYq/E,EAAKq/J,EAAStkO,WAAand,OAAOoxC,eAAeqwM,GAAW,UAAWt8O,MAAMhF,KAAKgF,KAAMqyN,OAI3IiqB,EA9CM,CA+Cb9hB,EAAQ3kK,SAEVymL,EAAS7sB,SAAW,YACpB6sB,EAAS/hF,QAAU,KAEnB,IAAIv/E,EAAO,SAAU0hK,GA4BnB,SAAS1hK,EAAKq3I,GACZnlK,EAAgBltD,KAAMg7E,GAEtB,IAAI70E,EAASwR,EAA2B3X,MAAOg7E,EAAKhjE,WAAand,OAAOoxC,eAAe+uC,IAAOhgF,KAAKgF,KAAMqyN,IAErGsqB,EAAmB,SAA0B/gP,GAC/C,GAAIA,EAAE4B,OAAO8jE,aAAe+wJ,EAA5B,CACA,IAAIzyM,EAASzZ,EAAOu3I,QAAQl+G,QAAQ6yL,GAChC/C,EAAO0C,EAAYn8J,QAAQ7vD,KAAKpK,EAAE4B,QACvB,YAAXoiB,EACF0vM,EAAK1vM,OAAO,OAAQ,aACA,cAAXA,GACT0vM,EAAK1vM,OAAO,OAAQ,aAMxB,OAFAyyM,EAAQniH,iBAAiB,aAAcysI,GACvCtqB,EAAQniH,iBAAiB,YAAaysI,GAC/Bx2O,EAiDT,OA9FA8R,EAAU+iE,EAAM0hK,GAEhBz7O,EAAa+5E,EAAM,KAAM,CAAC,CACxB97E,IAAK,SACLN,MAAO,SAAgBA,GACrB,IAAI27J,EAAoB,YAAV37J,EAAsB,KAAO,KACvCs8C,EAAO+hC,EAAKjC,EAAKhjE,WAAand,OAAOoxC,eAAe+uC,GAAO,SAAUh7E,MAAMhF,KAAKgF,KAAMu6J,GAI1F,MAHc,YAAV37J,GAAiC,cAAVA,GACzBs8C,EAAKx+C,aAAa,eAA0B,YAAVkC,GAE7Bs8C,IAER,CACDh8C,IAAK,UACLN,MAAO,SAAiByzN,GACtB,MAAwB,OAApBA,EAAQ93D,QAAyB,UACb,OAApB83D,EAAQ93D,QACN83D,EAAQ0X,aAAa,gBACyB,SAAzC1X,EAAQjrJ,aAAa,gBAA6B,UAAY,YAE9D,cAJX,MAgCJnmE,EAAa+5E,EAAM,CAAC,CAClB97E,IAAK,SACLN,MAAO,SAAgBlB,EAAMkB,GACvBoB,KAAK4vC,SAASh1C,OAAS,GACzBoF,KAAK4vC,SAASqrC,KAAKr7D,OAAOliB,EAAMkB,KAGnC,CACDM,IAAK,UACLN,MAAO,WAEL,OAxHmBmC,EAwHI,GAxHC7B,EAwHGc,KAAK09I,QAAQ+xE,SAxHX7wN,EAwHqBoB,KAAK09I,QAAQl+G,QAAQx/B,KAAKqyN,SAxHlCnzN,KAAO6B,EAAOlG,OAAOyD,eAAeyC,EAAK7B,EAAK,CAAEN,MAAOA,EAAOL,YAAY,EAAM8C,cAAc,EAAMC,UAAU,IAAkBP,EAAI7B,GAAON,EAAgBmC,EAA3M,IAAyBA,EAAK7B,EAAKN,IA0H9B,CACDM,IAAK,eACLN,MAAO,SAAsB0wN,EAAM/jJ,GACjC,GAAI+jJ,aAAgBgtB,EAClBr/J,EAAKjC,EAAKlgF,UAAUkd,WAAand,OAAOoxC,eAAe+uC,EAAKlgF,WAAY,eAAgBkF,MAAMhF,KAAKgF,KAAMsvN,EAAM/jJ,OAC1G,CACL,IAAI5hE,EAAe,MAAP4hE,EAAcvrE,KAAKpF,SAAW2wE,EAAI1vC,OAAO77B,MACjD0nD,EAAQ1nD,KAAKsrB,MAAM3hB,GACvB+9C,EAAMn5C,OAAO4yD,aAAamuJ,EAAM5nK,MAGnC,CACDxoD,IAAK,WACLN,MAAO,SAAkBuU,GACvB8pE,EAAKjC,EAAKlgF,UAAUkd,WAAand,OAAOoxC,eAAe+uC,EAAKlgF,WAAY,WAAYkF,MAAMhF,KAAKgF,KAAMmT,GACrG,IAAIlQ,EAAOjD,KAAKiD,KACJ,MAARA,GAAgBA,EAAKyJ,OAAS1M,MAAQiD,EAAKy6I,QAAQ+xE,WAAazvN,KAAK09I,QAAQ+xE,UAAYxsN,EAAKovN,QAAQ93D,UAAYv6J,KAAKqyN,QAAQ93D,SAAWt3J,EAAKovN,QAAQjrJ,aAAa,kBAAoBpnE,KAAKqyN,QAAQjrJ,aAAa,kBACpNnkE,EAAKw1N,aAAaz4N,MAClBiD,EAAK6sC,YAGR,CACD5wC,IAAK,UACLN,MAAO,SAAiBpB,GACtB,GAAIA,EAAOkgJ,QAAQ+xE,WAAazvN,KAAK09I,QAAQ+xE,SAAU,CACrD,IAAIjvN,EAAOwxN,EAAYn8J,QAAQ52D,OAAOe,KAAK09I,QAAQo1E,cACnDt1N,EAAOi7N,aAAaj4N,GACpBR,KAAKjC,YAAYyC,GAEnBy8E,EAAKjC,EAAKlgF,UAAUkd,WAAand,OAAOoxC,eAAe+uC,EAAKlgF,WAAY,UAAWkF,MAAMhF,KAAKgF,KAAMxC,OAIjGw9E,EA/FE,CAgGT8oJ,EAAYjuK,SAEdmlB,EAAKy0I,SAAW,OAChBz0I,EAAK5P,MAAQ4mJ,EAAYn8J,QAAQ+3J,MAAM8E,WACvC13I,EAAKu/E,QAAU,CAAC,KAAM,MACtBv/E,EAAK83I,aAAe,YACpB93I,EAAK+3I,gBAAkB,CAACupB,GAExB7gP,EAAQ6gP,SAAWA,EACnB7gP,EAAQo6D,QAAUmlB,GAIZ,SAAUt/E,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAIgCmC,EAJ5B67O,EAAQphP,EAAoB,IAMhC,SAAS0xD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAIlO,IAAI6hP,EAAS,SAAUC,GAGrB,SAASD,IAGP,OAFA3vL,EAAgBltD,KAAM68O,GAEfllO,EAA2B3X,MAAO68O,EAAO7kO,WAAand,OAAOoxC,eAAe4wM,IAAS54O,MAAMjE,KAAM8B,YAG1G,OAXF,SAAmB8V,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAG/dI,CAAU4kO,EAAQC,GAQXD,EATI,GARmB97O,EAFI67O,IAEiB77O,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,IAkB9E80D,SAETgnL,EAAOptB,SAAW,SAClBotB,EAAOtiF,QAAU,CAAC,KAAM,KAExB9+J,EAAQo6D,QAAUgnL,GAIZ,SAAUnhP,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAQgCmC,EAR5BE,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAIf2nO,EAAU1tO,EAAoB,GAMlC,SAAS0xD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAIlO,IAAI+hP,EAAS,SAAUtiB,GAGrB,SAASsiB,IAGP,OAFA7vL,EAAgBltD,KAAM+8O,GAEfplO,EAA2B3X,MAAO+8O,EAAO/kO,WAAand,OAAOoxC,eAAe8wM,IAAS94O,MAAMjE,KAAM8B,YAuB1G,OA/BF,SAAmB8V,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAG/dI,CAAU8kO,EAAQtiB,GAQlBx5N,EAAa87O,EAAQ,KAAM,CAAC,CAC1B79O,IAAK,SACLN,MAAO,SAAgBA,GACrB,MAAc,UAAVA,EACKvC,SAASC,cAAc,OACX,QAAVsC,EACFvC,SAASC,cAAc,OA7B3B,SAASkC,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,EA+B1Y5J,CAAK8/J,EAAO/kO,WAAand,OAAOoxC,eAAe8wM,GAAS,SAAU/8O,MAAMhF,KAAKgF,KAAMpB,KAG7F,CACDM,IAAK,UACLN,MAAO,SAAiByzN,GACtB,MAAwB,QAApBA,EAAQ93D,QAA0B,MACd,QAApB83D,EAAQ93D,QAA0B,aAAtC,MAKGwiF,EA7BI,GARmBh8O,EAFMmoO,IAEenoO,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,IAsC5E80D,SAEXknL,EAAOttB,SAAW,SAClBstB,EAAOxiF,QAAU,CAAC,MAAO,OAEzB9+J,EAAQo6D,QAAUknL,GAIZ,SAAUrhP,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAIgCmC,EAJ5BmoO,EAAU1tO,EAAoB,GAMlC,SAAS0xD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAIlO,IAAIgiP,EAAS,SAAUviB,GAGrB,SAASuiB,IAGP,OAFA9vL,EAAgBltD,KAAMg9O,GAEfrlO,EAA2B3X,MAAOg9O,EAAOhlO,WAAand,OAAOoxC,eAAe+wM,IAAS/4O,MAAMjE,KAAM8B,YAG1G,OAXF,SAAmB8V,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAG/dI,CAAU+kO,EAAQviB,GAQXuiB,EATI,GARmBj8O,EAFMmoO,IAEenoO,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,IAkB5E80D,SAEXmnL,EAAOvtB,SAAW,SAClButB,EAAOziF,QAAU,IAEjB9+J,EAAQo6D,QAAUmnL,GAIZ,SAAUthP,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAIgCmC,EAJ5BmoO,EAAU1tO,EAAoB,GAMlC,SAAS0xD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAIlO,IAAIiiP,EAAY,SAAUxiB,GAGxB,SAASwiB,IAGP,OAFA/vL,EAAgBltD,KAAMi9O,GAEftlO,EAA2B3X,MAAOi9O,EAAUjlO,WAAand,OAAOoxC,eAAegxM,IAAYh5O,MAAMjE,KAAM8B,YAGhH,OAXF,SAAmB8V,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAG/dI,CAAUglO,EAAWxiB,GAQdwiB,EATO,GARgBl8O,EAFMmoO,IAEenoO,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,IAkB5E80D,SAEXonL,EAAUxtB,SAAW,YACrBwtB,EAAU1iF,QAAU,IAEpB9+J,EAAQo6D,QAAUonL,GAIZ,SAAUvhP,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAUgCmC,EAV5BE,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAEf07E,EAAO,SAASz+E,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,GAErZ+xI,EAAap9N,EAAoB,GAEjCw2N,GAI4BjxN,EAJS63N,IAIY73N,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAFnFm8O,EAAQ1hP,EAAoB,IAIhC,SAAS0xD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAIlO,IAAImiP,EAAa,CAAC,MAAO,SAAU,SAE/BC,EAAQ,SAAUhrB,GAGpB,SAASgrB,IAGP,OAFAlwL,EAAgBltD,KAAMo9O,GAEfzlO,EAA2B3X,MAAOo9O,EAAMplO,WAAand,OAAOoxC,eAAemxM,IAAQn5O,MAAMjE,KAAM8B,YAqDxG,OA/DF,SAAmB8V,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAK/dI,CAAUmlO,EAAOhrB,GAQjBnxN,EAAam8O,EAAO,CAAC,CACnBl+O,IAAK,SACLN,MAAO,SAAgBlB,EAAMkB,GACvBu+O,EAAW9rO,QAAQ3T,IAAS,EAC1BkB,EACFoB,KAAKqyN,QAAQ31N,aAAagB,EAAMkB,GAEhCoB,KAAKqyN,QAAQh8G,gBAAgB34G,GAG/Bu/E,EAAKmgK,EAAMtiP,UAAUkd,WAAand,OAAOoxC,eAAemxM,EAAMtiP,WAAY,SAAUkF,MAAMhF,KAAKgF,KAAMtC,EAAMkB,MAG7G,CAAC,CACHM,IAAK,SACLN,MAAO,SAAgBA,GACrB,IAAIs8C,EAAO+hC,EAAKmgK,EAAMplO,WAAand,OAAOoxC,eAAemxM,GAAQ,SAAUp9O,MAAMhF,KAAKgF,KAAMpB,GAI5F,MAHqB,iBAAVA,GACTs8C,EAAKx+C,aAAa,MAAOsD,KAAKipO,SAASrqO,IAElCs8C,IAER,CACDh8C,IAAK,UACLN,MAAO,SAAiByzN,GACtB,OAAO8qB,EAAW53L,QAAO,SAAU/lB,EAAS8yL,GAI1C,OAHID,EAAQ0X,aAAazX,KACvB9yL,EAAQ8yL,GAAaD,EAAQjrJ,aAAakrJ,IAErC9yL,IACN,MAEJ,CACDtgC,IAAK,QACLN,MAAO,SAAe6J,GACpB,MAAQ,qBAAqBrG,KAAKqG,IAAQ,yBAAyBrG,KAAKqG,KAGzE,CACDvJ,IAAK,WACLN,MAAO,SAAkB6J,GACvB,OAAO,EAAIy0O,EAAMjU,UAAUxgO,EAAK,CAAC,OAAQ,QAAS,SAAWA,EAAM,SAEpE,CACDvJ,IAAK,QACLN,MAAO,SAAeyzN,GACpB,OAAOA,EAAQjrJ,aAAa,WAIzBg2K,EA3DG,CA4DVprB,EAAYn8J,QAAQk4J,OAEtBqvB,EAAM3tB,SAAW,QACjB2tB,EAAM7iF,QAAU,MAEhB9+J,EAAQo6D,QAAUunL,GAIZ,SAAU1hP,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAGT,IAUgCmC,EAV5BE,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAEf07E,EAAO,SAASz+E,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,GAErZg1I,EAASrgO,EAAoB,GAE7B0hP,EAAQ1hP,EAAoB,IAE5Bi/O,GAE4B15O,EAFIm8O,IAEiBn8O,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEvF,SAASmsD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAIlO,IAAImiP,EAAa,CAAC,SAAU,SAExBE,EAAQ,SAAUC,GAGpB,SAASD,IAGP,OAFAnwL,EAAgBltD,KAAMq9O,GAEf1lO,EAA2B3X,MAAOq9O,EAAMrlO,WAAand,OAAOoxC,eAAeoxM,IAAQp5O,MAAMjE,KAAM8B,YA+CxG,OAzDF,SAAmB8V,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAK/dI,CAAUolO,EAAOC,GAQjBr8O,EAAao8O,EAAO,CAAC,CACnBn+O,IAAK,SACLN,MAAO,SAAgBlB,EAAMkB,GACvBu+O,EAAW9rO,QAAQ3T,IAAS,EAC1BkB,EACFoB,KAAKqyN,QAAQ31N,aAAagB,EAAMkB,GAEhCoB,KAAKqyN,QAAQh8G,gBAAgB34G,GAG/Bu/E,EAAKogK,EAAMviP,UAAUkd,WAAand,OAAOoxC,eAAeoxM,EAAMviP,WAAY,SAAUkF,MAAMhF,KAAKgF,KAAMtC,EAAMkB,MAG7G,CAAC,CACHM,IAAK,SACLN,MAAO,SAAgBA,GACrB,IAAIs8C,EAAO+hC,EAAKogK,EAAMrlO,WAAand,OAAOoxC,eAAeoxM,GAAQ,SAAUr9O,MAAMhF,KAAKgF,KAAMpB,GAI5F,OAHAs8C,EAAKx+C,aAAa,cAAe,KACjCw+C,EAAKx+C,aAAa,mBAAmB,GACrCw+C,EAAKx+C,aAAa,MAAOsD,KAAKipO,SAASrqO,IAChCs8C,IAER,CACDh8C,IAAK,UACLN,MAAO,SAAiByzN,GACtB,OAAO8qB,EAAW53L,QAAO,SAAU/lB,EAAS8yL,GAI1C,OAHID,EAAQ0X,aAAazX,KACvB9yL,EAAQ8yL,GAAaD,EAAQjrJ,aAAakrJ,IAErC9yL,IACN,MAEJ,CACDtgC,IAAK,WACLN,MAAO,SAAkB6J,GACvB,OAAOgyO,EAAO5kL,QAAQozK,SAASxgO,KAEhC,CACDvJ,IAAK,QACLN,MAAO,SAAeyzN,GACpB,OAAOA,EAAQjrJ,aAAa,WAIzBi2K,EArDG,CAsDVxhB,EAAOlK,YAET0rB,EAAM5tB,SAAW,QACjB4tB,EAAM/3J,UAAY,WAClB+3J,EAAM9iF,QAAU,SAEhB9+J,EAAQo6D,QAAUwnL,GAIZ,SAAU3hP,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQo6D,QAAUp6D,EAAQ8hP,iBAAc3/O,EAExC,IAAIqD,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAMf6oO,EAAUtY,EAFDt2N,EAAoB,KAM7BipO,EAAU3S,EAFDt2N,EAAoB,IAM7B43N,EAAWtB,EAFDt2N,EAAoB,IAIlC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEvF,SAASmsD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAElO,SAASid,EAAUL,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAEje,IAAI0lO,EAAc,SAAUC,GAG1B,SAASD,IAGP,OAFArwL,EAAgBltD,KAAMu9O,GAEf5lO,EAA2B3X,MAAOu9O,EAAYvlO,WAAand,OAAOoxC,eAAesxM,IAAct5O,MAAMjE,KAAM8B,YAuBpH,OA5BAmW,EAAUslO,EAAaC,GAQvBv8O,EAAas8O,EAAa,KAAM,CAAC,CAC/Br+O,IAAK,SACLN,MAAO,SAAgBA,GACrB,IAAIs8C,EAlCC,SAAS18C,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,EAkCxY5J,CAAKsgK,EAAYvlO,WAAand,OAAOoxC,eAAesxM,GAAc,SAAUv9O,MAAMhF,KAAKgF,KAAMpB,GAQxG,MAPqB,iBAAVA,IACTe,OAAO89O,MAAMp6J,OAAOzkF,EAAOs8C,EAAM,CAC/BwiM,cAAc,EACdC,WAAY,SAEdziM,EAAKx+C,aAAa,aAAckC,IAE3Bs8C,IAER,CACDh8C,IAAK,QACLN,MAAO,SAAeyzN,GACpB,OAAOA,EAAQjrJ,aAAa,kBAIzBm2K,EA7BS,CA8BhBnT,EAAQv0K,SAEV0nL,EAAY9tB,SAAW,UACvB8tB,EAAYj4J,UAAY,aACxBi4J,EAAYhjF,QAAU,OAEtB,IAAIqjF,EAAU,SAAUhZ,GAUtB,SAASgZ,IACP1wL,EAAgBltD,KAAM49O,GAEtB,IAAIz3O,EAASwR,EAA2B3X,MAAO49O,EAAQ5lO,WAAand,OAAOoxC,eAAe2xM,IAAU5iP,KAAKgF,OAEzG,GAAoB,MAAhBL,OAAO89O,MACT,MAAM,IAAI1gP,MAAM,kCAElB,OAAOoJ,EAGT,OApBA8R,EAAU2lO,EAAShZ,GAEnB3jO,EAAa28O,EAAS,KAAM,CAAC,CAC3B1+O,IAAK,WACLN,MAAO,WACL6lO,EAAQ5uK,QAAQ1P,SAASo3L,GAAa,OAenCK,EArBK,CAsBZxqB,EAASv9J,SAEXp6D,EAAQ8hP,YAAcA,EACtB9hP,EAAQo6D,QAAU+nL,GAIZ,SAAUliP,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQo6D,QAAUp6D,EAAQoiP,UAAYpiP,EAAQi/N,eAAY98N,EAE1D,IAAIqD,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAMfywN,EAAcF,EAFDt2N,EAAoB,IAMjCipO,EAAU3S,EAFDt2N,EAAoB,IAM7B43N,EAAWtB,EAFDt2N,EAAoB,IAQlC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEvF,SAASmsD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAElO,SAASid,EAAUL,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAEje,IAAIimO,EAAkB,SAAUC,GAG9B,SAASD,IAGP,OAFA5wL,EAAgBltD,KAAM89O,GAEfnmO,EAA2B3X,MAAO89O,EAAgB9lO,WAAand,OAAOoxC,eAAe6xM,IAAkB75O,MAAMjE,KAAM8B,YAyB5H,OA9BAmW,EAAU6lO,EAAiBC,GAQ3B98O,EAAa68O,EAAiB,CAAC,CAC7B5+O,IAAK,cACLN,MAAO,SAAqB65C,GAC1Bz4C,KAAKqyN,QAAQl5G,YAAcn5G,KAAKqyN,QAAQl5G,YACxCn5G,KAAK8yM,SAvCA,SAASt0M,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,EAwCnZ5J,CAAK6gK,EAAgBhjP,UAAUkd,WAAand,OAAOoxC,eAAe6xM,EAAgBhjP,WAAY,cAAekF,MAAMhF,KAAKgF,KAAMy4C,KAE/H,CACDv5C,IAAK,YACLN,MAAO,SAAmBo/O,GACxB,IAAI90L,EAAOlpD,KAAKqyN,QAAQl5G,YACpBn5G,KAAKi+O,aAAe/0L,KAClBA,EAAKvC,OAAO/rD,OAAS,GAAwB,MAAnBoF,KAAKi+O,cACjCj+O,KAAKqyN,QAAQpoK,UAAY+zL,EAAW90L,GACpClpD,KAAKqyN,QAAQiT,YACbtlO,KAAK8yM,UAEP9yM,KAAKi+O,WAAa/0L,OAKjB40L,EA/Ba,CAVThsB,EAFDt2N,EAAoB,KA4CvBq6D,SAETioL,EAAgBx4J,UAAY,YAE5B,IAAIu4J,EAAY,IAAI7rB,EAAYn8J,QAAQu4J,WAAWE,MAAM,QAAS,OAAQ,CACxEljJ,MAAO4mJ,EAAYn8J,QAAQ+3J,MAAMqB,SAG/BivB,EAAS,SAAUtZ,GAWrB,SAASsZ,EAAO3kB,EAAO/1N,GACrB0pD,EAAgBltD,KAAMk+O,GAEtB,IAAI/3O,EAASwR,EAA2B3X,MAAOk+O,EAAOlmO,WAAand,OAAOoxC,eAAeiyM,IAASljP,KAAKgF,KAAMu5N,EAAO/1N,IAEpH,GAAwC,mBAA7B2C,EAAO3C,QAAQ+6M,UACxB,MAAM,IAAIxhN,MAAM,6FAElB,IAAIw3H,EAAQ,KASZ,OARApuH,EAAOozN,MAAMlsL,GAAGo3L,EAAQ5uK,QAAQt+C,OAAO6hN,iBAAiB,WACtDj8N,aAAao3H,GACbA,EAAQ12H,YAAW,WACjBsI,EAAOo4M,YACPhqF,EAAQ,OACPpuH,EAAO3C,QAAQ4vH,aAEpBjtH,EAAOo4M,YACAp4M,EAqBT,OAhDA8R,EAAUimO,EAAQtZ,GAElB3jO,EAAai9O,EAAQ,KAAM,CAAC,CAC1Bh/O,IAAK,WACLN,MAAO,WACL6lO,EAAQ5uK,QAAQ1P,SAAS03L,GAAW,GACpCpZ,EAAQ5uK,QAAQ1P,SAAS23L,GAAiB,OAwB9C78O,EAAai9O,EAAQ,CAAC,CACpBh/O,IAAK,YACLN,MAAO,WACL,IAAI0P,EAAStO,KAEb,IAAIA,KAAKu5N,MAAM3yG,UAAUo3G,UAAzB,CACAh+N,KAAKu5N,MAAM78M,OAAO+nN,EAAQ5uK,QAAQ3Y,QAAQs6K,MAC1C,IAAIljF,EAAQt0I,KAAKu5N,MAAMnE,eACvBp1N,KAAKu5N,MAAMxF,OAAOnB,YAAYkrB,GAAiB32O,SAAQ,SAAUgtD,GAC/DA,EAAKoqJ,UAAUjwM,EAAO9K,QAAQ+6M,cAEhCv+M,KAAKu5N,MAAM78M,OAAO+nN,EAAQ5uK,QAAQ3Y,QAAQs4K,QAC7B,MAATlhF,GACFt0I,KAAKu5N,MAAMhE,aAAajhF,EAAOmwF,EAAQ5uK,QAAQ3Y,QAAQs4K,aAKtD0oB,EAjDI,CAkDX9qB,EAASv9J,SAEXqoL,EAAOzmB,SAAW,CAChBlZ,UACqB,MAAf5+M,OAAOw+O,KAAqB,KACzB,SAAUj1L,GAEf,OADavpD,OAAOw+O,KAAKC,cAAcl1L,GACzBtqD,OAGlBw0H,SAAU,KAGZ33H,EAAQi/N,UAAYojB,EACpBriP,EAAQoiP,UAAYA,EACpBpiP,EAAQo6D,QAAUqoL,GAIZ,SAAUxiP,EAAQD,GAExBC,EAAOD,QAAU,8LAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,+LAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,+LAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,+LAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,g7EAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,sTAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,iRAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,sUAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,oPAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,mVAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,kVAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,qOAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,mOAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,0WAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,6YAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,03CAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,gkBAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,goBAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,gMAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,0OAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,yQAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,+PAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,+ZAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,osBAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,uVAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,6XAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,wqBAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,ijBAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,6gBAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,gMAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,+qBAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,oKAIX,SAAUC,EAAQD,EAASD,GAEjC,aAGAX,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQo6D,QAAUp6D,EAAQ4iP,mBAAgBzgP,EAE1C,IAAIq/E,EAAO,SAASz+E,EAAIa,EAAQC,EAAUunF,GAA2B,OAAXxnF,IAAiBA,EAASylB,SAAShqB,WAAW,IAAIgpE,EAAOjpE,OAAOw0D,yBAAyBhwD,EAAQC,GAAW,QAAa1B,IAATkmE,EAAoB,CAAE,IAAIv1D,EAAS1T,OAAOoxC,eAAe5sC,GAAS,OAAe,OAAXkP,OAAmB,EAAkC/P,EAAI+P,EAAQjP,EAAUunF,GAAoB,GAAI,UAAW/iB,EAAQ,OAAOA,EAAKllE,MAAgB,IAAIR,EAAS0lE,EAAKtlE,IAAK,YAAeZ,IAAXQ,EAAmDA,EAAOpD,KAAK6rF,QAAnE,GAErZ5lF,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAIfswN,EAAWC,EAFDt2N,EAAoB,IAM9B08N,EAAYpG,EAFDt2N,EAAoB,IAI/B++O,EAAQ/+O,EAAoB,IAE5Bg/O,EAAS1oB,EAAuByoB,GAEhClnB,EAAa73N,EAAoB,IAIjCk/O,EAAU5oB,EAFDt2N,EAAoB,KAIjC,SAASs2N,EAAuB/wN,GAAO,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEvF,SAASmsD,EAAgBrF,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAEhH,SAASH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAElO,SAASid,EAAUL,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAEje,IAAI8iO,EAAiB,CAAC,CAAC,OAAQ,SAAU,QAAS,CAAC,CAAErjE,OAAQ,GAAK,CAAEA,OAAQ,GAAK,eAE7EgnE,EAAc,SAAUzD,GAG1B,SAASyD,EAAY/kB,EAAO/1N,GAC1B0pD,EAAgBltD,KAAMs+O,GAES,MAA3B96O,EAAQrI,QAAQitK,SAAwD,MAArC5kK,EAAQrI,QAAQitK,QAAQ/5J,YAC7D7K,EAAQrI,QAAQitK,QAAQ/5J,UAAYssO,GAGtC,IAAIh1O,EAAQgS,EAA2B3X,MAAOs+O,EAAYtmO,WAAand,OAAOoxC,eAAeqyM,IAActjP,KAAKgF,KAAMu5N,EAAO/1N,IAG7H,OADAmC,EAAM4zN,MAAMlrN,UAAU+2E,UAAUt0E,IAAI,aAC7BnL,EAaT,OAzBAsS,EAAUqmO,EAAazD,GAevB55O,EAAaq9O,EAAa,CAAC,CACzBp/O,IAAK,gBACLN,MAAO,SAAuBwpK,GAC5BpoK,KAAK2tO,QAAU,IAAI0Q,EAAcr+O,KAAKu5N,MAAOv5N,KAAKwD,QAAQqyN,QAC1D71N,KAAK2tO,QAAQr1J,KAAKv6E,YAAYqqK,EAAQ/5J,WACtCrO,KAAK86O,aAAa,GAAGj7O,MAAM7E,KAAKotK,EAAQ/5J,UAAU8nG,iBAAiB,WAAYukI,EAAQ7kL,SACvF71D,KAAK+6O,aAAa,GAAGl7O,MAAM7E,KAAKotK,EAAQ/5J,UAAU8nG,iBAAiB,WAAYukI,EAAQ7kL,aAIpFyoL,EA1BS,CA2BhB9D,EAAO3kL,SAETyoL,EAAY7mB,UAAW,EAAI5F,EAASh8J,UAAS,EAAM,GAAI2kL,EAAO3kL,QAAQ4hK,SAAU,CAC9Et8N,QAAS,CACPitK,QAAS,CACPrgD,SAAU,CACR9lD,KAAM,SAAcrjE,GACbA,EAGHoB,KAAKu5N,MAAMlxD,MAAMslE,QAAQU,OAFzBruO,KAAKu5N,MAAM35M,OAAO,QAAQ,SAUtC,IAAIy+N,EAAgB,SAAUpD,GAG5B,SAASoD,EAAc9kB,EAAO1D,GAC5B3oK,EAAgBltD,KAAMq+O,GAEtB,IAAIl4O,EAASwR,EAA2B3X,MAAOq+O,EAAcrmO,WAAand,OAAOoxC,eAAeoyM,IAAgBrjP,KAAKgF,KAAMu5N,EAAO1D,IAwBlI,OAtBA1vN,EAAOozN,MAAMlsL,GAAG6qL,EAAUriK,QAAQt+C,OAAO48M,eAAe,SAAU72N,EAAMg3I,EAAOusF,EAAUx8L,GACvF,GAAI/mC,IAAS46N,EAAUriK,QAAQt+C,OAAO8hN,iBACtC,GAAa,MAAT/kF,GAAiBA,EAAM15I,OAAS,GAAKypC,IAAW6zL,EAAUriK,QAAQ3Y,QAAQs6K,KAAM,CAClFrxN,EAAOq/G,OAEPr/G,EAAOmyE,KAAKxX,MAAMixD,KAAO,MACzB5rH,EAAOmyE,KAAKxX,MAAMxsB,MAAQ,GAC1BnuC,EAAOmyE,KAAKxX,MAAMxsB,MAAQnuC,EAAOmyE,KAAKkL,YAAc,KACpD,IAAI8V,EAAQnzF,EAAOozN,MAAM+K,SAAShwF,EAAM3qI,MAAO2qI,EAAM15I,QACrD,GAAqB,IAAjB0+F,EAAM1+F,OACRuL,EAAOwpH,SAASxpH,EAAOozN,MAAMzD,UAAUxhF,QAClC,CACL,IAAIiqG,EAAWjlJ,EAAMA,EAAM1+F,OAAS,GAChC+O,EAAQxD,EAAOozN,MAAMmO,SAAS6W,GAC9B3jP,EAASuoB,KAAKW,IAAIy6N,EAAS3jP,SAAW,EAAG05I,EAAM3qI,MAAQ2qI,EAAM15I,OAAS+O,GACtE60O,EAAUr4O,EAAOozN,MAAMzD,UAAU,IAAIzC,EAAWkE,MAAM5tN,EAAO/O,IACjEuL,EAAOwpH,SAAS6uH,SAETniP,SAASu+G,gBAAkBz0G,EAAOynO,SAAWznO,EAAOozN,MAAM1+G,YACnE10G,EAAOqsC,UAGJrsC,EAuCT,OApEA8R,EAAUomO,EAAepD,GAgCzBh6O,EAAao9O,EAAe,CAAC,CAC3Bn/O,IAAK,SACLN,MAAO,WACL,IAAI0P,EAAStO,KAEbi9E,EAAKohK,EAAcvjP,UAAUkd,WAAand,OAAOoxC,eAAeoyM,EAAcvjP,WAAY,SAAUkF,MAAMhF,KAAKgF,MAC/GA,KAAKs4E,KAAK3Y,cAAc,aAAauwC,iBAAiB,SAAS,WAC7D5hG,EAAOgqE,KAAK8M,UAAUt1C,OAAO,iBAE/B9vC,KAAKu5N,MAAMlsL,GAAG6qL,EAAUriK,QAAQt+C,OAAO6hN,iBAAiB,WAEtDv7N,YAAW,WACT,IAAIyQ,EAAOgqE,KAAK8M,UAAUguB,SAAS,aAAnC,CACA,IAAIkhC,EAAQhmI,EAAOirN,MAAMnE,eACZ,MAAT9gF,GACFhmI,EAAOqhH,SAASrhH,EAAOirN,MAAMzD,UAAUxhF,OAExC,QAGN,CACDp1I,IAAK,SACLN,MAAO,WACLoB,KAAKwlH,SAEN,CACDtmH,IAAK,WACLN,MAAO,SAAkBw7O,GACvB,IAAI/+O,EAAQ4hF,EAAKohK,EAAcvjP,UAAUkd,WAAand,OAAOoxC,eAAeoyM,EAAcvjP,WAAY,WAAYkF,MAAMhF,KAAKgF,KAAMo6O,GAC/HqE,EAAQz+O,KAAKs4E,KAAK3Y,cAAc,qBAEpC,GADA8+K,EAAM39K,MAAMyuD,WAAa,GACX,IAAVl0H,EAAa,OAAOA,EACxBojP,EAAM39K,MAAMyuD,YAAc,EAAIl0H,EAAQojP,EAAMj7J,YAAc,EAAI,SAI3D66J,EArEW,CAsElB9D,EAAMxN,aAERsR,EAAclE,SAAW,CAAC,yCAA0C,kCAAmC,mGAAoG,2BAA4B,UAAUnyO,KAAK,IAEtPvM,EAAQ4iP,cAAgBA,EACxB5iP,EAAQo6D,QAAUyoL,GAIZ,SAAU5iP,EAAQD,EAASD,GAEjCE,EAAOD,QAAUD,EAAoB,OAIhB,SAvtWnBE,EAAOD,QAAU8sC,M,iECRnB;;;;;;;AAUA,IAAIm2M,EAAS,EAAQ,KACjBC,EAAU,EAAQ,KAClBh+O,EAAU,EAAQ,KAmDtB,SAASimM,IACP,OAAOZ,EAAOC,oBACV,WACA,WAGN,SAAS24C,EAAc/+M,EAAMjlC,GAC3B,GAAIgsM,IAAehsM,EACjB,MAAM,IAAIo+F,WAAW,8BAcvB,OAZIgtG,EAAOC,qBAETpmK,EAAO,IAAIgyI,WAAWj3K,IACjBod,UAAYguL,EAAOlrM,WAGX,OAAT+kC,IACFA,EAAO,IAAImmK,EAAOprM,IAEpBilC,EAAKjlC,OAASA,GAGTilC,EAaT,SAASmmK,EAAQxhL,EAAKq6N,EAAkBjkP,GACtC,KAAKorM,EAAOC,qBAAyBjmM,gBAAgBgmM,GACnD,OAAO,IAAIA,EAAOxhL,EAAKq6N,EAAkBjkP,GAI3C,GAAmB,iBAAR4pB,EAAkB,CAC3B,GAAgC,iBAArBq6N,EACT,MAAM,IAAI9hP,MACR,qEAGJ,OAAOkqM,EAAYjnM,KAAMwkB,GAE3B,OAAOpC,EAAKpiB,KAAMwkB,EAAKq6N,EAAkBjkP,GAW3C,SAASwnB,EAAMyd,EAAMjhC,EAAOigP,EAAkBjkP,GAC5C,GAAqB,iBAAVgE,EACT,MAAM,IAAIkZ,UAAU,yCAGtB,MAA2B,oBAAhBusL,aAA+BzlM,aAAiBylM,YA6H7D,SAA0BxkK,EAAMvY,EAAOw3N,EAAYlkP,GAGjD,GAFA0sB,EAAMm9K,WAEFq6C,EAAa,GAAKx3N,EAAMm9K,WAAaq6C,EACvC,MAAM,IAAI9lJ,WAAW,6BAGvB,GAAI1xE,EAAMm9K,WAAaq6C,GAAclkP,GAAU,GAC7C,MAAM,IAAIo+F,WAAW,6BAIrB1xE,OADiB1pB,IAAfkhP,QAAuClhP,IAAXhD,EACtB,IAAIi3K,WAAWvqJ,QACH1pB,IAAXhD,EACD,IAAIi3K,WAAWvqJ,EAAOw3N,GAEtB,IAAIjtE,WAAWvqJ,EAAOw3N,EAAYlkP,GAGxCorM,EAAOC,qBAETpmK,EAAOvY,GACFtP,UAAYguL,EAAOlrM,UAGxB+kC,EAAOk/M,EAAcl/M,EAAMvY,GAE7B,OAAOuY,EAvJEm/M,CAAgBn/M,EAAMjhC,EAAOigP,EAAkBjkP,GAGnC,iBAAVgE,EAwFb,SAAqBihC,EAAMpJ,EAAQwoN,GACT,iBAAbA,GAAsC,KAAbA,IAClCA,EAAW,QAGb,IAAKj5C,EAAOE,WAAW+4C,GACrB,MAAM,IAAInnO,UAAU,8CAGtB,IAAIld,EAAwC,EAA/B6pM,EAAWhuK,EAAQwoN,GAG5BnlB,GAFJj6L,EAAO++M,EAAa/+M,EAAMjlC,IAERktF,MAAMrxD,EAAQwoN,GAE5BnlB,IAAWl/N,IAIbilC,EAAOA,EAAKhgC,MAAM,EAAGi6N,IAGvB,OAAOj6L,EA5GE04I,CAAW14I,EAAMjhC,EAAOigP,GAsJnC,SAAqBh/M,EAAM9+B,GACzB,GAAIilM,EAAOG,SAASplM,GAAM,CACxB,IAAIihB,EAA4B,EAAtB+4F,EAAQh6G,EAAInG,QAGtB,OAAoB,KAFpBilC,EAAO++M,EAAa/+M,EAAM7d,IAEjBpnB,QAITmG,EAAI0tD,KAAK5uB,EAAM,EAAG,EAAG7d,GAHZ6d,EAOX,GAAI9+B,EAAK,CACP,GAA4B,oBAAhBsjM,aACRtjM,EAAIqlM,kBAAkB/B,aAAgB,WAAYtjM,EACpD,MAA0B,iBAAfA,EAAInG,SA+8CL6F,EA/8CkCM,EAAInG,SAg9CrC6F,EA/8CFm+O,EAAa/+M,EAAM,GAErBk/M,EAAcl/M,EAAM9+B,GAG7B,GAAiB,WAAbA,EAAIzD,MAAqBqD,EAAQI,EAAI1G,MACvC,OAAO0kP,EAAcl/M,EAAM9+B,EAAI1G,MAw8CrC,IAAgBoG,EAp8Cd,MAAM,IAAIqX,UAAU,sFA9KbonO,CAAWr/M,EAAMjhC,GA4B1B,SAASugP,EAAYzuK,GACnB,GAAoB,iBAATA,EACT,MAAM,IAAI54D,UAAU,oCACf,GAAI44D,EAAO,EAChB,MAAM,IAAIsoB,WAAW,wCA4BzB,SAASiuG,EAAapnK,EAAM6wC,GAG1B,GAFAyuK,EAAWzuK,GACX7wC,EAAO++M,EAAa/+M,EAAM6wC,EAAO,EAAI,EAAoB,EAAhBqqC,EAAQrqC,KAC5Cs1H,EAAOC,oBACV,IAAK,IAAIvrM,EAAI,EAAGA,EAAIg2E,IAAQh2E,EAC1BmlC,EAAKnlC,GAAK,EAGd,OAAOmlC,EAwCT,SAASk/M,EAAel/M,EAAMvY,GAC5B,IAAI1sB,EAAS0sB,EAAM1sB,OAAS,EAAI,EAA4B,EAAxBmgH,EAAQzzF,EAAM1sB,QAClDilC,EAAO++M,EAAa/+M,EAAMjlC,GAC1B,IAAK,IAAIF,EAAI,EAAGA,EAAIE,EAAQF,GAAK,EAC/BmlC,EAAKnlC,GAAgB,IAAX4sB,EAAM5sB,GAElB,OAAOmlC,EA+DT,SAASk7E,EAASngH,GAGhB,GAAIA,GAAUgsM,IACZ,MAAM,IAAI5tG,WAAW,0DACa4tG,IAAa5nL,SAAS,IAAM,UAEhE,OAAgB,EAATpkB,EAsFT,SAAS6pM,EAAYhuK,EAAQwoN,GAC3B,GAAIj5C,EAAOG,SAAS1vK,GAClB,OAAOA,EAAO77B,OAEhB,GAA2B,oBAAhBypM,aAA6D,mBAAvBA,YAAYgC,SACxDhC,YAAYgC,OAAO5vK,IAAWA,aAAkB4tK,aACnD,OAAO5tK,EAAOguK,WAEM,iBAAXhuK,IACTA,EAAS,GAAKA,GAGhB,IAAIzU,EAAMyU,EAAO77B,OACjB,GAAY,IAARonB,EAAW,OAAO,EAItB,IADA,IAAIo9N,GAAc,IAEhB,OAAQH,GACN,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOj9N,EACT,IAAK,OACL,IAAK,QACL,UAAKpkB,EACH,OAAOyhP,EAAY5oN,GAAQ77B,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAa,EAANonB,EACT,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAOs9N,EAAc7oN,GAAQ77B,OAC/B,QACE,GAAIwkP,EAAa,OAAOC,EAAY5oN,GAAQ77B,OAC5CqkP,GAAY,GAAKA,GAAU1jO,cAC3B6jO,GAAc,GAMtB,SAASG,EAAcN,EAAU35L,EAAOgrB,GACtC,IAAI8uK,GAAc,EAclB,SALcxhP,IAAV0nD,GAAuBA,EAAQ,KACjCA,EAAQ,GAINA,EAAQtlD,KAAKpF,OACf,MAAO,GAOT,SAJYgD,IAAR0yE,GAAqBA,EAAMtwE,KAAKpF,UAClC01E,EAAMtwE,KAAKpF,QAGT01E,GAAO,EACT,MAAO,GAOT,IAHAA,KAAS,KACThrB,KAAW,GAGT,MAAO,GAKT,IAFK25L,IAAUA,EAAW,UAGxB,OAAQA,GACN,IAAK,MACH,OAAOO,EAASx/O,KAAMslD,EAAOgrB,GAE/B,IAAK,OACL,IAAK,QACH,OAAOmvK,EAAUz/O,KAAMslD,EAAOgrB,GAEhC,IAAK,QACH,OAAOovK,EAAW1/O,KAAMslD,EAAOgrB,GAEjC,IAAK,SACL,IAAK,SACH,OAAOqvK,EAAY3/O,KAAMslD,EAAOgrB,GAElC,IAAK,SACH,OAAOsvK,EAAY5/O,KAAMslD,EAAOgrB,GAElC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOuvK,EAAa7/O,KAAMslD,EAAOgrB,GAEnC,QACE,GAAI8uK,EAAa,MAAM,IAAItnO,UAAU,qBAAuBmnO,GAC5DA,GAAYA,EAAW,IAAI1jO,cAC3B6jO,GAAc,GAStB,SAASh4O,EAAMuK,EAAGvS,EAAGnB,GACnB,IAAIvD,EAAIiX,EAAEvS,GACVuS,EAAEvS,GAAKuS,EAAE1T,GACT0T,EAAE1T,GAAKvD,EAmIT,SAASolP,EAAsB15C,EAAQ3lM,EAAKq+O,EAAYG,EAAU3nM,GAEhE,GAAsB,IAAlB8uJ,EAAOxrM,OAAc,OAAQ,EAmBjC,GAhB0B,iBAAfkkP,GACTG,EAAWH,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,GAAc,aACvBA,GAAc,YAEhBA,GAAcA,EACVx9N,MAAMw9N,KAERA,EAAaxnM,EAAM,EAAK8uJ,EAAOxrM,OAAS,GAItCkkP,EAAa,IAAGA,EAAa14C,EAAOxrM,OAASkkP,GAC7CA,GAAc14C,EAAOxrM,OAAQ,CAC/B,GAAI08C,EAAK,OAAQ,EACZwnM,EAAa14C,EAAOxrM,OAAS,OAC7B,GAAIkkP,EAAa,EAAG,CACzB,IAAIxnM,EACC,OAAQ,EADJwnM,EAAa,EAUxB,GALmB,iBAARr+O,IACTA,EAAMulM,EAAO5jL,KAAK3hB,EAAKw+O,IAIrBj5C,EAAOG,SAAS1lM,GAElB,OAAmB,IAAfA,EAAI7F,QACE,EAEHmlP,EAAa35C,EAAQ3lM,EAAKq+O,EAAYG,EAAU3nM,GAClD,GAAmB,iBAAR72C,EAEhB,OADAA,GAAY,IACRulM,EAAOC,qBACiC,mBAAjCp0B,WAAW/2K,UAAUuW,QAC1BimC,EACKu6H,WAAW/2K,UAAUuW,QAAQrW,KAAKorM,EAAQ3lM,EAAKq+O,GAE/CjtE,WAAW/2K,UAAUuK,YAAYrK,KAAKorM,EAAQ3lM,EAAKq+O,GAGvDiB,EAAa35C,EAAQ,CAAE3lM,GAAOq+O,EAAYG,EAAU3nM,GAG7D,MAAM,IAAIx/B,UAAU,wCAGtB,SAASioO,EAAc1gO,EAAK5e,EAAKq+O,EAAYG,EAAU3nM,GACrD,IA0BI58C,EA1BAslP,EAAY,EACZC,EAAY5gO,EAAIzkB,OAChBslP,EAAYz/O,EAAI7F,OAEpB,QAAiBgD,IAAbqhP,IAEe,UADjBA,EAAW/hO,OAAO+hO,GAAU1jO,gBACY,UAAb0jO,GACV,YAAbA,GAAuC,aAAbA,GAAyB,CACrD,GAAI5/N,EAAIzkB,OAAS,GAAK6F,EAAI7F,OAAS,EACjC,OAAQ,EAEVolP,EAAY,EACZC,GAAa,EACbC,GAAa,EACbpB,GAAc,EAIlB,SAASrjL,EAAM0kL,EAAKzlP,GAClB,OAAkB,IAAdslP,EACKG,EAAIzlP,GAEJylP,EAAI75C,aAAa5rM,EAAIslP,GAKhC,GAAI1oM,EAAK,CACP,IAAI8oM,GAAc,EAClB,IAAK1lP,EAAIokP,EAAYpkP,EAAIulP,EAAWvlP,IAClC,GAAI+gE,EAAKp8C,EAAK3kB,KAAO+gE,EAAKh7D,GAAqB,IAAhB2/O,EAAoB,EAAI1lP,EAAI0lP,IAEzD,IADoB,IAAhBA,IAAmBA,EAAa1lP,GAChCA,EAAI0lP,EAAa,IAAMF,EAAW,OAAOE,EAAaJ,OAEtC,IAAhBI,IAAmB1lP,GAAKA,EAAI0lP,GAChCA,GAAc,OAKlB,IADItB,EAAaoB,EAAYD,IAAWnB,EAAamB,EAAYC,GAC5DxlP,EAAIokP,EAAYpkP,GAAK,EAAGA,IAAK,CAEhC,IADA,IAAIqc,GAAQ,EACH6c,EAAI,EAAGA,EAAIssN,EAAWtsN,IAC7B,GAAI6nC,EAAKp8C,EAAK3kB,EAAIk5B,KAAO6nC,EAAKh7D,EAAKmzB,GAAI,CACrC7c,GAAQ,EACR,MAGJ,GAAIA,EAAO,OAAOrc,EAItB,OAAQ,EAeV,SAAS2lP,EAAUF,EAAK1pN,EAAQoF,EAAQjhC,GACtCihC,EAASkoB,OAAOloB,IAAW,EAC3B,IAAIq+C,EAAYimK,EAAIvlP,OAASihC,EACxBjhC,GAGHA,EAASmpD,OAAOnpD,IACHs/E,IACXt/E,EAASs/E,GAJXt/E,EAASs/E,EASX,IAAIomK,EAAS7pN,EAAO77B,OACpB,GAAI0lP,EAAS,GAAM,EAAG,MAAM,IAAIxoO,UAAU,sBAEtCld,EAAS0lP,EAAS,IACpB1lP,EAAS0lP,EAAS,GAEpB,IAAK,IAAI5lP,EAAI,EAAGA,EAAIE,IAAUF,EAAG,CAC/B,IAAI05F,EAAS9pE,SAASmM,EAAOnxB,OAAW,EAAJ5K,EAAO,GAAI,IAC/C,GAAI4mB,MAAM8yE,GAAS,OAAO15F,EAC1BylP,EAAItkN,EAASnhC,GAAK05F,EAEpB,OAAO15F,EAGT,SAAS6lP,EAAWJ,EAAK1pN,EAAQoF,EAAQjhC,GACvC,OAAO4lP,EAAWnB,EAAY5oN,EAAQ0pN,EAAIvlP,OAASihC,GAASskN,EAAKtkN,EAAQjhC,GAG3E,SAAS6lP,EAAYN,EAAK1pN,EAAQoF,EAAQjhC,GACxC,OAAO4lP,EAq6BT,SAAuBrxL,GAErB,IADA,IAAIuxL,EAAY,GACPhmP,EAAI,EAAGA,EAAIy0D,EAAIv0D,SAAUF,EAEhCgmP,EAAUxlP,KAAyB,IAApBi0D,EAAIhR,WAAWzjD,IAEhC,OAAOgmP,EA36BWC,CAAalqN,GAAS0pN,EAAKtkN,EAAQjhC,GAGvD,SAASgmP,EAAaT,EAAK1pN,EAAQoF,EAAQjhC,GACzC,OAAO6lP,EAAWN,EAAK1pN,EAAQoF,EAAQjhC,GAGzC,SAASimP,EAAaV,EAAK1pN,EAAQoF,EAAQjhC,GACzC,OAAO4lP,EAAWlB,EAAc7oN,GAAS0pN,EAAKtkN,EAAQjhC,GAGxD,SAASkmP,EAAWX,EAAK1pN,EAAQoF,EAAQjhC,GACvC,OAAO4lP,EAk6BT,SAAyBrxL,EAAKzpC,GAG5B,IAFA,IAAIxnB,EAAG6iP,EAAIC,EACPN,EAAY,GACPhmP,EAAI,EAAGA,EAAIy0D,EAAIv0D,WACjB8qB,GAAS,GAAK,KADahrB,EAGhCwD,EAAIixD,EAAIhR,WAAWzjD,GACnBqmP,EAAK7iP,GAAK,EACV8iP,EAAK9iP,EAAI,IACTwiP,EAAUxlP,KAAK8lP,GACfN,EAAUxlP,KAAK6lP,GAGjB,OAAOL,EA/6BWO,CAAexqN,EAAQ0pN,EAAIvlP,OAASihC,GAASskN,EAAKtkN,EAAQjhC,GAkF9E,SAASglP,EAAaO,EAAK76L,EAAOgrB,GAChC,OAAc,IAAVhrB,GAAegrB,IAAQ6vK,EAAIvlP,OACtB8jP,EAAOn4C,cAAc45C,GAErBzB,EAAOn4C,cAAc45C,EAAItgP,MAAMylD,EAAOgrB,IAIjD,SAASmvK,EAAWU,EAAK76L,EAAOgrB,GAC9BA,EAAMntD,KAAKW,IAAIq8N,EAAIvlP,OAAQ01E,GAI3B,IAHA,IAAI/wD,EAAM,GAEN7kB,EAAI4qD,EACD5qD,EAAI41E,GAAK,CACd,IAQM4wK,EAAYC,EAAWC,EAAYC,EARrCC,EAAYnB,EAAIzlP,GAChB6mP,EAAY,KACZC,EAAoBF,EAAY,IAAQ,EACvCA,EAAY,IAAQ,EACpBA,EAAY,IAAQ,EACrB,EAEJ,GAAI5mP,EAAI8mP,GAAoBlxK,EAG1B,OAAQkxK,GACN,KAAK,EACCF,EAAY,MACdC,EAAYD,GAEd,MACF,KAAK,EAEyB,MAAV,KADlBJ,EAAaf,EAAIzlP,EAAI,OAEnB2mP,GAA6B,GAAZC,IAAqB,EAAoB,GAAbJ,GACzB,MAClBK,EAAYF,GAGhB,MACF,KAAK,EACHH,EAAaf,EAAIzlP,EAAI,GACrBymP,EAAYhB,EAAIzlP,EAAI,GACQ,MAAV,IAAbwmP,IAAsD,MAAV,IAAZC,KACnCE,GAA6B,GAAZC,IAAoB,IAAoB,GAAbJ,IAAsB,EAAmB,GAAZC,GACrD,OAAUE,EAAgB,OAAUA,EAAgB,SACtEE,EAAYF,GAGhB,MACF,KAAK,EACHH,EAAaf,EAAIzlP,EAAI,GACrBymP,EAAYhB,EAAIzlP,EAAI,GACpB0mP,EAAajB,EAAIzlP,EAAI,GACO,MAAV,IAAbwmP,IAAsD,MAAV,IAAZC,IAAsD,MAAV,IAAbC,KAClEC,GAA6B,GAAZC,IAAoB,IAAqB,GAAbJ,IAAsB,IAAmB,GAAZC,IAAqB,EAAoB,GAAbC,GAClF,OAAUC,EAAgB,UAC5CE,EAAYF,GAMJ,OAAdE,GAGFA,EAAY,MACZC,EAAmB,GACVD,EAAY,QAErBA,GAAa,MACbhiO,EAAIrkB,KAAKqmP,IAAc,GAAK,KAAQ,OACpCA,EAAY,MAAqB,KAAZA,GAGvBhiO,EAAIrkB,KAAKqmP,GACT7mP,GAAK8mP,EAGP,OAQF,SAAgCC,GAC9B,IAAIz/N,EAAMy/N,EAAW7mP,OACrB,GAAIonB,GAJqB,KAKvB,OAAO9E,OAAOq9B,aAAat2C,MAAMiZ,OAAQukO,GAI3C,IAAIliO,EAAM,GACN7kB,EAAI,EACR,KAAOA,EAAIsnB,GACTzC,GAAOrC,OAAOq9B,aAAat2C,MACzBiZ,OACAukO,EAAW5hP,MAAMnF,EAAGA,GAdC,OAiBzB,OAAO6kB,EAvBAmiO,CAAsBniO,GA98B/B9jB,EAAQuqM,OAASA,EACjBvqM,EAAQ+qM,WAoTR,SAAqB5rM,IACdA,GAAUA,IACbA,EAAS,GAEX,OAAOorM,EAAOS,OAAO7rM,IAvTvBa,EAAQirM,kBAAoB,GA0B5BV,EAAOC,yBAAqDroM,IAA/BouE,EAAOi6H,oBAChCj6H,EAAOi6H,oBAQX,WACE,IACE,IAAI5mL,EAAM,IAAIwyJ,WAAW,GAEzB,OADAxyJ,EAAIrH,UAAY,CAACA,UAAW65J,WAAW/2K,UAAWuzG,IAAK,WAAc,OAAO,KACvD,KAAdhvF,EAAIgvF,OACiB,mBAAjBhvF,EAAIsnL,UACuB,IAAlCtnL,EAAIsnL,SAAS,EAAG,GAAGlC,WACvB,MAAO7oM,GACP,OAAO,GAfP+lP,GAKJlmP,EAAQmrM,WAAaA,IAkErBZ,EAAOa,SAAW,KAGlBb,EAAOc,SAAW,SAAUznL,GAE1B,OADAA,EAAIrH,UAAYguL,EAAOlrM,UAChBukB,GA2BT2mL,EAAO5jL,KAAO,SAAUxjB,EAAOigP,EAAkBjkP,GAC/C,OAAOwnB,EAAK,KAAMxjB,EAAOigP,EAAkBjkP,IAGzCorM,EAAOC,sBACTD,EAAOlrM,UAAUkd,UAAY65J,WAAW/2K,UACxCkrM,EAAOhuL,UAAY65J,WACG,oBAAXnzK,QAA0BA,OAAOqoM,SACxCf,EAAOtnM,OAAOqoM,WAAaf,GAE7BnrM,OAAOyD,eAAe0nM,EAAQtnM,OAAOqoM,QAAS,CAC5CnoM,MAAO,KACPyC,cAAc,KAiCpB2kM,EAAOS,MAAQ,SAAU/1H,EAAMs2H,EAAMi4C,GACnC,OArBF,SAAgBp/M,EAAM6wC,EAAMs2H,EAAMi4C,GAEhC,OADAE,EAAWzuK,GACPA,GAAQ,EACHkuK,EAAa/+M,EAAM6wC,QAEf9yE,IAATopM,EAIyB,iBAAbi4C,EACVL,EAAa/+M,EAAM6wC,GAAMs2H,KAAKA,EAAMi4C,GACpCL,EAAa/+M,EAAM6wC,GAAMs2H,KAAKA,GAE7B43C,EAAa/+M,EAAM6wC,GAQnB+1H,CAAM,KAAM/1H,EAAMs2H,EAAMi4C,IAiBjCj5C,EAAOiB,YAAc,SAAUv2H,GAC7B,OAAOu2H,EAAY,KAAMv2H,IAK3Bs1H,EAAOkB,gBAAkB,SAAUx2H,GACjC,OAAOu2H,EAAY,KAAMv2H,IAiH3Bs1H,EAAOG,SAAW,SAAmBx0L,GACnC,QAAe,MAALA,IAAaA,EAAEw1L,YAG3BnB,EAAO1tF,QAAU,SAAkB5mG,EAAGC,GACpC,IAAKq0L,EAAOG,SAASz0L,KAAOs0L,EAAOG,SAASx0L,GAC1C,MAAM,IAAImG,UAAU,6BAGtB,GAAIpG,IAAMC,EAAG,OAAO,EAKpB,IAHA,IAAIzK,EAAIwK,EAAE9W,OACNwvB,EAAIzY,EAAE/W,OAEDF,EAAI,EAAGsnB,EAAMmB,KAAKW,IAAI5c,EAAGkjB,GAAI1vB,EAAIsnB,IAAOtnB,EAC/C,GAAIgX,EAAEhX,KAAOiX,EAAEjX,GAAI,CACjBwM,EAAIwK,EAAEhX,GACN0vB,EAAIzY,EAAEjX,GACN,MAIJ,OAAIwM,EAAIkjB,GAAW,EACfA,EAAIljB,EAAU,EACX,GAGT8+L,EAAOE,WAAa,SAAqB+4C,GACvC,OAAQ/hO,OAAO+hO,GAAU1jO,eACvB,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO,EACT,QACE,OAAO,IAIbyqL,EAAO7hM,OAAS,SAAiB2P,EAAMlZ,GACrC,IAAK+F,EAAQmT,GACX,MAAM,IAAIgE,UAAU,+CAGtB,GAAoB,IAAhBhE,EAAKlZ,OACP,OAAOorM,EAAOS,MAAM,GAGtB,IAAI/rM,EACJ,QAAekD,IAAXhD,EAEF,IADAA,EAAS,EACJF,EAAI,EAAGA,EAAIoZ,EAAKlZ,SAAUF,EAC7BE,GAAUkZ,EAAKpZ,GAAGE,OAItB,IAAIwrM,EAASJ,EAAOiB,YAAYrsM,GAC5Bo2B,EAAM,EACV,IAAKt2B,EAAI,EAAGA,EAAIoZ,EAAKlZ,SAAUF,EAAG,CAChC,IAAIylP,EAAMrsO,EAAKpZ,GACf,IAAKsrM,EAAOG,SAASg6C,GACnB,MAAM,IAAIroO,UAAU,+CAEtBqoO,EAAI1xL,KAAK23I,EAAQp1K,GACjBA,GAAOmvN,EAAIvlP,OAEb,OAAOwrM,GA8CTJ,EAAOvB,WAAaA,EA0EpBuB,EAAOlrM,UAAUqsM,WAAY,EAQ7BnB,EAAOlrM,UAAUssM,OAAS,WACxB,IAAIplL,EAAMhiB,KAAKpF,OACf,GAAIonB,EAAM,GAAM,EACd,MAAM,IAAIg3E,WAAW,6CAEvB,IAAK,IAAIt+F,EAAI,EAAGA,EAAIsnB,EAAKtnB,GAAK,EAC5B0M,EAAKpH,KAAMtF,EAAGA,EAAI,GAEpB,OAAOsF,MAGTgmM,EAAOlrM,UAAUusM,OAAS,WACxB,IAAIrlL,EAAMhiB,KAAKpF,OACf,GAAIonB,EAAM,GAAM,EACd,MAAM,IAAIg3E,WAAW,6CAEvB,IAAK,IAAIt+F,EAAI,EAAGA,EAAIsnB,EAAKtnB,GAAK,EAC5B0M,EAAKpH,KAAMtF,EAAGA,EAAI,GAClB0M,EAAKpH,KAAMtF,EAAI,EAAGA,EAAI,GAExB,OAAOsF,MAGTgmM,EAAOlrM,UAAUwsM,OAAS,WACxB,IAAItlL,EAAMhiB,KAAKpF,OACf,GAAIonB,EAAM,GAAM,EACd,MAAM,IAAIg3E,WAAW,6CAEvB,IAAK,IAAIt+F,EAAI,EAAGA,EAAIsnB,EAAKtnB,GAAK,EAC5B0M,EAAKpH,KAAMtF,EAAGA,EAAI,GAClB0M,EAAKpH,KAAMtF,EAAI,EAAGA,EAAI,GACtB0M,EAAKpH,KAAMtF,EAAI,EAAGA,EAAI,GACtB0M,EAAKpH,KAAMtF,EAAI,EAAGA,EAAI,GAExB,OAAOsF,MAGTgmM,EAAOlrM,UAAUkkB,SAAW,WAC1B,IAAIpkB,EAAuB,EAAdoF,KAAKpF,OAClB,OAAe,IAAXA,EAAqB,GACA,IAArBkH,UAAUlH,OAAqB6kP,EAAUz/O,KAAM,EAAGpF,GAC/C2kP,EAAat7O,MAAMjE,KAAM8B,YAGlCkkM,EAAOlrM,UAAUkiL,OAAS,SAAiBrrK,GACzC,IAAKq0L,EAAOG,SAASx0L,GAAI,MAAM,IAAImG,UAAU,6BAC7C,OAAI9X,OAAS2R,GACsB,IAA5Bq0L,EAAO1tF,QAAQt4G,KAAM2R,IAG9Bq0L,EAAOlrM,UAAUmZ,QAAU,WACzB,IAAIk7C,EAAM,GACN3oC,EAAM/qB,EAAQirM,kBAKlB,OAJI1mM,KAAKpF,OAAS,IAChBu0D,EAAMnvD,KAAKgf,SAAS,MAAO,EAAGwH,GAAKe,MAAM,SAASvf,KAAK,KACnDhI,KAAKpF,OAAS4rB,IAAK2oC,GAAO,UAEzB,WAAaA,EAAM,KAG5B62I,EAAOlrM,UAAUw9G,QAAU,SAAkB96G,EAAQ8nD,EAAOgrB,EAAKsxK,EAAWC,GAC1E,IAAK77C,EAAOG,SAAS3oM,GACnB,MAAM,IAAIsa,UAAU,6BAgBtB,QAbcla,IAAV0nD,IACFA,EAAQ,QAEE1nD,IAAR0yE,IACFA,EAAM9yE,EAASA,EAAO5C,OAAS,QAEfgD,IAAdgkP,IACFA,EAAY,QAEEhkP,IAAZikP,IACFA,EAAU7hP,KAAKpF,QAGb0qD,EAAQ,GAAKgrB,EAAM9yE,EAAO5C,QAAUgnP,EAAY,GAAKC,EAAU7hP,KAAKpF,OACtE,MAAM,IAAIo+F,WAAW,sBAGvB,GAAI4oJ,GAAaC,GAAWv8L,GAASgrB,EACnC,OAAO,EAET,GAAIsxK,GAAaC,EACf,OAAQ,EAEV,GAAIv8L,GAASgrB,EACX,OAAO,EAQT,GAAItwE,OAASxC,EAAQ,OAAO,EAS5B,IAPA,IAAI0J,GAJJ26O,KAAa,IADbD,KAAe,GAMXx3N,GAPJkmD,KAAS,IADThrB,KAAW,GASPtjC,EAAMmB,KAAKW,IAAI5c,EAAGkjB,GAElB03N,EAAW9hP,KAAKH,MAAM+hP,EAAWC,GACjCE,EAAavkP,EAAOqC,MAAMylD,EAAOgrB,GAE5B51E,EAAI,EAAGA,EAAIsnB,IAAOtnB,EACzB,GAAIonP,EAASpnP,KAAOqnP,EAAWrnP,GAAI,CACjCwM,EAAI46O,EAASpnP,GACb0vB,EAAI23N,EAAWrnP,GACf,MAIJ,OAAIwM,EAAIkjB,GAAW,EACfA,EAAIljB,EAAU,EACX,GA6HT8+L,EAAOlrM,UAAUkc,SAAW,SAAmBvW,EAAKq+O,EAAYG,GAC9D,OAAoD,IAA7Cj/O,KAAKqR,QAAQ5Q,EAAKq+O,EAAYG,IAGvCj5C,EAAOlrM,UAAUuW,QAAU,SAAkB5Q,EAAKq+O,EAAYG,GAC5D,OAAOa,EAAqB9/O,KAAMS,EAAKq+O,EAAYG,GAAU,IAG/Dj5C,EAAOlrM,UAAUuK,YAAc,SAAsB5E,EAAKq+O,EAAYG,GACpE,OAAOa,EAAqB9/O,KAAMS,EAAKq+O,EAAYG,GAAU,IAkD/Dj5C,EAAOlrM,UAAUgtF,MAAQ,SAAgBrxD,EAAQoF,EAAQjhC,EAAQqkP,GAE/D,QAAerhP,IAAXi+B,EACFojN,EAAW,OACXrkP,EAASoF,KAAKpF,OACdihC,EAAS,OAEJ,QAAej+B,IAAXhD,GAA0C,iBAAXihC,EACxCojN,EAAWpjN,EACXjhC,EAASoF,KAAKpF,OACdihC,EAAS,MAEJ,KAAIpY,SAASoY,GAWlB,MAAM,IAAI9+B,MACR,2EAXF8+B,GAAkB,EACdpY,SAAS7oB,IACXA,GAAkB,OACDgD,IAAbqhP,IAAwBA,EAAW,UAEvCA,EAAWrkP,EACXA,OAASgD,GASb,IAAIs8E,EAAYl6E,KAAKpF,OAASihC,EAG9B,SAFej+B,IAAXhD,GAAwBA,EAASs/E,KAAWt/E,EAASs/E,GAEpDzjD,EAAO77B,OAAS,IAAMA,EAAS,GAAKihC,EAAS,IAAOA,EAAS77B,KAAKpF,OACrE,MAAM,IAAIo+F,WAAW,0CAGlBimJ,IAAUA,EAAW,QAG1B,IADA,IAAIG,GAAc,IAEhB,OAAQH,GACN,IAAK,MACH,OAAOoB,EAASrgP,KAAMy2B,EAAQoF,EAAQjhC,GAExC,IAAK,OACL,IAAK,QACH,OAAO2lP,EAAUvgP,KAAMy2B,EAAQoF,EAAQjhC,GAEzC,IAAK,QACH,OAAO6lP,EAAWzgP,KAAMy2B,EAAQoF,EAAQjhC,GAE1C,IAAK,SACL,IAAK,SACH,OAAOgmP,EAAY5gP,KAAMy2B,EAAQoF,EAAQjhC,GAE3C,IAAK,SAEH,OAAOimP,EAAY7gP,KAAMy2B,EAAQoF,EAAQjhC,GAE3C,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOkmP,EAAU9gP,KAAMy2B,EAAQoF,EAAQjhC,GAEzC,QACE,GAAIwkP,EAAa,MAAM,IAAItnO,UAAU,qBAAuBmnO,GAC5DA,GAAY,GAAKA,GAAU1jO,cAC3B6jO,GAAc,IAKtBp5C,EAAOlrM,UAAU+mC,OAAS,WACxB,MAAO,CACLvkC,KAAM,SACNjD,KAAMqG,MAAM5F,UAAU+E,MAAM7E,KAAKgF,KAAKo6D,MAAQp6D,KAAM,KA4GxD,SAAS0/O,EAAYS,EAAK76L,EAAOgrB,GAC/B,IAAItzC,EAAM,GACVszC,EAAMntD,KAAKW,IAAIq8N,EAAIvlP,OAAQ01E,GAE3B,IAAK,IAAI51E,EAAI4qD,EAAO5qD,EAAI41E,IAAO51E,EAC7BsiC,GAAO9f,OAAOq9B,aAAsB,IAAT4lM,EAAIzlP,IAEjC,OAAOsiC,EAGT,SAAS2iN,EAAaQ,EAAK76L,EAAOgrB,GAChC,IAAItzC,EAAM,GACVszC,EAAMntD,KAAKW,IAAIq8N,EAAIvlP,OAAQ01E,GAE3B,IAAK,IAAI51E,EAAI4qD,EAAO5qD,EAAI41E,IAAO51E,EAC7BsiC,GAAO9f,OAAOq9B,aAAa4lM,EAAIzlP,IAEjC,OAAOsiC,EAGT,SAASwiN,EAAUW,EAAK76L,EAAOgrB,GAC7B,IAAItuD,EAAMm+N,EAAIvlP,SAET0qD,GAASA,EAAQ,KAAGA,EAAQ,KAC5BgrB,GAAOA,EAAM,GAAKA,EAAMtuD,KAAKsuD,EAAMtuD,GAGxC,IADA,IAAIyhB,EAAM,GACD/oC,EAAI4qD,EAAO5qD,EAAI41E,IAAO51E,EAC7B+oC,GAAOu+M,EAAM7B,EAAIzlP,IAEnB,OAAO+oC,EAGT,SAASo8M,EAAcM,EAAK76L,EAAOgrB,GAGjC,IAFA,IAAIhpB,EAAQ64L,EAAItgP,MAAMylD,EAAOgrB,GACzB/wD,EAAM,GACD7kB,EAAI,EAAGA,EAAI4sD,EAAM1sD,OAAQF,GAAK,EACrC6kB,GAAOrC,OAAOq9B,aAAa+M,EAAM5sD,GAAoB,IAAf4sD,EAAM5sD,EAAI,IAElD,OAAO6kB,EA0CT,SAAS0iO,EAAapmN,EAAQmiK,EAAKpjM,GACjC,GAAKihC,EAAS,GAAO,GAAKA,EAAS,EAAG,MAAM,IAAIm9D,WAAW,sBAC3D,GAAIn9D,EAASmiK,EAAMpjM,EAAQ,MAAM,IAAIo+F,WAAW,yCA+JlD,SAASkpJ,EAAU/B,EAAKvhP,EAAOi9B,EAAQmiK,EAAKx3K,EAAK1C,GAC/C,IAAKkiL,EAAOG,SAASg6C,GAAM,MAAM,IAAIroO,UAAU,+CAC/C,GAAIlZ,EAAQ4nB,GAAO5nB,EAAQklB,EAAK,MAAM,IAAIk1E,WAAW,qCACrD,GAAIn9D,EAASmiK,EAAMmiD,EAAIvlP,OAAQ,MAAM,IAAIo+F,WAAW,sBAkDtD,SAASmpJ,EAAmBhC,EAAKvhP,EAAOi9B,EAAQumN,GAC1CxjP,EAAQ,IAAGA,EAAQ,MAASA,EAAQ,GACxC,IAAK,IAAIlE,EAAI,EAAGk5B,EAAIzQ,KAAKW,IAAIq8N,EAAIvlP,OAASihC,EAAQ,GAAInhC,EAAIk5B,IAAKl5B,EAC7DylP,EAAItkN,EAASnhC,IAAMkE,EAAS,KAAS,GAAKwjP,EAAe1nP,EAAI,EAAIA,MAClC,GAA5B0nP,EAAe1nP,EAAI,EAAIA,GA8B9B,SAAS2nP,EAAmBlC,EAAKvhP,EAAOi9B,EAAQumN,GAC1CxjP,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5C,IAAK,IAAIlE,EAAI,EAAGk5B,EAAIzQ,KAAKW,IAAIq8N,EAAIvlP,OAASihC,EAAQ,GAAInhC,EAAIk5B,IAAKl5B,EAC7DylP,EAAItkN,EAASnhC,GAAMkE,IAAuC,GAA5BwjP,EAAe1nP,EAAI,EAAIA,GAAU,IAmJnE,SAAS4nP,EAAcnC,EAAKvhP,EAAOi9B,EAAQmiK,EAAKx3K,EAAK1C,GACnD,GAAI+X,EAASmiK,EAAMmiD,EAAIvlP,OAAQ,MAAM,IAAIo+F,WAAW,sBACpD,GAAIn9D,EAAS,EAAG,MAAM,IAAIm9D,WAAW,sBAGvC,SAASupJ,EAAYpC,EAAKvhP,EAAOi9B,EAAQumN,EAAcI,GAKrD,OAJKA,GACHF,EAAanC,EAAKvhP,EAAOi9B,EAAQ,GAEnC8iN,EAAQ72J,MAAMq4J,EAAKvhP,EAAOi9B,EAAQumN,EAAc,GAAI,GAC7CvmN,EAAS,EAWlB,SAAS4mN,EAAatC,EAAKvhP,EAAOi9B,EAAQumN,EAAcI,GAKtD,OAJKA,GACHF,EAAanC,EAAKvhP,EAAOi9B,EAAQ,GAEnC8iN,EAAQ72J,MAAMq4J,EAAKvhP,EAAOi9B,EAAQumN,EAAc,GAAI,GAC7CvmN,EAAS,EA/clBmqK,EAAOlrM,UAAU+E,MAAQ,SAAgBylD,EAAOgrB,GAC9C,IAoBIoyK,EApBA1gO,EAAMhiB,KAAKpF,OAqBf,IApBA0qD,IAAUA,GAGE,GACVA,GAAStjC,GACG,IAAGsjC,EAAQ,GACdA,EAAQtjC,IACjBsjC,EAAQtjC,IANVsuD,OAAc1yE,IAAR0yE,EAAoBtuD,IAAQsuD,GASxB,GACRA,GAAOtuD,GACG,IAAGsuD,EAAM,GACVA,EAAMtuD,IACfsuD,EAAMtuD,GAGJsuD,EAAMhrB,IAAOgrB,EAAMhrB,GAGnB0gJ,EAAOC,qBACTy8C,EAAS1iP,KAAK2mM,SAASrhJ,EAAOgrB,IACvBt4D,UAAYguL,EAAOlrM,cACrB,CACL,IAAI6nP,EAAWryK,EAAMhrB,EACrBo9L,EAAS,IAAI18C,EAAO28C,OAAU/kP,GAC9B,IAAK,IAAIlD,EAAI,EAAGA,EAAIioP,IAAYjoP,EAC9BgoP,EAAOhoP,GAAKsF,KAAKtF,EAAI4qD,GAIzB,OAAOo9L,GAWT18C,EAAOlrM,UAAUysM,WAAa,SAAqB1rK,EAAQ4oK,EAAY+9C,GACrE3mN,GAAkB,EAClB4oK,GAA0B,EACrB+9C,GAAUP,EAAYpmN,EAAQ4oK,EAAYzkM,KAAKpF,QAKpD,IAHA,IAAI6F,EAAMT,KAAK67B,GACX+mN,EAAM,EACNloP,EAAI,IACCA,EAAI+pM,IAAem+C,GAAO,MACjCniP,GAAOT,KAAK67B,EAASnhC,GAAKkoP,EAG5B,OAAOniP,GAGTulM,EAAOlrM,UAAU0sM,WAAa,SAAqB3rK,EAAQ4oK,EAAY+9C,GACrE3mN,GAAkB,EAClB4oK,GAA0B,EACrB+9C,GACHP,EAAYpmN,EAAQ4oK,EAAYzkM,KAAKpF,QAKvC,IAFA,IAAI6F,EAAMT,KAAK67B,IAAW4oK,GACtBm+C,EAAM,EACHn+C,EAAa,IAAMm+C,GAAO,MAC/BniP,GAAOT,KAAK67B,IAAW4oK,GAAcm+C,EAGvC,OAAOniP,GAGTulM,EAAOlrM,UAAU2sM,UAAY,SAAoB5rK,EAAQ2mN,GAEvD,OADKA,GAAUP,EAAYpmN,EAAQ,EAAG77B,KAAKpF,QACpCoF,KAAK67B,IAGdmqK,EAAOlrM,UAAU4sM,aAAe,SAAuB7rK,EAAQ2mN,GAE7D,OADKA,GAAUP,EAAYpmN,EAAQ,EAAG77B,KAAKpF,QACpCoF,KAAK67B,GAAW77B,KAAK67B,EAAS,IAAM,GAG7CmqK,EAAOlrM,UAAUwrM,aAAe,SAAuBzqK,EAAQ2mN,GAE7D,OADKA,GAAUP,EAAYpmN,EAAQ,EAAG77B,KAAKpF,QACnCoF,KAAK67B,IAAW,EAAK77B,KAAK67B,EAAS,IAG7CmqK,EAAOlrM,UAAU6sM,aAAe,SAAuB9rK,EAAQ2mN,GAG7D,OAFKA,GAAUP,EAAYpmN,EAAQ,EAAG77B,KAAKpF,SAElCoF,KAAK67B,GACT77B,KAAK67B,EAAS,IAAM,EACpB77B,KAAK67B,EAAS,IAAM,IACD,SAAnB77B,KAAK67B,EAAS,IAGrBmqK,EAAOlrM,UAAU8sM,aAAe,SAAuB/rK,EAAQ2mN,GAG7D,OAFKA,GAAUP,EAAYpmN,EAAQ,EAAG77B,KAAKpF,QAEpB,SAAfoF,KAAK67B,IACT77B,KAAK67B,EAAS,IAAM,GACrB77B,KAAK67B,EAAS,IAAM,EACrB77B,KAAK67B,EAAS,KAGlBmqK,EAAOlrM,UAAU+sM,UAAY,SAAoBhsK,EAAQ4oK,EAAY+9C,GACnE3mN,GAAkB,EAClB4oK,GAA0B,EACrB+9C,GAAUP,EAAYpmN,EAAQ4oK,EAAYzkM,KAAKpF,QAKpD,IAHA,IAAI6F,EAAMT,KAAK67B,GACX+mN,EAAM,EACNloP,EAAI,IACCA,EAAI+pM,IAAem+C,GAAO,MACjCniP,GAAOT,KAAK67B,EAASnhC,GAAKkoP,EAM5B,OAFIniP,IAFJmiP,GAAO,OAESniP,GAAO0iB,KAAKoD,IAAI,EAAG,EAAIk+K,IAEhChkM,GAGTulM,EAAOlrM,UAAUgtM,UAAY,SAAoBjsK,EAAQ4oK,EAAY+9C,GACnE3mN,GAAkB,EAClB4oK,GAA0B,EACrB+9C,GAAUP,EAAYpmN,EAAQ4oK,EAAYzkM,KAAKpF,QAKpD,IAHA,IAAIF,EAAI+pM,EACJm+C,EAAM,EACNniP,EAAMT,KAAK67B,IAAWnhC,GACnBA,EAAI,IAAMkoP,GAAO,MACtBniP,GAAOT,KAAK67B,IAAWnhC,GAAKkoP,EAM9B,OAFIniP,IAFJmiP,GAAO,OAESniP,GAAO0iB,KAAKoD,IAAI,EAAG,EAAIk+K,IAEhChkM,GAGTulM,EAAOlrM,UAAUitM,SAAW,SAAmBlsK,EAAQ2mN,GAErD,OADKA,GAAUP,EAAYpmN,EAAQ,EAAG77B,KAAKpF,QACtB,IAAfoF,KAAK67B,IAC0B,GAA5B,IAAO77B,KAAK67B,GAAU,GADK77B,KAAK67B,IAI3CmqK,EAAOlrM,UAAUktM,YAAc,SAAsBnsK,EAAQ2mN,GACtDA,GAAUP,EAAYpmN,EAAQ,EAAG77B,KAAKpF,QAC3C,IAAI6F,EAAMT,KAAK67B,GAAW77B,KAAK67B,EAAS,IAAM,EAC9C,OAAc,MAANp7B,EAAsB,WAANA,EAAmBA,GAG7CulM,EAAOlrM,UAAUmtM,YAAc,SAAsBpsK,EAAQ2mN,GACtDA,GAAUP,EAAYpmN,EAAQ,EAAG77B,KAAKpF,QAC3C,IAAI6F,EAAMT,KAAK67B,EAAS,GAAM77B,KAAK67B,IAAW,EAC9C,OAAc,MAANp7B,EAAsB,WAANA,EAAmBA,GAG7CulM,EAAOlrM,UAAUi4J,YAAc,SAAsBl3H,EAAQ2mN,GAG3D,OAFKA,GAAUP,EAAYpmN,EAAQ,EAAG77B,KAAKpF,QAEnCoF,KAAK67B,GACV77B,KAAK67B,EAAS,IAAM,EACpB77B,KAAK67B,EAAS,IAAM,GACpB77B,KAAK67B,EAAS,IAAM,IAGzBmqK,EAAOlrM,UAAUotM,YAAc,SAAsBrsK,EAAQ2mN,GAG3D,OAFKA,GAAUP,EAAYpmN,EAAQ,EAAG77B,KAAKpF,QAEnCoF,KAAK67B,IAAW,GACrB77B,KAAK67B,EAAS,IAAM,GACpB77B,KAAK67B,EAAS,IAAM,EACpB77B,KAAK67B,EAAS,IAGnBmqK,EAAOlrM,UAAUqtM,YAAc,SAAsBtsK,EAAQ2mN,GAE3D,OADKA,GAAUP,EAAYpmN,EAAQ,EAAG77B,KAAKpF,QACpC+jP,EAAQljL,KAAKz7D,KAAM67B,GAAQ,EAAM,GAAI,IAG9CmqK,EAAOlrM,UAAUstM,YAAc,SAAsBvsK,EAAQ2mN,GAE3D,OADKA,GAAUP,EAAYpmN,EAAQ,EAAG77B,KAAKpF,QACpC+jP,EAAQljL,KAAKz7D,KAAM67B,GAAQ,EAAO,GAAI,IAG/CmqK,EAAOlrM,UAAUutM,aAAe,SAAuBxsK,EAAQ2mN,GAE7D,OADKA,GAAUP,EAAYpmN,EAAQ,EAAG77B,KAAKpF,QACpC+jP,EAAQljL,KAAKz7D,KAAM67B,GAAQ,EAAM,GAAI,IAG9CmqK,EAAOlrM,UAAUwtM,aAAe,SAAuBzsK,EAAQ2mN,GAE7D,OADKA,GAAUP,EAAYpmN,EAAQ,EAAG77B,KAAKpF,QACpC+jP,EAAQljL,KAAKz7D,KAAM67B,GAAQ,EAAO,GAAI,IAS/CmqK,EAAOlrM,UAAUytM,YAAc,SAAsB3pM,EAAOi9B,EAAQ4oK,EAAY+9C,IAC9E5jP,GAASA,EACTi9B,GAAkB,EAClB4oK,GAA0B,EACrB+9C,IAEHN,EAASliP,KAAMpB,EAAOi9B,EAAQ4oK,EADfthL,KAAKoD,IAAI,EAAG,EAAIk+K,GAAc,EACO,GAGtD,IAAIm+C,EAAM,EACNloP,EAAI,EAER,IADAsF,KAAK67B,GAAkB,IAARj9B,IACNlE,EAAI+pM,IAAem+C,GAAO,MACjC5iP,KAAK67B,EAASnhC,GAAMkE,EAAQgkP,EAAO,IAGrC,OAAO/mN,EAAS4oK,GAGlBuB,EAAOlrM,UAAU0tM,YAAc,SAAsB5pM,EAAOi9B,EAAQ4oK,EAAY+9C,IAC9E5jP,GAASA,EACTi9B,GAAkB,EAClB4oK,GAA0B,EACrB+9C,IAEHN,EAASliP,KAAMpB,EAAOi9B,EAAQ4oK,EADfthL,KAAKoD,IAAI,EAAG,EAAIk+K,GAAc,EACO,GAGtD,IAAI/pM,EAAI+pM,EAAa,EACjBm+C,EAAM,EAEV,IADA5iP,KAAK67B,EAASnhC,GAAa,IAARkE,IACVlE,GAAK,IAAMkoP,GAAO,MACzB5iP,KAAK67B,EAASnhC,GAAMkE,EAAQgkP,EAAO,IAGrC,OAAO/mN,EAAS4oK,GAGlBuB,EAAOlrM,UAAU2tM,WAAa,SAAqB7pM,EAAOi9B,EAAQ2mN,GAMhE,OALA5jP,GAASA,EACTi9B,GAAkB,EACb2mN,GAAUN,EAASliP,KAAMpB,EAAOi9B,EAAQ,EAAG,IAAM,GACjDmqK,EAAOC,sBAAqBrnM,EAAQukB,KAAKE,MAAMzkB,IACpDoB,KAAK67B,GAAmB,IAARj9B,EACTi9B,EAAS,GAWlBmqK,EAAOlrM,UAAU4tM,cAAgB,SAAwB9pM,EAAOi9B,EAAQ2mN,GAUtE,OATA5jP,GAASA,EACTi9B,GAAkB,EACb2mN,GAAUN,EAASliP,KAAMpB,EAAOi9B,EAAQ,EAAG,MAAQ,GACpDmqK,EAAOC,qBACTjmM,KAAK67B,GAAmB,IAARj9B,EAChBoB,KAAK67B,EAAS,GAAMj9B,IAAU,GAE9BujP,EAAkBniP,KAAMpB,EAAOi9B,GAAQ,GAElCA,EAAS,GAGlBmqK,EAAOlrM,UAAU6tM,cAAgB,SAAwB/pM,EAAOi9B,EAAQ2mN,GAUtE,OATA5jP,GAASA,EACTi9B,GAAkB,EACb2mN,GAAUN,EAASliP,KAAMpB,EAAOi9B,EAAQ,EAAG,MAAQ,GACpDmqK,EAAOC,qBACTjmM,KAAK67B,GAAWj9B,IAAU,EAC1BoB,KAAK67B,EAAS,GAAc,IAARj9B,GAEpBujP,EAAkBniP,KAAMpB,EAAOi9B,GAAQ,GAElCA,EAAS,GAUlBmqK,EAAOlrM,UAAU8tM,cAAgB,SAAwBhqM,EAAOi9B,EAAQ2mN,GAYtE,OAXA5jP,GAASA,EACTi9B,GAAkB,EACb2mN,GAAUN,EAASliP,KAAMpB,EAAOi9B,EAAQ,EAAG,WAAY,GACxDmqK,EAAOC,qBACTjmM,KAAK67B,EAAS,GAAMj9B,IAAU,GAC9BoB,KAAK67B,EAAS,GAAMj9B,IAAU,GAC9BoB,KAAK67B,EAAS,GAAMj9B,IAAU,EAC9BoB,KAAK67B,GAAmB,IAARj9B,GAEhByjP,EAAkBriP,KAAMpB,EAAOi9B,GAAQ,GAElCA,EAAS,GAGlBmqK,EAAOlrM,UAAU+tM,cAAgB,SAAwBjqM,EAAOi9B,EAAQ2mN,GAYtE,OAXA5jP,GAASA,EACTi9B,GAAkB,EACb2mN,GAAUN,EAASliP,KAAMpB,EAAOi9B,EAAQ,EAAG,WAAY,GACxDmqK,EAAOC,qBACTjmM,KAAK67B,GAAWj9B,IAAU,GAC1BoB,KAAK67B,EAAS,GAAMj9B,IAAU,GAC9BoB,KAAK67B,EAAS,GAAMj9B,IAAU,EAC9BoB,KAAK67B,EAAS,GAAc,IAARj9B,GAEpByjP,EAAkBriP,KAAMpB,EAAOi9B,GAAQ,GAElCA,EAAS,GAGlBmqK,EAAOlrM,UAAUguM,WAAa,SAAqBlqM,EAAOi9B,EAAQ4oK,EAAY+9C,GAG5E,GAFA5jP,GAASA,EACTi9B,GAAkB,GACb2mN,EAAU,CACb,IAAI76M,EAAQxkB,KAAKoD,IAAI,EAAG,EAAIk+K,EAAa,GAEzCy9C,EAASliP,KAAMpB,EAAOi9B,EAAQ4oK,EAAY98J,EAAQ,GAAIA,GAGxD,IAAIjtC,EAAI,EACJkoP,EAAM,EACN3tO,EAAM,EAEV,IADAjV,KAAK67B,GAAkB,IAARj9B,IACNlE,EAAI+pM,IAAem+C,GAAO,MAC7BhkP,EAAQ,GAAa,IAARqW,GAAsC,IAAzBjV,KAAK67B,EAASnhC,EAAI,KAC9Cua,EAAM,GAERjV,KAAK67B,EAASnhC,IAAOkE,EAAQgkP,GAAQ,GAAK3tO,EAAM,IAGlD,OAAO4mB,EAAS4oK,GAGlBuB,EAAOlrM,UAAUiuM,WAAa,SAAqBnqM,EAAOi9B,EAAQ4oK,EAAY+9C,GAG5E,GAFA5jP,GAASA,EACTi9B,GAAkB,GACb2mN,EAAU,CACb,IAAI76M,EAAQxkB,KAAKoD,IAAI,EAAG,EAAIk+K,EAAa,GAEzCy9C,EAASliP,KAAMpB,EAAOi9B,EAAQ4oK,EAAY98J,EAAQ,GAAIA,GAGxD,IAAIjtC,EAAI+pM,EAAa,EACjBm+C,EAAM,EACN3tO,EAAM,EAEV,IADAjV,KAAK67B,EAASnhC,GAAa,IAARkE,IACVlE,GAAK,IAAMkoP,GAAO,MACrBhkP,EAAQ,GAAa,IAARqW,GAAsC,IAAzBjV,KAAK67B,EAASnhC,EAAI,KAC9Cua,EAAM,GAERjV,KAAK67B,EAASnhC,IAAOkE,EAAQgkP,GAAQ,GAAK3tO,EAAM,IAGlD,OAAO4mB,EAAS4oK,GAGlBuB,EAAOlrM,UAAUkuM,UAAY,SAAoBpqM,EAAOi9B,EAAQ2mN,GAO9D,OANA5jP,GAASA,EACTi9B,GAAkB,EACb2mN,GAAUN,EAASliP,KAAMpB,EAAOi9B,EAAQ,EAAG,KAAO,KAClDmqK,EAAOC,sBAAqBrnM,EAAQukB,KAAKE,MAAMzkB,IAChDA,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtCoB,KAAK67B,GAAmB,IAARj9B,EACTi9B,EAAS,GAGlBmqK,EAAOlrM,UAAUmuM,aAAe,SAAuBrqM,EAAOi9B,EAAQ2mN,GAUpE,OATA5jP,GAASA,EACTi9B,GAAkB,EACb2mN,GAAUN,EAASliP,KAAMpB,EAAOi9B,EAAQ,EAAG,OAAS,OACrDmqK,EAAOC,qBACTjmM,KAAK67B,GAAmB,IAARj9B,EAChBoB,KAAK67B,EAAS,GAAMj9B,IAAU,GAE9BujP,EAAkBniP,KAAMpB,EAAOi9B,GAAQ,GAElCA,EAAS,GAGlBmqK,EAAOlrM,UAAUouM,aAAe,SAAuBtqM,EAAOi9B,EAAQ2mN,GAUpE,OATA5jP,GAASA,EACTi9B,GAAkB,EACb2mN,GAAUN,EAASliP,KAAMpB,EAAOi9B,EAAQ,EAAG,OAAS,OACrDmqK,EAAOC,qBACTjmM,KAAK67B,GAAWj9B,IAAU,EAC1BoB,KAAK67B,EAAS,GAAc,IAARj9B,GAEpBujP,EAAkBniP,KAAMpB,EAAOi9B,GAAQ,GAElCA,EAAS,GAGlBmqK,EAAOlrM,UAAUquM,aAAe,SAAuBvqM,EAAOi9B,EAAQ2mN,GAYpE,OAXA5jP,GAASA,EACTi9B,GAAkB,EACb2mN,GAAUN,EAASliP,KAAMpB,EAAOi9B,EAAQ,EAAG,YAAa,YACzDmqK,EAAOC,qBACTjmM,KAAK67B,GAAmB,IAARj9B,EAChBoB,KAAK67B,EAAS,GAAMj9B,IAAU,EAC9BoB,KAAK67B,EAAS,GAAMj9B,IAAU,GAC9BoB,KAAK67B,EAAS,GAAMj9B,IAAU,IAE9ByjP,EAAkBriP,KAAMpB,EAAOi9B,GAAQ,GAElCA,EAAS,GAGlBmqK,EAAOlrM,UAAUsuM,aAAe,SAAuBxqM,EAAOi9B,EAAQ2mN,GAapE,OAZA5jP,GAASA,EACTi9B,GAAkB,EACb2mN,GAAUN,EAASliP,KAAMpB,EAAOi9B,EAAQ,EAAG,YAAa,YACzDj9B,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GACxConM,EAAOC,qBACTjmM,KAAK67B,GAAWj9B,IAAU,GAC1BoB,KAAK67B,EAAS,GAAMj9B,IAAU,GAC9BoB,KAAK67B,EAAS,GAAMj9B,IAAU,EAC9BoB,KAAK67B,EAAS,GAAc,IAARj9B,GAEpByjP,EAAkBriP,KAAMpB,EAAOi9B,GAAQ,GAElCA,EAAS,GAgBlBmqK,EAAOlrM,UAAUuuM,aAAe,SAAuBzqM,EAAOi9B,EAAQ2mN,GACpE,OAAOD,EAAWviP,KAAMpB,EAAOi9B,GAAQ,EAAM2mN,IAG/Cx8C,EAAOlrM,UAAUwuM,aAAe,SAAuB1qM,EAAOi9B,EAAQ2mN,GACpE,OAAOD,EAAWviP,KAAMpB,EAAOi9B,GAAQ,EAAO2mN,IAWhDx8C,EAAOlrM,UAAUyuM,cAAgB,SAAwB3qM,EAAOi9B,EAAQ2mN,GACtE,OAAOC,EAAYziP,KAAMpB,EAAOi9B,GAAQ,EAAM2mN,IAGhDx8C,EAAOlrM,UAAU0uM,cAAgB,SAAwB5qM,EAAOi9B,EAAQ2mN,GACtE,OAAOC,EAAYziP,KAAMpB,EAAOi9B,GAAQ,EAAO2mN,IAIjDx8C,EAAOlrM,UAAU2zD,KAAO,SAAejxD,EAAQqlP,EAAav9L,EAAOgrB,GAQjE,GAPKhrB,IAAOA,EAAQ,GACfgrB,GAAe,IAARA,IAAWA,EAAMtwE,KAAKpF,QAC9BioP,GAAerlP,EAAO5C,SAAQioP,EAAcrlP,EAAO5C,QAClDioP,IAAaA,EAAc,GAC5BvyK,EAAM,GAAKA,EAAMhrB,IAAOgrB,EAAMhrB,GAG9BgrB,IAAQhrB,EAAO,OAAO,EAC1B,GAAsB,IAAlB9nD,EAAO5C,QAAgC,IAAhBoF,KAAKpF,OAAc,OAAO,EAGrD,GAAIioP,EAAc,EAChB,MAAM,IAAI7pJ,WAAW,6BAEvB,GAAI1zC,EAAQ,GAAKA,GAAStlD,KAAKpF,OAAQ,MAAM,IAAIo+F,WAAW,6BAC5D,GAAI1oB,EAAM,EAAG,MAAM,IAAI0oB,WAAW,2BAG9B1oB,EAAMtwE,KAAKpF,SAAQ01E,EAAMtwE,KAAKpF,QAC9B4C,EAAO5C,OAASioP,EAAcvyK,EAAMhrB,IACtCgrB,EAAM9yE,EAAO5C,OAASioP,EAAcv9L,GAGtC,IACI5qD,EADAsnB,EAAMsuD,EAAMhrB,EAGhB,GAAItlD,OAASxC,GAAU8nD,EAAQu9L,GAAeA,EAAcvyK,EAE1D,IAAK51E,EAAIsnB,EAAM,EAAGtnB,GAAK,IAAKA,EAC1B8C,EAAO9C,EAAImoP,GAAe7iP,KAAKtF,EAAI4qD,QAEhC,GAAItjC,EAAM,MAASgkL,EAAOC,oBAE/B,IAAKvrM,EAAI,EAAGA,EAAIsnB,IAAOtnB,EACrB8C,EAAO9C,EAAImoP,GAAe7iP,KAAKtF,EAAI4qD,QAGrCusH,WAAW/2K,UAAUqqB,IAAInqB,KACvBwC,EACAwC,KAAK2mM,SAASrhJ,EAAOA,EAAQtjC,GAC7B6gO,GAIJ,OAAO7gO,GAOTgkL,EAAOlrM,UAAUksM,KAAO,SAAevmM,EAAK6kD,EAAOgrB,EAAK2uK,GAEtD,GAAmB,iBAARx+O,EAAkB,CAS3B,GARqB,iBAAV6kD,GACT25L,EAAW35L,EACXA,EAAQ,EACRgrB,EAAMtwE,KAAKpF,QACa,iBAAR01E,IAChB2uK,EAAW3uK,EACXA,EAAMtwE,KAAKpF,QAEM,IAAf6F,EAAI7F,OAAc,CACpB,IAAIu5D,EAAO1zD,EAAI09C,WAAW,GACtBgW,EAAO,MACT1zD,EAAM0zD,GAGV,QAAiBv2D,IAAbqhP,GAA8C,iBAAbA,EACnC,MAAM,IAAInnO,UAAU,6BAEtB,GAAwB,iBAAbmnO,IAA0Bj5C,EAAOE,WAAW+4C,GACrD,MAAM,IAAInnO,UAAU,qBAAuBmnO,OAErB,iBAARx+O,IAChBA,GAAY,KAId,GAAI6kD,EAAQ,GAAKtlD,KAAKpF,OAAS0qD,GAAStlD,KAAKpF,OAAS01E,EACpD,MAAM,IAAI0oB,WAAW,sBAGvB,GAAI1oB,GAAOhrB,EACT,OAAOtlD,KAQT,IAAItF,EACJ,GANA4qD,KAAkB,EAClBgrB,OAAc1yE,IAAR0yE,EAAoBtwE,KAAKpF,OAAS01E,IAAQ,EAE3C7vE,IAAKA,EAAM,GAGG,iBAARA,EACT,IAAK/F,EAAI4qD,EAAO5qD,EAAI41E,IAAO51E,EACzBsF,KAAKtF,GAAK+F,MAEP,CACL,IAAI6mD,EAAQ0+I,EAAOG,SAAS1lM,GACxBA,EACA4+O,EAAY,IAAIr5C,EAAOvlM,EAAKw+O,GAAUjgO,YACtCgD,EAAMslC,EAAM1sD,OAChB,IAAKF,EAAI,EAAGA,EAAI41E,EAAMhrB,IAAS5qD,EAC7BsF,KAAKtF,EAAI4qD,GAASgC,EAAM5sD,EAAIsnB,GAIhC,OAAOhiB,MAMT,IAAI8iP,EAAoB,qBAmBxB,SAASd,EAAO5iP,GACd,OAAIA,EAAI,GAAW,IAAMA,EAAE4f,SAAS,IAC7B5f,EAAE4f,SAAS,IAGpB,SAASqgO,EAAa5oN,EAAQ/Q,GAE5B,IAAI67N,EADJ77N,EAAQA,GAASy0L,IAMjB,IAJA,IAAIv/M,EAAS67B,EAAO77B,OAChBmoP,EAAgB,KAChBz7L,EAAQ,GAEH5sD,EAAI,EAAGA,EAAIE,IAAUF,EAAG,CAI/B,IAHA6mP,EAAY9qN,EAAO0nB,WAAWzjD,IAGd,OAAU6mP,EAAY,MAAQ,CAE5C,IAAKwB,EAAe,CAElB,GAAIxB,EAAY,MAAQ,EAEjB77N,GAAS,IAAM,GAAG4hC,EAAMpsD,KAAK,IAAM,IAAM,KAC9C,SACK,GAAIR,EAAI,IAAME,EAAQ,EAEtB8qB,GAAS,IAAM,GAAG4hC,EAAMpsD,KAAK,IAAM,IAAM,KAC9C,SAIF6nP,EAAgBxB,EAEhB,SAIF,GAAIA,EAAY,MAAQ,EACjB77N,GAAS,IAAM,GAAG4hC,EAAMpsD,KAAK,IAAM,IAAM,KAC9C6nP,EAAgBxB,EAChB,SAIFA,EAAkE,OAArDwB,EAAgB,OAAU,GAAKxB,EAAY,YAC/CwB,IAEJr9N,GAAS,IAAM,GAAG4hC,EAAMpsD,KAAK,IAAM,IAAM,KAMhD,GAHA6nP,EAAgB,KAGZxB,EAAY,IAAM,CACpB,IAAK77N,GAAS,GAAK,EAAG,MACtB4hC,EAAMpsD,KAAKqmP,QACN,GAAIA,EAAY,KAAO,CAC5B,IAAK77N,GAAS,GAAK,EAAG,MACtB4hC,EAAMpsD,KACJqmP,GAAa,EAAM,IACP,GAAZA,EAAmB,UAEhB,GAAIA,EAAY,MAAS,CAC9B,IAAK77N,GAAS,GAAK,EAAG,MACtB4hC,EAAMpsD,KACJqmP,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,SAEhB,MAAIA,EAAY,SASrB,MAAM,IAAIxkP,MAAM,sBARhB,IAAK2oB,GAAS,GAAK,EAAG,MACtB4hC,EAAMpsD,KACJqmP,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,MAOzB,OAAOj6L,EA4BT,SAASg4L,EAAenwL,GACtB,OAAOuvL,EAAO3hE,YAhIhB,SAAsB5tH,GAIpB,IAFAA,EAUF,SAAqBA,GACnB,OAAIA,EAAIxI,KAAawI,EAAIxI,OAClBwI,EAAIpoD,QAAQ,aAAc,IAZ3Bi8O,CAAW7zL,GAAKpoD,QAAQ+7O,EAAmB,KAEzCloP,OAAS,EAAG,MAAO,GAE3B,KAAOu0D,EAAIv0D,OAAS,GAAM,GACxBu0D,GAAY,IAEd,OAAOA,EAuHmB8zL,CAAY9zL,IAGxC,SAASqxL,EAAY7jP,EAAKqqG,EAAKnrE,EAAQjhC,GACrC,IAAK,IAAIF,EAAI,EAAGA,EAAIE,KACbF,EAAImhC,GAAUmrE,EAAIpsG,QAAYF,GAAKiC,EAAI/B,UADhBF,EAE5BssG,EAAItsG,EAAImhC,GAAUl/B,EAAIjC,GAExB,OAAOA,K,mDCrvDTe,EAAQgpM,WAuCR,SAAqB5U,GACnB,IAAIqzD,EAAOC,EAAQtzD,GACfuzD,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAC3B,OAAuC,GAA9BE,EAAWC,GAAuB,EAAKA,GA1ClD5nP,EAAQshL,YAiDR,SAAsB8S,GACpB,IAAIlyJ,EAcAjjC,EAbAwoP,EAAOC,EAAQtzD,GACfuzD,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAEvB7jO,EAAM,IAAIikO,EAVhB,SAAsBzzD,EAAKuzD,EAAUC,GACnC,OAAuC,GAA9BD,EAAWC,GAAuB,EAAKA,EAS9BE,CAAY1zD,EAAKuzD,EAAUC,IAEzCG,EAAU,EAGVxhO,EAAMqhO,EAAkB,EACxBD,EAAW,EACXA,EAGJ,IAAK1oP,EAAI,EAAGA,EAAIsnB,EAAKtnB,GAAK,EACxBijC,EACG8lN,EAAU5zD,EAAI1xI,WAAWzjD,KAAO,GAChC+oP,EAAU5zD,EAAI1xI,WAAWzjD,EAAI,KAAO,GACpC+oP,EAAU5zD,EAAI1xI,WAAWzjD,EAAI,KAAO,EACrC+oP,EAAU5zD,EAAI1xI,WAAWzjD,EAAI,IAC/B2kB,EAAImkO,KAAc7lN,GAAO,GAAM,IAC/Bte,EAAImkO,KAAc7lN,GAAO,EAAK,IAC9Bte,EAAImkO,KAAmB,IAAN7lN,EAGK,IAApB0lN,IACF1lN,EACG8lN,EAAU5zD,EAAI1xI,WAAWzjD,KAAO,EAChC+oP,EAAU5zD,EAAI1xI,WAAWzjD,EAAI,KAAO,EACvC2kB,EAAImkO,KAAmB,IAAN7lN,GAGK,IAApB0lN,IACF1lN,EACG8lN,EAAU5zD,EAAI1xI,WAAWzjD,KAAO,GAChC+oP,EAAU5zD,EAAI1xI,WAAWzjD,EAAI,KAAO,EACpC+oP,EAAU5zD,EAAI1xI,WAAWzjD,EAAI,KAAO,EACvC2kB,EAAImkO,KAAc7lN,GAAO,EAAK,IAC9Bte,EAAImkO,KAAmB,IAAN7lN,GAGnB,OAAOte,GA3FT5jB,EAAQ8qM,cAkHR,SAAwBm9C,GAQtB,IAPA,IAAI/lN,EACA3b,EAAM0hO,EAAM9oP,OACZ+oP,EAAa3hO,EAAM,EACnBoa,EAAQ,GAIH1hC,EAAI,EAAGkpP,EAAO5hO,EAAM2hO,EAAYjpP,EAAIkpP,EAAMlpP,GAH9B,MAInB0hC,EAAMlhC,KAAK2oP,EAAYH,EAAOhpP,EAAIA,EAJf,MAIqCkpP,EAAOA,EAAQlpP,EAJpD,QAQF,IAAfipP,GACFhmN,EAAM+lN,EAAM1hO,EAAM,GAClBoa,EAAMlhC,KACJwqI,EAAO/nG,GAAO,GACd+nG,EAAQ/nG,GAAO,EAAK,IACpB,OAEsB,IAAfgmN,IACThmN,GAAO+lN,EAAM1hO,EAAM,IAAM,GAAK0hO,EAAM1hO,EAAM,GAC1Coa,EAAMlhC,KACJwqI,EAAO/nG,GAAO,IACd+nG,EAAQ/nG,GAAO,EAAK,IACpB+nG,EAAQ/nG,GAAO,EAAK,IACpB,MAIJ,OAAOvB,EAAMp0B,KAAK,KAzIpB,IALA,IAAI09H,EAAS,GACT+9G,EAAY,GACZH,EAA4B,oBAAfzxE,WAA6BA,WAAanxK,MAEvDyzD,EAAO,mEACFz5D,EAAI,EAAGsnB,EAAMmyC,EAAKv5D,OAAQF,EAAIsnB,IAAOtnB,EAC5CgrI,EAAOhrI,GAAKy5D,EAAKz5D,GACjB+oP,EAAUtvL,EAAKhW,WAAWzjD,IAAMA,EAQlC,SAASyoP,EAAStzD,GAChB,IAAI7tK,EAAM6tK,EAAIj1L,OAEd,GAAIonB,EAAM,EAAI,EACZ,MAAM,IAAIjlB,MAAM,kDAKlB,IAAIqmP,EAAWvzD,EAAIx+K,QAAQ,KAO3B,OANkB,IAAd+xO,IAAiBA,EAAWphO,GAMzB,CAACohO,EAJcA,IAAaphO,EAC/B,EACA,EAAKohO,EAAW,GAsEtB,SAASS,EAAaH,EAAOp+L,EAAOgrB,GAGlC,IAFA,IAAI3yC,EARoB0/C,EASpBpzE,EAAS,GACJvP,EAAI4qD,EAAO5qD,EAAI41E,EAAK51E,GAAK,EAChCijC,GACI+lN,EAAMhpP,IAAM,GAAM,WAClBgpP,EAAMhpP,EAAI,IAAM,EAAK,QACP,IAAfgpP,EAAMhpP,EAAI,IACbuP,EAAO/O,KAdFwqI,GADiBroD,EAeM1/C,IAdT,GAAK,IACxB+nG,EAAOroD,GAAO,GAAK,IACnBqoD,EAAOroD,GAAO,EAAI,IAClBqoD,EAAa,GAANroD,IAaT,OAAOpzE,EAAOjC,KAAK,IAjGrBy7O,EAAU,IAAItlM,WAAW,IAAM,GAC/BslM,EAAU,IAAItlM,WAAW,IAAM,I,gCCnB/B,IAAY2lM,EAAZ,2CAAYA,GACR,uBACA,2BACA,+BACA,mCACA,mBALJ,CAAYA,MAAoB,M;;ACChCroP,EAAQggE,KAAO,SAAU2qI,EAAQvqK,EAAQkoN,EAAMC,EAAM3lM,GACnD,IAAIziD,EAAGqC,EACHgmP,EAAiB,EAAT5lM,EAAc2lM,EAAO,EAC7BE,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACT1pP,EAAIqpP,EAAQ1lM,EAAS,EAAK,EAC1BlgD,EAAI4lP,GAAQ,EAAI,EAChBjkP,EAAIsmM,EAAOvqK,EAASnhC,GAOxB,IALAA,GAAKyD,EAELvC,EAAIkE,GAAM,IAAOskP,GAAU,EAC3BtkP,KAAQskP,EACRA,GAASH,EACFG,EAAQ,EAAGxoP,EAAS,IAAJA,EAAWwqM,EAAOvqK,EAASnhC,GAAIA,GAAKyD,EAAGimP,GAAS,GAKvE,IAHAnmP,EAAIrC,GAAM,IAAOwoP,GAAU,EAC3BxoP,KAAQwoP,EACRA,GAASJ,EACFI,EAAQ,EAAGnmP,EAAS,IAAJA,EAAWmoM,EAAOvqK,EAASnhC,GAAIA,GAAKyD,EAAGimP,GAAS,GAEvE,GAAU,IAANxoP,EACFA,EAAI,EAAIuoP,MACH,IAAIvoP,IAAMsoP,EACf,OAAOjmP,EAAI6jB,IAAsBq4L,KAAdr6M,GAAK,EAAI,GAE5B7B,GAAQklB,KAAKoD,IAAI,EAAGy9N,GACpBpoP,GAAQuoP,EAEV,OAAQrkP,GAAK,EAAI,GAAK7B,EAAIklB,KAAKoD,IAAI,EAAG3qB,EAAIooP,IAG5CvoP,EAAQqsF,MAAQ,SAAUs+G,EAAQxnM,EAAOi9B,EAAQkoN,EAAMC,EAAM3lM,GAC3D,IAAIziD,EAAGqC,EAAGC,EACN+lP,EAAiB,EAAT5lM,EAAc2lM,EAAO,EAC7BE,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBx3E,EAAe,KAATs3E,EAAc7gO,KAAKoD,IAAI,GAAI,IAAMpD,KAAKoD,IAAI,GAAI,IAAM,EAC1D7rB,EAAIqpP,EAAO,EAAK1lM,EAAS,EACzBlgD,EAAI4lP,EAAO,GAAK,EAChBjkP,EAAIlB,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,EAAK,EAAI,EAmC1D,IAjCAA,EAAQukB,KAAKa,IAAIplB,GAEb0iB,MAAM1iB,IAAUA,IAAUu7M,KAC5Bl8M,EAAIqjB,MAAM1iB,GAAS,EAAI,EACvBhD,EAAIsoP,IAEJtoP,EAAIunB,KAAKE,MAAMF,KAAKywB,IAAIh1C,GAASukB,KAAK04J,KAClCj9K,GAASV,EAAIilB,KAAKoD,IAAI,GAAI3qB,IAAM,IAClCA,IACAsC,GAAK,IAGLU,GADEhD,EAAIuoP,GAAS,EACNz3E,EAAKxuK,EAELwuK,EAAKvpJ,KAAKoD,IAAI,EAAG,EAAI49N,IAEpBjmP,GAAK,IACftC,IACAsC,GAAK,GAGHtC,EAAIuoP,GAASD,GACfjmP,EAAI,EACJrC,EAAIsoP,GACKtoP,EAAIuoP,GAAS,GACtBlmP,GAAMW,EAAQV,EAAK,GAAKilB,KAAKoD,IAAI,EAAGy9N,GACpCpoP,GAAQuoP,IAERlmP,EAAIW,EAAQukB,KAAKoD,IAAI,EAAG49N,EAAQ,GAAKhhO,KAAKoD,IAAI,EAAGy9N,GACjDpoP,EAAI,IAIDooP,GAAQ,EAAG59C,EAAOvqK,EAASnhC,GAAS,IAAJuD,EAAUvD,GAAKyD,EAAGF,GAAK,IAAK+lP,GAAQ,GAI3E,IAFApoP,EAAKA,GAAKooP,EAAQ/lP,EAClBgmP,GAAQD,EACDC,EAAO,EAAG79C,EAAOvqK,EAASnhC,GAAS,IAAJkB,EAAUlB,GAAKyD,EAAGvC,GAAK,IAAKqoP,GAAQ,GAE1E79C,EAAOvqK,EAASnhC,EAAIyD,IAAU,IAAJ2B,I,kBCnF5B,IAAIkf,EAAW,GAAGA,SAElBtjB,EAAOD,QAAUiF,MAAMC,SAAW,SAAU0e,GAC1C,MAA6B,kBAAtBL,EAAShkB,KAAKqkB,K,iCCDvB5jB,EAAQsD,YAAa,EACrBtD,EAAQ4oP,uBAAoB,EAE5B,IAsBgCtjP,EAF5B+lE,EAAM67D,EAAOx8D,EAAQC,EAASC,EAAaC,EAAcC,EAAcC,EAAcojE,EApBrF06G,EAA8B,EAAQ,IAEtCC,EAAkB,EAAQ,GAE1BC,EAAqB,EAAQ,GAE7BC,EAA8B,EAAQ,gCAEtCC,EAAoC,EAAQ,KAE5CC,EAAiB,EAAQ,KAEzBC,EAA0B,EAAQ,4BAElCC,EAAoB,EAAQ,IAE5BC,GAM4B/jP,EANc,EAAQ,OAMDA,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAJnFgkP,EAAuB,EAAQ,KAMnC,SAASC,EAA2BxnP,EAAQ8B,EAAU8B,EAAY+R,GAAgB/R,GAAoBvG,OAAOyD,eAAed,EAAQ8B,EAAU,CAAEf,WAAY6C,EAAW7C,WAAY8C,aAAcD,EAAWC,aAAcC,SAAUF,EAAWE,SAAU1C,MAAOwC,EAAWslE,YAActlE,EAAWslE,YAAY1rE,KAAKmY,QAAW,IAIhU,SAAS8xO,EAAuBxtO,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIC,eAAe,6DAAgE,OAAOD,EAE/J,SAASkvD,EAA0BnpE,EAAQ8B,EAAU2tC,EAAY7rC,EAAY+R,GAAW,IAAI2wD,EAAO,GAAmnB,OAA/mBjpE,OAAkB,KAAEuG,GAAY+F,SAAQ,SAAUjI,GAAO4kE,EAAK5kE,GAAOkC,EAAWlC,MAAU4kE,EAAKvlE,aAAeulE,EAAKvlE,WAAYulE,EAAKziE,eAAiByiE,EAAKziE,cAAkB,UAAWyiE,GAAQA,EAAK4C,eAAe5C,EAAKxiE,UAAW,GAAQwiE,EAAO72B,EAAWptC,QAAQ+mE,UAAUrhB,QAAO,SAAUue,EAAMp2B,GAAa,OAAOA,EAAUlwC,EAAQ8B,EAAUwkE,IAASA,IAASA,GAAW3wD,QAAgC,IAArB2wD,EAAK4C,cAA0B5C,EAAKllE,MAAQklE,EAAK4C,YAAc5C,EAAK4C,YAAY1rE,KAAKmY,QAAW,EAAQ2wD,EAAK4C,iBAAc9oE,QAAsC,IAArBkmE,EAAK4C,cAA0B7rE,OAA4B,eAAE2C,EAAQ8B,EAAUwkE,GAAOA,EAAO,MAAeA,EAI7tB,IAAIyxC,EAAO,EAEP+hB,EAAU,WACZ,IAAI/6D,EAAQ,GAIZ,SAAS2oL,EAAY5/J,GACnB,IAAI+3B,EAAS9gD,EAAM+oB,GAQnB,OANI+3B,EACFA,EAAOx1F,UAAY,EAEnB00C,EAAM+oB,GAAa+3B,EAAS,IAAIj0F,OATxB,YASuCk8D,EARzC,YAQ0D,KAG3D+3B,EAiBT,MAAO,CACLvsG,IAfF,SAAkB+wD,EAAIyjB,GACpB,IAAI1iF,EAAUi/D,EAAGyjB,UAEZ1iF,EAAQhI,OAEDsqP,EAAY5/J,GAAWljF,KAAKQ,KACtCi/D,EAAGyjB,WAAa,IAAMA,GAFtBzjB,EAAGyjB,UAAYA,GAYjBy1E,GANF,SAAiBl5F,EAAIyjB,GACnBzjB,EAAGyjB,UAAYzjB,EAAGyjB,UAAUv+E,QAAQm+O,EAAY5/J,GAAY,KAAK3+B,SA5BvD,GAyCV09L,GAAqBv9K,GAAO,EAAI09K,EAAmBW,iBAAiB,sBAAuBxiH,GAAQ,EAAI2hH,EAA4B9uO,QAAQovO,EAAwB5kF,gBAAiB6kF,EAAkBO,UAAWb,EAAgBc,cAAeV,EAAeroF,WAAYkoF,EAAmBc,iBAAkBd,EAAmBe,kBAAmBf,EAAmBgB,SAAUhB,EAAmBiB,cAAelB,EAAgBmB,gBAAiBhB,EAAkCiB,iCAAkCZ,EAAqB9kF,qBAAsBn5F,EAAKX,GAAS,EAAIq+K,EAAmBoB,oBAAoBz/K,EAASw8D,GAA2BiH,EAEtoB,SAAUi8G,GArDV,IAAwBjuO,EAAUC,EA6EhC,SAASwsO,EAAkBhqO,EAAIiuH,EAAWw9G,EAAeC,EAAYx9K,EAAalhE,EAAa2/D,EAAUqhE,EAAer7D,EAAiBg5K,EAAiBC,GACxJ,IAAItgP,EA+BJ,GAxBAq/O,EALAr/O,EAAQkgP,EAAkB7qP,KAAKgF,KAAM,CACnCy8B,MAAO,OACP+wC,uBAAuB,EAAIi3K,EAA4Bj3K,uBAAuBjF,MAC1EvoE,KAE4B,QAASqmE,EAAa4+K,EAAuBA,EAAuBt/O,KAEtGq/O,EAA2Br/O,EAAO,QAAS2gE,EAAc2+K,EAAuBA,EAAuBt/O,KAEvGq/O,EAA2Br/O,EAAO,YAAa4gE,EAAc0+K,EAAuBA,EAAuBt/O,KAE3Gq/O,EAA2Br/O,EAAO,eAAgB6gE,EAAcy+K,EAAuBA,EAAuBt/O,KAE9GA,EAAM06J,YAAa,EAAIykF,EAAiBjvL,SAAS0/C,GACjDA,GAAQ,EACR5vG,EAAM0U,GAAKA,EACX1U,EAAM2iI,UAAYA,EAClB3iI,EAAMmgP,cAAgBA,EACtBngP,EAAMogP,WAAaA,EACnBpgP,EAAM4iE,YAAcA,EACpB5iE,EAAM0B,YAAcA,EACpB1B,EAAMqhE,SAAWA,EACjBrhE,EAAMugP,gBAAkB79G,EAAc69G,gBACtCvgP,EAAMqnE,gBAAkBA,EACxBrnE,EAAMqgP,gBAAkBA,EACxBrgP,EAAMsgP,SAAWA,EACjBtgP,EAAMwgP,gBAAiB,EACvBxgP,EAAMorJ,kBAAmB,EAAI0zF,EAA4B9zF,0BAA0BhrJ,EAAM0B,YAAa,0BAElG1B,EAAMorJ,4BAA4BwzF,EAAgB6B,gBACpD,MAAM,IAAIrpP,MAAM,0DAGlB,GAAI4I,EAAMorJ,4BAA4BwzF,EAAgB8B,eACpD,MAAM,IAAItpP,MAAM,yDAGlB,IAAI,EAAI0nP,EAA4BtzF,WAAWxrJ,EAAMorJ,kBACnD,MAAM,IAAIh0J,MAAM,0DAGlB4I,EAAM6nE,uBAAwB,EAAIi3K,EAA4Bj3K,uBAAuBjF,GAErF,IAAI+3F,EAAQ36J,EAAM2gP,oBAGlB,OADA3gP,EAAMrI,KAAOgjK,GAAQ,EAAIwkF,EAAiBjvL,SAASyqG,GAAS36J,EAAM06J,WAC3D16J,EA9HuBkS,EAsDEguO,GAtDZjuO,EAsDPysO,GAtDwCvpP,UAAYD,OAAOoE,OAAO4Y,EAAW/c,WAAY8c,EAAS9c,UAAUkG,YAAc4W,EAAUA,EAASI,UAAYH,EAiIxK,IAAIsoJ,EAASkkF,EAAkBvpP,UA6iB/B,OA3iBAqlK,EAAOnlK,KAAO,SAAcmY,EAASs1H,GACnCzoI,KAAKmT,GAASnT,KAAKitE,MAAOw7D,IAS5B03B,EAAOhhK,KAAO,SAAcwoE,EAAgBC,GAC1C,IAAIzhE,EAASnG,KAEbA,KAAKorE,MAAQ,CACXzD,eAAgBA,EAChBC,gBAAiBA,GAEnB5nE,KAAKumP,eAAiBvmP,KAAKwmP,kCAC3BxmP,KAAKymP,cAAgBzmP,KAAK8lP,cAAcY,mBAAmB1mP,KAAKitE,OAAOl4D,UAAU/U,KAAK2mP,cAAcxnP,KAAKa,OACzGA,KAAK4mP,YAAc,CAAC5mP,KAAKqa,GAAGtF,UAAU,iBAAiB,WACrD5O,EAAO0gP,UAAY,KAEnB1gP,EAAOmnE,QAAQnmE,SAAQ,SAAU88D,GAC/BqzD,EAAQyjC,GAAG92F,EAAE7C,WAAY,iCACzBk2D,EAAQyjC,GAAG92F,EAAE7C,WAAY,wCAEzBphE,KAAKqa,GAAGtF,UAAU,cAAc,WAMlC,GALA5O,EAAOmnE,QAAQnmE,SAAQ,SAAU88D,GAC/BqzD,EAAQyjC,GAAG92F,EAAE7C,WAAY,iCACzBk2D,EAAQyjC,GAAG92F,EAAE7C,WAAY,qCAGtBj7D,EAAO0gP,UAAZ,CACA,IAAIC,EAAmB3gP,EAAO0gP,UAC1BrmP,EAAOsmP,EAAiBtmP,KACxBumP,EAAYD,EAAiBC,UAC7BC,EAAiBF,EAAiBE,eAClCC,EAAUH,EAAiBG,QAC3BC,EAAeJ,EAAiBI,aACpC/gP,EAAO0gP,UAAY,KACnB,IAAIxmF,EAAal6J,EAAOk6J,WACxB,KAAIA,IAAe2mF,GAAkB3mF,IAAe6mF,GAEhDF,IAAmBE,GAAgBH,IAAcE,GAArD,CAEI5mF,IAAe2mF,GACjB7gP,EAAO8mE,MAAM91D,OAAO4vO,EAAW,GAG7B1mF,IAAe6mF,GACjB/gP,EAAO8mE,MAAM91D,OAAO8vO,EAAS,EAAGzmP,GAGlC,IAAI2mP,EAAkBhhP,EAAOihP,kCAEzBD,GAGFhhP,EAAOmiI,UAAUkB,gBAAe,WAC1Bw9G,IAAmBE,GAAgBF,IAAmB3mF,EACxD8mF,EAAgBhhP,EAAO8mE,MAAO,CAC5B85K,UAAWA,EACXE,QAASA,IAGXE,EAAgBhhP,EAAO8mE,eAI3BjtE,KAAKqa,GAAGtF,UAAU,uCAAuC,SAAU8xO,GACjEA,EAAUvpP,OAAS6I,EAAO7I,OAE1B6I,EAAO0gP,WAAaA,EAAUvpP,OAAS6I,EAAO0gP,UAAUvpP,MAAQupP,EAAUE,YAAc5gP,EAAO0gP,UAAUE,WAAaF,EAAUG,iBAAmB7gP,EAAO0gP,UAAUG,gBAAkBH,EAAUI,UAAY9gP,EAAO0gP,UAAUI,SAAWJ,EAAUK,eAAiB/gP,EAAO0gP,UAAUK,eAExR/gP,EAAO0gP,UAAYA,QAErB7mP,KAAKqnP,aAAe,GAAGljP,OAAOnE,KAAKitE,OACnCjtE,KAAKsnP,sBACLtnP,KAAKimP,SAASn1O,IAAI9Q,OAOpBmgK,EAAOz6F,OAAS,WACd1lE,KAAKimP,SAASn2M,OAAO9vC,MACrBA,KAAKorE,MAAQ,KACbprE,KAAKitE,MAAQ,KACbjtE,KAAKumP,eAAiB,KACtBvmP,KAAKgnE,SAAS4hE,WAAU,GAEpB5oI,KAAKymP,gBACPzmP,KAAKymP,cAAc96I,UACnB3rG,KAAKymP,cAAgB,MAGvBzmP,KAAK4mP,YAAYz/O,SAAQ,SAAUrH,GACjC,OAAOA,EAAE6rG,aAGX3rG,KAAK4mP,YAAc,IAGrBzmF,EAAOonF,iBAAmB,SAA0BC,GAClD,GAAIA,EAAc,CAChB,IAAInnF,EAAargK,KAAKqgK,WAClB7/J,EAAOgnP,EAAahnP,KACpBumP,EAAYS,EAAaT,UACzBC,EAAiBQ,EAAaR,eAC9BC,EAAUO,EAAaP,QACvBC,EAAeM,EAAaN,aAC5BO,EAAU,GAAGtjP,OAAOnE,KAAKitE,OAEzBozF,IAAe2mF,GACjBS,EAAQtwO,OAAO4vO,EAAW,GAGxB1mF,IAAe6mF,GACjBO,EAAQtwO,OAAO8vO,EAAS,EAAGzmP,GAG7BR,KAAKqnP,aAAeI,IAKxBtnF,EAAOunF,aAAe,SAAsB17B,EAAQ27B,GAE7C3nP,KAAKorE,QAINprE,KAAKymP,gBACPzmP,KAAKymP,cAAc96I,UACnB3rG,KAAKymP,cAAgB,MAGvBzmP,KAAKymP,cAAgBzmP,KAAK8lP,cAAcY,mBAAmB1mP,KAAKitE,OAAOl4D,UAAU/U,KAAK2mP,cAAcxnP,KAAKa,OAElF,OAAnBA,KAAK6mP,UACP7mP,KAAKqnP,aAAe,GAAGljP,OAAOnE,KAAKitE,OAEnCjtE,KAAK6mP,UAAY,OAKrB1mF,EAAOwmF,cAAgB,WACE,OAAnB3mP,KAAK6mP,UACP7mP,KAAKqnP,aAAe,GAAGljP,OAAOnE,KAAKitE,OAEnCjtE,KAAK6mP,UAAY,MAIrB1mF,EAAOmnF,oBAAsB,WAE3B,GAAKtnP,KAAKorE,MAAV,CAMA,GAFAprE,KAAKgF,SAAWhF,KAAKgmP,gBAAgB4B,YAAY5nP,KAAKqnP,eAEjDrnP,KAAKgF,SACR,MAAM,IAAIjI,MAAM,cAAgBiD,KAAK+wJ,iBAAmB,uBAG1D/wJ,KAAKgF,SAASmoE,gBAAgBntE,KAAMA,KAAKqnP,gBAG3ClnF,EAAOqmF,gCAAkC,WACvC,GAAIxmP,KAAKuoE,YAAYA,YAInB,IAHA,IAAIjkE,EAAetE,KAAKuoE,YAAYA,YAAYjkE,aAC5CujP,EAAiBhtP,OAAO0Z,KAAKjQ,GAExB5J,EAAI,EAAGA,EAAImtP,EAAejtP,OAAQF,IAAK,CAC9C,IAAIotP,EAAcxjP,EAAaujP,EAAentP,IAAIotP,YAElD,GAAIA,EACF,KAAiBptP,EAAIotP,EAAYltP,OAAQF,IACvC,GAAuC,YAAnCotP,EADQ,GACQC,eAA8B,CAChD,IAAIxB,EAAiBuB,EAFX,GAIV,OADAA,EAAY3wO,OAHF,EAGa,GAChBovO,KAWnBpmF,EAAOzxF,UAAY,WACjB,OAAO1uE,KAAKgnE,SAASp3B,SAASh1C,QAGhCulK,EAAO7yF,MAAQ,WACb,OAAOttE,KAAKgnE,SAASp3B,UAGvBuwH,EAAOzvJ,KAAO,SAAc/G,GAC1B,OAAO3J,KAAKgnE,SAASp3B,SAASjmC,IAGhCw2J,EAAOjkI,QAAU,WACf,OAAOl8B,KAAKumP,eAAiBvmP,KAAKumP,eAAex1F,iBAAiBi3F,SAAShoP,KAAKorE,MAAOprE,KAAKumP,eAAeL,iBAAmB,MAGhI/lF,EAAO1xF,QAAU,SAAiB9G,EAAgBC,GAChD,IAAIl3D,EAAO1Q,KAAKuoE,YAAYtpE,SAC5ByR,EAAKvR,KAAKwoE,EAAgBC,GAC1B5nE,KAAKgnE,SAASl2D,IAAIJ,GAElB1Q,KAAKioP,aAAav3O,IAGpByvJ,EAAO/xF,WAAa,SAAoBzkE,EAAOg+D,EAAgBC,GAC7D,IAAIl3D,EAAO1Q,KAAKuoE,YAAYtpE,SAC5ByR,EAAKvR,KAAKwoE,EAAgBC,GAC1B5nE,KAAKgnE,SAAS5hB,OAAOz7C,EAAO+G,GAE5B1Q,KAAKioP,aAAav3O,IAGpByvJ,EAAO9xF,SAAW,SAAkBuoC,EAAasxI,GAC/CloP,KAAKgnE,SAASg7J,KAAKprH,EAAasxI,IAGlC/nF,EAAO5xF,eAAiB,SAAwBsI,EAAesxK,GAC7D,IAAI75O,EAAStO,KAKb,OAHAA,KAAKstE,QAAQnmE,SAAQ,SAAUuJ,GAC7B,OAAOpC,EAAO85O,eAAe13O,MAExB1Q,KAAKgnE,SAAS4hE,UAAU/xD,EAAesxK,IAGhDhoF,EAAOnyF,YAAc,SAAqBJ,EAAeiJ,EAAesxK,GACtE,IAAI15O,EAASzO,KAKb,OAHA4tE,EAAczmE,SAAQ,SAAUuJ,GAC9B,OAAOjC,EAAO25O,eAAe13O,MAExB1Q,KAAKgnE,SAASqhL,WAAWz6K,EAAeiJ,EAAesxK,IAGhEhoF,EAAOxxF,WAAa,SAAoBhlE,EAAOktE,EAAesxK,GAG5D,OAFAnoP,KAAKooP,eAAepoP,KAAK0Q,KAAK/G,IAEvB3J,KAAKgnE,SAASshL,SAAS3+O,EAAOktE,EAAesxK,IAGtDhoF,EAAOnxF,eAAiB,SAAwBt+D,GAC9C1Q,KAAKooP,eAAe13O,GAIpB,IAFA,IAAIkjB,EAAIljB,EAAKm0N,SAASjqO,OAEfg5B,MACL,EAAI6wN,EAA4BrzF,sBAAsB1gJ,EAAKm0N,SAASjxM,IAKtE,IAFAA,EAAIljB,EAAKsoJ,YAAYp+J,OAEdg5B,KAGL,IAFA,IAAIsG,EAAIxpB,EAAKsoJ,YAAYplI,GAAG20N,gBAAgB3tP,OAErCs/B,KAAK,CACV,IAAIid,EAAUzmC,EAAKsoJ,YAAYplI,GAAG20N,gBAAgBruN,GAAGid,SACrD,EAAIstM,EAA4BrzF,sBAAsBj6G,GAI1Dn3C,KAAKioP,aAAav3O,IAGpByvJ,EAAOqoF,qBAAuB,SAA8B93O,EAAM4hN,GAChE,OAAO5hN,GAAQA,EAAK0wD,YAAc1wD,EAAK0wD,WAAWqnL,IAAM/3O,EAAK0wD,WAAWqnL,GAAGn2B,GAAa5hN,EAAK0wD,WAAWqnL,GAAGn2B,GAAWjrN,YAAY4hG,WAAWqpH,QAAa10N,GAG5JuiK,EAAOmmF,kBAAoB,WAEzB,GAAItmP,KAAKuoE,aAAevoE,KAAKuoE,YAAYA,YAAa,CACpD,IAAIrtB,EAAOl7C,KAAKuoE,YAAYA,YAAYya,SAAS5hB,WAEjD,GAAIlmB,GAAQA,EAAK6uL,aAAa,qBAC5B,OAAO7uL,EAAKksB,aAAa,uBAK/B+4F,EAAOuoF,sBAAwB,SAA+Bh4O,GAC5D,IAAI2/B,EAAOrwC,KAAKwoP,qBAAqB93O,EAAM,yBAM3C,OAJI2/B,GAAQA,EAAK0gH,mBACf1gH,EAAOA,EAAK0gH,iBAAiBi3F,SAAShoP,KAAKorE,QAGzB,iBAAT/6B,GACFA,EAAK90B,eAGP,QAGT4kJ,EAAOwoF,oBAAsB,SAA6Bj4O,GACxD,IAAI2/B,EAAOrwC,KAAKwoP,qBAAqB93O,EAAM,oCAM3C,GAJI2/B,GAAQA,EAAK0gH,mBACf1gH,EAAOA,EAAK0gH,iBAAiBi3F,SAAShoP,KAAKorE,QAGzB,iBAAT/6B,EACT,OAAOA,GAIX8vH,EAAOyoF,gBAAkB,SAAyBl4O,GAChD,IAAIwW,EAAOlnB,KAAKwoP,qBAAqB93O,EAAM,2BAE3C,GAAKwW,EAEE,IAAoB,iBAATA,EAAmB,CACnC,IAAI2hO,EAAW7oP,KAAKorE,MAAMxD,gBAAgBD,eAAezgD,GAEzD,GAAwB,mBAAb2hO,EACT,OAAOA,EAAS1pP,KAAKa,KAAKorE,MAAMxD,gBAAgBD,gBAGlD,MAAM,IAAI5qE,MAAM,mEACX,GAAImqB,EAAK6pI,iBAEd,OAAO,SAAUvwJ,EAAM4qE,GACrB,OAAOlkD,EAAK6pI,iBAAiBi3F,SAAS58K,IAGxC,MAAM,IAAIruE,MAAM,mEAfhB,OAAO,MAmBXojK,EAAOinF,gCAAkC,WACvC,IAAIt3O,EAAS9P,KAETknB,EAAOlnB,KAAKwoP,qBAAqBxoP,KAAK0Q,KAAK,GAAI,gCAEnD,GAAKwW,EAEE,IAAoB,iBAATA,EAAmB,CACnC,IAAI2hO,EAAW7oP,KAAKorE,MAAMxD,gBAAgBD,eAAezgD,GAEzD,GAAwB,mBAAb2hO,EACT,OAAOA,EAAS1pP,KAAKa,KAAKorE,MAAMxD,gBAAgBD,gBAGlD,MAAM,IAAI5qE,MAAM,wEACX,GAAImqB,EAAK6pI,iBACd,OAAO,WACL,OAAO7pI,EAAK6pI,iBAAiBi3F,SAASl4O,EAAOs7D,QAG/C,MAAM,IAAIruE,MAAM,wEAdhB,OAAO,MAkBXojK,EAAO2oF,UAAY,SAAmBptM,EAAU/xC,EAAO8zB,GAErD,IAAIz9B,KAAK6mP,WAAa7mP,KAAK6mP,UAAUK,eAAiBlnP,KAAKqgK,YAAcrgK,KAAK6mP,UAAUI,UAAYt9O,EAApG,CAIA,IAAI6T,EAAQxd,KAAK+lP,WAAWvoO,MACxBmiJ,EAAajkH,EAASikH,WACtBE,EAAoBnkH,EAASmkH,kBAC7B34J,EAAIy4J,EAAWz4J,EAAI24J,EAAkB34J,EACrCkjB,EAAIu1I,EAAWv1I,EAAIy1I,EAAkBz1I,GAGvB,SAAdqT,EACYv2B,EAAI24J,EAAkBvrH,MAAQ,EACrB,UAAd7W,EACKv2B,EAAI24J,EAAkBvrH,MAAQ,EACrB,OAAd7W,EACKrT,EAAIy1I,EAAkBpsC,OAAS,EAI7BrpG,EAAIy1I,EAAkBpsC,OAAS,KAMhDzzH,KAAK6mP,WAAarpO,EAAM6iJ,aAAergK,KAAKqgK,YAAc12J,IAAU6T,EAAM7T,MAEzE3J,KAAK+oP,iBAAiBp/O,GAAO,GAG7B3J,KAAK+oP,iBAAiBp/O,GAAO,KAIjCw2J,EAAO8nF,aAAe,SAAsBv3O,GAC1C,IASIK,EATAc,EAAS7R,KAETy8B,EAAQz8B,KAAKy8B,MACbolC,EAAKnxD,EAAK0wD,WACV5gE,EAAOkQ,EAAKi3D,eAAelrC,GAC3B9yB,EAAQ+G,EAAKk3D,gBAAgB2oF,OAE7By4F,EAAkBhpP,KAAK2oP,oBAAoBj4O,GAI3Cs4O,IACFj4O,EAAU8wD,EAAGlC,cAAcqpL,IAG7B,IAAI1rP,EAAO0C,KAAK1C,KACZ+iK,EAAargK,KAAKqgK,WAElB5iI,EAAYz9B,KAAK0oP,sBAAsBh4O,GAEvCu4O,EAAejpP,KAAK4oP,gBAAgBl4O,GAExC1Q,KAAK+lP,WAAW9oF,UAAU,CACxBrB,SAAU,WACR,MAAO,CACLt+J,KAAMA,EACNqM,MAAOA,EACPnJ,KAAMA,EACN6/J,WAAYA,IAGhBtB,WAAYkqF,GAAgB,WAC1B,OAAOA,EAAazoP,EAAMkQ,IAE5BmrJ,WAAYh6F,GACX9wD,GAAW,CACZA,QAASA,IAEX/Q,KAAK+lP,WAAW5oF,UAAU,CACxBtB,WAAYh6F,EACZq6F,WAAY,SAAoB1+I,GAC9B,GAAIA,EAAMlgB,OAASA,EAAM,OAAO,EAChC,IAOI4rP,EAPArC,EAAYh1O,EAAOg1O,UACnBsC,EAAc3rO,EAAM6iJ,aAAeA,EAqBvC,OAnBAxuJ,EAAOy2H,UAAUkB,gBAAe,WAC9BlS,EAAQxmH,IAAI+wD,EAAI,oCAKdglL,EACFqC,EAAarC,EAAUK,eAAiB7mF,GAAcwmF,EAAUI,UAAYt9O,EACnEw/O,IACTD,EAAa1rO,EAAM7T,QAAUA,GAG3Bu/O,GAEFr3O,EAAOy2H,UAAUkB,gBAAe,WAC9BlS,EAAQxmH,IAAI+wD,EAAI,sCAIb,GAETu6F,SAAU,SAAkB1gH,GAC1B7pC,EAAOi3O,UAAUptM,EAAU/xC,EAAO8zB,IAEpC0+H,QAAS,gBAMbgE,EAAOioF,eAAiB,SAAwB13O,GAC9C4mH,EAAQyjC,GAAGrqJ,EAAK0wD,WAAY,iCAC5Bk2D,EAAQyjC,GAAGrqJ,EAAK0wD,WAAY,kCAC5BphE,KAAK+lP,WAAW7oF,aAAaxsJ,EAAK0wD,YAClCphE,KAAK+lP,WAAWxoF,aAAa7sJ,EAAK0wD,aAGpC++F,EAAO4oF,iBAAmB,SAA0Bb,EAAakB,GAC/D,IAAIC,EAAmBrpP,KAAK+lP,WACxB1oF,EAAegsF,EAAiBhsF,aAChC7/I,EAAQ6rO,EAAiB7rO,MAC7B,GAAK6/I,GACD7/I,EAAMlgB,OAAS0C,KAAK1C,KAAxB,CACA,IAAI+iK,EAAargK,KAAKqgK,WAClBipF,EAAe9rO,EAAMlgB,OAASkgB,EAAM6iJ,WACpC8oF,EAAc3rO,EAAM6iJ,aAAeA,EACvC,KAAI6nF,EAAc,GAAlB,CACA,IAAIqB,EACAj6G,EACAk6G,EAEJ,GAAIL,EACF,GAAInpP,KAAK6mP,UACP0C,EAAgBvpP,KAAK6mP,UAAUE,UAC/Bz3G,EAAetvI,KAAK6mP,UAAUI,YACzB,CAEL,IADAsC,EAAgB/rO,EAAM7T,OACF,EAAG,OACvB2lI,EAAei6G,OAGjB,GAAIvpP,KAAK6mP,WAAa7mP,KAAK6mP,UAAUK,eAAiB7mF,EACpDkpF,EAAgBvpP,KAAK6mP,UAAUE,UAC/Bz3G,EAAetvI,KAAK6mP,UAAUI,YACzB,CAEL,IADAsC,EAAgB/rO,EAAM7T,OACF,EAAG,OACvB2lI,EAAe44G,EAOfsB,EAHAl6G,EAAe44G,EAEbkB,EACUlB,EAAc,EAEdA,EAMRkB,EACUlB,EAEAA,EAAc,EAI3BloP,KAAK6mP,WAAa7mP,KAAK6mP,UAAUE,YAAcwC,GAAiBvpP,KAAK6mP,UAAUG,iBAAmBxpO,EAAM6iJ,YAAcrgK,KAAK6mP,UAAUI,UAAYuC,GAAaxpP,KAAK6mP,UAAUK,eAAiB7mF,IACjMrgK,KAAK6mP,UAAY,CACfvpP,KAAMkgB,EAAMlgB,KACZkD,KAAMgd,EAAMhd,KACZumP,UAAWwC,EACXvC,eAAgBxpO,EAAM6iJ,WACtB4mF,QAASuC,EACTtC,aAAc7mF,GAGZipF,GAEFtpP,KAAKqa,GAAGb,QAAQ,sCAAuCxZ,KAAK6mP,eAK3DxC,EAznBT,CA0nBEI,EAA4BgF,kBAA4BpjL,EAAcM,GA5nBmjBP,EA4nB1kBwjE,GAAyD9uI,UAAW,QAAS,CAAC0pP,EAAmBkF,UAAW,CAC3JroP,cAAc,EACd9C,YAAY,EACZ+C,UAAU,EACVolE,YAAa,OACXJ,EAAeK,EAA0BP,EAAQtrE,UAAW,QAAS,CAAC0pP,EAAmBkF,UAAW,CACtGroP,cAAc,EACd9C,YAAY,EACZ+C,UAAU,EACVolE,YAAa,OACXH,EAAeI,EAA0BP,EAAQtrE,UAAW,YAAa,CAACypP,EAAgBoF,YAAa,CACzGtoP,cAAc,EACd9C,YAAY,EACZ+C,UAAU,EACVolE,YAAa,WACX,OAAO,QAEPF,EAAeG,EAA0BP,EAAQtrE,UAAW,eAAgB,CAACypP,EAAgBoF,YAAa,CAC5GtoP,cAAc,EACd9C,YAAY,EACZ+C,UAAU,EACVolE,YAAa,OAjpBkmBP,EAkpB5mBC,KAAaD,IAAWA,IAAWA,GACxC1qE,EAAQ4oP,kBAAoBA,G,iCCnuB5B5oP,EAAQsD,YAAa,EACrBtD,EAAQkqP,sCAAmC,EAE3C,IAAIiE,EAA6B,EAAQ,KAErCjE,EAEJ,WACE,SAASA,IACP3lP,KAAK47G,SAAW,GAChB57G,KAAK6pP,WAAa,GAClB7pP,KAAK8pP,aAAY,SAAU78K,GACzB,OAAOA,aAAiBvsE,QACvB,IAAIkpP,EAA2BG,2BAGpC,IAAI5pF,EAASwlF,EAAiC7qP,UAmB9C,OAjBAqlK,EAAO2pF,YAAc,SAAqB5tN,EAASl3B,GACjDhF,KAAK47G,SAAS1gH,KAAKghC,GACnBl8B,KAAK6pP,WAAW3uP,KAAK8J,IAGvBm7J,EAAOynF,YAAc,SAAqB36K,GAGxC,IAFA,IAAI2uC,EAAW57G,KAAK47G,SAEXlhH,EAAI,EAAGiI,EAAKi5G,EAAShhH,OAAQF,EAAIiI,IAAMjI,EAC9C,GAAIkhH,EAASlhH,GAAGuyE,GACd,OAAOjtE,KAAK6pP,WAAWnvP,GAI3B,OAAO,MAGFirP,EA5BT,GA+BAlqP,EAAQkqP,iCAAmCA,G,iCCtC3ClqP,EAAQsD,YAAa,EACrBtD,EAAQsuP,+BAA4B,EAEpC,IAAItF,EAA8B,EAAQ,gCAGtCsF,EAEJ,WACE,SAASA,KAET,IAAI5pF,EAAS4pF,EAA0BjvP,UAsBvC,OApBAqlK,EAAOpzF,sBAAwB,SAA+BC,EAAiBC,GAC7E,OAAOD,EAAgBE,iBAAiBD,IAG1CkzF,EAAOhzF,gBAAkB,SAAyBC,EAAQH,GACxDG,EAAOmB,gBAAe,GAAOnB,EAAOI,uBACpC,IAAIH,EAAcJ,EAAMryE,OAEpBqyE,GAASI,EAAc,GACzBrtE,KAAKwuE,gCAAgCpB,EAAQH,IAIjDkzF,EAAO3xF,gCAAkC,SAAyCpB,EAAQH,GACxF,IAAK,IAAIvyE,EAAI,EAAGiI,EAAKsqE,EAAMryE,OAAQF,EAAIiI,EAAIjI,IAAK,CAC9C,IAAIktE,GAAkB,EAAI68K,EAA4Bp0F,2BAA2BjjF,EAAQH,EAAMvyE,GAAIA,EAAGiI,GACtGyqE,EAAOqB,QAAQ7G,EAAgBD,eAAgBC,KAI5CmiL,EAzBT,GA4BAtuP,EAAQsuP,0BAA4BA,G,iCCpCpCtuP,EAAQsD,YAAa,EACrBtD,EAAQo6D,QAGR,SAAkB0V,GAChB,MAHW,kCAGKA,I,iCCLlB9vE,EAAQsD,YAAa,EACrBtD,EAAQuuP,0BAAuB,EAE/B,IAEU7jL,EAGN6jL,GAA+B,EALV,EAAQ,GAKyB7E,iBAAiB,wBAA0Br+K,CAAKX,EAAS,eAAuCA,EAC1J1qE,EAAQuuP,qBAAuBA,G,iCCT/BvuP,EAAQsD,YAAa,EACrBtD,EAAQwuP,sBAAmB,EAE3B,IAEU9jL,EAGN8jL,GAA2B,EALN,EAAQ,GAKqB9E,iBAAiB,oBAAsBr+K,CAAKX,EAAS,eAAmCA,EAC9I1qE,EAAQwuP,iBAAmBA,G,iCCT3BxuP,EAAQsD,YAAa,EACrBtD,EAAQyuP,yBAAsB,EAE9B,IAUiB/jL,EAVbm+K,EAA8B,EAAQ,IAEtCE,EAAqB,EAAQ,GAE7BG,EAAiB,EAAQ,KAEzBC,EAA0B,EAAQ,4BAElCG,EAAuB,EAAQ,KAK/BmF,GAA8B,EAAI1F,EAAmBW,iBAAiB,wBAAkMr+K,CAAKX,GAArK,EAAIm+K,EAA4B9uO,QAAQgyD,QAASo9K,EAAwB5kF,gBAAiB2kF,EAAeroF,WAAYyoF,EAAqB9kF,oBAAoCt9B,CAAMx8D,EAEhS,WACE,SAAS+jL,EAAoBnjL,EAAS1sD,EAAI0rO,EAAYE,GACpDjmP,KAAK6mP,UAAY,KACjB7mP,KAAK+mE,QAAUA,EACf/mE,KAAKqa,GAAKA,EACVra,KAAK+lP,WAAaA,EAClB/lP,KAAKimP,SAAWA,EAChBjmP,KAAKmqP,eAAiBnqP,KAAKmqP,eAAehrP,KAAKa,MAGjD,IAAImgK,EAAS+pF,EAAoBpvP,UAyFjC,OAvFAqlK,EAAOhhK,KAAO,WACZ,IAAIwG,EAAQ3F,KAERpB,EAAQoB,KAAKpB,MAEjB,IAAK8B,MAAMC,QAAQ/B,GACjB,MAAM,IAAI7B,MAAM,kGAGlBiD,KAAK4mP,YAAc,CAAC5mP,KAAKqa,GAAGtF,UAAU,iBAAiB,WACrD,IAAKpP,EAAM06J,WAAY,CACrB,IAAI+pF,EAAezkP,EAAMsgP,SAASznP,IAAII,GAElCwrP,GACFzkP,EAAM26J,MAAQ8pF,EAAa9pF,MAC3B36J,EAAM06J,WAAa+pF,EAAa/pF,aAEhC16J,EAAM26J,MAAQ,KACd36J,EAAM06J,WAAa,MAIvB16J,EAAMwkP,oBACJnqP,KAAKqa,GAAGtF,UAAU,aAAc/U,KAAKmqP,gBAAiBnqP,KAAKqa,GAAGtF,UAAU,uCAAuC,SAAU8xO,GACvHA,EAAUvpP,OAASqI,EAAM26J,QAE7B36J,EAAMkhP,UAAYA,QAItB1mF,EAAOz6F,OAAS,WACd1lE,KAAK4mP,YAAYz/O,SAAQ,SAAUrH,GACjC,OAAOA,EAAE6rG,aAGX3rG,KAAK4mP,YAAc,IAGrBzmF,EAAOgqF,eAAiB,WACtBnqP,KAAK6mP,UAAY,MAGnB1mF,EAAO72G,SAAW,WAChBtpD,KAAK+lP,WAAW5oF,UAAUn9J,KAAM,CAC9B+mE,QAAS/mE,KAAK+mE,WAIlBo5F,EAAOhX,SAAW,WAChBnpJ,KAAK+lP,WAAWxoF,aAAav9J,OAG/BmgK,EAAOjE,WAAa,SAAoB1+I,GACtC,OAAOA,EAAMlgB,OAAS0C,KAAKsgK,OAG7BH,EAAO/D,SAAW,WAChB,GAAKp8J,KAAKqgK,WAAV,CACA,IAAIgqF,EAAYrqP,KAAKo9J,IACjBgC,EAAsBirF,EAAUjrF,oBAChC5hJ,EAAQ6sO,EAAU7sO,MACtB,GAAK4hJ,EAAL,CACA,IAAI9hK,EAAOkgB,EAAMlgB,KACbqM,EAAQ6T,EAAM7T,MACdnJ,EAAOgd,EAAMhd,KACb6/J,EAAa7iJ,EAAM6iJ,WACnBzlK,EAASoF,KAAKpB,MAAQoB,KAAKpB,MAAMhE,OAAS,EAE1C0vP,EADc9sO,EAAM6iJ,aAAergK,KAAKqgK,WACLzlK,EAAS,EAAIA,EAE/CoF,KAAK6mP,WAAa7mP,KAAK6mP,UAAUK,eAAiBlnP,KAAKqgK,YAC1DrgK,KAAKqa,GAAGb,QAAQ,sCAAuC,CACrDlc,KAAMA,EACNkD,KAAMA,EACNumP,UAAWp9O,EACXq9O,eAAgB3mF,EAChB4mF,QAASqD,EAETpD,aAAclnP,KAAKqgK,gBAKzBF,EAAOhE,QAAU,aAIV+tF,EAnGT,KAoGgB/jL,IAAWA,EAC3B1qE,EAAQyuP,oBAAsBA,G,iCCvH9BzuP,EAAQsD,YAAa,EACrBtD,EAAQ8uP,2BAAwB,EAEhC,IAEUpkL,EAGNokL,GAAgC,EALX,EAAQ,GAK0BpF,iBAAiB,0BAA4Br+K,CAAKX,EAAS,eAAwCA,EAC9J1qE,EAAQ8uP,sBAAwBA,G,gCCVhC,IAAYC,EAAZ,2CAAYA,GACV,yBACA,uBACA,2BAHF,CAAYA,MAAS,M,iCCCrB/uP,EAAQsD,YAAa,EACrBtD,EAAQgvP,mCAAgC,EAExC,IAEUtkL,EAGNskL,GAAwC,EALnB,EAAQ,GAKkCtF,iBAAiB,mCAAqCr+K,CAAKX,EAAS,eAAgDA,EACvL1qE,EAAQgvP,8BAAgCA,G,iCCTxChvP,EAAQsD,YAAa,EACrBtD,EAAQivP,gCAA6B,EAErC,IAEUvkL,EAGNukL,GAAqC,EALhB,EAAQ,GAK+BvF,iBAAiB,+BAAiCr+K,CAAKX,EAAS,eAA6CA,EAC7K1qE,EAAQivP,2BAA6BA,G,qBCXrC,yBACE,aAEA,IAAIC,EAAiB,CACnBzpF,SAAU,SAAS1gK,GACjB,MAAO,oBAEToqP,UAAW,SAASpqP,GAClB,OAAOA,EAAOA,EAAKwe,WAAaxe,GAElCqqP,SAAU,SAASrqP,GACjB,OAAOR,KAAK4qP,UAAUpqP,IAExBsqP,UAAW,SAAStqP,GAClB,OAAO,MAETuqP,WAAW,EACXC,WAAW,EACXC,aAASrtP,EACTs3F,cAAUt3F,EACVstP,YAAa,CAAC,GAAI,IAClBC,UAAW,IACXC,eAAgB,KAChBC,0BAA0B,EAC1BC,YAAa,SAAS9qP,EAAM+qP,GAC1BA,EAAK/4M,OAAOwjF,UAEdw1H,WAAW,EACXC,iBAAiB,GAMnB,SAASC,EAAU3kL,EAASvjE,GAC1BxD,KAAK2rP,QAAS,EACd3rP,KAAK4rP,WAAa,GAElB5rP,KAAK6rP,SAAW/8M,EAAEi4B,GAClB/mE,KAAK6rP,SAASr5M,OAEdxyC,KAAK8rP,SAAgC,WAApB/kL,EAAQwzF,QACzBv6J,KAAK+rP,SAAY/rP,KAAK8rP,UAAY/kL,EAAQgjK,aAAa,YACvD/pO,KAAKgsP,YAAcxoP,GAAWA,EAAQonP,UACtC5qP,KAAKisP,gBAAkBllL,EAAQgjK,aAAa,eAAiB/pO,KAAK6rP,SAASx7M,KAAK,eAAiB,GACjGrwC,KAAKksP,UAAY/oO,KAAKqD,IAAI,EAAGxmB,KAAKisP,gBAAgBrxP,QAElDoF,KAAK+uC,WAAaD,EAAE,2CACpB9uC,KAAKkhN,OAASpyK,EAAE,mCAAqC9uC,KAAKisP,gBAAkB,OAAOz7M,SAASxwC,KAAK+uC,YAEjG/uC,KAAK6rP,SAASpkM,OAAOznD,KAAK+uC,YAE1B/uC,KAAKk5I,MAAM11I,GACXxD,KAAK2rP,QAAS,EAohBhB,SAASQ,EAAuB3oP,EAAStE,GACvC,GAA4B,mBAAjBsE,EAAQtE,GAAqB,CACtC,IAAIqrF,EAAe/mF,EAAQtE,GAC3BsE,EAAQtE,GAAO,SAASsB,GAAQ,OAAOA,EAAK+pF,KAGhD,SAAS6hK,EAAmB5oP,EAAStE,GACnC,GAA4B,mBAAjBsE,EAAQtE,GAAqB,CACtC,IAAIN,EAAQ4E,EAAQtE,GACpBsE,EAAQtE,GAAO,WAAa,OAAON,IA1hBvC8sP,EAAU5wP,UAAY,CACpBkG,YAAa0qP,EAMb56O,IAAK,SAAStQ,EAAM6rP,EAAa7oP,GAC/B,IAAIiU,EAAOzX,KAEX,KAAIyX,EAAKjU,QAAQynP,SAAWxzO,EAAKm0O,WAAWhxP,QAAU6c,EAAKjU,QAAQynP,YAItD,IAATzqP,GAAmBA,GAAvB,CASA,GALoB,iBAATA,GAAqBiX,EAAKjU,QAAQgoP,YAC3ChrP,EAAOsuC,EAAE6X,KAAKnmD,IAII,iBAATA,IAAsBiX,EAAKu0O,YACpC,KAAK,qDAGP,IAAIxrP,EAAKwe,WAAWuI,MAAM,SAA1B,CAOA,GAHI9P,EAAKq0O,WAAar0O,EAAKs0O,UAAYt0O,EAAKm0O,WAAWhxP,OAAS,GAC9D6c,EAAKq4B,OAAOr4B,EAAKm0O,WAAW,IAEV,iBAATprP,GAAkD,UAA7BR,KAAK6rP,SAAS,GAAGtxF,QAAqB,CACpE,IAAI4wF,EAAa1zO,EAAKjU,QAAsB,eAAIiU,EAAKjU,QAAQ4nP,eAAiB3zO,EAAKjU,QAAQ2nP,UACvFl+K,EAAQzsE,EAAK8qB,MAAM6/N,GACvB,GAAIl+K,EAAMryE,OAAS,EAAG,CACpB,IAAK,IAAIF,EAAI,EAAGA,EAAIuyE,EAAMryE,OAAQF,IAChCsF,KAAK8Q,IAAIm8D,EAAMvyE,IAAI,GAKrB,YAFK2xP,GACH50O,EAAK60O,YAKX,IAAI1B,EAAYnzO,EAAKjU,QAAQonP,UAAUpqP,GACnCqqP,EAAWpzO,EAAKjU,QAAQqnP,SAASrqP,GACjC0gK,EAAWzpJ,EAAKjU,QAAQ09J,SAAS1gK,GACjCsqP,EAAYrzO,EAAKjU,QAAQsnP,UAAUtqP,GAGnC+rP,EAAWz9M,EAAEuqC,KAAK5hE,EAAKm0O,YAAY,SAASprP,GAAQ,OAAOiX,EAAKjU,QAAQonP,UAAUpqP,KAAUoqP,KAAe,GAC/G,IAAI2B,GAAa90O,EAAKjU,QAAQioP,iBAU9B,KAAIh0O,EAAKw1D,QAAQjuD,WAAWpkB,OAAS4F,EAAK5F,OAAS,EAAI6c,EAAKjU,QAAQgpP,gBAApE,CAIA,IAAIC,EAAqB39M,EAAE+iD,MAAM,gBAAiB,CAAErxF,KAAMA,EAAMuJ,QAAQ,EAAOvG,QAASA,IAExF,GADAiU,EAAKo0O,SAASnjP,QAAQ+jP,IAClBA,EAAmB1iP,OAAvB,CAIA0N,EAAKm0O,WAAW1wP,KAAKsF,GAIrB,IAAI+qP,EAAOz8M,EAAE,oBAAsB49M,EAAWxrF,IAA2B,OAAd4pF,EAAsB,YAAcA,EAAa,IAAM,KAAO4B,EAAW7B,GAAY,2CAChJU,EAAKlxP,KAAK,OAAQmG,GAClBiX,EAAKk1O,mBAAmBllM,OAAO8jM,GAC/BA,EAAK7jM,MAAM,KAGX,IAAIklM,EACF99M,EAAE,iBAAmBkO,mBAAmB4tM,GAAa,KAAMnzO,EAAKo0O,UAAUjxP,QAC1Ek0C,EAAE,iBAAmB49M,EAAW9B,GAAa,KAAMnzO,EAAKo0O,UAAUjxP,OAIpE,GAAI6c,EAAKq0O,WAAac,EAAc,CAClC,IAAIC,EAAU/9M,EAAE,oBAAsB49M,EAAW7B,GAAY,aAC7DgC,EAAQxyP,KAAK,OAAQmG,GACrBqsP,EAAQx8M,KAAK,QAASu6M,GACtBnzO,EAAKo0O,SAAS/gN,OAAO+hN,GAGlBR,GACH50O,EAAK60O,UAGH70O,EAAKjU,QAAQynP,UAAYxzO,EAAKm0O,WAAWhxP,QAAU6c,EAAKw1D,QAAQjuD,WAAWpkB,SAAW6c,EAAKjU,QAAQgpP,gBACrG/0O,EAAKs3B,WAAWuB,SAAS,2BAGvBxB,EAAE,iCAAkCr3B,EAAKs3B,YAAYn0C,QACvD6c,EAAKypM,OAAO8J,UAAU,MAAO,IAG3BhrN,KAAK2rP,OACPl0O,EAAKo0O,SAASnjP,QAAQomC,EAAE+iD,MAAM,kBAAmB,CAAErxF,KAAMA,EAAMgD,QAASA,KAExEiU,EAAKo0O,SAASnjP,QAAQomC,EAAE+iD,MAAM,YAAa,CAAErxF,KAAMA,EAAMgD,QAASA,YAxDlE,GAAIiU,EAAKjU,QAAQ8nP,YAAa,CAC5B,IAAIwB,EAAeh+M,EAAE,OAAQr3B,EAAKs3B,YAAYlqC,QAAO,WAAa,OAAOiqC,EAAE9uC,MAAM3F,KAAK,UAAYkyP,KAClG90O,EAAKjU,QAAQ8nP,YAAY9qP,EAAMssP,OA8DrCh9M,OAAQ,SAAStvC,EAAM6rP,EAAa7oP,GAClC,IAAIiU,EAAOzX,KAWX,GATIyX,EAAKu0O,cAMPxrP,GAJEA,EADkB,iBAATA,EACFsuC,EAAEuqC,KAAK5hE,EAAKm0O,YAAY,SAASvxN,GAAS,OAAO5iB,EAAKjU,QAAQonP,UAAUvwN,IAAW5iB,EAAKjU,QAAQonP,UAAUpqP,MAE1GsuC,EAAEuqC,KAAK5hE,EAAKm0O,YAAY,SAASvxN,GAAS,OAAO5iB,EAAKjU,QAAQonP,UAAUvwN,IAAW75B,MAEhFA,EAAK5F,OAAO,IAGtB4F,EAAM,CACR,IAAIusP,EAAwBj+M,EAAE+iD,MAAM,mBAAoB,CAAErxF,KAAMA,EAAMuJ,QAAQ,EAAOvG,QAASA,IAE9F,GADAiU,EAAKo0O,SAASnjP,QAAQqkP,GAClBA,EAAsBhjP,OACxB,OAEF+kC,EAAE,OAAQr3B,EAAKs3B,YAAYlqC,QAAO,WAAa,OAAOiqC,EAAE9uC,MAAM3F,KAAK,UAAYmG,KAASsvC,SACxFhB,EAAE,SAAUr3B,EAAKo0O,UAAUhnP,QAAO,WAAa,OAAOiqC,EAAE9uC,MAAM3F,KAAK,UAAYmG,KAASsvC,UAC/C,IAAtChB,EAAEojE,QAAQ1xG,EAAMiX,EAAKm0O,aACtBn0O,EAAKm0O,WAAWz0O,OAAO23B,EAAEojE,QAAQ1xG,EAAMiX,EAAKm0O,YAAa,GAGxDS,GACH50O,EAAK60O,UAGH70O,EAAKjU,QAAQynP,QAAUxzO,EAAKm0O,WAAWhxP,QACzC6c,EAAKs3B,WAAWy1C,YAAY,2BAE9B/sE,EAAKo0O,SAASnjP,QAAQomC,EAAE+iD,MAAM,cAAgB,CAAErxF,KAAMA,EAAMgD,QAASA,MAMvEolI,UAAW,WAMT,IAHA95F,EAAE,OAFS9uC,KAEI+uC,YAAYe,SAC3BhB,EAAE,SAHS9uC,KAGM6rP,UAAU/7M,SAHhB9vC,KAKA4rP,WAAWhxP,OAAS,GALpBoF,KAMJ4rP,WAAWj3L,MANP30D,KAQNssP,WAOPU,QAAS,WACP,IAAIv1O,EAAOzX,KACX8uC,EAAE,OAAQr3B,EAAKs3B,YAAYmqC,MAAK,WAC9B,IAAIqyK,EAAOz8M,EAAE9uC,MACTQ,EAAO+qP,EAAKlxP,KAAK,QACjBuwP,EAAYnzO,EAAKjU,QAAQonP,UAAUpqP,GACnCqqP,EAAWpzO,EAAKjU,QAAQqnP,SAASrqP,GACjC0gK,EAAWzpJ,EAAKjU,QAAQ09J,SAAS1gK,IAGnC+qP,EAAKl7M,KAAK,QAAS,MACnBk7M,EAAKj7M,SAAS,OAASo8M,EAAWxrF,IAClCqqF,EAAKtsI,WAAWp6G,QAAO,WACrB,OAAwB,GAAjB7E,KAAK84E,YACX,GAAGsgC,UAAYszI,EAAW7B,GAEzBpzO,EAAKq0O,WACMh9M,EAAE,SAAUr3B,EAAKo0O,UAAUhnP,QAAO,WAAa,OAAOiqC,EAAE9uC,MAAM3F,KAAK,UAAYmG,KACrF6vC,KAAK,QAASu6M,OAQ7B39K,MAAO,WACL,OAAOjtE,KAAK4rP,YAOdU,QAAS,WACP,IAAI70O,EAAOzX,KACPS,EAAMquC,EAAEnqC,IAAI8S,EAAKw1D,SAAS,SAASzsE,GACjC,OAAOiX,EAAKjU,QAAQonP,UAAUpqP,GAAMwe,cAG1CvH,EAAKo0O,SAASprP,IAAIA,GAAK,GAAMiI,QAAQ,WAMvCwwI,MAAO,SAAS11I,GACd,IAAIiU,EAAOzX,KAYX,GAVAyX,EAAKjU,QAAUsrC,EAAErvB,OAAO,GAAIkrO,EAAgBnnP,GAExCiU,EAAKu0O,cACPv0O,EAAKjU,QAAQunP,WAAY,GAE3BoB,EAAuB10O,EAAKjU,QAAS,aACrC2oP,EAAuB10O,EAAKjU,QAAS,YACrC4oP,EAAmB30O,EAAKjU,QAAS,YAG7BiU,EAAKjU,QAAQwnN,UAAW,CAC1B,IAAIA,EAAYvzM,EAAKjU,QAAQwnN,WAAa,GAE1CohC,EAAmBphC,EAAW,UAE9BvzM,EAAKypM,OAAO8J,UAAUl8K,EAAErvB,OAAO,GAAIurM,EAAW,CAC5C3mL,OAAQ,SAAUu6C,EAAO33E,GACvB,SAASgmP,EAAahgL,GAGpB,IAFA,IAAIigL,EAAQ,GAEHxyP,EAAI,EAAGA,EAAIuyE,EAAMryE,OAAQF,IAAK,CACrC,IAAIwuD,EAAOzxC,EAAKjU,QAAQqnP,SAAS59K,EAAMvyE,IACvCiK,EAAIukD,GAAQ+jB,EAAMvyE,GAClBwyP,EAAMhyP,KAAKguD,GAEbjiD,EAAQimP,GAGVltP,KAAK2E,IAAM,GACX,IAAIA,EAAM3E,KAAK2E,IACXtK,EAAO2wN,EAAU3mL,OAAOu6C,GAExB9vC,EAAEjqB,WAAWxqB,EAAKiG,SAEpBjG,EAAKiG,QAAQ2sP,GACJn+M,EAAEjqB,WAAWxqB,EAAK8I,MAE3B9I,EAAK8I,KAAK8pP,GAGVn+M,EAAEmzE,KAAK5nH,GACL8I,KAAK8pP,IAGXE,QAAS,SAAUjkM,GAEjB,OADAzxC,EAAK3G,IAAI9Q,KAAK2E,IAAIukD,IACXlpD,KAAK2E,IAAIukD,IAElBhtB,QAAS,SAAUgtB,GACjB,OAAyE,IAAjEA,EAAK3tC,cAAclK,QAAQrR,KAAK4+E,MAAMj4B,OAAOprC,gBAEvD+kE,OAAQ,SAAU4sK,GAChB,OAAOA,EAAMz7O,QAEf27O,YAAa,SAAUlkM,GACrB,IAAIlgC,EAAQ,IAAII,OAAQ,IAAMppB,KAAK4+E,MAAQ,IAAK,MAChD,OAAO11B,EAAKniD,QAASiiB,EAAO,2BAMlC,GAAIvR,EAAKjU,QAAQ6pP,YAAa,CAC1B,IAAIC,EAAkB,KAClBC,EAAoB,GAGpBF,EAAc51O,EAAKjU,QAAQ6pP,YAC3Bv+M,EAAEnuC,QAAQ0sP,IACZC,EAAkBD,EAAY,GAC9BE,EAAoBF,EAAY,IAEhCE,EAAoBF,EAGtB51O,EAAKypM,OAAO8J,UAAUsiC,EAAiBC,GAAmBlgN,GAAG,qBAAsByB,EAAEmqC,OAAM,SAAUl4E,EAAKgqD,GACpGwiM,EAAkBC,SACpB/1O,EAAK3G,IAAIi6C,EAAMwiM,EAAkBC,WAEjC/1O,EAAK3G,IAAIi6C,GACXtzC,EAAKypM,OAAO8J,UAAU,MAAO,MAC5BvzM,IAGPA,EAAKs3B,WAAW1B,GAAG,QAASyB,EAAEmqC,OAAM,SAASj8E,GACrCya,EAAKo0O,SAASx7M,KAAK,aACvB54B,EAAKypM,OAAOzqF,WAAW,YAEzBh/G,EAAKypM,OAAOt3F,UACXnyG,IAEGA,EAAKjU,QAAQwnP,WAAavzO,EAAKjU,QAAQunP,WACzCtzO,EAAKypM,OAAO7zK,GAAG,WAAYyB,EAAEmqC,OAAM,SAASj8E,GAG4B,IAAhE8xC,EAAE,iCAAkCr3B,EAAKs3B,YAAYn0C,SACvD6c,EAAK3G,IAAI2G,EAAKypM,OAAOzgN,OACrBgX,EAAKypM,OAAOzgN,IAAI,OAEnBgX,IAIPA,EAAKs3B,WAAW1B,GAAG,UAAW,QAASyB,EAAEmqC,OAAM,SAASj8E,GACtD,IAAIkkN,EAASpyK,EAAE9xC,EAAMQ,QACjBiwP,EAAgBh2O,EAAKk1O,mBAEzB,GAAIl1O,EAAKo0O,SAASx7M,KAAK,YACrB54B,EAAKypM,OAAO7wK,KAAK,WAAY,gBAD/B,CAKA,OAAQrzC,EAAM4uH,OAEZ,KAAK,EACH,GAAsC,IAAlC8hI,EAAmBxsC,EAAO,IAAW,CACvC,IAAIx0M,EAAO+gP,EAAc/gP,OACrBA,EAAK9R,QACP6c,EAAKq4B,OAAOpjC,EAAKrS,KAAK,SAG1B,MAGF,KAAK,GACH,GAAsC,IAAlCqzP,EAAmBxsC,EAAO,IAAW,CACvC,IAAIj+M,EAAOwqP,EAAcxqP,OACrBA,EAAKrI,QACP6c,EAAKq4B,OAAO7sC,EAAK5I,KAAK,SAG1B,MAGF,KAAK,GAEH,IAAIszP,EAAWF,EAAc/gP,OACD,IAAxBw0M,EAAOzgN,MAAM7F,QAAgB+yP,EAAS,KACxCA,EAASlmM,OAAOgmM,GAChBvsC,EAAOt3F,SAET,MAEF,KAAK,GAEH,IAAIgkI,EAAWH,EAAcxqP,OACD,IAAxBi+M,EAAOzgN,MAAM7F,QAAgBgzP,EAAS,KACxCA,EAASlmM,MAAM+lM,GACfvsC,EAAOt3F,SAQb,IAAIikI,EAAa3sC,EAAOzgN,MAAM7F,OACduoB,KAAKC,KAAKyqO,EAAa,GAEvC3sC,EAAO7wK,KAAK,OAAQltB,KAAKqD,IAAIxmB,KAAKksP,UAAWhrC,EAAOzgN,MAAM7F,YACzD6c,IAEHA,EAAKs3B,WAAW1B,GAAG,WAAY,QAASyB,EAAEmqC,OAAM,SAASj8E,GACtD,IAAIkkN,EAASpyK,EAAE9xC,EAAMQ,QAErB,GAAIia,EAAKo0O,SAASx7M,KAAK,YACpB54B,EAAKypM,OAAO7wK,KAAK,WAAY,gBADhC,CAKA,IAwLuBy9M,EAAeC,EACrCh3O,EAzLGmyC,EAAOg4J,EAAOzgN,MAClButP,EAAmBv2O,EAAKjU,QAAQ0xF,UAAYhsC,EAAKtuD,QAAU6c,EAAKjU,QAAQ0xF,SACpEz9E,EAAKjU,QAAQunP,YAsLM+C,EAtL6B9wP,EAsLd+wP,EAtLqBt2O,EAAKjU,QAAQ0nP,YAuLvEn0O,GAAQ,EACZ+3B,EAAEoqC,KAAK60K,GAAY,SAAUpkP,EAAOskP,GAChC,GAAgC,iBAArB,GAAiCH,EAAcliI,QAAUqiI,EAEhE,OADAl3O,GAAQ,GACD,EAGX,GAAI+2O,EAAcliI,QAAUqiI,EAAeriI,MAAO,CAC9C,IAAIsiI,GAAOD,EAAelzP,eAAe,WAAa+yP,EAAczjI,SAAW4jI,EAAe5jI,OAC1FhvH,GAAS4yP,EAAelzP,eAAe,aAAe+yP,EAAcjjI,WAAaojI,EAAepjI,SAChGsjI,GAAQF,EAAelzP,eAAe,YAAc+yP,EAActjI,UAAYyjI,EAAezjI,QACjG,GAAI0jI,GAAO7yP,GAAS8yP,EAEhB,OADAp3O,GAAQ,GACD,MAKZA,GAzMoFi3O,KAEjE,IAAhB9kM,EAAKtuD,SACN6c,EAAK3G,IAAIk9O,EAAmB9kM,EAAK5jD,OAAO,EAAGmS,EAAKjU,QAAQ0xF,UAAYhsC,GACpEg4J,EAAOzgN,IAAI,MAIgC,IAA1CgX,EAAKjU,QAAQ6nP,0BACbruP,EAAMmsH,kBAKb,IAAI0kI,EAAa3sC,EAAOzgN,MAAM7F,OACfuoB,KAAKC,KAAKyqO,EAAa,GAEtC3sC,EAAO7wK,KAAK,OAAQltB,KAAKqD,IAAIxmB,KAAKksP,UAAWhrC,EAAOzgN,MAAM7F,YAC1D6c,IAGHA,EAAKs3B,WAAW1B,GAAG,QAAS,qBAAsByB,EAAEmqC,OAAM,SAASj8E,GAC7Dya,EAAKo0O,SAASx7M,KAAK,aAGvB54B,EAAKq4B,OAAOhB,EAAE9xC,EAAMQ,QAAQ4hH,QAAQ,QAAQ/kH,KAAK,WAChDod,IAGCA,EAAKjU,QAAQonP,YAAcD,EAAeC,YACX,UAA7BnzO,EAAKo0O,SAAS,GAAGtxF,QACjB9iJ,EAAK3G,IAAI2G,EAAKo0O,SAASprP,OAEzBquC,EAAE,SAAUr3B,EAAKo0O,UAAU3yK,MAAK,WAC9BzhE,EAAK3G,IAAIg+B,EAAE9uC,MAAMqwC,KAAK,UAAU,QASxCylG,QAAS,WACI91I,KAGN+uC,WAAW6H,IAAI,WAAY,SAHrB52C,KAIN+uC,WAAW6H,IAAI,QAAS,iBAJlB52C,KAMN+uC,WAAWe,SANL9vC,KAON6rP,SAAS5nI,WAAW,aAPdjkH,KAQN6rP,SAASrmI,QAMhBoE,MAAO,WACL5pH,KAAKkhN,OAAOt3F,SAMd7qG,MAAO,WACL,OAAO/e,KAAKkhN,QAOdyrC,iBAAkB,WAGhB,IAFA,IAAIyB,EAAMpuP,KAAKkhN,OAAO,GAClB7yM,EAAYrO,KAAK+uC,WAAW,GAC1Bq/M,GAAOA,EAAI9sL,aAAejzD,GAC9B+/O,EAAMA,EAAI9sL,WAEZ,OAAOxyB,EAAEs/M,KAObt/M,EAAExvB,GAAG+uO,UAAY,SAASC,EAAMC,EAAMC,GACpC,IAAIp8O,EAAU,GAgCd,OA9BApS,KAAKk5E,MAAK,WACR,IAAIm1K,EAAYv/M,EAAE9uC,MAAM3F,KAAK,aAE7B,GAAKg0P,EAWE,GAAKC,GAASC,GAId,QAAuB3wP,IAApBywP,EAAUC,GAAqB,CAEnC,GAA8B,IAA3BD,EAAUC,GAAM1zP,aAAyBgD,IAAT4wP,EAChC,IAAIC,EAASJ,EAAUC,GAAMC,EAAM,KAAMC,QAErCC,EAASJ,EAAUC,GAAMC,QAEnB3wP,IAAX6wP,GACAr8O,EAAQlX,KAAKuzP,SATjBr8O,EAAQlX,KAAKmzP,QAbbA,EAAY,IAAI3C,EAAU1rP,KAAMsuP,GAChCx/M,EAAE9uC,MAAM3F,KAAK,YAAag0P,GAC1Bj8O,EAAQlX,KAAKmzP,GAEQ,WAAjBruP,KAAKu6J,SACLzrH,EAAE,SAAUA,EAAE9uC,OAAOqwC,KAAK,WAAY,YAI1CvB,EAAE9uC,MAAMS,IAAIquC,EAAE9uC,MAAMS,UAiBN,iBAAR6tP,EAEHl8O,EAAQxX,OAAS,EAAIwX,EAAUA,EAAQ,GAEvCA,GAIX08B,EAAExvB,GAAG+uO,UAAU9sP,YAAcmqP,EAsB7B,IAAIgD,EAAsB5/M,EAAE,WAC5B,SAAS49M,EAAW9tP,GAClB,OAAIA,EACK8vP,EAAoBxlM,KAAKtqD,GAAO4pD,OAEhC,GAQX,SAASklM,EAAmBiB,GAC1B,IAAIC,EAAY,EAChB,GAAIvyP,SAASuqH,UAAW,CACtB+nI,EAAO/kI,QACP,IAAIilI,EAAOxyP,SAASuqH,UAAUy9F,cAC9BwqC,EAAKvqC,UAAW,aAAcqqC,EAAO/vP,MAAMhE,QAC3Cg0P,EAAYC,EAAK3lM,KAAKtuD,YACb+zP,EAAOvqC,gBAA2C,KAAzBuqC,EAAOvqC,kBACzCwqC,EAAYD,EAAOvqC,gBAErB,OAAO,EAoCTt1K,GAAE,WACAA,EAAE,qEAAqEu/M,eAppB3E,CAspBG,K,mDCppBHxzP,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQqzP,kBAAelxP,EAEvB,IAAImxP,EAAuB,EAAQ,KAIhBtzP,EAAQqzP,aAAe,SAASA,KAFnD,SAAyBjnM,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAG9Go1C,CAAgBltD,KAAM8uP,GAEtB9uP,KAAKoxH,MAAQ29H,EAAqBhuF,mBAClC/gK,KAAKwD,QAAUurP,EAAqB9tF,sB,mBCftC,YACAvlK,EAAOD,QAAUuzP,I,mCCDjBtzP,EAAOD,QAAU,IAA0B,wC,kBCA3CC,EAAOD,QAAU,0rI,oBCAjBC,EAAOD,QAAU,IAA0B,wC,oBCA3CC,EAAOD,QAAU,IAA0B,wC,oBCA3CC,EAAOD,QAAU,IAA0B,wC,01DCY3C,aAGE,WACS2hB,GAAA,KAAAA,SAEPpd,KAAKC,OAAS,aAAWC,UAAU,e,MAwGvC,OArGe,YAAA4T,KAAb,SAAkBwJ,G,qBAAoCthB,GAAO,W,kDACpD,SAAMgE,KAAKod,OAAOX,KAAK,YAAaa,GACxCna,MAAK,SAACsY,GACL,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAMI,YAAAwzO,YAAb,SAAyB3xO,G,qBAAoCthB,GAAO,W,kDAC3D,SAAMgE,KAAKod,OAAOX,KAAK,oBAAqBa,GAChDna,MAAK,SAACsY,GACL,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAMI,YAAA8B,OAAb,W,qBAAuBvhB,GAAO,W,kDACrB,SAAMgE,KAAKod,OAAO5e,IAAI,QAC1B2E,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAAyzO,iBAAb,W,qBAAiClzP,GAAO,W,kDAC/B,SAAMgE,KAAKod,OAAO5e,IAAI,mBAC1B2E,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAAa,QAAb,SAAqBC,G,qBAAavgB,GAAO,W,kDAChC,SAAMgE,KAAKod,OAAOd,QAAQ,OAAQC,GACtCpZ,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAOI,YAAAxc,OAAb,SAAoBue,G,qBAAcxhB,GAAO,W,kDAChC,SAAMgE,KAAKod,OAAOne,OAAO,OAAQue,GACrCra,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAAiB,OAAb,SAAoBc,G,qBAAcxhB,GAAO,W,kDAChC,SAAMgE,KAAKod,OAAOT,WAAW,OAAQa,EAAMjB,GAAI,KAAMiB,GACzDra,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAAsa,YAAb,SAAyBlB,G,qBAAavgB,GAAO,W,kDACpC,SAAMgE,KAAKod,OAAOX,KAAK,qBAAqBF,GAChDpZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAAsmC,wBAAb,SAAqCltB,G,qBAAavgB,GAAO,W,kDAChD,SAAMgE,KAAKod,OAAOX,KAAK,kCAAkCF,GAC7DpZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAA2Z,OAAb,SAAoBP,G,qBAAavgB,GAAO,W,kDAC/B,SAAMgE,KAAKod,OAAOL,WAAW,OAAQR,GACzCpZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAA8mE,iBAAb,SAA8B1tD,G,qBAAavgB,GAAO,W,kDACzC,SAAMgE,KAAKod,OAAO5e,IAAI,mBAAmB+d,GAC7CpZ,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAA4yB,SAAb,SAAsB7wB,G,qBAA4BxhB,GAAO,W,kDAChD,SAAMgE,KAAKod,OAAOX,KAAK,gBAAiBe,GAC5Cra,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAA0zO,YAAb,SAAyB3xO,G,qBAAcxhB,GAAO,W,kDACrC,SAAMgE,KAAKod,OAAOT,WAAW,eAAgBa,EAAMjB,GAAI,MAC3DpZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAAisP,eAAb,W,qBAA+BpzP,GAAO,W,kDAC7B,SAAMgE,KAAKod,OAAOX,KAAK,qBAC3BtZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAAksP,gBAAb,W,qBAAgCrzP,GAAO,W,kDAC9B,SAAMgE,KAAKod,OAAO5e,IAAI,sBAC1B2E,MAAK,SAACsY,GACL,OAAQA,GAAYA,EAASzR,QAAW,IAAiBslP,S,OAF7D,MAAO,CAAP,EAAO,kBAMI,YAAAC,qBAAb,W,qBAAqCvzP,GAAO,W,kDACnC,SAAMgE,KAAKod,OAAO5e,IAAI,wBAC1B2E,MAAK,SAACsY,GACL,OAAQA,GAAYA,EAAShT,KAAQ,O,OAFzC,MAAO,CAAP,EAAO,kBAxGE+mP,EAAW,GADvB,a,uBAKsC,mB,OAAA,IAApB,UAAoB,YAJ1BA,GAAb,K,qCCZA9zP,EAAOD,QAAU,IAA0B,wC,oBCA3CC,EAAOD,QAAU,IAA0B,wC,oBCA3CC,EAAOD,QAAU,IAA0B,wC,wCCAzC,IAagBs8C,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAY3C,WAEG,GAA0B,mBAAfssJ,YAAX,CAKA,IAEI1sJ,EAFII,EACMC,IACQL,UAGlB83M,EAAY93M,EAAUr0C,MAGZq0C,EAAUr0C,KAAO,SAAUosP,GAqBrC,GAnBIA,aAAsBrrD,cACtBqrD,EAAa,IAAI79E,WAAW69E,KAK5BA,aAAsBC,WACQ,oBAAtBC,mBAAqCF,aAAsBE,mBACnEF,aAAsBG,YACtBH,aAAsBI,aACtBJ,aAAsBK,YACtBL,aAAsB78F,aACtB68F,aAAsBM,cACtBN,aAAsBO,gBAEtBP,EAAa,IAAI79E,WAAW69E,EAAWtpD,OAAQspD,EAAW5Q,WAAY4Q,EAAWjrD,aAIjFirD,aAAsB79E,WAAY,CAMlC,IAJA,IAAIq+E,EAAuBR,EAAWjrD,WAGlC7rJ,EAAQ,GACHl+C,EAAI,EAAGA,EAAIw1P,EAAsBx1P,IACtCk+C,EAAMl+C,IAAM,IAAMg1P,EAAWh1P,IAAO,GAAMA,EAAI,EAAK,EAIvD+0P,EAAUz0P,KAAKgF,KAAM44C,EAAOs3M,QAG5BT,EAAUxrP,MAAMjE,KAAM8B,aAItBhH,UAAY68C,GAtDxB,GA0DOI,EAASC,IAAIL,Y,oBCzEnB,IAagBI,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAY3C,WAEG,IAAIP,EAAIO,EAEJJ,EADQH,EAAEQ,IACQL,UAClBg8G,EAAQn8G,EAAE+F,IAwHd,SAAS4yM,EAAWx1K,GAChB,OAASA,GAAQ,EAAK,WAAgBA,IAAS,EAAK,SApH1Cg5E,EAAMy8F,MAAQz8F,EAAM08F,QAAU,CAcxCj/O,UAAW,SAAUqsC,GAOjB,IALA,IAAI7E,EAAQ6E,EAAU7E,MAClBE,EAAW2E,EAAU3E,SAGrBw3M,EAAa,GACR51P,EAAI,EAAGA,EAAIo+C,EAAUp+C,GAAK,EAAG,CAClC,IAAI6mP,EAAa3oM,EAAMl+C,IAAM,KAAQ,GAAMA,EAAI,EAAK,EAAM,MAC1D41P,EAAWp1P,KAAKgiB,OAAOq9B,aAAagnM,IAGxC,OAAO+O,EAAWtoP,KAAK,KAgB3BmJ,MAAO,SAAUo/O,GAMb,IAJA,IAAIC,EAAiBD,EAAS31P,OAG1Bg+C,EAAQ,GACHl+C,EAAI,EAAGA,EAAI81P,EAAgB91P,IAChCk+C,EAAMl+C,IAAM,IAAM61P,EAASpyM,WAAWzjD,IAAO,GAAMA,EAAI,EAAK,GAGhE,OAAOi9C,EAAU14C,OAAO25C,EAAwB,EAAjB43M,KAOvC78F,EAAM88F,QAAU,CAcZr/O,UAAW,SAAUqsC,GAOjB,IALA,IAAI7E,EAAQ6E,EAAU7E,MAClBE,EAAW2E,EAAU3E,SAGrBw3M,EAAa,GACR51P,EAAI,EAAGA,EAAIo+C,EAAUp+C,GAAK,EAAG,CAClC,IAAI6mP,EAAY4O,EAAYv3M,EAAMl+C,IAAM,KAAQ,GAAMA,EAAI,EAAK,EAAM,OACrE41P,EAAWp1P,KAAKgiB,OAAOq9B,aAAagnM,IAGxC,OAAO+O,EAAWtoP,KAAK,KAgB3BmJ,MAAO,SAAUo/O,GAMb,IAJA,IAAIC,EAAiBD,EAAS31P,OAG1Bg+C,EAAQ,GACHl+C,EAAI,EAAGA,EAAI81P,EAAgB91P,IAChCk+C,EAAMl+C,IAAM,IAAMy1P,EAAWI,EAASpyM,WAAWzjD,IAAO,GAAMA,EAAI,EAAK,IAG3E,OAAOi9C,EAAU14C,OAAO25C,EAAwB,EAAjB43M,KAzH3C,GAmIOz4M,EAASwF,IAAI6yM,Q,oBClJnB,IAiBO54M,EAEAG,EANSI,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAgBpCJ,GAFAH,EAAIO,GACMC,IACQL,UACVH,EAAE+F,IAKQmzM,UAAY,CAgB9Bt/O,UAAW,SAAUqsC,EAAWkzM,GAAQ,GAEpC,IAAI/3M,EAAQ6E,EAAU7E,MAClBE,EAAW2E,EAAU3E,SACrBn0C,EAAMgsP,EAAU3wP,KAAK4wP,UAAY5wP,KAAK09C,KAG1CD,EAAUE,QAIV,IADA,IAAIC,EAAc,GACTljD,EAAI,EAAGA,EAAIo+C,EAAUp+C,GAAK,EAO/B,IANA,IAIImjD,GAJSjF,EAAMl+C,IAAM,KAAc,GAAMA,EAAI,EAAK,EAAY,MAI1C,IAHXk+C,EAAOl+C,EAAI,IAAO,KAAQ,IAAOA,EAAI,GAAK,EAAK,EAAM,MAG1B,EAF3Bk+C,EAAOl+C,EAAI,IAAO,KAAQ,IAAOA,EAAI,GAAK,EAAK,EAAM,IAIzDk5B,EAAI,EAAIA,EAAI,GAAOl5B,EAAQ,IAAJk5B,EAAWklB,EAAWllB,IAClDgqB,EAAY1iD,KAAKyJ,EAAIgM,OAAQktC,IAAa,GAAK,EAAIjqB,GAAO,KAKlE,IAAIkqB,EAAcn5C,EAAIgM,OAAO,IAC7B,GAAImtC,EACA,KAAOF,EAAYhjD,OAAS,GACxBgjD,EAAY1iD,KAAK4iD,GAIzB,OAAOF,EAAY51C,KAAK,KAkB5BmJ,MAAO,SAAU4sC,EAAW4yM,GAAQ,GAEhC,IAAI3yM,EAAkBD,EAAUnjD,OAC5B+J,EAAMgsP,EAAU3wP,KAAK4wP,UAAY5wP,KAAK09C,KACtCO,EAAaj+C,KAAKk+C,YAEtB,IAAKD,EAAY,CACbA,EAAaj+C,KAAKk+C,YAAc,GAChC,IAAK,IAAItqB,EAAI,EAAGA,EAAIjvB,EAAI/J,OAAQg5B,IAC5BqqB,EAAWt5C,EAAIw5C,WAAWvqB,IAAMA,EAKxC,IAAIkqB,EAAcn5C,EAAIgM,OAAO,IAC7B,GAAImtC,EAAa,CACb,IAAIM,EAAeL,EAAU1sC,QAAQysC,IACf,IAAlBM,IACAJ,EAAkBI,GAK1B,OAQR,SAAmBL,EAAWC,EAAiBC,GAG3C,IAFA,IAAIrF,EAAQ,GACRyF,EAAS,EACJ3jD,EAAI,EAAGA,EAAIsjD,EAAiBtjD,IACjC,GAAIA,EAAI,EAAG,CACP,IAAI4jD,EAAQL,EAAWF,EAAUI,WAAWzjD,EAAI,KAASA,EAAI,EAAK,EAC9D6jD,EAAQN,EAAWF,EAAUI,WAAWzjD,MAAS,EAAKA,EAAI,EAAK,EAC/D8jD,EAAeF,EAAQC,EAC3B3F,EAAMyF,IAAW,IAAMG,GAAiB,GAAMH,EAAS,EAAK,EAC5DA,IAGR,OAAO1G,EAAU14C,OAAO25C,EAAOyF,GApBpBI,CAAUV,EAAWC,EAAiBC,IAIjDP,KAAM,oEACNkzM,UAAW,oEAmBZ74M,EAASwF,IAAImzM,Y,oBCzInB,IAiBOl5M,EAEAG,EACAC,EACAyrG,EAKA+pC,EAbSr1I,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAAW,EAAQ,KAgBvDJ,GAFAH,EAAIO,GACMC,IACQL,UAClBC,EAASJ,EAAES,KACXorG,EAASzrG,EAAOyrG,OAKhB+pC,EAASx1I,EAAOw1I,OAAS/pC,EAAO5jI,OAAO,CACvCo/B,SAAU,WACN7+C,KAAK8+C,MAAQ,IAAInH,EAAUr0C,KAAK,CAC5B,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,cAI5Cg9C,YAAa,WACT,IAAIQ,EAAOuiG,EAAO/iG,YAAYtlD,KAAKgF,MAInC,OAFA8gD,EAAKhI,UAAY,EAEVgI,KAkBftJ,EAAE41I,OAAS/pC,EAAOriG,cAAcosI,GAgBhC51I,EAAEq5M,WAAaxtG,EAAOniG,kBAAkBksI,GAIrCr1I,EAASq1I,S,oBC7Ef,IAiBO51I,EACA20B,EACA81F,EACAC,EACAtqH,EACAwqH,EAKAgW,EAdSrgI,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAAW,EAAQ,KAAe,EAAQ,KAe9Eo0B,GADA30B,EAAIO,GACMq0B,IACV61F,EAAU91F,EAAME,KAChB61F,EAAe/1F,EAAMx0B,UACrBC,EAASJ,EAAES,KACXmqH,EAASxqH,EAAOwqH,OAKhBgW,EAASxgI,EAAOwgI,OAAShW,EAAO3iJ,OAAO,CACvCo/B,SAAU,WACN7+C,KAAK8+C,MAAQ,IAAIojH,EAAa5+J,KAAK,CAC/B,IAAI2+J,EAAQ3+J,KAAK,WAAY,YAAa,IAAI2+J,EAAQ3+J,KAAK,WAAY,WACvE,IAAI2+J,EAAQ3+J,KAAK,WAAY,WAAa,IAAI2+J,EAAQ3+J,KAAK,UAAY,YACvE,IAAI2+J,EAAQ3+J,KAAK,WAAY,YAAa,IAAI2+J,EAAQ3+J,KAAK,WAAY,YACvE,IAAI2+J,EAAQ3+J,KAAK,WAAY,YAAa,IAAI2+J,EAAQ3+J,KAAK,WAAY,eAI/Eg9C,YAAa,WACT,IAAIQ,EAAOshH,EAAO9hH,YAAYtlD,KAAKgF,MAInC,OAFA8gD,EAAKhI,UAAY,GAEVgI,KAkBftJ,EAAE4gI,OAAShW,EAAOphH,cAAco3H,GAgBhC5gI,EAAE6gI,WAAajW,EAAOlhH,kBAAkBk3H,GAIrCrgI,EAASqgI,S,oBChFf,IAagBrgI,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAAW,EAAQ,KAY9D,SAAU50B,GAEP,IAAIq0B,EAAIO,EACJN,EAAQD,EAAEQ,IACVL,EAAYF,EAAME,UAClB+G,EAASjH,EAAMiH,OAEfujH,EADQzqH,EAAE40B,IACMC,KAChBz0B,EAASJ,EAAES,KAGX64M,EAAc,GACdC,EAAc,GACdC,EAAkB,IAGrB,WAGG,IADA,IAAI9pP,EAAI,EAAGkjB,EAAI,EACNvrB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzBiyP,EAAY5pP,EAAI,EAAIkjB,IAAOvrB,EAAI,IAAMA,EAAI,GAAK,EAAK,GAEnD,IACIoyP,GAAQ,EAAI/pP,EAAI,EAAIkjB,GAAK,EAC7BljB,EAFWkjB,EAAI,EAGfA,EAAI6mO,EAIR,IAAS/pP,EAAI,EAAGA,EAAI,EAAGA,IACnB,IAASkjB,EAAI,EAAGA,EAAI,EAAGA,IACnB2mO,EAAW7pP,EAAI,EAAIkjB,GAAKA,GAAM,EAAIljB,EAAI,EAAIkjB,GAAK,EAAK,EAM5D,IADA,IAAI8mO,EAAO,EACFx2P,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAIzB,IAHA,IAAIy2P,EAAmB,EACnBC,EAAmB,EAEdx9N,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,GAAW,EAAPs9N,EAAa,CACb,IAAIG,GAAe,GAAKz9N,GAAK,EACzBy9N,EAAc,GACdD,GAAoB,GAAKC,EAEzBF,GAAoB,GAAME,EAAc,GAKrC,IAAPH,EAEAA,EAAQA,GAAQ,EAAK,IAErBA,IAAS,EAIjBF,EAAgBt2P,GAAKunK,EAAQhjK,OAAOkyP,EAAkBC,IA5C9D,GAiDA,IAAIzyM,EAAI,IACP,WACG,IAAK,IAAIjkD,EAAI,EAAGA,EAAI,GAAIA,IACpBikD,EAAEjkD,GAAKunK,EAAQhjK,SAFvB,GASA,IAAIqyP,EAAO15M,EAAO05M,KAAO5yM,EAAOj/B,OAAO,CASnCy4B,IAAKwG,EAAOxG,IAAIz4B,OAAO,CACnB8xO,aAAc,MAGlB1yM,SAAU,WAEN,IADA,IAAIhuC,EAAQ7Q,KAAKwxP,OAAS,GACjB92P,EAAI,EAAGA,EAAI,GAAIA,IACpBmW,EAAMnW,GAAK,IAAIunK,EAAQ3+J,KAG3BtD,KAAK0nI,WAAa,KAAO,EAAI1nI,KAAKk4C,IAAIq5M,cAAgB,IAG1DxyM,gBAAiB,SAAUhyB,EAAG8O,GAM1B,IAJA,IAAIhrB,EAAQ7Q,KAAKwxP,OACbC,EAAkBzxP,KAAK0nI,UAAY,EAG9BhtI,EAAI,EAAGA,EAAI+2P,EAAiB/2P,IAAK,CAEtC,IAAIg3P,EAAO3kO,EAAE8O,EAAS,EAAInhC,GACtBi3P,EAAO5kO,EAAE8O,EAAS,EAAInhC,EAAI,GAG9Bg3P,EACoC,UAA7BA,GAAO,EAAOA,IAAQ,IACO,YAA7BA,GAAO,GAAOA,IAAQ,GAE7BC,EACsC,UAA/BA,GAAQ,EAAOA,IAAS,IACO,YAA/BA,GAAQ,GAAOA,IAAS,IAI3BC,EAAO/gP,EAAMnW,IACZ4xE,MAAQqlL,EACbC,EAAKrlL,KAAQmlL,EAIjB,IAAK,IAAI91N,EAAQ,EAAGA,EAAQ,GAAIA,IAAS,CAErC,IAAK,IAAI10B,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAGxB,IADA,IAAI2qP,EAAO,EAAGC,EAAO,EACZ1nO,EAAI,EAAGA,EAAI,EAAGA,IAEnBynO,IADID,EAAO/gP,EAAM3J,EAAI,EAAIkjB,IACZkiD,KACbwlL,GAAQF,EAAKrlL,IAIjB,IAAIwlL,EAAKpzM,EAAEz3C,GACX6qP,EAAGzlL,KAAOulL,EACVE,EAAGxlL,IAAOulL,EAEd,IAAS5qP,EAAI,EAAGA,EAAI,EAAGA,IAEnB,KAAI8qP,EAAMrzM,GAAGz3C,EAAI,GAAK,GAClB+qP,EAAMtzM,GAAGz3C,EAAI,GAAK,GAClBgrP,EAASD,EAAI3lL,KACb6lL,EAASF,EAAI1lL,IAKjB,IAFIslL,EAAOG,EAAI1lL,MAAS4lL,GAAU,EAAMC,IAAW,IAC/CL,EAAOE,EAAIzlL,KAAS4lL,GAAU,EAAMD,IAAW,IAC1C9nO,EAAI,EAAGA,EAAI,EAAGA,KACfwnO,EAAO/gP,EAAM3J,EAAI,EAAIkjB,IACpBkiD,MAAQulL,EACbD,EAAKrlL,KAAQulL,EAKrB,IAAK,IAAIM,EAAY,EAAGA,EAAY,GAAIA,IAAa,CACjD,IAKIC,GADAT,EAAO/gP,EAAMuhP,IACE9lL,KACfgmL,EAAUV,EAAKrlL,IACfgmL,EAAYzB,EAAYsB,GAGxBG,EAAY,IACZV,EAAQQ,GAAWE,EAAcD,IAAa,GAAKC,EACnDT,EAAQQ,GAAWC,EAAcF,IAAa,GAAKE,IAEnDV,EAAQS,GAAYC,EAAY,GAAQF,IAAa,GAAKE,EAC1DT,EAAQO,GAAYE,EAAY,GAAQD,IAAa,GAAKC,GAI9D,IAAIC,EAAU7zM,EAAEoyM,EAAWqB,IAC3BI,EAAQlmL,KAAOulL,EACfW,EAAQjmL,IAAOulL,EAInB,IAAIW,EAAK9zM,EAAE,GACP+zM,EAAS7hP,EAAM,GAKnB,IAJA4hP,EAAGnmL,KAAOomL,EAAOpmL,KACjBmmL,EAAGlmL,IAAOmmL,EAAOnmL,IAGRrlE,EAAI,EAAGA,EAAI,EAAGA,IACnB,IAASkjB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAExB,IACIwnO,EAAO/gP,EADPuhP,EAAYlrP,EAAI,EAAIkjB,GAEpBuoO,EAAQh0M,EAAEyzM,GACVQ,EAAUj0M,GAAIz3C,EAAI,GAAK,EAAK,EAAIkjB,GAChCyoO,EAAUl0M,GAAIz3C,EAAI,GAAK,EAAK,EAAIkjB,GAGpCwnO,EAAKtlL,KAAOqmL,EAAMrmL,MAASsmL,EAAQtmL,KAAOumL,EAAQvmL,KAClDslL,EAAKrlL,IAAOomL,EAAMpmL,KAASqmL,EAAQrmL,IAAOsmL,EAAQtmL,IAKtDqlL,EAAO/gP,EAAM,GAAjB,IACIiiP,EAAgB9B,EAAgBp1N,GACpCg2N,EAAKtlL,MAAQwmL,EAAcxmL,KAC3BslL,EAAKrlL,KAAQumL,EAAcvmL,MAInCjsB,YAAa,WAET,IAAIjmD,EAAO2F,KAAKw7B,MACZ+kB,EAAYlmD,EAAKu+C,MAEjB8H,GADa1gD,KAAKygD,YACU,EAAhBpmD,EAAKy+C,UACjBi6M,EAAiC,GAAjB/yP,KAAK0nI,UAGzBnnF,EAAUG,IAAc,IAAM,GAAQ,GAAKA,EAAY,GACvDH,GAAYp9B,EAAKC,MAAMs9B,EAAY,GAAKqyM,GAAiBA,IAAmB,GAAK,IAAM,IACvF14P,EAAKy+C,SAA8B,EAAnByH,EAAU3lD,OAG1BoF,KAAK6gD,WASL,IANA,IAAIhwC,EAAQ7Q,KAAKwxP,OACbwB,EAAoBhzP,KAAKk4C,IAAIq5M,aAAe,EAC5C0B,EAAoBD,EAAoB,EAGxCE,EAAY,GACPx4P,EAAI,EAAGA,EAAIu4P,EAAmBv4P,IAAK,CAExC,IAAIk3P,EAAO/gP,EAAMnW,GACb23P,EAAUT,EAAKtlL,KACfgmL,EAAUV,EAAKrlL,IAGnB8lL,EAC4C,UAArCA,GAAW,EAAOA,IAAY,IACO,YAArCA,GAAW,GAAOA,IAAY,GAErCC,EAC4C,UAArCA,GAAW,EAAOA,IAAY,IACO,YAArCA,GAAW,GAAOA,IAAY,GAIrCY,EAAUh4P,KAAKo3P,GACfY,EAAUh4P,KAAKm3P,GAInB,OAAO,IAAI16M,EAAUr0C,KAAK4vP,EAAWF,IAGzCz2N,MAAO,WAIH,IAHA,IAAIA,EAAQmiB,EAAOniB,MAAMvhC,KAAKgF,MAE1B6Q,EAAQ0rB,EAAMi1N,OAASxxP,KAAKwxP,OAAO3xP,MAAM,GACpCnF,EAAI,EAAGA,EAAI,GAAIA,IACpBmW,EAAMnW,GAAKmW,EAAMnW,GAAG6hC,QAGxB,OAAOA,KAkBfib,EAAE85M,KAAO5yM,EAAOsC,cAAcswM,GAgB9B95M,EAAE27M,SAAWz0M,EAAOwC,kBAAkBowM,GAhT1C,CAiTEnuO,MAGK40B,EAASu5M,O,gCCpTjB,mDA8BE,KAAAn8C,qBAAiC,GACjC,KAAAi+C,mBAA0C,GAK1C,KAAA7vG,eAAyB,GACzB,KAAA2xD,eAAwC,GAUxC,KAAAm+C,6BAA8D,K,oBC9D9D,IAagBt7M,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ;;;;;;;;;;;AAuB3C,SAAU50B,GAEP,IAAIq0B,EAAIO,EACJN,EAAQD,EAAEQ,IACVL,EAAYF,EAAME,UAClB+G,EAASjH,EAAMiH,OACf9G,EAASJ,EAAES,KAGXq7M,EAAM37M,EAAU14C,OAAO,CACvB,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3D,EAAI,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAAI,EAAI,EAAI,EAAG,GAAI,GAAK,EAC5D,EAAG,GAAI,GAAK,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAK,EAAG,GAC3D,EAAI,EAAG,GAAI,GAAK,EAAI,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAAI,GAAK,EAAI,EAAI,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAG,GAAI,GAAK,EAAI,EAAI,EAAG,GAAK,EAAG,GAAI,KAC3Ds0P,EAAM57M,EAAU14C,OAAO,CACvB,EAAG,GAAK,EAAI,EAAI,EAAI,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAAK,EAAG,GAC3D,EAAG,GAAK,EAAI,EAAI,EAAG,GAAK,EAAG,GAAI,GAAI,GAAK,EAAG,GAAK,EAAI,EAAI,EAAI,EAC5D,GAAK,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAC5D,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAK,EAAI,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAAI,GAC3D,GAAI,GAAI,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAK,EAAI,EAAI,EAAG,KAC5Du0P,EAAM77M,EAAU14C,OAAO,CACtB,GAAI,GAAI,GAAI,GAAK,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAK,EAAI,EAAI,EAAI,EAC9D,EAAG,EAAK,EAAG,GAAI,GAAK,EAAI,EAAG,GAAK,EAAG,GAAI,GAAK,EAAG,GAAK,EAAG,GAAI,GAC3D,GAAI,GAAK,EAAI,EAAG,GAAK,EAAG,GAAI,GAAI,GAAK,EAAG,GAAK,EAAI,EAAG,GAAK,EAAI,EAC3D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAK,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAG,GAC9D,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAAI,GAAK,EAAG,GAAI,GAAI,GAAI,GAAK,EAAI,EAAI,IAC5Dw0P,EAAM97M,EAAU14C,OAAO,CACvB,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAK,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAK,EAC5D,EAAG,GAAI,GAAK,EAAG,GAAK,EAAI,EAAG,GAAK,EAAI,EAAG,GAAK,EAAI,EAAG,GAAI,GAAI,GAC3D,EAAI,EAAG,GAAI,GAAK,EAAI,EAAI,EAAG,GAAI,GAAI,GAAK,EAAG,GAAI,GAAI,GAAK,EAAI,EAC5D,GAAK,EAAI,EAAG,GAAI,GAAI,GAAK,EAAG,GAAK,EAAI,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAC7D,EAAI,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAAK,EAAI,EAAG,GAAI,GAAI,GAAI,KAE3Dy0P,EAAO/7M,EAAU14C,OAAO,CAAE,EAAY,WAAY,WAAY,WAAY,aAC1E00P,EAAOh8M,EAAU14C,OAAO,CAAE,WAAY,WAAY,WAAY,WAAY,IAK1EouL,EAAYz1I,EAAOy1I,UAAY3uI,EAAOj/B,OAAO,CAC7Co/B,SAAU,WACN7+C,KAAK8+C,MAASnH,EAAU14C,OAAO,CAAC,WAAY,WAAY,WAAY,UAAY,cAGpF8/C,gBAAiB,SAAUhyB,EAAG8O,GAG1B,IAAK,IAAInhC,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAEzB,IAAIskD,EAAWnjB,EAASnhC,EACpBukD,EAAalyB,EAAEiyB,GAGnBjyB,EAAEiyB,GACgD,UAA3CC,GAAc,EAAOA,IAAe,IACO,YAA3CA,GAAc,GAAOA,IAAe,GAI/C,IASI6kH,EAAIE,EAAIC,EAAIE,EAAItiG,EAChB+S,EAAI2qG,EAAI31F,EAAIgqK,EAAIC,EAQhBh1P,EAlBAqgD,EAAKl/C,KAAK8+C,MAAMlG,MAChB6rH,EAAKivF,EAAI96M,MACTk7M,EAAKH,EAAI/6M,MACTm7M,EAAKT,EAAI16M,MACTmvI,EAAKwrE,EAAI36M,MACTo7M,EAAKR,EAAI56M,MACTq7M,EAAKR,EAAI76M,MAab,IAPAg8B,EAAKkvF,EAAK5kH,EAAE,GACZqgI,EAAKvb,EAAK9kH,EAAE,GACZ0qC,EAAKq6E,EAAK/kH,EAAE,GACZ00M,EAAKzvF,EAAKjlH,EAAE,GACZ20M,EAAKhyL,EAAK3iB,EAAE,GAGHxkD,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACzBmE,EAAKilK,EAAM/2I,EAAE8O,EAAOk4N,EAAGr5P,IAAK,EAE/BmE,GADOnE,EAAE,GACHw5P,EAAGlwF,EAAGC,EAAGE,GAAMM,EAAG,GACV/pK,EAAE,GACVy5P,EAAGnwF,EAAGC,EAAGE,GAAMM,EAAG,GACV/pK,EAAE,GACV05P,EAAGpwF,EAAGC,EAAGE,GAAMM,EAAG,GACV/pK,EAAE,GACV25P,EAAGrwF,EAAGC,EAAGE,GAAMM,EAAG,GAElB6vF,EAAGtwF,EAAGC,EAAGE,GAAMM,EAAG,GAIrB5lK,GADAA,EAAK01P,EADL11P,GAAM,EACMm1P,EAAGt5P,KACRmnE,EAAI,EACXiiG,EAAKjiG,EACLA,EAAKsiG,EACLA,EAAKowF,EAAKtwF,EAAI,IACdA,EAAKD,EACLA,EAAKnlK,EAELA,EAAK+1E,EAAK7nD,EAAE8O,EAAOksJ,EAAGrtL,IAAK,EAE9BmE,GADOnE,EAAE,GACH45P,EAAG/0E,EAAG31F,EAAGgqK,GAAME,EAAG,GACVp5P,EAAE,GACV25P,EAAG90E,EAAG31F,EAAGgqK,GAAME,EAAG,GACVp5P,EAAE,GACV05P,EAAG70E,EAAG31F,EAAGgqK,GAAME,EAAG,GACVp5P,EAAE,GACVy5P,EAAG50E,EAAG31F,EAAGgqK,GAAME,EAAG,GAElBI,EAAG30E,EAAG31F,EAAGgqK,GAAME,EAAG,GAIrBj1P,GADAA,EAAK01P,EADL11P,GAAM,EACMo1P,EAAGv5P,KACRm5P,EAAI,EACXj/K,EAAKi/K,EACLA,EAAKD,EACLA,EAAKW,EAAK3qK,EAAI,IACdA,EAAK21F,EACLA,EAAK1gL,EAGTA,EAAQqgD,EAAE,GAAK+kH,EAAK2vF,EAAI,EACxB10M,EAAE,GAAMA,EAAE,GAAKilH,EAAK0vF,EAAI,EACxB30M,EAAE,GAAMA,EAAE,GAAK2iB,EAAK+S,EAAI,EACxB11B,EAAE,GAAMA,EAAE,GAAK4kH,EAAKyb,EAAI,EACxBrgI,EAAE,GAAMA,EAAE,GAAK8kH,EAAKp6E,EAAI,EACxB1qC,EAAE,GAAMrgD,GAGZyhD,YAAa,WAET,IAAIjmD,EAAO2F,KAAKw7B,MACZ+kB,EAAYlmD,EAAKu+C,MAEjB4H,EAAgC,EAAnBxgD,KAAKygD,YAClBC,EAA4B,EAAhBrmD,EAAKy+C,SAGrByH,EAAUG,IAAc,IAAM,KAAS,GAAKA,EAAY,GACxDH,EAA4C,IAA/BG,EAAY,KAAQ,GAAM,IACW,UAA3CF,GAAc,EAAOA,IAAe,IACO,YAA3CA,GAAc,GAAOA,IAAe,GAE3CnmD,EAAKy+C,SAAoC,GAAxByH,EAAU3lD,OAAS,GAGpCoF,KAAK6gD,WAOL,IAJA,IAAIC,EAAO9gD,KAAK8+C,MACZI,EAAI4B,EAAKlI,MAGJl+C,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAExB,IAAIqmD,EAAM7B,EAAExkD,GAGZwkD,EAAExkD,GAAqC,UAA7BqmD,GAAO,EAAOA,IAAQ,IACO,YAA7BA,GAAO,GAAOA,IAAQ,GAIpC,OAAOD,GAGXvkB,MAAO,WACH,IAAIA,EAAQmiB,EAAOniB,MAAMvhC,KAAKgF,MAG9B,OAFAu8B,EAAMuiB,MAAQ9+C,KAAK8+C,MAAMviB,QAElBA,KAKf,SAAS23N,EAAGhtP,EAAGkjB,EAAG0hJ,GACd,OAAQ,EAAM,EAAM,EAIxB,SAASqoF,EAAGjtP,EAAGkjB,EAAG0hJ,GACd,OAAS,EAAI,GAAU5kK,EAAG,EAG9B,SAASktP,EAAGltP,EAAGkjB,EAAG0hJ,GACd,OAAS,GAAQ,GAAQ,EAG7B,SAASuoF,EAAGntP,EAAGkjB,EAAG0hJ,GACd,OAAS,EAAM,EAAQ,GAAM,EAGjC,SAASwoF,EAAGptP,EAAGkjB,EAAG0hJ,GACd,OAAQ,GAAO,GAAO,GAI1B,SAASyoF,EAAKrtP,EAAE9H,GACZ,OAAQ8H,GAAG9H,EAAM8H,IAAK,GAAG9H,EAkB7Bo4C,EAAE61I,UAAY3uI,EAAOsC,cAAcqsI,GAgBnC71I,EAAEg9M,cAAgB91M,EAAOwC,kBAAkBmsI,GA1O/C,CA2OElqK,MAGK40B,EAASs1I,Y,oBCxQf,IAiBO71I,EACAC,EACAC,EACAC,EACAC,EACAmqF,EACAwF,EAKAiuD,EAfSz9I,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAAW,EAAQ,KAAW,EAAQ,KAe1EN,GADAD,EAAIO,GACMC,IACVN,EAAOD,EAAMC,KACbC,EAAYF,EAAME,UAClBC,EAASJ,EAAES,KACX8pF,EAAOnqF,EAAOmqF,KACdwF,EAAO3vF,EAAO2vF,KAKdiuD,EAAS59I,EAAO49I,OAAS99I,EAAKj4B,OAAO,CAQrCy4B,IAAKR,EAAKj4B,OAAO,CACb04B,QAAS,EACTC,OAAQ2pF,EACR1pF,WAAY,IAchB/0C,KAAM,SAAU40C,GACZl4C,KAAKk4C,IAAMl4C,KAAKk4C,IAAIz4B,OAAOy4B,IAe/BI,QAAS,SAAUC,EAAUC,GAkBzB,IAhBA,IAAIN,EAAMl4C,KAAKk4C,IAGXu8M,EAAOltH,EAAKtoI,OAAOi5C,EAAIE,OAAQG,GAG/BG,EAAaf,EAAU14C,SACvBy1P,EAAa/8M,EAAU14C,OAAO,CAAC,IAG/B05C,EAAkBD,EAAWE,MAC7B+7M,EAAkBD,EAAW97M,MAC7BT,EAAUD,EAAIC,QACdE,EAAaH,EAAIG,WAGdM,EAAgB/9C,OAASu9C,GAAS,CACrC,IAAIM,EAAQg8M,EAAK/3O,OAAO87B,GAAMK,SAAS67M,GACvCD,EAAKjmP,QAQL,IALA,IAAIomP,EAAan8M,EAAMG,MACnBi8M,EAAmBD,EAAWh6P,OAG9Bk6P,EAAer8M,EACV/9C,EAAI,EAAGA,EAAI29C,EAAY39C,IAAK,CACjCo6P,EAAeL,EAAK57M,SAASi8M,GAC7BL,EAAKjmP,QAML,IAHA,IAAIumP,EAAoBD,EAAal8M,MAG5BhlB,EAAI,EAAGA,EAAIihO,EAAkBjhO,IAClCghO,EAAWhhO,IAAMmhO,EAAkBnhO,GAI3C8kB,EAAWv0C,OAAOs0C,GAClBk8M,EAAgB,KAIpB,OAFAj8M,EAAWI,SAAqB,EAAVX,EAEfO,KAqBflB,EAAEg+I,OAAS,SAAUj9I,EAAUC,EAAMN,GACjC,OAAOs9I,EAAOv2L,OAAOi5C,GAAKI,QAAQC,EAAUC,IAK7CT,EAASy9I,S,oBC9If,IAagBz9I,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAAW,EAAQ,IAe/DA,EAASj5C,KAAKk2P,IAAO,WACjB,IAAIA,EAAMj9M,EAASC,IAAIi9M,gBAAgBx1O,SA+BvC,SAASy1O,EAA4Bt8M,EAAO/c,EAAQ6rG,EAAW+sD,GAC3D,IAAI0gE,EAGAjhE,EAAKl0L,KAAKo1P,IAGVlhE,GACAihE,EAAYjhE,EAAGr0L,MAAM,GAGrBG,KAAKo1P,SAAMx3P,GAEXu3P,EAAYn1P,KAAKq1P,WAErB5gE,EAAO6gE,aAAaH,EAAW,GAG/B,IAAK,IAAIz6P,EAAI,EAAGA,EAAIgtI,EAAWhtI,IAC3Bk+C,EAAM/c,EAASnhC,IAAMy6P,EAAUz6P,GAIvC,OApDAs6P,EAAIO,UAAYP,EAAIv1O,OAAO,CACvB+1O,aAAc,SAAU58M,EAAO/c,GAE3B,IAAI44J,EAASz0L,KAAKy1P,QACd/tH,EAAY+sD,EAAO/sD,UAEvBwtH,EAA4Bl6P,KAAKgF,KAAM44C,EAAO/c,EAAQ6rG,EAAW+sD,GAGjEz0L,KAAKq1P,WAAaz8M,EAAM/4C,MAAMg8B,EAAQA,EAAS6rG,MAIvDstH,EAAIU,UAAYV,EAAIv1O,OAAO,CACvB+1O,aAAc,SAAU58M,EAAO/c,GAE3B,IAAI44J,EAASz0L,KAAKy1P,QACd/tH,EAAY+sD,EAAO/sD,UAGnBiuH,EAAY/8M,EAAM/4C,MAAMg8B,EAAQA,EAAS6rG,GAE7CwtH,EAA4Bl6P,KAAKgF,KAAM44C,EAAO/c,EAAQ6rG,EAAW+sD,GAGjEz0L,KAAKq1P,WAAaM,KA2BnBX,EAvDS,GA2Dbj9M,EAASj5C,KAAKk2P,M,oBC7EpB,IAmBOY,EAEAL,EARSx9M,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAAW,EAAQ,IAe/DA,EAASj5C,KAAK82P,KACNA,EAAM79M,EAASC,IAAIi9M,gBAAgBx1O,SAEnC81O,EAAYK,EAAIL,UAAYK,EAAIn2O,OAAO,CACvC+1O,aAAc,SAAU58M,EAAO/c,GAE3B,IAAI44J,EAASz0L,KAAKy1P,QACd/tH,EAAY+sD,EAAO/sD,UACnBwsD,EAAKl0L,KAAKo1P,IACV37K,EAAUz5E,KAAK61P,SAGf3hE,IACAz6G,EAAUz5E,KAAK61P,SAAW3hE,EAAGr0L,MAAM,GAGnCG,KAAKo1P,SAAMx3P,GAEf,IAAIu3P,EAAY17K,EAAQ55E,MAAM,GAC9B40L,EAAO6gE,aAAaH,EAAW,GAG/B17K,EAAQiuD,EAAY,GAAMjuD,EAAQiuD,EAAY,GAAK,EAAK,EAGxD,IAAK,IAAIhtI,EAAI,EAAGA,EAAIgtI,EAAWhtI,IAC3Bk+C,EAAM/c,EAASnhC,IAAMy6P,EAAUz6P,MAK3Ck7P,EAAIF,UAAYH,EAETK,GAIJ79M,EAASj5C,KAAK82P,M,oBCvDpB,IAagB79M,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAAW,EAAQ;;;;;;AAiB/DA,EAASj5C,KAAKg3P,WAAc,WACxB,IAAIA,EAAa/9M,EAASC,IAAIi9M,gBAAgBx1O,SAEjD,SAASs2O,EAAQp7K,GAEhB,GAA8B,MAAxBA,GAAQ,GAAM,KAAgB,CACpC,IAAIq7K,EAAMr7K,GAAQ,GAAI,IAClBs7K,EAAMt7K,GAAQ,EAAG,IACjBu7K,EAAY,IAAPv7K,EAEE,MAAPq7K,GAEJA,EAAK,EACM,MAAPC,GAEHA,EAAK,EACM,MAAPC,EAEHA,EAAK,IAIHA,KAKDD,KAKDD,EAGFr7K,EAAO,EACPA,GAASq7K,GAAM,GACfr7K,GAASs7K,GAAM,EACft7K,GAAQu7K,OAIRv7K,GAAS,GAAQ,GAEjB,OAAOA,EAaL,IAAI46K,EAAYO,EAAWP,UAAYO,EAAWr2O,OAAO,CACrD+1O,aAAc,SAAU58M,EAAO/c,GAE3B,IAAI44J,EAASz0L,KAAKy1P,QACd/tH,EAAY+sD,EAAO/sD,UACnBwsD,EAAKl0L,KAAKo1P,IACV37K,EAAUz5E,KAAK61P,SAGf3hE,IACAz6G,EAAUz5E,KAAK61P,SAAW3hE,EAAGr0L,MAAM,GAGnCG,KAAKo1P,SAAMx3P,GAvB1B,SAAoB67E,GAEwB,KAAtCA,EAAQ,GAAKs8K,EAAQt8K,EAAQ,OAGjCA,EAAQ,GAAKs8K,EAAQt8K,EAAQ,KAqB7B08K,CAAW18K,GAEX,IAAI07K,EAAY17K,EAAQ55E,MAAM,GACrB40L,EAAO6gE,aAAaH,EAAW,GAG/B,IAAK,IAAIz6P,EAAI,EAAGA,EAAIgtI,EAAWhtI,IAC3Bk+C,EAAM/c,EAASnhC,IAAMy6P,EAAUz6P,MAO3C,OAFAo7P,EAAWJ,UAAYH,EAEhBO,EAvFgB,GA6FpB/9M,EAASj5C,KAAKg3P,a,oBCjHpB,IAmBOM,EAEAb,EARSx9M,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAAW,EAAQ,IAe/DA,EAASj5C,KAAKs3P,KACNA,EAAMr+M,EAASC,IAAIi9M,gBAAgBx1O,SAEnC81O,EAAYa,EAAIb,UAAYa,EAAI32O,OAAO,CACvC+1O,aAAc,SAAU58M,EAAO/c,GAE3B,IAAI44J,EAASz0L,KAAKy1P,QACd/tH,EAAY+sD,EAAO/sD,UACnBwsD,EAAKl0L,KAAKo1P,IACVD,EAAYn1P,KAAKq2P,WAGjBniE,IACAihE,EAAYn1P,KAAKq2P,WAAaniE,EAAGr0L,MAAM,GAGvCG,KAAKo1P,SAAMx3P,GAEf62L,EAAO6gE,aAAaH,EAAW,GAG/B,IAAK,IAAIz6P,EAAI,EAAGA,EAAIgtI,EAAWhtI,IAC3Bk+C,EAAM/c,EAASnhC,IAAMy6P,EAAUz6P,MAK3C07P,EAAIV,UAAYH,EAETa,GAIJr+M,EAASj5C,KAAKs3P,M,oBCnDpB,IAmBOE,EANSv+M,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAAW,EAAQ,IAe/DA,EAASj5C,KAAKw3P,MACNA,EAAMv+M,EAASC,IAAIi9M,gBAAgBx1O,UAEnC81O,UAAYe,EAAI72O,OAAO,CACvB+1O,aAAc,SAAU58M,EAAO/c,GAC3B77B,KAAKy1P,QAAQH,aAAa18M,EAAO/c,MAIzCy6N,EAAIZ,UAAYY,EAAI72O,OAAO,CACvB+1O,aAAc,SAAU58M,EAAO/c,GAC3B77B,KAAKy1P,QAAQc,aAAa39M,EAAO/c,MAIlCy6N,GAIJv+M,EAASj5C,KAAKw3P,M,oBCrCpB,IAagBv+M,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAAW,EAAQ,IAe/DA,EAASkzF,IAAIurH,SAAW,CACpBvrH,IAAK,SAAU5wI,EAAMqtI,GAEjB,IAAIgtB,EAAer6J,EAAKy+C,SACpB29M,EAA6B,EAAZ/uH,EAGjBgvH,EAAgBD,EAAiB/hG,EAAe+hG,EAGhDE,EAAcjiG,EAAegiG,EAAgB,EAGjDr8P,EAAKsjD,QACLtjD,EAAKu+C,MAAM+9M,IAAgB,IAAMD,GAAkB,GAAMC,EAAc,EAAK,EAC5Et8P,EAAKy+C,UAAY49M,GAGrBE,MAAO,SAAUv8P,GAEb,IAAIq8P,EAAwD,IAAxCr8P,EAAKu+C,MAAOv+C,EAAKy+C,SAAW,IAAO,GAGvDz+C,EAAKy+C,UAAY49M,IAKlB3+M,EAASkzF,IAAI4rH,W,oBC9CnB,IAagB9+M,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAAW,EAAQ,IAe/DA,EAASkzF,IAAI6rH,SAAW,CACpB7rH,IAAK,SAAU5wI,EAAMqtI,GAEjB,IAAI+uH,EAA6B,EAAZ/uH,EAGjBgvH,EAAgBD,EAAiBp8P,EAAKy+C,SAAW29M,EAGrDp8P,EAAK8J,OAAO4zC,EAASC,IAAIL,UAAU0iC,OAAOq8K,EAAgB,IACrDvyP,OAAO4zC,EAASC,IAAIL,UAAU14C,OAAO,CAACy3P,GAAiB,IAAK,KAGrEE,MAAO,SAAUv8P,GAEb,IAAIq8P,EAAwD,IAAxCr8P,EAAKu+C,MAAOv+C,EAAKy+C,SAAW,IAAO,GAGvDz+C,EAAKy+C,UAAY49M,IAKlB3+M,EAASkzF,IAAI6rH,W,oBCzCnB,IAagB/+M,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAAW,EAAQ,IAe/DA,EAASkzF,IAAI8rH,SAAW,CACpB9rH,IAAK,SAAU5wI,EAAMqtI,GAEjBrtI,EAAK8J,OAAO4zC,EAASC,IAAIL,UAAU14C,OAAO,CAAC,YAAa,IAGxD84C,EAASkzF,IAAI+rH,YAAY/rH,IAAI5wI,EAAMqtI,IAGvCkvH,MAAO,SAAUv8P,GAEb09C,EAASkzF,IAAI+rH,YAAYJ,MAAMv8P,GAG/BA,EAAKy+C,aAKNf,EAASkzF,IAAI8rH,W,gCCrCrB,IAAYE,EAAZ,2CAAYA,GACV,qCACA,2CACA,yCACA,2BACA,qBACA,+BACA,yBACA,6BARF,CAAYA,MAAe,M,oBCAzB,IAagBl/M,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAAW,EAAQ,IAe/DA,EAASkzF,IAAI+rH,YAAc,CACvB/rH,IAAK,SAAU5wI,EAAMqtI,GAEjB,IAAI+uH,EAA6B,EAAZ/uH,EAGrBrtI,EAAKsjD,QACLtjD,EAAKy+C,UAAY29M,GAAmBp8P,EAAKy+C,SAAW29M,GAAmBA,IAG3EG,MAAO,SAAUv8P,GAEb,IAAIkmD,EAAYlmD,EAAKu+C,MAGjBl+C,EAAIL,EAAKy+C,SAAW,EACxB,IAASp+C,EAAIL,EAAKy+C,SAAW,EAAGp+C,GAAK,EAAGA,IACpC,GAAM6lD,EAAU7lD,IAAM,KAAQ,GAAMA,EAAI,EAAK,EAAM,IAAO,CACtDL,EAAKy+C,SAAWp+C,EAAI,EACpB,SAOTq9C,EAASkzF,IAAI+rH,c,oBC5CnB,IAagBj/M,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAAW,EAAQ,IAe/DA,EAASkzF,IAAIisH,UAAY,CACrBjsH,IAAK,aAGL2rH,MAAO,cAKJ7+M,EAASkzF,IAAIisH,Y,oBC3BnB,IAiBO1/M,EAEA2/M,EAEA9jG,EARSt7G,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAAW,EAAQ,IAgBvDo/M,GAFA3/M,EAAIO,GACMC,IACWm/M,aAErB9jG,EADQ77G,EAAE+F,IACE81G,IACD77G,EAAE53B,OAEWyzI,IAAM,CAc9BjiJ,UAAW,SAAUgmP,GACjB,OAAOA,EAAajjE,WAAWn1K,SAASq0I,IAgB5CliJ,MAAO,SAAU4N,GACb,IAAIo1K,EAAa9gC,EAAIliJ,MAAM4N,GAC3B,OAAOo4O,EAAal4P,OAAO,CAAEk1L,WAAYA,MAM9Cp8I,EAASn4B,OAAOyzI,M,oBC/DtB,IAagBt7G,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAAW,EAAQ,KAAiB,EAAQ,KAAU,EAAQ,KAAa,EAAQ,IAY9H,WAEG,IAAIP,EAAIO,EAEJs/M,EADQ7/M,EAAEQ,IACUq/M,YACpBz/M,EAASJ,EAAES,KAGXq/M,EAAO,GACPC,EAAW,GACXC,EAAY,GACZC,EAAY,GACZC,EAAY,GACZC,EAAY,GACZC,EAAgB,GAChBC,EAAgB,GAChBC,EAAgB,GAChBC,EAAgB,IAGnB,WAGG,IADA,IAAI55P,EAAI,GACCzD,EAAI,EAAGA,EAAI,IAAKA,IAEjByD,EAAEzD,GADFA,EAAI,IACGA,GAAK,EAEJA,GAAK,EAAK,IAK1B,IAAIwM,EAAI,EACJ8wP,EAAK,EACT,IAASt9P,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAE1B,IAAIu9P,EAAKD,EAAMA,GAAM,EAAMA,GAAM,EAAMA,GAAM,EAAMA,GAAM,EACzDC,EAAMA,IAAO,EAAW,IAALA,EAAa,GAChCX,EAAKpwP,GAAK+wP,EACVV,EAASU,GAAM/wP,EAGf,IAAIgsO,EAAK/0O,EAAE+I,GACPgxP,EAAK/5P,EAAE+0O,GACPilB,EAAKh6P,EAAE+5P,GAGPr5P,EAAa,IAARV,EAAE85P,GAAqB,SAALA,EAC3BT,EAAUtwP,GAAMrI,GAAK,GAAOA,IAAM,EAClC44P,EAAUvwP,GAAMrI,GAAK,GAAOA,IAAM,GAClC64P,EAAUxwP,GAAMrI,GAAK,EAAOA,IAAM,GAClC84P,EAAUzwP,GAAKrI,EAGXA,EAAU,SAALs5P,EAAwB,MAALD,EAAsB,IAALhlB,EAAmB,SAAJhsO,EAC5D0wP,EAAcK,GAAOp5P,GAAK,GAAOA,IAAM,EACvCg5P,EAAcI,GAAOp5P,GAAK,GAAOA,IAAM,GACvCi5P,EAAcG,GAAOp5P,GAAK,EAAOA,IAAM,GACvCk5P,EAAcE,GAAMp5P,EAGfqI,GAGDA,EAAIgsO,EAAK/0O,EAAEA,EAAEA,EAAEg6P,EAAKjlB,KACpB8kB,GAAM75P,EAAEA,EAAE65P,KAHV9wP,EAAI8wP,EAAK,GA1CrB,GAmDA,IAAII,EAAO,CAAC,EAAM,EAAM,EAAM,EAAM,EAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAKpEn1G,EAAMrrG,EAAOqrG,IAAMo0G,EAAY53O,OAAO,CACtCo/B,SAAU,WAIN,IAAI7+C,KAAKq4P,UAAYr4P,KAAKs4P,iBAAmBt4P,KAAKuE,KAAlD,CAiBA,IAZA,IAAIrF,EAAMc,KAAKs4P,eAAiBt4P,KAAKuE,KACjCg0P,EAAWr5P,EAAI05C,MACfT,EAAUj5C,EAAI45C,SAAW,EAMzB0/M,EAAyB,IAHfx4P,KAAKq4P,SAAWlgN,EAAU,GAGhB,GAGpBsgN,EAAcz4P,KAAK04P,aAAe,GAC7BC,EAAQ,EAAGA,EAAQH,EAAQG,IAC5BA,EAAQxgN,EACRsgN,EAAYE,GAASJ,EAASI,IAE9B95P,EAAI45P,EAAYE,EAAQ,GAElBA,EAAQxgN,EASHA,EAAU,GAAKwgN,EAAQxgN,GAAW,IAEzCt5C,EAAKy4P,EAAKz4P,IAAM,KAAO,GAAOy4P,EAAMz4P,IAAM,GAAM,MAAS,GAAOy4P,EAAMz4P,IAAM,EAAK,MAAS,EAAKy4P,EAAS,IAAJz4P,KANpGA,EAAKy4P,GAHLz4P,EAAKA,GAAK,EAAMA,IAAM,MAGN,KAAO,GAAOy4P,EAAMz4P,IAAM,GAAM,MAAS,GAAOy4P,EAAMz4P,IAAM,EAAK,MAAS,EAAKy4P,EAAS,IAAJz4P,GAGpGA,GAAKu5P,EAAMO,EAAQxgN,EAAW,IAAM,IAMxCsgN,EAAYE,GAASF,EAAYE,EAAQxgN,GAAWt5C,GAM5D,IADA,IAAI+5P,EAAiB54P,KAAK64P,gBAAkB,GACnCC,EAAW,EAAGA,EAAWN,EAAQM,IAAY,CAGlD,GAFIH,EAAQH,EAASM,EAEjBA,EAAW,EACX,IAAIj6P,EAAI45P,EAAYE,QAEhB95P,EAAI45P,EAAYE,EAAQ,GAI5BC,EAAeE,GADfA,EAAW,GAAKH,GAAS,EACE95P,EAEA+4P,EAAcN,EAAKz4P,IAAM,KAAOg5P,EAAcP,EAAMz4P,IAAM,GAAM,MAChEi5P,EAAcR,EAAMz4P,IAAM,EAAK,MAASk5P,EAAcT,EAAS,IAAJz4P,OAKlGy2P,aAAc,SAAUvoO,EAAG8O,GACvB77B,KAAK+4P,cAAchsO,EAAG8O,EAAQ77B,KAAK04P,aAAclB,EAAWC,EAAWC,EAAWC,EAAWL,IAGjGf,aAAc,SAAUxpO,EAAG8O,GAEvB,IAAIh9B,EAAIkuB,EAAE8O,EAAS,GACnB9O,EAAE8O,EAAS,GAAK9O,EAAE8O,EAAS,GAC3B9O,EAAE8O,EAAS,GAAKh9B,EAEhBmB,KAAK+4P,cAAchsO,EAAG8O,EAAQ77B,KAAK64P,gBAAiBjB,EAAeC,EAAeC,EAAeC,EAAeR,GAG5G14P,EAAIkuB,EAAE8O,EAAS,GACnB9O,EAAE8O,EAAS,GAAK9O,EAAE8O,EAAS,GAC3B9O,EAAE8O,EAAS,GAAKh9B,GAGpBk6P,cAAe,SAAUhsO,EAAG8O,EAAQ48N,EAAajB,EAAWC,EAAWC,EAAWC,EAAWL,GAczF,IAZA,IAAI0B,EAAUh5P,KAAKq4P,SAGfY,EAAKlsO,EAAE8O,GAAc48N,EAAY,GACjCS,EAAKnsO,EAAE8O,EAAS,GAAK48N,EAAY,GACjCU,EAAKpsO,EAAE8O,EAAS,GAAK48N,EAAY,GACjCW,EAAKrsO,EAAE8O,EAAS,GAAK48N,EAAY,GAGjCE,EAAQ,EAGH/8N,EAAQ,EAAGA,EAAQo9N,EAASp9N,IAAS,CAE1C,IAAIy9N,EAAK7B,EAAUyB,IAAO,IAAMxB,EAAWyB,IAAO,GAAM,KAAQxB,EAAWyB,IAAO,EAAK,KAAQxB,EAAe,IAALyB,GAAaX,EAAYE,KAC9H52F,EAAKy1F,EAAU0B,IAAO,IAAMzB,EAAW0B,IAAO,GAAM,KAAQzB,EAAW0B,IAAO,EAAK,KAAQzB,EAAe,IAALsB,GAAaR,EAAYE,KAC9HW,EAAK9B,EAAU2B,IAAO,IAAM1B,EAAW2B,IAAO,GAAM,KAAQ1B,EAAWuB,IAAO,EAAK,KAAQtB,EAAe,IAALuB,GAAaT,EAAYE,KAC9HY,EAAK/B,EAAU4B,IAAO,IAAM3B,EAAWwB,IAAO,GAAM,KAAQvB,EAAWwB,IAAO,EAAK,KAAQvB,EAAe,IAALwB,GAAaV,EAAYE,KAGlIM,EAAKI,EACLH,EAAKn3F,EACLo3F,EAAKG,EACLF,EAAKG,EAILF,GAAO/B,EAAK2B,IAAO,KAAO,GAAO3B,EAAM4B,IAAO,GAAM,MAAS,GAAO5B,EAAM6B,IAAO,EAAK,MAAS,EAAK7B,EAAU,IAAL8B,IAAcX,EAAYE,KACnI52F,GAAOu1F,EAAK4B,IAAO,KAAO,GAAO5B,EAAM6B,IAAO,GAAM,MAAS,GAAO7B,EAAM8B,IAAO,EAAK,MAAS,EAAK9B,EAAU,IAAL2B,IAAcR,EAAYE,KACnIW,GAAOhC,EAAK6B,IAAO,KAAO,GAAO7B,EAAM8B,IAAO,GAAM,MAAS,GAAO9B,EAAM2B,IAAO,EAAK,MAAS,EAAK3B,EAAU,IAAL4B,IAAcT,EAAYE,KACnIY,GAAOjC,EAAK8B,IAAO,KAAO,GAAO9B,EAAM2B,IAAO,GAAM,MAAS,GAAO3B,EAAM4B,IAAO,EAAK,MAAS,EAAK5B,EAAU,IAAL6B,IAAcV,EAAYE,KAGvI5rO,EAAE8O,GAAcw9N,EAChBtsO,EAAE8O,EAAS,GAAKkmI,EAChBh1I,EAAE8O,EAAS,GAAKy9N,EAChBvsO,EAAE8O,EAAS,GAAK09N,GAGpBphN,QAAS,IAWbX,EAAEyrG,IAAMo0G,EAAYr2M,cAAciiG,GApNtC,GAwNOlrG,EAASkrG,M,oBCvOf,IAagBlrG,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAAW,EAAQ,KAAiB,EAAQ,KAAU,EAAQ,KAAa,EAAQ,IAY9H,WAEG,IAAIP,EAAIO,EACJN,EAAQD,EAAEQ,IACVL,EAAYF,EAAME,UAClB0/M,EAAc5/M,EAAM4/M,YACpBz/M,EAASJ,EAAES,KAGXuhN,EAAM,CACN,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAI,EAC5B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAC5B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAC5B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5B,GAAI,GAAI,GAAI,EAAI,GAAI,GAAI,GAAI,GAC5B,GAAI,GAAI,GAAI,EAAI,GAAI,GAAI,GAAI,GAC5B,GAAI,GAAI,GAAI,EAAI,GAAI,GAAI,GAAI,GAI5BC,EAAM,CACN,GAAI,GAAI,GAAI,GAAI,EAAI,EACpB,EAAI,GAAI,GAAI,EAAI,GAAI,GACpB,GAAI,GAAI,GAAI,EAAI,GAAI,EACpB,GAAI,EAAI,GAAI,GAAI,GAAI,EACpB,GAAI,GAAI,GAAI,GAAI,GAAI,GACpB,GAAI,GAAI,GAAI,GAAI,GAAI,GACpB,GAAI,GAAI,GAAI,GAAI,GAAI,GACpB,GAAI,GAAI,GAAI,GAAI,GAAI,IAIpBC,EAAa,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAG1EC,EAAS,CACT,CACIp+P,EAAK,QACL,UAAY,MACZ,UAAY,QACZ,UAAY,EACZ,WAAY,IACZ,WAAY,QACZ,WAAY,QACZ,WAAY,QACZ,WAAY,IACZ,WAAY,QACZ,WAAY,MACZ,WAAY,QACZ,WAAY,MACZ,WAAY,QACZ,WAAY,EACZ,WAAY,MACZ,UAAW,EACX,UAAY,QACZ,UAAY,MACZ,UAAY,MACZ,WAAY,QACZ,WAAY,IACZ,WAAY,QACZ,WAAY,EACZ,WAAY,QACZ,WAAY,MACZ,WAAY,QACZ,WAAY,QACZ,WAAY,QACZ,WAAY,MACZ,WAAY,IACZ,WAAY,QACZ,EAAK,MACL,UAAY,EACZ,UAAY,QACZ,UAAY,QACZ,WAAY,QACZ,WAAY,MACZ,WAAY,IACZ,WAAY,QACZ,WAAY,QACZ,WAAY,QACZ,WAAY,QACZ,WAAY,MACZ,WAAY,IACZ,WAAY,QACZ,WAAY,MACZ,WAAY,EACZ,UAAW,QACX,UAAY,QACZ,UAAY,QACZ,UAAY,IACZ,WAAY,MACZ,WAAY,QACZ,WAAY,EACZ,WAAY,MACZ,WAAY,MACZ,WAAY,QACZ,WAAY,IACZ,WAAY,QACZ,WAAY,QACZ,WAAY,EACZ,WAAY,MACZ,WAAY,SAEhB,CACIA,EAAK,WACL,SAAW,MACX,SAAW,OACX,SAAW,WACX,SAAW,WACX,SAAW,WACX,UAAW,WACX,UAAW,GACX,UAAW,OACX,UAAW,WACX,UAAW,WACX,UAAW,OACX,UAAW,OACX,UAAW,EACX,UAAW,MACX,UAAW,WACX,QAAU,WACV,SAAW,OACX,SAAW,GACX,SAAW,WACX,SAAW,WACX,SAAW,WACX,UAAW,OACX,UAAW,WACX,UAAW,OACX,UAAW,EACX,UAAW,MACX,UAAW,WACX,UAAW,WACX,UAAW,OACX,UAAW,WACX,UAAW,MACX,UAAY,EACZ,UAAY,WACZ,UAAY,WACZ,UAAY,WACZ,UAAY,WACZ,UAAY,GACZ,UAAY,OACZ,UAAY,MACZ,UAAY,MACZ,UAAY,OACZ,UAAY,OACZ,UAAY,WACZ,UAAY,OACZ,UAAY,WACZ,UAAY,WACZ,UAAY,WACZ,UAAY,OACZ,UAAY,OACZ,UAAY,WACZ,UAAY,MACZ,UAAY,WACZ,UAAY,WACZ,UAAY,GACZ,UAAY,WACZ,UAAY,WACZ,UAAY,WACZ,UAAY,WACZ,UAAY,OACZ,UAAY,EACZ,UAAY,MACZ,UAAY,WACZ,UAAY,QAEhB,CACIA,EAAK,IACL,QAAU,EACV,QAAU,SACV,QAAU,MACV,QAAU,MACV,QAAU,SACV,QAAU,SACV,QAAU,SACV,QAAU,SACV,QAAU,SACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,MACV,SAAU,EACV,SAAU,IACV,OAAS,SACT,QAAU,SACV,QAAU,EACV,QAAU,SACV,QAAU,SACV,QAAU,MACV,QAAU,MACV,QAAU,IACV,QAAU,EACV,QAAU,IACV,SAAU,SACV,SAAU,MACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAW,SACX,SAAW,MACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,OAEf,CACIA,EAAK,WACL,MAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,KACT,OAAS,KACT,OAAS,WACT,MAAQ,WACR,MAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,WACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,QACT,QAAS,WACT,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,EACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,QACV,QAAU,WACV,QAAU,QACV,QAAU,GACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,EACV,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,WACV,QAAU,GACV,QAAU,WACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,KACV,QAAU,WACV,QAAU,QACV,QAAU,SAEd,CACIA,EAAK,IACL,KAAQ,SACR,KAAQ,OACR,MAAQ,UACR,MAAQ,UACR,MAAQ,SACR,MAAQ,UACR,MAAQ,OACR,MAAQ,SACR,MAAQ,UACR,MAAQ,UACR,MAAQ,UACR,MAAQ,UACR,MAAQ,EACR,MAAQ,SACR,MAAQ,UACR,KAAO,SACP,KAAQ,UACR,MAAQ,IACR,MAAQ,SACR,MAAQ,OACR,MAAQ,UACR,MAAQ,UACR,MAAQ,UACR,MAAQ,UACR,MAAQ,EACR,MAAQ,UACR,MAAQ,SACR,MAAQ,UACR,MAAQ,UACR,MAAQ,SACR,MAAQ,OACR,MAAS,OACT,MAAS,IACT,MAAS,UACT,MAAS,UACT,MAAS,SACT,MAAS,UACT,MAAS,UACT,MAAS,SACT,MAAS,UACT,OAAS,UACT,OAAS,SACT,OAAS,UACT,OAAS,OACT,OAAS,UACT,OAAS,EACT,OAAS,SACT,MAAS,UACT,MAAS,SACT,MAAS,SACT,MAAS,UACT,MAAS,UACT,MAAS,SACT,MAAS,IACT,MAAS,UACT,OAAS,OACT,OAAS,UACT,OAAS,EACT,OAAS,UACT,OAAS,SACT,OAAS,OACT,OAAS,UACT,OAAS,WAEb,CACIA,EAAK,UACL,IAAO,KACP,IAAO,UACP,IAAO,UACP,KAAO,UACP,KAAO,QACP,KAAO,QACP,KAAO,UACP,KAAO,EACP,KAAO,UACP,KAAO,QACP,KAAO,EACP,KAAO,UACP,KAAO,QACP,KAAO,KACP,KAAO,UACP,IAAM,UACN,IAAO,UACP,IAAO,EACP,IAAO,QACP,KAAO,QACP,KAAO,UACP,KAAO,UACP,KAAO,KACP,KAAO,QACP,KAAO,KACP,KAAO,UACP,KAAO,UACP,KAAO,EACP,KAAO,UACP,KAAO,QACP,KAAO,UACP,KAAQ,UACR,KAAQ,UACR,KAAQ,UACR,KAAQ,KACR,KAAQ,QACR,KAAQ,UACR,KAAQ,UACR,KAAQ,QACR,KAAQ,QACR,KAAQ,EACR,KAAQ,EACR,KAAQ,UACR,KAAQ,KACR,KAAQ,UACR,KAAQ,UACR,KAAQ,QACR,KAAQ,EACR,KAAQ,QACR,KAAQ,QACR,KAAQ,UACR,KAAQ,UACR,KAAQ,KACR,KAAQ,UACR,KAAQ,UACR,KAAQ,UACR,KAAQ,UACR,KAAQ,KACR,KAAQ,QACR,KAAQ,QACR,KAAQ,EACR,KAAQ,UACR,KAAQ,WAEZ,CACIA,EAAK,QACL,GAAM,SACN,GAAM,KACN,GAAM,QACN,GAAM,SACN,GAAM,EACN,GAAM,EACN,IAAM,SACN,IAAM,SACN,IAAM,QACN,IAAM,SACN,IAAM,SACN,IAAM,SACN,IAAM,KACN,IAAM,QACN,IAAM,SACN,EAAK,SACL,GAAM,EACN,GAAM,SACN,GAAM,SACN,GAAM,QACN,GAAM,SACN,IAAM,SACN,IAAM,KACN,IAAM,QACN,IAAM,SACN,IAAM,SACN,IAAM,QACN,IAAM,KACN,IAAM,SACN,IAAM,EACN,IAAM,QACN,IAAO,SACP,IAAO,QACP,IAAO,SACP,IAAO,SACP,IAAO,QACP,IAAO,SACP,IAAO,SACP,IAAO,QACP,IAAO,KACP,IAAO,SACP,IAAO,QACP,IAAO,EACP,IAAO,EACP,IAAO,SACP,IAAO,SACP,IAAO,KACP,IAAO,QACP,IAAO,SACP,IAAO,SACP,IAAO,EACP,IAAO,SACP,IAAO,QACP,IAAO,KACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,EACP,IAAO,SACP,IAAO,QACP,IAAO,KACP,IAAO,SACP,IAAO,SAEX,CACIA,EAAK,UACL,EAAK,OACL,EAAK,UACL,EAAK,GACL,EAAK,OACL,EAAK,UACL,EAAK,UACL,EAAK,KACL,EAAK,UACL,EAAK,UACL,GAAK,OACL,GAAK,UACL,GAAK,KACL,GAAK,EACL,GAAK,UACL,GAAK,OACL,WAAY,KACZ,WAAY,UACZ,WAAY,UACZ,WAAY,UACZ,WAAY,UACZ,WAAY,OACZ,WAAY,OACZ,WAAY,GACZ,WAAY,UACZ,WAAY,KACZ,WAAY,OACZ,WAAY,UACZ,WAAY,EACZ,WAAY,UACZ,WAAY,UACZ,WAAY,OACZ,GAAM,OACN,GAAM,UACN,GAAM,GACN,GAAM,KACN,GAAM,UACN,GAAM,UACN,GAAM,UACN,GAAM,OACN,GAAM,EACN,GAAM,OACN,GAAM,UACN,GAAM,UACN,GAAM,UACN,GAAM,OACN,GAAM,KACN,GAAM,UACN,WAAY,OACZ,WAAY,KACZ,WAAY,UACZ,WAAY,OACZ,WAAY,GACZ,WAAY,UACZ,WAAY,UACZ,WAAY,UACZ,WAAY,UACZ,WAAY,UACZ,WAAY,UACZ,WAAY,EACZ,WAAY,OACZ,WAAY,KACZ,WAAY,OACZ,WAAY,YAKhBq+P,EAAY,CACZ,WAAY,UAAY,SAAY,QACpC,OAAY,KAAY,IAAY,YAMpCplE,EAAM58I,EAAO48I,IAAM6iE,EAAY53O,OAAO,CACtCo/B,SAAU,WAON,IALA,IACI05M,EADMv4P,KAAKuE,KACIq0C,MAGfihN,EAAU,GACLn/P,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,IAAIo/P,EAAYN,EAAI9+P,GAAK,EACzBm/P,EAAQn/P,GAAM69P,EAASuB,IAAc,KAAQ,GAAKA,EAAY,GAAO,EAKzE,IADA,IAAIC,EAAU/5P,KAAKg6P,SAAW,GACrBC,EAAU,EAAGA,EAAU,GAAIA,IAAW,CAE3C,IAAIC,EAASH,EAAQE,GAAW,GAG5BE,EAAWT,EAAWO,GAG1B,IAASv/P,EAAI,EAAGA,EAAI,GAAIA,IAEpBw/P,EAAQx/P,EAAI,EAAK,IAAMm/P,GAAUJ,EAAI/+P,GAAK,EAAKy/P,GAAY,KAAQ,GAAKz/P,EAAI,EAG5Ew/P,EAAO,GAAMx/P,EAAI,EAAK,KAAOm/P,EAAQ,IAAQJ,EAAI/+P,EAAI,IAAM,EAAKy/P,GAAY,KAAS,GAAKz/P,EAAI,EAOlG,IADAw/P,EAAO,GAAMA,EAAO,IAAM,EAAMA,EAAO,KAAO,GACrCx/P,EAAI,EAAGA,EAAI,EAAGA,IACnBw/P,EAAOx/P,GAAKw/P,EAAOx/P,KAAkB,GAATA,EAAI,GAAS,EAE7Cw/P,EAAO,GAAMA,EAAO,IAAM,EAAMA,EAAO,KAAO,GAIlD,IAAIE,EAAap6P,KAAKq6P,YAAc,GACpC,IAAS3/P,EAAI,EAAGA,EAAI,GAAIA,IACpB0/P,EAAW1/P,GAAKq/P,EAAQ,GAAKr/P,IAIrC46P,aAAc,SAAUvoO,EAAG8O,GACvB77B,KAAK+4P,cAAchsO,EAAG8O,EAAQ77B,KAAKg6P,WAGvCzD,aAAc,SAAUxpO,EAAG8O,GACvB77B,KAAK+4P,cAAchsO,EAAG8O,EAAQ77B,KAAKq6P,cAGvCtB,cAAe,SAAUhsO,EAAG8O,EAAQk+N,GAEhC/5P,KAAKs6P,QAAUvtO,EAAE8O,GACjB77B,KAAKu6P,QAAUxtO,EAAE8O,EAAS,GAG1B2+N,EAAWx/P,KAAKgF,KAAM,EAAI,WAC1Bw6P,EAAWx/P,KAAKgF,KAAM,GAAI,OAC1By6P,EAAWz/P,KAAKgF,KAAM,EAAI,WAC1By6P,EAAWz/P,KAAKgF,KAAM,EAAI,UAC1Bw6P,EAAWx/P,KAAKgF,KAAM,EAAI,YAG1B,IAAK,IAAI47B,EAAQ,EAAGA,EAAQ,GAAIA,IAAS,CAQrC,IANA,IAAIs+N,EAASH,EAAQn+N,GACjB8+N,EAAS16P,KAAKs6P,QACdK,EAAS36P,KAAKu6P,QAGdxgM,EAAI,EACCr/D,EAAI,EAAGA,EAAI,EAAGA,IACnBq/D,GAAK4/L,EAAOj/P,KAAKigQ,EAAST,EAAOx/P,IAAMk/P,EAAUl/P,MAAQ,GAE7DsF,KAAKs6P,QAAUK,EACf36P,KAAKu6P,QAAUG,EAAS3gM,EAI5B,IAAIl7D,EAAImB,KAAKs6P,QACbt6P,KAAKs6P,QAAUt6P,KAAKu6P,QACpBv6P,KAAKu6P,QAAU17P,EAGf27P,EAAWx/P,KAAKgF,KAAM,EAAI,YAC1By6P,EAAWz/P,KAAKgF,KAAM,EAAI,UAC1By6P,EAAWz/P,KAAKgF,KAAM,EAAI,WAC1Bw6P,EAAWx/P,KAAKgF,KAAM,GAAI,OAC1Bw6P,EAAWx/P,KAAKgF,KAAM,EAAI,WAG1B+sB,EAAE8O,GAAU77B,KAAKs6P,QACjBvtO,EAAE8O,EAAS,GAAK77B,KAAKu6P,SAGzBpiN,QAAS,EAETyiN,OAAQ,EAERlzH,UAAW,IAIf,SAAS8yH,EAAW3+N,EAAQg/N,GACxB,IAAIh8P,GAAMmB,KAAKs6P,UAAYz+N,EAAU77B,KAAKu6P,SAAWM,EACrD76P,KAAKu6P,SAAW17P,EAChBmB,KAAKs6P,SAAWz7P,GAAKg9B,EAGzB,SAAS4+N,EAAW5+N,EAAQg/N,GACxB,IAAIh8P,GAAMmB,KAAKu6P,UAAY1+N,EAAU77B,KAAKs6P,SAAWO,EACrD76P,KAAKs6P,SAAWz7P,EAChBmB,KAAKu6P,SAAW17P,GAAKg9B,EAWzB2b,EAAEg9I,IAAM6iE,EAAYr2M,cAAcwzI,GAKlC,IAAID,EAAY38I,EAAO28I,UAAY8iE,EAAY53O,OAAO,CAClDo/B,SAAU,WAEN,IACI05M,EADMv4P,KAAKuE,KACIq0C,MAEnB,GAAwB,IAApB2/M,EAAS39P,QAAoC,IAApB29P,EAAS39P,QAAgB29P,EAAS39P,OAAS,EACpE,MAAM,IAAImC,MAAM,iFAIpB,IAAI+9P,EAAOvC,EAAS14P,MAAM,EAAG,GACzBk7P,EAAOxC,EAAS39P,OAAS,EAAI29P,EAAS14P,MAAM,EAAG,GAAK04P,EAAS14P,MAAM,EAAG,GACtEm7P,EAAOzC,EAAS39P,OAAS,EAAI29P,EAAS14P,MAAM,EAAG,GAAK04P,EAAS14P,MAAM,EAAG,GAG1EG,KAAKi7P,MAAQzmE,EAAI0mE,gBAAgBvjN,EAAU14C,OAAO67P,IAClD96P,KAAKm7P,MAAQ3mE,EAAI0mE,gBAAgBvjN,EAAU14C,OAAO87P,IAClD/6P,KAAKo7P,MAAQ5mE,EAAI0mE,gBAAgBvjN,EAAU14C,OAAO+7P,KAGtD1F,aAAc,SAAUvoO,EAAG8O,GACvB77B,KAAKi7P,MAAM3F,aAAavoO,EAAG8O,GAC3B77B,KAAKm7P,MAAM5E,aAAaxpO,EAAG8O,GAC3B77B,KAAKo7P,MAAM9F,aAAavoO,EAAG8O,IAG/B06N,aAAc,SAAUxpO,EAAG8O,GACvB77B,KAAKo7P,MAAM7E,aAAaxpO,EAAG8O,GAC3B77B,KAAKm7P,MAAM7F,aAAavoO,EAAG8O,GAC3B77B,KAAKi7P,MAAM1E,aAAaxpO,EAAG8O,IAG/Bsc,QAAS,EAETyiN,OAAQ,EAERlzH,UAAW,IAWflwF,EAAE+8I,UAAY8iE,EAAYr2M,cAAcuzI,GArvB5C,GAyvBOx8I,EAASw8I,Y,oBCxwBf,IAagBx8I,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAAW,EAAQ,KAAiB,EAAQ,KAAU,EAAQ,KAAa,EAAQ,IAY9H,WAEG,IAAIP,EAAIO,EAEJsjN,EADQ7jN,EAAEQ,IACWqjN,aACrBzjN,EAASJ,EAAES,KAKXqjN,EAAM1jN,EAAO0jN,IAAMD,EAAa57O,OAAO,CACvCo/B,SAAU,WAQN,IANA,IAAI3/C,EAAMc,KAAKuE,KACXg0P,EAAWr5P,EAAI05C,MACf2iN,EAAcr8P,EAAI45C,SAGlBiiG,EAAI/6I,KAAKw7P,GAAK,GACT9gQ,EAAI,EAAGA,EAAI,IAAKA,IACrBqgJ,EAAErgJ,GAAKA,EAIFA,EAAI,EAAb,IAAK,IAAWk5B,EAAI,EAAGl5B,EAAI,IAAKA,IAAK,CACjC,IAAI+gQ,EAAe/gQ,EAAI6gQ,EACnBG,EAAWnD,EAASkD,IAAiB,KAAQ,GAAMA,EAAe,EAAK,EAAM,IAEjF7nO,GAAKA,EAAImnH,EAAErgJ,GAAKghQ,GAAW,IAG3B,IAAI78P,EAAIk8I,EAAErgJ,GACVqgJ,EAAErgJ,GAAKqgJ,EAAEnnH,GACTmnH,EAAEnnH,GAAK/0B,EAIXmB,KAAKwL,GAAKxL,KAAK27P,GAAK,GAGxB58M,gBAAiB,SAAUhyB,EAAG8O,GAC1B9O,EAAE8O,IAAW+/N,EAAsB5gQ,KAAKgF,OAG5Cm4C,QAAS,EAETyiN,OAAQ,IAGZ,SAASgB,IAQL,IANA,IAAI7gH,EAAI/6I,KAAKw7P,GACT9gQ,EAAIsF,KAAKwL,GACTooB,EAAI5zB,KAAK27P,GAGTE,EAAgB,EACXz8P,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAExBw0B,GAAKA,EAAImnH,EADTrgJ,GAAKA,EAAI,GAAK,MACG,IAGjB,IAAImE,EAAIk8I,EAAErgJ,GACVqgJ,EAAErgJ,GAAKqgJ,EAAEnnH,GACTmnH,EAAEnnH,GAAK/0B,EAEPg9P,GAAiB9gH,GAAGA,EAAErgJ,GAAKqgJ,EAAEnnH,IAAM,MAAS,GAAS,EAAJx0B,EAOrD,OAHAY,KAAKwL,GAAK9Q,EACVsF,KAAK27P,GAAK/nO,EAEHioO,EAWXrkN,EAAE8jN,IAAMD,EAAar6M,cAAcs6M,GAKnC,IAAIQ,EAAUlkN,EAAOkkN,QAAUR,EAAI77O,OAAO,CAMtCy4B,IAAKojN,EAAIpjN,IAAIz4B,OAAO,CAChBs8O,KAAM,MAGVl9M,SAAU,WACNy8M,EAAIz8M,SAAS7jD,KAAKgF,MAGlB,IAAK,IAAItF,EAAIsF,KAAKk4C,IAAI6jN,KAAMrhQ,EAAI,EAAGA,IAC/BkhQ,EAAsB5gQ,KAAKgF,SAavCw3C,EAAEskN,QAAUT,EAAar6M,cAAc86M,GArH3C,GAyHO/jN,EAASujN,M,oBCxIf,IAagBvjN,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAAW,EAAQ,KAAiB,EAAQ,KAAU,EAAQ,KAAa,EAAQ,IAY9H,WAEG,IAAIP,EAAIO,EAEJsjN,EADQ7jN,EAAEQ,IACWqjN,aACrBzjN,EAASJ,EAAES,KAGX8iG,EAAK,GACLihH,EAAK,GACLphH,EAAK,GAKLqhH,EAASrkN,EAAOqkN,OAASZ,EAAa57O,OAAO,CAC7Co/B,SAAU,WAMN,IAJA,IAAIi8F,EAAI96I,KAAKuE,KAAKq0C,MACds7I,EAAKl0L,KAAKk4C,IAAIg8I,GAGTx5L,EAAI,EAAGA,EAAI,EAAGA,IACnBogJ,EAAEpgJ,GAAuC,UAA/BogJ,EAAEpgJ,IAAM,EAAOogJ,EAAEpgJ,KAAO,IACO,YAA/BogJ,EAAEpgJ,IAAM,GAAOogJ,EAAEpgJ,KAAO,GAItC,IAAIwxK,EAAIlsK,KAAKk8P,GAAK,CACdphH,EAAE,GAAKA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAC/BA,EAAE,GAAKA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAC/BA,EAAE,GAAKA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAC/BA,EAAE,GAAKA,EAAE,IAAM,GAAOA,EAAE,KAAO,IAI/BtjG,EAAIx3C,KAAKm8P,GAAK,CACbrhH,EAAE,IAAM,GAAOA,EAAE,KAAO,GAAa,WAAPA,EAAE,GAA2B,MAAPA,EAAE,GACtDA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAAa,WAAPA,EAAE,GAA2B,MAAPA,EAAE,GACtDA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAAa,WAAPA,EAAE,GAA2B,MAAPA,EAAE,GACtDA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAAa,WAAPA,EAAE,GAA2B,MAAPA,EAAE,IAO3D,IAHA96I,KAAKo8P,GAAK,EAGD1hQ,EAAI,EAAGA,EAAI,EAAGA,IACnB0jJ,EAAUpjJ,KAAKgF,MAInB,IAAStF,EAAI,EAAGA,EAAI,EAAGA,IACnB88C,EAAE98C,IAAMwxK,EAAGxxK,EAAI,EAAK,GAIxB,GAAIw5L,EAAI,CAEJ,IAAImoE,EAAKnoE,EAAGt7I,MACR0jN,EAAOD,EAAG,GACVE,EAAOF,EAAG,GAGVG,EAAsC,UAA9BF,GAAQ,EAAMA,IAAS,IAAsD,YAA9BA,GAAQ,GAAOA,IAAS,GAC/EG,EAAsC,UAA9BF,GAAQ,EAAMA,IAAS,IAAsD,YAA9BA,GAAQ,GAAOA,IAAS,GAC/EG,EAAMF,IAAO,GAAY,WAALC,EACpBE,EAAMF,GAAM,GAAa,MAALD,EAaxB,IAVAhlN,EAAE,IAAMglN,EACRhlN,EAAE,IAAMklN,EACRllN,EAAE,IAAMilN,EACRjlN,EAAE,IAAMmlN,EACRnlN,EAAE,IAAMglN,EACRhlN,EAAE,IAAMklN,EACRllN,EAAE,IAAMilN,EACRjlN,EAAE,IAAMmlN,EAGCjiQ,EAAI,EAAGA,EAAI,EAAGA,IACnB0jJ,EAAUpjJ,KAAKgF,QAK3B++C,gBAAiB,SAAUhyB,EAAG8O,GAE1B,IAAIqwI,EAAIlsK,KAAKk8P,GAGb99G,EAAUpjJ,KAAKgF,MAGf+6I,EAAE,GAAKmxB,EAAE,GAAMA,EAAE,KAAO,GAAOA,EAAE,IAAM,GACvCnxB,EAAE,GAAKmxB,EAAE,GAAMA,EAAE,KAAO,GAAOA,EAAE,IAAM,GACvCnxB,EAAE,GAAKmxB,EAAE,GAAMA,EAAE,KAAO,GAAOA,EAAE,IAAM,GACvCnxB,EAAE,GAAKmxB,EAAE,GAAMA,EAAE,KAAO,GAAOA,EAAE,IAAM,GAEvC,IAAK,IAAIxxK,EAAI,EAAGA,EAAI,EAAGA,IAEnBqgJ,EAAErgJ,GAAuC,UAA/BqgJ,EAAErgJ,IAAM,EAAOqgJ,EAAErgJ,KAAO,IACO,YAA/BqgJ,EAAErgJ,IAAM,GAAOqgJ,EAAErgJ,KAAO,GAGlCqyB,EAAE8O,EAASnhC,IAAMqgJ,EAAErgJ,IAI3BgtI,UAAW,EAEXkzH,OAAQ,IAGZ,SAASx8G,IAML,IAJA,IAAI8tB,EAAIlsK,KAAKk8P,GACT1kN,EAAIx3C,KAAKm8P,GAGJzhQ,EAAI,EAAGA,EAAI,EAAGA,IACnBshQ,EAAGthQ,GAAK88C,EAAE98C,GAed,IAXA88C,EAAE,GAAMA,EAAE,GAAK,WAAax3C,KAAKo8P,GAAM,EACvC5kN,EAAE,GAAMA,EAAE,GAAK,YAAeA,EAAE,KAAO,EAAMwkN,EAAG,KAAO,EAAK,EAAI,GAAM,EACtExkN,EAAE,GAAMA,EAAE,GAAK,WAAeA,EAAE,KAAO,EAAMwkN,EAAG,KAAO,EAAK,EAAI,GAAM,EACtExkN,EAAE,GAAMA,EAAE,GAAK,YAAeA,EAAE,KAAO,EAAMwkN,EAAG,KAAO,EAAK,EAAI,GAAM,EACtExkN,EAAE,GAAMA,EAAE,GAAK,YAAeA,EAAE,KAAO,EAAMwkN,EAAG,KAAO,EAAK,EAAI,GAAM,EACtExkN,EAAE,GAAMA,EAAE,GAAK,WAAeA,EAAE,KAAO,EAAMwkN,EAAG,KAAO,EAAK,EAAI,GAAM,EACtExkN,EAAE,GAAMA,EAAE,GAAK,YAAeA,EAAE,KAAO,EAAMwkN,EAAG,KAAO,EAAK,EAAI,GAAM,EACtExkN,EAAE,GAAMA,EAAE,GAAK,YAAeA,EAAE,KAAO,EAAMwkN,EAAG,KAAO,EAAK,EAAI,GAAM,EACtEh8P,KAAKo8P,GAAM5kN,EAAE,KAAO,EAAMwkN,EAAG,KAAO,EAAK,EAAI,EAGpCthQ,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAIkiQ,EAAK1wF,EAAExxK,GAAK88C,EAAE98C,GAGdmiQ,EAAU,MAALD,EACLE,EAAKF,IAAO,GAGZr4F,IAASs4F,EAAKA,IAAQ,IAAMA,EAAKC,IAAQ,IAAMA,EAAKA,EACpDt4F,IAAa,WAALo4F,GAAmBA,EAAM,KAAa,MAALA,GAAmBA,EAAM,GAGtEhiH,EAAElgJ,GAAK6pK,EAAKC,EAIhB0H,EAAE,GAAMtxB,EAAE,IAAOA,EAAE,IAAM,GAAOA,EAAE,KAAO,KAASA,EAAE,IAAM,GAAOA,EAAE,KAAO,IAAQ,EAClFsxB,EAAE,GAAMtxB,EAAE,IAAOA,EAAE,IAAM,EAAOA,EAAE,KAAO,IAAOA,EAAE,GAAM,EACxDsxB,EAAE,GAAMtxB,EAAE,IAAOA,EAAE,IAAM,GAAOA,EAAE,KAAO,KAASA,EAAE,IAAM,GAAOA,EAAE,KAAO,IAAQ,EAClFsxB,EAAE,GAAMtxB,EAAE,IAAOA,EAAE,IAAM,EAAOA,EAAE,KAAO,IAAOA,EAAE,GAAM,EACxDsxB,EAAE,GAAMtxB,EAAE,IAAOA,EAAE,IAAM,GAAOA,EAAE,KAAO,KAASA,EAAE,IAAM,GAAOA,EAAE,KAAO,IAAQ,EAClFsxB,EAAE,GAAMtxB,EAAE,IAAOA,EAAE,IAAM,EAAOA,EAAE,KAAO,IAAOA,EAAE,GAAM,EACxDsxB,EAAE,GAAMtxB,EAAE,IAAOA,EAAE,IAAM,GAAOA,EAAE,KAAO,KAASA,EAAE,IAAM,GAAOA,EAAE,KAAO,IAAQ,EAClFsxB,EAAE,GAAMtxB,EAAE,IAAOA,EAAE,IAAM,EAAOA,EAAE,KAAO,IAAOA,EAAE,GAAM,EAW5DpjG,EAAEykN,OAASZ,EAAar6M,cAAci7M,GA1K1C,GA8KOlkN,EAASkkN,S,oBC7Lf,IAagBlkN,EAVhBr8C,EAAOD,SAUSs8C,EAVmB,EAAQ,IAAW,EAAQ,KAAiB,EAAQ,KAAU,EAAQ,KAAa,EAAQ,IAY9H,WAEG,IAAIP,EAAIO,EAEJsjN,EADQ7jN,EAAEQ,IACWqjN,aACrBzjN,EAASJ,EAAES,KAGX8iG,EAAK,GACLihH,EAAK,GACLphH,EAAK,GASLmiH,EAAenlN,EAAOmlN,aAAe1B,EAAa57O,OAAO,CACzDo/B,SAAU,WAEN,IAAIi8F,EAAI96I,KAAKuE,KAAKq0C,MACds7I,EAAKl0L,KAAKk4C,IAAIg8I,GAGdhoB,EAAIlsK,KAAKk8P,GAAK,CACdphH,EAAE,GAAKA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAC/BA,EAAE,GAAKA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAC/BA,EAAE,GAAKA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAC/BA,EAAE,GAAKA,EAAE,IAAM,GAAOA,EAAE,KAAO,IAI/BtjG,EAAIx3C,KAAKm8P,GAAK,CACbrhH,EAAE,IAAM,GAAOA,EAAE,KAAO,GAAa,WAAPA,EAAE,GAA2B,MAAPA,EAAE,GACtDA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAAa,WAAPA,EAAE,GAA2B,MAAPA,EAAE,GACtDA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAAa,WAAPA,EAAE,GAA2B,MAAPA,EAAE,GACtDA,EAAE,IAAM,GAAOA,EAAE,KAAO,GAAa,WAAPA,EAAE,GAA2B,MAAPA,EAAE,IAI3D96I,KAAKo8P,GAAK,EAGV,IAAK,IAAI1hQ,EAAI,EAAGA,EAAI,EAAGA,IACnB0jJ,EAAUpjJ,KAAKgF,MAInB,IAAStF,EAAI,EAAGA,EAAI,EAAGA,IACnB88C,EAAE98C,IAAMwxK,EAAGxxK,EAAI,EAAK,GAIxB,GAAIw5L,EAAI,CAEJ,IAAImoE,EAAKnoE,EAAGt7I,MACR0jN,EAAOD,EAAG,GACVE,EAAOF,EAAG,GAGVG,EAAsC,UAA9BF,GAAQ,EAAMA,IAAS,IAAsD,YAA9BA,GAAQ,GAAOA,IAAS,GAC/EG,EAAsC,UAA9BF,GAAQ,EAAMA,IAAS,IAAsD,YAA9BA,GAAQ,GAAOA,IAAS,GAC/EG,EAAMF,IAAO,GAAY,WAALC,EACpBE,EAAMF,GAAM,GAAa,MAALD,EAaxB,IAVAhlN,EAAE,IAAMglN,EACRhlN,EAAE,IAAMklN,EACRllN,EAAE,IAAMilN,EACRjlN,EAAE,IAAMmlN,EACRnlN,EAAE,IAAMglN,EACRhlN,EAAE,IAAMklN,EACRllN,EAAE,IAAMilN,EACRjlN,EAAE,IAAMmlN,EAGCjiQ,EAAI,EAAGA,EAAI,EAAGA,IACnB0jJ,EAAUpjJ,KAAKgF,QAK3B++C,gBAAiB,SAAUhyB,EAAG8O,GAE1B,IAAIqwI,EAAIlsK,KAAKk8P,GAGb99G,EAAUpjJ,KAAKgF,MAGf+6I,EAAE,GAAKmxB,EAAE,GAAMA,EAAE,KAAO,GAAOA,EAAE,IAAM,GACvCnxB,EAAE,GAAKmxB,EAAE,GAAMA,EAAE,KAAO,GAAOA,EAAE,IAAM,GACvCnxB,EAAE,GAAKmxB,EAAE,GAAMA,EAAE,KAAO,GAAOA,EAAE,IAAM,GACvCnxB,EAAE,GAAKmxB,EAAE,GAAMA,EAAE,KAAO,GAAOA,EAAE,IAAM,GAEvC,IAAK,IAAIxxK,EAAI,EAAGA,EAAI,EAAGA,IAEnBqgJ,EAAErgJ,GAAuC,UAA/BqgJ,EAAErgJ,IAAM,EAAOqgJ,EAAErgJ,KAAO,IACO,YAA/BqgJ,EAAErgJ,IAAM,GAAOqgJ,EAAErgJ,KAAO,GAGlCqyB,EAAE8O,EAASnhC,IAAMqgJ,EAAErgJ,IAI3BgtI,UAAW,EAEXkzH,OAAQ,IAGZ,SAASx8G,IAML,IAJA,IAAI8tB,EAAIlsK,KAAKk8P,GACT1kN,EAAIx3C,KAAKm8P,GAGJzhQ,EAAI,EAAGA,EAAI,EAAGA,IACnBshQ,EAAGthQ,GAAK88C,EAAE98C,GAed,IAXA88C,EAAE,GAAMA,EAAE,GAAK,WAAax3C,KAAKo8P,GAAM,EACvC5kN,EAAE,GAAMA,EAAE,GAAK,YAAeA,EAAE,KAAO,EAAMwkN,EAAG,KAAO,EAAK,EAAI,GAAM,EACtExkN,EAAE,GAAMA,EAAE,GAAK,WAAeA,EAAE,KAAO,EAAMwkN,EAAG,KAAO,EAAK,EAAI,GAAM,EACtExkN,EAAE,GAAMA,EAAE,GAAK,YAAeA,EAAE,KAAO,EAAMwkN,EAAG,KAAO,EAAK,EAAI,GAAM,EACtExkN,EAAE,GAAMA,EAAE,GAAK,YAAeA,EAAE,KAAO,EAAMwkN,EAAG,KAAO,EAAK,EAAI,GAAM,EACtExkN,EAAE,GAAMA,EAAE,GAAK,WAAeA,EAAE,KAAO,EAAMwkN,EAAG,KAAO,EAAK,EAAI,GAAM,EACtExkN,EAAE,GAAMA,EAAE,GAAK,YAAeA,EAAE,KAAO,EAAMwkN,EAAG,KAAO,EAAK,EAAI,GAAM,EACtExkN,EAAE,GAAMA,EAAE,GAAK,YAAeA,EAAE,KAAO,EAAMwkN,EAAG,KAAO,EAAK,EAAI,GAAM,EACtEh8P,KAAKo8P,GAAM5kN,EAAE,KAAO,EAAMwkN,EAAG,KAAO,EAAK,EAAI,EAGpCthQ,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAIkiQ,EAAK1wF,EAAExxK,GAAK88C,EAAE98C,GAGdmiQ,EAAU,MAALD,EACLE,EAAKF,IAAO,GAGZr4F,IAASs4F,EAAKA,IAAQ,IAAMA,EAAKC,IAAQ,IAAMA,EAAKA,EACpDt4F,IAAa,WAALo4F,GAAmBA,EAAM,KAAa,MAALA,GAAmBA,EAAM,GAGtEhiH,EAAElgJ,GAAK6pK,EAAKC,EAIhB0H,EAAE,GAAMtxB,EAAE,IAAOA,EAAE,IAAM,GAAOA,EAAE,KAAO,KAASA,EAAE,IAAM,GAAOA,EAAE,KAAO,IAAQ,EAClFsxB,EAAE,GAAMtxB,EAAE,IAAOA,EAAE,IAAM,EAAOA,EAAE,KAAO,IAAOA,EAAE,GAAM,EACxDsxB,EAAE,GAAMtxB,EAAE,IAAOA,EAAE,IAAM,GAAOA,EAAE,KAAO,KAASA,EAAE,IAAM,GAAOA,EAAE,KAAO,IAAQ,EAClFsxB,EAAE,GAAMtxB,EAAE,IAAOA,EAAE,IAAM,EAAOA,EAAE,KAAO,IAAOA,EAAE,GAAM,EACxDsxB,EAAE,GAAMtxB,EAAE,IAAOA,EAAE,IAAM,GAAOA,EAAE,KAAO,KAASA,EAAE,IAAM,GAAOA,EAAE,KAAO,IAAQ,EAClFsxB,EAAE,GAAMtxB,EAAE,IAAOA,EAAE,IAAM,EAAOA,EAAE,KAAO,IAAOA,EAAE,GAAM,EACxDsxB,EAAE,GAAMtxB,EAAE,IAAOA,EAAE,IAAM,GAAOA,EAAE,KAAO,KAASA,EAAE,IAAM,GAAOA,EAAE,KAAO,IAAQ,EAClFsxB,EAAE,GAAMtxB,EAAE,IAAOA,EAAE,IAAM,EAAOA,EAAE,KAAO,IAAOA,EAAE,GAAM,EAW5DpjG,EAAEulN,aAAe1B,EAAar6M,cAAc+7M,GAxKhD,GA4KOhlN,EAASglN,e,oBC3LjBrhQ,EAAOD,QAAU,IAA0B,wC,iCCA3C,WAsBIuhQ,EAtBJ,OAwBAniQ,OAAOyD,eAAe,WAAU,SAAU,CACxCE,IAAK,WACH,OAAOw+P,IAAWA,EAAS,EAAQ,KAA0BC,gBAE/D93O,IAAK,SAASvmB,GACZo+P,EAASp+P,M,gCCrBb,sD,iCCRA,gLACQ6vN,EADR,uBAAIC,GACID,EAAgB5zN,OAAOkd,gBACtB,CAAEC,UAAW,cAAgBtX,OAAS,SAAUvC,EAAGwT,GAAKxT,EAAE6Z,UAAYrG,IACvE,SAAUxT,EAAGwT,GAAK,IAAK,IAAI/U,KAAK+U,EAAOA,EAAE5W,eAAe6B,KAAIuB,EAAEvB,GAAK+U,EAAE/U,KAClE,SAAUuB,EAAGwT,GAEhB,SAASszF,IAAOjlG,KAAKgB,YAAc7C,EADnCswN,EAActwN,EAAGwT,GAEjBxT,EAAErD,UAAkB,OAAN6W,EAAa9W,OAAOoE,OAAO0S,IAAMszF,EAAGnqG,UAAY6W,EAAE7W,UAAW,IAAImqG,KAGnF3zB,EAAwC,SAAUC,EAASC,EAAYC,EAAGC,GAC1E,OAAO,IAAKD,IAAMA,EAAIz1E,KAAU,SAAUC,EAASC,GAC/C,SAASy1E,EAAU/yE,GAAS,IAAM6K,EAAKioE,EAAUzuE,KAAKrE,IAAW,MAAOhD,GAAKM,EAAON,IACpF,SAASwN,EAASxK,GAAS,IAAM6K,EAAKioE,EAAiB,MAAE9yE,IAAW,MAAOhD,GAAKM,EAAON,IACvF,SAAS6N,EAAKsG,GAAUA,EAAOyqD,KAAOv+D,EAAQ8T,EAAOnR,OAAS,IAAI6yE,GAAE,SAAUx1E,GAAWA,EAAQ8T,EAAOnR,UAAWuE,KAAKwuE,EAAWvoE,GACnIK,GAAMioE,EAAYA,EAAUztE,MAAMstE,EAASC,GAAc,KAAKvuE,YAGlE2uE,EAA4C,SAAUL,EAASp2D,GAC/D,IAAsG4+C,EAAG3vC,EAAGvrB,EAAGgzE,EAA3Gh4D,EAAI,CAAEi4D,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPlzE,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOmzE,KAAM,GAAIC,IAAK,IAChG,OAAOJ,EAAI,CAAE5uE,KAAMivE,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXxzE,SAA0BmzE,EAAEnzE,OAAOoC,UAAY,WAAa,OAAOd,OAAU6xE,EACvJ,SAASK,EAAK9yE,GAAK,OAAO,SAAU6kE,GAAK,OACzC,SAAckO,GACV,GAAIpY,EAAG,MAAM,IAAIjiD,UAAU,mCAC3B,KAAO+B,GAAG,IACN,GAAIkgD,EAAI,EAAG3vC,IAAMvrB,EAAY,EAARszE,EAAG,GAAS/nD,EAAU,OAAI+nD,EAAG,GAAK/nD,EAAS,SAAOvrB,EAAIurB,EAAU,SAAMvrB,EAAE7D,KAAKovB,GAAI,GAAKA,EAAEnnB,SAAWpE,EAAIA,EAAE7D,KAAKovB,EAAG+nD,EAAG,KAAK3X,KAAM,OAAO37D,EAE3J,OADIurB,EAAI,EAAGvrB,IAAGszE,EAAK,CAAS,EAARA,EAAG,GAAQtzE,EAAED,QACzBuzE,EAAG,IACP,KAAK,EAAG,KAAK,EAAGtzE,EAAIszE,EAAI,MACxB,KAAK,EAAc,OAAXt4D,EAAEi4D,QAAgB,CAAElzE,MAAOuzE,EAAG,GAAI3X,MAAM,GAChD,KAAK,EAAG3gD,EAAEi4D,QAAS1nD,EAAI+nD,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKt4D,EAAEo4D,IAAItd,MAAO96C,EAAEm4D,KAAKrd,MAAO,SACxC,QACI,KAAM91D,EAAIgb,EAAEm4D,MAAMnzE,EAAIA,EAAEjE,OAAS,GAAKiE,EAAEA,EAAEjE,OAAS,KAAkB,IAAVu3E,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEt4D,EAAI,EAAG,SACjG,GAAc,IAAVs4D,EAAG,MAActzE,GAAMszE,EAAG,GAAKtzE,EAAE,IAAMszE,EAAG,GAAKtzE,EAAE,IAAM,CAAEgb,EAAEi4D,MAAQK,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYt4D,EAAEi4D,MAAQjzE,EAAE,GAAI,CAAEgb,EAAEi4D,MAAQjzE,EAAE,GAAIA,EAAIszE,EAAI,MAC7D,GAAItzE,GAAKgb,EAAEi4D,MAAQjzE,EAAE,GAAI,CAAEgb,EAAEi4D,MAAQjzE,EAAE,GAAIgb,EAAEo4D,IAAI/2E,KAAKi3E,GAAK,MACvDtzE,EAAE,IAAIgb,EAAEo4D,IAAItd,MAChB96C,EAAEm4D,KAAKrd,MAAO,SAEtBwd,EAAKh3D,EAAKngB,KAAKu2E,EAAS13D,GAC1B,MAAOje,GAAKu2E,EAAK,CAAC,EAAGv2E,GAAIwuB,EAAI,EAAK,QAAU2vC,EAAIl7D,EAAI,EACtD,GAAY,EAARszE,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEvzE,MAAOuzE,EAAG,GAAKA,EAAG,QAAK,EAAQ3X,MAAM,GArB9B/wD,CAAK,CAACrK,EAAG6kE,OA8BzDi5L,EAAoC,WACpC,SAASA,KAsBT,OAdAA,EAAmBpiQ,UAAUqiQ,aAAe,SAAU7zG,EAAQ8zG,GAC1D,OAAO9rL,EAAUtxE,UAAM,OAAQ,GAAQ,WACnC,IAAIkpD,EACJ,OAAO0oB,EAAY5xE,MAAM,SAAUgqB,GAC/B,OAAQA,EAAG8nD,OACP,KAAK,EAAG,MAAO,CAAC,EAAaw3E,EAAOG,SAAS2zG,EAAMC,UACnD,KAAK,EAGD,OAFAn0M,EAAOl/B,EAAG+nD,OACVqrL,EAAMp6K,SAAW,MAAIs6K,yBAAyBp0M,GACvC,CAAC,WAKrBg0M,EAvB4B,GA0BhC,SAASK,EAAsBC,EAAeljQ,GACjD,IACI4E,EACAu+P,EAFAjgQ,EAASggQ,EAOb,GAJIhgQ,EAAOkgQ,eACPlgQ,EAASA,EAAOq4D,SAEpB,IAAO1wC,IAAI3nB,EAAQ,IAAI,IAAOlD,EAAU,YAClB,iBAAXkD,EACP,IAAK0B,KAAO1B,EAEqB,mBAD7BigQ,EAAgBjgQ,EAAO0B,KAEnB,IAAOimB,IAAIs4O,EAAe,IAAI,IAAOnjQ,EAAU4E,IAI3D,OAAOs+P,EAKX,IAAIP,EAA+B,SAAUruC,GAEzC,SAASquC,IACL,IAAIt3P,EAAQipN,EAAO5zN,KAAKgF,OAASA,KAwDjC,OAvDA2F,EAAMg4P,eAAiB9iQ,OAAOoE,OAAO,MACrC0G,EAAMi4P,cAAgB/iQ,OAAOoE,OAAO,MACpC0G,EAAMk4P,mBAAqB,IAAInxN,IAC/B/mC,EAAMm4P,kBAAkB,IAAIZ,GAC5Bv3P,EAAMo4P,UAAU,0BAA2B,CACvCviP,MAAO,SAAUlhB,GAAY,OAAOg3E,EAAU3rE,OAAO,OAAQ,GAAQ,WACjE,IAAgBy3P,EAEhB,OAAOxrL,EAAY5xE,MAAM,SAAUgqB,GAC/B,OAAQA,EAAG8nD,OACP,KAAK,EAmBD,OADAsrL,EAAQp9P,KAAKg+P,iCAAiC1jQ,IAClC2jQ,iBAAyB,CAAC,EAAa,GAC5C,CAAC,EAAaj+P,KAAKk+P,eAAef,aAAan9P,KAAMo9P,IAChE,KAAK,EACDpzO,EAAG+nD,OACH/nD,EAAG8nD,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAcsrL,aAK9C,WAASpwN,WAAa,SAAU/lB,GAC5B,IAAIk3O,EAAW3iQ,EAAoB0C,EACbrD,OAAOo/B,oBAAoBkkO,GAM5Ct/O,MAAK,SAAUvkB,GAChB,IAAIkjQ,EAAgBW,EAAS7jQ,GAAUmB,QACvC,MAA6B,iBAAlB+hQ,GACAv2O,EAAS3sB,EAAUkjQ,OAK/B73P,EAmKX,OA7NA+oN,EAAUuuC,EAAeruC,GA4DzBquC,EAAcniQ,UAAUsjQ,QAAU,SAAUf,EAASgB,GAEjD,YADmB,IAAfA,IAAyBA,GAAa,GACnC/sL,EAAUtxE,UAAM,OAAQ,GAAQ,WACnC,IAAIs+P,EAAchkQ,EAAUikQ,EAAcC,EAAUC,EAAex3O,EAC/DthB,EAAQ3F,KACZ,OAAO4xE,EAAY5xE,MAAM,SAAUgqB,GAC/B,OAAQA,EAAG8nD,OACP,KAAK,EAID,GAHAwsL,EAAejB,EAAQ/xO,MAAM,KAC7BhxB,EAAWgkQ,EAAannP,OAAOmnP,EAAa1jQ,OAAS,EAAG,GAAG,KAC3D2jQ,EAAuC,IAAxBD,EAAa1jQ,OAAe0jQ,EAAa,GAAK,MAC1C,MAAO,CAAC,EAAa,GAExC,KADAE,EAAWx+P,KAAK49P,cAAcW,IAE1B,MAAM,IAAIxhQ,MAAM,UAAYwhQ,EAAe,qCAK/C,MAAO,CAAC,EAAaC,EAAShjP,MAAMlhB,IACxC,KAAK,EAAG,MAAO,CAAC,EAAc0vB,EAAG+nD,QACjC,KAAK,EACD,OAAIv2E,EAAoByC,EAAE3D,IAClB+jQ,GAAc3iQ,EAAOgjQ,KAAO1+P,KAAK2+P,YACjCjjQ,EAAOgjQ,IAAItoG,OAAO97J,GAAU,WAAc,OAAOqL,EAAMg5P,WAAWC,mBAAmBtkQ,EAAUoB,EAAOgjQ,QAEnG,CAAC,EAAcljQ,EAAoBlB,MAE9CmkQ,EAAgB,SAAWnkQ,EACtBkB,EAAoByC,EAAEwgQ,IACvBJ,GAAc3iQ,EAAOgjQ,KAAO1+P,KAAK2+P,aACjCjjQ,EAAOgjQ,IAAItoG,OAAO97J,GAAU,WAAc,OAAOqL,EAAMg5P,WAAWC,mBAAmBtkQ,EAAUoB,EAAOgjQ,QACtGhjQ,EAAOgjQ,IAAItoG,OAAOqoG,GAAe,WAAc,OAAO94P,EAAMg5P,WAAWC,mBAAmBtkQ,EAAUoB,EAAOgjQ,SAE/Gz3O,EAAWzrB,EAAoBijQ,GACxB,CAAC,EAAa,IAAIziQ,EAAQirB,KANiB,CAAC,EAAa,IAOpE,KAAK,EAAG,MAAO,CAAC,EAAc+C,EAAG+nD,QACjC,KAAK,EAAG,MAAM,IAAIh1E,MAAM,kCAAoCzC,WAU5E2iQ,EAAcniQ,UAAU6J,IAAM,SAAU4X,EAAI8nB,KAO5C44N,EAAcniQ,UAAU+jQ,cAAgB,SAAUvkQ,EAAUwkQ,GACxD,OAAOxkQ,GAQX2iQ,EAAcniQ,UAAUwqO,UAAY,SAAUhrO,EAAUwkQ,GACpD,OAAO9iQ,EAAQC,QAAQ3B,IAM3B2iQ,EAAcniQ,UAAUgjQ,kBAAoB,SAAUI,GAClDl+P,KAAKk+P,eAAiBA,GAO1BjB,EAAcniQ,UAAUikQ,eAAiB,SAAUpgL,GAC/C,IAAIh5E,EAAQ3F,KACZ,OAAOhE,EAAQgC,IAAI2gF,EAAIh6E,KAAI,SAAU4X,GAAM,OAAO5W,EAAMq5P,WAAWziP,QAOvE0gP,EAAcniQ,UAAUkkQ,WAAa,SAAU1kQ,EAAU+jQ,GAErD,YADmB,IAAfA,IAAyBA,GAAa,GACnC/sL,EAAUtxE,UAAM,OAAQ,GAAQ,WACnC,IAAIusP,EAAU0S,EAAazB,EAC3B,OAAO5rL,EAAY5xE,MAAM,SAAUgqB,GAC/B,OAAQA,EAAG8nD,OACP,KAAK,EAED,OADAy6K,EAAWvsP,KAAK29P,eAAerjQ,IAEpB,CAAC,EAAciyP,IAE1B0S,EAAcj/P,KAAK69P,mBAAmBr/P,IAAIlE,IAE/B,CAAC,EAAc2kQ,IAE1BA,EAAcj/P,KAAKo+P,QAAQ9jQ,EAAU+jQ,GACrCr+P,KAAK69P,mBAAmB14O,IAAI7qB,EAAU2kQ,GAC/B,CAAC,EAAaA,IACzB,KAAK,EAID,OAHAzB,EAAgBxzO,EAAG+nD,OACnB/xE,KAAK29P,eAAerjQ,GAAYijQ,EAAsBC,EAAeljQ,GACrE0F,KAAK69P,mBAAmB/gP,OAAOxiB,GACxB,CAAC,EAAckjQ,WAU1CP,EAAcniQ,UAAUqiQ,aAAe,SAAU10P,GAC7C,OAAOzI,KAAKg/P,WAAWh/P,KAAKk/P,iBAAiBz2P,EAAK,4BAA4B,IAOlFw0P,EAAcniQ,UAAU2uJ,SAAW,SAAUhhJ,GACzC,OAAO6oE,EAAUtxE,UAAM,OAAQ,GAAQ,WACnC,IAAI+P,EACJ,OAAO6hE,EAAY5xE,MAAM,SAAUgqB,GAC/B,OAAQA,EAAG8nD,OACP,KAAK,EAAG,MAAO,CAAC,EAAa9xE,KAAKg/P,WAAWv2P,GAAK,IAClD,KAAK,EAED,OADAsH,EAASia,EAAG+nD,kBACUrxE,OAASqP,EAAO,aAAcrP,OAASqP,EAAOhV,eAAe,YAExE,CAAC,EAAcgV,EAAOiP,YAE1B,CAAC,EAAcjP,WAW1CktP,EAAcniQ,UAAUokQ,iBAAmB,SAAUz2P,EAAK02P,GACtD,OAAOA,EAAa,IAAM12P,GAO9Bw0P,EAAcniQ,UAAUijQ,UAAY,SAAUoB,EAAYn/H,GACtDhgI,KAAK49P,cAAcuB,GAAcn/H,GAE9Bi9H,EA9NuB,CA+NhC,KAEF,WAASD,OAASC,G,6CCnUlBvhQ,EAAOD,QAAU,SAAS2jQ,GACzB,IAAKA,EAAevmD,gBAAiB,CACpC,IAAIn9M,EAASb,OAAOoE,OAAOmgQ,GAEtB1jQ,EAAOk0C,WAAUl0C,EAAOk0C,SAAW,IACxC/0C,OAAOyD,eAAe5C,EAAQ,SAAU,CACvC6C,YAAY,EACZC,IAAK,WACJ,OAAO9C,EAAOC,KAGhBd,OAAOyD,eAAe5C,EAAQ,KAAM,CACnC6C,YAAY,EACZC,IAAK,WACJ,OAAO9C,EAAOhB,KAGhBG,OAAOyD,eAAe5C,EAAQ,UAAW,CACxC6C,YAAY,IAEb7C,EAAOm9M,gBAAkB,EAE1B,OAAOn9M,I,iCCtBR,0HAGI2jQ,EAAoB,GACpBC,OAAe,EAEfC,EAAe,IAAIvjQ,GAAQ,SAAUC,GACvC,OAAOqjQ,EAAerjQ,KAEpB6gI,EAAO,WAAS9wD,OAChBwzL,OAAgC,IAAZv4P,IAA4BA,EAAQqvC,QAmB5D,SAASmpN,IACP,OAAI,WAASzC,OACJhhQ,EAAQC,QAAQ,IAAI,WAAS+gQ,QAiC/BhhQ,EAAQE,OAAO,qIAuBxB,SAASwjQ,EAAgBp2G,GACvB,IAAI3kJ,EAAM,SAAarK,EAAUwkQ,GAC/B,OAAOx1G,EAAOg8E,UAAUhrO,EAAUwkQ,GAAY37P,MAAK,SAAUs5M,GAE3D,OADAnzD,EAAO3kJ,IAAIrK,EAAUmiN,GACdA,MAIX,OA5BF,SAAuBnzD,GACrB,IAAIhsJ,OAAO,EAEPqiQ,EAAaH,IAAgC,aAAjBv4P,EAAQ3J,MAAuB2J,EAAQwvC,SAAS,gBAEhF,GAAI+oN,IAAeG,EACjBriQ,EAAO,cACF,GAAsB,oBAAXqC,OAChBrC,EAAO,cACF,IAAoB,oBAATma,KAGhB,MAAM,IAAI1a,MAAM,wDAFhBO,EAAO,SAKT,OAAOgsJ,EAAO01G,WAAW,eAAiB1hQ,GAAM6F,MAAK,SAAUy8P,GAC7D,MAAgB,WAATtiQ,IAAsB,iBAAiBsiQ,EAAUC,aAAeD,EAAUr/K,gBAY5Eu/K,CAAcx2G,GAAQnmJ,MAAK,WAChC,OAAOmmJ,EAAOg8E,UAAU,2BACvBniO,MAAK,SAAU48P,GAChB,IAAIC,EAAmBr7P,EAAI,oBAAoEo7P,GAE/F,OAAO/jQ,EAAQgC,IAAI,CAACgiQ,EAAkBA,EAAiB78P,MAAK,SAAU88P,GACpE,OAAOt7P,EAAI,+BAAgCs7P,MACzCt7P,EAAI,iBAAkBo7P,GAAmBp7P,EAAI,0BAA2Bo7P,QAC3E58P,MAAK,SAAUorD,GAChB,IAAI0xM,EAAgB1xM,EAAK,GACzB,OAAO+6F,EAAO01G,WAAWiB,MACxB98P,MAAK,SAAUqvH,GAChB,OAAO8sI,GAAa,WAClB,OAAO,IAAI9sI,EAAG0tI,QAAQ52G,SAK5B,SAAS9mJ,EAAO29P,EAASC,EAAgB15F,GAIvC,OAHAA,EAAQ5pC,KAAOqjI,EACfz5F,EAAQ05F,eAAiBA,GAAkB,KAEvCA,EACK15F,EAAQpd,OAAO01G,WAAWoB,GAAgBj9P,MAAK,SAAUk9P,GAC9D,IAAKA,EAAazwP,UAChB,MAAM,IAAI7S,MAAM,6BAAgCqjQ,EAAiB,mCAGnE,OAAOC,EAAazwP,UAAU82J,OAIlCA,EAAQxoG,IAAIoiM,wBAAwBC,qBAE7B75F,EAAQphH,QAAQniD,MAAK,WAC1B,OAAOujK,EAAQ85F,cAsBZ,SAASpiL,EAAUxuE,GACxB,IAAIhT,EAAI2iQ,EAAap8P,MAAK,SAAUolC,GAClC,OAAO34B,EAAU24B,QAGnB,OADI82N,GAAmBA,EAAkBnkQ,KAAK0B,GACvCA,EAGF,IAAI6jQ,GAnJJ3jI,EAAKzgI,UAAyC,aAA7BygI,EAAKzgI,SAAS0+C,WAI7B,IAAI/+C,GAAQ,SAAUC,GAI3B,SAASiN,IACP4zH,EAAKzgI,SAASqmH,oBAAoB,mBAAoBx5G,GACtD4zH,EAAKpa,oBAAoB,OAAQx5G,GACjCjN,IANF6gI,EAAKzgI,SAAS6zG,iBAAiB,mBAAoBhnG,GACnD4zH,EAAK5sB,iBAAiB,OAAQhnG,MALvBlN,EAAQC,WAyHFkH,KAAKs8P,GAAct8P,KAAKu8P,GAAiBv8P,MAAK,WAE3D,IADA,IAAIu9P,EAAW5jI,EAAKzgI,SAAS85G,iBAAiB,oCACrCz7G,EAAI,EAAGiI,EAAK+9P,EAAS9lQ,OAAQF,EAAIiI,IAAMjI,EAAG,CACjD,IAAIylQ,EAAUO,EAAShmQ,GACnBJ,EAAW6lQ,EAAQ/4L,aAAa,gBAAkB+4L,EAAQ/4L,aAAa,oBAC3EgX,EAAU57E,EAAOrD,KAAK,KAAMghQ,EAAS7lQ,IAGvC,IAAIqmQ,EAAYlhQ,QAAQ3C,MAAMqC,KAAKM,SAC/BmhQ,EAAavB,EAAkB16P,KAAI,SAAU/H,GAC/C,OAAOA,EAAEqP,MAAM00P,MAGjB,OADAtB,EAAoB,KACbrjQ,EAAQgC,IAAI4iQ,O,yDCpJvB,IAiNa55M,EAKL5lD,EAJAy/P,EACAC,EACA9hP,EACArgB,EA2GEoiQ,EAGAC,EA8bF7hQ,EAsDA8hQ,EAvzBR,OAAIpgQ,EAA4B,mBAAXnC,QAAoD,iBAApBA,OAAOoC,SAAwB,SAAUC,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAXrC,QAAyBqC,EAAIC,cAAgBtC,OAAS,gBAAkBqC,GAIzM,oBAAtBmgQ,oBAET,SAAWrmQ,EAAQsmQ,GAGjB,KAAIA,KAAQtmQ,GAAZ,CAEA,IAAIumQ,EACAxmH,EAAI,WAAS5uE,OACbzvD,EAAK,EACL89D,EAAS,GAAKl3D,KAAKk3D,SACnB14C,EAAS,aACT4vM,EAAe5vM,EAAO/mC,OACtBymQ,EAAiB,cAAmBhnL,EACpCinL,EAAK,iBACLC,EAAQ,mBACRC,EAAO,sBACPC,EAAO,2BACPC,EAAM,uBACNC,EAAO9mQ,EAAO2mQ,GACdI,EAAO/mQ,EAAO4mQ,GACdxiQ,EAASpE,EAAOoE,OAChBsV,EAAO1Z,EAAO0Z,KACdjW,EAAiBzD,EAAOymQ,GACxBO,EAAoBhnQ,EAAO0mQ,GAC3BngQ,EAAawgQ,EAAK/mQ,EAAQ2mQ,GAC1BV,EAAcjmQ,EAAOC,UACrBgnQ,EAAMhB,EAAY/lQ,eAClBgnQ,EAAMjB,EAAYY,GAClB1iP,EAAW8hP,EAAY9hP,SAKvBgjP,GAJUthQ,MAAM5F,UAAUuW,QAIJ,SAA6BhT,EAAGolH,EAAKllH,GACxDujQ,EAAI9mQ,KAAKqD,EAAGgjQ,IACf/iQ,EAAeD,EAAGgjQ,EAAgB,CAChC9iQ,YAAY,EACZ8C,cAAc,EACdC,UAAU,EACV1C,MAAO,KAGXP,EAAEgjQ,GAAgB,KAAO59I,GAAOllH,IAE9B0jQ,EAAoB,SAA2B5iO,EAAO6iO,GACxD,IAAIzqP,EAAOxY,EAAOogC,GAQlB,OAPoB,OAAhB6iO,GAAsG,iBAAtD,IAAhBA,EAA8B,YAAcrhQ,EAAQqhQ,KACtFP,EAAKO,GAAa/6P,SAAQ,SAAUjI,GAC9B42O,EAAqB96O,KAAKknQ,EAAahjQ,IACzCijQ,EAAgB1qP,EAAMvY,EAAKgjQ,EAAYhjQ,OAItCuY,GAOLjZ,EAAM,aACN4jQ,EAAiB,SAAwB1kQ,GAC3C,OAAOA,GAAQ2jQ,IAAmBS,EAAI9mQ,KAAKqpC,EAAQ3mC,IAEjD2kQ,EAAc,SAAqB3kQ,GACrC,OAAOA,GAAQ2jQ,GAAkBS,EAAI9mQ,KAAKqpC,EAAQ3mC,IAEhDo4O,EAAuB,SAA8B52O,GACvD,IAAIukH,EAAM,GAAKvkH,EACf,OAAOmjQ,EAAY5+I,GAAOq+I,EAAI9mQ,KAAKgF,KAAMyjH,IAAQzjH,KAAKqhQ,IAAmBrhQ,KAAKqhQ,GAAgB,KAAO59I,GAAOs+I,EAAI/mQ,KAAKgF,KAAMd,IAEzHojQ,EAAkB,SAAyB7+I,GAgB7C,OADAnlH,EAAewiQ,EAAar9I,EAdX,CACfllH,YAAY,EACZ8C,cAAc,EACd7C,IAAKA,EACL2mB,IAAK,SAAavmB,GAChBwiQ,EAAcphQ,KAAMyjH,EAAK,CACvBllH,YAAY,EACZ8C,cAAc,EACdC,UAAU,EACV1C,MAAOA,IAETojQ,EAAoBhiQ,KAAMyjH,GAAK,MAI5Bp/E,EAAOo/E,GAAOnlH,EAAezD,EAAO4oH,GAAM,cAAe8+I,IAE9DC,EAAU,SAAkBC,GAC9B,GAAIziQ,MAAQA,OAAS46I,EACnB,MAAM,IAAI9iI,UAAU,+BAEtB,OAAOwqP,EAAgB3gO,EAAOx9B,OAAOs+P,GAAe,GAAIpoL,IAAU99D,KAEhE8nB,EAASplC,EAAO,MAChBsjQ,EAAoB,CAAE3jQ,MAAO4jQ,GAC7B1lN,EAAY,SAAmB2mE,GACjC,OAAOp/E,EAAOo/E,IAEZ0+I,EAAkB,SAAoB9jQ,EAAGa,EAAKkC,GAChD,IAAIqiH,EAAM,GAAKvkH,EAOf,OANImjQ,EAAY5+I,IACd29I,EAAc/iQ,EAAGolH,EAAKriH,EAAW7C,WAhDX,SAA6B6C,GACrD,IAAIshQ,EAAgBzjQ,EAAOmC,GAE3B,OADAshQ,EAAcnkQ,YAAa,EACpBmkQ,EA6CyCC,CAAoBvhQ,GAAcA,GAChF4gQ,EAAoB3jQ,EAAGolH,IAAOriH,EAAW7C,aAEzCD,EAAeD,EAAGa,EAAKkC,GAElB/C,GAELukQ,EAAyB,SAA+BvkQ,GAG1D,OADAA,EAAY,oBADF2gB,EAAShkB,KAAKqD,GACQA,EAAEitB,MAAM,IAAMzwB,EAAOwD,GAC9CsjQ,EAAKtjQ,GAAGwG,OAAOw9P,GAAa19P,IAAIm4C,IAGzC17C,EAAWxC,MAAQujQ,EACnB7jQ,EAAezD,EAAQymQ,EAAIlgQ,GAE3BA,EAAWxC,MAAQgkQ,EACnBtkQ,EAAezD,EAAQsmQ,EAAM//P,GAE7B,IAAIyhQ,EAAwF,YAAjD,oBAAXljQ,OAAyB,YAAckB,EAAQlB,SAAwB9E,EAAOo/B,oBAAoBt6B,QAAU,GACxImjQ,EAAoCjoQ,EAAOo/B,oBAC/C74B,EAAWxC,MAAQ,SAA6BP,GAC9C,GAAyB,oBAArB2gB,EAAShkB,KAAKqD,GAChB,IACE,OAAOykQ,EAAkCzkQ,GACzC,MAAOzC,GACP,MAAO,GAAGuI,OAAO,GAAI0+P,GAGzB,OAAOlB,EAAKtjQ,GAAGwG,OAAOu9P,IAExB9jQ,EAAezD,EAAQ2mQ,EAAMpgQ,GAE7BA,EAAWxC,MAAQ,SAA0BP,EAAG6jQ,GAC9C,IAAI16M,EAAUo7M,EAAuBV,GAUrC,OATI16M,EAAQ5sD,OACV2Z,EAAK2tP,GAAa/9P,OAAOqjD,GAASrgD,SAAQ,SAAUs8G,GAC9CqyH,EAAqB96O,KAAKknQ,EAAaz+I,IACzC0+I,EAAgB9jQ,EAAGolH,EAAKy+I,EAAYz+I,OAIxCo+I,EAAkBxjQ,EAAG6jQ,GAEhB7jQ,GAETC,EAAezD,EAAQ0mQ,EAAOngQ,GAE9BA,EAAWxC,MAAQk3O,EACnBx3O,EAAewiQ,EAAaY,EAAKtgQ,GAEjCA,EAAWxC,MAAQ4jQ,EACnBlkQ,EAAes8I,EAAG,SAAUx5I,GAE5BA,EAAWxC,MAAQ,SAAUM,GAC3B,IAAIukH,EAAM9hF,EAAOx9B,OAAOw9B,EAAQziC,EAAKm7E,GACrC,OAAOopC,KAAOq9I,EAAcz8N,EAAOo/E,GAAO6+I,EAAgB7+I,IAE5DnlH,EAAekkQ,EAAS,MAAOphQ,GAE/BA,EAAWxC,MAAQ,SAAUumD,GAC3B,OAAO28M,EAAI9mQ,KAAKqpC,EAAQ8gB,GAAUA,EAAOtlD,MAAqB,EAAf0xO,GAAmBl3J,EAAOz/E,aAAU,GAErF0D,EAAekkQ,EAAS,SAAUphQ,GAElCA,EAAWxC,MAAQ,SAAkCP,EAAGa,GACtD,IAAIkC,EAAawgQ,EAAKvjQ,EAAGa,GAIzB,OAHIkC,GAAcihQ,EAAYnjQ,KAC5BkC,EAAW7C,WAAau3O,EAAqB96O,KAAKqD,EAAGa,IAEhDkC,GAET9C,EAAezD,EAAQ4mQ,EAAMrgQ,GAE7BA,EAAWxC,MAAQ,SAAUygC,EAAO6iO,GAClC,OAA4B,IAArBpgQ,UAAUlH,OAAeqE,EAAOogC,GAAS4iO,EAAkB5iO,EAAO6iO,IAE3E5jQ,EAAezD,EAAQ,SAAUuG,GAEjCA,EAAWxC,MAAQ,WACjB,IAAIuwD,EAAMnwC,EAAShkB,KAAKgF,MACxB,MAAe,oBAARmvD,GAA6BkzM,EAAYriQ,MAAQ,kBAAoBmvD,GAE9E7wD,EAAewiQ,EAAa,WAAY1/P,GAExC,IACEggQ,EAAgBniQ,EAAOX,EAAe,GAAIqjC,EAAQ,CAChDnjC,IAAK,WACH,OAAOF,EAAe0B,KAAM2hC,EAAQ,CAAE/iC,OAAO,IAAS+iC,OAEtDA,IAAWrjC,EACf,MAAOykQ,GACP3B,EAAgB,SAAuB/iQ,EAAGa,EAAKkC,GAC7C,IAAI4hQ,EAAkBpB,EAAKd,EAAa5hQ,UACjC4hQ,EAAY5hQ,GACnBZ,EAAeD,EAAGa,EAAKkC,GACvB9C,EAAewiQ,EAAa5hQ,EAAK8jQ,MAtMvC,CAyMGnoQ,OAAQ,yBAEAmsD,EAsBRnsD,OAAQ6D,OArBLmiQ,EAAK75M,EAAE1oD,eACPwiQ,EAAc95M,EAAElsD,UAChBkkB,EAAW8hP,EAAY9hP,SAG3B,CAAC,WAAY,QAAS,UAAW,SAAU,QAAS,cAAe,qBAAsB,cAAe,UAAW,cAF/GrgB,EAAc,eAE6HwI,SAAQ,SAAUzJ,GAC/J,KAAMA,KAAQgB,QAEZ,OADAmiQ,EAAGniQ,OAAQhB,EAAM,CAAEkB,MAAOF,OAAOhB,KACzBA,GACN,KAAKiB,GACHyC,EAAa4lD,EAAEqI,yBAAyByxM,EAAa,aAC1CliQ,MAAQ,WACjB,IAAIuwD,EAAMnwC,EAAShkB,KAAKgF,MACpBijQ,EAAM,MAAOjjQ,UAAwCpC,EAAYoC,KAAKtB,OAAOC,aACjF,YAAsB,IAARskQ,EAAsB9zM,EAAM,WAAa8zM,EAAM,KAE/DpC,EAAGC,EAAa,WAAY1/P,OAOtC,SAAW8hQ,EAAIC,EAAIC,GAEjB,SAASC,IACP,OAAOrjQ,KAGJmjQ,EAAGD,KAAKC,EAAGD,GAAM,WACpB,IAAIxoQ,EAAI,EACJ+c,EAAOzX,KACPc,EAAW,CACbmC,KAAM,WACJ,IAAIu3D,EAAO/iD,EAAK7c,QAAUF,EAC1B,OAAO8/D,EAAO,CAAEA,KAAMA,GAAS,CAAEA,KAAMA,EAAM57D,MAAO6Y,EAAK/c,QAI7D,OADAoG,EAASoiQ,GAAMG,EACRviQ,IAGJsiQ,EAAGF,KAAKE,EAAGF,GAAM,WACpB,IAAII,EAAgBpmP,OAAOomP,cACvB7rP,EAAOzX,KACPtF,EAAI,EACJE,EAAS6c,EAAK7c,OACdkG,EAAW,CACbmC,KAAM,WACJ,IAAIu3D,EAAO5/D,GAAUF,EACjBwD,EAAIs8D,EAAO,GAAK8oM,EAAc7rP,EAAK8rP,YAAY7oQ,IAEnD,OADAA,GAAKwD,EAAEtD,OACA4/D,EAAO,CAAEA,KAAMA,GAAS,CAAEA,KAAMA,EAAM57D,MAAOV,KAIxD,OADA4C,EAASoiQ,GAAMG,EACRviQ,IAjCX,CAmCGpC,OAAOoC,SAAUJ,MAAM5F,UAAWoiB,OAAOpiB,YAGb,oBAAtBomQ,oBAETn9M,OAAOziC,MAAQyiC,OAAOziC,OAAS,SAAU1iB,GACvC,OAAOA,GAAUA,GAGnBmlD,OAAOtgC,SAAWsgC,OAAOtgC,UAAY,SAAU7kB,GAC7C,MAAwB,iBAAVA,GAAsB6kB,SAAS7kB,KAI5Cse,OAAOpiB,UAAU23N,WAAY,WAChC,IACE,OAAQ,KAAKA,SAAS,IAAK,GAC3B,MAAO72N,GACP,OAAO,GAJuB,KAOhCshB,OAAOpiB,UAAU23N,SAAW,SAAU0d,EAAcxgH,GAClD,IAAIygH,EAAgBpwO,KAAKgf,YACD,iBAAb2wG,IAA0BlsG,SAASksG,IAAaxsG,KAAKE,MAAMssG,KAAcA,GAAYA,EAAWygH,EAAcx1O,UACvH+0H,EAAWygH,EAAcx1O,QAE3B+0H,GAAYwgH,EAAav1O,OACzB,IAAIitB,EAAYuoN,EAAc/+N,QAAQ8+N,EAAcxgH,GACpD,OAAsB,IAAf9nG,GAAoBA,IAAc8nG,IAIxCzyG,OAAOpiB,UAAUq4E,aAAc,WAClC,IACE,OAAQ,KAAKA,WAAW,IAAK,GAC7B,MAAOv3E,GACP,OAAO,GAJyB,KAOlCshB,OAAOpiB,UAAUq4E,WAAa,SAAUg9J,EAAcxgH,GAEpD,OADAA,EAAWA,GAAY,EAChB3vH,KAAKsF,OAAOqqH,EAAUwgH,EAAav1O,UAAYu1O,IAIzB,oBAAtB+wB,oBAEJxgQ,MAAM0hB,OACT1hB,MAAM0hB,MAIA2+O,EAAW,SAAkB/rL,GAC/B,OAAOA,EAAK,EAAI7xD,KAAKW,IAJP,SAAmBkxD,GACjC,OAAO1zD,MAAM0zD,GAAMA,GAAM,GAAKA,EAAK,EAAI7xD,KAAKE,MAAQF,KAAKC,MAAM4xD,GAGtCwuL,CAAUxuL,GAAK,kBAAoB,GAE1DgsL,EAAW,SAAkBzwC,EAAMjxM,EAAI7e,EAAKkJ,GAC9C,IACE,OAAO2V,EAAG7e,EAAKkJ,GACf,MAAOwrB,GAEP,KAD0B,mBAAfo7L,EAAKkzC,QAAsBlzC,EAAKkzC,SACrCtuO,IAIH,SAAcuuO,GACnB,IAOI9oQ,EACAmV,EACAtG,EACA3I,EAVAkmD,EAAInsD,OAAO6oQ,GACXlsN,EAAmB,mBAARx3C,KAAqBA,KAAOU,MACvCijQ,EAAO7hQ,UAAUlH,OACjBgpQ,EAAQD,EAAO,EAAI7hQ,UAAU,QAAKlE,EAClCimQ,OAAoBjmQ,IAAVgmQ,EACVj6P,EAAQ,EACRm6P,EAAS98M,EAAEtoD,OAAOoC,UAMtB,GADI+iQ,IAASD,EAAQA,EAAMzkQ,KAAKwkQ,EAAO,EAAI7hQ,UAAU,QAAKlE,IAC5CA,MAAVkmQ,GAAwBpjQ,MAAMC,QAAQ+iQ,GAMxC,IAAK3zP,EAAS,IAAIynC,EADlB58C,EAASmmQ,EAAS/5M,EAAEpsD,SACSA,EAAS+O,EAAOA,IAC3CoG,EAAOpG,GAASk6P,EAAUD,EAAM58M,EAAEr9C,GAAQA,GAASq9C,EAAEr9C,QANvD,IAAK7I,EAAWgjQ,EAAO9oQ,KAAKgsD,GAAIj3C,EAAS,IAAIynC,IAAO/tC,EAAO3I,EAASmC,QAAQu3D,KAAM7wD,IAChFoG,EAAOpG,GAASk6P,EAAU7C,EAASlgQ,EAAU8iQ,EAAOn6P,EAAK7K,MAAO+K,GAASF,EAAK7K,MASlF,OADAmR,EAAOnV,OAAS+O,EACToG,KAKRrP,MAAM5F,UAAUkL,MACnBnL,OAAOyD,eAAeoC,MAAM5F,UAAW,OAAQ,CAC7CuG,cAAc,EACdC,UAAU,EACV/C,YAAY,EACZK,MAAO,SAAesxN,GACpB,GAAa,OAATlwN,KACF,MAAM,IAAI8X,UAAU,oDAEtB,GAAyB,mBAAdo4M,EACT,MAAM,IAAIp4M,UAAU,gCAOtB,IALA,IAGIlZ,EAHAkV,EAAOjZ,OAAOmF,MACdpF,EAASkZ,EAAKlZ,SAAW,EACzB22E,EAAUzvE,UAAU,GAGfpH,EAAI,EAAGA,EAAIE,EAAQF,IAE1B,GADAkE,EAAQkV,EAAKpZ,GACTw1N,EAAUl1N,KAAKu2E,EAAS3yE,EAAOlE,EAAGoZ,GACpC,OAAOlV,KAQZ8B,MAAM5F,UAAUo4K,WACnBr4K,OAAOyD,eAAeoC,MAAM5F,UAAW,YAAa,CAClDuG,cAAc,EACdC,UAAU,EACV/C,YAAY,EACZK,MAAO,SAAesxN,GACpB,GAAa,OAATlwN,KACF,MAAM,IAAI8X,UAAU,yDAEtB,GAAyB,mBAAdo4M,EACT,MAAM,IAAIp4M,UAAU,gCAOtB,IALA,IAGIlZ,EAHAkV,EAAOjZ,OAAOmF,MACdpF,EAASkZ,EAAKlZ,SAAW,EACzB22E,EAAUzvE,UAAU,GAGfpH,EAAI,EAAGA,EAAIE,EAAQF,IAE1B,GADAkE,EAAQkV,EAAKpZ,GACTw1N,EAAUl1N,KAAKu2E,EAAS3yE,EAAOlE,EAAGoZ,GACpC,OAAOpZ,EAGX,OAAQ,MAMiB,oBAAtBqpQ,mBAAsCrjQ,MAAM5F,UAAUkc,UAC/Dnc,OAAOyD,eAAeoC,MAAM5F,UAAW,WAAY,CACjDuG,cAAc,EACdC,UAAU,EACV/C,YAAY,EACZK,MAAO,SAAeolQ,GACpB,IAAIh9M,EAAInsD,OAAOmF,MACXgiB,EAAMsI,SAAS08B,EAAEpsD,SAAW,EAChC,GAAY,IAARonB,EACF,OAAO,EAET,IACIkY,EASA+pO,EAVA7kQ,EAAIkrB,SAASxoB,UAAU,KAAO,EAWlC,IATI1C,GAAK,EACP86B,EAAI96B,GAEJ86B,EAAIlY,EAAM5iB,GACF,IACN86B,EAAI,GAIDA,EAAIlY,GAAK,CAEd,GAAIgiP,KADJC,EAAiBj9M,EAAE9sB,KACqB8pO,GAAkBA,GAAiBC,GAAmBA,EAC5F,OAAO,EAET/pO,IAEF,OAAO,KAKoB,oBAAtBgnO,qBAET,WACE,IAWQnmQ,EACAmpQ,EACAC,EACAC,EAdJC,GAAW,EAEf,IACE,IAAIvkQ,EAAIjF,OAAO0Z,KAAK,KACpB8vP,EAAwB,IAAbvkQ,EAAElF,QAAyB,MAATkF,EAAE,GAC/B,MAAOlE,GACPyoQ,GAAW,EAGTA,IACFxpQ,OAAO0Z,MACDxZ,EAAiBF,OAAOC,UAAUC,eAClCmpQ,GAAkB,CAAEllP,SAAU,MAAO82N,qBAAqB,YAE1DsuB,GADAD,EAAY,CAAC,WAAY,iBAAkB,UAAW,iBAAkB,gBAAiB,uBAAwB,gBACrFvpQ,OAEzB,SAAUmG,GACf,GAAIA,QACF,MAAM+W,UAAU,8CAGlB/W,EAAMlG,OAAOkG,GAEb,IACIshB,EACA3nB,EAFAqV,EAAS,GAIb,IAAKsS,KAAQthB,EACPhG,EAAeC,KAAK+F,EAAKshB,IAC3BtS,EAAO7U,KAAKmnB,GAIhB,GAAI6hP,EACF,IAAKxpQ,EAAI,EAAGA,EAAI0pQ,EAAiB1pQ,IAC3BK,EAAeC,KAAK+F,EAAKojQ,EAAUzpQ,KACrCqV,EAAO7U,KAAKipQ,EAAUzpQ,IAK5B,OAAOqV,KA1Cf,GAgDA,SAAWi3C,GAQA,IACDs9M,EACAvC,EACAwC,EAVJ,WAAYv9M,GAIhBA,EAAE1oD,eAAe0oD,EAAG,SAAU,CAC5B3lD,cAAc,EACdC,UAAU,EACV1C,OACM0lQ,EAAOt9M,EAAEu8K,sBACTw+B,EAAM/6M,EAAE8uL,qBACRyuB,EAAWD,EAAO,SAAU7sP,GAC9B,OAAO6sP,EAAK7sP,GAAM5S,OAAOk9P,EAAKtqP,IAC5B,WACF,OAAO/W,MAAM5F,WAGR,SAAgByrO,GAKrB,SAASphN,EAAIq/O,GACXj+B,EAAMi+B,GAAehgP,EAAIggP,IALvBF,GAAU/9B,aAAiBv/K,GAC7BvnD,QAAQykB,KAAK,sBAAuBqiN,GAOtC,IAAK,IAAI7rO,EAAI,EAAGiI,EAAKb,UAAUlH,OAAQF,EAAIiI,IAAMjI,EAAG,CAClD,IAAI8pB,EAAM1iB,UAAUpH,GAEhB8pB,SAIJwiC,EAAEzyC,KAAKiQ,GAAKrgB,OAAOogQ,EAAS//O,IAAMrd,QAAQge,GAG5C,OAAOohN,MApCf,CAwCG1rO,QAEEA,OAAO05C,KACV15C,OAAO05C,GAAK,SAAUrtC,EAAGkjB,GACvB,OAAIljB,IAAMkjB,EACK,IAANljB,GAAW,EAAIA,GAAM,EAAIkjB,EAEzBljB,GAAMA,GAAKkjB,GAAMA,KAMC,oBAAtB82O,mBAET,SAAWl1L,GACT,IAAItxE,EAsBE+pQ,EAwBAC,EA5CFpmQ,EAAiBzD,OAAOyD,gBAKN,oBAAX4hK,UACTl0F,EAAOk0F,QAAUykG,EAAiB,CAChC,OAAUC,EAEVv1N,MAAOw1N,EAEPrmQ,IAAKsmQ,EAELlrK,IAAKmrK,EAEL5/O,IAAK6/O,IACJ,IAGa,oBAAPt4N,KAAkD,mBAArB,IAAIA,KAAMrZ,SAA0B,IAAIqZ,KAAMrZ,SAASpwB,QAG7F+oE,EAAOt/B,IAAMi4N,IAAkBF,EAAoB,CACjD,OAAUG,EAEVhrK,IAAKmrK,EAELvmQ,IAAKsmQ,EAEL3/O,IAAK6/O,EAELzwP,KA0HJ,WACE,OAAO0wP,EAAejlQ,KAAKklQ,KAAMllQ,KAAKmlQ,QAzHpC9xO,OAAQ+xO,EAERr/J,QAASs/J,EAETl+P,QAASm+P,EAETj2N,MAAOw1N,IACYnmQ,OAAOoC,UAAYukQ,EAAYZ,KAGpC,oBAAPhiC,KAAkD,mBAArB,IAAIA,KAAMpvM,SAA0B,IAAIovM,KAAMpvM,SAASpwB,OAG7F+oE,EAAOy2J,IAAMkiC,IAAkBD,EAAqB,CAClD9qK,IAAK2rK,EAELz0P,IAAK00P,EAEL,OAAUZ,EAEVv1N,MAAOw1N,EAEPtwP,KAAM6wP,EACN/xO,OAAQ+xO,EAERr/J,QA2GJ,WACE,OAAOk/J,EAAejlQ,KAAKklQ,KAAMllQ,KAAK69F,QAAS79F,KAAK69F,UA1GlD12F,QAASm+P,IACW5mQ,OAAOoC,UAAYskQ,EAAcV,KAezD,SAASC,EAAiBtlO,EAAOomO,GAC/B,SAASC,EAAWh0P,GAClB,IAAK1R,MAAQA,KAAKgB,cAAgB0kQ,EAAY,OAAO,IAAIA,EAAWh0P,GACpE1R,KAAKmlQ,MAAQ,GACbnlQ,KAAK69F,QAAU,GACf79F,KAAKklQ,KAAO,GACZllQ,KAAKylQ,WAAaA,EAEd/zP,GAAGpO,EAAKtI,KAAKgF,KAAM0R,GAYzB,OATK+zP,GACHnnQ,EAAe+gC,EAAO,OAAQ,CAC5B7gC,IAAKmnQ,IAITtmO,EAAMr+B,YAAc0kQ,EACpBA,EAAW5qQ,UAAYukC,EAEhBqmO,EAGT,SAASpiQ,EAAKoO,GAGR1R,KAAK8Q,IAAKY,EAAEvK,QAAQnH,KAAK8Q,IAAK9Q,MAAW0R,EAAEvK,SAAQ,SAAUuK,GAC7D1R,KAAKmlB,IAAIzT,EAAE,GAAIA,EAAE,MAChB1R,MAGP,SAAS4kQ,EAAa1lQ,GAUpB,OATIc,KAAK45F,IAAI16F,KACXc,KAAKmlQ,MAAMhuP,OAAOzc,EAAG,GACrBsF,KAAK69F,QAAQ1mF,OAAOzc,EAAG,GAEvBsF,KAAKklQ,KAAK/9P,SAAQ,SAAUvK,GACtBlC,EAAIkC,EAAE,IAAIA,EAAE,UAIZ,EAAIlC,EAGd,SAASoqQ,EAAU5lQ,GACjB,OAAOc,KAAK45F,IAAI16F,GAAOc,KAAK69F,QAAQnjG,QAAKkD,EAG3C,SAASg8F,EAAI9lF,EAAM5U,GACjB,GAAIc,KAAKylQ,YAAcvmQ,IAAQrE,OAAOqE,GAAM,MAAM,IAAI4Y,UAAU,6CAEhE,GAAI5Y,GAAOA,GAAe,IAARA,EAAW,IAAKxE,EAAIoZ,EAAKlZ,OAAQF,OA9HhCgX,EA8H2CoC,EAAKpZ,OA9H7CiX,EA8HiDzS,KA7HrDwS,GAAMA,GAAKC,GAAMA,WA6HmDjX,EAAIoZ,EAAKzC,QAAQnS,GA9HhG,IAAYwS,EAAGC,EA+HtB,OAAQ,EAAIjX,EAGd,SAAS6qQ,EAAO3mQ,GACd,OAAOg7F,EAAI5+F,KAAKgF,KAAMA,KAAK69F,QAASj/F,GAGtC,SAASmmQ,EAAOnmQ,GACd,OAAOg7F,EAAI5+F,KAAKgF,KAAMA,KAAKmlQ,MAAOvmQ,GAGpC,SAASomQ,EAAU9lQ,EAAKN,GAEtB,OADAoB,KAAK45F,IAAI16F,GAAOc,KAAK69F,QAAQnjG,GAAKkE,EAAQoB,KAAK69F,QAAQ79F,KAAKmlQ,MAAMjqQ,KAAKgE,GAAO,GAAKN,EAC5EoB,KAGT,SAASwlQ,EAAU5mQ,GAEjB,OADKoB,KAAK45F,IAAIh7F,IAAQoB,KAAK69F,QAAQ3iG,KAAK0D,GACjCoB,KAGT,SAAS6kQ,KACN7kQ,KAAKmlQ,OAAS,GAAGvqQ,OAASoF,KAAK69F,QAAQjjG,OAAS,EAOnD,SAASwqQ,IACP,OAAOH,EAAejlQ,KAAKklQ,KAAMllQ,KAAK69F,SAGxC,SAASwnK,IACP,OAAOJ,EAAejlQ,KAAKklQ,KAAMllQ,KAAKmlQ,MAAOnlQ,KAAK69F,SAOpD,SAASonK,EAAeW,EAAKt+O,EAAO1D,GAClC,IAAI2qC,EAEA3xD,EAAI,CAAC,GACL49D,GAAO,EAEX,OADAorM,EAAI1qQ,KAAK0B,IACF2xD,EAAO,IAAS7vD,OAAOoC,UAAY,WACxC,OAAOd,MACNuuD,EAAKtrD,KAAO,WACb,IAAIghE,EACA/pC,EAAIt9B,EAAE,GAQV,OAPK49D,GAAQtgC,EAAI5S,EAAM1sB,QACrBqpE,EAAIrgD,EAAS,CAAC0D,EAAM4S,GAAItW,EAAOsW,IAAM5S,EAAM4S,GAC3Ct9B,EAAE,OAEF49D,GAAO,EACPorM,EAAIzuP,OAAOyuP,EAAIv0P,QAAQzU,GAAI,IAEtB,CAAE49D,KAAMA,EAAM57D,MAAOqlE,IAC3B1V,EAGL,SAASo3M,IACP,OAAO3lQ,KAAK69F,QAAQjjG,OAGtB,SAAS0qQ,EAAcr+O,EAAU9T,GAE/B,IADA,IAAI6hE,EAAKh1E,KAAK+lG,YACL,CACP,IAAItnG,EAAIu2E,EAAG/xE,OACX,GAAIxE,EAAE+7D,KAAM,MACZvzC,EAASjsB,KAAKmY,EAAS1U,EAAEG,MAAM,GAAIH,EAAEG,MAAM,GAAIoB,OAxI7B,oBAAX6lQ,UACT75L,EAAO65L,QAAUlB,EAAiB,CAChC,OAAUC,EAEV9zP,IAAK00P,EAELn2N,MAAOw1N,EAEPjrK,IAAK2rK,IACJ,IA5EP,CA8MG,WAASv5L,QAGmB,oBAAtBk1L,oBAGH/hQ,EAAO2lB,SAAShqB,UAAUqE,UAES,IAA5B,WAAS6sE,OAAO9/B,UACzB,WAAS8/B,OAAO9/B,QAAU,IAGU,mBAA3BA,QAAQ5tC,iBACjB4tC,QAAQ5tC,eAAiB,SAAUd,EAAQsoQ,EAAa1kQ,GACtD,GAAwE,iBAAjD,IAAX5D,EAAyB,YAAcqD,EAAQrD,IAAmC,OAAXA,EAAoC,mBAAXA,EAC1G,MAAM,IAAIsa,UAAU,+CAEtB,IAEE,OADAjd,OAAOyD,eAAed,EAAQsoQ,EAAa1kQ,IACpC,EACP,MAAOxF,GACP,OAAO,KAKoB,mBAAtBswC,QAAQy5F,YACjBz5F,QAAQy5F,UAAY,SAAUogI,EAAQthP,GACpC,GAAIA,EACF,OAAQA,EAAK7pB,QACX,KAAK,EACH,OAAO,IAAImrQ,EACb,KAAK,EACH,OAAO,IAAIA,EAAOthP,EAAK,IACzB,KAAK,EACH,OAAO,IAAIshP,EAAOthP,EAAK,GAAIA,EAAK,IAClC,KAAK,EACH,OAAO,IAAIshP,EAAOthP,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC3C,KAAK,EACH,OAAO,IAAIshP,EAAOthP,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAIxD,IAAI/S,EAAI,CAAC,MAET,OADAA,EAAExW,KAAK+I,MAAMyN,EAAG+S,GACT,IAAKtlB,EAAK8E,MAAM8hQ,EAAQr0P,MAIJ,mBAApBw6B,QAAQ85N,UACjB95N,QAAQ85N,QAAU,SAAU3nQ,GAC1B,OAAOxD,OAAOo/B,oBAAoB57B,GAAG8F,OAAOtJ,OAAO0oO,sBAAsBllO,OAMhD,oBAAtB4nQ,oBAGHhF,EAAgBpmQ,OAAO+xC,OAAO,IAGI,mBAA3BV,QAAQC,iBACjBD,QAAQC,eAAiB,SAAUL,EAAatuC,EAAQuuC,GACtD,GAAIvuC,EAAOzC,eAJY,gBAKrB,OAAQyC,EAA2B,aAAEuuC,IAAck1N,GAAen1N,KAKlC,mBAA3BI,QAAQI,iBACjBJ,QAAQI,eAAiB,SAAUR,EAAaO,EAAe7uC,EAAQuuC,GACrE,IAAIm6N,EAAoB1oQ,EAAOzC,eAZR,gBAY+CyC,EAA2B,aAAIA,EAA2B,aAAI,IAC9G0oQ,EAAkBn6N,KAAem6N,EAAkBn6N,GAAa,KACtED,GAAeO,IAIH,mBAArBH,QAAQR,WACjBQ,QAAQR,SAAW,SAAUI,EAAaO,GACxC,OAAO,SAAU7uC,EAAQuuC,GACvBG,QAAQI,eAAeR,EAAaO,EAAe7uC,EAAQuuC,Q,gCC70BrE,mDAYI,KAAA6D,SAAkC,IAAIlvC,Q,gCCL1C,mDAcE,KAAAq0C,cAA+B,GAC/B,KAAAmgK,eAA2B,GAC3B,KAAAixD,6BAAyC,GAEzC,KAAAvlH,SAAqB,GACrB,KAAA73G,OAAkB,GAElB,KAAAosK,qBAAiC,GAEjC,KAAAixD,iCAAsE,K,01DCrBxE,aAGE,WACShpP,GAAA,KAAAA,SAEPpd,KAAKC,OAAS,aAAWC,UAAU,uB,MAyDvC,OAtDe,YAAAqd,OAAb,W,qBAAuBvhB,GAAO,W,kDACrB,SAAMgE,KAAKod,OAAO5e,IAAI,UAC1B2E,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAA4qP,YAAb,SAAyB9pP,G,qBAAavgB,GAAO,W,kDACpC,SAAMgE,KAAKod,OAAO5e,IAAI,SAAU+d,GACpCpZ,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAAg8I,aAAb,SAA0Bn6I,G,qBAAoCthB,GAAO,W,kDAC5D,SAAMgE,KAAKod,OAAOX,KAAK,uBAAwBa,GACnDna,MAAK,SAACsY,GACL,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAMI,YAAA6qP,iBAAb,SAA8BroP,G,qBAAoBjiB,GAAO,W,wDAGhD,OAFHwe,EAAa,IAAOC,aACxBza,KAAKod,OAAOlb,QAAcsY,EAAU,mBAAmByD,EAAS,IACzD,GAAMje,KAAKod,OAAO5e,IAAI,yBAC1B2E,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAA8qP,cAAb,SAA2BhqP,EAAY0B,G,qBAAoBjiB,GAAO,W,wDAGzD,OAFHwe,EAAa,IAAOC,aACxBza,KAAKod,OAAOlb,QAAcsY,EAAU,mBAAmByD,EAAS,IACzD,GAAMje,KAAKod,OAAO5e,IAAI,sBAAsB+d,GAChDpZ,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAA+qP,yBAAb,SAAsCvoP,G,qBAAoBjiB,GAAO,W,wDAGxD,OAFHwe,EAAa,IAAOC,aACxBza,KAAKod,OAAOlb,QAAcsY,EAAU,mBAAmByD,EAAS,IACzD,GAAMje,KAAKod,OAAO5e,IAAI,mCAC1B2E,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAAgrP,yBAAb,SAAsCxoP,G,qBAAoBjiB,GAAO,W,wDAGxD,OAFHwe,EAAa,IAAOC,aACxBza,KAAKod,OAAOlb,QAAasY,EAAU,mBAAmByD,EAAS,IACxD,GAAMje,KAAKod,OAAOV,OAAO,uCAC7BvZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBA5DEujQ,EAAa,GADzB,a,uBAKsC,mB,OAAA,IAApB,UAAoB,YAJ1BA,GAAb,K,gDCuZe,IAhac,CAE3BC,aAAc,mCACdC,eAAgB,qCAChBC,eAAgB,qCAChBC,eAAgB,qCAChBC,iBAAkB,uCAElBC,UAAW,gCACXC,YAAa,kCACbC,YAAa,kCACbC,YAAa,kCAEbC,iBAAkB,uCAClBC,mBAAoB,yCACpBC,mBAAoB,yCACpBC,mBAAoB,yCAGpBC,4BAA6B,kDAC7BC,8BAA+B,oDAC/BC,gCAAiC,sDAEjCC,gBAAiB,qCACjBC,kBAAmB,uCACnBC,kBAAmB,uCACnBC,kBAAmB,uCACnBC,oBAAqB,yCAGrBC,kCAAmC,4CACnCC,gCAAiC,0CACjCC,4BAA6B,sCAC7BC,4BAA6B,sCAE7BC,UAAW,+BACXC,YAAa,iCACbC,YAAa,iCACbC,YAAa,iCAEbC,iBAAkB,mCAClBC,mBAAoB,qCACpBC,mBAAoB,qCACpBC,mBAAoB,qCACpBC,qBAAsB,uCAEtBC,cAAe,iCACfC,gBAAiB,mCACjBC,gBAAiB,mCACjBC,gBAAiB,mCACjBC,kBAAmB,qCAEnBC,wBAAyB,kCACzBC,0BAA2B,oCAC3BC,4BAA6B,sCAE7BC,iBAAkB,2BAClBC,mBAAoB,6BACpBC,mBAAoB,6BACpBC,qBAAsB,+BAEtBC,UAAW,4BACXC,YAAa,8BACbC,cAAe,gCAEfC,cAAe,iCACfC,gBAAiB,mCACjBC,gBAAiB,mCACjBC,gBAAiB,mCACjBC,kBAAmB,qCAEnBC,kBAAmB,4BACnBC,oBAAqB,8BACrBC,oBAAqB,8BACrBC,sBAAuB,gCAEvBC,SAAU,uBACVC,WAAY,yBACZC,WAAY,yBACZC,WAAY,yBACZC,aAAc,2BAEdC,cAAe,iCACfC,gBAAiB,mCACjBC,gBAAiB,mCACjBC,gBAAiB,mCAEjBC,aAAc,gCACdC,eAAgB,kCAChBC,eAAgB,kCAChBC,eAAgB,kCAChBC,iBAAkB,oCAElBC,YAAa,6BACbC,cAAe,+BACfC,cAAe,+BACfC,cAAe,+BACfC,gBAAiB,iCAEjBC,8BAA+B,wCAC/BC,gCAAiC,0CAEjCC,iBAAkB,kCAClBC,mBAAoB,oCACpBC,mBAAoB,oCACpBC,mBAAoB,oCACpBC,qBAAsB,sCAEtBC,YAAa,6BACbC,cAAe,+BACfC,cAAe,+BACfC,cAAe,+BACfC,gBAAiB,iCAGjBC,kBAAmB,4BACnBC,oBAAqB,8BAErBC,mBAAoB,oCACpBC,qBAAsB,sCAEtBC,UAAW,2BACXC,YAAa,6BACbC,YAAa,6BACbC,YAAa,6BAEbC,eAAgB,gCAChBC,iBAAkB,kCAClBC,iBAAkB,kCAClBC,iBAAkB,kCAClBC,mBAAoB,oCAEpBC,SAAU,0BACVC,WAAY,4BACZC,WAAY,4BACZC,WAAY,4BACZC,aAAc,8BACdC,YAAa,6BACbC,SAAU,0BACVC,uBAAwB,yCAExBC,YAAa,6BACbC,cAAe,+BACfC,cAAe,+BACfC,cAAe,+BAEfC,qBAAsB,+CACtBC,uBAAwB,iDACxBC,uBAAwB,iDACxBC,uBAAwB,iDACxBC,yBAA0B,mDAE1BC,4BAA6B,oCAC7BC,2BAA4B,qCAC5BC,8BAA+B,wCAC/BC,+BAAgC,yCAChCC,8BAA+B,wCAC/BC,+BAAgC,yCAChCC,2BAA4B,qCAE5BC,gCAAiC,0CACjCC,kCAAmC,4CACnCC,kCAAmC,4CACnCC,kCAAmC,4CAEnCC,+BAAgC,yCAChCC,iCAAkC,2CAClCC,iCAAkC,2CAClCC,iCAAkC,2CAElCC,mBAAoB,iCACpBC,qBAAsB,mCACtBC,qBAAsB,mCACtBC,qBAAsB,mCAEtBC,mCAAoC,6CACpCC,qCAAsC,+CACtCC,qCAAsC,+CACtCC,qCAAsC,+CACtCC,oCAAqC,8CAErCC,yBAA0B,mCAC1BC,2BAA4B,qCAC5BC,2BAA4B,qCAC5BC,2BAA4B,qCAC5BC,0BAA2B,oCAE3BC,kCAAmC,4CACnCC,oCAAqC,8CACrCC,oCAAqC,8CACrCC,oCAAqC,8CAErCC,4BAA6B,uCAC7BC,8BAA+B,yCAE/BC,8BAA+B,wCAC/BC,gCAAiC,0CAEjCC,2CAA4C,qDAC5CC,6CAA8C,uDAE9CC,2CAA4C,qDAC5CC,6CAA8C,uDAC9CC,6CAA8C,uDAC9CC,6CAA8C,uDAC9CC,+CAAgD,yDAEhDC,kDAAmD,4DACnDC,oDAAqD,8DACrDC,oDAAqD,8DACrDC,oDAAqD,8DAErDC,WAAY,4BACZC,YAAa,6BACbC,aAAc,8BACdC,eAAgB,gCAEhBC,iBAAkB,kCAClBC,uBAAwB,wCAExBC,eAAgB,mCAChBC,iBAAkB,qCAMlBC,eAAgB,0BAChBC,iBAAkB,4BAClBC,iBAAkB,4BAClBC,iBAAkB,4BAElBC,0BAA2B,+BAC3BC,4BAA6B,iCAC7BC,4BAA6B,iCAC7BC,4BAA6B,iCAE7BC,2BAA4B,gCAC5BC,6BAA8B,kCAC9BC,6BAA8B,kCAC9BC,6BAA8B,kCAE9BC,mBAAoB,kCACpBC,qBAAsB,oCACtBC,qBAAsB,oCACtBC,qBAAsB,oCAEtBC,2BAA4B,gCAC5BC,6BAA8B,kCAC9BC,6BAA8B,kCAC9BC,6BAA8B,kCAE9BC,gCAAiC,qCACjCC,kCAAmC,uCACnCC,kCAAmC,uCACnCC,kCAAmC,uCACnCC,0CAA2C,gDAI3CC,iBAAkB,8BAClBC,mBAAoB,gCACpBC,mBAAoB,gCACpBC,mBAAoB,gCAEpBC,uBAAwB,4BACxBC,yBAA0B,8BAC1BC,yBAA0B,8BAC1BC,yBAA0B,8BAE1BC,0BAA2B,+BAC3BC,4BAA6B,iCAC7BC,4BAA6B,iCAC7BC,4BAA6B,iCAI7BC,gBAAiB,4BACjBC,kBAAmB,8BACnBC,kBAAmB,8BACnBC,kBAAmB,8BAEnBC,sBAAuB,2BACvBC,wBAAyB,6BACzBC,wBAAyB,6BACzBC,wBAAyB,6BAEzBC,yBAA0B,8BAC1BC,2BAA4B,gCAC5BC,2BAA4B,gCAC5BC,2BAA4B,gCAI5BC,aAAc,sBACdC,eAAgB,wBAChBC,eAAgB,wBAChBC,eAAgB,wBAEhBC,uBAAwB,4BACxBC,yBAA0B,8BAI1BC,gBAAiB,4BACjBC,kBAAmB,8BASnBC,4BAA6B,iCAC7BC,uBAAwB,uBACxBC,uBAAwB,uBACxBC,4BAA6B,iCAK7BC,+BAAgC,oCAChCC,iCAAkC,sCAClCC,qCAAsC,0CACtCC,iCAAkC,sCAGlCC,gCAAiC,qCACjCC,kCAAmC,uCACnCC,sCAAuC,2CACvCC,kCAAmC,uCAGnCC,mCAAoC,wCACpCC,qCAAsC,0CACtCC,yCAA0C,8CAC1CC,qCAAsC,0CAGtCC,8BAA+B,mCAC/BC,oCAAqC,yCAGrCC,+BAAgC,oCAChCC,6BAA8B,kCAC9BC,oCAAqC,yCACrCC,+BAAgC,oCAChCC,+BAAgC,oCAGhCC,6CAA8C,kDAC9CC,6CAA8C,kDAC9CC,6CAA8C,kDAC9CC,6CAA8C,kDAC9CC,6CAA+C,mDAK/CC,iCAAkC,sCAClCC,mCAAoC,wCACpCC,uCAAwC,4CACxCC,6CAA8C,kDAC9CC,2CAA4C,gDAC5CC,mCAAoC,wCACpCC,mDAAoD,wDAGpDC,oCAAqC,yCACrCC,sCAAuC,2CACvCC,0CAA2C,+CAC3CC,sCAAuC,2CAGvCC,4BAA6B,iCAC7BC,8BAA+B,mCAC/BC,kCAAmC,uCACnCC,8BAA+B,mCAG/BC,8BAA+B,mCAC/BC,kCAAmC,uCAGnCC,8BAA+B,mCAC/BC,gCAAiC,qCACjCC,gCAAiC,qCACjCC,gCAAiC,qCAGjCC,mCAAoC,wCACpCC,sCAAuC,2CAGvCC,oCAAqC,yCAGrCC,mCAAoC,wCACpCC,qCAAsC,0CACtCC,qCAAsC,0CACtCC,qCAAsC,0CAGtCC,+BAAgC,oCAChCC,8BAA+B,mCAC/BC,6BAA8B,kCAC9BC,4BAA6B,iCAG7BC,4BAA6B,iCAC7BC,0BAA2B,+BAC3BC,4BAA6B,iCAC7BC,4BAA6B,mC,k1DCtZ/B,aAIE,WACS97P,GAAA,KAAAA,SACPpd,KAAKC,OAAS,aAAWC,UAAU,uB,MAuDvC,OApDe,YAAA4T,KAAb,SAAkBwJ,G,qBAAoCthB,GAAO,W,kDACpD,SAAMgE,KAAKod,OAAOX,KAAK,oBAAqBa,GAChDna,MAAK,SAACsY,GACL,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAMI,YAAA8B,OAAb,W,qBAAuBvhB,GAAO,W,kDACrB,SAAMgE,KAAKod,OAAO5e,IAAI,gBAC1B2E,MAAK,SAACsY,GACL,OAAuBA,M,OAF3B,MAAO,CAAP,EAAO,kBAMI,YAAAa,QAAb,SAAqBC,G,qBAAavgB,GAAO,W,kDAChC,SAAMgE,KAAKod,OAAOd,QAAQ,eAAgBC,GAC9CpZ,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAAxc,OAAb,SAAoBue,G,qBAAsBxhB,GAAO,W,kDACxC,SAAMgE,KAAKod,OAAOne,OAAO,eAAgBue,GAC7Cra,MAAK,SAACsY,GACL,OAAqBA,M,OAFzB,MAAO,CAAP,EAAO,kBAMI,YAAAiB,OAAb,SAAoBc,G,qBAAsBxhB,GAAO,W,kDACxC,SAAMgE,KAAKod,OAAOT,WAAW,eAAgBa,EAAMjB,GAAI,KAAMiB,GACjEra,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAA2Z,OAAb,SAAoBP,G,qBAAavgB,GAAO,W,kDAC/B,SAAMgE,KAAKod,OAAOL,WAAW,eAAgBR,GACjDpZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAAonE,sBAAb,SAAmCjtD,G,qBAAoCthB,GAAO,W,kDACrE,SAAMgE,KAAKod,OAAOX,KAAK,mCAAoCa,GAC/Dna,MAAK,SAACsY,GACL,OAAO,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAAgvD,aAAb,SAA0BluD,G,qBAAavgB,GAAO,W,kDACrC,SAAMgE,KAAKod,OAAOX,KAAK,8BAA8BF,GACzDpZ,MAAK,SAACsY,GACL,OAAO,M,OAFX,MAAO,CAAP,EAAO,kBAvDE09P,EAAmB,GAD/B,uB,uBAMsC,mB,OAAA,IAApB,UAAoB,YAL1BA,GAAb,K,o2DCGA,aAGE,WACS/7P,GAAA,KAAAA,SAIPpd,KAAKC,OAAS,aAAWC,UAAU,oB,MA+HvC,OApHe,YAAAqd,OAAb,SAAoBitB,G,qBAAwBxuC,GAAO,W,kDAC1C,SAAMgE,KAAKod,OAAO5e,IAAI,wBAAwBgsC,GAClDrnC,MAAK,SAAAsY,GACJ,OAAmBA,M,OAFvB,MAAO,CAAP,EAAO,kBAMI,YAAA3H,KAAb,SAAkB02B,EAAuBltB,G,qBAAoCthB,GAAO,W,kDAC3E,SAAMgE,KAAKod,OAAOX,KAAK,iBAAiB+tB,EAAiBltB,GAC7Dna,MAAK,SAAAsY,GACJ,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAMI,YAAA29P,iBAAb,SAA8B5uO,EAAuBltB,G,qBAAoCthB,GAAO,W,kDACvF,SAAMgE,KAAKod,OAAOX,KAAK,+BAA+B+tB,EAAiBltB,GAC3Ena,MAAK,SAAAsY,GACJ,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAMI,YAAAa,QAAb,SAAqBC,G,qBAAavgB,GAAO,W,kDAEhC,SAAMgE,KAAKod,OAAOd,QAAQ,WAAYC,GAC1CpZ,MAAK,SAAAsY,GACJ,OAAiBA,M,OAFrB,MAAO,CAAP,EAAO,kBAMI,YAAA49P,gBAAb,SAA6B98P,EAAWiuB,EAAsBR,G,qBAAahuC,GAAO,W,kDACzE,SAAMgE,KAAKod,OAAO5e,IAAI,8BAA8B+d,EAAE,IAAIiuB,EAAa,IAAIR,GAC/E7mC,MAAK,SAAAsY,GACJ,OAAiBA,M,OAFrB,MAAO,CAAP,EAAO,kBAMI,YAAAxc,OAAb,SAAoBue,G,qBAAkBxhB,GAAO,W,kDACpC,SAAMgE,KAAKod,OAAOX,KAAK,WAAYe,GACvCra,MAAK,SAAAsY,GACJ,OAAiBA,M,OAFrB,MAAO,CAAP,EAAO,kBAMI,YAAA69P,6BAAb,SAA0C97P,G,qBAAkBxhB,GAAO,W,kDAC1D,SAAMgE,KAAKod,OAAOX,KAAK,4CAA6Ce,GACxEra,MAAK,SAAAsY,GACJ,OAAmBA,M,OAFvB,MAAO,CAAP,EAAO,kBAMI,YAAA89P,4BAAb,SAAyC/7P,G,qBAAkBxhB,GAAO,W,kDACzD,SAAMgE,KAAKod,OAAOX,KAAK,2CAA4Ce,GACvEra,MAAK,SAAAsY,GACJ,OAAiBA,M,OAFrB,MAAO,CAAP,EAAO,kBAMI,YAAAmpI,mBAAb,SAAgCpnI,G,qBAAkBxhB,GAAO,W,kDAChD,SAAMgE,KAAKod,OAAOX,KAAK,+BAAgCe,GAC3Dra,MAAK,SAAAsY,GACJ,OAAiBA,M,OAFrB,MAAO,CAAP,EAAO,kBAMI,YAAAiB,OAAb,SAAoBc,G,qBAAkBxhB,GAAO,W,kDACpC,SAAMgE,KAAKod,OAAOT,WAAW,WAAYa,EAAMjB,GAAI,KAAMiB,GAC7Dra,MAAK,SAAAsY,GACJ,OAAiBA,M,OAFrB,MAAO,CAAP,EAAO,kBAMI,YAAAopI,mBAAb,SAAgCrnI,G,qBAAkBxhB,GAAO,W,kDAChD,SAAMgE,KAAKod,OAAOV,OAAO,gCAAgCc,EAAMjB,GAAM,KAAMiB,GAC/Era,MAAK,SAAAsY,GACJ,OAAiBA,M,OAFrB,MAAO,CAAP,EAAO,kBAMH,YAAAqB,OAAN,SAAaP,G,qBAAavgB,GAAO,W,kDAExB,SAAMgE,KAAKod,OAAOL,WAAW,WAAYR,GAC7CpZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAIH,YAAA2hJ,mBAAN,SAAyBvoI,EAAYytB,G,qBAAqBhuC,GAAO,W,kDACxD,SAAMgE,KAAKod,OAAON,OAAO,gCAAgCP,EAAE,IAAIytB,GACnE7mC,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAAsa,YAAb,SAAyBlB,G,qBAAavgB,GAAO,W,kDACpC,SAAMgE,KAAKod,OAAOX,KAAK,yBAAyBF,GACpDpZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAIH,YAAAunC,YAAN,SAAkBC,G,qBAAQ3uC,GAAO,W,wDAIxB,OAHH4uC,EAAW,IAAIC,UACVC,OAAO,OAAQH,GAEjB,GAAM3qC,KAAKod,OAAOX,KAAK,kBAAmBmuB,GAC9CznC,MAAK,SAAAsY,GACJ,OAAYA,M,OAFhB,MAAO,CAAP,EAAO,kBAMI,YAAA2vB,WAAb,SAAwBZ,EAAuBruB,G,qBAAangB,GAAO,W,wDAM1D,OALH4uC,EAAW,IAAIC,UACVC,OAAO,WAAY3uB,GAC5ByuB,EAASE,OAAO,WAAY3uB,EAAKze,MACjCktC,EAASE,OAAO,gBAAiBN,EAAcxrB,YAExC,GAAMhf,KAAKod,OAAOxB,gBAAgB,OAAQ,uBAAwBgvB,GACtEznC,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAjIE+9P,EAAe,GAD3B,uB,uBAK+B,mB,OAAA,IAAb,UAAa,YAJnBA,GAAb,K,m2DCFA,aAGE,WACSp8P,GAAA,KAAAA,SAEPpd,KAAKC,OAAS,aAAWC,UAAU,iB,MAsCvC,OAnCe,YAAA4T,KAAb,SAAkBwJ,G,qBAAoCthB,GAAO,W,kDACpD,SAAMgE,KAAKod,OAAOX,KAAK,cAAea,GAC1Cna,MAAK,SAACsY,GACL,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAMI,YAAAa,QAAb,SAAqBC,G,qBAAavgB,GAAO,W,kDAChC,SAAMgE,KAAKod,OAAOd,QAAQ,SAAUC,GACxCpZ,MAAK,SAACsY,GACL,OAAeA,M,OAFnB,MAAO,CAAP,EAAO,kBAMI,YAAAxc,OAAb,SAAoBue,G,qBAAgBxhB,GAAO,W,kDAClC,SAAMgE,KAAKod,OAAOne,OAAO,SAAUue,GACvCra,MAAK,SAACsY,GACL,OAAeA,M,OAFnB,MAAO,CAAP,EAAO,kBAMI,YAAAg+P,aAAb,SAA0BruN,EAAkBrhB,EAA0B4/B,G,qBAAkC3tE,GAAO,W,kDACtG,SAAMgE,KAAKod,OAAO5e,IAAI,4BAA4B4sD,EAAQ,qBAAqBrhB,EAAgB,4BAA4B4/B,GAC/HxmE,MAAK,SAACsY,GACL,OAAeA,M,OAFnB,MAAO,CAAP,EAAO,kBAMI,YAAAi+P,WAAb,SAAwBn9P,G,qBAAavgB,GAAO,W,kDACnC,SAAMgE,KAAKod,OAAO5e,IAAI,UAAU+d,EAAE,YACtCpZ,MAAK,SAACsY,GACL,OAAeA,M,OAFnB,MAAO,CAAP,EAAO,kBAtCEk+P,EAAa,GADzB,uB,uBAKsC,mB,OAAA,IAApB,UAAoB,YAJ1BA,GAAb,K,42DCEA,aAGE,WACSv8P,GAAA,KAAAA,SAEPpd,KAAKC,OAAS,aAAWC,UAAU,oB,MAwEvC,OArEe,YAAA4T,KAAb,SAAkBwJ,G,qBAAoCthB,GAAO,W,kDACpD,SAAMgE,KAAKod,OAAOX,KAAK,iBAAkBa,GAC7Cna,MAAK,SAACsY,GACL,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAMI,YAAA8B,OAAb,W,qBAAuBvhB,GAAO,W,kDACrB,SAAMgE,KAAKod,OAAO5e,IAAI,aAC1B2E,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAAa,QAAb,SAAqBC,G,qBAAavgB,GAAO,W,kDAChC,SAAMgE,KAAKod,OAAOd,QAAQ,YAAaC,GAC3CpZ,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAAxc,OAAb,SAAoBue,G,qBAAexhB,GAAO,W,kDACjC,SAAMgE,KAAKod,OAAOne,OAAO,YAAaue,GAC1Cra,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAAiB,OAAb,SAAoBc,G,qBAAexhB,GAAO,W,kDACjC,SAAMgE,KAAKod,OAAOT,WAAW,YAAaa,EAAMjB,GAAI,KAAMiB,GAC9Dra,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAA2Z,OAAb,SAAoBP,EAAYq9P,G,qBAAqC59Q,GAAO,W,kDACnE,SAAMgE,KAAKod,OAAOL,WAAW,YAAaR,EAAI,CAAEi5L,sBAAuBokE,IAC3Ez2Q,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAAsyM,uBAAb,SAAoCl5L,G,qBAAavgB,GAAO,W,kDAC/C,SAAMgE,KAAKod,OAAO5e,IAAI,aAAa+d,EAAE,yBACzCpZ,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAAi6L,2BAAb,SAAwCn5L,EAAYioD,G,qBAA6BxoE,GAAO,W,kDAC/E,SAAMgE,KAAKod,OAAOV,OAAO,aAAaH,EAAE,wBAAyB,KAAMioD,GAC3ErhE,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAA02Q,gBAAb,SAA6Bt9P,EAAY7e,G,qBAAe1B,GAAO,W,wDAEtD,OADHggB,EAAmBte,EAAO,IAAM,IAASkiB,SAAW,OACjD,GAAM5f,KAAKod,OAAOvB,SAAS,MAAO,mBAAmBU,EAAM,KAAMP,EAAU,kBAAmB,MAClG7Y,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBA7DE22Q,EAAgB,GAD5B,uB,uBAK+B,mB,OAAA,IAAb,UAAa,YAJnBA,GAAb,K,iDCHA,mDAOE,KAAAC,aAAuB,EACvB,KAAAC,WAAqB,EAcrB,KAAAC,gBAAyC,IAAIv5Q,MAC7C,KAAAw5Q,iBAAkC,IAAIx5Q,MACtC,KAAAy5Q,oBAAqC,IAAIz5Q,MAMzC,KAAA05Q,kBAA4C,IAAI15Q,Q,gCC9BlD,mDA0CE,KAAAy0M,qBAAiC,GACjC,KAAAD,eAAwC,GAExC,KAAAm+C,6BAA8D,K,iBCpDhE,IAAIxhL,EAGJA,EAAI,WACH,OAAO7xE,KADJ,GAIJ,IAEC6xE,EAAIA,GAAK,IAAI/sD,SAAS,cAAb,GACR,MAAOlpB,GAEc,iBAAX+D,SAAqBkyE,EAAIlyE,QAOrCjE,EAAOD,QAAUo2E,G,gCCfV,SAASwoM,EAASv+P,GAExB,MADsC,MAAvBA,EAASjc,OAAO,GAEvBic,EAEAA,EAAY,IAgCd,SAASw+P,EAAaC,GAC5B,IAAIC,EAAUnhQ,KAAKC,MAAQihQ,EAAI/4P,UAC3Bi5P,EAAS,IAAIphQ,KAAKmhQ,GAEtB,OAAOr3P,KAAKa,IAAIy2P,EAAOptP,iBAAmB,MAiBpC,SAASqtP,EAAyB7wO,GAdlC,IAAoBjf,EACtB7a,EAcU,MAAV85B,IAGAA,EAAO8wO,YACV9wO,EAAO8wO,WAnBkB/vP,EAmBKif,EAAO8wO,WAlBlC5qQ,EAAS,IAAIsJ,KAAKuR,IACfohH,SAAS,EAAG,EAAG,EAAG,GAClBj8H,IAkBH85B,EAAO+wO,UACV/wO,EAAO+wO,QAfF,SAAkBhwP,GACxB,IAAI7a,EAAS,IAAIsJ,KAAKuR,GAEtB,OADA7a,EAAOi8H,SAAS,GAAI,GAAI,GAAI,KACrBj8H,EAYW8qQ,CAAShxO,EAAO+wO,WAtEnC,uG,k1DCOA,aAGE,WACSx9P,GAAA,KAAAA,SAEPpd,KAAKC,OAAS,aAAWC,UAAU,4B,MA6BvC,OA1Be,YAAAqd,OAAb,SAAoBitB,G,qBAAwBxuC,GAAO,W,kDAC1C,SAAMgE,KAAKod,OAAO5e,IAAI,qBAAqBgsC,GAC/CrnC,MAAK,SAACsY,GACL,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAMI,YAAAa,QAAb,SAAqBC,G,qBAAavgB,GAAO,W,kDAChC,SAAMgE,KAAKod,OAAO5e,IAAI,qBAAqB+d,GACjDpZ,MAAK,SAACsY,GACL,OAA0BA,M,OAF5B,MAAO,CAAP,EAAO,kBAMI,YAAA3H,KAAb,SAAkBwJ,EAAmCktB,G,qBAAwBxuC,GAAO,W,kDAC3E,SAAMgE,KAAKod,OAAOX,KAAK,0BAA0B+tB,EAAiBltB,GACtEna,MAAK,SAACsY,GACL,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAMI,YAAAiB,OAAb,SAAoBc,G,qBAA2BxhB,GAAO,W,kDAC7C,SAAMgE,KAAKod,OAAOT,WAAW,oBAAqBa,EAAMjB,GAAI,KAAMiB,GACtEra,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBA/BE23Q,EAAwB,GADpC,uB,uBAKsC,mB,OAAA,IAApB,UAAoB,YAJ1BA,GAAb,K,oCCPE,IAagB/iO,EAOTP,EACAC,EACAC,EACAC,EACA28G,EACAX,EAEAn2G,EAEA1F,EAUA85I,EA+LAmpF,EAKA9lB,EAoDA+lB,EAkGAC,EA+IA9jB,EAoDA+jB,EAsEAC,EAkHAC,EAwCAC,EAjyBP3/Q,EAAOD,SAUSs8C,EAVmB,EAAQ,IAAW,EAAQ,UAe/DA,EAASC,IAAI45I,SAELp6I,EAAIO,EACJN,EAAQD,EAAEQ,IACVN,EAAOD,EAAMC,KACbC,EAAYF,EAAME,UAClB28G,EAAyB78G,EAAM68G,uBAC/BX,EAAQn8G,EAAE+F,IACHo2G,EAAMrsB,KACb9pF,EAASm2G,EAAMn2G,OAEf1F,EADSN,EAAES,KACKH,OAUhB85I,EAASn6I,EAAMm6I,OAASt9B,EAAuB70I,OAAO,CAMtDy4B,IAAKR,EAAKj4B,SAgBVy7O,gBAAiB,SAAUh8P,EAAKg5C,GAC5B,OAAOl4C,KAAKf,OAAOe,KAAKs7Q,gBAAiBp8Q,EAAKg5C,IAiBlDqjO,gBAAiB,SAAUr8Q,EAAKg5C,GAC5B,OAAOl4C,KAAKf,OAAOe,KAAKw7Q,gBAAiBt8Q,EAAKg5C,IAclD50C,KAAM,SAAUm4Q,EAAWv8Q,EAAKg5C,GAE5Bl4C,KAAKk4C,IAAMl4C,KAAKk4C,IAAIz4B,OAAOy4B,GAG3Bl4C,KAAK07Q,WAAaD,EAClBz7Q,KAAKuE,KAAOrF,EAGZc,KAAKwO,SAUTA,MAAO,WAEH8lJ,EAAuB9lJ,MAAMxT,KAAKgF,MAGlCA,KAAK6+C,YAeT53C,QAAS,SAAU00Q,GAKf,OAHA37Q,KAAKu0J,QAAQonH,GAGN37Q,KAAK6gD,YAiBhBhI,SAAU,SAAU8iO,GAShB,OAPIA,GACA37Q,KAAKu0J,QAAQonH,GAIQ37Q,KAAKsgD,eAKlCnI,QAAS,EAETyiN,OAAQ,EAER0gB,gBAAiB,EAEjBE,gBAAiB,EAejBx6N,cAAgB,WACZ,SAAS46N,EAAqB18Q,GAC1B,MAAkB,iBAAPA,EACAm8Q,EAEAF,EAIf,OAAO,SAAU1mF,GACb,MAAO,CACHvxC,QAAS,SAAUzlJ,EAASyB,EAAKg5C,GAC7B,OAAO0jO,EAAqB18Q,GAAKgkJ,QAAQuxC,EAAQh3L,EAASyB,EAAKg5C,IAGnEirG,QAAS,SAAUgxC,EAAYj1L,EAAKg5C,GAChC,OAAO0jO,EAAqB18Q,GAAKikJ,QAAQsxC,EAAQN,EAAYj1L,EAAKg5C,MAhBnE,KA4BAT,EAAM4jN,aAAezpE,EAAOnyK,OAAO,CAClD6gC,YAAa,WAIT,OAF2BtgD,KAAK6gD,UAAS,IAK7C6mF,UAAW,IAMXqzI,EAASvjO,EAAE14C,KAAO,GAKlBm2P,EAAkBx9M,EAAMw9M,gBAAkBv9M,EAAKj4B,OAAO,CAatDy7O,gBAAiB,SAAUzmE,EAAQP,GAC/B,OAAOl0L,KAAKu1P,UAAUt2P,OAAOw1L,EAAQP,IAezCqnF,gBAAiB,SAAU9mF,EAAQP,GAC/B,OAAOl0L,KAAK01P,UAAUz2P,OAAOw1L,EAAQP,IAazC5wL,KAAM,SAAUmxL,EAAQP,GACpBl0L,KAAKy1P,QAAUhhE,EACfz0L,KAAKo1P,IAAMlhE,KAOf8mF,EAAMD,EAAOC,IAAO,WAIpB,IAAIA,EAAM/lB,EAAgBx1O,SA6D1B,SAASo8P,EAASjjO,EAAO/c,EAAQ6rG,GAC7B,IAAIjvF,EAGAy7I,EAAKl0L,KAAKo1P,IAGVlhE,GACAz7I,EAAQy7I,EAGRl0L,KAAKo1P,SAzVE,GA2VP38M,EAAQz4C,KAAKq1P,WAIjB,IAAK,IAAI36P,EAAI,EAAGA,EAAIgtI,EAAWhtI,IAC3Bk+C,EAAM/c,EAASnhC,IAAM+9C,EAAM/9C,GAInC,OA9EAsgR,EAAIzlB,UAAYylB,EAAIv7P,OAAO,CAWvB+1O,aAAc,SAAU58M,EAAO/c,GAE3B,IAAI44J,EAASz0L,KAAKy1P,QACd/tH,EAAY+sD,EAAO/sD,UAGvBm0I,EAAS7gR,KAAKgF,KAAM44C,EAAO/c,EAAQ6rG,GACnC+sD,EAAO6gE,aAAa18M,EAAO/c,GAG3B77B,KAAKq1P,WAAaz8M,EAAM/4C,MAAMg8B,EAAQA,EAAS6rG,MAOvDszI,EAAItlB,UAAYslB,EAAIv7P,OAAO,CAWvB+1O,aAAc,SAAU58M,EAAO/c,GAE3B,IAAI44J,EAASz0L,KAAKy1P,QACd/tH,EAAY+sD,EAAO/sD,UAGnBiuH,EAAY/8M,EAAM/4C,MAAMg8B,EAAQA,EAAS6rG,GAG7C+sD,EAAO8hE,aAAa39M,EAAO/c,GAC3BggP,EAAS7gR,KAAKgF,KAAM44C,EAAO/c,EAAQ6rG,GAGnC1nI,KAAKq1P,WAAaM,KA0BnBqlB,EAvFY,GAkGnBC,GALQzjO,EAAEyzF,IAAM,IAKFgwI,MAAQ,CAatBhwI,IAAK,SAAU5wI,EAAMqtI,GAYjB,IAVA,IAAI+uH,EAA6B,EAAZ/uH,EAGjBgvH,EAAgBD,EAAiBp8P,EAAKy+C,SAAW29M,EAGjDqlB,EAAeplB,GAAiB,GAAOA,GAAiB,GAAOA,GAAiB,EAAKA,EAGrFqlB,EAAe,GACVrhR,EAAI,EAAGA,EAAIg8P,EAAeh8P,GAAK,EACpCqhR,EAAa7gR,KAAK4gR,GAEtB,IAAI7pJ,EAAUt6E,EAAU14C,OAAO88Q,EAAcrlB,GAG7Cr8P,EAAK8J,OAAO8tH,IAchB2kI,MAAO,SAAUv8P,GAEb,IAAIq8P,EAAwD,IAAxCr8P,EAAKu+C,MAAOv+C,EAAKy+C,SAAW,IAAO,GAGvDz+C,EAAKy+C,UAAY49M,IASPj/M,EAAM4/M,YAAczlE,EAAOnyK,OAAO,CAOhDy4B,IAAK05I,EAAO15I,IAAIz4B,OAAO,CACnB3gB,KAAMk8Q,EACN/oJ,QAASgpJ,IAGbzsQ,MAAO,WACH,IAAIwtQ,EAGJpqF,EAAOpjL,MAAMxT,KAAKgF,MAGlB,IAAIk4C,EAAMl4C,KAAKk4C,IACXg8I,EAAKh8I,EAAIg8I,GACTp1L,EAAOo5C,EAAIp5C,KAGXkB,KAAK07Q,YAAc17Q,KAAKs7Q,gBACxBU,EAAcl9Q,EAAKo8P,iBAEnB8gB,EAAcl9Q,EAAKy8Q,gBAEnBv7Q,KAAK60J,eAAiB,GAGtB70J,KAAKi8Q,OAASj8Q,KAAKi8Q,MAAMC,WAAaF,EACtCh8Q,KAAKi8Q,MAAM34Q,KAAKtD,KAAMk0L,GAAMA,EAAGt7I,QAE/B54C,KAAKi8Q,MAAQD,EAAYhhR,KAAK8D,EAAMkB,KAAMk0L,GAAMA,EAAGt7I,OACnD54C,KAAKi8Q,MAAMC,UAAYF,IAI/Bj9N,gBAAiB,SAAUnG,EAAO/c,GAC9B77B,KAAKi8Q,MAAMzmB,aAAa58M,EAAO/c,IAGnCykB,YAAa,WACT,IAAI67N,EAGAlqJ,EAAUjyH,KAAKk4C,IAAI+5E,QAiBvB,OAdIjyH,KAAK07Q,YAAc17Q,KAAKs7Q,iBAExBrpJ,EAAQgZ,IAAIjrI,KAAKw7B,MAAOx7B,KAAK0nI,WAG7By0I,EAAuBn8Q,KAAK6gD,UAAS,KAGrCs7N,EAAuBn8Q,KAAK6gD,UAAS,GAGrCoxE,EAAQ2kI,MAAMulB,IAGXA,GAGXz0I,UAAW,IAgBXyvH,EAAe1/M,EAAM0/M,aAAez/M,EAAKj4B,OAAO,CAoBhDnc,KAAM,SAAU8zP,GACZp3P,KAAKkzJ,MAAMkkG,IAkBfp4O,SAAU,SAAUo9P,GAChB,OAAQA,GAAap8Q,KAAKo8Q,WAAWhrQ,UAAUpR,SAYnDk7Q,GALW1jO,EAAE53B,OAAS,IAKMy8P,QAAU,CActCjrQ,UAAW,SAAUgmP,GACjB,IAGIjjE,EAAaijE,EAAajjE,WAC1B37I,EAAO4+M,EAAa5+M,KASxB,OANIA,EACYb,EAAU14C,OAAO,CAAC,WAAY,aAAakF,OAAOq0C,GAAMr0C,OAAOgwL,GAE/DA,GAGCn1K,SAASw+B,IAgB9BrsC,MAAO,SAAUmrQ,GACb,IAAI9jO,EAGA27I,EAAa32I,EAAOrsC,MAAMmrQ,GAG1BC,EAAkBpoF,EAAWv7I,MAYjC,OAT0B,YAAtB2jO,EAAgB,IAA0C,YAAtBA,EAAgB,KAEpD/jO,EAAOb,EAAU14C,OAAOs9Q,EAAgB18Q,MAAM,EAAG,IAGjD08Q,EAAgBplQ,OAAO,EAAG,GAC1Bg9K,EAAWr7I,UAAY,IAGpBq+M,EAAal4P,OAAO,CAAEk1L,WAAYA,EAAY37I,KAAMA,MAO/D2iO,EAAqB1jO,EAAM0jO,mBAAqBzjO,EAAKj4B,OAAO,CAM5Dy4B,IAAKR,EAAKj4B,OAAO,CACbG,OAAQs7P,IAqBZh4H,QAAS,SAAUuxC,EAAQh3L,EAASyB,EAAKg5C,GAErCA,EAAMl4C,KAAKk4C,IAAIz4B,OAAOy4B,GAGtB,IAAIskO,EAAY/nF,EAAOymE,gBAAgBh8P,EAAKg5C,GACxCi8I,EAAaqoF,EAAU3jO,SAASp7C,GAGhCg/Q,EAAYD,EAAUtkO,IAG1B,OAAOi/M,EAAal4P,OAAO,CACvBk1L,WAAYA,EACZj1L,IAAKA,EACLg1L,GAAIuoF,EAAUvoF,GACdwoF,UAAWjoF,EACX31L,KAAM29Q,EAAU39Q,KAChBmzH,QAASwqJ,EAAUxqJ,QACnByV,UAAW+sD,EAAO/sD,UAClB00I,UAAWlkO,EAAIt4B,UAqBvBujI,QAAS,SAAUsxC,EAAQN,EAAYj1L,EAAKg5C,GAUxC,OARAA,EAAMl4C,KAAKk4C,IAAIz4B,OAAOy4B,GAGtBi8I,EAAan0L,KAAK28Q,OAAOxoF,EAAYj8I,EAAIt4B,QAGzB60K,EAAO8mF,gBAAgBr8Q,EAAKg5C,GAAKW,SAASs7I,EAAWA,aAoBzEwoF,OAAQ,SAAUxoF,EAAYv0K,GAC1B,MAAyB,iBAAdu0K,EACAv0K,EAAOzO,MAAMgjL,EAAYn0L,MAEzBm0L,KAafinF,GALQ5jO,EAAEolO,IAAM,IAKGP,QAAU,CAkB7BQ,QAAS,SAAUtkO,EAAUJ,EAASyiN,EAAQpiN,GAErCA,IACDA,EAAOb,EAAU0iC,OAAO,IAI5B,IAAIn7E,EAAM44C,EAAO74C,OAAO,CAAEk5C,QAASA,EAAUyiN,IAAUtiN,QAAQC,EAAUC,GAGrE07I,EAAKv8I,EAAU14C,OAAOC,EAAI05C,MAAM/4C,MAAMs4C,GAAmB,EAATyiN,GAIpD,OAHA17P,EAAI45C,SAAqB,EAAVX,EAGRg/M,EAAal4P,OAAO,CAAEC,IAAKA,EAAKg1L,GAAIA,EAAI17I,KAAMA,MAQzD6iO,EAAsB5jO,EAAM4jO,oBAAsBF,EAAmB17P,OAAO,CAM5Ey4B,IAAKijO,EAAmBjjO,IAAIz4B,OAAO,CAC/Bm9P,IAAKxB,IAoBTl4H,QAAS,SAAUuxC,EAAQh3L,EAAS86C,EAAUL,GAK1C,IAAI4kO,GAHJ5kO,EAAMl4C,KAAKk4C,IAAIz4B,OAAOy4B,IAGE0kO,IAAIC,QAAQtkO,EAAUk8I,EAAOt8I,QAASs8I,EAAOmmE,QAGrE1iN,EAAIg8I,GAAK4oF,EAAc5oF,GAGvB,IAAIC,EAAagnF,EAAmBj4H,QAAQloJ,KAAKgF,KAAMy0L,EAAQh3L,EAASq/Q,EAAc59Q,IAAKg5C,GAK3F,OAFAi8I,EAAWjhC,MAAM4pH,GAEV3oF,GAoBXhxC,QAAS,SAAUsxC,EAAQN,EAAY57I,EAAUL,GAE7CA,EAAMl4C,KAAKk4C,IAAIz4B,OAAOy4B,GAGtBi8I,EAAan0L,KAAK28Q,OAAOxoF,EAAYj8I,EAAIt4B,QAGzC,IAAIk9P,EAAgB5kO,EAAI0kO,IAAIC,QAAQtkO,EAAUk8I,EAAOt8I,QAASs8I,EAAOmmE,OAAQzmE,EAAW37I,MAQxF,OALAN,EAAIg8I,GAAK4oF,EAAc5oF,GAGPinF,EAAmBh4H,QAAQnoJ,KAAKgF,KAAMy0L,EAAQN,EAAY2oF,EAAc59Q,IAAKg5C,U,i4BCx2B1G,cASE,WACY99B,EACAC,GAFZ,MAIE,YAAMD,EAAgBC,IAAG,K,OAHf,EAAAD,iBACA,EAAAC,KAIV,EAAK0iQ,cAAgB,aAAW78Q,UAAU,wB,UAqB9C,OApC0C,OAuBjC,YAAAipJ,SAAP,WACEnpJ,KAAKg9Q,0BAA0BrxK,WAGzB,YAAAsxK,wBAAR,SAAgCluN,EAAUgiB,GAExC,GAAIhiB,EAAU,CAGZ,IAAIv0C,EAAa,IAAOC,aACxBza,KAAKkC,QAAasY,EAAU,mBAAmBxa,KAAKk5C,iBAAgB,MA5BxE,GADC,uB,gEAJUgkO,EAAoB,GADhC,uB,uBAW2C,mB,OAAA,IAAd,UAAc,SACX,mBADW,OACX,IAAf,sCAAe,YAXpBA,GAAb,CAA0C,M,gCCT1C,4DAAIr8Q,EAA4B,mBAAXnC,QAAoD,iBAApBA,OAAOoC,SAAwB,SAAUC,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAXrC,QAAyBqC,EAAIC,cAAgBtC,QAAUqC,IAAQrC,OAAO5D,UAAY,gBAAkBiG,GAsBtQ,SAASo8Q,EAA0BC,GACjC,OAAO,WACL,IAAIC,EAAgBx/Q,WAAWy/Q,EAAkB,GAE7CC,EAAiBxqO,YAAYuqO,EAAkB,IACnD,SAASA,IACPngR,aAAakgR,GACbhyM,cAAckyM,GACdH,MAmBC,IAAIh4B,EAAY,WACrB,SAASA,IACP,IA1C0Cg4B,EACxC/uN,EACA5tD,EACAy6C,EACA7nB,EAsCE1tB,EAAQ3F,KAIZA,KAAKw9Q,UAAW,EAChBx9Q,KAAKy9Q,YAAa,EAElBz9Q,KAAK09Q,eAAiB,GACtB19Q,KAAK29Q,uBAAyB,KAC9B39Q,KAAKsoI,UAAY,GAEb,UAAQs1I,iBACV59Q,KAAK69Q,4BAtDmCT,EAsD+B,WACrE,OAAOz3Q,EAAMm4Q,uBAtDfzvN,EAAW,MAAI0vN,uBAAuBX,GACtC38Q,EAAM,IACNy6C,EAAO,MAAI+nB,eAAe,MAC1B5vC,EAASx4B,OAAOoE,OAAO,OACpByS,EAAI,IACX2hB,EAAO1hB,EAAI,IACX08C,EAAS86C,QAAQjuD,EAAM,CAAEi0L,eAAe,IACjC,WACLj0L,EAAK7gD,KAAOoG,EAAM4yB,EAAO5yB,KAiDvBT,KAAK69Q,2BAA6BV,GAA0B,WAC1D,OAAOx3Q,EAAMm4Q,yBAIjB99Q,KAAKg+Q,sBAAwBb,GAA0B,WACrD,OAAOx3Q,EAAMs4Q,oBAgFjB,OA5EA74B,EAAUtqP,UAAUojR,YAAc,SAAqBtoO,EAAO0wD,GAC5D,IAAI38F,EAAQ,EACRuE,OAAO,EAEX,IAEE,IADAlO,KAAKw9Q,UAAW,EACT7zQ,EAAQisC,EAAMh7C,QAQnB,GAPAsT,EAAO0nC,EAAMjsC,GACT3J,KAAKy9Q,aACPz9Q,KAAK0kB,MAA8B,iBAAfxW,EAAKwW,MAAqBxW,EAAKwW,WAAQ9mB,GAE7DsQ,EAAKlT,SACL2O,EAEY28F,EAAU,CACpB,IAAK,IAAI63K,EAAO,EAAGC,EAAYxoO,EAAMh7C,OAAS+O,EAAOw0Q,EAAOC,EAAWD,IACrEvoO,EAAMuoO,GAAQvoO,EAAMuoO,EAAOx0Q,GAG7BisC,EAAMh7C,QAAU+O,EAChBA,EAAQ,GAGZ,MAAO7M,IAjEb,SAAiBA,EAAOoR,EAAMuvQ,GACxBA,GAAcvvQ,EAAKwW,OAA2E,iBAAhD,IAAV5nB,EAAwB,YAAc+D,EAAQ/D,KAAkC,OAAVA,IAC5GA,EAAM4nB,MAAQ25P,EAAiBvhR,EAAM4nB,OAASxW,EAAKwW,OAGjD,YAAaxW,EACfA,EAAKowQ,QAAQxhR,GAEbe,YAAW,WACT,MAAMf,IACL,GAwDDwhR,CAAQxhR,EAAOoR,EAAMlO,KAAKy9Q,YAC1B,QACAz9Q,KAAKw9Q,UAAW,IAIpBp4B,EAAUtqP,UAAU0uI,eAAiB,SAAwBt7H,GACvDlO,KAAK09Q,eAAe9iR,OAAS,GAC/BoF,KAAK69Q,6BAGH79Q,KAAKy9Q,aACPvvQ,EAAKwW,MAAQ1kB,KAAKu+Q,kBA1GE,uCA6GtBv+Q,KAAK09Q,eAAexiR,KAAKgT,IAG3Bk3O,EAAUtqP,UAAU0jR,UAAY,SAAmBtwQ,GAC7ClO,KAAKsoI,UAAU1tI,OAAS,GAC1BoF,KAAKg+Q,wBAGHh+Q,KAAKy9Q,aACPvvQ,EAAKwW,MAAQ1kB,KAAKu+Q,kBAvHH,kCA0HjBv+Q,KAAKsoI,UAAUptI,KAAKgT,IAGtBk3O,EAAUtqP,UAAUmjR,eAAiB,WACnC,IAAIroO,EAAQ51C,KAAKsoI,UACjBtoI,KAAKsoI,UAAY,GACjBtoI,KAAKk+Q,YAAYtoO,EAAOmO,OAAOsyK,YAGjC+uB,EAAUtqP,UAAUgjR,oBAAsB,WACxC,IAAIloO,EAAQ51C,KAAK09Q,eACjB19Q,KAAKk+Q,YAAYtoO,EAAO51C,KAAK29Q,wBAC7B/nO,EAAMh7C,OAAS,GAGjBwqP,EAAUtqP,UAAUyjR,kBAAoB,SAA2B52Q,GACjE,IAAI+c,EAAQ/c,EA0BhB,SAA0B+c,GACxB,OAAOA,EAAM3d,QAAQ,yCAA0C,IA3BrC03Q,CAY5B,WACE,IAAI3hR,EAAQ,IAAIC,MAEhB,GAAID,EAAM4nB,MACR,OAAO5nB,EAAM4nB,MAGf,IACE,MAAM5nB,EACN,MAAOlB,GACP,OAAOA,EAAE8oB,OAtBgCg6P,IAMzC,MAJ0B,iBAAf1+Q,KAAK0kB,QACdA,EAAQ25P,EAAiB35P,GAAS1kB,KAAK0kB,OAGlCA,GAGF0gO,EAxGc,GA6HvB,SAASi5B,EAAiB35P,GACxB,IAAI/a,EAAQ+a,EAAMrf,YAAY,uBAE9B,OAAIsE,EAAQ,IACVA,EAAQ+a,EAAMrf,YAAY,mBACd,IAKdsE,EAAQ+a,EAAMrf,YAAY,KAAMsE,IAEjB,EANJ+a,EAMgBA,EAAMpf,OAAO,EAAGqE,K,gCC1L7C,sD,gCCCA,sD,gCCDA,sD,gCCAA,0HAAI1I,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAORo9Q,EAAqB,SAA4BhiR,EAAKe,GAG/DsC,KAAKrD,IAAMA,EACXqD,KAAKtC,KAAOA,GAGHkhR,EAAwB,WACjC,SAASA,EAAsBvhB,GAG7Br9P,KAAKi+P,kBAAmB,EACxBj+P,KAAK6+Q,gBAAiB,EACtB7+Q,KAAKkwD,UAAY,KACjBlwD,KAAKwkI,aAAe,KAEpBxkI,KAAKq9P,QAAUA,EACfr9P,KAAKo6I,QAAU,KACfp6I,KAAK8+Q,UAAY,KACjB9+Q,KAAK++Q,SAAW,KAqDlB,OAlDAH,EAAsB9jR,UAAUkkR,cAAgB,SAAuBriR,EAAKe,GAC1E,IAAIuhR,EAA0B,iBAARtiR,EAAmB,YAAeA,EAAKqD,KAAKq9P,SAAW,IAAO7+P,IAAI7B,GAAKrC,SAE7F0F,KAAKwkI,aAAatpI,KAAK,IAAIyjR,EAAmBM,EAAUvhR,KAG1DuD,EAAa29Q,EAAuB,CAAC,CACnC1/Q,IAAK,WACLV,IAAK,WACH,OAAOwB,KAAK8+Q,WAEd35P,IAAK,SAAavmB,GAChB,IACIsgR,EADA7hB,EAAUr9P,KAAKq9P,QAEfz6P,OAAU,EACVjG,OAAM,EACN6nI,OAAe,EAEnBxkI,KAAK8+Q,UAAYlgR,EACjBoB,KAAKi+P,kBAAmB,EAExBihB,EAAWtgR,EAAM09C,QAAQ65D,iBAAiB,WAC1CquB,EAAexkI,KAAKwkI,aAAe,IAAI9jI,MAAMw+Q,EAAStkR,QAEtD,IAAK,IAAIF,EAAI,EAAGiI,EAAKu8Q,EAAStkR,OAAQF,EAAIiI,IAAMjI,EAAG,CAIjD,KAFAiC,GADAiG,EAAUs8Q,EAASxkR,IACL0sE,aAAa,SAGzB,MAAM,IAAIrqE,MAAM,wBAA0BsgQ,EAAU,6BAGtD74H,EAAa9pI,GAAK,IAAIikR,EAAmB,YAAehiR,EAAK0gQ,GAAUz6P,EAAQwkE,aAAa,OAExFxkE,EAAQ0+D,YACV1+D,EAAQ0+D,WAAWC,YAAY3+D,MAIpC,CACD1D,IAAK,UACLV,IAAK,WACH,OAAOwB,KAAK++Q,UAEd55P,IAAK,SAAavmB,GAChBoB,KAAK++Q,SAAWngR,EAChBoB,KAAK6+Q,gBAAiB,MAInBD,EAjE0B,GAoExB5hB,EAAS,WAClB,SAASA,IAGPh9P,KAAKm/Q,iBAAmB,GA2C1B,OAxCAniB,EAAOliQ,UAAU6J,IAAM,SAAa4X,EAAI8nB,GACtC,MAAM,IAAItnC,MAAM,4CAGlBigQ,EAAOliQ,UAAU+jQ,cAAgB,SAAuBvkQ,EAAUwkQ,GAChE,MAAM,IAAI/hQ,MAAM,gEAGlBigQ,EAAOliQ,UAAUwqO,UAAY,SAAmBhrO,EAAUwkQ,GACxD,MAAM,IAAI/hQ,MAAM,6FAGlBigQ,EAAOliQ,UAAUkkQ,WAAa,SAAoBziP,GAChD,MAAM,IAAIxf,MAAM,2CAGlBigQ,EAAOliQ,UAAUikQ,eAAiB,SAAwBpgL,GACxD,MAAM,IAAI5hF,MAAM,+CAGlBigQ,EAAOliQ,UAAUqiQ,aAAe,SAAsB10P,GACpD,MAAM,IAAI1L,MAAM,6CAGlBigQ,EAAOliQ,UAAU2uJ,SAAW,SAAkBhhJ,GAC5C,MAAM,IAAI1L,MAAM,yCAGlBigQ,EAAOliQ,UAAUokQ,iBAAmB,SAA0Bz2P,EAAK02P,GACjE,MAAM,IAAIpiQ,MAAM,6DAGlBigQ,EAAOliQ,UAAUijQ,UAAY,SAAmBoB,EAAYn/H,GAC1D,MAAM,IAAIjjI,MAAM,iEAGlBigQ,EAAOliQ,UAAUkjQ,iCAAmC,SAA0CX,GAC5F,OAAOr9P,KAAKm/Q,iBAAiB9hB,KAAar9P,KAAKm/Q,iBAAiB9hB,GAAW,IAAIuhB,EAAsBvhB,KAGhGL,EA/CW,I,gCC5EpB,sD,gCCNA,IAAYoiB,EAAZ,2CAAYA,GACV,mBACA,+BACA,qBAHF,CAAYA,MAAgB,M,iCCA5B,kDAAIj5M,EAAQyjE,EAAZ,4FAUWy1I,GAAQz1I,EAAQzjE,EAAS,WAClC,SAASk5M,EAAKhlQ,EAAIilQ,GAChB,IAAI35Q,EAAQ3F,KAIZA,KAAKu/Q,WAAa,GAClBv/Q,KAAKI,OAAS,GACdJ,KAAKw/Q,eAAiB,CACpBvjR,QAAS,KACTF,QAAS,MAGXiE,KAAKq/D,QAAU,IACfr/D,KAAKqa,GAAKA,EACVra,KAAK27M,KAAO,WAAS3vI,OAAO2vI,KAC5B37M,KAAKs/Q,SAAWA,EAChBt/Q,KAAKw/Q,eAAezjR,QAAU,IAAIC,GAAQ,SAAUC,GAClD,OAAO0J,EAAM65Q,eAAevjR,QAAUA,KAgP1C,OA5OAojR,EAAKvkR,UAAUi7E,MAAQ,SAAevyE,GACpC,IAAI2C,EAASnG,KAoBb,OARA,IAAQsD,KAAKE,GAVQ,CACnBi8Q,6BAA6B,EAC7B9uN,iBAAkB,KAClB4H,kBAAmB,KACnB1I,IAAK,KACLo5C,WAAY,CAAC,IAAK,QAClBp2C,YAAa,KACblf,OAAO,IAG+B,SAAUn0C,EAAKX,GACjD,IAAQ2E,QAAQylG,sBAAsB/rF,SACxC,IAAQ1Z,QAAQylG,WAAa,CAAC,IAAQzlG,QAAQylG,aAGhD9iG,EAAOq5Q,eAAevjR,QAAQkK,EAAOk5D,YAGhCr/D,KAAKw/Q,eAAezjR,SAG7BsjR,EAAKvkR,UAAUg7E,aAAe,WAC5B,OAAO91E,KAAKw/Q,eAAezjR,SAG7BsjR,EAAKvkR,UAAU4kR,UAAY,SAAmB7/P,GAC5C,IAAIvR,EAAStO,KAEb,OAAO,IAAIhE,GAAQ,SAAUC,GAC3B,IAAIi3B,EAAY5kB,EAAOglB,YACvBhlB,EAAO+wD,QAAQlO,eAAetxC,GAAQ,SAAUrgB,EAAKa,GACnDiO,EAAO+L,GAAGb,QAAQ,sBAAuB,CAAEu3D,SAAU79C,EAAW67B,SAAUlvC,IAC1EvR,EAAOgxQ,SAASK,OAAO,8BACvB1jR,EAAQoE,UAKdg/Q,EAAKvkR,UAAUw4B,UAAY,WACzB,OAAOtzB,KAAKq/D,QAAQjO,UAGtBiuN,EAAKvkR,UAAU8kR,GAAK,SAAYp8Q,EAASsvB,GACvC,OAAO,IAAI9yB,KAAK27M,KAAKkkE,aAAa/sP,GAAW9yB,KAAKszB,YAAa9vB,GAAW,KAG5E67Q,EAAKvkR,UAAUglR,GAAK,SAAY58P,EAAQrD,GACtC,IACIkgQ,EADK//Q,KAAK4/Q,GAAG,GAAI//P,GAAU7f,KAAKszB,aAClB1T,OAAO,IAAQ,GAE7BogQ,EAAoBD,EAAS,GAC7BE,EAAmBF,EAAS,GAEN,MAAtBC,IACFA,EAAoB,OAGtB,IAAIjwQ,EAASmT,EAAOnc,QAAQ,IAAIqiB,OAAO42P,EAAmB,KAAM,IAAIj5Q,QAAQ,YAAa,IAAIA,QAAQk5Q,EAAkB,KAEvH,OAAOl8N,OAAOh0C,IAGhBsvQ,EAAKvkR,UAAUolR,GAAK,SAAY18Q,EAASsvB,GACvC,OAAO,IAAI9yB,KAAK27M,KAAKC,eAAe9oL,GAAW9yB,KAAKszB,YAAa9vB,IAGnE67Q,EAAKvkR,UAAUuF,GAAK,SAAYnB,EAAKsE,GACnC,IAAI28Q,EAAcngR,KAAKu/Q,WAMvB,YAJgB3hR,IAAZ4F,IACF28Q,EAActlR,OAAOgI,OAAOhI,OAAOgI,OAAO,GAAI7C,KAAKu/Q,YAAa/7Q,IAG3DxD,KAAKq/D,QAAQxgE,EAAEK,EAAKihR,IAG7Bd,EAAKvkR,UAAUslR,uBAAyB,SAAgClhR,EAAKN,GAC3EoB,KAAKu/Q,WAAWrgR,GAAON,GAGzBygR,EAAKvkR,UAAUulR,yBAA2B,SAAkCnhR,UACnEc,KAAKu/Q,WAAWrgR,IAGzBmgR,EAAKvkR,UAAUouJ,mBAAqB,SAA4BrnF,GAC9D,GAAKA,GAAOA,EAAGs0C,iBAAf,CAIA,IAAIz7G,OAAI,EACJiB,OAAI,EAEJs1G,EAAW,GAAG9sG,OAAOnE,KAAKq/D,QAAQ77D,QAAQylG,YAC9C,IAAKvuG,EAAI,EAAGiB,EAAIs1G,EAASr2G,OAAQF,EAAIiB,EAAGjB,IACtCu2G,EAASv2G,GAAK,IAAMu2G,EAASv2G,GAAK,IACnCu2G,EAAWA,EAASjpG,KAAK,KAE1B,IAAI0tF,EAAQ7zB,EAAGs0C,iBAAiBlF,GAChC,IAAKv2G,EAAI,EAAGiB,EAAI+5F,EAAM96F,OAAQF,EAAIiB,EAAGjB,IAAK,CAKxC,IAJA,IAAIwgD,EAAOw6C,EAAMh7F,GACb6Z,OAAO,EACPnU,OAAS,EAEJq8P,EAAK,EAAG6jB,EAAKtgR,KAAKq/D,QAAQ77D,QAAQylG,WAAWruG,OAAQ6hQ,EAAK6jB,EAAI7jB,IAAM,CAC3EloP,EAAO2mC,EAAKksB,aAAapnE,KAAKq/D,QAAQ77D,QAAQylG,WAAWwzJ,IACzD,IAAI8jB,EAAQvgR,KAAKq/D,QAAQ77D,QAAQylG,WAAWwzJ,GAAM,UAMlD,GAJI8jB,GAASrlO,EAAKutM,IAAMvtM,EAAKutM,GAAG83B,KAC9BngR,EAAS86C,EAAKutM,GAAG83B,GAAOxyQ,UAAUnP,OAGhC2V,EAAM,MAGPA,GAELvU,KAAKqrI,YAAYnwF,EAAM3mC,EAAMnU,MAIjCi/Q,EAAKvkR,UAAUuwI,YAAc,SAAqBnwF,EAAMt8C,EAAOwB,GAC7D,GAAIxB,QAOJ,IAHA,IAAI2V,EAAO3V,EAAMogB,WAAWsM,MAAM,KAC9B5wB,EAAI6Z,EAAK3Z,OAENF,KAAK,CACV,IAAIwE,EAAMqV,EAAK7Z,GAEXgpO,EAAK,qBAELzlO,OAAI,EACJoyC,EAAO,OAIX,IAFsB,QAAlB6K,EAAK86D,WAAoB3lE,EAAO,OAEN,QAAtBpyC,EAAIylO,EAAGhtM,KAAKx3B,KACdjB,EAAE0L,QAAU+5N,EAAG77M,WACjB67M,EAAG77M,YAED5pB,IACFiB,EAAMA,EAAI6H,QAAQ9I,EAAE,GAAI,IACxBoyC,EAAOpyC,EAAE,IAOb,IAHA,IAAIwjE,EAAQpxB,EAAK/kB,MAAM,KACnBsI,EAAI6tC,EAAM7mE,OAEPg5B,KAAK,CACVyc,EAAOoxB,EAAM7tC,GAAG+yB,OAEXzL,EAAKslO,eAActlO,EAAKslO,aAAetlO,EAAKi+D,aAC5Cj+D,EAAKulO,aAAYvlO,EAAKulO,WAAavlO,EAAK+O,WAE7C,IAAIy2N,EAASrwO,EAAKtpC,QAAQ,aAAa,SAAU8qE,GAC/C,OAAOA,EAAE,GAAG9tC,iBAEV48O,EAAgB,CAAC,UAAW,SAAU,OAAQ,QAC9CC,EAAa,YAAqB,QAMtC,GAJID,EAActvQ,QAAQg/B,IAAS,GAAK6K,EAAKutM,IAAMvtM,EAAKutM,GAAGhjL,YAAcvqB,EAAKutM,GAAGhjL,WAAW13D,WAAa2yQ,KAAUxlO,EAAKutM,GAAGhjL,WAAW13D,WACpI6yQ,EAAW18P,KAAK,8CAAgDy8P,EAAc34Q,KAAK,MAAQ,mDAAqDqoC,EAAO,0IAGrJrwC,KAAKq/D,QAAQ77D,QAAQi8Q,6BAA+Bz/Q,KAAKK,GAAGnB,EAAKkB,KAAYlB,EAE/E,YADA0hR,EAAW18P,KAAK,sCAAyChlB,GAI3D,OAAQmxC,GACN,IAAK,OACH,IAAIwwO,EAAW,MAAI59M,eAAejjE,KAAKK,GAAGnB,EAAKkB,IAM/C,IALI86C,EAAK4lO,WAAa5lO,EAAK4lO,UAAUx/M,aAAepmB,GAClDA,EAAKqmB,YAAYrmB,EAAK4lO,WAGxB5lO,EAAK4lO,UAAYD,EACV3lO,EAAKkmB,YACVlmB,EAAKqmB,YAAYrmB,EAAKkmB,YAExBlmB,EAAKn9C,YAAYm9C,EAAK4lO,WACtB,MACF,IAAK,UACH,IAAIC,EAAgB,MAAIzkR,cAAc,OACtCykR,EAAc92N,UAAYjqD,KAAKK,GAAGnB,EAAKkB,GACvC,IAAK,IAAI4gR,EAAK9lO,EAAKgoB,WAAWtoE,OAAS,EAAGomR,GAAM,EAAGA,IAC7C9lO,EAAKgoB,WAAW89M,GAAIC,YACtB/lO,EAAKqmB,YAAYrmB,EAAKgoB,WAAW89M,IAIrC,IAAK,IAAIE,EAAKH,EAAc79M,WAAWtoE,OAAS,EAAGsmR,GAAM,EAAGA,IAC1DH,EAAc79M,WAAWg+M,GAAID,YAAa,EACtC/lO,EAAKkmB,WACPlmB,EAAKimB,aAAa4/M,EAAc79M,WAAWg+M,GAAKhmO,EAAKkmB,YAErDlmB,EAAKn9C,YAAYgjR,EAAc79M,WAAWg+M,IAG9C,MACF,IAAK,SACH,IAAIC,EAAe,MAAI7kR,cAAc,OACrC6kR,EAAal3N,UAAYjqD,KAAKK,GAAGnB,EAAKkB,GACtC,IAAK,IAAIghR,EAAMlmO,EAAKgoB,WAAWtoE,OAAS,EAAGwmR,GAAO,EAAGA,IAC/ClmO,EAAKgoB,WAAWk+M,GAAKC,WACvBnmO,EAAKqmB,YAAYrmB,EAAKgoB,WAAWk+M,IAIrC,KAAOD,EAAa//M,YAClB+/M,EAAa//M,WAAWigN,WAAY,EACpCnmO,EAAKn9C,YAAYojR,EAAa//M,YAEhC,MACF,IAAK,OACHlmB,EAAK+O,UAAYjqD,KAAKK,GAAGnB,EAAKkB,GAC9B,MACF,QACM86C,EAAKutM,IAAMvtM,EAAKutM,GAAGhjL,YAAcvqB,EAAKutM,GAAGhjL,WAAW13D,WAAa2yQ,KAAUxlO,EAAKutM,GAAGhjL,WAAW13D,UAChGmtC,EAAKutM,GAAGhjL,WAAW13D,UAAU2yQ,GAAU1gR,KAAKK,GAAGnB,EAAKkB,GAEpD86C,EAAKx+C,aAAa2zC,EAAMrwC,KAAKK,GAAGnB,EAAKkB,QAS1Ci/Q,EAlQ2B,GAmQ/Bl5M,EAAO3wD,OAAS,CAAC,kBAAiB,mBAAkBo0H,K,o3DClQzD,aAIE,WACSxsH,GAAA,KAAAA,SAGPpd,KAAKC,OAAS,aAAWC,UAAU,yB,MA0JvC,OAvJe,YAAA4T,KAAb,SAAkBwJ,G,qBAAoCthB,GAAO,W,kDACpD,SAAMgE,KAAKod,OAAOX,KAAK,sBAAuBa,GAClDna,MAAK,SAACsY,GACL,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAMI,YAAA6lQ,gBAAb,SAA6BhkQ,G,qBAAoCthB,GAAO,W,kDAC/D,SAAMgE,KAAKod,OAAOX,KAAK,kCAAmCa,GAC9Dna,MAAK,SAACsY,GACL,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAOI,YAAA8lQ,cAAb,SAA2BhlQ,EAAYe,G,qBAAoCthB,GAAO,W,kDACzE,SAAMgE,KAAKod,OAAOX,KAAK,6BAA6BF,EAAMe,GAC9Dna,MAAK,SAACsY,GACL,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAMI,YAAAa,QAAb,SAAqBC,G,qBAAavgB,GAAO,W,kDAChC,SAAMgE,KAAKod,OAAOd,QAAQ,iBAAkBC,GAChDpZ,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAaI,YAAAgvD,aAAb,SAA0BluD,G,qBAAavgB,GAAO,W,kDACrC,SAAMgE,KAAKod,OAAOX,KAAK,gCAAkCF,GAC7DpZ,MAAK,SAACsY,GACL,OAAO,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAA8vB,cAAb,SAA2BhvB,G,qBAAavgB,GAAO,W,kDACtC,SAAMgE,KAAKod,OAAOX,KAAK,iCAAmCF,GAC9DpZ,MAAK,SAACsY,GACL,OAAoCA,M,OAFxC,MAAO,CAAP,EAAO,kBAMI,YAAA+lQ,gBAAb,SAA6BjlQ,EAAY7e,G,qBAAe1B,GAAO,W,wDAEtD,OADHggB,EAAmBte,EAAO,IAAM,IAASkiB,SAAW,OACjD,GAAM5f,KAAKod,OAAOvB,SAAS,MAAO,+BAA+BU,EAAM,KAAMP,EAAU,WAAY,MACvG7Y,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAAlE,OAAb,SAAoBue,G,qBAAwBxhB,GAAO,W,wDA6D1C,OA9BHwhB,EAAMouC,WACRpuC,EAAMouC,SAAWpuC,EAAMouC,SAAS,IAG9BhhB,EAAW,EAAiBptB,GAE7BA,EAAM03L,gBACP13L,EAAM03L,eAAe/tM,SAAQ,SAACiuC,EAAazrC,GACzCihC,EAASE,OAAO,kBAAkBnhC,EAAK,eAAgByrC,EAAYpL,WAAWhrB,YAC9E4rB,EAASE,OAAO,kBAAkBnhC,EAAK,kBAAmByrC,EAAY5K,cAAcxrB,YACpF4rB,EAASE,OAAO,kBAAkBnhC,EAAK,aAAcyrC,EAAYqsO,SAASziQ,eAI1ExB,EAAM+lI,gBACR/lI,EAAM+lI,eAAep8I,SAAQ,SAAC/E,EAAMuH,GAClCihC,EAASE,OAAO,kBAAkBnhC,EAAK,eAAgBvH,EAAKs/Q,WAAW1iQ,YACvE4rB,EAASE,OAAO,kBAAkBnhC,EAAK,kBAAmBvH,EAAKooC,cAAcxrB,eAI7ExB,EAAM61O,8BACR71O,EAAM61O,6BAA6BlsP,SAAQ,SAACw6Q,EAAWh4Q,GACrDihC,EAASE,OAAO,gCAAgCnhC,EAAK,oBAAqBg4Q,EAAU5jQ,gBAAgBiB,YACpG4rB,EAASE,OAAO,gCAAgCnhC,EAAK,uBAAwBg4Q,EAAUx2O,mBAAmBnsB,YAC1G4rB,EAASE,OAAO,gCAAgCnhC,EAAK,kBAAmBg4Q,EAAUn3O,cAAcxrB,eAK7F,GAAMhf,KAAKod,OAAOxB,gBAAgB,MAAO,iBAAkBgvB,GAC/DznC,MAAK,SAACsY,GACL,OAAuBA,M,OAF3B,MAAO,CAAP,EAAO,kBAOI,YAAAswC,2BAAb,SAAwCxvC,G,qBAAavgB,GAAO,W,kDACnD,SAAMgE,KAAKod,OAAO5e,IAAI,gDAAgD+d,GAC1EpZ,MAAK,SAACsY,GACL,OAAeA,M,OAFnB,MAAO,CAAP,EAAO,kBAMI,YAAAmmQ,UAAb,SAAuBrlQ,EAAYiB,G,qBAAwBxhB,GAAO,W,wDAOzD,OANHwhB,EAAMouC,WACRpuC,EAAMouC,SAAWpuC,EAAMouC,SAAS,IAG9BhhB,EAAW,EAAiBptB,GAEzB,GAAMxd,KAAKod,OAAOxB,gBAAgB,OAAQ,6BAA6BW,EAAMquB,GACjFznC,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAAomQ,aAAb,SAA0BC,EAA0BC,G,qBAAiB/lR,GAAO,W,kDACnE,SAAMgE,KAAKod,OAAON,OAAO,8BAA8BglQ,EAAgB,IAAIC,GAC/E5+Q,MAAK,WACJ,OAAO,M,OAFX,MAAO,CAAP,EAAO,kBA5JE6+Q,EAAqB,GADjC,uB,uBAMsC,mB,OAAA,IAApB,UAAoB,YAL1BA,GAAb,K,m2DCJA,aAGE,WACS5kQ,GAAA,KAAAA,SAEPpd,KAAKC,OAAS,aAAWC,UAAU,2B,MAqDvC,OAlDe,YAAAqd,OAAb,W,qBAAuBvhB,GAAO,W,kDACrB,SAAMgE,KAAKod,OAAO5e,IAAI,oBAC1B2E,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAA3H,KAAb,SAAkBwJ,G,qBAAoCthB,GAAO,W,kDACpD,SAAMgE,KAAKod,OAAOX,KAAK,wBAAyBa,GACpDna,MAAK,SAACsY,GACL,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAMI,YAAAa,QAAb,SAAqBC,G,qBAAavgB,GAAO,W,kDAChC,SAAMgE,KAAKod,OAAOd,QAAQ,mBAAoBC,GAClDpZ,MAAK,SAACsY,GACL,OAAyBA,M,OAF7B,MAAO,CAAP,EAAO,kBAMI,YAAAxc,OAAb,SAAoBue,G,qBAA0BxhB,GAAO,W,kDAC5C,SAAMgE,KAAKod,OAAOne,OAAO,mBAAoBue,GACjDra,MAAK,SAACsY,GACL,OAAyBA,M,OAF7B,MAAO,CAAP,EAAO,kBAMI,YAAAiB,OAAb,SAAoBc,G,qBAA0BxhB,GAAO,W,kDAC5C,SAAMgE,KAAKod,OAAOT,WAAW,mBAAoBa,EAAMjB,GAAI,KAAMiB,GACrEra,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAA2Z,OAAb,SAAoBP,G,qBAAavgB,GAAO,W,kDAC/B,SAAMgE,KAAKod,OAAOL,WAAW,mBAAoBR,GACrDpZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAGI,YAAA8+Q,eAAb,SAA4B1lQ,G,qBAAavgB,GAAO,W,kDACvC,SAAMgE,KAAKod,OAAO5e,IAAI,qCAAsC+d,GAChEpZ,MAAK,SAACsY,GACL,OAAyBA,M,OAF7B,MAAO,CAAP,EAAO,kBAKI,YAAAymQ,iCAAb,SAA8C3lQ,G,qBAAavgB,GAAO,W,kDACzD,SAAMgE,KAAKod,OAAOX,KAAK,uDAAuDF,GACpFpZ,MAAK,SAACsY,GACL,OAAOA,M,OAFT,MAAO,CAAP,EAAO,kBArDE0mQ,EAAuB,GADnC,uB,uBAKsC,mB,OAAA,IAApB,UAAoB,YAJ1BA,GAAb,K,gDCPA,i0IAQiBh8M,EAAeC,EAAgB67D,EAAgBE,EAAgBE,EAAgB+/I,EAAgBC,EAAgBC,EAAUC,EAAU34I,EAAe44I,EAAUC,EAAUC,EARvL,+BAIIzhR,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAEfV,EAA4B,mBAAXnC,QAAoD,iBAApBA,OAAOoC,SAAwB,SAAUC,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAXrC,QAAyBqC,EAAIC,cAAgBtC,QAAUqC,IAAQrC,OAAO5D,UAAY,gBAAkBiG,GAItQ,SAAS4W,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAElO,SAASid,EAAUL,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAS1d,IAAI8qQ,EAAgB,iBAChBC,EAAgB,iBAEvBj+Q,EAAM9J,OAAOoE,OAAO,MAEjB,SAASokH,EAAU3lH,GACxB,GAAIA,KAAQiH,EACV,OAAOA,EAAIjH,GAEb,IAAIqS,EAASrS,EAAKiT,OAAO,GAAG4K,cAAgB7d,EAAKmC,MAAM,GAAGkH,QAAQ,gBAAgB,SAAU8S,EAAG3S,GAC7F,OAAOA,EAAE68B,iBAGX,OADAp/B,EAAIjH,GAAQqS,EACLA,EAGF,SAAS8yQ,EAAsBl7M,EAAgBm7M,GACpD,MAAO,CACLn7M,eAAgBA,EAChBm7M,sBAAuBA,GAAyB,MAI7C,SAASC,EAAcrlR,EAAM0tE,EAAO43M,GACzC,IAAIC,EAAK73M,EAAMxD,gBAEf,GAAIo7M,EAAU,CACZ,KAAOA,GAAYC,GACjBD,IACAC,EAAKA,EAAGH,sBAEV,GAAIE,IAAaC,EACf,OAEF,OAAOvlR,KAAQulR,EAAKA,EAAKA,EAAGt7M,eAG9B,KAAOs7M,KAAQvlR,KAAQulR,MAASA,EAAGt7M,kBAAkBjqE,KAAQulR,EAAGt7M,kBAC9Ds7M,EAAKA,EAAGH,sBAEV,OAAIG,EACKvlR,KAAQulR,EAAKA,EAAKA,EAAGt7M,eAGvByD,EAAMzD,gBAAkByD,EAAMxD,gBAGhC,SAASs7M,EAAmBv7M,EAAgBw7M,GACjD,OAAIA,EACK,CACLx7M,eAAgBA,EAChBC,gBAAiBi7M,EAAsBl7M,EAAgBk7M,EAAsBM,KAG1E,CACLx7M,eAAgBA,EAChBC,gBAAiBi7M,EAAsBl7M,IAI3C,IAAIy7M,EAAY,GACZC,EAAmB,GACnBC,GAAY,EAChB,SAASC,EAAsBC,GAC7B,GAAIA,IAAgBF,EAAU,CAC5BA,GAAY,EAEZ,IADA,IAAI3gR,EAAKygR,EAAUxoR,OAASyoR,EAAiBzoR,OAAS0oR,EAAW,EACxD5oR,EAAI8oR,EAAc,EAAG9oR,EAAIiI,IAAMjI,EACtC0oR,EAAU1oR,GAAK,YAAcA,EAC7B2oR,EAAiB3oR,GAAK,mBAAqBA,GAMjD,SAAS+oR,EAAYp1N,GAGnB,IAFA,IAAIq1N,OAAwC9lR,IAAxBoC,KAAK2jR,eAA+B,EAAI3jR,KAAK2jR,eAC7DjpR,EAAIgpR,EACDhpR,KAAOsF,KAAKojR,EAAU1oR,MAAQ2zD,IAErC,IAAW,IAAP3zD,EAAU,CAEZ,IADAA,EAAI,EACGsF,KAAKojR,EAAU1oR,KACpBA,IAEFsF,KAAKojR,EAAU1oR,IAAM2zD,EACrBA,EAASt5C,UAAU6tQ,EAAe5iR,MAE9BtF,IAAMgpR,IACR1jR,KAAK2jR,eAAiBjpR,EAAI,QAIRkD,IAAlBoC,KAAK4jR,WACP5jR,KAAK4jR,SAAW,GAElB5jR,KAAKqjR,EAAiB3oR,IAAMsF,KAAK4jR,SACjCL,EAAsB7oR,GAGxB,SAASmpR,EAAgB9iR,EAAKwpF,GAC5B,IAAIl8B,EAAWruD,KAAKgtE,gBAAgB82M,YAAY/iR,EAAKwpF,GACrDk5L,EAAYzoR,KAAKgF,KAAMquD,GAGzB,SAAS01N,EAAaz8P,GACpB,IAAI+mC,EAAWruD,KAAKgtE,gBAAgBE,iBAAiB5lD,GACrDm8P,EAAYzoR,KAAKgF,KAAMquD,GAGzB,SAAS21N,EAAUhmR,GAEjB,IADA,IAAItD,EAAIsF,KAAK2jR,eACNjpR,KACL,GAAIsD,GAAOgC,KAAKqjR,EAAiB3oR,MAAQsF,KAAK4jR,SAAU,CACtD,IAAIv1N,EAAWruD,KAAKojR,EAAU1oR,IAC9BsF,KAAKojR,EAAU1oR,IAAM,KACjB2zD,GACFA,EAASv5C,YAAY8tQ,EAAe5iR,OAMrC,SAASikR,IACd,OAAO,SAAUzmR,GACfA,EAAO1C,UAAU+oR,gBAAkBA,EACnCrmR,EAAO1C,UAAUipR,aAAeA,EAChCvmR,EAAO1C,UAAUkpR,UAAYA,EAC7BxmR,EAAO1C,UAAU2oR,YAAcA,GAvDnCF,GAAuB,GA2DvB,IAAI3tO,EAAQ,GACRsuO,EAAS,GACTC,EAAS,EACTC,EAAmB,IAGnBC,GAAmB,EACnBxqM,EAAY,EAEhB,SAASujM,EAAMkH,GAGb,IAFA,IAAI1pR,EAASg7C,EAAMh7C,OACfF,EAAI,EACDA,EAAIE,GAAQ,CACjB,IAAIu8C,EAAUvB,EAAMl7C,GAKpB,GAJAwpR,EAAO/sO,EAAQotO,mBAAoB,EACnCptO,EAAQqtO,SAAQ,KAChB9pR,EAEQ,KAAQ,GAAK,WAAS+pR,YAAYnrQ,MAAQgrQ,EAdpC,GAeZ,MAGJ1uO,EAAMz+B,OAAO,EAAGzc,GAEZk7C,EAAMh7C,OACR,WAASu4H,sBAAsBiqJ,IAE/BiH,GAAmB,EACnBxqM,EAAY,GAIT,SAAS6qM,EAAsBvtO,GACpC,GAAI0iC,EAAYuqM,EACdvqM,IACA1iC,EAAQqtO,SAAQ,OACX,CACL,IAAIjoQ,EAAK46B,EAAQotO,sBACN3mR,IAAP2e,IACFA,EAAK4nQ,EACLA,IACAhtO,EAAQotO,iBAAmBhoQ,GAGxB2nQ,EAAO3nQ,KACVq5B,EAAM16C,KAAKi8C,GACX+sO,EAAO3nQ,IAAM,GAGZ8nQ,IACHA,GAAmB,EACnB,WAASlxJ,sBAAsBiqJ,IAI5B,SAASuH,EAAyB/lR,GACvCwlR,EAAmBxlR,EAGd,SAASgmR,IACdD,EAAyB,KAGpB,SAASE,IACdF,EAAyB5gO,OAAO+gO,kBAG3B,SAASC,IACd,OAAOnvO,EAAMh7C,OAGf,SAASoqR,EAAc7xQ,EAAS8xQ,GAC9B,OAAIjlR,KAAKklR,cAAc/xQ,EAAS8xQ,KAG3BjlR,KAAKmlR,UAKLnlR,KAAKolR,UAKLplR,KAAKqlR,UAKLrlR,KAAKslR,eAKVtlR,KAAKslR,cAAcpqR,KAAKiY,GACxBnT,KAAKulR,eAAerqR,KAAK+pR,IAClB,IANLjlR,KAAKslR,cAAgB,CAACnyQ,GACtBnT,KAAKulR,eAAiB,CAACN,IAChB,IAPPjlR,KAAKqlR,UAAYlyQ,EACjBnT,KAAKwlR,WAAaP,GACX,IAPPjlR,KAAKolR,UAAYjyQ,EACjBnT,KAAKylR,WAAaR,GACX,IAPPjlR,KAAKmlR,UAAYhyQ,EACjBnT,KAAK0lR,WAAaT,GACX,IAsBX,SAASU,EAAiBxyQ,EAAS8xQ,GACjC,GAAIjlR,KAAKmlR,YAAchyQ,GAAWnT,KAAK0lR,aAAeT,EAGpD,OAFAjlR,KAAKmlR,UAAY,KACjBnlR,KAAK0lR,WAAa,MACX,EAET,GAAI1lR,KAAKolR,YAAcjyQ,GAAWnT,KAAKylR,aAAeR,EAGpD,OAFAjlR,KAAKolR,UAAY,KACjBplR,KAAKylR,WAAa,MACX,EAET,GAAIzlR,KAAKqlR,YAAclyQ,GAAWnT,KAAKwlR,aAAeP,EAGpD,OAFAjlR,KAAKqlR,UAAY,KACjBrlR,KAAKwlR,WAAa,MACX,EAET,IAAII,EAAY5lR,KAAKulR,eACrB,QAAkB3nR,IAAdgoR,GAAgD,IAArBA,EAAUhrR,OACvC,OAAO,EAIT,IAFA,IAAI2hH,EAAWv8G,KAAKslR,cAChB5qR,EAAI,GACCkrR,EAAUlrR,KAAOuqR,GAAY1oK,EAAS7hH,KAAOyY,IAAYyyQ,EAAUhrR,OAASF,GACnFA,IAEF,QAAIA,GAAKkrR,EAAUhrR,UAGnB2hH,EAASplG,OAAOzc,EAAG,GACnBkrR,EAAUzuQ,OAAOzc,EAAG,IACb,GAGT,IAAImrR,GAAa,GACbC,GAAa,GACbC,GAAkB,GAEtB,SAASC,GAAgBj3N,EAAUgiB,GACjC,IAAIk1M,EAAWjmR,KAAKmlR,UAChBe,EAAYlmR,KAAK0lR,WACjBS,EAAWnmR,KAAKolR,UAChBgB,EAAYpmR,KAAKylR,WACjBY,EAAWrmR,KAAKqlR,UAChBiB,EAAYtmR,KAAKwlR,WACjB5qR,EAASoF,KAAKslR,cAAgBtlR,KAAKslR,cAAc1qR,OAAS,EAC1D2rR,OAAe,EACfC,OAAgB,EAChBC,OAAY,EACZ/rR,OAAI,EACR,GAAIE,EAAQ,CAEV,IADA6rR,EAAYV,GAAgBnrR,OACrB6rR,KAAeV,GAAgBU,KAetC,IAdIA,EAAY,GACdA,EAAYV,GAAgBnrR,OAC5B2rR,EAAe,GACfC,EAAgB,GAChBT,GAAgB7qR,MAAK,GACrB2qR,GAAW3qR,KAAKqrR,GAChBT,GAAW5qR,KAAKsrR,KAEhBT,GAAgBU,IAAa,EAC7BF,EAAeV,GAAWY,GAC1BD,EAAgBV,GAAWW,IAG7B/rR,EAAIE,EACGF,KACL6rR,EAAa7rR,GAAKsF,KAAKslR,cAAc5qR,GACrC8rR,EAAc9rR,GAAKsF,KAAKulR,eAAe7qR,GAyB3C,GArBIurR,IACEC,EACFA,EAAUlrR,KAAKirR,EAAUl3N,EAAUgiB,GAEnCk1M,EAASl3N,EAAUgiB,IAGnBo1M,IACEC,EACFA,EAAUprR,KAAKmrR,EAAUp3N,EAAUgiB,GAEnCo1M,EAASp3N,EAAUgiB,IAGnBs1M,IACEC,EACFA,EAAUtrR,KAAKqrR,EAAUt3N,EAAUgiB,GAEnCs1M,EAASt3N,EAAUgiB,IAGnBn2E,EAAQ,CACV,IAAKF,EAAI,EAAGA,EAAIE,EAAQF,IAAK,CAC3B,IAAIuqR,EAAWuB,EAAc9rR,GACzByY,EAAUozQ,EAAa7rR,GACvBuqR,EACFA,EAASjqR,KAAKmY,EAAS47C,EAAUgiB,GAEjC59D,EAAQ47C,EAAUgiB,GAEpBw1M,EAAa7rR,GAAK,KAClB8rR,EAAc9rR,GAAK,KAErBqrR,GAAgBU,IAAa,GAIjC,SAASC,KACP,SAAU1mR,KAAKmlR,WAAanlR,KAAKolR,WAAaplR,KAAKqlR,WAAarlR,KAAKslR,eAAiBtlR,KAAKslR,cAAc1qR,QAG3G,SAASsqR,GAAc/xQ,EAAS8xQ,GAE9B,GADUjlR,KAAKmlR,YAAchyQ,GAAWnT,KAAK0lR,aAAeT,GAAYjlR,KAAKolR,YAAcjyQ,GAAWnT,KAAKylR,aAAeR,GAAYjlR,KAAKqlR,YAAclyQ,GAAWnT,KAAKwlR,aAAeP,EAEtL,OAAO,EAET,IAAIt7Q,OAAQ,EACR4yG,EAAWv8G,KAAKslR,cACpB,IAAK/oK,GAA0C,KAA7B5yG,EAAQ4yG,EAAS3hH,QACjC,OAAO,EAGT,IADA,IAAIgrR,EAAY5lR,KAAKulR,eACd57Q,KACL,GAAI4yG,EAAS5yG,KAAWwJ,GAAWyyQ,EAAUj8Q,KAAWs7Q,EACtD,OAAO,EAGX,OAAO,EAGF,SAAS0B,KACd,OAAO,SAAUnpR,GACfA,EAAO1C,UAAUkqR,cAAgBA,EACjCxnR,EAAO1C,UAAU6qR,iBAAmBA,EACpCnoR,EAAO1C,UAAUkrR,gBAAkBA,GACnCxoR,EAAO1C,UAAU4rR,eAAiBA,GAClClpR,EAAO1C,UAAUoqR,cAAgBA,IAI9B,IAAI0B,GAA6B3C,GAA+Cn9M,CAAKX,EAA7BwgN,IAAsChkJ,CAAMx8D,EAAS,WAClH,SAASygN,EAAmBx7M,EAAO6lF,EAAYjkF,EAAiBk5K,GAG9DlmP,KAAKorE,MAAQA,EACbprE,KAAKixJ,WAAaA,EAClBjxJ,KAAKgtE,gBAAkBA,EACvBhtE,KAAKkmP,gBAAkBA,EA+CzB,OA5CA0gC,EAAmB9rR,UAAU+rR,SAAW,WACtC,OAAO7mR,KAAKixJ,WAAW+2F,SAAShoP,KAAKorE,MAAOprE,KAAKkmP,kBAGnD0gC,EAAmB9rR,UAAUgsR,SAAW,SAAkB/3N,GACxD/uD,KAAKixJ,WAAWpuJ,OAAO7C,KAAKorE,MAAOrc,IAGrC63N,EAAmB9rR,UAAUia,UAAY,SAAmB5B,EAAS8xQ,GACnE,IAAIt/Q,EAAQ3F,KAOZ,GALKA,KAAK0mR,mBACR1mR,KAAK+wE,SAAW/wE,KAAKixJ,WAAW+2F,SAAShoP,KAAKorE,MAAOprE,KAAKkmP,iBAC1DlmP,KAAKixJ,WAAWuzH,QAAQxkR,KAAMA,KAAKorE,QAErCprE,KAAKglR,cAAc7xQ,EAAS8xQ,GACH,IAArBnjR,UAAUlH,QAAgBuY,aAAmB2R,SAC/C,MAAO,CACL6mF,QAAS,WACPhmG,EAAMmP,YAAY3B,EAAS8xQ,MAMnC2B,EAAmB9rR,UAAUga,YAAc,SAAqB3B,EAAS8xQ,GACnEjlR,KAAK2lR,iBAAiBxyQ,EAAS8xQ,KAAcjlR,KAAK0mR,mBACpD1mR,KAAKgkR,WAAU,GACfhkR,KAAK+wE,cAAWnzE,IAIpBgpR,EAAmB9rR,UAAUE,KAAO,WAClC,IAAI+zD,EAAW/uD,KAAKixJ,WAAW+2F,SAAShoP,KAAKorE,MAAOprE,KAAKkmP,iBACrDn1K,EAAW/wE,KAAK+wE,SAChBhiB,IAAagiB,IACf/wE,KAAK+wE,SAAWhiB,EAChB/uD,KAAKgmR,gBAAgBj3N,EAAUgiB,IAEjC/wE,KAAK4jR,WACL5jR,KAAKixJ,WAAWuzH,QAAQxkR,KAAMA,KAAKorE,OACnCprE,KAAKgkR,WAAU,IAGV4C,EAtD2G,KAuD5GzgN,IAAWA,EAMnB,SAAS4gN,GAASjnR,GAChB,OAAQA,EAGV,SAASknR,GAAUr9Q,EAAO0lE,EAASC,GACjC,MAAO,CACL3lE,MAAOA,EACP0lE,QAASA,EACTC,WAAYA,GAShB,SAAS23M,MAETA,GAAYnsR,UAAY,CACtBosR,kBAAmB,SAA2BtkR,EAASukR,EAAcC,EAAY7lM,EAAK8lM,EAAUC,GAO9F,IANA,IAAIC,EAAWD,EAASD,EAAW,EAC/BG,EAAcJ,EAAaD,EAAe,EAC1CM,EAAY,IAAI/mR,MAAM6mR,GACtBG,OAAQ,EACRC,OAAO,EAEFjtR,EAAI,EAAGA,EAAI6sR,IAAY7sR,EAC9B+sR,EAAU/sR,GAAK,IAAIgG,MAAM8mR,GACzBC,EAAU/sR,GAAG,GAAKA,EAGpB,IAAK,IAAIk5B,EAAI,EAAGA,EAAI4zP,IAAe5zP,EACjC6zP,EAAU,GAAG7zP,GAAKA,EAGpB,IAAK,IAAIpoB,EAAK,EAAGA,EAAK+7Q,IAAY/7Q,EAChC,IAAK,IAAImwP,EAAK,EAAGA,EAAK6rB,IAAe7rB,EAC/B37P,KAAKg9K,OAAOp6K,EAAQukR,EAAexrB,EAAK,GAAIp6K,EAAI8lM,EAAW77Q,EAAK,IAClEi8Q,EAAUj8Q,GAAImwP,GAAM8rB,EAAUj8Q,EAAK,GAAGmwP,EAAK,IAE3C+rB,EAAQD,EAAUj8Q,EAAK,GAAGmwP,GAAM,EAChCgsB,EAAOF,EAAUj8Q,GAAImwP,EAAK,GAAK,EAC/B8rB,EAAUj8Q,GAAImwP,GAAM+rB,EAAQC,EAAOD,EAAQC,GAKjD,OAAOF,GAGTG,kCAAmC,SAA2CH,GAK5E,IAJA,IAAI/sR,EAAI+sR,EAAU7sR,OAAS,EACvBg5B,EAAI6zP,EAAU,GAAG7sR,OAAS,EAC1BgI,EAAU6kR,EAAU/sR,GAAGk5B,GACvBi0P,EAAQ,GACLntR,EAAI,GAAKk5B,EAAI,GAClB,GAAU,IAANl5B,EAKJ,GAAU,IAANk5B,EAAJ,CAKA,IAAIk0P,EAAYL,EAAU/sR,EAAI,GAAGk5B,EAAI,GACjC+zP,EAAOF,EAAU/sR,EAAI,GAAGk5B,GACxB8zP,EAAQD,EAAU/sR,GAAGk5B,EAAI,GAEzB9P,OAAM,GAERA,EADE6jQ,EAAOD,EACHC,EAAOG,EAAYH,EAAOG,EAE1BJ,EAAQI,EAAYJ,EAAQI,KAGxBA,GACNA,IAAcllR,EAChBilR,EAAM3sR,KApEC,IAsEP2sR,EAAM3sR,KArEE,GAsER0H,EAAUklR,GAEZptR,IACAk5B,KACS9P,IAAQ6jQ,GACjBE,EAAM3sR,KAzEI,GA0EVR,IACAkI,EAAU+kR,IAEVE,EAAM3sR,KA9EC,GA+EP04B,IACAhxB,EAAU8kR,QA/BVG,EAAM3sR,KAhDI,GAiDVR,SANAmtR,EAAM3sR,KA5CC,GA6CP04B,IAwCJ,OADAi0P,EAAMjhN,UACCihN,GAGTE,YAAa,SAAqBnlR,EAASukR,EAAcC,EAAY7lM,EAAK8lM,EAAUC,GAClF,IAAIU,EAAc,EACdC,EAAc,EAEdp/D,EAAY1lM,KAAKW,IAAIsjQ,EAAaD,EAAcG,EAASD,GAc7D,GAbqB,IAAjBF,GAAmC,IAAbE,IACxBW,EAAchoR,KAAKkoR,aAAatlR,EAAS2+E,EAAKsnI,IAG5Cu+D,IAAexkR,EAAQhI,QAAU0sR,IAAW/lM,EAAI3mF,SAClDqtR,EAAcjoR,KAAKmoR,aAAavlR,EAAS2+E,EAAKsnI,EAAYm/D,IAI5DX,GAAYW,EAEZV,GAAUW,GADVb,GAAca,IAFdd,GAAgBa,IAKkB,GAAKV,EAASD,GAAa,EAC3D,MAAO,GAGT,GAAIF,IAAiBC,EAAY,CAE/B,IADA,IAAIgB,EAAUpB,GAAUG,EAAc,GAAI,GACnCE,EAAWC,GAChBc,EAAQ/4M,QAAQn0E,KAAKqmF,EAAI8lM,MAG3B,MAAO,CAACe,GACH,GAAIf,IAAaC,EACtB,MAAO,CAACN,GAAUG,EAAc,GAAIC,EAAaD,IASnD,IANA,IAAIl1M,EAAMjyE,KAAK4nR,kCAAkC5nR,KAAKknR,kBAAkBtkR,EAASukR,EAAcC,EAAY7lM,EAAK8lM,EAAUC,IAEtHnwQ,OAASvZ,EACTsxE,EAAU,GACVvlE,EAAQw9Q,EACRkB,EAAWhB,EACN3sR,EAAI,EAAGA,EAAIu3E,EAAIr3E,SAAUF,EAChC,OAAQu3E,EAAIv3E,IACV,KAnIS,EAoIHyc,IACF+3D,EAAQh0E,KAAKic,GACbA,OAASvZ,GAGX+L,IACA0+Q,IACA,MACF,KA3IU,EA4IHlxQ,IACHA,EAAS6vQ,GAAUr9Q,EAAO,GAAI,IAGhCwN,EAAOm4D,aACP3lE,IAEAwN,EAAOk4D,QAAQn0E,KAAKqmF,EAAI8mM,IACxBA,IACA,MACF,KArJO,EAsJAlxQ,IACHA,EAAS6vQ,GAAUr9Q,EAAO,GAAI,IAGhCwN,EAAOm4D,aACP3lE,IACA,MACF,KA5JU,EA6JHwN,IACHA,EAAS6vQ,GAAUr9Q,EAAO,GAAI,IAGhCwN,EAAOk4D,QAAQn0E,KAAKqmF,EAAI8mM,IACxBA,IAQN,OAHIlxQ,GACF+3D,EAAQh0E,KAAKic,GAER+3D,GAGTg5M,aAAc,SAAsBtlR,EAAS2+E,EAAK+mM,GAChD,IAAK,IAAI5tR,EAAI,EAAGA,EAAI4tR,IAAgB5tR,EAClC,IAAKsF,KAAKg9K,OAAOp6K,EAAQlI,GAAI6mF,EAAI7mF,IAC/B,OAAOA,EAIX,OAAO4tR,GAGTH,aAAc,SAAsBvlR,EAAS2+E,EAAK+mM,GAIhD,IAHA,IAAIC,EAAS3lR,EAAQhI,OACjB4tR,EAASjnM,EAAI3mF,OACbo5D,EAAQ,EACLA,EAAQs0N,GAAgBtoR,KAAKg9K,OAAOp6K,IAAU2lR,GAAShnM,IAAMinM,KAClEx0N,IAGF,OAAOA,GAGTy0N,iBAAkB,SAA0B7lR,EAASq3E,GACnD,OAAOj6E,KAAK+nR,YAAYnlR,EAAS,EAAGA,EAAQhI,OAAQq/E,EAAU,EAAGA,EAASr/E,SAG5EoiL,OAAQ,SAAgB93D,EAAcwjK,GACpC,OAAOxjK,IAAiBwjK,IAI5B,IAAIC,GAAc,IAAI1B,GAEf,SAASc,GAAYnlR,EAASukR,EAAcC,EAAY7lM,EAAK8lM,EAAUC,GAC5E,OAAOqB,GAAYZ,YAAYnlR,EAASukR,EAAcC,EAAY7lM,EAAK8lM,EAAUC,GA2B5E,SAASsB,GAAY15M,EAASvlE,EAAO0lE,EAASC,GAMnD,IALA,IAzBiBu5M,EAAQC,EAAMC,EAAQC,EAyBnC7xQ,EAAS6vQ,GAAUr9Q,EAAO0lE,EAASC,GAEnC25M,GAAW,EACXC,EAAkB,EAEbxuR,EAAI,EAAGA,EAAIw0E,EAAQt0E,OAAQF,IAAK,CACvC,IAAIkI,EAAUssE,EAAQx0E,GAGtB,GAFAkI,EAAQ+G,OAASu/Q,GAEbD,EAAJ,CAIA,IAAIE,GAtCWN,EAsCgB1xQ,EAAOxN,MAtCfm/Q,EAsCsB3xQ,EAAOxN,MAAQwN,EAAOk4D,QAAQz0E,OAtC9CmuR,EAsCsDnmR,EAAQ+G,MAtCtDq/Q,EAsC6DpmR,EAAQ+G,MAAQ/G,EAAQ0sE,WArCxHw5M,EAAOC,GAAUC,EAAOH,GAClB,EAGNC,IAASC,GAAUC,IAASH,EACvB,EAGLA,EAASE,EACPD,EAAOE,EACFF,EAAOC,EAGTC,EAAOD,EAGZC,EAAOF,EACFE,EAAOH,EAGTC,EAAOD,GAmBZ,GAAIM,GAAkB,EAAG,CAEvBj6M,EAAQ/3D,OAAOzc,EAAG,GAClBA,IAEAwuR,GAAmBtmR,EAAQ0sE,WAAa1sE,EAAQysE,QAAQz0E,OAExDuc,EAAOm4D,YAAc1sE,EAAQ0sE,WAAa65M,EAC1C,IAAIC,EAAcjyQ,EAAOk4D,QAAQz0E,OAASgI,EAAQysE,QAAQz0E,OAASuuR,EAEnE,GAAKhyQ,EAAOm4D,YAAe85M,EAEpB,CACL,IAAIC,EAAiBzmR,EAAQysE,QAE7B,GAAIl4D,EAAOxN,MAAQ/G,EAAQ+G,MAAO,CAChC,IAAIuoC,EAAU/6B,EAAOk4D,QAAQxvE,MAAM,EAAG+C,EAAQ+G,MAAQwN,EAAOxN,OAC7DjJ,MAAM5F,UAAUI,KAAK+I,MAAMiuC,EAASm3O,GACpCA,EAAiBn3O,EAGnB,GAAI/6B,EAAOxN,MAAQwN,EAAOk4D,QAAQz0E,OAASgI,EAAQ+G,MAAQ/G,EAAQ0sE,WAAY,CAC7E,IAAIxkC,EAAS3zB,EAAOk4D,QAAQxvE,MAAM+C,EAAQ+G,MAAQ/G,EAAQ0sE,WAAan4D,EAAOxN,OAC9EjJ,MAAM5F,UAAUI,KAAK+I,MAAMolR,EAAgBv+O,GAG7C3zB,EAAOk4D,QAAUg6M,EACbzmR,EAAQ+G,MAAQwN,EAAOxN,QACzBwN,EAAOxN,MAAQ/G,EAAQ+G,YAjBzBs/Q,GAAW,OAoBR,GAAI9xQ,EAAOxN,MAAQ/G,EAAQ+G,MAAO,CAEvCs/Q,GAAW,EAEX/5M,EAAQ/3D,OAAOzc,EAAG,EAAGyc,GACrBzc,IAEA,IAAImhC,EAAS1kB,EAAOm4D,WAAan4D,EAAOk4D,QAAQz0E,OAChDgI,EAAQ+G,OAASkyB,EACjBqtP,GAAmBrtP,IAIlBotP,GACH/5M,EAAQh0E,KAAKic,GAoCV,SAASmyQ,GAAoBhiQ,EAAOiiQ,GACzC,IAAIr6M,EAAU,GAcd,OA/CF,SAA8B5nD,EAAOiiQ,GAGnC,IAFA,IA9TezpR,EA8TXovE,EAAU,GAELx0E,EAAI,EAAGA,EAAI6uR,EAAc3uR,OAAQF,IAAK,CAC7C,IAAIm2E,EAAS04M,EAAc7uR,GAC3B,OAAQm2E,EAAOvzE,MACb,IAAK,SACHsrR,GAAY15M,EAAS2B,EAAOlnE,MAAOknE,EAAOxB,QAAQxvE,QAASgxE,EAAOvB,YAClE,MACF,IAAK,MACL,IAAK,SACL,IAAK,SACH,KAzUSxvE,EAyUI+wE,EAAOnzE,OAxUZoC,IAAM,EAyUZ,SAGF,IAAI6J,EAAQo9Q,GAASl2M,EAAOnzE,MAC5B,GAAIiM,EAAQ,EACV,SAGFi/Q,GAAY15M,EAASvlE,EAAO,CAACknE,EAAOE,UAA2B,WAAhBF,EAAOvzE,KAAoB,EAAI,GAC9E,MACF,QACEmC,QAAQ3C,MAAM,2BAA6BoU,KAAKE,UAAUy/D,KAKhE,OAAO3B,EAMPs6M,CAAqBliQ,EAAOiiQ,GAAepiR,SAAQ,SAAUgQ,GACjC,IAAtBA,EAAOm4D,YAA8C,IAA1Bn4D,EAAOk4D,QAAQz0E,OAQ9Cs0E,EAAUA,EAAQ/qE,OAAO4jR,GAAYzgQ,EAAOnQ,EAAOxN,MAAOwN,EAAOxN,MAAQwN,EAAOm4D,WAAYn4D,EAAOk4D,QAAS,EAAGl4D,EAAOk4D,QAAQz0E,SAPxHuc,EAAOk4D,QAAQ,KAAO/nD,EAAMnQ,EAAOxN,QACrCulE,EAAQh0E,KAAKic,MASZ+3D,EAYF,SAASu6M,GAAiB9kR,GAM/B,IALA,IAViBrH,EAAM+B,EAAQH,EAU3B6mG,EAAU,IAAIrlG,MAAMiE,EAAI+rE,MACxBn8D,EAAO5P,EAAI4P,OACX7Z,EAAI,EACJ8F,OAAO,GAEJA,EAAO+T,EAAKtR,UACbzC,EAAKg6D,MAITurC,EAAQrrG,IApBO4C,EAoBQ,QApBF+B,EAoBWsF,EApBHzF,EAoBQsB,EAAK5B,MAnBrC,CACLtB,KAAMA,EACN+B,OAAQA,EACRH,IAAKA,EACL6xE,cAea24M,IACbhvR,IAGF,OAAOqrG,EAGF,IAAI4jL,GAAoChD,IAAwB9jJ,CAAMz8D,EAAU,WACrF,SAASujN,EAAyBrhJ,EAAWnvD,GAG3Cn5E,KAAKsoI,UAAYA,EACjBtoI,KAAKkkR,QAAS,EACdlkR,KAAKupR,cAAgB,KACrBvpR,KAAK4pR,cAAgB,KACrB5pR,KAAKm5E,WAAaA,EAClBn5E,KAAK6pR,mBAAqB1wM,aAAsBzsC,KAAOysC,aAAsBspJ,IAAM,OAAS,SA6F9F,OA1FAknD,EAAyB7uR,UAAUia,UAAY,SAAmB5B,EAAS8xQ,GACzEjlR,KAAKglR,cAAc7xQ,EAAS8xQ,IAG9B0E,EAAyB7uR,UAAUga,YAAc,SAAqB3B,EAAS8xQ,GAC7EjlR,KAAK2lR,iBAAiBxyQ,EAAS8xQ,IAGjC0E,EAAyB7uR,UAAUgvR,gBAAkB,SAAyBC,GAC5E,GAAK/pR,KAAK0mR,kBAAqB1mR,KAAKgqR,eAApC,CAIA,GAA0B,WAAtBD,EAAazsR,KAAmB,CAClC,IAAIqM,EAAQogR,EAAapgR,MACrBymE,EAAc25M,EAAa1qR,OAAOzE,OAClC+O,EAAQymE,EACVzmE,EAAQymE,EAAc25M,EAAaz6M,WAC1B3lE,EAAQ,IACjBA,EAAQymE,EAAc25M,EAAa16M,QAAQz0E,OAAS+O,EAAQogR,EAAaz6M,YAEvE3lE,EAAQ,IACVA,EAAQ,GAEVogR,EAAapgR,MAAQA,EAGI,OAAvB3J,KAAKupR,cACPvpR,KAAKupR,cAAgB,CAACQ,GAEtB/pR,KAAKupR,cAAcruR,KAAK6uR,GAGrB/pR,KAAKkkR,SACRlkR,KAAKkkR,QAAS,EACdlkR,KAAKsoI,UAAUkB,eAAexpI,SAIlC2pR,EAAyB7uR,UAAUmvR,mBAAqB,YAClDjqR,KAAKupR,eAAiBvpR,KAAKupR,cAAc3uR,QAAUoF,KAAK4pR,gBAC1D5pR,KAAKhF,QAIT2uR,EAAyB7uR,UAAU0T,MAAQ,SAAeo7Q,GACxD5pR,KAAK4pR,cAAgBA,EAEjB5pR,KAAK0mR,mBAAqB1mR,KAAKkkR,SACjClkR,KAAKkkR,QAAS,EACdlkR,KAAKsoI,UAAUkB,eAAexpI,QAIlC2pR,EAAyB7uR,UAAUovR,kBAAoB,WACrD,OAAOlqR,KAAKgqR,iBAAmBhqR,KAAKgqR,eAAiB,IAAIG,GAAyBnqR,KAAKm5E,cAGzFwwM,EAAyB7uR,UAAUE,KAAO,WACxC,IAAIuuR,EAAgBvpR,KAAKupR,cACrBK,EAAgB5pR,KAAK4pR,cACrBj5M,OAAU,EAEd3wE,KAAKkkR,QAAS,EACdlkR,KAAKupR,cAAgB,GACrBvpR,KAAK4pR,cAAgB,KAEjB5pR,KAAK0mR,mBAGH/1M,EAFAi5M,EACE5pR,KAAKm5E,sBAAsBzsC,KAAO1sC,KAAKm5E,sBAAsBspJ,IACrDgnD,GAAiBG,GAEjB7B,GAAY/nR,KAAKm5E,WAAY,EAAGn5E,KAAKm5E,WAAWv+E,OAAQgvR,EAAe,EAAGA,EAAchvR,QAGhGoF,KAAKm5E,sBAAsBzsC,KAAO1sC,KAAKm5E,sBAAsBspJ,IACrD8mD,EAEAD,GAAoBtpR,KAAKm5E,WAAYowM,GAInDvpR,KAAKgmR,gBAAgBr1M,IAGnB3wE,KAAKgqR,gBACPhqR,KAAKgqR,eAAehvR,KAAKgF,KAAKm5E,WAAWn5E,KAAK6pR,sBAI3CF,EAtG8E,KAuG/EvjN,EAEG+jN,GAAoCxD,IAAwB5jJ,CAAMd,EAAU,WACrF,SAASkoJ,EAAyBhxM,GAGhCn5E,KAAKm5E,WAAaA,EAClBn5E,KAAK6pR,mBAAqB1wM,aAAsBzsC,KAAOysC,aAAsBspJ,IAAM,OAAS,SAC5FziO,KAAKklH,aAAe/rC,EAAWn5E,KAAK6pR,oBAyBtC,OAtBAM,EAAyBrvR,UAAU+rR,SAAW,WAC5C,OAAO7mR,KAAKm5E,WAAWn5E,KAAK6pR,qBAG9BM,EAAyBrvR,UAAUgsR,SAAW,SAAkB/3N,GAC9D/uD,KAAKm5E,WAAWn5E,KAAK6pR,oBAAsB96N,GAG7Co7N,EAAyBrvR,UAAUia,UAAY,SAAmB5B,EAAS8xQ,GACzEjlR,KAAKglR,cAAc7xQ,EAAS8xQ,IAG9BkF,EAAyBrvR,UAAUga,YAAc,SAAqB3B,EAAS8xQ,GAC7EjlR,KAAK2lR,iBAAiBxyQ,EAAS8xQ,IAGjCkF,EAAyBrvR,UAAUE,KAAO,SAAc+zD,GACtD,IAAIgiB,EAAW/wE,KAAKklH,aACpBllH,KAAKgmR,gBAAgBj3N,EAAUgiB,GAC/B/wE,KAAKklH,aAAen2D,GAGfo7N,EA/B8E,KAgC/EloJ,EAEJmoJ,GAAa1pR,MAAM5F,UACnB65D,GAAMy1N,GAAWz1N,IACjBz5D,GAAOkvR,GAAWlvR,KAClB0rE,GAAUwjN,GAAWxjN,QACrBvrE,GAAQ+uR,GAAW/uR,MACnBoW,GAAO24Q,GAAW34Q,KAClB0F,GAASizQ,GAAWjzQ,OACpBrT,GAAUsmR,GAAWtmR,QAuGzB,SAASumR,GAAkB/hJ,EAAWhhH,GACpC,OAAOgjQ,GAAoBC,IAAIjiJ,EAAWhhH,GAtGxC8iQ,GAAWI,eACb,YAAqB,qBAAqBtmQ,KAAK,0OAE/CgoB,QAAQ5tC,eAAe8rR,GAAY,iBAAkB,CAAExrR,MAAO,IAC9DwrR,GAAWz1N,IAAM,WACf,IAAI81N,EAAWzqR,KAAKpF,OAAS,EACzB8vR,EAAmB/1N,GAAI1wD,MAAMjE,KAAM8B,WASvC,OARI2oR,QAAwC7sR,IAA5BoC,KAAK2qR,oBACnB3qR,KAAK2qR,mBAAmBb,gBAAgB,CACtCxsR,KAAM,SACN+B,OAAQW,KACRtC,KAAMsC,KAAKpF,OACXm2E,SAAU25M,IAGPA,GAGTN,GAAWlvR,KAAO,WAChB,IAAIwvR,EAAmBxvR,GAAK+I,MAAMjE,KAAM8B,WAUxC,YATgClE,IAA5BoC,KAAK2qR,oBACP3qR,KAAK2qR,mBAAmBb,gBAAgB,CACtCxsR,KAAM,SACN+B,OAAQW,KACR2J,MAAO3J,KAAKpF,OAASkH,UAAUlH,OAC/By0E,QAAS,GACTC,WAAYxtE,UAAUlH,SAGnB8vR,GAGTN,GAAWxjN,QAAU,WACnB,IAAIgkN,OAAW,OACiBhtR,IAA5BoC,KAAK2qR,qBACP3qR,KAAK2qR,mBAAmBV,qBACxBW,EAAW5qR,KAAKH,SAElB,IAAI6qR,EAAmB9jN,GAAQ3iE,MAAMjE,KAAM8B,WAI3C,YAHgClE,IAA5BoC,KAAK2qR,oBACP3qR,KAAK2qR,mBAAmBn8Q,MAAMo8Q,GAEzBF,GAGTN,GAAW/uR,MAAQ,WACjB,IAAIovR,EAAWzqR,KAAKpF,OAAS,EACzB8vR,EAAmBrvR,GAAM4I,MAAMjE,KAAM8B,WASzC,OARI2oR,QAAwC7sR,IAA5BoC,KAAK2qR,oBACnB3qR,KAAK2qR,mBAAmBb,gBAAgB,CACtCxsR,KAAM,SACN+B,OAAQW,KACRtC,KAAM,EACNqzE,SAAU25M,IAGPA,GAGTN,GAAW34Q,KAAO,WAChB,IAAIm5Q,OAAW,OACiBhtR,IAA5BoC,KAAK2qR,qBACP3qR,KAAK2qR,mBAAmBV,qBACxBW,EAAW5qR,KAAKH,SAElB,IAAI6qR,EAAmBj5Q,GAAKxN,MAAMjE,KAAM8B,WAIxC,YAHgClE,IAA5BoC,KAAK2qR,oBACP3qR,KAAK2qR,mBAAmBn8Q,MAAMo8Q,GAEzBF,GAGTN,GAAWjzQ,OAAS,WAClB,IAAIuzQ,EAAmBvzQ,GAAOlT,MAAMjE,KAAM8B,WAU1C,YATgClE,IAA5BoC,KAAK2qR,oBACP3qR,KAAK2qR,mBAAmBb,gBAAgB,CACtCxsR,KAAM,SACN+B,OAAQW,KACR2J,OAAQ7H,UAAU,GAClButE,QAASq7M,EACTp7M,WAAYxtE,UAAUlH,OAAS,EAAIkH,UAAUlH,OAAS,EAAI,IAGvD8vR,GAGTN,GAAWtmR,QAAU,WACnB,IAAI4mR,EAAmB5mR,GAAQG,MAAMjE,KAAM8B,WAU3C,YATgClE,IAA5BoC,KAAK2qR,oBACP3qR,KAAK2qR,mBAAmBb,gBAAgB,CACtCxsR,KAAM,SACN+B,OAAQW,KACR2J,MAAO,EACP0lE,QAAS,GACTC,WAAYxtE,UAAUlH,SAGnB8vR,IAQX,IAAIJ,GAAsB,SAAUO,GAGlC,SAASP,EAAoBhiJ,EAAWhhH,GAGtC,OAAO3P,EAA2B3X,KAAM6qR,EAAsB7vR,KAAKgF,KAAMsoI,EAAWhhH,IAiBtF,OAtBArP,EAAUqyQ,EAAqBO,GAQ/BP,EAAoBC,IAAM,SAAcjiJ,EAAWhhH,GAOjD,MANM,uBAAwBA,GAC5B4kB,QAAQ5tC,eAAegpB,EAAO,qBAAsB,CAClD1oB,MAAO0rR,EAAoBrrR,OAAOqpI,EAAWhhH,GAC7C/oB,YAAY,EAAO8C,cAAc,IAG9BimB,EAAMqjQ,oBAGfL,EAAoBrrR,OAAS,SAAgBqpI,EAAWhhH,GACtD,OAAO,IAAIgjQ,EAAoBhiJ,EAAWhhH,IAGrCgjQ,EAvBiB,CAwBxBX,IAESmB,GAAa,WACtB,SAASA,IAGP9qR,KAAK+qR,cAAe,EAetB,OAZAD,EAAWhwR,UAAUktP,SAAW,SAAkB58K,EAAO86K,EAAiBzhO,GACxE,MAAM,IAAI1nB,MAAM,uBAAyBiD,KAAO,2BAGlD8qR,EAAWhwR,UAAU+H,OAAS,SAAgBuoE,EAAOxsE,EAAOsnP,GAC1D,MAAM,IAAInpP,MAAM,uBAAyBiD,KAAO,6BAGlD8qR,EAAWhwR,UAAUkkB,SAAW,WAC9B,MAAsC,oBAAxBgsQ,oBAAsCC,GAAUC,QAAQlrR,MAAQ8kB,SAAShqB,UAAUkkB,SAAShkB,KAAKgF,OAG1G8qR,EAnBe,GAsBb1kC,GAAkB,SAAU+kC,GAGrC,SAAS/kC,EAAgBn1F,EAAYvzJ,EAAM+mB,GAGzC,IAAInW,EAASqJ,EAA2B3X,KAAMmrR,EAAYnwR,KAAKgF,OAK/D,OAHAsO,EAAO2iJ,WAAaA,EACpB3iJ,EAAO5Q,KAAOA,EACd4Q,EAAOmW,KAAOA,EACPnW,EA4CT,OAtDA2J,EAAUmuO,EAAiB+kC,GAa3B/kC,EAAgBtrP,UAAUktP,SAAW,SAAkB58K,EAAO86K,GAC5D,OAAOlmP,KAAKixJ,WAAW+2F,SAAS58K,EAAO86K,IAGzCE,EAAgBtrP,UAAU+H,OAAS,SAAgBuoE,EAAOxsE,EAAOsnP,GAC/D,OAAOlmP,KAAKixJ,WAAWpuJ,OAAOuoE,EAAOxsE,EAAOsnP,IAG9CE,EAAgBtrP,UAAUs7J,OAAS,SAAgBg1H,GACjD,OAAOA,EAAQC,qBAAqBrrR,OAGtComP,EAAgBtrP,UAAU0pR,QAAU,SAAiBrtO,EAASi0B,GAC5DprE,KAAKixJ,WAAWuzH,QAAQrtO,EAASi0B,IAGnCg7K,EAAgBtrP,UAAUqE,KAAO,SAAcg4C,EAASi0B,EAAO86K,GACzDlmP,KAAKixJ,WAAWA,YAAcjxJ,KAAKixJ,WAAW9xJ,MAChDa,KAAKixJ,WAAW9xJ,KAAKg4C,EAASi0B,EAAO86K,GAEvC,IAAIp4M,EAAWo4M,EAAgBolC,iBAAiBtrR,KAAKtC,MACrD,IAAKowC,EACH,MAAM,IAAI/wC,MAAM,6BAA+BiD,KAAKtC,KAAO,gBAE7D,IAAI6tR,EAAc,YAAcvrR,KAAKtC,KACrC,GAAIy5C,EAAQo0O,GACV,MAAM,IAAIxuR,MAAM,6BAA+BiD,KAAKtC,KAAO,kCAAoCsC,KAAKixJ,WAAa,KAEnH95G,EAAQo0O,GAAez9O,EACvBA,EAAS3uC,KAAK8E,MAAM6pC,EAAU,CAACqJ,EAASi0B,GAAOjnE,OAAOqnR,GAASpgN,EAAOprE,KAAKykB,KAAM0yB,EAAQ+uM,oBAG3FE,EAAgBtrP,UAAU4qE,OAAS,SAAgBvuB,EAASi0B,GAC1D,IAAImgN,EAAc,YAAcvrR,KAAKtC,KACrCy5C,EAAQo0O,GAAa7lN,OAAOvuB,EAASi0B,GACrCj0B,EAAQo0O,GAAe,KACnBvrR,KAAKixJ,WAAWA,YAAcjxJ,KAAKixJ,WAAWvrF,QAChD1lE,KAAKixJ,WAAWvrF,OAAOvuB,EAASi0B,IAI7Bg7K,EAvDoB,CAwD3B0kC,IAESzkC,GAAiB,SAAUolC,GAGpC,SAASplC,EAAep1F,EAAYvzJ,EAAM+mB,GAGxC,IAAIhW,EAASkJ,EAA2B3X,KAAMyrR,EAAazwR,KAAKgF,OAMhE,OAJAyO,EAAOwiJ,WAAaA,EACpBxiJ,EAAO/Q,KAAOA,EACd+Q,EAAOgW,KAAOA,EACdhW,EAAOi9Q,QAAU,CAACz6H,GAAY9sJ,OAAOsgB,GAC9BhW,EAqDT,OAhEAwJ,EAAUouO,EAAgBolC,GAc1BplC,EAAevrP,UAAUktP,SAAW,SAAkB58K,EAAO86K,GAC3D,IAAIylC,EAAYzlC,EAAgB0lC,gBAAgB5rR,KAAKtC,MACrD,IAAKiuR,EACH,MAAM,IAAI5uR,MAAM,4BAA8BiD,KAAKtC,KAAO,gBAG5D,MAAI,WAAYiuR,EACPA,EAAUE,OAAO5nR,MAAM0nR,EAAWH,GAASpgN,EAAOprE,KAAK0rR,QAASxlC,IAGlElmP,KAAK0rR,QAAQ,GAAG1jC,SAAS58K,EAAO86K,IAGzCG,EAAevrP,UAAU+H,OAAS,SAAgBuoE,EAAOxsE,EAAOsnP,GAC9D,IAAIylC,EAAYzlC,EAAgB0lC,gBAAgB5rR,KAAKtC,MACrD,IAAKiuR,EACH,MAAM,IAAI5uR,MAAM,4BAA8BiD,KAAKtC,KAAO,gBAO5D,MAJI,aAAciuR,IAChB/sR,EAAQ+sR,EAAUG,SAAS7nR,MAAM0nR,EAAW,CAAC/sR,GAAOuF,OAAOqnR,GAASpgN,EAAOprE,KAAKykB,KAAMyhO,MAGjFlmP,KAAK0rR,QAAQ,GAAG7oR,OAAOuoE,EAAOxsE,EAAOsnP,IAG9CG,EAAevrP,UAAUs7J,OAAS,SAAgBg1H,GAChD,OAAOA,EAAQW,oBAAoB/rR,OAGrCqmP,EAAevrP,UAAU0pR,QAAU,SAAiBrtO,EAASi0B,GAG3D,IAFA,IAAI08K,EAAc9nP,KAAK0rR,QACnBhxR,EAAIotP,EAAYltP,OACbF,KACLotP,EAAYptP,GAAG8pR,QAAQrtO,EAASi0B,GAElC,IAAIugN,EAAYx0O,EAAQ+uM,gBAAgB0lC,gBAAgB5rR,KAAKtC,MAC7D,IAAKiuR,EACH,MAAM,IAAI5uR,MAAM,4BAA8BiD,KAAKtC,KAAO,gBAE5D,IAAIsuR,EAAUL,EAAUK,QACxB,QAAgBpuR,IAAZouR,EAIJ,IADAtxR,EAAIsxR,EAAQpxR,OACLF,KACLuxR,GAAuB90O,EAAS60O,EAAQtxR,KAIrC2rP,EAjEmB,CAkE1BykC,IAESoB,GAAS,SAAUC,GAG5B,SAASD,EAAO1uR,EAAQoB,GAGtB,IAAIkR,EAAS6H,EAA2B3X,KAAMmsR,EAAanxR,KAAKgF,OAKhE,OAHA8P,EAAOtS,OAASA,EAChBsS,EAAOlR,MAAQA,EACfkR,EAAOi7Q,cAAe,EACfj7Q,EAkBT,OA5BAmI,EAAUi0Q,EAAQC,GAalBD,EAAOpxR,UAAUktP,SAAW,SAAkB58K,EAAO86K,GACnD,OAAOlmP,KAAKxC,OAAOqF,OAAOuoE,EAAOprE,KAAKpB,MAAMopP,SAAS58K,EAAO86K,KAG9DgmC,EAAOpxR,UAAUs7J,OAAS,SAAgBg2H,GACxCA,EAAOC,YAAYrsR,OAGrBksR,EAAOpxR,UAAU0pR,QAAU,SAAiBrtO,EAASi0B,KAErD8gN,EAAOpxR,UAAU+H,OAAS,SAAgBuoE,EAAOxsE,GAC/CoB,KAAKpB,MAAMiE,OAAOuoE,EAAOxsE,GACzBoB,KAAKxC,OAAOqF,OAAOuoE,EAAOxsE,IAGrBstR,EA7BW,CA8BlBpB,IAESwB,GAAc,SAAUC,GAGjC,SAASD,EAAYziJ,EAAW2iJ,EAAKj3M,GAGnC,IAAI1jE,EAAS8F,EAA2B3X,KAAMusR,EAAavxR,KAAKgF,OAKhE,OAHA6R,EAAOg4H,UAAYA,EACnBh4H,EAAO26Q,IAAMA,EACb36Q,EAAO0jE,GAAKA,EACL1jE,EAoBT,OA9BAoG,EAAUq0Q,EAAaC,GAavBD,EAAYxxR,UAAUktP,SAAW,SAAkB58K,EAAO86K,GACxD,OAASlmP,KAAK6pI,UAAUm+G,SAAS58K,EAAO86K,GAAmBlmP,KAAKwsR,IAAIxkC,SAAS58K,EAAO86K,GAAmBlmP,KAAKu1E,GAAGyyK,SAAS58K,EAAO86K,IAGjIomC,EAAYxxR,UAAUs7J,OAAS,SAAgBg1H,GAC7C,OAAOA,EAAQqB,iBAAiBzsR,OAGlCssR,EAAYxxR,UAAU0pR,QAAU,SAAiBrtO,EAASi0B,GACxDprE,KAAK6pI,UAAU26I,QAAQrtO,EAASi0B,GAC5BprE,KAAK6pI,UAAUm+G,SAAS58K,GAC1BprE,KAAKwsR,IAAIhI,QAAQrtO,EAASi0B,GAE1BprE,KAAKu1E,GAAGivM,QAAQrtO,EAASi0B,IAItBkhN,EA/BgB,CAgCvBxB,IAES4B,GAAa,SAAUC,GAGhC,SAASD,EAAW1J,GAGlB,IAAIhwQ,EAAS2E,EAA2B3X,KAAM2sR,EAAa3xR,KAAKgF,OAGhE,OADAgT,EAAOgwQ,SAAWA,EACXhwQ,EAkBT,OA1BAiF,EAAUy0Q,EAAYC,GAWtBD,EAAW5xR,UAAUktP,SAAW,SAAkB58K,EAAO86K,GAGvD,IAFA,IAAI+8B,EAAK73M,EAAMxD,gBACXltE,EAAIsF,KAAKgjR,SACNtoR,KAAOuoR,GACZA,EAAKA,EAAGH,sBAEV,OAAOpoR,EAAI,GAAKuoR,EAAKA,EAAGt7M,oBAAiB/pE,GAG3C8uR,EAAW5xR,UAAUs7J,OAAS,SAAgBg1H,GAC5C,OAAOA,EAAQwB,gBAAgB5sR,OAGjC0sR,EAAW5xR,UAAU0pR,QAAU,SAAiBrtO,EAASi0B,KAElDshN,EA3Be,CA4BtB5B,IAES+B,GAAc,SAAUC,GAGjC,SAASD,EAAYnvR,EAAMslR,GAGzB,IAAIzsQ,EAASoB,EAA2B3X,KAAM8sR,EAAa9xR,KAAKgF,OAKhE,OAHAuW,EAAO7Y,KAAOA,EACd6Y,EAAOysQ,SAAWA,EAClBzsQ,EAAOw0Q,cAAe,EACfx0Q,EAsBT,OAhCA0B,EAAU40Q,EAAaC,GAavBD,EAAY/xR,UAAUktP,SAAW,SAAkB58K,EAAO86K,GAExD,OADc68B,EAAc/iR,KAAKtC,KAAM0tE,EAAOprE,KAAKgjR,UACpChjR,KAAKtC,OAGtBmvR,EAAY/xR,UAAU+H,OAAS,SAAgBuoE,EAAOxsE,GACpD,IAAIuU,EAAU4vQ,EAAc/iR,KAAKtC,KAAM0tE,EAAOprE,KAAKgjR,UACnD,OAAO7vQ,EAAUA,EAAQnT,KAAKtC,MAAQkB,OAAQhB,GAGhDivR,EAAY/xR,UAAUs7J,OAAS,SAAgBg1H,GAC7C,OAAOA,EAAQ2B,iBAAiB/sR,OAGlC6sR,EAAY/xR,UAAU0pR,QAAU,SAAiBrtO,EAASi0B,GACxD,IAAIj4D,EAAU4vQ,EAAc/iR,KAAKtC,KAAM0tE,EAAOprE,KAAKgjR,UACnD7rO,EAAQ0sO,gBAAgB1wQ,EAASnT,KAAKtC,OAGjCmvR,EAjCgB,CAkCvB/B,IAESkC,GAAe,SAAUC,GAGlC,SAASD,EAAa3tR,EAAQ3B,GAG5B,IAAIiZ,EAASgB,EAA2B3X,KAAMitR,EAAajyR,KAAKgF,OAKhE,OAHA2W,EAAOtX,OAASA,EAChBsX,EAAOjZ,KAAOA,EACdiZ,EAAOo0Q,cAAe,EACfp0Q,EAgCT,OA1CAsB,EAAU+0Q,EAAcC,GAaxBD,EAAalyR,UAAUktP,SAAW,SAAkB58K,EAAO86K,GACzD,IAAIr+L,EAAW7nD,KAAKX,OAAO2oP,SAAS58K,EAAO86K,GAC3C,OAAOr+L,QAA8CA,EAAWA,EAAS7nD,KAAKtC,OAGhFsvR,EAAalyR,UAAU+H,OAAS,SAAgBuoE,EAAOxsE,GACrD,IAAIipD,EAAW7nD,KAAKX,OAAO2oP,SAAS58K,GAQpC,OANIvjB,UACFA,EAAW,GACX7nD,KAAKX,OAAOwD,OAAOuoE,EAAOvjB,IAG5BA,EAAS7nD,KAAKtC,MAAQkB,EACfA,GAGTouR,EAAalyR,UAAUs7J,OAAS,SAAgBg1H,GAC9C,OAAOA,EAAQ8B,kBAAkBltR,OAGnCgtR,EAAalyR,UAAU0pR,QAAU,SAAiBrtO,EAASi0B,GACzDprE,KAAKX,OAAOmlR,QAAQrtO,EAASi0B,GAC7B,IAAIrqE,EAAMf,KAAKX,OAAO2oP,SAAS58K,GAC3BrqE,GACFo2C,EAAQ0sO,gBAAgB9iR,EAAKf,KAAKtC,OAI/BsvR,EA3CiB,CA4CxBlC,IAESqC,GAAc,SAAUC,GAGjC,SAASD,EAAY9tR,EAAQH,GAG3B,IAAIsY,EAAUG,EAA2B3X,KAAMotR,EAAapyR,KAAKgF,OAKjE,OAHAwX,EAAQnY,OAASA,EACjBmY,EAAQtY,IAAMA,EACdsY,EAAQuzQ,cAAe,EAChBvzQ,EAgCT,OA1CAS,EAAUk1Q,EAAaC,GAavBD,EAAYryR,UAAUktP,SAAW,SAAkB58K,EAAO86K,GAGxD,OAohBJ,SAAkBnlP,EAAK7B,GACrB,GAAIwB,MAAMC,QAAQI,GAChB,OAAOA,EAAIupB,SAASprB,EAAK,KACpB,GAAI6B,EACT,OAAOA,EAAI7B,GACN,GAAI6B,QACT,OAGF,OAAOA,EAAI7B,GA7hBFmuR,CAFQrtR,KAAKX,OAAO2oP,SAAS58K,EAAO86K,GAC9BlmP,KAAKd,IAAI8oP,SAAS58K,EAAO86K,KAIxCinC,EAAYryR,UAAU+H,OAAS,SAAgBuoE,EAAOxsE,GAGpD,OA0hBJ,SAAkBmC,EAAK7B,EAAKN,GAC1B,GAAI8B,MAAMC,QAAQI,GAAM,CACtB,IAAI4I,EAAQ2gB,SAASprB,EAAK,IAEtB6B,EAAInG,QAAU+O,IAChB5I,EAAInG,OAAS+O,EAAQ,GAGvB5I,EAAI4I,GAAS/K,OAEbmC,EAAI7B,GAAON,EAGb,OAAOA,EAviBE0uR,CAFQttR,KAAKX,OAAO2oP,SAAS58K,GACvBprE,KAAKd,IAAI8oP,SAAS58K,GACGxsE,IAGpCuuR,EAAYryR,UAAUs7J,OAAS,SAAgBg1H,GAC7C,OAAOA,EAAQmC,iBAAiBvtR,OAGlCmtR,EAAYryR,UAAU0pR,QAAU,SAAiBrtO,EAASi0B,GACxDprE,KAAKX,OAAOmlR,QAAQrtO,EAASi0B,GAC7B,IAAIrqE,EAAMf,KAAKX,OAAO2oP,SAAS58K,GAC/B,GAAIrqE,aAAelG,OAAQ,CACzBmF,KAAKd,IAAIslR,QAAQrtO,EAASi0B,GAC1B,IAAIlsE,EAAMc,KAAKd,IAAI8oP,SAAS58K,GAExBlsE,SAAuCwB,MAAMC,QAAQI,IAAuB,iBAAR7B,GACtEi4C,EAAQ0sO,gBAAgB9iR,EAAK7B,KAK5BiuR,EA3CgB,CA4CvBrC,IAES0C,GAAY,SAAUC,GAG/B,SAASD,EAAU9vR,EAAM+mB,EAAMu+P,GAG7B,IAAI3qQ,EAAUV,EAA2B3X,KAAMytR,EAAazyR,KAAKgF,OAKjE,OAHAqY,EAAQ3a,KAAOA,EACf2a,EAAQoM,KAAOA,EACfpM,EAAQ2qQ,SAAWA,EACZ3qQ,EAyBT,OAnCAJ,EAAUu1Q,EAAWC,GAarBD,EAAU1yR,UAAUktP,SAAW,SAAkB58K,EAAO86K,EAAiBwnC,GACvE,IAAIjpQ,EAAO+mQ,GAASpgN,EAAOprE,KAAKykB,KAAMyhO,GAClC/yO,EAAU4vQ,EAAc/iR,KAAKtC,KAAM0tE,EAAOprE,KAAKgjR,UAC/C97P,EAAOymQ,GAAYx6Q,EAASnT,KAAKtC,KAAMgwR,GAC3C,GAAIxmQ,EACF,OAAOA,EAAKjjB,MAAMkP,EAASsR,IAK/B+oQ,EAAU1yR,UAAUs7J,OAAS,SAAgBg1H,GAC3C,OAAOA,EAAQwC,eAAe5tR,OAGhCwtR,EAAU1yR,UAAU0pR,QAAU,SAAiBrtO,EAASi0B,GAGtD,IAFA,IAAI3mD,EAAOzkB,KAAKykB,KACZ/pB,EAAI+pB,EAAK7pB,OACNF,KACL+pB,EAAK/pB,GAAG8pR,QAAQrtO,EAASi0B,IAItBoiN,EApCc,CAqCrB1C,IAES+C,GAAa,SAAUC,GAGhC,SAASD,EAAWxuR,EAAQ3B,EAAM+mB,GAGhC,IAAIjM,EAAUb,EAA2B3X,KAAM8tR,EAAc9yR,KAAKgF,OAKlE,OAHAwY,EAAQnZ,OAASA,EACjBmZ,EAAQ9a,KAAOA,EACf8a,EAAQiM,KAAOA,EACRjM,EA6BT,OAvCAP,EAAU41Q,EAAYC,GAatBD,EAAW/yR,UAAUktP,SAAW,SAAkB58K,EAAO86K,EAAiBwnC,GACxE,IAAI7lO,EAAW7nD,KAAKX,OAAO2oP,SAAS58K,EAAO86K,GACvCzhO,EAAO+mQ,GAASpgN,EAAOprE,KAAKykB,KAAMyhO,GAClCh/N,EAAOymQ,GAAY9lO,EAAU7nD,KAAKtC,KAAMgwR,GAC5C,GAAIxmQ,EACF,OAAOA,EAAKjjB,MAAM4jD,EAAUpjC,IAKhCopQ,EAAW/yR,UAAUs7J,OAAS,SAAgBg1H,GAC5C,OAAOA,EAAQ2C,gBAAgB/tR,OAGjC6tR,EAAW/yR,UAAU0pR,QAAU,SAAiBrtO,EAASi0B,GAGvD,GAFAprE,KAAKX,OAAOmlR,QAAQrtO,EAASi0B,GAEzBuiN,GADM3tR,KAAKX,OAAO2oP,SAAS58K,GACVprE,KAAKtC,MAAM,GAG9B,IAFA,IAAI+mB,EAAOzkB,KAAKykB,KACZ/pB,EAAI+pB,EAAK7pB,OACNF,KACL+pB,EAAK/pB,GAAG8pR,QAAQrtO,EAASi0B,IAKxByiN,EAxCe,CAyCtB/C,IAESkD,GAAe,SAAUC,GAGlC,SAASD,EAAa9mQ,EAAMzC,GAG1B,IAAI1L,EAAUpB,EAA2B3X,KAAMiuR,EAAcjzR,KAAKgF,OAIlE,OAFA+Y,EAAQmO,KAAOA,EACfnO,EAAQ0L,KAAOA,EACR1L,EA8BT,OAvCAd,EAAU+1Q,EAAcC,GAYxBD,EAAalzR,UAAUktP,SAAW,SAAkB58K,EAAO86K,EAAiBwnC,GAC1E,IAAIxmQ,EAAOlnB,KAAKknB,KAAK8gO,SAAS58K,EAAO86K,GACrC,GAAoB,mBAATh/N,EACT,OAAOA,EAAKjjB,MAAM,KAAMunR,GAASpgN,EAAOprE,KAAKykB,KAAMyhO,IAErD,GAAKwnC,GAAgB,MAACxmQ,EAGtB,MAAM,IAAInqB,MAAMiD,KAAKknB,KAAO,uBAG9B8mQ,EAAalzR,UAAUs7J,OAAS,SAAgBg1H,GAC9C,OAAOA,EAAQ8C,kBAAkBluR,OAGnCguR,EAAalzR,UAAU0pR,QAAU,SAAiBrtO,EAASi0B,GAGzD,GAFAprE,KAAKknB,KAAKs9P,QAAQrtO,EAASi0B,GAEP,mBADTprE,KAAKknB,KAAK8gO,SAAS58K,GAI5B,IAFA,IAAI3mD,EAAOzkB,KAAKykB,KACZ/pB,EAAI+pB,EAAK7pB,OACNF,KACL+pB,EAAK/pB,GAAG8pR,QAAQrtO,EAASi0B,IAKxB4iN,EAxCiB,CAyCxBlD,IAESqD,GAAS,SAAUC,GAG5B,SAASD,EAAOE,EAAWt8J,EAAMvC,GAG/B,IAAIx2G,EAAUrB,EAA2B3X,KAAMouR,EAAcpzR,KAAKgF,OAKlE,OAHAgZ,EAAQq1Q,UAAYA,EACpBr1Q,EAAQ+4G,KAAOA,EACf/4G,EAAQw2G,MAAQA,EACTx2G,EAoFT,OA9FAf,EAAUk2Q,EAAQC,GAalBD,EAAOrzR,UAAUktP,SAAW,SAAkB58K,EAAO86K,GACnD,IAAIn0H,EAAO/xH,KAAK+xH,KAAKi2H,SAAS58K,EAAO86K,GAErC,OAAQlmP,KAAKquR,WACX,IAAK,KACH,OAAOt8J,GAAQ/xH,KAAKwvH,MAAMw4H,SAAS58K,EAAO86K,GAC5C,IAAK,KACH,OAAOn0H,GAAQ/xH,KAAKwvH,MAAMw4H,SAAS58K,EAAO86K,GAG9C,IAAI12H,EAAQxvH,KAAKwvH,MAAMw4H,SAAS58K,EAAO86K,GAEvC,OAAQlmP,KAAKquR,WACX,IAAK,KACH,OAAOt8J,GAAQvC,EACjB,IAAK,MACH,OAAOuC,IAASvC,EAClB,IAAK,KACH,OAAOuC,GAAQvC,EACjB,IAAK,MACH,OAAOuC,IAASvC,EAClB,IAAK,aACH,MAAwB,mBAAVA,GAAwBuC,aAAgBvC,EACxD,IAAK,KACH,MAAyE,iBAAhD,IAAVA,EAAwB,YAAc3uH,EAAQ2uH,KAAkC,OAAVA,GAAkBuC,KAAQvC,EAGnH,GAAa,OAATuC,GAA2B,OAAVvC,QAA2B5xH,IAATm0H,QAAgCn0H,IAAV4xH,EAAqB,CAChF,OAAQxvH,KAAKquR,WACX,IAAK,IACH,OAAIt8J,QAA4CA,EAC5CvC,QAA8CA,EAC3C,EACT,IAAK,IACH,OAAIuC,QAA4CA,EAC5CvC,QAA8C,EAAIA,EAC/C,EAGX,OAAO,KAGT,OAAQxvH,KAAKquR,WACX,IAAK,IACH,OA6RR,SAAwB38Q,EAAGC,GACzB,GAAU,OAAND,GAAoB,OAANC,EAChB,MAAiB,iBAAND,GAA+B,iBAANC,EAC3BD,EAAIC,EAAEqN,WAGE,iBAANtN,GAA+B,iBAANC,EAC3BD,EAAEsN,WAAarN,EAGjBD,EAAIC,EAGb,GAAU,OAAND,EACF,OAAOA,EAGT,GAAU,OAANC,EACF,OAAOA,EAGT,OAAO,EAlTM28Q,CAAev8J,EAAMvC,GAC9B,IAAK,IACH,OAAOuC,EAAOvC,EAChB,IAAK,IACH,OAAOuC,EAAOvC,EAChB,IAAK,IACH,OAAOuC,EAAOvC,EAChB,IAAK,IACH,OAAOuC,EAAOvC,EAChB,IAAK,IACH,OAAOuC,EAAOvC,EAChB,IAAK,IACH,OAAOuC,EAAOvC,EAChB,IAAK,KACH,OAAOuC,GAAQvC,EACjB,IAAK,KACH,OAAOuC,GAAQvC,EACjB,IAAK,IACH,OAAOuC,EAAOvC,EAGlB,MAAM,IAAIzyH,MAAM,mBAAqBiD,KAAKquR,UAAY,kBAGxDF,EAAOrzR,UAAUs7J,OAAS,SAAgBg1H,GACxC,OAAOA,EAAQmD,YAAYvuR,OAG7BmuR,EAAOrzR,UAAU0pR,QAAU,SAAiBrtO,EAASi0B,GACnDprE,KAAK+xH,KAAKyyJ,QAAQrtO,EAASi0B,GAC3B,IAAI2mD,EAAO/xH,KAAK+xH,KAAKi2H,SAAS58K,GACP,OAAnBprE,KAAKquR,YAAuBt8J,GAA2B,OAAnB/xH,KAAKquR,WAAsBt8J,GAGnE/xH,KAAKwvH,MAAMg1J,QAAQrtO,EAASi0B,IAGvB+iN,EA/FW,CAgGlBrD,IAES0D,GAAQ,SAAUC,GAG3B,SAASD,EAAMH,EAAWp9H,GAGxB,IAAIy9H,EAAU/2Q,EAA2B3X,KAAMyuR,EAAczzR,KAAKgF,OAIlE,OAFA0uR,EAAQL,UAAYA,EACpBK,EAAQz9H,WAAaA,EACdy9H,EAwBT,OAjCAz2Q,EAAUu2Q,EAAOC,GAYjBD,EAAM1zR,UAAUktP,SAAW,SAAkB58K,EAAO86K,GAClD,OAAQlmP,KAAKquR,WACX,IAAK,IACH,OAAQruR,KAAKixJ,WAAW+2F,SAAS58K,EAAO86K,GAC1C,IAAK,SACH,OAAOrlP,EAAQb,KAAKixJ,WAAW+2F,SAAS58K,EAAO86K,IACjD,IAAK,OACH,YAAYlmP,KAAKixJ,WAAW+2F,SAAS58K,EAAO86K,GAGhD,MAAM,IAAInpP,MAAM,mBAAqBiD,KAAKquR,UAAY,kBAGxDG,EAAM1zR,UAAUs7J,OAAS,SAAgBg1H,GACvC,OAAOA,EAAQuD,YAAY3uR,OAG7BwuR,EAAM1zR,UAAU0pR,QAAU,SAAiBrtO,EAASi0B,GAClDprE,KAAKixJ,WAAWuzH,QAAQrtO,EAASi0B,IAG5BojN,EAlCU,CAmCjB1D,IAES8D,GAAmB,SAAUC,GAGtC,SAASD,EAAiBhwR,GAGxB,IAAIkwR,EAAUn3Q,EAA2B3X,KAAM6uR,EAAc7zR,KAAKgF,OAGlE,OADA8uR,EAAQlwR,MAAQA,EACTkwR,EAaT,OArBA72Q,EAAU22Q,EAAkBC,GAW5BD,EAAiB9zR,UAAUktP,SAAW,SAAkB58K,EAAO86K,GAC7D,OAAOlmP,KAAKpB,OAGdgwR,EAAiB9zR,UAAUs7J,OAAS,SAAgBg1H,GAClD,OAAOA,EAAQ2D,sBAAsB/uR,OAGvC4uR,EAAiB9zR,UAAU0pR,QAAU,SAAiBrtO,EAASi0B,KAExDwjN,EAtBqB,CAuB5B9D,IAESkE,GAAgB,SAAUC,GAGnC,SAASD,EAAcpwR,GAGrB,IAAIswR,EAAUv3Q,EAA2B3X,KAAMivR,EAAcj0R,KAAKgF,OAGlE,OADAkvR,EAAQtwR,MAAQA,EACTswR,EAaT,OArBAj3Q,EAAU+2Q,EAAeC,GAWzBD,EAAcl0R,UAAUktP,SAAW,SAAkB58K,EAAO86K,GAC1D,OAAOlmP,KAAKpB,OAGdowR,EAAcl0R,UAAUs7J,OAAS,SAAgBg1H,GAC/C,OAAOA,EAAQ+D,mBAAmBnvR,OAGpCgvR,EAAcl0R,UAAU0pR,QAAU,SAAiBrtO,EAASi0B,KAErD4jN,EAtBkB,CAuBzBlE,IAESsE,GAAkB,SAAUC,GAGrC,SAASD,EAAgBE,EAAQxnC,EAAa9kI,EAAKpL,GAGjD,IAAI23K,EAAU53Q,EAA2B3X,KAAMqvR,EAAcr0R,KAAKgF,OAMlE,GAJAuvR,EAAQD,OAASA,EACjBC,EAAQznC,YAAcA,GAAe,GACrCynC,EAAQ30R,OAAS20R,EAAQznC,YAAYltP,OACrC20R,EAAQC,YAAiB5xR,IAARg6G,EACb23K,EAAQC,OAGV,GAFAD,EAAQD,OAAOtsK,IAAMA,EACrBusK,EAAQ33K,IAAMA,EACVA,aAAei1K,GACjB0C,EAAQE,YAAc,YACjB,MAAI73K,aAAeo1K,IAAgBp1K,aAAeu1K,IAGvD,MAAM,IAAIpwR,MAAMwyR,EAAQ33K,IAAM,gCAF9B23K,EAAQE,YAAc,SAK1B,OAAOF,EA+CT,OArEAt3Q,EAAUm3Q,EAAiBC,GAyB3BD,EAAgBt0R,UAAU40R,gBAAkB,SAAyBtkN,EAAO86K,GAC1E,OAAO68B,EAAc/iR,KAAK43G,IAAIl6G,KAAM0tE,EAAOprE,KAAK43G,IAAIorK,WAGtDoM,EAAgBt0R,UAAU60R,iBAAmB,SAA0BvkN,EAAO86K,GAC5E,OAAOlmP,KAAK43G,IAAIv4G,OAAO2oP,SAAS58K,EAAO86K,IAGzCkpC,EAAgBt0R,UAAUktP,SAAW,SAAkB58K,EAAO86K,EAAiBwnC,GAE7E,IADA,IAAIt7Q,EAAU,IAAI1R,MAAMV,KAAKpF,QACpBF,EAAI,EAAGA,EAAIsF,KAAKpF,OAAQF,IAC/B0X,EAAQ1X,GAAKsF,KAAK8nP,YAAYptP,GAAGstP,SAAS58K,EAAO86K,GAEnD,GAAIlmP,KAAKwvR,OAAQ,CACf,IAAItoQ,EAAOlnB,KAAK43G,IAAIowI,SAAS58K,EAAO86K,GACpC,GAAoB,mBAATh/N,EAAqB,CAC9B,IAAI/T,EAAUnT,KAAK,MAAQA,KAAKyvR,YAAc,WAAWrkN,EAAO86K,GAChE,OAAOh/N,EAAKlsB,KAAKiJ,MAAMijB,EAAM,CAAC/T,EAASnT,KAAKsvR,QAAQnrR,OAAOiO,IAE7D,IAAKs7Q,EACH,OAAO,KAET,MAAM,IAAI3wR,MAAMiD,KAAK43G,IAAM,sBAG7B,IADA,IAAI7nG,EAAS/P,KAAKsvR,OAAO,GAChB74I,EAAM,EAAGA,EAAMz2I,KAAKpF,OAAQ67I,IACnC1mI,EAASmN,OAAOpiB,UAAUqJ,OAAO4L,EAAQqC,EAAQqkI,GAAMz2I,KAAKsvR,OAAO74I,EAAM,IAE3E,OAAO1mI,GAGTq/Q,EAAgBt0R,UAAUs7J,OAAS,SAAgBg1H,GACjD,OAAOA,EAAQwE,qBAAqB5vR,OAGtCovR,EAAgBt0R,UAAU0pR,QAAU,SAAiBrtO,EAASi0B,GAC5D,IAAK,IAAI1wE,EAAI,EAAGA,EAAIsF,KAAKpF,OAAQF,IAC/BsF,KAAK8nP,YAAYptP,GAAG8pR,QAAQrtO,EAASi0B,GAEnCprE,KAAKwvR,QACPxvR,KAAK43G,IAAI4sK,QAAQrtO,EAASi0B,IAIvBgkN,EAtEoB,CAuE3BtE,IAES+E,GAAe,SAAUC,GAGlC,SAASD,EAAaj3K,GAGpB,IAAIm3K,EAAUp4Q,EAA2B3X,KAAM8vR,EAAc90R,KAAKgF,OAGlE,OADA+vR,EAAQn3K,SAAWA,EACZm3K,EAyBT,OAjCA93Q,EAAU43Q,EAAcC,GAWxBD,EAAa/0R,UAAUktP,SAAW,SAAkB58K,EAAO86K,GAIzD,IAHA,IAAIttI,EAAW54G,KAAK44G,SAChB7oG,EAAS,GAEJrV,EAAI,EAAGE,EAASg+G,EAASh+G,OAAQF,EAAIE,IAAUF,EACtDqV,EAAOrV,GAAKk+G,EAASl+G,GAAGstP,SAAS58K,EAAO86K,GAG1C,OAAOn2O,GAGT8/Q,EAAa/0R,UAAUs7J,OAAS,SAAgBg1H,GAC9C,OAAOA,EAAQ4E,kBAAkBhwR,OAGnC6vR,EAAa/0R,UAAU0pR,QAAU,SAAiBrtO,EAASi0B,GAEzD,IADA,IAAIxwE,EAASoF,KAAK44G,SAASh+G,OAClBF,EAAI,EAAGA,EAAIE,EAAQF,IAC1BsF,KAAK44G,SAASl+G,GAAG8pR,QAAQrtO,EAASi0B,IAI/BykN,EAlCiB,CAmCxB/E,IAESmF,GAAgB,SAAUC,GAGnC,SAASD,EAAc17Q,EAAM8e,GAG3B,IAAI88P,EAAUx4Q,EAA2B3X,KAAMkwR,EAAcl1R,KAAKgF,OAIlE,OAFAmwR,EAAQ57Q,KAAOA,EACf47Q,EAAQ98P,OAASA,EACV88P,EA0BT,OAnCAl4Q,EAAUg4Q,EAAeC,GAYzBD,EAAcn1R,UAAUktP,SAAW,SAAkB58K,EAAO86K,GAK1D,IAJA,IAAIr+L,EAAW,GACXtzC,EAAOvU,KAAKuU,KACZ8e,EAASrzB,KAAKqzB,OAET34B,EAAI,EAAGE,EAAS2Z,EAAK3Z,OAAQF,EAAIE,IAAUF,EAClDmtD,EAAStzC,EAAK7Z,IAAM24B,EAAO34B,GAAGstP,SAAS58K,EAAO86K,GAGhD,OAAOr+L,GAGTooO,EAAcn1R,UAAUs7J,OAAS,SAAgBg1H,GAC/C,OAAOA,EAAQgF,mBAAmBpwR,OAGpCiwR,EAAcn1R,UAAU0pR,QAAU,SAAiBrtO,EAASi0B,GAE1D,IADA,IAAIxwE,EAASoF,KAAKuU,KAAK3Z,OACdF,EAAI,EAAGA,EAAIE,EAAQF,IAC1BsF,KAAKqzB,OAAO34B,GAAG8pR,QAAQrtO,EAASi0B,IAI7B6kN,EApCkB,CAqCzBnF,IAEF,SAASU,GAASpgN,EAAOt3D,EAAMoyO,GAG7B,IAFA,IAAItrP,EAASkZ,EAAKlZ,OACdmV,EAAS,GACJrV,EAAI,EAAGA,EAAIE,EAAQF,IAC1BqV,EAAOrV,GAAKoZ,EAAKpZ,GAAGstP,SAAS58K,EAAO86K,GAEtC,OAAOn2O,EA2BT,SAAS49Q,GAAY5sR,EAAKrD,EAAM2yR,GAC9B,IAAInpQ,EAAOnmB,QAAoC,KAAOA,EAAIrD,GAC1D,GAAoB,mBAATwpB,EACT,OAAOA,EAET,IAAKmpQ,GAAa,MAACnpQ,EACjB,OAAO,KAET,MAAM,IAAInqB,MAAMW,EAAO,sBA+BzB,IAAIutR,GAAY,KAGmB,oBAAxBD,sBACTC,GAAY,WACV,SAASqF,EAASlqF,GAGhBpmM,KAAKomM,OAASA,EAoMhB,OAjMAkqF,EAASpF,QAAU,SAAiBj6H,GAClC,IAAIm1C,EAAS,GACTglF,EAAU,IAAIH,GAAU7kF,GAI5B,OAFAn1C,EAAWmF,OAAOg1H,GAEXhlF,EAAOp+L,KAAK,KAGrBsoR,EAASx1R,UAAUgtF,MAAQ,SAAe5+B,GACxClpD,KAAKomM,OAAOlrM,KAAKguD,IAGnBonO,EAASx1R,UAAUy1R,UAAY,SAAmB9rQ,GAChDzkB,KAAK8nF,MAAM,KAEX,IAAK,IAAIptF,EAAI,EAAGE,EAAS6pB,EAAK7pB,OAAQF,EAAIE,IAAUF,EACxC,IAANA,GACFsF,KAAK8nF,MAAM,KAGbrjE,EAAK/pB,GAAG07J,OAAOp2J,MAGjBA,KAAK8nF,MAAM,MAGbwoM,EAASx1R,UAAUuwR,qBAAuB,SAA8Bv9O,GACtE,IAAIrpB,EAAOqpB,EAASrpB,KAEpBqpB,EAASmjH,WAAWmF,OAAOp2J,MAC3BA,KAAK8nF,MAAM,IAAMh6C,EAASpwC,MAE1B,IAAK,IAAIhD,EAAI,EAAGE,EAAS6pB,EAAK7pB,OAAQF,EAAIE,IAAUF,EAClDsF,KAAK8nF,MAAM,KACXrjE,EAAK/pB,GAAG07J,OAAOp2J,OAInBswR,EAASx1R,UAAUixR,oBAAsB,SAA6BJ,GACpE,IAAIlnQ,EAAOknQ,EAAUlnQ,KAErBknQ,EAAU16H,WAAWmF,OAAOp2J,MAC5BA,KAAK8nF,MAAM,IAAM6jM,EAAUjuR,MAE3B,IAAK,IAAIhD,EAAI,EAAGE,EAAS6pB,EAAK7pB,OAAQF,EAAIE,IAAUF,EAClDsF,KAAK8nF,MAAM,KACXrjE,EAAK/pB,GAAG07J,OAAOp2J,OAInBswR,EAASx1R,UAAUuxR,YAAc,SAAqBxpR,GACpDA,EAAOrF,OAAO44J,OAAOp2J,MACrBA,KAAK8nF,MAAM,KACXjlF,EAAOjE,MAAMw3J,OAAOp2J,OAGtBswR,EAASx1R,UAAU2xR,iBAAmB,SAA0B+D,GAC9DA,EAAY3mJ,UAAUusB,OAAOp2J,MAC7BA,KAAK8nF,MAAM,KACX0oM,EAAYhE,IAAIp2H,OAAOp2J,MACvBA,KAAK8nF,MAAM,KACX0oM,EAAYj7M,GAAG6gF,OAAOp2J,OAGxBswR,EAASx1R,UAAU8xR,gBAAkB,SAAyB/pK,GAC5D,GAAwB,IAApBA,EAAOmgK,SAAX,CAIAhjR,KAAK8nF,MAAM,WAEX,IADA,IAAIptF,EAAImoH,EAAOmgK,SAAW,EACnBtoR,KACLsF,KAAK8nF,MAAM,iBANX9nF,KAAK8nF,MAAM,UAUfwoM,EAASx1R,UAAUiyR,iBAAmB,SAA0BlqK,GAE9D,IADA,IAAInoH,EAAImoH,EAAOmgK,SACRtoR,KACLsF,KAAK8nF,MAAM,YAEb9nF,KAAK8nF,MAAM+6B,EAAOnlH,OAGpB4yR,EAASx1R,UAAUoyR,kBAAoB,SAA2BrqK,GAChEA,EAAOxjH,OAAO+2J,OAAOp2J,MACrBA,KAAK8nF,MAAM,IAAM+6B,EAAOnlH,OAG1B4yR,EAASx1R,UAAUyyR,iBAAmB,SAA0B1qK,GAC9DA,EAAOxjH,OAAO+2J,OAAOp2J,MACrBA,KAAK8nF,MAAM,KACX+6B,EAAO3jH,IAAIk3J,OAAOp2J,MAClBA,KAAK8nF,MAAM,MAGbwoM,EAASx1R,UAAU8yR,eAAiB,SAAwB5yR,GAE1D,IADA,IAAIN,EAAIM,EAAKgoR,SACNtoR,KACLsF,KAAK8nF,MAAM,YAEb9nF,KAAK8nF,MAAM9sF,EAAK0C,MAChBsC,KAAKuwR,UAAUv1R,EAAKypB,OAGtB6rQ,EAASx1R,UAAUozR,kBAAoB,SAA2BlzR,GAChEA,EAAKksB,KAAKkvI,OAAOp2J,MACjBA,KAAKuwR,UAAUv1R,EAAKypB,OAGtB6rQ,EAASx1R,UAAUizR,gBAAkB,SAAyB/yR,GAC5DA,EAAKqE,OAAO+2J,OAAOp2J,MACnBA,KAAK8nF,MAAM,IAAM9sF,EAAK0C,MACtBsC,KAAKuwR,UAAUv1R,EAAKypB,OAGtB6rQ,EAASx1R,UAAU6zR,YAAc,SAAqBhtP,GACpD3hC,KAAK8nF,MAAM,IAAMnmD,EAAO0sP,WACpB1sP,EAAO0sP,UAAUlwO,WAAW,IAAM,IACpCn+C,KAAK8nF,MAAM,KAEbnmD,EAAOsvH,WAAWmF,OAAOp2J,MACzBA,KAAK8nF,MAAM,MAGbwoM,EAASx1R,UAAUyzR,YAAc,SAAqBxrO,GACpDA,EAAOgvE,KAAKqkC,OAAOp2J,MACoB,MAAnC+iD,EAAOsrO,UAAUlwO,WAAW,GAC9Bn+C,KAAK8nF,MAAM,IAAM/kC,EAAOsrO,UAAY,KAEpCruR,KAAK8nF,MAAM/kC,EAAOsrO,WAEpBtrO,EAAOysE,MAAM4mC,OAAOp2J,OAGtBswR,EAASx1R,UAAUi0R,sBAAwB,SAA+B0B,GACxEzwR,KAAK8nF,MAAM,GAAK2oM,EAAQ7xR,QAG1B0xR,EAASx1R,UAAUk1R,kBAAoB,SAA2BS,GAChE,IAAI73K,EAAW63K,EAAQ73K,SAEvB54G,KAAK8nF,MAAM,KAEX,IAAK,IAAIptF,EAAI,EAAGE,EAASg+G,EAASh+G,OAAQF,EAAIE,IAAUF,EAC5C,IAANA,GACFsF,KAAK8nF,MAAM,KAGb8wB,EAASl+G,GAAG07J,OAAOp2J,MAGrBA,KAAK8nF,MAAM,MAGbwoM,EAASx1R,UAAUs1R,mBAAqB,SAA4BK,GAClE,IAAIl8Q,EAAOk8Q,EAAQl8Q,KACf8e,EAASo9P,EAAQp9P,OAErBrzB,KAAK8nF,MAAM,KAEX,IAAK,IAAIptF,EAAI,EAAGE,EAAS2Z,EAAK3Z,OAAQF,EAAIE,IAAUF,EACxC,IAANA,GACFsF,KAAK8nF,MAAM,KAGb9nF,KAAK8nF,MAAM,IAAOvzE,EAAK7Z,GAAK,MAC5B24B,EAAO34B,GAAG07J,OAAOp2J,MAGnBA,KAAK8nF,MAAM,MAGbwoM,EAASx1R,UAAUq0R,mBAAqB,SAA4BsB,GAClE,IAAI57K,EAAU47K,EAAQ7xR,MAAMmI,QAAQ,KAAM,KAC1C/G,KAAK8nF,MAAM,IAAO+sB,EAAU,MAG9By7K,EAASx1R,UAAU80R,qBAAuB,SAA8Ba,GACtE,IAAInB,EAASmB,EAAQnB,OACjBxnC,EAAc2oC,EAAQ3oC,YAEtBltP,EAASktP,EAAYltP,OACzBoF,KAAK8nF,MAAM,KACX9nF,KAAK8nF,MAAMwnM,EAAO,IAClB,IAAK,IAAI50R,EAAI,EAAGA,EAAIE,EAAQF,IAC1BotP,EAAYptP,GAAG07J,OAAOp2J,MACtBA,KAAK8nF,MAAMwnM,EAAO50R,EAAI,IAExBsF,KAAK8nF,MAAM,MAGNwoM,EAxMG,IA4MP,IAAII,GAAmB,WAC5B,SAASA,KAqFT,OAjFAA,EAAiB51R,UAAU61R,qBAAuB,SAA8BrpQ,GAG9E,IAFA,IAAIspQ,EAAc,GACdl2R,EAAI4sB,EAAM1sB,OACPF,KACLk2R,EAAYl2R,GAAK4sB,EAAM5sB,GAAG07J,OAAOp2J,MAEnC,OAAO4wR,GAGTF,EAAiB51R,UAAUuwR,qBAAuB,SAA8Bv9O,GAC9E,OAAO,IAAIs4M,GAAgBt4M,EAASmjH,WAAWmF,OAAOp2J,MAAO8tC,EAASpwC,KAAMsC,KAAK2wR,qBAAqB7iP,EAASrpB,QAGjHisQ,EAAiB51R,UAAUixR,oBAAsB,SAA6BJ,GAC5E,OAAO,IAAItlC,GAAeslC,EAAU16H,WAAWmF,OAAOp2J,MAAO2rR,EAAUjuR,KAAMsC,KAAK2wR,qBAAqBhF,EAAUlnQ,QAGnHisQ,EAAiB51R,UAAUuxR,YAAc,SAAqBxpR,GAC5D,OAAO,IAAIqpR,GAAOrpR,EAAOrF,OAAO44J,OAAOp2J,MAAO6C,EAAOjE,MAAMw3J,OAAOp2J,QAGpE0wR,EAAiB51R,UAAU2xR,iBAAmB,SAA0B+D,GACtE,OAAO,IAAIlE,GAAYkE,EAAY3mJ,UAAUusB,OAAOp2J,MAAOwwR,EAAYhE,IAAIp2H,OAAOp2J,MAAOwwR,EAAYj7M,GAAG6gF,OAAOp2J,QAGjH0wR,EAAiB51R,UAAU8xR,gBAAkB,SAAyB/pK,GACpE,OAAO,IAAI6pK,GAAW7pK,EAAOmgK,WAG/B0N,EAAiB51R,UAAUiyR,iBAAmB,SAA0BlqK,GACtE,OAAO,IAAIgqK,GAAYhqK,EAAOnlH,KAAMmlH,EAAOmgK,WAG7C0N,EAAiB51R,UAAUoyR,kBAAoB,SAA2BrqK,GACxE,OAAO,IAAImqK,GAAanqK,EAAOxjH,OAAO+2J,OAAOp2J,MAAO6iH,EAAOnlH,OAG7DgzR,EAAiB51R,UAAUyyR,iBAAmB,SAA0B1qK,GACtE,OAAO,IAAIsqK,GAAYtqK,EAAOxjH,OAAO+2J,OAAOp2J,MAAO6iH,EAAO3jH,IAAIk3J,OAAOp2J,QAGvE0wR,EAAiB51R,UAAU8yR,eAAiB,SAAwB5yR,GAClE,OAAO,IAAIwyR,GAAUxyR,EAAK0C,KAAMsC,KAAK2wR,qBAAqB31R,EAAKypB,MAAOzpB,EAAKgoR,WAG7E0N,EAAiB51R,UAAUozR,kBAAoB,SAA2BlzR,GACxE,OAAO,IAAIgzR,GAAahzR,EAAKksB,KAAKkvI,OAAOp2J,MAAOA,KAAK2wR,qBAAqB31R,EAAKypB,QAGjFisQ,EAAiB51R,UAAUizR,gBAAkB,SAAyB/yR,GACpE,OAAO,IAAI6yR,GAAW7yR,EAAKqE,OAAO+2J,OAAOp2J,MAAOhF,EAAK0C,KAAMsC,KAAK2wR,qBAAqB31R,EAAKypB,QAG5FisQ,EAAiB51R,UAAU+1R,WAAa,SAAoBC,GAC1D,OAAO,IAAItC,GAAM7sP,OAAO0sP,UAAW1sP,OAAOsvH,WAAWmF,OAAOp2J,QAG9D0wR,EAAiB51R,UAAUyzR,YAAc,SAAqBxrO,GAC5D,OAAO,IAAIorO,GAAOprO,EAAOsrO,UAAWtrO,EAAOgvE,KAAKqkC,OAAOp2J,MAAO+iD,EAAOysE,MAAM4mC,OAAOp2J,QAGpF0wR,EAAiB51R,UAAUi0R,sBAAwB,SAA+B0B,GAChF,OAAO,IAAI7B,GAAiB6B,IAG9BC,EAAiB51R,UAAUk1R,kBAAoB,SAA2BS,GACxE,OAAO,IAAIZ,GAAa7vR,KAAK2wR,qBAAqBF,EAAQ73K,YAG5D83K,EAAiB51R,UAAUs1R,mBAAqB,SAA4BK,GAC1E,OAAO,IAAIR,GAAcQ,EAAQl8Q,KAAMvU,KAAK2wR,qBAAqBF,EAAQp9P,UAG3Eq9P,EAAiB51R,UAAUq0R,mBAAqB,SAA4BsB,GAC1E,OAAO,IAAIzB,GAAcyB,EAAQ7xR,QAGnC8xR,EAAiB51R,UAAU80R,qBAAuB,SAA8Ba,GAC9E,OAAO,IAAIrB,GAAgBqB,EAAQnB,OAAQtvR,KAAK2wR,qBAAqBF,EAAQ3oC,aAAc2oC,EAAQztK,IAAKytK,EAAQ74K,KAAO64K,EAAQ74K,IAAIw+C,OAAOp2J,QAGrI0wR,EAtFqB,GAyFvB,SAASK,GAAgB9/H,GAC9B,IAAIm6H,EAAU,IAAIsF,GAClB,OAAOz/H,EAAWmF,OAAOg1H,GAGpB,IAAI4F,GAAc,CACvB/gI,QAAS,EACT47H,OAAQ,EACRoF,OAAQ,EACRC,OAAQ,EACRpF,SAAU,GAGDqF,GAAS,WAClB,SAASA,IAGPnxR,KAAKu8D,MAAQ1hE,OAAOoE,OAAO,MAS7B,OANAkyR,EAAOr2R,UAAUqW,MAAQ,SAAexU,GAGtC,OAFAA,EAAMA,GAAO,GAENqD,KAAKu8D,MAAM5/D,KAASqD,KAAKu8D,MAAM5/D,GAAO,IAAIy0R,GAAqBz0R,GAAK00R,yBAGtEF,EAbW,GAgBhB52O,GAAer9B,OAAOq9B,aAEf62O,GAAuB,WAQhC,SAASA,EAAqBz0R,GAG5BqD,KAAKm4D,IAAM,EAEXn4D,KAAKslD,MAAQ,EAEbtlD,KAAKrD,IAAMA,EACXqD,KAAKgiB,IAAMrlB,EAAI/B,OAEfoF,KAAKsxR,IAAMC,GAEXvxR,KAAKS,SAAM7C,EAEXoC,KAAKy+E,GAAK9hF,EAAIwhD,WAAW,GAkf3B,OAvgBAl9C,EAAamwR,EAAsB,CAAC,CAClClyR,IAAK,MACLV,IAAK,WACH,OAAOwB,KAAKrD,IAAIkD,MAAMG,KAAKslD,MAAOtlD,KAAKm4D,SAqB3Ci5N,EAAqBt2R,UAAUu2R,qBAAuB,WACpDrxR,KAAKwxR,YACDxxR,KAAKsxR,IAAMG,IACbzxR,KAAKR,IAAI,+BAGX,IADA,IAAIuQ,EAAS/P,KAAK0xR,sBACX1xR,KAAKm1H,IAAIw8J,KACd5hR,EAAS,IAAIq2O,GAAgBr2O,EAAQ/P,KAAKS,IAAKT,KAAK4xR,qBAKtD,OAHI5xR,KAAKsxR,MAAQC,IACfvxR,KAAKR,IAAI,oBAAsBQ,KAAKgjH,KAE/BjzG,GAGTqhR,EAAqBt2R,UAAU42R,oBAAsB,WAEnD,IADA,IAAI3hR,EAAS/P,KAAK6xR,kBACX7xR,KAAKm1H,IAAI28J,KACd/hR,EAAS,IAAIs2O,GAAet2O,EAAQ/P,KAAKS,IAAKT,KAAK4xR,qBAErD,OAAO7hR,GAGTqhR,EAAqBt2R,UAAU82R,kBAAoB,WACjD5xR,KAAKwxR,YAEL,IADA,IAAIzhR,EAAS,GACN/P,KAAKm1H,IAAI48J,KACdhiR,EAAO7U,KAAK8E,KAAK6xR,mBAEnB,OAAO9hR,GAGTqhR,EAAqBt2R,UAAU+2R,gBAAkB,WAI/C,IAHA,IAAIG,EAAYhyR,KAAKm4D,IACjBpoD,EAAS/P,KAAKiyR,mBAEXjyR,KAAKsxR,MAAQY,IACbniR,EAAOg7Q,cACV/qR,KAAKR,IAAI,cAAgBQ,KAAKrD,IAAIkD,MAAMmyR,EAAWhyR,KAAKslD,OAAS,sBAEnEtlD,KAAKwxR,YACLQ,EAAYhyR,KAAKm4D,IACjBpoD,EAAS,IAAIm8Q,GAAOn8Q,EAAQ/P,KAAKiyR,oBAEnC,OAAOliR,GAGTqhR,EAAqBt2R,UAAUm3R,iBAAmB,WAChD,IAAIliR,EAAS/P,KAAKmyR,YAAY,GAE9B,GAAInyR,KAAKm1H,IAAIi9J,IAAa,CACxB,IAAI5F,EAAMxsR,KAAK6xR,kBACf7xR,KAAKqyR,OAAON,IACZhiR,EAAS,IAAIu8Q,GAAYv8Q,EAAQy8Q,EAAKxsR,KAAK6xR,mBAE7C,OAAO9hR,GAGTqhR,EAAqBt2R,UAAUq3R,YAAc,SAAqBG,GAGhE,IAFA,IAAIvgK,EAAO/xH,KAAKuyR,kBAAkB,GAE3BvyR,KAAKsxR,IAAMkB,IAAY,CAC5B,IAAIC,EAAUzyR,KAAKsxR,IACnB,IAAKmB,EAAUC,KAAiBJ,EAC9B,MAEFtyR,KAAKwxR,YACLz/J,EAAO,IAAIo8J,GAAOwE,GAAYF,EAAUG,IAAc7gK,EAAM/xH,KAAKmyR,YAAYM,EAAUC,KAEzF,OAAO3gK,GAGTq/J,EAAqBt2R,UAAUy3R,kBAAoB,SAA2Bp/Q,GAC5E,IAAIpD,OAAS,EAEb8iR,EAAS,OAAQ7yR,KAAKsxR,KACpB,KAAKwB,GAEH,OADA9yR,KAAKwxR,YACExxR,KAAKuyR,kBAAkB,GAChC,KAAKQ,GAEH,OADA/yR,KAAKwxR,YACE,IAAIrD,GAAO,IAAK,IAAIS,GAAiB,GAAI5uR,KAAKuyR,kBAAkB,IACzE,KAAKS,GACL,KAAKC,GACL,KAAKC,GACH,IAAI/gN,EAAKwgN,GAAY3yR,KAAKsxR,IAAMsB,IAEhC,OADA5yR,KAAKwxR,YACE,IAAIhD,GAAMr8M,EAAInyE,KAAKuyR,kBAAkB,IAC9C,KAAKY,GAED,GAGE,GAFAnzR,KAAKwxR,YACLr+Q,IACInT,KAAKm1H,IAAIi+J,IACPpzR,KAAKsxR,MAAQ8B,IACfpzR,KAAKR,UAFT,CAKO,GAAIQ,KAAKsxR,IAAM+B,GAAuB,CAC3CtjR,EAAS,IAAI28Q,GAAWv5Q,EAAUmgR,IAElCngR,EAAUA,EAAUogR,GAAkBC,GACtC,MAAMX,EAEN7yR,KAAKR,aAEAQ,KAAKsxR,MAAQ6B,IAG1B,KAAKM,GAED1jR,EAAS,IAAI88Q,GAAY7sR,KAAKS,IAAK0S,EAAUmgR,IAC7CtzR,KAAKwxR,YACLr+Q,EAAUA,EAAUogR,GAAkBG,GACtC,MAEJ,KAAKC,GACH3zR,KAAKwxR,YACLzhR,EAAS,IAAI28Q,GAAW,GACxBv5Q,EAAUA,EAAUogR,GAAkBC,GACtC,MACF,KAAKI,GACH5zR,KAAKwxR,YACLzhR,EAAS/P,KAAK6xR,kBACd7xR,KAAKqyR,OAAOwB,IACZ1gR,EAAU2gR,GACV,MACF,KAAKC,GAED/zR,KAAKwxR,YACL,IAAIwC,EAAY,GAChB,GAAIh0R,KAAKsxR,MAAQ2C,GACf,GACED,EAAU94R,KAAK8E,KAAK6xR,yBACb7xR,KAAKm1H,IAAI++J,KAEpBl0R,KAAKqyR,OAAO4B,IACZlkR,EAAS,IAAI8/Q,GAAamE,GAC1B7gR,EAAU2gR,GACV,MAEJ,KAAKK,GAED,IAAI5/Q,EAAO,GACP8e,EAAS,GAEb,IADArzB,KAAKwxR,YACExxR,KAAKsxR,MAAQ8C,IAAU,CAC5B,GAAIp0R,KAAKsxR,IAAM+C,GAAuB,CACpC,IAAI51M,EAAKz+E,KAAKy+E,GACV6yM,EAAMtxR,KAAKsxR,IACXn5N,EAAMn4D,KAAKm4D,IAEf5jD,EAAKrZ,KAAK8E,KAAKS,KACfT,KAAKwxR,YACDxxR,KAAKm1H,IAAI48J,IACX1+P,EAAOn4B,KAAK8E,KAAK6xR,oBAEjB7xR,KAAKy+E,GAAKA,EACVz+E,KAAKsxR,IAAMA,EACXtxR,KAAKm4D,IAAMA,EACX9kC,EAAOn4B,KAAK8E,KAAKuyR,kBAAkBgB,WAE5BvzR,KAAKsxR,IAAMgD,IACpB//Q,EAAKrZ,KAAK8E,KAAKS,KACfT,KAAKwxR,YACLxxR,KAAKqyR,OAAON,IACZ1+P,EAAOn4B,KAAK8E,KAAK6xR,oBAEjB7xR,KAAKR,MAEHQ,KAAKsxR,MAAQ8C,IACfp0R,KAAKqyR,OAAO6B,IAGhBl0R,KAAKqyR,OAAO+B,IACZrkR,EAAS,IAAIkgR,GAAc17Q,EAAM8e,GACjClgB,EAAU2gR,GACV,MAEJ,KAAKS,GACHxkR,EAAS,IAAIi/Q,GAAchvR,KAAKS,KAChCT,KAAKwxR,YACLr+Q,EAAU2gR,GACV,MACF,KAAKU,GACHzkR,EAAS,IAAIq/Q,GAAgB,CAACpvR,KAAKS,MACnCT,KAAKwxR,YACLr+Q,EAAU2gR,GACV,MACF,KAAKW,GACH1kR,EAAS/P,KAAK00R,cAAc,GAC5BvhR,EAAU2gR,GACV,MACF,KAAKa,GAED5kR,EAAS,IAAI6+Q,GAAiB5uR,KAAKS,KACnCT,KAAKwxR,YAEL,MAEJ,KAAKoD,GACL,KAAKC,GACL,KAAKC,GACL,KAAKC,GACHhlR,EAAS,IAAI6+Q,GAAiB+D,GAAY3yR,KAAKsxR,IAAMsB,KACrD5yR,KAAKwxR,YACLr+Q,EAAU2gR,GACV,MACF,QACM9zR,KAAKm4D,KAAOn4D,KAAKgiB,IACnBhiB,KAAKR,IAAI,gCAETQ,KAAKR,MAIX,GAAI2T,EAAUogR,GACZ,OAAOxjR,EAIT,IADA,IAAIrS,EAAOsC,KAAKS,IACTT,KAAKsxR,IAAM0D,IAChB,OAAQh1R,KAAKsxR,KACX,KAAK8B,GASH,GARApzR,KAAKwxR,YACCxxR,KAAKsxR,IAAM+C,IACfr0R,KAAKR,MAEP9B,EAAOsC,KAAKS,IACZT,KAAKwxR,YAELr+Q,EAAUA,EAAU2gR,IAAa3gR,GAAWqgR,GAASE,MAAa,EAAIvgR,EAAU8hR,IAAY9hR,EAAU+hR,KAAY,GAAK/hR,EAAUgiR,KAAW,EACxIn1R,KAAKsxR,MAAQsC,GACf,SAGA7jR,EADEoD,EAAUugR,GACH,IAAI7G,GAAYnvR,EAAMqS,EAAOizQ,UAE7B,IAAIgK,GAAaj9Q,EAAQrS,GAEpC,SACF,KAAKq2R,GACH/zR,KAAKwxR,YACLr+Q,EAAU+hR,GACVnlR,EAAS,IAAIo9Q,GAAYp9Q,EAAQ/P,KAAK6xR,mBACtC7xR,KAAKqyR,OAAO4B,IACZ,MACF,KAAKL,GACH5zR,KAAKwxR,YAEL,IADA,IAAI/sQ,EAAO,GACJzkB,KAAKsxR,MAAQuC,KAClBpvQ,EAAKvpB,KAAK8E,KAAK6xR,mBACV7xR,KAAKm1H,IAAI++J,OAIhBl0R,KAAKqyR,OAAOwB,IAEV9jR,EADEoD,EAAUugR,GACH,IAAIlG,GAAU9vR,EAAM+mB,EAAM1U,EAAOizQ,UACjC7vQ,GAAW8hR,GAAWnB,IACtB,IAAIjG,GAAW99Q,EAAQrS,EAAM+mB,GAE7B,IAAIupQ,GAAaj+Q,EAAQ0U,GAEpCtR,EAAUgiR,GACV,MACF,KAAKX,GACHzkR,EAAS,IAAIq/Q,GAAgB,CAACpvR,KAAKS,KAAM,GAAI,CAACT,KAAKgjH,KAAMjzG,GACzD/P,KAAKwxR,YACL,MACF,KAAKiD,GACH1kR,EAAS/P,KAAK00R,cAAcvhR,EAAUiiR,GAAUrlR,GAItD,OAAOA,GAGTqhR,EAAqBt2R,UAAU45R,cAAgB,SAAuBvhR,EAAS+T,GAC7E,IAAIooQ,EAAS,CAACtvR,KAAKS,KACfuiH,EAAM7vG,EAAUiiR,GAAW,CAACp1R,KAAKgjH,UAAOplH,EAC5CoC,KAAKqyR,OAAOoC,IAGZ,IAFA,IAAI3sC,EAAc,CAAC9nP,KAAK6xR,oBAEhB7xR,KAAKsxR,IAAMtxR,KAAKq1R,sBAAwBb,IAC9ClF,EAAOp0R,KAAK8E,KAAKS,KACb0S,EAAUiiR,IACZpyK,EAAI9nH,KAAK8E,KAAKgjH,KAEhBhjH,KAAKqyR,OAAOoC,IACZ3sC,EAAY5sP,KAAK8E,KAAK6xR,mBAQxB,OALAvC,EAAOp0R,KAAK8E,KAAKS,KACb0S,EAAUiiR,IACZpyK,EAAI9nH,KAAK8E,KAAKgjH,KAEhBhjH,KAAKwxR,YACE,IAAIpC,GAAgBE,EAAQxnC,EAAa9kI,EAAK97F,IAGvDkqQ,EAAqBt2R,UAAU02R,UAAY,WACzC,KAAOxxR,KAAKm4D,IAAMn4D,KAAKgiB,KACrB,GAAIhiB,KAAKy+E,IAAM,GACbz+E,KAAKiD,WADP,CAKA,GADAjD,KAAKslD,MAAQtlD,KAAKm4D,IACF,KAAZn4D,KAAKy+E,IAAez+E,KAAKy+E,IAAM,IAAQz+E,KAAKy+E,IAAM,IAEpD,YADAz+E,KAAKsxR,IAAMtxR,KAAKs1R,kBAIlB,GAAiD,QAA5Ct1R,KAAKsxR,IAAMiE,GAAav1R,KAAKy+E,IAAIz+E,OACpC,OAGJA,KAAKsxR,IAAMC,IAGbH,EAAqBt2R,UAAUmI,KAAO,WACpC,OAAOjD,KAAKy+E,GAAKz+E,KAAKrD,IAAIwhD,aAAan+C,KAAKm4D,MAG9Ci5N,EAAqBt2R,UAAUw6R,eAAiB,WAC9C,KAAOE,GAAa57L,IAAI55F,KAAKiD,SAAWjD,KAAKy+E,GAAK,KAAQg3M,GAAQz1R,KAAKy+E,MAEvE,OAAOi3M,GAAc11R,KAAKS,IAAMT,KAAKgjH,MAAQywK,IAG/CrC,EAAqBt2R,UAAU66R,WAAa,SAAoBC,GAC9D,GAAIA,EACF51R,KAAKS,IAAM,OAGX,IADAT,KAAKS,IAAMT,KAAKy+E,GAAK,GACdz+E,KAAKiD,QAAU,IAAQjD,KAAKy+E,IAAM,IACvCz+E,KAAKS,IAAiB,GAAXT,KAAKS,IAAWT,KAAKy+E,GAAK,GAIzC,GAAIm3M,GAAuB,KAAZ51R,KAAKy+E,GAAa,CAC1Bm3M,GACH51R,KAAKiD,OAIP,IAFA,IAAIqiD,EAAQtlD,KAAKm4D,IACbv5D,EAAQoB,KAAKy+E,GAAK,GACfz+E,KAAKiD,QAAU,IAAQjD,KAAKy+E,IAAM,IACvC7/E,EAAgB,GAARA,EAAaoB,KAAKy+E,GAAK,GAEjCz+E,KAAKS,IAAMT,KAAKS,IAAM7B,EAAQukB,KAAKoD,IAAI,GAAIvmB,KAAKm4D,IAAM7S,GAGxD,GAAgB,MAAZtlD,KAAKy+E,IAA2B,KAAZz+E,KAAKy+E,GAAa,CACxC,IAAI+/E,EAASx+J,KAAKm4D,IAWlB,IATAn4D,KAAKiD,OACW,KAAZjD,KAAKy+E,IAA2B,KAAZz+E,KAAKy+E,IAC3Bz+E,KAAKiD,OAGDjD,KAAKy+E,IAAM,IAAQz+E,KAAKy+E,IAAM,KAClCz+E,KAAKm4D,IAAMqmG,EACXx+J,KAAKR,IAAI,qBAEJQ,KAAKiD,QAAU,IAAQjD,KAAKy+E,IAAM,KACzCz+E,KAAKS,IAAM06B,WAAWn7B,KAAKrD,IAAIkD,MAAMG,KAAKslD,MAAOtlD,KAAKm4D,MAGxD,OAAOw8N,IAGTvD,EAAqBt2R,UAAU+6R,WAAa,WAC1C,IAAIC,EAAQ91R,KAAKy+E,GACjBz+E,KAAKiD,OAKL,IAHA,IAAImjM,OAAS,EACTnwJ,EAASj2C,KAAKm4D,IAEXn4D,KAAKy+E,KAAOq3M,GACjB,GAAgB,KAAZ91R,KAAKy+E,GAAa,CACf2nH,IACHA,EAAS,IAGXA,EAAOlrM,KAAK8E,KAAKrD,IAAIkD,MAAMo2C,EAAQj2C,KAAKm4D,MAExCn4D,KAAKiD,OAEL,IAAI8yR,OAAa,EAEjB,GAAgB,MAAZ/1R,KAAKy+E,GAGP,GAFAz+E,KAAKiD,OAEDjD,KAAKm4D,IAAM,EAAIn4D,KAAKgiB,IAAK,CAC3B,IAAIoiK,EAAMpkL,KAAKrD,IAAIkD,MAAMG,KAAKm4D,IAAKn4D,KAAKm4D,IAAM,GAEzC,eAAe/1D,KAAKgiL,IACvBpkL,KAAKR,IAAI,8BAAgC4kL,EAAM,KAGjD2xG,EAAazrQ,SAAS85J,EAAK,IAC3BpkL,KAAKm4D,KAAO,EACZn4D,KAAKy+E,GAAKz+E,KAAKrD,IAAIwhD,WAAWn+C,KAAKm4D,UAEnCn4D,KAAKR,WAGPu2R,EAAah5O,GAAS/8C,KAAKy+E,IAC3Bz+E,KAAKiD,OAGPmjM,EAAOlrM,KAAKq/C,GAAaw7O,IACzB9/O,EAASj2C,KAAKm4D,SACO,IAAZn4D,KAAKy+E,IAAYz+E,KAAKm4D,KAAOn4D,KAAKgiB,IAC3ChiB,KAAKR,IAAI,sBAETQ,KAAKiD,OAIT,IAAI2rE,EAAO5uE,KAAKrD,IAAIkD,MAAMo2C,EAAQj2C,KAAKm4D,KACvCn4D,KAAKiD,OACL,IAAI+yR,EAAYpnN,EAQhB,OANIw3H,UACFA,EAAOlrM,KAAK0zE,GACZonN,EAAY5vF,EAAOp+L,KAAK,KAG1BhI,KAAKS,IAAMu1R,EACJzB,IAGTnD,EAAqBt2R,UAAUm7R,aAAe,WAI5C,IAHA,IAAIh7M,GAAO,EACPlrE,EAAS,GAEU,KAAhB/P,KAAKiD,QACV,GAAgB,KAAZjD,KAAKy+E,GAAa,CACpB,GAAIz+E,KAAKm4D,IAAM,EAAIn4D,KAAKgiB,KAA6C,MAAtChiB,KAAKrD,IAAIwhD,WAAWn+C,KAAKm4D,IAAM,GAAa,CACzEn4D,KAAKm4D,MACL8iB,GAAO,EACP,MAEAlrE,GAAU,SAES,KAAZ/P,KAAKy+E,GACd1uE,GAAUwqC,GAAawC,GAAS/8C,KAAKiD,SAChB,IAAZjD,KAAKy+E,IAAYz+E,KAAKm4D,KAAOn4D,KAAKgiB,IAC3ChiB,KAAKR,IAAI,iCAETuQ,GAAUwqC,GAAav6C,KAAKy+E,IAMhC,OAFAz+E,KAAKiD,OACLjD,KAAKS,IAAMsP,EACPkrE,EACKu5M,GAEFC,IAGTrD,EAAqBt2R,UAAUu6R,iBAAmB,WAKhD,OAJIr1R,KAAKm4D,KAAOn4D,KAAKgiB,KACnBhiB,KAAKR,IAAI,yBAEXQ,KAAKm4D,MACEn4D,KAAKi2R,gBAGd7E,EAAqBt2R,UAAU0E,IAAM,WACnC,IAAI/B,EAAUqE,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,oBAAsB9B,KAAKgjH,IACzGkzK,EAASp0R,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK9B,KAAKslD,MAEtF,MAAM,IAAIvoD,MAAM,iBAAmBU,EAAU,cAAgBy4R,EAAS,mBAAqBl2R,KAAKrD,IAAM,MAGxGy0R,EAAqBt2R,UAAUq6H,IAAM,SAAaruG,GAChD,OAAI9mB,KAAKsxR,MAAQxqQ,IACf9mB,KAAKwxR,aACE,IAMXJ,EAAqBt2R,UAAUu3R,OAAS,SAAgBvrQ,GAClD9mB,KAAKsxR,MAAQxqQ,EACf9mB,KAAKwxR,YAELxxR,KAAKR,IAAI,0BAA4BmzR,GAAY7rQ,EAAQ8rQ,IAAc5yR,KAAKm4D,MAIzEi5N,EAxgByB,GA2gBlC,SAASr0O,GAASoX,GAChB,OAAQA,GACN,KAAK,IACH,OAAO,GACT,KAAK,IACH,OAAO,GACT,KAAK,IACH,OAAO,GACT,KAAK,IACH,OAAO,EACT,KAAK,IACH,OAAO,GACT,QACE,OAAOA,GAIb,IAAIq/N,GAAS,KACTE,GAAU,KACVuB,GAAW,KACXC,GAAU,KACVC,GAAS,MACTrB,GAAY,MACZP,GAAkB,MAClB6B,GAAW,GAAK,GAEhB9B,GAAa,IAEbV,GAAc,GAIdF,GAAe,IAEfjB,GAAuB,KAMvB4B,GAAwB,MAExB9B,GAAQ,MAAU8B,GAAwB5B,GAC1CgC,GAAe,GAAK,GACpBY,GAHY,MAGYZ,GACxBa,GAAY,GAAK,GACjBK,GAAmB,GAAK,GAAKL,GAC7BC,GAAkB,GAAK,GAAKD,GAC5B9B,GAAa,GAAK,GAMlBwC,GAA2B,GAAK,GAChCR,GAAiB,GAAK,GAAKQ,GAC3BP,GAAyB,GAAK,GAAKO,GAEnCD,GAAiB,MAAgBT,GACjCQ,GAAgB,MAAgBR,GAChCM,GAAgB,MAAgBN,GAChCO,GAAqB,MAAgBP,GACrCX,GAAc,EAAIU,GAClBlB,GAAgB,EAAIkB,GAEpBT,GAAW,KAAqBP,GAAwB2B,GACxDb,GAAW,KACXf,GAAW,QAAyB4B,GACpCZ,GAAW,KAAIf,GAAyC5B,GACxDoC,GAAW,KAAKR,GAAyC5B,GACzDyC,GAAU,GAAKb,GACfU,GAAa,KAAsBV,GAnBd,GAAK,GAmBsD2B,GAChFf,GAAa,KAAsBxC,GACnCM,GAAU,GAAKsB,GACfjB,GAAa,GAEbT,GAAc,GAAK0B,GACnBvB,GAAQ,GAAKuB,GACb8C,GAAW,GAAwB3D,GACnC4D,GAAuB,IAAwB5D,GAC/C6D,GAAU,IAAwB7D,GAClC8D,GAAS,IAAwB9D,GACjC+D,GAAW,IAAwB/D,GACnCgE,GAAW,IAAwBhE,GACnCiE,GAAa,IAAwBjE,GACrCkE,GAAO,IAAwBlE,GAC/BmE,GAAO,IAAwBnE,GAC/BoE,GAAS,IAAwBpE,GACjCqE,GAAS,IAAwBrE,GACjCsE,GAAc,MAAwBtE,GACtCuE,GAAsB,MAAwBvE,GAC9CM,GAAS,IAAwBN,GAzCrB,GAAK,GA0CjBO,GAAU,IAAwBP,GA1CtB,GAAK,GA2CjBS,GAAkB,QAClBC,GAAgB,QAChB8D,GAAS,IAAwBxE,GACjCyE,GAAY,IAAwBzE,GACpC0E,GAAU,IAAwB1E,GAClCN,GAAO,GACPc,GAAS,QAET0C,GAAgB76R,OAAOoE,OAAO,MAClCy2R,GAAcyB,KAAOrC,GACrBY,GAAcp+F,KAAOs9F,GACrBc,GAAc0B,MAAQrC,GACtBW,GAAc93R,UAAYi3R,GAC1Ba,GAAc2B,MAAQ1D,GACtB+B,GAAc4B,QAAUnE,GACxBuC,GAAc6B,GAAKT,GACnBpB,GAAc8B,WAAaT,GAC3BrB,GAAc+B,OAASxE,GACvByC,GAAcgC,KAAOxE,GAErB,IAAIP,GAAc,EAAC,GAAO,EAAM,UAAM/0R,EAAW,QAAS,UAAW,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,KAAM,KAAM,MAAO,MAAO,IAAK,IAAK,KAAM,KAAM,KAAM,aAAc,IAAK,IAAK,SAAU,OAAQ,IAAK,IAAK,IAAK,IAAK,KAE7Qs2D,GACW,CAAC,GAAM,EAAG,GAAM,GAAM,GAAM,GAAM,GAAM,EAAG,GAAM,KAD5DA,GAEO,CAAC,GAAM,EAAG,GAAM,GAAM,GAAM,EAAG,GAAM,IAAM,IAAM,EAAG,IAAM,EAAG,IAAM,IAAM,IAAM,IAAM,IAAM,IAAO,IAAO,IAAO,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,EAAG,KAAQ,EAAG,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,EAAG,KAAQ,EAAG,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAF3cA,GAGK,CAAC,GAAM,IAHZA,GAII,CAAC,EAAG,GAAM,IAAM,KAGxB,SAASyjO,GAAWjyJ,EAAQvgH,EAAKyyQ,EAAYh5R,GAE3C,IADA,IAAIghO,EAAag4D,EAAWh9R,OACnBF,EAAI,EAAGA,EAAIklO,EAAYllO,GAAK,EAAG,CACtC,IAAI4qD,EAAQsyO,EAAWl9R,GACnB41E,EAAMsnN,EAAWl9R,EAAI,GAEzB,GADA41E,EAAMA,EAAM,EAAIA,EAAMhrB,EAAQ,EAC1BogF,EAEF,IADA,IAAI9xG,EAAI0xB,EACD1xB,EAAI08C,GACTo1D,EAAO9xG,GAAKh1B,EACZg1B,IAGJ,GAAIzO,EACF,IAAK,IAAIs5D,EAAKn5B,EAAOm5B,EAAKnO,EAAKmO,IAC7Bt5D,EAAIrU,IAAI2tE,IAMhB,SAASo5M,GAAY/wQ,GACnB,OAAO,SAAUlqB,GAEf,OADAA,EAAEqG,OACK6jB,GAGX,SAASgxQ,GAAoBl7R,GAE3B,OADAA,EAAE4C,IAAI,yBAA2B+6C,GAAa39C,EAAE6hF,IAAM,KAC/C,KAGT,IAAI+2M,GAAe,IAAI/yD,IACvBk1D,GAAW,KAAMnC,GAActhO,IAAmB,GAElD,IAAIuhO,GAAU,IAAI5jH,WAAW,OAC7B8lH,GAAWlC,GAAS,KAAMvhO,GAAe,GACzCyjO,GAAWlC,GAAS,KAAMvhO,GAAa,GAIvC,IAFA,IAAIqhO,GAAe,IAAI70R,MAAM,OACzBq3R,GAAK,EACFA,GAAK,OACVxC,GAAawC,IAAMD,GACnBC,KAGFJ,GAAWpC,GAAc,KAAMrhO,IAAY,SAAUt3D,GAEnD,OADAA,EAAEqG,OACK,QAET00R,GAAWpC,GAAc,KAAMrhO,IAAe,SAAUt3D,GACtD,OAAOA,EAAE04R,oBAEXqC,GAAWpC,GAAc,KAAMrhO,IAAa,SAAUt3D,GACpD,OAAOA,EAAE+4R,YAAW,MAGtBJ,GAAa,IAAQA,GAAa,IAAQ,SAAU34R,GAClD,OAAOA,EAAEi5R,cAEXN,GAAa,IAAQ,SAAU34R,GAC7B,OAAOA,EAAEq5R,gBAGXV,GAAa,IAAQ,SAAU34R,GAC7B,OAAiB,KAAbA,EAAEqG,OACG+vR,GAEQ,KAAbp2R,EAAEqG,OACGszR,IAET35R,EAAEqG,OACKwzR,KAGTlB,GAAa,IAAQ,SAAU34R,GAC7B,OAAiB,KAAbA,EAAEqG,OACGivR,GAEQ,KAAbt1R,EAAEqG,OACGqzR,IAET15R,EAAEqG,OACKuzR,KAGTjB,GAAa,IAAQ,SAAU34R,GAC7B,OAAiB,KAAbA,EAAEqG,OACG0uR,IAET/0R,EAAEqG,OACKmzR,KAGTb,GAAa,KAAQ,SAAU34R,GAC7B,OAAiB,MAAbA,EAAEqG,OACG6uR,IAETl1R,EAAEqG,OACKkzR,KAGTZ,GAAa,IAAQ,SAAU34R,GAC7B,OAAIA,EAAEqG,QAAU,IAAQrG,EAAE6hF,IAAM,GACvB7hF,EAAE+4R,YAAW,GAEfvC,IAGTmC,GAAa,IAAQ,SAAU34R,GAC7B,OAAiB,KAAbA,EAAEqG,OACGyzR,IAET95R,EAAEqG,OACK2zR,KAGTrB,GAAa,IAAQ,SAAU34R,GAC7B,OAAiB,KAAbA,EAAEqG,OACG0zR,IAET/5R,EAAEqG,OACK4zR,KAGTtB,GAAa,IAAQsC,GAAYZ,IACjC1B,GAAa,IAAQsC,GAAYjE,IACjC2B,GAAa,IAAQsC,GAAYhE,IACjC0B,GAAa,IAAQsC,GAAYb,IACjCzB,GAAa,IAAQsC,GAAY/E,IACjCyC,GAAa,IAAQsC,GAAY3D,IACjCqB,GAAa,IAAQsC,GAAY9E,IACjCwC,GAAa,IAAQsC,GAAYX,IACjC3B,GAAa,IAAQsC,GAAY9F,IACjCwD,GAAa,IAAQsC,GAAYzF,IACjCmD,GAAa,IAAQsC,GAAY9D,IACjCwB,GAAa,IAAQsC,GAAY5D,IACjCsB,GAAa,IAAQsC,GAAYxB,IACjCd,GAAa,KAAQsC,GAAY1D,IACjCoB,GAAa,KAAQsC,GAAYzD,IAEjC,IAAI4D,GAAWtrP,IAAI5xC,UAEnB,SAASm9R,GAAgB3vJ,EAAW3jI,GAClC,OAAOuzR,GAAkB3N,IAAIjiJ,EAAW3jI,GAG1C,IAAIuzR,GAAoB,SAAUC,GAGhC,SAASD,EAAkB5vJ,EAAW3jI,GAGpC,OAAOgT,EAA2B3X,KAAMm4R,EAAuBn9R,KAAKgF,KAAMsoI,EAAW3jI,IAoEvF,OAzEAsT,EAAUigR,EAAmBC,GAQ7BD,EAAkB3N,IAAM,SAAcjiJ,EAAW3jI,GAO/C,MANM,qBAAsBA,GAC1BunC,QAAQ5tC,eAAeqG,EAAK,mBAAoB,CAC9C/F,MAAOs5R,EAAkBj5R,OAAOqpI,EAAW3jI,GAC3CpG,YAAY,EAAO8C,cAAc,IAG9BsD,EAAIyzR,kBAGbF,EAAkBj5R,OAAS,SAAgBqpI,EAAW3jI,GACpD,IAAI0pD,EAAW,IAAI6pO,EAAkB5vJ,EAAW3jI,GAE5C06B,EAAQ24P,GAiDZ,OAhDI34P,EAAMla,MAAQxgB,EAAIwgB,KAAOka,EAAMviB,SAAWnY,EAAImY,QAAUuiB,EAAMgQ,QAAU1qC,EAAI0qC,QAC9EhQ,EAAQ,CACNla,IAAKxgB,EAAIwgB,IACTrI,OAAQnY,EAAImY,OACZuyB,MAAO1qC,EAAI0qC,QAIf1qC,EAAIwgB,IAAM,WACR,IAAIkzQ,EAAW1zR,EAAIi1F,IAAI93F,UAAU,IAC7BxE,EAAO+6R,EAAW,SAAW,MAC7BtnN,EAAWpsE,EAAInG,IAAIsD,UAAU,IAC7B4oR,EAAmBrrP,EAAMla,IAAIlhB,MAAMU,EAAK7C,WAS5C,OARKu2R,GAAYtnN,IAAapsE,EAAInG,IAAIsD,UAAU,KAC9CusD,EAASy7N,gBAAgB,CACvBxsR,KAAMA,EACN+B,OAAQsF,EACRzF,IAAK4C,UAAU,GACfivE,SAAUA,IAGP25M,GAGT/lR,EAAImY,OAAS,WACX,IAAIu7Q,EAAW1zR,EAAIi1F,IAAI93F,UAAU,IAC7BivE,EAAWpsE,EAAInG,IAAIsD,UAAU,IAC7B4oR,EAAmBrrP,EAAMviB,OAAO7Y,MAAMU,EAAK7C,WAS/C,OARIu2R,GACFhqO,EAASy7N,gBAAgB,CACvBxsR,KAAM,SACN+B,OAAQsF,EACRzF,IAAK4C,UAAU,GACfivE,SAAUA,IAGP25M,GAGT/lR,EAAI0qC,MAAQ,WACV,IAAIq7O,EAAmBrrP,EAAMgQ,MAAMprC,MAAMU,EAAK7C,WAK9C,OAJAusD,EAASy7N,gBAAgB,CACvBxsR,KAAM,QACN+B,OAAQsF,IAEH+lR,GAGFr8N,GAGF6pO,EA1Ee,CA2EtBvO,IAEE2O,GAAW,YAAqB,iBAEpC,SAASC,GAAwBv7R,GAC/B,OAAOA,EAAM2E,MAAQ3E,EAAM2E,KAAK,IAAM3E,EAAMw7R,UAAYx7R,EAAMw7R,SAAS,IAAMx7R,EAAMQ,OAGrF,SAASg2C,KACPxzC,KAAKy4R,0BACLz4R,KAAK04R,oBAAqB,EAG5B,SAASC,GAAoB37R,GAC3BA,EAAM07R,oBAAqB,EAK3B,IAJA,IAAIl7R,EAAS+6R,GAAwBv7R,GAEjC47R,EAAmB,GAEhBp7R,GAAQ,CACb,GAAIA,EAAOq7R,kBAAmB,CAC5B,IAAI5xQ,EAAWzpB,EAAOq7R,kBAAkB77R,EAAMM,MAC1C2pB,IACEjqB,EAAMw2C,kBAAoBA,KAC5Bx2C,EAAMy7R,wBAA0Bz7R,EAAMw2C,gBACtCx2C,EAAMw2C,gBAAkBA,IAE1BolP,EAAiB19R,KAAK+rB,IAG1BzpB,EAASA,EAAO8jE,WAElB,IAAK,IAAI5mE,EAAIk+R,EAAiBh+R,OAAS,EAAGF,GAAK,IAAMsC,EAAM07R,mBAAoBh+R,IAAK,CAClF,IAAIo+R,EAAkBF,EAAiBl+R,GACnC,gBAAiBo+R,EACnBA,EAAgBC,YAAY/7R,GAE5B87R,EAAgB97R,IAKtB,IAAIg8R,GAAuB,WACzB,SAASA,EAAqB/+Q,GAG5Bja,KAAKia,UAAYA,EACjBja,KAAKg0D,MAAQ,EAmBf,OAhBAglO,EAAqBl+R,UAAUm+R,UAAY,WACzCj5R,KAAKg0D,QAEc,IAAfh0D,KAAKg0D,OACP,MAAIk8C,iBAAiBlwG,KAAKia,UAAW0+Q,IAAqB,IAI9DK,EAAqBl+R,UAAUo+R,UAAY,WACtB,IAAfl5R,KAAKg0D,MACPskO,GAASp0Q,KAAK,uDACY,KAAflkB,KAAKg0D,OAChB,MAAI0uD,oBAAoB1iH,KAAKia,UAAWk/Q,IAAsB,IAI3DH,EAxBkB,GA2B3B,SAASG,GAAqBn8R,GAC5BA,EAAM07R,oBAAqB,EAG3B,IAFA,IAAIl7R,EAAS+6R,GAAwBv7R,GAE9BQ,IAAWR,EAAM07R,oBAAoB,CAC1C,GAAIl7R,EAAO47R,mBAAoB,CAC7B,IAAInyQ,EAAWzpB,EAAO47R,mBAAmBp8R,EAAMM,MAC3C2pB,IACEjqB,EAAMw2C,kBAAoBA,KAC5Bx2C,EAAMy7R,wBAA0Bz7R,EAAMw2C,gBACtCx2C,EAAMw2C,gBAAkBA,IAEtB,gBAAiBvsB,EACnBA,EAAS8xQ,YAAY/7R,GAErBiqB,EAASjqB,IAKfQ,EAASA,EAAO8jE,YAIpB,IAAI+3N,GAAuB,WACzB,SAASA,EAAqBp/Q,GAG5Bja,KAAKia,UAAYA,EACjBja,KAAKg0D,MAAQ,EAmBf,OAhBAqlO,EAAqBv+R,UAAUm+R,UAAY,WACzCj5R,KAAKg0D,QAEc,IAAfh0D,KAAKg0D,OACP,MAAIk8C,iBAAiBlwG,KAAKia,UAAWk/Q,IAAsB,IAI/DE,EAAqBv+R,UAAUo+R,UAAY,WACtB,IAAfl5R,KAAKg0D,MACPskO,GAASp0Q,KAAK,uDACY,KAAflkB,KAAKg0D,OAChB,MAAI0uD,oBAAoB1iH,KAAKia,UAAWk/Q,IAAsB,IAI3DE,EAxBkB,GA2BvBC,GAAyB,WAC3B,SAASA,EAAuBl8B,EAAO13H,EAAQ6zJ,GAG7Cv5R,KAAKo9P,MAAQA,EACbp9P,KAAK0lI,OAASA,EACd1lI,KAAKu5R,YAAcA,EAYrB,OATAD,EAAuBx+R,UAAU6wG,QAAU,WACrC3rG,KAAK0lI,OAAO1lI,KAAKu5R,cACnBv5R,KAAKo9P,MAAM87B,YACXl5R,KAAK0lI,OAAO1lI,KAAKu5R,aAAe,MAEhCjB,GAASp0Q,KAAK,yDAIXo1Q,EAlBoB,GAqBzBE,GAAe,WACjB,SAASA,EAAah8R,EAAQ+7R,EAAatyQ,GAGzCjnB,KAAKxC,OAASA,EACdwC,KAAKu5R,YAAcA,EACnBv5R,KAAKinB,SAAWA,EAOlB,OAJAuyQ,EAAa1+R,UAAU6wG,QAAU,WAC/B3rG,KAAKxC,OAAOklH,oBAAoB1iH,KAAKu5R,YAAav5R,KAAKinB,WAGlDuyQ,EAbU,GAgBfC,GAAuB,WACzB,SAASA,IAGPz5R,KAAK05R,kBAAoB,GACzB15R,KAAK25R,iBAAmB,GA4D1B,OAzDAF,EAAqB3+R,UAAUia,UAAY,SAAmBvX,EAAQ+7R,EAAatyQ,EAAUjiB,EAAU40R,GACrG,IAAIF,OAAoB,EACpBC,OAAmB,EACnBE,OAAe,EAEnB,GAAI70R,IAAa80R,GAAmBC,SAAU,CAC5CL,EAAoB15R,KAAK05R,kBACzBG,EAAeH,EAAkBH,KAAiBG,EAAkBH,GAAe,IAAIF,GAAqBE,IAC5G,IAAIH,EAAqB57R,EAAO47R,qBAAuB57R,EAAO47R,mBAAqB,IAQnF,OAPKA,EAAmBG,GAGtBjB,GAASp0Q,KAAK,kDAAmD,CAAElnB,MAAOu8R,EAAatyQ,SAAUA,EAAU+yQ,iBAAkBZ,EAAmBG,KAFhJM,EAAaZ,YAIfG,EAAmBG,GAAetyQ,GAEf,IAAf2yQ,EACK,IAAIN,GAAuBO,EAAcT,EAAoBG,GAG/D,WACLM,EAAaX,YACbE,EAAmBG,GAAe,MAGtC,GAAIv0R,IAAa80R,GAAmBG,UAAW,CAC7CN,EAAmB35R,KAAK25R,iBACxBE,EAAeF,EAAiBJ,KAAiBI,EAAiBJ,GAAe,IAAIP,GAAqBO,IAC1G,IAAIV,EAAoBr7R,EAAOq7R,oBAAsBr7R,EAAOq7R,kBAAoB,IAQhF,OAPKA,EAAkBU,GAGrBjB,GAASx7R,MAAM,oCAAqC,CAAEE,MAAOu8R,EAAatyQ,SAAUA,IAFpF4yQ,EAAaZ,YAIfJ,EAAkBU,GAAetyQ,GAEd,IAAf2yQ,EACK,IAAIN,GAAuBO,EAAchB,EAAmBU,GAG9D,WACLM,EAAaX,YACbL,EAAkBU,GAAe,MAMrC,OAFA/7R,EAAO0yG,iBAAiBqpL,EAAatyQ,IAElB,IAAf2yQ,EACK,IAAIJ,GAAah8R,EAAQ+7R,EAAatyQ,GAGxC,WACLzpB,EAAOklH,oBAAoB62K,EAAatyQ,KAIrCwyQ,EAjEkB,GAoEhBK,GAAqB,CAC9BtuI,KAAM,EACNyuI,UAAW,EACXF,SAAU,GAGDG,GAAe,WACxB,SAASA,IAGPl6R,KAAKm6R,qBAAuB,GAC5Bn6R,KAAKo6R,oBAAsB,GAE3Bp6R,KAAKq6R,sBAAsB,CACzB9/H,QAAS,QACT1uH,WAAY,CACVjtC,MAAO,CAAC,SAAU,SAClBm8G,QAAS,CAAC,SAAU,SACpBwzH,MAAO,CAAC,SAAU,YAItBvuO,KAAKq6R,sBAAsB,CACzB9/H,QAAS,WACT1uH,WAAY,CACVjtC,MAAO,CAAC,SAAU,YAItBoB,KAAKq6R,sBAAsB,CACzB9/H,QAAS,SACT1uH,WAAY,CACVjtC,MAAO,CAAC,aAIZoB,KAAKq6R,sBAAsB,CACzB9/H,QAAS,mBACT1uH,WAAY,CACVjtC,MAAO,CAAC,SAAU,QAAS,OAAQ,QAAS,YAIhDoB,KAAKq6R,sBAAsB,CACzB9/H,QAAS,qBACT1uH,WAAY,CACV4mF,UAAW,CAAC,UACZC,WAAY,CAAC,aAIjB1yH,KAAKs6R,qBAAuB,IAAIb,GAgDlC,OA7CAS,EAAap/R,UAAUu/R,sBAAwB,SAA+B73R,GAC5E,IAAI+3J,EAAU/3J,EAAO+3J,QAAQh/I,cACzBswB,EAAarpC,EAAOqpC,WACpB0+C,OAAe,EAEfm7C,EAAS1lI,KAAKm6R,qBAAqB5/H,GAAW,GAElD,IAAKhwE,KAAgB1+C,EACfA,EAAW9wC,eAAewvF,KAC5Bm7C,EAAOn7C,GAAgB1+C,EAAW0+C,KAKxC2vM,EAAap/R,UAAUy/R,sBAAwB,SAA+BtgR,EAAWjV,GACvFhF,KAAKo6R,oBAAoBngR,GAAajV,GAGxCk1R,EAAap/R,UAAU0/R,kBAAoB,SAA2Bh9R,EAAQ+sF,GAC5E,IAAIgwE,OAAU,EACV70B,EAAS1lI,KAAKm6R,qBAElB,GAAI38R,EAAO+8J,QAAS,CAGlB,GAAI70B,EAFJ60B,EAAU/8J,EAAO+8J,QAAQh/I,gBAEFmqH,EAAO60B,GAAShwE,GACrC,OAAO,IAAIkwM,GAAgB/0J,EAAO60B,GAAShwE,IAG7C,GAAqB,gBAAjBA,GAAmD,cAAjBA,EACpC,OAAO,IAAIkwM,GAAgB/0J,EAAO,oBAAoB9mI,OAGxD,GAAqB,cAAjB2rF,GAAiD,eAAjBA,EAClC,OAAO,IAAIkwM,GAAgB/0J,EAAO,sBAAsBn7C,IAI5D,OAAO,MAGT2vM,EAAap/R,UAAUo1G,iBAAmB,SAA0B1yG,EAAQ+7R,EAAamB,EAAoBl5J,EAAUo4J,GACrH,OAAQ55R,KAAKo6R,oBAAoBb,IAAgBv5R,KAAKs6R,sBAAsBvlR,UAAUvX,EAAQ+7R,EAAamB,EAAoBl5J,EAAUo4J,IAGpIM,EA7FiB,GAgGfO,GAAkB,WAC3B,SAASA,EAAgBljR,GAGvBvX,KAAKuX,OAASA,EACdvX,KAAK+mE,QAAU,KACf/mE,KAAK+Q,QAAU,KA0BjB,OAvBA0pR,EAAgB3/R,UAAUia,UAAY,SAAmBgyD,EAAS2zN,GAChE16R,KAAK+mE,QAAUA,EACf/mE,KAAK+Q,QAAU2pR,EAGf,IADA,IAAInjR,EAASvX,KAAKuX,OACT7c,EAAI,EAAGiI,EAAK4U,EAAO3c,OAAQ+H,EAAKjI,IAAKA,EAC5CqsE,EAAQmpC,iBAAiB34F,EAAO7c,GAAIggS,IAIxCD,EAAgB3/R,UAAU6wG,QAAU,WAClC,GAAqB,OAAjB3rG,KAAK+mE,QAAT,CAMA,IAHA,IAAIA,EAAU/mE,KAAK+mE,QACf2zN,EAAqB16R,KAAK+Q,QAC1BwG,EAASvX,KAAKuX,OACT7c,EAAI,EAAGiI,EAAK4U,EAAO3c,OAAQ+H,EAAKjI,IAAKA,EAC5CqsE,EAAQ27C,oBAAoBnrG,EAAO7c,GAAIggS,GAEzC16R,KAAK+mE,QAAU/mE,KAAK+Q,QAAU,OAGzB0pR,EAhCoB,GAmClBE,GAAe,WACxB,SAASA,IAGP36R,KAAK46R,QAAU,GACf56R,KAAK66R,WAAa,IA2CpB,OAxCAF,EAAa7/R,UAAUggS,YAAc,SAAqBx7R,GACxD,IAAIs7R,EAAU56R,KAAK46R,QAEnBA,EAAQ1/R,KAAKoE,GAEU,IAAnBs7R,EAAQhgS,QACVoF,KAAK+6R,sBAITJ,EAAa7/R,UAAUkgS,eAAiB,SAAwB17R,GAC9D,IAAIs7R,EAAU56R,KAAK46R,QACnBA,EAAQzjR,OAAOyjR,EAAQvpR,QAAQ/R,GAAW,IAG5Cq7R,EAAa7/R,UAAUigS,mBAAqB,WAC1C,IAAIE,EAAUj7R,KAEdnC,YAAW,WACT,OAAOo9R,EAAQt7L,UACd3/F,KAAK66R,aAGVF,EAAa7/R,UAAU6kG,MAAQ,WAI7B,IAHA,IAAIi7L,EAAU56R,KAAK46R,QACflgS,EAAIkgS,EAAQhgS,OAETF,KAAK,CACV,IAAIkI,EAAUg4R,EAAQlgS,GAElBkI,EAAQs4R,WACVt4R,EAAQ5H,OAIR4/R,EAAQhgS,QACVoF,KAAK+6R,sBAIFJ,EAhDiB,GAmDfQ,GAA8BxU,IAAwBzjJ,CAAMf,EAAU,WAC/E,SAASg5J,EAAmBC,EAAcr6R,EAAKwpF,GAG7CvqF,KAAKo7R,aAAeA,EACpBp7R,KAAKe,IAAMA,EACXf,KAAKuqF,aAAeA,EAsCtB,OAnCA4wM,EAAmBrgS,UAAU+rR,SAAW,WACtC,OAAO7mR,KAAKe,IAAIf,KAAKuqF,eAGvB4wM,EAAmBrgS,UAAUgsR,SAAW,SAAkB/3N,GACxD/uD,KAAKe,IAAIf,KAAKuqF,cAAgBx7B,GAGhCosO,EAAmBrgS,UAAUE,KAAO,WAClC,IAAI+1E,EAAW/wE,KAAK+wE,SAChBhiB,EAAW/uD,KAAK6mR,WAEpB7mR,KAAKgmR,gBAAgBj3N,EAAUgiB,GAE/B/wE,KAAK+wE,SAAWhiB,GAGlBosO,EAAmBrgS,UAAUogS,QAAU,WACrC,OAAOl7R,KAAK+wE,WAAa/wE,KAAKe,IAAIf,KAAKuqF,eAGzC4wM,EAAmBrgS,UAAUia,UAAY,SAAmB5B,EAAS8xQ,GAC9DjlR,KAAK0mR,mBACR1mR,KAAK+wE,SAAW/wE,KAAK6mR,WACrB7mR,KAAKo7R,aAAaN,YAAY96R,OAEhCA,KAAKglR,cAAc7xQ,EAAS8xQ,IAG9BkW,EAAmBrgS,UAAUga,YAAc,SAAqB3B,EAAS8xQ,GACnEjlR,KAAK2lR,iBAAiBxyQ,EAAS8xQ,KAAcjlR,KAAK0mR,kBACpD1mR,KAAKo7R,aAAaJ,eAAeh7R,OAI9Bm7R,EA5CwE,KA6CzEh5J,EAEJliI,GAAS,YAAqB,wBAEvBo7R,GAAmB,CAC5BxU,SAAU,SAAkB9lR,EAAKwpF,GAC/B,OAAOxpF,EAAIwpF,IAEbu8L,SAAU,SAAkBloR,EAAOmC,EAAKwpF,GACtCxpF,EAAIwpF,GAAgB3rF,IAIb08R,GAAoB,WAC7B,SAASA,EAAkBC,EAAWhxM,GAGpCvqF,KAAKw7R,YAAa,EAElBx7R,KAAKu7R,UAAYA,EACjBv7R,KAAKuqF,aAAeA,EAgBtB,OAbA+wM,EAAkBxgS,UAAU+rR,SAAW,WACrC,OAAO7mR,KAAKu7R,UAAUv7R,KAAKuqF,eAG7B+wM,EAAkBxgS,UAAUgsR,SAAW,WACrC,IAAIxpR,EAAOuD,EAAQb,KAAKu7R,WACxB,MAAM,IAAIx+R,MAAM,OAASiD,KAAKuqF,aAAe,kBAAoBjtF,EAAO,KAAO0C,KAAKu7R,UAAY,0BAGlGD,EAAkBxgS,UAAUia,UAAY,aAExCumR,EAAkBxgS,UAAUga,YAAc,aAEnCwmR,EAvBsB,GA0BpBG,GAA0B9U,IAAwBvjJ,CAAMf,EAAU,WAC3E,SAASo5J,EAAenzJ,EAAWvnI,EAAKwpF,GAGtCvqF,KAAKsoI,UAAYA,EACjBtoI,KAAKe,IAAMA,EACXf,KAAKuqF,aAAeA,EACpBvqF,KAAKkkR,QAAS,EACdlkR,KAAK07R,WAAY,EAiEnB,OA9DAD,EAAe3gS,UAAU+rR,SAAW,WAClC,OAAO7mR,KAAKe,IAAIf,KAAKuqF,eAGvBkxM,EAAe3gS,UAAUgsR,SAAW,SAAkB/3N,GACpD/uD,KAAKe,IAAIf,KAAKuqF,cAAgBx7B,GAGhC0sO,EAAe3gS,UAAU6gS,YAAc,WACrC,OAAO37R,KAAKklH,cAGdu2K,EAAe3gS,UAAU8gS,YAAc,SAAqB7sO,GAC1D,IAAIgiB,EAAW/wE,KAAKklH,aAEhBn0C,IAAahiB,IACV/uD,KAAKkkR,SACRlkR,KAAK+wE,SAAWA,EAChB/wE,KAAKkkR,QAAS,EACdlkR,KAAKsoI,UAAUkB,eAAexpI,OAGhCA,KAAKklH,aAAen2D,IAIxB0sO,EAAe3gS,UAAUE,KAAO,WAC9B,IAAI+1E,EAAW/wE,KAAK+wE,SAChBhiB,EAAW/uD,KAAKklH,aAEpBllH,KAAKkkR,QAAS,EAEdlkR,KAAKgmR,gBAAgBj3N,EAAUgiB,IAGjC0qN,EAAe3gS,UAAUia,UAAY,SAAmB5B,EAAS8xQ,GAC1DjlR,KAAK07R,WACR17R,KAAK67R,kBAEP77R,KAAKglR,cAAc7xQ,EAAS8xQ,IAG9BwW,EAAe3gS,UAAUga,YAAc,SAAqB3B,EAAS8xQ,GACnEjlR,KAAK2lR,iBAAiBxyQ,EAAS8xQ,IAGjCwW,EAAe3gS,UAAU+gS,gBAAkB,WACzC77R,KAAK07R,WAAY,EACjB17R,KAAKklH,aAAellH,KAAKe,IAAIf,KAAKuqF,cAClCvqF,KAAK8mR,SAAW9mR,KAAK47R,YACrB57R,KAAK6mR,SAAW7mR,KAAK27R,YAEhBzvP,QAAQ5tC,eAAe0B,KAAKe,IAAKf,KAAKuqF,aAAc,CACvDlpF,cAAc,EACd9C,aAAYyB,KAAKuqF,gBAAgBvqF,KAAKe,MAAMf,KAAKe,IAAI+0O,qBAAqB91O,KAAKuqF,cAC/E/rF,IAAKwB,KAAK6mR,SAAS1nR,KAAKa,MACxBmlB,IAAKnlB,KAAK8mR,SAAS3nR,KAAKa,SAExBC,GAAOikB,KAAK,4BAA+BlkB,KAAKuqF,aAAe,cAAgBvqF,KAAKe,MAIjF06R,EAzEoE,KA0ErEp5J,EAEGy5J,GAAyB,WAClC,SAASA,EAAuB/0N,EAASwjB,EAAcwxM,GAGrD/7R,KAAK+mE,QAAUA,EACf/mE,KAAKuqF,aAAeA,EACpBvqF,KAAK+7R,cAAgBA,EAevB,OAZAD,EAAuBhhS,UAAU+rR,SAAW,WAC1C,OAAO7mR,KAAK+mE,QAAQi1N,eAAe,+BAAgCh8R,KAAK+7R,gBAG1ED,EAAuBhhS,UAAUgsR,SAAW,SAAkB/3N,GAC5D,OAAO/uD,KAAK+mE,QAAQk1N,eAAe,+BAAgCj8R,KAAK+7R,cAAehtO,IAGzF+sO,EAAuBhhS,UAAUia,UAAY,WAC3C,MAAM,IAAIhY,MAAM,qBAAuBiD,KAAK+mE,QAAQivC,SAAW,iBAAmBh2G,KAAKuqF,aAAe,iCAGjGuxM,EArB2B,GAwBzBI,GAAwB,CACjCrV,SAAU,SAAkB9lR,EAAKwpF,GAC/B,OAAOxpF,EAAIqmE,aAAamjB,IAE1Bu8L,SAAU,SAAkBloR,EAAOmC,EAAKwpF,GAClC3rF,QACFmC,EAAIs1G,gBAAgB9rB,GAEpBxpF,EAAIrE,aAAa6tF,EAAc3rF,KAK1Bu9R,GAAwB,WACjC,SAASA,EAAsBp1N,EAASwjB,GAGtCvqF,KAAK+mE,QAAUA,EACf/mE,KAAKuqF,aAAeA,EAkBtB,OAfA4xM,EAAsBrhS,UAAU+rR,SAAW,WACzC,OAAO7mR,KAAK+mE,QAAQK,aAAapnE,KAAKuqF,eAGxC4xM,EAAsBrhS,UAAUgsR,SAAW,SAAkB/3N,GAC3D,OAAIA,QACK/uD,KAAK+mE,QAAQsvC,gBAAgBr2G,KAAKuqF,cAEpCvqF,KAAK+mE,QAAQrqE,aAAasD,KAAKuqF,aAAcx7B,IAGtDotO,EAAsBrhS,UAAUia,UAAY,WAC1C,MAAM,IAAIhY,MAAM,qBAAuBiD,KAAK+mE,QAAQivC,SAAW,iBAAmBh2G,KAAKuqF,aAAe,iCAGjG4xM,EAvB0B,GA0BxBC,GAAgB,WACzB,SAASA,EAAcr1N,EAASwjB,GAG9BvqF,KAAK+mE,QAAUA,EACf/mE,KAAKuqF,aAAeA,EAEpBvqF,KAAKqgE,OAAS,KACdrgE,KAAKonC,QAAU,EAuEjB,OApEAg1P,EAActhS,UAAU+rR,SAAW,WACjC,OAAO7mR,KAAK+mE,QAAQjG,MAAMiC,SAG5Bq5N,EAActhS,UAAUuhS,aAAe,SAAsBv7N,EAAOliE,GAClE,IAAIqnB,EAAW,GAEXrnB,SAAkE,mBAAlBA,EAAMyS,UAA2D,IAAjCzS,EAAMyS,QAAQ,gBAChG4U,EAAW,YACXrnB,EAAQA,EAAMmI,QAAQ,aAAc,KAEtC/G,KAAK+mE,QAAQjG,MAAM8wD,YAAY9wD,EAAOliE,EAAOqnB,IAG/Cm2Q,EAActhS,UAAUgsR,SAAW,SAAkB/3N,GACnD,IAAIsR,EAASrgE,KAAKqgE,QAAU,GACxBS,OAAQ,EACR15B,EAAUpnC,KAAKonC,QAEnB,GAAI2nB,QACF,GAAIA,aAAoBl0D,OAAQ,CAC9B,IAAI+D,OAAQ,EACZ,IAAKkiE,KAAS/R,EACRA,EAASh0D,eAAe+lE,KAC1BliE,EAAQmwD,EAAS+R,GAIjBT,EAHAS,EAAQA,EAAM/5D,QAAQ,YAAY,SAAU9I,GAC1C,MAAO,IAAMA,EAAEsd,kBAED6rB,EAChBpnC,KAAKq8R,aAAav7N,EAAOliE,SAGxB,GAAImwD,EAASn0D,OAGlB,IAFA,IAAI0hS,EAAK,qMACLtkF,OAAO,EAC2B,QAA9BA,EAAOskF,EAAG5lQ,KAAKq4B,MACrB+R,EAAQk3I,EAAK,MAKb33I,EAAOS,GAAS15B,EAChBpnC,KAAKq8R,aAAav7N,EAAOk3I,EAAK,KAQpC,GAHAh4M,KAAKqgE,OAASA,EACdrgE,KAAKonC,SAAW,EAEA,IAAZA,EAKJ,IAAK05B,KADL15B,GAAW,EACGi5B,EACPA,EAAOtlE,eAAe+lE,IAAUT,EAAOS,KAAW15B,GAIvDpnC,KAAK+mE,QAAQjG,MAAMk6N,eAAel6N,IAItCs7N,EAActhS,UAAUia,UAAY,WAClC,MAAM,IAAIhY,MAAM,qBAAuBiD,KAAK+mE,QAAQivC,SAAW,iBAAmBh2G,KAAKuqF,aAAe,iCAGjG6xM,EA/EkB,GAkFhBG,GAAkC5V,IAAwBpjJ,CAAM6+I,EAAU,WACnF,SAASma,EAAuBx1N,EAASwjB,EAAcx5E,GAGrD/Q,KAAK+mE,QAAUA,EACf/mE,KAAKuqF,aAAeA,EACpBvqF,KAAK+Q,QAAUA,EACM,UAAjBw5E,IACFvqF,KAAK8mR,SAAW,cA4CpB,OAxCAyV,EAAuBzhS,UAAU+rR,SAAW,WAC1C,OAAO7mR,KAAK+mE,QAAQ/mE,KAAKuqF,eAG3BgyM,EAAuBzhS,UAAUgsR,SAAW,SAAkB/3N,GAC5DA,EAAWA,QAA8C,GAAKA,EAC1D/uD,KAAK+mE,QAAQ/mE,KAAKuqF,gBAAkBx7B,IACtC/uD,KAAK+mE,QAAQ/mE,KAAKuqF,cAAgBx7B,EAClC/uD,KAAKiwC,WAITssP,EAAuBzhS,UAAUm1C,OAAS,WACxC,IAAI8gC,EAAW/wE,KAAK+wE,SAChBhiB,EAAW/uD,KAAK6mR,WAEpB7mR,KAAKgmR,gBAAgBj3N,EAAUgiB,GAE/B/wE,KAAK+wE,SAAWhiB,GAGlBwtO,EAAuBzhS,UAAUi+R,YAAc,WAC7C/4R,KAAKiwC,UAGPssP,EAAuBzhS,UAAUia,UAAY,SAAmB5B,EAAS8xQ,GAClEjlR,KAAK0mR,mBACR1mR,KAAK+wE,SAAW/wE,KAAK6mR,WACrB7mR,KAAK+Q,QAAQgE,UAAU/U,KAAK+mE,QAAS/mE,OAGvCA,KAAKglR,cAAc7xQ,EAAS8xQ,IAG9BsX,EAAuBzhS,UAAUga,YAAc,SAAqB3B,EAAS8xQ,GACvEjlR,KAAK2lR,iBAAiBxyQ,EAAS8xQ,KAAcjlR,KAAK0mR,kBACpD1mR,KAAK+Q,QAAQ46F,WAIV4wL,EApD4E,KAqD7Ena,EAKGoa,GAA2B7V,IAAwB8V,CAAMpa,EAAU,WAC5E,SAASma,EAAgBz1N,EAASh2D,EAASi8D,GAGzChtE,KAAK+mE,QAAUA,EACf/mE,KAAK+Q,QAAUA,EACf/Q,KAAKgtE,gBAAkBA,EAmIzB,OAhIAwvN,EAAgB1hS,UAAU+rR,SAAW,WACnC,OAAO7mR,KAAKpB,OAGd49R,EAAgB1hS,UAAUgsR,SAAW,SAAkB/3N,GACjD/uD,KAAK08R,aAAe18R,KAAKpB,QAAUmwD,IAInC/uD,KAAKymP,gBACPzmP,KAAKymP,cAAc3xO,YAtBC,wBAsBgC9U,MACpDA,KAAKymP,cAAgB,MAGG,aAAtBzmP,KAAK+mE,QAAQzpE,MAAuBoD,MAAMC,QAAQouD,KACpD/uD,KAAKymP,cAAgBzmP,KAAKgtE,gBAAgBE,iBAAiBne,GAC3D/uD,KAAKymP,cAAc1xO,UA5BC,wBA4B8B/U,OAGpDA,KAAK+wE,SAAW/wE,KAAKpB,MACrBoB,KAAKpB,MAAQmwD,EACb/uD,KAAK28R,qBACL38R,KAAKiwC,SAEAjwC,KAAK08R,cACR18R,KAAK08R,aAAc,EACnB18R,KAAKgtE,gBAAgBs7D,UAAUkB,eAAexpI,SAIlDw8R,EAAgB1hS,UAAUE,KAAO,SAAcmY,EAAS+7D,GACtDlvE,KAAK28R,qBAEA38R,KAAK48R,gBACR58R,KAAK48R,cAAgB58R,KAAK+mE,QAAQ81N,cAAcr/Q,OAASxd,KAAK+mE,QAAQ81N,cAAcj+R,MAChFoB,KAAK48R,eACP58R,KAAK48R,cAAc7nR,UA/CD,wBA+CgC/U,QAKxDw8R,EAAgB1hS,UAAU6hS,mBAAqB,WAC7C,IAAI/9R,EAAQoB,KAAKpB,MACbmoE,EAAU/mE,KAAK+mE,QACf+1N,EAAe/1N,EAAQhsE,eAAe,SAAWgsE,EAAQvpD,MAAQupD,EAAQnoE,MACzEm+R,EAA2B,UAAjBh2N,EAAQzpE,KAClB4+B,EAAU6qC,EAAQ7qC,SAAW,SAAUxqB,EAAGC,GAC5C,OAAOD,IAAMC,GAGfo1D,EAAQg0C,QAAUgiL,KAAa7gQ,EAAQt9B,EAAOk+R,KAAkBC,IAAqB,IAAVn+R,IAAmBm+R,GAAWr8R,MAAMC,QAAQ/B,KAE/G,IAFyHA,EAAMs0K,WAAU,SAAU1yK,GACzJ,QAAS07B,EAAQ17B,EAAMs8R,OAI3BN,EAAgB1hS,UAAUkiS,iBAAmB,WAC3C,IAAIp+R,EAAQoB,KAAKpB,MACbmoE,EAAU/mE,KAAK+mE,QACf+1N,EAAe/1N,EAAQhsE,eAAe,SAAWgsE,EAAQvpD,MAAQupD,EAAQnoE,MACzE+K,OAAQ,EACRuyB,EAAU6qC,EAAQ7qC,SAAW,SAAUxqB,EAAGC,GAC5C,OAAOD,IAAMC,GAGf,GAAqB,aAAjBo1D,EAAQzpE,KAAqB,CAC/B,GAAIoD,MAAMC,QAAQ/B,GAUhB,OATA+K,EAAQ/K,EAAMs0K,WAAU,SAAU1yK,GAChC,QAAS07B,EAAQ17B,EAAMs8R,WAErB/1N,EAAQg0C,UAAsB,IAAXpxG,EACrB/K,EAAM1D,KAAK4hS,GACD/1N,EAAQg0C,UAAsB,IAAXpxG,GAC7B/K,EAAMuY,OAAOxN,EAAO,IAMxB/K,EAAQmoE,EAAQg0C,YACX,KAAIh0C,EAAQg0C,QAGjB,OAFAn8G,EAAQk+R,EAKV98R,KAAK+wE,SAAW/wE,KAAKpB,MACrBoB,KAAKpB,MAAQA,EACboB,KAAKiwC,UAGPusP,EAAgB1hS,UAAUm1C,OAAS,WACjC,IAAI8gC,EAAW/wE,KAAK+wE,SAChBhiB,EAAW/uD,KAAKpB,MAEhBmwD,IAAagiB,GAIjB/wE,KAAKgmR,gBAAgBj3N,EAAUgiB,IAGjCyrN,EAAgB1hS,UAAUi+R,YAAc,WACtC/4R,KAAKg9R,oBAGPR,EAAgB1hS,UAAUia,UAAY,SAAmB5B,EAAS8xQ,GAC3DjlR,KAAK0mR,kBACR1mR,KAAK+Q,QAAQgE,UAAU/U,KAAK+mE,QAAS/mE,MAEvCA,KAAKglR,cAAc7xQ,EAAS8xQ,IAG9BuX,EAAgB1hS,UAAUga,YAAc,SAAqB3B,EAAS8xQ,GAChEjlR,KAAK2lR,iBAAiBxyQ,EAAS8xQ,KAAcjlR,KAAK0mR,kBACpD1mR,KAAK+Q,QAAQ46F,WAIjB6wL,EAAgB1hS,UAAU4qE,OAAS,WAC7B1lE,KAAKymP,gBACPzmP,KAAKymP,cAAc3xO,YApIC,wBAoIgC9U,MACpDA,KAAKymP,cAAgB,MAEnBzmP,KAAK48R,eACP58R,KAAK48R,cAAc9nR,YAvIC,wBAuIgC9U,OAIjDw8R,EAzIqE,KA0ItEna,EAIG4a,GAA+BtW,IAAwBuW,CAAM5a,EAAW,WACjF,SAAS2a,EAAoBl2N,EAASh2D,EAASi8D,GAG7ChtE,KAAK+mE,QAAUA,EACf/mE,KAAK+Q,QAAUA,EACf/Q,KAAKgtE,gBAAkBA,EAkMzB,OA/LAiwN,EAAoBniS,UAAU+rR,SAAW,WACvC,OAAO7mR,KAAKpB,OAGdq+R,EAAoBniS,UAAUgsR,SAAW,SAAkB/3N,GACzD,GAAIA,SAA+C/uD,KAAK+mE,QAAQglL,WAAarrP,MAAMC,QAAQouD,GACzF,MAAM,IAAIhyD,MAAM,gEAEdiD,KAAKpB,QAAUmwD,IAIf/uD,KAAKymP,gBACPzmP,KAAKymP,cAAc3xO,YAxBA,4BAwBgC9U,MACnDA,KAAKymP,cAAgB,MAGnB/lP,MAAMC,QAAQouD,KAChB/uD,KAAKymP,cAAgBzmP,KAAKgtE,gBAAgBE,iBAAiBne,GAC3D/uD,KAAKymP,cAAc1xO,UA9BA,4BA8B8B/U,OAGnDA,KAAK+wE,SAAW/wE,KAAKpB,MACrBoB,KAAKpB,MAAQmwD,EACb/uD,KAAKm9R,qBACLn9R,KAAKiwC,SAEAjwC,KAAK08R,cACR18R,KAAK08R,aAAc,EACnB18R,KAAKgtE,gBAAgBs7D,UAAUkB,eAAexpI,SAIlDi9R,EAAoBniS,UAAUE,KAAO,SAAcmY,EAAS+7D,GAC1DlvE,KAAKm9R,sBAGPF,EAAoBniS,UAAUqiS,mBAAqB,WACjD,IAAIv+R,EAAQoB,KAAKpB,MACb+B,OAAU,EAEVD,MAAMC,QAAQ/B,KAChB+B,GAAU,GAqBZ,IAlBA,IAAI6C,EAAUxD,KAAK+mE,QAAQvjE,QACvB9I,EAAI8I,EAAQ5I,OACZshC,EAAUl8B,KAAK+mE,QAAQ7qC,SAAW,SAAUxqB,EAAGC,GACjD,OAAOD,IAAMC,GAGXjL,EAAQ,WACV,IAAIm/G,EAASriH,EAAQhD,KAAK9F,GACtB0iS,EAAcv3K,EAAO9qH,eAAe,SAAW8qH,EAAOroG,MAAQqoG,EAAOjnH,MACzE,GAAI+B,EAIF,OAHAklH,EAAO7K,UAEC,IAFUp8G,EAAMs0K,WAAU,SAAU1yK,GAC1C,QAAS07B,EAAQkhQ,EAAa58R,MAEzB,WAETqlH,EAAO7K,WAAa9+E,EAAQkhQ,EAAax+R,IAGpClE,KACMgM,KAMfu2R,EAAoBniS,UAAUkiS,iBAAmB,WAO/C,IANA,IAAIK,EAAUr9R,KAEVwD,EAAUxD,KAAK+mE,QAAQvjE,QACvBwwD,EAAQ,EACRp1D,EAAQ,GAEHlE,EAAI,EAAGiI,EAAKa,EAAQ5I,OAAQF,EAAIiI,EAAIjI,IAAK,CAChD,IAAI4iS,EAAU95R,EAAQhD,KAAK9F,GACtB4iS,EAAQtiL,WAGbp8G,EAAM1D,KAAKoiS,EAAQviS,eAAe,SAAWuiS,EAAQ9/Q,MAAQ8/Q,EAAQ1+R,OACrEo1D,KAGF,GAAIh0D,KAAK+mE,QAAQglL,UACf,GAAIrrP,MAAMC,QAAQX,KAAKpB,OAAQ,CAC7B,IAAI2+R,EAAQ,WAkBV,IAjBA,IAAIrhQ,EAAUmhQ,EAAQt2N,QAAQ7qC,SAAW,SAAUxqB,EAAGC,GACpD,OAAOD,IAAMC,GAGXjX,EAAI,EAEJ+S,EAAS,WACX,IAAIiE,EAAI2rR,EAAQz+R,MAAMlE,IAGd,IAFJkE,EAAMs0K,WAAU,SAAUvhK,GAC5B,OAAOuqB,EAAQxqB,EAAGC,MAElB0rR,EAAQz+R,MAAMuY,OAAOzc,EAAG,GAExBA,KAIGA,EAAI2iS,EAAQz+R,MAAMhE,QACvB6S,IAGF/S,EAAI,EAYJ,IAVA,IAAI8iS,EAAS,WACX,IAAI9rR,EAAI9S,EAAMlE,IAGN,IAFJ2iS,EAAQz+R,MAAMs0K,WAAU,SAAUvhK,GACpC,OAAOuqB,EAAQxqB,EAAGC,OAElB0rR,EAAQz+R,MAAM1D,KAAKwW,GAErBhX,KAGKA,EAAIkE,EAAMhE,QACf4iS,IAEF,MAAO,CACLv5N,OAAG,GAtCK,GA0CZ,GAAsE,iBAAhD,IAAVs5N,EAAwB,YAAc18R,EAAQ08R,IAAsB,OAAOA,EAAMt5N,QAI7FrlE,EADY,IAAVo1D,EACM,KAEAp1D,EAAM,GAIdA,IAAUoB,KAAKpB,QACjBoB,KAAK+wE,SAAW/wE,KAAKpB,MACrBoB,KAAKpB,MAAQA,EACboB,KAAKiwC,WAITgtP,EAAoBniS,UAAUm1C,OAAS,WACrC,IAAI8gC,EAAW/wE,KAAK+wE,SAChBhiB,EAAW/uD,KAAKpB,MAEpBoB,KAAKgmR,gBAAgBj3N,EAAUgiB,IAGjCksN,EAAoBniS,UAAUi+R,YAAc,WAC1C/4R,KAAKg9R,oBAGPC,EAAoBniS,UAAUia,UAAY,SAAmB5B,EAAS8xQ,GAC/DjlR,KAAK0mR,kBACR1mR,KAAK+Q,QAAQgE,UAAU/U,KAAK+mE,QAAS/mE,MAEvCA,KAAKglR,cAAc7xQ,EAAS8xQ,IAG9BgY,EAAoBniS,UAAUga,YAAc,SAAqB3B,EAAS8xQ,GACpEjlR,KAAK2lR,iBAAiBxyQ,EAAS8xQ,KAAcjlR,KAAK0mR,kBACpD1mR,KAAK+Q,QAAQ46F,WAIjBsxL,EAAoBniS,UAAUqE,KAAO,WACnC,IAAIs+R,EAAUz9R,KAEdA,KAAK09R,YAAc,MAAI3f,wBAAuB,WAC5C0f,EAAQN,qBACRM,EAAQT,sBAEVh9R,KAAK09R,YAAYv0L,QAAQnpG,KAAK+mE,QAAS,CAAEsoK,WAAW,EAAMC,SAAS,EAAMH,eAAe,KAG1F8tD,EAAoBniS,UAAU4qE,OAAS,WACrC1lE,KAAK09R,YAAYt0L,aACjBppG,KAAK09R,YAAc,KAEf19R,KAAKymP,gBACPzmP,KAAKymP,cAAc3xO,YArMA,4BAqMgC9U,MACnDA,KAAKymP,cAAgB,OAIlBw2C,EAxM0E,KAyM3E3a,EAEGqb,GAAgB,WACzB,SAASA,EAAc52N,GAGrB/mE,KAAK+mE,QAAUA,EACf/mE,KAAKw7R,YAAa,EAClBx7R,KAAKpB,MAAQ,GACboB,KAAKonC,QAAU,EA8CjB,OA3CAu2P,EAAc7iS,UAAU+rR,SAAW,WACjC,OAAO7mR,KAAKpB,OAGd++R,EAAc7iS,UAAUgsR,SAAW,SAAkB/3N,GACnD,IAAI6uO,EAAY59R,KAAK49R,WAAa,GAC9Bx2P,EAAUpnC,KAAKonC,QACfzT,OAAQ,EACRj2B,OAAO,EAEX,GAAIqxD,SAA+CA,EAASn0D,OAE1D,IAAK,IAAIF,EAAI,EAAGE,GADhB+4B,EAAQo7B,EAASzjC,MAAM,QACQ1wB,OAAQF,EAAIE,EAAQF,IAEpC,MADbgD,EAAOi2B,EAAMj5B,MAIbkjS,EAAUlgS,GAAQ0pC,EAClBpnC,KAAK+mE,QAAQqe,UAAUt0E,IAAIpT,IAQ/B,GAJAsC,KAAKpB,MAAQmwD,EACb/uD,KAAK49R,UAAYA,EACjB59R,KAAKonC,SAAW,EAEA,IAAZA,EAKJ,IAAK1pC,KADL0pC,GAAW,EACEw2P,EACNA,EAAU7iS,eAAe2C,IAASkgS,EAAUlgS,KAAU0pC,GAG3DpnC,KAAK+mE,QAAQqe,UAAUt1C,OAAOpyC,IAIlCigS,EAAc7iS,UAAUia,UAAY,WAClC,MAAM,IAAIhY,MAAM,qBAAuBiD,KAAK+mE,QAAQivC,SAAW,oDAG1D2nL,EArDkB,GAwDpB,SAASE,GAAwBz8R,GACtC,SAAUA,GAAcA,EAAW5C,KAAO4C,EAAW5C,IAAIgmI,cAGpD,SAASs5J,GAA4B32J,EAAM58C,EAAci6C,GAC7C3pI,OAAOw0D,yBAAyB83E,EAAKrsI,UAAWyvF,GACtD/rF,IAAIgmI,aAAeA,EAGzB,SAASu5J,KACd,IAAK,IAAI7wP,EAAOprC,UAAUlH,OAAQuyC,EAAOzsC,MAAMwsC,GAAO3oC,EAAO,EAAGA,EAAO2oC,EAAM3oC,IAC3E4oC,EAAK5oC,GAAQzC,UAAUyC,GAGzB,OAAO,SAAU/G,EAAQ0B,EAAKkC,GAE5B,OADAA,EAAW5C,IAAIgmI,aAAer3F,EACvB/rC,GAIJ,IAAI48R,GAAqB,SAAUC,GAGxC,SAASD,EAAmBtgS,EAAM8mI,GAGhC,IAAI05J,EAAUvmR,EAA2B3X,KAAMi+R,EAAcjjS,KAAKgF,OAKlE,OAHAk+R,EAAQxgS,KAAOA,EACfwgS,EAAQ15J,aAAeA,EACvB05J,EAAQnT,cAAe,EAChBmT,EAuBT,OAjCAjmR,EAAU+lR,EAAoBC,GAa9BD,EAAmBljS,UAAUktP,SAAW,SAAkB58K,EAAO86K,GAC/D,OAAO96K,EAAMzD,eAAe3nE,KAAKtC,OAGnCsgS,EAAmBljS,UAAU+H,OAAS,SAAgBuoE,EAAOxsE,GAC3DwsE,EAAMzD,eAAe3nE,KAAKtC,MAAQkB,GAGpCo/R,EAAmBljS,UAAUs7J,OAAS,SAAgBg1H,GACpD,MAAM,IAAIruR,MAAM,oBAGlBihS,EAAmBljS,UAAU0pR,QAAU,SAAiBrtO,EAASi0B,GAG/D,IAFA,IAAIo5D,EAAexkI,KAAKwkI,aACpB9pI,EAAI8pI,EAAa5pI,OACdF,KACL8pI,EAAa9pI,GAAG8pR,QAAQrtO,EAASi0B,IAI9B4yN,EAlCuB,CAmC9BlT,IAEK,SAASqT,GAAuBp9R,EAAKwpF,EAAcnpF,EAAY4rE,GACpE,IAAIw3D,EAAepjI,EAAW5C,IAAIgmI,aAClC,KAAMA,aAAwBw5J,IAAqB,CAEjD,IADA,IAAItjS,EAAI8pI,EAAa5pI,OACdF,KACL8pI,EAAa9pI,GAAKsyE,EAAgB85F,OAAO31J,MAAMqzH,EAAa9pI,IAE9D8pI,EAAepjI,EAAW5C,IAAIgmI,aAAe,IAAIw5J,GAAmBzzM,EAAci6C,GAGpF,IAAIp5D,EAAQ,CAAEzD,eAAgB5mE,EAAK6mE,gBAAiBi7M,EAAsB9hR,IAC1E,OAAO,IAAI6lR,GAAmBx7M,EAAOo5D,EAAcx3D,GAGrD,IAAIoxN,QAAc,EACdC,QAA0B,EAC1BC,QAA4B,EAC5BC,QAAc,EAElB,GAA8B,oBAAnBC,eAAgC,CACzCJ,GAAc,CACZ1sR,EAAG,CAAC,QAAS,4BAA6B,KAAM,aAAc,UAAW,YAAa,aAAc,SAAU,cAAe,cAAe,aAAc,cAAe,YAAa,qBAAsB,mBAAoB,QAAS,iBAAkB,SAAU,YAAa,gBAAiB,gBAAiB,aAAc,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,aACnZ+sR,SAAU,CAAC,QAAS,KAAM,KAAM,4BAA6B,SAAU,WAAY,KAAM,aAAc,UAAW,YAAa,aAAc,SAAU,cAAe,cAAe,aAAc,cAAe,YAAa,qBAAsB,mBAAoB,SAAU,QAAS,iBAAkB,IAAK,gBAAiB,gBAAiB,aAAc,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,YAAa,KACjcC,YAAa,CAAC,KAAM,WAAY,WAAY,aAC5CC,aAAc,CAAC,KAAM,WAAY,WAAY,aAC7CrpK,QAAS,CAAC,aAAc,WAAY,gBAAiB,gBAAiB,QAAS,KAAM,WAAY,MAAO,MAAO,4BAA6B,OAAQ,OAAQ,KAAM,aAAc,WAAY,MAAO,MAAO,UAAW,QAAS,SAAU,WAAY,cAAe,YAAa,qBAAsB,mBAAoB,UAAW,iBAAkB,KAAM,SAAU,gBAAiB,gBAAiB,aAAc,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,aACxespK,aAAc,CAAC,aAAc,WAAY,gBAAiB,gBAAiB,QAAS,KAAM,WAAY,MAAO,MAAO,4BAA6B,OAAQ,OAAQ,KAAM,aAAc,WAAY,MAAO,MAAO,UAAW,QAAS,SAAU,WAAY,cAAe,YAAa,qBAAsB,mBAAoB,UAAW,iBAAkB,KAAM,SAAU,gBAAiB,gBAAiB,aAAc,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,aAC7eC,cAAe,CAAC,aAAc,WAAY,QAAS,KAAM,WAAY,MAAO,MAAO,4BAA6B,OAAQ,OAAQ,KAAM,YAAa,aAAc,WAAY,MAAO,MAAO,UAAW,QAAS,SAAU,WAAY,SAAU,OAAQ,cAAe,YAAa,qBAAsB,mBAAoB,UAAW,SAAU,iBAAkB,KAAM,SAAU,gBAAiB,gBAAiB,aAAc,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,aACrfC,iBAAkB,CAAC,aAAc,WAAY,gBAAiB,gBAAiB,QAAS,KAAM,WAAY,MAAO,MAAO,4BAA6B,OAAQ,OAAQ,KAAM,aAAc,WAAY,MAAO,MAAO,UAAW,QAAS,SAAU,WAAY,cAAe,YAAa,qBAAsB,mBAAoB,UAAW,iBAAkB,KAAM,OAAQ,SAAU,gBAAiB,gBAAiB,aAAc,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,aACzfC,OAAQ,CAAC,QAAS,KAAM,KAAM,4BAA6B,KAAM,aAAc,UAAW,YAAa,aAAc,SAAU,cAAe,cAAe,aAAc,cAAe,YAAa,IAAK,qBAAsB,mBAAoB,QAAS,iBAAkB,YAAa,WAAY,WAAY,aACtTC,SAAU,CAAC,QAAS,gBAAiB,4BAA6B,KAAM,qBAAsB,mBAAoB,QAAS,iBAAkB,YAAa,WAAY,WAAY,aAClL,gBAAiB,CAAC,KAAM,QAAS,OAAQ,mBAAoB,gBAAiB,gBAAiB,aAAc,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,aAC9L1gF,OAAQ,CAAC,4BAA6B,KAAM,qBAAsB,mBAAoB,iBAAkB,IAAK,gBAAiB,gBAAiB,aAAc,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,YAAa,KAC3P2gF,KAAM,CAAC,QAAS,4BAA6B,KAAM,aAAc,UAAW,YAAa,aAAc,SAAU,cAAe,cAAe,aAAc,cAAe,YAAa,qBAAsB,mBAAoB,QAAS,iBAAkB,YAAa,WAAY,WAAY,aACnSn7N,KAAM,CAAC,QAAS,KAAM,QAAS,WAAY,WAAY,aACvDo7N,QAAS,CAAC,QAAS,KAAM,KAAM,4BAA6B,KAAM,aAAc,UAAW,YAAa,aAAc,SAAU,cAAe,cAAe,aAAc,cAAe,YAAa,qBAAsB,mBAAoB,KAAM,KAAM,QAAS,iBAAkB,YAAa,WAAY,WAAY,aAC9TC,QAAS,CAAC,QAAS,SAAU,KAAM,KAAM,MAAO,OAAQ,SAAU,QAAS,QAAS,IAAK,WAAY,WAAY,YAAa,KAC9HC,cAAe,CAAC,QAAS,SAAU,KAAM,KAAM,SAAU,QAAS,OAAQ,SAAU,QAAS,IAAK,WAAY,WAAY,YAAa,KACvIC,oBAAqB,CAAC,QAAS,SAAU,KAAM,KAAM,SAAU,QAAS,QAAS,IAAK,WAAY,WAAY,YAAa,KAC3HC,YAAa,CAAC,QAAS,SAAU,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,WAAY,SAAU,QAAS,QAAS,IAAK,WAAY,WAAY,YAAa,KAC9JC,iBAAkB,CAAC,OAAQ,QAAS,UAAW,WAAY,SAAU,KAAM,KAAM,eAAgB,mBAAoB,QAAS,gBAAiB,SAAU,QAAS,UAAW,UAAW,QAAS,IAAK,WAAY,WAAY,YAAa,KAC3OC,kBAAmB,CAAC,QAAS,kBAAmB,SAAU,KAAM,KAAM,mBAAoB,SAAU,QAAS,eAAgB,QAAS,IAAK,WAAY,WAAY,YAAa,KAChLC,kBAAmB,CAAC,QAAS,SAAU,KAAM,KAAM,MAAO,SAAU,QAAS,QAAS,QAAS,IAAK,mBAAoB,WAAY,WAAY,YAAa,IAAK,oBAClKC,eAAgB,CAAC,UAAW,YAAa,KAAM,WAAY,WAAY,aACvEC,QAAS,CAAC,QAAS,SAAU,KAAM,SAAU,QAAS,QAAS,IAAK,WAAY,WAAY,YAAa,KACzGC,QAAS,CAAC,YAAa,WAAY,KAAM,YAAa,SAAU,QAAS,cAAe,OAAQ,WAAY,WAAY,aACxHC,QAAS,CAAC,YAAa,WAAY,KAAM,YAAa,SAAU,QAAS,cAAe,OAAQ,WAAY,WAAY,aACxHC,QAAS,CAAC,YAAa,WAAY,KAAM,YAAa,SAAU,QAAS,cAAe,OAAQ,WAAY,WAAY,aACxHC,QAAS,CAAC,YAAa,WAAY,KAAM,YAAa,SAAU,QAAS,cAAe,OAAQ,WAAY,WAAY,aACxHC,eAAgB,CAAC,QAAS,SAAU,KAAM,KAAM,SAAU,eAAgB,QAAS,QAAS,IAAK,WAAY,WAAY,YAAa,KACtIC,QAAS,CAAC,QAAS,4BAA6B,SAAU,KAAM,sBAAuB,SAAU,QAAS,QAAS,IAAK,gBAAiB,gBAAiB,aAAc,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,YAAa,KACtQC,QAAS,CAAC,QAAS,SAAU,KAAM,SAAU,QAAS,QAAS,IAAK,WAAY,WAAY,YAAa,KACzGC,YAAa,CAAC,KAAM,WAAY,WAAY,aAC5CC,aAAc,CAAC,QAAS,SAAU,KAAM,KAAM,WAAY,SAAU,SAAU,QAAS,QAAS,IAAK,WAAY,WAAY,YAAa,KAC1IC,SAAU,CAAC,QAAS,KAAM,KAAM,SAAU,KAAM,KAAM,SAAU,QAAS,QAAS,IAAK,WAAY,WAAY,YAAa,KAC5HC,aAAc,CAAC,KAAM,IAAK,WAAY,WAAY,YAAa,IAAK,KACpEC,mBAAoB,CAAC,QAAS,SAAU,KAAM,KAAM,mBAAoB,SAAU,mBAAoB,mBAAoB,QAAS,eAAgB,QAAS,IAAK,WAAY,WAAY,YAAa,KACtMC,YAAa,CAAC,KAAM,oBAAqB,YAAa,YAAa,YAAa,mBAAoB,IAAK,WAAY,WAAY,YAAa,IAAK,KACnJC,OAAQ,CAAC,QAAS,SAAU,KAAM,KAAM,SAAU,QAAS,QAAS,IAAK,WAAY,WAAY,YAAa,KAC9GC,aAAc,CAAC,gBAAiB,QAAS,SAAU,KAAM,aAAc,SAAU,OAAQ,cAAe,QAAS,OAAQ,QAAS,IAAK,WAAY,WAAY,YAAa,KAC5K77R,OAAQ,CAAC,QAAS,4BAA6B,YAAa,cAAe,SAAU,KAAM,iBAAkB,QAAS,QAAS,IAAK,gBAAiB,gBAAiB,aAAc,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,YAAa,KAClR87R,KAAM,CAAC,QAAS,4BAA6B,cAAe,iBAAkB,iBAAkB,KAAM,QAAS,aAAc,gBAAiB,gBAAiB,WAAY,WAAY,aACvL,YAAa,CAAC,gBAAiB,aAAc,SAAU,OAAQ,aAAc,UAAW,cAAe,YAAa,eAAgB,aAAc,eAAgB,cAAe,UAAW,KAAM,cAAe,eAAgB,oBAAqB,qBAAsB,WAAY,QAAS,QAAS,QAAS,yBAA0B,0BAA2B,qBAAsB,sBAAuB,gBAAiB,eAAgB,eAAgB,YAAa,gBAAiB,iBAAkB,SAAU,WAAY,WAAY,WAAY,aACpiB,mBAAoB,CAAC,KAAM,SAAU,WAAY,WAAY,aAC7D,iBAAkB,CAAC,KAAM,OAAQ,WAAY,WAAY,aACzD,gBAAiB,CAAC,KAAM,WAAY,WAAY,aAChD,gBAAiB,CAAC,KAAM,gBAAiB,gBAAiB,aAAc,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,aACzJC,cAAe,CAAC,QAAS,4BAA6B,SAAU,KAAM,aAAc,UAAW,YAAa,aAAc,SAAU,cAAe,cAAe,aAAc,cAAe,YAAa,qBAAsB,mBAAoB,QAAS,iBAAkB,YAAa,QAAS,IAAK,WAAY,WAAY,YAAa,KACjV/uN,EAAG,CAAC,QAAS,4BAA6B,KAAM,aAAc,UAAW,YAAa,aAAc,SAAU,cAAe,cAAe,aAAc,cAAe,YAAa,qBAAsB,mBAAoB,QAAS,iBAAkB,YAAa,WAAY,WAAY,aAChSgvN,MAAO,CAAC,cAAe,QAAS,IAAK,aAAc,cAAe,KAAM,OAAQ,cAAe,QAAS,UAAW,aAAc,gBAAiB,gBAAiB,WAAY,WAAY,aAC3LC,SAAU,CAAC,QAAS,KAAM,KAAM,SAAU,WAAY,KAAM,QAAS,IAAK,gBAAiB,gBAAiB,aAAc,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,YAAa,KACxNC,MAAO,CAAC,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,WAAY,WAAY,aACnEp2P,MAAO,CAAC,QAAS,4BAA6B,SAAU,KAAM,aAAc,UAAW,YAAa,aAAc,SAAU,cAAe,cAAe,aAAc,cAAe,YAAa,sBAAuB,qBAAsB,mBAAoB,QAAS,iBAAkB,YAAa,QAAS,IAAK,gBAAiB,gBAAiB,aAAc,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,YAAa,KACzc8pD,KAAM,CAAC,QAAS,4BAA6B,KAAM,aAAc,UAAW,YAAa,aAAc,SAAU,cAAe,cAAe,aAAc,cAAe,YAAa,qBAAsB,mBAAoB,QAAS,iBAAkB,YAAa,KAAM,KAAM,WAAY,WAAY,YAAa,KAAM,MAClUusM,eAAgB,CAAC,QAAS,4BAA6B,oBAAqB,gBAAiB,KAAM,eAAgB,QAAS,KAAM,KAAM,gBAAiB,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,YAAa,KAAM,MAC7P/qP,OAAQ,CAAC,QAAS,4BAA6B,KAAM,eAAgB,cAAe,cAAe,SAAU,sBAAuB,OAAQ,OAAQ,QAAS,UAAW,WAAY,WAAY,aAChM4kN,KAAM,CAAC,QAAS,4BAA6B,SAAU,KAAM,mBAAoB,YAAa,qBAAsB,mBAAoB,QAAS,iBAAkB,QAAS,IAAK,WAAY,WAAY,YAAa,KACtNnvN,SAAU,CAAC,KAAM,WAAY,WAAY,aACzC,gBAAiB,CAAC,QAAS,IAAK,cAAe,KAAM,QAAS,aAAc,gBAAiB,gBAAiB,WAAY,WAAY,aACtIu1P,MAAO,CAAC,4BAA6B,KAAM,gBAAiB,gBAAiB,aAAc,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,aAC5Kt/R,KAAM,CAAC,QAAS,IAAK,4BAA6B,KAAM,aAAc,UAAW,YAAa,aAAc,SAAU,cAAe,cAAe,aAAc,cAAe,YAAa,aAAc,qBAAsB,mBAAoB,QAAS,iBAAkB,YAAa,WAAY,WAAY,aACtTi4G,QAAS,CAAC,QAAS,4BAA6B,SAAU,KAAM,sBAAuB,mBAAoB,eAAgB,sBAAuB,qBAAsB,mBAAoB,QAAS,iBAAkB,UAAW,QAAS,IAAK,gBAAiB,gBAAiB,aAAc,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,YAAa,KAC9XsnL,QAAS,CAAC,QAAS,4BAA6B,KAAM,aAAc,UAAW,YAAa,aAAc,SAAU,cAAe,cAAe,aAAc,cAAe,YAAa,SAAU,qBAAsB,mBAAoB,QAAS,iBAAkB,YAAa,WAAY,WAAY,aAChTC,SAAU,CAAC,QAAS,4BAA6B,KAAM,aAAc,UAAW,YAAa,aAAc,SAAU,cAAe,cAAe,aAAc,cAAe,YAAa,SAAU,qBAAsB,mBAAoB,QAAS,iBAAkB,YAAa,WAAY,WAAY,aACjTC,eAAgB,CAAC,QAAS,KAAM,KAAM,4BAA6B,KAAM,KAAM,oBAAqB,gBAAiB,KAAM,IAAK,eAAgB,QAAS,gBAAiB,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,aAC3PzgK,KAAM,CAAC,QAAS,4BAA6B,SAAU,KAAM,aAAc,UAAW,YAAa,aAAc,SAAU,cAAe,cAAe,aAAc,cAAe,YAAa,qBAAsB,mBAAoB,KAAM,KAAM,QAAS,iBAAkB,YAAa,QAAS,IAAK,WAAY,WAAY,YAAa,KACpVvkI,OAAQ,CAAC,4BAA6B,KAAM,OAAQ,gBAAiB,gBAAiB,aAAc,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,aACrL+oB,IAAK,CAAC,gBAAiB,gBAAiB,QAAS,MAAO,MAAO,4BAA6B,OAAQ,KAAM,MAAO,MAAO,UAAW,QAAS,SAAU,WAAY,cAAe,YAAa,qBAAsB,mBAAoB,UAAW,iBAAkB,KAAM,gBAAiB,gBAAiB,aAAc,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,aAC5YivB,KAAM,CAAC,QAAS,KAAM,SAAU,QAAS,WAAY,WAAY,aACjE0sB,MAAO,CAAC,KAAM,QAAS,QAAS,OAAQ,WAAY,WAAY,aAChEugO,IAAK,CAAC,cAAe,QAAS,oBAAqB,mBAAoB,4BAA6B,SAAU,KAAM,UAAW,aAAc,UAAW,UAAW,YAAa,aAAc,SAAU,cAAe,cAAe,aAAc,cAAe,YAAa,WAAY,WAAY,WAAY,SAAU,sBAAuB,qBAAsB,mBAAoB,QAAS,iBAAkB,UAAW,UAAW,QAAS,IAAK,WAAY,WAAY,YAAa,IAAK,cACxeC,OAAQ,CAAC,QAAS,4BAA6B,KAAM,aAAc,UAAW,YAAa,aAAc,SAAU,cAAe,cAAe,aAAc,cAAe,YAAa,qBAAsB,mBAAoB,QAAS,iBAAkB,YAAa,WAAY,WAAY,aACrSn8O,OAAQ,CAAC,QAAS,4BAA6B,KAAM,aAAc,UAAW,YAAa,aAAc,SAAU,cAAe,cAAe,aAAc,cAAe,YAAa,sBAAuB,QAAS,UAAW,WAAY,WAAY,aAC9P+D,KAAM,CAAC,QAAS,KAAM,KAAM,4BAA6B,KAAM,eAAgB,aAAc,UAAW,YAAa,aAAc,SAAU,cAAe,cAAe,aAAc,cAAe,YAAa,qBAAsB,mBAAoB,SAAU,QAAS,iBAAkB,aAAc,YAAa,IAAK,WAAY,WAAY,YAAa,KACzWq4O,SAAU,CAAC,QAAS,4BAA6B,KAAM,eAAgB,SAAU,aAAc,UAAW,YAAa,aAAc,SAAU,cAAe,cAAe,aAAc,cAAe,YAAa,qBAAsB,mBAAoB,UAAW,cAAe,QAAS,iBAAkB,aAAc,gBAAiB,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,aACtaj6R,MAAO,CAAC,QAAS,KAAM,QAAS,WAAY,WAAY,aACxDk6R,KAAM,CAAC,QAAS,KAAM,KAAM,4BAA6B,KAAM,eAAgB,aAAc,UAAW,YAAa,aAAc,SAAU,cAAe,cAAe,aAAc,cAAe,YAAa,qBAAsB,mBAAoB,SAAU,QAAS,iBAAkB,aAAc,IAAK,gBAAiB,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,YAAa,KACtaC,MAAO,CAAC,QAAS,KAAM,KAAM,4BAA6B,KAAM,eAAgB,aAAc,UAAW,YAAa,aAAc,SAAU,cAAe,cAAe,aAAc,cAAe,YAAa,qBAAsB,mBAAoB,SAAU,QAAS,iBAAkB,aAAc,IAAK,WAAY,WAAY,YAAa,KAC7VvjO,IAAK,CAAC,QAAS,4BAA6B,SAAU,KAAM,aAAc,UAAW,YAAa,aAAc,SAAU,cAAe,cAAe,aAAc,cAAe,YAAa,qBAAsB,mBAAoB,QAAS,iBAAkB,YAAa,QAAS,IAAK,gBAAiB,gBAAiB,aAAc,aAAc,aAAc,cAAe,aAAc,WAAY,WAAY,YAAa,KAChbxtD,KAAM,CAAC,4BAA6B,KAAM,sBAAuB,UAAW,aAAc,WAAY,WAAY,YAAa,cAC/HgxR,MAAO,CAAC,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,WAAY,WAAY,cAIrErD,GAA0B,CACxB,GAAK,EACL,UAAY,EACZ,SAAW,EACX,cAAgB,EAChB,QAAU,EACV,UAAY,EACZ,MAAQ,EACR,SAAW,EACX,SAAW,EACX,eAAiB,EACjB,qBAAuB,EACvB,aAAe,EACf,kBAAoB,EACpB,mBAAqB,EACrB,mBAAqB,EACrB,SAAW,EACX,gBAAkB,EAClB,SAAW,EACX,SAAW,EACX,cAAgB,EAChB,UAAY,EACZ,oBAAsB,EACtB,QAAU,EACV,cAAgB,EAChB,QAAU,EACV,MAAQ,EACR,eAAiB,EACjB,GAAK,EACL,OAAS,EACT,UAAY,EACZ,OAAS,EACT,MAAQ,EACR,gBAAkB,EAClB,QAAU,EACV,MAAQ,EACR,iBAAiB,EACjB,MAAQ,EACR,SAAW,EACX,SAAW,EACX,UAAY,EACZ,gBAAkB,EAClB,MAAQ,EACR,MAAQ,EACR,KAAO,EACP,QAAU,EACV,QAAU,EACV,MAAQ,EACR,UAAY,EACZ,MAAQ,EACR,OAAS,EACT,KAAO,GAGTC,GAA4B,CAC1B,sBAAsB,EACtB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,MAAQ,EACR,+BAA+B,EAC/B,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,OAAS,EACT,QAAU,EACV,WAAa,EACb,SAAW,EACX,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,MAAQ,EACR,QAAU,EACV,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,gCAAgC,EAChC,8BAA8B,EAC9B,mBAAmB,EACnB,SAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,MAAQ,EACR,SAAW,EACX,UAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,QAAU,EACV,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,YAAc,EACd,gBAAgB,EAChB,gBAAgB,GASlBC,GAAc,WACZ,SAASoD,IAPS,IAAuBn5O,EACrC6/C,EAS0E,cAVrC7/C,EAUrB,0BAThB6/C,EAAM,MAAI/rG,cAAc,OAC5B+rG,EAAIp+C,UAAYzB,EACT6/C,EAAIjnC,YAOoC+8D,kBAAkBnoB,UAA2B4C,GAAS6lL,WACjG7lL,GAASgpL,SAAWhpL,GAAS6lL,gBACtB7lL,GAAS6lL,SAChB7lL,GAASipL,YAAcjpL,GAAS8lL,mBACzB9lL,GAAS8lL,YAChB9lL,GAASkpL,aAAelpL,GAAS+lL,oBAC1B/lL,GAAS+lL,aAChB/lL,GAASmpL,SAAWnpL,GAASkoL,gBACtBloL,GAASkoL,UAQpB,OAJAa,EAAY7mS,UAAUknS,uBAAyB,SAAgChsL,EAAU+lL,GACvF,OAAOkG,GAAqBjsL,IAAaksL,GAAuBnG,IAAkBnjL,GAAS5C,KAA4D,IAA/C4C,GAAS5C,GAAU3kG,QAAQ0qR,IAG9H4F,EApBK,GAwBT,IAAI/oL,GAAWwlL,GACX6D,GAAuB5D,GACvB6D,GAAyB5D,GACzBqD,GAAcpD,IAAe,WACtC,SAAS4D,KAQT,OAJAA,EAASrnS,UAAUknS,uBAAyB,WAC1C,OAAO,GAGFG,EAT+B,GAY7Bz8C,IAAmB97G,EAAQ24I,EAAW,WAC/C,SAAS78B,EAAgBp9G,EAAW85J,EAAchH,EAAcmD,EAAaz3H,GAG3E9mK,KAAKsoI,UAAYA,EACjBtoI,KAAKoiS,aAAeA,EACpBpiS,KAAKo7R,aAAeA,EACpBp7R,KAAKu+R,YAAcA,EACnBv+R,KAAK8mK,OAASA,EAEd9mK,KAAKqiS,SAAW,GAChBriS,KAAKC,OAAS,YAAqB,oBAiKrC,OA9JAylP,EAAgB5qP,UAAUgpR,YAAc,SAAqB/iR,EAAKwpF,GAChE,IACIl8B,EADAi0O,EAAkBvhS,EAAI87R,cAG1B,OAAIyF,GAAmB/3M,KAAgB+3M,EAC9BA,EAAgB/3M,KAGzBl8B,EAAWruD,KAAKuiS,uBAAuBxhS,EAAKwpF,IAE9BixM,kBACY59R,IAApB0kS,IACFA,EAAkBtiS,KAAKwiS,2BAA2BzhS,IAGpDuhS,EAAgB/3M,GAAgBl8B,GAG3BA,IAGTq3L,EAAgB5qP,UAAU0nS,2BAA6B,SAAoCzhS,GACzF,OAAOA,EAAI87R,eAAiB78R,KAAKyiS,sBAAsB1hS,IAGzD2kP,EAAgB5qP,UAAU2nS,sBAAwB,SAA+B1hS,GAC/E,IAAInC,EAAQ,GAWZ,OATKstC,QAAQ5tC,eAAeyC,EAAK,gBAAiB,CAChDxC,YAAY,EACZ8C,cAAc,EACdC,UAAU,EACV1C,MAAOA,KAEPoB,KAAKC,OAAOikB,KAAK,iCAAkCnjB,GAG9CnC,GAGT8mP,EAAgB5qP,UAAU4nS,WAAa,SAAoBxjM,GACzDl/F,KAAKqiS,SAASnnS,KAAKgkG,IAGrBwmJ,EAAgB5qP,UAAU6nS,mBAAqB,SAA4B5hS,EAAKwpF,EAAcnpF,GAC5F,IAAK,IAAI1G,EAAI,EAAGiI,EAAK3C,KAAKqiS,SAASznS,OAAQF,EAAIiI,EAAIjI,IAAK,CACtD,IACI2zD,EADUruD,KAAKqiS,SAAS3nS,GACLopR,YAAY/iR,EAAKwpF,EAAcnpF,GACtD,GAAIitD,EACF,OAAOA,EAGX,OAAO,MAGTq3L,EAAgB5qP,UAAUynS,uBAAyB,SAAgCxhS,EAAKwpF,GACtF,IAAInpF,EACA2P,OAAU,EACV6xR,OAAc,EAElB,KAAM7hS,aAAelG,QACnB,OAAO,IAAIygS,GAAkBv6R,EAAKwpF,GAGpC,GAAIxpF,aAAe,MAAIymE,QAAS,CAC9B,GAAqB,UAAjB+iB,EACF,OAAO,IAAIozM,GAAc58R,GAE3B,GAAqB,UAAjBwpF,GAA6C,QAAjBA,EAC9B,OAAO,IAAI6xM,GAAcr7R,EAAKwpF,GAGhC,GADAx5E,EAAU/Q,KAAKoiS,aAAa5H,kBAAkBz5R,EAAKwpF,GAC9B,UAAjBA,GAA0D,WAA9BxpF,EAAIw5J,QAAQh/I,cAC1C,OAAO,IAAI0hR,GAAoBl8R,EAAKgQ,EAAS/Q,MAE/C,GAAqB,YAAjBuqF,GAA4D,UAA9BxpF,EAAIw5J,QAAQh/I,cAC5C,OAAO,IAAIihR,GAAgBz7R,EAAKgQ,EAAS/Q,MAE3C,GAAI+Q,EACF,OAAO,IAAIwrR,GAAuBx7R,EAAKwpF,EAAcx5E,GAGvD,GADA6xR,EAAc,eAAelsQ,KAAK6zD,GAEhC,OAAO,IAAIuxM,GAAuB/6R,EAAKwpF,EAAcq4M,EAAY,IAEnE,GAAqB,SAAjBr4M,IAA4BxpF,aAAe,MAAIymE,SAAWzmE,aAAe,MAAI8hS,aAAe,sBAAsBzgS,KAAKmoF,IAAiBxpF,aAAe,MAAI8hS,YAAc7iS,KAAKu+R,YAAYyD,uBAAuBjhS,EAAIi1G,SAAUzrB,GACjO,OAAO,IAAI4xM,GAAsBp7R,EAAKwpF,GAM1C,GAAIszM,GAFJz8R,EAAavG,OAAO4tJ,sBAAsB1nJ,EAAKwpF,IAG7C,OAAO4zM,GAAuBp9R,EAAKwpF,EAAcnpF,EAAYpB,MAG/D,GAAIoB,EAAY,CACd,IAAI0hS,EAAyB1hS,EAAW5C,KAAO4C,EAAW+jB,IAC1D,GAAI29Q,EAAwB,CAC1B,GAAIA,EAAuBhf,YACzB,OAAOgf,EAAuBhf,YAAY/iR,GAG5C,IAAIgiS,EAAkB/iS,KAAK2iS,mBAAmB5hS,EAAKwpF,EAAcnpF,GACjE,OAAI2hS,GAGG,IAAI5H,GAAmBn7R,KAAKo7R,aAAcr6R,EAAKwpF,IAI1D,OAAIxpF,aAAeL,MACI,WAAjB6pF,EACKvqF,KAAKktE,iBAAiBnsE,GAAKmpR,oBAG7B,IAAIiR,GAAmBn7R,KAAKo7R,aAAcr6R,EAAKwpF,GAC7CxpF,aAAe2rC,IACH,SAAjB69C,EACKvqF,KAAKwwE,eAAezvE,GAAKmpR,oBAG3B,IAAIiR,GAAmBn7R,KAAKo7R,aAAcr6R,EAAKwpF,GAC7CxpF,aAAe0hO,IACH,SAAjBl4I,EACKvqF,KAAKixE,eAAelwE,GAAKmpR,oBAG3B,IAAIiR,GAAmBn7R,KAAKo7R,aAAcr6R,EAAKwpF,GAGjD,IAAIkxM,GAAez7R,KAAKsoI,UAAWvnI,EAAKwpF,IAGjDm7J,EAAgB5qP,UAAUkoS,YAAc,SAAqBjiS,EAAKwpF,GAChE,GAAIxpF,aAAe,MAAIymE,QAAS,CAC9B,GAAqB,UAAjB+iB,GAA6C,UAAjBA,GAA6C,QAAjBA,GAA2C,UAAjBA,IAA2D,UAA9BxpF,EAAIw5J,QAAQh/I,eAA2D,WAA9Bxa,EAAIw5J,QAAQh/I,gBAAgD,YAAjBgvE,GAA4D,UAA9BxpF,EAAIw5J,QAAQh/I,eAA8C,UAAjBgvE,GAA0D,UAA9BxpF,EAAIw5J,QAAQh/I,eAA6B,aAAamb,KAAK6zD,GACnW,OAAOvqF,KAAK8jR,YAAY/iR,EAAKwpF,GAE/B,GAAI,sBAAsBnoF,KAAKmoF,IAAiBxpF,aAAe,MAAI8hS,YAAc7iS,KAAKu+R,YAAYyD,uBAAuBjhS,EAAIi1G,SAAUzrB,IAA+C,QAA9BxpF,EAAIw5J,QAAQh/I,eAA4C,QAAjBgvE,GAAwD,MAA9BxpF,EAAIw5J,QAAQh/I,eAA0C,SAAjBgvE,EAC5P,OAAO2xM,GAGX,OAAOb,IAGT31C,EAAgB5qP,UAAUoyE,iBAAmB,SAA0B5lD,GACrE,OAAO+iQ,GAAkBrqR,KAAKsoI,UAAWhhH,IAG3Co+N,EAAgB5qP,UAAU01E,eAAiB,SAAwB7rE,GACjE,OAAOszR,GAAgBj4R,KAAKsoI,UAAW3jI,IAGzC+gP,EAAgB5qP,UAAUm2E,eAAiB,SAAwB9rD,GACjE,OAAO89Q,GAAgBjjS,KAAKsoI,UAAWnjH,IAGlCugO,EA5KwC,GA6K5C68B,EAAS/sQ,OAAS,CAAC,YAAW0kR,GAAcS,GAAcgH,GAAaxQ,IAASvnJ,GAE1Es5J,GAA2B,WACpC,SAASA,KAQT,OAJAA,EAAyBpoS,UAAUgpR,YAAc,SAAqBzkR,EAAQkrF,EAAcnpF,GAC1F,MAAM,IAAIrE,MAAM,sEAGXmmS,EAT6B,GAY3BC,GAAoB,WAC7B,SAASA,EAAkBn2N,EAAiB+6K,EAAgBh3F,EAAkBjyJ,EAAMonP,EAAiB5zB,GAGnGtyN,KAAKgtE,gBAAkBA,EACvBhtE,KAAK+nP,eAAiBA,EACtB/nP,KAAK+wJ,iBAAmBA,EACxB/wJ,KAAKlB,KAAOA,EACZkB,KAAKkmP,gBAAkBA,EACvBlmP,KAAKsyN,UAAYA,EACjBtyN,KAAKojS,UAAW,EAOlB,OAJAD,EAAkBroS,UAAUuoS,cAAgB,SAAuB7lS,GACjE,OAAO,IAAI8lS,GAAQtjS,KAAKgtE,gBAAiBhtE,KAAK+wJ,iBAAkBvzJ,EAAQwC,KAAK+nP,eAAgB/nP,KAAKlB,KAAMkB,KAAKkmP,kBAGxGi9C,EAjBsB,GAoBpBG,GAAoBrf,GAAesf,CAAO/gB,EAAW,WAC9D,SAAS8gB,EAAQt2N,EAAiB+jF,EAAkBvzJ,EAAQuqP,EAAgBjpP,EAAMonP,GAGhFlmP,KAAKgtE,gBAAkBA,EACvBhtE,KAAK+wJ,iBAAmBA,EACxB/wJ,KAAKxC,OAASA,EACdwC,KAAK+nP,eAAiBA,EACtB/nP,KAAKlB,KAAOA,EACZkB,KAAKkmP,gBAAkBA,EA0GzB,OAvGAo9C,EAAQxoS,UAAU0oS,aAAe,SAAsB5kS,GACrDoB,KAAKyjS,eAAe3c,SAASloR,EAAOoB,KAAKxC,OAAQwC,KAAK+nP,iBAGxDu7C,EAAQxoS,UAAU4oS,aAAe,SAAsB9kS,GACrDoB,KAAK+wJ,iBAAiBluJ,OAAO7C,KAAKqkC,OAAQzlC,EAAOoB,KAAKkmP,kBAGxDo9C,EAAQxoS,UAAUE,KAAO,SAAcmY,EAAS47C,EAAUgiB,GACxD,GAAK/wE,KAAK+2E,QAAV,CAGA,GAAI5jE,IAAYyvQ,EAWd,OAVA7xM,EAAW/wE,KAAKyjS,eAAe5c,SAAS7mR,KAAKxC,OAAQwC,KAAK+nP,iBAC1Dh5L,EAAW/uD,KAAK+wJ,iBAAiBi3F,SAAShoP,KAAKqkC,OAAQrkC,KAAKkmP,oBAC3Cn1K,GACf/wE,KAAKwjS,aAAaz0O,QAEhB/uD,KAAKlB,OAASkyR,GAAY/gI,UAC5BjwJ,KAAK4jR,WACL5jR,KAAK+wJ,iBAAiByzH,QAAQxkR,KAAMA,KAAKqkC,QACzCrkC,KAAKgkR,WAAU,KAInB,GAAI7wQ,IAAYwvQ,EAMhB,MAAM,IAAI5lR,MAAM,2BAA6BoW,GALvC47C,IAAa/uD,KAAK+wJ,iBAAiBi3F,SAAShoP,KAAKqkC,OAAQrkC,KAAKkmP,kBAChElmP,KAAK0jS,aAAa30O,KAOxBu0O,EAAQxoS,UAAUqE,KAAO,SAAcklC,GACrC,GAAIrkC,KAAK+2E,QAAS,CAChB,GAAI/2E,KAAKqkC,SAAWA,EAClB,OAEFrkC,KAAK0lE,SAEP1lE,KAAK+2E,SAAU,EACf/2E,KAAKqkC,OAASA,EAEVrkC,KAAK+wJ,iBAAiB5xJ,MACxBa,KAAK+wJ,iBAAiB5xJ,KAAKa,KAAMqkC,EAAQrkC,KAAKkmP,iBAGhD,IAAIpnP,EAAOkB,KAAKlB,KAChB,IAAKkB,KAAKyjS,eAAgB,CACxB,IAAIvoR,EAASpc,IAASkyR,GAAYE,QAAUpyR,IAASkyR,GAAYlF,SAAW,cAAgB,cAC5F9rR,KAAKyjS,eAAiBzjS,KAAKgtE,gBAAgB9xD,GAAQlb,KAAKxC,OAAQwC,KAAK+nP,gBAMvE,GAHI,SAAU/nP,KAAKyjS,gBACjBzjS,KAAKyjS,eAAetkS,OAElBa,KAAKlB,OAASkyR,GAAYlF,SAAU,CACtC,IAAIltR,EAAQoB,KAAK+wJ,iBAAiBi3F,SAAS3jN,EAAQrkC,KAAKkmP,iBACxDlmP,KAAKwjS,aAAa5kS,GAGhBE,IAASkyR,GAAY/gI,UAEdnxJ,IAASkyR,GAAYnF,OAC9BnH,EAAsB1kR,MACblB,IAASkyR,GAAYE,QAC9BlxR,KAAK+wJ,iBAAiByzH,QAAQxkR,KAAMqkC,GACpCrkC,KAAKyjS,eAAe1uR,UAAU4tQ,EAAe3iR,OACpClB,IAASkyR,GAAYlF,UAC9B9rR,KAAKyjS,eAAe1uR,UAAU4tQ,EAAe3iR,QAIjDsjS,EAAQxoS,UAAU4qE,OAAS,WACpB1lE,KAAK+2E,UAGV/2E,KAAK+2E,SAAU,EACX/2E,KAAK+wJ,iBAAiBrrF,QACxB1lE,KAAK+wJ,iBAAiBrrF,OAAO1lE,KAAMA,KAAKqkC,QAE1CrkC,KAAKqkC,OAAS,KACV,WAAYrkC,KAAKyjS,gBACnBzjS,KAAKyjS,eAAe/9N,SAElB1lE,KAAKyjS,eAAe3uR,aACtB9U,KAAKyjS,eAAe3uR,YAAY6tQ,EAAe3iR,MAEjDA,KAAKgkR,WAAU,KAGjBsf,EAAQxoS,UAAU0pR,QAAU,SAAiBx8B,GAC3C,GAAKhoP,KAAK+2E,QAAV,CAGA,GAAIixK,EAAU,CACZ,IAAIppP,EAAQoB,KAAK+wJ,iBAAiBi3F,SAAShoP,KAAKqkC,OAAQrkC,KAAKkmP,iBAC7DlmP,KAAKwjS,aAAa5kS,GAEpBoB,KAAK+wJ,iBAAiByzH,QAAQxkR,KAAMA,KAAKqkC,UAGpCi/P,EAnHuD,KAoHxD9gB,EAEGmhB,GAAiB,WAC1B,SAASA,EAAe32N,EAAiB+6K,EAAgBh3F,EAAkBm1F,GAGzElmP,KAAKgtE,gBAAkBA,EACvBhtE,KAAK+nP,eAAiBA,EACtB/nP,KAAK+wJ,iBAAmBA,EACxB/wJ,KAAKkmP,gBAAkBA,EAOzB,OAJAy9C,EAAe7oS,UAAUuoS,cAAgB,SAAuB7lS,GAC9D,OAAO,IAAIomS,GAAK5jS,KAAKgtE,gBAAiBhtE,KAAK+wJ,iBAAkBvzJ,EAAQwC,KAAK+nP,eAAgB/nP,KAAKkmP,kBAG1Fy9C,EAdmB,GAiBjBC,GAAO,WAChB,SAASA,EAAK52N,EAAiB+jF,EAAkBvzJ,EAAQuqP,EAAgB7B,GAGvElmP,KAAK+wJ,iBAAmBA,EACxB/wJ,KAAKxC,OAASA,EACdwC,KAAK+nP,eAAiB/6K,EAAgB82M,YAAYtmR,EAAQuqP,GAC1D/nP,KAAKkmP,gBAAkBA,EAgDzB,OA7CA09C,EAAK9oS,UAAU+oS,WAAa,SAAoBC,GAC9C,IAAIl8N,EAAkB5nE,KAAKqkC,OAAOujC,gBAClC/sE,OAAOgI,OAAO+kE,EAAiBk8N,GAC/Bl8N,EAAgBk8N,OAASA,EACzB,IACI/zR,EAAS/P,KAAK+wJ,iBAAiBi3F,SAAShoP,KAAKqkC,OAAQrkC,KAAKkmP,iBAD3C,GAGnB,IAAK,IAAI7jO,YADFulD,EAAgBk8N,OACNA,SACRl8N,EAAgBvlD,GAEzB,OAAOtS,GAGT6zR,EAAK9oS,UAAUqE,KAAO,SAAcklC,GAClC,IAAI0/P,EAAU/jS,KAEd,GAAIA,KAAK+2E,QAAS,CAChB,GAAI/2E,KAAKqkC,SAAWA,EAClB,OAEFrkC,KAAK0lE,SAEP1lE,KAAK+2E,SAAU,EACf/2E,KAAKqkC,OAASA,EAEVrkC,KAAK+wJ,iBAAiB5xJ,MACxBa,KAAK+wJ,iBAAiB5xJ,KAAKa,KAAMqkC,EAAQrkC,KAAKkmP,iBAEhDlmP,KAAK+nP,eAAe++B,UAAS,SAAUgd,GACrC,OAAOC,EAAQF,WAAWC,OAI9BF,EAAK9oS,UAAU4qE,OAAS,WACjB1lE,KAAK+2E,UAGV/2E,KAAK+2E,SAAU,EACX/2E,KAAK+wJ,iBAAiBrrF,QACxB1lE,KAAK+wJ,iBAAiBrrF,OAAO1lE,KAAMA,KAAKqkC,QAE1CrkC,KAAKqkC,OAAS,KACdrkC,KAAK+nP,eAAe++B,SAAS,QAGxB8c,EAvDS,GA0DPI,GAAyB,WAClC,SAASA,EAAuBtmS,GAG9BsC,KAAKtC,KAAOA,EAmBd,OAhBAsmS,EAAuBC,WAAa,SAAoBvmS,GACtD,GAAIA,EAAK+0N,SAAS,kBAChB,OAAO,IAAIuxE,EAAuB3gL,EAAU3lH,EAAKqE,UAAU,EAAGrE,EAAK9C,OAAS,OAIhFopS,EAAuBlpS,UAAUylF,WAAa,SAAoBlyE,EAAW7Q,GAC3EwC,KAAK6nD,SAAWx5C,EAAU7P,IAAIhB,IAGhCwmS,EAAuBlpS,UAAUqrD,SAAW,SAAkBg4M,EAAUzgQ,GACtEygQ,EAAS+lC,uBAAuBxmS,GAAQsC,KAAKtC,KAAMsC,KAAK6nD,WAG1Dm8O,EAAuBlpS,UAAU46D,KAAO,SAAcrnD,EAAW7Q,KAE1DwmS,EAvB2B,GA0B7B,SAASG,GAAeC,GAC7B,QAAqBxmS,IAAjBwmS,GAAsD,iBAAjBA,EACvC,OAAO,SAAU5mS,GACf,IAAS4uC,OAAO,IAAStwB,SAAU,IAAIkoR,GAAuBI,GAAe5mS,IAIjF,IAAS4uC,OAAO,IAAStwB,SAAU,IAAIkoR,GAA0BI,GAG5D,IAAIC,GAA0B,WACnC,SAASA,EAAwB3mS,GAG/BsC,KAAKtC,KAAOA,EAmBd,OAhBA2mS,EAAwBJ,WAAa,SAAoBvmS,GACvD,GAAIA,EAAK+0N,SAAS,mBAChB,OAAO,IAAI4xE,EAAwBhhL,EAAU3lH,EAAKqE,UAAU,EAAGrE,EAAK9C,OAAS,OAIjFypS,EAAwBvpS,UAAUylF,WAAa,SAAoBlyE,EAAW7Q,GAC5EwC,KAAK6nD,SAAWx5C,EAAU7P,IAAIhB,IAGhC6mS,EAAwBvpS,UAAUqrD,SAAW,SAAkBg4M,EAAUzgQ,GACvEygQ,EAASmmC,wBAAwB5mS,GAAQsC,KAAKtC,KAAMsC,KAAK6nD,WAG3Dw8O,EAAwBvpS,UAAU46D,KAAO,SAAcrnD,EAAW7Q,KAE3D6mS,EAvB4B,GA0B9B,SAASE,GAAgBH,GAC9B,QAAqBxmS,IAAjBwmS,GAAsD,iBAAjBA,EACvC,OAAO,SAAU5mS,GACf,IAAS4uC,OAAO,IAAStwB,SAAU,IAAIuoR,GAAwBD,GAAe5mS,IAIlF,IAAS4uC,OAAO,IAAStwB,SAAU,IAAIuoR,GAA2BD,GAG7D,IAAII,GAAqB,WAC9B,SAASA,EAAmBpC,EAAc7I,EAAaxoI,EAAkB+oI,EAAoB3wK,EAAgB+8H,GAG3GlmP,KAAKoiS,aAAeA,EACpBpiS,KAAKu5R,YAAcA,EACnBv5R,KAAK+wJ,iBAAmBA,EACxB/wJ,KAAK85R,mBAAqBA,EAC1B95R,KAAKojS,UAAW,EAChBpjS,KAAKmpH,eAAiBA,EACtBnpH,KAAKkmP,gBAAkBA,EAOzB,OAJAs+C,EAAmB1pS,UAAUuoS,cAAgB,SAAuB7lS,GAClE,OAAO,IAAIinS,GAASzkS,KAAKoiS,aAAcpiS,KAAKu5R,YAAav5R,KAAK85R,mBAAoB95R,KAAK+wJ,iBAAkBvzJ,EAAQwC,KAAKmpH,eAAgBnpH,KAAKkmP,kBAGtIs+C,EAjBuB,GAoBrBC,GAAW,WACpB,SAASA,EAASrC,EAAc7I,EAAaO,EAAoB/oI,EAAkBvzJ,EAAQ2rH,EAAgB+8H,GAGzGlmP,KAAKoiS,aAAeA,EACpBpiS,KAAKu5R,YAAcA,EACnBv5R,KAAK85R,mBAAqBA,EAC1B95R,KAAK+wJ,iBAAmBA,EACxB/wJ,KAAKxC,OAASA,EACdwC,KAAKmpH,eAAiBA,EACtBnpH,KAAKkmP,gBAAkBA,EAgDzB,OA7CAu+C,EAAS3pS,UAAU+oS,WAAa,SAAoB7mS,GAClD,IAAI4qE,EAAkB5nE,KAAKqkC,OAAOujC,gBAClCA,EAAgBk8N,OAAS9mS,EACzB,IACI+S,EAAS/P,KAAK+wJ,iBAAiBi3F,SAAShoP,KAAKqkC,OAAQrkC,KAAKkmP,iBAD3C,GAMnB,cAJOt+K,EAAgBk8N,QACR,IAAX/zR,GAAmB/P,KAAKmpH,gBAC1BnsH,EAAMmsH,iBAEDp5G,GAGT00R,EAAS3pS,UAAUi+R,YAAc,SAAqB/7R,GACpDgD,KAAK6jS,WAAW7mS,IAGlBynS,EAAS3pS,UAAUqE,KAAO,SAAcklC,GACtC,GAAIrkC,KAAK+2E,QAAS,CAChB,GAAI/2E,KAAKqkC,SAAWA,EAClB,OAEFrkC,KAAK0lE,SAEP1lE,KAAK+2E,SAAU,EACf/2E,KAAKqkC,OAASA,EAEVrkC,KAAK+wJ,iBAAiB5xJ,MACxBa,KAAK+wJ,iBAAiB5xJ,KAAKa,KAAMqkC,EAAQrkC,KAAKkmP,iBAEhDlmP,KAAKinI,SAAWjnI,KAAKoiS,aAAalyL,iBAAiBlwG,KAAKxC,OAAQwC,KAAKu5R,YAAav5R,KAAMA,KAAK85R,oBAAoB,IAGnH2K,EAAS3pS,UAAU4qE,OAAS,WACrB1lE,KAAK+2E,UAGV/2E,KAAK+2E,SAAU,EACX/2E,KAAK+wJ,iBAAiBrrF,QACxB1lE,KAAK+wJ,iBAAiBrrF,OAAO1lE,KAAMA,KAAKqkC,QAE1CrkC,KAAKqkC,OAAS,KACdrkC,KAAKinI,SAASt7B,UACd3rG,KAAKinI,SAAW,OAGXw9J,EA1Da,GA6DtB,SAASC,GAAM39N,GACb,IAAI0hL,EAAK1hL,EAAQ0hL,GAEjB,QAAW7qP,IAAP6qP,EACF,MAAM,IAAI1rP,MAAM,iDAAmDgqE,EAAQwzF,QAAU,MAGvF,OAAOkuF,EAGF,IAAIk8C,GAAiB,WAC1B,SAASA,EAAe5zI,EAAkB6zI,EAAS1+C,GAGjDlmP,KAAK+wJ,iBAAmBA,EACxB/wJ,KAAK4kS,QAAUA,EACf5kS,KAAKkmP,gBAAkBA,EACvBlmP,KAAKojS,UAAW,EA4BlB,OAzBAuB,EAAe7pS,UAAUuoS,cAAgB,SAAuB7lS,GAC9D,OAAO,IAAIqnS,GAAW7kS,KAAK+wJ,iBAAkB4zI,EAAeG,UAAUtnS,EAAQwC,KAAK4kS,SAAU5kS,KAAKkmP,kBAGpGy+C,EAAeG,UAAY,SAAmB/9N,EAAS69N,GACrD,OAAQA,GACN,IAAK,UACH,OAAO79N,EACT,IAAK,aACH,OAAO29N,GAAM39N,GAAStB,WACxB,IAAK,aACH,OAAOi/N,GAAM39N,GAAStB,WAAW13D,UACnC,IAAK,OACH,OAAO22R,GAAM39N,GAAStB,WAAW/0D,KACnC,QACE,IAAIlT,EAASknS,GAAM39N,GAAS69N,GAE5B,QAAehnS,IAAXJ,EACF,MAAM,IAAIT,MAAM,2BAA6B6nS,EAAU,sDAGzD,OAAOpnS,EAAOuQ,YAIb42R,EAnCmB,GAsCxBE,GAAa,WACf,SAASA,EAAW9zI,EAAkBvzJ,EAAQ0oP,GAG5ClmP,KAAK+wJ,iBAAmBA,EACxB/wJ,KAAKxC,OAASA,EACdwC,KAAKkmP,gBAAkBA,EAgCzB,OA7BA2+C,EAAW/pS,UAAUqE,KAAO,SAAcklC,GACxC,GAAIrkC,KAAK+2E,QAAS,CAChB,GAAI/2E,KAAKqkC,SAAWA,EAClB,OAEFrkC,KAAK0lE,SAEP1lE,KAAK+2E,SAAU,EACf/2E,KAAKqkC,OAASA,EACVrkC,KAAK+wJ,iBAAiB5xJ,MACxBa,KAAK+wJ,iBAAiB5xJ,KAAKa,KAAMqkC,EAAQrkC,KAAKkmP,iBAEhDlmP,KAAK+wJ,iBAAiBluJ,OAAO7C,KAAKqkC,OAAQrkC,KAAKxC,OAAQwC,KAAKkmP,kBAG9D2+C,EAAW/pS,UAAU4qE,OAAS,WACvB1lE,KAAK+2E,UAGV/2E,KAAK+2E,SAAU,EACX/2E,KAAK+wJ,iBAAiBi3F,SAAShoP,KAAKqkC,OAAQrkC,KAAKkmP,mBAAqBlmP,KAAKxC,QAC7EwC,KAAK+wJ,iBAAiBluJ,OAAO7C,KAAKqkC,OAAQ,KAAMrkC,KAAKkmP,iBAEnDlmP,KAAK+wJ,iBAAiBrrF,QACxB1lE,KAAK+wJ,iBAAiBrrF,OAAO1lE,KAAMA,KAAKqkC,QAE1CrkC,KAAKqkC,OAAS,OAGTwgQ,EAtCQ,GAyCbE,GAAkB,CACpBzZ,iBAAkB,SAA0B5tR,GAC1C,OAAO,MAETkuR,gBAAiB,SAAyBluR,GACxC,OAAO,OAIA2nP,IAAiBq9B,EAASD,EAAW,WAC9C,SAASp9B,EAAcr4K,EAAiB85F,GAGtC9mK,KAAKgtE,gBAAkBA,EACvBhtE,KAAK8mK,OAASA,EAgEhB,OA7DAu+E,EAAcvqP,UAAUkqS,wBAA0B,SAAiCj9C,EAAgBh3F,GACjG,IAAIjyJ,EAAOgD,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAKkvR,GAAYnF,OACvF3lC,EAAkBpkP,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAKijS,GAE1F,OAAO,IAAI5B,GAAkBnjS,KAAKgtE,gBAAiB+6K,EAAgB/nP,KAAK8mK,OAAO31J,MAAM4/I,GAAmBjyJ,EAAMonP,IAGhHb,EAAcvqP,UAAUmqS,iBAAmB,SAA0BlkS,EAAKwpF,GACxE,IAAI26M,EAAUllS,KAEd,MAAO,CACL+U,UAAW,SAAmBkS,GAC5B,IAAIonC,EAAW62O,EAAQl4N,gBAAgB82M,YAAY/iR,EAAKwpF,GAExD,OADAl8B,EAASt5C,UAAUkS,GACZ,CACL0kF,QAAS,WACP,OAAOt9C,EAASv5C,YAAYmS,QAOtCo+N,EAAcvqP,UAAU4rP,mBAAqB,SAA4BvtK,GACvE,IAAIgsN,EAAUnlS,KAEd,MAAO,CACL+U,UAAW,SAAmBkS,GAC5B,IAAIonC,OAAW,EACf,GAAI8qB,aAAsBz4E,MACxB2tD,EAAW82O,EAAQn4N,gBAAgBE,iBAAiBiM,QAC/C,GAAIA,aAAsBzsC,IAC/B2hB,EAAW82O,EAAQn4N,gBAAgBwD,eAAe2I,OAC7C,MAAIA,aAAsBspJ,KAG/B,MAAM,IAAI1lO,MAAM,wDAFhBsxD,EAAW82O,EAAQn4N,gBAAgBiE,eAAekI,GAKpD,OADA9qB,EAASt5C,UAAUkS,GACZ,CACL0kF,QAAS,WACP,OAAOt9C,EAASv5C,YAAYmS,QAOtCo+N,EAAcvqP,UAAUsqS,mBAAqB,SAA4Bz9N,EAAgBspF,GACvF,IAAI7lF,EAAQ,CAAEzD,eAAgBA,EAAgBC,gBAAiBi7M,EAAsBl7M,IACrF,OAAO,IAAIi/M,GAAmBx7M,EAAOprE,KAAK8mK,OAAO31J,MAAM8/I,GAAajxJ,KAAKgtE,gBAAiB+3N,KAG5F1/C,EAAcvqP,UAAU+2R,gBAAkB,SAAyB5gI,GACjE,OAAOjxJ,KAAK8mK,OAAO31J,MAAM8/I,IAG3Bo0F,EAAcvqP,UAAUuqS,gBAAkB,SAAyBnmM,GACjEl/F,KAAKgtE,gBAAgB01N,WAAWxjM,IAG3BmmJ,EArEuC,GAsE3Co9B,EAASjtQ,OAAS,CAACkwO,GAAiByrC,IAASzO,GAE9C4iB,GAAW7iE,IAAI3nO,UAEnB,SAASmoS,GAAgB36J,EAAWnjH,GAClC,OAAOogR,GAAkBhb,IAAIjiJ,EAAWnjH,GAG1C,IAAIogR,GAAoB,SAAUC,GAGhC,SAASD,EAAkBj9J,EAAWnjH,GAGpC,OAAOxN,EAA2B3X,KAAMwlS,EAAuBxqS,KAAKgF,KAAMsoI,EAAWnjH,IAiEvF,OAtEAlN,EAAUstR,EAAmBC,GAQ7BD,EAAkBhb,IAAM,SAAcjiJ,EAAWnjH,GAO/C,MANM,qBAAsBA,GAC1B+mB,QAAQ5tC,eAAe6mB,EAAK,mBAAoB,CAC9CvmB,MAAO2mS,EAAkBtmS,OAAOqpI,EAAWnjH,GAC3C5mB,YAAY,EAAO8C,cAAc,IAG9B8jB,EAAIsgR,kBAGbF,EAAkBtmS,OAAS,SAAgBqpI,EAAWnjH,GACpD,IAAIkpC,EAAW,IAAIk3O,EAAkBj9J,EAAWnjH,GAE5Cka,EAAQimQ,GA8CZ,OA7CIjmQ,EAAMvuB,MAAQqU,EAAIrU,KAAOuuB,EAAMviB,SAAWqI,EAAIrI,QAAUuiB,EAAMgQ,QAAUlqB,EAAIkqB,QAC9EhQ,EAAQ,CACNvuB,IAAKqU,EAAIrU,IACTgM,OAAQqI,EAAIrI,OACZuyB,MAAOlqB,EAAIkqB,QAIflqB,EAAIrU,IAAM,WACR,IAAIxT,EAAO,MACPooS,EAAUvgR,EAAIurD,KACdg6M,EAAmBrrP,EAAMvuB,IAAI7M,MAAMkhB,EAAKrjB,WACxCu2R,EAAWlzQ,EAAIurD,OAASg1N,EAQ5B,OAPKrN,GACHhqO,EAASy7N,gBAAgB,CACvBxsR,KAAMA,EACN+B,OAAQ8lB,EACRvmB,MAAO8B,MAAM0hB,KAAK+C,GAAKwvC,QAGpB+1N,GAGTvlQ,EAAIrI,OAAS,WACX,IAAIu7Q,EAAWlzQ,EAAIy0E,IAAI93F,UAAU,IAC7B4oR,EAAmBrrP,EAAMviB,OAAO7Y,MAAMkhB,EAAKrjB,WAQ/C,OAPIu2R,GACFhqO,EAASy7N,gBAAgB,CACvBxsR,KAAM,SACN+B,OAAQ8lB,EACRvmB,MAAOkD,UAAU,KAGd4oR,GAGTvlQ,EAAIkqB,MAAQ,WACV,IAAIq7O,EAAmBrrP,EAAMgQ,MAAMprC,MAAMkhB,EAAKrjB,WAK9C,OAJAusD,EAASy7N,gBAAgB,CACvBxsR,KAAM,QACN+B,OAAQ8lB,IAEHulQ,GAGFr8N,GAGFk3O,EAvEe,CAwEtB5b,IAEK,SAAShgC,GAAWg8C,EAAgBzmS,EAAKkC,GAC9C,SAAS6iI,EAAKzmI,EAAQ0B,EAAKkC,EAAYoB,GACrC,IAAIojS,OAA2BhoS,IAARsB,EACnB0mS,IACFpoS,EAASA,EAAO1C,UAChBoE,EAAwB,iBAAXsD,EAAsBA,EAASA,EAAO9E,MAGrD,IAAImoS,EAAoB,IAAM3mS,EAC1B4mS,EAA0B,CAC5BzkS,cAAc,EACd9C,YAAY,EACZ+C,UAAU,GAGRoS,EAAelR,GAAUA,EAAOujS,eAAiB7mS,EAAM,UAuC3D,GArCIkC,EACoC,mBAA3BA,EAAWslE,cACpBo/N,EAAwBlnS,MAAQwC,EAAWslE,eAG7CtlE,EAAa,GAGT,eAAgBA,IACpBA,EAAW7C,YAAa,UAGnB6C,EAAWxC,aACXwC,EAAWE,gBACXF,EAAWslE,YAElBx6B,QAAQ5tC,eAAed,EAAQqoS,EAAmBC,GAElD1kS,EAAW5C,IAAM,WACf,OAAOwB,KAAK6lS,IAEdzkS,EAAW+jB,IAAM,SAAU4pC,GACzB,IAAIgiB,EAAW/wE,KAAK6lS,GAChB92O,IAAagiB,IAIjB/wE,KAAK6lS,GAAqB92O,EAC1B7iB,QAAQ5tC,eAAe0B,KAAM6lS,EAAmB,CAAEtnS,YAAY,IAE1DyB,KAAK0T,IACP1T,KAAK0T,GAAcq7C,EAAUgiB,EAAU7xE,KAI3CkC,EAAW5C,IAAIgmI,aAAe,CAACqhK,IAE3BD,EAGF,OAAOxkS,EAFP8qC,QAAQ5tC,eAAed,EAAQ0B,EAAKkC,GAMxC,YAAYxD,IAARsB,EACK,SAAUL,EAAGq7B,EAAG/7B,GACrB,OAAO8lI,EAAKplI,EAAGq7B,EAAG/7B,EAAGwnS,IAGlB1hK,EAAK0hK,EAAgBzmS,EAAKkC,GAGnC,IAAI4qR,GAAU,GAEP,SAASC,GAAuB90O,EAASz5C,GACzCsuR,GAAQjxR,eAAe2C,KAC1BsuR,GAAQtuR,GAAQ,GAElBy5C,EAAQ0sO,gBAAgBmI,GAAStuR,GAG5B,SAASsoS,GAAetoS,GACzBsuR,GAAQjxR,eAAe2C,IACzBsuR,GAAQtuR,O,k1DC/9KZ,aAIE,WACS0f,GAAA,KAAAA,SACPpd,KAAKC,OAAS,aAAWC,UAAU,iB,MA6EvC,OAzCe,YAAA+lS,mBAAb,SAAgCh6O,G,qBAAqBjwD,GAAO,W,kDACnD,SAAMgE,KAAKod,OAAO5e,IAAI,mBAAmBytD,GAC7C9oD,MAAK,SAACsY,GACL,OAAiBA,M,OAFrB,MAAO,CAAP,EAAO,kBAMI,YAAAyqR,iBAAb,SAA8B1oR,G,qBAAgBxhB,GAAO,W,kDAC5C,SAAMgE,KAAKod,OAAOne,OAAO,mBAAmBue,EAAMyuC,WAAczuC,GACpEra,MAAK,SAACsY,GACL,OAAeA,M,OAFnB,MAAO,CAAP,EAAO,kBAMI,YAAA0qR,uBAAb,SAAoCpiJ,G,qBAAyB/nJ,GAAO,W,kDAC3D,SAAMgE,KAAKod,OAAO5e,IAAI,uBAAuBulJ,GACjD5gJ,MAAK,SAACsY,GACL,OAAiBA,M,OAFrB,MAAO,CAAP,EAAO,kBAMI,YAAA2qR,qBAAb,SAAkC5oR,G,qBAAgBxhB,GAAO,W,kDAChD,SAAMgE,KAAKod,OAAOne,OAAO,uBAAuBue,EAAMumI,eAAkBvmI,GAC5Era,MAAK,SAACsY,GACL,OAAeA,M,OAFnB,MAAO,CAAP,EAAO,kBAMI,YAAAw2I,iBAAb,SAA8B7mG,EAAkBK,G,qBAAuBzvD,GAAO,W,kDACrE,SAAMgE,KAAKod,OAAO5e,IAAI,iBAAiB4sD,EAAQ,IAAIK,GACvDtoD,MAAK,SAACsY,GACL,OAAiBA,M,OAFrB,MAAO,CAAP,EAAO,kBAMI,YAAA4qR,eAAb,SAA4B7oR,G,qBAAgBxhB,GAAO,W,kDAC1C,SAAMgE,KAAKod,OAAOne,OAAO,iBAAiBue,EAAM4tC,SAAQ,IAAI5tC,EAAMiuC,aAAgBjuC,GACtFra,MAAK,SAACsY,GACL,OAAeA,M,OAFnB,MAAO,CAAP,EAAO,kBA9EE6qR,EAAa,GADzB,uB,uBAMsC,mB,OAAA,IAApB,UAAoB,YAL1BA,GAAb,K,o2DCAA,aAIE,WACSlpR,GAAA,KAAAA,SACPpd,KAAKC,OAAS,aAAWC,UAAU,wB,MAUvC,OAPe,YAAAqd,OAAb,W,qBAAuBvhB,GAAO,W,kDACrB,SAAMgE,KAAKod,OAAO5e,IAAI,iBAC1B2E,MAAK,SAACsY,GACL,OAAwBA,M,OAF5B,MAAO,CAAP,EAAO,kBAVE8qR,EAAoB,GADhC,uB,uBAM+B,mB,OAAA,IAAb,UAAa,YALnBA,GAAb,K,m2DCEA,aAGE,WACSnpR,GAAA,KAAAA,SACPpd,KAAKC,OAAS,aAAWC,UAAU,0C,MAqDvC,OAlDe,YAAA4T,KAAb,SAAkBwJ,G,qBAAoCthB,GAAO,W,kDACpD,SAAMgE,KAAKod,OAAOX,KAAK,uCAAwCa,GACnEna,MAAK,SAAAsY,GACJ,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAMK,YAAA8B,OAAb,W,qBAAuBvhB,GAAO,W,kDACrB,SAAMgE,KAAKod,OAAO5e,IAAI,mCAC1B2E,MAAK,SAAAsY,GACJ,OAAsBA,M,OAF1B,MAAO,CAAP,EAAO,kBAMG,YAAAa,QAAb,SAAqBC,G,qBAAavgB,GAAO,W,kDAChC,SAAMgE,KAAKod,OAAOd,QAAQ,kCAAmCC,GACjEpZ,MAAK,SAAAsY,GACJ,OAAoBA,M,OAFxB,MAAO,CAAP,EAAO,kBAMI,YAAAxc,OAAb,SAAoBue,G,qBAAqBxhB,GAAO,W,kDACvC,SAAMgE,KAAKod,OAAOne,OAAO,kCAAmCue,GAChEra,MAAK,SAAAsY,GACJ,OAAoBA,M,OAFxB,MAAO,CAAP,EAAO,kBAMI,YAAAiB,OAAb,SAAoBc,G,qBAAqBxhB,GAAO,W,kDACvC,SAAMgE,KAAKod,OAAOT,WAAW,kCAAmCa,EAAMjB,GAAI,KAAMiB,GACpFra,MAAK,SAAAsY,GACJ,OAAoBA,M,OAFxB,MAAO,CAAP,EAAO,kBAMI,YAAAqB,OAAb,SAAoBP,G,qBAAavgB,GAAO,W,kDAC/B,SAAMgE,KAAKod,OAAOL,WAAW,kCAAmCR,GACpEpZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAAsa,YAAb,SAAyBlB,G,qBAAavgB,GAAO,W,kDACpC,SAAMgE,KAAKod,OAAOX,KAAK,gDAAgDF,GAC3EpZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAAooC,cAAb,SAA2Bf,G,qBAAwBxuC,GAAO,W,kDACjD,SAAMgE,KAAKod,OAAOX,KAAK,kDAAkD+tB,GAC7ErnC,MAAK,SAACsY,GAAsB,OAAAA,M,OAD/B,MAAO,CAAP,EAAO,kBAtDE+qR,EAAsC,GADlD,uB,uBAKsC,mB,OAAA,IAApB,UAAoB,YAJ1BA,GAAb,K,o2DCAA,aAGE,WACSppR,GAAA,KAAAA,SAEPpd,KAAKC,OAAS,aAAWC,UAAU,kB,MAyCvC,OAtCe,YAAAumS,0BAAb,SAAuCppR,G,qBAAsBrhB,GAAO,W,kDAC3D,SAAMgE,KAAKod,OAAO5e,IAAI,gCAAgC6e,GAC1Dla,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAAa,QAAb,SAAqBC,G,qBAAavgB,GAAO,W,kDAChC,SAAMgE,KAAKod,OAAOd,QAAQ,gBAAiBC,GAC/CpZ,MAAK,SAACsY,GACL,OAAsBA,M,OAF1B,MAAO,CAAP,EAAO,kBAMI,YAAAxc,OAAb,SAAoBue,G,qBAAuBxhB,GAAO,W,kDACzC,SAAMgE,KAAKod,OAAOne,OAAO,gBAAiBue,GAC9Cra,MAAK,SAACsY,GACL,OAAsBA,M,OAF1B,MAAO,CAAP,EAAO,kBAMI,YAAAiB,OAAb,SAAoBc,G,qBAAuBxhB,GAAO,W,kDACzC,SAAMgE,KAAKod,OAAOT,WAAW,gBAAiBa,EAAMjB,GAAI,KAAMiB,GACpEra,MAAK,SAACsY,GACL,OAAsBA,M,OAFxB,MAAO,CAAP,EAAO,kBAMI,YAAAqB,OAAb,SAAoBP,G,qBAAavgB,GAAO,W,kDAC/B,SAAMgE,KAAKod,OAAOL,WAAW,gBAAiBR,GAClDpZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAAsa,YAAb,SAAyBlB,G,qBAAavgB,GAAO,W,kDACpC,SAAMgE,KAAKod,OAAOX,KAAK,8BAA8BF,GACzDpZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBA3CEujS,EAAoB,GADhC,a,uBAK+B,mB,OAAA,IAAb,UAAa,YAJnBA,GAAb,K,iDCRA,IAAYC,EAAZ,2CAAYA,GACV,+BACA,qCACA,iDACA,iDACA,2CACA,+BACA,iCACA,6BACA,mDACA,6BAVF,CAAYA,MAAuB,M,iCCAnC,yDAAI9lS,EAA4B,mBAAXnC,QAAoD,iBAApBA,OAAOoC,SAAwB,SAAUC,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAXrC,QAAyBqC,EAAIC,cAAgBtC,QAAUqC,IAAQrC,OAAO5D,UAAY,gBAAkBiG,GAU/P,IAAI6lS,EACF,EADEA,EAEI,EAFJA,EAGI,EAHJA,EAID,EAGNC,EAAqB,CACvBC,WAAY,EACZ1zK,SAAU,IACVpuH,SAAU4hS,GAGDG,EAAmB,WAC5B,SAASA,EAAiBC,GAKxB,GAFAhnS,KAAKgnS,YAAcnsS,OAAOgI,OAAO,GAAIgkS,EAAoBG,GAAe,IAEpEhnS,KAAKgnS,YAAYhiS,WAAa4hS,GAA6B5mS,KAAKgnS,YAAY5zK,UAAY,IAC1F,MAAM,IAAIr2H,MAAM,uGA0EpB,OAtEAgqS,EAAiBjsS,UAAU6C,QAAU,SAAUspS,GAC7C,SAAStpS,EAAQ2qJ,GACf,OAAO2+I,EAAShjS,MAAMjE,KAAM8B,WAO9B,OAJAnE,EAAQqhB,SAAW,WACjB,OAAOioR,EAASjoR,YAGXrhB,EAT4B,EAUnC,SAAUA,GAQV,OAPKA,EAAQqpS,cACXrpS,EAAQqpS,YAAcnsS,OAAOgI,OAAO,GAAI7C,KAAKgnS,aAC7CrpS,EAAQqpS,YAAYvtN,QAAU,GAGhC97E,EAAQqpS,YAAYE,aAAevpS,EAAQ4+B,QAEpC5+B,KAGTopS,EAAiBjsS,UAAU2gB,SAAW,SAAU0rR,GAC9C,SAAS1rR,EAAS2rR,EAAKC,GACrB,OAAOF,EAAUljS,MAAMjE,KAAM8B,WAO/B,OAJA2Z,EAASuD,SAAW,WAClB,OAAOmoR,EAAUnoR,YAGZvD,EAT6B,EAUpC,SAAUA,EAAU9d,GAEpB,cADOA,EAAQqpS,YACRvrR,KAGTsrR,EAAiBjsS,UAAUwsS,cAAgB,SAAuBxqS,EAAOa,EAAS4pS,GAChF,IAAIP,EAAcrpS,EAAQqpS,YACtBE,EAAeF,EAAYE,aAE/B,OAAOlrS,EAAQC,UAAUkH,MAAK,WAC5B,GAAI6jS,EAAYvtN,QAAUutN,EAAYF,WAAY,CAChD,IAAI/2R,GAASi3R,EAAYQ,SAAUR,EAAYQ,QAAQ1qS,EAAOa,GAE9D,OAAO3B,EAAQC,QAAQ8T,GAAQ5M,MAAK,SAAUqkS,GAC5C,GAAIA,EAEF,OADAR,EAAYvtN,UACL,IAAIz9E,GAAQ,SAAUC,GAC3B,OAAO,WAAS+vE,OAAOnuE,WAAW5B,EAyBhD,SAAwB+qS,GACtB,IAAI5zK,EAAW4zK,EAAY5zK,SACvBpuH,EAAWgiS,EAAYhiS,SACvByiS,EAAoBT,EAAYS,kBAChCC,EAAoBV,EAAYU,kBAChCjuN,EAAUutN,EAAYvtN,QAG1B,GAAwB,mBAAbz0E,EACT,OAAOgiS,EAAYhiS,SAASy0E,GAG9B,OAAQz0E,GACN,KAAK4hS,EACH,OAAOe,EAAgBf,GAAqBxzK,GAC9C,KAAKwzK,EACH,OAAOe,EAAgBf,GAA2BntN,EAAS25C,GAC7D,KAAKwzK,EACH,OAAOe,EAAgBf,GAA2BntN,EAAS25C,GAC7D,KAAKwzK,EACH,OAAOe,EAAgBf,GAAsBntN,EAAS25C,EAAUq0K,EAAmBC,GACrF,QACE,MAAM,IAAI3qS,MAAM,gCA/CmC6qS,CAAeZ,IAAgB,MACzE7jS,MAAK,WACN,IAAI0kS,EAAaX,EAAa3qQ,QAC9B,MAAuC,mBAA5ByqQ,EAAYc,YACdd,EAAYc,YAAYD,EAAYN,GAEtCM,KACN1kS,MAAK,SAAU0kS,GAChB,OAAON,EAAW/rR,MAAM3gB,OAAOgI,OAAOglS,EAAY,CAAEb,YAAaA,QAKrE,aADOrpS,EAAQqpS,YACTlqS,KAKV,aADOa,EAAQqpS,YACTlqS,MAIHiqS,EAjFqB,GA8G9B,IAAIY,EAAkB,CAAC,SAAUv0K,GAC/B,OAAOA,GACN,SAAU20K,EAAY30K,GACvB,OAAOA,EAAW20K,GACjB,SAAUA,EAAY30K,GACvB,OAAsB,IAAf20K,EAAmB30K,EAAWjwG,KAAKoD,IAAI6sG,EAAU20K,GAAc,KACrE,SAAUA,EAAY30K,GACvB,IAAIq0K,EAAoB3lS,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,EACxF4lS,EAAoB5lS,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,IAE5F,OAAOqhB,KAAKk3D,UAAYqtN,EAAoBD,GAAqBA,IAGxDO,EAA0B,WACnC,SAASA,IAGPhoS,KAAKkC,QAAU,GACflC,KAAK2M,SAAW,GAChB3M,KAAKioS,aAAe,GAkCtB,OA/BAD,EAAwBltS,UAAU8tD,YAAc,SAAqB1mD,GAEnE,OADAlC,KAAKkC,QAAUA,EACRlC,MAGTgoS,EAAwBltS,UAAUigB,aAAe,SAAsBpO,GAErE,OADA3M,KAAK2M,SAAWA,EACT3M,MAGTgoS,EAAwBltS,UAAUotS,gBAAkB,SAAyBC,GAE3E,OADAnoS,KAAKioS,aAAa/sS,KAAKitS,GAChBnoS,MAGTgoS,EAAwBltS,UAAUstS,yBAA2B,WAG3D,OADAvtS,OAAOgI,OAAO7C,KAAK2M,SADE,CAAEqO,YAAa,eACShb,KAAK2M,UAC3C3M,KAAKqoS,wBAGdL,EAAwBltS,UAAUutS,qBAAuB,WACvD,OAAOroS,KAAKkoS,gBAAgB,CAAEzsR,SAAU6sR,KAG1CN,EAAwBltS,UAAUytS,UAAY,SAAmB/lS,GAC/D,IAAI2lS,EAAc,IAAIpB,EAAiBvkS,GAEvC,OAAOxC,KAAKkoS,gBAAgBC,IAGvBH,EAxC4B,GA2CrC,SAASM,EAAc7sR,GACrB,IAAKA,EAASmqD,GACZ,MAAMnqD,EAGR,OAAOA,EAGF,IAAI+sR,EAAa,WACtB,SAASA,IAUP,GAPAxoS,KAAKyoS,mBAAqB,EAC1BzoS,KAAKua,cAAe,EACpBva,KAAK0O,cAAe,EACpB1O,KAAKkC,QAAU,GACflC,KAAK2M,SAAW,KAChB3M,KAAKioS,aAAe,GAEC,oBAAVzsR,MACT,MAAM,IAAIze,MAAM,2KAgJpB,OA5IAyrS,EAAW1tS,UAAU8U,UAAY,SAAmBpN,GAClD,IAAIkmS,OAAmB,EAEvB,GAAwE,iBAAjD,IAAXlmS,EAAyB,YAAc3B,EAAQ2B,IACzDkmS,EAAmB,CAAE/7R,SAAUnK,OAC1B,IAAsB,mBAAXA,EAWhB,MAAM,IAAIzF,MAAM,mBAVhB2rS,EAAmB,IAAIV,GACN9lS,QAAUlC,KAAKkC,QAChCwmS,EAAiB/7R,SAAW9R,OAAOgI,OAAO,GAAI7C,KAAK2M,UACnD+7R,EAAiBT,aAAejoS,KAAKioS,aAErC,IAAI/pS,EAAIsE,EAAOkmS,GACXV,EAAwBltS,UAAU6tS,cAAczqS,KAClDwqS,EAAmBxqS,GAMvB,IAAIyO,EAAW+7R,EAAiB/7R,SAChC,GAAIA,GAAYi8R,QAAQ9tS,UAAU6tS,cAAch8R,EAASsO,SACvD,MAAM,IAAIle,MAAM,2CAGlB,IAAIkrS,EAAeS,EAAiBT,aAEpC,GAAIA,GAAgBA,EAAartS,OAAQ,CACvC,GAAIqtS,EAAapjS,QAAO,SAAUqC,GAChC,OAAO6/R,EAAiBjsS,UAAU6tS,cAAczhS,MAC/CtM,OAAS,EACV,MAAM,IAAImC,MAAM,yCAGlB,IAAI8rS,EAAwBZ,EAAa/0H,WAAU,SAAUhsK,GAC3D,OAAO6/R,EAAiBjsS,UAAU6tS,cAAczhS,MAGlD,GAAI2hS,GAAyB,GAAKA,IAA0BZ,EAAartS,OAAS,EAChF,MAAM,IAAImC,MAAM,+DASpB,OALAiD,KAAKkC,QAAUwmS,EAAiBxmS,QAChClC,KAAK2M,SAAWA,EAChB3M,KAAKioS,aAAeS,EAAiBT,cAAgB,GACrDjoS,KAAK0O,cAAe,EAEb1O,MAGTwoS,EAAW1tS,UAAU0gB,MAAQ,SAAUstR,GACrC,SAASttR,EAAMutR,EAAKC,GAClB,OAAOF,EAAO7kS,MAAMjE,KAAM8B,WAO5B,OAJA0Z,EAAMwD,SAAW,WACf,OAAO8pR,EAAO9pR,YAGTxD,EAToB,EAU3B,SAAUuD,EAAOzb,GACjB,IAAIqC,EAAQ3F,KAEZipS,EAAkBjuS,KAAKgF,MAEvB,IAAIrC,EAAUqC,KAAKkpS,aAAanqR,EAAOzb,GACvC,OAuHJ,SAAwB3F,EAASsqS,EAAckB,GAC7C,OAAOC,EAAkBzrS,EAASsqS,EAAc,UAAW,eAAgBkB,GAxHlEE,CAAe1rS,EAASqC,KAAKioS,aAAcjoS,MAAMmD,MAAK,SAAU4M,GACrE,IAAI0L,EAAW,KAEf,GAAI6tR,SAASxuS,UAAU6tS,cAAc54R,GACnC0L,EAAWzf,EAAQC,QAAQ8T,OACtB,KAAIw5R,QAAQzuS,UAAU6tS,cAAc54R,GAIzC,MAAM,IAAIhT,MAAM,8GAAgHgT,EAAS,KAHzIpS,EAAUoS,EACV0L,EAAWD,MAAMzL,GAKnB,OA+GN,SAAyB0L,EAAUwsR,EAActqS,EAASwrS,GACxD,OAAOC,EAAkB3tR,EAAUwsR,EAAc,WAAY,gBAAiBtqS,EAASwrS,GAhH5EK,CAAgB/tR,EAAU9V,EAAMsiS,aAActqS,EAASgI,MAC7DxC,MAAK,SAAU4M,GAChB,OAAIw5R,QAAQzuS,UAAU6tS,cAAc54R,GAC3BpK,EAAM6V,MAAMzL,IAErB05R,EAAgBzuS,KAAK2K,GACdoK,SAIXy4R,EAAW1tS,UAAUouS,aAAe,SAAsBnqR,EAAOzb,GAC/D,IAAIqJ,EAAW3M,KAAK2M,UAAY,GAC5BhP,OAAU,EACVwd,OAAO,EACPuuR,OAAqB,EAErBC,EAiER,SAA2B1uR,GACzB,IAAI2uR,EAAgB,GACpB,IAAK,IAAIlsS,KAAQud,GAAW,GACtBA,EAAQlgB,eAAe2C,KACzBksS,EAAclsS,GAAiC,mBAAlBud,EAAQvd,GAAuBud,EAAQvd,KAAUud,EAAQvd,IAG1F,OAAOksS,EAxEsBC,CAAkBl9R,EAASsO,SACtD,GAAIsuR,QAAQzuS,UAAU6tS,cAAc5pR,GAClCphB,EAAUohB,EACV2qR,EAAqB,IAAId,QAAQjrS,EAAQsd,SAASzc,IAAI,oBACjD,CACL8E,IAASA,EAAO,IAEhB,IAAIwmS,GADJ3uR,EAAO7X,EAAK6X,MACS,CAAEA,KAAMA,GAAS,KAClC4uR,EAAclvS,OAAOgI,OAAO,GAAI8J,EAAU,CAAEsO,QAAS,IAAM3X,EAAMwmS,GACrEJ,EAAqB,IAAId,QAAQmB,EAAY9uR,SAASzc,IAAI,gBAC1Db,EAAU,IAAI4rS,QAiEpB,SAAuBrnS,EAASuG,GAC9B,GAAIuhS,EAAkB5nS,KAAKqG,GACzB,OAAOA,EAGT,OAAQvG,GAAW,IAAMuG,EAtECwhS,CAAcjqS,KAAKkC,QAAS6c,GAAQgrR,GAa5D,OAXKL,IACC,IAAId,QAAQe,GAAsB/vM,IAAI,gBACxCj8F,EAAQsd,QAAQkK,IAAI,eAAgB,IAAIyjR,QAAQe,GAAsBnrS,IAAI,iBACjE2c,GAqGjB,SAAgBg0C,GACd,IACEj+C,KAAKC,MAAMg+C,GACX,MAAO3vD,GACP,OAAO,EAGT,OAAO,EA5GgB0qS,CAAO/uR,IACxBxd,EAAQsd,QAAQkK,IAAI,eAAgB,qBAmE5C,SAA2BlK,EAASkvR,GAClC,IAAK,IAAIzsS,KAAQysS,GAAkB,GAC7BA,EAAepvS,eAAe2C,KAAUud,EAAQ2+E,IAAIl8F,IACtDud,EAAQkK,IAAIznB,EAAMysS,EAAezsS,IAnEnC0sS,CAAkBzsS,EAAQsd,QAAS0uR,GAC/BxuR,GAAQm/B,KAAKx/C,UAAU6tS,cAAcxtR,IAASA,EAAK7d,MACrDK,EAAQsd,QAAQkK,IAAI,eAAgBhK,EAAK7d,MAEpCK,GAGT6qS,EAAW1tS,UAAU0D,IAAM,SAAaugB,EAAOzb,GAC7C,OAAOtD,KAAKwb,MAAMuD,EAAOzb,IAG3BklS,EAAW1tS,UAAU2hB,KAAO,SAAcsC,EAAO5D,EAAM7X,GACrD,OAAO+mS,EAAUrvS,KAAKgF,KAAM+e,EAAO5D,EAAM7X,EAAM,SAGjDklS,EAAW1tS,UAAUqvE,IAAM,SAAaprD,EAAO5D,EAAM7X,GACnD,OAAO+mS,EAAUrvS,KAAKgF,KAAM+e,EAAO5D,EAAM7X,EAAM,QAGjDklS,EAAW1tS,UAAU8hB,MAAQ,SAAemC,EAAO5D,EAAM7X,GACvD,OAAO+mS,EAAUrvS,KAAKgF,KAAM+e,EAAO5D,EAAM7X,EAAM,UAGjDklS,EAAW1tS,UAAUgiB,OAAS,SAAiBiC,EAAO5D,EAAM7X,GAC1D,OAAO+mS,EAAUrvS,KAAKgF,KAAM+e,EAAO5D,EAAM7X,EAAM,WAG1CklS,EA5Je,GA+JpBwB,EAAoB,+BAExB,SAASf,IACPjpS,KAAKua,iBAAmBva,KAAKyoS,mBAG/B,SAASgB,IAEP,GADAzpS,KAAKua,iBAAoBva,KAAKyoS,oBACzBzoS,KAAKua,aAAc,CACtB,IAAI+kH,EAAM,MAAIgrK,kBAAkB,wCAAyC,CAAEhgL,SAAS,EAAM34B,YAAY,IACtG9zF,YAAW,WACT,OAAO,MAAIu9C,cAAckkF,KACxB,IAsCP,SAAS8pK,EAAkBrqR,EAAOkpR,EAAcsC,EAAaC,GAC3D,IAAK,IAAIt9P,EAAOprC,UAAUlH,OAAQ6vS,EAAkB/pS,MAAMwsC,EAAO,EAAIA,EAAO,EAAI,GAAI3oC,EAAO,EAAGA,EAAO2oC,EAAM3oC,IACzGkmS,EAAgBlmS,EAAO,GAAKzC,UAAUyC,GAGxC,OAAQ0jS,GAAgB,IAAI1iP,QAAO,SAAUmlP,EAAOvC,GAClD,IAAIwC,EAAiBxC,EAAYoC,GAC7BK,EAAezC,EAAYqC,GAE/B,OAAOE,EAAMvnS,KAAKwnS,GAAkB,SAAU/rS,GAC5C,OAAO+rS,EAAe3vS,KAAKiJ,MAAM0mS,EAAgB,CAACxC,EAAavpS,GAAOuF,OAAOsmS,MAC1ElxN,EAAUqxN,GAAgB,SAAU3kO,GACvC,OAAO2kO,EAAa5vS,KAAKiJ,MAAM2mS,EAAc,CAACzC,EAAaliO,GAAQ9hE,OAAOsmS,MACvE9yM,KACJ37F,EAAQC,QAAQ8iB,IAarB,SAASw6D,EAASryE,GAChB,OAAOA,EAGT,SAASywF,EAAQzwF,GACf,MAAMA,EAGR,SAASmjS,EAAUtrR,EAAO5D,EAAM7X,EAAM4X,GAQpC,OAPK5X,IACHA,EAAO,IAETA,EAAK4X,OAASA,EACVC,IACF7X,EAAK6X,KAAOA,GAEPnb,KAAKwb,MAAMuD,EAAOzb,M,iDC/b3B,wCACE,SACSob,GAAA,KAAAA,Y,gCCJX,sD,gCCAA,IACImsR,EAAa,WACb,SAASA,EAAUC,GACf,IAAInlS,EAAQ3F,KACZA,KAAK+qS,oBAAsB,IAC3B/qS,KAAKgrS,qBAAuB,IAC5BhrS,KAAKirS,2BAA6B,IAClCjrS,KAAKkrS,UAAY,EACjBlrS,KAAKmrS,qBAAuB,CACxB5jI,UAAW,yBACXG,UAAW,wBACXE,cAAc,EACdC,yBAA0BujI,sCAC1BtjI,aAAcsjI,qCACdrjI,cAAe,iBACf38F,MAAO,6BACP68F,oBAAqBmjI,sCAEpBN,IAGLjwS,OAAO0Z,KAAKu2R,GACPjmS,QAAO,SAAU3F,GAAO,YAAoBtB,IAAbktS,EAAI5rS,IAAmC,OAAb4rS,EAAI5rS,MAC7DiI,SAAQ,SAAUjI,GACnByG,EAAM0lS,gCAAgCnsS,EAAK4rS,EAAI5rS,IAC/CyG,EAAM,IAAMzG,GAAO4rS,EAAI5rS,MAEtB4rS,EAAIzjI,qBAGTxsK,OAAO0Z,KAAKu2R,EAAIzjI,qBAAqBlgK,SAAQ,SAAU+yB,GACnDv0B,EAAM0hK,oBAAoBntI,GAAK4wQ,EAAIzjI,oBAAoBntI,OA0D/D,OAvDAr/B,OAAOyD,eAAeusS,EAAU/vS,UAAW,qBAAsB,CAC7D0D,IAAK,WACD,OAAOwB,KAAK+qS,qBAEhBxsS,YAAY,EACZ8C,cAAc,IAElBxG,OAAOyD,eAAeusS,EAAU/vS,UAAW,sBAAuB,CAC9D0D,IAAK,WACD,OAAOwB,KAAKgrS,sBAEhBzsS,YAAY,EACZ8C,cAAc,IAElBxG,OAAOyD,eAAeusS,EAAU/vS,UAAW,4BAA6B,CACpE0D,IAAK,WACD,OAAOwB,KAAKirS,4BAEhB1sS,YAAY,EACZ8C,cAAc,IAElBxG,OAAOyD,eAAeusS,EAAU/vS,UAAW,WAAY,CACnD0D,IAAK,WACD,OAAOwB,KAAKkrS,WAEhB3sS,YAAY,EACZ8C,cAAc,IAElBxG,OAAOyD,eAAeusS,EAAU/vS,UAAW,sBAAuB,CAC9D0D,IAAK,WACD,OAAOwB,KAAKmrS,sBAEhB5sS,YAAY,EACZ8C,cAAc,IAElBxG,OAAOyD,eAAeusS,EAAU/vS,UAAW,cAAe,CACtD0D,IAAK,WACD,OAAOwB,KAAKmrS,qBAAqBrjI,cAErCvpK,YAAY,EACZ8C,cAAc,IAElBxG,OAAOyD,eAAeusS,EAAU/vS,UAAW,wBAAyB,CAChE0D,IAAK,WACD,OAAOwB,KAAKmrS,qBAAqBtjI,0BAErCtpK,YAAY,EACZ8C,cAAc,IAElBwpS,EAAU/vS,UAAUuwS,gCAAkC,SAAUnsS,EAAKuB,GACjE,GAAIvB,EAAIuzN,SAAS,WAAahyN,EAAI0yE,WAAW,KAEzC,MAAM,IAAI6lB,WADI,mBAAsB95F,EAAM,8BAI3C2rS,EAxFK,GA0FD,O,gCC3Ff,YACIS,EAAuB,WACvB,SAASA,EAAoBpyM,GACzBl5F,KAAKosJ,OAAS,MAAIm/I,KACdryM,SACAl5F,KAAKwrS,YAAYtyM,GA+CzB,OA5CAr+F,OAAOyD,eAAegtS,EAAoBxwS,UAAW,QAAS,CAC1D0D,IAAK,WACD,OAAOwB,KAAKosJ,QAEhB7tJ,YAAY,EACZ8C,cAAc,IAElBiqS,EAAoBxwS,UAAU64C,MAAQ,SAAUxvB,GACxCnkB,KAAKk5F,OAAS,MAAI32B,OAClB9iE,QAAQk0C,MAAM,yBAA2BxvB,IAGjDmnR,EAAoBxwS,UAAUqF,KAAO,SAAUgkB,GACvCnkB,KAAKk5F,OAAS,MAAIiuE,MAClB1nK,QAAQU,KAAK,wBAA0BgkB,IAG/CmnR,EAAoBxwS,UAAUopB,KAAO,SAAUC,GACvCnkB,KAAKk5F,OAAS,MAAIuyM,MAClBhsS,QAAQykB,KAAK,wBAA0BC,IAG/CmnR,EAAoBxwS,UAAUgC,MAAQ,SAAUqnB,GACxCnkB,KAAKk5F,OAAS,MAAIwyM,OAClBjsS,QAAQ3C,MAAM,yBAA2BqnB,IAGjDmnR,EAAoBxwS,UAAU0wS,YAAc,SAAUtyM,GAClD,IAAIyyM,EAAwB,CACxB,MAAIppO,MACJ,MAAI4kG,KACJ,MAAIskI,KACJ,MAAIC,MACJ,MAAIH,MAER,IAAKI,EAAsB30R,SAASkiF,GAAQ,CACxC,IAAIsgI,EAASmyE,EAAsB3jS,KAAK,MAExC,MAAM,IAAIgxF,WADA,gCAAkCwgI,GAGhDx5N,KAAKosJ,OAASlzD,EACd,MAAIA,MAAQA,EACZ,MAAIj5F,OAASR,SAEV6rS,EAnDe,GAqDX,O,+BCtDf,4pGAIInlO,EAAQyjE,EAAaxjE,EAAgB67D,EAAgBC,EAAgBC,EAAgBC,EAAgBC,EAAS+/I,EAASM,EAAQL,EAASupB,EAAQzJ,EAAiB3f,EAAiBC,EAAUopB,EAAUC,EAAeC,EAAkBC,EAAkBC,EAJ7P,8DAAIhrS,EAAe,WAAc,SAASC,EAAiB1D,EAAQ2D,GAAS,IAAK,IAAIzG,EAAI,EAAGA,EAAIyG,EAAMvG,OAAQF,IAAK,CAAE,IAAI0G,EAAaD,EAAMzG,GAAI0G,EAAW7C,WAAa6C,EAAW7C,aAAc,EAAO6C,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMzG,OAAOyD,eAAed,EAAQ4D,EAAWlC,IAAKkC,IAAiB,OAAO,SAAUG,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYN,EAAiBK,EAAYzG,UAAW0G,GAAiBC,GAAaP,EAAiBK,EAAaE,GAAqBF,GAA7gB,GAEfV,EAA4B,mBAAXnC,QAAoD,iBAApBA,OAAOoC,SAAwB,SAAUC,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAXrC,QAAyBqC,EAAIC,cAAgBtC,QAAUqC,IAAQrC,OAAO5D,UAAY,gBAAkBiG,GAe3PmrS,EAAiB,CAC1BC,WAAY,wBACZC,YAAa,yBACbC,UAAW,uBACXC,aAAc,0BAEdC,WAAY,wBACZC,YAAa,yBACbC,UAAW,uBACXC,aAAc,0BAEdC,YAAa,yBAEbC,iBAAkB,+BAClBC,kBAAmB,gCACnBC,gBAAiB,8BACjBC,mBAAoB,iCAEpBC,cAAe,4BACfC,eAAgB,6BAChBC,aAAc,2BACdC,gBAAiB,8BAEjBC,aAAc,0BACdC,cAAe,2BACfC,YAAa,yBACbC,eAAgB,4BAEhBC,cAAe,2BACfC,aAAc,2BAGLC,EAAW,WACpB,SAASA,KAgCT,OA5BAA,EAAS5yS,UAAU6yS,MAAQ,SAAe5mO,GACxC,OAAO/qE,EAAQC,SAAQ,IAGzByxS,EAAS5yS,UAAU8yS,MAAQ,SAAe7mO,GACxC,OAAO/qE,EAAQC,SAAQ,IAGzByxS,EAAS5yS,UAAU0pF,YAAc,SAAqBzd,EAASue,GAE7D,OADAve,EAAQqe,UAAUt1C,OAAOw1C,GAClBtpF,EAAQC,SAAQ,IAGzByxS,EAAS5yS,UAAUw1C,SAAW,SAAkBy2B,EAASue,GAEvD,OADAve,EAAQqe,UAAUt0E,IAAIw0E,GACftpF,EAAQC,SAAQ,IAGzByxS,EAAS5yS,UAAUw6H,QAAU,SAAiBvuD,EAASue,GACrD,OAAOtpF,EAAQC,SAAQ,IAGzByxS,EAAS5yS,UAAU+yS,YAAc,SAAqBC,KAEtDJ,EAAS5yS,UAAUizS,eAAiB,SAAwBC,EAAYniQ,KAExE6hQ,EAAS5yS,UAAUmzS,iBAAmB,SAA0BD,KAEzDN,EAjCa,GAoCXQ,EAAiC,WAC1C,SAASA,EAA+B3qL,GAGtCvjH,KAAKujH,MAAQA,EACbvjH,KAAKujH,MAAM4qL,oBAQb,OALAD,EAA+BpzS,UAAU0/D,KAAO,WAC9Cx6D,KAAKujH,MAAM4qL,oBACXnuS,KAAKujH,MAAM6qL,2BAGNF,EAbmC,GAgBjCG,EAAuC,WAChD,SAASA,EAAqC9qL,GAG5CvjH,KAAKujH,MAAQA,EACbvjH,KAAKujH,MAAM+qL,gBAAkBtuS,KAC7BA,KAAK4rG,SAAW5rG,KAAKuuS,kBAoBvB,OAjBAF,EAAqCvzS,UAAUmuE,2BAA6B,WAE1E,OADAjpE,KAAKujH,MAAM6qL,0BACJpuS,KAAK4rG,UAGdyiM,EAAqCvzS,UAAUmB,QAAU,WACvD+D,KAAKgpF,oBAGPqlN,EAAqCvzS,UAAUyzS,gBAAkB,WAC/D,IAAI5oS,EAAQ3F,KAEZ,OAAO,IAAIhE,GAAQ,SAAUC,EAASC,GACpCyJ,EAAMqjF,iBAAmB/sF,MAItBoyS,EA1ByC,GA6BvCG,EAAyB,WAClC,SAASA,IAGPxuS,KAAKsuS,gBAAkB,KACvBtuS,KAAKmuS,kBAAoB,EAuB3B,OApBAK,EAAuB1zS,UAAU2tE,WAAa,WAC5C,OAAgC,OAAzBzoE,KAAKsuS,gBAA2B,IAAID,EAAqCruS,MAAQ,MAG1FwuS,EAAuB1zS,UAAUysE,OAAS,WACxC,OAAO,IAAI2mO,EAA+BluS,OAG5CwuS,EAAuB1zS,UAAUszS,wBAA0B,WACzD,GAAIpuS,KAAKmuS,mBAAqB,IAC5BnuS,KAAKmuS,kBAAoB,EAEI,OAAzBnuS,KAAKsuS,iBAA0B,CACjC,IAAIxnR,EAAQ9mB,KAAKsuS,gBACjBtuS,KAAKsuS,gBAAkB,KACvBxnR,EAAM7qB,YAKLuyS,EA5B2B,GA+BhCC,EAAiB,WAErB,SAASC,EAAkB9zN,GACzB,MAAO,IAAMA,EAAKr/D,cAGb,SAASozR,EAAWjxS,GACzB,OAAQA,EAAKiT,OAAO,GAAG4K,cAAgB7d,EAAKmC,MAAM,IAAIkH,QAAQ0nS,EAAgBC,GAGzE,SAASE,EAAiB1zP,GAC/B,QAASA,EAAK2zP,uBAAyB,aAAazsS,KAAK84C,EAAKi+D,cAGzD,IAAI21L,EAA0B,WACnC,SAASA,KAoBT,OAhBAA,EAAwBh0S,UAAUylF,WAAa,SAAoBlyE,EAAW7Q,GAC5EwC,KAAK6nD,SAAWx5C,EAAU7P,IAAIhB,IAGhCsxS,EAAwBh0S,UAAUqrD,SAAW,SAAkBg4M,EAAUzgQ,GACvEygQ,EAAS4wC,wBAAwB/uS,KAAK6nD,WAGxCinP,EAAwBh0S,UAAU46D,KAAO,SAAcrnD,EAAW7Q,KAElEsxS,EAAwB7K,WAAa,SAAoBvmS,GACvD,GAAIA,EAAK+0N,SAAS,mBAChB,OAAO,IAAIq8E,GAIRA,EArB4B,GAwB9B,SAASE,EAAgBxxS,GAC9B,IAAIymI,EAAO,SAAcplI,GACvB,IAASutC,OAAO,IAAStwB,SAAU,IAAIgzR,EAA2BjwS,IAGpE,OAAOrB,EAASymI,EAAKzmI,GAAUymI,EAG1B,IAAIgrK,EAAgB,WACzB,SAASA,EAAcloO,GAGrB/mE,KAAK+mE,QAAUA,EACf/mE,KAAK+0J,cAAgB,GAyEvB,OAtEAk6I,EAAcn0S,UAAUo0S,gBAAkB,SAAyBn+R,GACjE/Q,KAAK+0J,cAAchkJ,EAAQkJ,WAAaja,KAAK+0J,cAAchkJ,EAAQkJ,YAAc,GACjFja,KAAK+0J,cAAchkJ,EAAQkJ,WAAW/e,KAAK6V,IAG7Ck+R,EAAcn0S,UAAUq0S,gBAAkB,SAAyBp+R,GACjE,IAAIpH,OAAQ,EACRorJ,EAAgB/0J,KAAK+0J,cAAchkJ,EAAQkJ,WAO/C,OANI86I,IACFprJ,EAAQorJ,EAAc1jJ,QAAQN,KACjB,GACXgkJ,EAAc59I,OAAOxN,EAAO,GAGzBoH,GAGTk+R,EAAcn0S,UAAU0e,QAAU,SAAiBS,GACjD,IAAIy3E,EAAS5vF,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,GAC7EwoH,IAAUxoH,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,KAAmBA,UAAU,GACzE6vF,IAAa7vF,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,KAAmBA,UAAU,GAE5E9E,EAAQ,MAAIstS,kBAAkBrwR,EAAW,CAAE03E,WAAYA,EAAY24B,QAASA,EAAS54B,OAAQA,IACjG1xF,KAAK+mE,QAAQ3rB,cAAcp+C,IAG7BiyS,EAAcn0S,UAAUia,UAAY,SAAmBkF,EAAWlJ,GAChE,IAAIq+R,IAAmBttS,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,KAAmBA,UAAU,GAEtF,GAAuB,mBAAZiP,EAAwB,CACjC,IAAIs+R,EAAe,IAAIC,EAAiBtvS,KAAMia,EAAWlJ,EAASq+R,GAAkB,GACpF,OAAOC,IAMXJ,EAAcn0S,UAAUy0S,cAAgB,SAAuBt1R,EAAWlJ,GACxE,IAAIq+R,IAAmBttS,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,KAAmBA,UAAU,GAEtF,GAAuB,mBAAZiP,EAAwB,CACjC,IAAIs+R,EAAe,IAAIC,EAAiBtvS,KAAMia,EAAWlJ,EAASq+R,GAAkB,GACpF,OAAOC,IAMXJ,EAAcn0S,UAAU6wG,QAAU,SAAiB1xF,GACjD,GAAIA,GAAkC,iBAAdA,EAAwB,CAC9C,IAAI86I,EAAgB/0J,KAAK+0J,cAAc96I,GACvC,GAAI86I,EACF,KAAOA,EAAcn6J,QAAQ,CAC3B,IAAI40S,EAAez6I,EAAcpgG,MAC7B66O,GACFA,EAAa7jM,gBAKnB3rG,KAAKyvS,cAITR,EAAcn0S,UAAU20S,WAAa,WACnC,IAAK,IAAIlrS,KAAQvE,KAAK+0J,cACpB/0J,KAAK2rG,QAAQpnG,IAIV0qS,EA9EkB,GAiFvBK,EAAmB,WACrB,SAASA,EAAiB/rL,EAAOtpG,EAAWlJ,EAASq+R,EAAkBz4P,GAGrE32C,KAAKujH,MAAQA,EACbvjH,KAAKia,UAAYA,EACjBja,KAAK+Q,QAAUA,EAEf/Q,KAAK0vS,QAAsC,kBAArBN,EAAiCA,EAAmBA,EAAiBM,QAC3F1vS,KAAKsqH,SAAWtqH,KAAK0vS,QACrB1vS,KAAKovS,iBAAmBA,EACxBpvS,KAAK22C,KAAOA,EACZ4sE,EAAMx8C,QAAQmpC,iBAAiBj2F,EAAWja,KAAMovS,GAChD7rL,EAAM2rL,gBAAgBlvS,MAiBxB,OAdAsvS,EAAiBx0S,UAAUi+R,YAAc,SAAqBn9R,IAE5D0jB,EADStf,KAAK+Q,SACXnV,GACCoE,KAAK22C,MACP32C,KAAK2rG,WAIT2jM,EAAiBx0S,UAAU6wG,QAAU,WACnC3rG,KAAKujH,MAAMx8C,QAAQ27C,oBAAoB1iH,KAAKia,UAAWja,KAAMA,KAAKovS,kBAClEpvS,KAAKujH,MAAM4rL,gBAAgBnvS,MAC3BA,KAAKujH,MAAQvjH,KAAK+Q,QAAU,MAGvBu+R,EA9Bc,GAiCZK,EAAsB,WAC/B,SAASA,IAGP3vS,KAAKwkI,aAAe,GAWtB,OARAmrK,EAAoB70S,UAAUkkR,cAAgB,SAAuBv2Q,GACnEzI,KAAKwkI,aAAa/7H,IAAO,GAG3BknS,EAAoB70S,UAAU80S,cAAgB,SAAuBnnS,GACnE,OAAOA,KAAOzI,KAAKwkI,cAGdmrK,EAfwB,GAkBtBE,EAAyB,WAClC,IAAIC,EAAkBhuS,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,IAAmBA,UAAU,GACjFiuS,EAAmBjuS,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,IAAmBA,UAAU,GAItF9B,KAAK8vS,gBAAkBA,EACvB9vS,KAAK+vS,iBAAmBA,EACxB/vS,KAAKgwS,mBAAqB,MAG5BH,EAAuBI,OAAS,IAAIJ,EAE7B,IAAIK,EAAsB,WAC/B,SAASA,KA2CT,OAvCAA,EAAoBC,QAAU,WAC5B,IAAI9oS,EAAc,IAAI6oS,EAEtB,OADA7oS,EAAY8oS,SAAU,EACf9oS,GAGT6oS,EAAoBE,SAAW,SAAkB9yS,EAAM2rG,GACrD,IAAI5hG,EAAc,IAAI6oS,EAGtB,OAFA7oS,EAAY/J,KAAOA,EACnB+J,EAAY4hG,WAAaA,GAAc,GAChC5hG,GAGT6oS,EAAoBnpO,QAAU,SAAiB7rB,EAAM59C,GACnD,IAAI+J,EAAc,IAAI6oS,EAKtB,OAJA7oS,EAAY/J,KAAOA,EACnB+J,EAAY4hG,WAAa,GACzB5hG,EAAYgpS,oBAAsBn1P,EAAK6uL,aAAa,kBAAoBzsO,EAAKgzS,eAC7EjpS,EAAYkpS,qBAAsB,EAC3BlpS,GAGT6oS,EAAoB59E,UAAY,SAAmB1hE,EAAUtzJ,GAC3D,IAAI+J,EAAc,IAAI6oS,EAItB,OAHA7oS,EAAYupJ,SAAWA,EACvBvpJ,EAAY/J,KAAOA,GAAQ,KAC3B+J,EAAY4hG,WAAa,GAClB5hG,GAGT6oS,EAAoBxnO,QAAU,SAAiBo0D,EAAM/uH,EAAWw6D,GAC9D,IAAIlhE,EAAc,IAAI6oS,EAKtB,OAJA7oS,EAAYy1H,KAAOA,EACnBz1H,EAAY0G,UAAYA,EACxB1G,EAAYkhE,YAAcA,EAC1BlhE,EAAYmpS,uBAAwB,EAC7BnpS,GAGF6oS,EA5CwB,GA+C7BO,EAAUP,EAAoBp1S,UAClC21S,EAAQF,qBAAsB,EAC9BE,EAAQN,SAAU,EAClBM,EAAQC,iBAAmB,KAC3BD,EAAQloO,YAAc,KACtBkoO,EAAQ3/I,iBAAmB,KAC3B2/I,EAAQE,uBAAwB,EAChCF,EAAQG,eAAiB,KACzBH,EAAQ1iS,UAAY,KACpB0iS,EAAQJ,mBAAoB,EAC5BI,EAAQ3zK,KAAO,KACf2zK,EAAQxnM,WAAa,KACrBwnM,EAAQnzS,KAAO,KACfmzS,EAAQ7/I,SAAW,KACnB6/I,EAAQD,uBAAwB,EAEhCN,EAAoBD,OAAS,IAAIC,EAE1B,IAAI3qD,GAAqB37G,EAAQzjE,EAAS,WAC/C,SAASo/K,KAwDT,OApDAA,EAAkBsrD,WAAa,SAAoBC,GACjD,IAAIzpS,EAAc,IAAIk+O,EAGtB,OAFAl+O,EAAYypS,iBAAmBA,EAC/BzpS,EAAYwpS,YAAa,EAClBxpS,GAGTk+O,EAAkBwrD,kBAAoB,SAA2B9/I,GAC/D,IAAI5pJ,EAAc,IAAIk+O,EAEtB,OADAl+O,EAAY0pS,kBAAoB9/I,EACzB5pJ,GAGTk+O,EAAkByrD,WAAa,SAAoBlpD,GACjD,IAAIzgP,EAAc,IAAIk+O,EAGtB,OAFAl+O,EAAYygP,YAAcA,EAC1BzgP,EAAY2pS,YAAa,EAClB3pS,GAGTk+O,EAAkB0rD,QAAU,SAAiBH,EAAkBI,GAC7D,IAAI7pS,EAAc,IAAIk+O,EAOtB,OANAl+O,EAAYypS,iBAAmBA,EAC/BzpS,EAAYygP,YAAcvC,EAAkB4rD,cAC5C9pS,EAAYwpJ,qBAAuB,CAACqgJ,GACpC7pS,EAAYkhE,YAAc2oO,EAAmB3oO,YAC7ClhE,EAAY+pS,UAAY,CAACF,EAAmB5zS,KAAKE,QACjD6J,EAAY4pS,SAAU,EACf5pS,GAGTk+O,EAAkB0qD,OAAS,SAAgBoB,EAAYP,EAAkBM,EAAWvgJ,EAAsBi3F,EAAawpD,GACrH,IAAIjqS,EAAc,IAAIk+O,EAQtB,OAPAl+O,EAAYgqS,WAAaA,EACzBhqS,EAAYypS,iBAAmBA,EAC/BzpS,EAAY+pS,UAAYA,EACxB/pS,EAAYwpJ,qBAAuBA,EACnCxpJ,EAAYygP,YAAcA,EAC1BzgP,EAAYgpS,mBAAoBiB,GAAqBA,EAAmBjB,kBACxEhpS,EAAYiqS,mBAAqBA,EAC1BjqS,GAGTk+O,EAAkBgsD,UAAY,SAAmBH,EAAWvgJ,EAAsBi3F,EAAaz0N,GAC7F,IAAIhsB,EAAc,IAAIk+O,EAKtB,OAJAl+O,EAAYygP,YAAcA,EAC1BzgP,EAAYwpJ,qBAAuBA,EACnCxpJ,EAAY+pS,UAAYA,EACxB/pS,EAAYgsB,OAASA,EACdhsB,GAGFk+O,EAzDwC,GA0D5Cp/K,EAAOgrO,cAAgBt2S,OAAO+xC,OAAO,IAAKg9F,GAE3C4nK,EAAUjsD,EAAkBzqP,UAEhC02S,EAAQH,WAAa,KACrBG,EAAQV,iBAAmB,KAE3BU,EAAQX,YAAa,EACrBW,EAAQn7R,SAAW,KACnBm7R,EAAQC,oBAAsB,KAE9BD,EAAQT,kBAAoB,KAC5BS,EAAQR,YAAa,EAErBQ,EAAQ1pD,YAAc,KACtB0pD,EAAQ1pD,YAAc,KACtB0pD,EAAQJ,UAAY,KAEpBI,EAAQjpO,YAAc,KAEtBipO,EAAQnB,mBAAoB,EAC5BmB,EAAQF,mBAAqB,KAC7BE,EAAQP,SAAU,EAElBO,EAAQn+Q,OAAS,KAEV,IAAI+0C,EAAe,IAASnpE,OAAO,wBAAyB,CACjEovC,SAAU,SAAkB7wC,GAC1B,MAAwC,mBAA3BA,EAAOk0S,iBACX,gLAKXpjQ,QAAS,SAAiB9wC,GACe,mBAA1BA,EAAO8qE,iBAClB9qE,EAAO8qE,eAAiB,WAASlyB,SAK5Bu7P,EAA+BvpO,GAAgBtB,CAAKV,EAAU,WACvE,SAASurO,EAAqBhwS,GAG5B3B,KAAK2B,KAAOA,EACZ3B,KAAK4xS,aAAe,KAkBtB,OAfAD,EAAqB72S,UAAU42S,gBAAkB,SAAyBG,EAAYC,EAAoBC,EAAav0S,GAMrH,OAL0B,OAAtBwC,KAAK4xS,cAAyB5xS,KAAK1F,WACrC0F,KAAK4xS,aAAe,YAAe5xS,KAAK2B,KAAM3B,KAAK1F,WAGrDw3S,EAAmB9B,mBAAqBhwS,KAAK1F,SACtCu3S,EAAWH,gBAAgB1xS,KAAK4xS,cAAgB5xS,KAAK2B,KAAMmwS,EAAoBC,EAAav0S,IAGrGm0S,EAAqB72S,UAAUwtE,eAAiB,SAAwBnsD,GAC5C,OAAtBnc,KAAK4xS,eACP5xS,KAAK4xS,aAAe,YAAe5xS,KAAK2B,KAAMwa,KAI3Cw1R,EAvBgE,KAwBjEvrO,EAEG4rO,GAAoC5pO,GAAgBu6D,CAAMV,EAAU,WAC7E,SAAS+vK,EAAyB/qO,EAAal6B,GAG7C/sC,KAAK1F,SAAWyyC,EAAOzyC,SACvB0F,KAAKiyS,QAAUhrO,EAAYirO,uBAAuBnlQ,GAQpD,OALAilQ,EAAyBl3S,UAAU42S,gBAAkB,SAAyBG,EAAYC,EAAoBC,EAAav0S,GAEzH,OADAs0S,EAAmB9B,mBAAqBhwS,KAAK1F,SACtCu3S,EAAWH,gBAAgB1xS,KAAKiyS,QAASH,EAAoBC,EAAav0S,IAG5Ew0S,EAbsE,KAcvE/vK,EAEGkwK,GAA0B/pO,GAAgBy6D,CAAMX,EAAU,WACnE,SAASiwK,EAAe3tK,EAAc4tK,GAGpCpyS,KAAKwkI,aAAeA,GAAgB,KACpCxkI,KAAKoyS,kBAAoBA,GAAqB,GAiChD,OA9BAD,EAAer3S,UAAU42S,gBAAkB,SAAyBG,EAAYC,EAAoBC,EAAav0S,GAC/G,IAAI4/P,EAAQp9P,KAAKo9P,MACb54H,EAAexkI,KAAKwkI,aAExB,GAAI44H,GAASA,EAAMyhB,eACjB,OAAO7iR,EAAQC,QAAQ,MAQzB,GALA+D,KAAKo9P,MAAQA,EAAQ,IAAI,IAAsBp9P,KAAK1F,UAAY0F,KAAKoyS,mBAErEh1C,EAAM54H,aAAe,GACrB44H,EAAMa,kBAAmB,EAEJ,OAAjBz5H,EACF,IAAK,IAAI9pI,EAAI,EAAGiI,EAAK6hI,EAAa5pI,OAAQF,EAAIiI,IAAMjI,EAAG,CACrD,IAAIkI,EAAU4hI,EAAa9pI,GAEJ,iBAAZkI,GAA2C,mBAAZA,EACxCw6P,EAAM4hB,cAAcp8Q,GAEpBw6P,EAAM4hB,cAAcp8Q,EAAQwf,KAAMxf,EAAQ4iC,IAOhD,OAFAssQ,EAAmB9B,mBAAqBhwS,KAAK1F,SAEtCu3S,EAAWH,gBAAgBt0C,EAAO00C,EAAoBC,EAAav0S,IAGrE20S,EAtC4D,KAuC7DjwK,EAEGmwK,GAAwCjqO,GAAgB26D,CAAMZ,EAAU,WACjF,SAASkwK,EAA6B/3S,EAAU8iQ,GAG9Cp9P,KAAK1F,SAAWA,EAChB0F,KAAKo9P,MAAQA,EAcf,OAXAi1C,EAA6Bv3S,UAAU42S,gBAAkB,SAAyBG,EAAYC,EAAoBC,EAAav0S,GAC7H,IAAI4/P,EAAQp9P,KAAKo9P,MAEjB,OAAIA,EAAMyhB,eACD7iR,EAAQC,QAAQmhQ,EAAM70N,UAG/BupQ,EAAmB9B,mBAAqBhwS,KAAK1F,SACtCu3S,EAAWH,gBAAgBt0C,EAAO00C,EAAoBC,EAAav0S,KAGrE60S,EAnB0E,KAoB3ElwK,EAEGmwK,GAA8BlqO,GAAgB86D,CAAMd,EAAU,WACvE,SAASkwK,EAAmBC,EAAQ/tK,EAAc4tK,GAGhDpyS,KAAKuyS,OAASA,EACdvyS,KAAKwkI,aAAeA,GAAgB,KACpCxkI,KAAKoyS,kBAAoBA,GAAqB,GA8BhD,OA3BAE,EAAmBx3S,UAAU42S,gBAAkB,SAAyBG,EAAYC,EAAoBC,EAAav0S,GACnH,IAAI4/P,EAAQp9P,KAAKo9P,MACb54H,EAAexkI,KAAKwkI,aAExB,GAAI44H,GAASA,EAAMyhB,eACjB,OAAO7iR,EAAQC,QAAQmhQ,EAAM70N,SAM/B,GAHAvoC,KAAKo9P,MAAQA,EAAQ,IAAI,IAAsBp9P,KAAK1F,UAAY0F,KAAKoyS,mBACrEh1C,EAAMp6K,SAAW,MAAIs6K,yBAAyBt9P,KAAKuyS,QAE9B,OAAjB/tK,EACF,IAAK,IAAI9pI,EAAI,EAAGiI,EAAK6hI,EAAa5pI,OAAQF,EAAIiI,IAAMjI,EAAG,CACrD,IAAIkI,EAAU4hI,EAAa9pI,GAEJ,iBAAZkI,GAA2C,mBAAZA,EACxCw6P,EAAM4hB,cAAcp8Q,GAEpBw6P,EAAM4hB,cAAcp8Q,EAAQwf,KAAMxf,EAAQ4iC,IAMhD,OADAssQ,EAAmB9B,mBAAqBhwS,KAAK1F,SACtCu3S,EAAWH,gBAAgBt0C,EAAO00C,EAAoBC,EAAav0S,IAGrE80S,EApCgE,KAqCjElwK,EAEGowK,GAA8BpqO,GAAgBg7D,CAAMf,EAAU,WACvE,SAASmwK,EAAmBhwS,IAGJ,iBAAXA,GAAuBA,aAAkB,MAAIglE,SAA8B,aAAnBhlE,EAAO+3J,WACxE/3J,EAAS,CACPwgF,SAAUxgF,IAGdxC,KAAKgjF,SAAWxgF,EAAOwgF,SACvBhjF,KAAKwkI,aAAehiI,EAAOgiI,cAAgB,GAC3CxkI,KAAK6+Q,gBAAiB,EACtB7+Q,KAAKo6I,QAAU,KACfp6I,KAAK1F,SAAW,YAwElB,OArEAk4S,EAAmB13S,UAAU42S,gBAAkB,SAAyBG,EAAYC,EAAoBC,EAAav0S,GACnH,IAAI2I,EAASnG,KAEb,GAAIA,KAAK6+Q,eACP,OAAO7iR,EAAQC,QAAQ+D,KAAKuoC,SAE9B,IAAIs9F,EAAO7lI,KAAKwkI,aAKhB,OAHAqB,GADAA,EAAuB,mBAATA,EAAsBA,IAASA,IACxB,GACrBA,EAAOnlI,MAAMC,QAAQklI,GAAQA,EAAO,CAACA,GAE9B7pI,EAAQgC,IAAI6nI,GAAM1iI,MAAK,SAAUqhI,GACtC,IAAIn2H,EAAYwjS,EAAWxjS,UACvBokS,EAAeZ,EAAWY,aAC1BC,EAAeb,EAAWa,aAC1BrqK,EAAgB,IAAIo9G,GAAcgtD,GAElC32R,OAAW,EACX62R,EAAS,GAETn1S,GACF6qI,EAAczB,aAAav4H,EAAW7Q,GAGnC,IAAIm/I,EAAYnY,EAAcoY,EAAWl8I,MAAMC,QAAQg8I,GAAYnxI,EAAK,EAA7E,IAAgFmxI,EAAYC,EAAWD,EAAYA,EAAUj+I,OAAOoC,cAAe,CACjJ,IAAIytD,EAEJ,GAAIquF,EAAU,CACZ,GAAIpxI,GAAMmxI,EAAU/hJ,OAAQ,MAC5B2zD,EAAOouF,EAAUnxI,SACZ,CAEL,IADAA,EAAKmxI,EAAU15I,QACRu3D,KAAM,MACbjM,EAAO/iD,EAAG5M,MAGZ,IAAIg0S,EAAMrkP,EAEV,GAAmB,mBAARqkP,EAEoB,QAD7B92R,EAAWusH,EAAczB,aAAav4H,EAAWukS,IACpCC,aACXF,EAAOz3S,KAAK4gB,OAET,KAAI82R,GAAqE,iBAA9C,IAARA,EAAsB,YAAc/xS,EAAQ+xS,IAWpE,MAAM,IAAI71S,MAAM,4DAAwE,IAAR61S,EAAsB,YAAc/xS,EAAQ+xS,IAAQ,KAVpI,IAAK,IAAIrmS,KAASqmS,EAAK,CACrB,IAAIE,EAAWF,EAAIrmS,GACK,mBAAbumS,GAEoB,QAD7Bh3R,EAAWusH,EAAczB,aAAav4H,EAAWykS,IACpCD,aACXF,EAAOz3S,KAAK4gB,KAStB,OAAO9f,EAAQgC,IAAI20S,EAAOhuS,KAAI,SAAUk9D,GACtC,OAAOA,EAAGnM,KAAKrnD,EAAWwzD,EAAGrkE,YAC3B2F,MAAK,WACP,IAAIolC,EAA8B,OAApBpiC,EAAO68E,SAAoB0vN,EAAahgM,QAAQvsG,EAAO68E,SAAUqlD,EAAeypK,GAAsB,KAGpH,OAFA3rS,EAAO04Q,gBAAiB,EACxB14Q,EAAOoiC,QAAUA,EACVA,SAKNiqQ,EArFgE,KAsFjEnwK,EAEG0wK,IAAerwB,EAASN,EAAU,WAC3C,SAAS2wB,KA8ET,OA1EAA,EAAYj4S,UAAUutE,gBAAkB,SAAyBzpE,GAC/D,IAAKA,EACH,OAAO,KAGT,GAAsE,iBAAhD,IAAVA,EAAwB,YAAciC,EAAQjC,KAAwB,oBAAqBA,EAAO,CAC5G,IAAI4vM,EAAU,IAAOhwM,IAAII,EAAMoC,aAc/B,MAVqB,iBAFrBpC,EAAQA,EAAMypE,qBAGZzpE,EAAQ,IAAI+yS,EAAqB/yS,IAGnCwpE,EAAa15B,OAAO9vC,GAEhB4vM,EAAQl0M,UACVsE,EAAM0pE,eAAekmI,EAAQl0M,UAGxBsE,EAOT,GAJqB,iBAAVA,IACTA,EAAQ,IAAI+yS,EAAqB/yS,IAG/BwpE,EAAa/5B,SAASzvC,GACxB,OAAOA,EAOT,GAJqB,mBAAVA,IACTA,EAAQA,EAAMoC,aAGZ,UAAWpC,EAAO,CACpB,IAAIV,EAAIU,EAAMo0S,MACV7kO,OAAQ,EAQZ,OALEA,EADQ,QADVjwE,EAAiB,mBAANA,EAAmBA,EAAElD,KAAK4D,GAASV,GAEpC,IAAIi0S,GAEJj0S,aAAas0S,GAAqBt0S,EAAI,IAAIs0S,GAAmBt0S,GAEvE,IAASkuC,OAAO2mQ,EAAYE,wBAAyB9kO,EAAOvvE,GACrDuvE,EAGT,IAAIphC,EAAS,IAAOvuC,IAAII,GACpBoG,EAAW,IAASxG,IAAIu0S,EAAYE,wBAAyBr0S,GAEjE,GAAKoG,EAMM+nC,EAAOzyC,WAChB0K,EAAS1K,SAAWyyC,EAAOzyC,cAPd,CACb,IAAKyyC,EAAOzyC,SACV,MAAM,IAAIyC,MAAM,qDAAsD6B,GAGxEoG,EAAWhF,KAAKkzS,2BAA2BnmQ,GAK7C,OAAO/nC,GAGT+tS,EAAYj4S,UAAUo4S,2BAA6B,SAAoCnmQ,GACrF,OAAO,IAAIilQ,GAAyBhyS,KAAM+sC,IAG5CgmQ,EAAYj4S,UAAUo3S,uBAAyB,SAAgCnlQ,GAC7E,IAAIzyC,EAAWyyC,EAAOzyC,SAEtB,OADSA,EAASm4N,SAAS,QAAUn4N,EAASm4N,SAAS,OAASn4N,EAASyH,UAAU,EAAGzH,EAASM,OAAS,GAAKN,GACjG,SAGPy4S,EA/EoC,GAgFxC3wB,EAAQ6wB,wBAA0B,wBAAyBvwB,GAEhE,SAASl5M,GAAG9rE,GACV,MAAM,IAAIX,MAAM,kCAAoCW,EAAO,OAGtD,IAAIy1S,GAAkB,WAC3B,SAASA,KAoBT,OAhBAA,EAAgBr4S,UAAUs4S,iBAAmB,SAA0BljP,EAAW2iP,EAAajiJ,EAAUyiJ,GACvG7pO,GAAG,qBAGL2pO,EAAgBr4S,UAAUw4S,2BAA6B,SAAoCpjP,EAAW6W,EAAS5mE,EAAMozS,GACnH/pO,GAAG,+BAGL2pO,EAAgBr4S,UAAU04S,qBAAuB,SAA8BtjP,EAAW6W,GACxFyC,GAAG,yBAGL2pO,EAAgBr4S,UAAU24S,mBAAqB,SAA4BvjP,EAAWtxD,GACpF4qE,GAAG,uBAGE2pO,EArBoB,GAwBzBO,GAAU74S,OAAO+xC,OAAO,IAEjB+mQ,GAAsB,WAK/B,SAASA,EAAoB5sO,GAG3B/mE,KAAK+mE,QAAUA,EACf/mE,KAAK+mE,QAAQ6sO,gBAAkB5zS,KAKjC,OAbA2zS,EAAoBn+R,OAAS,WAC3B,MAAO,CAAC,MAAIgyD,UAUdmsO,EAAoB74S,UAAU+4S,aAAe,SAAsB9kP,EAAUgiB,KAEtE4iO,EAdwB,GAiBtBG,GAAkB,WAC3B,SAASA,EAAgB51Q,EAAQxgC,EAAMq2S,EAAiBC,GAGtDh0S,KAAKk+B,OAASA,EACdl+B,KAAKk+B,OAAO8oC,SAAWhnE,KACvBA,KAAKtC,KAAOA,EACZsC,KAAK+zS,gBAAkBA,EACvB/zS,KAAKg0S,gBAAkBA,EACvBh0S,KAAKi0S,gBAAkB,KACvBj0S,KAAKk0S,YAAc,EACnBl0S,KAAKm0S,YAAc,KAER,IAAIR,GAAoB3zS,KAAKk+B,QACnCt/B,MAAQoB,KAAK+zS,gBA6FpB,OA1FAD,EAAgBh5S,UAAUs5S,sBAAwB,SAA+B1jS,EAAMglF,EAAO2+M,EAAkB1qS,GAC9G,GAAyB,OAArB3J,KAAKm0S,YAAsB,CAC7Bn0S,KAAKm0S,YAAcn0S,KAAKg0S,gBAAgB/0S,OAAOe,KAAKs0S,UAAUjmS,WAC9DrO,KAAKm0S,YAAYh1S,KAAKa,KAAKs0S,UAAU3sO,eAAgB3nE,KAAKs0S,UAAU1sO,iBAEpE,IAAIwB,EAAQvuE,OAAOoE,OAAO,MAC1BmqE,EAAMppE,KAAKi0S,gBAAgBv2S,MAAQsC,KAAKi0S,gBAExCM,GAAUprO,eAAenpE,KAAKm0S,YAAa/qO,EAAOirO,EAAkB1qS,EAAO3J,KAAKi0S,gBAAgBv2S,QAIpGo2S,EAAgBh5S,UAAU05S,cAAgB,SAAuBP,GAC/Dj0S,KAAKi0S,gBAAkBA,GAGzBH,EAAgBh5S,UAAU25S,QAAU,SAAiB/jS,EAAMwqC,EAAMm5P,EAAkB1qS,GACxD,OAArB3J,KAAKm0S,cACPn0S,KAAKm0S,YAAYO,cACjB10S,KAAKm0S,YAAYhrJ,WACjBnpJ,KAAKm0S,YAAYzuO,SACjB1lE,KAAKm0S,YAAc,MAGjBj5P,EAAK8rB,oBAAoB8sO,EAC3B54P,EAAK8rB,SAASwtO,cAAcx0S,OAI9BA,KAAKk0S,cACLl0S,KAAKi0S,gBAAgBQ,QAAQ/jS,EAAMwqC,EAAMm5P,EAAkB1qS,KAG7DmqS,EAAgBh5S,UAAU6zE,WAAa,SAAoBj+D,EAAM2jS,GAC/Dr0S,KAAKk0S,cACLl0S,KAAKi0S,gBAAgBtlO,WAAWj+D,EAAM2jS,GAElCr0S,KAAK20S,wBACP30S,KAAKo0S,sBAAsB,KAAMV,GAASW,IAI9CP,EAAgBh5S,UAAU8tI,UAAY,SAAmByrK,GACvDr0S,KAAKk0S,YAAc,EACnBl0S,KAAKi0S,gBAAgBrrK,UAAUyrK,GAE3Br0S,KAAK20S,wBACP30S,KAAKo0S,sBAAsB,KAAMV,GAASW,IAI9CP,EAAgBh5S,UAAU85S,YAAc,SAAqBlkS,EAAM2jS,GACjEr0S,KAAKi0S,gBAAgBW,YAAYlkS,EAAM2jS,IAGzCP,EAAgBh5S,UAAU2sE,QAAU,SAAiB6sO,GACnDt0S,KAAKs0S,UAAYA,GAGnBR,EAAgBh5S,UAAUqE,KAAO,SAAcuR,GACzC1Q,KAAKm0S,aACPn0S,KAAKm0S,YAAYh1S,KAAKuR,EAAKi3D,eAAgBj3D,EAAKk3D,kBAIpDksO,EAAgBh5S,UAAUwuD,SAAW,WAC/BtpD,KAAKm0S,aACPn0S,KAAKm0S,YAAY7qP,YAIrBwqP,EAAgBh5S,UAAUquJ,SAAW,WAC/BnpJ,KAAKm0S,aACPn0S,KAAKm0S,YAAYhrJ,YAIrB2qJ,EAAgBh5S,UAAU4qE,OAAS,WAC7B1lE,KAAKm0S,aACPn0S,KAAKm0S,YAAYzuO,UAIrBzkE,EAAa6yS,EAAiB,CAAC,CAC7B50S,IAAK,yBACLV,IAAK,WACH,OAAOwB,KAAKg0S,iBAAwC,IAArBh0S,KAAKk0S,gBAIjCJ,EA3GoB,GA8GlBe,GAAa,WACtB,SAASA,EAAW32Q,EAAQxgC,EAAMs2S,GAGhCh0S,KAAKk+B,OAASA,EACdl+B,KAAKk+B,OAAO42Q,2BAA4B,EACxC90S,KAAKk+B,OAAO8oC,SAAWhnE,KACvBA,KAAKtC,KAAOA,EACZsC,KAAKg0S,gBAAkBA,EACvBh0S,KAAKm0S,YAAc,KACnBn0S,KAAKk0S,YAAc,EACnBl0S,KAAK4vC,SAAW,GAChB5vC,KAAK+0S,mBAAqB,KAC1B/0S,KAAKg1S,iBAAmB,KA6M1B,OA1MAH,EAAW/5S,UAAU25S,QAAU,SAAiB/jS,EAAMwqC,EAAMm5P,EAAkB1qS,EAAOsrS,GAQnF,GAPyB,OAArBj1S,KAAKm0S,cACPn0S,KAAKm0S,YAAYO,cACjB10S,KAAKm0S,YAAYhrJ,WACjBnpJ,KAAKm0S,YAAYzuO,SACjB1lE,KAAKm0S,YAAc,MAGjBj5P,EAAK8rB,oBAAoB8sO,GAC3B54P,EAAK8rB,SAASwtO,cAAcx0S,WAI9B,GAA8B,OAA1BA,KAAKg1S,iBACPT,GAAUW,gBAAgBxkS,EAAM,CAACwqC,GAAOl7C,KAAKg1S,iBAAkBh1S,KAAM2J,OAChE,CACLuxC,EAAKi6P,YAAczkS,EACnBwqC,EAAKk6P,mBAAqBf,EAC1Bn5P,EAAKm6P,eAAiBr1S,KAEtB,IAAIk+B,EAASl+B,KAAKs1S,YAAY5kS,EAAMwqC,EAAMm5P,EAAkB1qS,GAC/Cu0B,EAAOojC,WAEbH,aAAajmB,EAAMhd,GAC1Bl+B,KAAK4vC,SAAS10C,KAAKggD,GACnBl7C,KAAKk0S,gBAITW,EAAW/5S,UAAU6zE,WAAa,SAAoBj+D,EAAM2jS,GAC1D,GAA8B,OAA1Br0S,KAAKg1S,iBACPT,GAAUgB,iBAAiB7kS,EAAM1Q,KAAKg1S,iBAAkBh1S,WACnD,GAAIA,KAAKm0S,aAAen0S,KAAKm0S,YAAYqB,SAC9CjB,GAAUgB,iBAAiB7kS,EAAM1Q,KAAKm0S,YAAY/qO,MAAOirO,OACpD,CACL,IAAIt9R,EAAQ/W,KAAK4vC,SAAS5pC,MAAK,SAAUkB,GACvC,OAAOA,EAAEuuS,oBAAsBpB,KAEjC,GAAIt9R,EAAO,CAGT,IAFA,IAAI2+R,EAAY3+R,EAAM4+R,qBAEbj7S,EAAI,EAAGiI,EAAK+yS,EAAU96S,OAAQF,EAAIiI,IAAMjI,EAAG,CAClD,IAAIk7S,EAASF,EAAUh7S,GAEnBk7S,EAAOT,cAAgBzkS,IACzBglS,EAAUv+R,OAAOzc,EAAG,GACpBgW,EAAKzO,SAASlE,YAAY63S,GAC1Bl7S,IAAIiI,IACJ3C,KAAKk0S,eAILl0S,KAAK20S,wBACP30S,KAAKo0S,sBAAsB1jS,EAAMgjS,GAASW,MAMlDQ,EAAW/5S,UAAU8tI,UAAY,SAAmByrK,GAClD,GAA8B,OAA1Br0S,KAAKg1S,iBACPT,GAAUsB,gBAAgB71S,KAAKg1S,iBAAkBh1S,WAC5C,GAAIA,KAAKm0S,aAAen0S,KAAKm0S,YAAYqB,SAC9CjB,GAAUsB,gBAAgB71S,KAAKm0S,YAAY/qO,MAAOirO,OAC7C,CACL,IAAIt9R,EAAQ/W,KAAK4vC,SAAS5pC,MAAK,SAAUkB,GACvC,OAAOA,EAAEuuS,oBAAsBpB,KAGjC,GAAIt9R,EAAO,CAET,IADA,IAAI++R,EAAa/+R,EAAM4+R,qBACdj7S,EAAI,EAAGiI,EAAKmzS,EAAWl7S,OAAQF,EAAIiI,IAAMjI,EAAG,CACnD,IAAIq7S,EAAUD,EAAWp7S,GACzBq7S,EAAQZ,YAAYlzS,SAASlE,YAAYg4S,GACzC/1S,KAAKk0S,cAGPn9R,EAAM4+R,qBAAuB,GAEzB31S,KAAK20S,wBACP30S,KAAKo0S,sBAAsB,KAAMV,GAASW,MAMlDQ,EAAW/5S,UAAUw6S,YAAc,SAAqB5kS,EAAMwqC,EAAMm5P,EAAkB1qS,GACpF,GAAI0qS,EAAkB,CACpB,IAAIt9R,EAAQ/W,KAAK4vC,SAAS5pC,MAAK,SAAUkB,GACvC,OAAOA,EAAEuuS,oBAAsBpB,KAEjC,GAAIt9R,EAAO,CACT,QAAcnZ,IAAV+L,EAKF,IAJA,IAAIqsS,EAAaj/R,EAAM4+R,qBACnBM,GAAa,EACbC,OAAW,EAENx7S,EAAI,EAAGiI,EAAKqzS,EAAWp7S,OAAQF,EAAIiI,IAAMjI,EAAG,CACnD,IAAIkI,EAAUozS,EAAWt7S,GAEzB,GAAIkI,EAAQuyS,cAAgBe,IAC1BD,IACAC,EAAWtzS,EAAQuyS,YAEfc,GAAatsS,GAASusS,IAAaxlS,GAErC,OADAslS,EAAW7+R,OAAOzc,EAAG,EAAGwgD,GACjBt4C,EAOf,OADAmU,EAAM4+R,qBAAqBz6S,KAAKggD,GACzBnkC,GAIX,OAAO/W,KAAKk+B,QAGd22Q,EAAW/5S,UAAUq7S,UAAY,SAAmB/sO,GAClDppE,KAAKg1S,iBAAmB5rO,GAG1ByrO,EAAW/5S,UAAU85S,YAAc,SAAqBlkS,EAAM2jS,GAC5D,IAAIn2Q,EAAS,MAAIs5E,cAAc,UAC3BjpG,EAASvO,KAAKk+B,OAAOojC,WACzBpjC,EAAOu3Q,kBAAoBpB,EAC3Bn2Q,EAAOi3Q,YAAczkS,EACrBwtB,EAAOy3Q,qBAAuB,GAC9BpnS,EAAO4yD,aAAajjC,EAAQl+B,KAAKk+B,QACjCl+B,KAAK4vC,SAAS10C,KAAKgjC,GAEa,OAA5Bl+B,KAAK+0S,qBACP/0S,KAAK+0S,mBAAqB,IAG5B/0S,KAAK+0S,mBAAmB75S,KAAKgjC,IAG/B22Q,EAAW/5S,UAAUs5S,sBAAwB,SAA+B1jS,EAAMglF,EAAO2+M,EAAkB1qS,GAOzG,GANyB,OAArB3J,KAAKm0S,cACPn0S,KAAKm0S,YAAcn0S,KAAKg0S,gBAAgB/0S,OAAOe,KAAKs0S,UAAUjmS,WAC9DrO,KAAKm0S,YAAYh1S,KAAKa,KAAKs0S,UAAU3sO,eAAgB3nE,KAAKs0S,UAAU1sO,iBACpE5nE,KAAKm0S,YAAYiC,kBAAkBp2S,KAAKk+B,SAGtCl+B,KAAKm0S,YAAYqB,SAAU,CAC7B,IAAIpsO,EAAQppE,KAAKm0S,YAAY/qO,MACzB2rO,EAAqB/0S,KAAK+0S,mBAE9B,GAA2B,OAAvBA,EACF,IAAK,IAAI1+R,KAAY+yD,EAGnB,IAFA,IAAIlyD,EAAOkyD,EAAM/yD,GAER3b,EAAI,EAAGiI,EAAKoyS,EAAmBn6S,OAAQF,EAAIiI,IAAMjI,EAAG,CAC3D,IAAIwjC,EAAS62Q,EAAmBr6S,GAChCwc,EAAK09R,YAAY12Q,EAAOi3Q,YAAaj3Q,EAAOu3Q,mBAKlDz1S,KAAKq2S,cAAgBjtO,EACrBmrO,GAAUW,gBAAgBxkS,EAAMglF,EAAOtsB,EAAOirO,EAAkB1qS,KAIpEkrS,EAAW/5S,UAAU2sE,QAAU,SAAiB6sO,GAC9Ct0S,KAAKs0S,UAAYA,GAGnBO,EAAW/5S,UAAUqE,KAAO,SAAcuR,GACpC1Q,KAAKm0S,aACPn0S,KAAKm0S,YAAYh1S,KAAKuR,EAAKi3D,eAAgBj3D,EAAKk3D,kBAIpDitO,EAAW/5S,UAAUwuD,SAAW,WAC1BtpD,KAAKm0S,aACPn0S,KAAKm0S,YAAY7qP,YAIrBurP,EAAW/5S,UAAUquJ,SAAW,WAC1BnpJ,KAAKm0S,aACPn0S,KAAKm0S,YAAYhrJ,YAIrB0rJ,EAAW/5S,UAAU4qE,OAAS,WACxB1lE,KAAKm0S,aACPn0S,KAAKm0S,YAAYzuO,UAIrBzkE,EAAa4zS,EAAY,CAAC,CACxB31S,IAAK,yBACLV,IAAK,WACH,OAAOwB,KAAKg0S,iBAAwC,IAArBh0S,KAAKk0S,gBAIjCW,EA1Ne,GA6NbN,IAAa3I,EAASvpB,EAAU,WACzC,SAASkyB,KAoFT,OAhFAA,EAAU+B,YAAc,SAAqBp7P,GAC3C,YAA6Bt9C,IAAzBs9C,EAAK04P,gBACAW,EAAUgC,eAGZr7P,EAAK04P,gBAAgBh1S,OAG9B21S,EAAUprO,eAAiB,SAAwBz4D,EAAM04D,EAAOirO,EAAkB1qS,EAAO6sS,GACvF,IAAI9gN,OAAQ,EAEZ,GAAa,OAAThlF,EACFglF,EAAQg+M,OACH,CACL,IAAIxwO,EAAaxyD,EAAKzO,SAASihE,WAC3BvgE,EAAKugE,EAAWtoE,OACpB86F,EAAQ,IAAIh1F,MAAMiC,GAElB,IAAK,IAAIjI,EAAI,EAAGA,EAAIiI,IAAMjI,EACxBg7F,EAAMh7F,GAAKwoE,EAAWxoE,GAI1B65S,EAAUW,gBAAgBxkS,EAAMglF,EAAOtsB,EAAOirO,EAAkB1qS,EAAO6sS,IAGzEjC,EAAUgB,iBAAmB,SAA0B7kS,EAAM04D,EAAOirO,GAClE,IAAK,IAAIh+R,KAAY+yD,EACnBA,EAAM/yD,GAAUs4D,WAAWj+D,EAAM2jS,IAIrCE,EAAUsB,gBAAkB,SAAyBzsO,EAAOirO,GAC1D,IAAK,IAAIh+R,KAAY+yD,EACnBA,EAAM/yD,GAAUuyH,UAAUyrK,IAI9BE,EAAUW,gBAAkB,SAAyBxkS,EAAMglF,EAAOtsB,EAAOirO,EAAkB1qS,EAAO6sS,GAChG,IAAK,IAAI97S,EAAI,EAAGiI,EAAK+yF,EAAM96F,OAAQF,EAAIiI,IAAMjI,EAAG,CAC9C,IAAI+7S,EAAc/gN,EAAMh7F,GACpBo+E,EAAW29N,EAAY39N,SAE3B,GAAI29N,EAAY3B,0BAA2B,CAGzC,IAAK,IAAIz+R,KAFTogS,EAAYzvO,SAASmvO,UAAU/sO,GAEVA,EACnBA,EAAM/yD,GAAUu+R,YAAYlkS,EAAM+lS,EAAYzvO,UAGhD0uB,EAAMv+E,OAAOzc,EAAG,GAChBiI,IAAKjI,SACA,GAAiB,IAAbo+E,GAA+B,IAAbA,GAAkB29N,EAAYzvO,oBAAoB8sO,GAC7E,GAAiB,IAAbh7N,GAAkB81N,EAAiB6H,GACrC/gN,EAAMv+E,OAAOzc,EAAG,GAChBiI,IAAKjI,QACA,CACL,IAAIqc,EAAQqyD,EAAMotO,GAAuBjC,EAAU+B,YAAYG,IAE3D1/R,IACFA,EAAM09R,QAAQ/jS,EAAM+lS,EAAapC,EAAkB1qS,GACnD+rF,EAAMv+E,OAAOzc,EAAG,GAChBiI,IAAKjI,UAITg7F,EAAMv+E,OAAOzc,EAAG,GAChBiI,IAAKjI,IAIT,IAAK,IAAIg8S,KAAattO,EAAO,CAC3B,IAAIlyD,EAAOkyD,EAAMstO,GAEbx/R,EAAKy9R,wBACPz9R,EAAKk9R,sBAAsB1jS,EAAMglF,EAAO2+M,EAAkB1qS,KAKzD4qS,EArFkC,GAsFtClyB,EAAQk0B,eAAiB,0BAA2B3K,GAEzD,SAASzlP,GAASu/E,EAAQhoI,EAAMoe,EAAUxe,GACxC,GAAKI,EAAL,CAIA,IAAI6uP,EAAW7mH,EAAOhoI,GACtB,GAAI6uP,GACF,GAAIA,IAAazwO,EACf,MAAM,IAAI/e,MAAM,yBAA2BO,EAAO,sDAAwDI,EAAO,UAMrHgoI,EAAOhoI,GAAQoe,GAGV,SAAS66R,GAAqBj5S,EAAMJ,GACzC,GAAI,QAAQ8E,KAAK1E,GAAO,CACtB,IAAIk5S,EAAUjI,EAAWjxS,GAEzB,OADA,YAAqB,cAAcwmB,KAAK,IAAOxmB,EAAO,oBAAuBJ,EAAO,oCAAuCs5S,EAAU,gFAC9HA,EAET,OAAOl5S,EAGT,IAEW+nP,GAAgB,WAgGzB,SAASA,EAAcl3O,EAAQ0jS,GAG7BjyS,KAAK62S,gBAAkB,KAEvB72S,KAAKuO,OAASA,GAAU,KACxBvO,KAAK82S,UAA4B,OAAhB92S,KAAKuO,OACtBvO,KAAKiyS,QAAUA,GAAW,GAC1BjyS,KAAKkmP,gBAAkB,CACrB0lC,gBAAiB5rR,KAAK+2S,kBAAkB53S,KAAKa,MAC7CsrR,iBAAkBtrR,KAAKg3S,mBAAmB73S,KAAKa,OAEjDA,KAAKipG,WAAapuG,OAAOoE,OAAO,MAChCe,KAAK44G,SAAW/9G,OAAOoE,OAAO,MAC9Be,KAAK4rR,gBAAkB/wR,OAAOoE,OAAO,MACrCe,KAAKsrR,iBAAmBzwR,OAAOoE,OAAO,MACtCe,KAAKi3S,aAAep8S,OAAOoE,OAAO,MAClCe,KAAKqzB,OAASx4B,OAAOoE,OAAO,MAC5Be,KAAKk3S,cAAgBl3S,KAAKm3S,aAAen3S,KAAKo3S,aAAep3S,KAAKq3S,YAAcr3S,KAAKs3S,WAAat3S,KAAKu3S,cAAe,EAiJxH,OAlQA9xD,EAAcw+C,WAAa,SAAoBzmS,EAAQ+uP,GACrD,IAAIzwO,OAAW,EAEf,GAAIywO,GANa,oBAMiBA,EAChC,OAAOA,EAET,GAAI,cAAe/uP,EAAQ,CACzB,IAAIgF,EAAShF,EAAOg6S,UAEpB,GAAsB,iBAAXh1S,GACTsZ,EAAWywO,GAAY,IAAIkrD,IACJ,iBAAI,EACtB37R,EAAS+2R,cACZ/2R,EAAS+2R,YAAc8D,GAAqBn0S,EAAQ,uBAEjD,CACiB,mBAAXA,IACTA,EAASA,EAAOxH,KAAKwC,IAED,iBAAXgF,IACTA,EAAS,CAAE9E,KAAM8E,IAKnB,IAAIk1S,GAFJl1S,EAAS3H,OAAOgI,OAAO,GAAIL,IAEDlF,MAAQ,UAE9BqO,EAAQnJ,EAAO9E,KACnB,OAAQg6S,GACN,IAAK,UAAU,IAAK,aAClB57R,EAAWywO,GAAY,IAAIkrD,IACJ,iBAAI,EACN,YAAjBC,EACG57R,EAAS+2R,cACZ/2R,EAAS+2R,YAAclnS,EAAQgrS,GAAqBhrS,EAAO,kBAAoBgjS,EAAWnxS,EAAOE,OAG9Foe,EAASigR,gBACZjgR,EAASigR,cAAgBpwR,EAAQgrS,GAAqBhrS,EAAO,oBAAsBgjS,EAAWnxS,EAAOE,OAGrG,uBAAwB8E,IAC1BA,EAAOm1S,aAAen1S,EAAOojP,0BACtBpjP,EAAOojP,oBAEZ,uBAAwBpjP,QAAmD5E,IAAzCke,EAAS87R,8BAC7Cp1S,EAAOo1S,4BAA8Bp1S,EAAOq1S,0BACrCr1S,EAAOq1S,2BAGTr1S,EAAO9E,KAEd7C,OAAOgI,OAAOiZ,EAAUtZ,GACxB,MACF,IAAK,iBACHsZ,EAAW,IAAI,yBAAuB,oBAAUnQ,GAASnO,EAAOE,OAChE,MACF,IAAK,kBACHoe,EAAW,IAAI,0BAAwB,oBAAUnQ,GAASnO,EAAOE,OACjE,MACF,IAAK,kBACHoe,EAAW,IAAIgzR,GAKrB,GAAIhzR,aAAoB27R,GAAsB,CAC5C,IAAIK,EAA+B,iBAAXt1S,OAAsB5E,EAAY4E,EAAOu1S,UAC7DC,EAAel8R,EAAS+vB,WAC5B,GAAInrC,MAAMC,QAAQm3S,GAChB,IAAK,IAAIp9S,EAAI,EAAGiI,EAAKm1S,EAAWl9S,OAAQ+H,EAAKjI,IAAKA,EAAG,CACnD,IAAI2nB,EAAOy1R,EAAWp9S,GACtB,IAAK2nB,GAAwB,iBAATA,IAAsBA,EAAK3kB,KAC7C,MAAM,IAAIX,MAAM,iCAAmCrC,EAAI,gBAAkB8C,EAAOE,KAAO,kEAKzF,IAHA,IAAIu6S,EAAU,IAAIC,GAAiB71R,GAE/B81R,GAAU,EACLvkR,EAAI,EAAGm8C,EAAKioO,EAAap9S,OAAQm1E,EAAKn8C,IAAKA,EAClD,GAAIokR,EAAapkR,GAAGl2B,OAASu6S,EAAQv6S,KAAM,CACzCy6S,GAAU,EACV,MAGAA,GAGJF,EAAQG,aAAa56S,EAAQse,KAKrC,OAAOA,GAwBT2pO,EAAc3qP,UAAUu9S,YAAc,SAAqBt3S,EAAKrD,GAC9D,GAAyB,mBAAdqD,EAAIrD,GAAsB,CAKnC,IAJA,IAAIwpB,EAAOnmB,EAAIrD,GAAMyB,KAAK4B,GACtB04E,EAAU,EACV/lE,OAAe,OAEuC9V,IAAnDoC,KAAK0T,EAAehW,EAAO+7E,EAAQz6D,aACxCy6D,IAGFz5E,KAAKtC,IAAQ,EACbsC,KAAK0T,GAAgBwT,IAIzBu+N,EAAc3qP,UAAUw9S,YAAc,SAAqB56S,EAAMgqH,EAAK6wL,EAAKC,EAAOC,GAKhF,GAJIz4S,KAAK82S,WACP92S,KAAKuO,OAAO+pS,YAAY56S,EAAMgqH,EAAK6wL,EAAKC,EAAOC,GAG7Cz4S,KAAKtC,GAAO,CACdsC,KAAKtC,EAAO,KAAKgqH,EAAK6wL,EAAKC,EAAOC,GAElC,IAAI/kS,EAAehW,EAAO,IAC1B,GAAIsC,KAAK0T,KACP1T,KAAK0T,GAAcg0G,EAAK6wL,EAAKC,EAAOC,GAGhCz4S,KADJ0T,EAAehW,EAAO,MACE,CACtBsC,KAAK0T,GAAcg0G,EAAK6wL,EAAKC,EAAOC,GAIpC,IAFA,IAAIh/N,EAAU,OAE4C77E,IAAnDoC,KAAK0T,EAAehW,EAAO+7E,EAAQz6D,aACxChf,KAAK0T,GAAcg0G,EAAK6wL,EAAKC,EAAOC,GACpCh/N,OAOVgsK,EAAc3qP,UAAUi0S,wBAA0B,SAAiCjwR,GACjF9e,KAAKq4S,YAAYv5R,EAAO,iBACxB9e,KAAKq4S,YAAYv5R,EAAO,gBACxB9e,KAAKq4S,YAAYv5R,EAAO,gBACxB9e,KAAKq4S,YAAYv5R,EAAO,eACxB9e,KAAKq4S,YAAYv5R,EAAO,cACxB9e,KAAKq4S,YAAYv5R,EAAO,iBAG1B2mO,EAAc3qP,UAAU49S,mBAAqB,SAA4BC,GACvE,OAAO34S,KAAK62S,kBAAoB72S,KAAK62S,gBAAkB8B,IAGzDlzD,EAAc3qP,UAAU89S,cAAgB,SAAuBC,GAC7D,IAAIC,EAAiB94S,KAAKuO,OAE1BvO,KAAKuO,OAASsqS,GAAa,KAC3B74S,KAAK82S,UAA4B,OAAhB92S,KAAKuO,OAEG,OAArBsqS,EAAUtqS,SACZsqS,EAAUtqS,OAASuqS,EACnBD,EAAU/B,UAA+B,OAAnBgC,IAI1BrzD,EAAc3qP,UAAUi+S,eAAiB,SAAwBp3S,GAC/D,OAAO,YAAeA,EAAM3B,KAAKiyS,UAGnCxsD,EAAc3qP,UAAUk+S,gBAAkB,SAAyBz+I,EAASzsH,GAC1EqY,GAASnmD,KAAK44G,SAAU2hD,EAASzsH,EAAU,eAG7C23M,EAAc3qP,UAAU8kE,WAAa,SAAoB26F,GACvD,OAAOv6J,KAAK44G,SAAS2hD,KAAav6J,KAAK82S,UAAY92S,KAAKuO,OAAOqxD,WAAW26F,GAAW,OAGvFkrF,EAAc3qP,UAAUm+S,aAAe,SAAsB3mF,GAC3D,OAAOtyN,KAAKi3S,aAAa3kF,KAAetyN,KAAK82S,UAAY92S,KAAKuO,OAAO0qS,aAAa3mF,GAAa,OAGjGmzB,EAAc3qP,UAAUo+S,kBAAoB,SAA2B5mF,EAAWxkL,EAAUqrQ,GAC1Fn5S,KAAKi3S,aAAa3kF,GAAa6mF,EAC/BhzP,GAASnmD,KAAKipG,WAAYqpH,EAAWxkL,EAAU,iBAGjD23M,EAAc3qP,UAAUssE,aAAe,SAAsBkrJ,GAC3D,OAAOtyN,KAAKipG,WAAWqpH,KAAetyN,KAAK82S,UAAY92S,KAAKuO,OAAO64D,aAAakrJ,GAAa,OAG/FmzB,EAAc3qP,UAAUopS,uBAAyB,SAAgCxmS,EAAMymS,GACrFh+O,GAASnmD,KAAK4rR,gBAAiBluR,EAAMymS,EAAgB,qBAGvD1+C,EAAc3qP,UAAUi8S,kBAAoB,SAA2Br5S,GACrE,OAAOsC,KAAK4rR,gBAAgBluR,KAAUsC,KAAK82S,UAAY92S,KAAKuO,OAAOwoS,kBAAkBr5S,GAAQ,OAG/F+nP,EAAc3qP,UAAUwpS,wBAA0B,SAAiC5mS,EAAM6mS,GACvFp+O,GAASnmD,KAAKsrR,iBAAkB5tR,EAAM6mS,EAAiB,sBAGzD9+C,EAAc3qP,UAAUk8S,mBAAqB,SAA4Bt5S,GACvE,OAAOsC,KAAKsrR,iBAAiB5tR,KAAUsC,KAAK82S,UAAY92S,KAAKuO,OAAOyoS,mBAAmBt5S,GAAQ,OAGjG+nP,EAAc3qP,UAAUs+S,cAAgB,SAAuB17S,EAAMkB,GACnEunD,GAASnmD,KAAKqzB,OAAQ31B,EAAMkB,EAAO,YAGrC6mP,EAAc3qP,UAAU+rR,SAAW,SAAkBnpR,GACnD,OAAOsC,KAAKqzB,OAAO31B,KAAUsC,KAAK82S,UAAY92S,KAAKuO,OAAOs4Q,SAASnpR,GAAQ,OAG7E+nP,EAAc3qP,UAAU8rI,aAAe,SAAsBv4H,EAAWgrS,GACtE,IAAIC,EAAmB,IAASttQ,OAAO,IAASlwB,SAAUu9R,GAsB1D,OArBIC,EACEA,aAA4B7B,KAC9BhyD,EAAcw+C,WAAWoV,EAAMC,GAEQ,OAAnCA,EAAiBvd,eAA2D,OAAjCud,EAAiBzG,aAC9D4E,GAAqBxT,WAAWoV,EAAK37S,KAAM47S,GAEN,OAAnCA,EAAiBvd,eAA2D,OAAjCud,EAAiBzG,cAC9DyG,EAAiBzG,YAAclE,EAAW0K,EAAK37S,UAInD47S,EAAmB7zD,EAAcw+C,WAAWoV,IAAS5B,GAAqBxT,WAAWoV,EAAK37S,OAAS,yBAAuBumS,WAAWoV,EAAK37S,OAAS,0BAAwBumS,WAAWoV,EAAK37S,OAASoxS,EAAwB7K,WAAWoV,EAAK37S,UAE1O47S,EAAmB,IAAI7B,IACN5E,YAAclE,EAAW0K,EAAK37S,OAEjD,IAAS0uC,OAAO,IAAStwB,SAAUw9R,EAAkBD,IAEvDC,EAAiB/4N,WAAWlyE,EAAWgrS,GACvCC,EAAiBnzP,SAASnmD,MACnBs5S,GAGF7zD,EAnQkB,GAsQhB8zD,GAAO,WAChB,SAASA,EAAKlrS,EAAWk6D,EAAatmE,EAAU+2J,EAAa6rE,EAAUj1L,EAAUw5B,GAyB/E,IAAK,IAAIp8D,KAtBThN,KAAKqO,UAAYA,EACjBrO,KAAKuoE,YAAcA,EACnBvoE,KAAKkwD,UAAYqY,EAAYrY,UAC7BlwD,KAAKiC,SAAWA,EAChBjC,KAAKohE,WAAan/D,EAASm/D,WAC3BphE,KAAKq6G,UAAYp4G,EAASo4G,UAC1Br6G,KAAKg5J,YAAcA,EACnBh5J,KAAK6kO,SAAWA,EAChB7kO,KAAK4vC,SAAWA,EAChB5vC,KAAKopE,MAAQA,EACbppE,KAAKw1S,UAAW,EAChBx1S,KAAK+/E,WAAY,EACjB//E,KAAK+2E,SAAU,EACf/2E,KAAKw5S,YAAa,EAClBx5S,KAAK2nE,eAAiB,KACtB3nE,KAAK4nE,gBAAkB,KACvB5nE,KAAKylE,WAAa,KAClBzlE,KAAKy5S,eAAiB,KACtBz5S,KAAK05S,uBAAoB97S,EACzBoC,KAAK25S,mBAAoB,EACzB35S,KAAKm0S,YAAc,KAED/qO,EAAO,CACvBppE,KAAKw1S,UAAW,EAChB,OA6LJ,OAzLA+D,EAAKz+S,UAAU+7E,cAAgB,WAC7B72E,KAAKuoE,YAAYqxO,kBAAkB55S,OAGrCu5S,EAAKz+S,UAAU2sE,QAAU,WACvB,IACI9kE,EADAjI,OAAI,EAEJs+J,EAAch5J,KAAKg5J,YAEvB,IAAKt+J,EAAI,EAAGiI,EAAKq2J,EAAYp+J,OAAQF,EAAIiI,IAAMjI,EAC7Cs+J,EAAYt+J,GAAG+sE,QAAQznE,OAI3Bu5S,EAAKz+S,UAAUqE,KAAO,SAAcwoE,EAAgBC,EAAiBiyO,GACnE,IAAI7gJ,OAAc,EACd6rE,OAAW,EACXj1L,OAAW,EACXl1C,OAAI,EACJiI,OAAK,EAET,IAAIk3S,IAAiB75S,KAAK25S,kBAA1B,CAIA,GAAI35S,KAAK+2E,QAAS,CAChB,GAAI/2E,KAAK2nE,iBAAmBA,EAC1B,OAGF3nE,KAAK0lE,SAUP,IAPA1lE,KAAK+2E,SAAU,EACf/2E,KAAK2nE,eAAiBA,EACtB3nE,KAAK4nE,gBAAkBA,GAAmB,gCAAsBD,GAEhE3nE,KAAKkwD,UAAUooP,YAAY,aAAct4S,MAGpCtF,EAAI,EAAGiI,GADZkiO,EAAW7kO,KAAK6kO,UACUjqO,OAAQF,EAAIiI,IAAMjI,EAC1CmqO,EAASnqO,GAAGyE,KAAKa,MASnB,IAN4B,OAAxBA,KAAKy5S,iBACP9xO,EAAexoE,KAAKa,KAAKy5S,eAAe9xO,eAAgB3nE,KAAKy5S,eAAe7xO,iBAC5E5nE,KAAKy5S,eAAiB,MAInB/+S,EAAI,EAAGiI,GADZq2J,EAAch5J,KAAKg5J,aACUp+J,OAAQF,EAAIiI,IAAMjI,EAC7Cs+J,EAAYt+J,GAAGyE,KAAKa,MAItB,IAAKtF,EAAI,EAAGiI,GADZitC,EAAW5vC,KAAK4vC,UACUh1C,OAAQF,EAAIiI,IAAMjI,EAC1Ck1C,EAASl1C,GAAGyE,KAAKwoE,EAAgBC,GAAiB,GAGhD5nE,KAAKw1S,UACPjB,GAAUprO,eAAenpE,KAAKm0S,YAAan0S,KAAKopE,SAIpDmwO,EAAKz+S,UAAUgqO,WAAa,SAAoB3tL,GAC9Cn3C,KAAK6kO,SAAS3pO,KAAKi8C,GAEfn3C,KAAK+2E,SACP5/B,EAAQh4C,KAAKa,OAIjBu5S,EAAKz+S,UAAU4qE,OAAS,WACtB,IAAIszF,OAAc,EACd6rE,OAAW,EACXj1L,OAAW,EACXl1C,OAAI,EACJiI,OAAK,EAET,GAAI3C,KAAK+2E,QAAS,CAShB,IARA/2E,KAAK+2E,SAAU,EACf/2E,KAAKkwD,UAAUooP,YAAY,eAAgBt4S,MAEnB,OAApBA,KAAKylE,YACPzlE,KAAKylE,WAAWC,SAIbhrE,EAAI,EAAGiI,GADZkiO,EAAW7kO,KAAK6kO,UACUjqO,OAAQF,EAAIiI,IAAMjI,EAC1CmqO,EAASnqO,GAAGgrE,SAId,IAAKhrE,EAAI,EAAGiI,GADZq2J,EAAch5J,KAAKg5J,aACUp+J,OAAQF,EAAIiI,IAAMjI,EAC7Cs+J,EAAYt+J,GAAGgrE,SAIjB,IAAKhrE,EAAI,EAAGiI,GADZitC,EAAW5vC,KAAK4vC,UACUh1C,OAAQF,EAAIiI,IAAMjI,EAC1Ck1C,EAASl1C,GAAGgrE,SAGd1lE,KAAK2nE,eAAiB,KACtB3nE,KAAK4nE,gBAAkB,OAI3B2xO,EAAKz+S,UAAUs7S,kBAAoB,SAA2BvhF,GAC5DA,EAAQvzJ,WAAWH,aAAanhE,KAAKiC,SAAU4yN,IAGjD0kF,EAAKz+S,UAAUg/S,cAAgB,SAAuBvrS,GACpDA,EAAOxQ,YAAYiC,KAAKiC,WAG1Bs3S,EAAKz+S,UAAU45S,YAAc,WAM3B,IALA,IAAIzyS,EAAWjC,KAAKiC,SAChBW,EAAU5C,KAAKohE,WACfkP,EAAMtwE,KAAKq6G,UACXp3G,OAAO,EAEJL,IACLK,EAAOL,EAAQs+D,YACfj/D,EAASlE,YAAY6E,GAEjBA,IAAY0tE,IAIhB1tE,EAAUK,GAIds2S,EAAKz+S,UAAUwuD,SAAW,WACxB,IAAI0vG,OAAc,EACdppH,OAAW,EACXl1C,OAAI,EACJiI,OAAK,EAET,IAAI3C,KAAKw5S,WAAT,CAWA,IAPAx5S,KAAKw5S,YAAa,EAEM,OAApBx5S,KAAKylE,YACPzlE,KAAKylE,WAAWnc,WAIb5uD,EAAI,EAAGiI,GADZq2J,EAAch5J,KAAKg5J,aACUp+J,OAAQF,EAAIiI,IAAMjI,EAC7Cs+J,EAAYt+J,GAAG4uD,WAIjB,IAAK5uD,EAAI,EAAGiI,GADZitC,EAAW5vC,KAAK4vC,UACUh1C,OAAQF,EAAIiI,IAAMjI,EAC1Ck1C,EAASl1C,GAAG4uD,aAIhBiwP,EAAKz+S,UAAUquJ,SAAW,WACxB,IAAI6P,OAAc,EACdppH,OAAW,EACXl1C,OAAI,EACJiI,OAAK,EAET,GAAI3C,KAAKw5S,WAAY,CAQnB,IAPAx5S,KAAKw5S,YAAa,EAEM,OAApBx5S,KAAKylE,YACPzlE,KAAKylE,WAAW0jF,WAIbzuJ,EAAI,EAAGiI,GADZq2J,EAAch5J,KAAKg5J,aACUp+J,OAAQF,EAAIiI,IAAMjI,EAC7Cs+J,EAAYt+J,GAAGyuJ,WAIjB,IAAKzuJ,EAAI,EAAGiI,GADZitC,EAAW5vC,KAAK4vC,UACUh1C,OAAQF,EAAIiI,IAAMjI,EAC1Ck1C,EAASl1C,GAAGyuJ,aAKXowJ,EAzNS,GA4NlB,SAASQ,GAAqBrpS,GAC5B,QAA+B9S,IAA3B8S,EAAKgpS,kBACP,OAAOhpS,EAAKgpS,kBAKd,IAFA,IAAI92S,EAAU8N,EAAK0wD,WAEZx+D,GAAgC,IAArBA,EAAQk2E,UACxBl2E,EAAUA,EAAQs+D,YAGpB,OAAIt+D,GAAgC,IAArBA,EAAQk2E,SACdpoE,EAAKgpS,kBAAoB92S,EAAQwiF,UAAUguB,SAAS,cAAgBxwG,EAAU,KAGhF8N,EAAKgpS,kBAAoB,KAG3B,IAAIl0D,GAAW,WACpB,SAASA,EAAStnN,EAAQmyQ,GACxB,IAAI2J,EAAWl4S,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK4rS,EAAS7lP,SAI5F7nD,KAAKk+B,OAASA,EACdl+B,KAAKqwS,kBAAoBA,EACzBrwS,KAAK2nE,eAAiB,KACtB3nE,KAAK4nE,gBAAkB,KACvB5nE,KAAKg6S,SAAWA,EAChBh6S,KAAK4vC,SAAW,GAChB5vC,KAAK+2E,SAAU,EACf/2E,KAAKw5S,YAAa,EAClBx5S,KAAKi6S,iBAAmB,KACxB/7Q,EAAO8oC,SAAWhnE,KAClBk+B,EAAO42Q,2BAA4B,EA4ZrC,OAzZAtvD,EAAS1qP,UAAUo/S,YAAc,SAAqBxpS,GACpD,IAAI+sB,EAAY37B,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,QAEhF43S,EAAoBK,GAAqBrpS,GAE7C,GAA0B,OAAtBgpS,EACF,OAAQj8Q,GACN,IAAK,QACH,OAAOz9B,KAAKg6S,SAASrM,MAAM+L,GAC7B,IAAK,QACH,OAAO15S,KAAKg6S,SAASpM,MAAM8L,GAC7B,QACE,MAAM,IAAI38S,MAAM,gCAAkC0gC,KAK1D+nN,EAAS1qP,UAAUq/S,4BAA8B,WAC/C,IAAI5rS,EAASvO,KAAKk+B,OAElBl+B,KAAK4vC,SAAS10C,KAAK,CACjB+G,SAAUsM,EACV6yD,WAAY7yD,EAAO6yD,WACnBi5C,UAAW9rG,EAAO8rG,UAClBxjC,cAAe,aACf69N,YAAa,WAGX,IAFA,IAAI9lO,OAAO,EAEJA,EAAOrgE,EAAO8rG,WACnB9rG,EAAOgzD,YAAYqN,IAGvBnH,QAAS,aACTtoE,KAAM,aACNumE,OAAQ,aACRpc,SAAU,aACV6/F,SAAU,gBAIdq8F,EAAS1qP,UAAUqE,KAAO,SAAcwoE,EAAgBC,GACtD,IACIjlE,EADAjI,OAAI,EAEJk1C,OAAW,EAEf,GAAI5vC,KAAK+2E,QAAS,CAChB,GAAI/2E,KAAK2nE,iBAAmBA,EAC1B,OAGF3nE,KAAK0lE,SAQP,IALA1lE,KAAK+2E,SAAU,EACf/2E,KAAK2nE,eAAiBA,EAAiBA,GAAkB3nE,KAAK2nE,eAC9D3nE,KAAK4nE,gBAAkBA,EAAkBA,GAAmB5nE,KAAK4nE,gBAG5DltE,EAAI,EAAGiI,GADZitC,EAAW5vC,KAAK4vC,UACUh1C,OAAQF,EAAIiI,IAAMjI,EAC1Ck1C,EAASl1C,GAAGyE,KAAKwoE,EAAgBC,GAAiB,IAItD49K,EAAS1qP,UAAU4qE,OAAS,WAC1B,GAAI1lE,KAAK+2E,QAAS,CAChB,IACIp0E,EADAjI,OAAI,EAEJ0/S,EAAap6S,KAAK4vC,SAMtB,IAJA5vC,KAAK+2E,SAAU,EACf/2E,KAAK2nE,eAAiB,KACtB3nE,KAAK4nE,gBAAkB,KAElBltE,EAAI,EAAGiI,EAAKy3S,EAAWx/S,OAAQF,EAAIiI,IAAMjI,EAC5C0/S,EAAW1/S,GAAGgrE,WAKpB8/K,EAAS1qP,UAAUgW,IAAM,SAAaJ,GASpC,GARI1Q,KAAKqwS,kBACP3/R,EAAKopS,cAAc95S,KAAKk+B,QAExBxtB,EAAK0lS,kBAAkBp2S,KAAKk+B,QAG9Bl+B,KAAK4vC,SAAS10C,KAAKwV,GAEf1Q,KAAKw5S,WAEP,OADA9oS,EAAK44C,WACEtpD,KAAKk6S,YAAYxpS,EAAM,UAIlC80O,EAAS1qP,UAAUsqD,OAAS,SAAgBz7C,EAAO+G,GACjD,IAAIk/B,EAAW5vC,KAAK4vC,SAChBh1C,EAASg1C,EAASh1C,OAEtB,OAAc,IAAV+O,GAA0B,IAAX/O,GAAgB+O,GAAS/O,EACnCoF,KAAK8Q,IAAIJ,IAGlBA,EAAK0lS,kBAAkBxmQ,EAASjmC,GAAOy3D,YACvCxxB,EAASz4B,OAAOxN,EAAO,EAAG+G,GAEtB1Q,KAAKw5S,YACP9oS,EAAK44C,WACEtpD,KAAKk6S,YAAYxpS,EAAM,eAFhC,IAMF80O,EAAS1qP,UAAUknO,KAAO,SAAcprH,EAAasxI,GACnD,GAAItxI,IAAgBsxI,EAApB,CAIA,IAAIt4M,EAAW5vC,KAAK4vC,SAChBl/B,EAAOk/B,EAASgnE,GAEpBlmG,EAAKgkS,cACLhkS,EAAK0lS,kBAAkBxmQ,EAASs4M,GAAa9mL,YAC7CxxB,EAASz4B,OAAOy/F,EAAa,GAC7BhnE,EAASz4B,OAAO+wO,EAAa,EAAGx3O,KAGlC80O,EAAS1qP,UAAUg1C,OAAS,SAAgBp/B,EAAMmmE,EAAesxK,GAC/D,OAAOnoP,KAAKsoP,SAAStoP,KAAK4vC,SAASv+B,QAAQX,GAAOmmE,EAAesxK,IAGnE3C,EAAS1qP,UAAUutP,WAAa,SAAoBz6K,EAAeiJ,EAAesxK,GAChF,IAAI75O,EAAStO,KAET4vC,EAAW5vC,KAAK4vC,SAChBjtC,EAAKirE,EAAchzE,OACnBF,OAAI,EACJo1E,EAAa,GAEjBlC,EAAczmE,SAAQ,SAAU8jF,GAC9B,GAAIk9J,EACFl9J,EAAMypN,kBADR,CAKA,IAAI/gL,EAAYrlH,EAAO4rS,YAAYjvN,EAAO,SACtC0oC,EACF7jD,EAAW50E,KAAKy4H,EAAUxwH,MAAK,WAC7B,OAAO8nF,EAAMypN,kBAGfzpN,EAAMypN,kBAIV,IAAI2F,EAAe,WACjB,GAAI/rS,EAAOkrS,WACT,IAAK9+S,EAAI,EAAGA,EAAIiI,IAAMjI,EACpBkzE,EAAclzE,GAAGyuJ,WAIrB,GAAItyE,EACF,IAAKn8E,EAAI,EAAGA,EAAIiI,IAAMjI,EACpBkzE,EAAclzE,GAAGm8E,gBAIrB,IAAKn8E,EAAI,EAAGA,EAAIiI,IAAMjI,EAAG,CACvB,IAAIiP,EAAQimC,EAASv+B,QAAQu8D,EAAclzE,IACvCiP,GAAS,GACXimC,EAASz4B,OAAOxN,EAAO,KAK7B,OAAImmE,EAAWl1E,OAAS,EACfoB,EAAQgC,IAAI8xE,GAAY3sE,MAAK,WAClC,OAAOk3S,OAIJA,KAGT70D,EAAS1qP,UAAUwtP,SAAW,SAAkB3+O,EAAOktE,EAAesxK,GACpE,IAAI15O,EAASzO,KAET0Q,EAAO1Q,KAAK4vC,SAASjmC,GAErB0wS,EAAe,WAajB,OAZA1wS,EAAQ8E,EAAOmhC,SAASv+B,QAAQX,GAChCA,EAAKgkS,cACLjmS,EAAOmhC,SAASz4B,OAAOxN,EAAO,GAE1B8E,EAAO+qS,YACT9oS,EAAKy4I,WAGHtyE,GACFnmE,EAAKmmE,gBAGAnmE,GAGT,IAAKy3O,EAAe,CAClB,IAAIx0H,EAAY3zH,KAAKk6S,YAAYxpS,EAAM,SACvC,GAAIijH,EACF,OAAOA,EAAUxwH,MAAK,WACpB,OAAOk3S,OAKb,OAAOA,KAGT70D,EAAS1qP,UAAU8tI,UAAY,SAAmB/xD,EAAesxK,GAC/D,IAAIr4O,EAAS9P,KAET4vC,EAAW5vC,KAAK4vC,SAChBjtC,EAAKitC,EAASh1C,OACdF,OAAI,EACJo1E,EAAa,GAEjBlgC,EAASzoC,SAAQ,SAAU8jF,GACzB,GAAIk9J,EACFl9J,EAAMypN,kBADR,CAKA,IAAI/gL,EAAY7jH,EAAOoqS,YAAYjvN,EAAO,SACtC0oC,EACF7jD,EAAW50E,KAAKy4H,EAAUxwH,MAAK,WAC7B,OAAO8nF,EAAMypN,kBAGfzpN,EAAMypN,kBAIV,IAAI2F,EAAe,WACjB,GAAIvqS,EAAO0pS,WACT,IAAK9+S,EAAI,EAAGA,EAAIiI,IAAMjI,EACpBk1C,EAASl1C,GAAGyuJ,WAIhB,GAAItyE,EACF,IAAKn8E,EAAI,EAAGA,EAAIiI,IAAMjI,EAAG,CACvB,IAAI4/S,EAAU1qQ,EAASl1C,GAEnB4/S,GACFA,EAAQzjO,gBAKd/mE,EAAO8/B,SAAW,IAGpB,OAAIkgC,EAAWl1E,OAAS,EACfoB,EAAQgC,IAAI8xE,GAAY3sE,MAAK,WAClC,OAAOk3S,OAIJA,KAGT70D,EAAS1qP,UAAUwuD,SAAW,WAC5B,IACI3mD,EACAitC,EAFAl1C,OAAI,EAGJuwF,OAAQ,EAEZ,IAAIjrF,KAAKw5S,WAOT,IAHAx5S,KAAKw5S,YAAa,EAGb9+S,EAAI,EAAGiI,GADZitC,EAAW5vC,KAAK4vC,UACUh1C,OAAQF,EAAIiI,IAAMjI,GAC1CuwF,EAAQr7C,EAASl1C,IACX4uD,WACNtpD,KAAKk6S,YAAYjvN,EAAO,UAI5Bu6J,EAAS1qP,UAAUquJ,SAAW,WAC5B,IAAIzuJ,OAAI,EACJiI,OAAK,EACLitC,OAAW,EAEf,GAAI5vC,KAAKw5S,WAGP,IAFAx5S,KAAKw5S,YAAa,EAEb9+S,EAAI,EAAGiI,GADZitC,EAAW5vC,KAAK4vC,UACUh1C,OAAQF,EAAIiI,IAAMjI,EAC1Ck1C,EAASl1C,GAAGyuJ,YAKlBq8F,EAAS1qP,UAAUq7S,UAAY,SAAmB/sO,GAChD,IAAIv3D,EAAS7R,KAEbA,KAAKu6S,eAAiBnxO,EACtBppE,KAAK8Q,IAAM9Q,KAAKw6S,eAChBx6S,KAAKolD,OAASplD,KAAKy6S,kBACnBz6S,KAAKgiO,KAAOhiO,KAAK06S,gBACjB16S,KAAK8vC,OAAS9vC,KAAK26S,kBACnB36S,KAAKsoP,SAAWtoP,KAAK46S,oBACrB56S,KAAKqoP,WAAaroP,KAAK66S,sBACvB76S,KAAK4oI,UAAY5oI,KAAK86S,qBACtB96S,KAAK4vC,SAASzoC,SAAQ,SAAUuJ,GAC9B,OAAO6jS,GAAUprO,eAAez4D,EAAM04D,EAAOv3D,OAIjD2zO,EAAS1qP,UAAU0/S,eAAiB,SAAwB9pS,GAC1D6jS,GAAUprO,eAAez4D,EAAM1Q,KAAKu6S,eAAgBv6S,MAEpDA,KAAK4vC,SAAS10C,KAAKwV,GAEf1Q,KAAKw5S,YACP9oS,EAAK44C,YAITk8L,EAAS1qP,UAAU2/S,kBAAoB,SAA2B9wS,EAAO+G,GACzD,IAAV/G,IAAgB3J,KAAK4vC,SAASh1C,QAAU+O,GAAS3J,KAAK4vC,SAASh1C,OACjEoF,KAAK8Q,IAAIJ,IAET6jS,GAAUprO,eAAez4D,EAAM1Q,KAAKu6S,eAAgBv6S,KAAM2J,GAE1D3J,KAAK4vC,SAASz4B,OAAOxN,EAAO,EAAG+G,GAE3B1Q,KAAKw5S,YACP9oS,EAAK44C,aAKXk8L,EAAS1qP,UAAU4/S,gBAAkB,SAAyB9jM,EAAasxI,GACzE,GAAItxI,IAAgBsxI,EAApB,CAIA,IAAIt4M,EAAW5vC,KAAK4vC,SAChBl/B,EAAOk/B,EAASgnE,GAEpB29L,GAAUgB,iBAAiB7kS,EAAM1Q,KAAKu6S,eAAgBv6S,MACtDu0S,GAAUprO,eAAez4D,EAAM1Q,KAAKu6S,eAAgBv6S,KAAMkoP,GAE1Dt4M,EAASz4B,OAAOy/F,EAAa,GAC7BhnE,EAASz4B,OAAO+wO,EAAa,EAAGx3O,KAGlC80O,EAAS1qP,UAAU6/S,kBAAoB,SAA2BjqS,EAAMmmE,GACtE09N,GAAUgB,iBAAiB7kS,EAAM1Q,KAAKu6S,eAAgBv6S,MACtDA,KAAK4vC,SAASz4B,OAAOnX,KAAK4vC,SAASv+B,QAAQX,GAAO,GAE9C1Q,KAAKw5S,YACP9oS,EAAKy4I,WAEHtyE,GACFnmE,EAAKmmE,iBAIT2uK,EAAS1qP,UAAU8/S,oBAAsB,SAA6BjxS,EAAOktE,GAC3E,IAAInmE,EAAO1Q,KAAK4vC,SAASjmC,GAEzB4qS,GAAUgB,iBAAiB7kS,EAAM1Q,KAAKu6S,eAAgBv6S,MACtDA,KAAK4vC,SAASz4B,OAAOxN,EAAO,GAExB3J,KAAKw5S,YACP9oS,EAAKy4I,WAEHtyE,GACFnmE,EAAKmmE,iBAIT2uK,EAAS1qP,UAAU+/S,sBAAwB,SAA+BjtO,EAAeiJ,GACvF,IAAI7jE,EAAShT,KAEb4tE,EAAczmE,SAAQ,SAAUuJ,GAC9B,OAAOsC,EAAO88B,OAAOp/B,EAAMmmE,OAI/B2uK,EAAS1qP,UAAUggT,qBAAuB,SAA8BjkO,GACtE09N,GAAUsB,gBAAgB71S,KAAKu6S,eAAgBv6S,MAK/C,IAHA,IAAI4vC,EAAW5vC,KAAK4vC,SAChBjtC,EAAKitC,EAASh1C,OAETF,EAAI,EAAGA,EAAIiI,IAAMjI,EACpBm8E,EACFjnC,EAASl1C,GAAGm8E,gBACH72E,KAAKw5S,YACd5pQ,EAASl1C,GAAGyuJ,WAIhBnpJ,KAAK4vC,SAAW,IAGX41M,EA5aa,GA4blBu1D,GAA2B,IAbR,mBAAS5Y,EAAW,WACzC,SAAS6Y,KAST,OALAA,EAAiBlgT,UAAU0D,IAAM,SAAa6P,EAAWnP,GACvD,IAAIqd,EAAKrd,EAAI+7S,eACb,OAAO1+R,KAAMlO,EAAYA,EAAUkO,GAAMlO,EAAUkO,GAAMlO,EAAU65E,OAAOhpF,IAGrE87S,EAVkC,KAWnC7Y,GAIR,SAAS+Y,GAAoBh8S,GAC3B,GAAIA,IAAQ,MAAIsoE,QACd,OAAOxnE,KAAK+mE,QAGd,GAAI7nE,IAAQomP,GAAkB,CAC5B,GAAItlP,KAAKm7S,iBACP,OAAOn7S,KAAKm7S,iBAGd,IAAI5yQ,EAAUvoC,KAAKqH,YAAYkhE,YAC3B6yO,EAAoBp7S,KAAK0wS,iBAO7B,OALI0K,IACF7yQ,EAAU6yQ,EAAkB7yQ,EAAQgtB,OAAShtB,GAG/CvoC,KAAKm7S,iBAAmB,IAAI71D,GAAiBtlP,KAAMuoC,EAAS6yQ,GACrDp7S,KAAKm7S,iBAGd,OAAIj8S,IAAQsmP,SACY5nP,IAAlBoC,KAAKgnE,WACPhnE,KAAKgnE,SAAW,IAAIw+K,GAASxlP,KAAK+mE,QAAS/mE,KAAKqH,YAAYgpS,mBAC5DrwS,KAAK+mE,QAAQ+tO,0BAA4B90S,KAAKqH,YAAY4pS,QAC1DjxS,KAAK4vC,SAAS10C,KAAK8E,KAAKgnE,WAGnBhnE,KAAKgnE,UAGV9nE,IAAQ+vS,EACHjvS,KAAKq7S,gBAAkBr7S,KAAKq7S,cAAgB,IAAIpM,EAAcjvS,KAAK+mE,UAGxE7nE,IAAQsvS,EACHxuS,KAAKknE,yBAA2BlnE,KAAKknE,uBAAyBlnE,KAAKuO,OAAO/P,IAAIU,IAGnFA,IAAQumP,GACHzlP,KAAKqoI,cAGVnpI,IAAQqmP,EACHvlP,KAAKqH,YAGPrH,KAAKs7S,SAASp8S,GA2BvB,SAAS6qO,GAAarsO,GACpB,OAAOsC,KAAK29J,SAASosE,aAAarsO,GAGpC,SAAS0pE,GAAa1pE,GACpB,OAAOsC,KAAK29J,SAASv2F,aAAa1pE,GAGpC,SAAShB,GAAagB,EAAMkB,GAC1BoB,KAAK29J,SAASjhK,aAAagB,EAAMkB,GAyBnC,SAAS28S,GAAkBC,EAAYz0O,EAAS1/D,EAAa2xJ,EAAa6rE,EAAUj1L,EAAU6rQ,EAAa/K,EAAkBxgP,GAC3H,IAAI2gG,EAAuBxpJ,EAAYwpJ,qBACnCi3F,EAAczgP,EAAYygP,YAC1B4zD,OAAmB,EACnBhhT,OAAI,EACJiI,OAAK,EACLC,OAAU,EACVilD,OAAW,EAEf,GAAIxgD,EAAY0pS,kBAId,OAHAlsE,EAAS3pO,KAAKmM,EAAY0pS,kBAAkB1N,cAAct8N,EAAQ7F,cAClE6F,EAAQ7F,YAAY2tO,uBAAwB,OAC5C9nO,EAAQzF,WAAWC,YAAYwF,GAIjC,GAAI1/D,EAAYwpS,WAAY,CAC1B,IAAI8K,EAAgB,MAAInkM,cAAc,QAClCtgG,OAAO,EAWX,OAREA,EADE7P,EAAYu0S,gBACP,IAAI9H,GAAgB6H,EAAet0S,EAAYgP,SAAUhP,EAAYu0S,gBAAiBv0S,EAAYoqS,qBAElG,IAAIoD,GAAW8G,EAAet0S,EAAYgP,SAAUhP,EAAYoqS,qBAGzE,MAAIoK,YAAYF,EAAe50O,GAC/B00O,EAAYp0S,EAAYgP,UAAYa,OACpC8hJ,EAAY99J,KAAKgc,GAInB,GAAI7P,EAAY2pS,WAAhB,CACE,IAAKt2S,EAAI,EAAGiI,EAAKmlP,EAAYltP,OAAQF,EAAIiI,IAAMjI,EAC7CmqO,EAAS3pO,KAAK4sP,EAAYptP,GAAG2oS,iBAE/Bt8N,EAAQzF,WAAWC,YAAYwF,OAJjC,CAQA,GAAI8pF,EAAqBj2J,OAOvB,IANKyM,EAAYgpS,oBACftpO,EAhEN,SAA+BA,EAASuqO,GACtC,IAAIpzQ,EAAS,MAAIs5E,cAAc,UAE/B,GAAI85L,EAAoB,CACtB,IAAIlwO,EAAa2F,EAAQ3F,WAErBA,GAAqC,eAAvBA,EAAWm5F,UAC3Br8H,EAAO49Q,eAAiB16O,GAG1BljC,EAAOy/H,SAAW52F,EAElB7oC,EAAO6rM,aAAeA,GACtB7rM,EAAOkpC,aAAeA,GACtBlpC,EAAOxhC,aAAeA,GAKxB,OAFA,MAAIm/S,YAAY39Q,EAAQ6oC,GAEjB7oC,EA6CO69Q,CAAsBh1O,EAAS1/D,EAAYiqS,qBAGvDkK,EAAWn0S,EAAYgqS,YAAcqK,EAvGzC,SAAgCntS,EAAQw4D,EAAS1/D,EAAauoC,EAAU8gQ,EAAkBxgP,GACxF,IACIkhP,EADA/iS,EAAYE,EAAO2B,cAEnBxV,OAAI,EAWR,IATA2T,EAAU04D,QAAUA,EACpB14D,EAAUhH,YAAcA,EACxBgH,EAAUuhC,SAAWA,EACrBvhC,EAAUg6H,cAAgBn4E,EAC1B7hD,EAAUqiS,iBAAmBA,EAG7Bh2S,GADA02S,EAAY/pS,EAAY+pS,WACVx2S,OAEPF,KACL2T,EAAU+3H,WAAWjhH,IAAIisR,EAAU12S,GAAIqgT,IAMzC,OAHA1sS,EAAUitS,SAAWjtS,EAAU7P,IAC/B6P,EAAU7P,IAAM08S,GAET7sS,EAkFmD2tS,CAAuBR,EAAWn0S,EAAYypS,kBAAmB/pO,EAAS1/D,EAAauoC,EAAU8gQ,EAAkBxgP,GAEtKx1D,EAAI,EAAGiI,EAAKkuJ,EAAqBj2J,OAAQF,EAAIiI,IAAMjI,EAEtDmtD,GADAjlD,EAAUiuJ,EAAqBn2J,IACZ4C,KAAK2B,OAAOy8S,EAAkB94S,EAASmkE,EAAS89J,GACnE7rE,EAAY99J,KAAK2sD,GAIrB,IAAKntD,EAAI,EAAGiI,EAAKmlP,EAAYltP,OAAQF,EAAIiI,IAAMjI,EAC7CmqO,EAAS3pO,KAAK4sP,EAAYptP,GAAG2oS,cAAct8N,KAI/C,SAASk1O,GAAoBn7O,EAAOtjE,GAClC,IAAIyrG,EAAanoC,EAAMx1C,MAAM,KACzB4wR,OAAoB,EACpBxhT,OAAI,EACJkI,OAAU,EACV1D,OAAM,EACNN,OAAQ,EAIZ,IAFApB,EAASA,GAAU,GAEd9C,EAAI,EAAGA,EAAIuuG,EAAWruG,OAAQF,IAEjCwhT,GADAt5S,EAAUqmG,EAAWvuG,IACO2W,QAAQ,KACpCnS,EAAM0D,EAAQb,UAAU,EAAGm6S,GAAmBv1P,OAC9C/nD,EAAQgE,EAAQb,UAAUm6S,EAAoB,GAAGv1P,OACjDnpD,EAAO0B,GAAON,EAGhB,OAAOpB,EAGT,SAAS2+S,GAAoBp7S,GAC3B,IAAIgP,EAAS,GAEb,IAAK,IAAI9C,KAASlM,EAChBgP,GAAU9C,EAAQ,IAAMlM,EAAIkM,GAAS,IAGvC,OAAO8C,EAqDF,IAAIu1O,GAAmB,WAC5B,SAASA,EAAiB82D,EAAiB7zO,EAAamoO,GAGtD1wS,KAAKo8S,gBAAkBA,EACvBp8S,KAAKuoE,YAAcA,EACnBvoE,KAAKq8S,yBAA2B,CAAE3L,iBAAkBA,GA4BtD,OAzBAprD,EAAiBxqP,UAAUmE,OAAS,WAClC,IAAIyR,EAAO1Q,KAAKuoE,YAAYtpE,OAAOe,KAAKo8S,gBAAgBlsS,cAAelQ,KAAKq8S,0BAE5E,OADA3rS,EAAKipS,mBAAoB,EAClBjpS,GAGT40O,EAAiBxqP,UAAUwhT,aAAe,SAAsB5rO,EAAM6rO,GACpEv8S,KAAKuoE,YAAY+zO,aAAa5rO,EAAM6rO,IAGtCj3D,EAAiBxqP,UAAU0hT,cAAgB,WACzC,OAAOx8S,KAAKuoE,YAAYi0O,iBAG1Bl3D,EAAiBxqP,UAAU8+S,kBAAoB,SAA2BlpS,GACxE1Q,KAAKuoE,YAAYqxO,kBAAkBlpS,IAGrCzP,EAAaqkP,EAAkB,CAAC,CAC9BpmP,IAAK,YACLV,IAAK,WACH,OAAOwB,KAAKuoE,YAAYqO,cAIrB0uK,EAlCqB,GAqCnBm3D,GAAc,WACvB,SAASA,EAAYz5N,EAAU1+E,EAAc4rD,GAG3ClwD,KAAK42E,WAAY,EAEjB52E,KAAKgjF,SAAWA,EAChBhjF,KAAKsE,aAAeA,EACpBtE,KAAKkwD,UAAYA,EACjBlwD,KAAK08S,WAAa,EAClB18S,KAAKu8D,MAAQ,KAiGf,OA9FAkgP,EAAY3hT,UAAUwhT,aAAe,SAAsB5rO,EAAM6rO,GAC3D7rO,IACW,MAATA,EACFA,EAAO3sB,OAAOsyK,UACW,iBAAT3lJ,IAChBA,EAAOpmD,SAASomD,EAAM,OAIF,IAApB1wE,KAAK08S,WAAqBH,IAC5Bv8S,KAAK08S,UAAYhsO,GAGf1wE,KAAK08S,UAAY,EACnB18S,KAAKu8D,MAAQ,GAEbv8D,KAAKu8D,MAAQ,KAGfv8D,KAAK42E,UAAY52E,KAAK08S,UAAY,GAGpCD,EAAY3hT,UAAU0hT,cAAgB,WACpC,OAAsB,OAAfx8S,KAAKu8D,OAAiBv8D,KAAKu8D,MAAM5H,OAAgB,MAG1D8nP,EAAY3hT,UAAU8+S,kBAAoB,SAA2BlpS,GAC/DA,EAAK8oS,YACP9oS,EAAKy4I,WAGHz4I,EAAKqmE,SACPrmE,EAAKg1D,SAGY,OAAf1lE,KAAKu8D,OAAkBv8D,KAAKu8D,MAAM3hE,OAASoF,KAAK08S,YAClDhsS,EAAKqvE,WAAY,EACjB//E,KAAKu8D,MAAMrhE,KAAKwV,KAIpB+rS,EAAY3hT,UAAUmE,OAAS,SAAgBoP,EAAW66H,EAAmBniE,GAC3EmiE,EAAoBA,GAAqBgnK,EAAoBD,OAE7D,IAAI0M,EAAa38S,KAAKw8S,gBACtB,GAAmB,OAAfG,EACF,OAAOA,EAGT,IAWIh6S,EAXAV,EAAWinI,EAAkBinK,QAAUnwS,KAAKgjF,SAAWhjF,KAAKgjF,SAASkkC,WAAU,GAC/E01L,EAAgB36S,EAASk0G,iBAAiB,cAC1C7xG,EAAetE,KAAKsE,aACpB4rD,EAAYlwD,KAAKkwD,UACjB8oG,EAAc,GACd6rE,EAAW,GACXj1L,EAAW,GACX6rQ,EAAc5gT,OAAOoE,OAAO,MAC5Bu8S,EAAa,CAAEljO,KAAMjqE,GACrBqiS,EAAmBxnK,EAAkBwnK,iBACrCh2S,OAAI,EAEJgW,OAAO,EACPmsS,OAAe,EACfx1S,OAAc,EAclB,IAZArH,KAAKkwD,UAAUooP,YAAY,eAAgBt4S,KAAMqO,EAAWpM,EAAUinI,GAElEniE,GAAyC,OAA9B/mE,KAAK88S,sBAvKxB,SAAmCzuS,EAAW04D,EAAS1/D,EAAa2xJ,EAAa6rE,EAAUj1L,GACzF,IAAIihH,EAAuBxpJ,EAAYwpJ,qBACnCi3F,EAAczgP,EAAYygP,YAC1BspD,EAAY/pS,EAAY+pS,UACxB/9Q,EAAShsB,EAAYgsB,OACrB34B,OAAI,EACJiI,OAAK,EACLC,OAAU,EACVilD,OAAW,EACXk1P,OAAwB,EAG5B,IADAriT,EAAI02S,EAAUx2S,OACPF,KACL2T,EAAU+3H,WAAWjhH,IAAIisR,EAAU12S,GAAIqgT,IAGzC,IAAK,IAAI1tS,KAASgmB,EAGhB,GAFA0pR,EAAwBh2O,EAAQK,aAAa/5D,IAG3C,GAAc,UAAVA,EACF05D,EAAQrqE,aAAa,QAASqgT,EAAwB,IAAM1pR,EAAOhmB,SAC9D,GAAc,UAAVA,EAAmB,CAC5B,IAAI2vS,EAAcf,GAAoB5oR,EAAOhmB,IAC7C4uS,GAAoBc,EAAuBC,GAC3Cj2O,EAAQrqE,aAAa,QAASy/S,GAAoBa,UAGpDj2O,EAAQrqE,aAAa2Q,EAAOgmB,EAAOhmB,IAIvC,GAAIwjJ,EAAqBj2J,OACvB,IAAKF,EAAI,EAAGiI,EAAKkuJ,EAAqBj2J,OAAQF,EAAIiI,IAAMjI,GAEtDmtD,GADAjlD,EAAUiuJ,EAAqBn2J,IACZ4C,KAAK2B,OAAOoP,EAAWzL,EAASmkE,EAAS89J,IAE/CsvE,aACXvkQ,EAAS10C,KAAK2sD,EAASssP,aAGzBn7I,EAAY99J,KAAK2sD,GAIrB,IAAKntD,EAAI,EAAGiI,EAAKmlP,EAAYltP,OAAQF,EAAIiI,IAAMjI,EAC7CmqO,EAAS3pO,KAAK4sP,EAAYptP,GAAG2oS,cAAct8N,IA0HzCk2O,CAA0B5uS,EAAW04D,EAAS/mE,KAAK88S,qBAAsB9jJ,EAAa6rE,EAAUj1L,GAG9Fs5F,EAAkBinK,SAAWluS,EAAS8nO,aAAa,kBAErD1iO,EAAc/C,GADdu4S,EAAe56S,GACyBmlE,aAAa,iBACrDm0O,GAAkBC,EAAYqB,EAAcx1S,EAAa2xJ,EAAa6rE,EAAUj1L,EAAU6rQ,EAAa/K,EAAkBxgP,IAGtHx1D,EAAI,EAAGiI,EAAKi6S,EAAchiT,OAAQF,EAAIiI,IAAMjI,EAE/C2M,EAAc/C,GADdu4S,EAAeD,EAAcliT,IACW0sE,aAAa,iBACrDm0O,GAAkBC,EAAYqB,EAAcx1S,EAAa2xJ,EAAa6rE,EAAUj1L,EAAU6rQ,EAAa/K,EAAkBxgP,GAW3H,OARAx/C,EAAO,IAAI6oS,GAAKlrS,EAAWrO,KAAMiC,EAAU+2J,EAAa6rE,EAAUj1L,EAAU6rQ,GAEvEvyK,EAAkBqnK,qBACrB7/R,EAAK+2D,UAGPznE,KAAKkwD,UAAUooP,YAAY,cAAe5nS,GAEnCA,GAGF+rS,EA3GgB,GA8GrBS,GAAiB,EAKrB,IAAIC,GAAiB,EAKrB,SAASC,GAA0Br2O,GACjC,IAAInoE,EAAQmoE,EAAQK,aAAa,SAC7Bi2O,KALMF,IAAgBn+R,WAU1B,OAHA+nD,EAAQrqE,aAAa,QAASkC,EAAQA,EAAQ,aAAe,aAC7DmoE,EAAQrqE,aAAa,eAAgB2gT,GAE9BA,EA6BT,IAAIC,GAAoBnK,GAAgBr4S,UAAU04S,qBAEvC+J,GAAwB,iBAAOpK,GAAiB1tD,GAAgBliH,CAAMi/I,EAAW,WAC1F,SAAS+6B,EAAa1G,EAAiB3mP,GAGrClwD,KAAK62S,gBAAkBA,EACvB72S,KAAKkwD,UAAYA,EA2ZnB,OAxZAqtP,EAAaziT,UAAU43G,QAAU,SAAiBruE,EAAQ6rB,EAAW4hP,GACnE5hP,EAAYA,GAAalwD,KAAKkwD,UAC9B4hP,EAAqBA,GAAsBjC,EAAuBI,OAGlE,IAAI3zP,OAAU,EACViZ,OAAO,EACPmnP,OAAY,GAJhBr4Q,EAA2B,iBAAXA,EAAsB,MAAIi5N,yBAAyBj5N,GAAUA,GAMlEiY,SACTiZ,EAAOlxB,EAAO+iC,aAAa,QAC3Bs1O,EAAYr4Q,EAAO+iC,aAAa,cAChC9qB,EAAU,MAAIkhQ,UAAUn5Q,EAAOiY,UAE/BA,EAAUjY,EAGZytQ,EAAmBhC,gBAAkBgC,EAAmBhC,iBAAmB,UAAQ2N,UACnFvtP,EAAUooP,YAAY,gBAAiBh8P,EAAS4T,EAAW4hP,GAE3D,IAAIxtS,EAAe,GACnBtE,KAAK09S,aAAaphQ,EAAS4T,EAAW5rD,EAAc+/B,EAAQ,QAASytQ,EAAmBhC,iBAExF,IAAI1uO,EAAa9kB,EAAQ8kB,WACzB,GAAIA,GAAsC,IAAxBA,EAAW0X,SAAgB,CAC3C,IAAI6kO,EAAWv8O,EAAWgG,aAAa,gBACvC,GAAIu2O,EAAU,CACZ,IAAIC,EAAMt5S,EAAaq5S,IAEnBC,EAAI/M,YAAc+M,EAAI3M,SAAW2M,EAAItM,qBAAuBsM,EAAItM,mBAAmBjB,oBACrF/zP,EAAQ6kB,aAAa,MAAIq2C,cAAc,QAASp2C,IAKtD,IAAI74B,EAAU,IAAIk0Q,GAAYngQ,EAASh4C,EAAc4rD,GAWrD,OATA3nB,EAAQu0Q,qBAAuBhL,EAAmB/B,iBAAmB/vS,KAAK69S,kBAAkBx5Q,EAAQ6rB,GAAa,KACjH3nB,EAAQgtB,KAAOA,EAEXmnP,GACFn0Q,EAAQ+zQ,aAAaI,GAGvBxsP,EAAUooP,YAAY,eAAgB/vQ,GAE/BA,GAGTg1Q,EAAaziT,UAAU4iT,aAAe,SAAsBxiQ,EAAMgV,EAAW5rD,EAAcg9D,EAAYwvO,EAAkBgN,GACvH,OAAQ5iQ,EAAK49B,UACX,KAAK,EACH,OAAO94E,KAAK+9S,gBAAgB7iQ,EAAMgV,EAAW5rD,EAAcg9D,EAAYwvO,EAAkBgN,GAC3F,KAAK,EACH,IAAI7sJ,EAAa/gG,EAAUwoP,mBAAmB14S,KAAK62S,iBAAiBpD,mBAAmBvjP,EAAWhV,EAAK8iQ,WACvG,GAAI/sJ,EAAY,CACd,IAAIh7G,EAAS,MAAI35C,cAAc,aAC3B+gT,EAAaD,GAA0BnnQ,GAK3C,KAJCiF,EAAKomB,YAAcA,GAAYH,aAAalrB,EAAQiF,GACrDA,EAAKi+D,YAAc,IACnB70G,EAAa+4S,GAAc93D,EAAkBwrD,kBAAkB9/I,GAExD/1G,EAAKgmB,aAA6C,IAA9BhmB,EAAKgmB,YAAY4X,WACzC59B,EAAKomB,YAAcA,GAAYC,YAAYrmB,EAAKgmB,kBAGnD,KAAOhmB,EAAKgmB,aAA6C,IAA9BhmB,EAAKgmB,YAAY4X,UAC1C59B,EAAOA,EAAKgmB,YAGhB,OAAOhmB,EAAKgmB,YACd,KAAK,GAEH,IADA,IAAI+8O,EAAe/iQ,EAAKkmB,WACjB68O,GACLA,EAAej+S,KAAK09S,aAAaO,EAAc/tP,EAAW5rD,EAAc42C,EAAM41P,EAAkBgN,GAOtG,OAAO5iQ,EAAKgmB,aAGdq8O,EAAaziT,UAAU+iT,kBAAoB,SAA2B3iQ,EAAMgV,GAC1E,IAAIqqG,EAAUr/G,EAAKq/G,QAAQh/I,cACvB0tF,EAAa/tD,EAAK+tD,WAClB4tM,EAAkB3mP,EAAUwoP,mBAAmB14S,KAAK62S,iBACpDsC,OAAiB,EACjB75S,OAAW,EACX+H,OAAc,EACd3M,OAAI,EACJiI,OAAK,EACL0tC,OAAO,EACPugH,OAAW,EACXyiJ,OAAY,EACZlzS,OAAO,EACP7C,OAAO,EACPwqP,EAAc,GACd72F,OAAa,EACbJ,EAAuB,GACvBx9H,EAAS,GACT6qR,GAAY,EACZ9M,EAAY,GAEhB,IAAK12S,EAAI,EAAGiI,EAAKsmG,EAAWruG,OAAQF,EAAIiI,IAAMjI,EAAG,CAQ/C,GANAk2J,GADAvgH,EAAO44D,EAAWvuG,IACFgD,KAChB21S,EAAYhjQ,EAAKzxC,MAEjBuB,EAAO02S,EAAgBzD,iBAAiBljP,EAAWqqG,EAAS3J,EAAUyiJ,IACtE/1S,EAAO4yD,EAAUkX,aAAajnE,EAAKywJ,aAGjCuoJ,EAAiBjpP,EAAU+oP,aAAa94S,EAAKywJ,aAE3CtxJ,EAAWhC,EAAK2rG,WAAWkwM,MAGzBh5S,EAAK03S,mBAAqBv4S,EAASu4S,mBAE9B13S,EAAKg+S,SAAYh+S,EAAK8wJ,aACzB9wJ,EAAKg+S,QAAU7+S,EAAS8+S,WAAa,UAAY,MAG/Cj+S,EAAKg+S,SAA4B,YAAjBh+S,EAAKg+S,SAAyB7gT,EAAKosI,iBAAiB,CACtE,IAAI20K,EAAmB/gT,EAAKosI,gBAC5BknB,EAAWzwJ,EAAKywJ,SAAWytJ,EAAiB/rF,UAE5CnyN,EAAK03S,mBAAqBwG,EAAiBxG,mBAQnD,GAFAxwS,EAAcwvS,EAAgBvD,2BAA2BpjP,EAAWhV,EAAM/6C,OAAMvC,EAAWN,GAOzF,GAJI+J,EAAYi3S,cACdhhT,EAAO4yD,EAAUkX,aAAa//D,EAAYupJ,WAGxCvpJ,EAAY+7R,SACdt7C,EAAY5sP,KAAKmM,QAEjB,GAAI/J,EAAM,CAIR,GAHA+J,EAAY/J,KAAOA,EACnB0C,KAAKu+S,qBAAqBl3S,EAAa6oD,GAEnC5yD,EAAKq6S,aACP,MAAM,IAAI56S,MAAM,kEAEhB8zJ,EAAqB31J,KAAKmM,QAG5BygP,EAAY5sP,KAAKmM,EAAY4hG,WAAW5hG,EAAYupJ,gBAIxD,GAAItzJ,EAAM,CAIR,IAHA+J,EAAc6oS,EAAoB59E,UAAU1hE,EAAUtzJ,IAC1C2rG,WAAW/4C,EAAU+oP,aAAaroJ,IAAayiJ,EAEvD/1S,EAAKq6S,aACP,MAAM,IAAI56S,MAAM,kEAEhB8zJ,EAAqB31J,KAAKmM,OAEN,OAAbupJ,GAAkC,SAAbA,GAAoC,iBAAbA,IACrDstJ,GAAY,EACZ7qR,EAAOu9H,GAAYyiJ,GAKzB,GAAIvrD,EAAYltP,QAAUi2J,EAAqBj2J,QAAUsjT,EAAW,CAClE,IAAKxjT,EAAI,EAAGiI,EAAKkuJ,EAAqBj2J,OAAQF,EAAIiI,IAAMjI,GACtD2M,EAAcwpJ,EAAqBn2J,IACvB4C,KAAKo1G,QAAQ1yG,KAAMkwD,EAAWhV,EAAM7zC,GAChD+pS,EAAUl2S,KAAKmM,EAAY/J,KAAKE,QAGlC,IAAK9C,EAAI,EAAGiI,EAAKmlP,EAAYltP,OAAQF,EAAIiI,IAAMjI,OAEbkD,KADhCqzJ,EAAa62F,EAAYptP,IACV8jT,cACbtjQ,EAAKm7D,gBAAgB46C,EAAWutJ,cAIpC,OAAOj5D,EAAkBgsD,UAAUH,EAAWvgJ,EAAsBi3F,EAAaz0N,GAGnF,OAAO,MAGTkqR,EAAaziT,UAAUijT,gBAAkB,SAAyB7iQ,EAAMgV,EAAW5rD,EAAcg9D,EAAYwvO,EAAkBgN,GAC7H,IAAIvjJ,EAAUr/G,EAAKq/G,QAAQh/I,cACvB0tF,EAAa/tD,EAAK+tD,WAClB6+I,EAAc,GACd72F,OAAa,EACbJ,EAAuB,GACvBugJ,EAAY,GACZyF,EAAkB3mP,EAAUwoP,mBAAmB14S,KAAK62S,iBACpD3F,OAAqB,EACrB3oO,OAAc,EACdjrE,OAAO,EACPg0S,OAAqB,EACrBmN,OAAkB,EAClB/jT,OAAI,EACJiI,OAAK,EACL0tC,OAAO,EACPugH,OAAW,EACXyiJ,OAAY,EACZviJ,OAAmB,EACnBzpJ,OAAc,EACdlH,OAAO,EACPb,OAAW,EACX65S,OAAiB,EAEjB9H,OAAa,EAEjB,GAAgB,SAAZ92I,EAIF,OAHIujJ,IACF5iQ,EAnQR,SAAwBwjQ,EAAUxuP,EAAWhV,EAAM52C,EAAcwsS,GAC/D,IAAI6N,EAAe,MAAIriT,cAAc,kBACrC,MAAIu/S,YAAY8C,EAAczjQ,GAE9B,IAAImiQ,EAAaD,GAA0BuB,GACvCt3S,EAAck+O,EAAkBsrD,WAAWC,GAK/C,GAHAzpS,EAAYgP,SAAW6kC,EAAKksB,aAAa,SAAWmtO,GAAUgC,eAC9DlvS,EAAYu0S,gBAAkB1gQ,EAAKksB,aAAa,QAE5ClsB,EAAK+O,UAAUtD,OAAQ,CAIzB,IAHA,IAAI1kD,EAAW,MAAI8kH,yBACf63L,OAAU,EAEPA,EAAU1jQ,EAAKkmB,YACpBn/D,EAASlE,YAAY6gT,GAGvBv3S,EAAYoqS,oBAAsBiN,EAAShsM,QAAQzwG,EAAUiuD,GAK/D,OAFA5rD,EAAa+4S,GAAch2S,EAEpBs3S,EA4OME,CAAe7+S,KAAMkwD,EAAWhV,EAAM52C,EAAcwsS,IAEtD51P,EAAKgmB,YACP,GAAgB,aAAZq5F,EAAwB,CACjC,KAAM,YAAar/G,GACjB,MAAM,IAAIn+C,MAAM,8CAAgDm+C,EAAK4jQ,aAAe,eAEtFv2O,EAAcvoE,KAAK0yG,QAAQx3D,EAAMgV,IACrBqF,KAAOra,EAAKksB,aAAa,YAChC,CAGL,GAFA9pE,EAAO4yD,EAAU0P,WAAW1kB,EAAKksB,aAAa,eAAiBmzF,GAE/C,QAAZA,IAAsBj9J,GAAQu5S,EAAgBrD,uBAAyB8J,GAIzE,OAHAx1D,EAAc+uD,EAAgBrD,qBAAqBtjP,EAAWhV,GAE9D52C,EADa84S,GAA0BliQ,IACZqqM,EAAkByrD,WAAWlpD,GACjD5sM,EAAKgmB,YAEV5jE,IACFg0S,EAAqBpB,EAAoBnpO,QAAQ7rB,EAAM59C,GACvDA,EAAKyhT,kBAAkB/+S,KAAMkwD,EAAWhV,EAAM+tD,EAAYqoM,GAC1DzgJ,EAAqB31J,KAAKo2S,IAI9B,IAAK52S,EAAI,EAAGiI,EAAKsmG,EAAWruG,OAAQF,EAAIiI,IAAMjI,EAAG,CAa/C,GAXAo2J,EAAmBF,GADnBvgH,EAAO44D,EAAWvuG,IACiBgD,KACnC21S,EAAYhjQ,EAAKzxC,MACjBuB,EAAO02S,EAAgBzD,iBAAiBljP,EAAWqqG,EAAS3J,EAAUyiJ,GAElEyK,GAAoC,SAAlB39S,EAAKywJ,WACzBzwJ,EAAKywJ,SAAWA,EAAW,WAI7B6tJ,EAAkB,KADlBnhT,EAAO4yD,EAAUkX,aAAajnE,EAAKywJ,WAKjC,IADAuoJ,EAAiBjpP,EAAU+oP,aAAa94S,EAAKywJ,aAE3CtxJ,EAAWhC,EAAK2rG,WAAWkwM,MAGzBh5S,EAAK03S,mBAAqBv4S,EAASu4S,mBAE9B13S,EAAKg+S,SAAYh+S,EAAK8wJ,aACzB9wJ,EAAKg+S,QAAU7+S,EAAS8+S,WAAa,UAAY,MAG/Cj+S,EAAKg+S,SAA4B,YAAjBh+S,EAAKg+S,SAAyB7gT,EAAKosI,iBAAiB,CACtE,IAAIs1K,EAAoB1hT,EAAKosI,gBAC7BknB,EAAWzwJ,EAAKywJ,SAAWouJ,EAAkB1sF,UAE7CnyN,EAAK03S,mBAAqBmH,EAAkBnH,yBAIzCvG,IACTmN,EAAkBnN,EAAmBh0S,KAAK2rG,WAAW9oG,EAAKywJ,aAExDzwJ,EAAK03S,mBAAqB4G,EAAgB5G,oBAU9C,GALExwS,EADEo3S,EACY5H,EAAgBvD,2BAA2BpjP,EAAWhV,EAAM/6C,EAAMmxS,GAElEuF,EAAgBvD,2BAA2BpjP,EAAWhV,EAAM/6C,OAAMvC,EAAWN,GAQ3F,GAJI+J,EAAYi3S,cACdhhT,EAAO4yD,EAAUkX,aAAa//D,EAAYupJ,WAGxCvpJ,EAAY+7R,SACdt7C,EAAY5sP,KAAKmM,QAEjB,GAAI/J,EAAM,CAIR,GAHA+J,EAAY/J,KAAOA,EACnB0C,KAAKu+S,qBAAqBl3S,EAAa6oD,GAEnC5yD,EAAKq6S,aAAc,CACrBtwS,EAAYypJ,iBAAmBA,EAC/BogJ,EAAqB7pS,EACrB,MAEAwpJ,EAAqB31J,KAAKmM,QAEnBo3S,EACTnN,EAAmBroM,WAAW9oG,EAAKywJ,UAAUm3F,eAAiB02D,EAAgB/gT,KAE9EoqP,EAAY5sP,KAAKmM,EAAY4hG,WAAW5hG,EAAYupJ,gBAIxD,GAAItzJ,EAAM,CAIR,IAHA+J,EAAc6oS,EAAoB59E,UAAU1hE,EAAUtzJ,IAC1C2rG,WAAW/4C,EAAU+oP,aAAaroJ,IAAayiJ,EAEvD/1S,EAAKq6S,aAAc,CACrBtwS,EAAYypJ,iBAAmBA,EAC/BogJ,EAAqB7pS,EACrB,MAEAwpJ,EAAqB31J,KAAKmM,QAEnBo3S,IACTnN,EAAmBroM,WAAW2nD,GAAYyiJ,GAKhD,GAAInC,EACFA,EAAmB3oO,YAAcA,EAGjCjkE,EADa84S,GADbliQ,EAAOg2P,EAAmB5zS,KAAKo1G,QAAQ1yG,KAAMkwD,EAAWhV,EAAMg2P,EAAoB5vO,KAEvDikL,EAAkB0rD,QAAQH,EAAkBI,OAClE,CACL,IAAIP,GAAwB,EAE5B,GAAI7oD,EAAYltP,QAAUi2J,EAAqBj2J,OAAQ,CAGrD,IAFAy2S,IAAaxgJ,EAAqBj2J,UAhZ/BsiT,GAkZExiT,EAAI,EAAGiI,EAAKkuJ,EAAqBj2J,OAAQF,EAAIiI,IAAMjI,GACtD2M,EAAcwpJ,EAAqBn2J,IACvB4C,KAAKo1G,QAAQ1yG,KAAMkwD,EAAWhV,EAAM7zC,EAAai6D,GAC7D8vO,EAAUl2S,KAAKmM,EAAY/J,KAAKE,QAChCmzS,EAAwBA,GAAyBtpS,EAAYspS,sBAG/D,IAAKj2S,EAAI,EAAGiI,EAAKmlP,EAAYltP,OAAQF,EAAIiI,IAAMjI,OAEbkD,KADhCqzJ,EAAa62F,EAAYptP,IACV8jT,cACbtjQ,EAAKm7D,gBAAgB46C,EAAWutJ,cAKpCl6S,EADa84S,GAA0BliQ,IACZqqM,EAAkB0qD,OAAOoB,EAAYP,EAAkBM,EAAWvgJ,EAAsBi3F,EAAawpD,GAGlI,GAAIX,EACF,OAAOz1P,EAAKgmB,YAId,IADA,IAAI+8O,EAAe/iQ,EAAKkmB,WACjB68O,GACLA,EAAej+S,KAAK09S,aAAaO,EAAc/tP,EAAW5rD,EAAc42C,EAAMm2P,GAAcP,EAAkBgN,GAIlH,OAAO5iQ,EAAKgmB,aAGdq8O,EAAaziT,UAAUyjT,qBAAuB,SAA8Bl3S,EAAa6oD,GACvF,IAAI5yD,EAAO+J,EAAY/J,KACnBszJ,EAAWvpJ,EAAYupJ,SACvB3nD,EAAa5hG,EAAY4hG,WACzB3pG,OAAW,EACXJ,OAAM,EACNN,OAAQ,EAERu6S,EAAiBjpP,EAAU+oP,aAAaroJ,GAM5C,IAAK1xJ,KALDi6S,GAAkBvoJ,KAAY3nD,GAAckwM,IAAmBvoJ,IACjE3nD,EAAWkwM,GAAkBlwM,EAAW2nD,UACjC3nD,EAAW2nD,IAGR3nD,EAGI,QAFdrqG,EAAQqqG,EAAW/pG,KAEqE,iBAAhD,IAAVN,EAAwB,YAAciC,EAAQjC,MAC1EU,EAAWhC,EAAK2rG,WAAW/pG,GAGzBN,EAAMmpP,oBADSnqP,IAAb0B,EACqBA,EAAS5B,KAETwB,IAMxBq+S,EAhamF,KAiapF/6B,EAEGy8B,GAAiB,WAC1B,SAASA,EAAe3kT,GAGtB0F,KAAKuc,GAAKjiB,EACV0F,KAAKk/S,eAAiB,KACtBl/S,KAAKm/S,aAAe,KACpBn/S,KAAKkwD,UAAY,KACjBlwD,KAAKooE,aAAe,KACpBpoE,KAAK88D,eAAgB,EACrB98D,KAAKo/S,SAAW,KAChBp/S,KAAK+xS,YAAc,KAoErB,OAjEAkN,EAAenkT,UAAUylF,WAAa,SAAoBlyE,GACxD,IAAIzL,EAAU5C,KAAKm/S,aACfjvP,EAAYlwD,KAAKkwD,UACjBmvP,EAAKr/S,KAAKooE,aAEd,IAAIpoE,KAAK88D,cAAT,CAIA98D,KAAK88D,eAAgB,OAELl/D,IAAZgF,IACFA,EAAQ8oC,SAAS08B,aAAei3O,EAChCz8S,EAAQ29E,WAAWlyE,IAGrB,IAAK,IAAI3T,EAAI,EAAGiI,EAAKutD,EAAUt1D,OAAQF,EAAIiI,IAAMjI,GAC/CkI,EAAUstD,EAAUx1D,IACZgxC,SAAS08B,aAAei3O,EAChCz8S,EAAQ29E,WAAWlyE,KAIvB4wS,EAAenkT,UAAUqrD,SAAW,SAAkBg4M,EAAUzgQ,GAC9D,IAAI4hT,EAAOt/S,KAAKm/S,aACZjvP,EAAYlwD,KAAKkwD,eAERtyD,IAAT0hT,IACFA,EAAKn5P,SAASg4M,EAAUzgQ,GACxBA,EAAO,MAGT,IAAK,IAAIhD,EAAI,EAAGiI,EAAKutD,EAAUt1D,OAAQF,EAAIiI,IAAMjI,EAC/Cw1D,EAAUx1D,GAAGyrD,SAASg4M,EAAUzgQ,GAChCA,EAAO,MAIXuhT,EAAenkT,UAAU46D,KAAO,SAAcrnD,EAAW0jS,GACvD,GAAsB,OAAlB/xS,KAAKo/S,SACP,OAAOp/S,KAAK+xS,cAAgBA,EAAc/1S,EAAQC,UAAY+D,KAAKo/S,SAGrE,IAAIE,EAAOt/S,KAAKm/S,aACZjvP,EAAYlwD,KAAKkwD,UACjB1pD,OAAQ,EAEZ,QAAa5I,IAAT0hT,EAAoB,EACtB94S,EAAQ,IAAI9F,MAAMwvD,EAAUt1D,OAAS,IAC/B,GAAK0kT,EAAK5pP,KAAKrnD,EAAW0jS,GAChC,IAAK,IAAIr3S,EAAI,EAAGiI,EAAKutD,EAAUt1D,OAAQF,EAAIiI,IAAMjI,EAC/C8L,EAAM9L,EAAI,GAAKw1D,EAAUx1D,GAAGg7D,KAAKrnD,EAAW0jS,OAEzC,CACLvrS,EAAQ,IAAI9F,MAAMwvD,EAAUt1D,QAC5B,IAAK,IAAI67I,EAAM,EAAGhrI,EAAMykD,EAAUt1D,OAAQ67I,EAAMhrI,IAAOgrI,EACrDjwI,EAAMiwI,GAAOvmF,EAAUumF,GAAK/gF,KAAKrnD,EAAW0jS,GAMhD,OAFA/xS,KAAK+xS,YAAcA,EACnB/xS,KAAKo/S,SAAWpjT,EAAQgC,IAAIwI,GACrBxG,KAAKo/S,UAGPH,EA/EmB,GAkFjBM,GAAsB,WAC/B,SAASA,EAAoBrgT,EAAKu+P,EAAe67C,GAG1CA,IACHA,EAAmB,IAAS96S,IAAI,IAASsd,SAAU2hP,OAGjD67C,EAAmB,IAAI7B,IACN5E,YAAclE,EAAWzvS,GAC1C,IAASktC,OAAO,IAAStwB,SAAUw9R,EAAkB77C,IAIrD67C,aAA4B7B,QACO75S,IAAjC07S,EAAiBzG,YACnByG,EAAiBzG,YAAclE,EAAWzvS,QACEtB,IAAnC07S,EAAiBvd,cAC1Bud,EAAiBvd,cAAgB4S,EAAWzvS,GACA,OAAnCo6S,EAAiBvd,eAA2D,OAAjCud,EAAiBzG,aACrE4E,GAAqBxT,WAAW/kS,EAAKo6S,GAE7BA,EAAiB57S,OAC3B47S,EAAiB57S,KAAOixS,EAAWzvS,IAGrCc,KAAK0rC,SAAW4tQ,EAChBt5S,KAAKpB,MAAQ6+P,EAef,OAZA8hD,EAAoBzkT,UAAUylF,WAAa,SAAoBlyE,GAC7DrO,KAAK0rC,SAAS60C,WAAWlyE,EAAWrO,KAAKpB,QAG3C2gT,EAAoBzkT,UAAUqrD,SAAW,SAAkBg4M,EAAUzgQ,GACnEsC,KAAK0rC,SAASya,SAASg4M,EAAUzgQ,IAGnC6hT,EAAoBzkT,UAAU46D,KAAO,SAAcrnD,EAAW0jS,GAC5D,OAAO/xS,KAAK0rC,SAASgqB,KAAKrnD,EAAWrO,KAAKpB,MAAOmzS,IAG5CwN,EA1CwB,GA6CtBC,GAAiB,WAC1B,SAASA,IAGPx/S,KAAKu8D,MAAQ1hE,OAAOoE,OAAO,MAwG7B,OArGAugT,EAAe1kT,UAAU2kT,YAAc,SAAqBnlT,GAC1D,OAAO0F,KAAKu8D,MAAMjiE,IAGpBklT,EAAe1kT,UAAU4kT,QAAU,SAAiBplT,EAAU4kT,EAAgBS,GAC5E,IAAIR,OAAe,EACf7iP,OAAgB,EAChBsjP,OAAc,EACdtG,OAAmB,EACnBp6S,OAAM,EACNu+P,OAAgB,EAChBvtM,EAAY,GACZ2vP,OAAe,EACfR,OAAK,EACLS,OAAiB,EAGrB,GADAA,EAAiB9/S,KAAKu8D,MAAMjiE,GAE1B,OAAOwlT,EAcT,IAAK5gT,KAXL4gT,EAAiB,IAAIb,GAAe3kT,GACpC0F,KAAKu8D,MAAMjiE,GAAYwlT,EAEO,mBAAnBZ,IACTA,EAAiB,CAAE,QAAWA,IAG5BS,IACFR,EAAe,IAAII,GAAoBI,EAAiBT,EAAeS,KAG7DT,EACVzhD,EAAgByhD,EAAehgT,GAE3BA,IAAQygT,GAA4C,mBAAlBliD,KAItC67C,EAAmB,IAAS96S,IAAI,IAASsd,SAAU2hP,KAG7C67C,aAA4B7B,KAC9BhyD,GAAcw+C,WAAWxmC,EAAe67C,GAED,OAAnCA,EAAiBvd,eAA2D,OAAjCud,EAAiBzG,aAC9D4E,GAAqBxT,WAAW/kS,EAAKo6S,GAGA,OAAnCA,EAAiBvd,eAA2D,OAAjCud,EAAiBzG,cAC9DyG,EAAiBzG,YAAclE,EAAWzvS,MAIzCigT,GAAgB7F,aAA4B7B,IAAyD,OAAjC6B,EAAiBzG,YACxFsM,EAAe,IAAII,GAAoBrgT,EAAKu+P,EAAe67C,GAE3DppP,EAAUh1D,KAAK,IAAIqkT,GAAoBrgT,EAAKu+P,EAAe67C,KAEpDlxO,EAAax5B,UAAU6uN,GAChC4hD,EAAK5hD,EACIA,aAAyB,IAClC4hD,EAAK,IAAIhN,GAA6B/3S,EAAUmjQ,IAE5CoiD,EAAep6D,GAAcw+C,WAAWxmC,MAOjCoiD,EAAepI,GAAqBxT,WAAW/kS,KANvB,OAA7B2gT,EAAahN,aAAyBsM,EAGxCjvP,EAAUh1D,KAAK,IAAIqkT,GAAoBrgT,EAAKu+P,EAAeoiD,IAF3DV,EAAe,IAAII,GAAoBrgT,EAAKu+P,EAAeoiD,GAI7D,IAASzzQ,OAAO,IAAStwB,SAAU+jS,EAAcpiD,KASxCoiD,EAAe,yBAAuB5b,WAAW/kS,IAAQ,0BAAwB+kS,WAAW/kS,IAAQ4vS,EAAwB7K,WAAW/kS,KAChJgxD,EAAUh1D,KAAK,IAAIqkT,GAAoBrgT,EAAKu+P,EAAeoiD,IAC3D,IAASzzQ,OAAO,IAAStwB,SAAU+jS,EAAcpiD,IACvCnhM,IACVA,EAAgBmhM,EAChBmiD,EAAc1gT,IAcpB,OATKigT,GAAgB7iP,IACnB6iP,EAAe,IAAII,GAAoBK,EAAatjP,IAGtDwjP,EAAeZ,eAAiBA,EAChCY,EAAeX,aAAeA,EAC9BW,EAAe5vP,UAAYA,EAC3B4vP,EAAe13O,aAAei3O,EAEvBS,GAGFN,EA5GmB,GA+GxBv/S,GAAS,YAAqB,cAUlC,IAAI8/S,GAAmB,WACrB,SAASA,EAAiBhkT,GACxB,IAAIwa,EAASvW,KAIbjE,EAAQoH,MAAK,SAAU+D,GACrB,OAAOqP,EAAOgyD,YAAcrhE,KA2BhC,OAvBA64S,EAAiBjlT,UAAUmE,OAAS,SAAgBoP,EAAWs5D,EAAgBuhE,EAAmBniE,GAChG,OAAO/mE,KAAKuoE,YAAYtpE,OAAOoP,EAAWs5D,EAAgBuhE,EAAmBniE,IAG/Eg5O,EAAiBjlT,UAAUwhT,aAAe,SAAsB5rO,EAAM6rO,GACpEv8S,KAAKuoE,YAAY+zO,aAAa5rO,EAAM6rO,IAGtCwD,EAAiBjlT,UAAU0hT,cAAgB,WACzC,OAAOx8S,KAAKuoE,YAAYi0O,iBAG1BuD,EAAiBjlT,UAAU8+S,kBAAoB,SAA2BlpS,GACxE1Q,KAAKuoE,YAAYqxO,kBAAkBlpS,IAGrCzP,EAAa8+S,EAAkB,CAAC,CAC9B7gT,IAAK,YACLV,IAAK,WACH,OAAOwB,KAAKuoE,YAAYqO,cAIrBmpO,EAlCc,GAqCnBC,GAAiB,KAEVC,GAAsB,iBAAO,IAAQ,YAAW1C,GAAciC,GAAgB/5D,GAAgBg3C,EAAkBqP,EAASD,EAAW,WAC7I,SAASoU,EAAW32J,EAAQj7I,EAAWqkS,EAAcwN,EAAgBzN,GAGnEzyS,KAAKspJ,OAASA,EACdtpJ,KAAKqO,UAAYA,EACjBrO,KAAK0yS,aAAeA,EACpB1yS,KAAKkgT,eAAiBA,EACtBlgT,KAAKyyS,aAAeA,EACpBzyS,KAAKmgT,WAAa,GAEK,OAAnBH,MACFA,GAAiB,IAAIvI,IACN1b,cAAgB,UAC/B,IAAS3vP,OAAO,IAAStwB,SAAUkkS,GAAgBrM,KAGrDqM,GAAez/N,WAAWlyE,EAAWslS,IACrCqM,GAAe75P,SAASssP,GA0K1B,OAvKAwN,EAAWnlT,UAAUslT,kBAAoB,SAA2BC,EAAWrgL,GAC7E,IAAItiI,EAAO2iT,EAAUt5S,QAAQ,IAAK,IAAM,mBACxC/G,KAAKmgT,WAAWE,GAAa3iT,EAC7BsC,KAAKspJ,OAAOy0G,UAAUrgQ,EAAMsiI,IAG9BigL,EAAWnlT,UAAU42S,gBAAkB,SAAyB4O,EAAoBxO,EAAoBC,EAAav0S,GACnH,IAAImZ,EAAS3W,KAIb,OAFA+xS,EAAcA,GAAe,IAAIpC,EA7ErC,SAA6BrmJ,EAAQg3J,GACnC,OAAIA,aAA8B,IACzBtkT,EAAQC,QAAQqkT,GAGlBh3J,EAAO6zG,aAAamjD,GA0ElBC,CAAoBvgT,KAAKspJ,OAAQg3J,GAAoBn9S,MAAK,SAAUq9S,GACzE,IAAI/3S,EAAM+3S,EAAcnjD,QAExB,OAAImjD,EAAcpmK,QACX23J,EAAYnC,cAAcnnS,GAKA,OAA3B+3S,EAAcx9N,SACTw9N,EAAcpmK,QAGhBp+I,EAAQC,QAAQ,IAAI8jT,GAAiBS,EAAcpmK,WARxD23J,EAAY/yB,cAAcv2Q,GACnB+3S,EAAcpmK,UAUzB23J,EAAY/yB,cAAcv2Q,GAE1B+3S,EAAcpmK,QAAUzjI,EAAO8pS,sBAAsBD,EAAe1O,EAAoBC,EAAav0S,GAAQ2F,MAAK,SAAU+sD,GAG1H,GAFAswP,EAActwP,UAAYA,EAEK,OAA3BswP,EAAcx9N,SAChB,OAAOw9N,EAAcj4Q,QAAU,KAGjC,IAAIggC,EAAc5xD,EAAO+7R,aAAahgM,QAAQ8tM,EAAcx9N,SAAU9yB,EAAW4hP,GACjF,OAAO0O,EAAcj4Q,QAAUggC,KAG1Bi4O,EAAcpmK,aAIzB6lK,EAAWnlT,UAAU2lT,sBAAwB,SAA+BD,EAAe1O,EAAoBC,EAAav0S,GAC1H,IAAI0yD,EAAY,IAAIu1L,GAAczlP,KAAKyyS,aAAc+N,EAAcnjD,SAC/D74H,EAAeg8K,EAAch8K,aAC7Bk8K,OAAY,EACZ/sR,OAAQ,EAIZ,GAFAm+Q,EAAqBA,GAAsBjC,EAAuBI,OAEtC,IAAxBzrK,EAAa5pI,SAAiBk3S,EAAmB9B,mBACnD,OAAOh0S,EAAQC,QAAQi0D,GAWzB,GARAwwP,EAAYl8K,EAAa7/H,KAAI,SAAUuC,GACrC,OAAOA,EAAEvK,OAEXg3B,EAAQ6wG,EAAa7/H,KAAI,SAAUuC,GACjC,OAAOA,EAAExJ,QAEXuC,GAAO0zC,MAAM,2BAA6B6sQ,EAAcnjD,QAASqjD,GAE7DljT,EAAQ,CACV,IAAImjT,EAAoB,IAASniT,IAAIyhT,EAAWW,4BAA6BpjT,GAC7E,GAAImjT,EAAmB,CAErB,IADA,IAAIE,EAAsBH,EAAU9lT,OAC3BF,EAAI,EAAGiI,EAAKg+S,EAAkB/lT,OAAQF,EAAIiI,IAAMjI,EAAG,CAC1D,IAAIs+M,EAAM2nG,EAAkBjmT,GACxBomT,EAA0B,mBAAR9nG,EAAqB,IAAOx6M,IAAIw6M,GAAK1+M,SAAW,YAAe0+M,EAAIr8M,KAAOq8M,EAAKwnG,EAAcnjD,UAE9E,IAAjCqjD,EAAUrvS,QAAQyvS,KACpBJ,EAAUxlT,KAAK4lT,GACfntR,EAAMz4B,KAAK89M,EAAIxzK,KAGnBvlC,GAAO0zC,MAAM,qCAAuCm+P,EAAmB9B,mBAAoB0Q,EAAU7gT,MAAMghT,KAI/G,OAAO7gT,KAAK+gT,oBAAoBL,EAAW/sR,EAAOu8B,EAAW4hP,EAAoBC,IAGnFkO,EAAWnlT,UAAUkmT,wBAA0B,SAAiCC,EAAcp0Q,GAC5F,IAAIr1B,EAAUxX,KAEd,OAAOA,KAAKspJ,OAAO01G,WAAWiiD,GAAc99S,MAAK,SAAU+9S,GACzD,IAAIC,EAAe,IAAO3iT,IAAI0iT,GAAiB5mT,SAC3CwlT,EAAiBtoS,EAAQ0oS,eAAeR,QAAQyB,EAAcD,EAAiBr0Q,GAEnF,IAAKizQ,EAAeX,aAClB,MAAM,IAAIpiT,MAAM,kCAAoCkkT,EAAe,MAKrE,OAFAnB,EAAev/N,WAAW/oE,EAAQnJ,WAE3ByxS,EAAeX,iBAI1Bc,EAAWnlT,UAAUimT,oBAAsB,SAA6BK,EAAWztR,EAAOu8B,EAAW4hP,EAAoBC,GACvH,IAAI15R,EAAUrY,KASd,OAPA+xS,EAAcA,GAAe,IAAIpC,EACjCmC,EAAqBA,GAAsBjC,EAAuBI,OAElEmR,EAAYA,EAAUz8S,KAAI,SAAUuC,GAClC,OAAOmR,EAAQgpS,mBAAmBn6S,MAG7BlH,KAAKspJ,OAAOy1G,eAAeqiD,GAAWj+S,MAAK,SAAUyxN,GAC1D,IAAIl6N,OAAI,EACJiI,OAAK,EACL2+S,OAAW,EACXH,OAAe,EACfv+S,OAAU,EACV2+S,OAAmB,EACnBlzS,EAAYgK,EAAQhK,UACpB6xS,EAAiB7nS,EAAQ6nS,eACzBsB,EAAc,IAAI9gT,MAAMk0N,EAAQh6N,QAEpC,IAAKF,EAAI,EAAGiI,EAAKiyN,EAAQh6N,OAAQF,EAAIiI,IAAMjI,EACzCkI,EAAUgyN,EAAQl6N,GAClBymT,EAAe,IAAO3iT,IAAIoE,GAAStI,UAEnCgnT,EAAWpB,EAAeR,QAAQyB,EAAcv+S,IACvC29E,WAAWlyE,GACpBizS,EAASn7P,SAAS+J,EAAWv8B,EAAMj5B,IAEnC8mT,EAAY9mT,GAAK4mT,EAWnB,IARIxP,EAAmB9B,qBACrBuR,EAAmBrB,EAAeT,YAAY3N,EAAmB9B,sBAG/DuR,EAAiBp7P,SAAS+J,GAIzBx1D,EAAI,EAAGiI,EAAK6+S,EAAY5mT,OAAQF,EAAIiI,IAAMjI,EAC7C8mT,EAAY9mT,GAAK8mT,EAAY9mT,GAAGg7D,KAAKrnD,EAAW0jS,GAGlD,OAAO/1S,EAAQgC,IAAIwjT,GAAar+S,MAAK,WACnC,OAAO+sD,SAKb+vP,EAAWnlT,UAAUumT,mBAAqB,SAA4B9kS,GACpE,IAAI5S,EAAQ4S,EAAGlX,YAAY,KAC3B,IAAe,IAAXsE,EAAc,CAChB,IAAIq0L,EAAMzhL,EAAGxa,UAAU4H,GACnBw1P,EAAan/P,KAAKmgT,WAAWniH,GAEjC,YAAmBpgM,IAAfuhQ,EACK5iP,EAGFvc,KAAKspJ,OAAO41G,iBAAiB3iP,EAAI4iP,GAG1C,OAAO5iP,GAGF0jS,EA5LsI,GA6L1IpU,EAAS+U,4BAA8B,6BA7LmEn+B,EA6LrCqpB,KAAYrpB,EAE3Eg/B,GAAa,WACtB,SAASA,EAAW3zQ,EAAUzmC,EAAa0G,EAAWM,GAGpDrO,KAAK8tC,SAAWA,EAChB9tC,KAAKqH,YAAcA,EACnBrH,KAAK+N,UAAYA,EACjB/N,KAAKw5S,YAAa,EAClBx5S,KAAK0Q,KAAO,KACZ1Q,KAAK+2E,SAAU,EACf/2E,KAAKorE,MAAQ,KACbprE,KAAKqO,UAAYA,EACjBrO,KAAKq7S,cAAgBhtS,EAAUgtS,eAAiB,KAEhD,IAMI14S,EANA++S,EAAiB5zQ,EAASk/B,gBAAgBw1N,2BAA2Bz0R,GACrE4zS,EAAc7zQ,EAAS6zQ,YACvB14M,EAAa5hG,EAAY4hG,WACzBs/I,EAAkBvoP,KAAKuoP,gBAAkB,GACzC18M,EAAaiC,EAASjC,WACtBnxC,OAAI,EAKR,IAFAozC,EAAS8zQ,yBAAyB7zS,EAAW2zS,GAExChnT,EAAI,EAAGiI,EAAKkpC,EAAWjxC,OAAQF,EAAIiI,IAAMjI,EAC5CmxC,EAAWnxC,GAAGonF,YAAY/zE,EAAW2zS,EAAgBz4M,EAAY04M,EAAap5D,GA+IlF,OA3IAk5D,EAAW3mT,UAAU2sE,QAAU,SAAiBC,GAC1C1nE,KAAK8tC,SAAS+zQ,gBAChB7hT,KAAK+N,UAAU05D,QAAQC,EAAY1nE,KAAK0Q,OAI5C+wS,EAAW3mT,UAAUkuE,SAAW,SAAkBpB,EAAiBF,GACjE1nE,KAAK0Q,KAAKi3D,eAAiB3nE,KAAK+N,UAChC/N,KAAK0Q,KAAKk3D,gBAAkBA,GAAmB,gCAAsB5nE,KAAK+N,WAC1E/N,KAAK0Q,KAAKipS,mBAAoB,EAE1B35S,KAAK8tC,SAAS+zQ,gBAChB7hT,KAAK+N,UAAU05D,QAAQC,GAAc,KAAM1nE,KAAK0Q,MAGlD1Q,KAAKb,KAAKa,KAAK0Q,OAGjB+wS,EAAW3mT,UAAUqE,KAAO,SAAcisE,GACxC,IAGIzoE,EAHAm/S,EAAqB9hT,KAAK8tC,SAAS6zQ,YACnCp5D,EAAkBvoP,KAAKuoP,gBACvB7tP,OAAI,EAEJwM,OAAI,EACJmnD,OAAW,EACX0zP,OAAiB,EAErB,GAAI/hT,KAAK+2E,QAAS,CAChB,GAAI/2E,KAAKorE,QAAUA,EACjB,OAGFprE,KAAK0lE,SAMP,IAHA1lE,KAAK+2E,SAAU,EACf/2E,KAAKorE,MAAQA,EAER1wE,EAAI,EAAGiI,EAAK4lP,EAAgB3tP,OAAQF,EAAIiI,IAAMjI,EAGjDqnT,GADA1zP,GADAnnD,EAAIqhP,EAAgB7tP,IACP2zD,UACa0zP,eAC1B1zP,EAAS2zP,YAAa,EAElBF,IACFzzP,EAAS0zP,eAAiB,MAG5B76S,EAAEiwC,QAAQh4C,KAAKisE,GACf/c,EAASrzD,OAETqzD,EAAS2zP,YAAa,EACtB3zP,EAAS0zP,eAAiBA,EAG5B,IAAIn6O,OAAkB,EACJ,OAAd5nE,KAAK0Q,MACHoxS,IACF9hT,KAAK0Q,KAAK+oS,eAAiBruO,GAGzBprE,KAAK+N,YAAcq9D,EAAMxD,gBAAgBD,eAC3CC,EAAkBwD,EAAMxD,gBACf5nE,KAAKqH,YAAYmpS,sBAC1B5oO,EAAkB,gCAAsB5nE,KAAK+N,UAAWq9D,EAAMxD,kBAE9DA,EAAkB,gCAAsB5nE,KAAK+N,YAC7Bk0S,wBAA0B72O,EAAMxD,gBAGlD5nE,KAAK0Q,KAAKvR,KAAKa,KAAK+N,UAAW65D,IACtBk6O,IACTl6O,EAAkBwD,EAAMxD,qBAE8BhqE,IAAlDwtE,EAAMxD,gBAAgBq6O,yBAAyCjiT,KAAK+N,UAAUw6D,aAAevoE,KAAK+N,UAAUw6D,YAAY8zO,yBAAyB3L,oBACnJ9oO,EAAkB/sE,OAAOgI,OAAO,GAAIuoE,EAAMxD,kBAC1Bk7M,sBAAwB13M,EAAMxD,gBAAgBq6O,yBAEhEjiT,KAAK+N,UAAU5O,KAAKisE,EAAMzD,eAAgBC,KAI9C65O,EAAW3mT,UAAU4qE,OAAS,WAC5B,GAAI1lE,KAAK+2E,QAAS,CAChB,IAEImrO,EAFAC,EAAmBniT,KAAKuoP,gBACxBjqG,OAAM,EAkBV,IAfAt+I,KAAK+2E,SAAU,EACf/2E,KAAKorE,MAAQ,KAEK,OAAdprE,KAAK0Q,MACP1Q,KAAK0Q,KAAKg1D,SAGR1lE,KAAK8tC,SAASs0Q,eAChBpiT,KAAK+N,UAAU23D,SAGU,OAAvB1lE,KAAKq7S,eACPr7S,KAAKq7S,cAAc5L,aAGhBnxJ,EAAM,EAAG4jK,EAAOC,EAAiBvnT,OAAQ0jJ,EAAM4jK,IAAQ5jK,EAC1D6jK,EAAiB7jK,GAAKnnG,QAAQuuB,WAKpC+7O,EAAW3mT,UAAUwuD,SAAW,WAC1BtpD,KAAKw5S,aAITx5S,KAAKw5S,YAAa,EAEdx5S,KAAK8tC,SAASu0Q,iBAChBriT,KAAK+N,UAAUu7C,WAGC,OAAdtpD,KAAK0Q,MACP1Q,KAAK0Q,KAAK44C,aAIdm4P,EAAW3mT,UAAUquJ,SAAW,WAC1BnpJ,KAAKw5S,aACPx5S,KAAKw5S,YAAa,EAEA,OAAdx5S,KAAK0Q,MACP1Q,KAAK0Q,KAAKy4I,WAGRnpJ,KAAK8tC,SAASw0Q,iBAChBtiT,KAAK+N,UAAUo7I,aAKds4J,EAxKe,GA2Kbc,GAAoC,gCAAwBrlB,CAAM6O,EAAW,WACtF,SAASwW,EAAyBj6K,EAAWvnI,EAAKwpF,EAAcw3N,EAAgBx6M,GAG9EvnG,KAAKsoI,UAAYA,EACjBtoI,KAAKe,IAAMA,EACXf,KAAKuqF,aAAeA,EACpBvqF,KAAKwiT,WAAY,EACjBxiT,KAAKgiT,YAAa,EAClBhiT,KAAK+hT,eAAiBA,EACtB/hT,KAAKklH,aAAellH,KAAK+wE,SAAWw2B,EAmDtC,OAhDAg7M,EAAyBznT,UAAU+rR,SAAW,WAC5C,OAAO7mR,KAAKklH,cAGdq9L,EAAyBznT,UAAUgsR,SAAW,SAAkB/3N,GAC9D,IAAIgiB,EAAW/wE,KAAKklH,aAEfrqH,OAAO05C,GAAGwa,EAAUgiB,KACvB/wE,KAAK+wE,SAAWA,EAChB/wE,KAAKklH,aAAen2D,EAEhB/uD,KAAKgiT,YAAchiT,KAAKwiT,YACtBxiT,KAAKsoI,UAAUk1I,SACjBx9Q,KAAKhF,QAELgF,KAAKwiT,WAAY,EACjBxiT,KAAKsoI,UAAUkB,eAAexpI,UAMtCuiT,EAAyBznT,UAAUE,KAAO,WACxC,IAAI+1E,EAAW/wE,KAAK+wE,SAChBhiB,EAAW/uD,KAAKklH,aAEpBllH,KAAKwiT,WAAY,EAEb3nT,OAAO05C,GAAGwa,EAAUgiB,KAIpB/wE,KAAK+hT,gBACP/hT,KAAK+hT,eAAehzP,EAAUgiB,GAGhC/wE,KAAKgmR,gBAAgBj3N,EAAUgiB,GAC/B/wE,KAAK+wE,SAAWhiB,IAGlBwzP,EAAyBznT,UAAUia,UAAY,SAAmB5B,EAAS8xQ,GACzEjlR,KAAKglR,cAAc7xQ,EAAS8xQ,IAG9Bs9B,EAAyBznT,UAAUga,YAAc,SAAqB3B,EAAS8xQ,GAC7EjlR,KAAK2lR,iBAAiBxyQ,EAAS8xQ,IAG1Bs9B,EA7D+E,KA8DhFxW,EAER,SAASjoB,GAAYj8N,EAAUnqD,GAC7B,IAAIgoI,EAAS79E,EAASg1O,cAEtB,QAAej/R,IAAX8nI,EAAsB,CACxB,IAAIyB,EAAOtsI,OAAOoxC,eAAe4b,GAAU7mD,YACvCyhT,EAAY,IAASjkT,IAAI,IAASsd,SAAUqrH,GAC3Cs7K,EAAU3lP,eACb2lP,EAAUliO,WAAW,YAAU14B,UAAY,IAAI,YAAaA,EAAS7mD,aAGvE0kI,EAAS+8K,EAAUz1O,gBAAgBw1N,2BAA2B36O,GAC9D46P,EAAUb,yBAAyB/5P,EAAU69E,GAG/C,OAAOA,EAAOhoI,GAGT,IAAIw6S,GAAmB,WAC5B,SAASA,EAAiBwK,GAGI,iBAAjBA,EACT1iT,KAAKtC,KAAOglT,EAEZ7nT,OAAOgI,OAAO7C,KAAM0iT,GAGtB1iT,KAAKsyN,UAAYtyN,KAAKsyN,WAAaq8E,EAAW3uS,KAAKtC,MACnD,IAAIm6S,EAAqB73S,KAAK63S,mBAC1BA,QACF73S,KAAK63S,mBAAqB,cAAY5mB,OACC,iBAAvB4mB,IAChB73S,KAAK63S,mBAAqB,cAAYA,IAAuB,cAAY5mB,QAE3EjxR,KAAK+lS,cAAgB/lS,KAAK+lS,eAAiB,KAC3C/lS,KAAKujH,MAAQ,KACbvjH,KAAKoB,WAAa,KA2LpB,OAxLA82S,EAAiBp9S,UAAUs9S,aAAe,SAAsB56S,EAAQswC,EAAU1sC,GAKhF,GAJA0sC,EAASjC,WAAW3wC,KAAK8E,MACzB8tC,EAASm7D,WAAWjpG,KAAKsyN,WAAatyN,KACtCA,KAAKujH,MAAQz1E,EAET1sC,EAEF,OADApB,KAAKoB,WAAaA,EACXpB,KAAK2iT,qBAAqBvhT,IAMrC82S,EAAiBp9S,UAAU6nT,qBAAuB,SAA8BvhT,GAC9E,IAAI1D,EAAOsC,KAAKtC,KA6BhB,OA3BA0D,EAAWC,cAAe,EAC1BD,EAAW7C,YAAa,EAEpB,gBAAiB6C,IACnBpB,KAAKwyD,aAAepxD,EAAWslE,mBACxBtlE,EAAWslE,mBACXtlE,EAAWE,UAGhB,UAAWF,IACbpB,KAAKwyD,aAAepxD,EAAWxC,aACxBwC,EAAWxC,aACXwC,EAAWE,UAGpBF,EAAW5C,IAAM,WACf,OAAOslR,GAAY9jR,KAAMtC,GAAMmpR,YAGjCzlR,EAAW+jB,IAAM,SAAUvmB,GACzBklR,GAAY9jR,KAAMtC,GAAMopR,SAASloR,IAGnCwC,EAAW5C,IAAIslR,YAAc,SAAU/iR,GACrC,OAAO+iR,GAAY/iR,EAAKrD,IAGnB0D,GAGT82S,EAAiBp9S,UAAU8nT,SAAW,SAAkBplT,EAAQswC,GAC9D,IAAIpwC,EAAOsC,KAAKtC,KACZmlT,OAAc,EAES,OAAvB7iT,KAAK+lS,gBACP8c,EAAcnlT,EAAO,aACFF,EAAO1C,YACxBkF,KAAK+lS,cAAgB8c,GAID,OAApB7iT,KAAKoB,YACPvG,OAAOyD,eAAed,EAAO1C,UAAW4C,EAAMsC,KAAK2iT,qBAAqB70Q,EAAU,MAItFoqQ,EAAiBp9S,UAAUgoT,eAAiB,SAAwB/0S,GAClE,IAAIg0S,EAAiB,KACjBvvP,EAAexyD,KAAKwyD,aACpBuwP,EAAoB/iT,KAAK+lS,cACzBroS,EAAOsC,KAAKtC,KACZ6pG,OAAe,EAEnB,IAAIvnG,KAAKo+S,WAAT,CAIA,GAAI2E,KAAqBh1S,EAErBg0S,EADE,oBAAqBh0S,EACN,SAAwBghD,EAAUgiB,GACjDhjE,EAAUg1S,GAAmBh0P,EAAUgiB,GACvChjE,EAAUi1S,gBAAgBtlT,EAAMqxD,EAAUgiB,IAG3B,SAAwBhiB,EAAUgiB,GACjD,OAAOhjE,EAAUg1S,GAAmBh0P,EAAUgiB,SAG7C,GAAI,oBAAqBhjE,EAC9Bg0S,EAAiB,SAAwBhzP,EAAUgiB,GACjD,OAAOhjE,EAAUi1S,gBAAgBtlT,EAAMqxD,EAAUgiB,SAE9C,GAA0B,OAAtBgyO,EACT,MAAM,IAAIhmT,MAAM,kBAAoBgmT,EAAoB,iDAO1D,YAJqBnlT,IAAjB40D,IACF+0C,EAAuC,mBAAjB/0C,EAA8BA,EAAax3D,KAAK+S,GAAaykD,GAG9E,IAAI+vP,GAAyBviT,KAAKujH,MAAM+kB,UAAWv6H,EAAW/N,KAAKtC,KAAMqkT,EAAgBx6M,KAGlG2wM,EAAiBp9S,UAAUgnF,YAAc,SAAqB/zE,EAAW2zS,EAAgBz4M,EAAYg6M,EAAqB16D,GACxH,IAAIw5D,OAAiB,EACjB1zP,OAAW,EACXikK,OAAY,EACZ9/J,EAAexyD,KAAKwyD,aAExB,GAAIxyD,KAAK2/I,UACP,IAAK,IAAIryI,KAAS27F,EAChBjpG,KAAKkjT,uBAAuBn1S,EAAW2zS,EAAgBuB,EAAqB31S,EAAO27F,EAAW37F,GAAQi7O,QAE9FvoP,KAAKo+S,aACf/vP,EAAWqzP,EAAe1hT,KAAKtC,MAEZ,OAAfurG,IACF84M,EAAiB1zP,EAAS0zP,eAC1BzvF,EAAYrpH,EAAWjpG,KAAKsyN,WAExB2wF,IACF50P,EAAS0zP,eAAiB,MAGH,iBAAdzvF,GACTvkN,EAAU/N,KAAKtC,MAAQ40N,EACvBjkK,EAASrzD,QACAs3N,EACTi2B,EAAgBrtP,KAAK,CAAEmzD,SAAUA,EAAUlX,QAASm7K,EAAU+wE,cAAct1R,UAClDnQ,IAAjB40D,GACTnE,EAASrzD,OAGXqzD,EAAS0zP,eAAiBA,GAG5B1zP,EAAS2zP,YAAa,IAI1B9J,EAAiBp9S,UAAUooT,uBAAyB,SAAgCn1S,EAAW2zS,EAAgBuB,EAAqBvlT,EAAM40N,EAAWi2B,GACnJ,IAAIw6D,EAAoBrlT,EAAO,UAC3BqkT,EAAiB,KACjB1zP,OAAW,EACXluD,OAAO,EAEP4iT,KAAqBh1S,EAErBg0S,EADE,oBAAqBh0S,EACN,SAAwBghD,EAAUgiB,GACjDhjE,EAAUg1S,GAAmBh0P,EAAUgiB,GACvChjE,EAAUi1S,gBAAgBtlT,EAAMqxD,EAAUgiB,IAG3B,SAAwBhiB,EAAUgiB,GACjD,OAAOhjE,EAAUg1S,GAAmBh0P,EAAUgiB,IAGzC,oBAAqBhjE,IAC9Bg0S,EAAiB,SAAwBhzP,EAAUgiB,GACjD,OAAOhjE,EAAUi1S,gBAAgBtlT,EAAMqxD,EAAUgiB,KAIrD1iB,EAAWqzP,EAAehkT,GAAQ,IAAI6kT,GAAyBviT,KAAKujH,MAAM+kB,UAAWv6H,EAAWrQ,EAAMqkT,GAEtGlnT,OAAOyD,eAAeyP,EAAWrQ,EAAM,CACrC2D,cAAc,EACd9C,YAAY,EACZC,IAAK6vD,EAASw4N,SAAS1nR,KAAKkvD,GAC5BlpC,IAAKkpC,EAASy4N,SAAS3nR,KAAKkvD,KAG1B40P,IACF50P,EAAS0zP,eAAiB,MAGH,iBAAdzvF,GACTvkN,EAAUrQ,GAAQ40N,EAClBjkK,EAASrzD,QACAs3N,IACTnyN,EAAO,CAAEkuD,SAAUA,EAAUlX,QAASm7K,EAAU+wE,cAAct1R,IAC9Dw6O,EAAgBrtP,KAAKiF,IAGvBkuD,EAAS2zP,YAAa,EACtB3zP,EAAS0zP,eAAiBA,GAGrB7J,EA9MqB,GAiN1BiL,GAAiB,EAMrB,SAASC,KACP,OAAO,EAET,SAASC,MAEF,IAAI5L,GAAuB,WAChC,SAASA,IAGPz3S,KAAK6yS,YAAc,KACnB7yS,KAAK+7R,cAAgB,KACrB/7R,KAAK43S,iCAA8Bh6S,EACnCoC,KAAK23S,cAAe,EACpB33S,KAAK8vS,iBAAkB,EACvB9vS,KAAKsjT,iBAAmB,KACxBtjT,KAAK++S,kBAAoBsE,GACzBrjT,KAAKujT,eAAiBH,GACtBpjT,KAAKwjT,eAAgB,EACrBxjT,KAAKyjT,cAAgB,KACrBzjT,KAAK0jT,mBAAoB,EACzB1jT,KAAKswS,eAAgB,EACrBtwS,KAAK6rC,WAAa,GAClB7rC,KAAKipG,WAAa,GAClBjpG,KAAK88D,eAAgB,EACrB98D,KAAK0pI,gBAAkB,KA6WzB,OA1WA+tK,EAAqBxT,WAAa,SAAoBvmS,EAAM6uP,GAC1D,IAAIz+M,OAAW,EAYf,OAVIpwC,EAAK+0N,SAAS,sBAChB3kL,EAAWy+M,GAAY,IAAIkrD,GAClB1b,cAAgB4S,EAAWjxS,EAAKqE,UAAU,EAAGrE,EAAK9C,OAAS,MAGlE8C,EAAK+0N,SAAS,oBAChB3kL,EAAWy+M,GAAY,IAAIkrD,GAClB5E,YAAclE,EAAWjxS,EAAKqE,UAAU,EAAGrE,EAAK9C,OAAS,MAG7DkzC,GAGT2pQ,EAAqB38S,UAAU6oT,gBAAkB,SAAyB71Q,GAC7C,OAAvB9tC,KAAKyjT,gBACPzjT,KAAKyjT,cAAgB,IAGvBzjT,KAAKyjT,cAAcvoT,KAAK4yC,IAG1B2pQ,EAAqB38S,UAAUylF,WAAa,SAAoBlyE,EAAW7Q,GACzE,IAAI6hC,EAAQ7hC,EAAO1C,UACf+wC,EAAa7rC,KAAK6rC,WAClBkwP,EAAgB/7R,KAAK+7R,cACrB6b,EAA8B53S,KAAK43S,4BACnCl9S,OAAI,EACJiI,OAAK,EACLC,OAAU,EAEd,IAAI5C,KAAK88D,cAmBT,GAfA98D,KAAK88D,eAAgB,EACrBt/D,EAAOy9S,iBApEAkI,GAsEPnjT,KAAKgtE,gBAAkB3+D,EAAU7P,IAAI,mBACrCwB,KAAKsoI,UAAYj6H,EAAU7P,IAAI,aAE/BwB,KAAKxC,OAASA,EACdwC,KAAKwjT,cAAgBxjT,KAAK8vS,iBAAmB,UAAQ2N,UACrDz9S,KAAK6hT,eAAiB,YAAaxiR,EACnCr/B,KAAK2hT,YAAc,SAAUtiR,EAC7Br/B,KAAKoiT,cAAgB,WAAY/iR,EACjCr/B,KAAKqiT,gBAAkB,aAAchjR,EACrCr/B,KAAKsiT,gBAAkB,aAAcjjR,EACrCr/B,KAAK4jT,SAAW5jT,KAAK6yS,aAAe7yS,KAAK+7R,cAEnB,OAAlBA,EAYF,GAX0B,IAAtBlwP,EAAWjxC,QACb,IAAIs9S,GAAiB,CACnBx6S,KAAM,QACNqoS,cAAe,iBAAkB1mQ,EAAQ,eAAiB,KAC1DizL,UAAWypE,EACX8b,mBAAoBD,IACnBQ,aAAa56S,EAAQwC,MAG1B4C,EAAUipC,EAAW,GAEK,IAAtBA,EAAWjxC,QAAiC,UAAjBgI,EAAQlF,KACrCkF,EAAQ+8I,UAAY/8I,EAAQw7S,WAAap+S,KAAK0jT,kBAC9C9gT,EAAQggT,SAASplT,EAAQwC,UACpB,CACL,IAAKtF,EAAI,EAAGiI,EAAKkpC,EAAWjxC,OAAQF,EAAIiI,IAAMjI,EAE5C,GADAmxC,EAAWnxC,GAAGkoT,SAASplT,EAAQwC,MAC3B6rC,EAAWnxC,GAAGgvI,gBAAiB,CACjC,GAAI1pI,KAAK0pI,gBACP,MAAM,IAAI3sI,MAAM,gFAElBiD,KAAK0pI,gBAAkB79F,EAAWnxC,IAItCkI,EAAU,IAAIs1S,GAAiB,CAC7Bx6S,KAAM,QACNqoS,cAAe,iBAAkB1mQ,EAAQ,eAAiB,KAC1DizL,UAAWypE,EACX8b,mBAAoBD,KAGdwG,YAAa,EACrBx7S,EAAQw1S,aAAa56S,EAAQwC,UAE1B,CACL,IAAKtF,EAAI,EAAGiI,EAAKkpC,EAAWjxC,OAAQF,EAAIiI,IAAMjI,EAC5CmxC,EAAWnxC,GAAGkoT,SAASplT,EAAQwC,MAGjCA,KAAK6jT,yBAAyBx1S,EAAW7Q,KAI7Ci6S,EAAqB38S,UAAUqrD,SAAW,SAAkBg4M,EAAUzgQ,GACpE,IAAI8a,EAAUxY,KAEa,OAAvBA,KAAK+7R,gBACP59B,EAAS+6C,kBAAkBx7S,GAAQsC,KAAK+7R,cAAe/7R,KAAMA,KAAK+7R,eAE9Dr7R,MAAMC,QAAQX,KAAKolB,UACrBplB,KAAKolB,QAAQje,SAAQ,SAAUiP,GAC7B+nP,EAAS+6C,kBAAkB9iS,EAAOoC,EAASA,EAAQujR,mBAKhC,OAArB/7R,KAAK6yS,aACP10C,EAAS66C,gBAAgBt7S,GAAQsC,KAAK6yS,YAAa7yS,OAIvDy3S,EAAqB38S,UAAU46D,KAAO,SAAcrnD,EAAW7Q,EAAQu0S,EAAa3pO,EAAc07O,GAChG,IAAI/qS,EAAU/Y,KAEVwD,OAAU,EAEd,OAAyB,OAArBxD,KAAK6yS,aACPzqO,EAAe/5D,EAAU7P,IAAIu0S,IAAa1qO,gBAAgBD,GAAgBpoE,KAAKooE,cAAgB5qE,GAC/FgG,EAAU,IAAIqsS,EAAuB7vS,KAAK8vS,iBAAiB,GAEtD1nO,EAAa9tE,WAChB8tE,EAAa9tE,SAAW,IAAOkE,IAAIhB,GAAQlD,UAGtC8tE,EAAaspO,gBAAgBrjS,EAAU7P,IAAIyhT,IAAaz8S,EAASuuS,EAAav0S,GAAQ2F,MAAK,SAAUolE,GAK1G,OAJKu7O,GAAkB/qS,EAAQwvD,cAC7BxvD,EAAQwvD,YAAcA,GAGjBA,MAIJvsE,EAAQC,QAAQ+D,OAGzBy3S,EAAqB38S,UAAU43G,QAAU,SAAiBgsM,EAAUxuP,EAAWhV,EAAM7zC,EAAai6D,GAChG,GAAIthE,KAAK23S,cACP,IAAKtwS,EAAYkhE,YAAa,CAC5B,IAAIu2M,EAAY,MAAIxiR,cAAc,YAC9B2F,EAAW,MAAI8kH,yBACf21L,EAAYxhQ,EAAKksB,aAAa,cAC9B7R,EAAOra,EAAKksB,aAAa,QAE7BlsB,EAAKm7D,gBAAgBhvG,EAAYypJ,kBACjC,MAAI+qJ,YAAY/8B,EAAW5jO,EAAMomB,GACjCr/D,EAASlE,YAAYm9C,GACrB7zC,EAAYkhE,YAAcm2O,EAAShsM,QAAQzwG,EAAUiuD,GAEjDqF,IACFluD,EAAYkhE,YAAYhT,KAAOA,EAC/Bra,EAAKm7D,gBAAgB,SAGnBqmM,IACFr1S,EAAYkhE,YAAY+zO,aAAaI,GACrCxhQ,EAAKm7D,gBAAgB,eAGvBn7D,EAAO4jO,QAEJ,GAAyB,OAArB9+Q,KAAK6yS,YAAsB,CACpC,IAAIkR,EAAqB,GAEzB,GAAI/jT,KAAKujT,eAAe7E,EAAUxuP,EAAWhV,EAAM7zC,IAAgB6zC,EAAK8oQ,gBAAiB,CAMvF,IALA,IAAI/F,EAAe/iQ,EAAKkmB,WACpB06O,EAAiB97S,KAAKwjT,cAAgB,KAAO,MAAIlnT,cAAc,cAC/D4kE,OAAc,EACd+iP,OAAY,EAEThG,GACL/8O,EAAc+8O,EAAa/8O,YAEE,aAAzB+8O,EAAa1jJ,UAA2B0pJ,EAAYhG,EAAa72O,aAAa,kBAChF28O,EAAmBE,GAAavF,EAAShsM,QAAQurM,EAAc/tP,GAC/D,MAAIg0P,WAAWjG,EAAc38O,GAC7Bj6D,EAAYqpS,iBAAmBqT,GACH,OAAnBjI,IACqB,IAA1BmC,EAAanlO,UAAkB81N,EAAiBqP,GAClD,MAAIiG,WAAWjG,EAAc38O,GAE7Bw6O,EAAe/9S,YAAYkgT,IAI/BA,EAAe/8O,EAGM,OAAnB46O,GAA2BA,EAAekI,iBAC5C9oQ,EAAKn9C,YAAY+9S,GAGnBz0S,EAAYspS,uBAAwB,OAEpCtpS,EAAYspS,uBAAwB,OAE5B3wS,KAAKujT,eAAe7E,EAAUxuP,EAAWhV,EAAM7zC,KACzDA,EAAYspS,uBAAwB,GAGtC,OAAOz1P,GAGTu8P,EAAqB38S,UAAUmE,OAAS,SAAgBoP,EAAWhH,EAAa0/D,EAAS89J,GACvF,IAAIs/E,OAAW,EACX17D,EAAK,KAETphP,EAAcA,GAAe6oS,EAAoBD,OACjDlpO,EAAUA,GAAW,KACrB89J,EAAWA,GAAY,KAEE,OAArB7kO,KAAK6yS,aAAwB9rO,IAC3B/mE,KAAKwjT,eACPW,EAAWp9O,EAAQq9O,aAAapkT,KAAKsjT,kBACrCj1S,EAAUs1H,iBAAiB,MAAI0gL,SAAUF,KAEzCA,EAAWp9O,EACP/mE,KAAK8vS,iBACPzhS,EAAUs1H,iBAAiB,MAAI0gL,SAAUF,KAK/B,OAAZp9O,IACFA,EAAQ0hL,GAAKA,EAAK1hL,EAAQ0hL,IAAM,IAGlC,IAAI16O,EAAY1G,EAAY0G,WAAaM,EAAU7P,IAAIwB,KAAKxC,QACxDioE,EAAa,IAAIg8O,GAAWzhT,KAAMqH,EAAa0G,EAAWM,GAC1Do1S,EAAgBzjT,KAAKyjT,cACrBl7O,OAAc,EAElB,GAAIvoE,KAAK23S,aACPlvD,EAAGhjL,WAAaA,OACX,GAAyB,OAArBzlE,KAAK6yS,aAQd,GAPAtqO,EAAclhE,EAAYkhE,aAAevoE,KAAKuoE,YAC9Cl6D,EAAUN,UAAYA,EAElBw6D,IACF9C,EAAW/0D,KAAO63D,EAAYtpE,OAAOoP,EAAWhH,EAAa0/D,IAG/C,OAAZA,GAGF,GAFA0hL,EAAGhjL,WAAaA,EAEZA,EAAW/0D,KAAM,CACnB,IAAK1Q,KAAKwjT,gBAAgD,IAA9Bz8O,EAAQ7D,WAAWtoE,QAAgBmsE,EAAQ+0O,gBAAiB,CACtF,IAAIA,EAAiB/0O,EAAQ7D,WAAW,IAAM6D,EAAQ+0O,eACtDr2O,EAAW/0D,KAAKyjS,YAAc,CAAElyS,SAAU65S,GAC1CA,EAAex6O,YAAc,MAAI4iP,WAAWpI,GAG9C,GAAIz0S,EAAYgpS,kBAAmB,CACjC,GAAsB,OAAlBoT,EACF,IAAK,IAAIrkK,EAAM,EAAGklK,EAAOb,EAAc7oT,OAAQwkJ,EAAMklK,IAAQllK,EAC3D35E,EAAW/0D,KAAKo0N,WAAW2+E,EAAcrkK,GAAKngJ,OAAO8nE,EAASh5D,EAAW03D,IAI7EA,EAAW/0D,KAAKopS,cAAcqK,QAE9B1+O,EAAW/0D,KAAK0lS,kBAAkB+N,QAE/B,GAAsB,OAAlBV,EACT,IAAK,IAAIc,EAAM,EAAGC,EAAOf,EAAc7oT,OAAQ2pT,EAAMC,IAAQD,EAC3D1/E,EAAS3pO,KAAKuoT,EAAcc,GAAKtlT,OAAO8nE,EAASh5D,EAAW03D,SAG3D,GAAIA,EAAW/0D,MAGpB,GAFA+0D,EAAW/0D,KAAK+0D,WAAaA,EAEP,OAAlBg+O,EACF,IAAK,IAAIgB,EAAM,EAAGC,EAAOjB,EAAc7oT,OAAQ6pT,EAAMC,IAAQD,EAC3Dh/O,EAAW/0D,KAAKo0N,WAAW2+E,EAAcgB,GAAKxlT,OAAOoI,EAAYy1H,KAAM/uH,EAAW03D,SAGjF,GAAsB,OAAlBg+O,EACT,IAAK,IAAIkB,EAAM,EAAGC,EAAOnB,EAAc7oT,OAAQ+pT,EAAMC,IAAQD,EAC3D9/E,EAAS3pO,KAAKuoT,EAAckB,GAAK1lT,OAAOoI,EAAYy1H,KAAM/uH,EAAW03D,SAGpE,GAAsB,OAAlBg+O,EACT,IAAK,IAAIoB,EAAM,EAAGC,EAAOrB,EAAc7oT,OAAQiqT,EAAMC,IAAQD,EAC3DhgF,EAAS3pO,KAAKuoT,EAAcoB,GAAK5lT,OAAO8nE,EAASh5D,EAAW03D,IAYhE,OARW,OAAPgjL,IACFA,EAAGzoP,KAAK4jT,UAAYn+O,GAGlBp+D,EAAYkpS,qBAAuBhoO,GACrC9C,EAAW/0D,KAAK+2D,UAGXhC,GAGTgyO,EAAqB38S,UAAU8mT,yBAA2B,SAAkC/5P,EAAU69E,GACpG,IAEI/iI,EAFAkpC,OAAa,EACbnxC,OAAI,EAEJ2zD,OAAW,EAEf,KAAI,0BAA2Bq3E,GAO/B,IAHAA,EAAOq/K,uBAAwB,EAG1BrqT,EAAI,EAAGiI,GAFZkpC,EAAa7rC,KAAK6rC,YAEUjxC,OAAQF,EAAIiI,IAAMjI,OAG3BkD,KAFjBywD,EAAWxiB,EAAWnxC,GAAGooT,eAAej7P,MAGtC69E,EAAOr3E,EAASk8B,cAAgBl8B,IAKtCopP,EAAqB38S,UAAU+oT,yBAA2B,SAAkCx1S,EAAW7Q,GAMrG,IALA,IAAIwb,EAAUhZ,KAEV8tC,OAAW,EACXk3Q,EAAUxnT,IAED,CACX,IAAI6hC,EAAQxkC,OAAOoxC,eAAezuC,EAAO1C,WAEzC,KADA0C,EAAS6hC,GAASA,EAAMr+B,aAEtB,OAGF,GADA8sC,EAAW,IAAS9B,OAAO,IAASlwB,SAAUte,GAE5C,MAGJswC,EAASyyC,WAAWlyE,EAAW7Q,GAc/B,IAZA,IAAIkJ,EAAQ,SAAeu+S,EAAKC,GAC9B,IAAI7iS,EAAOyrB,EAASjC,WAAWo5Q,GAE/B,GAAIjsS,EAAQ6yB,WAAWhtB,MAAK,SAAUjiB,GACpC,OAAOA,EAAEc,OAAS2kB,EAAK3kB,QAEvB,MAAO,WAGT,IAAIw6S,GAAiB71R,GAAM+1R,aAAa4M,EAAShsS,IAG1CisS,EAAM,EAAGC,EAAOp3Q,EAASjC,WAAWjxC,OAAQqqT,EAAMC,IAAQD,EACtDv+S,EAAMu+S,IAMdxN,EAhYyB,GAmYlC,SAAS0N,GAA6BC,EAAkBpnT,GACtD,OAAO,SAAUR,EAAQ0B,EAAKkC,GAC5B,IAAIikT,EAA8B,iBAARnmT,EAAmB1B,EAAOwD,YAAcxD,EAC9DiB,EAAI,IAAS8tC,eAAe,IAASzwB,SAAU27R,GAAsB4N,GAEzC,iBAArBD,IACTA,EAAmB,CACjBn0M,SAAUm0M,EACV1nT,KAAMwB,IAINkC,IACFA,EAAWE,UAAW,EACtBF,EAAWC,cAAe,GAG5B+jT,EAAiBpnT,IAAMA,EACvBS,EAAEklT,gBAAgB,IAAI2B,GAAcF,KAIjC,SAASx1Q,GAASw1Q,GACvB,OAAOD,GAA6BC,GAAkB,GAGjD,SAASn6N,GAAMm6N,GACpB,OAAOD,GAA6BC,GAAkB,GAGxD,IAAIE,GAAgB,WAClB,SAASA,EAAc9iT,GAGrBxC,KAAKtC,KAAO8E,EAAO9E,KACnBsC,KAAK+lS,cAAgBvjS,EAAOujS,eAAiB/lS,KAAKtC,KAAO,UACzDsC,KAAKixG,SAAWzuG,EAAOyuG,SACvBjxG,KAAKhC,IAAMwE,EAAOxE,IAOpB,OAJAsnT,EAAcxqT,UAAUmE,OAAS,SAAgBklT,EAAUp2S,EAAW03D,GACpE,OAAO,IAAI8/O,GAAoBvlT,KAAKixG,SAAUkzM,EAAUnkT,KAAKtC,KAAMqQ,EAAW03D,EAAYzlE,KAAK+lS,cAAe/lS,KAAKhC,MAG9GsnT,EAdW,GAiBhBE,GAAc,GAElB,SAASC,GAAcC,EAAkBC,EAAQ90O,GAC/C,IAAI0jJ,EAAYmxF,EAAiBlnT,IAAImnT,GAEhCpxF,IACHA,EAAY,GACZmxF,EAAiBvgS,IAAIwgS,EAAQpxF,IAG/BA,EAAUr5N,KAAK21E,GAGjB,SAAS+0O,GAAcrxF,EAAWlmK,GAKhC,IAJA,IAAIw3P,EAAUx3P,EAASw3P,QACnBC,EAAgBD,EAAQjrT,OACxB8qT,EAAmB,IAAIh5Q,IAElBq5Q,EAAO,EAAGC,EAAOzxF,EAAU35N,OAAQmrT,EAAOC,IAAQD,EAAM,CAK/D,IAJA,IAAIl1O,EAAS0jJ,EAAUwxF,GACnBE,EAAQp1O,EAAO8wJ,WACftyJ,EAAUwB,EAAO+wJ,aAEZhuM,EAAI,EAAGm8C,EAAKV,EAAQz0E,OAAQg5B,EAAIm8C,IAAMn8C,EAAG,CAChD,IAAIsyR,EAAQ72O,EAAQz7C,GACpB,GAAuB,IAAnBsyR,EAAMptO,SACR,IAAK,IAAI5+C,EAAI,EAAGA,EAAI4rR,IAAiB5rR,EAAG,CACtC,IAAIyrR,EAASE,EAAQ3rR,GACjByrR,EAAOQ,SAASD,IAClBT,GAAcC,EAAkBC,EAAQ90O,IAMhD,IAAK,IAAI8qL,EAAK,EAAGyqD,EAAMH,EAAMrrT,OAAQ+gQ,EAAKyqD,IAAOzqD,EAAI,CACnD,IAAI0qD,EAASJ,EAAMtqD,GACnB,GAAwB,IAApB0qD,EAAOvtO,SACT,IAAK,IAAIwtO,EAAK,EAAGA,EAAKR,IAAiBQ,EAAI,CACzC,IAAIC,EAAUV,EAAQS,GAClBC,EAAQC,MAAMH,IAChBZ,GAAcC,EAAkBa,EAAS11O,KAOnD60O,EAAiBv+S,SAAQ,SAAUvI,EAAOM,GACd,OAAtBA,EAAI6mS,eACN7mS,EAAI6O,UAAU7O,EAAI6mS,eAAennS,MAKvC,IAAI2mT,GAAsB,WACxB,SAASA,EAAoBt0M,EAAUkzM,EAAU7kT,EAAUyO,EAAW03D,EAAYsgO,EAAe/nS,GAG/FgC,KAAKixG,SAAWA,EAChBjxG,KAAKmkT,SAAWA,EAChBnkT,KAAKV,SAAWA,EAChBU,KAAK+N,UAAYA,EACjB/N,KAAKylE,WAAaA,EAClBzlE,KAAK+lS,cAAgBA,KAAiBh4R,EAAYg4R,EAAgB,KAClE/lS,KAAKwjT,cAAgB/9O,EAAW33B,SAAS01Q,cACzCxjT,KAAKhC,IAAMA,GAENgC,KAAKwjT,eAAiB/9O,EAAW/0D,MAAQ+0D,EAAW/0D,KAAKyjS,YAC5Dn0S,KAAKm0S,YAAc1uO,EAAW/0D,KAAKyjS,YAEnCn0S,KAAKm0S,YAAc,KA6JvB,OAzJAoR,EAAoBzqT,UAAUqhC,QAAU,SAAiB4qC,GACvD,GAAIA,EAAQ5qC,QAAQn8B,KAAKixG,UAAW,CAClC,GAAyB,OAArBjxG,KAAKm0S,YACP,OAAO,EAGT,IAAIA,EAAcn0S,KAAKm0S,YACnBsS,EAAe1/O,EAAQsuO,eAE3B,GAAIoR,GAAgBA,EAAa1R,mBAAoB,CAGnD,IAFA,IAAI2R,EAAUD,EAAa1R,mBAElB4R,EAAO,EAAGC,EAAQF,EAAQ9rT,OAAQ+rT,EAAOC,IAASD,EACzD,GAAID,EAAQC,GAAMxR,cAAgBhB,EAChC,OAAO,EAIX,OAAO,EAGT,OAAOptO,EAAQouO,cAAgBhB,EAGjC,OAAO,GAGToR,EAAoBzqT,UAAUqE,KAAO,SAAcklC,GACjD,IAAI8/Q,EAAWnkT,KAAKmkT,SAChBp2S,EAAY/N,KAAK+N,UACjBsgD,EAAW81P,EAAS0C,kBAExB,IAAKx4P,EAAU,CACbA,EAAW81P,EAAS0C,kBAAoB,MAAI9oC,uBAAuB6nC,IAEnE,IAAIpiT,EAAU,CACZ6rO,WAAW,EACXC,SAAUtvO,KAAKwjT,eAGjBn1P,EAAS86C,QAAQg7M,EAAU3gT,GAC3B6qD,EAASw3P,QAAU,GAKrB,GAFAx3P,EAASw3P,QAAQ3qT,KAAK8E,MAElBA,KAAKwjT,cAAe,CACtB,IAAI5gT,EAAUuhT,EAAShmL,kBAEvB,GAAIn+H,KAAKhC,IAAK,CACZ,IAAIivE,EAAQl/D,EAAU/N,KAAKV,UAO3B,IANK2tE,EAGHA,EAAM91D,OAAO,GAFb81D,EAAQl/D,EAAU/N,KAAKV,UAAY,GAK9BsD,GACD5C,KAAKm8B,QAAQv5B,IACfqqE,EAAM/xE,KAAK0H,EAAQ6lP,IAAM7lP,EAAQ6lP,GAAGhjL,WAAa7iE,EAAQ6lP,GAAGhjL,WAAW13D,UAAYnL,GAGrFA,EAAUA,EAAQi2O,mBAGO,OAAvB74O,KAAK+lS,eACP/lS,KAAK+N,UAAU/N,KAAK+lS,eAAeyf,SAGrC,KAAO5iT,GAAS,CACd,GAAI5C,KAAKm8B,QAAQv5B,GAAU,CACzB,IAAI2gD,EAAS3gD,EAAQ6lP,IAAM7lP,EAAQ6lP,GAAGhjL,WAAa7iE,EAAQ6lP,GAAGhjL,WAAW13D,UAAYnL,EACrF5C,KAAK+N,UAAU/N,KAAKV,UAAYikD,EAEL,OAAvBvjD,KAAK+lS,eACP/lS,KAAK+N,UAAU/N,KAAK+lS,eAAexiP,GAGrC,MAGF3gD,EAAUA,EAAQi2O,sBAM1B0sE,EAAoBzqT,UAAUqrT,SAAW,SAAkBp/O,GACzD,GAAI/mE,KAAKm8B,QAAQ4qC,GAAU,CACzB,IAAI+/O,EAAU//O,EAAQ0hL,IAAM1hL,EAAQ0hL,GAAGhjL,WAAasB,EAAQ0hL,GAAGhjL,WAAW13D,UAAYg5D,EAEtF,GAAI/mE,KAAKhC,IAAK,CACZ,IAAIivE,EAAQjtE,KAAK+N,UAAU/N,KAAKV,YAAcU,KAAK+N,UAAU/N,KAAKV,UAAY,IAC1EqK,EAAQsjE,EAAM57D,QAAQy1S,GAM1B,OAJe,IAAXn9S,GACFsjE,EAAM91D,OAAOxN,EAAO,IAGf,EAGT,OAAO,EAGT,OAAO,GAGT47S,EAAoBzqT,UAAU0rT,MAAQ,SAAez/O,GACnD,GAAI/mE,KAAKm8B,QAAQ4qC,GAAU,CACzB,IAAIggP,EAAUhgP,EAAQ0hL,IAAM1hL,EAAQ0hL,GAAGhjL,WAAasB,EAAQ0hL,GAAGhjL,WAAW13D,UAAYg5D,EAEtF,GAAI/mE,KAAKhC,IAAK,CACZ,IAAIivE,EAAQjtE,KAAK+N,UAAU/N,KAAKV,YAAcU,KAAK+N,UAAU/N,KAAKV,UAAY,IAE9E,GAAsB,MAAlBU,KAAKixG,SAEP,OADAhkC,EAAM/xE,KAAK6rT,IACJ,EAMT,IAHA,IAAIp9S,EAAQ,EACR+C,EAAOq6D,EAAQigP,uBAEZt6S,GACD1M,KAAKm8B,QAAQzvB,IACf/C,IAGF+C,EAAOA,EAAKs6S,uBAId,OADA/5O,EAAM91D,OAAOxN,EAAO,EAAGo9S,IAChB,EAGT/mT,KAAK+N,UAAU/N,KAAKV,UAAYynT,EAEL,OAAvB/mT,KAAK+lS,eACP/lS,KAAK+N,UAAU/N,KAAK+lS,eAAeghB,GAIvC,OAAO,GAGTxB,EAAoBzqT,UAAU4qE,OAAS,WACjC1lE,KAAKmkT,SAAS0C,oBAChB7mT,KAAKmkT,SAAS0C,kBAAkBz9M,aAChCppG,KAAKmkT,SAAS0C,kBAAoB,KAClC7mT,KAAK+N,UAAU/N,KAAKV,UAAY,OAI7BimT,EA7KiB,GAgL1B,SAASz1Q,GAAOk3B,EAAUiT,GACxB,OAAOv5E,MAAMC,QAAQs5E,GAAYjT,EAASqhL,WAAWpuK,GAAU,GAAQjT,EAASl3B,OAAOmqC,GAAU,GAG5F,IAAIgtO,GAAiB,CAC1Bx/P,OAAQ,SAAgBuf,EAAUiT,EAAUhzD,GAC1C,YAAoBrpB,IAAbq8E,EAAyBhzD,IAAaA,IAAW9jB,MAAK,WAC3D,OAAO2sC,GAAOk3B,EAAUiT,OAG5BovE,KAAM,SAAeriF,EAAUiT,EAAUhzD,GACvC,YAAoBrpB,IAAbq8E,EAAyBhzD,IAAajrB,EAAQgC,IAAI,CAAC8xC,GAAOk3B,EAAUiT,GAAWhzD,OAExFygC,MAAO,SAAesf,EAAUiT,EAAUhzD,GACxC,OAAOjrB,EAAQC,QAAQ+qE,EAAS4hE,WAAU,IAAOzlI,KAAK8jB,KAI1D,SAASmiH,GAAqBj2H,GAC5B,OAAIA,EAAQ+zS,gBAAwD,mBAA/B/zS,EAAQpF,UAAU6K,SAC9C5c,EAAQC,UAGVkX,EAAQpF,UAAU6K,SAASzF,EAAQqK,QAAUxhB,EAAQC,UAGvD,IAAIkrT,GAA8B,iBAAOlH,GAAYlN,GAAcxP,CAAOyI,EAAW,WAC1F,SAASmb,EAAkBtV,EAAY5qO,GAGrCjnE,KAAK6xS,WAAaA,EAClB7xS,KAAKinE,YAAcA,EAgKrB,OA7JAkgP,EAAkBrsT,UAAUovI,MAAQ,SAAe/2H,EAASzC,GAC1D,IAAIm4D,EAAeo+O,GAAe9zS,EAAQ21D,YAAcm+O,GAAev/P,MACnE0/P,EAAgBj0S,EAAQ6zD,SAASp3B,SAAS/vC,QAE9C,OAAOgpE,EAAa11D,EAAQ6zD,SAAUogP,GAAe,WACnD,OAAOprT,EAAQC,QAAQkX,EAAQ6zD,SAASl2D,IAAIJ,IAAOvN,MAAK,WAClDgQ,EAAQo1H,mBACVp1H,EAAQo1H,kBAAkB7iE,eAG7BviE,MAAK,WACFgQ,EAAQm0D,gCACVn0D,EAAQm0D,+BAA+B9M,WAK7C2sP,EAAkBrsT,UAAUusT,yBAA2B,SAAkCl0S,GACvF,IAAIu7Q,EAAU1uR,KAEd,OAAOA,KAAKkpE,iBAAiB/1D,GAAShQ,MAAK,SAAUsiE,GACnD,OAAItyD,EAAQq1D,qCACHr1D,EAAQq1D,qCAAqCS,6BAA6B9lE,MAAK,WAGpF,OAFAsiE,EAAWuD,SAAS71D,EAAQy0D,gBAAiBz0D,EAAQu0D,YAE9CgnN,EAAQxkJ,MAAM/2H,EAASsyD,EAAW/0D,SACxCvN,MAAK,WACN,OAAOsiE,MAIXA,EAAWuD,SAAS71D,EAAQy0D,gBAAiBz0D,EAAQu0D,YAE9CgnN,EAAQxkJ,MAAM/2H,EAASsyD,EAAW/0D,MAAMvN,MAAK,WAClD,OAAOsiE,UAKb0hP,EAAkBrsT,UAAUouE,iBAAmB,SAA0B/1D,GACvE,IAAI27Q,EAAU9uR,KAEV+V,OAAiB,EACjBhI,OAAY,EACZ85D,OAAoB,EAEpB5pE,OAAI,EAER,OAAO+B,KAAKq5J,gBAAgBlmJ,GAAShQ,KAAKimI,IAAsBjmI,MAAK,WACnE4S,EAAiB5C,EAAQ4C,eACzBhI,EAAYoF,EAAQpF,UACpB85D,EAAoB10D,EAAQ00D,kBAC5B5pE,EAAI4pE,EAAkBn8B,SAEtB,IAAI08B,EAAe0mN,EAAQ7nN,YAAYoB,gBAAgBl1D,EAAQzC,MAAQ3C,GAMvE,OAJIoF,EAAQk1H,eACVjgE,EAAaE,eAAen1D,EAAQk1H,cAAc4pK,SAG7Ch0S,EAAEy3D,KAAK3/C,EAAgB8xD,EAAkBjpE,MAAO,KAAMwpE,GAAc,MAC1EjlE,MAAK,SAAUolE,GAChB,OAAOtqE,EAAEgB,OAAO8W,EAAgBm6R,EAAoBxnO,QAAQv1D,EAAQ2pH,KAAM/uH,EAAWw6D,QAIzF4+O,EAAkBrsT,UAAUu+J,gBAAkB,SAAyBlmJ,GACrE,IAAI4C,EAAiB5C,EAAQ4C,eAAiB5C,EAAQ4C,gBAAkB5C,EAAQ9E,UAAU6B,cAE1F,GAAiC,iBAAtBiD,EAAQpF,UAGjB,OAFAoF,EAAQpF,UAAYoF,EAAQk1H,cAAgBl1H,EAAQk1H,cAAc0wK,eAAe5lS,EAAQpF,WAAaoF,EAAQpF,UAEvG/N,KAAK6xS,WAAWmP,wBAAwB7tS,EAAQpF,WAAW5K,MAAK,SAAU0kE,GAS/E,OARA9xD,EAAe6wH,aAAa/+D,EAAkBjpE,OAE1CuU,EAAQ2pH,MACV/mH,EAAe4tH,iBAAiB,MAAIn8D,QAASr0D,EAAQ2pH,MAGvD3pH,EAAQpF,UAAYgI,EAAehI,UAAYgI,EAAevX,IAAIqpE,EAAkBjpE,OACpFuU,EAAQ00D,kBAAoBA,EACrB10D,KAIX,IAAIg0H,EAAOh0H,EAAQpF,UAAU/M,YACzBykG,EAAuC,mBAAtBtyF,EAAQpF,UACzB03F,IACF0hC,EAAOh0H,EAAQpF,UACfgI,EAAe6wH,aAAaO,IAE9B,IAAIlpI,EAAI,IAASsuC,eAAe,IAASzwB,SAAU27R,GAAsBtwK,GAYzE,OAVAlpI,EAAE40S,YAAc50S,EAAE40S,aAAe,kBAEjC50S,EAAEsiF,WAAWklB,EAAU1vF,EAAiB5C,EAAQ9E,WAAa0H,EAAgBoxH,GAE7Eh0H,EAAQ00D,kBAAoB,CAAEn8B,SAAUztC,EAAGW,MAAOuoI,GAE9Ch0H,EAAQ2pH,MACV/mH,EAAe4tH,iBAAiB,MAAIn8D,QAASr0D,EAAQ2pH,MAEvD/mH,EAAehI,UAAYoF,EAAQpF,UAAY03F,EAAU1vF,EAAevX,IAAI2oI,GAAQh0H,EAAQpF,UACrF/R,EAAQC,QAAQkX,IAGzBg0S,EAAkBrsT,UAAUwzC,QAAU,SAAiBn7B,GACrD,IAAI+7Q,EAAUlvR,KAEdmT,EAAQ4C,eAAiB5C,EAAQ4C,gBAAkB5C,EAAQ9E,UAAU6B,cACrEiD,EAAQzC,KAAO1Q,KAAKinE,YAAYoB,gBAAgBl1D,EAAQzC,MAExD,IAAI42S,EAAcn0S,EAAQ4C,eAAevX,IAAIgwS,GACzChmO,EAAuC8+O,EAAY7+O,aAQvD,OANID,EACFr1D,EAAQq1D,qCAAuCA,EAE/Cr1D,EAAQm0D,+BAAiCggP,EAAY//O,SAGnDp0D,EAAQpF,UACH/N,KAAKqnT,yBAAyBl0S,GAC5BA,EAAQzC,MACbyC,EAAQk1H,eACVl1H,EAAQzC,KAAK43D,eAAen1D,EAAQk1H,cAAc4pK,SAG7C9+R,EAAQzC,KAAKghS,gBAAgB1xS,KAAK6xS,WAAY,IAAIhC,GAA0B1sS,MAAK,SAAUolE,GAChG,IAAIx4D,EAASw4D,EAAYtpE,OAAOkU,EAAQ4C,gBAGxC,OAFAhG,EAAO5Q,KAAKgU,EAAQw0D,eAAgBx0D,EAAQy0D,iBAExCz0D,EAAQq1D,qCACHr1D,EAAQq1D,qCAAqCS,6BAA6B9lE,MAAK,WACpF,OAAO+rR,EAAQhlJ,MAAM/2H,EAASpD,MAC7B5M,MAAK,WACN,OAAO4M,KAIJm/Q,EAAQhlJ,MAAM/2H,EAASpD,GAAQ5M,MAAK,WACzC,OAAO4M,SAGFoD,EAAQ6zD,UACjB7zD,EAAQ6zD,SAAS4hE,YAEbz1H,EAAQm0D,gCACVn0D,EAAQm0D,+BAA+B9M,OAGlCx+D,EAAQC,QAAQ,OAGlBD,EAAQC,QAAQ,OAGlBkrT,EArKmF,KAsKpFnb,EAEGub,GAAwB,WACjC,SAASA,KAcT,OAVAA,EAAsBzsT,UAAUylF,WAAa,SAAoBlyE,EAAW7Q,KAE5E+pT,EAAsBzsT,UAAUqrD,SAAW,SAAkBg4M,EAAUzgQ,KAEvE6pT,EAAsBzsT,UAAU46D,KAAO,SAAcrnD,EAAW7Q,GAC9D,IAAIgF,EAAS,IAAIhF,EACE6Q,EAAU7P,IAAI,gBACpB67R,sBAAsB73R,IAG9B+kT,EAf0B,GAkB5B,SAASzrS,GAAS0rS,GACvB,OAAO,SAAUhqT,GAC4B,iBAArBgqT,GAAiC3sT,OAAOoxC,eAAeu7Q,KAAsB3sT,OAAOC,UAExG0C,EAAOg6S,UAAYgQ,EAEnB,IAASp7Q,OAAO,IAAStwB,SAAU0rS,EAAkBhqT,IAKpD,SAASswC,GAAS+F,GACvB,OAAO,SAAUr2C,GACf,GAAIq2C,aAAoB4jQ,GACtB,IAASrrQ,OAAO,IAAStwB,SAAU+3B,EAAUr2C,OACxC,CACL,IAAIiB,EAAI,IAAS8tC,eAAe,IAASzwB,SAAU27R,GAAsBj6S,GACzE3C,OAAOgI,OAAOpE,EAAGo1C,KAKhB,SAAS4zQ,GAAc/pT,GAC5B,OAAO,SAAUF,GACP,IAAS+uC,eAAe,IAASzwB,SAAU27R,GAAsBj6S,GACvEq1S,YAAc8D,GAAqBj5S,EAAM,mBAIxC,SAASynP,GAAgBznP,EAAMm6S,EAAoBzyR,GACxD,OAAO,SAAU5nB,GACf,IAAIiB,EAAI,IAAS8tC,eAAe,IAASzwB,SAAU27R,GAAsBj6S,GACzEiB,EAAEs9R,cAAgB4a,GAAqBj5S,EAAM,oBAC7Ce,EAAEm5S,4BAA8BC,EAChCp5S,EAAE2mB,QAAUA,GAIT,SAASwgO,GAAmBpoP,GACjC,IAAIymI,EAAO,SAAcplI,GACf,IAAS0tC,eAAe,IAASzwB,SAAU27R,GAAsB54S,GACvE84S,cAAe,GAGnB,OAAOn6S,EAASymI,EAAKzmI,GAAUymI,EAG1B,SAASylH,GAASg+D,EAAsBxoT,EAAKkC,GAClD,IAAI6iI,EAAO,SAAczmI,EAAQu9P,EAAM4sD,GACrC,IAAItC,EAAetqD,EAAOv9P,EAAOwD,YAAcxD,EAC3CiB,EAAI,IAAS8tC,eAAe,IAASzwB,SAAU27R,GAAsB4N,GASzE,OANItqD,KACF2sD,EAAuBA,GAAwB,IAC1BhqT,KAAOq9P,GAGvB,IAAIm9C,GAAiBwP,GAChBtP,aAAaiN,EAAc5mT,EAAGkpT,IAG5C,IAAKD,EACH,OAAOzjL,EAGT,GAAI/kI,EAAK,CACP,IAAIoqF,EAAUo+N,EAEd,OADAA,EAAuB,KAChBzjL,EAAK36C,EAASpqF,EAAKkC,GAG5B,OAAO6iI,EAGF,SAAS2jL,GAAepqT,GAC7B,IAAIymI,EAAO,SAAcplI,GACf,IAAS0tC,eAAe,IAASzwB,SAAU27R,GAAsB54S,GACvE6kT,mBAAoB,GAGxB,OAAOlmT,EAASymI,EAAKzmI,GAAUymI,EAGjC,IAAI4jL,GAA0B,CAAE/oT,KAAM,QAE/B,SAASgpT,GAAaC,GAC3B,IAAIvkT,EAAqC,mBAApBukT,GAAmCA,EAA4CA,EAA1BF,GAEtE5jL,EAAO,SAAcplI,GACvB,IAAIJ,EAAI,IAAS8tC,eAAe,IAASzwB,SAAU27R,GAAsB54S,GACzEJ,EAAEqxS,iBAAkB,EACpBrxS,EAAE6kT,iBAAmB9/S,GAGvB,MAAkC,mBAApBukT,EAAiC9jL,EAAK8jL,GAAmB9jL,EAGlE,SAAS86K,GAAkB/tP,GAChC,OAAO,SAAUnyD,GACP,IAAS0tC,eAAe,IAASzwB,SAAU27R,GAAsB54S,GACvEkgT,kBAAoB,SAAUL,EAAUxuP,EAAWhV,EAAM+tD,EAAYqoM,GACrE,IACEtgP,EAAU0tP,EAAUxuP,EAAWhV,EAAM+tD,EAAYqoM,GACjD,MAAOx0S,GACP,YAAqB,cAAcA,MAAMA,MAMjD,SAASkrT,KACP,OAAO,EAGF,SAASzE,GAAevyP,GAC7B,OAAO,SAAUnyD,GACP,IAAS0tC,eAAe,IAASzwB,SAAU27R,GAAsB54S,GACvE0kT,eAAiBvyP,EAAY,SAAU0tP,EAAUxuP,EAAWhV,EAAM7zC,GAClE,IACE,OAAO2pD,EAAU0tP,EAAUxuP,EAAWhV,EAAM7zC,GAC5C,MAAOvK,GAEP,OADA,YAAqB,cAAcA,MAAMA,IAClC,IAEPkrT,IAID,SAAS1X,GAAc9yS,GAC5B,IAAIymI,EAAO,SAAcplI,GACf,IAAS0tC,eAAe,IAASzwB,SAAU27R,GAAsB54S,GACvEyxS,eAAgB,GAGpB,OAAO9yS,EAASymI,EAAKzmI,GAAUymI,EAG1B,SAASgkL,GAAgBjjT,GAC9B,OAAO,SAAUxH,GACf,IAAS4uC,OAAO2mQ,GAAYE,wBAAyBjuS,EAAUxH,IAI5D,SAAS0qT,GAAQvmT,GACtB,OAAOsmT,GAAgB,IAAItW,EAAqBhwS,IAG3C,SAASwmT,GAAW5V,EAAQ/tK,EAAc4tK,GAC/C,OAAO6V,GAAgB,IAAI3V,GAAmBC,EAAQ/tK,EAAc4tK,IAG/D,SAASgW,GAAOC,EAAsBjW,GAC3C,IAAI50S,OAAS,EACTgnI,OAAe,EACiB,mBAAzB6jL,EACT7qT,EAAS6qT,GAET7jL,EAAe6jL,EACf7qT,OAASI,GAGX,IAAIqmI,EAAO,SAAcplI,GACvB,IAASutC,OAAO2mQ,GAAYE,wBAAyB,IAAId,GAAe3tK,EAAc4tK,GAAoBvzS,IAG5G,OAAOrB,EAASymI,EAAKzmI,GAAUymI,EAG1B,SAASvzH,GAAK43S,GACnB,OAAO,SAAU9qT,GACfA,EAAOw1S,MAAQsV,GAIZ,SAASC,GAAc/qT,GAC5B,IAAIymI,EAAO,SAAcplI,GACvB,IAASutC,OAAO,IAAStwB,SAAU,IAAIyrS,GAAyB1oT,IAGlE,OAAOrB,EAASymI,EAAKzmI,GAAUymI,EAG1B,SAASoE,KACd,IAAK,IAAIn7F,EAAOprC,UAAUlH,OAAQs1D,EAAYxvD,MAAMwsC,GAAOs7Q,EAAQ,EAAGA,EAAQt7Q,EAAMs7Q,IAClFt4P,EAAUs4P,GAAS1mT,UAAU0mT,GAG/B,OAAO,SAAUhrT,GACf,IAAS4uC,OAAO6zQ,GAAWW,4BAA6B1wP,EAAW1yD,IAIhE,IAAIirT,GAA6B,iBAAO,YAAWjJ,GAAgBjC,GAAc4J,GAAoBuB,CAAOzc,EAAW,WAC5H,SAASwc,EAAiBp6S,EAAW6xS,EAAgBxN,EAAcvrO,GAGjEnnE,KAAK2oT,WAAat6S,EAClBrO,KAAK4oT,gBAAkB1I,EACvBlgT,KAAK6oT,cAAgBnW,EACrB1yS,KAAK8oT,mBAAqB3hP,EAC1B94D,EAAUs1H,iBAAiB+pK,EAAUA,EAAS7lP,SAAW,IAAI6lP,GAmC/D,OAhCA+a,EAAiB3tT,UAAUiuT,kBAAoB,SAA2B/O,GACxEh6S,KAAK2oT,WAAW5hL,WAAW2mK,GAC3B1tS,KAAK2oT,WAAWhlL,iBAAiB+pK,EAAUA,EAAS7lP,SAAWmyP,IAGjEyO,EAAiB3tT,UAAUwzC,QAAU,SAAiBn7B,GACpD,OAAOnT,KAAK8oT,mBAAmBx6Q,QAAQn7B,IAGzCs1S,EAAiB3tT,UAAUq1S,QAAU,SAAiB9oS,GAChDA,aAAuB,MAAImgE,UAC7BngE,EAAc,CAAE0/D,QAAS1/D,IAG3B,IAAI2hT,EAAuB,CAAEC,eAAgB,IACzC/4P,EAAY7oD,EAAY6oD,WAAalwD,KAAK2oT,WAAWnqT,IAAIinP,IAE7DzlP,KAAK6oT,cAAcnL,aAAar2S,EAAY0/D,QAAS7W,EAAW84P,EAAsB3hT,EAAY0/D,QAAQzF,WAAY,QAAQ,GAE9H,IAAI/4B,EAAU,IAAIk0Q,GAAYp1S,EAAY0/D,QAASiiP,EAAsB94P,GACrE7hD,EAAYhH,EAAYgH,WAAarO,KAAK2oT,WAAWz4S,cACrDQ,EAAO63B,EAAQtpC,OAAOoP,EAAW6hS,EAAoBC,WAQzD,OANAz/R,EAAKvR,KAAKkI,EAAYsgE,gBAAkB,GAAItgE,EAAYugE,iBAExDl3D,EAAK0wD,WAAa1wD,EAAK2pG,UAAY3pG,EAAKzO,SACxCyO,EAAKzO,SAAW,MAAI8kH,yBACpBr2G,EAAK44C,WAEE54C,GAGF+3S,EA3CqH,KA4CtHxc,G,iDC3kKR,sD,gCCIA,sD,m1DCEA,aAGE,WACU7uR,GAAA,KAAAA,SAERpd,KAAKC,OAAS,aAAWC,UAAU,kB,MAmBvC,OAfe,YAAAoc,QAAb,SAAqBC,G,qBAAavgB,GAAO,W,kDAChC,SAAMgE,KAAKod,OAAOd,QAAQ,cAAeC,GAC7CpZ,MAAK,SAACsY,GACL,OAAsBA,M,OAF1B,MAAO,CAAP,EAAO,kBAMI,YAAAytS,WAAb,SAAwB3sS,G,qBAAavgB,GAAO,W,kDACnC,SAAMgE,KAAKod,OAAO5e,IAAI,wBAAwB+d,GAClDpZ,MAAK,SAACsY,GACL,OAAeA,M,OAFnB,MAAO,CAAP,EAAO,kBAlBE0tS,EAAkB,GAD9B,uB,uBAKgC,mB,OAAA,IAAb,UAAa,YAJpBA,GAAb,K,o2DCAA,aAGE,WACS/rS,GAAA,KAAAA,SAEPpd,KAAKC,OAAS,aAAWC,UAAU,gB,MAsCvC,OApCe,YAAA4T,KAAb,SAAkBwJ,G,qBAAoCthB,GAAO,W,kDACpD,SAAMgE,KAAKod,OAAOX,KAAK,aAAca,GACzCna,MAAK,SAACsY,GACL,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAKI,YAAAgC,YAAb,SAAyBlB,G,qBAAavgB,GAAO,W,kDACpC,SAAMgE,KAAKod,OAAOX,KAAK,sBAAsBF,GACjDpZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAAlE,OAAb,SAAoBue,G,qBAAexhB,GAAO,W,kDACjC,SAAMgE,KAAKod,OAAOne,OAAO,QAASue,GACtCra,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAAmtB,gBAAb,SAA8B3qB,EAAkBmrS,G,qBAAeptT,GAAO,W,kDAC7D,SAAMgE,KAAKod,OAAOX,KAAK,4BAA4BwB,EAAYmrS,GACnEjmT,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAAiB,OAAb,SAAoBc,G,qBAAexhB,GAAO,W,kDACjC,SAAMgE,KAAKod,OAAOT,WAAW,QAASa,EAAMjB,GAAI,KAAMiB,GAC1Dra,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAGI,YAAAmZ,QAAb,SAAqBC,G,qBAAavgB,GAAO,W,kDAChC,SAAMgE,KAAKod,OAAOd,QAAQ,QAASC,GACvCpZ,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAtCE4tS,EAAY,GADxB,uB,uBAK+B,mB,OAAA,IAAb,UAAa,YAJnBA,GAAb,K,m2DCCA,aAGE,WACSjsS,GAAA,KAAAA,SACPpd,KAAKC,OAAS,aAAWC,UAAU,sB,MAiFvC,OA9Ee,YAAAopT,aAAb,SAA0B9kK,EAAqBlnI,G,qBAAoCthB,GAAO,W,kDACjF,SAAMgE,KAAKod,OAAOX,KAAK,sCAAsC+nI,EAAelnI,GAChFna,MAAK,SAACsY,GACL,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAMI,YAAA8tS,eAAb,SAA4B/kK,EAAqBlnI,G,qBAAoCthB,GAAO,W,kDACnF,SAAMgE,KAAKod,OAAOX,KAAK,yCAAyC+nI,EAAelnI,GACnFna,MAAK,SAACsY,GACL,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAMI,YAAA+tS,gBAAb,SAA6BhlK,EAAqBlnI,G,qBAAoCthB,GAAO,W,kDACpF,SAAMgE,KAAKod,OAAOX,KAAK,0CAA0C+nI,EAAelnI,GACpFna,MAAK,SAACsY,GACL,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAaI,YAAAguS,eAAb,SAA4BjsS,G,qBAAqBxhB,GAAO,W,kDAC/C,SAAMgE,KAAKod,OAAOne,OAAO,gCAAiCue,GAC9Dra,MAAK,SAACsY,GACL,OAAoBA,M,OAFxB,MAAO,CAAP,EAAO,kBAMI,YAAAiuS,iBAAb,SAA8BlsS,G,qBAAqBxhB,GAAO,W,kDACjD,SAAMgE,KAAKod,OAAOne,OAAO,mCAAoCue,GACjEra,MAAK,SAACsY,GACL,OAAoBA,M,OAFxB,MAAO,CAAP,EAAO,kBAMI,YAAAkuS,kBAAb,SAA+BnsS,G,qBAAqBxhB,GAAO,W,kDAClD,SAAMgE,KAAKod,OAAOne,OAAO,oCAAqCue,GAClEra,MAAK,SAACsY,GACL,OAAoBA,M,OAFxB,MAAO,CAAP,EAAO,kBAMI,YAAAmuS,eAAb,SAA4BpsS,G,qBAAqBxhB,GAAO,W,kDAC/C,SAAMgE,KAAKod,OAAOT,WAAW,gCAAiCa,EAAMjB,GAAI,KAAMiB,GAClFra,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAA0mT,kBAAb,SAA+BrsS,G,qBAAqBxhB,GAAO,W,kDAClD,SAAMgE,KAAKod,OAAOT,WAAW,oCAAqCa,EAAMjB,GAAI,KAAMiB,GACtFra,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAA2mT,iBAAb,SAA8BtsS,G,qBAAqBxhB,GAAO,W,kDACjD,SAAMgE,KAAKod,OAAOT,WAAW,mCAAoCa,EAAMjB,GAAI,KAAMiB,GACrFra,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAA4mT,eAAb,SAA4BxtS,G,qBAAavgB,GAAO,W,kDACvC,SAAMgE,KAAKod,OAAOL,WAAW,gCAAiCR,GAClEpZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAA6mT,iBAAb,SAA8BztS,G,qBAAavgB,GAAO,W,kDACzC,SAAMgE,KAAKod,OAAOL,WAAW,mCAAoCR,GACrEpZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAA8mT,kBAAb,SAA+B1tS,G,qBAAavgB,GAAO,W,kDAC1C,SAAMgE,KAAKod,OAAOL,WAAW,oCAAqCR,GACtEpZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAnFE+mT,EAAkB,GAD9B,uB,uBAKsC,mB,OAAA,IAApB,UAAoB,YAJ1BA,GAAb,K,o2DCDA,aAGE,WAAmB9sS,GAAA,KAAAA,SACjBpd,KAAKC,OAAS,aAAWC,UAAU,wB,MA6BvC,OA1Be,YAAAupD,yBAAb,W,qBAAyCztD,GAAO,W,kDACvC,SAAMgE,KAAKod,OAAO5e,IAAI,iBAC1B2E,MAAK,SAACsY,GACL,OAAsBA,M,OAF1B,MAAO,CAAP,EAAO,kBAMI,YAAA0uS,mBAAb,W,qBAAmCnuT,GAAO,W,kDACjC,SAAMgE,KAAKod,OAAO5e,IAAI,0BAC1B2E,MAAK,SAACsY,GACL,OAAqBA,M,OAFzB,MAAO,CAAP,EAAO,kBAMI,YAAA2uS,sBAAb,W,qBAAsCpuT,GAAO,W,kDACpC,SAAMgE,KAAKod,OAAO5e,IAAI,6BAC1B2E,MAAK,SAACsY,GACL,OAAqBA,M,OAFzB,MAAO,CAAP,EAAO,kBAMI,YAAAiB,OAAb,SAAoBc,G,qBAAuBxhB,GAAO,W,kDACzC,SAAMgE,KAAKod,OAAOV,OAAO,gBAAiB,KAAMc,GACpDra,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBA7BEknT,EAAoB,GADhC,a,uBAIyC,mB,OAAA,IAAb,UAAa,YAH7BA,GAAb,K,m2DCAA,aAGE,WACSjtS,GAAA,KAAAA,SACPpd,KAAKC,OAAS,aAAWC,UAAU,0B,MA0BvC,OAvBe,YAAA1B,IAAb,SAAiB+d,G,qBAAavgB,GAAO,W,kDAC5B,SAAMgE,KAAKod,OAAO5e,IAAI,yBAAyB+d,GACnDpZ,MAAK,SAACsY,GACL,OAAwBA,M,OAF5B,MAAO,CAAP,EAAO,kBAaI,YAAAiB,OAAb,SAAoBc,G,qBAAyBxhB,GAAO,W,kDAC3C,SAAMgE,KAAKod,OAAOT,WAAW,wBAAyBa,EAAMjB,GAAI,KAAMiB,GAC1Era,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAvBEmnT,EAA4B,GADxC,a,uBAKsC,mB,OAAA,IAApB,UAAoB,YAJ1BA,GAAb,K,o2DCAA,aAGE,WACUltS,GAAA,KAAAA,SAERpd,KAAKC,OAAS,aAAWC,UAAU,kC,MAuCvC,OApCe,YAAA4T,KAAb,SAAkBwJ,G,qBAAoCthB,GAAO,W,kDACpD,SAAMgE,KAAKod,OAAOX,KAAK,+BAAgCa,GAC3Dna,MAAK,SAACsY,GACL,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAMI,YAAA8B,OAAb,W,qBAAuBvhB,GAAO,W,kDACrB,SAAMgE,KAAKod,OAAO5e,IAAI,2BAC1B2E,MAAK,SAACsY,GACL,OAAkCA,M,OAFtC,MAAO,CAAP,EAAO,kBAMI,YAAA8uS,aAAb,SAA0BC,G,qBAAoBxuT,GAAO,W,kDAC5C,SAAMgE,KAAKod,OAAO5e,IAAI,mCAAmCgsT,GAC7DrnT,MAAK,SAACsY,GACL,OAAkCA,M,OAFtC,MAAO,CAAP,EAAO,kBAMI,YAAAiB,OAAb,SAAoBc,G,qBAAiCxhB,GAAO,W,kDACnD,SAAMgE,KAAKod,OAAOT,WAAW,0BAA2Ba,EAAMjB,GAAI,KAAMiB,GAC5Era,MAAK,SAAAsY,GACJ,OAAgCA,M,OAFpC,MAAO,CAAP,EAAO,kBAMI,YAAAgC,YAAb,SAAyBD,G,qBAAiCxhB,GAAO,W,kDAExD,SAAMgE,KAAKod,OAAOX,KAAK,wCAAwCe,EAAMjB,GAAMiB,GAC/Era,MAAK,SAAAsY,GACJ,OAAgCA,M,OAFpC,MAAO,CAAP,EAAO,kBAvCEgvS,EAA8B,GAD1C,uB,uBAKgC,mB,OAAA,IAAb,UAAa,YAJpBA,GAAb,K,m2DCCA,aAIE,WACSrtS,GAAA,KAAAA,SAEPpd,KAAKC,OAAS,aAAWC,UAAU,kB,MAuCvC,OArCe,YAAA4T,KAAb,SAAkBwJ,G,qBAAoCthB,GAAO,W,kDACpD,SAAMgE,KAAKod,OAAOX,KAAK,eAAgBa,GAC3Cna,MAAK,SAACsY,GACL,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAMI,YAAA8B,OAAb,W,qBAAuBvhB,GAAO,W,kDACrB,SAAMgE,KAAKod,OAAO5e,IAAI,WAC1B2E,MAAK,SAACsY,GACL,OAAkBA,M,OAFtB,MAAO,CAAP,EAAO,kBAMI,YAAAa,QAAb,SAAqBC,G,qBAAavgB,GAAO,W,kDAChC,SAAMgE,KAAKod,OAAOd,QAAQ,UAAWC,GACzCpZ,MAAK,SAACsY,GACL,OAAgBA,M,OAFpB,MAAO,CAAP,EAAO,kBAMI,YAAAxc,OAAb,SAAoBue,G,qBAAiBxhB,GAAO,W,kDACnC,SAAMgE,KAAKod,OAAOne,OAAO,UAAWue,GACxCra,MAAK,SAACsY,GACL,OAAgBA,M,OAFpB,MAAO,CAAP,EAAO,kBAMI,YAAAiB,OAAb,SAAoBc,G,qBAAiBxhB,GAAO,W,kDACnC,SAAMgE,KAAKod,OAAOT,WAAW,UAAWa,EAAMjB,GAAI,KAAMiB,GAC5Dra,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAA2Z,OAAb,SAAoBP,EAAYmuS,G,qBAAmC1uT,GAAO,W,kDACjE,SAAMgE,KAAKod,OAAOL,WAAW,UAAWR,EAAI,CAAEmuS,yBAA0BA,IAC5EvnT,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBA3CEwnT,EAAc,GAD1B,uB,uBAMsC,mB,OAAA,IAApB,UAAoB,YAL1BA,GAAb,K,22DCGA,aAGE,WACSvtS,GAAA,KAAAA,SAEPpd,KAAKC,OAAS,aAAWC,UAAU,qB,MA0FvC,OAvFe,YAAA4T,KAAb,SAAkBwJ,G,qBAAoCthB,GAAO,W,kDACpD,SAAMgE,KAAKod,OAAOX,KAAK,kBAAmBa,GAC9Cna,MAAK,SAACsY,GACL,OAA4BA,M,OAFhC,MAAO,CAAP,EAAO,kBAMI,YAAA8B,OAAb,W,qBAAuBvhB,GAAO,W,kDACrB,SAAMgE,KAAKod,OAAO5e,IAAI,cAC1B2E,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAAa,QAAb,SAAqBC,G,qBAAavgB,GAAO,W,kDAChC,SAAMgE,KAAKod,OAAOd,QAAQ,aAAcC,GAC5CpZ,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAAxc,OAAb,SAAoBue,G,qBAAcxhB,GAAO,W,kDAChC,SAAMgE,KAAKod,OAAOne,OAAO,aAAcue,GAC3Cra,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAAm+J,QAAb,SAAqBp8J,G,qBAAcxhB,GAAO,W,kDACjC,SAAMgE,KAAKod,OAAOne,OAAO,qBAAsBue,GACnDra,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAAmvS,kBAAb,SAA+BptS,G,qBAAcxhB,GAAO,W,kDAC3C,SAAMgE,KAAKod,OAAOV,OAAO,0BAA0Bc,EAAMjB,GAAM,KAAMiB,GAC3Era,MAAK,SAACsY,GACL,OAAOA,M,OAFT,MAAO,CAAP,EAAO,kBAMI,YAAAiB,OAAb,SAAoBc,G,qBAAcxhB,GAAO,W,kDAChC,SAAMgE,KAAKod,OAAOT,WAAW,aAAca,EAAMjB,GAAI,KAAMiB,GAC/Dra,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAAsa,YAAb,SAAyBlB,G,qBAAavgB,GAAO,W,kDACpC,SAAMgE,KAAKod,OAAOX,KAAK,2BAA2BF,GACtDpZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAAsmC,wBAAb,SAAqCltB,G,qBAAavgB,GAAO,W,kDAChD,SAAMgE,KAAKod,OAAOX,KAAK,wCAAwCF,GACnEpZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAA2Z,OAAb,SAAoBP,G,qBAAavgB,GAAO,W,kDAC/B,SAAMgE,KAAKod,OAAOL,WAAW,aAAcR,GAC/CpZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAGI,YAAA0nT,cAAb,SAA2BrtS,EAAajB,G,qBAAavgB,GAAO,W,kDACnD,SAAMgE,KAAKod,OAAOX,KAAK,2BAA2BF,EAAMiB,GAC5Dra,MAAK,SAACsY,GACL,OAAOA,M,OAFX,MAAO,CAAP,EAAO,kBAMI,YAAA2zO,eAAb,W,qBAA+BpzP,GAAO,W,kDAC7B,SAAMgE,KAAKod,OAAOX,KAAK,2BAC3BtZ,MAAK,WAAM,gB,OADd,MAAO,CAAP,EAAO,kBAII,YAAAksP,gBAAb,W,qBAAgCrzP,GAAO,W,kDAC9B,SAAMgE,KAAKod,OAAO5e,IAAI,4BAC1B2E,MAAK,SAACsY,GACL,OAAQA,GAAYA,EAASzR,QAAW,IAAiBslP,S,OAF7D,MAAO,CAAP,EAAO,kBAMI,YAAAC,qBAAb,W,qBAAqCvzP,GAAO,W,kDACnC,SAAMgE,KAAKod,OAAO5e,IAAI,8BAC1B2E,MAAK,SAACsY,GACL,OAAQA,GAAYA,EAAShT,KAAQ,O,OAFzC,MAAO,CAAP,EAAO,kBA1FEqiT,EAAiB,GAD7B,a,uBAKsC,mB,OAAA,IAApB,UAAoB,YAJ1BA,GAAb,K,yiECWA,aAcE,WACU/qT,EACA66D,EACAxgD,EACAkqD,EACAymP,EACAp9J,EACA7K,EACAzoI,GAPA,KAAAta,OACA,KAAA66D,QACA,KAAAxgD,iBACA,KAAAkqD,kBACA,KAAAymP,qBACA,KAAAp9J,gBACA,KAAA7K,eACA,KAAAzoI,KAZF,KAAAQ,KAAa,KAEb,KAAAk6I,cAA8B,GAapC/0J,KAAKC,OAAS,aAAWC,UAAU,OAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MAExB7Q,KAAK+0J,cAAc75J,KAAK8E,KAAKqa,GAAGtF,UAAU,4BAA6B/U,KAAKgtP,QAAQ7tP,KAAKa,Q,sBA6J7F,OA1Je,YAAAspD,SAAb,W,qBAAyBttD,GAAO,W,qEACxBorK,EAAe,CAAC,qBAChB4jJ,EAAerrT,OAAO+7C,SAASwmG,SAASn7I,QAAQ,MAAO,IAAIukB,MAAM,KAAK,GAEvE87I,EAAapwJ,SAASg0S,GAAvB,OACF,EAAAhrT,KAAY,GAAMA,KAAKoa,eAAeQ,Y,cAAtC,EAAKC,KAAO,SACP7a,KAAK6a,KAAN,MACF,GAAM7a,KAAK2tJ,cAAcl7E,S,OAAzB,S,oCAGmB,sBAAjBu4O,IACIC,EAAY,IAAIC,gBAAgBvrT,OAAO+7C,SAAS7R,QACxCohR,EAAUzsT,IAAI,UAG1BwB,KAAK8iJ,aAAaviJ,QAAQ,4C,mCAMpB,YAAA4qT,YAAd,W,qBAA6BnvT,GAAO,W,yDAC9BgE,KAAK6a,KACP,GAAM7a,KAAKorT,mBADT,M,OACF,S,mCAIU,YAAAp+D,QAAd,W,qBAAyBhxP,GAAO,W,kCAC9B,EAAE,wBAAwBwoF,YAAY,QAEjC,EAAE,wBAAwB5pF,SAC7B,EAAE,iBAAiB4pF,YAAY,QAC/B,EAAE,mBAAmBA,YAAY,QACjC,EAAE,+BAA+BA,YAAY,kD,WAInC,YAAA4mO,gBAAd,W,qBAAiCpvT,GAAO,W,0DAGpB,O,sBAAA,GAAMgE,KAAKoa,eAAe0zI,c,OAG1C,OAHMvkG,EAAU,SAChBvpD,KAAKskE,gBAAgB0zF,qBAAqBzuG,EAAQib,aAClDxkE,KAAKskE,gBAAgBi0F,uBAAuB,KAC5C,GAAMv4J,KAAK46D,MAAM66F,sBAAsBlsG,EAAQO,a,OAE/C,OAFA,SAEA,GAAM9pD,KAAKqrT,iB,cAAX,SAEI9hQ,EAAQO,WAAW1D,QAErB,GAAMpmD,KAAKD,KAAK2/Q,UAAUn2N,EAAQO,WAAW1D,UAF3C,M,OAEF,SAEApmD,KAAKsrT,qB,sDAIPtrT,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAuuT,cAAd,W,qBAA+BrvT,GAAO,W,0DAEhB,O,sBAAA,GAAMgE,KAAK+qT,mBAAmBxtS,U,OAChD,OADM43I,EAAY,SAClB,GAAMn1J,KAAK46D,MAAMs6F,kBAAkBC,I,cAAnC,S,+BAGAn1J,KAAK8iJ,aAAahmJ,MAAM,G,+BAIrB,YAAAwuT,mBAAP,WAEE,GAAItrT,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAI3B,OAFqB11J,KAAK6Q,MAAM6kJ,cAActvG,QAAQ96B,MAAM,KAAK,IAG/D,IAAK,KAEH,IAAUmvH,SAAS,QASd,YAAAxkI,gBAAb,SAA6Bu8D,EAA0C1sE,G,qBAAiB9J,GAAO,W,4CAEzF2D,OAAO+7C,SAASwmG,SAASlrI,SAAS,QAC9Bu0S,EAAY5rT,OAAO+7C,SAASwmG,SAASn7I,QAAQ,OAAQ,KACrDqvM,EAASm1G,EAAY5rT,OAAO+7C,SAAS7R,OAASlqC,OAAO+7C,SAASoF,KACpEnhD,OAAO8H,QAAQ+jT,aAAa,GAAI,GAAIp1G,IAItC5jI,EAAoBhvE,QAAQkuM,WAAY,EACxCl/H,EAAoBlrE,MAAQ,MAG5BkrE,EAAoB7tE,IAAI,CACtB,CACEjC,MAAO,oBACPpI,SAAU,4CACVoD,KAAM,oBACN6S,KAAK,EACLk7S,gBAAgB,EAChBrjT,SAAU,CACR+oM,MAAO,GACPu6G,QAAQ,IAGZ,CACEhpT,MAAO,CAAC,GAAI,QACZpI,SAAU,SACVoD,KAAM,OACN4J,MAAO,OACPiJ,KAAK,EACLnI,SAAU,CACRvJ,EAAG,0BAGP,CACE6D,MAAO,sBACPpI,SAAU,yBACVoD,KAAM,oBACN0K,SAAU,CACR+oM,MAAO,CAAC,qBAAmBH,iBAG/B,CACEtuM,MAAO,MACPpI,SAAU,QACVoD,KAAM,SAKN2N,EAAsB,SAAChE,GAGzB,OAFWA,EAAYpF,SAASsZ,cAEvBvE,SAAS,SACT,mDAEF,wCAGTw7D,EAAoBtnE,iBAAiBG,GAGrCrL,KAAK2tJ,cAAc/9I,UAAU4iE,GAC7BxyE,KAAK8F,OAASA,E,WA7KhB,GADC,a,gBACiB,mB,OAAA,IAAJ,gBAAI,W,2BAVP6lT,EAAG,GADf,uB,uBAgBqB,mB,OAAA,IAAJ,gBAAI,SACS,mBADT,OACS,IAAZ,UAAY,SACW,mBADX,OACW,IAAd,UAAc,SACE,mBADF,OACE,IAAf,sCAAe,SACM,mBADN,OACM,IAAlB,UAAkB,SACV,mBADU,OACV,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACP,mBADO,OACP,IAAf,sCAAe,YAtBlBA,GAAb,I,4CCtBAjwT,EAAOD,QAAU,+pBAAqqB,EAAQ,KAAmC,yjB,+KCKttBmwT,EAAc,WACvB,SAASA,IAGP5rT,KAAK6rT,yBAA0B,EAC/B7rT,KAAK8rT,sBAAwB,aAC7B9rT,KAAK+rT,mBAAqB,UAC1B/rT,KAAKgsT,aAAc,EAEnBhsT,KAAKisT,sBAAuB,EAgb9B,OA7aAL,EAAY9wT,UAAUoxT,0BAA4B,SAAmCrqP,EAAI/hE,EAAGwf,GAE1F,IADA,IAAI6sS,EAAOrsT,EAAEwrB,MAAM,KACV5wB,EAAI,EAAGiI,EAAKwpT,EAAKvxT,OAAQF,EAAIiI,IAAMjI,EAC1CmnE,EAAGquC,iBAAiBi8M,EAAKzxT,GAAI4kB,GAAI,IAIrCssS,EAAY9wT,UAAUsxT,6BAA+B,SAAsCvqP,EAAI/hE,EAAGwf,GAEhG,IADA,IAAI6sS,EAAOrsT,EAAEwrB,MAAM,KACV5wB,EAAI,EAAGiI,EAAKwpT,EAAKvxT,OAAQF,EAAIiI,IAAMjI,EAC1CmnE,EAAG6gD,oBAAoBypM,EAAKzxT,GAAI4kB,GAAI,IAIxCssS,EAAY9wT,UAAUuxT,0BAA4B,SAAmCtlP,GACnF,IAAIulP,EAAO,MAAI/9L,iBAAiBxnD,GAC5B1kD,OAAO,EACP+oF,OAAQ,EAEZ,GAAIkhN,EAAKz9L,iBAAiB,mBACxBxsG,EAAO,uBACF,GAAIiqS,EAAKz9L,iBAAiB,2BAC/BxsG,EAAO,8BACF,KAAIiqS,EAAKz9L,iBAAiB,wBAG/B,OAAO,EAFPxsG,EAAO,uBAQT,OAHA+oF,EAAQkhN,EAAKz9L,iBAAiBxsG,GAGf,KAFf+oF,EAAQrnD,OAAOqnD,EAAMrkG,QAAQ,WAAY,OAK3C6kT,EAAY9wT,UAAUyxT,0BAA4B,SAAmCxlP,GACnF,IAAIulP,EAAO,MAAI/9L,iBAAiBxnD,GAC5BplC,OAAS,EAEb,GAAI2qR,EAAKz9L,iBAAiB,kBACxBltF,EAAS,QACJ,GAAI2qR,EAAKz9L,iBAAiB,0BAC/BltF,EAAS,eACJ,KAAI2qR,EAAKz9L,iBAAiB,uBAG/B,MAAO,GAFPltF,EAAS,QAKX,IAAI6qR,EAAiBF,EAAKz9L,iBAAiBltF,EAAS,kBACpD,OAAO6qR,EAAiBA,EAAelhS,MAAM,KAAO,IAGtDsgS,EAAY9wT,UAAU2xT,sBAAwB,SAA+B1lP,EAASue,GACpF,IAAI3/E,EAAQ3F,KAIZ,OAFAA,KAAK0sT,iBAAiB,iBAAetf,aAAcrmO,GAE5C/mE,KAAKswC,SAASy2B,EAASue,GAAW,GAAMniF,MAAK,SAAU4M,GAG5D,OAFApK,EAAM+mT,iBAAiB,iBAAerf,cAAetmO,IAEtC,IAAXh3D,GACKpK,EAAM6+E,YAAYzd,EAASue,GAAW,GAAMniF,MAAK,WACtDwC,EAAM+mT,iBAAiB,iBAAepf,YAAavmO,SAKtD96D,OAAM,WACPtG,EAAM+mT,iBAAiB,iBAAenf,eAAgBxmO,OAI1D6kP,EAAY9wT,UAAU4xT,iBAAmB,SAA0BC,EAAW5lP,GAC5E,IAAIu4D,EAAM,MAAIgrK,kBAAkBqiB,EAAW,CAAEriM,SAAS,EAAM34B,YAAY,EAAMD,OAAQ3qB,IACtF,MAAI3rB,cAAckkF,IAGpBssL,EAAY9wT,UAAU8xT,kCAAoC,SAA2CJ,EAAgBK,GACnH,IAAIC,EAAoBN,EAAe3nT,QAAO,SAAUnH,GACtD,OAA6C,IAAtCmvT,EAAmBx7S,QAAQ3T,MAGpC,GAAiC,IAA7BovT,EAAkBlyT,OACpB,OAAO,EAGT,IAAKoF,KAAKisT,qBACR,OAAO,EAGT,IAAIc,EAAoBptT,OAAOqtT,QAAQC,gBAAkBttT,OAAOqtT,QAAQE,oBAAsBvtT,OAAOqtT,QAAQG,sBAEzGC,EAAc/wT,SAAS+wT,YAE3B,IACE,IAAK,IAAI1yT,EAAI,EAAGA,EAAI0yT,EAAYxyT,SAAUF,EAAG,CAC3C,IAAI2yT,EAAW,KAEf,IACEA,EAAWD,EAAY1yT,GAAG2yT,SAC1B,MAAOzxT,IAET,GAAKyxT,EAIL,IAAK,IAAIz5R,EAAI,EAAGA,EAAIy5R,EAASzyT,SAAUg5B,EAAG,CACxC,IAAI05R,EAAUD,EAASz5R,GAEvB,GAAI05R,EAAQhwT,OAASyvT,IAC8B,IAA7CD,EAAkBz7S,QAAQi8S,EAAQ5vT,MACpC,OAAO,IAKf,MAAO9B,IAET,OAAO,GAGTgwT,EAAY9wT,UAAUw6H,QAAU,SAAiBvuD,EAASue,GACxD,IAAIn/E,EAASnG,KAEb,OAAIU,MAAMC,QAAQomE,GACT/qE,EAAQgC,IAAI+oE,EAAQpiE,KAAI,SAAUk9D,GACvC,OAAO17D,EAAOsmT,sBAAsB5qP,EAAIyjB,OAIrCtlF,KAAKysT,sBAAsB1lP,EAASue,IAG7CsmO,EAAY9wT,UAAU+yS,YAAc,SAAqBC,GACvD,IAAIx/R,EAAStO,KAIb,OAFAA,KAAK0sT,iBAAiB,iBAAelf,cAAe,MAE7CM,EAAWvoP,QAAO,SAAU3oD,EAAG43H,GACpC,OAAO53H,EAAEuG,MAAK,WACZ,OAAOmL,EAAOgnH,QAAQd,EAAKztD,QAASytD,EAAKlvC,gBAE1CtpF,EAAQC,SAAQ,IAAOkH,MAAK,WAC7BmL,EAAOo+S,iBAAiB,iBAAejf,aAAc,UAIzDme,EAAY9wT,UAAUyyT,WAAa,SAAoBxmP,EAAStpC,EAAW+vR,GACzE,IAAI/+S,EAASzO,KAETytT,EAAU,MAAQhwR,EAClBiwR,EAAgBD,EAAU,UAC9B,OAAO,IAAIzxT,GAAQ,SAAUC,EAASC,GACpC,IAAIkpF,EAAYre,EAAQqe,UAExB32E,EAAOi+S,iBAAiB,iBAAejvR,EAAY,SAAUspC,GAEzDt4D,EAAOo9S,0BACTzmO,EAAUt1C,OAAOrhC,EAAOq9S,uBACxB1mO,EAAUt1C,OAAOrhC,EAAOs9S,qBAG1B3mO,EAAUt0E,IAAI28S,GACd,IAAIZ,EAAqBp+S,EAAO89S,0BAA0BxlP,GAEtD4mP,OAAa,EACbC,GAAiB,EACrBn/S,EAAOy9S,0BAA0BnlP,EAAS,sCAAuC4mP,EAAa,SAAmBE,GAC3GA,EAAYrwT,SAAWupE,IAG3B6mP,GAAiB,EACjBn/S,EAAOu9S,aAAc,EAErBv9S,EAAOi+S,iBAAiB,iBAAejvR,EAAY,UAAWspC,GAE9D8mP,EAAYr6Q,kBAEZq6Q,EAAYrwT,OAAOklH,oBAAoBmrM,EAAYvwT,KAAMqwT,MACxD,GAEH,IAAIG,OAAW,EACfr/S,EAAOy9S,0BAA0BnlP,EAAS,kCAAmC+mP,EAAW,SAAiBC,GAClGH,GAGDG,EAAUvwT,SAAWupE,IAIzBgnP,EAAUv6Q,kBAEV4xC,EAAUt1C,OAAO49Q,GACjBtoO,EAAUt1C,OAAO29Q,GAEjBM,EAAUvwT,OAAOklH,oBAAoBqrM,EAAUzwT,KAAMwwT,GAEjDr/S,EAAOo9S,yBAAPp9S,MAAkC++S,GACpCpoO,EAAUt0E,IAAI08S,GAGhB/+S,EAAOu9S,aAAc,EACrBv9S,EAAOi+S,iBAAiB,iBAAejvR,EAAY,QAASspC,GAE5D9qE,GAAQ,MACP,GAEH,IAAIsS,EAASw4D,EAAQ8rI,cACjBm7G,EAAS,wBAA0BvwR,EAEnCwwR,EAAmB,WACrB,IAAIzB,EAAiB/9S,EAAO89S,0BAA0BxlP,GACjDt4D,EAAOm+S,kCAAkCJ,EAAgBK,KAC5DznO,EAAUt1C,OAAO49Q,GACjBtoO,EAAUt1C,OAAO29Q,GAEjBh/S,EAAO29S,6BAA6BrlP,EAAS,kCAAmC+mP,GAChFr/S,EAAO29S,6BAA6BrlP,EAAS,sCAAuC4mP,GAEpFl/S,EAAOi+S,iBAAiB,iBAAejvR,EAAY,WAAYspC,GAC/D9qE,GAAQ,IAEVsS,GAAUA,EAAO7R,aAAasxT,IAAUz/S,EAAO64D,aAAa4mP,IAAW,GAAK,IAG9E,GAAIz/S,UAA4CA,EAAO62E,UAAUguB,SAAS,eAAiB7kG,EAAO62E,UAAUguB,SAAS,cAAgB31E,IAAa,CAChJ,IAAI5B,IAAWttB,EAAO64D,aAAa4mP,IAAW,GAC9Cz/S,EAAO7R,aAAasxT,EAAQnyR,EAAS,GACrC,IAAIuvE,EAAQ38F,EAAO49S,0BAA0B99S,GAAUstB,EACvDptB,EAAOi+S,iBAAiB,iBAAe/f,YAAa5lO,GAEpDlpE,YAAW,WACTunF,EAAUt0E,IAAI48S,GACdO,MACC7iN,QAEHhmB,EAAUt0E,IAAI48S,GACdO,QAKNrC,EAAY9wT,UAAU6yS,MAAQ,SAAe5mO,GAC3C,OAAO/mE,KAAKutT,WAAWxmP,EAAS,QAAS/mE,KAAK8rT,wBAGhDF,EAAY9wT,UAAU8yS,MAAQ,SAAe7mO,GAC3C,OAAO/mE,KAAKutT,WAAWxmP,EAAS,QAAS/mE,KAAK+rT,qBAGhDH,EAAY9wT,UAAU0pF,YAAc,SAAqBzd,EAASue,GAChE,IAAIx1E,EAAS9P,KAETkuT,IAAiBpsT,UAAUlH,QAAU,QAAsBgD,IAAjBkE,UAAU,KAA2BA,UAAU,GAE7F,OAAO,IAAI9F,GAAQ,SAAUC,EAASC,GACpC,IAAIkpF,EAAYre,EAAQqe,UAExB,GAAKA,EAAUguB,SAAS9tB,IAAeF,EAAUguB,SAAS9tB,EAAY,QAAtE,EAKuB,IAAnB4oO,GACFp+S,EAAO48S,iBAAiB,iBAAe9f,iBAAkB7lO,GAGvDqe,EAAUguB,SAAS9tB,EAAY,UACjCF,EAAUt1C,OAAOw1C,EAAY,QAC7BF,EAAUt0E,IAAIw0E,IAGhBF,EAAUt1C,OAAOw1C,GACjB,IAAIunO,EAAqB/8S,EAAOy8S,0BAA0BxlP,GAEtDonP,OAAc,EACdP,GAAiB,EACrB99S,EAAOo8S,0BAA0BnlP,EAAS,sCAAuConP,EAAc,SAAmBN,GAC5GA,EAAYrwT,SAAWupE,IAG3B6mP,GAAiB,EACjB99S,EAAOk8S,aAAc,GAEE,IAAnBkC,GACFp+S,EAAO48S,iBAAiB,iBAAe7f,kBAAmB9lO,GAG5D8mP,EAAYr6Q,kBAEZq6Q,EAAYrwT,OAAOklH,oBAAoBmrM,EAAYvwT,KAAM6wT,MACxD,GAEH,IAAIC,OAAY,EAChBt+S,EAAOo8S,0BAA0BnlP,EAAS,kCAAmCqnP,EAAY,SAAiBL,GACnGH,GAGDG,EAAUvwT,SAAWupE,IAIpBA,EAAQqe,UAAUguB,SAAS9tB,EAAY,YAC1CrpF,GAAQ,GAGV8xT,EAAUv6Q,kBAEV4xC,EAAUt1C,OAAOw1C,GAEjBF,EAAUt1C,OAAOw1C,EAAY,WAE7ByoO,EAAUvwT,OAAOklH,oBAAoBqrM,EAAUzwT,KAAM8wT,GAErDt+S,EAAOk8S,aAAc,GAEE,IAAnBkC,GACFp+S,EAAO48S,iBAAiB,iBAAe5f,gBAAiB/lO,GAG1D9qE,GAAQ,MACP,GAEHmpF,EAAUt0E,IAAIw0E,EAAY,WAE1B,IAAIknO,EAAiB18S,EAAOy8S,0BAA0BxlP,GACjDj3D,EAAO88S,kCAAkCJ,EAAgBK,KAC5DznO,EAAUt1C,OAAOw1C,EAAY,WAC7BF,EAAUt1C,OAAOw1C,GAEjBx1E,EAAOs8S,6BAA6BrlP,EAAS,kCAAmCqnP,GAChFt+S,EAAOs8S,6BAA6BrlP,EAAS,sCAAuConP,IAE7D,IAAnBD,GACFp+S,EAAO48S,iBAAiB,iBAAe3f,mBAAoBhmO,GAG7D9qE,GAAQ,SA9ERA,GAAQ,OAmFd2vT,EAAY9wT,UAAUw1C,SAAW,SAAkBy2B,EAASue,GAC1D,IAAIzzE,EAAS7R,KAETkuT,IAAiBpsT,UAAUlH,QAAU,QAAsBgD,IAAjBkE,UAAU,KAA2BA,UAAU,GAE7F,OAAO,IAAI9F,GAAQ,SAAUC,EAASC,GACpC,IAAIkpF,EAAYre,EAAQqe,WAED,IAAnB8oO,GACFr8S,EAAO66S,iBAAiB,iBAAe1f,cAAejmO,GAGpDqe,EAAUguB,SAAS9tB,EAAY,aACjCF,EAAUt1C,OAAOw1C,EAAY,WAC7BF,EAAUt1C,OAAOw1C,IAGnB,IAAI+oO,OAAc,EACdT,GAAiB,EACrB/7S,EAAOq6S,0BAA0BnlP,EAAS,sCAAuCsnP,EAAc,SAAmBR,GAC5GA,EAAYrwT,SAAWupE,IAG3B6mP,GAAiB,EACjB/7S,EAAOm6S,aAAc,GAEE,IAAnBkC,GACFr8S,EAAO66S,iBAAiB,iBAAezf,eAAgBlmO,GAGzD8mP,EAAYr6Q,kBAEZq6Q,EAAYrwT,OAAOklH,oBAAoBmrM,EAAYvwT,KAAM+wT,MACxD,GAEH,IAAIC,OAAY,EAChBz8S,EAAOq6S,0BAA0BnlP,EAAS,kCAAmCunP,EAAY,SAAiBP,GACnGH,GAGDG,EAAUvwT,SAAWupE,IAIpBA,EAAQqe,UAAUguB,SAAS9tB,EAAY,SAC1CrpF,GAAQ,GAGV8xT,EAAUv6Q,kBAEV4xC,EAAUt0E,IAAIw0E,GAEdF,EAAUt1C,OAAOw1C,EAAY,QAE7ByoO,EAAUvwT,OAAOklH,oBAAoBqrM,EAAUzwT,KAAMgxT,GAErDz8S,EAAOm6S,aAAc,GAEE,IAAnBkC,GACFr8S,EAAO66S,iBAAiB,iBAAexf,aAAcnmO,GAGvD9qE,GAAQ,MACP,GAEH,IAAI4wT,EAAqBh7S,EAAO06S,0BAA0BxlP,GAE1Dqe,EAAUt0E,IAAIw0E,EAAY,QAE1B,IAAIknO,EAAiB36S,EAAO06S,0BAA0BxlP,GACjDl1D,EAAO+6S,kCAAkCJ,EAAgBK,KAC5DznO,EAAUt1C,OAAOw1C,EAAY,QAC7BF,EAAUt0E,IAAIw0E,GAEdzzE,EAAOu6S,6BAA6BrlP,EAAS,kCAAmCunP,GAChFz8S,EAAOu6S,6BAA6BrlP,EAAS,sCAAuCsnP,IAE7D,IAAnBH,GACFr8S,EAAO66S,iBAAiB,iBAAevf,gBAAiBpmO,GAG1D9qE,GAAQ,QAKP2vT,EAzbgB,GA4blB,SAASh8S,EAAUpN,EAAQykB,GAChC,IAAI+yR,EAAWx3S,EAAO6L,UAAU7P,IAAIotT,GACpCppT,EAAO6L,UAAU7P,IAAI,oBAAkBuqT,kBAAkB/O,GACjC,mBAAb/yR,GACTA,EAAS+yR,K,4ECncbn/S,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQqzP,aAAerzP,EAAQ8yT,+BAA4B3wT,EAC3DnC,EAAQmU,UAMR,SAAmB82J,EAASz/I,GAC1By/I,EAAQtyF,gBAAgB,oBAExB,IAAI5xE,EAAS,IAAIgsT,EAAc1/D,aAEP,mBAAb7nO,GACTA,EAASzkB,IAVb,IAAIisT,EAAgB,EAAQ,8CAExBD,EAAgB,EAAQ,KAY5B/yT,EAAQ8yT,0BAA4BE,EAAcF,0BAClD9yT,EAAQqzP,aAAe0/D,EAAc1/D,c,0EChBrC,IAAIhoL,EAAM67D,EAAOE,EAAO18D,EAAuBC,EAASC,EAAaC,EAAcC,EAAcC,EAAckoP,EAAcC,EAAcC,EAAcC,EAAcC,EAAcC,EALrLl0T,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQ8yT,+BAA4B3wT,EAIpC,IAUgCmD,EAV5BiuT,EAAoB,EAAQ,qBAE5BC,EAAU,EAAQ,IAElBC,GAM4BnuT,EANMkuT,IAMeluT,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAJvF,EAAQ,KAER,IAAIguP,EAAuB,EAAQ,KAInC,SAAStoL,EAAgBjpE,EAAQ8B,EAAU8B,EAAY+R,GAChD/R,GACLvG,OAAOyD,eAAed,EAAQ8B,EAAU,CACtCf,WAAY6C,EAAW7C,WACvB8C,aAAcD,EAAWC,aACzBC,SAAUF,EAAWE,SACrB1C,MAAOwC,EAAWslE,YAActlE,EAAWslE,YAAY1rE,KAAKmY,QAAW,IAM3E,SAASwzD,EAA0BnpE,EAAQ8B,EAAU2tC,EAAY7rC,EAAY+R,GAC3E,IAAI2wD,EAAO,GAyBX,OAxBAjpE,OAAkB,KAAEuG,GAAY+F,SAAQ,SAAUjI,GAChD4kE,EAAK5kE,GAAOkC,EAAWlC,MAEzB4kE,EAAKvlE,aAAeulE,EAAKvlE,WACzBulE,EAAKziE,eAAiByiE,EAAKziE,cAEvB,UAAWyiE,GAAQA,EAAK4C,eAC1B5C,EAAKxiE,UAAW,GAGlBwiE,EAAO72B,EAAWptC,QAAQ+mE,UAAUrhB,QAAO,SAAUue,EAAMp2B,GACzD,OAAOA,EAAUlwC,EAAQ8B,EAAUwkE,IAASA,IAC3CA,GAEC3wD,QAAgC,IAArB2wD,EAAK4C,cAClB5C,EAAKllE,MAAQklE,EAAK4C,YAAc5C,EAAK4C,YAAY1rE,KAAKmY,QAAW,EACjE2wD,EAAK4C,iBAAc9oE,QAGI,IAArBkmE,EAAK4C,cACP7rE,OAA4B,eAAE2C,EAAQ8B,EAAUwkE,GAChDA,EAAO,MAGFA,EAOuBroE,EAAQ8yT,2BAA6BznP,GAAO,EAAIkoP,EAAkBx5S,QAAQgyD,SAAUm7D,GAAQ,EAAIqsL,EAAkBtlE,UAAU,CAAEmuD,mBAAoBmX,EAAkBh+B,YAAYE,SAAWruJ,GAAQ,EAAImsL,EAAkBtlE,UAAU,CAAEmuD,mBAAoBmX,EAAkBh+B,YAAYE,SAAWpqN,GAAeV,EAAU,WACzV,SAASmoP,EAA0BY,GACjC,IAAIxpT,EAAQ3F,MArChB,SAAyB6nD,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAuC5Go1C,CAAgBltD,KAAMuuT,GAEtB9nP,EAAgBzmE,KAAM,UAAWqmE,EAAarmE,MAE9CymE,EAAgBzmE,KAAM,QAASsmE,EAActmE,MAE7CymE,EAAgBzmE,KAAM,mBAAoBumE,EAAcvmE,MAExDymE,EAAgBzmE,KAAM,cAAewmE,EAAcxmE,MAEnDymE,EAAgBzmE,KAAM,UAAW0uT,EAAc1uT,MAE/CymE,EAAgBzmE,KAAM,kBAAmB2uT,EAAc3uT,MAEvDymE,EAAgBzmE,KAAM,qBAAsB4uT,EAAc5uT,MAE1DymE,EAAgBzmE,KAAM,cAAe6uT,EAAc7uT,MAEnDymE,EAAgBzmE,KAAM,oBAAqB8uT,EAAc9uT,MAEzDymE,EAAgBzmE,KAAM,gBAAiB+uT,EAAe/uT,MAEtDA,KAAKuX,OAAS,GACdvX,KAAKi5F,QAAU,GACfj5F,KAAKwD,QAAU,GAEfxD,KAAKmvT,IAAMA,EAEXA,EAAIvlM,MAAQ,WACV,OAAOjkH,EAAMoZ,MAAM6qG,SAkKvB,OA9JA2kM,EAA0BzzT,UAAUwuD,SAAW,WAC7CtpD,KAAKovT,QAAS,EAAIF,EAASr5P,SAAS71D,KAAKmvT,KAAKnpT,KAAK,SAEnD,IAAIqpT,EAAgBrvT,KAAKwD,SAAW,GAC/B6rT,EAAcnuJ,WACjBmuJ,EAAcnuJ,SAAqC,IAA1BlhK,KAAKghK,iBAAyB,mBAAqB,oBAG9EhhK,KAAKsvT,oBACLtvT,KAAKuvT,gBAELF,EAAgBx0T,OAAOgI,OAAO,GAAIksP,EAAqB9tF,oBAAqBouJ,GAC5ErvT,KAAKovT,OAAO/gE,UAAUghE,GAEtBrvT,KAAK+mE,QAAU,CACbxvD,OAAQvX,KAAKuX,OACb/T,QAAS6rT,EACTp2N,QAASj5F,KAAKi5F,UAIlBs1N,EAA0BzzT,UAAUw0T,kBAAoB,WACtD,IAAInpT,EAASnG,KAEbA,KAAKovT,OAAO/hR,GAAG,iBAAiB,SAAUzxC,GACF,mBAA3BuK,EAAOqpT,iBAChBrpT,EAAOqpT,gBAAgB5zT,GAEoB,mBAAlCuK,EAAOoR,OAAOi4S,iBACvBrpT,EAAOoR,OAAOi4S,gBAAgB5zT,MAIlCoE,KAAKovT,OAAO/hR,GAAG,oBAAoB,SAAUzxC,GACF,mBAA9BuK,EAAOspT,oBAChBtpT,EAAOspT,mBAAmB7zT,GAEoB,mBAArCuK,EAAOoR,OAAOk4S,oBACvBtpT,EAAOoR,OAAOk4S,mBAAmB7zT,MAIrCoE,KAAKovT,OAAO/hR,GAAG,aAAa,SAAUzxC,GAC/BA,EAAE4H,SAAY5H,EAAE4H,QAAQksT,iBAC3BvpT,EAAOwpT,sBAAuB,EAC9BxpT,EAAOvH,MAAQuH,EAAOipT,OAAO/gE,UAAU,UAEP,mBAAvBloP,EAAOypT,aAChBzpT,EAAOypT,YAAYh0T,GAEoB,mBAA9BuK,EAAOoR,OAAOq4S,aACvBzpT,EAAOoR,OAAOq4S,YAAYh0T,MAI9BoE,KAAKovT,OAAO/hR,GAAG,mBAAmB,SAAUzxC,GACF,mBAA7BuK,EAAO0pT,mBAChB1pT,EAAO0pT,kBAAkBj0T,GAEoB,mBAApCuK,EAAOoR,OAAOs4S,mBACvB1pT,EAAOoR,OAAOs4S,kBAAkBj0T,MAIpCoE,KAAKovT,OAAO/hR,GAAG,eAAe,SAAUzxC,GACjCA,EAAE4H,SAAY5H,EAAE4H,QAAQksT,iBAC3BvpT,EAAOwpT,sBAAuB,EAC9BxpT,EAAOvH,MAAQuH,EAAOipT,OAAO/gE,UAAU,UAEL,mBAAzBloP,EAAO2pT,eAChB3pT,EAAO2pT,cAAcl0T,GAEoB,mBAAhCuK,EAAOoR,OAAOu4S,eACvB3pT,EAAOoR,OAAOu4S,cAAcl0T,OAKlC2yT,EAA0BzzT,UAAU+uH,KAAO,WACzC,IAAI7sH,EAAQgyT,EAAkBzmK,IAAI+hJ,kBAAkB,QACpDtqS,KAAKmvT,IAAI/zQ,cAAcp+C,IAGzBuxT,EAA0BzzT,UAAUy0T,cAAgB,WAClD,IAAIjhT,EAAStO,KAETi5F,EAAU,CACZnoF,IAAK,SAAalS,GAChB,OAAO0P,EAAO8gT,OAAO/gE,UAAU,MAAOzvP,IAExCk3I,QAAS,WACP,OAAOxnI,EAAO8gT,OAAO/gE,UAAU,YAEjCzkI,MAAO,WACL,OAAOt7G,EAAO8gT,OAAO/gE,UAAU,UAEjCtvO,MAAO,WACL,OAAOzQ,EAAO8gT,OAAO/gE,UAAU,UAEjCrB,QAAS,WACP,OAAO1+O,EAAO8gT,OAAO/gE,UAAU,YAEjCv+M,OAAQ,SAAgBlxC,GACtB,OAAO0P,EAAO8gT,OAAO/gE,UAAU,SAAUzvP,IAE3CgqI,UAAW,WACTt6H,EAAOqhT,sBAAuB,EAC9BrhT,EAAO8gT,OAAO/gE,UAAU,aACxB//O,EAAO1P,MAAQ0P,EAAO8gT,OAAO/gE,UAAU,WAI3CruP,KAAKi5F,QAAUA,GAGjBs1N,EAA0BzzT,UAAUquJ,SAAW,WAC7CnpJ,KAAKovT,OAAO/gE,UAAU,YAGxBkgE,EAA0BzzT,UAAUi1T,cAAgB,SAAuBC,EAAM3iQ,GAC/E,GAAa,OAAT2iQ,GAA0B,OAAT3iQ,EACnB,OAAO,EAET,IAAK3sD,MAAMC,QAAQqvT,KAAUtvT,MAAMC,QAAQ0sD,IAAS2iQ,EAAKp1T,SAAWyyD,EAAKzyD,OACvE,OAAO,EAET,IAAK,IAAIF,EAAI,EAAGA,EAAIs1T,EAAKp1T,OAAQF,IAC/B,GAAIs1T,EAAKt1T,KAAO2yD,EAAK3yD,GACnB,OAAO,EAGX,OAAO,GAGT6zT,EAA0BzzT,UAAU+4S,aAAe,SAAsB9kP,EAAUgiB,GACjF,IAAItiE,EAASzO,KAETiwT,EAAoC,iBAAblhQ,EAAwBA,EAASzjC,MAAM,KAAOyjC,EACrEmhQ,EAAoC,iBAAbn/O,EAAwBA,EAASzlD,MAAM,KAAOylD,EAEzE,GAAIhiB,GAAY/uD,KAAKovT,QAAUrgQ,IAAagiB,IAAa/wE,KAAK+vT,cAAcE,EAAeC,GAAgB,CACzG,GAAIlwT,KAAK2vT,qBAEP,YADA3vT,KAAK2vT,sBAAuB,GAGzB3vT,KAAK2vT,uBACR3vT,KAAKovT,OAAO/gE,UAAU,aAClB3tP,MAAMC,QAAQouD,GAChBA,EAAS5nD,SAAQ,SAAUvI,GACzB,OAAO6P,EAAO2gT,OAAO/gE,UAAU,MAAOzvP,EAAO,CAAE8wT,gBAAgB,OAGjE1vT,KAAKovT,OAAO/gE,UAAU,MAAOt/L,EAAU,CAAE2gQ,gBAAgB,OAM1DnB,EAnMkV,GAoMrVloP,EAAcM,EAA0BP,EAAQtrE,UAAW,UAAW,CAAC6nI,GAAQ,CACnFpkI,YAAY,EACZmoE,YAAa,OACXJ,EAAeK,EAA0BP,EAAQtrE,UAAW,QAAS,CAAC+nI,GAAQ,CAChFtkI,YAAY,EACZmoE,YAAa,OACXH,EAAeI,EAA0BP,EAAQtrE,UAAW,mBAAoB,CAACk0T,EAAkBtlE,UAAW,CAChHnrP,YAAY,EACZmoE,YAAa,WACX,OAAOqoL,EAAqBhuF,mBAAmBC,oBAE/Cx6F,EAAeG,EAA0BP,EAAQtrE,UAAW,cAAe,CAACk0T,EAAkBtlE,UAAW,CAC3GnrP,YAAY,EACZmoE,YAAa,WACX,MAAO,MAEPgoP,EAAe/nP,EAA0BP,EAAQtrE,UAAW,UAAW,CAACk0T,EAAkBtlE,UAAW,CACvGnrP,YAAY,EACZmoE,YAAa,OACXioP,EAAehoP,EAA0BP,EAAQtrE,UAAW,kBAAmB,CAACk0T,EAAkBtlE,UAAW,CAC/GnrP,YAAY,EACZmoE,YAAa,OACXkoP,EAAejoP,EAA0BP,EAAQtrE,UAAW,qBAAsB,CAACk0T,EAAkBtlE,UAAW,CAClHnrP,YAAY,EACZmoE,YAAa,OACXmoP,EAAeloP,EAA0BP,EAAQtrE,UAAW,cAAe,CAACk0T,EAAkBtlE,UAAW,CAC3GnrP,YAAY,EACZmoE,YAAa,OACXooP,EAAenoP,EAA0BP,EAAQtrE,UAAW,oBAAqB,CAACk0T,EAAkBtlE,UAAW,CACjHnrP,YAAY,EACZmoE,YAAa,OACXqoP,EAAgBpoP,EAA0BP,EAAQtrE,UAAW,gBAAiB,CAACk0T,EAAkBtlE,UAAW,CAC9GnrP,YAAY,EACZmoE,YAAa,OArOwTP,EAsOlUC,KAAaD,I,gECxSlBzqE,EAAOD,QAAU,wJ,8CCAjB,8XACO,SAASmU,EAAUugT,EAAiBlpS,GACvC,IAAImpS,EAAc,KACd5tT,EAAS,IAAI,IAAoB2tT,GAAiB,SAAUlsT,GAASmsT,EAAcnsT,KAOvF,MANwB,mBAAbgjB,EACPA,EAASzkB,GAGTA,EAAO6xE,cAEJ+7O,IAVX,oD,6MCIInwT,E,MAAS,UAAqB,oBAE9BowT,EAAU,WACZ,SAASA,EAAQC,EAAarpS,GAG5BjnB,KAAKswT,YAAcA,EACnBtwT,KAAKinB,SAAWA,EASlB,OANAopS,EAAQv1T,UAAUg2D,OAAS,SAAgBrzD,GACrCA,aAAmBuC,KAAKswT,aAC1BtwT,KAAKinB,SAASjsB,KAAK,KAAMyC,IAItB4yT,EAdK,GAiBd,SAASE,EAAetpS,EAAU5sB,EAAM2C,GACtC,IACEiqB,EAAS5sB,EAAM2C,GACf,MAAOpB,GACPqE,EAAOnD,MAAMlB,IAIjB,SAAS40T,EAAcz/S,EAAS1W,GAC9B,IACE0W,EAAQ+/C,OAAOz2D,GACf,MAAOuB,GACPqE,EAAOnD,MAAMlB,IAIV,IAAIokK,EAAkB,WAC3B,SAASA,IAGPhgK,KAAKywT,YAAc,GACnBzwT,KAAK0wT,gBAAkB,GAoEzB,OAjEA1wJ,EAAgBllK,UAAU0e,QAAU,SAAiBxc,EAAO3C,GAC1D,IAAIs2T,OAAc,EACdj2T,OAAI,EAER,IAAKsC,EACH,MAAM,IAAID,MAAM,sBAGlB,GAAqB,iBAAVC,GAET,GADA2zT,EAAc3wT,KAAKywT,YAAYzzT,GAK7B,IAFAtC,GADAi2T,EAAcA,EAAY9wT,SACVjF,OAETF,KACL61T,EAAeI,EAAYj2T,GAAIL,EAAM2C,QAOzC,IAFAtC,GADAi2T,EAAc3wT,KAAK0wT,gBAAgB7wT,SACnBjF,OAETF,KACL81T,EAAcG,EAAYj2T,GAAIsC,IAKpCgjK,EAAgBllK,UAAUia,UAAY,SAAmB/X,EAAOiqB,GAC9D,IAAIlW,OAAU,EACV4/S,OAAc,EAElB,IAAK3zT,EACH,MAAM,IAAID,MAAM,mCAalB,MAVqB,iBAAVC,GACT+T,EAAUkW,EACV0pS,EAAc3wT,KAAKywT,YAAYzzT,KAAWgD,KAAKywT,YAAYzzT,GAAS,MAEpE+T,EAAU,IAAIs/S,EAAQrzT,EAAOiqB,GAC7B0pS,EAAc3wT,KAAK0wT,iBAGrBC,EAAYz1T,KAAK6V,GAEV,CACL46F,QAAS,WACP,IAAIxzC,EAAMw4P,EAAYt/S,QAAQN,IACjB,IAATonD,GACFw4P,EAAYx5S,OAAOghD,EAAK,MAMhC6nG,EAAgBllK,UAAUy0S,cAAgB,SAAuBvyS,EAAOiqB,GACtE,IAAIhS,EAAMjV,KAAK+U,UAAU/X,GAAO,SAAU0U,EAAGC,GAE3C,OADAsD,EAAI02F,UACG1kF,EAASvV,EAAGC,MAGrB,OAAOsD,GAGF+qJ,EAzEoB,GA4EtB,SAAS4wJ,EAAgB7vT,GAC9B,IAAIsZ,EAAK,IAAI2lJ,EAcb,OAZAj/J,EAAIwuS,cAAgB,SAAUvyS,EAAOiqB,GACnC,OAAO5M,EAAGk1R,cAAcvyS,EAAOiqB,IAGjClmB,EAAIgU,UAAY,SAAU/X,EAAOiqB,GAC/B,OAAO5M,EAAGtF,UAAU/X,EAAOiqB,IAG7BlmB,EAAIyY,QAAU,SAAUxc,EAAO3C,GAC7BggB,EAAGb,QAAQxc,EAAO3C,IAGbggB,EAGF,SAASzK,EAAUpN,GACxBA,EAAOqlD,SAASm4G,EAAiB4wJ,EAAgBpuT,EAAOkkK,Y,iDCpI1D7rK,OAAOyD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,IAETnD,EAAQmU,UAIR,SAAmBpN,GACjBA,EAAO4xE,gBAAgB,wBAHP,EAAQ,I,mECL1Bv5E,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQo1T,mCAAgCjzT,EAExC,IAEIkpE,EAAM67D,EAAOx8D,EAAuBC,EAASC,EAAaC,EAQ9BvlE,EAV5BF,EAA4B,mBAAXnC,QAAoD,iBAApBA,OAAOoC,SAAwB,SAAUC,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAXrC,QAAyBqC,EAAIC,cAAgBtC,QAAUqC,IAAQrC,OAAO5D,UAAY,gBAAkBiG,GAIlQiuT,EAAoB,EAAQ,qBAE5Bt1K,EAAa,EAAQ,KAErBo3K,GAE4B/vT,EAFS24I,IAEY34I,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GAEvF,SAAS0lE,EAAgBjpE,EAAQ8B,EAAU8B,EAAY+R,GAC9C/R,GACLvG,OAAOyD,eAAed,EAAQ8B,EAAU,CACpCf,WAAY6C,EAAW7C,WACvB8C,aAAcD,EAAWC,aACzBC,SAAUF,EAAWE,SACrB1C,MAAOwC,EAAWslE,YAActlE,EAAWslE,YAAY1rE,KAAKmY,QAAW,IAM/E,SAASwzD,EAA0BnpE,EAAQ8B,EAAU2tC,EAAY7rC,EAAY+R,GACzE,IAAI2wD,EAAO,GAyBX,OAxBAjpE,OAAkB,KAAEuG,GAAY+F,SAAQ,SAAUjI,GAC9C4kE,EAAK5kE,GAAOkC,EAAWlC,MAE3B4kE,EAAKvlE,aAAeulE,EAAKvlE,WACzBulE,EAAKziE,eAAiByiE,EAAKziE,cAEvB,UAAWyiE,GAAQA,EAAK4C,eACxB5C,EAAKxiE,UAAW,GAGpBwiE,EAAO72B,EAAWptC,QAAQ+mE,UAAUrhB,QAAO,SAAUue,EAAMp2B,GACvD,OAAOA,EAAUlwC,EAAQ8B,EAAUwkE,IAASA,IAC7CA,GAEC3wD,QAAgC,IAArB2wD,EAAK4C,cAChB5C,EAAKllE,MAAQklE,EAAK4C,YAAc5C,EAAK4C,YAAY1rE,KAAKmY,QAAW,EACjE2wD,EAAK4C,iBAAc9oE,QAGE,IAArBkmE,EAAK4C,cACL7rE,OAA4B,eAAE2C,EAAQ8B,EAAUwkE,GAChDA,EAAO,MAGJA,EAOX,IAAIsyE,EAAgB,CAChB9K,YAAY,EACZiG,UAAU,EACVa,UAAW,gBAGqB32I,EAAQo1T,+BAAiC/pP,GAAO,EAAIkoP,EAAkBx5S,QAAQgyD,SAAUm7D,GAAQ,EAAIqsL,EAAkBtlE,UAAU,CAAEmuD,mBAAoBmX,EAAkBh+B,YAAYE,SAAWpqN,GAAeV,EAAU,WACxP,SAASyqP,EAA8B9pP,IA1C3C,SAAyBlf,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCA2CxGo1C,CAAgBltD,KAAM6wT,GAEtBpqP,EAAgBzmE,KAAM,SAAUqmE,EAAarmE,MAE7CymE,EAAgBzmE,KAAM,QAASsmE,EAActmE,MAE7CA,KAAK+mE,QAAUA,EA8HnB,OA3HA8pP,EAA8B/1T,UAAUqE,KAAO,WAC3Ca,KAAKyzB,QAAU54B,OAAOgI,OAAO,GAAIuzI,EAAep2I,KAAKwC,QAErDxC,KAAKyzB,QAAQsmH,SAAW/5I,KAAKyzB,QAAQwmH,cAAgBj6I,KAAKyzB,QAAQ6mH,aAAet6I,KAAK+5I,SAAS56I,KAAKa,OAGxG6wT,EAA8B/1T,UAAUwuD,SAAW,WAC/CtpD,KAAKk8I,UAAY,IAAI40K,EAAYj7P,QAAQ71D,KAAK+mE,QAAQpH,cAAc,sBAAuB3/D,KAAKyzB,SAEhGzzB,KAAK6zS,gBAGTgd,EAA8B/1T,UAAUi/I,SAAW,SAAkBxP,EAAewmL,EAASlpQ,GACzF,IAAIliD,EAAQ3F,KAEZ,IAAKA,KAAKgxT,gBAAgBhxT,KAAKpB,MAAO2rI,GAElC,OAAQA,EAAc3vI,QAClB,KAAK,EACDoF,KAAKpB,WAAQhB,EACb,MACJ,KAAK,EACDoC,KAAKpB,MAAQoB,KAAKixT,WAAW1mL,EAAc,IAC3C,MACJ,QACIvqI,KAAKpB,MAAQ2rI,EAAc5lI,KAAI,SAAUxG,GACrC,OAAOwH,EAAMsrT,WAAW9yT,QAO5C0yT,EAA8B/1T,UAAU+4S,aAAe,WACnD,IAAI1tS,EAASnG,KAEb,GAAKA,KAAKk8I,YAINl8I,KAAKgxT,gBAAgBhxT,KAAKpB,MAAOoB,KAAKk8I,UAAU3R,eAApD,CAIA,IAAI8R,OAAU,EAOVA,EALCr8I,KAAKpB,MAEE8B,MAAMC,QAAQX,KAAKpB,OAGjBoB,KAAKpB,MAAM+F,KAAI,SAAUxG,GAC/B,OAAOgI,EAAO8qT,WAAW9yT,MAHnB6B,KAAKixT,WAAWjxT,KAAKpB,YAFrBhB,EASdoC,KAAKk8I,UAAU/J,QAAQkK,KAG3Bw0K,EAA8B/1T,UAAUk2T,gBAAkB,SAAyBxzS,EAAO9M,GACtF8M,EAAQA,GAAS,GAkBjB,IAhBA,IAAI0zS,EAAaxwT,MAAMC,QAAQ6c,GAASA,EAAQ,CAACA,GAE7C9W,EAAQ,SAAevI,GACvB,IAAIgzT,EAAYD,EAAW/yT,GAE3B,OAAIuS,EAAKwiK,WAAU,SAAUjvG,GACzB,OAAOA,EAAEvkD,YAAcyxS,EAAUzxS,cAC/B,EACK,WAGJ,CACHukD,GAAG,IAIF9lE,EAAI,EAAGA,EAAI+yT,EAAWt2T,OAAQuD,IAAK,CACxC,IAAI6+D,EAAOt2D,EAAMvI,GAEjB,OAAQ6+D,GACJ,IAAK,WACD,SAEJ,QACI,GAAoE,iBAA/C,IAATA,EAAuB,YAAcn8D,EAAQm8D,IAAqB,OAAOA,EAAKiH,GAItG,IAAIx2D,EAAS,SAAgBtP,GACzB,IAAIizT,EAAW1gT,EAAKvS,GAEpB,OAAI+yT,EAAWh+I,WAAU,SAAUj1K,GAC/B,OAAOA,EAAEyhB,YAAc0xS,EAAS1xS,cAC9B,EACK,WAGJ,CACHukD,GAAG,IAIX,IAAS9lE,EAAI,EAAGA,EAAIuS,EAAK9V,OAAQuD,IAAK,CAClC,IAAIo/R,EAAQ9vR,EAAOtP,GAEnB,OAAQo/R,GACJ,IAAK,WACD,SAEJ,QACI,GAAsE,iBAAhD,IAAVA,EAAwB,YAAc18R,EAAQ08R,IAAsB,OAAOA,EAAMt5N,GAIzG,OAAO,GAGX4sP,EAA8B/1T,UAAUm2T,WAAa,SAAoB9yT,GACrE,OAAO,IAAIkb,KAAKlb,EAAEqjB,QAAUrjB,EAAEuhB,UAAYvhB,IAGvC0yT,EAtIiP,GAuItPxqP,EAAcM,EAA0BP,EAAQtrE,UAAW,SAAU,CAACk0T,EAAkBtlE,UAAW,CACrGnrP,YAAY,EACZmoE,YAAa,WACT,MAAO,MAEXJ,EAAeK,EAA0BP,EAAQtrE,UAAW,QAAS,CAAC6nI,GAAQ,CAC9EpkI,YAAY,EACZmoE,YAAa,OA9IuNP,EA+InOC,KAAaD,I,2DCrNlBzqE,EAAOD,QAAU,sK,iDCAjB,i+YAAIoF,EAA4B,mBAAXnC,QAAoD,iBAApBA,OAAOoC,SAAwB,SAAUC,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAXrC,QAAyBqC,EAAIC,cAAgBtC,QAAUqC,IAAQrC,OAAO5D,UAAY,gBAAkBiG,GAsB/P,IAAIm/P,EAAU,WACnB,SAASA,EAAQ52G,EAAQj7I,EAAW6hD,GAGlClwD,KAAKspJ,OAASA,GAAU,IAAI,WAAS0zG,OACrCh9P,KAAKqO,UAAYA,IAAa,IAAI,aAAYg4H,aAC9CrmI,KAAKkwD,UAAYA,GAAa,IAAI,gBAClClwD,KAAKk+D,IAAM,IAAImzP,EAAuBrxT,MACtCA,KAAKC,OAAS,YAAwB,WACtCD,KAAKsxT,gBAAiB,EACtBtxT,KAAK88H,KAAO,KAEZ98H,KAAKk+D,IAAIrW,SAASq4M,EAASlgQ,MAC3BA,KAAKk+D,IAAIrW,SAAS,IAAQ7nD,KAAKspJ,QAC/BtpJ,KAAKk+D,IAAIrW,SAAS,gBAAe7nD,KAAKkwD,WAkHxC,OA/GAgwM,EAAQplQ,UAAUwqD,MAAQ,WACxB,IAAI3/C,EAAQ3F,KAEZ,OAAIA,KAAKuxT,SACAvxT,KAAKuxT,UAGdvxT,KAAKC,OAAOE,KAAK,oBACVH,KAAKuxT,SAAWvxT,KAAKk+D,IAAIj6D,QAAQd,MAAK,WAG3C,GAtCJ,MAAI+sG,iBAAiB,UAAU,SAAUovB,GACvC,IAAI9hI,EAAS8hI,EAAI9hI,OACbg0T,EAASh0T,EAAOg0T,OAEiB,SAAjCh0T,EAAO+8J,QAAQh/I,eAA6Bi2S,GAC9ClyL,EAAInW,qBAiCCxjH,EAAM0I,UAAU8oE,YAAY,mBAAkB,CACjD,IAAI15E,EAAU,oEAEd,MADAkI,EAAM1F,OAAOnD,MAAMW,GACb,IAAIV,MAAMU,GAGlBkI,EAAM1F,OAAOE,KAAK,mBAClB,IAAIm/H,EAAM,MAAIgrK,kBAAkB,kBAAmB,CAAEhgL,SAAS,EAAM34B,YAAY,IAEhF,OADA,MAAIv2C,cAAckkF,GACX35H,OAIXu6P,EAAQplQ,UAAUq1S,QAAU,WAC1B,IAAIhqS,EAASnG,KAET2nE,EAAiB7lE,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,GACrF2vT,EAAkB3vT,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,KAI1F,OAFA9B,KAAK0xT,eAAeD,GAAmB,MAAIt7M,iBAAiB,QAAQ,IAE7D,IAAIn6G,GAAQ,SAAUC,GAC3B,IAAI01T,EAASxrT,EAAOkI,UAAU7P,IAAI,oBAClC2H,EAAOmyE,KAAOq5O,EAAOxhB,QAAQ,CAAE9hS,UAAWlI,EAAOkI,UAAW04D,QAAS5gE,EAAO22H,KAAM5sE,UAAW/pD,EAAO+pD,UAAWyX,eAAgBA,IAC/HxhE,EAAOmyE,KAAKhvB,WACZnjD,EAAOyrT,qBACP31T,EAAQkK,OAIZ+5P,EAAQplQ,UAAU0lQ,QAAU,WAC1B,IAAIlyP,EAAStO,KAETs4E,EAAOx2E,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,KAC3E2vT,EAAkB3vT,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,KAEtFuF,EAAc,GAEdrH,KAAKs4E,MAAQt4E,KAAKs4E,KAAKvqE,WAAa/N,KAAKs4E,KAAKvqE,UAAUjI,SAC1D9F,KAAKs4E,KAAKvqE,UAAUjI,OAAOgT,aAC3B9Y,KAAKs4E,KAAKvqE,UAAUjI,OAAO0I,SAG7BxO,KAAK0xT,eAAeD,GAEpB,IAAIE,EAAS3xT,KAAKqO,UAAU7P,IAAI,oBAC5B8oT,EAActnT,KAAKqO,UAAU7P,IAAI,0BAgBrC,cAfO8oT,EAAYjgP,mBAEdiR,IAEDA,EADEt4E,KAAKogQ,eACA,YAAe,QAASpgQ,KAAKogQ,gBAE7B,OAIX/4P,EAAY0G,UAAYuqE,EACxBjxE,EAAYgH,UAAYhH,EAAY0O,eAAiB/V,KAAKqO,UAC1DhH,EAAY2/D,SAAWhnE,KAAK6xT,SAC5BxqT,EAAYy1H,KAAO98H,KAAK88H,KAEjB60L,EAAOrjR,QAAQjnC,GAAalE,MAAK,SAAU1E,GAIhD,OAHA6P,EAAOgqE,KAAO75E,EACd4I,EAAY2/D,SAAS1d,WACrBh7C,EAAOsjT,qBACAtjT,MAIX4xP,EAAQplQ,UAAU42T,eAAiB,SAAwBD,GACzD,IAAIzxT,KAAKsxT,eAAT,CAWA,GARAG,EAAkBA,GAAmBzxT,KAAK88H,KAKxC98H,KAAK88H,KAHF20L,GAA8C,iBAApBA,EAGjBA,EAFA,MAAIttO,eAAestO,GAAmB,oBAK/CzxT,KAAK88H,KACR,MAAM,IAAI//H,MAAM,qCAGlBiD,KAAKsxT,gBAAiB,EACtBtxT,KAAK88H,KAAK4pC,QAAU1mK,KACpBA,KAAK6xT,SAAW,IAAI,WAAS7xT,KAAK88H,MAAM,GACxC98H,KAAK6xT,SAAS1X,8BACdn6S,KAAKqO,UAAUs1H,iBAAiB,MAAI0gL,SAAUrkT,KAAK88H,QAGrDojI,EAAQplQ,UAAU82T,mBAAqB,WACrC,IAAItyL,EAAM,MAAIgrK,kBAAkB,mBAAoB,CAAEhgL,SAAS,EAAM34B,YAAY,IACjF9zF,YAAW,WACT,OAAO,MAAIu9C,cAAckkF,KACxB,IAGE4gI,EAhIY,GAmIjBjgQ,EAAS,YAAwB,WACjC6xT,EAAa,YAEjB,SAASC,EAASvvT,EAAQwvT,GACxB,IAAIpvT,OAAU,EAUd,OATW,SAASK,IAElB,OADAL,EAAUovT,EAAM32T,SAEPW,EAAQC,QAAQ2G,EAAQJ,IAASW,KAAKF,GAGxCjH,EAAQC,UAGVgH,GA8CT,SAAS+6D,EAAc0oG,EAASurJ,EAAiBxf,GAC/C,GAA4C,IAAxC53S,OAAO0Z,KAAK09S,GAAiBr3T,OAC/B,OAAOoB,EAAQC,UAEjB,IAAI41S,EAAanrI,EAAQr4J,UAAU7P,IAAI,cAEvC,OAAOxC,EAAQgC,IAAInD,OAAO0Z,KAAK09S,GAAiBttT,KAAI,SAAUvF,GAC5D,OAaF,SAAoBs2D,GAClB,IAAIp7D,EAAWo7D,EAAKp7D,SAChB0jM,EAAMk0H,EAAO53T,GAEb63T,EAAgB73T,KAClBA,EAAW83T,EAAU93T,IAGvB,OAAOosK,EAAQpd,OAAOg8E,UAAUhrO,EAAUo7D,EAAKopM,YAAY37P,MAAK,SAAUs5M,GACxE,MAAO,CACL/+M,KAAMg4D,EAAKp7D,SACXwmT,SAAUqR,EAAgBz8P,EAAKp7D,UAAY+3T,EAAe51G,EAAYze,GAAOye,MAxB1E61G,CAAWL,EAAgB7yT,QAChC+D,MAAK,SAAUqD,GACjB,IAAImtB,EAAQ,GACR+sR,EAAY,GAOhB,OALAl6S,EAAMW,SAAQ,SAAUxL,GACtBg4B,EAAMz4B,UAAK0C,GACX8iT,EAAUxlT,KAAKS,EAAEmlT,aAGZjP,EAAWkP,oBAAoBL,EAAW/sR,EAAO8+Q,MAmB1D,SAAS0f,EAAgBz0T,GACvB,IAAIsgM,EAAMk0H,EAAOx0T,GACjB,QAAKsgM,IACO,KAARA,IACQ,QAARA,GAAyB,QAARA,IAIvB,SAASo0H,EAAU10T,GACjB,OAAOA,EAAKqJ,QAAQ+qT,EAAY,IAGlC,SAASO,EAAe51G,EAAYze,GAClC,OAAOo0H,EAAU31G,GAAc,IAAMze,GAIzC,SAASk0H,EAAOx0T,GACd,IAAI6pB,EAAQ7pB,EAAK6pB,MAAMuqS,GACvB,GAAIvqS,GAASA,EAAM3sB,OAAS,EAC1B,OAAO2sB,EAAM,GAAG+D,MAAM,KAAK,GAI/B,SAASinS,EAAc/vT,GACrB,OAAOxG,EAAQgC,IAAIwE,EAAOgwT,gBAAgB7tT,KAAI,SAAU1G,GACtD,OAAOA,EAAEy3D,KAAKlzD,EAAO6L,UAAWpQ,EAAET,YAChC2F,MAAK,WACPX,EAAOgwT,gBAAkB,QAI7B,SAASC,EAAgB/7K,GACvB,GAAIA,EAAQg8K,UACV,MAAM,IAAI31T,MAAM,0IAIpB,SAAS41T,EAAiBz6Q,EAAK56C,GAC7B,MAAO,WAAaA,EAAO,KAAO46C,EAAM,MAAQ56C,EAAO,0DAGzD,IAAI+zT,EAAyB,WAC3B,SAASA,EAAuB3qJ,GAC9B,IAAIj4J,EAASzO,KAIbA,KAAK0mK,QAAUA,EACf1mK,KAAKqO,UAAYq4J,EAAQr4J,UAEzBrO,KAAKG,KAAO,GACZH,KAAK0yT,WAAY,EACjB1yT,KAAK4yT,SAAW,GAChB5yT,KAAK6yT,UAAY,GAEjB7yT,KAAKwyT,gBAAkB,GAEvBxyT,KAAK8yT,kBAAoB,GACzB9yT,KAAKiyT,gBAAkB,GACvBjyT,KAAK+yT,SAAQ,WACX,OAAOrsJ,EAAQpd,OAAOg8E,UAAU,wBAAwBniO,MAAK,SAAUzF,GACrE,OAAO+Q,EAAOsxP,iBAAmBriQ,QAGrCsC,KAAKgzT,UAAS,WACZ,OAAOh1P,EAAc0oG,EAASj4J,EAAOwjT,gBAAiBvrJ,EAAQx2G,cAkNlE,OA9MAmhQ,EAAuBv2T,UAAU+sD,SAAW,SAAkBvqD,EAAM21T,GAElE,OADAjzT,KAAKqO,UAAUs1H,iBAAiBrmI,EAAM21T,GAC/BjzT,MAGTqxT,EAAuBv2T,UAAUklE,UAAY,SAAmB1iE,EAAM0iI,GAEpE,OADAhgI,KAAKqO,UAAUg3H,kBAAkB/nI,EAAM0iI,GAChChgI,MAGTqxT,EAAuBv2T,UAAUo5E,UAAY,SAAmB52E,EAAM0iI,GAEpE,OADAhgI,KAAKqO,UAAU62H,kBAAkB5nI,EAAM0iI,GAChChgI,MAGTqxT,EAAuBv2T,UAAUi4T,QAAU,SAAiB7kT,GAG1D,OAFAukT,EAAgBzyT,MAChBA,KAAK4yT,SAAS13T,KAAKgT,GACZlO,MAGTqxT,EAAuBv2T,UAAUk4T,SAAW,SAAkB9kT,GAG5D,OAFAukT,EAAgBzyT,MAChBA,KAAK6yT,UAAU33T,KAAKgT,GACblO,MAGTqxT,EAAuBv2T,UAAUo4T,QAAU,SAAiBC,GAC1D,IAAI3wT,EAASV,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,GAEjF,YAA0B,IAAXqxT,EAAyB,YAActyT,EAAQsyT,IAC5D,IAAK,SACH,IAAIC,EAAW,YAAYhxT,KAAK+wT,GAC5BE,EAAYD,GAAYlB,EAAOiB,GAAUA,EAASA,EAAS,SAC3D76O,EAAO86O,EAAWD,EAAO7tT,OAAO,EAAG6tT,EAAOv4T,OAAS,GAAKu4T,EAC5DnzT,KAAKG,KAAKjF,KAAK,CAAEZ,SAAU+4T,EAAWC,oBAAqB,CAACh7O,EAAM,IAAK91E,OAAQA,IAC/E,MAEF,IAAK,WACHxC,KAAKG,KAAKjF,KAAK,CAAE0U,UAAWujT,EAAQ3wT,OAAQA,GAAU,KACtD,MACF,QACE,MAAM,IAAIzF,MAAM41T,EAAiBQ,EAAQ,YAE7C,OAAOnzT,MAGTqxT,EAAuBv2T,UAAUs5E,gBAAkB,SAAyBlkB,GAC1E,IAAIpgD,EAAS9P,KAEbyyT,EAAgBzyT,MAMhB,IAJA,IAAIuzT,EAAQ7yT,MAAMC,QAAQuvD,GAAaA,EAAYpuD,UAC/Cga,OAAW,EACXw3S,EAAsBtzT,KAAKszT,qBAAuB,CAAC,GAAI,IAElD54T,EAAI,EAAGiI,EAAK4wT,EAAM34T,OAAQF,EAAIiI,IAAMjI,EAE3C,YAA4B,KAD5BohB,EAAWy3S,EAAM74T,IACyB,YAAcmG,EAAQib,IAC9D,IAAK,SACH,IAAIvN,EAAS+kT,EAAoB,GAC7BE,EAAcF,EAAoB,GAClC51T,EAAOoe,GAENA,EAASq3D,WAAW,OAASr3D,EAASq3D,WAAW,SAAsB,KAAX5kE,IAC/D7Q,EAAO,YAAK6Q,EAAQuN,IAGtB9b,KAAKiyT,gBAAgBv0T,GAAQ,CAAEpD,SAAUoD,EAAMohQ,WAAY00D,GAC3D,MACF,IAAK,WACH,IAAIC,EAAOzzT,KAAK0mK,QAAQx2G,UAAU02E,aAAa5mI,KAAKqO,UAAWyN,GAC3D23S,aAAgB,wBAA6C,OAArBA,EAAK5gB,aACP,IAApC7yS,KAAKwyT,gBAAgBt3T,KAAKu4T,IAC5BzzT,KAAKgzT,UAAS,WACZ,OAAOT,EAAcziT,MAI3B,MACF,QACE,MAAM,IAAI/S,MAAM41T,EAAiB72S,EAAU,aAIjD,OAAO9b,MAGTqxT,EAAuBv2T,UAAU44T,WAAa,SAAoBC,EAAc/c,GAG9E,OAFA6b,EAAgBzyT,MAChBA,KAAKiyT,gBAAgB0B,GAAgB,CAAEr5T,SAAUs8S,EAAS93C,WAAY,IAC/D9+P,MAGTqxT,EAAuBv2T,UAAUq4T,OAAS,SAAgBS,EAASC,GACjEpB,EAAgBzyT,MAEhB,IAAIG,OAAO,EACX,YAA2B,IAAZyzT,EAA0B,YAAc/yT,EAAQ+yT,IAC7D,IAAK,SACHzzT,EAAO,CAAE7F,SAAUs5T,EAASN,oBAAqB,CAACM,EAAS,IAAKpxT,OAAQqxT,GAAgB,IACxF,MACF,IAAK,WACH1zT,EAAO,CAAEyP,UAAWgkT,EAASpxT,OAAQqxT,GAAgB,IACrD,MACF,QACE,MAAM,IAAI92T,MAAM41T,EAAiBiB,EAAS,WAG9C,OADA5zT,KAAKG,KAAKjF,KAAKiF,GACRH,MAGTqxT,EAAuBv2T,UAAUg5T,qBAAuB,SAA8Bp2T,EAAM8E,GAC1F,IAAIqP,EAAS7R,KAETmzT,EAAS,CAAE74T,SAAUoD,EAAM41T,oBAAqB,CAAC51T,EAAM,IAAK8E,OAAQA,GAAU,IAUlF,OATAxC,KAAKG,KAAKjF,KAAKi4T,GAEfnzT,KAAK+yT,SAAQ,WACX,IAAIj0D,EAAa,CAACphQ,EAAMmU,EAAOkuP,kBAG/B,OAFAozD,EAAO74T,SAAWoD,EAClBy1T,EAAOG,oBAAsBx0D,EACtB9iQ,EAAQC,aAGV+D,MAGTqxT,EAAuBv2T,UAAUi5T,uBAAyB,WACxD,OAAO/zT,KAAK8zT,qBAAqB,+BAGnCzC,EAAuBv2T,UAAUgL,OAAS,WACxC,OAAO9F,KAAK8zT,qBAAqB,8BAGnCzC,EAAuBv2T,UAAU2M,QAAU,WACzC,OAAOzH,KAAK8zT,qBAAqB,4BAGnCzC,EAAuBv2T,UAAUk5T,iBAAmB,WAClD,OAAOh0T,KAAK8zT,qBAAqB,iCAGnCzC,EAAuBv2T,UAAUm5T,gBAAkB,WACjD,OAAOj0T,KAAK8zT,qBAAqB,6BAGnCzC,EAAuBv2T,UAAUo5T,mBAAqB,WACpD,OAAOl0T,KAAK+zT,yBAAyBC,mBAAmBC,mBAG1D5C,EAAuBv2T,UAAUwlQ,sBAAwB,WACvD,OAAOtgQ,KAAKk0T,qBAAqBzsT,UAAU3B,UAG7CurT,EAAuBv2T,UAAUylQ,mBAAqB,SAA4BrnK,GAChF,IAAIlmF,EAAShT,KAETurJ,EAAWryD,EAAQ,WAAuBA,QAASt7F,EAevD,YAbiBA,IAAb2tJ,IACFA,EAAW,WAAuB53G,OAGpC3zC,KAAK+yT,SAAQ,WACX,OAAO//S,EAAO0zJ,QAAQpd,OAAOg8E,UAAU,0BAA2BtyN,EAAO+sP,kBAAkB58P,MAAK,SAAUzF,GACxG,OAAOsV,EAAO0zJ,QAAQpd,OAAO01G,WAAWthQ,GAAMyF,MAAK,SAAUlF,GAC3D,cAA0B,IAAIA,EAAEk2T,iBAChC,WAAuB5oK,YAKtBvrJ,MAGTqxT,EAAuBv2T,UAAUmJ,MAAQ,WACvC,IAAIsS,EAASvW,KAEb,OAAIA,KAAK0yT,UACA12T,EAAQC,UAGV81T,EAAS/xT,KAAMA,KAAK4yT,UAAUzvT,MAAK,WACxC,IAAImmJ,EAAS/yI,EAAOmwJ,QAAQpd,OACxBnpJ,EAAOoW,EAAOpW,KACdyC,OAAU,EAad,OAXW,SAASK,IAElB,OADAL,EAAUzC,EAAK9E,SAnVvB,SAAoB24E,EAAUs1E,EAAQnpJ,GAEpC,GADAF,EAAO0zC,MAAM,kBAAoBxzC,EAAK7F,SAAW,KACpB,iBAAlB6F,EAAK7F,SAAuB,CACrC05E,EAASs/O,oBAAsBnzT,EAAKmzT,oBAEpC,IAAI/2S,EAAKpc,EAAK7F,SAEd,OAAI6F,EAAKmzT,oBAAoB14T,OAAS,EAC7B0uJ,EAAOg8E,UAAUnlO,EAAK7F,SAAU6F,EAAKmzT,oBAAoB,IAAInwT,MAAK,SAAUg+S,GACjF,OAAOiT,EAAYjT,MAIhBiT,EAAY73S,GACd,GAA8B,mBAAnBpc,EAAKyP,UACrB,OAA4D,IAAxDokE,EAAS8+O,kBAAkBzhT,QAAQlR,EAAKyP,WACnC5T,EAAQC,WAEjB+3E,EAAS8+O,kBAAkB53T,KAAKiF,EAAKyP,WAE9B5T,EAAQC,QAAQkE,EAAKyP,UAAU5U,KAAK,KAAMg5E,EAAU7zE,EAAKqC,QAAU,MAE5E,MAAM,IAAIzF,MAAM41T,EAAiBxyT,EAAK7F,UAAY6F,EAAKyP,UAAW,WAElE,SAASwkT,EAAY95T,GACnB,OAAOgvJ,EAAO01G,WAAW1kQ,GAAU6I,MAAK,SAAUlF,GAChD,GAAI,cAAeA,EACjB,OAAyD,IAArD+1E,EAAS8+O,kBAAkBzhT,QAAQpT,EAAE2R,WAChC5T,EAAQC,UAEVD,EAAQC,QAAQgC,EAAE2R,UAAUokE,EAAU7zE,EAAKqC,QAAU,KAAKW,MAAK,WACpE6wE,EAAS8+O,kBAAkB53T,KAAK+C,EAAE2R,WAClCokE,EAASs/O,oBAAsB,KAC/BrzT,EAAO0zC,MAAM,qBAAuBxzC,EAAK7F,SAAW,QAIxD05E,EAASs/O,oBAAsB,KAC/BrzT,EAAO0zC,MAAM,iBAAmBxzC,EAAK7F,SAAW,SA+SrC+5T,CAAW99S,EAAQ+yI,EAAQ1mJ,GAASO,KAAKF,IAGlDsT,EAAOm8S,WAAY,EACnBn8S,EAAOu8S,kBAAoB,KACpB92T,EAAQC,WAGVgH,GAAOE,MAAK,WACjB,OAAO4uT,EAASx7S,EAAQA,EAAOs8S,kBAK9BxB,EA1OoB,GAyPlBiD,EAAa,G,wEC5hBxB,8CAAInuP,EAAQyjE,EAAZ,gBAEA,SAASjyH,EAA2BF,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAElO,SAASid,EAAUL,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAO1d,IAAI08S,EAAc,WACvB,SAASA,KAQT,OAJAA,EAAYz5T,UAAU8d,SAAW,SAAkBnR,KAEnD8sT,EAAYz5T,UAAUge,WAAa,aAE5By7S,EATgB,GAYdC,EAAqB,SAAUC,GAGxC,SAASD,IAGP,IAAI7uT,EAAQgS,EAA2B3X,KAAMy0T,EAAaz5T,KAAKgF,OAY/D,OAVA2F,EAAMoL,QAAU,SAAUnV,GACxB,IAAI84T,EAAwBF,EAAmBG,aAAa/4T,GACxDg5T,EAAoBF,EAAsBE,kBAC1CzsT,EAAOusT,EAAsBvsT,KAE7BysT,IACFh5T,EAAEutH,iBACFxjH,EAAM8B,QAAQc,SAASJ,KAGpBxC,EA8DT,OA/EAsS,EAAUu8S,EAAoBC,GAoB9BD,EAAmB15T,UAAU8d,SAAW,SAAkBnR,GACpDA,EAAQuI,gBACVhQ,KAAKyH,QAAUA,EACf,MAAIyoG,iBAAiB,QAASlwG,KAAK+Q,SAAS,KAIhDyjT,EAAmB15T,UAAUge,WAAa,WACxC,MAAI4pG,oBAAoB,QAAS1iH,KAAK+Q,UAGxCyjT,EAAmBG,aAAe,SAAsB33T,GACtD,IAAImD,EAAO,CACTy0T,mBAAmB,EACnBzsT,KAAM,KACN+1B,OAAQ,MAGN1gC,EAASg3T,EAAmBK,kBAAkB73T,EAAMQ,QACxD,IAAKA,IAAWg3T,EAAmBM,mBAAmBt3T,GACpD,OAAO2C,EAGT,GAAI3C,EAAOusO,aAAa,aAAevsO,EAAOusO,aAAa,iBACzD,OAAO5pO,EAGT,GAAInD,EAAMqtH,QAAUrtH,EAAMwtH,SAAWxtH,EAAM0tH,SAAW1tH,EAAM6tH,SAC1D,OAAO1qH,EAGT,IAAIgI,EAAO3K,EAAO4pE,aAAa,QAC/BjnE,EAAK+9B,OAAS1gC,EACd2C,EAAKgI,KAAOA,EAEZ,IAAI4sT,EAAoC,IAAhB/3T,EAAM4uH,MAC1BopM,EAAa7sT,KAA6B,MAAnBA,EAAKwI,OAAO,IAAc,YAAYvO,KAAK+F,IAGtE,OADAhI,EAAKy0T,kBAAoBG,GAAqBC,EACvC70T,GAGTq0T,EAAmBK,kBAAoB,SAA2BhzP,GAChE,KAAOA,GAAI,CACT,GAAmB,MAAfA,EAAG04F,QACL,OAAO14F,EAGTA,EAAKA,EAAGP,aAIZkzP,EAAmBM,mBAAqB,SAA4Bt3T,GAClE,IAAIy3T,EAAez3T,EAAO4pE,aAAa,UACnCw5D,EAAM,WAAS50D,OAEnB,OAAQipP,GAAgBA,IAAiBr0L,EAAIljI,MAAyB,UAAjBu3T,GAGhDT,EAhFuB,CAiF9BD,GAEK,SAAS3kT,EAAUpN,GACxBA,EAAOw9D,UAAU,IAASk1P,GAC1B1yT,EAAO0xE,UAAUqgP,EAAaC,GAGzB,IAAIU,GAAkBtrL,EAAQzjE,EAAS,SAAUgvP,GAGtD,SAASD,EAAeE,GAGtB,IAAIjvT,EAASwR,EAA2B3X,KAAMm1T,EAASn6T,KAAKgF,OAQ5D,OANAmG,EAAOkvT,WAAY,EACnBlvT,EAAOmvT,kBAAoBnvT,EAAOovT,UAAUp2T,KAAKgH,GAEjDA,EAAOu1C,SAAW,WAASA,SAC3Bv1C,EAAOsB,QAAU,WAASA,QAC1BtB,EAAOivT,YAAcA,EACdjvT,EA0KT,OAvLA8R,EAAUi9S,EAAgBC,GAgB1BD,EAAep6T,UAAU8d,SAAW,SAAkBpV,GACpD,GAAIxD,KAAKq1T,UACP,MAAM,IAAIt4T,MAAM,uCAGlB,IAAIy4T,IAAmBhyT,EAAQkuM,UAE/B1xM,KAAKq1T,WAAY,EACjBr1T,KAAKwD,QAAU3I,OAAOgI,OAAO,GAAI,CAAEy1E,KAAM,KAAOt4E,KAAKwD,QAASA,GAE9DxD,KAAKs4E,MAAQ,IAAMt4E,KAAKwD,QAAQ80E,KAAO,KAAKvxE,QAAQ0uT,EAAc,KAElEz1T,KAAK01T,kBAA+C,IAA5B11T,KAAKwD,QAAQmyT,WACrC31T,KAAKgQ,iBAAmBhQ,KAAKwD,QAAQkuM,WAAa1xM,KAAKyH,SAAWzH,KAAKyH,QAAQiqM,WAE/E,IAAIz3L,OAAY,EAShB,GARIja,KAAKgQ,cACPiK,EAAY,WACHja,KAAK01T,mBACdz7S,EAAY,cAGd,WAASi2F,iBAAiBj2F,EAAWja,KAAKs1T,mBAEtCt1T,KAAK01T,kBAAoBF,EAAgB,CAC3C,IAAII,EAAM51T,KAAK07C,SACXm6Q,EAASD,EAAI1zK,SAASn7I,QAAQ,SAAU,SAAW/G,KAAKs4E,KAE5D,IAAKt4E,KAAKgQ,gBAAkB6lT,EAI1B,OAHA71T,KAAKiC,SAAWjC,KAAK81T,aAAa,MAAM,GACxC91T,KAAK07C,SAAS30C,QAAQ/G,KAAKs4E,KAAOt4E,KAAK07C,SAAS7R,OAAS,IAAM7pC,KAAKiC,WAE7D,EACEjC,KAAKgQ,eAAiB6lT,GAAUD,EAAI90Q,OAC7C9gD,KAAKiC,SAAWjC,KAAK+1T,WAAWhvT,QAAQivT,EAAe,IACvDh2T,KAAKyH,QAAQ+jT,aAAa,GAAI,MAAIlkT,MAAOtH,KAAKs4E,KAAOt4E,KAAKiC,SAAW2zT,EAAI/rR,SAU7E,GANK7pC,KAAKiC,WACRjC,KAAKiC,SAAWjC,KAAK81T,gBAGvB91T,KAAKo1T,YAAYx8S,SAAS5Y,OAErBA,KAAKwD,QAAQwsD,OAChB,OAAOhwD,KAAKi2T,YAIhBf,EAAep6T,UAAUge,WAAa,WACpC,WAAS4pG,oBAAoB,WAAY1iH,KAAKs1T,mBAC9C,WAAS5yM,oBAAoB,aAAc1iH,KAAKs1T,mBAChDt1T,KAAKq1T,WAAY,EACjBr1T,KAAKo1T,YAAYt8S,cAGnBo8S,EAAep6T,UAAUuV,gBAAkB,WACzC,IAiIkBo+B,EAAUynR,EAAUC,EAhItC,MAAO,IAgIW1nR,EAjIQzuC,KAAK07C,SAASjN,SAiIZynR,EAjIsBl2T,KAAK07C,SAASw6Q,SAiI1BC,EAjIoCn2T,KAAK07C,SAASy6Q,KAkInF1nR,EAAW,KAAOynR,GAAYC,EAAO,IAAMA,EAAO,KAjIlCn2T,KAAKs4E,MAG5B48O,EAAep6T,UAAUyN,SAAW,SAAkBtG,GACpD,IAAIssD,EAAOzsD,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,GAC3Es0T,EAAe7nQ,EAAK7lD,QACpBA,OAA2B9K,IAAjBw4T,GAAoCA,EAC9CC,EAAe9nQ,EAAKxnD,QACpBA,OAA2BnJ,IAAjBy4T,GAAqCA,EAEnD,GAAIp0T,GAAYq0T,EAAYl0T,KAAKH,GAE/B,OADAjC,KAAK07C,SAASvzC,KAAOlG,GACd,EAGT,IAAKjC,KAAKq1T,UACR,OAAO,EAKT,GAFApzT,EAAWjC,KAAK81T,aAAa7zT,GAAY,IAErCjC,KAAKiC,WAAaA,IAAa8E,EACjC,OAAO,EAGT/G,KAAKiC,SAAWA,EAEhB,IAAIwG,EAAMzI,KAAKs4E,KAAOr2E,EAetB,MAbiB,KAAbA,GAA2B,MAARwG,IACrBA,EAAMA,EAAI5I,MAAM,GAAI,IAGlBG,KAAKgQ,eACPvH,EAAMA,EAAI1B,QAAQ,KAAM,KACxB/G,KAAKyH,QAAQV,EAAU,eAAiB,aAAa,GAAI,MAAIO,MAAOmB,IAC3DzI,KAAK01T,iBACda,EAAWv2T,KAAK07C,SAAUz5C,EAAU8E,GAEpC/G,KAAK07C,SAAS74C,OAAO4F,IAGnBC,GACK1I,KAAKi2T,SAASh0T,IAMzBizT,EAAep6T,UAAUmV,aAAe,WACtCjQ,KAAKyH,QAAQ+uT,QAGftB,EAAep6T,UAAU4M,SAAW,SAAkBJ,GACpD,MAAIA,MAAQA,GAGd4tT,EAAep6T,UAAUye,SAAW,SAAkBra,EAAKN,GACzD,IAAIiS,EAAQhW,OAAOgI,OAAO,GAAI7C,KAAKyH,QAAQoJ,OACvC4lT,EAAYz2T,KAAK07C,SACjBwmG,EAAWu0K,EAAUv0K,SACrBr4G,EAAS4sR,EAAU5sR,OACnBiX,EAAO21Q,EAAU31Q,KAErBjwC,EAAM3R,GAAON,EACboB,KAAKyH,QAAQ+jT,aAAa36S,EAAO,KAAM,GAAKqxI,EAAWr4G,EAASiX,IAGlEo0Q,EAAep6T,UAAUqe,SAAW,SAAkBja,GAEpD,OADYrE,OAAOgI,OAAO,GAAI7C,KAAKyH,QAAQoJ,OAC9B3R,IAGfg2T,EAAep6T,UAAUi7T,SAAW,WAClC,OAAO/1T,KAAK07C,SAASoF,KAAKx7C,OAAO,IAGnC4vT,EAAep6T,UAAUg7T,aAAe,SAAsB7zT,EAAUy0T,GACtE,IAAIp+O,OAAO,EAcX,OAZKr2E,IACCjC,KAAKgQ,gBAAkBhQ,KAAK01T,kBAAoBgB,GAClDz0T,EAAWjC,KAAK07C,SAASwmG,SAAWliJ,KAAK07C,SAAS7R,OAClDyuC,EAAOt4E,KAAKs4E,KAAKvxE,QAAQkwM,EAAe,IACnCh1M,EAASoP,QAAQinE,KACpBr2E,EAAWA,EAASqD,OAAOgzE,EAAK19E,UAGlCqH,EAAWjC,KAAK+1T,YAIb,IAAM9zT,EAAS8E,QAAQivT,EAAe,KAG/Cd,EAAep6T,UAAUy6T,UAAY,WACrBv1T,KAAK81T,iBACH91T,KAAKiC,UACnBjC,KAAKi2T,YAITf,EAAep6T,UAAUm7T,SAAW,SAAkBU,GACpD,IAAI10T,EAAWjC,KAAKiC,SAAWjC,KAAK81T,aAAaa,GAEjD,QAAO32T,KAAKwD,QAAQqV,cAAe7Y,KAAKwD,QAAQqV,aAAa5W,IAGxDizT,EAxLqC,CAyL5C,KAAU/uP,EAAO3wD,OAAS,CAAC++S,GAAc3qL,GAEvCosL,EAAgB,eAEhBP,EAAe,aAEfx+G,EAAgB,MAEhBq/G,EAAc,+BAElB,SAASC,EAAW76Q,EAAUz5C,EAAU8E,GACtC,GAAIA,EAAS,CACX,IAAI6vT,EAAQl7Q,EAASvzC,KAAKpB,QAAQ,qBAAsB,IACxD20C,EAAS30C,QAAQ6vT,EAAQ,IAAM30T,QAE/By5C,EAASoF,KAAO,IAAM7+C,I,4CCvT1B,sqCAgBA,SAAS40T,EAAa1G,EAAiB/2O,GACrC,IAAIvxB,EAAW,IAAI,IAAKsoQ,EAAgB9hT,UAAU7P,IAAI,mBAAkB2xT,EAAgB9hT,UAAU7P,IAAI,oBACtG2xT,EAAgB9hT,UAAUs1H,iBAAiB,IAAM97E,GAEjD,IAAI7qB,EAAMo8C,EAAGvxB,GAoBb,OAlBAsoQ,EAAgB6C,UAAS,WACvB,IAAI9iQ,EAAYigQ,EAAgB9hT,UAAU7P,IAAI,iBAC1Cs4T,EAAuB5mQ,EAAUkX,aAAa,KAC9C2vP,EAAqB7mQ,EAAUkX,aAAa,YAC5C6hC,EAAaphD,EAASwX,QAAQ77D,QAAQylG,WAErCA,IACHA,EAAa,CAAC,IAAK,SAGrBA,EAAW9hG,SAAQ,SAAUiP,GAC3B,OAAO85C,EAAUgpP,kBAAkB9iS,EAAO0gT,EAAsB,QAElE7tN,EAAW9hG,SAAQ,SAAUiP,GAC3B,OAAO85C,EAAUgpP,kBAAkB9iS,EAAQ,UAAW2gT,EAAoB,kBAIvE/5R,EAGT,SAASptB,EAAUugT,EAAiB/2O,GAClC,QAAWx7E,IAAPw7E,GAAkC,mBAAPA,EAAmB,CAEhD,KADe,0EASjB,GALA+2O,EAAgB/7O,gBAAgB,OAChC+7O,EAAgB/7O,gBAAgB,QAChC+7O,EAAgB/7O,gBAAgB,QAChC+7O,EAAgB/7O,gBAAgB,aAEHx2E,IAAzB,WAASouE,OAAO2vI,KAAoB,CACtC,IAAIilE,EAAa,YAAqB,QACtCA,EAAW18P,KAAK,2DAChB,IAAIolI,EAAS6mK,EAAgB9hT,UAAU7P,IAAI,KAG3C,OAAO8qJ,EAAOg8E,UAAU,gBAAgBniO,MAAK,SAAU6zT,GACrD,OAAO1tK,EAAOg8E,UAAU,OAAQ0xF,GAAU7zT,MAAK,SAAUu4M,GACvD,OAAOpyD,EAAO01G,WAAWtjD,GAAUv4M,MAAK,SAAU8zT,GAEhD,OADA,WAASjrP,OAAO2vI,KAAOs7G,EAChBJ,EAAa1G,EAAiB/2O,MACpC,WACD,OAAOwnM,EAAW18P,KAAK,2CAExB,WACD,OAAO08P,EAAW18P,KAXM,gEAWqBnd,QAAQ,WAAY,eAElE,WACD,OAAO65Q,EAAW18P,KAdQ,gEAcmBnd,QAAQ,WAAY,oBAIrE,OAAO/K,EAAQC,QAAQ46T,EAAa1G,EAAiB/2O,IA5EvD,2C,kPCQW89O,EAAmB,WAK5B,SAASA,EAAiBn3T,GAGxBC,KAAK61E,QAAU91E,EAwBjB,OA/BAm3T,EAAiB1hT,OAAS,WACxB,MAAO,CAAC,MASV0hT,EAAiBp8T,UAAU+wR,OAAS,SAAgBjtR,EAAOu4T,EAAat3S,EAAQqgQ,GAC9E,OAAIthR,SAAmE,iBAAVA,GAAuC,KAAjBA,EAAM+nD,OAChF/nD,EAGLu4T,GAA6C,mBAAvBA,EAAYv3S,OAC7Bu3S,EAAYv3S,OAAOhhB,IACjBshR,EACQ,YAAqB,QAC3Bh8P,KAAK,uIAEhBg8P,EAAKlgR,KAAK61E,QAAQqqM,GAAGi3C,EAAat3S,GAAU7f,KAAK61E,QAAQviD,aAGtC,iBAAV10B,GAAsB0iB,MAAM1iB,KAAW,YAAUA,KAC1DA,EAAQ,IAAIya,KAAKza,IAGZshR,EAAGtgQ,OAAOhhB,KAGZs4T,EAhCqB,GAmCnBE,EAAoB,WAK7B,SAASA,EAAkBC,GAGzBr3T,KAAKq3T,sBAAwBA,EAqB/B,OA5BAD,EAAkB5hT,OAAS,WACzB,MAAO,CAAC,0BASV4hT,EAAkBt8T,UAAUqE,KAAO,SAAcg4C,EAAS9S,GACxDrkC,KAAKq3T,sBAAsBl4T,KAAKg4C,EAAS9S,EAAQ,8BAEjD,IAAI0sH,EAAmB55G,EAAQ45G,iBAE/B,IAAIA,EAAiBumK,UAArB,CAGAvmK,EAAiBumK,WAAY,EAE7B,IAAIrmK,EAAaF,EAAiBE,WAClCF,EAAiBE,WAAa,IAAI,iBAAeA,EAAY,KAAMF,EAAiBtsI,KAAM,CAACwsI,GAAY9sJ,OAAO4sJ,EAAiBtsI,SAGjI2yS,EAAkBt8T,UAAU4qE,OAAS,SAAgBvuB,EAAS9S,GAC5DrkC,KAAKq3T,sBAAsB3xP,OAAOvuB,EAAS9S,IAGtC+yR,EA7BsB,I,wNCpCpBG,EAAmB,WAK5B,SAASA,EAAiBx3T,GAGxBC,KAAK61E,QAAU91E,EAoBjB,OA3BAw3T,EAAiB/hT,OAAS,WACxB,MAAO,CAAC,MASV+hT,EAAiBz8T,UAAU+wR,OAAS,SAAgBjtR,EAAO44T,EAAa33S,EAAQ+/P,GAC9E,OAAIhhR,SAAmE,iBAAVA,GAAuC,KAAjBA,EAAM+nD,OAChF/nD,EAGL44T,GAA6C,mBAAvBA,EAAY53S,OAC7B43S,EAAY53S,OAAOhhB,IACjBghR,EACQ,YAAqB,QAC3B17P,KAAK,uIAEhB07P,EAAK5/Q,KAAK61E,QAAQ+pM,GAAG43C,EAAa33S,GAAU7f,KAAK61E,QAAQviD,aAGpDssP,EAAGhgQ,OAAOhhB,KAGZ24T,EA5BqB,GA+BnBE,EAAoB,WAK7B,SAASA,EAAkBJ,GAGzBr3T,KAAKq3T,sBAAwBA,EAqB/B,OA5BAI,EAAkBjiT,OAAS,WACzB,MAAO,CAAC,0BASViiT,EAAkB38T,UAAUqE,KAAO,SAAcg4C,EAAS9S,GACxDrkC,KAAKq3T,sBAAsBl4T,KAAKg4C,EAAS9S,EAAQ,8BAEjD,IAAI0sH,EAAmB55G,EAAQ45G,iBAE/B,IAAIA,EAAiBumK,UAArB,CAGAvmK,EAAiBumK,WAAY,EAE7B,IAAIrmK,EAAaF,EAAiBE,WAClCF,EAAiBE,WAAa,IAAI,iBAAeA,EAAY,KAAMF,EAAiBtsI,KAAM,CAACwsI,GAAY9sJ,OAAO4sJ,EAAiBtsI,SAGjIgzS,EAAkB38T,UAAU4qE,OAAS,SAAgBvuB,EAAS9S,GAC5DrkC,KAAKq3T,sBAAsB3xP,OAAOvuB,EAAS9S,IAGtCozR,EA7BsB,I,iNChCpBC,EAAmB,WAK5B,SAASA,EAAiBtlS,GAGxBpyB,KAAK61E,QAAUzjD,EAejB,OAtBAslS,EAAiBliT,OAAS,WACxB,MAAO,CAAC,MASVkiT,EAAiB58T,UAAU+wR,OAAS,SAAgBjtR,GAClD,OAAIA,SAAmE,iBAAVA,GAAuC,KAAjBA,EAAM+nD,OAChF/nD,GAGY,iBAAVA,GAAsB0iB,MAAM1iB,KAAWmlD,OAAOkzB,UAAUr4E,KACjEA,EAAQ,IAAIya,KAAKza,IAGZoB,KAAK61E,QAAQQ,gBAAgBz3E,KAG/B84T,EAvBqB,GA0BnBC,EAAoB,WAK7B,SAASA,EAAkBN,GAGzBr3T,KAAKq3T,sBAAwBA,EAqB/B,OA5BAM,EAAkBniT,OAAS,WACzB,MAAO,CAAC,0BASVmiT,EAAkB78T,UAAUqE,KAAO,SAAcg4C,EAAS9S,GACxDrkC,KAAKq3T,sBAAsBl4T,KAAKg4C,EAAS9S,EAAQ,6BAA8B,+BAE/E,IAAI0sH,EAAmB55G,EAAQ45G,iBAE/B,IAAIA,EAAiBumK,UAArB,CAGAvmK,EAAiBumK,WAAY,EAE7B,IAAIrmK,EAAaF,EAAiBE,WAClCF,EAAiBE,WAAa,IAAI,iBAAeA,EAAY,KAAMF,EAAiBtsI,KAAM,CAACwsI,GAAY9sJ,OAAO4sJ,EAAiBtsI,SAGjIkzS,EAAkB78T,UAAU4qE,OAAS,SAAgBvuB,EAAS9S,GAC5DrkC,KAAKq3T,sBAAsB3xP,OAAOvuB,EAAS9S,IAGtCszR,EA7BsB,I,8CChC/B,oNAAUxxP,EAAeC,EAAS67D,EAAS2H,EAA3C,kHAaWguL,EAAkB,WAK3B,SAASA,EAAgB73T,GAGvBC,KAAK61E,QAAU91E,EAOjB,OAdA63T,EAAgBpiT,OAAS,WACvB,MAAO,CAAC,MASVoiT,EAAgB98T,UAAU+wR,OAAS,SAAgBjtR,EAAO4E,GACxD,OAAOxD,KAAK61E,QAAQx1E,GAAGzB,EAAO4E,IAGzBo0T,EAfoB,GAkBlBC,EAAiC,0BAAgB,WAAa/wP,CAAKX,EAAS,WAUrF,SAAS0xP,EAAuB9wP,GAG9B/mE,KAAK+mE,QAAUA,EAKjB,OAjBA8wP,EAAuBriT,OAAS,WAC9B,MAAO,CAAC,MAAIgyD,UAGdqwP,EAAuBjxJ,iBAAmB,SAA0BxhJ,GAC1D,IAASmnB,eAAe,IAASzwB,SAAU,uBAAsB+7S,GACvEzyS,QAAUA,GASdyyS,EAAuB/8T,UAAU+4S,aAAe,aAEzCgkB,EAlB8E,KAmB/E1xP,EAEG2xP,EAA4B,0BAAgB,IAAMn1L,CAAMv8D,EAAU,WAU3E,SAAS0xP,EAAiB/wP,EAAShnE,EAAMsa,EAAI09S,GAG3C/3T,KAAK+mE,QAAUA,EACf/mE,KAAK61E,QAAU91E,EACfC,KAAKqa,GAAKA,EACVra,KAAKg4T,WAAaD,EAqCpB,OApDAD,EAAiBtiT,OAAS,WACxB,MAAO,CAAC,MAAIgyD,QAAS,IAAM,kBAAiB,IAAa4P,GAAGygP,KAG9DC,EAAiBlxJ,iBAAmB,SAA0BxhJ,GACpD,IAASmnB,eAAe,IAASzwB,SAAU,uBAAsBg8S,GACvE1yS,QAAUA,GAYd0yS,EAAiBh9T,UAAUqE,KAAO,WAChC,IAAIwG,EAAQ3F,KAEZA,KAAKI,OAASJ,KAAKg4T,aAEfh4T,KAAKI,SACPJ,KAAKI,OAAOyzS,aAAe,SAAUjnS,EAAWqrT,GAC9CtyT,EAAMuyT,cAAcvyT,EAAM/G,MAAOgO,EAAWqrT,KAIhD,IAAIr7T,EAAoB,OAAhBoD,KAAKI,OAAkBJ,KAAKI,OAAOxB,WAAQhB,EACnDoC,KAAKwvS,aAAexvS,KAAKqa,GAAGtF,UAAU,uBAAuB,WAC3DpP,EAAMkwE,QAAQw1D,YAAY1lI,EAAMohE,QAASphE,EAAM/G,MAAwB,OAAjB+G,EAAMvF,OAAkBuF,EAAMvF,OAAOxB,WAAQhB,MAGrGoC,KAAK61E,QAAQw1D,YAAYrrI,KAAK+mE,QAAS/mE,KAAKpB,MAAOhC,IAGrDk7T,EAAiBh9T,UAAUo9T,cAAgB,SAAuBnpQ,EAAUniD,GAC1E5M,KAAK61E,QAAQw1D,YAAYrrI,KAAK+mE,QAAShY,EAAUniD,IAGnDkrT,EAAiBh9T,UAAU+4S,aAAe,SAAsB9kP,GAC9D,IAAInyD,EAAoB,OAAhBoD,KAAKI,OAAkBJ,KAAKI,OAAOxB,WAAQhB,EACnDoC,KAAK61E,QAAQw1D,YAAYrrI,KAAK+mE,QAAShY,EAAUnyD,IAGnDk7T,EAAiBh9T,UAAU4qE,OAAS,WAC9B1lE,KAAKwvS,cACPxvS,KAAKwvS,aAAa7jM,WAIfmsN,EArDoE,KAsDrE1xP,EAEG+xP,GAAoBvuL,EAAQ3H,EAAU,WAC/C,SAASk2L,EAAiBd,GAGxBr3T,KAAKq3T,sBAAwBA,EAqB/B,OAlBAc,EAAiBr9T,UAAUqE,KAAO,SAAcg4C,EAAS9S,GACvDrkC,KAAKq3T,sBAAsBl4T,KAAKg4C,EAAS9S,EAAQ,8BAEjD,IAAI0sH,EAAmB55G,EAAQ45G,iBAE/B,IAAIA,EAAiBumK,UAArB,CAGAvmK,EAAiBumK,WAAY,EAE7B,IAAIrmK,EAAaF,EAAiBE,WAClCF,EAAiBE,WAAa,IAAI,iBAAeA,EAAY,IAAKF,EAAiBtsI,KAAM,CAACwsI,GAAY9sJ,OAAO4sJ,EAAiBtsI,SAGhI0zS,EAAiBr9T,UAAU4qE,OAAS,SAAgBvuB,EAAS9S,GAC3DrkC,KAAKq3T,sBAAsB3xP,OAAOvuB,EAAS9S,IAGtC8zR,EAzBwC,GA0B5Cl2L,EAAQzsH,OAAS,CAAC,yBAAwBo0H,I,iHClIpCuqL,EAAkB,WAC3B,SAASA,KA4CT,OAxCAA,EAAgBr5T,UAAU64C,MAAQ,SAAe1zC,GAG/C,IAFA,IAAImtD,EAEKlgB,EAAOprC,UAAUlH,OAAQuyC,EAAOzsC,MAAMwsC,EAAO,EAAIA,EAAO,EAAI,GAAI3oC,EAAO,EAAGA,EAAO2oC,EAAM3oC,IAC9F4oC,EAAK5oC,EAAO,GAAKzC,UAAUyC,IAG5B6oD,EAAW3tD,SAASk0C,MAAM1vC,MAAMmpD,EAAU,CAAC,UAAYntD,EAAOsc,GAAK,KAAKpY,OAAOgpC,KAGlFgnR,EAAgBr5T,UAAUqF,KAAO,SAAcF,GAG7C,IAFA,IAAIm4T,EAEKxqQ,EAAQ9rD,UAAUlH,OAAQuyC,EAAOzsC,MAAMktD,EAAQ,EAAIA,EAAQ,EAAI,GAAIrhD,EAAQ,EAAGA,EAAQqhD,EAAOrhD,IACpG4gC,EAAK5gC,EAAQ,GAAKzK,UAAUyK,IAG7B6rT,EAAY34T,SAASU,KAAK8D,MAAMm0T,EAAW,CAAC,SAAWn4T,EAAOsc,GAAK,KAAKpY,OAAOgpC,KAGlFgnR,EAAgBr5T,UAAUopB,KAAO,SAAcjkB,GAG7C,IAFA,IAAIo4T,EAEKxqQ,EAAQ/rD,UAAUlH,OAAQuyC,EAAOzsC,MAAMmtD,EAAQ,EAAIA,EAAQ,EAAI,GAAI7gD,EAAQ,EAAGA,EAAQ6gD,EAAO7gD,IACpGmgC,EAAKngC,EAAQ,GAAKlL,UAAUkL,IAG7BqrT,EAAY54T,SAASykB,KAAKjgB,MAAMo0T,EAAW,CAAC,SAAWp4T,EAAOsc,GAAK,KAAKpY,OAAOgpC,KAGlFgnR,EAAgBr5T,UAAUgC,MAAQ,SAAemD,GAG/C,IAFA,IAAIq4T,EAEKxqQ,EAAQhsD,UAAUlH,OAAQuyC,EAAOzsC,MAAMotD,EAAQ,EAAIA,EAAQ,EAAI,GAAI7gD,EAAQ,EAAGA,EAAQ6gD,EAAO7gD,IACpGkgC,EAAKlgC,EAAQ,GAAKnL,UAAUmL,IAG7BqrT,EAAY74T,SAAS3C,MAAMmH,MAAMq0T,EAAW,CAAC,UAAYr4T,EAAOsc,GAAK,KAAKpY,OAAOgpC,KAG7EgnR,EA7CoB,I,qRCCd,EAJX,a,0DCgBW,EAdE,WACb,SAAStpB,KAWT,OATAA,EAAU/vS,UAAUy9T,iCAAmC,SAAUztB,GAC7D,OAAO,IAAI,IAAkCA,IAEjDD,EAAU/vS,UAAU09T,0BAA4B,SAAUt/N,GACtD,OAAO,IAAI,IAAoBA,IAEnC2xM,EAAU/vS,UAAU29T,kBAAoB,SAAUrwT,GAC9C,OAAO,IAAI,cAAYA,IAEpByiS,EAZK,GCeD,kBACNtiQ,IACDA,EAAU,IAAI,GAElB4nR,EAAgB/7O,gBAAgB,CAC5B,+BACA,+BACA,wCAEJ,IAAIiiE,EArBqB,SAAUpvH,GACnC,IAAIzkB,EAAS,IAAI,EACjB,OAAKykB,GAAYA,EAASrsB,OAAS,EACxB4H,EAEa,IAApBykB,EAASrsB,OACT4H,EAASykB,KAGbA,EAASzkB,GACFA,GAWUk2T,CAAuBzxS,GACpC0xS,EAAgBpwR,EAAQgwR,iCAAiCliL,GAC7D85K,EAAgB9hT,UACXs1H,iBAAiB,IAAmCg1L,GACzD,IAAIC,EAAsBrwR,EAAQiwR,0BAA0BG,EAAcptK,UAC1E4kK,EAAgB9hT,UACXs1H,iBAAiB,IAAqBi1L,GAC3C,IAAIrmP,EAAchqC,EAAQkwR,kBAAkBE,EAActxJ,qBAC1D8oJ,EAAgB9hT,UACXs1H,iBAAiB,cAAapxD,GACnC49O,EAAgB9hT,UAAUs1H,iBAAiBitE,OAAQjxM,U,yFCrCvD,6CAAIylE,EAA0C,SAAUn4B,EAAYzvC,EAAQ0B,EAAK4kE,GAC7E,IAA2H3lE,EAAvHD,EAAI4D,UAAUlH,OAAQ6D,EAAIP,EAAI,EAAIV,EAAkB,OAATsmE,EAAgBA,EAAOjpE,OAAOw0D,yBAAyB7xD,EAAQ0B,GAAO4kE,EACrH,GAAuB,iBAAZ53B,SAAoD,mBAArBA,QAAQ63B,SAAyBtlE,EAAIytC,QAAQ63B,SAAS92B,EAAYzvC,EAAQ0B,EAAK4kE,QACpH,IAAK,IAAIppE,EAAIuyC,EAAWryC,OAAS,EAAGF,GAAK,EAAGA,KAASyD,EAAI8uC,EAAWvyC,MAAI+D,GAAKP,EAAI,EAAIC,EAAEM,GAAKP,EAAI,EAAIC,EAAEX,EAAQ0B,EAAKT,GAAKN,EAAEX,EAAQ0B,KAAST,GAChJ,OAAOP,EAAI,GAAKO,GAAK5D,OAAOyD,eAAed,EAAQ0B,EAAKT,GAAIA,GAI5DosS,EAAa,WACb,SAASA,KAuBT,OArBAA,EAAU/vS,UAAU+wR,OAAS,SAAUgtC,EAAWh+S,GAC9C,OAAOg+S,EAAUh0T,QAAO,SAAUwB,GAC9B,IAAKA,EAAS+B,SACV,OAAO,EAEX,IAAI0wT,EAAgBzyT,EAAS+B,SAAS+oM,MACtC,OAAK2nH,GAA0C,IAAzBA,EAAcl+T,SAGhCk+T,EAAc9hT,SAAS,IAAmBg6L,eAC1B,OAATn2L,GAEPi+S,EAAc9hT,SAAS,IAAmB+hT,YAC3B,MAARl+S,OAKnBgwR,EAAYzlO,EAAW,CACnB,yBAAe,kCAChBylO,GAvBS,GA0BD,a,kFClCf,yDAAIzlO,EAA0C,SAAUn4B,EAAYzvC,EAAQ0B,EAAK4kE,GAC7E,IAA2H3lE,EAAvHD,EAAI4D,UAAUlH,OAAQ6D,EAAIP,EAAI,EAAIV,EAAkB,OAATsmE,EAAgBA,EAAOjpE,OAAOw0D,yBAAyB7xD,EAAQ0B,GAAO4kE,EACrH,GAAuB,iBAAZ53B,SAAoD,mBAArBA,QAAQ63B,SAAyBtlE,EAAIytC,QAAQ63B,SAAS92B,EAAYzvC,EAAQ0B,EAAK4kE,QACpH,IAAK,IAAIppE,EAAIuyC,EAAWryC,OAAS,EAAGF,GAAK,EAAGA,KAASyD,EAAI8uC,EAAWvyC,MAAI+D,GAAKP,EAAI,EAAIC,EAAEM,GAAKP,EAAI,EAAIC,EAAEX,EAAQ0B,EAAKT,GAAKN,EAAEX,EAAQ0B,KAAST,GAChJ,OAAOP,EAAI,GAAKO,GAAK5D,OAAOyD,eAAed,EAAQ0B,EAAKT,GAAIA,GAE5DulE,EAA0C,SAAU9pC,EAAG+pC,GACvD,GAAuB,iBAAZ/3B,SAAoD,mBAArBA,QAAQR,SAAyB,OAAOQ,QAAQR,SAASxR,EAAG+pC,IAEtGqN,EAAwC,SAAUC,EAASC,EAAYC,EAAGC,GAC1E,OAAO,IAAKD,IAAMA,EAAIz1E,KAAU,SAAUC,EAASC,GAC/C,SAASy1E,EAAU/yE,GAAS,IAAM6K,EAAKioE,EAAUzuE,KAAKrE,IAAW,MAAOhD,GAAKM,EAAON,IACpF,SAASwN,EAASxK,GAAS,IAAM6K,EAAKioE,EAAiB,MAAE9yE,IAAW,MAAOhD,GAAKM,EAAON,IACvF,SAAS6N,EAAKsG,GAAUA,EAAOyqD,KAAOv+D,EAAQ8T,EAAOnR,OAAS,IAAI6yE,GAAE,SAAUx1E,GAAWA,EAAQ8T,EAAOnR,UAAWuE,KAAKwuE,EAAWvoE,GACnIK,GAAMioE,EAAYA,EAAUztE,MAAMstE,EAASC,GAAc,KAAKvuE,YAGlE2uE,EAA4C,SAAUL,EAASp2D,GAC/D,IAAsG4+C,EAAG3vC,EAAGvrB,EAAGgzE,EAA3Gh4D,EAAI,CAAEi4D,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPlzE,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOmzE,KAAM,GAAIC,IAAK,IAChG,OAAOJ,EAAI,CAAE5uE,KAAMivE,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXxzE,SAA0BmzE,EAAEnzE,OAAOoC,UAAY,WAAa,OAAOd,OAAU6xE,EACvJ,SAASK,EAAK9yE,GAAK,OAAO,SAAU6kE,GAAK,OACzC,SAAckO,GACV,GAAIpY,EAAG,MAAM,IAAIjiD,UAAU,mCAC3B,KAAO+B,GAAG,IACN,GAAIkgD,EAAI,EAAG3vC,IAAMvrB,EAAIurB,EAAU,EAAR+nD,EAAG,GAAS,SAAWA,EAAG,GAAK,QAAU,YAActzE,EAAIA,EAAE7D,KAAKovB,EAAG+nD,EAAG,KAAK3X,KAAM,OAAO37D,EAEjH,OADIurB,EAAI,EAAGvrB,IAAGszE,EAAK,CAAC,EAAGtzE,EAAED,QACjBuzE,EAAG,IACP,KAAK,EAAG,KAAK,EAAGtzE,EAAIszE,EAAI,MACxB,KAAK,EAAc,OAAXt4D,EAAEi4D,QAAgB,CAAElzE,MAAOuzE,EAAG,GAAI3X,MAAM,GAChD,KAAK,EAAG3gD,EAAEi4D,QAAS1nD,EAAI+nD,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKt4D,EAAEo4D,IAAItd,MAAO96C,EAAEm4D,KAAKrd,MAAO,SACxC,QACI,KAAM91D,EAAIgb,EAAEm4D,MAAMnzE,EAAIA,EAAEjE,OAAS,GAAKiE,EAAEA,EAAEjE,OAAS,KAAkB,IAAVu3E,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEt4D,EAAI,EAAG,SACjG,GAAc,IAAVs4D,EAAG,MAActzE,GAAMszE,EAAG,GAAKtzE,EAAE,IAAMszE,EAAG,GAAKtzE,EAAE,IAAM,CAAEgb,EAAEi4D,MAAQK,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYt4D,EAAEi4D,MAAQjzE,EAAE,GAAI,CAAEgb,EAAEi4D,MAAQjzE,EAAE,GAAIA,EAAIszE,EAAI,MAC7D,GAAItzE,GAAKgb,EAAEi4D,MAAQjzE,EAAE,GAAI,CAAEgb,EAAEi4D,MAAQjzE,EAAE,GAAIgb,EAAEo4D,IAAI/2E,KAAKi3E,GAAK,MACvDtzE,EAAE,IAAIgb,EAAEo4D,IAAItd,MAChB96C,EAAEm4D,KAAKrd,MAAO,SAEtBwd,EAAKh3D,EAAKngB,KAAKu2E,EAAS13D,GAC1B,MAAOje,GAAKu2E,EAAK,CAAC,EAAGv2E,GAAIwuB,EAAI,EAAK,QAAU2vC,EAAIl7D,EAAI,EACtD,GAAY,EAARszE,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEvzE,MAAOuzE,EAAG,GAAKA,EAAG,QAAK,EAAQ3X,MAAM,GArB9B/wD,CAAK,CAACrK,EAAG6kE,OA0BzD4mO,EAAa,WACb,SAASA,EAAUl9I,GACf3tJ,KAAK2tJ,cAAgBA,EACrB3tJ,KAAK6a,KAAO,KAoDhB,OAlDAhgB,OAAOyD,eAAeusS,EAAU/vS,UAAW,aAAc,CACrD0D,IAAK,WACD,OAAqB,OAAdwB,KAAK6a,WAA+Bjd,IAAdoC,KAAK6a,MAEtCtc,YAAY,EACZ8C,cAAc,IAElBwpS,EAAU/vS,UAAUwuD,SAAW,WAC3B,OAAOgoB,EAAUtxE,UAAM,OAAQ,GAAQ,WACnC,IACIgqB,EADArkB,EAAQ3F,KAEZ,OAAO4xE,EAAY5xE,MAAM,SAAUo8P,GAC/B,OAAQA,EAAGtqL,OACP,KAAK,EAkBD,OAjBA9xE,KAAK2tJ,cAAcz6E,mBAAmB,mBAAmB,WACrDvtE,EAAMkV,KAAO,QAEjB7a,KAAK2tJ,cAAcz6E,mBAAmB,iBAAiB,WAAc,OAAO5B,EAAU3rE,OAAO,OAAQ,GAAQ,WACzG,IAAIqkB,EACJ,OAAO4nD,EAAY5xE,MAAM,SAAUo8P,GAC/B,OAAQA,EAAGtqL,OACP,KAAK,EAED,OADA9nD,EAAKhqB,KACE,CAAC,EAAGA,KAAK2tJ,cAAc/yI,WAClC,KAAK,EAED,OADAoP,EAAGnP,KAAOuhP,EAAGrqL,OACN,CAAC,aAIxB/nD,EAAKhqB,KACE,CAAC,EAAGA,KAAK2tJ,cAAc/yI,WAClC,KAAK,EAED,OADAoP,EAAGnP,KAAOuhP,EAAGrqL,OACN,CAAC,WAK5B84N,EAAU/vS,UAAU23E,MAAQ,WACxBzyE,KAAK2tJ,cAAcl7E,SAEvBo4N,EAAU/vS,UAAU83E,OAAS,WACzB5yE,KAAK2tJ,cAAc/6E,UAEvBi4N,EAAYzlO,EAAW,CACnB,aACA,wBAAc,8BACdpB,EAAW,oBAAqB,CAAC,OAClC6mO,GAtDS,GAyDD,a,yFCvGfnvS,EAAOD,QAAU,2M,kFCAjB,uBACQgzN,EADR,mFAAIC,GACID,EAAgB5zN,OAAOkd,gBACtB,CAAEC,UAAW,cAAgBtX,OAAS,SAAUvC,EAAGwT,GAAKxT,EAAE6Z,UAAYrG,IACvE,SAAUxT,EAAGwT,GAAK,IAAK,IAAI/U,KAAK+U,EAAOA,EAAE5W,eAAe6B,KAAIuB,EAAEvB,GAAK+U,EAAE/U,KAClE,SAAUuB,EAAGwT,GAEhB,SAASszF,IAAOjlG,KAAKgB,YAAc7C,EADnCswN,EAActwN,EAAGwT,GAEjBxT,EAAErD,UAAkB,OAAN6W,EAAa9W,OAAOoE,OAAO0S,IAAMszF,EAAGnqG,UAAY6W,EAAE7W,UAAW,IAAImqG,KAGnF7/B,EAA0C,SAAUn4B,EAAYzvC,EAAQ0B,EAAK4kE,GAC7E,IAA2H3lE,EAAvHD,EAAI4D,UAAUlH,OAAQ6D,EAAIP,EAAI,EAAIV,EAAkB,OAATsmE,EAAgBA,EAAOjpE,OAAOw0D,yBAAyB7xD,EAAQ0B,GAAO4kE,EACrH,GAAuB,iBAAZ53B,SAAoD,mBAArBA,QAAQ63B,SAAyBtlE,EAAIytC,QAAQ63B,SAAS92B,EAAYzvC,EAAQ0B,EAAK4kE,QACpH,IAAK,IAAIppE,EAAIuyC,EAAWryC,OAAS,EAAGF,GAAK,EAAGA,KAASyD,EAAI8uC,EAAWvyC,MAAI+D,GAAKP,EAAI,EAAIC,EAAEM,GAAKP,EAAI,EAAIC,EAAEX,EAAQ0B,EAAKT,GAAKN,EAAEX,EAAQ0B,KAAST,GAChJ,OAAOP,EAAI,GAAKO,GAAK5D,OAAOyD,eAAed,EAAQ0B,EAAKT,GAAIA,GAE5D6yE,EAAwC,SAAUC,EAASC,EAAYC,EAAGC,GAC1E,OAAO,IAAKD,IAAMA,EAAIz1E,KAAU,SAAUC,EAASC,GAC/C,SAASy1E,EAAU/yE,GAAS,IAAM6K,EAAKioE,EAAUzuE,KAAKrE,IAAW,MAAOhD,GAAKM,EAAON,IACpF,SAASwN,EAASxK,GAAS,IAAM6K,EAAKioE,EAAiB,MAAE9yE,IAAW,MAAOhD,GAAKM,EAAON,IACvF,SAAS6N,EAAKsG,GAAUA,EAAOyqD,KAAOv+D,EAAQ8T,EAAOnR,OAAS,IAAI6yE,GAAE,SAAUx1E,GAAWA,EAAQ8T,EAAOnR,UAAWuE,KAAKwuE,EAAWvoE,GACnIK,GAAMioE,EAAYA,EAAUztE,MAAMstE,EAASC,GAAc,KAAKvuE,YAGlE2uE,EAA4C,SAAUL,EAASp2D,GAC/D,IAAsG4+C,EAAG3vC,EAAGvrB,EAAGgzE,EAA3Gh4D,EAAI,CAAEi4D,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPlzE,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOmzE,KAAM,GAAIC,IAAK,IAChG,OAAOJ,EAAI,CAAE5uE,KAAMivE,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXxzE,SAA0BmzE,EAAEnzE,OAAOoC,UAAY,WAAa,OAAOd,OAAU6xE,EACvJ,SAASK,EAAK9yE,GAAK,OAAO,SAAU6kE,GAAK,OACzC,SAAckO,GACV,GAAIpY,EAAG,MAAM,IAAIjiD,UAAU,mCAC3B,KAAO+B,GAAG,IACN,GAAIkgD,EAAI,EAAG3vC,IAAMvrB,EAAIurB,EAAU,EAAR+nD,EAAG,GAAS,SAAWA,EAAG,GAAK,QAAU,YAActzE,EAAIA,EAAE7D,KAAKovB,EAAG+nD,EAAG,KAAK3X,KAAM,OAAO37D,EAEjH,OADIurB,EAAI,EAAGvrB,IAAGszE,EAAK,CAAC,EAAGtzE,EAAED,QACjBuzE,EAAG,IACP,KAAK,EAAG,KAAK,EAAGtzE,EAAIszE,EAAI,MACxB,KAAK,EAAc,OAAXt4D,EAAEi4D,QAAgB,CAAElzE,MAAOuzE,EAAG,GAAI3X,MAAM,GAChD,KAAK,EAAG3gD,EAAEi4D,QAAS1nD,EAAI+nD,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKt4D,EAAEo4D,IAAItd,MAAO96C,EAAEm4D,KAAKrd,MAAO,SACxC,QACI,KAAM91D,EAAIgb,EAAEm4D,MAAMnzE,EAAIA,EAAEjE,OAAS,GAAKiE,EAAEA,EAAEjE,OAAS,KAAkB,IAAVu3E,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEt4D,EAAI,EAAG,SACjG,GAAc,IAAVs4D,EAAG,MAActzE,GAAMszE,EAAG,GAAKtzE,EAAE,IAAMszE,EAAG,GAAKtzE,EAAE,IAAM,CAAEgb,EAAEi4D,MAAQK,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYt4D,EAAEi4D,MAAQjzE,EAAE,GAAI,CAAEgb,EAAEi4D,MAAQjzE,EAAE,GAAIA,EAAIszE,EAAI,MAC7D,GAAItzE,GAAKgb,EAAEi4D,MAAQjzE,EAAE,GAAI,CAAEgb,EAAEi4D,MAAQjzE,EAAE,GAAIgb,EAAEo4D,IAAI/2E,KAAKi3E,GAAK,MACvDtzE,EAAE,IAAIgb,EAAEo4D,IAAItd,MAChB96C,EAAEm4D,KAAKrd,MAAO,SAEtBwd,EAAKh3D,EAAKngB,KAAKu2E,EAAS13D,GAC1B,MAAOje,GAAKu2E,EAAK,CAAC,EAAGv2E,GAAIwuB,EAAI,EAAK,QAAU2vC,EAAIl7D,EAAI,EACtD,GAAY,EAARszE,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEvzE,MAAOuzE,EAAG,GAAKA,EAAG,QAAK,EAAQ3X,MAAM,GArB9B/wD,CAAK,CAACrK,EAAG6kE,OA0BzD4mO,EAAa,SAAUj8E,GAEvB,SAASi8E,IACL,OAAkB,OAAXj8E,GAAmBA,EAAO3qN,MAAMjE,KAAM8B,YAAc9B,KA6B/D,OA/BA0uN,EAAUm8E,EAAWj8E,GAIrBi8E,EAAU/vS,UAAUk4E,YAAc,WAC9B,OAAO1B,EAAUtxE,UAAM,OAAQ,GAAQ,WACnC,OAAO4xE,EAAY5xE,MAAM,SAAUgqB,GAC/B,IACIhqB,KAAK2tJ,cAAc36E,cAEvB,MAAOxzE,GACH,GAAkB,mBAAdA,EAAI1C,MACJ,MAAM0C,EAEVQ,KAAKyyE,QAET,MAAO,CAAC,UAIpB53E,OAAOyD,eAAeusS,EAAU/vS,UAAW,kBAAmB,CAC1D0D,IAAK,WACD,OAAO0S,KAAKE,UAAUpR,KAAK6a,UAAMjd,EAAW,IAEhDW,YAAY,EACZ8C,cAAc,IAElBwpS,EAAYzlO,EAAW,CACnB,aACA,wBAAc,+BACfylO,GA/BS,CAiCd,WACa,a,yFCvFfnvS,EAAOD,QAAU,0L,mDCAjB,qLAAIoF,EAA4B,mBAAXnC,QAAoD,iBAApBA,OAAOoC,SAAwB,SAAUC,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAXrC,QAAyBqC,EAAIC,cAAgBtC,QAAUqC,IAAQrC,OAAO5D,UAAY,gBAAkBiG,GAI3Pi4T,EAAY,CACrBt9Q,SAAU/7C,OAAO+7C,SACjBj0C,QAAS9H,OAAO8H,QAChByoG,iBAAkB,SAA0Bj2F,EAAWgN,EAAUyoR,GAC/D1vS,KAAKgsE,OAAOkkC,iBAAiBj2F,EAAWgN,EAAUyoR,IAEpDhtL,oBAAqB,SAA6BzoG,EAAWgN,EAAUyoR,GACrE1vS,KAAKgsE,OAAO02C,oBAAoBzoG,EAAWgN,EAAUyoR,IAGvDjrB,YAAa9kR,OAAO8kR,YACpBtxJ,sBAAuB,SAA+BlsG,GACpD,OAAOjnB,KAAKgsE,OAAOmnD,sBAAsBlsG,KAI7C,GAA6B,oBAAlBgyS,cAA+B,MAGtBr7T,IAFP,aAEFF,MACP7C,OAAOyD,eAAewmB,SAAShqB,UAAW,OAAQ,CAChD0D,IAAK,WACH,IAAId,EAAOsC,KAAKgf,WAAWuI,MAAM,6BAA6B,GAG9D,OADA1sB,OAAOyD,eAAe0B,KAAM,OAAQ,CAAEpB,MAAOlB,IACtCA,KAMf,GAA6B,oBAAlBu7T,cACT,KAAM,cAAe58T,SAASC,cAAc,OAASD,SAASq9C,mBAAqB,cAAer9C,SAASq9C,gBAAgB,6BAA8B,MAAO,CAC9J,IACIw/Q,EAAUh8S,OAAOpiB,UAAU6rD,KAC3BwyQ,EAAaz4T,MAAM5F,UAAUuW,QAC7B+nT,EAAa,GAEbC,EAAQ,SAAe/7T,EAAMG,GAC/BuC,KAAKtC,KAAOJ,EACZ0C,KAAKm0D,KAAOmlQ,aAAah8T,GACzB0C,KAAKvC,QAAUA,GAGb87T,EAAwB,SAA+Bn0O,EAAWt+D,GACpE,GAAc,KAAVA,EACF,MAAM,IAAIuyS,EAAM,aAAc,8CAGhC,GAAI,KAAKj3T,KAAK0kB,GACZ,MAAM,IAAIuyS,EAAM,wBAAyB,wCAG3C,OAAOF,EAAWn+T,KAAKoqF,EAAWt+D,IAGhC0yS,EAAY,SAAmB/nN,GAIjC,IAHA,IAAIgoN,EAAiBP,EAAQl+T,KAAKy2G,EAAKrqC,aAAa,UAAY,IAC5DkwD,EAAUmiM,EAAiBA,EAAenuS,MAAM,OAAS8tS,EAEpD1+T,EAAI,EAAGiI,EAAK20H,EAAQ18H,OAAQF,EAAIiI,IAAMjI,EAC7CsF,KAAK9E,KAAKo8H,EAAQ58H,IAGpBsF,KAAK05T,iBAAmB,WACtBjoN,EAAK/0G,aAAa,QAASsD,KAAKgf,cAIhC26S,EAAiBH,EAAmB,UAAI,GAE5CH,EAAe,UAAIt8T,MAAe,UAElC48T,EAAen5T,KAAO,SAAU9F,GAC9B,OAAOsF,KAAKtF,IAAM,MAGpBi/T,EAAevmN,SAAW,SAAUtsF,GAElC,OAA+C,IAAxCyyS,EAAsBv5T,KAD7B8mB,GAAS,KAIX6yS,EAAe7oT,IAAM,WACnB,IAAI6Y,EAAS7nB,UACTpH,EAAI,EACJiI,EAAKgnB,EAAO/uB,OACZksB,OAAQ,EACR8yS,GAAU,EAEd,GACE9yS,EAAQ6C,EAAOjvB,GAAK,IACwB,IAAxC6+T,EAAsBv5T,KAAM8mB,KAC9B9mB,KAAK9E,KAAK4rB,GACV8yS,GAAU,WAEHl/T,EAAIiI,GAEXi3T,GACF55T,KAAK05T,oBAITC,EAAe7pR,OAAS,WACtB,IAAInmB,EAAS7nB,UACTpH,EAAI,EACJiI,EAAKgnB,EAAO/uB,OACZksB,OAAQ,EACR8yS,GAAU,EACVjwT,OAAQ,EAEZ,GAGE,IAFAmd,EAAQ6C,EAAOjvB,GAAK,GACpBiP,EAAQ4vT,EAAsBv5T,KAAM8mB,IAClB,IAAXnd,GACL3J,KAAKmX,OAAOxN,EAAO,GACnBiwT,GAAU,EACVjwT,EAAQ4vT,EAAsBv5T,KAAM8mB,WAE7BpsB,EAAIiI,GAEXi3T,GACF55T,KAAK05T,oBAITC,EAAezwN,OAAS,SAAUpiF,EAAO4pB,GACvC5pB,GAAS,GAET,IAAI/W,EAAS/P,KAAKozG,SAAStsF,GACvB5L,EAASnL,GAAmB,IAAV2gC,GAAkB,UAAqB,IAAVA,GAAmB,MAMtE,OAJIx1B,GACFlb,KAAKkb,GAAQ4L,IAGD,IAAV4pB,IAA4B,IAAVA,EACbA,GAGD3gC,GAGV4pT,EAAe36S,SAAW,WACxB,OAAOhf,KAAKgI,KAAK,MAGnBnN,OAAOyD,eAAekpE,QAAQ1sE,UAAW,YAAa,CACpD0D,IAAK,WACH,OAAO,IAAIg7T,EAAUx5T,OAEvBzB,YAAY,EACZ8C,cAAc,QAEX,CACL,IAAIw4T,EAAcx9T,SAASC,cAAc,KAGzC,GAFAu9T,EAAYz0O,UAAUt0E,IAAI,KAAM,OAE3B+oT,EAAYz0O,UAAUguB,SAAS,MAAO,CACzC,IAAI0mN,EAAe,SAAsB5+S,GACvC,IAAIizG,EAAW+hH,aAAap1O,UAAUogB,GAEtCg1N,aAAap1O,UAAUogB,GAAU,SAAU4L,GACzC,IAAK,IAAIpsB,EAAI,EAAGiI,EAAKb,UAAUlH,OAAQF,EAAIiI,IAAMjI,EAC/CosB,EAAQhlB,UAAUpH,GAClByzH,EAASnzH,KAAKgF,KAAM8mB,KAK1BgzS,EAAa,OACbA,EAAa,UAKf,GAFAD,EAAYz0O,UAAU8jB,OAAO,MAAM,GAE/B2wN,EAAYz0O,UAAUguB,SAAS,MAAO,CACxC,IAAI68H,EAAUC,aAAap1O,UAAUouG,OAErCgnI,aAAap1O,UAAUouG,OAAS,SAAUpiF,EAAO4pB,GAC/C,OAAI,KAAK5uC,YAAc9B,KAAKozG,SAAStsF,KAAY4pB,EACxCA,EAGFu/L,EAAQj1O,KAAKgF,KAAM8mB,IAI9B+yS,EAAc,KAIlB,GAA6B,oBAAlBZ,cAA+B,CACxC,IAAIc,EAAiB,SAAwB76T,EAAKN,GAIhD,IAHA,IAAIlE,EAAI,EACJ0E,EAAI46T,EAASp/T,OACbmV,EAAS,GACNrV,EAAI0E,EAAG1E,IACRs/T,EAASt/T,GAAGwE,IAAQN,GACtBmR,EAAO7U,KAAK8+T,EAASt/T,IAGzB,OAAOqV,GAGLkqT,EAAgB,SAAuB38T,EAAMI,GAG/C,IAFA,IACI0/P,EADA1iQ,EAAIs/T,EAASp/T,OAEVF,MACL0iQ,EAAQ48D,EAASt/T,IACPw/T,WAAa58T,QAAkB,IAATI,GAAmB0/P,EAAM1/P,MAAQA,GAC/Ds8T,EAAS7iT,OAAOzc,EAAG,IAUzB;;AAJI,gBAAiBiF,SAAW,IAC9BA,OAAO8kR,YAAc,IAGnB,QAAS9kR,OAAO8kR,cAAgB,EAAO,CACzC,IAAI01C,EAAY9gT,KAAKC,MAEjBmrQ,YAAY21C,QAAU31C,YAAY21C,OAAOC,kBAC3CF,EAAY11C,YAAY21C,OAAOC,iBAGjC16T,OAAO8kR,YAAYnrQ,IAAM,WACvB,OAAOD,KAAKC,MAAQ6gT,GAIN9gT,KAAKC,IAAMD,KAAKC,MAAS,IAAID,KAA/C,IACI2gT,EAAW,GACXM,EAAc,GAIb36T,OAAO8kR,YAAYj1C,OACtB7vO,OAAO8kR,YAAYj1C,KAAO7vO,OAAO8kR,YAAY81C,YAAc,SAAU78T,GACnE,IAAI8xO,EAAO,CACT9xO,KAAMA,EACNw8T,UAAW,OACXxoR,UAAW/xC,OAAO8kR,YAAYnrQ,MAC9BqhB,SAAU,GAGZq/R,EAAS9+T,KAAKs0O,GACd8qF,EAAY58T,GAAQ8xO,IAInB7vO,OAAO8kR,YAAY50J,UACtBlwH,OAAO8kR,YAAY50J,QAAUlwH,OAAO8kR,YAAY+1C,eAAiB,SAAU98T,EAAM+8T,EAAWC,GAC1FD,EAAYH,EAAYG,GAAW/oR,UACnCgpR,EAAUJ,EAAYI,GAAShpR,UAE/BsoR,EAAS9+T,KAAK,CACZwC,KAAMA,EACNw8T,UAAW,UACXxoR,UAAW+oR,EACX9/R,SAAU+/R,EAAUD,MAKrB96T,OAAO8kR,YAAYk2C,mBACtBh7T,OAAO8kR,YAAYk2C,iBAAmBh7T,OAAO8kR,YAAYm2C,wBAA0B,SAAUt9T,GAC3F,OAAOy8T,EAAe,YAAaz8T,KAIlCqC,OAAO8kR,YAAYo2C,mBACtBl7T,OAAO8kR,YAAYo2C,iBAAmBl7T,OAAO8kR,YAAYq2C,wBAA0B,SAAUp9T,GAC3F,OAAOq8T,EAAe,OAAQr8T,KAI7BiC,OAAO8kR,YAAYs2C,aACtBp7T,OAAO8kR,YAAYs2C,WAAap7T,OAAO8kR,YAAYu2C,kBAAoB,SAAUt9T,GAC/Eu8T,EAAc,OAAQv8T,KAIrBiC,OAAO8kR,YAAYw2C,gBACtBt7T,OAAO8kR,YAAYw2C,cAAgBt7T,OAAO8kR,YAAYy2C,qBAAuB,SAAUx9T,GACrFu8T,EAAc,UAAWv8T,KAI7Bs7T,EAAUv0C,YAAc9kR,OAAO8kR,YAGjC,GAA6B,oBAAlBw0C,cAA+B,CACxC,IAAIkC,EAAMx7T,OAAOF,QAAUE,OAAOF,SAAW,GACzC27T,EAAM,aAELD,EAAI96M,SAAQ86M,EAAI96M,OAAS,IAC9B,wMAAoN/0F,MAAM,KAAKnkB,SAAQ,SAAUlJ,GAC1Ok9T,EAAIl9T,KAAIk9T,EAAIl9T,GAAKm9T,MAGC,WAArBv6T,EAAQs6T,EAAIvnR,MACd,0DAA0DtoB,MAAM,KAAKnkB,SAAQ,SAAU+T,GACrFzb,QAAQyb,GAAUlb,KAAKb,KAAKM,QAAQyb,GAASzb,WAC5CqlB,SAAShqB,UAAUE,MAI1B,GAA6B,oBAAlBi+T,iBACJt5T,OAAO6xF,aAA6C,mBAAvB7xF,OAAO6xF,aAA4B,CACnE,IAAI6pO,EAAe,SAAsBr+T,EAAOoD,GAC9CA,EAASA,GAAU,CACjBkqH,SAAS,EACT34B,YAAY,EACZD,YAAQ9zF,GAGV,IAAI0hI,EAAMjjI,SAASy1F,YAAY,eAE/B,OADAwtC,EAAIvtC,gBAAgB/0F,EAAOoD,EAAOkqH,QAASlqH,EAAOuxF,WAAYvxF,EAAOsxF,QAC9D4tC,GAGT+7L,EAAavgU,UAAY6E,OAAOkyF,MAAM/2F,UACtC6E,OAAO6xF,YAAc6pO,EAIzB,GAAI7zP,UAAYA,QAAQ1sE,UAAUqhC,QAAS,CACzC,IAAIkD,EAAQmoC,QAAQ1sE,UACpBukC,EAAMlD,QAAUkD,EAAMw4E,iBAAmBx4E,EAAM04E,oBAAsB14E,EAAM44E,mBAAqB54E,EAAM24E,kBAAoB34E,EAAMy4E,sBAG3H,IAIC35G,EAJGm9T,EAAW,CACpB7d,YAAa5jQ,YAAY/+C,UAAUspT,aACnCmX,UAAW,WAAYl/T,SAASC,cAAc,SAC9Ck/T,qBACMr9T,EAAI9B,SAASC,cAAc,OAC/B6B,EAAE8rD,UAAY,wBACP,YAAa9rD,EAAEyxC,SAAS,IAEjCguO,oBAAqBj+Q,OAAO+oG,mBAAoB/oG,OAAO87T,wBACvDC,0BAA2B,SAAmC78T,GAC5D,OAAOA,IAIX,GAA6B,oBAAlBo6T,cAA+B,CACxC,IAII0C,EAAwB,SAA+B95P,GACzD,IAAImhB,EAAWnhB,EAAG+zC,cAAct5G,cAAc,YAC1CmlE,EAAQI,EAAGonC,WACXruG,EAAS6mE,EAAM7mE,OACfy1C,OAAO,EAIX,IAFAwxB,EAAGP,WAAWH,aAAa6hB,EAAUnhB,GAE9BjnE,KAAW,GAChBy1C,EAAOoxB,EAAM7mE,GACbooF,EAAStmF,aAAa2zC,EAAK3yC,KAAM2yC,EAAKzxC,OACtCijE,EAAGw0C,gBAAgBhmE,EAAK3yC,MAK1B,OAFAmkE,EAAGP,WAAWC,YAAYM,GAEnB+5P,EAAuB54O,IAG5B44O,EAAyB,SAAgC54O,GAI3D,IAHA,IAAI1mC,EAAU0mC,EAAS1mC,QAAUjgD,SAAS0qH,yBACtC97B,OAAQ,EAELA,EAAQjI,EAAS5hB,YACtB9kB,EAAQv+C,YAAYktF,GAGtB,OAAOjI,GAoBJs4O,EAASE,sBACZF,EAASI,0BAlBsB,SAAoC14O,GAInE,IAHA,IAnCyCnhB,EAoCrCg6P,EADUD,EAAuB54O,GAAU1mC,QAClB65D,iBAAiB,YAErCz7G,EAAI,EAAGiI,EAAKk5T,EAAejhU,OAAQF,EAAIiI,IAAMjI,EAAG,CACvD,IAAIuwF,EAAQ4wO,EAAenhU,GAtCP,cADmBmnE,EAyCrBopB,GAxCVsvE,SAA8C,+BAApB14F,EAAGi9O,aAyCnC6c,EAAsB1wO,GAEtB2wO,EAAuB3wO,GAI3B,OAAOjI,IAQX,IAAI84O,EAAan8T,OAAOo8T,mBAAqB,KAElCC,EAAO,CAChBx0P,QAASA,QACT20E,SAAUA,SACV0mJ,WAAYA,WACZwhB,SAAU,uBACVn0M,iBAAkB,SAA0Bj2F,EAAWgN,EAAUyoR,GAC/DrzS,SAAS6zG,iBAAiBj2F,EAAWgN,EAAUyoR,IAEjDhtL,oBAAqB,SAA6BzoG,EAAWgN,EAAUyoR,GACrErzS,SAASqmH,oBAAoBzoG,EAAWgN,EAAUyoR,IAEpD8N,UAAW,SAAmBtiQ,GAC5B,OAAO7+C,SAASmhT,UAAUtiQ,IAE5B+gR,gBAAiB,SAAyBv+T,GACxC,OAAOrB,SAAS4/T,gBAAgBv+T,IAElCpB,cAAe,SAAuBi+J,GACpC,OAAOl+J,SAASC,cAAci+J,IAEhCt3F,eAAgB,SAAwB/Z,GACtC,OAAO7sD,SAAS4mE,eAAe/Z,IAEjCsuD,cAAe,SAAuBtuD,GACpC,OAAO7sD,SAASm7G,cAActuD,IAEhC69D,uBAAwB,WACtB,OAAO1qH,SAAS0qH,0BAElBm1M,sBAAuB,WACrB,IAAIl5O,EAAW3mF,SAASC,cAAc,YACtC,OAAOg/T,EAASI,0BAA0B14O,IAE5C+6L,uBAAwB,SAAgC92P,GACtD,OAAO,IAAKtnB,OAAO+oG,kBAAoB/oG,OAAO87T,wBAAwBx0S,IAExEqjR,kBAAmB,SAA2BqiB,EAAWnpT,GACvD,OAAO,IAAI7D,OAAO6xF,YAAYm7N,EAAWnpT,IAE3C43C,cAAe,SAAuBkkF,GACpCjjI,SAAS++C,cAAckkF,IAEzB/Q,iBAAkB,SAA0BxnD,GAC1C,OAAOpnE,OAAO4uH,iBAAiBxnD,IAEjCod,eAAgB,SAAwB5nE,GACtC,OAAOlgB,SAAS8nF,eAAe5nE,IAEjCojD,cAAe,SAAuBif,GACpC,OAAOviF,SAASsjE,cAAcif,IAEhCu3B,iBAAkB,SAA0Bv3B,GAC1C,OAAOviF,SAAS85G,iBAAiBv3B,IAEnCi6J,mBAAoB,SAA4B9xK,GAC9C,GAAIA,EAAQ8xK,mBACV,OAAO9xK,EAAQ8xK,mBAEjB,GACE9xK,EAAUA,EAAQ7F,kBACX6F,GAAgC,IAArBA,EAAQ+R,UAC5B,OAAO/R,GAETu2L,yBAA0B,SAAkCi1C,GAC1D,IAAIzrI,EAASzqK,SAASC,cAAc,OACpCwqK,EAAO78G,UAAYsoP,EAEnB,IAAIx9Q,EAAO+xI,EAAO3oC,kBAClB,IAAKppG,GAA0B,aAAlBA,EAAKihF,SAChB,MAAM,IAAIj5G,MAAM,kHAGlB,OAAOu+T,EAASI,0BAA0B3mS,IAE5ConS,WAAY,SAAoBz9O,EAASpd,IACtCA,GAAcjlE,SAAS8e,MAAMpd,YAAY2gF,IAE5Cm9N,YAAa,SAAqBn9N,EAASxjC,EAAMomB,GAC3CpmB,EAAKomB,WACPpmB,EAAKomB,WAAWysD,aAAarvC,EAASxjC,GACd,OAAf4gR,EACTA,EAAWx9L,OAAOh9D,GAAYysD,aAAa+tM,EAAWx9L,OAAO5/C,GAAUo9O,EAAWx9L,OAAOpjF,IAEzFomB,EAAWysD,aAAarvC,EAASxjC,IAGrCgpQ,WAAY,SAAoBhpQ,EAAMomB,GAChCpmB,EAAKomB,WACPpmB,EAAKomB,WAAWC,YAAYrmB,GACnBomB,IACU,OAAfw6P,EACFA,EAAWx9L,OAAOh9D,GAAYC,YAAYu6P,EAAWx9L,OAAOpjF,IAE5DomB,EAAWC,YAAYrmB,KAI7Bi5B,aAAc,SAAsB9T,EAAQ40O,EAAa/iQ,EAAS31B,GAChE,GAAIA,EAAI,CACN,IAAI6/S,EAAW//T,SAAS8nF,eAAe5nE,GACvC,GAAI6/S,EAAU,CAGZ,GAFoD,UAAnCA,EAAS7hK,QAAQh/I,cAIhC,YADA6gT,EAASnyQ,UAAYoW,GAIvB,MAAM,IAAItjE,MAAM,mDAIpB,IAAIm+C,EAAO7+C,SAASC,cAAc,SAgBlC,OAfA4+C,EAAK+O,UAAYoW,EACjBnlB,EAAK59C,KAAO,WAERif,IACF2+B,EAAK3+B,GAAKA,GAGZ04R,EAAcA,GAAe54S,SAASyB,KAElCo0C,GAAW+iQ,EAAY/xO,WAAWtoE,OAAS,EAC7Cq6S,EAAY9zO,aAAajmB,EAAM+5P,EAAY/xO,WAAW,IAEtD+xO,EAAYl3S,YAAYm9C,GAGnBA,IAIJ,SAASqlC,IACV,iBAIJ,yBAAc,SAAUmkJ,EAAUwuF,EAASmJ,GACzCxhU,OAAOgI,OAAO6hO,EAAUs0F,GACxBn+T,OAAOgI,OAAOqwT,EAASoI,GACvBzgU,OAAOgI,OAAOw5T,EAAKL,GAEnBnhU,OAAOyD,eAAe+9T,EAAK,QAAS,CAClC79T,IAAK,WACH,OAAOnC,SAASiL,OAElB6d,IAAK,SAAavmB,GAChBvC,SAASiL,MAAQ1I,KAIrB/D,OAAOyD,eAAe+9T,EAAK,gBAAiB,CAC1C79T,IAAK,WACH,OAAOnC,SAASu+G,iBAIpB//G,OAAOyD,eAAeomO,EAAU,iBAAkB,CAChDlmO,IAAK,WACH,OAAOkmO,EAAS14J,OAAO0yD,uB,qCCzjB/B,UAAO,CAAC,EAAW,EAAW,KAAkB,OAAsB,OAA0B,OAA2B,+CAA4B,iDAA8B,gDA0BpL,KA1B4M,EAAF,SAAYx6D,EAASzoE,EAASwwN,EAAkB7nJ,EAAoBk4P,EAAwBpwG,EAAyBqwG,EAA0BC,EAA4BC,GAClX,aACA5hU,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IACtDnD,EAAQs8J,gBAAkB3zF,EAAmBvO,QAC7Cp6D,EAAQ4oE,qBAAuB6nJ,EAAwBr2J,QACvDp6D,EAAQihU,qBAAuBH,EAAyBG,qBACxDjhU,EAAQkhU,uBAAyBH,EAA2BG,uBAC5DlhU,EAAQmhU,+BAAiCH,EAAoBG,+BAkB7DnhU,EAAQmU,UAjBR,SAAmBitT,EAAWjtT,GAC1B,IAAI00D,EAAkBu4P,EAAUxuT,UAAU7P,IAAI4lE,EAAmBvO,SAC7DinQ,EAAqBD,EAAUxuT,UAAU7P,IAAI89T,EAAuBzmQ,SACxEjmD,EAAU00D,EAAiB,CACvBuoJ,wBAAyB,SAAUnqN,GAC/Bo6T,EAAmBjwG,wBAAwBnqN,MAGnCm6T,EAAUxuT,UAAU7P,IAAIytN,EAAiB50M,WACnB9L,iBAAiBhC,MAAMvD,MAAK,SAAUyD,GAAQ,MAAyB,gBAAlBA,EAAK4M,YAC1E9M,MAAMrO,KAAKohU,EAAuBzmQ,SACxDgnQ,EAAUzoP,gBAAgB,CACtB,2BACA,6BACA,0BAIX,4B,8DC1BD,IAAI,EAAJ,6CACI,IAA2Hj2E,EAAvHD,EAAI4D,UAAUlH,OAAQ6D,EAAIP,EAAI,EAAIV,EAAkB,OAATsmE,EAAgBA,EAAOjpE,OAAOw0D,yBAAyB7xD,EAAQ0B,GAAO4kE,EACrH,GAAuB,iBAAZ53B,SAAoD,mBAArBA,QAAQ63B,SAAyBtlE,EAAIytC,QAAQ63B,SAAS92B,EAAYzvC,EAAQ0B,EAAK4kE,QACpH,IAAK,IAAIppE,EAAIuyC,EAAWryC,OAAS,EAAGF,GAAK,EAAGA,KAASyD,EAAI8uC,EAAWvyC,MAAI+D,GAAKP,EAAI,EAAIC,EAAEM,GAAKP,EAAI,EAAIC,EAAEX,EAAQ0B,EAAKT,GAAKN,EAAEX,EAAQ0B,KAAST,GAChJ,OAAOP,EAAI,GAAKO,GAAK5D,OAAOyD,eAAed,EAAQ0B,EAAKT,GAAIA,GAE5DulE,EAAchkE,MAAQA,KAAKgkE,YAAe,SAAU9pC,EAAG+pC,GACvD,GAAuB,iBAAZ/3B,SAAoD,mBAArBA,QAAQR,SAAyB,OAAOQ,QAAQR,SAASxR,EAAG+pC,IAE1G,EAAO,CAAC,EAAW,EAAW,uBAAqB,aAyClD,KAzC8E,EAAF,SAAYC,EAASzoE,EAASshU,EAAqB7wG,GAC5H,aACArxN,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IACtD,IAAI+9T,EAA0B,WAC1B,SAASA,EAAuB51P,EAASqlJ,GACrCpsN,KAAKosN,qBAAuBA,EAC5BpsN,KAAKg9T,IAAM,GACXh9T,KAAK2/F,OAAQ,EACb3/F,KAAK+mE,QAAUA,EA8BnB,OA5BAlsE,OAAOyD,eAAeq+T,EAAuB7hU,UAAW,iBAAkB,CACtE0D,IAAK,WACD,OAAOwB,KAAKg9T,IAAMh9T,KAAKg9T,IAAIj2T,QAAQ,IAAK,IAAIukB,MAAM,KAAO,IAE7D/sB,YAAY,EACZ8C,cAAc,IAElBs7T,EAAuB7hU,UAAUqE,KAAO,WAChCa,KAAK2/F,QAAU3/F,KAAKosN,qBAAqBvnJ,6BAA6B7kE,KAAKi9T,iBAC3Ej9T,KAAKk9T,kBAGbP,EAAuB7hU,UAAUoiU,eAAiB,WAC9Cl9T,KAAK+mE,QAAQrqE,aAAa,WAAY,KAE1C0oE,EAAW,CACP23P,EAAoBrzE,SACpB1lL,EAAW,cAAenpE,SAC3B8hU,EAAuB7hU,UAAW,WAAO,GAC5CsqE,EAAW,CACP23P,EAAoBrzE,SACpB1lL,EAAW,cAAenpE,SAC3B8hU,EAAuB7hU,UAAW,aAAS,GAC9C6hU,EAAyBv3P,EAAW,CAChC23P,EAAoB13P,aACpB03P,EAAoB53E,gBAAgB,4BACpCnhL,EAAW,oBAAqB,CAACwD,QAAS0kJ,EAAwBr2J,WACnE8mQ,GAlCsB,GAqC7BlhU,EAAQkhU,uBAAyBA,GACpC,4B,4DClDD,IAAI,EAAJ,6CACI,IAA2Hx+T,EAAvHD,EAAI4D,UAAUlH,OAAQ6D,EAAIP,EAAI,EAAIV,EAAkB,OAATsmE,EAAgBA,EAAOjpE,OAAOw0D,yBAAyB7xD,EAAQ0B,GAAO4kE,EACrH,GAAuB,iBAAZ53B,SAAoD,mBAArBA,QAAQ63B,SAAyBtlE,EAAIytC,QAAQ63B,SAAS92B,EAAYzvC,EAAQ0B,EAAK4kE,QACpH,IAAK,IAAIppE,EAAIuyC,EAAWryC,OAAS,EAAGF,GAAK,EAAGA,KAASyD,EAAI8uC,EAAWvyC,MAAI+D,GAAKP,EAAI,EAAIC,EAAEM,GAAKP,EAAI,EAAIC,EAAEX,EAAQ0B,EAAKT,GAAKN,EAAEX,EAAQ0B,KAAST,GAChJ,OAAOP,EAAI,GAAKO,GAAK5D,OAAOyD,eAAed,EAAQ0B,EAAKT,GAAIA,GAE5DulE,EAAchkE,MAAQA,KAAKgkE,YAAe,SAAU9pC,EAAG+pC,GACvD,GAAuB,iBAAZ/3B,SAAoD,mBAArBA,QAAQR,SAAyB,OAAOQ,QAAQR,SAASxR,EAAG+pC,IAE1G,EAAO,CAAC,EAAW,EAAW,uBAAqB,aAyClD,KAzC8E,EAAF,SAAYC,EAASzoE,EAASshU,EAAqB7wG,GAC5H,aACArxN,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IACtD,IAAI89T,EAAwB,WACxB,SAASA,EAAqB31P,EAASqlJ,GACnCpsN,KAAKosN,qBAAuBA,EAC5BpsN,KAAKg9T,IAAM,GACXh9T,KAAK2/F,OAAQ,EACb3/F,KAAK+mE,QAAUA,EA8BnB,OA5BAlsE,OAAOyD,eAAeo+T,EAAqB5hU,UAAW,iBAAkB,CACpE0D,IAAK,WACD,OAAOwB,KAAKg9T,IAAMh9T,KAAKg9T,IAAIj2T,QAAQ,IAAK,IAAIukB,MAAM,KAAO,IAE7D/sB,YAAY,EACZ8C,cAAc,IAElBq7T,EAAqB5hU,UAAUqE,KAAO,WAC9Ba,KAAK2/F,QAAU3/F,KAAKosN,qBAAqBvnJ,6BAA6B7kE,KAAKi9T,iBAC3Ej9T,KAAKm9T,eAGbT,EAAqB5hU,UAAUqiU,YAAc,WACzCn9T,KAAK+mE,QAAQqe,UAAUt0E,IAAI,iBAE/Bs0D,EAAW,CACP23P,EAAoBrzE,SACpB1lL,EAAW,cAAenpE,SAC3B6hU,EAAqB5hU,UAAW,WAAO,GAC1CsqE,EAAW,CACP23P,EAAoBrzE,SACpB1lL,EAAW,cAAenpE,SAC3B6hU,EAAqB5hU,UAAW,aAAS,GAC5C4hU,EAAuBt3P,EAAW,CAC9B23P,EAAoB13P,aACpB03P,EAAoB53E,gBAAgB,0BACpCnhL,EAAW,oBAAqB,CAACwD,QAAS0kJ,EAAwBr2J,WACnE6mQ,GAlCoB,GAqC3BjhU,EAAQihU,qBAAuBA,GAClC,4B,uDClDD,IAAI,EAAJ,6CACI,IAA2Hv+T,EAAvHD,EAAI4D,UAAUlH,OAAQ6D,EAAIP,EAAI,EAAIV,EAAkB,OAATsmE,EAAgBA,EAAOjpE,OAAOw0D,yBAAyB7xD,EAAQ0B,GAAO4kE,EACrH,GAAuB,iBAAZ53B,SAAoD,mBAArBA,QAAQ63B,SAAyBtlE,EAAIytC,QAAQ63B,SAAS92B,EAAYzvC,EAAQ0B,EAAK4kE,QACpH,IAAK,IAAIppE,EAAIuyC,EAAWryC,OAAS,EAAGF,GAAK,EAAGA,KAASyD,EAAI8uC,EAAWvyC,MAAI+D,GAAKP,EAAI,EAAIC,EAAEM,GAAKP,EAAI,EAAIC,EAAEX,EAAQ0B,EAAKT,GAAKN,EAAEX,EAAQ0B,KAAST,GAChJ,OAAOP,EAAI,GAAKO,GAAK5D,OAAOyD,eAAed,EAAQ0B,EAAKT,GAAIA,GAE5DulE,EAAchkE,MAAQA,KAAKgkE,YAAe,SAAU9pC,EAAG+pC,GACvD,GAAuB,iBAAZ/3B,SAAoD,mBAArBA,QAAQR,SAAyB,OAAOQ,QAAQR,SAASxR,EAAG+pC,IAE1G,EAAO,CAAC,EAAW,EAAW,uBAAqB,aAwBlD,KAxB8E,EAAF,SAAYC,EAASzoE,EAASshU,EAAqB7wG,GAC5H,aACArxN,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IACtD,IAAIg+T,EAAkC,WAClC,SAASA,EAA+BxwG,GACpCpsN,KAAKosN,qBAAuBA,EAgBhC,OAdAwwG,EAA+B9hU,UAAU+wR,OAAS,SAAUvkQ,GACxD,IAAI3hB,EAAQ3F,KACZ,OAAOsnB,EAAMziB,QAAO,SAAUrE,GAAQ,OAAOmF,EAAMy3T,iBAAiB58T,OAExEo8T,EAA+B9hU,UAAUsiU,iBAAmB,SAAU58T,GAClE,IAGIwpB,EAHAqzS,EAAmB78T,EAAKgC,QAAUhC,EAAKgC,OAAO4F,UAAY5H,EAAKgC,OAAO4F,SAAS28D,WAC/EP,EAAe64P,GAAoBA,EAAiB3wG,MAAS,GACjE,OAAQ1iM,EAAKhqB,KAAKosN,sBAAsB7nJ,aAAatgE,MAAM+lB,EAAIw6C,IAGnEo4P,EAAiCx3P,EAAW,CACxC23P,EAAoB13P,aACpBrB,EAAW,oBAAqB,CAACkoJ,EAAwBr2J,WAC1D+mQ,GAjB8B,GAoBrCnhU,EAAQmhU,+BAAiCA,GAC5C,4B,oDC/BD/hU,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQ6hU,iBAAc1/T,EAEtB,IAAIiD,EAA4B,mBAAXnC,QAAoD,iBAApBA,OAAOoC,SAAwB,SAAUC,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAXrC,QAAyBqC,EAAIC,cAAgBtC,QAAUqC,IAAQrC,OAAO5D,UAAY,gBAAkBiG,GAElQw8T,EAAe,EAAQ,qCAE3B1iU,OAAOyD,eAAe7C,EAAS,cAAe,CAC1C8C,YAAY,EACZC,IAAK,WACD,OAAO++T,EAAaD,eAG5B7hU,EAAQmU,UAIR,SAAmB4tT,EAAeC,GAM9B,IAAKA,GAAgG,iBAAvD,IAAjBA,EAA+B,YAAc58T,EAAQ48T,IAA6B,CAC3G,IAAIj6T,EAAU3I,OAAOgI,OAAO,GANZ,CAChB1H,QAAS,CAAEitK,SAAS,GACpBC,MAAO,QAIwCo1J,GAE/CD,EAAcnvT,UAAUs1H,iBAAiB,sBAAuBngI,GAGpEg6T,EAAcppP,gBAAgB,mBAdhB,EAAQ,I,iECZ1B,IAAItN,EAAM67D,EAAOE,EAAOE,EAAO58D,EAAuBC,EAASC,EAAaC,EAL5EzrE,OAAOyD,eAAe7C,EAAS,aAAc,CACzCmD,OAAO,IAEXnD,EAAQ6hU,iBAAc1/T,EAItB,IAUgCmD,EAV5B28T,EAAS,EAAQ,KAEjBj5F,GAQ4B1jO,EARK28T,IAQgB38T,EAAIhC,WAAagC,EAAM,CAAE80D,QAAS90D,GANnFwjP,EAAkB,EAAQ,GAE1BD,EAA8B,EAAQ,IAEtCE,EAAqB,EAAQ,GAIjC,SAAS/9K,EAAgBjpE,EAAQ8B,EAAU8B,EAAY+R,GAC9C/R,GACLvG,OAAOyD,eAAed,EAAQ8B,EAAU,CACpCf,WAAY6C,EAAW7C,WACvB8C,aAAcD,EAAWC,aACzBC,SAAUF,EAAWE,SACrB1C,MAAOwC,EAAWslE,YAActlE,EAAWslE,YAAY1rE,KAAKmY,QAAW,IAM/E,SAASwzD,EAA0BnpE,EAAQ8B,EAAU2tC,EAAY7rC,EAAY+R,GACzE,IAAI2wD,EAAO,GAyBX,OAxBAjpE,OAAkB,KAAEuG,GAAY+F,SAAQ,SAAUjI,GAC9C4kE,EAAK5kE,GAAOkC,EAAWlC,MAE3B4kE,EAAKvlE,aAAeulE,EAAKvlE,WACzBulE,EAAKziE,eAAiByiE,EAAKziE,cAEvB,UAAWyiE,GAAQA,EAAK4C,eACxB5C,EAAKxiE,UAAW,GAGpBwiE,EAAO72B,EAAWptC,QAAQ+mE,UAAUrhB,QAAO,SAAUue,EAAMp2B,GACvD,OAAOA,EAAUlwC,EAAQ8B,EAAUwkE,IAASA,IAC7CA,GAEC3wD,QAAgC,IAArB2wD,EAAK4C,cAChB5C,EAAKllE,MAAQklE,EAAK4C,YAAc5C,EAAK4C,YAAY1rE,KAAKmY,QAAW,EACjE2wD,EAAK4C,iBAAc9oE,QAGE,IAArBkmE,EAAK4C,cACL7rE,OAA4B,eAAE2C,EAAQ8B,EAAUwkE,GAChDA,EAAO,MAGJA,EAOOroE,EAAQ6hU,aAAex2P,GAAO,EAAI09K,EAAmB2jE,YAAY,8DAA+DxlL,GAAQ,EAAI6hH,EAAmBijE,eAAe,gBAAiB5kL,GAAQ,EAAI2hH,EAAmBkF,YAAa3mH,GAAQ,EAAIyhH,EAAmBkF,UAAU,CAAEmuD,mBAAoBtzD,EAAgBysC,YAAYE,SAAWpqN,EAAKX,EAASw8D,GAAgBv8D,EAAU,WACvY,SAASk3P,IACL,IAAI33T,EAAQ3F,MArCpB,SAAyB6nD,EAAUtmD,GAAe,KAAMsmD,aAAoBtmD,GAAgB,MAAM,IAAIuW,UAAU,qCAuCxGo1C,CAAgBltD,KAAMs9T,GAEtBt9T,KAAK29T,cAAe,EAEpBl3P,EAAgBzmE,KAAM,UAAWqmE,EAAarmE,MAE9CymE,EAAgBzmE,KAAM,QAASsmE,EAActmE,MAE7CA,KAAK49T,cAAgB,WACjBj4T,EAAMg4T,cAAe,EACrBh4T,EAAM/G,MAAQ+G,EAAMquN,OAAO17I,KAAKruB,WAgDxC,OA5CAqzQ,EAAYxiU,UAAUqE,KAAO,WACzB,IAAIs+T,EAAen5E,EAA4Bv+G,UAAUl+E,SAASrpD,IAAI,uBACtEwB,KAAKwD,QAAU3I,OAAOgI,OAAO,GAAI46T,EAAcz9T,KAAKwD,UAGxD85T,EAAYxiU,UAAUwuD,SAAW,WAC7BtpD,KAAKg0N,OAAS,IAAIyQ,EAAQ5uK,QAAQ71D,KAAK69T,YAAa79T,KAAKwD,SAEzDxD,KAAKg0N,OAAO3mL,GAAG,cAAertC,KAAK49T,eAE/B59T,KAAKpB,QACLoB,KAAKg0N,OAAO17I,KAAKruB,UAAYjqD,KAAKpB,QAI1C0+T,EAAYxiU,UAAU+4S,aAAe,SAAsB9kP,EAAUgiB,GAC7DhiB,IAAagiB,GAAY/wE,KAAKg0N,OAAO17I,KAAKruB,YAAc8E,IAAkC,IAAtB/uD,KAAK29T,eACzE39T,KAAKg0N,OAAO17I,KAAKruB,UAAYjqD,KAAKpB,OAEtCoB,KAAK29T,cAAe,GAGxBL,EAAYxiU,UAAUquJ,SAAW,WAC7BnpJ,KAAKg0N,OAAOp9K,IAAI,cAAe52C,KAAK49T,eACpC59T,KAAK89T,eAEL99T,KAAKg0N,OAAS,YACPh0N,KAAKg0N,QAGhBspG,EAAYxiU,UAAUgjU,aAAe,WACjC,IAAI11J,EAAUpoK,KAAK69T,YAAYv8P,WAAW3B,cAAc,eAEpDyoG,GACAA,EAAQt4H,SAGZ9vC,KAAKg0N,OAAOxwN,QAAQrI,QAAQitK,QAAU,YAC/BpoK,KAAKg0N,OAAOxwN,QAAQrI,QAAQitK,QAEnCpoK,KAAKg0N,OAAO3rD,MAAMltK,QAAQitK,QAAU,YAC7BpoK,KAAKg0N,OAAO3rD,MAAMltK,QAAQitK,SAG9Bk1J,EA9DgY,GA+DrYj3P,EAAcM,EAA0BP,EAAQtrE,UAAW,UAAW,CAAC+nI,GAAQ,CACjFtkI,YAAY,EACZmoE,YAAa,OACbJ,EAAeK,EAA0BP,EAAQtrE,UAAW,QAAS,CAACioI,GAAQ,CAC9ExkI,YAAY,EACZmoE,YAAa,OApEsWP,EAqElXC,KAAaD,IAAWA,I,0DCvI7B,8CAAIA,EAAQyjE,EAAaxjE,EAAgB67D,EAASC,EAASwgJ,EAAQvgJ,EAASypK,EAA5E,sBAYO,IAAImyB,GAAgBn0L,EAAQzjE,EAAS,WAC1C,SAAS43P,EAAa18B,GAGpBrhS,KAAK44G,SAAW/9G,OAAOoE,OAAO,MAC9Be,KAAKg+T,YAAcnjU,OAAOoE,OAAO,MAEjCe,KAAKqhS,IAAMA,EAEXrhS,KAAKi+T,kBAAkB,YAAa,aACpCj+T,KAAKi+T,kBAAkB,kBAAmB,mBAC1Cj+T,KAAKi+T,kBAAkB,WAAY,YACnCj+T,KAAKi+T,kBAAkB,cAAe,eACtCj+T,KAAKi+T,kBAAkB,YAAa,aACpCj+T,KAAKi+T,kBAAkB,YAAa,aACpCj+T,KAAKi+T,kBAAkB,aAAc,cACrCj+T,KAAKi+T,kBAAkB,WAAY,YAEnCj+T,KAAKmmD,SAAS,QAAS,MAAO,WAE9BnmD,KAAKmmD,SAAS,MAAO,SAAU,UAE/BnmD,KAAKmmD,SAAS,QAAS,YAAa,aACpCnmD,KAAKmmD,SAAS,QAAS,YAAa,aACpCnmD,KAAKmmD,SAAS,QAAS,aAAc,cACrCnmD,KAAKmmD,SAAS,QAAS,cAAe,eACtCnmD,KAAKmmD,SAAS,QAAS,aAAc,cACrCnmD,KAAKmmD,SAAS,QAAS,iBAAkB,kBACzCnmD,KAAKmmD,SAAS,QAAS,aAAc,cAErCnmD,KAAKmmD,SAAS,WAAY,YAAa,aAEvCnmD,KAAKmmD,SAAS,KAAM,UAAW,WAC/BnmD,KAAKmmD,SAAS,KAAM,UAAW,WAC/BnmD,KAAKmmD,SAAS,KAAM,UAAW,WAC/BnmD,KAAKmmD,SAAS,KAAM,UAAW,WAmCjC,OAhCA43Q,EAAajjU,UAAUqrD,SAAW,SAAkB0sP,EAAa9W,EAAexxM,GAC9EsoN,EAAcA,EAAYt3R,cAC1BwgR,EAAgBA,EAAcxgR,eAChBvb,KAAK44G,SAASi6L,GAAe7yS,KAAK44G,SAASi6L,IAAgBh4S,OAAOoE,OAAO,OAC/E88R,GAAiBxxM,GAG3BwzO,EAAajjU,UAAUmjU,kBAAoB,SAA2BliC,EAAexxM,GACnFwxM,EAAgBA,EAAcxgR,cAC9Bvb,KAAKg+T,YAAYjiC,GAAiBxxM,GAGpCwzO,EAAajjU,UAAU6J,IAAM,SAAakuS,EAAa9W,GACrD,GAAI/7R,KAAKqhS,IAAIW,uBAAuB6Q,EAAa9W,GAC/C,OAAOA,EAET8W,EAAcA,EAAYt3R,cAC1BwgR,EAAgBA,EAAcxgR,cAC9B,IAAIwrD,EAAU/mE,KAAK44G,SAASi6L,GAC5B,YAAgBj1S,IAAZmpE,GAAyBg1N,KAAiBh1N,EACrCA,EAAQg1N,GAEbA,KAAiB/7R,KAAKg+T,YACjBh+T,KAAKg+T,YAAYjiC,GAGtB,0BAA0B35R,KAAK25R,GAC1BA,EAEF,oBAAUA,IAGZgiC,EAtEmC,GAuEvC53P,EAAO3wD,OAAS,CAAC,eAAco0H,GAEzBs0L,EAAiC,WAC1C,SAASA,EAA+BlxP,EAAiB+6K,EAAgB3rN,EAAOt9B,EAAMonP,EAAiB5zB,GAGrGtyN,KAAKgtE,gBAAkBA,EACvBhtE,KAAK+nP,eAAiBA,EACtB/nP,KAAKo8B,MAAQA,EACbp8B,KAAKlB,KAAOA,EACZkB,KAAKkmP,gBAAkBA,EACvBlmP,KAAKsyN,UAAYtyN,KAAKw+S,aAAelsF,EACrCtyN,KAAKojS,UAAW,EAUlB,OAPA86B,EAA+BpjU,UAAUuoS,cAAgB,SAAuB7lS,GAC9E,OAA0B,IAAtBwC,KAAKo8B,MAAMxhC,OACN,IAAIujU,EAA0B3gU,EAAQwC,KAAKgtE,gBAAiBhtE,KAAKo8B,MAAM,GAAIp8B,KAAKlB,KAAMkB,KAAKkmP,gBAAiBlmP,KAAK+nP,eAAgB/nP,KAAKo8B,MAAM,GAAIp8B,KAAKo8B,MAAM,IAE7J,IAAIgiS,EAAqBp+T,KAAKgtE,gBAAiBhtE,KAAKo8B,MAAO5+B,EAAQwC,KAAK+nP,eAAgB/nP,KAAKlB,KAAMkB,KAAKkmP,kBAG1Gg4E,EApBmC,GAuB5C,SAASG,EAAe7gU,EAAQ+sF,GAC9B,GAAqB,UAAjBA,EACF,YAAqB,sBAAsBpqF,KAAK,kIAC3C,GAAI3C,EAAOq1M,eAAmD,aAAlCr1M,EAAOq1M,cAAc78F,UAA4C,gBAAjBzrB,EACjF,MAAM,IAAIxtF,MAAM,0IAIb,IAAIqhU,EAAuB,WAChC,SAASA,EAAqBpxP,EAAiB5wC,EAAO5+B,EAAQuqP,EAAgBjpP,EAAMonP,GAGlFm4E,EAAe7gU,EAAQuqP,GACvB/nP,KAAKgtE,gBAAkBA,EACvBhtE,KAAKo8B,MAAQA,EACbp8B,KAAKxC,OAASA,EACdwC,KAAK+nP,eAAiBA,EACtB/nP,KAAKs+T,eAAiBtxP,EAAgBg2N,YAAYxlS,EAAQuqP,GAC1D/nP,KAAKlB,KAAOA,EACZkB,KAAKkmP,gBAAkBA,EAwDzB,OArDAk4E,EAAqBtjU,UAAUy4D,YAAc,WAC3C,GAAIvzD,KAAK+2E,QAAS,CAGhB,IAFA,IAAIn4E,EAAQ,GACRw9B,EAAQp8B,KAAKo8B,MACR1hC,EAAI,EAAGiI,EAAKy5B,EAAMxhC,OAAQF,EAAIiI,EAAIjI,IACzCkE,GAASlE,EAAI,GAAM,EAAI0hC,EAAM1hC,GAAKsF,KAAK,eAAiBtF,GAAGkE,MAE7DoB,KAAKs+T,eAAex3C,SAASloR,EAAOoB,KAAKxC,OAAQwC,KAAK+nP,kBAI1Dq2E,EAAqBtjU,UAAUu2J,sBAAwB,WACrD,IAAK,IAAI32J,EAAI,EAAGiI,EAAK3C,KAAKo8B,MAAMxhC,OAAQF,EAAIiI,EAAIjI,GAAK,EAAG,CACtD,IAAIuwF,EAAQjrF,KAAK,eAAiBtF,GAC9BuwF,EAAMnsF,OAAS,cAAYmxJ,SAC7BhlE,EAAMjwF,SAKZojU,EAAqBtjU,UAAUqE,KAAO,SAAcklC,GAClD,GAAIrkC,KAAK+2E,QAAS,CAChB,GAAI/2E,KAAKqkC,SAAWA,EAClB,OAEFrkC,KAAK0lE,SAEP1lE,KAAKqkC,OAASA,EAGd,IADA,IAAIjI,EAAQp8B,KAAKo8B,MACR1hC,EAAI,EAAGiI,EAAKy5B,EAAMxhC,OAAQF,EAAIiI,EAAIjI,GAAK,EAAG,CACjD,IAAIy8C,EAAU,IAAIgnR,EAA0Bn+T,KAAMA,KAAKgtE,gBAAiB5wC,EAAM1hC,GAAIsF,KAAKlB,KAAMkB,KAAKkmP,iBAClG/uM,EAAQh4C,KAAKklC,GACbrkC,KAAK,eAAiBtF,GAAKy8C,EAG7Bn3C,KAAK+2E,SAAU,EACf/2E,KAAKuzD,eAGP6qQ,EAAqBtjU,UAAU4qE,OAAS,WACtC,GAAK1lE,KAAK+2E,QAAV,CAGA/2E,KAAK+2E,SAAU,EACf/2E,KAAKqkC,OAAS,KAEd,IADA,IACS3pC,EAAI,EAAGiI,EADJ3C,KAAKo8B,MACUxhC,OAAQF,EAAIiI,EAAIjI,GAAK,EAAG,CAEjDsF,KADW,eAAiBtF,GACjBgrE,YAIR04P,EAnEyB,GAsEvBD,EAAoC,uBAAer3P,CAAKV,EAAU,WAC3E,SAAS+3P,EAA0B3gU,EAAQwvE,EAAiB+jF,EAAkBjyJ,EAAMonP,EAAiB6B,EAAgBh2H,EAAMvC,GAGrHhyH,aAAkB4gU,EACpBp+T,KAAKuO,OAAS/Q,GAEd6gU,EAAe7gU,EAAQuqP,GACvB/nP,KAAKxC,OAASA,EACdwC,KAAK+nP,eAAiBA,EACtB/nP,KAAKs+T,eAAiBtxP,EAAgBg2N,YAAYxlS,EAAQuqP,IAE5D/nP,KAAKgtE,gBAAkBA,EACvBhtE,KAAK+wJ,iBAAmBA,EACxB/wJ,KAAKlB,KAAOA,EACZkB,KAAKkmP,gBAAkBA,EACvBlmP,KAAK+xH,KAAOA,EACZ/xH,KAAKwvH,MAAQA,EAqFf,OAlFA2uM,EAA0BrjU,UAAU0oS,aAAe,SAAsB5kS,IACvEA,EAAQA,QAAwC,GAAKA,EAAMogB,cAC7Chf,KAAKpB,QACjBoB,KAAKpB,MAAQA,EACToB,KAAKuO,OACPvO,KAAKuO,OAAOglD,cAEZvzD,KAAKs+T,eAAex3C,SAAS9mR,KAAK+xH,KAAOnzH,EAAQoB,KAAKwvH,MAAOxvH,KAAKxC,OAAQwC,KAAK+nP,kBAKrFo2E,EAA0BrjU,UAAUE,KAAO,WACpCgF,KAAK+2E,UAIV/2E,KAAKu+T,SAAWv+T,KAAK+wJ,iBAAiBi3F,SAAShoP,KAAKqkC,OAAQrkC,KAAKkmP,iBACjElmP,KAAKwjS,aAAaxjS,KAAKu+T,UAEnBv+T,KAAKlB,OAAS,cAAYmxJ,UAC5BjwJ,KAAK4jR,WACL5jR,KAAK+wJ,iBAAiByzH,QAAQxkR,KAAMA,KAAKqkC,QACrCrkC,KAAKu+T,oBAAoB79T,OAC3BV,KAAK+jR,aAAa/jR,KAAKu+T,UAEzBv+T,KAAKgkR,WAAU,MAInBm6C,EAA0BrjU,UAAUqE,KAAO,SAAcklC,GACvD,GAAIrkC,KAAK+2E,QAAS,CAChB,GAAI/2E,KAAKqkC,SAAWA,EAClB,OAEFrkC,KAAK0lE,SAEP1lE,KAAK+2E,SAAU,EACf/2E,KAAKqkC,OAASA,EAEd,IAAI0sH,EAAmB/wJ,KAAK+wJ,iBACxBA,EAAiB5xJ,MACnB4xJ,EAAiB5xJ,KAAKa,KAAMqkC,EAAQrkC,KAAKkmP,iBAG3ClmP,KAAKu+T,SAAWxtK,EAAiBi3F,SAAS3jN,EAAQrkC,KAAKkmP,iBACvDlmP,KAAKwjS,aAAaxjS,KAAKu+T,UAEnBv+T,KAAKlB,OAAS,cAAYmyR,QAC5B,gCAAsBjxR,OAI1Bm+T,EAA0BrjU,UAAU4qE,OAAS,WAC3C,GAAK1lE,KAAK+2E,QAAV,CAGA/2E,KAAK+2E,SAAU,EACf,IAAIg6E,EAAmB/wJ,KAAK+wJ,iBACxBA,EAAiBrrF,QACnBqrF,EAAiBrrF,OAAO1lE,KAAMA,KAAKqkC,QAErCrkC,KAAKqkC,OAAS,KACdrkC,KAAKpB,MAAQ,KACboB,KAAKu+T,SAAW,KAChBv+T,KAAKgkR,WAAU,KAGjBm6C,EAA0BrjU,UAAU0pR,QAAU,SAAiBx8B,GACxDhoP,KAAK+2E,UAGNixK,IACFhoP,KAAKu+T,SAAWv+T,KAAK+wJ,iBAAiBi3F,SAAShoP,KAAKqkC,OAAQrkC,KAAKkmP,iBACjElmP,KAAKwjS,aAAaxjS,KAAKu+T,WAEzBv+T,KAAK+wJ,iBAAiByzH,QAAQxkR,KAAMA,KAAKqkC,QACrCrkC,KAAKu+T,oBAAoB79T,OAC3BV,KAAK+jR,aAAa/jR,KAAKu+T,YAIpBJ,EAtGoE,KAuGrE/3P,EAEGo4P,EAAgB,WACzB,SAASA,EAAcxxP,EAAiB+6K,EAAgBh3F,EAAkBm1F,EAAiBu4E,GAGzFz+T,KAAKgtE,gBAAkBA,EACvBhtE,KAAK+wJ,iBAAmBA,EACxB/wJ,KAAK+nP,eAAiBA,EACtB/nP,KAAKkmP,gBAAkBA,EACvBlmP,KAAKy+T,iBAAmBA,EAO1B,OAJAD,EAAc1jU,UAAUuoS,cAAgB,WACtC,OAAO,IAAIq7B,EAAW1+T,KAAKgtE,gBAAiBhtE,KAAK+wJ,iBAAkB/wJ,KAAK+nP,eAAgB/nP,KAAKkmP,gBAAiBlmP,KAAKy+T,mBAG9GD,EAfkB,GAkBhBE,EAAsB,uBAAe/7L,CAAMV,EAAU,WAC9D,SAASy8L,EAAW1xP,EAAiB+jF,EAAkBg3F,EAAgB7B,EAAiBu4E,GAGtFz+T,KAAKgtE,gBAAkBA,EACvBhtE,KAAK+wJ,iBAAmBA,EACxB/wJ,KAAK+nP,eAAiBA,EACtB/nP,KAAKkmP,gBAAkBA,EACvBlmP,KAAKqkC,OAAS,KACdrkC,KAAKxC,OAAS,KACdwC,KAAKy+T,iBAAmBA,EA2D1B,OAxDAC,EAAW5jU,UAAU0oS,aAAe,WAClC,IAAI5kS,EAAQoB,KAAK+wJ,iBAAiBi3F,SAAShoP,KAAKqkC,OAAQrkC,KAAKkmP,iBAC7DlmP,KAAKxC,OAAOwC,KAAK+nP,gBAAkBnpP,GAGrC8/T,EAAW5jU,UAAUE,KAAO,SAAcmY,GACxC,GAAKnT,KAAK+2E,QAAV,CAGA,GAAI5jE,IAAY,gBAIhB,MAAM,IAAIpW,MAAM,2BAA6BoW,GAH3CnT,KAAKwjS,iBAMTk7B,EAAW5jU,UAAUqE,KAAO,SAAcklC,GACxC,GAAIrkC,KAAK+2E,QAAS,CAChB,GAAI/2E,KAAKqkC,SAAWA,EAClB,OAEFrkC,KAAK0lE,SAGP1lE,KAAK+2E,SAAU,EACf/2E,KAAKqkC,OAASA,EACdrkC,KAAKxC,OAASwC,KAAKy+T,iBAAmBp6R,EAAOsjC,eAAiBtjC,EAAOujC,gBAEjE5nE,KAAK+wJ,iBAAiB5xJ,MACxBa,KAAK+wJ,iBAAiB5xJ,KAAKa,KAAMqkC,EAAQrkC,KAAKkmP,iBAGhD,gCAAsBlmP,OAGxB0+T,EAAW5jU,UAAU4qE,OAAS,WACvB1lE,KAAK+2E,UAGV/2E,KAAK+2E,SAAU,EACX/2E,KAAK+wJ,iBAAiBrrF,QACxB1lE,KAAK+wJ,iBAAiBrrF,OAAO1lE,KAAMA,KAAKqkC,QAE1CrkC,KAAKqkC,OAAS,KACdrkC,KAAKxC,OAAS,KACdwC,KAAKgkR,WAAU,KAGjB06C,EAAW5jU,UAAU0pR,QAAU,WACxBxkR,KAAK+2E,UAGV/2E,KAAKwjS,eACLxjS,KAAK+wJ,iBAAiByzH,QAAQxkR,KAAMA,KAAKqkC,UAGpCq6R,EArEuD,KAsExDz8L,EAEG08L,EAAoC,WAC7C,SAASA,EAAkC3xP,EAAiB+6K,EAAgB3rN,EAAO8pN,EAAiBu4E,GAGlGz+T,KAAKgtE,gBAAkBA,EACvBhtE,KAAK+nP,eAAiBA,EACtB/nP,KAAKo8B,MAAQA,EACbp8B,KAAKkmP,gBAAkBA,EACvBlmP,KAAKy+T,iBAAmBA,EAO1B,OAJAE,EAAkC7jU,UAAUuoS,cAAgB,WAC1D,OAAO,IAAIu7B,EAAwB5+T,KAAKgtE,gBAAiBhtE,KAAK+nP,eAAgB/nP,KAAKo8B,MAAOp8B,KAAKkmP,gBAAiBlmP,KAAKy+T,mBAGhHE,EAfsC,GAkBpCC,EAA0B,WACnC,SAASA,EAAwB5xP,EAAiB+6K,EAAgB3rN,EAAO8pN,EAAiBu4E,GAGxFz+T,KAAKgtE,gBAAkBA,EACvBhtE,KAAKo8B,MAAQA,EACbp8B,KAAK+nP,eAAiBA,EACtB/nP,KAAKkmP,gBAAkBA,EACvBlmP,KAAKy+T,iBAAmBA,EACxBz+T,KAAKxC,OAAS,KAqChB,OAlCAohU,EAAwB9jU,UAAUqE,KAAO,SAAcklC,GACrD,GAAIrkC,KAAK+2E,QAAS,CAChB,GAAI/2E,KAAKqkC,SAAWA,EAClB,OAEFrkC,KAAK0lE,SAGP1lE,KAAK+2E,SAAU,EACf/2E,KAAKqkC,OAASA,EACdrkC,KAAKxC,OAASwC,KAAKy+T,iBAAmBp6R,EAAOsjC,eAAiBtjC,EAAOujC,gBAErE5nE,KAAK6+T,qBAAuB7+T,KAAK8+T,6BACjC9+T,KAAK6+T,qBAAqB1/T,KAAKklC,IAGjCu6R,EAAwB9jU,UAAU4qE,OAAS,WACpC1lE,KAAK+2E,UAGV/2E,KAAK+2E,SAAU,EACf/2E,KAAKqkC,OAAS,KACdrkC,KAAKxC,OAAS,KACdwC,KAAK6+T,qBAAqBn5P,SAC1B1lE,KAAK6+T,qBAAuB,OAG9BD,EAAwB9jU,UAAUgkU,2BAA6B,WAC7D,OAA0B,IAAtB9+T,KAAKo8B,MAAMxhC,OACN,IAAIujU,EAA0Bn+T,KAAKxC,OAAQwC,KAAKgtE,gBAAiBhtE,KAAKo8B,MAAM,GAAI,cAAY60P,OAAQjxR,KAAKkmP,gBAAiBlmP,KAAK+nP,eAAgB/nP,KAAKo8B,MAAM,GAAIp8B,KAAKo8B,MAAM,IAE3K,IAAIgiS,EAAqBp+T,KAAKgtE,gBAAiBhtE,KAAKo8B,MAAOp8B,KAAKxC,OAAQwC,KAAK+nP,eAAgB,cAAYkpC,OAAQjxR,KAAKkmP,kBAGxH04E,EA9C4B,GAiD1BG,GAAqBr8C,EAASxgJ,EAAU,WACjD,SAAS68L,EAAkBj4J,EAAQ95F,EAAiBo1N,EAAc6U,GAGhEj3S,KAAK8mK,OAASA,EACd9mK,KAAKgtE,gBAAkBA,EACvBhtE,KAAKoiS,aAAeA,EACpBpiS,KAAKi3S,aAAeA,EAgMtB,OA7LA8nB,EAAkBjkU,UAAUkkU,UAAY,SAAmB9uQ,EAAW6W,EAAS5mE,EAAMozS,EAAqBpgS,GACxG,OAAIhT,EAAKg+S,WAAWn+S,KACXA,KAAKG,EAAKg+S,SAASjuP,EAAW6W,EAAS5mE,EAAMozS,EAAqBpgS,GAGpEnT,KAAKi/T,qBAAqB/uQ,EAAW6W,EAAS5mE,EAAMozS,EAAqBpgS,IAGlF4rT,EAAkBjkU,UAAUmkU,qBAAuB,SAA8B/uQ,EAAW6W,EAAS5mE,EAAMozS,EAAqBpgS,GAE9H,OADA,YAAqB,sBAAsB+Q,KAAK,2BAA4B/jB,GACrEozS,GAGTwrB,EAAkBjkU,UAAUokU,4BAA8B,SAAqCn4P,EAAS6pF,EAAUz9I,GAChH,IAAIonJ,EAAUxzF,EAAQwzF,QAAQh/I,cAE9B,MAAgB,UAAZg/I,IAAqC,UAAb3J,GAAqC,UAAbA,IAA0C,aAAjB7pF,EAAQzpE,MAAwC,UAAjBypE,EAAQzpE,MAAgC,UAAZi9J,GAAoC,YAAb3J,IAA4C,aAAjB7pF,EAAQzpE,MAAwC,UAAjBypE,EAAQzpE,QAAkC,aAAZi9J,GAAsC,WAAZA,IAAsC,UAAb3J,IAAsC,gBAAbA,GAA2C,cAAbA,IAAyD,SAA5B7pF,EAAQy0F,iBAA2C,cAAb5K,GAAyC,eAAbA,EACvb,cAAYsgI,OAGjB/9Q,GAAWy9I,KAAYz9I,EAAQ81F,YAAc91F,EAAQ81F,WAAW2nD,IAAaz9I,EAAQ81F,WAAW2nD,GAAUinJ,oBAAsB,cAAY5nJ,QACvI98I,EAAQ81F,WAAW2nD,GAAUinJ,mBAG/B,cAAY5mB,QAGrB8tC,EAAkBjkU,UAAUqE,KAAO,SAAc+wD,EAAW6W,EAAS5mE,EAAMozS,EAAqBpgS,GAC9F,IAAI9L,EAAcksS,GAAuB,sBAAoBjhF,UAAUnyN,EAAKywJ,UAI5E,OAFAvpJ,EAAY4hG,WAAW9oG,EAAKywJ,UAAY,IAAI,oBAAkB5wJ,KAAKgtE,gBAAiBhtE,KAAKi3S,aAAatyS,IAAIoiE,EAAQwzF,QAASp6J,EAAKywJ,UAAW5wJ,KAAK8mK,OAAO31J,MAAMhR,EAAKkzS,gBAAwCz1S,IAA5BuC,EAAK03S,oBAAgE,OAA5B13S,EAAK03S,mBAA8B73S,KAAKk/T,4BAA4Bn4P,EAAS5mE,EAAKywJ,SAAUz9I,GAAWhT,EAAK03S,mBAAoB3nP,EAAUg2L,iBAE1V7+O,GAGT03T,EAAkBjkU,UAAU4N,QAAU,SAAiBwnD,EAAW6W,EAAS5mE,GACzE,OAAO,IAAI,qBAAmBH,KAAKoiS,aAAcjiS,EAAKywJ,SAAU5wJ,KAAK8mK,OAAO31J,MAAMhR,EAAKkzS,WAAY,qBAAmB7nJ,MAAM,EAAMt7F,EAAUg2L,kBAG9I64E,EAAkBjkU,UAAU40S,QAAU,SAAiBx/O,EAAW6W,EAAS5mE,GACzE,OAAO,IAAI,qBAAmBH,KAAKoiS,aAAcjiS,EAAKywJ,SAAU5wJ,KAAK8mK,OAAO31J,MAAMhR,EAAKkzS,WAAY,qBAAmBpZ,WAAW,EAAM/pO,EAAUg2L,kBAGnJ64E,EAAkBjkU,UAAU0mI,SAAW,SAAkBtxE,EAAW6W,EAAS5mE,GAC3E,OAAO,IAAI,qBAAmBH,KAAKoiS,aAAcjiS,EAAKywJ,SAAU5wJ,KAAK8mK,OAAO31J,MAAMhR,EAAKkzS,WAAY,qBAAmBtZ,UAAU,EAAM7pO,EAAUg2L,kBAGlJ64E,EAAkBjkU,UAAUE,KAAO,SAAck1D,EAAW6W,EAAS5mE,EAAMozS,GACzE,IAAIlsS,EAAcksS,GAAuB,sBAAoBjhF,UAAUnyN,EAAKywJ,UAI5E,OAFAvpJ,EAAY4hG,WAAW9oG,EAAKywJ,UAAY,IAAI,iBAAe5wJ,KAAKgtE,gBAAiB7sE,EAAKywJ,SAAU5wJ,KAAK8mK,OAAO31J,MAAMhR,EAAKkzS,WAAYnjP,EAAUg2L,iBAEtI7+O,GAGT03T,EAAkBjkU,UAAU0I,QAAU,SAAiB0sD,EAAW6W,EAAS5mE,EAAMozS,EAAqBpgS,GACpG,IAOIxQ,EAPA0E,EAAcksS,GAAuB,sBAAoBjhF,UAAUnyN,EAAKywJ,UACxEyiJ,EAAYlzS,EAAKkzS,UACjBjiP,EAAWpxD,KAAKoxD,SAChB1zD,EAAO,KACPF,EAAS,GACToF,OAAU,EACVlI,OAAI,EAEJykU,GAAW,EACXC,GAAW,EACXC,GAAY,EAEhB,IAAK3kU,EAAI,EAAGiI,EAAK0wS,EAAUz4S,OAAQF,EAAIiI,IAAMjI,EAAG,CAG9C,GAAgB,OAFhBkI,EAAUywS,EAAU34S,KAEIykU,EAajB,GAAgB,MAAZv8T,GAA4B,OAATlF,EAC5B2hU,GAAY,EACZ3hU,EAAOF,EAAOmpD,OACdnpD,EAAS,OACJ,IAAgB,OAAZoF,EAAkB,CAC3BpF,GAAUoF,EACVw8T,GAAW,EACX,SAEA5hU,GAAUoF,EAEG,OAATlF,IAA8B,IAAb0hU,GAAkC,MAAZx8T,IACzCu8T,GAAYA,QAxBTE,IACH3hU,EAAOsC,KAAKs/T,wBAAwBpvQ,EAAW/8C,IAEjDhT,EAAOixD,EAASgiP,iBAAiBljP,EAAW,IAAKxyD,EAAMF,EAAOmpD,QAC9DyK,EAASkiP,2BAA2BpjP,EAAW6W,EAAS5mE,EAAMkH,EAAa8L,GAEtE9L,EAAY4hG,WAAW9oG,EAAKywJ,YAC/BvpJ,EAAY4hG,WAAW9oG,EAAKywJ,UAAYzwJ,EAAKkzS,WAG/C71S,EAAS,GACTE,EAAO,KAiBT0hU,GAAW,EAgBb,OAbKC,IACH3hU,EAAOsC,KAAKs/T,wBAAwBpvQ,EAAW/8C,IAGpC,OAATzV,IACFyC,EAAOixD,EAASgiP,iBAAiBljP,EAAW,IAAKxyD,EAAMF,EAAOmpD,QAC9DyK,EAASkiP,2BAA2BpjP,EAAW6W,EAAS5mE,EAAMkH,EAAa8L,GAEtE9L,EAAY4hG,WAAW9oG,EAAKywJ,YAC/BvpJ,EAAY4hG,WAAW9oG,EAAKywJ,UAAYzwJ,EAAKkzS,YAI1ChsS,GAGT03T,EAAkBjkU,UAAUwkU,wBAA0B,SAAiCpvQ,EAAW/8C,GAChG,IAAI7V,EAAO4yD,EAAUkX,aAAaj0D,EAAQ4oR,eAC1C,OAAIz+R,GAAQA,EAAKosI,gBACRpsI,EAAKosI,gBAAgB4oF,UAEvB,MAGTysG,EAAkBjkU,UAAe,IAAI,SAAco1D,EAAW6W,EAAS5mE,EAAMozS,GAC3E,IAIIgsB,EAJAnjS,OAAQ,EACR0nG,OAAW,EACXz8H,OAAc,EACdgsS,OAAY,EAOhB,GAAqB,KAFrBj3Q,GADAmjS,GADAlsB,EAAYlzS,EAAKkzS,WACW9rR,MAAM,iBACR8rR,EAAU/nR,MAAM,OAAS+nR,EAAU/nR,MAAM,SAEzD1wB,OACR,MAAM,IAAImC,MAAM,8FAelB,OAZAsK,EAAcksS,GAAuB,sBAAoBjhF,UAAUnyN,EAAKywJ,UAEpE2uK,GACFz7L,EAAW1nG,EAAM,GAAGr1B,QAAQ,SAAU,IAAIA,QAAQ,KAAM,KAAKA,QAAQ,OAAQ,KAAK4/C,OAAOr7B,MAAM,KAC/FjkB,EAAY4hG,WAAW/pG,IAAM4kI,EAAS,GACtCz8H,EAAY4hG,WAAWrqG,MAAQklI,EAAS,IAExCz8H,EAAY4hG,WAAWxsE,MAAQL,EAAM,GAGvC/0B,EAAY4hG,WAAWh8B,MAAQ,IAAI,oBAAkBjtE,KAAKgtE,gBAAiB,QAAShtE,KAAK8mK,OAAO31J,MAAMirB,EAAM,IAAK,cAAY60P,OAAQ/gO,EAAUg2L,iBAExI7+O,GAGT03T,EAAkBjkU,UAAU,WAAa,SAAgBo1D,EAAW6W,EAAS5mE,EAAMozS,GACjF,IAAIlsS,EAAcksS,GAAuB,sBAAoBjhF,UAAUnyN,EAAKywJ,UAI5E,OAFAvpJ,EAAY4hG,WAAW9oG,EAAKywJ,UAAY,IAAI,oBAAkB5wJ,KAAKgtE,gBAAiBhtE,KAAKi3S,aAAatyS,IAAIoiE,EAAQwzF,QAASp6J,EAAKywJ,UAAW5wJ,KAAK8mK,OAAO31J,MAAMhR,EAAKkzS,WAAY,cAAYniB,OAAQhhO,EAAUg2L,iBAErM7+O,GAGT03T,EAAkBjkU,UAAU,WAAa,SAAgBo1D,EAAW6W,EAAS5mE,EAAMozS,GACjF,IAAIlsS,EAAcksS,GAAuB,sBAAoBjhF,UAAUnyN,EAAKywJ,UAI5E,OAFAvpJ,EAAY4hG,WAAW9oG,EAAKywJ,UAAY,IAAI,oBAAkB5wJ,KAAKgtE,gBAAiBhtE,KAAKi3S,aAAatyS,IAAIoiE,EAAQwzF,QAASp6J,EAAKywJ,UAAW5wJ,KAAK8mK,OAAO31J,MAAMhR,EAAKkzS,WAAY,cAAYxnB,OAAQ37N,EAAUg2L,iBAErM7+O,GAGT03T,EAAkBjkU,UAAU,aAAe,SAAkBo1D,EAAW6W,EAAS5mE,EAAMozS,GACrF,IAAIlsS,EAAcksS,GAAuB,sBAAoBjhF,UAAUnyN,EAAKywJ,UAI5E,OAFAvpJ,EAAY4hG,WAAW9oG,EAAKywJ,UAAY,IAAI,oBAAkB5wJ,KAAKgtE,gBAAiBhtE,KAAKi3S,aAAatyS,IAAIoiE,EAAQwzF,QAASp6J,EAAKywJ,UAAW5wJ,KAAK8mK,OAAO31J,MAAMhR,EAAKkzS,WAAY,cAAYvnB,SAAU57N,EAAUg2L,iBAEvM7+O,GAGT03T,EAAkBjkU,UAAU,YAAc,SAAiBo1D,EAAW6W,EAAS5mE,EAAMozS,GACnF,IAAIlsS,EAAcksS,GAAuB,sBAAoBjhF,UAAUnyN,EAAKywJ,UAI5E,OAFAvpJ,EAAY4hG,WAAW9oG,EAAKywJ,UAAY,IAAI,oBAAkB5wJ,KAAKgtE,gBAAiBhtE,KAAKi3S,aAAatyS,IAAIoiE,EAAQwzF,QAASp6J,EAAKywJ,UAAW5wJ,KAAK8mK,OAAO31J,MAAMhR,EAAKkzS,WAAY,cAAYpjJ,QAAS//F,EAAUg2L,iBAEtM7+O,GAGF03T,EAvM0C,GAwM9C78L,EAAQ1sH,OAAS,CAAC,SAAQ,kBAAiB,eAAcuoT,GAAer7C,GAE7Eq8C,EAAkBjkU,UAAU,WAAaikU,EAAkBjkU,UAAU,WAErE,IAAIqF,EAAO,GAEAq/T,GAA6B5zB,EAASzpK,EAAU,SAAUs9L,GAGnE,SAASD,EAA0B14J,EAAQ95F,EAAiB0yP,EAAmBzoB,GAG7E,IAAItxS,EAlpBR,SAAoC8R,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAkpBlN2c,CAA2B3X,KAAMy/T,EAAiBzkU,KAAKgF,OASnE,OAPA2F,EAAMmhK,OAASA,EACfnhK,EAAMqnE,gBAAkBA,EACxBrnE,EAAM+5T,kBAAoBA,EAC1B/5T,EAAMg6T,sBAAwBh6T,EAAMmhK,OAAO31J,MAAM,MACjDuuT,EAAkBtuQ,SAAWzrD,EAC7BA,EAAMsxS,aAAeA,EACrBtxS,EAAMi6T,qBAAuB,qBACtBj6T,EAuLT,OAh1BF,SAAmBiS,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GA2oB/dI,CAAUunT,EAA2BC,GAiBrCD,EAA0B1kU,UAAUs4S,iBAAmB,SAA0BljP,EAAW2iP,EAAajiJ,EAAUyiJ,GACjH,IAAIj3Q,EAAQw0H,EAAStlI,MAAM,KAI3B,GAFAnrB,EAAK03S,mBAAqB,KAEL,IAAjBz7Q,EAAMxhC,OACRuF,EAAKywJ,SAAWx0H,EAAM,GAAGuqB,OACzBxmD,EAAKkzS,UAAYA,EACjBlzS,EAAKg+S,QAAU/hR,EAAM,GAAGuqB,OAEH,QAAjBxmD,EAAKg+S,SACPh+S,EAAK8wJ,WAAa,IAAI,iBAAejxJ,KAAK8mK,OAAO31J,MAAMkiS,GAAYlzS,EAAKywJ,SAAU1gG,EAAUg2L,iBAC5F/lP,EAAKg+S,QAAU,KACfh+S,EAAKywJ,SAAW,OAEhBzwJ,EAAK8wJ,WAAa,UAEf,GAAiB,QAAbL,EACTzwJ,EAAKywJ,SAAWA,EAChBzwJ,EAAKkzS,UAAYA,EACjBlzS,EAAKg+S,QAAU,KACfh+S,EAAK8wJ,WAAa,IAAI,iBAAejxJ,KAAK8mK,OAAO31J,MAAMkiS,GAAY,UAAWnjP,EAAUg2L,qBACnF,CACL/lP,EAAKywJ,SAAWA,EAChBzwJ,EAAKkzS,UAAYA,EACjBlzS,EAAKg+S,QAAU,KACf,IAAI0hB,EAAqB7/T,KAAK8/T,mBAAmB5vQ,EAAWmjP,GAE1DlzS,EAAK8wJ,WADoB,OAAvB4uK,EACgB,KAEA,IAAI3B,EAA+Bl+T,KAAKgtE,gBAAiBhtE,KAAKi3S,aAAatyS,IAAIkuS,EAAajiJ,GAAWivK,EAAoB,cAAY5uC,OAAQ/gO,EAAUg2L,gBAAiBt1F,GAIhM,OAAOzwJ,GAGTq/T,EAA0B1kU,UAAUw4S,2BAA6B,SAAoCpjP,EAAW6W,EAASg5P,EAASxsB,EAAqBpgS,GACrJ,IAAI9L,OAAc,EAElB,GAAI04T,EAAQ9uK,WAAY,CACtB,GAAyB,QAArB8uK,EAAQnvK,SACV,OAAOmvK,EAAQ9uK,YAGjB5pJ,EAAcksS,GAAuB,sBAAoBjhF,UAAUytG,EAAQnvK,WAC/D3nD,WAAW82N,EAAQnvK,UAAYmvK,EAAQ9uK,gBAC1C8uK,EAAQ5hB,UACjB92S,EAAcrH,KAAK0/T,kBAAkBV,UAAU9uQ,EAAW6W,EAASg5P,EAASxsB,EAAqBpgS,IAGnG,OAAO9L,GAGTm4T,EAA0B1kU,UAAU04S,qBAAuB,SAA8BtjP,EAAW8gP,GAYlG,IAXA,IAAIlpD,EAAc,GACd7+I,EAAa+nM,EAAW/nM,WAExB54D,OAAO,EAEPjU,OAAQ,EACRw0H,OAAW,EACXyiJ,OAAY,EAEZusB,EAAuB5/T,KAAK4/T,qBAC5BnB,EAAmBztB,EAAWjnE,aAAa61F,GACtCllU,EAAI,EAAGiI,EAAKsmG,EAAWruG,OAAQ+H,EAAKjI,IAAKA,EAMhD,GAJAk2J,GADAvgH,EAAO44D,EAAWvuG,IACFgD,KAChB21S,EAAYhjQ,EAAK+oE,UACjBh9E,EAAQw0H,EAAStlI,MAAM,KAEnBslI,IAAagvK,EAIjB,GAAqB,IAAjBxjS,EAAMxhC,OAAc,CAEtB,GAAgB,SADNwhC,EAAM,GACQ,CACtB,YAAqB,+BAA+BlY,KAAK,2CAA6CkY,EAAM,GAAK,kBAAoBw0H,EAAW,KAChJ,SAEFk3F,EAAY5sP,KAAK,IAAIsjU,EAAcx+T,KAAKgtE,gBAAiB,oBAAU5wC,EAAM,IAAKp8B,KAAK8mK,OAAO31J,MAAMkiS,GAAYnjP,EAAUg2L,gBAAiBu4E,SAEvI7tK,EAAW,oBAAUA,GAEP,QADdx0H,EAAQp8B,KAAK8/T,mBAAmB5vQ,EAAWmjP,KAEzC,YAAqB,+BAA+BnvR,KAAK,0DAA4D0sI,EAAW,SAAWyiJ,EAAY,SAAWziJ,EAAW,MAAQyiJ,EAAY,QAE/Lj3Q,EACF0rN,EAAY5sP,KAAK,IAAIyjU,EAAkC3+T,KAAKgtE,gBAAiB4jF,EAAUx0H,EAAO8zB,EAAUg2L,gBAAiBu4E,IAEzH32E,EAAY5sP,KAAK,IAAIsjU,EAAcx+T,KAAKgtE,gBAAiB4jF,EAAU,IAAI,gBAAcyiJ,GAAYnjP,EAAUg2L,gBAAiBu4E,IAIlI,OAAO32E,GAGT03E,EAA0B1kU,UAAU24S,mBAAqB,SAA4BvjP,EAAWtxD,GAC9F,IAAIw9B,EAAQp8B,KAAK8/T,mBAAmB5vQ,EAAWtxD,GAC/C,OAAc,OAAVw9B,EACK,KAEF,IAAI8hS,EAA+Bl+T,KAAKgtE,gBAAiB,cAAe5wC,EAAO,cAAY60P,OAAQ/gO,EAAUg2L,gBAAiB,gBAGvIs5E,EAA0B1kU,UAAUglU,mBAAqB,SAA4B5vQ,EAAWtxD,GAW9F,IAVA,IAAIlE,EAAIkE,EAAMyS,QAAQ,KAAM,GACxB1O,EAAK/D,EAAMhE,OACXggF,OAAO,EACP5pD,EAAM,EACNyqB,EAAO,EACPq6O,EAAQ,KACRkqC,OAAqB,EACrB5jS,OAAQ,EACR6jS,EAAY,EAETvlU,GAAK,GAAKA,EAAIiI,EAAK,GAAG,CAC3B84C,EAAO,EACPukR,EAAqBtlU,EACrBA,GAAK,EAEL,GACEkgF,EAAOh8E,EAAMlE,GACbA,IAEa,MAATkgF,GAAyB,MAATA,EASP,OAATA,EAKU,OAAVk7M,IAIS,MAATl7M,EACFn/B,IACkB,MAATm/B,GACTn/B,KAXA/gD,IATc,OAAVo7R,EACFA,EAAQl7M,EACCk7M,IAAUl7M,IACnBk7M,EAAQ,YAmBLr6O,EAAO,GAAK/gD,EAAIiI,GAEzB,GAAa,IAAT84C,EAgBF,MAfArf,EAAQA,GAAS,GACqB,OAAlCx9B,EAAMohU,EAAqB,IAAiD,OAAlCphU,EAAMohU,EAAqB,IACvE5jS,EAAM6jS,GAAarhU,EAAMmD,UAAUivB,EAAKgvS,EAAqB,GAAKphU,EAAMmD,UAAUi+T,EAAoBtlU,GAEtG0hC,IADA6jS,GACmBjgU,KAAK2/T,sBACxBM,MAEA7jS,EAAM6jS,GAAarhU,EAAMmD,UAAUivB,EAAKgvS,GAExC5jS,IADA6jS,GACmBjgU,KAAK8mK,OAAO31J,MAAMvS,EAAMmD,UAAUi+T,EAAqB,EAAGtlU,EAAI,IACjFulU,KAEFjvS,EAAMt2B,EACNA,EAAIkE,EAAMyS,QAAQ,KAAM3W,GAM5B,OAAkB,IAAdulU,EACK,MAGT7jS,EAAM6jS,GAAarhU,EAAM0G,OAAO0rB,GACzBoL,IAGFojS,EAtMkD,CAuMzD,mBAAkBr9L,EAAQ3sH,OAAS,CAAC,SAAQ,kBAAiBupT,EAAmBhB,GAAenyB,GAE1F,SAASh8R,EAAUpN,GACxBA,EAAO6L,UAAUg3H,kBAAkB,kBAAiBm6L,GACpDh9T,EAAO6L,UAAUm4H,cAAc,kBAAiBg5L,K,27DCz1B9C,EAAM,EAAO,E,0CAYV,ICZH,EAAM,EAAO,EDYNU,GAAQ,EAAO,0BAAgB,QAAS,EAAQ,iBAAO,mBAAkB,YAAW,EAAK,EAAS,6BAAmB,EAAS,EAAM,EAAS,SAAUv2L,GAGhK,SAASu2L,EAAK33P,EAAavB,GAGzB,IAAIrhE,EAdR,SAAoC8R,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAclN2c,CAA2B3X,KAAM2pI,EAAQ3uI,KAAKgF,KAAMuoE,EAAavB,IAG7E,OADArhE,EAAMw6T,gBACCx6T,EAyBT,OAxCF,SAAmBiS,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAO/dI,CAAUioT,EAAMv2L,GAWhBu2L,EAAKplU,UAAUqE,KAAO,SAAcwoE,EAAgBC,GAClD+hE,EAAQ7uI,UAAUqE,KAAKnE,KAAKgF,KAAM2nE,EAAgBC,GAE9C5nE,KAAKogU,KAAKv2L,UACZ7pI,KAAKg3E,QAELh3E,KAAK82E,SAITopP,EAAKplU,UAAUqlU,cAAgB,WAE7B,IADA,IAAIlmP,EAAWj6E,KAAKgnE,SAAS9oC,OAAOivG,gBAC7BlzD,IAAaA,EAASwuK,IAC3BxuK,EAAWA,EAASkzD,gBAEtB,IAAKlzD,IAAaA,EAASwuK,GAAG43E,GAC5B,MAAM,IAAItjU,MAAM,qDAElBiD,KAAKogU,KAAOnmP,EAASwuK,GAAG43E,GAAGtyT,UAC3B/N,KAAKogU,KAAKn2L,OAASjqI,MAGdkgU,EAlC+I,CAmCtJ,OAAY,IAAW,IAAW,G,OCvCzB,GAAQ,EAAO,0BAAgB,QAAS,EAAQ,iBAAO,mBAAkB,YAAW,EAAK,EAAS,6BAAmB,EAAS,EAAM,EAAS,WACtJ,SAASI,EAAK/3P,EAAavB,GAGzBhnE,KAAKuoE,YAAcA,EACnBvoE,KAAKgnE,SAAWA,EAChBhnE,KAAK8iR,sBAAwB,KAC7B9iR,KAAK0Q,KAAO,KA2Bd,OAxBA4vT,EAAKxlU,UAAUqE,KAAO,SAAcwoE,EAAgBC,GAClD5nE,KAAK8iR,sBAAwBl7M,EAC7B5nE,KAAK6zS,aAAa7zS,KAAKpB,QAGzB0hU,EAAKxlU,UAAU+4S,aAAe,SAAsB9kP,GAClD,IAAI6Y,EAAkB,gCAAsB7Y,EAAU/uD,KAAK8iR,uBACtD9iR,KAAK0Q,KAKR1Q,KAAK0Q,KAAKvR,KAAK4vD,EAAU6Y,IAJzB5nE,KAAK0Q,KAAO1Q,KAAKuoE,YAAYtpE,SAC7Be,KAAK0Q,KAAKvR,KAAK4vD,EAAU6Y,GACzB5nE,KAAKgnE,SAASl2D,IAAI9Q,KAAK0Q,QAM3B4vT,EAAKxlU,UAAU4qE,OAAS,WACtB1lE,KAAK8iR,sBAAwB,KAEzB9iR,KAAK0Q,MACP1Q,KAAK0Q,KAAKg1D,UAIP46P,EAlC+I,KAmChJ,IAAW,IAAW,GCzCnBC,EAAqB,WAC9B,SAASA,KAUT,OANAA,EAAmBzlU,UAAUqyE,gBAAkB,SAAyBC,EAAQH,GAC9EG,EAAOmB,gBAAe,IAGxBgyP,EAAmBzlU,UAAUiyE,sBAAwB,SAA+BC,EAAiBC,KAE9FszP,EAXuB,G,oCCMrB,EAAwB,WACjC,SAASC,IAGPxgU,KAAK47G,SAAW,GAChB57G,KAAK6pP,WAAa,GAElB7pP,KAAK8pP,aAAY,SAAU78K,GACzB,OAAOA,UACN,IAAIszP,GACPvgU,KAAK8pP,aAAY,SAAU78K,GACzB,OAAOA,aAAiBvsE,QACvB,IAAI,KACPV,KAAK8pP,aAAY,SAAU78K,GACzB,OAAOA,aAAiBvgC,MACvB,IAAI,KACP1sC,KAAK8pP,aAAY,SAAU78K,GACzB,OAAOA,aAAiBw1J,MACvB,IAAI,KACPziO,KAAK8pP,aAAY,SAAU78K,GACzB,MAAwB,iBAAVA,IACb,IAAI,KAoBT,OAjBAuzP,EAAsB1lU,UAAUgvP,YAAc,SAAqB5tN,EAASl3B,GAC1EhF,KAAK47G,SAAS1gH,KAAKghC,GACnBl8B,KAAK6pP,WAAW3uP,KAAK8J,IAGvBw7T,EAAsB1lU,UAAU8sP,YAAc,SAAqB36K,GAGjE,IAFA,IAAI2uC,EAAW57G,KAAK47G,SAEXlhH,EAAI,EAAGiI,EAAKi5G,EAAShhH,OAAQF,EAAIiI,IAAMjI,EAC9C,GAAIkhH,EAASlhH,GAAGuyE,GACd,OAAOjtE,KAAK6pP,WAAWnvP,GAI3B,OAAO,MAGF8lU,EAzC0B,G,QCPxBC,EAA6B,CAAC,QAAS,KAAM,OAAQ,SAAU,OAAQ,OAAQ,QAE1F,SAASC,EAA0Br5T,GACjC,IAAIxI,EAAIwI,EAAY/J,KAChBI,EAAyB,OAAlBmB,EAAEg0S,YAAuBh0S,EAAEg0S,YAAch0S,EAAEk9R,cACtD,OAAqD,IAA9C0kC,EAA2BpvT,QAAQ3T,KAAiBmB,EAAEwjT,iBAAmBxjT,EAAE8iT,aAAe9iT,EAAEgjT,gBAAkBhjT,EAAEyjT,iBAAmBzjT,EAAEujT,gBAAkBvjT,EAAE0pE,aAAeiF,EAAsB3uE,EAAE0pE,cAAgBlhE,EAAYkhE,aAAeiF,EAAsBnmE,EAAYkhE,aAGtR,SAASo4P,EAAwBt5T,GAC/B,IAAIu5T,EAAYv5T,EAAYwpJ,qBAC5B,GAAI+vK,EAEF,IADA,IAAIlmU,EAAIkmU,EAAUhmU,OACXF,KACL,GAAIgmU,EAA0BE,EAAUlmU,IACtC,OAAO,EAKb,OAAO2M,EAAYkhE,aAAeiF,EAAsBnmE,EAAYkhE,aAG/D,SAASiF,EAAsBjF,GACpC,GAAI,2BAA4BA,EAC9B,OAAOA,EAAYs4P,uBAKrB,GAFAt4P,EAAYs4P,wBAAyB,EAEjCt4P,EAAYA,YAEd,OADAA,EAAYs4P,uBAAyBrzP,EAAsBjF,EAAYA,aAChEA,EAAYs4P,uBAGrB,GAAIt4P,EAAYya,SAASrjB,cAAc,eAErC,OADA4I,EAAYs4P,wBAAyB,GAC9B,EAGT,IAAK,IAAItkT,KAAMgsD,EAAYjkE,aACzB,GAAIq8T,EAAwBp4P,EAAYjkE,aAAaiY,IAEnD,OADAgsD,EAAYs4P,wBAAyB,GAC9B,EAKX,OADAt4P,EAAYs4P,wBAAyB,GAC9B,EC9CF,ICFH,EAAM,EAAO,EAAuBz6P,EAASC,EAAaC,EAAcC,EAAcC,EDE/EijL,EAAmB,WAC5B,SAASA,EAAiBjmP,GAGxB3I,OAAOgI,OAAO7C,KAAM,CAClBy8B,MAAO,QACP+wC,uBAAuB,GACtBhqE,GA+CL,OA5CAimP,EAAiB3uP,UAAU4zE,UAAY,WACrC,MAAM,IAAI3xE,MAAM,wCAGlB0sP,EAAiB3uP,UAAUwyE,MAAQ,WACjC,MAAM,IAAIvwE,MAAM,oCAGlB0sP,EAAiB3uP,UAAU4V,KAAO,SAAc/G,GAC9C,MAAM,IAAI5M,MAAM,mCAGlB0sP,EAAiB3uP,UAAUohC,QAAU,WACnC,MAAM,IAAIn/B,MAAM,sCAGlB0sP,EAAiB3uP,UAAU2zE,QAAU,SAAiB9G,EAAgBC,GACpE,MAAM,IAAI7qE,MAAM,sCAGlB0sP,EAAiB3uP,UAAUszE,WAAa,SAAoBzkE,EAAOg+D,EAAgBC,GACjF,MAAM,IAAI7qE,MAAM,yCAGlB0sP,EAAiB3uP,UAAUuzE,SAAW,SAAkBuoC,EAAasxI,GACnE,MAAM,IAAInrP,MAAM,uCAGlB0sP,EAAiB3uP,UAAUyzE,eAAiB,SAAwBsI,EAAesxK,GACjF,MAAM,IAAIprP,MAAM,6CAGlB0sP,EAAiB3uP,UAAUkzE,YAAc,SAAqBJ,EAAeiJ,EAAesxK,GAC1F,MAAM,IAAIprP,MAAM,yCAGlB0sP,EAAiB3uP,UAAU6zE,WAAa,SAAoBhlE,EAAOktE,EAAesxK,GAChF,MAAM,IAAIprP,MAAM,yCAGlB0sP,EAAiB3uP,UAAUk0E,eAAiB,SAAwBt+D,GAClE,MAAM,IAAI3T,MAAM,6CAGX0sP,EAtDqB,GCA9B,SAAShjL,EAAgBjpE,EAAQ8B,EAAU8B,EAAY+R,GAChD/R,GACLvG,OAAOyD,eAAed,EAAQ8B,EAAU,CACtCf,WAAY6C,EAAW7C,WACvB8C,aAAcD,EAAWC,aACzBC,SAAUF,EAAWE,SACrB1C,MAAOwC,EAAWslE,YAActlE,EAAWslE,YAAY1rE,KAAKmY,QAAW,IAU3E,SAASwzD,EAA0BnpE,EAAQ8B,EAAU2tC,EAAY7rC,EAAY+R,GAC3E,IAAI2wD,EAAO,GAyBX,OAxBAjpE,OAAkB,KAAEuG,GAAY+F,SAAQ,SAAUjI,GAChD4kE,EAAK5kE,GAAOkC,EAAWlC,MAEzB4kE,EAAKvlE,aAAeulE,EAAKvlE,WACzBulE,EAAKziE,eAAiByiE,EAAKziE,cAEvB,UAAWyiE,GAAQA,EAAK4C,eAC1B5C,EAAKxiE,UAAW,GAGlBwiE,EAAO72B,EAAWptC,QAAQ+mE,UAAUrhB,QAAO,SAAUue,EAAMp2B,GACzD,OAAOA,EAAUlwC,EAAQ8B,EAAUwkE,IAASA,IAC3CA,GAEC3wD,QAAgC,IAArB2wD,EAAK4C,cAClB5C,EAAKllE,MAAQklE,EAAK4C,YAAc5C,EAAK4C,YAAY1rE,KAAKmY,QAAW,EACjE2wD,EAAK4C,iBAAc9oE,QAGI,IAArBkmE,EAAK4C,cACP7rE,OAA4B,eAAE2C,EAAQ8B,EAAUwkE,GAChDA,EAAO,MAGFA,EAeF,IC3DG,ED2DC,GAAU,EAAO,0BAAgB,UAAW,EAAQ,iBAAO,mBAAkB,oBAAmB,WAAU,gBAAe,kBAAiB,GAAwB,EAAK,EAAS,6BAAmB,EAAS,GAAgBsC,EAAU,SAAUy/K,GAGzP,SAASi7E,EAAOv4P,EAAalhE,EAAa2/D,EAAUqhE,EAAer7D,EAAiBg5K,GAGlF,IAAIrgP,EAnDR,SAAoC8R,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAmDlN,CAA2BgF,KAAM6lP,EAAkB7qP,KAAKgF,KAAM,CACxEy8B,MAAO,OACP+wC,sBAAuBA,EAAsBjF,MAuB/C,OApBA9B,EAAgB9gE,EAAO,QAAS0gE,EAAa1gE,GAE7C8gE,EAAgB9gE,EAAO,QAAS2gE,EAAc3gE,GAE9C8gE,EAAgB9gE,EAAO,MAAO4gE,EAAc5gE,GAE5C8gE,EAAgB9gE,EAAO,QAAS6gE,EAAc7gE,GAE9CA,EAAM4iE,YAAcA,EACpB5iE,EAAM0B,YAAcA,EACpB1B,EAAMqhE,SAAWA,EACjBrhE,EAAMugP,gBAAkB79G,EAAc69G,gBACtCvgP,EAAMqnE,gBAAkBA,EACxBrnE,EAAMzG,IAAM,MACZyG,EAAM/G,MAAQ,QACd+G,EAAMqgP,gBAAkBA,EACxBrgP,EAAMwgP,gBAAiB,EACvBxgP,EAAMorJ,iBAAmB,YAAyBprJ,EAAM0B,YAAa,cACrE1B,EAAMwrJ,UAAY,YAAUxrJ,EAAMorJ,kBAClCprJ,EAAM6nE,sBAAwBA,EAAsBjF,GAC7C5iE,EAuMT,OAjRF,SAAmBiS,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GA4C/d,CAAUipT,EAAQj7E,GAiClBi7E,EAAOhmU,UAAUE,KAAO,SAAcmY,EAASs1H,GAC7CzoI,KAAKmT,GAASnT,KAAKitE,MAAOw7D,IAG5Bq4L,EAAOhmU,UAAUqE,KAAO,SAAcwoE,EAAgBC,GACpD5nE,KAAKorE,MAAQ,CAAEzD,eAAgBA,EAAgBC,gBAAiBA,GAChE5nE,KAAKumP,eAAiBvmP,KAAKwmP,kCAC3BxmP,KAAK0nP,gBAGPo5E,EAAOhmU,UAAU4qE,OAAS,WACxB1lE,KAAKorE,MAAQ,KACbprE,KAAKitE,MAAQ,KACbjtE,KAAKumP,eAAiB,KACtBvmP,KAAKgnE,SAAS4hE,WAAU,GAAM,GAC9B5oI,KAAK+gU,0BAGPD,EAAOhmU,UAAUimU,uBAAyB,WACpC/gU,KAAK0mP,qBACP1mP,KAAK0mP,mBAAmB5xO,YAAY9U,KAAKghU,YAAahhU,MACtDA,KAAK0mP,mBAAqB,KAC1B1mP,KAAKghU,YAAc,OAIvBF,EAAOhmU,UAAU4sP,aAAe,WAC9B,IAAIvhP,EAASnG,KAIb,GAFAA,KAAK+gU,yBAEA/gU,KAAKorE,MAAV,CAIA,IAAI6B,EAAQjtE,KAAKitE,MAEjB,GADAjtE,KAAKgF,SAAWhF,KAAKgmP,gBAAgB4B,YAAY36K,IAC5CjtE,KAAKgF,SACR,MAAM,IAAIjI,MAAM,cAAiBiD,KAAK+wJ,iBAAmB,uBAGtD/wJ,KAAKmxJ,WAAcnxJ,KAAKihU,2BAC3BjhU,KAAKkhU,qBAEPlhU,KAAKmmP,gBAAiB,EACtBnmP,KAAKgF,SAASmoE,gBAAgBntE,KAAMitE,GACpCjtE,KAAKgtE,gBAAgBs7D,UAAUkB,gBAAe,WAC5CrjI,EAAOggP,gBAAiB,OAI5B26E,EAAOhmU,UAAUqmU,oBAAsB,WACrC,IAAIlwK,EAAa,YAAiBjxJ,KAAK+wJ,kBACvC,OAAKE,EAGEA,EAAW+2F,SAAShoP,KAAKorE,MAAO,MAF9B,MAKX01P,EAAOhmU,UAAUsmU,wBAA0B,SAAiCjoP,EAAYsvD,GACjFzoI,KAAK0mP,qBAGN1mP,KAAKmmP,gBAGTnmP,KAAKgF,SAASiqE,gBAAgBjvE,KAAMm5E,EAAYsvD,KAGlDq4L,EAAOhmU,UAAUumU,6BAA+B,SAAsCloP,EAAYsvD,GAChG,IAAIn6H,EAAStO,KAEb,GAAKA,KAAK0mP,qBAIN1mP,KAAKmmP,eAAT,CAGAnmP,KAAKmmP,gBAAiB,EACtB,IAAIm7E,EAAWthU,KAAK+wJ,iBAAiBi3F,SAAShoP,KAAKorE,MAAOprE,KAAKkmP,iBAC/DlmP,KAAKgtE,gBAAgBs7D,UAAUkB,gBAAe,WAC5C,OAAOl7H,EAAO63O,gBAAiB,KAG7Bm7E,IAAathU,KAAKitE,MACpBjtE,KAAK0nP,eAEL1nP,KAAKitE,MAAQq0P,IAIjBR,EAAOhmU,UAAUmmU,wBAA0B,WACzC,IAAIh0P,EAAQjtE,KAAKmhU,sBACbn8T,EAAWhF,KAAKgmP,gBAAgB4B,YAAY36K,GAChD,QAAKjoE,IAGLhF,KAAK0mP,mBAAqB1hP,EAAS+nE,sBAAsB/sE,KAAKgtE,gBAAiBC,KAC1EjtE,KAAK0mP,qBAGV1mP,KAAKghU,YAAc,+BACnBhhU,KAAK0mP,mBAAmB3xO,UAAU/U,KAAKghU,YAAahhU,OAC7C,KAGT8gU,EAAOhmU,UAAUomU,mBAAqB,WACpC,IAAIj0P,EAAQjtE,KAAKitE,MACjBjtE,KAAK0mP,mBAAqB1mP,KAAKgF,SAAS+nE,sBAAsB/sE,KAAKgtE,gBAAiBC,GAChFjtE,KAAK0mP,qBACP1mP,KAAKghU,YAAc,0BACnBhhU,KAAK0mP,mBAAmB3xO,UAAU/U,KAAKghU,YAAahhU,QAIxD8gU,EAAOhmU,UAAU0rP,gCAAkC,WACjD,GAAIxmP,KAAKuoE,YAAYA,YAGnB,IAFA,IAAIjkE,EAAetE,KAAKuoE,YAAYA,YAAYjkE,aAC5CujP,EAAiBhtP,OAAO0Z,KAAKjQ,GACxB5J,EAAI,EAAGA,EAAImtP,EAAejtP,OAAQF,IAAK,CAC9C,IAAIotP,EAAcxjP,EAAaujP,EAAentP,IAAIotP,YAClD,GAAIA,EACF,KAAiBptP,EAAIotP,EAAYltP,OAAQF,IACvC,GAAuC,YAAnCotP,EADQ,GACQC,eAA8B,CAChD,IAAIxB,EAAiBuB,EAFX,GAIV,OADAA,EAAY3wO,OAHF,EAGa,GAChBovO,KAUnBu6E,EAAOhmU,UAAU4zE,UAAY,WAC3B,OAAO1uE,KAAKgnE,SAASp3B,SAASh1C,QAGhCkmU,EAAOhmU,UAAUwyE,MAAQ,WACvB,OAAOttE,KAAKgnE,SAASp3B,UAGvBkxR,EAAOhmU,UAAU4V,KAAO,SAAc/G,GACpC,OAAO3J,KAAKgnE,SAASp3B,SAASjmC,IAGhCm3T,EAAOhmU,UAAUohC,QAAU,WACzB,OAAOl8B,KAAKumP,eAAiBvmP,KAAKumP,eAAex1F,iBAAiBi3F,SAAShoP,KAAKorE,MAAOprE,KAAKumP,eAAeL,iBAAmB,MAGhI46E,EAAOhmU,UAAU2zE,QAAU,SAAiB9G,EAAgBC,GAC1D,IAAIl3D,EAAO1Q,KAAKuoE,YAAYtpE,SAC5ByR,EAAKvR,KAAKwoE,EAAgBC,GAC1B5nE,KAAKgnE,SAASl2D,IAAIJ,IAGpBowT,EAAOhmU,UAAUszE,WAAa,SAAoBzkE,EAAOg+D,EAAgBC,GACvE,IAAIl3D,EAAO1Q,KAAKuoE,YAAYtpE,SAC5ByR,EAAKvR,KAAKwoE,EAAgBC,GAC1B5nE,KAAKgnE,SAAS5hB,OAAOz7C,EAAO+G,IAG9BowT,EAAOhmU,UAAUuzE,SAAW,SAAkBuoC,EAAasxI,GACzDloP,KAAKgnE,SAASg7J,KAAKprH,EAAasxI,IAGlC44E,EAAOhmU,UAAUyzE,eAAiB,SAAwBsI,EAAesxK,GACvE,OAAOnoP,KAAKgnE,SAAS4hE,UAAU/xD,EAAesxK,IAGhD24E,EAAOhmU,UAAUkzE,YAAc,SAAqBJ,EAAeiJ,EAAesxK,GAChF,OAAOnoP,KAAKgnE,SAASqhL,WAAWz6K,EAAeiJ,EAAesxK,IAGhE24E,EAAOhmU,UAAU6zE,WAAa,SAAoBhlE,EAAOktE,EAAesxK,GACtE,OAAOnoP,KAAKgnE,SAASshL,SAAS3+O,EAAOktE,EAAesxK,IAGtD24E,EAAOhmU,UAAUk0E,eAAiB,SAAwBt+D,GAExD,IADA,IAAIkjB,EAAIljB,EAAKm0N,SAASjqO,OACfg5B,KACL,YAAqBljB,EAAKm0N,SAASjxM,IAGrC,IADAA,EAAIljB,EAAKsoJ,YAAYp+J,OACdg5B,KAEL,IADA,IAAIsG,EAAIxpB,EAAKsoJ,YAAYplI,GAAG20N,gBAAgB3tP,OACrCs/B,KAAK,CACV,IAAIid,EAAUzmC,EAAKsoJ,YAAYplI,GAAG20N,gBAAgBruN,GAAGid,QACrD,YAAqBA,KAKpB2pR,EAtOwO,CAuO/Or3E,GAAoBpjL,EAAcM,EAA0BP,EAAQtrE,UAAW,QAAS,CAAC,YAAW,CACpGyD,YAAY,EACZmoE,YAAa,OACXJ,EAAeK,EAA0BP,EAAQtrE,UAAW,QAAS,CAAC,YAAW,CACnFyD,YAAY,EACZmoE,YAAa,OACXH,EAAeI,EAA0BP,EAAQtrE,UAAW,MAAO,CAAC,YAAW,CACjFyD,YAAY,EACZmoE,YAAa,OACXF,EAAeG,EAA0BP,EAAQtrE,UAAW,QAAS,CAAC,YAAW,CACnFyD,YAAY,EACZmoE,YAAa,OAlP8M,EAmPxNN,KAAa,IAAW,IAAW,G,OEpSjC,SAASm7P,EAAiCC,GAC3C,UAAQ/jB,WAAa+jB,IAAgBA,EAAYC,sBACnDD,EAAYC,qBAAsB,EAClC,MAAIttP,aATe,6CASgBqtP,IDJhC,IETG,ECAO,ECAb,EAAM,EAAO,ECAP,ELSC,EAAe,0BAAgB,OAAS,CAAK,EAAS,WAK/D,SAASE,EAAK36P,EAASizO,EAAUwnB,GAG/BxhU,KAAK+mE,QAAUA,EACf/mE,KAAKg6S,SAAWA,EAChBh6S,KAAKwhU,YAAcA,EAmBrB,OA5BAE,EAAKlsT,OAAS,WACZ,MAAO,CAAC,MAAIgyD,QAAS,WAAU,WAAS4P,GAAG,MAAIitO,UAAU,KAW3Dqd,EAAK5mU,UAAU2sE,QAAU,WACvB85P,EAAiCvhU,KAAKwhU,cAGxCE,EAAK5mU,UAAU+4S,aAAe,SAAsB9kP,GAC9CA,EACF/uD,KAAKg6S,SAASx1N,YAAYxkF,KAAK+mE,QC1BH,gBD4B5B/mE,KAAKg6S,SAAS1pQ,SAAStwC,KAAK+mE,QC5BA,iBDgChC26P,EAAK5mU,UAAUqE,KAAO,SAAcwoE,GAClC3nE,KAAK6zS,aAAa7zS,KAAKpB,QAGlB8iU,EA7BwD,KA8BzD,EE9BG,EAAe,0BAAgB,OAAS,CAAK,EAAS,WAK/D,SAASC,EAAK56P,EAASizO,EAAUwnB,GAG/BxhU,KAAK+mE,QAAUA,EACf/mE,KAAKg6S,SAAWA,EAChBh6S,KAAKwhU,YAAcA,EAmBrB,OA5BAG,EAAKnsT,OAAS,WACZ,MAAO,CAAC,MAAIgyD,QAAS,WAAU,WAAS4P,GAAG,MAAIitO,UAAU,KAW3Dsd,EAAK7mU,UAAU2sE,QAAU,WACvB85P,EAAiCvhU,KAAKwhU,cAGxCG,EAAK7mU,UAAU+4S,aAAe,SAAsB9kP,GAC9CA,EACF/uD,KAAKg6S,SAAS1pQ,SAAStwC,KAAK+mE,QD1BA,gBC4B5B/mE,KAAKg6S,SAASx1N,YAAYxkF,KAAK+mE,QD5BH,iBCgChC46P,EAAK7mU,UAAUqE,KAAO,SAAcwoE,GAClC3nE,KAAK6zS,aAAa7zS,KAAKpB,QAGlB+iU,EA7BwD,KA8BzD,EIrCJC,EAAe,sDAERC,EAAgB,WACzB,SAASA,KAQT,OAJAA,EAAc/mU,UAAUmuO,SAAW,SAAkBlqN,GACnD,OAAOA,EAAMhY,QAAQ66T,EAAc,KAG9BC,EATkB,GHIhBC,EAAqC,yBAAe,eAAgD,CAAK,EAA5B,iBAAOD,EAA8B,CAAM,EAAS,WAC1I,SAASC,EAA2BC,GAGlC/hU,KAAK+hU,UAAYA,EAWnB,OARAD,EAA2BhnU,UAAU+wR,OAAS,SAAgBm2C,GAC5D,OAAIA,QACK,KAGFhiU,KAAK+hU,UAAU94F,SAAS+4F,IAG1BF,EAfmI,KAgBpI,IAAW,ECjBRG,IAAe,EAAO,0BAAgB,eAAgB,EAAQ,iBAAO,mBAAkB,YAAW,EAAK,EAAS,6BAAmB,EAAS,EAAM,EAAS,WACpK,SAASA,EAAY15P,EAAavB,GAGhChnE,KAAKuoE,YAAcA,EACnBvoE,KAAKgnE,SAAWA,EAChBhnE,KAAK0Q,KAAO,KAgBd,OAbAuxT,EAAYnnU,UAAUqE,KAAO,SAAcwoE,EAAgBC,GACvC,OAAd5nE,KAAK0Q,OACP1Q,KAAK0Q,KAAO1Q,KAAKuoE,YAAYtpE,SAC7Be,KAAKgnE,SAASl2D,IAAI9Q,KAAK0Q,OAGzB1Q,KAAK0Q,KAAKvR,KAAKwoE,EAAgBC,IAGjCq6P,EAAYnnU,UAAU4qE,OAAS,WAC7B1lE,KAAK0Q,KAAKg1D,UAGLu8P,EAtB6J,KAuB9J,IAAW,IAAW,G,SCrBnB,GAAgB,0BAAgB,QAAS,cAAY/wC,OAAS,CAAK,EAAS,WAKrF,SAASgxC,EAAMn7P,EAASuhE,GAGtBtoI,KAAK+mE,QAAUA,EACf/mE,KAAKsoI,UAAYA,EACjBtoI,KAAKw5S,YAAa,EAClBx5S,KAAKmiU,YAAa,EAiDpB,OA3DAD,EAAM1sT,OAAS,WACb,MAAO,CAAC,MAAIgyD,QAAS,eAYvB06P,EAAMpnU,UAAU+4S,aAAe,SAAsB9kP,GAC/C/uD,KAAKw5S,WACPx5S,KAAKi0E,SAELj0E,KAAKmiU,YAAa,GAItBD,EAAMpnU,UAAUm5E,OAAS,WACvB,IAAItuE,EAAQ3F,KAERA,KAAKpB,MACPoB,KAAKsoI,UAAUkB,gBAAe,WACxB7jI,EAAM/G,OACR+G,EAAMohE,QAAQ6iD,WAIlB5pH,KAAK+mE,QAAQ8iD,QAIjBq4M,EAAMpnU,UAAUwuD,SAAW,WACzBtpD,KAAKw5S,YAAa,EACdx5S,KAAKmiU,aACPniU,KAAKmiU,YAAa,EAClBniU,KAAKi0E,UAEPj0E,KAAK+mE,QAAQmpC,iBAAiB,QAASlwG,MACvCA,KAAK+mE,QAAQmpC,iBAAiB,OAAQlwG,OAGxCkiU,EAAMpnU,UAAUquJ,SAAW,WACzBnpJ,KAAKw5S,YAAa,EAClBx5S,KAAK+mE,QAAQ27C,oBAAoB,QAAS1iH,MAC1CA,KAAK+mE,QAAQ27C,oBAAoB,OAAQ1iH,OAG3CkiU,EAAMpnU,UAAUi+R,YAAc,SAAqBn9R,GAClC,UAAXA,EAAE0B,KACJ0C,KAAKpB,OAAQ,EACJ,MAAIg8G,gBAAkB56G,KAAK+mE,UACpC/mE,KAAKpB,OAAQ,IAIVsjU,EA5D8E,KA6D/E,E,kBEtER,SAAS,GAA2BzqT,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAYlO,IAAIonU,GAAgB,+BAepB,IC3BU,GD2BN,GAAc,WAChB,SAASC,EAAYhlE,GAGnBr9P,KAAKq9P,QAAUA,EACfr9P,KAAKsiU,QAAU,KACftiU,KAAKq6J,SAAU,EACfr6J,KAAKuiU,0BAA2B,EA8BlC,OA3BAF,EAAYvnU,UAAUylF,WAAa,SAAoBlyE,EAAW7Q,GAChEwC,KAAKsiU,QAAU,IAAI9kU,EAAOwC,OAG5BqiU,EAAYvnU,UAAUqrD,SAAW,SAAkBg4M,EAAUzgQ,GAC9C,WAATA,EACFygQ,EAAS4wC,wBAAwB/uS,KAAKsiU,SAEtCtiU,KAAKq6J,SAAU,GAInBgoK,EAAYvnU,UAAU46D,KAAO,SAAcrnD,GACzC,IAAI1I,EAAQ3F,KAEZ,OAAOqO,EAAU7P,IAAI,MAAQirJ,SAASzpJ,KAAKq9P,SAASpxP,OAAM,SAAUzM,GAClE,OAAO,QACN2D,MAAK,SAAU+lD,GAChBA,EAzCN,SAAsBm0M,EAAS18L,GAC7B,GAAmB,iBAARA,EACT,MAAM,IAAI5jE,MAAM,qCAAuCsgQ,GAEzD,OAAO18L,EAAI55D,QAAQq7T,IAAe,SAAU76S,EAAOgC,GACjD,IAAIusQ,EAAQvsQ,EAAG5Y,OAAO,GAItB,MAHc,MAAVmlR,GAA4B,MAAVA,IACpBvsQ,EAAKA,EAAGjkB,OAAO,EAAGikB,EAAG3uB,OAAS,IAEzB,QAAW,aAAe2uB,EAAI8zO,GAAW,QAgCvCmlE,CAAa78T,EAAM03P,QAASn0M,GACnCvjD,EAAM28T,QAAQ3hQ,IAAMzX,EAChBvjD,EAAM00J,UACR10J,EAAM48T,0BAA2B,EACjC,MAAIpuP,aAAajrB,QAKhBm5Q,EArCS,GAwCd,GAAqB,WACvB,SAASI,EAAmBl/M,GAG1BvjH,KAAKujH,MAAQA,EACbvjH,KAAK2gE,IAAM,KAeb,OAZA8hQ,EAAmB3nU,UAAUo8S,cAAgB,SAAuB56P,EAAS4T,EAAW7oD,GACtF,GAAIA,EAAYyoS,gBACd,MAAI37N,aAAan0E,KAAK2gE,IAAKrkB,GAAS,QAC/B,GAAI,UAAQi/Q,UAAW,CACZ,MAAIpnP,aAAan0E,KAAK2gE,IAAKrkB,GAAS,GAC1C5/C,aAAa,SAAU,eACxBsD,KAAKq6J,UAAYr6J,KAAKujH,MAAMg/M,2BACrC,MAAIpuP,aAAan0E,KAAK2gE,KACtB3gE,KAAKujH,MAAMg/M,0BAA2B,IAInCE,EApBgB,GAuBlB,SAASC,GAAmBrlE,GACjC,IAAUl3L,EAcV,OAZsB,mBAAS,IAAI,GAAYk3L,GAAWv2L,CAAKX,EAAS,SAAUw8P,GAGhF,SAASC,IAGP,OAAO,GAA2B5iU,KAAM2iU,EAAoB1+T,MAAMjE,KAAM8B,YAG1E,OApGJ,SAAmB8V,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GA4F7d,CAAU+qT,EAASD,GAQZC,EAT+D,CAUtE,MAAwBz8P,ECjGrB,ICNU,GAAsB,GAAuB87D,GAAuBC,GAAwBC,GCAnG,GFMC,GAA8B,0BAAgB,OAAS,CAAK,GAAS,WAC9E,SAAS0gM,KAUT,OANAA,EAAoB/nU,UAAUqE,KAAO,SAAcg4C,EAAS9S,GAC1D8S,EAAQssP,eAAiB,IAAI,wBAAsBtsP,EAAQ35C,OAAQ25C,EAAQ4wM,iBAG7E86E,EAAoB/nU,UAAU4qE,OAAS,SAAgBvuB,EAAS9S,KAEzDw+R,EAXuE,KAYxE,G,SCXJC,GAAsB,CACxB3jU,KAAM,SAAcg4C,EAAS9S,EAAQ6hN,GACnC/uM,EAAQ4rR,aAAe5rR,EAAQr4C,KAC/Bq4C,EAAQr4C,KAAOkB,KAAKlB,MAEtB4mE,OAAQ,SAAgBvuB,EAAS9S,GAC/B8S,EAAQr4C,KAAOq4C,EAAQ4rR,aACvB5rR,EAAQ4rR,aAAe,OAIhB,GAAiC,aAAMD,GAA0D,CAAK,GAAjC,0BAAgB,UAA0B,CAAM,GAAS,WAGvI9iU,KAAKlB,KAAO,cAAYmxJ,WACpB,KAAW,GAEN,GAAiC,aAAM6yK,GAAyDjgM,CAAM,GAAjC,0BAAgB,SAA2BE,CAAM,GAAU,WAGzI/iI,KAAKlB,KAAO,cAAY+sR,UACpB,KAAY,GAEP,GAAiC,aAAMi3C,GAAyD5/L,CAAMjB,GAAjC,0BAAgB,SAA2BmB,CAAMnB,GAAU,WAGzIjiI,KAAKlB,KAAO,cAAY+sR,UACpB5pJ,KAAYA,GAEP,GAAmC,aAAM6gM,GAA2Dv/L,CAAMrB,GAAnC,0BAAgB,WAA6Bu6J,CAAMv6J,GAAU,WAG7IliI,KAAKlB,KAAO,cAAYgtR,YACpB5pJ,KAAYA,GAEP,GAAiC,aAAM4gM,GAA0D5lC,CAAM/6J,GAAjC,0BAAgB,SAA2BohK,CAAOphK,GAAU,WAG3IniI,KAAKlB,KAAO,cAAYoyR,UACpB/uJ,KAAYA,GCxClB,SAASnoD,GAASjrB,GAChB,IAAIppD,EAAQ3F,KAER6Q,EAAQ7Q,KAAKgjU,cACbC,GAAW,IAAI5pT,KAASxI,EAAM+9D,KAClC,GAAIq0P,GAAWpyT,EAAMu6F,MAKnB,OAJAjuG,aAAa0T,EAAMqyT,WACnBryT,EAAMqyT,UAAY,KAClBryT,EAAM+9D,MAAQ,IAAIv1D,UAClBrZ,KAAKmjU,gBAAgBp0Q,GAGvBl+C,EAAMk+C,SAAWA,EACO,OAApBl+C,EAAMqyT,YACRryT,EAAMqyT,UAAYrlU,YAAW,WAC3BgT,EAAMqyT,UAAY,KAClBryT,EAAM+9D,MAAQ,IAAIv1D,KAClB1T,EAAMw9T,gBAAgBtyT,EAAMk+C,YAC3Bl+C,EAAMu6F,MAAQ63N,IAId,IC5BG,GD4BC,GAAkC,0BAAgB,WAAa,CAAK,GAAS,WACtF,SAASG,KAkCT,OA9BAA,EAAwBtoU,UAAUqE,KAAO,SAAcg4C,EAAS9S,GAC9D,IAAI+mE,EAAQtpG,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,IAE5EuhU,EAAmB,eACnBlsR,EAAQ0sP,WACVw/B,EAAmB,aACVlsR,EAAQusP,cAAgBvsP,EAAQr4C,OAAS,cAAYoyR,SAC9DmyC,EAAmB,gBAGrBlsR,EAAQgsR,gBAAkBhsR,EAAQksR,GAClClsR,EAAQgsR,gBAAgBG,aAAeD,EAEvClsR,EAAQksR,GAAoBrpP,GAE5B7iC,EAAQ6rR,cAAgB,CACtB53N,MAAOA,EACPx8B,KAAM,EACNs0P,UAAW,OAIfE,EAAwBtoU,UAAU4qE,OAAS,SAAgBvuB,EAAS9S,GAElE8S,EADsBA,EAAQgsR,gBAAgBG,cACnBnsR,EAAQgsR,gBACnChsR,EAAQgsR,gBAAkB,KAC1BhmU,aAAag6C,EAAQ6rR,cAAcE,WACnC/rR,EAAQ6rR,cAAgB,MAGnBI,EAnC+E,KAoChF,GC1DJG,GAAQ,GAEZ,SAASC,GAAmBxmU,GAC1B,IAAI2I,EAAQ3F,KAER6Q,EAAQ7Q,KAAKyjU,cACjBtmU,aAAa0T,EAAMqyT,WACnBryT,EAAMqyT,UAAYrlU,YAAW,WAC3B,OAAO8H,EAAM+9T,gBAAgB1mU,KAC5B6T,EAAMu6F,OAGX,SAASu4N,GAAaxwT,EAAS47C,EAAUgiB,GACvC,IAAI5qE,EAASnG,KAET6Q,EAAQ7Q,KAAKyjU,cAEjB,GADAtmU,aAAa0T,EAAMqyT,WACf/vT,IAAYtC,EAAM+yT,sBAGpB,OAFA/yT,EAAMkgE,SAAWwyP,QACjBvjU,KAAK0jU,gBAAgBvwT,EAAS47C,EAAUgiB,GAGtClgE,EAAMkgE,WAAawyP,KACrB1yT,EAAMkgE,SAAWA,GAEnBlgE,EAAMqyT,UAAYrlU,YAAW,WAC3B,IAAIgmU,EAAYhzT,EAAMkgE,SACtBlgE,EAAMkgE,SAAWwyP,GACjBp9T,EAAOu9T,gBAAgBvwT,EAAS47C,EAAU80Q,KACzChzT,EAAMu6F,OAGJ,ICtCG,GDsCC,GAAkC,0BAAgB,WAAa,CAAK,GAAS,WACtF,SAAS04N,KAkCT,OA9BAA,EAAwBhpU,UAAUqE,KAAO,SAAcg4C,EAAS9S,GAC9D,IAAI+mE,EAAQtpG,UAAUlH,OAAS,QAAsBgD,IAAjBkE,UAAU,GAAmBA,UAAU,GAAK,IAE5EiiU,OAAsCnmU,IAAvBu5C,EAAQ0sP,WACvBmgC,EAAmBD,EAAe,aAAe,OACjDE,EAAYF,EAAeP,GAAqBG,GAChD7kU,EAAOq4C,EAAQr4C,KACf8kU,EAAwB9kU,IAAS,cAAYoyR,QAAUpyR,IAAS,cAAYgtR,SAAW,gBAAgB,gBAE3G30O,EAAQusR,gBAAkBvsR,EAAQ6sR,GAClC7sR,EAAQusR,gBAAgBJ,aAAeU,EAEvC7sR,EAAQ6sR,GAAoBC,EAE5B9sR,EAAQssR,cAAgB,CACtBG,sBAAuBA,EACvBx4N,MAAOA,EACP83N,UAAW,EACXnyP,SAAUwyP,KAIdO,EAAwBhpU,UAAU4qE,OAAS,SAAgBvuB,EAAS9S,GAElE8S,EADsBA,EAAQusR,gBAAgBJ,cACnBnsR,EAAQusR,gBACnCvsR,EAAQusR,gBAAkB,KAC1BvmU,aAAag6C,EAAQssR,cAAcP,WACnC/rR,EAAQssR,cAAgB,MAGnBK,EAnC+E,KAoChF,GChER,SAASI,GAAgBlnU,GACvB,IAAIQ,EALN,SAAiCR,GAC/B,OAAOA,EAAM2E,MAAQ3E,EAAM2E,KAAK,IAAM3E,EAAMw7R,UAAYx7R,EAAMw7R,SAAS,IAAMx7R,EAAMQ,OAItE+6R,CAAwBv7R,GACjCgD,KAAKxC,SAAWA,GACpBwC,KAAKmkU,oBAAoBnnU,GAGpB,IChBG,GCAA,GFgBConU,GAA8B,0BAAgB,OAAS,CAAK,GAAS,WAC9E,SAASA,KAeT,OAXAA,EAAoBtpU,UAAUqE,KAAO,SAAcg4C,EAAS9S,GAC1D,IAAK8S,EAAQ0sP,aAAe1sP,EAAQoiP,YAAa,MAAM,IAAIx8R,MAAM,8CACjEo6C,EAAQgtR,oBAAsBhtR,EAAQ0sP,WACtC1sP,EAAQ0sP,WAAaqgC,IAGvBE,EAAoBtpU,UAAU4qE,OAAS,SAAgBvuB,EAAS9S,GAC9D8S,EAAQ0sP,WAAa1sP,EAAQgtR,oBAC7BhtR,EAAQgtR,oBAAsB,MAGzBC,EAhBuE,KAiBxE,GG7BG,GAAkB,WAC3B,SAASC,IAGPrkU,KAAKgsR,QAAU,GAcjB,OAXAq4C,EAAgBvpU,UAAU6kR,OAAS,SAAgBjiR,GACjD,IAAImnO,EAAW7kO,KAAKgsR,QAAQtuR,GAC5B,GAAKmnO,EAIL,IADA,IAAInqO,EAAImqO,EAASjqO,OACVF,KACLmqO,EAASnqO,GAAGM,KAAK,kBAIdqpU,EAlBoB,GFGlB,GAAgC,0BAAgB,SAAW,CAAK,GAAS,WAKlF,SAASC,EAAsBC,GAG7BvkU,KAAKgsR,QAAUu4C,EAAgBv4C,QA2CjC,OAlDAs4C,EAAsB9uT,OAAS,WAC7B,MAAO,CAAC,KASV8uT,EAAsBxpU,UAAUqE,KAAO,SAAcg4C,EAAS9S,GAC5D,IAAK8S,EAAQqsP,aACX,MAAM,IAAIzmS,MAAM,sIAElB,GAAyB,IAArB+E,UAAUlH,OAAc,CAC1B,IAAI8C,EAAOoE,UAAU,GACjB+iO,EAAW7kO,KAAKgsR,QAAQtuR,KAAUsC,KAAKgsR,QAAQtuR,GAAQ,IAC3DmnO,EAAS3pO,KAAKi8C,GACdA,EAAQqtR,WAAa9mU,MAChB,MAAIoE,UAAUlH,OAAS,GAU5B,MAAM,IAAImC,MAAM,4BAPhB,IAFA,IAAI42B,EAAQjzB,MAAM5F,UAAU+E,MAAM7E,KAAK8G,UAAW,GAC9CpH,EAAIi5B,EAAM/4B,OACPF,KAAK,CACV,IAAIiR,EAAQgoB,EAAMj5B,GACd+pU,EAAYzkU,KAAKgsR,QAAQrgR,KAAW3L,KAAKgsR,QAAQrgR,GAAS,IAC9D84T,EAAUvpU,KAAKi8C,GAEjBA,EAAQqtR,WAAa7wS,IAMzB2wS,EAAsBxpU,UAAU4qE,OAAS,SAAgBvuB,EAAS9S,GAChE,IAAI3mC,EAAOy5C,EAAQqtR,WAEnB,GADArtR,EAAQqtR,WAAa,KACjB9jU,MAAMC,QAAQjD,GAGhB,IAFA,IAAIi2B,EAAQj2B,EACRhD,EAAIi5B,EAAM/4B,OACPF,KAAK,CACV,IAAI0E,EAAIu0B,EAAMj5B,GACVmqO,EAAW7kO,KAAKgsR,QAAQ5sR,GAC5BylO,EAAS1tN,OAAO0tN,EAASxzN,QAAQ8lC,GAAU,OAExC,CACL,IAAIutR,EAAa1kU,KAAKgsR,QAAQtuR,GAC9BgnU,EAAWvtT,OAAOutT,EAAWrzT,QAAQ8lC,GAAU,KAI5CmtR,EAnD2E,KAoD5E,GCrDJK,GAAqB,2IACrBC,GAAuB,kHAEhB,GAAuC,0BAAgB,gBAAkB,CAAK,GAAS,WAChG,SAASC,KAkCT,OA9BAA,EAA6B/pU,UAAUqE,KAAO,SAAcg4C,EAAS9S,GACnE,IAAK,IAAI6I,EAAOprC,UAAUlH,OAAQ2c,EAAS7W,MAAMwsC,EAAO,EAAIA,EAAO,EAAI,GAAI3oC,EAAO,EAAGA,EAAO2oC,EAAM3oC,IAChGgT,EAAOhT,EAAO,GAAKzC,UAAUyC,GAG/B,GAAsB,IAAlBgT,EAAO3c,OACT,MAAM,IAAImC,MAAM4nU,IAElB,GAAIxtR,EAAQr4C,OAAS,cAAYoyR,QAAU/5O,EAAQr4C,OAAS,cAAYgtR,SACtE,MAAM,IAAI/uR,MAAM6nU,IAGlB,IAAInhC,EAAiBtsP,EAAQ61B,gBAAgB82M,YAAY3sO,EAAQ35C,OAAQ25C,EAAQ4wM,gBACjF,IAAK07C,EAAe1yR,QAClB,MAAM,IAAIhU,MAAM6nU,IAElBztR,EAAQssP,eAAiBA,EAEzBA,EAAeqhC,gBAAkB3tR,EAAQssP,eAAe1yR,QAExD,IAAIA,EAAU,IAAI,kBAAgBwG,GAClCksR,EAAe1yR,QAAUA,GAG3B8zT,EAA6B/pU,UAAU4qE,OAAS,SAAgBvuB,EAAS9S,GACvE8S,EAAQssP,eAAe1yR,QAAQ46F,UAC/Bx0D,EAAQssP,eAAe1yR,QAAUomC,EAAQssP,eAAeqhC,gBACxD3tR,EAAQssP,eAAeqhC,gBAAkB,MAGpCD,EAnCyF,KAoC1F,GErCD,SAASj1T,GAAUpN,GACxB,IAAIqvS,EAAarvS,EAAO6L,UAAU7P,IAAI,cAClC8qJ,EAAS9mJ,EAAOkkK,QAAQpd,OAE5BuoJ,EAAWuO,kBAAkB,QAAS,CACpC,MAAS,SAAe/iD,GACtB,OAAO/zG,EAAO6zG,aAAaE,GAASl6P,MAAK,SAAUq9S,GACjD,IAAIjyP,EAEAm7L,EAAW82D,EAAcx9N,SAAS5b,aAAa,YAC/CyrO,EAfL,SAAwBx1C,GAC7B,MAAQ,qBAAqB3mO,KAAK2mO,GAAS,GAAG9hP,cActBwpT,CAAe1nE,GAWjC,OATI3T,GACFA,EAAWA,EAASp+N,MAAM,KAAK3mB,KAAI,SAAUuC,GAC3C,OAAOA,EAAEy/C,UAEX65P,EAAcx9N,SAASqzB,gBAAgB,aAEvCqzI,EAAW,IAGNn7L,EAAO,IAASskP,GC1BxB,SAA+Bn1S,EAAMu0S,EAAS+yB,GAenD,IAdA,IAAiB7+P,EAEb8+P,EAAyB,wBAAcvnU,EAAiCopE,CAAKX,EAAvB,kBAAQ8rO,EAAwBtvK,CAAMx8D,EAAS,WACvG,SAAS8+P,KAQT,OAJAA,EAAenqU,UAAUqE,KAAO,SAAcwoE,GAC5C3nE,KAAKs3R,QAAU3vN,GAGVs9P,EATgG,KAUjG9+P,IAAWA,EAEVzrE,EAAI,EAAGiI,EAAKqiU,EAAcpqU,OAAQF,EAAIiI,IAAMjI,EACnD,mBAASsqU,EAActqU,GAAvB,CAA2BuqU,GAE7B,OAAOA,EDQqCC,CAAsBryB,EAAax1C,EAAS3T,GAAWn7L,QEIrG,SAAS,GAAU/rD,GjB1BjB,MAAI2xE,aAHiB,8CiBgCrB3xE,EAAO4xE,gBAAgB,IAAS,IAAI8rP,EAAM,EAAM,EAAQ,EAAM,EAAM+B,GAAa,GAAOH,EAA4B,GAAwB,GAAuB,GAAuB,GAAyB,GAAuB,GAAyB,GAAyBsC,GAAqB,GAAuB,GAA8B,IAEtWx0T,GAA4BpN,GAE5B,IAAIqvS,EAAarvS,EAAO6L,UAAU7P,IAAI,cAClC2mU,EAAsB,CACxB3pT,MAAO,SAAe6hP,GACpB,IAAI9uM,EAEJ,OAAOA,EAAO,IAAS8uM,GAAWqlE,GAAmBrlE,GAAU9uM,IAGnE,CAAC,OAAQ,QAAS,QAAS,QAAS,SAASpnD,SAAQ,SAAU62L,GAC7D,OAAO6zG,EAAWuO,kBAAkBpiH,EAAKmnI,Q,uGCjDnCh/P,EAAeC,E,+CAezB,IAAIg/P,EAAqB,aAAW,wBAA0Bt+P,CAAKX,EAAS,eAEtEA,EAEK,EAAiC,iBAAO,oBAAoBw8D,CAAMv8D,EAAU,SAAUi/P,GAG/F,SAASC,EAAsBn+P,GAG7B,IAAIxhE,EAvBR,SAAoC8R,EAAMzc,GAAQ,IAAKyc,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAO1c,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Byc,EAAPzc,EAuBlN2c,CAA2B3X,KAAMqlU,EAAarqU,KAAKgF,OAG/D,OADA2F,EAAMwhE,kBAAoBA,EACnBxhE,EAqCT,OA7DF,SAAmBiS,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAAS9c,UAAYD,OAAOoE,OAAO4Y,GAAcA,EAAW/c,UAAW,CAAEkG,YAAa,CAAEpC,MAAOgZ,EAAUrZ,YAAY,EAAO+C,UAAU,EAAMD,cAAc,KAAewW,IAAYhd,OAAOkd,eAAiBld,OAAOkd,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAgB/dI,CAAUqtT,EAAuBD,GAWjCC,EAAsBxqU,UAAUua,UAAY,SAAmBvP,EAAQtD,GACrE,IAAIuT,EAAiBjQ,EAAOuI,UAAU6B,cAWlC7I,EAAc,CAChB0G,UATsB,OAApBvL,EAAOlI,SACG8qU,EACH,UAAUhjU,KAAKI,EAAOlI,UA+BrC,SAA4BA,GAC1B,IAAIuoI,EAAOE,EAAOd,EAEdvkI,EAAO,qBAAqBg5B,KAAKp8B,GAAU,GAe/C,OAboBuoI,EAAQ,wBAAcnlI,GAAOqlI,EAAQ,kBAAQzoI,GAAWuoI,EAAMZ,EAAUc,EAAMd,EAAU,WAC1G,SAASsjM,KAQT,OAJAA,EAAazqU,UAAUqE,KAAO,SAAcwoE,GAC1C3nE,KAAKs3R,QAAU3vN,GAGV49P,EATmG,KAUpGtjM,IAAYA,EA7CJujM,CAAmBhjU,EAAOlI,UAE1B,YAAekI,EAAOlI,SAAU,IAAOkE,IAAIsH,EAAOuI,UAAUN,UAAU/M,aAAa1G,UAK/Fyb,eAAgBA,EAChBrF,KAAMlO,EAAOkO,MAAQlO,EAAO4lE,aAC5BtiE,OAAQA,GAeV,OAZAiQ,EAAesvH,kBAAkB,KAEjCtvH,EAAeC,eAAiB,WAC9B,IAAI7Q,OAAc,EAMlB,OAJA4Q,EAAewwH,gBAAgB,UAAQ,SAAUroI,GAC/C,OAAOiH,IAAgBA,EAAcW,EAAOoK,YAAY6F,OAGnDA,EAAevX,IAAI,WAGrBwB,KAAKmnE,kBAAkBkyF,gBAAgBhyJ,IAGzCi+T,EA9C8E,CA+CrF,iBAAiBl/P,E,IClEY,E,OAS3BnmE,E,MAAS,UAAqB,cAEvB,EAAoB,0BAAgB,aAAgP,CAAK,EAA9N,mBAAS,CAAEvC,KAAM,QAASqoS,cAAe,gBAAiBr8J,iBAAiB,GAA4J,CAAM,EAAjJ,mBAAS,CAAEhsI,KAAM,SAAUqoS,cAAe,iBAAgH,CAAM,EAA1F,mBAAS,CAAEroS,KAAM,YAAa80D,aAAc,QAAuD,CAAM,EAAS,WAKxV,SAASizQ,EAAU3/T,EAAQihE,GAGzB/mE,KAAK8F,OAASA,EACd9F,KAAK+mE,QAAUA,EA0CjB,OAlDA0+P,EAAUjwT,OAAS,WACjB,MAAO,CAAC,SAAQ,MAAIgyD,UAUtBi+P,EAAU3qU,UAAUqE,KAAO,WACzBa,KAAKsG,UAAW,EAChBtG,KAAK0lU,iBAGPD,EAAU3qU,UAAU4qE,OAAS,WAC3B1lE,KAAKsG,UAAW,GAGlBm/T,EAAU3qU,UAAU6qU,iBAAmB,SAA0B/mU,EAAOq7E,GAClEA,GACFj6E,KAAK+mE,QAAQsvC,gBAAgBp8B,GAG/Bj6E,KAAK0lU,iBAGPD,EAAU3qU,UAAU4qU,cAAgB,WAClC,IAAI//T,EAAQ3F,KAEZ,OAAOA,KAAK8F,OAAO6J,mBAAmBxM,MAAK,WACzC,IAAKwC,EAAMW,SACT,OAAO,KAGT,IAAI6B,EAAOxC,EAAMG,OAAO2G,SAAS9G,EAAMjD,MAAOiD,EAAMvF,QAQpD,OANIuF,EAAMohE,QAAQ0hL,GAAGhjL,WACnB9/D,EAAMohE,QAAQ0hL,GAAGhjL,WAAW13D,UAAUpI,EAAM2sN,WAAanqN,EAEzDxC,EAAMohE,QAAQrqE,aAAaiJ,EAAM2sN,UAAWnqN,GAGvC,QACN8D,OAAM,SAAUg6D,GACjBhmE,EAAOnD,MAAMmpE,OAIVw/P,EAnDiV,KAoDlV,IAAW,IAAW,IAAW,EC1DzC,SAAS71T,EAAUpN,GACjBA,EAAOw9D,UAAU,cAAa,GAAuBA,UAAU,SAAQ,aAAWoU,gBAAgB,IAAY,GAE9G5xE,EAAO6L,UAAUm4H,cAAc,SAAQ,e,yDCRzC,wRAsBIioF,EAAgB,SAAStwN,EAAGwT,GAI5B,OAHA88M,EAAgB5zN,OAAOkd,gBAClB,CAAEC,UAAW,cAAgBtX,OAAS,SAAUvC,EAAGwT,GAAKxT,EAAE6Z,UAAYrG,IACvE,SAAUxT,EAAGwT,GAAK,IAAK,IAAI/U,KAAK+U,EAAOA,EAAE5W,eAAe6B,KAAIuB,EAAEvB,GAAK+U,EAAE/U,MACpDuB,EAAGwT,IAG5B,SAAS+8M,EAAUvwN,EAAGwT,GAElB,SAASszF,IAAOjlG,KAAKgB,YAAc7C,EADnCswN,EAActwN,EAAGwT,GAEjBxT,EAAErD,UAAkB,OAAN6W,EAAa9W,OAAOoE,OAAO0S,IAAMszF,EAAGnqG,UAAY6W,EAAE7W,UAAW,IAAImqG,GAGnF,IAAI2gO,EAAa,SAAUx4P,EAAQ18D,EAAMm1T,EAAiB1sP,GACtDzoE,EAAKi3D,eAAeyF,EAAO3wC,OAAS08C,EAAW0sP,GAC/C,gCAAsBn1T,EAAKk3D,gBAAiBi+P,EAAiB1sP,EAAWv+E,SAExEkrU,EAAoB,SAAU14P,EAAQ18D,EAAM/G,EAAOo8T,GACnD,IAAI94P,EAAQG,EAAOH,MACfjG,EAAWoG,EAAOpG,SACtB,gCAAsBt2D,EAAKk3D,gBAAiBj+D,EAAOsjE,EAAMryE,QACzD8V,EAAKi3D,eAAeyF,EAAO3wC,OAASwwC,EAAMtjE,GACtCo8T,GACA/+P,EAASp3B,SAAS10C,KAAK8rE,EAASp3B,SAASv0C,SACzC+xE,EAAO44P,iBAAiBC,aAAav1T,EAAM08D,EAAO84P,kBAGlDl/P,EAASp3B,SAAS9rC,QAAQkjE,EAASp3B,SAASz4B,QAAQ,EAAG,GAAG,IAC1Di2D,EAAO44P,iBAAiBG,cAAcz1T,EAAM08D,EAAOg5P,eAGvDC,EAAuB,SAAUC,EAAgBC,GACjD,OAAOC,EAAWF,EAAiBC,GAAc,GAEjDE,EAAWtjT,KAAKa,IAChB0iT,EAAWvjT,KAAKqD,IAChBmgT,EAAWxjT,KAAKW,IAChB8iT,EAAazjT,KAAKyY,MAClB4qS,EAAarjT,KAAKE,MAClBwjT,EAASvlT,MAGTwlT,EADMzqU,SACY+nF,gBAClB2iP,EAAO5zM,sBAEP6zM,EAAqB,SAAUjgQ,GAE/B,IADA,IAAInkE,EAAUmkE,EAAQzF,WACH,OAAZ1+D,GAAoBA,IAAYkkU,GAAa,CAChD,GAAIG,EAAkBrkU,GAClB,OAAOA,EAEXA,EAAUA,EAAQ0+D,WAEtB,OAAOwlQ,GAEPI,EAAoC,SAAUngQ,GAC9C,IAAIkqD,EAAMlqD,EAAQ+qD,wBACdW,EAAY9yH,OAAOkhI,YACnBsmM,EAAYL,EAAYK,UACxB5vN,EAAM0Z,EAAI1Z,IAAMkb,EAAY00M,EAChC,OAAOP,EAAWrvN,IAElB0vN,EAAoB,SAAUlgQ,GAC9B,IAAIjG,EAAQnhE,OAAO4uH,iBAAiBxnD,GACpC,OAAOjG,IAA8B,WAApBA,EAAMm0D,WAA6C,WAAnBn0D,EAAMxgD,UAA6C,SAApBwgD,EAAMm0D,WAA2C,SAAnBn0D,EAAMxgD,WAEpH8mT,EAAiB,SAAUrgQ,GAE3B,IADA,IAAI1G,EAAS,GACJ70D,EAAK,EAAGA,EAAK1J,UAAUlH,OAAQ4Q,IACpC60D,EAAO70D,EAAK,GAAK1J,UAAU0J,GAK/B,IAHA,IAAI67T,EAAe1nU,OAAO4uH,iBAAiBxnD,GACvCnoE,EAAQ,EACR0oU,EAAa,EACR5sU,EAAI,EAAGiI,EAAK09D,EAAOzlE,OAAQ+H,EAAKjI,IAAKA,EAC1C4sU,EAAansS,WAAWksS,EAAahnQ,EAAO3lE,KAC5CkE,GAASioU,EAAOS,GAAc,EAAIA,EAEtC,OAAO1oU,GAEP2oU,EAAkB,SAAUxgQ,GAC5B,IAAI0sD,EAAS1sD,EAAQ+qD,wBAAwB2B,OAE7C,OADAA,GAAU2zM,EAAergQ,EAAS,YAAa,iBAQ/CygQ,EAAmB,SAAU92T,EAAM+2T,GACnCA,EAAanmQ,WAAWH,aAAazwD,EAAK2pG,UAAWotN,IAErDC,EAAsB,SAAUz8O,EAAO18E,GACvC,IAAIwyH,EAAe91C,EAAM81C,aACrB4mM,EAAiB18O,EAAM6tJ,UAC3B,OAAqB,OAAjB/3G,GAAyBA,IAAiBxyH,EACnCo5T,EAGH5mM,EAAa3tB,SAAS7kG,GACfo5T,EAAiBp5T,EAAOuqO,UAGxB6uF,EAAiBD,EAAoB3mM,EAAcxyH,IAKlEq5T,EAA8B,SAAUh5G,GAExC,SAASg5G,IACL,OAAkB,OAAXh5G,GAAmBA,EAAO3qN,MAAMjE,KAAM8B,YAAc9B,KAiV/D,OAnVA0uN,EAAUk5G,EAA4Bh5G,GAItCg5G,EAA2B9sU,UAAU+sU,eAAiB,SAAUz6P,GAC5D,IAAIxF,EAAkB,oCAA0BwF,EAAQA,EAAOH,MAAM,GAAI,EAAG,GAC5E,OAAOG,EAAOqB,QAAQ7G,EAAgBD,eAAgBC,IAE1DggQ,EAA2B9sU,UAAUgtU,gBAAkB,SAAU16P,EAAQH,GACrE,IAAI86P,EAAY96P,EAAMryE,OACtB,KAAMmtU,EAAY,GACd,OAAO,EAEX,IAAIC,EAAe56P,EAAO66P,kBACtBC,EAAoB96P,EAAOsB,YAC3Bq5P,EAAY,GAA2B,IAAtBG,GACjBloU,KAAK6nU,eAAez6P,GAExB,IAAI+6P,EAAY/6P,EAAO+6P,YACnB5B,EAAagB,EAAgBY,EAAU/mQ,YAC3C,GAAmB,IAAfmlQ,EACA,OAAO,EAEXn5P,EAAOm5P,WAAaA,EACpB,IAAI6B,EAAmBJ,EAAav0M,OACfrmD,EAAOi7P,iBAAmBhC,EAAqB+B,EAAkB7B,GACtF,OAAO,GAEXqB,EAA2B9sU,UAAUwtU,WAAa,SAAUl7P,GACpDA,EAAOH,MAAMryE,OAASwyE,EAAOi7P,kBAC7Bj7P,EAAOm7P,QAAQ,GAAG,EAAMvoU,KAAKwoU,aAAap7P,EAAQA,EAAOq7P,kBAAkB,IAGnFb,EAA2B9sU,UAAU4tU,aAAe,SAAUt7P,EAAQ46P,GAClE,IAAI5B,EAAch5P,EAAOg5P,YACrBuC,EAAav7P,EAAOu7P,WACpBpC,EAAan5P,EAAOm5P,WACpBqC,EAAgB,EAEpB,GAD6BZ,EAAaa,WAAa/B,EAC3B,CACxB,IAAIgC,EAAoBpB,EAAoBtB,EAAauC,GACrDI,EAAoBf,EAAav1M,UACrCm2M,EAAgBlC,EAAS,EAAGqC,EAAoBtC,EAASqC,SAGzDF,EAAgB/nM,YAAczzD,EAAO47P,cAEzC,IAAIC,EAA0C,EAA1B77P,EAAOi7P,iBACvBa,EAAoBxC,EAAS,EAAGH,EAAa,EAAIC,EAAWoC,EAAgBrC,GAAc,GAC1F4C,EAAmBxC,EAASv5P,EAAOH,MAAMryE,OAAS,EAAGsuU,GAAqBD,EAAgB,IAE9F,MAAO,CADPC,EAAoBxC,EAAS,EAAGC,EAASuC,EAAmBC,GAAoBF,EAAgB,KACrEE,IAE/BvB,EAA2B9sU,UAAUsuU,cAAgB,SAAUh8P,EAAQqqB,GACnE,IAAI8uO,EAAan5P,EAAOm5P,WACpBwB,EAAY36P,EAAOH,MAAMryE,OAC7BwyE,EAAOi8P,gBAAkB5xO,EAAa8uO,EACtCn5P,EAAOk8P,oBAAsBvB,EAAYtwO,EAAarqB,EAAOsB,aAAe63P,EAC5En5P,EAAOm8P,sBAAqB,IAEhC3B,EAA2B9sU,UAAU0uU,UAAY,SAAUp8P,EAAQqqB,GAE/D,OADgBrqB,EAAOH,MAAMryE,OACV,GACb68F,EAAarqB,EAAOq8P,cAG9B7B,EAA2B9sU,UAAU0tU,aAAe,SAAUp7P,EAAQvlD,GAClE,IAAIkgT,EAAY36P,EAAOH,MAAMryE,OAC7B,OAAsB,IAAfitB,GAEDkgT,EAAY,GACRlgT,EAAakgT,EAAY36P,EAAOq8P,cAG9C7B,EAA2B9sU,UAAUqyE,gBAAkB,SAAUC,EAAQH,EAAO16D,GACxEvS,KAAKsuE,qBAAqBlB,EAAQH,EAAO16D,IACzCvS,KAAK0pU,WAAWt8P,EAAQA,EAAOm5P,WAAsC,EAA1Bn5P,EAAOi7P,iBAAsBp7P,EAAMryE,OAAQwyE,EAAOojF,SAGrGo3K,EAA2B9sU,UAAUm0E,gBAAkB,SAAU7B,EAAQ9lD,EAAO4nD,GAC5ElvE,KAAK2pU,gCAAgCv8P,EAAQ9lD,EAAO4nD,IAExD04P,EAA2B9sU,UAAUwzE,qBAAuB,SAAUs7P,EAAS38P,EAAOwqB,GAClF,IAAIrqB,EAASw8P,EACTC,EAAgB58P,EAAMryE,OAC1B,GAAsB,IAAlBivU,EAIA,OAHAz8P,EAAOmB,gBAAe,GAAM,GAC5BnB,EAAO08P,mBACP18P,EAAO+B,gBAAkB/B,EAAOmC,aAAU3xE,GACnC,EAIX,IAFA,IAAImsU,EAA4C,EAA1B38P,EAAOi7P,iBACzB2B,EAAiB58P,EAAOsB,YACrBs7P,EAAiBH,GACpBG,IACA58P,EAAOuB,WAAWq7P,GAAgB,GAAM,GAE5C,KAAOA,EAAiBD,GACpBC,IACA58P,EAAOuB,WAAWq7P,GAAgB,GAAM,GAE5CA,EAAiBrD,EAASqD,EAAgBD,GAC1C,IAAIttS,EAAQ2wC,EAAO3wC,MAEfg7D,EAAauyO,EADDH,EAAgB,IAE5BpyO,EAAaivO,EAAS,EAAGmD,EAAgBG,IAE7C58P,EAAOojF,OAAS/4D,EAChB,IAAK,IAAI/8F,EAAI,EAAGA,EAAIsvU,EAAgBtvU,IAAK,CACrC,IAAIuvU,EAAYvvU,EAAI+8F,EAChB/mF,EAAO08D,EAAO18D,KAAKhW,GACnBk0E,EAAOq7P,IAAcJ,EAAgB,EACrCh7P,EAAuB,IAAdo7P,IAAoBr7P,EAC7BjH,EAAiBj3D,EAAKi3D,eACtBC,EAAkBl3D,EAAKk3D,gBAC3B,GAAID,EAAelrC,KAAWwwC,EAAMg9P,IAC7BriQ,EAAgB2oF,SAAW05K,GAC3BriQ,EAAgBkH,UAAYD,GAC5BjH,EAAgBmH,QAAUH,EAHjC,CAMAjH,EAAelrC,GAASwwC,EAAMg9P,GAC9BriQ,EAAgB4oF,OAAuB,IAAdy5K,EACzBriQ,EAAgBkH,QAAUD,EAC1BjH,EAAgBmH,MAAQH,EACxBhH,EAAgB2oF,OAAS05K,EACzB,IAAIC,EAAMD,EAAY,GAAM,EAC5BriQ,EAAgB6oF,KAAOy5K,EACvBtiQ,EAAgB8oF,OAASw5K,EACzB98P,EAAO4B,eAAet+D,IAE1B,IAAIm4M,EAAY89G,EAASoD,EAAiBF,GAC1C,IAASnvU,EAAIsvU,EAAgBtvU,EAAImuN,EAAWnuN,IAAK,CACzCktE,EAAkB,oCAA0BwF,EAAQH,EAAMvyE,GAAIA,EAAGmvU,GACrEz8P,EAAOqB,QAAQ7G,EAAgBD,eAAgBC,GAEnD,OAAO,GAEXggQ,EAA2B9sU,UAAU6uU,gCAAkC,SAAUC,EAAStiT,EAAO4nD,GAC7F,IAAIvpE,EAAQ3F,KACRotE,EAASw8P,EACb,GAAIx8P,EAAO+B,gBAAX,CACI,IAAK,IAAIz0E,EAAI,EAAGiI,EAAKusE,EAAQt0E,OAAQF,EAAIiI,IAAMjI,EAAG,CAC9C,IAAIsvB,EAAKklD,EAAQx0E,GAAIiP,EAAQqgB,EAAGrgB,MAAO0lE,EAAUrlD,EAAGqlD,QAASC,EAAatlD,EAAGslD,WAC7E,sBAAYlC,EAAO+B,gBAAiBxlE,EAAO0lE,EAASC,GAExDlC,EAAOmC,QAAUjoD,EAAMznB,MAAM,OALjC,CAQA,GAAqB,IAAjBynB,EAAM1sB,OAIN,OAHAwyE,EAAOmB,gBAAe,GAAM,GAC5BnB,EAAO08P,wBACP18P,EAAO+B,gBAAkB/B,EAAOmC,aAAU3xE,GAG9C,IAAI4xE,EAAexvE,KAAKyvE,YAAYrC,EAAQ9lD,EAAMznB,MAAM,GAAIqvE,GAC5D,GAAIM,aAAwBxzE,EAAS,CACjC,IAAImuU,EAAkB/8P,EAAO+B,gBAAkB,GAC3Ci7P,EAAqB,WAChBD,EAAgBvvU,QAIH+K,EAAM8pE,YAAYrC,EAAQA,EAAOmC,QAAS46P,IAAoBnuU,EAAQC,WAC5EkH,KAAKinU,GAJbh9P,EAAO+B,gBAAkB/B,EAAOmC,aAAU3xE,GAMlD4xE,EAAarsE,KAAKinU,MAG1BxC,EAA2B9sU,UAAU20E,YAAc,SAAUrC,EAAQi9P,EAAUn7P,GAC3E,IAGI/3D,EAHAsgF,EAAarqB,EAAOojF,OACpB85K,EAAoB,EACpBC,EAAkB,EAElB7vU,EAAI,EACJ8vU,EAAct7P,EAAQt0E,OACtB6vU,EAAeJ,EAASzvU,OACxB8vU,GAAuB,EAC3B,IAAKhwU,EAAI,EAAG8vU,EAAc9vU,EAAGA,IAAK,CAI9B4vU,GAFIK,GADJxzT,EAAS+3D,EAAQx0E,IACS20E,QAAQz0E,OAGlC2vU,GAFIj7P,EAAan4D,EAAOm4D,WAGpBq7P,IAAiBr7P,IACjBo7P,GAAuB,GAG/B,GAAIA,EAAJ,CACI,IAAI7iT,EAAYulD,EAAOq7P,gBACFr7P,EAAOpG,SAC5B,IAAKtsE,EAAI,EAAG8vU,EAAc9vU,EAAGA,IAEzB,IAAK,IAAImrU,GADT1uT,EAAS+3D,EAAQx0E,IACiBiP,MAAOk8T,EAAkB1uT,EAAOxN,MAAQwN,EAAOm4D,WAAYu2P,IACzF,GAAIA,GAAmBpuO,GAAcouO,GAAmBh+S,EAAW,CAC/D,IAAIouR,EAAY4vB,EAAkBpuO,EAC9B7vB,EAAkB,oCAA0BwF,EAAQi9P,EAASxE,GAAkBA,EAAiB4E,GACpGr9P,EAAOuB,WAAWsnO,GAAW,GAAM,GACnC7oO,EAAOgB,WAAW6nO,EAAWruO,EAAgBD,eAAgBC,QAV7E,CAgBA,IAAIgjQ,EAA0BnzO,EAC1B8uO,EAAan5P,EAAOm5P,WACpBsE,EAAeJ,EAAeH,EAAoBC,EAClDO,EAAgB19P,EAAOsB,YACvBq8P,EAAeD,EACnB,GAAqB,IAAjBD,GAAqC,IAAftE,EAGtB,OAFAn5P,EAAO08P,wBACP18P,EAAOs6K,eAMX,GAH0E,IAAtB4iF,GAC7CC,EAAkB,GAClBr7P,EAAQoK,OAAM,SAAUniE,GAAU,OAAOA,EAAOxN,OAAS8tF,KACb,CAC/CrqB,EAAOojF,OAAS/4D,EAAa8yO,EAAkB,EAC/Cn9P,EAAOi8P,iBAAmBkB,EAAkBhE,EAC5Cn5P,EAAO49P,eACP,IACIC,GADAjD,EAAe56P,EAAO66P,mBACax1M,UACnCy4M,EAAsBxD,EAAoBt6P,EAAOg5P,YAAa4B,EAAaa,UAC3EsC,EAAkBzE,EAAS,EAA2B,IAAxBuE,EAC5B,EACCA,EAAsBC,GACzBE,EAA0D,IAApBD,EACpC,EACA3E,EAAW2E,EAAkB5E,GACnC,GAAI0E,EAAsBC,GACnBE,IAAwC3zO,EAI3C,OAHArqB,EAAOm8P,sBAAqB,GAC5Bn8P,EAAOu7P,WAAWl2M,UAAY04M,EAAkBZ,EAAkBhE,OAClEvmU,KAAK0pU,WAAWt8P,EAAQm5P,EAAYwE,EAAcN,EAAchzO,GAIxE,IAAIgxO,EAAgBr7P,EAAOq7P,gBAG3B,GAFsCqC,EAAgB19P,EAAOi7P,kBACtDn5P,EAAQoK,OAAM,SAAUx5E,GAAK,OAAOA,EAAE6J,MAAQ8+T,KAEjDr7P,EAAOk8P,mBAAqB5C,EAAS,EAAG+D,EAAehzO,EAAaqzO,GAAiBvE,EACrFn5P,EAAOm8P,sBAAqB,OAE3B,CACD,IAAI8B,EAA+C,EAA1Bj+P,EAAOi7P,iBAChC,GAA2B,IAAvBgD,EAA0B,CAC1B,IAAIrD,EAAe56P,EAAO66P,kBACtBI,EAAmBhC,EAAqB2B,EAAav0M,OAAQ8yM,GACjEn5P,EAAOi7P,iBAAmBA,EAC1BgD,EAAwC,EAAnBhD,EAEzB,IAAK3tU,EAAI,EAAG8vU,EAAc9vU,IAAKA,EAAG,CAC9B,IAAIsvB,EAAKklD,EAAQx0E,GAAI40E,EAAatlD,EAAGslD,WAAYq7P,EAAe3gT,EAAGqlD,QAAQz0E,OAEvEgwU,EAF6F5gT,EAAGrgB,QAGhGihU,EAA0BlE,EAAS,EAAGkE,GAFxBD,EAAer7P,KAKrCy7P,EAAe,EACXN,GAAgBr9P,EAAOi7P,kBACvBuC,EAA0B,EAC1BG,EAAeN,GAGXA,GAAgBY,GAChBN,EAAeN,EACfG,EAA0B,GAG1BG,EAAeM,EAGvB,IAAIC,EAAwBb,GAAgBG,EACtCA,EACA,EACFW,EAAiBR,EAAeD,EACpC,GAAIS,EAAiB,EACjB,IAAK7wU,EAAI,EAAG6wU,EAAiB7wU,IAAKA,EAAG,CAC7BmrU,EAAkB+E,EAA0BE,EAAgBpwU,EAC5DktE,EAAkB,oCAA0BwF,EAAQi9P,EAASxE,GAAkBA,EAAiBwE,EAASzvU,QAC7GwyE,EAAOqB,QAAQ7G,EAAgBD,eAAgBC,OAGlD,CACD,IAAIjlE,EAAK8jU,EAAS8E,GAClB,IAAK7wU,EAAI,EAAGiI,EAAKjI,IAAKA,EAClB0yE,EAAOuB,WAAWo8P,GAAc,GAAM,GAG9C,IAAIS,EAAwB9E,EAAS,EAAG+D,EAAea,EAAwBP,GAC/E39P,EAAOojF,OAASo6K,EAChBx9P,EAAOi8P,gBAAkBiC,EAAwB/E,EACjDn5P,EAAOk8P,mBAAqBkC,EAAwBjF,EACpDn5P,EAAOm8P,sBAAqB,GAEhCvpU,KAAK0pU,WAAWt8P,EAAQm5P,EAAYwE,EAAcN,EAAcG,KAEpEhD,EAA2B9sU,UAAU2wU,eAAiB,SAAUr+P,EAAQ+iF,GAOpE,IANA,IAKIz/I,EAJAg7T,EADQt+P,EAAOpG,SAASp3B,SACLh1C,OACnBu+E,EAAa/L,EAAOH,MACpBokD,EAAQm1M,EAAWp5P,EAAOi8P,gBAAkBj8P,EAAOm5P,YACnDV,EAAkB,EAEf6F,EAAav7K,IAAcA,EAC9B01K,EAAkB11K,EAAa9+B,EAC/B3gH,EAAO08D,EAAO18D,KAAKy/I,GACnBy1K,EAAWx4P,EAAQ18D,EAAMm1T,EAAiB1sP,GAC1C/L,EAAO4B,eAAet+D,IAG9Bk3T,EAA2B9sU,UAAU6wU,UAAY,SAAUv+P,GACvDptE,KAAK0pU,WAAWt8P,EAAQA,EAAOm5P,WAAYn5P,EAAOsB,YAAatB,EAAOH,MAAMryE,OAAQwyE,EAAOw+P,mBAE/FhE,EAA2B9sU,UAAU4uU,WAAa,SAAUt8P,EAAQm5P,EAAYwE,EAAcN,EAAchzO,GACxG,IAAIuwO,EAAe56P,EAAO66P,kBACtBgD,EAAsBjD,EAAav1M,UACnCy4M,EAAsBxD,EAAoBt6P,EAAOg5P,YAAa4B,EAAaa,UAC3EsC,EAAkBzE,EAAS,EAA2B,IAAxBuE,EAC5B,EACCA,EAAsBC,GACzBE,EAA0D,IAApBD,EACpC,EACA3E,EAAW2E,EAAkB5E,GAC/B6E,EAAsCL,GAAgBN,IACtDW,EAAsC1E,EAAS,EAAG+D,EAAeM,IAErE,IAAIc,EAAgDT,EAChDU,EAAgDpF,EAAS,EAAG+D,EAAeoB,EAAgDd,GAC/H39P,EAAOojF,OAAS46K,EAChBh+P,EAAOi8P,gBAAkBwC,EAAgDtF,EACzEn5P,EAAOk8P,mBAAqBwC,EAAgDvF,EAC5En5P,EAAO2+P,oBAAqB,EAC5B3+P,EAAO4+P,yBACP5+P,EAAOm8P,uBACPvpU,KAAKyrU,eAAer+P,EAAQ,IAEzBw6P,EApVsB,CAqV/B,uBAEEqE,EAA6B,SAAUr9G,GAEvC,SAASq9G,IACL,OAAkB,OAAXr9G,GAAmBA,EAAO3qN,MAAMjE,KAAM8B,YAAc9B,KA6B/D,OA/BA0uN,EAAUu9G,EAA2Br9G,GAIrCq9G,EAA0BnxU,UAAU4tU,aAAe,SAAUt7P,EAAQ46P,GACjE,MAAO,CAAC,EAAG,IAEfiE,EAA0BnxU,UAAUsuU,cAAgB,SAAUh8P,EAAQqqB,KACtEw0O,EAA0BnxU,UAAUwtU,WAAa,aACjD2D,EAA0BnxU,UAAU0uU,UAAY,WAC5C,OAAO,GAEXyC,EAA0BnxU,UAAU0tU,aAAe,WAC/C,OAAO,GAEXyD,EAA0BnxU,UAAUgtU,gBAAkB,SAAU16P,EAAQH,GAIpE,OAHAG,EAAOm5P,WACDn5P,EAAOi7P,iBACH,EACH,GAEX4D,EAA0BnxU,UAAU+sU,eAAiB,WACjD,OAAO,MAEXoE,EAA0BnxU,UAAUm0E,gBAAkB,aACtDg9P,EAA0BnxU,UAAUqyE,gBAAkB,SAAUC,GAC5DA,EAAOmB,gBAAe,GAAM,GAC5BnB,EAAO08P,oBAEXmC,EAA0BnxU,UAAU6wU,UAAY,SAAUv+P,KAC1D6+P,EAA0BnxU,UAAU2wU,eAAiB,aAC9CQ,EAhCqB,CAiC9B,sBAEEC,EAAgC,WAChC,SAASA,IACLlsU,KAAK47G,SAAW,GAChB57G,KAAK6pP,WAAa,GAClB7pP,KAAK8pP,aAAY,SAAU78K,GAAS,OAAOA,UAA0C,IAAIg/P,GACzFjsU,KAAK8pP,aAAY,SAAU78K,GAAS,OAAOA,aAAiBvsE,QAAU,IAAIknU,GAe9E,OAbAsE,EAA6BpxU,UAAUgvP,YAAc,SAAU5tN,EAASl3B,GACpEhF,KAAK47G,SAAS1gH,KAAKghC,GACnBl8B,KAAK6pP,WAAW3uP,KAAK8J,IAEzBknU,EAA6BpxU,UAAU8sP,YAAc,SAAU36K,GAE3D,IADA,IAAI2uC,EAAW57G,KAAK47G,SACXlhH,EAAI,EAAGiI,EAAKi5G,EAAShhH,OAAQF,EAAIiI,IAAMjI,EAC5C,GAAIkhH,EAASlhH,GAAGuyE,GACZ,OAAOjtE,KAAK6pP,WAAWnvP,GAG/B,OAAO,MAEJwxU,EApBwB,GAuB/BC,EAA2B,WAC3B,SAASA,KAiCT,OA/BAA,EAAwBrxU,UAAUsxU,mBAAqB,SAAUrlQ,GAC7D,OAAOigQ,EAAmBjgQ,IAE9BolQ,EAAwBrxU,UAAUqrU,cAAgB,SAAUz1T,EAAM27T,GAC9D7E,EAAiB92T,EAAM,MAAImoO,mBAAmBwzF,KAElDF,EAAwBrxU,UAAUmrU,aAAe,SAAUv1T,EAAM+2T,GAC7D,IAAIt6L,EAAkBs6L,EAAat6L,gBAC/Bm/L,EAA6C,IAA7Bn/L,EAAgBr0D,UAA2C,WAAzBq0D,EAAgB9yI,KAAoB8yI,EAAkBs6L,EAC5GD,EAAiB92T,EAAM47T,IAE3BH,EAAwBrxU,UAAUyxU,cAAgB,SAAUxlQ,GACxD,IAAIx4D,EAASw4D,EAAQzF,WACrB,MAAO,CACH/yD,EAAO4yD,aAAa,MAAI7kE,cAAc,OAAQyqE,GAC9Cx4D,EAAO4yD,aAAa,MAAI7kE,cAAc,OAAQyqE,EAAQ7F,eAG9DirQ,EAAwBrxU,UAAU0xU,cAAgB,SAAU3qQ,EAAIwqQ,EAAW5E,GACvE,IAAIl5T,EAASszD,EAAGP,WAChB/yD,EAAOgzD,YAAY8qQ,GACnB99T,EAAOgzD,YAAYkmQ,IAEvB0E,EAAwBrxU,UAAU2xU,gBAAkB,SAAUJ,EAAW5E,GACrE,IAAIiF,EAAUL,EAAUxzF,mBACxB,OAAO6zF,IAAYjF,EAAe,KAAOiF,GAE7CP,EAAwBrxU,UAAU6xU,eAAiB,SAAUN,EAAW5E,GACpE,IAAImF,EAASnF,EAAazgB,uBAC1B,OAAO4lB,IAAWP,EAAY,KAAOO,GAElCT,EAlCmB,GAqC1BU,EAA6B,SAAUj+G,GAEvC,SAASi+G,IACL,OAAkB,OAAXj+G,GAAmBA,EAAO3qN,MAAMjE,KAAM8B,YAAc9B,KAY/D,OAdA0uN,EAAUm+G,EAA2Bj+G,GAIrCi+G,EAA0B/xU,UAAUsxU,mBAAqB,SAAUrlQ,GAC/D,OAAOigQ,EAAmBhnU,KAAK8sU,SAAS/lQ,KAE5C8lQ,EAA0B/xU,UAAUyxU,cAAgB,SAAUxlQ,GAC1D,IAAIx4D,EAASw4D,EAAQzF,WACrB,MAAO,CACH/yD,EAAO4yD,aAAa,MAAI7kE,cAAc,MAAOyqE,GAC7Cx4D,EAAO4yD,aAAa,MAAI7kE,cAAc,MAAOyqE,EAAQ7F,eAGtD2rQ,EAfqB,CAgB9BV,GACEY,EAAqB,SAAUn+G,GAE/B,SAASm+G,IACL,OAAkB,OAAXn+G,GAAmBA,EAAO3qN,MAAMjE,KAAM8B,YAAc9B,KAK/D,OAPA0uN,EAAUq+G,EAAmBn+G,GAI7Bm+G,EAAkBjyU,UAAUgyU,SAAW,SAAU/lQ,GAC7C,OAAOA,EAAQzF,YAEZyrQ,EARa,CAStBF,GACEG,EAAoB,SAAUp+G,GAE9B,SAASo+G,IACL,OAAkB,OAAXp+G,GAAmBA,EAAO3qN,MAAMjE,KAAM8B,YAAc9B,KAK/D,OAPA0uN,EAAUs+G,EAAkBp+G,GAI5Bo+G,EAAiBlyU,UAAUgyU,SAAW,SAAU/lQ,GAC5C,OAAOA,EAAQzF,WAAWA,YAEvB0rQ,EARY,CASrBH,GAEEI,EAAwB,SAAUr+G,GAElC,SAASq+G,IACL,OAAkB,OAAXr+G,GAAmBA,EAAO3qN,MAAMjE,KAAM8B,YAAc9B,KAS/D,OAXA0uN,EAAUu+G,EAAsBr+G,GAIhCq+G,EAAqBnyU,UAAUyxU,cAAgB,SAAUxlQ,GACrD,IAAIx4D,EAASw4D,EAAQzF,WACrB,MAAO,CACH/yD,EAAO4yD,aAAa,MAAI7kE,cAAc,MAAOyqE,GAC7Cx4D,EAAO4yD,aAAa,MAAI7kE,cAAc,MAAOyqE,EAAQ7F,eAGtD+rQ,EAZgB,CAazBd,GAEEe,EAA2B,WAC3B,SAASA,EAAwB7+T,GAC7BrO,KAAKqO,UAAYA,EAqBrB,OAnBA6+T,EAAwBpyU,UAAU8sP,YAAc,SAAU7gL,GACtD,IAAIx4D,EAASw4D,EAAQzF,WACjBjzD,EAAYrO,KAAKqO,UACrB,GAAe,OAAXE,EACA,OAAOF,EAAU7P,IAAI2tU,GAEzB,IAAIgB,EAAgB5+T,EAAOgsJ,QAC3B,MAAsB,UAAlB4yK,GAA+C,UAAlBA,GAA+C,UAAlBA,EACnD9+T,EAAU7P,IAAIwuU,GAEH,UAAlBG,EACO9+T,EAAU7P,IAAIuuU,GAEH,OAAlBI,GAA4C,OAAlBA,EACnB9+T,EAAU7P,IAAIyuU,GAElB5+T,EAAU7P,IAAI2tU,IAEzBe,EAAwB13T,OAAS,CAAC,aAC3B03T,EAvBmB,GA0B1BE,EAAuBvyU,OAAOgI,OAAOhI,OAAOoE,OAAO,MAAO,CAC1DouU,mBAAoB,uCACpBC,eAAgB,qCAKhBC,EAAiB,SAAU3+G,GAE3B,SAAS2+G,EAAcxmQ,EAASwB,EAAalhE,EAAa2/D,EAAUqhE,EAAer7D,EAAiBwgQ,EAA2BC,GAC3H,IAAI9nU,EAAQipN,EAAO5zN,KAAKgF,KAAM,CAC1By8B,MAAO,OACP+wC,sBAAuB,gCAAsBjF,MAC3CvoE,KA6BN,OA5BA2F,EAAM6qJ,OAAS,EACf7qJ,EAAM+nU,aAAc,EACpB/nU,EAAMgoU,UAAW,EACjBhoU,EAAMioU,gBAAiB,EACvBjoU,EAAMkoU,uBAAwB,EAC9BloU,EAAMomU,oBAAqB,EAC3BpmU,EAAMmoU,aAAe,EACrBnoU,EAAMohE,QAAUA,EAChBphE,EAAM4iE,YAAcA,EACpB5iE,EAAM0B,YAAcA,EACpB1B,EAAMqhE,SAAWA,EACjBrhE,EAAMugP,gBAAkB79G,EAA+B,gBACvD1iI,EAAMqnE,gBAAkBA,EACxBrnE,EAAM2iI,UAAYt7D,EAAgBs7D,UAClC3iI,EAAMqgP,gBAAkBwnF,EACxB7nU,EAAM8nU,wBAA0BA,EAChC9nU,EAAM8jU,aAAe,EACrB9jU,EAAMorJ,iBAAmB,mCAAyBprJ,EAAM0B,YAAa,sBACrE1B,EAAMwrJ,UAAY,oBAAUxrJ,EAAMorJ,kBAClCprJ,EAAM0jU,gBACA1jU,EAAM2jU,mBACF3jU,EAAM4gU,WACF5gU,EAAMqjU,cACF,EAClBrjU,EAAMqmU,uBAAyB,WAC3BrmU,EAAMgoU,UAAW,GAErBhoU,EAAMooU,UAAYpoU,EAAMooU,UAAU5uU,KAAKwG,GAChCA,EAggBX,OAliBA+oN,EAAU6+G,EAAe3+G,GAoCzB2+G,EAAc/3T,OAAS,WACnB,MAAO,CACH,MAAIgyD,QACJ,mBACA,oBACA,WACA,gBACA,kBACA0kQ,EACAgB,IAGRK,EAAc/1B,UAAY,WACtB,MAAO,CACHl6S,KAAM,YACNI,KAAM,iBACNkoP,oBAAoB,EACpBmyD,UAAW,CAAC,QAAS,WAG7Bw1B,EAAczyU,UAAUqE,KAAO,SAAUwoE,EAAgBC,GACrD5nE,KAAKorE,MAAQ,CAAEzD,eAAgBA,EAAgBC,gBAAiBA,IAEpE2lQ,EAAczyU,UAAUwuD,SAAW,WAC/B,IAAI3jD,EAAQ3F,KACZA,KAAK0tU,aAAc,EACnB,IAAI3mQ,EAAU/mE,KAAK+mE,QACfi/P,EAAmBhmU,KAAKgmU,iBAAmBhmU,KAAKytU,wBAAwB7lF,YAAY7gL,GACpF4hQ,EAAa3oU,KAAK2oU,WAAa3C,EAAiBoG,mBAAmBrlQ,GACnE/8C,EAAKg8S,EAAiBuG,cAAcxlQ,GAAUq/P,EAAcp8S,EAAG,GAAIk8S,EAAiBl8S,EAAG,GACvFgkT,EAAyBrF,IAAe7B,EACxCmH,EAAiBjuU,KAAK+tU,UAK1B,GAJA/tU,KAAKomU,YAAcA,EACnBpmU,KAAKkmU,eAAiBA,EACtBlmU,KAAK0nP,eACL1nP,KAAKkuU,kBAAoBluU,KAAKioU,kBAC1B+F,EACArF,EAAWz4N,iBAAiB,SAAU+9N,OAErC,CACD,IAAIE,EAAenI,EAAiByG,gBAAgBrG,EAAaF,GACjElmU,KAAKgpU,cAAiC,OAAjBmF,EAAwB,EAAIjH,EAAkCd,GACnF,MAAIl2N,iBAAiB,SAAU+9N,GAAgB,GAC/CjuU,KAAKouU,2BAA6B,WAASpiQ,OAAOj5B,aAAY,WAC1D,IAAIs7R,EAAoB1oU,EAAMqjU,cAC1BsF,EAAoBpH,EAAkCd,GAE1D,GADAzgU,EAAMqjU,cAAgBsF,EAClBD,IAAsBC,EAAmB,CACzC,IAAIC,EAAsB5oU,EAAMsiU,kBAC5BuG,EAAmB7oU,EAAMuoU,kBAC7BvoU,EAAMuoU,kBAAoBK,EAC1B5oU,EAAM8oU,cAAcF,EAAqBC,MAE9C,KAEPxuU,KAAKgF,SAASsjU,WAAWtoU,OAE7ButU,EAAczyU,UAAUE,KAAO,SAAUmY,EAASs1H,GAC9CzoI,KAAKmT,GAASnT,KAAKitE,MAAOw7D,IAE9B8kM,EAAczyU,UAAUquJ,SAAW,WAC/B,IAAIulL,EAAW1uU,KAAK2oU,WAChBsF,EAAiBjuU,KAAK+tU,UACtB9G,EAAkByH,GAClBA,EAAShsN,oBAAoB,SAAUurN,GAGvC,MAAIvrN,oBAAoB,SAAUurN,GAAgB,GAEtDjuU,KAAK2uU,oBACL3uU,KAAK4uU,8BAA2BhxU,EAChCoC,KAAK0tU,aACC,EACN1tU,KAAK+gU,yBACL/gU,KAAK8pU,mBACL9pU,KAAKgmU,iBAAiBwG,cAAcxsU,KAAK+mE,QAAS/mE,KAAKomU,YAAapmU,KAAKkmU,gBACzElmU,KAAKomU,YAAcpmU,KAAKkmU,eAAiBlmU,KAAK2oU,WAAa,KAC3D3oU,KAAKuuE,gBAAe,GAAM,GAC1B,IAAIsgQ,EAAiB,WAAS7iQ,OAAOX,cACrCwjQ,EAAe7uU,KAAKouU,4BACpBS,EAAe7uU,KAAK8uU,eACpB9uU,KAAKgpU,cACChpU,KAAK8uU,cACD9uU,KAAKouU,2BAA6B,GAEhDb,EAAczyU,UAAU4qE,OAAS,WAC7B1lE,KAAKorE,MAAQ,KACbprE,KAAKitE,MAAQ,MAEjBsgQ,EAAczyU,UAAU4sP,aAAe,WACnC,IAAI/hP,EAAQ3F,KAEZ,GADAA,KAAK+gU,yBACA/gU,KAAKorE,OAAUprE,KAAK0tU,YAAzB,CAGA,IAAIzgQ,EAAQjtE,KAAKitE,MACbjoE,EAAWhF,KAAKgF,SAAWhF,KAAKgmP,gBAAgB4B,YAAY36K,GAChE,GAAiB,OAAbjoE,EACA,MAAM,IAAIjI,MAAM,gDAEfiD,KAAKmxJ,WAAcnxJ,KAAKihU,2BACzBjhU,KAAKkhU,qBAET,IAAI6N,EAAqB/pU,EAAS8iU,gBAAgB9nU,KAAMitE,GAKxD,GAJAjoE,EAASmoE,gBAAgBntE,KAAMitE,EAAOjtE,KAAKwwJ,QAClB,EAArBu+K,GACA/uU,KAAK8pU,mBAEwB,IAAP,EAArBiF,GAA+B,CAChC,IAAI/kT,EAAK,WAASgiD,OAAQgjQ,EAAehlT,EAAG+oB,YAAak8R,EAAmBjlT,EAAGqhD,cAC/E4jQ,EAAiBjvU,KAAK8uU,eACtB9uU,KAAK8uU,cAAgBE,GAAa,WAC9B,GAAIrpU,EAAMsnE,MAAO,CACb,IAAIk7P,EAAYxiU,EAAMwiU,aAAexiU,EAAMX,SAAS6iU,eAAeliU,GACjD4hU,EAAgBY,EAAU/mQ,YAC1B,IACd6tQ,EAAiBtpU,EAAMmpU,eACvBnpU,EAAM+hP,qBAIVunF,EAAiBtpU,EAAMmpU,iBAE5B,KAEkB,EAArBC,GACA/uU,KAAKkvU,gBAAgBlvU,KAAK2oU,cAGlC4E,EAAczyU,UAAUsmU,wBAA0B,SAAUjoP,EAAYsvD,GAChEzoI,KAAKmvU,kBAGTnvU,KAAK+rU,oBAAqB,EAC1B/rU,KAAKgF,SAASiqE,gBAAgBjvE,KAAMm5E,EAAYsvD,KAEpD8kM,EAAczyU,UAAUumU,6BAA+B,SAAUloP,EAAYsvD,GACzE,IAAI9iI,EAAQ3F,KACZ,IAAIA,KAAKmvU,gBAAT,CAGAnvU,KAAKmvU,iBAAkB,EACvB,IAAI7N,EAAWthU,KAAK+wJ,iBAAiBi3F,SAAShoP,KAAKorE,MAAOprE,KAAKkmP,iBAC/DlmP,KAAKsoI,UAAUkB,gBAAe,WAAc,OAAO7jI,EAAMwpU,iBAAkB,KACvE7N,IAAathU,KAAKitE,MAClBjtE,KAAK0nP,eAGL1nP,KAAKitE,MAAQq0P,IAGrBiM,EAAczyU,UAAUkwU,aAAe,WACnChrU,KAAK2tU,UAAW,EAChB3tU,KAAK+rU,oBAAqB,EAC1B/rU,KAAK6tU,uBAAwB,GAEjCN,EAAczyU,UAAUs0U,YAAc,WAClC,OAAOpvU,KAAK2oU,YAEhB4E,EAAczyU,UAAUmtU,gBAAkB,WACtC,IAzuByBlhQ,EACzB0sD,EAwuBIo1M,EAAW7oU,KAAK2oU,WACpB,MAAO,CACHE,SAAUA,EACVp2M,UAAWo2M,EAASp2M,UACpBgB,OAAQo1M,IAAa/B,EACfjzL,aA9uBe9sE,EA+uBE8hQ,EA9uB3Bp1M,EAAS1sD,EAAQ+qD,wBAAwB2B,OAC7CA,GAAU2zM,EAAergQ,EAAS,iBAAkB,wBAgvBpDwmQ,EAAczyU,UAAUgvU,iBAAmB,WACvC9pU,KAAKwwJ,OACCxwJ,KAAKqpU,gBACDrpU,KAAKspU,mBACDtpU,KAAKumU,WACDvmU,KAAKqoU,iBAAmB,EAC1CroU,KAAKmvU,gBACCnvU,KAAK+rU,mBACD/rU,KAAK2tU,UAAW,EAC1B3tU,KAAKupU,sBAAqB,IAE9BgE,EAAczyU,UAAUizU,UAAY,WAChC,IAAIpoU,EAAQ3F,KACRqvU,EAAsBrvU,KAAK+rU,mBAC/B,IAAK/rU,KAAK2tU,WAAa0B,EAAqB,CACxC,IAAIC,EAAqBtvU,KAAKkuU,kBAC1BqB,EAAwBvvU,KAAKioU,kBACjCjoU,KAAKkuU,kBAAoBqB,EACzBvvU,KAAKsoI,UAAUkB,gBAAe,WAC1B7jI,EAAMgoU,UAAW,EACjBhoU,EAAM8oU,cAAcc,EAAuBD,MAE/CtvU,KAAK2tU,UAAW,EAEhB0B,IACArvU,KAAK+rU,oBAAqB,IAGlCwB,EAAczyU,UAAU2zU,cAAgB,SAAUF,EAAqBC,GACnE,GAAKxuU,KAAK0tU,YAGV,GAAI1tU,KAAK6tU,sBACL7tU,KAAK6tU,uBAAwB,OAIjC,GADY7tU,KAAKitE,MACjB,CAGA,IAAIjoE,EAAWhF,KAAKgF,SAChBwqU,EAAwBxvU,KAAKwwJ,OAC7Bi/K,EAAsBzvU,KAAKyoU,gBAC3Bz+S,EAAKhlB,EAAS0jU,aAAa1oU,KAAMuuU,GAAsBmB,EAAwB1lT,EAAG,GAAI2lT,EAAsB3lT,EAAG,GAC/G4lT,EAAkBF,EAAwBF,EACxC,EACAE,EAAwBF,EACpB,EACA,EACNK,EAAgB,EACpB,GAAIH,GAAyBF,GAAyBC,IAAwBE,GACvEA,IAAwBF,GAAuBA,GAAuBE,EACrED,GAAyBF,GAAyBC,IAAwBE,EACtE3qU,EAASwjU,aAAaxoU,KAAM2vU,KAC5BC,GAAmB,GAGlB5qU,EAASwkU,UAAUxpU,KAAM0vU,KAC9BE,GAAmB,QAIvB,GAAIF,EAAwBF,GAAyBC,GAAuBC,GAAyBC,GAAuBF,EAAqB,CAC7I,IAAIK,EAAsBJ,EAAwBF,EAClDxvU,KAAK+vU,WAAWD,EAAqB,GACrCD,EAAgB,EACZ7qU,EAASwjU,aAAaxoU,KAAM2vU,KAC5BC,GAAmB,QAGtB,GAAIJ,EAAwBE,GAAyBF,GAAyBG,GAAuBF,GAAuBE,EAAqB,CAC9IG,EAAsBL,EAAsBE,EAChD3vU,KAAK+vU,WAAWD,GAAsB,GACtCD,EAAgB,EACZ7qU,EAASwkU,UAAUxpU,KAAM0vU,KACzBE,GAAmB,QAGlBH,EAAsBC,GAAyBF,EAAwBG,GAC5E3qU,EAAS2mU,UAAU3rU,MACfyvU,EAAsBC,EAClB1qU,EAASwjU,aAAaxoU,KAAM2vU,KAC5BC,GAAmB,GAGlB5qU,EAASwkU,UAAUxpU,KAAM0vU,KAC9BE,GAAmB,KAIvBnwU,QAAQykB,KAAK,mCACblf,EAAS2mU,UAAU3rU,OAGL,IAAlB6vU,IACA7vU,KAAKwwJ,OAASk/K,EACd1qU,EAASokU,cAAcppU,KAAM0vU,IAEG,IAAb,EAAlBE,IACkC,IAAb,EAAlBA,IACJ5vU,KAAKuoU,QAAQmH,GAA0C,EAAlBE,GAAuB,GAAsB,EAAlBA,GAAuB,KAG/FrC,EAAczyU,UAAUi1U,WAAa,SAAUC,EAAYvyS,GAEvD,IAAmB,IAAfA,EAEA,IADA,IAAI0yH,EAFKnwJ,KAEe4rU,iBACjBoE,KAAc,CACjB,IAAIt/T,EAJC1Q,KAIak2S,WAClB4vB,EALK9lU,KAKqB0Q,IAAQy/I,GAAY,QAKlD,IADA,IAAItoI,EATK7nB,KAScyoU,gBAChBuH,KAAc,CACbt/T,EAXC1Q,KAWa0Q,KAAK,GACvBo1T,EAZK9lU,KAYqB0Q,IAAQmX,GAAW,KAIzD0lT,EAAczyU,UAAUytU,QAAU,SAAU0H,EAAUzG,EAAWhB,EAAc93R,GAC3E,IAAI/qC,EAAQ3F,KACZ,IAAIwpU,GAAahB,GAAgB93R,KACxB1wC,KAAK4tU,eAAgB,CA4DtB7G,GA3DqB,SAAUxnS,GAC3B,KAAIA,EAAO55B,EAAMmoU,aAAe,IAAhC,CAGAnoU,EAAMmoU,aAAevuS,EACrB55B,EAAMioU,gBAAiB,EACvB,IAAIsC,EAAsB,WACtBvqU,EAAMioU,gBAAiB,GAEvBzF,EAAYxiU,EAAMwiU,YACtB,GAAkB,OAAdA,EAAJ,CAIA,IAAIgI,EAAmBhI,EAAU/mQ,WAE7Bl6C,EAAOipT,GACJA,EAAiB1nF,IACjB0nF,EAAiB1nF,GAHC,wBAInB0nF,EAAiB1nF,GAJE,wBAIqBphP,YAAY4hG,WAJjC,6BAKnBrrG,EACN,QAAaA,IAATspB,EACAgpT,QAEC,CACD,IAAIE,EAAgB,CAChBH,SAAUA,EACVI,WAAY7H,EACZ8H,QAAS9G,GAET5hQ,EAAkBjiE,EAAMylE,MAAMxD,gBAElC,GADAA,EAAgB2oQ,eAAiBH,EACb,iBAATlpT,EAkBN,IAAIA,EAAK6pI,iBAEV,OADAm/K,IACOhpT,EAAK6pI,iBAAiBi3F,SAASriP,EAAMylE,OAG5C,MAAM,IAAIruE,MAAM,gEAtBhB,IAAI4qE,EAAiBC,EAAgBD,eAEjCkhL,EAAWlhL,EADOwgQ,EAAU/mQ,WAAWgG,aAnB1B,yBAqBjB,GAAwB,mBAAbyhL,EAWP,MAAM,IAAI9rP,MAAM,gEAVhBmzU,IACA,IAAIngU,EAAS84O,EAAS7tP,KAAK2sE,EAAgBsoQ,EAAUzH,EAAcgB,GACnE,GAAIz5T,aAAkB/T,EAElB,OADA2J,EAAMioU,gBAAiB,EAChB79T,EAAO5M,MAAK,WACf+sU,aA/BhBA,UAoDpB3C,EAAczyU,UAAUyuU,qBAAuB,SAAUiH,GACrDxwU,KAAKomU,YAAYtlQ,MAAM2yD,OAASzzH,KAAKqpU,gBAAkB,KACvDrpU,KAAKkmU,eAAeplQ,MAAM2yD,OAASzzH,KAAKspU,mBAAqB,KACzDkH,IACAxwU,KAAK2tU,UAAW,EAChB5G,EAAK/mU,KAAKgsU,0BAGlBuB,EAAczyU,UAAUimU,uBAAyB,WAC7C,IAAIr6E,EAAqB1mP,KAAK0mP,mBAC1BA,IACAA,EAAmB5xO,YAAY9U,KAAKghU,YAAahhU,MACjDA,KAAK0mP,mBAAqB1mP,KAAKghU,YAAc,OAGrDuM,EAAczyU,UAAUqtU,UAAY,WAChC,OAAOnoU,KAAK0Q,KAAK,IAErB68T,EAAczyU,UAAUo7S,SAAW,WAC/B,OAAOl2S,KAAK0Q,KAAK1Q,KAAK0uE,YAAc,IAExC6+P,EAAczyU,UAAU8wU,eAAiB,WACrC,IAAIzD,EAAYnoU,KAAKmoU,YACrB,OAAqB,OAAdA,GAAsB,EAAIA,EAAUvgQ,gBAAgB2oF,QAE/Dg9K,EAAczyU,UAAU2tU,cAAgB,WACpC,IAAIvyB,EAAWl2S,KAAKk2S,WACpB,OAAoB,OAAbA,GAAqB,EAAIA,EAAStuO,gBAAgB2oF,QAE7Dg9K,EAAczyU,UAAUo0U,gBAAkB,SAAUvG,GAChD,IAAIhjU,EAAQ3F,KAQRywU,EAjbsC,WAASzkQ,OAAO0kQ,eAkb1D,GAAyC,mBAA9BD,EAA0C,CACjD,IAAIpiR,EAAWruD,KAAK2wU,wBAChBtiR,GACAA,EAAS+6C,cAEb/6C,EAAWruD,KAAK2wU,wBAA0B,IAAIF,GAA0B,SAAU1qO,GAC9E,IAAI6qO,EAAUjrU,EAAMipU,yBAChBiC,EAAU9qO,EAAQ,GAAG+qO,YACzBnrU,EAAMipU,yBAA2BiC,OACjBjzU,IAAZgzU,GAAyBC,EAAQp9M,SAAWm9M,EAAQn9M,QAAUo9M,EAAQv8R,QAAUs8R,EAAQt8R,OAjB5E,SAAUu8R,GAC9B9J,GAAK,WACG8J,IAAYlrU,EAAMipU,0BAClBjpU,EAAM+hP,kBAeNqpF,CAAkBF,OAGjB1nO,QAAQw/N,GAErB,IAAIqI,EAAWhxU,KAAKixU,gBAChBD,GACAA,EAASvhC,aAEb,IAAIyhC,EAA0B,WAC1BnK,GAAK,WACDphU,EAAM+hP,oBAGdspF,EAAWhxU,KAAKixU,gBAAkB,IAAI,gBAActI,IAC3C5zT,UAAUq4T,EAAqBC,mBAAoB6D,GAAyB,GACrFF,EAASj8T,UAAUq4T,EAAqBE,eAAgB4D,GAAyB,IAErF3D,EAAczyU,UAAU6zU,kBAAoB,WACxC,IAAItgR,EAAWruD,KAAK2wU,wBAChBtiR,GACAA,EAAS+6C,aAEb,IAAI+nO,EAAiBnxU,KAAKixU,gBACtBE,GACAA,EAAe1hC,aAEnBzvS,KAAK2wU,wBACC3wU,KAAKixU,qBAAkBrzU,GAEjC2vU,EAAczyU,UAAUmmU,wBAA0B,WAC9C,IAAIh0P,EAAQjtE,KAAKmhU,sBACbn8T,EAAWhF,KAAKgmP,gBAAgB4B,YAAY36K,GAChD,IAAKjoE,EACD,OAAO,EAEX,IAAI0hP,EAAqB1hP,EAAS+nE,sBAAsB/sE,KAAKgtE,gBAAiBC,GAC9E,IAAKy5K,EACD,OAAO,EAEX,IAAIvzO,EAAU,+BAId,OAHAnT,KAAK0mP,mBAAqBA,EAC1B1mP,KAAKghU,YAAc7tT,EACnBuzO,EAAmB3xO,UAAU5B,EAASnT,OAC/B,GAEXutU,EAAczyU,UAAUqmU,oBAAsB,WAC1C,IAAIlwK,EAAa,2BAAiBjxJ,KAAK+wJ,kBACvC,OAAKE,EAGEA,EAAW+2F,SAAShoP,KAAKorE,MAAO,MAF5B,MAIfmiQ,EAAczyU,UAAUomU,mBAAqB,WACzC,IAAIx6E,EAAqB1mP,KAAKgF,SAAS+nE,sBAAsB/sE,KAAKgtE,gBAAiBhtE,KAAKitE,OACpFy5K,IACA1mP,KAAKghU,YAAc,0BACnBhhU,KAAK0mP,mBAAqBA,EAC1BA,EAAmB3xO,UAAU/U,KAAKghU,YAAahhU,QAGvDutU,EAAczyU,UAAU4zE,UAAY,WAChC,OAAO1uE,KAAKgnE,SAASp3B,SAASh1C,QAElC2yU,EAAczyU,UAAUwyE,MAAQ,WAC5B,OAAOttE,KAAKgnE,SAASp3B,UAEzB29R,EAAczyU,UAAU4V,KAAO,SAAU/G,GACrC,IAAIq9D,EAAWhnE,KAAKgnE,SACpB,OAAOr9D,EAAQ,GAAKA,EAAQq9D,EAASp3B,SAASh1C,OAAS,EAAI,KAAOosE,EAASp3B,SAASjmC,IAExF4jU,EAAczyU,UAAU2zE,QAAU,SAAU9G,EAAgBC,GACxD,IAAIl3D,EAAO1Q,KAAKuoE,YAAYtpE,SAG5B,OAFAyR,EAAKvR,KAAKwoE,EAAgBC,GAC1B5nE,KAAKgnE,SAASl2D,IAAIJ,GACXA,GAEX68T,EAAczyU,UAAUszE,WAAa,SAAUzkE,EAAOg+D,EAAgBC,GAClE,IAAIl3D,EAAO1Q,KAAKuoE,YAAYtpE,SAC5ByR,EAAKvR,KAAKwoE,EAAgBC,GAC1B5nE,KAAKgnE,SAAS5hB,OAAOz7C,EAAO+G,IAEhC68T,EAAczyU,UAAUyzE,eAAiB,SAAUsI,EAAesxK,GAC9D,OAAOnoP,KAAKgnE,SAAS4hE,UAAU/xD,EAAesxK,IAElDolF,EAAczyU,UAAU6zE,WAAa,SAAUhlE,EAAOktE,EAAesxK,GACjE,OAAOnoP,KAAKgnE,SAASshL,SAAS3+O,EAAOktE,EAAesxK,IAExDolF,EAAczyU,UAAUk0E,eAAiB,SAAUt+D,GAG/C,IAFA,IAAIm0N,EAAWn0N,EAAKm0N,SAChBjxM,EAAIixM,EAASjqO,OACVg5B,KACH,+BAAqBixM,EAASjxM,IAElC,IAAIolI,EAActoJ,EAAKsoJ,YAEvB,IADAplI,EAAIolI,EAAYp+J,OACTg5B,KAGH,IAFA,IAAI20N,EAAkBvvF,EAAYplI,GAAG20N,gBACjCruN,EAAIquN,EAAgB3tP,OACjBs/B,KAAK,CACR,IAAIid,EAAUoxM,EAAgBruN,GAAGid,QACjC,+BAAqBA,KAI1Bo2R,EAniBS,CAoiBlB,oBAEE6D,EAAsB,WACtB,SAASA,KAQT,OANAA,EAAmB55B,UAAY,WAC3B,MAAO,CACHl6S,KAAM,YACNI,KAAM,yBAGP0zU,EATc,GAYzB,SAASxhU,EAAUpN,GACfA,EAAO4xE,gBAAgBm5P,EAAe6D,K,mEClsC1C,mnDAcA,SAASC,EAAoBl6R,EAASzmC,GAClC,IAAIlT,EAAS25C,EAAQ35C,OAErB,GAAIA,aAAkBgqE,QAClB,OAAOhqE,EAIX,IAAK,IAAI9C,EAAI,EAAGiI,EAAK+N,EAAKsoJ,YAAYp+J,OAAQF,EAAIiI,EAAIjI,IAAK,CACvD,IAAI+qE,EAAa/0D,EAAKsoJ,YAAYt+J,GAClC,GAAI+qE,EAAW13D,YAAcvQ,EAAQ,CACjC,IAAIupE,EAAUtB,EAAWp3D,UAAU7P,IAAI,MAAIgpE,SAC3C,GAAIT,EACA,OAAOA,EAEX,MAAM,IAAIhqE,MAAM,wCAA2Co6C,EAAQ45G,iBAAmB,OAG9F,MAAM,IAAIh0J,MAAM,wCAA2Co6C,EAAQ45G,iBAAmB,MAG1F,SAASugL,EAAUrgL,EAAYsgL,EAAkBltS,GAC7C,IAAIzlC,EAAQ2yU,EAAiBvpF,SAAS3jN,EAAQ,MAC9C,GAAIzlC,SAAyCA,aAAiB/D,OAC1D,OAAO+D,EAGX,MAAM,IAAI7B,MAAM,QAAUw0U,EAAmB,cAAgBtgL,EAAa,kBAAoBryJ,EAAQ,6CAO1G,SAAS4yU,EAAgBvgL,EAAY5sH,GAEjC,IADA,IAIIhlC,EACAkrF,EALAknP,EAAqBxgL,EAClBA,aAAsB,mBAAmBA,aAAsB,kBAClEA,EAAaA,EAAWA,WAI5B,GAAIA,aAAsB,cACtB5xJ,EAAS,wBAAc4xJ,EAAWvzJ,KAAM2mC,EAAQ4sH,EAAW+xH,UAC3Dz4L,EAAe0mE,EAAWvzJ,UAEzB,GAAIuzJ,aAAsB,eAC3B5xJ,EAASiyU,EAAUG,EAAoBxgL,EAAW5xJ,OAAQglC,GAC1DkmD,EAAe0mE,EAAWvzJ,SAEzB,MAAIuzJ,aAAsB,eAK3B,MAAM,IAAIl0J,MAAM,eAAiB00U,EAAqB,2DAJtDpyU,EAASiyU,EAAUG,EAAoBxgL,EAAW5xJ,OAAQglC,GAC1DkmD,EAAe0mE,EAAW/xJ,IAAI8oP,SAAS3jN,GAK3C,OAAIhlC,QACO,KAEJ,CAAEA,OAAQA,EAAQkrF,aAAcA,GAG3C,SAAS5R,EAAS/5E,GACd,MAAiD,oBAA1C/D,OAAOC,UAAUkkB,SAAShkB,KAAK4D,GAM1C,IAAI8yU,EAAwC,WACxC,SAASA,EAAuB5qK,GAC5B9mK,KAAK8mK,OAASA,EAelB,OAbA4qK,EAAuB52U,UAAUqW,MAAQ,SAAU7R,GAC/C,GAAIq5E,EAASr5E,KATHV,EASyBU,EARU,oBAA1CzE,OAAOC,UAAUkkB,SAAShkB,KAAK4D,IAS9B,OAAOU,EAVnB,IAAkBV,EAYN+yU,EAAeC,EAAsBtyU,EAAS0f,YAC9C6yT,EAAW7xU,KAAK8mK,OAAO31J,MAAMwgU,GACjC,GAAIE,aAAoB,eACjBA,aAAoB,gBAAgBA,EAASxyU,kBAAkB,cAClE,OAAOwyU,EAASn0U,KAEpB,MAAM,IAAIX,MAAM,iCAAoC80U,EAAW,MAEnEH,EAAuBl8T,OAAS,CAAC,UAC1Bk8T,EAjBgC,GAmB3C,SAASE,EAAsBtyT,GAE3B,IAGIiI,EAHU,4HAGMmP,KAAKpX,IADb,kDAC0BoX,KAAKpX,GAC3C,GAAc,OAAViI,EACA,MAAM,IAAIxqB,MAAM,uCAAyCuiB,GAE7D,OAAOiI,EAAM;;;;;;;;;;;;;;gFAmBjB,IAuBIuqT,EAvBArjH,EAAgB,SAAStwN,EAAGwT,GAI5B,OAHA88M,EAAgB5zN,OAAOkd,gBAClB,CAAEC,UAAW,cAAgBtX,OAAS,SAAUvC,EAAGwT,GAAKxT,EAAE6Z,UAAYrG,IACvE,SAAUxT,EAAGwT,GAAK,IAAK,IAAI/U,KAAK+U,EAAOA,EAAE5W,eAAe6B,KAAIuB,EAAEvB,GAAK+U,EAAE/U,MACpDuB,EAAGwT,IAG5B,SAAS+8M,EAAUvwN,EAAGwT,GAElB,SAASszF,IAAOjlG,KAAKgB,YAAc7C,EADnCswN,EAActwN,EAAGwT,GAEjBxT,EAAErD,UAAkB,OAAN6W,EAAa9W,OAAOoE,OAAO0S,IAAMszF,EAAGnqG,UAAY6W,EAAE7W,UAAW,IAAImqG,GAGnF,SAAS7/B,EAAWn4B,EAAYzvC,EAAQ0B,EAAK4kE,GACzC,IAA2H3lE,EAAvHD,EAAI4D,UAAUlH,OAAQ6D,EAAIP,EAAI,EAAIV,EAAkB,OAATsmE,EAAgBA,EAAOjpE,OAAOw0D,yBAAyB7xD,EAAQ0B,GAAO4kE,EACrH,GAAuB,iBAAZ53B,SAAoD,mBAArBA,QAAQ63B,SAAyBtlE,EAAIytC,QAAQ63B,SAAS92B,EAAYzvC,EAAQ0B,EAAK4kE,QACpH,IAAK,IAAIppE,EAAIuyC,EAAWryC,OAAS,EAAGF,GAAK,EAAGA,KAASyD,EAAI8uC,EAAWvyC,MAAI+D,GAAKP,EAAI,EAAIC,EAAEM,GAAKP,EAAI,EAAIC,EAAEX,EAAQ0B,EAAKT,GAAKN,EAAEX,EAAQ0B,KAAST,GAChJ,OAAOP,EAAI,GAAKO,GAAK5D,OAAOyD,eAAed,EAAQ0B,EAAKT,GAAIA,GAOhE,SAAWqzU,GAKPA,EAAgBA,EAAwB,OAAI,GAAK,SAIjDA,EAAgBA,EAAsB,KAAI,GAAK,OAI/CA,EAAgBA,EAAwB,OAAI,GAAK,SAKjDA,EAAgBA,EAA8B,aAAI,GAAK,eAlB3D,CAmBGA,IAAoBA,EAAkB,KAKzC,IAAIC,EACA,aAQAC,EAAgC,WAOhC,SAASA,EAAe95Q,EAAM74D,EAAQkrF,EAAcouH,EAAOl7M,QACvC,IAAZA,IAAsBA,EAAU,MACpCuC,KAAKk4D,KAAOA,EACZl4D,KAAKX,OAASA,EACdW,KAAKuqF,aAAeA,EACpBvqF,KAAK24M,MAAQA,EACb34M,KAAKvC,QAAUA,EACfuC,KAAKuc,GAAKy1T,EAAe7tD,SAM7B,OAJA6tD,EAAel3U,UAAUkkB,SAAW,WAChC,OAAOhf,KAAK24M,MAAQ,SAAW34M,KAAKvC,SAExCu0U,EAAe7tD,OAAS,EACjB6tD,EApBwB,GAuB/BC,EACA,SAIA30U,EAKA69D,EAMA/oD,EAKA/K,EAQA6qU,GACIlyU,KAAK1C,KAAOA,EACZ0C,KAAKm7D,OAASA,EACdn7D,KAAKoS,QAAUA,EACfpS,KAAKqH,YAAcA,EACnBrH,KAAKkyU,yBAA2BA,GAUpCC,EAAsC,WACtC,SAASA,EAAqBthK,EAAWuhK,GACrCpyU,KAAK6wK,UAAYA,EACjB7wK,KAAKoyU,eAAiBA,EAEtBpyU,KAAK6kO,SAAW,IAAIn4L,IAEpB1sC,KAAKqyU,UAAY,GAIjBryU,KAAKoS,QAAU,GAIfpS,KAAKm7D,OAAS,GAIdn7D,KAAKsyU,YAAa,EAElBtyU,KAAK44G,SAAW,IAAIlsE,IAEpB1sC,KAAKuyU,QAAU,IAAI7lS,IAInB1sC,KAAK8xU,gBAAkBA,EAAgBjoN,KAEvC7pH,KAAKwyU,iBAAmBx2U,EAAQC,UAChC+D,KAAKyyU,eAAiB,GAiX1B,OA1WAN,EAAqBr3U,UAAUia,UAAY,SAAUkS,GACjD,IAAIthB,EAAQ3F,KAEZ,OADAA,KAAKyyU,eAAev3U,KAAK+rB,GAClB,CACH0kF,QAAS,WACL,IAAIhiG,EAAQhE,EAAM8sU,eAAephU,QAAQ4V,IAC1B,IAAXtd,GAGJhE,EAAM8sU,eAAet7T,OAAOxN,EAAO,MAS/CwoU,EAAqBr3U,UAAU43U,UAAY,SAAUrzU,EAAQs4D,GACzD33D,KAAKuyU,QAAQptT,IAAI9lB,EAAQs4D,IAM7Bw6Q,EAAqBr3U,UAAU63U,aAAe,SAAUtzU,GACpDW,KAAKuyU,QAAQz1T,OAAOzd,GACpBW,KAAK4yU,mBAAmB,QAAS5yU,KAAKoS,QAAQvN,QAAO,SAAUkL,GAAU,OAAOA,EAAO1Q,SAAWA,KAAY,KAKlH8yU,EAAqBr3U,UAAU+3U,SAAW,SAAUp1U,EAAS4B,EAAQkrF,GAEjE,IAAIuoP,OADiB,IAAjBvoP,IAA2BA,EAAe,MAG1CuoP,EADiB,OAAjBvoP,EACuBA,EAGAvqF,KAAKoyU,eAAejhU,MAAMo5E,GAErD,IAAIx6E,EAAS,IAAIiiU,EAAe,CAAEe,mBAAmB,GAAQ1zU,EAAQyzU,GAAsB,EAAOr1U,GAElG,OADAuC,KAAK4yU,mBAAmB,WAAY,GAAI,CAAC7iU,IAClCA,GAKXoiU,EAAqBr3U,UAAUk4U,YAAc,SAAUjjU,IACb,IAAlC/P,KAAKoS,QAAQf,QAAQtB,IACrB/P,KAAK4yU,mBAAmB,QAAS,CAAC7iU,GAAS,KAOnDoiU,EAAqBr3U,UAAUm4U,YAAc,SAAU1tQ,GACnD,IAAI5/D,EAAQ3F,KACZA,KAAKqyU,UAAUn3U,KAAKqqE,GACpBA,EAAS8d,OAAO,CACZ7/B,KAAM,WACN6/B,OAAQrjF,KAAKoS,QAAQzN,KAAI,SAAUoL,GAAU,MAAO,CAAGA,OAAQA,EAAQ6oG,SAAUjzG,EAAMizG,SAASp6G,IAAIuR,OACpG2oM,SAAU,MAOlBy5H,EAAqBr3U,UAAUo4U,eAAiB,SAAU3tQ,GACtD,IAAI5/D,EAAQ3F,KACZA,KAAKqyU,UAAUl7T,OAAOnX,KAAKqyU,UAAUhhU,QAAQk0D,GAAW,GACxDA,EAAS8d,OAAO,CACZ7/B,KAAM,QACN6/B,OAAQ,GACRq1H,SAAU14M,KAAKoS,QAAQzN,KAAI,SAAUoL,GAAU,MAAO,CAAGA,OAAQA,EAAQ6oG,SAAUjzG,EAAMizG,SAASp6G,IAAIuR,UAS9GoiU,EAAqBr3U,UAAUq4U,gBAAkB,SAAUh8R,EAAS35C,EAAQm6D,GACxE33D,KAAK6kO,SAAS1/M,IAAIgyB,EAAS,CAAE35C,OAAQA,EAAQm6D,MAAOA,EAAOy7Q,aAAc,QAM7EjB,EAAqBr3U,UAAUu4U,kBAAoB,SAAUl8R,GACzDn3C,KAAKszU,aAAan8R,GAClBn3C,KAAK6kO,SAAS/nN,OAAOq6B,IAMzBg7R,EAAqBr3U,UAAUy4U,wBAA0B,SAAUlsU,GAC/D,IAAI1B,EAAQ3F,KACZ,GAAIqH,EAAa,CACb,IACImsU,EADAC,EAAWpsU,EAAYhI,OAAQq0U,EAAiBrsU,EAAYkjF,aAAcopP,EAAUtsU,EAAYswD,MAQpG,OALI67Q,EADAnsU,EAAYkjF,aACE,SAAUrjF,GAAK,OAAOA,EAAE7H,SAAWo0U,GAAYvsU,EAAEqjF,eAAiBmpP,GAGlE,SAAUxsU,GAAK,OAAOA,EAAE7H,SAAWo0U,GAEjDE,EACO,SAAUzsU,GAAK,OAAOssU,EAAYtsU,IAAMvB,EAAMkrK,UAAU+iK,WAAWD,EAASzsU,EAAEgxD,OAElFs7Q,EAGP,OAAO,WAAc,OAAO,IAQpCrB,EAAqBr3U,UAAUuzC,SAAW,SAAUhnC,GAChD,IAEIw1Q,EAFAl3Q,EAAQ3F,KAGZ,GAAIqH,EAAa,CAEb,IAAIwsU,EAAWxsU,EAAYhI,OAAQy0U,EAAiBzsU,EAAYkjF,aAAcwpP,EAAU1sU,EAAYswD,MAEpGo8Q,EAAUA,GAAW/zU,KAAKuyU,QAAQ/zU,IAAIq1U,GAIlCh3D,OAF6Bj/Q,IAA7ByJ,EAAYkjF,aAEF,WAAc,OAAO5kF,EAAMkrK,UAAUmjK,eAAeH,EAAUE,IAI9D,WAAc,OAAOpuU,EAAMkrK,UAAUojK,iBAAiBJ,EAAUC,EAAgBC,SAK9Fl3D,EAAU,WAEN,IADA,IAAIhhR,EAAW,GACN2P,EAAK,EAAGwe,EAAKtpB,MAAM0hB,KAAKzc,EAAM4sU,SAAU/mU,EAAKwe,EAAGpvB,OAAQ4Q,IAAM,CACnE,IAAI4wP,EAAKpyO,EAAGxe,GAAKnM,EAAS+8P,EAAG,GAAIzkM,EAAQykM,EAAG,GAC5CvgQ,EAASX,KAAKyK,EAAMkrK,UAAUmjK,eAAe30U,EAAQs4D,IAEzD,IAAK,IAAIu8Q,EAAK,EAAG3yT,EAAK7gB,MAAM0hB,KAAKzc,EAAMk/N,UAAWqvG,EAAK3yT,EAAG3mB,OAAQs5U,IAAM,CACpE,IAAI55Q,EAAK/4C,EAAG2yT,GAAK/8R,EAAUmjB,EAAG,GAC1B84Q,GAD8Bz7Q,EAAQ2C,EAAG,GAAG3C,MAC7B65Q,EAAgBr6R,EAAQ45G,iBAAkB55G,EAAQ9S,SAChE+uS,IAAgBztU,EAAM4sU,QAAQ34O,IAAIw5O,EAAa/zU,SAGpDxD,EAASX,KAAKyK,EAAMkrK,UAAUojK,iBAAiBb,EAAa/zU,OAAQ+zU,EAAa7oP,aAAc5yB,IAEnG,OAAO37D,EAAQgC,IAAInC,GAAUsH,MAAK,SAAUgxU,GAAc,OAAOA,EAAW5uR,QAAO,SAAU7zC,EAAGC,GAAK,OAAOD,EAAEvN,OAAOwN,KAAO,QAIpI3R,KAAKsyU,YAAa,EAClB,IAAI8B,EAAgBp0U,KAAKwyU,iBACpBrvU,KAAK05Q,GACL15Q,MAAK,SAAUkxU,GAChB,IAAInkH,EAAYvqN,EAAM4tU,wBAAwBlsU,GAC1CitU,EAAa3uU,EAAMyM,QAAQvN,OAAOqrN,GACtCvqN,EAAMitU,mBAAmB,WAAY0B,EAAYD,GAC7CD,IAAkBzuU,EAAM6sU,mBACxB7sU,EAAM2sU,YAAa,GAEvB,IAAIviU,EAAS,CACT1I,YAAaA,EACbsxM,WAA8D/6M,IAAvDy2U,EAAWruU,MAAK,SAAUkB,GAAK,OAAQA,EAAEyxM,SAChDvmM,QAASiiU,GAGb,OADA1uU,EAAM4uU,gBAAgBltU,EAAa0I,GAC5BA,KAEN9D,OAAM,SAAUuoU,GAIjB,OAFA7uU,EAAM2sU,YAAa,EACnB3sU,EAAM6sU,iBAAmBx2U,EAAQC,UAC1BD,EAAQE,OAAOs4U,MAG1B,OADAx0U,KAAKwyU,iBAAmB4B,EACjBA,GAOXjC,EAAqBr3U,UAAU0T,MAAQ,SAAUnH,GAC7C,IAAI6oN,EAAYlwN,KAAKuzU,wBAAwBlsU,GACzCitU,EAAat0U,KAAKoS,QAAQvN,OAAOqrN,GACrClwN,KAAK4yU,mBAAmB,QAAS0B,EAAY,IAC7Ct0U,KAAKu0U,gBAAgBltU,EAAa,OAKtC8qU,EAAqBr3U,UAAU25U,sBAAwB,SAAUzqT,GAG7D,IAFA,IAAI3qB,EAAS2qB,EAAG3qB,OAAQkrF,EAAevgE,EAAGugE,aACtCquB,EAAW,GACNptG,EAAK,EAAG4wP,EAAK17P,MAAM0hB,KAAKpiB,KAAK6kO,UAAWr5N,EAAK4wP,EAAGxhQ,OAAQ4Q,IAAM,CACnE,IAAI0oU,EAAK93E,EAAG5wP,GAAK2rC,EAAU+8R,EAAG,GAAI12U,EAAS02U,EAAG,GAAG12U,OAC7C41U,EAAe5B,EAAgBr6R,EAAQ45G,iBAAkB55G,EAAQ9S,QACjE+uS,GAAgBA,EAAa/zU,SAAWA,GAAU+zU,EAAa7oP,eAAiBA,GAChFquB,EAAS19G,KAAKsC,GAGtB,OAAOo7G,GAEXu5N,EAAqBr3U,UAAU83U,mBAAqB,SAAUpvR,EAAM8wR,EAAYD,GAE5E,IAAIhtU,EAAc,CACdm8C,KAAMA,EACN6/B,OAAQ,GACRq1H,SAAU,IAGd27H,EAAaA,EAAWx0U,MAAM,GAyC9B,IAxCA,IAAI60U,EAAU,SAAUC,GAEpB,IAAI/7N,EAAWg8N,EAAOh8N,SAASp6G,IAAIm2U,GAEnCC,EAAOh8N,SAAS97F,OAAO63T,GAEvBttU,EAAYqxM,SAASx9M,KAAK,CAAE6U,OAAQ4kU,EAAW/7N,SAAUA,IAEzD,IAAIi8N,EAAiBR,EAAWnhK,WAAU,SAAUhsK,GAAK,OAAOA,EAAEgxD,OAASy8Q,EAAUz8Q,MAAQhxD,EAAE7H,SAAWs1U,EAAUt1U,QAAU6H,EAAEqjF,eAAiBoqP,EAAUpqP,gBAC3J,IAAwB,IAApBsqP,EAEAD,EAAOxiU,QAAQ+E,OAAOy9T,EAAOxiU,QAAQf,QAAQsjU,GAAY,GACpDA,EAAUh8H,OACXi8H,EAAOz5Q,OAAOhkD,OAAOy9T,EAAOz5Q,OAAO9pD,QAAQsjU,GAAY,OAG1D,CAED,IAAIG,EAAYT,EAAWl9T,OAAO09T,EAAgB,GAAG,GAEjDE,EAAaH,EAAOH,sBAAsBK,GAC9CF,EAAOh8N,SAASzzF,IAAI2vT,EAAWC,GAE/B1tU,EAAYg8E,OAAOnoF,KAAK,CAAE6U,OAAQ+kU,EAAWl8N,SAAUm8N,IAGvDH,EAAOxiU,QAAQ+E,OAAOy9T,EAAOxiU,QAAQf,QAAQsjU,GAAY,EAAGG,IACvDH,EAAUh8H,OAASm8H,EAAUn8H,MAC9Bi8H,EAAOz5Q,OAAOhkD,OAAOy9T,EAAOz5Q,OAAO9pD,QAAQsjU,GAAY,GAEjDA,EAAUh8H,OAAUm8H,EAAUn8H,MAG9Bm8H,EAAUn8H,OAChBi8H,EAAOz5Q,OAAOjgE,KAAK45U,GAHnBF,EAAOz5Q,OAAOhkD,OAAOy9T,EAAOz5Q,OAAO9pD,QAAQsjU,GAAY,EAAGG,KAOlEF,EAAS50U,KAEJwL,EAAK,EAAGwpU,EAAeV,EAAY9oU,EAAKwpU,EAAap6U,OAAQ4Q,IAAM,CAExEkpU,EADgBM,EAAaxpU,IAIjC,IAAK,IAAIwe,EAAK,EAAGirT,EAAeZ,EAAYrqT,EAAKirT,EAAar6U,OAAQovB,IAAM,CACxE,IAAIja,EAASklU,EAAajrT,GACtB4uF,EAAW54G,KAAKy0U,sBAAsB1kU,GAC1C1I,EAAYg8E,OAAOnoF,KAAK,CAAE6U,OAAQA,EAAQ6oG,SAAUA,IACpD54G,KAAK44G,SAASzzF,IAAIpV,EAAQ6oG,GAC1B54G,KAAKoS,QAAQlX,KAAK6U,GACbA,EAAO4oM,OACR34M,KAAKm7D,OAAOjgE,KAAK6U,GAIzB,IAAK,IAAIqsP,EAAK,EAAG83E,EAAKl0U,KAAKqyU,UAAWj2E,EAAK83E,EAAGt5U,OAAQwhQ,IAAM,CACzC83E,EAAG93E,GACT/4K,OAAOh8E,KAMxB8qU,EAAqBr3U,UAAUo6U,gBAAkB,SAAU/9R,GACvD,GAAKA,EAAQ4/B,QAAb,CAGA,IACIpf,EADAy7Q,EAAe5B,EAAgBr6R,EAAQ45G,iBAAkB55G,EAAQ9S,QAEjE8wS,EAAoBn1U,KAAK6kO,SAASrmO,IAAI24C,GAK1C,GAJIg+R,IACAx9Q,EAAQw9Q,EAAkBx9Q,MAC1Bw9Q,EAAkB/B,aAAeA,GAEhCA,EAAL,CAGA,IAAI/zU,EAAS+zU,EAAa/zU,OAAQkrF,EAAe6oP,EAAa7oP,aAC9DvqF,KAAKquC,SAAS,CAAEhvC,OAAQA,EAAQkrF,aAAcA,EAAc5yB,MAAOA,OAKvEw6Q,EAAqBr3U,UAAUw4U,aAAe,SAAUn8R,GACpD,IAAIg+R,EAAoBn1U,KAAK6kO,SAASrmO,IAAI24C,GACtCi8R,EAAe5B,EAAgBr6R,EAAQ45G,iBAAkB55G,EAAQ9S,QAOrE,IANK+uS,GAAgB+B,IACjB/B,EAAe+B,EAAkB/B,cAEjC+B,IACAA,EAAkB/B,aAAe,MAEhCA,EAAL,CAGA,IAAI/zU,EAAS+zU,EAAa/zU,OAAQkrF,EAAe6oP,EAAa7oP,aAC9DvqF,KAAKwO,MAAM,CAAEnP,OAAQA,EAAQkrF,aAAcA,MAM/C4nP,EAAqBr3U,UAAUs6U,cAAgB,SAAUC,GACrDr1U,KAAK8xU,gBAAkBuD,EAEvB,IADA,IACS7pU,EAAK,EAAG8pU,EADF50U,MAAM0hB,KAAKpiB,KAAK6kO,SAAStwN,QACA/I,EAAK8pU,EAAW16U,OAAQ4Q,IAAM,CAClE,IAAI2rC,EAAUm+R,EAAW9pU,GACrB64B,EAAS8S,EAAQ9S,OACrB8S,EAAQuuB,SACRvuB,EAAQh4C,KAAKklC,KAMrB8tS,EAAqBr3U,UAAUy6U,iBAAmB,WAC9C,IAAK,IAAI/pU,EAAK,EAAGwe,EAAKhqB,KAAKm7D,OAAQ3vD,EAAKwe,EAAGpvB,OAAQ4Q,IAAM,CACrD,IAAI4wP,EAAKpyO,EAAGxe,GAAKnM,EAAS+8P,EAAG/8P,OAAQkrF,EAAe6xK,EAAG7xK,aAAcryB,EAAOkkM,EAAGlkM,KAC/E,IAAIA,EAAK66Q,kBAAT,CAGA,IAAIp7Q,EAAQ,CAAC,CAACO,IACdl4D,KAAKquC,SAAS,CAAEhvC,OAAQA,EAAQkrF,aAAcA,EAAc5yB,MAAOA,OAG3Ew6Q,EAAqBr3U,UAAUy5U,gBAAkB,SAAUltU,EAAa0I,GACpE,GAAmC,IAA/B/P,KAAKyyU,eAAe73U,OAIxB,IADA,IAAIoC,EAAQ,IAAIi1U,EAAcliU,EAAS,WAAa,QAAS/P,KAAKm7D,OAAQn7D,KAAKoS,QAAS/K,GAAe,KAAM0I,GACpGrV,EAAI,EAAGA,EAAIsF,KAAKyyU,eAAe73U,OAAQF,IAC5CsF,KAAKyyU,eAAe/3U,GAAGsC,IAG/Bm1U,EAAqB38T,OAAS,CAACu8T,EAAWL,GACnCS,EA/Y8B,GAqZrCqD,EAA6C,WAC7C,SAASA,EAA4BltM,GACjCtoI,KAAKsoI,UAAYA,EAmErB,OAjEAktM,EAA4B16U,UAAUqE,KAAO,SAAUg4C,EAAS9S,EAAQoxS,EAAmB99Q,GACvF,IAII8N,EAJA9/D,EAAQ3F,KAERxC,EAAS6zU,EAAoBl6R,EAAS9S,GAU1C,GAPIoxS,aAA6BtD,EAC7B1sQ,EAAagwQ,GAGbhwQ,EAAaphC,EAAOh2B,UAAU7P,IAAI,WAAS44E,GAAG+6P,IAC9Cx6Q,EAAQ89Q,GAEO,OAAfhwQ,EACA,MAAM,IAAI1oE,MAAM,mDAEpB0oE,EAAW0tQ,gBAAgBh8R,EAAS35C,EAAQm6D,GAC5CxgB,EAAQu+R,qBAAuBjwQ,EAC/B,IAAI/8D,EAAU1I,KAAK21U,mBAAmBlwQ,GAElC/8D,EAAUopU,EAAgB71H,SAC1B9kK,EAAQy+R,gBAAkBz+R,EAAQusP,aAGlCvsP,EAAQusP,aAAe,SAAU9kS,GAC7BoB,KAAK41U,gBAAgBh3U,GACrBoB,KAAK01U,qBAAqBR,gBAAgBl1U,QAI9C0I,EAAUopU,EAAgBjoN,OAC1B1yE,EAAQ0+R,oBAAsB,WAC1BlwU,EAAM2iI,UAAUkB,gBAAe,WAAc,OAAO/jE,EAAWyvQ,gBAAgB/9R,OAEnFA,EAAQknR,eAAiB7gU,EACzBA,EAAO0yG,iBAAiB,OAAQ/4D,EAAQ0+R,sBAExCntU,IAAYopU,EAAgBgE,SAC5B3+R,EAAQ4+R,qBAAuB5+R,EAAQqsP,aAGvCrsP,EAAQqsP,aAAe,SAAU5kS,GAC7BoB,KAAK+1U,qBAAqBn3U,GAC1BoB,KAAK01U,qBAAqBpC,aAAatzU,SAInDw1U,EAA4B16U,UAAU4qE,OAAS,SAAUvuB,GAEjDA,EAAQy+R,kBACRz+R,EAAQusP,aAAevsP,EAAQy+R,gBAC/Bz+R,EAAQy+R,gBAAkB,MAE1Bz+R,EAAQ4+R,uBACR5+R,EAAQqsP,aAAersP,EAAQ4+R,qBAC/B5+R,EAAQ4+R,qBAAuB,MAE/B5+R,EAAQ0+R,sBACR1+R,EAAQknR,eAAe37M,oBAAoB,OAAQvrE,EAAQ0+R,qBAC3D1+R,EAAQ0+R,oBAAsB,KAC9B1+R,EAAQknR,eAAiB,MAE7BlnR,EAAQu+R,qBAAqBrC,kBAAkBl8R,GAC/CA,EAAQu+R,qBAAuB,MAE5BF,EArEqC,GA6E5CQ,EAAyC,SAAUpnH,GAEnD,SAASonH,IACL,OAAkB,OAAXpnH,GAAmBA,EAAO3qN,MAAMjE,KAAM8B,YAAc9B,KAS/D,OAXA0uN,EAAUsnH,EAAyBpnH,GAInConH,EAAwBl7U,UAAU66U,mBAAqB,SAAUlwQ,GAC7D,OAAOA,EAAWqsQ,iBAEtBkE,EAAwBxgU,OAAS,CAAC,aAClCwgU,EAA0B5wQ,EAAW,CACjC,0BAAgB,aACjB4wQ,GAXqC,CAa1CR,GAMES,EAAiD,SAAUrnH,GAE3D,SAASqnH,IACL,OAAkB,OAAXrnH,GAAmBA,EAAO3qN,MAAMjE,KAAM8B,YAAc9B,KAS/D,OAXA0uN,EAAUunH,EAAiCrnH,GAI3CqnH,EAAgCn7U,UAAU66U,mBAAqB,WAC3D,OAAO7D,EAAgBgE,QAE3BG,EAAgCzgU,OAAS,CAAC,aAC1CygU,EAAkC7wQ,EAAW,CACzC,0BAAgB,qBACjB6wQ,GAX6C,CAalDT,GAKEU,EAA+C,SAAUtnH,GAEzD,SAASsnH,IACL,OAAkB,OAAXtnH,GAAmBA,EAAO3qN,MAAMjE,KAAM8B,YAAc9B,KAS/D,OAXA0uN,EAAUwnH,EAA+BtnH,GAIzCsnH,EAA8Bp7U,UAAU66U,mBAAqB,WACzD,OAAO7D,EAAgBjoN,MAE3BqsN,EAA8B1gU,OAAS,CAAC,aACxC0gU,EAAgC9wQ,EAAW,CACvC,0BAAgB,mBACjB8wQ,GAX2C,CAahDV,GAMEW,EAAiD,SAAUvnH,GAE3D,SAASunH,IACL,OAAkB,OAAXvnH,GAAmBA,EAAO3qN,MAAMjE,KAAM8B,YAAc9B,KAS/D,OAXA0uN,EAAUynH,EAAiCvnH,GAI3CunH,EAAgCr7U,UAAU66U,mBAAqB,WAC3D,OAAO7D,EAAgB71H,QAE3Bk6H,EAAgC3gU,OAAS,CAAC,aAC1C2gU,EAAkC/wQ,EAAW,CACzC,0BAAgB,qBACjB+wQ,GAX6C,CAalDX,GAMEY,EAAuD,SAAUxnH,GAEjE,SAASwnH,IACL,OAAkB,OAAXxnH,GAAmBA,EAAO3qN,MAAMjE,KAAM8B,YAAc9B,KAS/D,OAXA0uN,EAAU0nH,EAAuCxnH,GAIjDwnH,EAAsCt7U,UAAU66U,mBAAqB,WACjE,OAAO7D,EAAgBuE,cAE3BD,EAAsC5gU,OAAS,CAAC,aAChD4gU,EAAwChxQ,EAAW,CAC/C,0BAAgB,2BACjBgxQ,GAXmD,CAaxDZ,GAKEc,EAA6C,WAC7C,SAASA,EAA4BjoU,GACjCrO,KAAKqO,UAAYA,EAwBrB,OAtBAioU,EAA4B93U,IAAM,SAAU6P,GACxC,OAAO,IAAIioU,EAA4BjoU,IAK3CioU,EAA4Bx7U,UAAUmE,OAAS,SAAU4xK,GAChDA,IACDA,EAAY7wK,KAAKqO,UAAU7P,IAAIuzU,IAEnC,IAAIK,EAAiBpyU,KAAKqO,UAAU7P,IAAIkzU,GACxC,OAAO,IAAIS,EAAqBthK,EAAWuhK,IAM/CkE,EAA4Bx7U,UAAUy7U,sBAAwB,SAAU1lK,GACpE,IAAIprG,EAAazlE,KAAKf,OAAO4xK,GAE7B,OADA7wK,KAAKqO,UAAUs1H,iBAAiBwuM,EAAsB1sQ,GAC/CA,GAEJ6wQ,EA1BqC,GA4BhDA,EAA4B,8BAA+B,EAE3D,IAAIE,EAAiD,WACjD,SAASA,EAAgCC,EAAiBC,GACtD12U,KAAKy2U,gBAAkBA,EACvBz2U,KAAK02U,mBAAqBA,EAC1B12U,KAAKylE,WAAa,KAClBzlE,KAAKm7D,OAAS,GACdn7D,KAAK22U,eAAiB,GAgE1B,OA9DAH,EAAgChhU,OAAS,WACrC,MAAO,CAAC,MAAIgyD,QAAS,OAAK4P,GAAG+6P,KAEjCqE,EAAgC17U,UAAU2W,KAAO,WAC7CzR,KAAK22U,eAAellU,MAAK,SAAUC,EAAGC,GAClC,OAAID,EAAEytG,QAAQ,KAAOxtG,EAAEwtG,QAAQ,GACpB,EAGiD,EAArDztG,EAAEytG,QAAQ,GAAGhH,wBAAwBxmG,EAAEwtG,QAAQ,IAAU,GAAK,MAG7Eq3N,EAAgC17U,UAAU87U,oBAAsB,SAAUh+N,GACtE,IAAIjzG,EAAQ3F,KACZ,OAAO44G,EAAS/zG,QAAO,SAAUjJ,GAAK,OAAO+J,EAAM8wU,gBAAgBrjO,SAASx3G,OAEhF46U,EAAgC17U,UAAUuoF,OAAS,SAAUh8E,GAQzD,IAPA,IAAIqtU,EAAU,SAAU3kU,GACpB,IAAIpG,EAAQirU,EAAO+B,eAAezjK,WAAU,SAAUhsK,GAAK,OAAOA,EAAEpK,QAAUiT,MAC/D,IAAXpG,GACAirU,EAAO+B,eAAex/T,OAAOxN,EAAO,IAGxCirU,EAAS50U,KACJwL,EAAK,EAAGwe,EAAK3iB,EAAYqxM,SAAUltM,EAAKwe,EAAGpvB,OAAQ4Q,IAAM,CAE9DkpU,EADI3kU,EAASia,EAAGxe,GAAIuE,QAGxB,IAAK,IAAIqsP,EAAK,EAAG83E,EAAK7sU,EAAYg8E,OAAQ+4K,EAAK83E,EAAGt5U,OAAQwhQ,IAAM,CAC5D,IAAI76O,EAAK2yT,EAAG93E,GAAKrsP,EAASwR,EAAGxR,OAAQ6oG,EAAWr3F,EAAGq3F,SACnD,IAAI7oG,EAAO4oM,MAAX,CAGA,IAAIx5F,EAAUn/G,KAAK42U,oBAAoBh+N,GACnCuG,EAAQvkH,QACRoF,KAAK22U,eAAez7U,KAAK,CAAE4B,MAAOiT,EAAQovG,QAASA,KAG3Dn/G,KAAKyR,OACLzR,KAAKm7D,OAASn7D,KAAK22U,gBAEvBH,EAAgC17U,UAAUqE,KAAO,WACxCa,KAAKylE,aACNzlE,KAAKylE,WAAazlE,KAAK02U,sBAG3B12U,KAAKylE,WAAWwtQ,YAAYjzU,OAEhCw2U,EAAgC17U,UAAU4qE,OAAS,WAC3C1lE,KAAKylE,YACLzlE,KAAKylE,WAAWytQ,eAAelzU,OAGvColE,EAAW,CACP,mBAAS,CAAEyyO,mBAAoB,cAAY5mB,UAC5CulD,EAAgC17U,UAAW,kBAAc,GAC5DsqE,EAAW,CACP,mBAAS,CAAEskE,iBAAiB,EAAMmuK,mBAAoB,cAAY3mB,UACnEslD,EAAgC17U,UAAW,cAAU,GACxD07U,EAAkCpxQ,EAAW,CACzC,0BAAgB,sBACjBoxQ,GArE6C,GAyEhDK,EAAmD,WACnD,SAASA,KAkBT,OAhBAA,EAAkC/7U,UAAU2sE,QAAU,SAAU/2D,GAC5D1Q,KAAKqO,UAAYqC,EAAKrC,WAE1BwoU,EAAkC/7U,UAAUqE,KAAO,WAC/Ca,KAAKylE,WAAazlE,KAAKqO,UAAU7P,IAAI2zU,GACrCnyU,KAAKulE,SAAWvlE,KAAKqO,UAAU7P,IAAIwB,KAAKpB,OACxCoB,KAAKylE,WAAWwtQ,YAAYjzU,KAAKulE,WAErCsxQ,EAAkC/7U,UAAU4qE,OAAS,WACjD1lE,KAAKylE,WAAWytQ,eAAelzU,KAAKulE,UACpCvlE,KAAKylE,WAAa,KAClBzlE,KAAKulE,SAAW,MAEpBsxQ,EAAoCzxQ,EAAW,CAC3C,0BAAkB,wBACnByxQ,GAlB+C,GAyBlDC,EAAuB,WACvB,SAASA,KA8BT,OAzBAA,EAAM3xT,IAAM,SAAU3nB,EAAQm6D,GACtBn6D,aAAkBsnB,WAClBtnB,EAASA,EAAO1C,WAEpBD,OAAOyD,eAAed,EAAQs5U,EAAM53U,IAAK,CAAEX,YAAY,EAAO8C,cAAc,EAAOC,UAAU,EAAM1C,MAAO+4D,KAK9Gm/Q,EAAMvT,MAAQ,SAAU/lU,GAChBA,aAAkBsnB,WAClBtnB,EAASA,EAAO1C,WAEpB0C,EAAOs5U,EAAM53U,KAAO,MAKxB43U,EAAMt4U,IAAM,SAAUhB,GAClB,OAAOA,EAAOs5U,EAAM53U,MAAQ,MAKhC43U,EAAM53U,IAAM,YACL43U,EA/Be,GAmCtBC,EAAmC,WACnC,SAASA,KAsET,OApEAA,EAAkBj8U,UAAUk8U,WAAa,SAAUtsC,GAC/C1qS,KAAKi3U,UAAUvsC,EAAM5iD,cAEzBivF,EAAkBj8U,UAAUuwR,qBAAuB,SAAUv9O,GACzDA,EAASmjH,WAAWmF,OAAOp2J,MAC3BA,KAAKi3U,UAAUnpS,EAASrpB,OAE5BsyT,EAAkBj8U,UAAUixR,oBAAsB,SAAUJ,GACxDA,EAAU16H,WAAWmF,OAAOp2J,MAC5BA,KAAKi3U,UAAUtrD,EAAUlnQ,OAE7BsyT,EAAkBj8U,UAAUuxR,YAAc,SAAUxpR,GAChDA,EAAOrF,OAAO44J,OAAOp2J,MACrB6C,EAAOjE,MAAMw3J,OAAOp2J,OAExB+2U,EAAkBj8U,UAAU2xR,iBAAmB,SAAU+D,GACrDA,EAAY3mJ,UAAUusB,OAAOp2J,MAC7BwwR,EAAYhE,IAAIp2H,OAAOp2J,MACvBwwR,EAAYj7M,GAAG6gF,OAAOp2J,OAE1B+2U,EAAkBj8U,UAAU8xR,gBAAkB,SAAU/pK,GACpDA,EAAOmgK,SAAWngK,EAAOmgK,UAE7B+zD,EAAkBj8U,UAAUiyR,iBAAmB,SAAUlqK,GACrDA,EAAOnlH,KAAOmlH,EAAOnlH,MAEzBq5U,EAAkBj8U,UAAUoyR,kBAAoB,SAAUrqK,GACtDA,EAAOxjH,OAAO+2J,OAAOp2J,OAEzB+2U,EAAkBj8U,UAAUyyR,iBAAmB,SAAU1qK,GACrDA,EAAOxjH,OAAO+2J,OAAOp2J,MACrB6iH,EAAO3jH,IAAIk3J,OAAOp2J,OAEtB+2U,EAAkBj8U,UAAU8yR,eAAiB,SAAU5yR,GACnDgF,KAAKi3U,UAAUj8U,EAAKypB,OAExBsyT,EAAkBj8U,UAAUozR,kBAAoB,SAAUlzR,GACtDA,EAAKksB,KAAKkvI,OAAOp2J,MACjBA,KAAKi3U,UAAUj8U,EAAKypB,OAExBsyT,EAAkBj8U,UAAUizR,gBAAkB,SAAU/yR,GACpDA,EAAKqE,OAAO+2J,OAAOp2J,MACnBA,KAAKi3U,UAAUj8U,EAAKypB,OAExBsyT,EAAkBj8U,UAAU6zR,YAAc,SAAUhtP,GAChDA,EAAOsvH,WAAWmF,OAAOp2J,OAE7B+2U,EAAkBj8U,UAAUyzR,YAAc,SAAUxrO,GAChDA,EAAOgvE,KAAKqkC,OAAOp2J,MACnB+iD,EAAOysE,MAAM4mC,OAAOp2J,OAExB+2U,EAAkBj8U,UAAUi0R,sBAAwB,SAAU0B,GAC1DA,EAAQ7xR,MAAQ6xR,EAAQ7xR,OAE5Bm4U,EAAkBj8U,UAAUk1R,kBAAoB,SAAUS,GACtDzwR,KAAKi3U,UAAUxmD,EAAQ73K,WAE3Bm+N,EAAkBj8U,UAAUs1R,mBAAqB,SAAUK,GACvDzwR,KAAKi3U,UAAUxmD,EAAQp9P,SAE3B0jT,EAAkBj8U,UAAUq0R,mBAAqB,SAAUsB,GACvDA,EAAQ7xR,MAAQ6xR,EAAQ7xR,OAE5Bm4U,EAAkBj8U,UAAUm8U,UAAY,SAAUxyT,GAC9C,IAAK,IAAI/pB,EAAI,EAAGA,EAAI+pB,EAAK7pB,OAAQF,IAC7B+pB,EAAK/pB,GAAG07J,OAAOp2J,OAGhB+2U,EAvE2B,GA0ElCG,EAAyC,WACzC,SAASA,EAAwBC,GAC7Bn3U,KAAKm3U,gBAAkBA,EACvBn3U,KAAK2/T,sBAAwB,IAAI,gBAAc,IAC/C3/T,KAAKo3U,eAAiB,IAAI,mBAAiB,MAC3Cp3U,KAAKq3U,oBAAsB,IAAI,wBAAiBz5U,GAChDoC,KAAKu8D,MAAQ,GAuBjB,OArBA26Q,EAAwBp8U,UAAUqW,MAAQ,SAAU1T,GAChD,QAA4BG,IAAxBoC,KAAKu8D,MAAM9+D,GACX,OAAOuC,KAAKu8D,MAAM9+D,GAEtB,IAAI2+B,EAAQp8B,KAAKm3U,gBAAgBrX,mBAAmB,KAAMriU,GAC1D,GAAc,OAAV2+B,EACA,OAAO,IAAI,gBAAc3+B,GAG7B,IADA,IAAIwzJ,EAAa,IAAI,gBAAc70H,EAAM,IAChC1hC,EAAI,EAAGA,EAAI0hC,EAAMxhC,OAAQF,GAAK,EACnCu2J,EAAa,IAAI,SAAO,IAAKA,EAAY,IAAI,SAAO,IAAKjxJ,KAAKs3U,SAASl7S,EAAM1hC,IAAK,IAAI,gBAAc0hC,EAAM1hC,EAAI,MAIlH,OAFA68U,EAA2BlpS,SAAS4iH,EAAYxzJ,GAChDuC,KAAKu8D,MAAM9+D,GAAWwzJ,EACfA,GAEXimL,EAAwBp8U,UAAUw8U,SAAW,SAAU/hR,GAEnD,OAAO,IAAI,cAAY,IAAI,SAAO,KAAM,IAAI,SAAO,MAAOA,EAAMv1D,KAAKo3U,gBAAiB,IAAI,SAAO,MAAO7hR,EAAMv1D,KAAKq3U,sBAAuBr3U,KAAK2/T,sBAAuB,IAAI,aAAWpqQ,EAAM,WAAY,MAE3M2hR,EAAwB1hU,OAAS,CAAC,mBAC3B0hU,EA7BiC,GA+BxCK,EAA4C,SAAU3oH,GAEtD,SAAS2oH,EAA2BC,GAChC,IAAI7xU,EAAQipN,EAAO5zN,KAAKgF,OAASA,KAEjC,OADA2F,EAAM6xU,gBAAkBA,EACjB7xU,EAgBX,OApBA+oN,EAAU6oH,EAA4B3oH,GAMtC2oH,EAA2BlpS,SAAW,SAAU4iH,EAAYumL,GACxD,IAAIpsD,EAAU,IAAImsD,EAA2BC,GAC7CvmL,EAAWmF,OAAOg1H,IAEtBmsD,EAA2Bz8U,UAAUiyR,iBAAmB,SAAUlqK,GAC9D,GAAwB,IAApBA,EAAOmgK,SACP,MAAM,IAAIjmR,MAAM,gEAEyF,IAAzG,CAAC,cAAe,eAAgB,QAAS,SAAU,SAAU,kBAAkBsU,QAAQwxG,EAAOnlH,OAC9F,oBAAU,sBAELwmB,KAAK,yBAA4B2+F,EAAOnlH,KAAO,iBAAqBmlH,EAAOnlH,KAAO,2CAA+CsC,KAAKw3U,gBAAkB,OAG9JD,EArBoC,CAsB7CR,GAKEU,EAAqB,CAIrB5hR,QAAS,8BACT21J,SAAU,+BACVrvL,QAAS,8CACT0uC,MAAO,wCACPg+I,UAAW,kGACX6uH,UAAW,uGACXC,SAAU,gGACVC,SAAU,mGACV56J,OAAQ,qDAKR66J,EAA2C,WAC3C,SAASA,EAA0B/wK,GAC/B9mK,KAAK8mK,OAASA,EAgClB,OA1BA+wK,EAA0B/8U,UAAU+rK,WAAa,SAAU3nK,GACvD,IAAIzB,EAOJ,OALIA,EADAyB,KAAOu4U,EACGA,EAAmBv4U,GAGnBu4U,EAA4B,QAEnCz3U,KAAK8mK,OAAO31J,MAAM1T,IAQ7Bo6U,EAA0B/8U,UAAUisK,eAAiB,SAAUx8E,EAAcy8E,GACzE,GAAIA,QACA,OAAQA,aAAuBliJ,SAAYkiJ,IAAgBA,EAG/D,IAAIpuH,EAAQ2xC,EAAavrE,WAAWsM,MAAM,aAAatjB,KAAK,KAE5D,OAAO4wC,EAAMjoC,OAAO,GAAGozB,cAAgB6U,EAAM/4C,MAAM,IAEvDg4U,EAA0BriU,OAAS,CAAC0hU,GAC7BW,EAlCmC,GAyC1CC,EAAmC,SAAUlpH,GAE7C,SAASkpH,EAAkBC,EAAiB7nR,GACxC,IAAIvqD,EAAQipN,EAAO5zN,KAAKgF,OAASA,KAIjC,OAHA2F,EAAMoyU,gBAAkBA,EACxBpyU,EAAMugP,gBAAkBh2L,EAAUg2L,gBAClCvgP,EAAMohK,eAAiBgxK,EAAgBhxK,eAAe5nK,KAAK44U,GACpDpyU,EA+GX,OArHA+oN,EAAUopH,EAAmBlpH,GAe7BkpH,EAAkBh9U,UAAUm5U,iBAAmB,SAAU50U,EAAQkrF,EAAc5yB,GAC3E,OAAO33D,KAAKquC,SAAShvC,EAAQkrF,EAAc5yB,GAAS,OAQxDmgR,EAAkBh9U,UAAUk5U,eAAiB,SAAU30U,EAAQs4D,GAC3D,OAAO33D,KAAKquC,SAAShvC,EAAQ,KAAMs4D,GAAS,OAOhDmgR,EAAkBh9U,UAAU84U,WAAa,SAAUj8Q,EAAOO,GAEtD,IADA,IAAIx9D,EAAIi9D,EAAM/8D,OACPF,KACH,IAAgC,IAA5Bi9D,EAAMj9D,GAAG2W,QAAQ6mD,GACjB,OAAO,EAGf,OAAO,GAEX4/Q,EAAkBh9U,UAAU+rK,WAAa,SAAU3uG,EAAM74D,EAAQT,GAC7D,IAAIqyJ,EAAa/4F,EAAKz6D,SAAWuC,KAAK+3U,gBAAgBlxK,WAAW3uG,EAAK8/Q,YAElEhuT,EAAKkuC,EAAK54D,SAAUirF,EAAevgE,EAAGtsB,KAAMspK,EAAch9I,EAAGg9I,YAC5C,OAAjBz8E,IACAy8E,EAAchnK,KAAK+3U,gBAAgBhxK,eAAex8E,EAAcy8E,IAEpE,IAAIp/F,EAAkB,CAClBqwQ,aAAcjxK,EACdkxK,cAAe3tP,EACf4tP,OAAQv5U,EACRw5U,QAAS/4U,EACTg5U,QAASngR,EAAK11D,OAGd81U,gBAAiBt4U,KAAK+mK,gBAE1B,OAAO9V,EAAW+2F,SAAS,CAAErgL,eAAgBtoE,EAAQuoE,gBAAiBA,GAAmB5nE,KAAKkmP,kBAElG4xF,EAAkBh9U,UAAUy9U,qBAAuB,SAAUl5U,EAAQkrF,EAAciuP,EAAcC,EAAUrmU,GAgCvG,IA/BA,IAAIzM,EAAQ3F,KAER04U,EAAwBnuP,QACxB5yB,EAAQ6gR,EAAaC,GACrBE,GAAW,EAEX98U,EAAW,GACX64U,EAAU,SAAUh6U,GACpB,IAAIw9D,EAAOP,EAAMj9D,GAGjB,IAAKg+U,GAAyBxgR,EAAK54D,SAAS5B,MAAQ6sF,EAChD,MAAO,WAGX,GAAIryB,EAAK+pD,OAAS/pD,EAAK+pD,KAAK5iH,GACxB,MAAO,WAGX,IAAIT,EAA+B,OAAvBs5D,EAAK54D,SAAS5B,KAAgB2B,EAASA,EAAO64D,EAAK54D,SAAS5B,MACpEk7U,EAAmB1gR,EAAK2xE,UAAUjrI,EAAOS,GACvCu5U,aAA4B58U,IAC9B48U,EAAmB58U,EAAQC,QAAQ28U,IAEvC/8U,EAASX,KAAK09U,EAAiBz1U,MAAK,SAAUw1M,GAC1C,IAAIl7M,EAAUk7M,EAAQ,KAAOhzM,EAAMkhK,WAAW3uG,EAAM74D,EAAQT,GAG5D,OAFAwT,EAAQlX,KAAK,IAAI82U,EAAe95Q,EAAM74D,EAAQ64D,EAAK54D,SAAS5B,KAAMi7M,EAAOl7M,IACzEk7U,EAAWA,GAAYhgI,EAChBA,OAGNj+M,EAAI,EAAGA,EAAIi9D,EAAM/8D,OAAQF,IAC9Bg6U,EAAQh6U,GAEZ,OAAOsB,EAAQgC,IAAInC,GACdsH,MAAK,WAEN,OADAs1U,IACIE,GAAYF,EAAWD,EAAa59U,OAC7B+K,EAAM4yU,qBAAqBl5U,EAAQkrF,EAAciuP,EAAcC,EAAUrmU,GAE7EA,MAGf0lU,EAAkBh9U,UAAUuzC,SAAW,SAAUhvC,EAAQkrF,EAAc5yB,GAOnE,OALKA,IAEDA,EAAQm/Q,EAAMt4U,IAAIa,IAGjBs4D,GAA0B,IAAjBA,EAAM/8D,OAGboF,KAAKu4U,qBAAqBl5U,EAAQkrF,EAAc5yB,EAAO,EAAG,IAFtD37D,EAAQC,QAAQ,KAI/B67U,EAAkBtiU,OAAS,CAACqiU,EAA2B,iBAChDC,EAtH2B,CAuHpC/F,GAKE8G,EAAsC,WACtC,SAASA,EAAqBv5U,EAAUuqI,EAAWrnI,EAAQs2U,EAAcC,EAAaC,QACnE,IAAXx2U,IAAqBA,EAAS,IAClCxC,KAAK84U,aAAeA,EACpB94U,KAAK+4U,YAAcA,EACnB/4U,KAAKg5U,QAAUA,EACfh5U,KAAKk4D,KAAO,CACR54D,SAAUA,EACVuqI,UAAWA,EACXrnI,OAAQA,EACRy/G,KAAM,KACN+1N,WAAY,UACZv6U,QAAS,KACTg7U,SAAUM,EAAYN,UAE1Bz4U,KAAK84U,aAAaG,SAASj5U,KAAKk4D,MA2JpC,OApJA2gR,EAAqB/9U,UAAUqI,KAAO,WAElC,OADAnD,KAAK+4U,YAAYN,WACVz4U,MAKX64U,EAAqB/9U,UAAUo+U,eAAiB,SAAUh6U,GAGtD,OAFAc,KAAKk4D,KAAK8/Q,WAAa94U,EACvBc,KAAKk4D,KAAKz6D,QAAU,KACbuC,MAKX64U,EAAqB/9U,UAAUq+U,YAAc,SAAU17U,GAGnD,OAFAuC,KAAKk4D,KAAK8/Q,WAAa,SACvBh4U,KAAKk4D,KAAKz6D,QAAUuC,KAAKg5U,QAAQv7U,QAAQ0T,MAAM1T,GACxCuC,MAOX64U,EAAqB/9U,UAAUmnH,KAAO,SAAU4nB,GAE5C,OADA7pI,KAAKk4D,KAAK+pD,KAAO4nB,EACV7pI,MAMX64U,EAAqB/9U,UAAU88G,IAAM,SAAUA,GAE3C,OADA53G,KAAKk4D,KAAK0/C,IAAMA,EACT53G,MAOX64U,EAAqB/9U,UAAUs+U,OAAS,SAAU1wL,GAC9C,OAAO1oJ,KAAK84U,aAAaM,OAAO1wL,IAKpCmwL,EAAqB/9U,UAAUu+U,aAAe,WAC1C,OAAOr5U,KAAK84U,aAAaO,gBAE7Bx+U,OAAOyD,eAAeu6U,EAAqB/9U,UAAW,QAAS,CAI3D0D,IAAK,WACD,OAAOwB,KAAK84U,aAAanhR,OAE7Bp5D,YAAY,EACZ8C,cAAc,IAMlBw3U,EAAqB/9U,UAAUuyC,GAAK,SAAU7vC,GAC1C,OAAOwC,KAAK84U,aAAazrS,GAAG7vC,IAShCq7U,EAAqB/9U,UAAUw+U,UAAY,SAAUzvM,EAAWrnI,GAC5D,OAAOxC,KAAK+4U,YAAYO,UAAUzvM,EAAWrnI,IAOjDq2U,EAAqB/9U,UAAUy+U,cAAgB,SAAU77U,GAErD,IADA,IAIIssB,EAJAvF,EAAO,GACFjZ,EAAK,EAAGA,EAAK1J,UAAUlH,OAAQ4Q,IACpCiZ,EAAKjZ,EAAK,GAAK1J,UAAU0J,GAG7B,OAAQwe,EAAKhqB,KAAK+4U,aAAaQ,cAAct1U,MAAM+lB,EAAI,CAACtsB,GAAMyG,OAAOsgB,KAMzEo0T,EAAqB/9U,UAAU0wN,SAAW,WACtC,OAAOxrN,KAAK+4U,YAAYvtH,YAO5BqtH,EAAqB/9U,UAAUqhC,QAAU,SAAUnT,GAC/C,OAAOhpB,KAAK+4U,YAAY58S,QAAQnT,IAMpC6vT,EAAqB/9U,UAAU+vE,MAAQ,WACnC,OAAO7qE,KAAK+4U,YAAYluQ,SAM5BguQ,EAAqB/9U,UAAU+tN,UAAY,SAAUjuN,GACjD,OAAOoF,KAAK+4U,YAAYlwH,UAAUjuN,IAMtCi+U,EAAqB/9U,UAAU48U,UAAY,SAAU98U,GACjD,OAAOoF,KAAK+4U,YAAYrB,UAAU98U,IAMtCi+U,EAAqB/9U,UAAU68U,SAAW,SAAU3jR,GAChD,OAAOh0D,KAAK+4U,YAAYpB,SAAS3jR,IAMrC6kR,EAAqB/9U,UAAU88U,SAAW,SAAU5jR,GAChD,OAAOh0D,KAAK+4U,YAAYnB,SAAS5jR,IAMrC6kR,EAAqB/9U,UAAUkiL,OAAS,SAAUw8J,GAC9C,OAAOx5U,KAAK+4U,YAAY/7J,OAAOw8J,IAE5BX,EA1K8B,GA+KrCY,EAA6B,WAC7B,SAASA,EAAYX,EAAcE,EAAS15U,GACxCU,KAAK84U,aAAeA,EACpB94U,KAAKg5U,QAAUA,EACfh5U,KAAKV,SAAWA,EAMhBU,KAAKy4U,SAAW,EAqHpB,OAhHAgB,EAAY3+U,UAAUksK,YAAc,SAAUtpK,GAE1C,OADAsC,KAAKV,SAAS0nK,YAActpK,EACrBsC,MAQXy5U,EAAY3+U,UAAUw+U,UAAY,SAAUzvM,EAAWrnI,GACnD,OAAO,IAAIq2U,EAAqB74U,KAAKV,SAAUuqI,EAAWrnI,EAAQxC,KAAK84U,aAAc94U,KAAMA,KAAKg5U,UAOpGS,EAAY3+U,UAAUy+U,cAAgB,SAAU77U,GAG5C,IAFA,IAAIiI,EAAQ3F,KACRykB,EAAO,GACFjZ,EAAK,EAAGA,EAAK1J,UAAUlH,OAAQ4Q,IACpCiZ,EAAKjZ,EAAK,GAAK1J,UAAU0J,GAE7B,IAAI0sD,EAAOuhR,EAAYC,YAAYh8U,GACnC,IAAKw6D,EAAM,CAGP,IADAA,EAAOl4D,KAAKtC,cACQonB,SAChB,OAAOozC,EAAKl9D,KAAKiJ,MAAMi0D,EAAM,CAACl4D,MAAMmE,OAAOsgB,IAE/C,MAAM,IAAI1nB,MAAM,mBAAsBW,EAAO,qBAEjD,IAAI8E,EAAS01D,EAAKyhR,aAAezhR,EAAKyhR,aAAa11U,MAAMi0D,EAAMzzC,QAAQ7mB,EACvE,OAAOoC,KAAKs5U,WAAU,SAAU16U,EAAOmC,GACnC,IAAIipB,EACJ,OAAQA,EAAKkuC,EAAK2xE,WAAW7uI,KAAKiJ,MAAM+lB,EAAI,CAACrkB,EAAO/G,EAAOmC,GAAKoD,OAAOsgB,MACxEjiB,GACE02U,eAAex7U,IAMxB+7U,EAAY3+U,UAAU0wN,SAAW,WAC7B,OAAOxrN,KAAKs5U,WAAU,SAAU16U,GAC5B,OAAOA,WAEE+5E,EAAS/5E,KAAW,KAAKwD,KAAKxD,OACxCs6U,eAAe,aAOtBO,EAAY3+U,UAAUqhC,QAAU,SAAUnT,GACtC,OAAOhpB,KAAKs5U,WAAU,SAAU16U,GAAS,OAAOA,SAA0D,IAAjBA,EAAMhE,QAAgBouB,EAAM5mB,KAAKxD,MACrHs6U,eAAe,YAMxBO,EAAY3+U,UAAU+vE,MAAQ,WAG1B,OAAO7qE,KAAKm8B,QAAQ,yIAEf+8S,eAAe,UAMxBO,EAAY3+U,UAAU+tN,UAAY,SAAUjuN,GACxC,OAAOoF,KAAKs5U,WAAU,SAAU16U,GAAS,OAAOA,SAA0D,IAAjBA,EAAMhE,QAAgBgE,EAAMhE,QAAUA,IAAW,CAAEA,OAAQA,IAC/Is+U,eAAe,cAMxBO,EAAY3+U,UAAU48U,UAAY,SAAU98U,GACxC,OAAOoF,KAAKs5U,WAAU,SAAU16U,GAAS,OAAOA,SAA0D,IAAjBA,EAAMhE,QAAgBgE,EAAMhE,QAAUA,IAAW,CAAEA,OAAQA,IAC/Is+U,eAAe,cAMxBO,EAAY3+U,UAAU68U,SAAW,SAAU3jR,GACvC,OAAOh0D,KAAKs5U,WAAU,SAAU16U,GAAS,OAAOA,SAAyCA,EAAMhE,QAAUo5D,IAAU,CAAEA,MAAOA,IACvHklR,eAAe,aAMxBO,EAAY3+U,UAAU88U,SAAW,SAAU5jR,GACvC,OAAOh0D,KAAKs5U,WAAU,SAAU16U,GAAS,OAAOA,SAAyCA,EAAMhE,QAAUo5D,IAAU,CAAEA,MAAOA,IACvHklR,eAAe,aAMxBO,EAAY3+U,UAAUkiL,OAAS,SAAUw8J,GACrC,OAAOx5U,KAAKs5U,WAAU,SAAU16U,GAAS,OAAOA,SAAmD,KAAVA,GAAgBA,IAAU46U,IAAkB,CAAEA,cAAeA,IACjJN,eAAe,WAExBO,EAAYC,YAAc,GACnBD,EA/HqB,GAoI5BG,EAA8B,WAC9B,SAASA,EAAaZ,GAClBh5U,KAAKg5U,QAAUA,EAIfh5U,KAAK23D,MAAQ,GAyDjB,OAlDAiiR,EAAa9+U,UAAUs+U,OAAS,SAAU95U,GACtCU,KAAK65U,oBACL,IAAIn8U,EAAOsC,KAAKg5U,QAAQ15U,SAAS6R,MAAM7R,GACnCy5U,EAAc,IAAIU,EAAYz5U,KAAMA,KAAKg5U,QAAS,CAAEt7U,KAAMA,EAAMspK,YAAa,OACjF,OAAOhnK,KAAK85U,WAAWf,EAAar7U,IAKxCk8U,EAAa9+U,UAAUu+U,aAAe,WAClCr5U,KAAK65U,oBACL,IAAId,EAAc,IAAIU,EAAYz5U,KAAMA,KAAKg5U,QAAS,CAAEt7U,KAAM,KAAMspK,YAAa,OACjF,OAAOhnK,KAAK85U,WAAWf,EAAa,OAMxCa,EAAa9+U,UAAUuyC,GAAK,SAAU7vC,GAElC,OADAs5U,EAAM3xT,IAAI3nB,EAAQwC,KAAK23D,OAChB33D,MAMX45U,EAAa9+U,UAAUm+U,SAAW,SAAU/gR,GACxC,KAAOl4D,KAAK23D,MAAM/8D,OAASs9D,EAAKugR,SAAW,GACvCz4U,KAAK23D,MAAMz8D,KAAK,IAEpB8E,KAAK23D,MAAMO,EAAKugR,UAAUv9U,KAAKg9D,IAEnC0hR,EAAa9+U,UAAU++U,kBAAoB,WACvC,IAAI75U,KAAKg5U,QAGT,MAAM,IAAIj8U,MAAM,6EAEpB68U,EAAa9+U,UAAUg/U,WAAa,SAAUf,EAAaxuP,GAEvD,IAAIwvP,EAAgB/5U,KAAK23D,MAAM3xD,MAAK,SAAUvH,GAAK,OAAOA,EAAE7D,OAAS,GAAK6D,EAAE,GAAGa,SAAS5B,MAAQ6sF,KAChG,GAAIwvP,EAAe,CACf,IAAI7hR,EAAO6hR,EAAcA,EAAcn/U,OAAS,GAChDm+U,EAAYN,SAAWvgR,EAAKugR,SACM,OAA9BvgR,EAAK54D,SAAS0nK,cACd+xK,EAAcA,EAAY/xK,YAAY9uG,EAAK54D,SAAS0nK,cAG5D,OAAO+xK,GAEJa,EA/DsB,GAoE7BI,EAAiC,WACjC,SAASA,KAuDT,OArDAA,EAAgBz5P,WAAa,SAAU05P,EAAe7H,GAClDpyU,KAAKg5U,QAAU,CACXv7U,QAASw8U,EACT36U,SAAU8yU,IAOlB4H,EAAgBZ,OAAS,SAAU95U,GAC/B,OAAO,IAAIs6U,EAAaI,EAAgBhB,SAASI,OAAO95U,IAK5D06U,EAAgBX,aAAe,WAC3B,OAAO,IAAIO,EAAaI,EAAgBhB,SAASK,gBAUrDW,EAAgBE,WAAa,SAAUx8U,EAAMmsI,EAAWpsI,EAASk8U,GAC7DlC,EAAmB/5U,GAAQD,EAC3Bg8U,EAAYC,YAAYh8U,GAAQ,CAAEmsI,UAAWA,EAAW8vM,aAAcA,IAO1EK,EAAgBG,YAAc,SAAUxiR,EAAOigD,GAC3C,OAAOjgD,EAAMhzD,KAAI,SAAUuC,GAAK,OAAOA,EAAErC,QAAO,SAAUpG,GAAK,OAAOA,EAAEm5G,MAAQA,SAMpFoiO,EAAgBI,cAAgB,SAAUziR,GACtC,OAAOA,EAAMhzD,KAAI,SAAUuC,GAAK,OAAOA,EAAErC,QAAO,SAAUpG,GAAK,YAAiBb,IAAVa,EAAEm5G,WAM5EoiO,EAAgBpjS,IAAM,SAAUp5C,GAC5Bs5U,EAAMvT,MAAM/lU,IAETw8U,EAxDyB,GA+DhCK,EAAgD,WAChD,SAASA,IACLr6U,KAAKs6U,cAAgBxC,EAezB,OAVAuC,EAA+Bv/U,UAAUy/U,gBAAkB,SAAUj9U,GACjE0C,KAAKs6U,cAAgBh9U,GAKzB+8U,EAA+Bv/U,UAAUmJ,MAAQ,SAAUoK,GACvD,IAAIwiK,EAAYxiK,EAAU7P,IAAIwB,KAAKs6U,eACnCjsU,EAAUs1H,iBAAiBouM,EAAWlhK,IAEnCwpK,EAjBwC,GAsBnD,SAASzqU,EAETugT,EAAiBlpS,GAGb,IAAIgzT,EAAgB9pB,EAAgB9hT,UAAU7P,IAAI04U,GAC9C9E,EAAiBjiB,EAAgB9hT,UAAU7P,IAAIkzU,GACnDsI,EAAgBz5P,WAAW05P,EAAe7H,GAE1C,IAAI5vU,EAAS,IAAI63U,EACbpzT,aAAoBnC,UACpBmC,EAASzkB,GAEbA,EAAOyB,MAAMksT,EAAgB9hT,WAEzB8hT,EAAgB/7O,iBAChB+7O,EAAgB/7O,gBAAgB4hQ,EAAyBC,EAAiCC,EAA+BC,EAAiCC,EAAuCI,EAAiCK,K,+ECpvD1Op7U,EAAQsD,YAAa,EACrBtD,EAAQmU,UAoBR,SAAmBpN,GACjBg4U,EAAYjyL,IAAIp0E,aAHR,mEAKR3xE,EAAO4xE,gBAAgB,CAACqmQ,EAAmBp2F,kBAAmBqE,EAAsBsB,qBAAsB1D,EAAkB2D,iBAAkBywF,EAAqBxwF,oBAAqBywF,EAAuBpwF,sBAAuBqwF,EAA+BnwF,8BAA+BowF,EAA4BnwF,8BArBlU,IAAI8vF,EAAc,EAAQ,GAEtBC,EAAqB,EAAQ,KAE7B/xF,EAAwB,EAAQ,KAEhCpC,EAAoB,EAAQ,KAE5Bo0F,EAAuB,EAAQ,KAE/BC,EAAyB,EAAQ,KAEjCC,EAAiC,EAAQ,KAEzCC,EAA8B,EAAQ,M,omBCd1C,aACE,WAAoB9zQ,EAA0BhnE,GAA1B,KAAAgnE,UAA0B,KAAAhnE,O,QAMhD,OAJE,YAAA8zS,aAAA,SAAa9kP,GACX,IAAM+rR,EAAa96U,KAAKD,KAAKM,GAAG0uD,GAChC/uD,KAAK+mE,QAAQ9c,UAAY6wR,GALhBC,EAAoB,GAFhC,0BAAgB,UAChB,iBAAOvzQ,QAAS,Q,uBAEqB,mB,EAAA,oBAAPA,kBAAO,SAAoB,mBAApB,OAAoB,IAAJ,gBAAI,YAD7CuzQ,GAAb,I,4mBCQA,aAQE,WAAoBh0Q,GAApB,WAAoB,KAAAA,UAcZ,KAAAi0Q,eAAiB,WACvB,IAAMj0Q,EAAU,EAAE,EAAKA,SAASn3B,WAAWr9B,QAEvC5S,OAAOkhI,aAAe,EAAuBo6M,oBAC/Cl0Q,EAAQivD,OAAO,EAAuBklN,eAEtCn0Q,EAAQkvD,QAAQ,EAAuBilN,gB,QAG7C,O,EA/BaC,EAUX,YAAA7xR,SAAA,WACE3pD,OAAOuwG,iBAAiB,EAAuBkrO,gBAAiBp7U,KAAKg7U,iBAGvE,YAAA7xL,SAAA,WACExpJ,OAAO+iH,oBAAoB,EAAuB04N,gBAAiBp7U,KAAKg7U,iBAG1E,YAAAznS,MAAA,WACE,EAAE,aAAa+hF,QAAQ,CAAE7C,UAAW,GAAK,EAAuByoN,gBAjBpD,EAAAE,gBAAkB,SAClB,EAAAF,cAAgB,IAChB,EAAAD,oBAAsB,GAJzBE,EAAsB,KAVlC,aAAW,kKASX,uB,uBASqC,mB,EAAA,oBAAP3zQ,kBAAO,YARzB2zQ,GAAb,I,ioBCRA,aAIE,WAAYp0Q,GAFF,KAAAz/D,MAAgB,GAGxBtH,KAAK6rP,SAAW,EAAE9kL,GAetB,OAZE,YAAA5nE,KAAA,WACEa,KAAK6rP,SAASle,QAAQ,CAAErmO,MAAOtH,KAAKsH,OAAS,MAG/C,YAAAo+D,OAAA,WACE1lE,KAAK6rP,SAASle,QAAQ,YAGxB,YAAA0tG,aAAA,WAEEr7U,KAAK6rP,SAASle,QAAQ,CAAErmO,MAAOtH,KAAKsH,OAAS,MAhBrC,GAAT,W,qDAFUg0U,EAA+B,GAF3C,0BAAgB,wBAChB,iBAAO9zQ,S,iCACK8zQ,GAAb,I,upBCUA,aAgBE,WACUx1U,EACAuU,GADA,KAAAvU,SACA,KAAAuU,KAZF,KAAAkhU,sBAAgC,EAQhC,KAAA/4U,OAAS,GAMfxC,KAAKC,OAAS,aAAWC,UAAU,8B,QAsDvC,OAnDE,YAAAopD,SAAA,WACEtpD,KAAKwvS,aAAexvS,KAAKqa,GAAGtF,UAAU,4BAA6B/U,KAAKgtP,QAAQ7tP,KAAKa,OACrFA,KAAKgtP,WAGP,YAAA7jG,SAAA,WACEnpJ,KAAKwvS,aAAa7jM,WAMpB,YAAAqhJ,QAAA,WAEE,IAAMwuF,EAAqBx7U,KAAKy7U,sBAAsBz7U,KAAK8F,OAAOM,oBAClEpG,KAAKsE,aAAek3U,EACjB37U,MAAM,EAAG27U,EAAmB5gV,OAAS,GACrCuJ,OAAOnE,KAAK8F,OAAOM,mBAAmB/B,sBACtCQ,QAAO,SAAAwC,GAAe,OAAAA,EAAY7E,OAAO8E,SAG5C,IAAMlB,EAAqBpG,KAAK8F,OAAOM,mBACvCpG,KAAKu7U,sBAAwBv7U,KAAK07U,oBAAoBt1U,IAKxD,YAAA4C,gBAAA,SAAgB3B,GACd,IAAMjH,EAAUvF,OAAOgI,OAAO,GAAIwE,EAAYjH,eAEvCA,EAAOu7U,WAEdt0U,EAAYvB,OAAOkD,gBAAgB3B,EAAY7E,OAAO9E,KAAM0C,IAG9D,YAAAq7U,sBAAA,SAAsBp0U,GACpB,OAAOA,EAAYtD,kBAAoB/D,KAAKy7U,sBAAsBp0U,EAAYtD,mBAAmBI,OAAO,CAACkD,IAAgB,CAACA,IAGpH,YAAAq0U,oBAAR,SAA4Br0U,GAC1B,QAAKA,OAGDA,EAAY7E,SAAgD,IAAtC6E,EAAY7E,OAAOipT,iBAKrBpkT,EAAYhD,qBACbwa,MAAK,SAAA+8T,GAAQ,OAAAA,EAAKp5U,SAAyC,IAA/Bo5U,EAAKp5U,OAAOipT,oBA1DjE,GADC,W,sDAbUowB,EAA4B,GAFxC,iBAAO,SAAQ,mBACf,wBAAc,qB,uBAkBW,mB,OAAA,IAAN,oBAAM,SACK,mBADL,OACK,IAAf,sCAAe,YAlBlBA,GAAb,I,gFCfAngV,EAAOD,QAAU,oc,ulBC4BjB,aA+CE,WAAoBsrE,GAApB,WAAoB,KAAAA,UA1CpB,KAAA+0Q,SAAmB,EAGnB,KAAAC,QAAkB,GAKlB,KAAAv5U,OAAyB,CACvBm4B,SAAU,IACVkW,OAAQ,WACRmrS,QAAS,EACT7rL,WAAY,EACZ8rL,WAAW,EACXv0S,UAAW,GACXw0S,MAAM,EACNC,OAAQ,aACRpiM,SAAU,cAKZ,KAAAqiM,YAAsB,EACtB,KAAAC,gBAA0B,EAK1B,KAAAC,kBAA4B,EAE5B,KAAAC,mBAA6B,EAC7B,KAAAC,kBAA4B,EAC5B,KAAAC,aAAuB,EACvB,KAAAC,aAAuB,EACvB,KAAAC,KAAqB,CACnBC,OAAQ,EACRC,KAAM,EACNC,OAAQ,EACRC,SAAS,GA4CX,KAAAC,cAAgB,WACd,IAAK,IAAMC,KAAY,EAAKz5U,QAC1B,EAAKhB,OAAOy6U,GAAY,EAAKz5U,QAAQy5U,IASzC,KAAAC,YAAc,WAIZ,MAA+B,iBAFjB,EAAKn2Q,QAAQjG,MAEVgB,UACR,YAEF,mBAOT,KAAAx+D,KAAO,WAmBL,GAjBA,WAAS0oE,OAAOkkC,iBAAiB,SAAU,EAAKitO,eAG5C,EAAK36U,OAAOy5U,YAGd,EAAKmB,kBAAkBltO,iBAAiB,aAAc,EAAKmtO,kBAAmB,CAAErgL,SAAS,IACzF,EAAKogL,kBAAkBltO,iBAAiB,WAAY,EAAKotO,iBACzD,EAAKF,kBAAkBltO,iBAAiB,YAAa,EAAKqtO,iBAAkB,CAAEvgL,SAAS,IAGvF,EAAKogL,kBAAkBltO,iBAAiB,YAAa,EAAKstO,kBAC1D,EAAKJ,kBAAkBltO,iBAAiB,UAAW,EAAKutO,gBACxD,EAAKL,kBAAkBltO,iBAAiB,aAAc,EAAKwtO,mBAC3D,EAAKN,kBAAkBltO,iBAAiB,YAAa,EAAKytO,mBAG7B,OAA3B,EAAKP,kBACP,MAAM,IAAIrgV,MAAM,yDAIS,IAAvB,EAAK6gV,gBACP,EAAKA,cAAgB,EAAKC,eAI5B,EAAKC,sBAGL,EAAK9wF,UAEL,EAAKxqP,OAAO25U,OAAOnhV,KAAK,GACxB,EAAKyhV,aAAc,GAOrB,KAAAqB,oBAAsB,WACpB,GAAmC,iBAAxB,EAAKt7U,OAAOw5U,QACrB,EAAKA,QAAU,EAAKx5U,OAAOw5U,aAExB,GAAmC,iBAAxB,EAAKx5U,OAAOw5U,QAE1B,IAAK,IAAMp1U,KADX,EAAKo1U,QAAU,EACQ,EAAKx5U,OAAOw5U,QAC7B,EAAK6B,eAAiBj3U,IACxB,EAAKo1U,QAAU,EAAKx5U,OAAOw5U,QAAQp1U,KAY3C,KAAA8F,KAAO,SAACqxU,EAAmB92T,GACzB,QADM,IAAA82T,MAAA,QAAmB,IAAA92T,MAAA,QACrB,EAAK+2T,cAAcpjV,QAAU,EAAKohV,SAAtC,CAGA,IAAMiC,EAAe,EAAKC,aACA,IAAtB,EAAKA,cAAsB,EAAK17U,OAAO05U,KACzC,EAAKgC,aAAe,EAAKF,cAAcpjV,OAAS,EAAKohV,QAGrD,EAAKkC,aAAe/6T,KAAKqD,IAAI,EAAK03T,aAAeH,EAAe,GAE9DE,IAAiB,EAAKC,eACxB,EAAKC,iBACL,EAAK37U,OAAOu3I,SAAS/+I,KAAK,GACtBisB,GACFA,EAASjsB,KAAK,MAWpB,KAAAiI,KAAO,SAAC86U,EAAmB92T,GACzB,QADM,IAAA82T,MAAA,QAAmB,IAAA92T,MAAA,QACrB,EAAK+2T,cAAcpjV,QAAU,EAAKohV,SAAtC,CAGA,IAAMiC,EAAe,EAAKC,aACtB,EAAKA,eAAiB,EAAKF,cAAcpjV,OAAS,EAAKohV,SAAW,EAAKx5U,OAAO05U,KAChF,EAAKgC,aAAe,EAGpB,EAAKA,aAAe/6T,KAAKW,IAAI,EAAKo6T,aAAeH,EAAe,EAAKC,cAAcpjV,OAAS,EAAKohV,SAE/FiC,IAAiB,EAAKC,eACxB,EAAKC,iBACL,EAAK37U,OAAOu3I,SAAS/+I,KAAK,GACtBisB,GACFA,EAASjsB,KAAK,MAWpB,KAAAojV,KAAO,SAACz0U,EAAOsd,GACb,QADa,IAAAA,MAAA,QACT,EAAK+2T,cAAcpjV,QAAU,EAAKohV,SAAtC,CAGA,IAAMiC,EAAe,EAAKC,aAC1B,EAAKA,aAAe/6T,KAAKW,IAAIX,KAAKqD,IAAI7c,EAAO,GAAI,EAAKq0U,cAAcpjV,OAAS,EAAKohV,SAC9EiC,IAAiB,EAAKC,eACxB,EAAKC,iBACL,EAAK37U,OAAOu3I,SAAS/+I,KAAK,GACtBisB,GACFA,EAASjsB,KAAK,MASpB,KAAAmjV,eAAiB,WACf,EAAK9B,gBAAmB,EAAK6B,cAAgB,EAAKN,cAAgB,EAAK5B,UAAa,GAOtF,KAAAqC,gBAAkB,WAChB,IAAMC,EAAW,EAAK3B,KAAKE,KAAO,EAAKF,KAAKC,OACtC2B,EAAmBp7T,KAAKa,IAAIs6T,GAC5BE,EAAuBr7T,KAAKC,KAAKm7T,GAAoB,EAAKX,cAAgB,EAAK5B,UAEjFsC,EAAW,GAAKC,EAAmB,EAAK/7U,OAAOklC,WAAa,EAAKs2S,cAAcpjV,OAAS,EAAKohV,QAC/F,EAAKtvU,KAAK8xU,GAEHF,EAAW,GAAKC,EAAmB,EAAK/7U,OAAOklC,WAAa,EAAKs2S,cAAcpjV,OAAS,EAAKohV,SACpG,EAAK/4U,KAAKu7U,GAEZ,EAAKL,kBAOP,KAAAhB,cAAgB,WAEV,EAAKZ,mBAAqB,EAAKsB,gBAAkB,WAAS7xQ,OAAOyyQ,aAIrE,EAAKlC,mBAAoB,EACzB,WAASvwQ,OAAOmnD,sBAAsB,EAAKurN,gBAM7C,KAAAA,aAAe,WACb,EAAKb,cAAgB,WAAS7xQ,OAAOyyQ,WAErC,EAAKX,sBAEL,EAAKF,cAAgB,EAAKR,kBAAkB55P,YAC5C,EAAK44P,YAAe,EAAKwB,cAAgB,EAAK5B,QAAW,EAAKgC,cAAcpjV,OAE5E,EAAKujV,iBACL,EAAK5B,mBAAoB,GAO3B,KAAAoC,UAAY,WACV,EAAKhC,KAAO,CACVC,OAAQ,EACRC,KAAM,EACNC,OAAQ,EACRC,QAAS,OAQb,KAAAM,kBAAoB,SAACzhV,GACnBA,EAAE43C,kBACF,EAAKkpS,aAAc,EACnB,EAAKC,KAAKC,OAAShhV,EAAE+vH,QAAQ,GAAGhB,MAChC,EAAKgyN,KAAKG,OAASlhV,EAAE+vH,QAAQ,GAAGf,OAOlC,KAAA0yN,gBAAkB,SAAC1hV,GACjBA,EAAE43C,kBACF,EAAKkpS,aAAc,EACf,EAAKC,KAAKE,MACZ,EAAKwB,kBAEP,EAAKM,aAOP,KAAApB,iBAAmB,SAAC3hV,GAClBA,EAAE43C,kBAEwB,OAAtB,EAAKmpS,KAAKI,UACZ,EAAKJ,KAAKI,QAAU55T,KAAKa,IAAI,EAAK24T,KAAKG,OAASlhV,EAAE+vH,QAAQ,GAAGf,OAASznG,KAAKa,IAAI,EAAK24T,KAAKC,OAAShhV,EAAE+vH,QAAQ,GAAGhB,QAG7G,EAAK+xN,aAAe,EAAKC,KAAKI,UACD,IAA3B,EAAKT,oBACP,EAAKA,kBAAoB,GAE3B,EAAKK,KAAKE,KAAOjhV,EAAE+vH,QAAQ,GAAGhB,MACzB,EAAK6xN,mBACR,EAAKA,kBAAmB,EACxBrpN,uBAAsB,WAAM,SAAKyrN,gBAAgBhjV,SAKvD,KAAAgjV,gBAAkB,SAAChjV,GACjB,EAAKygV,iBAAqH,GAAlG,EAAK6B,cAAgB,EAAKN,cAAgB,EAAK5B,UAAY,EAAKW,KAAKC,OAAS,EAAKD,KAAKE,OAChH,EAAKL,kBAAmB,GAO1B,KAAAgB,iBAAmB,SAAC5hV,GAClBA,EAAEutH,iBACFvtH,EAAE43C,kBACF,EAAKkpS,aAAc,EACnB,EAAKC,KAAKC,OAAShhV,EAAE+uH,OAOvB,KAAA8yN,eAAiB,SAAC7hV,GAChBA,EAAE43C,kBACF,EAAKkpS,aAAc,EACnB,EAAKJ,kBAAoB,EAAK95U,OAAOm4B,SACjC,EAAKgiT,KAAKE,MACZ,EAAKwB,kBAEP,EAAKM,aAOP,KAAAhB,iBAAmB,SAAC/hV,GAClBA,EAAEutH,iBACE,EAAKuzN,cACP,EAAKC,KAAKE,KAAOjhV,EAAE+uH,MACd,EAAK6xN,mBACuB,IAA3B,EAAKF,oBACP,EAAKA,kBAAoB,GAE3B,EAAKE,kBAAmB,EACxBrpN,sBAAsB,EAAK0rN,oBAKjC,KAAAA,gBAAkB,WAChB,EAAKxC,iBAAqH,GAAlG,EAAK6B,cAAgB,EAAKN,cAAgB,EAAK5B,UAAY,EAAKW,KAAKC,OAAS,EAAKD,KAAKE,OAChH,EAAKL,kBAAmB,GAO1B,KAAAkB,kBAAoB,SAAC9hV,GACf,EAAK8gV,cACP,EAAKA,aAAc,EACnB,EAAKC,KAAKE,KAAOjhV,EAAE+uH,MACnB,EAAK2xN,kBAAoB,EAAK95U,OAAOm4B,SACrC,EAAK0jT,kBACL,EAAKM,cAQT,KAAA3xF,QAAU,WACR,EAAKovF,YAAe,EAAKwB,cAAgB,EAAK5B,QAAW,EAAKgC,cAAcpjV,OAG5E8F,MAAM5F,UAAUqM,QAAQnM,KAAK,EAAKgjV,eAAe,SAAAj3Q,GAC/CA,EAAQjG,MAAMxsB,MAAW,IAAM,EAAK0pS,cAAcpjV,OAAM,OAI1D,EAAKujV,kBAGP,KAAAW,mBAAqB,SAAC9hV,KAtYpBgD,KAAKC,OAAS,aAAWC,UAAU,Y,MAuYvC,OApYE,YAAAopD,SAAA,WAEEtpD,KAAKg9U,gBAGLh9U,KAAKs8U,kBAAoBt8U,KAAKwC,OAAOm4B,SACrC36B,KAAKk+U,aAAel+U,KAAKwC,OAAO2tJ,WAChCnwJ,KAAK++U,kBAAoB/+U,KAAKk9U,cAC9Bl9U,KAAK69U,cAAgB,WAAS7xQ,OAAOyyQ,WACrCz+U,KAAK49U,cAAgB59U,KAAKo9U,kBAAkB55P,YAC5CxjF,KAAKg+U,cAAgBh+U,KAAKg/U,YAAYpvS,SAKtC5vC,KAAKsD,QAGP,YAAA6lJ,SAAA,WACE,WAASn9E,OAAO02C,oBAAoB,SAAU1iH,KAAKm9U,eAEnDn9U,KAAKo9U,kBAAkB16N,oBAAoB,aAAc1iH,KAAKq9U,mBAC9Dr9U,KAAKo9U,kBAAkB16N,oBAAoB,WAAY1iH,KAAKs9U,iBAC5Dt9U,KAAKo9U,kBAAkB16N,oBAAoB,YAAa1iH,KAAKu9U,kBAC7Dv9U,KAAKo9U,kBAAkB16N,oBAAoB,YAAa1iH,KAAKw9U,kBAC7Dx9U,KAAKo9U,kBAAkB16N,oBAAoB,UAAW1iH,KAAKy9U,gBAC3Dz9U,KAAKo9U,kBAAkB16N,oBAAoB,aAAc1iH,KAAK09U,mBAC9D19U,KAAKo9U,kBAAkB16N,oBAAoB,YAAa1iH,KAAK29U,mBA1E/D,GADC,W,wDAID,GADC,W,uDAID,GADC,mBAAS,CAAE9lC,mBAAoB,cAAY5nJ,U,uDAVjCgvL,EAAQ,GAFpB,wBAAc,eACd,iBAAOz3Q,S,uBAgDkC,mB,EAAA,oBAAX3tB,0BAAW,YA/C7BolS,GAAb,I,oEC5BAvjV,EAAOD,QAAU,oiC,qmBCcjB,aACC,WAAoBsrE,GAAA,KAAAA,U,MAuCrB,OArCC,YAAAzd,SAAA,WAGC5oD,MAAM0hB,KAAKpiB,KAAK+mE,QAAQ7D,YAAY/7D,SAAQ,SAAAvL,GAC3C,IAAMklE,EAAsBllE,EAAGklE,MAC3BA,IACHA,EAAMo+Q,cAAgB,WAIxBl/U,KAAK+mE,QAAQmpC,iBAAiB,QAASlwG,KAAKm/U,cAG7C,YAAAh2L,SAAA,WACCnpJ,KAAK+mE,QAAQ27C,oBAAoB,QAAS1iH,KAAKm/U,cAGxC,YAAAA,YAAR,SAAoBr7C,GACnB,IAAM56O,EAAO46O,EAAOs7C,WAAWh4Q,aAAa,QAC5C,GAAI/qE,SAASgjV,sBAAsB,SAAWn2R,EAAM,CACnD,IAAMo2R,EAAqCjjV,SAASC,cAAc,YAClEgjV,EAAcx+Q,MAAM6jD,QAAU,mBAC9B26N,EAAc5kO,UAAYxxD,EAE1B7sD,SAAS8e,KAAKpd,YAAYuhV,GAC1BA,EAAc3sO,SAEdt2G,SAASg0O,YAAY,aACrBh0O,SAASg0O,YAAY,QAErBh0O,SAAS8e,KAAKomD,YAAY+9Q,KAIpB,YAAAzrC,aAAR,SAAqB9kP,GACpB/uD,KAAK+mE,QAAQrqE,aAAa,OAAQqyD,IAtCvBwwR,EAAwB,GAFpC,0BAAgB,gBAChB,uB,uBAEoC,mB,EAAA,oBAAP/3Q,kBAAO,YADxB+3Q,GAAb,I,0oECRA,aACE,KAAA11S,OAAe,GACf,KAAAyxE,KAAgB,EAChB,KAAAkkO,SAAoB,GACpB,KAAAC,aAAwB,EACxB,KAAAC,UAAyB,GACzB,KAAAC,YAAuB,GAGzB,aACE,KAAAtlV,KAAmB,GACnB,KAAAolV,aAAuB,GAYzB,aAgBE,WACU35F,GAAA,KAAAA,gBAbF,KAAA85F,YAAsB,EACtB,KAAAC,WAAqB,EACrB,KAAAC,iBAA2B,EAQ3B,KAAA/qL,cAAmC,GAIzC/0J,KAAKC,OAAS,aAAWC,UAAU,8B,QAuDvC,OApDS,YAAAopD,SAAP,sBACEtpD,KAAK+0J,cAAc75J,KAAK8E,KAAK8lP,cAC1Bm/C,iBAAiBjlS,KAAKsd,WAAY,aAClCvI,WAAU,WAAM,SAAKgrU,wBAGnB,YAAA52L,SAAP,WACEnpJ,KAAK+0J,cAAc5tJ,SAAQ,SAAAD,GAAK,OAAAA,EAAEykG,cAG5B,YAAAo0O,iBAAR,WACE//U,KAAK6/U,WAAa18T,KAAKC,KAAKkH,SAAStqB,KAAKsd,WAAWmiU,aAAazgU,WAAY,MAAQhf,KAAKsd,WAAWkiU,UAEtGx/U,KAAK8/U,gBAAkB9/U,KAAK6/U,WAAa7/U,KAAKsd,WAAWqiU,aAG9C,YAAAK,aAAb,SAA0B5P,G,qBAA+Bp0U,GAAO,W,yDAC9DgE,KAAKC,OAAO0zC,MAAM,gBACdy8R,GACCA,EAAcC,aACbrwU,KAAK4/U,YACN5/U,KAAK8/U,gBAER,GAAM9/U,KAAKigV,cALT,M,OAKF,S,mCAIS,YAAAA,WAAb,W,qBAA2BjkV,GAAO,W,0DAChC,GAA8B,mBAAnBgE,KAAKkgV,UACd,MAAM,IAAInjV,MAAM,gFAMlBiD,KAAK4/U,YAAa,EAClB5/U,KAAKsd,WAAWg+F,KAAOt7G,KAAKsd,WAAWqiU,YAAc3/U,KAAKsd,WAAWkiU,SACrEx/U,KAAKsd,WAAWqiU,YAAc3/U,KAAKsd,WAAWqiU,YAAc,E,iBAGtB,O,sBAAA,GAAM3/U,KAAKkgV,a,cAA3CzkU,EAAgC,SACpCzb,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,aAExC/+U,MAAM5F,UAAUI,KAAK+I,MAAMjE,KAAKsd,WAAWoiU,UAAWjkU,EAASphB,M,+BAI/D2F,KAAKC,OAAOnD,MAAM,G,oBAGpBkD,KAAK4/U,YAAa,E,YA9DpB,GADC,W,gBACkBO,I,iCAGnB,GADC,W,gBACyB,mB,EAAA,oBAARr7T,oBAAQ,W,gCAZfs7T,EAA0B,GAFtC,0BAAgB,gBAChB,iBAAO,iB,uBAkBgC,mB,OAAA,IAAb,kCAAa,YAjB3BA,GAAb,GA8FA,aAeE,aACEpgV,KAAKC,OAAS,aAAWC,UAAU,gC,MAuBvC,OApBe,YAAA2pC,OAAb,W,qBAAuB7tC,GAAO,W,0DAC5B,GAAmC,mBAAxBgE,KAAKqgV,eACd,MAAM,IAAItjV,MAAM,0E,iBAKoB,O,sBADpCiD,KAAKwO,QAC+B,GAAMxO,KAAKqgV,kB,cAA3C5kU,EAAgC,SACpCzb,KAAKsd,WAAWoiU,UAAYjkU,EAASphB,KACrC2F,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,aACxCz/U,KAAKwO,Q,+BAELxO,KAAKC,OAAOnD,MAAM,G,+BAId,YAAA0R,MAAR,WACExO,KAAKsd,WAAWqiU,YAAc3/U,KAAKsd,WAAWmiU,aAAe,EAAI,EAAI,EACrEz/U,KAAKsd,WAAWg+F,KAAO,GAjCzB,GADC,W,2DAID,GADC,W,4DAID,GADC,W,gBAC8B,mB,EAAA,oBAARx2F,oBAAQ,W,qCAG/B,GADC,W,gBACkBq7T,I,iCAbRG,EAA8B,GAlB1C,aAAW,+hBAiBX,wBAAc,uB,2BACFA,GAAb,GAqDA,aAeE,WACUx6F,GAAA,KAAAA,gBAHF,KAAA/wF,cAAmC,GAIzC/0J,KAAKC,OAAS,aAAWC,UAAU,gC,MA6BvC,OA1BS,YAAAopD,SAAP,sBACOtpD,KAAKvC,UACRuC,KAAKvC,QAAU,yBAEZuC,KAAKugV,gBACRvgV,KAAKugV,cAAgB,YAOvBvgV,KAAK+0J,cAAc75J,KAAK8E,KAAK8lP,cAC1Bm/C,iBAAiBjlS,KAAKsd,WAAY,gBAClCvI,WAAU,WAAM,SAAKgrU,wBAGnB,YAAA52L,SAAP,WACEnpJ,KAAK+0J,cAAc5tJ,SAAQ,SAAAD,GAAK,OAAAA,EAAEykG,cAG5B,YAAAo0O,iBAAR,WACE//U,KAAKG,KAAOH,KAAKvC,QAAQsJ,QAAQ,gBAAiB/G,KAAKsd,WAAWmiU,aAAazgU,aAtCjF,GADC,W,uDAID,GADC,W,6DAID,GADC,W,gBACkBmhU,I,iCAVRK,EAA4B,GAXxC,aAAW,wPASX,wBAAc,qBACd,iBAAO,iB,uBAiBgC,mB,OAAA,IAAb,kCAAa,YAhB3BA,GAAb,I,gvECzKA,aACE,KAAA32S,OAAe,GACf,KAAAyxE,KAAgB,EAChB,KAAAkkO,SAAoB,GACpB,KAAAC,aAAwB,EACxB,KAAAC,UAAyB,GACzB,KAAAC,YAAuB,EAEvB,KAAAE,WAAoB,EACpB,KAAAC,iBAA4B,EAC5B,KAAAW,aAAwB,EACxB,KAAAC,YAAe,IAGjB,aACE,KAAArmV,KAAmB,GACnB,KAAAolV,aAAuB,EACvB,KAAAI,WAAoB,GAYtB,aAgBE,WACU/5F,GAAA,KAAAA,gBAbF,KAAA85F,YAAsB,EACtB,KAAAC,WAAqB,EACrB,KAAAC,iBAA2B,EAQ3B,KAAA/qL,cAAmC,GAIzC/0J,KAAKC,OAAS,aAAWC,UAAU,8B,QAgFvC,OA7ES,YAAAopD,SAAP,sBACEtpD,KAAK+0J,cAAc75J,KAAK8E,KAAK8lP,cAC1Bm/C,iBAAiBjlS,KAAKsd,WAAY,aAClCvI,WAAU,WAAM,SAAKgrU,wBAGnB,YAAA52L,SAAP,WACEnpJ,KAAK+0J,cAAc5tJ,SAAQ,SAAAD,GAAK,OAAAA,EAAEykG,cAG5B,YAAAo0O,iBAAR,WACE//U,KAAK6/U,WAAa18T,KAAKC,KAAKkH,SAAStqB,KAAKsd,WAAWmiU,aAAazgU,WAAY,MAAQhf,KAAKsd,WAAWkiU,UAEtGx/U,KAAK8/U,gBAAkB9/U,KAAK6/U,WAAa7/U,KAAKsd,WAAWqiU,YAEzD3/U,KAAKsd,WAAWuiU,WAAa7/U,KAAK6/U,WAClC7/U,KAAKsd,WAAWwiU,gBAAkB9/U,KAAK8/U,gBACvC9/U,KAAKsd,WAAWojU,YAAc,GAC9B,IAAIC,EAAc,EAElB,GAAG3gV,KAAKsd,WAAWqiU,YAAY,IAAQ3/U,KAAKsd,WAAWqiU,YAAY,GAAM3/U,KAAKsd,WAAWmjU,cAAiB,EAAE,CAC1G,IAAIG,EAAiB5gV,KAAKsd,WAAWmjU,aAErCE,EADe3gV,KAAKsd,WAAWqiU,YAAa3/U,KAAKsd,WAAWmjU,aAAczgV,KAAKsd,WAAWmjU,kBAGvFzgV,KAAKsd,WAAWqiU,YAAc3/U,KAAKsd,WAAWmjU,eAC/CE,EAAgBx9T,KAAK09T,MAAM7gV,KAAKsd,WAAWqiU,YAAa3/U,KAAKsd,WAAWmjU,cAAkBzgV,KAAKsd,WAAWmjU,aAAe,EACzHhhV,QAAQm0C,IAAKzwB,KAAK09T,MAAM7gV,KAAKsd,WAAWqiU,YAAa3/U,KAAKsd,WAAWmjU,gBAGzEG,EAAkBD,EAAY,EAAK3gV,KAAKsd,WAAWmjU,aAEnD,IAAI,IAAI/lV,EAAEimV,EAAajmV,GAAGkmV,EAAiBlmV,IACzCsF,KAAKsd,WAAWojU,YAAYxlV,KAAKR,GAEnCsF,KAAKsd,WAAWojU,YAAYxlV,KAAK,OAEzB8E,KAAKsd,WAAWojU,aAGb,YAAAV,aAAb,SAA0B5P,G,qBAA+Bp0U,GAAO,W,yDAC9DgE,KAAKC,OAAO0zC,MAAM,gBACdy8R,GACCA,EAAcC,aACbrwU,KAAK4/U,YACN5/U,KAAK8/U,gBAER,GAAM9/U,KAAKigV,cALT,M,OAKF,S,mCAIS,YAAAA,WAAb,W,qBAA2BjkV,GAAO,W,0DAChC,GAA8B,mBAAnBgE,KAAKkgV,UACd,MAAM,IAAInjV,MAAM,gFAMlBiD,KAAK4/U,YAAa,EAClB5/U,KAAKsd,WAAWg+F,KAAOt7G,KAAKsd,WAAWqiU,YAAc3/U,KAAKsd,WAAWkiU,SACrEx/U,KAAKsd,WAAWqiU,YAAc3/U,KAAKsd,WAAWqiU,YAAc,E,iBAGtB,O,sBAAA,GAAM3/U,KAAKkgV,a,cAA3CzkU,EAAgC,SACpCzb,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,aAExCz/U,KAAKsd,WAAWuiU,WAAapkU,EAASokU,WACtCn/U,MAAM5F,UAAUI,KAAK+I,MAAMjE,KAAKsd,WAAWoiU,UAAWjkU,EAASphB,M,+BAI/D2F,KAAKC,OAAOnD,MAAM,G,oBAGpBkD,KAAK4/U,YAAa,E,YAvFpB,GADC,W,gBACkBO,I,iCAGnB,GADC,W,gBACyB,mB,EAAA,oBAARr7T,oBAAQ,W,gCAZfs7T,EAA0B,GAFtC,0BAAgB,2BAChB,iBAAO,iB,uBAkBgC,mB,OAAA,IAAb,kCAAa,YAjB3BA,GAAb,GA6JA,aAkBE,WAAoBt6F,EACV/lP,GADU,KAAA+lP,gBACV,KAAA/lP,OAPF,KAAA6/U,YAAsB,EACvB,KAAAkB,UAAoB,EAGnB,KAAA/rL,cAAmC,GACnC,KAAAgsL,YAA6B,CAAC,EAAE,GAAG,GAAG,GAAG,KAG/C/gV,KAAKC,OAAS,aAAWC,UAAU,gC,UAsGvC,OApGS,YAAAopD,SAAP,sBACEtpD,KAAK+0J,cAAc75J,KAAK8E,KAAK8lP,cAC1Bm/C,iBAAiBjlS,KAAKsd,WAAY,aAClCvI,WAAU,WAAM,SAAKgrU,wBAEjB,YAAAA,iBAAT,WACE//U,KAAKghV,sBACLhhV,KAAK8gV,UAAY39T,KAAKC,KAAKkH,SAAStqB,KAAKsd,WAAWmiU,aAAazgU,WAAY,MAAQhf,KAAKsd,WAAWkiU,UACrGx/U,KAAKsd,WAAWuiU,WAAa7/U,KAAK8gV,UACQ,GAAtC9gV,KAAKsd,WAAWojU,YAAY9lV,QAC9BoF,KAAKihV,gBAAgB,EAAEjhV,KAAKsd,WAAWmjU,cAEzCzgV,KAAKvC,QAAUuC,KAAKD,KAAKM,GAAG,4CAA4C0G,QAAQ,MAAO/G,KAAKsd,WAAWqiU,YAAY3gU,YAClGjY,QAAQ,MAAO/G,KAAKsd,WAAWuiU,WAAW7gU,YAC1CjY,QAAQ,MAAO/G,KAAKsd,WAAWmiU,aAAazgU,aAExD,YAAAiiU,gBAAP,SAAuBn9T,EAAa0C,GAElC,IAAK,IAAI9rB,EAAIopB,EAAKppB,GAAK8rB,EAAK9rB,IAC1BsF,KAAKsd,WAAWojU,YAAYxlV,KAAKR,IAG9B,YAAAwmV,cAAP,SAAqBp9T,EAAY0C,GAC/B,IAAK,IAAI9rB,EAAIopB,EAAKppB,EAAI8rB,EAAK9rB,IACzBsF,KAAKsd,WAAWg+F,KAAOt7G,KAAKsd,WAAWg+F,KAAOhxF,SAAStqB,KAAKsd,WAAWkiU,SAASxgU,aAG7E,YAAAgiU,oBAAP,WACE,GAA8B,mBAAnBhhV,KAAKkgV,UACd,MAAM,IAAInjV,MAAM,2EAGP,YAAAokV,gBAAb,W,kGAEwC,O,sBAAA,GAAMnhV,KAAKkgV,a,cAA3CzkU,EAAgC,SACpCzb,KAAKsd,WAAWoiU,UAAYjkU,EAASphB,KACrC2F,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,aACxCz/U,KAAKsd,WAAWuiU,WAAapkU,EAASokU,W,+BAGtC7/U,KAAKC,OAAOnD,MAAM,G,+BAGT,YAAAskV,aAAb,W,qBAA6BplV,GAAO,W,kDAKlC,OAJAgE,KAAKsd,WAAWg+F,KAAO,EACvBt7G,KAAKsd,WAAWqiU,YAAc,EAC9B3/U,KAAKsd,WAAWojU,YAAc,GAC9B1gV,KAAKihV,gBAAgBjhV,KAAKsd,WAAWqiU,YAAY3/U,KAAKsd,WAAWmjU,cACjE,GAAMzgV,KAAKmhV,mB,cAAX,S,YAEW,YAAAE,YAAb,W,qBAA4BrlV,GAAO,W,kDAgBjC,OAfAgE,KAAKsd,WAAWg+F,KAAO,EACvBt7G,KAAKsd,WAAWojU,YAAc,GAEzB1gV,KAAKsd,WAAWuiU,WAAa7/U,KAAKsd,WAAWmjU,cAAiB,EAClEzgV,KAAKihV,gBAAiBjhV,KAAKsd,WAAWuiU,YAAe7/U,KAAKsd,WAAWuiU,WAAa7/U,KAAKsd,WAAWmjU,aAAc,GAAIzgV,KAAKsd,WAAWuiU,YAEnI7/U,KAAKihV,gBAAiBjhV,KAAKsd,WAAWuiU,WAAa7/U,KAAKsd,WAAWmjU,aAAczgV,KAAKsd,WAAWuiU,YAInG7/U,KAAKkhV,cAAc,EAAElhV,KAAKsd,WAAWuiU,YAIrC7/U,KAAKsd,WAAWqiU,YAAc3/U,KAAKsd,WAAWuiU,WAC9C,GAAM7/U,KAAKmhV,mB,cAAX,S,YAEW,YAAAG,QAAb,SAAqBC,G,qBAAevlV,GAAO,W,kDAOzC,OANAgE,KAAKsd,WAAWg+F,KAAO,EACvBt7G,KAAKkhV,cAAc,EAAEK,GAIrBvhV,KAAKsd,WAAWqiU,YAAc4B,EAC9B,GAAMvhV,KAAKmhV,mB,cAAX,S,YAEW,YAAAK,YAAb,W,qBAA4BxlV,GAAO,W,kDASjC,OAPKgE,KAAKsd,WAAWqiU,YAAc3/U,KAAKsd,WAAWmjU,cAAiB,IAClEzgV,KAAKsd,WAAWojU,YAAc,GAC9B1gV,KAAKihV,gBAAiBjhV,KAAKsd,WAAWqiU,YAAc,EAAI3/U,KAAKsd,WAAWqiU,YAAc3/U,KAAKsd,WAAWmjU,eAExGzgV,KAAKsd,WAAWg+F,KAAO,EACvBt7G,KAAKsd,WAAWqiU,YAAc3/U,KAAKsd,WAAWqiU,YAAc,EAC5D3/U,KAAKkhV,cAAc,EAAElhV,KAAKsd,WAAWqiU,aACrC,GAAM3/U,KAAKmhV,mB,cAAX,S,YAEW,YAAAM,YAAb,W,qBAA4BzlV,GAAO,W,kDAUjC,OARMgE,KAAKsd,WAAWqiU,YAAc,GAAK3/U,KAAKsd,WAAWmjU,cAAiB,IACxEzgV,KAAKsd,WAAWojU,YAAc,GAC9B1gV,KAAKihV,gBAAiBjhV,KAAKsd,WAAWqiU,YAAc3/U,KAAKsd,WAAWmjU,aAAezgV,KAAKsd,WAAWqiU,YAAc,IAGnH3/U,KAAKsd,WAAWg+F,KAAO,EACvBt7G,KAAKsd,WAAWqiU,YAAc3/U,KAAKsd,WAAWqiU,YAAc,EAC5D3/U,KAAKkhV,cAAc,EAAElhV,KAAKsd,WAAWqiU,aACrC,GAAM3/U,KAAKmhV,mB,cAAX,S,YApHF,GADC,W,gBACkBhB,I,iCAGnB,GADC,W,gBACyB,mB,EAAA,oBAARr7T,oBAAQ,W,gCAG1B,GADC,W,4DATU48T,EAAqB,GA1DjC,aAAW,83EAyDX,wBAAc,oC,uBAmBmC,mB,OAAA,IAAb,kCAAa,SAC5B,mBAD4B,OAC5B,IAAJ,gBAAI,YAnBTA,GAAb,GA8IA,aAeE,aACE1hV,KAAKC,OAAS,aAAWC,UAAU,gC,MA+BvC,OA5Be,YAAA2pC,OAAb,W,qBAAuB7tC,GAAO,W,0DAC5B,GAAmC,mBAAxBgE,KAAKqgV,eACd,MAAM,IAAItjV,MAAM,0E,iBAKoB,O,sBADpCiD,KAAKwO,QAC+B,GAAMxO,KAAKqgV,kB,cAA3C5kU,EAAgC,SACpCzb,KAAKsd,WAAWoiU,UAAYjkU,EAASphB,KACrC2F,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,aACxCz/U,KAAKwO,aACE,E,+BAGPxO,KAAKC,OAAOnD,MAAM,G,+BAId,YAAA0R,MAAR,WACExO,KAAKsd,WAAWqiU,aAAc3/U,KAAKsd,WAAWmiU,aAAmB,GACjEz/U,KAAKsd,WAAWg+F,KAAO,EACvBt7G,KAAKsd,WAAWojU,YAAc,GAE9B,IAAK,IAAIhmV,EAAIsF,KAAKsd,WAAWqiU,YAAajlV,GAAKsF,KAAKsd,WAAWmjU,aAAc/lV,IAC3EsF,KAAKsd,WAAWojU,YAAYxlV,KAAKR,IAvCrC,GADC,W,2DAID,GADC,W,4DAID,GADC,W,gBAC8B,mB,EAAA,oBAARoqB,oBAAQ,W,qCAG/B,GADC,W,gBACkBq7T,I,iCAbRG,EAA8B,GAlB1C,aAAW,+hBAiBX,wBAAc,kC,2BACFA,GAAb,GA6DA,aAeE,WACUx6F,GAAA,KAAAA,gBAHF,KAAA/wF,cAAmC,GAIzC/0J,KAAKC,OAAS,aAAWC,UAAU,gC,MA6BvC,OA1BS,YAAAopD,SAAP,sBACOtpD,KAAKvC,UACRuC,KAAKvC,QAAU,yBAEZuC,KAAKugV,gBACRvgV,KAAKugV,cAAgB,YAOvBvgV,KAAK+0J,cAAc75J,KAAK8E,KAAK8lP,cAC1Bm/C,iBAAiBjlS,KAAKsd,WAAY,gBAClCvI,WAAU,WAAM,SAAKgrU,wBAGnB,YAAA52L,SAAP,WACEnpJ,KAAK+0J,cAAc5tJ,SAAQ,SAAAD,GAAK,OAAAA,EAAEykG,cAG5B,YAAAo0O,iBAAR,WACE//U,KAAKG,KAAOH,KAAKvC,QAAQsJ,QAAQ,gBAAiB/G,KAAKsd,WAAWmiU,aAAazgU,aAtCjF,GADC,W,uDAID,GADC,W,6DAID,GADC,W,gBACkBmhU,I,iCAVRK,EAA4B,GAXxC,aAAW,wPASX,wBAAc,gCACd,iBAAO,iB,uBAiBgC,mB,OAAA,IAAb,kCAAa,YAhB3BA,GAAb,I,koBCpYA,aAmBE,WACU5lR,GAAA,KAAAA,QAXH,KAAA0wE,YAAsB,EAGtB,KAAA8G,UAAoB,QAWzBpyI,KAAKC,OAAS,aAAWC,UAAU,6BAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,QAgE5B,OA7DS,YAAA1R,KAAP,WACE,GAAIa,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,eAAiB11J,KAAK6Q,MAAM6kJ,cAActvG,QAGrE,OAFcpmD,KAAK6Q,MAAM6kJ,cAActvG,QAAQ96B,MAAM,KAAK,IAGxD,IAAK,KAKCtrB,KAAKsrI,WACPtrI,KAAKoyI,UAAY,cAGjBpyI,KAAKoyI,UAAY,QAEnB,MACF,QACMpyI,KAAKsrI,WACPtrI,KAAKoyI,UAAY,cAGjBpyI,KAAKoyI,UAAY,UAc3B,sBAAI,qBAAM,C,IAAV,WAsBE,MANQ,CACN9G,WAAYtrI,KAAKsrI,WACjB8G,UAAW,GAAGpyI,KAAKoyI,Y,gCA5EvB,GAFC,mBAAS,CAAEylK,mBAAoB,cAAY3mB,SAC3C,a,gBACiB,mB,EAAA,oBAAJ73Q,YAAI,W,4BAGlB,GADC,W,2DAID,GADC,W,yDAXUsoU,EAAyB,GADrC,uB,uBAqB8B,mB,OAAA,IAAZ,UAAY,YApBlBA,GAAb,I,6ECRAjmV,EAAOD,QAAU,2G,upBCOjB,aAEE,WACU4e,GAAA,KAAAA,KAERA,EAAGtF,UAAU,+BAAgC/U,KAAKslD,OAClDjrC,EAAGtF,UAAU,6BAA8B/U,KAAKw6D,M,MAcpD,OARE,YAAAlV,MAAA,WACE,IAAUA,QACV,IAAUw+B,OAGZ,YAAAtpB,KAAA,WACE,IAAUA,QAlBDonR,EAAkB,GAF9B,mBACA,a,uBAI8B,mB,OAAA,IAAf,sCAAe,YAHlBA,GAAb,I,gmBCAA,aAyBE,WAAoB76Q,GAAA,KAAAA,UApBb,KAAArpE,KAAe,cAOf,KAAAomB,IAAc,EAGd,KAAA0C,IAAc,GAGd,KAAAq7T,SAAmB,EAGnB,KAAAC,SAAmB,GAMxB9hV,KAAKC,OAAS,aAAWC,UAAU,c,MAsDvC,OAlDS,YAAAopD,SAAP,aAaO,YAAAuqP,aAAP,WAEE,IAAIkuC,EAAQ5mT,WAAWn7B,KAAKwmB,IAAIxH,YAC5BgjU,EAAQ7mT,WAAWn7B,KAAK8jB,IAAI9E,YAC5Bve,EAAM06B,WAAWn7B,KAAKpB,MAAMogB,YAE5BijU,EAAa9mT,WAAWn7B,KAAK6hV,SAAS7iU,YACtCkjU,EAAa/mT,WAAWn7B,KAAK8hV,SAAS9iU,YAE1C,KAAIve,EAAMwhV,GAKNxhV,EAAMyhV,GAAV,CAMA,IAAIrgR,EAAK,EAAE7hE,KAAKmiV,cAEZp0M,EAAU,EAAE/tI,KAAK+mE,SACjBq7Q,EAAUvgR,EAAGvtB,QAAU,GACvB+tS,EAAQt0M,EAAQ/nI,KAAK,UACrBs8U,GAAgB7hV,EAAMuhV,IAAUD,EAAQC,GAASI,EAGjDC,EAAMznV,QACRynV,EAAMr8U,KAAK,gBAAgBwiD,KAAKxoD,KAAKpB,OACrCyjV,EAAM1hR,IAAI,OAAQ2hR,EAAe,OAEjCzgR,EAAGna,MAAM,mCAAqC46R,EAAe,iCAAmCtiV,KAAKpB,MAAQ,mBAvEjH,GADC,W,oDAKD,GAFC,mBAAS,CAAEi5S,mBAAoB,cAAY3mB,SAC3C,a,qDAID,GADC,W,mDAID,GADC,W,mDAID,GADC,W,wDAID,GADC,W,wDApBUqxD,EAAU,GAHtB,wBAAc,kBAEd,iBAAO/6Q,S,uBA0B8B,mB,EAAA,oBAAPA,kBAAO,YAzBzB+6Q,GAAb,I,0ECPA7mV,EAAOD,QAAU,iQ,yECAjBC,EAAOD,QAAU,oO,2FCAjBC,EAAOD,QAAU,wQ,+DCAjBC,EAAOD,QAAU,qN,sDCAjB,wEAKO,SAASmU,EAAUpN,GACxBA,EAAO4xE,gBAAgB,CACrB,oDACA,wCACA,uCACA,kDACA,uCACA,kCACA,4CACA,8DACA,kCACA,wCACA,2CAKA,4BACA,iCACA,sCACA,qCACA,0B,goBCnBJ,aAIE,WACUxZ,GAAA,KAAAA,QAER56D,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,MAuB5B,OApBE,YAAAg7Q,OAAA,SAAOjtR,GAEL,GAAIoB,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,eAAiB11J,KAAK6Q,MAAM6kJ,cAActvG,QAAS,CAC9E,IAAIo8R,EAAiBxiV,KAAK6Q,MAAM6kJ,cAActvG,QAAQ96B,MAAM,KAAK,GAMjE,OAFA,SAAek3T,GAER,EAAQ5jV,GAAOghB,OAAO,aAG7B,OAAO,EAAQhhB,GAAOghB,OAAO,cAIjC,YAAAksQ,SAAA,SAASltR,GAEP,OADgB,EAAQA,GACPA,SA5BR6jV,EAA4B,GADxC,uB,uBAM8B,mB,OAAA,IAAZ,UAAY,YALlBA,GAAb,I,8mBCDA,aAIE,WACU7nR,GAAA,KAAAA,QAER56D,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,MAiB5B,OAdE,YAAAg7Q,OAAA,SAAOjtR,GACL,OAAIA,EAEEoB,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cACpB,EAAO92J,GAAOghB,OAAO5f,KAAK6Q,MAAM6kJ,cAAcp/H,YAG9C,EAAO13B,GAAOghB,OAAO,YAIvB,IArBA8iU,EAAwB,GADpC,uB,uBAM8B,mB,OAAA,IAAZ,UAAY,YALlBA,GAAb,I,wnBCAA,aAIE,WACU9nR,GAAA,KAAAA,QAER56D,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,MAsB5B,OAnBE,YAAAg7Q,OAAA,SAAOjtR,GACL,OAAIA,EAEEoB,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,eAAiB11J,KAAK6Q,MAAM6kJ,cAAcitL,SAC9D,EAAO/jV,GAAOy5E,GAAGr4E,KAAK6Q,MAAM6kJ,cAAcitL,UAAU/iU,OAAO5f,KAAK6Q,MAAM6kJ,cAAcktL,gBAEpF5iV,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cACzB,EAAO92J,GAAOghB,OAAO5f,KAAK6Q,MAAM6kJ,cAAcktL,gBAG9C,EAAOhkV,GAAOghB,OAAO,sBAKvB,IAzBAijU,EAA4B,GADxC,uB,uBAM8B,mB,OAAA,IAAZ,UAAY,YALlBA,GAAb,I,wECNA,qRAIA,OAHE,YAAAh3D,OAAA,SAAOvkQ,EAAOijE,EAAcu4P,GAC1B,OAAOx7T,EAAMziB,QAAO,SAAAnK,GAAK,OAAAA,EAAE6vF,IAAiBu4P,MAEhD,EAJA,GAMA,2BASA,OARE,YAAAj3D,OAAA,SAAOvkQ,EAAahoB,EAAkBu7K,GAEpC,OAAIvzJ,cAAsD1pB,IAAb0B,QAAkC1B,IAARi9K,GACrEp7K,QAAQk0C,MAAM,SACPrsB,GAEFA,EAAMziB,QAAO,SAACrE,GAAS,OAAAA,EAAKlB,GAAUic,cAAclK,QAAQwpK,EAAIt/J,gBAAkB,MAE7F,EATA,GAWA,2BAQA,OAPE,YAAAswQ,OAAA,SAAOvkQ,EAAahoB,EAAkBu7K,GAEpC,OAAIvzJ,cAAsD1pB,IAAb0B,QAAkC1B,IAARi9K,GAGhEvzJ,EAAMziB,QAAO,SAACrE,GAAS,OAAAA,EAAKlB,GAAUic,cAAclK,QAAQwpK,EAAIt/J,gBAAkB,KAAG3gB,OAAS,GAEzG,EARA,GAUA,2BAkBA,OAjBE,YAAAixR,OAAA,SAAOvkQ,EAAO1oB,EAAOmkV,EAAMC,GACzB,YADyB,IAAAA,OAAA,GACpBpkV,EAEU0oB,EAAMziB,QACnB,SAAUo+U,GACR,IAAK,IAAIl9N,KAAOk9N,EACd,GAAIA,EAAQloV,eAAegrH,KACC,GAAtBg9N,EAAK1xU,QAAQ00G,KACmB,GADLk9N,EAAQl9N,GAAKxqG,cACzClK,QAAQzS,EAAM2c,eACf,OAAO,EAIb,OAAO,KAZUynU,EAAc17T,EAAQ,IAgB/C,EAlBA,I,gDC3BU5rB,EAAOD,QAAU,EAAQ,IAAR,EAA4C,IAK/DP,KAAK,CAACQ,EAAOhB,EAAI,2/pBAA8/pB,M,iCCLvhqB,+D,2BCAAgB,EAAOD,QAAU,4tiBAAw6iB,EAAQ,KAA+B,4jBAA0kB,EAAQ,KAA+B,szSAAk7S,EAAQ,KAA+B,wxFAA41F,EAAQ,KAA+B,kuB,64DCe768B,aAOE,WACUm/D,EACA90D,EACAsU,EACAkqD,EACAw+E,EACAnjJ,GALA,KAAAi7D,QACA,KAAA90D,SACA,KAAAsU,iBACA,KAAAkqD,kBACA,KAAAw+E,eACA,KAAAnjJ,SAERK,KAAKC,OAAS,aAAWC,UAAU,QAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,gBAS5B,OANgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACpEgE,KAAKC,OAAO0zC,MAAM,YACfvzC,GACDJ,KAAKL,OAAO8H,QAAQiqM,UAAU,GAAIr1M,SAASiL,MAAO,K,WAvB3C67U,EAAI,GADhB,uB,uBAS8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACgB,mBADhB,OACgB,IAAd,UAAc,SACE,mBADF,OACE,IAAf,sCAAe,SACN,mBADM,OACN,IAAZ,UAAY,SACZ,mBADY,EACZ,oBAANvyI,gBAAM,YAbbuyI,GAAb,I,6CCfAznV,EAAOD,QAAU,wqB,y9CC8CV,SAAemU,EAAU82J,G,qGAyGvB,OAhGPA,EAAQxoG,IAAIoiM,wBAMZ55F,EAAQxoG,IAAIg1P,QAAQ,0BACpBxsJ,EAAQxoG,IAAIg1P,QAAQ,yBAGpBxsJ,EAAQxoG,IAAIi1P,OAAO,wBAOnBzsJ,EAAQxoG,IAAIi1P,OAAO,gBAAqC,SAAOtrQ,GAAc,qC,wDAI3E,OAFIrtC,EAAa,IAAOC,aAExB,GAAM,YAAWisJ,EAAS7+G,EAAUrtC,GAAY,I,OAEhD,OAFA,SAEO,CAAP,EAAOqtC,aAIT6+G,EAAQxoG,IAAIi1P,OAAO,2BAAgD,WACjE,IAAI34S,EAAa,IAAOC,aACpBysJ,EAAU,IAAO5jG,cACrB,OAAO,YAAa9oD,EAAY0sJ,MAIlCR,EAAQxoG,IAAIi1P,OAAO,sBAA2C,SAAC7uP,EAAkCgO,GAAmC,OAAO,QAK3Io0F,EAAQxoG,IAAIi1P,OAAO,sBAGnBzsJ,EAAQxoG,IAAIi1P,OAAO,kBAAuC,SAAA3wT,GACxDA,EAAO6xE,cACP7xE,EAAO4F,SAASq5C,MAAO,EACvBj/C,EAAO4F,SAASu5C,sBAAuB,EACvCn/C,EAAO4F,SAASs5C,eAAiB,EACjCl/C,EAAO4F,SAASsxJ,UAAW,KAI7BgN,EAAQxoG,IAAIi1P,OAAO,6BAMnBzsJ,EAAQxoG,IAAIi1P,OAAO,qBAGnBzsJ,EAAQxoG,IAAIi1P,OAAO,uBAA6C,KAMhEzsJ,EAAQxoG,IAAIi1P,OAAO,kCAGnBzsJ,EAAQxoG,IAAIi1P,OAAO,+BA2BZ,GAAMzsJ,EAAQphH,QAAQniD,MAAK,gD,kDACzB,SAAMujK,EAAQ85F,QAAQ,Q,OAA7B,MAAO,CAAP,EAAO,qB,OADT,MAAO,CAAP,EAAO,iBAnIT,SAAgB,CAAEjxK,SAAU,CAAEC,kBAAkB,O,k+DCLhD,aAQE,WACU50B,EACA76D,EACAqsN,GAFA,KAAAxxJ,QACA,KAAA76D,OACA,KAAAqsN,uBAERpsN,KAAKC,OAAS,aAAWC,UAAU,oBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,UAsZ5B,OAnZe,YAAAoF,gBAAb,SAA6BzT,EAA6BsD,G,gFAEpDs9U,EAAkBpjV,KAAKqjV,qBAI3BrjV,KAAK8F,OAASA,EAEdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,CAAC,GAAI,cACZpI,SAAU,oBACVoD,KAAM,aACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,+BACpB+H,SAAU,CACRk7U,KAAM,qBACNC,QAAQ,IAIZ,CACE7gV,MAAO,SACPpI,SAAU,yCACVoD,KAAM,0BACN4J,MAAOtH,KAAKD,KAAKM,GAAG,iCACpBkQ,IACEvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBioM,YAC1D42E,EAAgBI,mBACrBp7U,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsB8/C,YAE/B82E,KAAM,mCAIV,CACE5gV,MAAO,WACPpI,SAAU,6CACVoD,KAAM,4BACN4J,MAAOtH,KAAKD,KAAKM,GAAG,mCACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBkpM,cAC7D21E,EAAgBK,qBACrBr7U,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsB+gD,cAE/B61E,KAAM,gBAIV,CACE5gV,MAAO,QACPpI,SAAU,uCACVoD,KAAM,yBACN4J,MAAOtH,KAAKD,KAAKM,GAAG,gCACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB0oM,WAC7Dm2E,EAAgBM,kBACrBt7U,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBugD,WAE/Bq2E,KAAM,4BAIV,CACE5gV,MAAO,mBACPpI,SAAU,uEACVoD,KAAM,yCACN4J,MAAOtH,KAAKD,KAAKM,GAAG,2CACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB6nM,mBAClEhkQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsB0/C,oBAE/Bk3E,KAAM,sBAIV,CACE5gV,MAAO,UACPpI,SAAU,2CACVoD,KAAM,2BACN4J,MAAOtH,KAAKD,KAAKM,GAAG,kCACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB2sM,aAC7DkyE,EAAgBO,oBACrBv7U,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBwkD,aAE/BoyE,KAAM,2BAIV,CACE5gV,MAAO,kBACPpI,SAAU,uDACVoD,KAAM,+BACN4J,MAAOtH,KAAKD,KAAKM,GAAG,0CACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBmrM,2BAC7D1vQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB8qM,qCAC7DrvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB8rM,gCAC7DrwQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB4rM,8BAC7DnwQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBgsM,6CAC7DvwQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBksM,6CAC7DzwQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBinM,+BAClEpjQ,SAAU,CACRk7U,KAAM,sBAGV,CACE5gV,MAAO,WACPpI,SAAU,6CACVoD,KAAM,4BACN4J,MAAOtH,KAAKD,KAAKM,GAAG,mCACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB4mM,cAC7Di4E,EAAgBQ,0BACrBx7U,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBy+C,cAE/Bm4E,KAAM,wBAIV,CACE5gV,MAAO,wBACPpI,SAAU,uEACVoD,KAAM,yCACN4J,MAAOtH,KAAKD,KAAKM,GAAG,gDACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB+sM,mBAC7D8xE,EAAgBM,kBACrBt7U,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsB4kD,mBAE/BgyE,KAAM,cAOV,CACE5gV,MAAO,YACPpI,SAAU,2CACVoD,KAAM,yBACN4J,MAAOtH,KAAKD,KAAKM,GAAG,oCACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBklM,WAClErhQ,SAAU,CACRk7U,KAAM,2BAGV,CACE5gV,MAAO,QACPpI,SAAU,qEACVoD,KAAM,QACN4J,MAAOtH,KAAKD,KAAKM,GAAG,gCACpBkQ,KAAK,EACLnI,SAAU,CACRk7U,KAAM,sBAKV,CACE5gV,MAAO,cACPpI,SAAU,mDACVoD,KAAM,+BACN4J,MAAOtH,KAAKD,KAAKM,GAAG,sCACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBmmM,eAClEtiQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBg+C,gBAE/B44E,KAAM,mCAIV,CACE5gV,MAAO,aACPpI,SAAU,iDACVoD,KAAM,8BACN4J,MAAOtH,KAAKD,KAAKM,GAAG,qCACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBumM,cAClE1iQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBo+C,eAE/Bw4E,KAAM,4BAIV,CACE5gV,MAAO,YACPpI,SAAU,mEACVoD,KAAM,4CACN4J,MAAOtH,KAAKD,KAAKM,GAAG,oDACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBmnM,kBAClEtjQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBg/C,mBAE/B43E,KAAM,gCAIV,CACE5gV,MAAO,QACPpI,SAAU,iDACVoD,KAAM,mCACN4J,MAAOtH,KAAKD,KAAKM,GAAG,gCACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB8lM,UAClEjiQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsB29C,WAE/Bi5E,KAAM,yBAIV,CACE5gV,MAAO,sBACPpI,SAAU,uDACVoD,KAAM,sCACN4J,MAAOtH,KAAKD,KAAKM,GAAG,6CACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBqlM,eAClExhQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBk9C,gBAE/B05E,KAAM,iCAIV,CACE5gV,MAAO,gBACPpI,SAAU,sDACVoD,KAAM,gCACN4J,MAAOtH,KAAKD,KAAKM,GAAG,wCACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBojM,iBAClEv/P,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBi7C,kBAE/B27E,KAAM,wBAIJ,CACJ5gV,MAAO,wBACPpI,SAAU,sEACVoD,KAAM,wCACN4J,MAAOtH,KAAKD,KAAKM,GAAG,gDACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBojM,iBAClEv/P,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBi7C,kBAE/B27E,KAAM,wBAIV,CACE5gV,MAAO,kBACPpI,SAAU,uEACVoD,KAAM,+CACN4J,MAAOtH,KAAKD,KAAKM,GAAG,0CACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBojM,iBAClEv/P,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBi7C,kBAE/B27E,KAAM,8BAIV,CACE5gV,MAAO,SACPpI,SAAU,qDACVoD,KAAM,sCACN4J,MAAOtH,KAAKD,KAAKM,GAAG,iCACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB6jM,WAClEhgQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsB07C,YAE/Bk7E,KAAM,mBAIV,CACE5gV,MAAO,aACPpI,SAAU,iDACVoD,KAAM,8BACN4J,MAAOtH,KAAKD,KAAKM,GAAG,qCACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBskM,eAClEzgQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBm8C,gBAE/By6E,KAAM,8BAGV,CACE5gV,MAAO,qBACPpI,SAAU,kEACVoD,KAAM,uCACN4J,MAAOtH,KAAKD,KAAKM,GAAG,0DACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBskM,eAClEzgQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBm8C,gBAE/By6E,KAAM,8BAIV,CACE5gV,MAAO,gCACPpI,SAAU,oFACVoD,KAAM,8CACN4J,MAAOtH,KAAKD,KAAKM,GAAG,qDACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBijM,6BAClEp/P,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsB86C,8BAE/B87E,KAAM,2BAIV,CACE5gV,MAAO,yBACPpI,SAAU,uEACVoD,KAAM,wCACN4J,MAAOtH,KAAKD,KAAKM,GAAG,8CACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBkjM,+BAClEr/P,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsB+6C,gCAE/B67E,KAAM,mBAIV,CACE5gV,MAAO,YACPpI,SAAU,+CACVoD,KAAM,6BACN4J,MAAOtH,KAAKD,KAAKM,GAAG,oCACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBoiM,cAClEv+P,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBi6C,eAE/B28E,KAAM,yBAIV,CACE5gV,MAAO,SACPpI,SAAU,4BACVoD,KAAM,SACN4J,MAAOtH,KAAKD,KAAKM,GAAG,iCACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBoiM,cAClEv+P,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBi6C,eAE/B28E,KAAM,2B,WAON,YAAAD,mBAAR,WAEE,IAAIj7U,EAAW,IAAI,IAmBnB,OAjBAA,EAASo7U,oBAAqB,EAC9Bp7U,EAASs7U,mBAAoB,EAC7Bt7U,EAASq7U,sBAAuB,EAChCr7U,EAASu7U,qBAAsB,EAC/Bv7U,EAASw7U,2BAA4B,EACrCx7U,EAASy7U,yBAA0B,EAE/B7jV,KAAK6Q,OACJ7Q,KAAK6Q,MAAM6kJ,eACX11J,KAAK6Q,MAAM6kJ,cAAclsH,QAAU,IAAKs6S,QACxC9jV,KAAK6Q,MAAM0kJ,gBACXv1J,KAAK6Q,MAAM0kJ,eAAe6tL,kBAE7Bh7U,EAAWpI,KAAK6Q,MAAM0kJ,eAAe6tL,iBAIhCh7U,GAlaE27U,EAAgB,GAD5B,uB,uBAU8B,mB,OAAA,IAAZ,UAAY,SACT,mBADS,OACT,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAXzCA,GAAb,I,oECfAroV,EAAOD,QAAU,wE,ijECiBjB,aAgBE,WACUm/D,EACAopR,EACAC,EACAC,EACAp+U,EACAg9I,GANV,WACU,KAAAloF,QACA,KAAAopR,mBACA,KAAAC,aACA,KAAAC,gBACA,KAAAp+U,SACA,KAAAg9I,eAfF,KAAAqhM,WAA0B,GAC1B,KAAA7mU,WAAoC,IAAI,wBAExC,KAAAld,OAAc,GAId,KAAAgkV,UAAoB,EAsDpB,KAAAp3F,QAAU,6BAAUhxP,GAAO,W,2BACjC,MAAO,CAAP,EAAOgE,KAAKgkV,iBAAiBlwU,KAAK9T,KAAKsd,oBA9CvCtd,KAAKC,OAAS,aAAWC,UAAU,iBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,gBA8E5B,OA3Ee,YAAA+H,SAAb,SAAsBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACnEgE,KAAKC,OAAO0zC,MAAM,sBAAuBvzC,EAAO6d,WAChDje,KAAKI,OAASA,EAEdJ,KAAKokV,SAAWlB,EAAY78U,SAASP,OAAO5D,QAAQmP,QAAQ,oBAAsB,E,WAGvE,YAAAlS,KAAb,W,qBAAqBnD,GAAO,W,oEACrBslB,MAAMthB,KAAKI,OAAOikV,kBACrBrkV,KAAKie,WAAaje,KAAKI,OAAOikV,gBAE5BrkV,KAAKI,OAAOkkV,iBAAmD,WAAhCtkV,KAAKI,OAAOkkV,kBAC7CtkV,KAAKie,UAAY,MAEdqD,MAAMthB,KAAKI,OAAOkkV,mBACrBtkV,KAAKie,WAAaje,KAAKI,OAAOkkV,iBAE5BtkV,KAAKie,WACPje,KAAKgkV,iBAAiB5mU,OAAO87B,iBAAmBl5C,KAAKie,UACrDje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aACpD,GAAMje,KAAKukV,aAHhB,M,OAGF,MAAO,CAAP,EAAO,U,yBAIE,YAAAA,SAAb,W,qBAAyBvoV,GAAO,W,6DAEvB,OADPgE,KAAKC,OAAOE,KAAK,YACV,GAAMH,KAAKgkV,iBAAiBlwU,KAAK9T,KAAKsd,YAC1Cna,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAOK,YAAAtzT,OAAd,SAAqBP,EAAY7e,G,qBAAe1B,GAAO,W,6DAC9C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IACNg7J,YAAW,SAACj9I,GACRA,EAASw9B,cACZ,EAAK+qS,iBAAiBlnU,OAAOP,GAC1BpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQkL,EAAGyC,YAChG,EAAK1B,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GAErD,EAAK3hM,aAAaxiJ,QAAQ,wDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,U,OAbhC,MAAO,CAAP,EAAO,kBAmBK,YAAA4nV,UAAd,SAAwBnoU,EAAY7e,G,qBAAe1B,GAAO,W,0DAC7C,EAAE,QAAQwsD,O,iBAEJ,O,sBAAA,GAAMxoD,KAAKgkV,iBAAiBpsQ,gBAAgBr7D,I,OAC3D,OADIo4M,EAAW,SACR,CAAP,EAAO30N,KAAKikV,WAAW17R,MAAMosK,EAASgwH,cAAejnV,I,yBAGrDsC,KAAK8iJ,aAAahmJ,MAAM,G,+BAhG5B,GADC,W,yDAFU8nV,EAAa,GADzB,uB,uBAkB8B,mB,OAAA,IAAZ,UAAY,SACe,mBADf,OACe,IAAhB,UAAgB,SACZ,mBADY,OACZ,IAAV,UAAU,SACM,mBADN,OACM,IAAb,kCAAa,SACd,mBADc,OACd,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,YAtBzBA,GAAb,I,ipBCTA,aAIE,WACU7kV,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,wB,MAuBvC,OApBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,mBACVoD,KAAM,cAER,CACEgF,MAAO,yBACPpI,SAAU,mCACVoD,KAAM,yBAER,CACEgF,MAAO,8BACPpI,SAAU,iCACVoD,KAAM,2BAzBDmnV,EAAoB,GADhC,a,uBAMqB,mB,OAAA,IAAJ,gBAAI,YALTA,GAAb,I,6ECRAnpV,EAAOD,QAAU,8M,kECAjBC,EAAOD,QAAU,8mH,05DCKjB,aAME,WACU6lD,GAAA,KAAAA,mBAHF,KAAAlhD,OAAc,GAIpBJ,KAAKC,OAAS,aAAWC,UAAU,8B,MAQvC,OALe,YAAA0Y,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,kCACzCgE,KAAKC,OAAO0zC,MAAM,WAAYvzC,GAC9BJ,KAAKI,OAASA,E,WAbL0kV,EAA0B,GADtC,uB,uBAQ6C,mB,OAAA,IAAhB,wCAAgB,YAPjCA,GAAb,K,kGCLAppV,EAAOD,QAAU,2mB,sjECUjB,aAOE,WACUyoV,EACAa,EACAjiM,GAHV,WACU,KAAAohM,gBACA,KAAAa,yBACA,KAAAjiM,eANF,KAAAxlI,WAAoC,IAAI,wBAgDxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,2BACjC,MAAO,CAAP,EAAOgE,KAAK+kV,uBAAuB38R,cAAcpoD,KAAKsd,oBAzCtDtd,KAAKC,OAAS,aAAWC,UAAU,uB,UA2CvC,OAxCe,YAAAopD,SAAb,W,qBAAyBttD,GAAO,W,0DAC9BgE,KAAKC,OAAO0zC,MAAM,Y,iBAEoB,O,sBAAA,GAAM3zC,KAAK+kV,uBAAuB38R,cAAcpoD,KAAKsd,a,cAArF7B,EAAgC,SACpCzb,KAAKsd,WAAWoiU,UAAYjkU,EAASphB,KACrC2F,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,a,+BAGxCz/U,KAAK8iJ,aAAahmJ,MAAM,G,+BAKf,YAAA4T,KAAb,SAAkBlQ,G,qBAAkBxE,GAAO,W,+DASlC,OARPgE,KAAKC,OAAOE,KAAK,QAEbC,EAAc,CAChBikV,eAAgB7jV,EAAKke,QAAQgiJ,SAC7B4jL,gBAAiB9jV,EAAKyd,UACtBumI,YAAahkJ,EAAK+b,IAGb,GAAMvc,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOpd,IACNs4J,YAAW,SAAOj9I,GAA2B,qC,2BAC9C,OAAKA,EAASw9B,a,IACL,CAAP,EAAO,gB,OALX,MAAO,CAAP,EAAO,kBAWK,YAAAsvR,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAjDE4U,EAAmB,GAD/B,uB,uBASuC,mB,OAAA,IAAb,kCAAa,SACkB,mBADlB,OACkB,IAAtB,UAAsB,SACpB,mBADoB,OACpB,IAAZ,UAAY,YAVzBA,GAAb,I,wFCVAtpV,EAAOD,QAAU,ikC,6nBCMjB,aAIE,WAAoB6lD,EACVvhD,GADU,KAAAuhD,mBACV,KAAAvhD,OACRC,KAAKilV,gBAAkB,K,QAM3B,OAHS,YAAArsU,SAAP,SAAgBqsU,GACdjlV,KAAKilV,gBAAkBjlV,KAAKD,KAAKM,GAAG4kV,IAV3BC,EAAgC,GAD5C,uB,uBAKuD,mB,OAAA,IAAhB,wCAAgB,SAClC,mBADkC,OAClC,IAAJ,gBAAI,YALTA,GAAb,I,qFCNAxpV,EAAOD,QAAU,stB,qnECiBjB,aAaE,WACUuoV,EACAmB,EACAjB,EACAphM,GAJV,WACU,KAAAkhM,mBACA,KAAAmB,kBACA,KAAAjB,gBACA,KAAAphM,eAVF,KAAAxlI,WAAoC,IAAI,wBAGxC,KAAAqjG,SAAmB,EACnB,KAAAvgH,OAAc,GAiEd,KAAA4sP,QAAU,WAEhB,OAAO,EAAKm4F,gBAAgBrxU,KAAK,EAAK0wI,YAAa,EAAKlnI,aA5DxDtd,KAAKC,OAAS,aAAWC,UAAU,gB,YA+HvC,OA5He,YAAA0Y,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,kCACzCgE,KAAKI,OAASA,E,WAGH,YAAAjB,KAAb,W,qBAAqBnD,GAAO,W,6DACrBslB,MAAMthB,KAAKI,OAAOokJ,aAAnB,Y,GACFxkJ,KAAKwkJ,aAAexkJ,KAAKI,OAAOokJ,YAE3BljI,MAAMthB,KAAKI,OAAOikV,kBACrBrkV,KAAKie,WAAaje,KAAKI,OAAOikV,gBAG5BrkV,KAAKI,OAAOkkV,iBAAmD,WAAhCtkV,KAAKI,OAAOkkV,gBAC7CtkV,KAAKie,UAAY,KAETqD,MAAMthB,KAAKI,OAAOkkV,mBAC1BtkV,KAAKie,WAAaje,KAAKI,OAAOkkV,kBAG5BtkV,KAAKwkJ,cAAexkJ,KAAKie,UAAzB,YACFje,KAAKgkV,iBAAiB5mU,OAAO87B,iBAAmBl5C,KAAKI,OAAO6d,UAC5Dje,KAAKmlV,gBAAgB/nU,OAAO87B,iBAAmBl5C,KAAKI,OAAO6d,U,iBAGxC,O,sBAAjB,EAAAje,KAAiB,GAAMA,KAAKgkV,iBAAiB1nU,QAAQtc,KAAKwkJ,c,OAM1D,OANA,EAAKqwD,UAAY,SAEb70M,KAAK60M,UAAUuwI,kBAAoB,IAAgBC,gBACrDrlV,KAAK2gH,SAAU,GAGV,CAAP,EAAO3gH,KAAKukV,Y,yBAGZvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BAMnB,YAAAynV,SAAb,W,qBAAyBvoV,GAAO,W,6DAEvB,OADPgE,KAAKC,OAAOE,KAAK,YACV,GAAMH,KAAKmlV,gBAAgBrxU,KAAK9T,KAAKwkJ,YAAaxkJ,KAAKsd,YAC3Dna,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAQK,YAAAnxU,OAAd,W,qBAAwBjD,GAAO,W,+DAGtB,OAFHwE,EAAiB,IAAI,KACpBgkJ,YAAcxkJ,KAAKwkJ,YACjB,GAAMxkJ,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,OACFz4C,EAAK8kV,eAAiB,IAAeC,QAC9B,GAAMvlV,KAAKmlV,gBAAgBlmV,OAAOuB,GACtC2C,MAAK,SAAOqiV,GAAkB,qC,kCAC7BhlV,EAAK+b,GAAKipU,EAASjpU,GACnBvc,KAAKsd,WAAWoiU,UAAU57U,QAAQtD,GAClCR,KAAK8iJ,aAAaxiJ,QAAQ,4B,aAG3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,Q,OAR5B,MAAO,CAAP,EAAO,U,mCANX,MAAO,CAAP,EAAO,kBAoBK,YAAAuxO,KAAd,SAAmB7tO,G,qBAAiBxE,GAAO,W,6DAClC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKmlV,gBAAgBzoU,OAAOlc,GACtC2C,MAAK,gD,kCACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6B,aAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,U,OAQPkD,KAAKukV,W,6CAbT,MAAO,CAAP,EAAO,kBAkBK,YAAAznU,OAAd,SAAqBP,EAAY7e,G,qBAAe1B,GAAO,W,6DAC9C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IACNg7J,YAAW,SAACj9I,GACRA,EAASw9B,cACZ,EAAKksS,gBAAgBroU,OAAOP,GACzBpZ,MAAK,WAEJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQkL,EAAGyC,YAChG,EAAK1B,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GAErD,EAAK3hM,aAAaxiJ,QAAQ,iCAG3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,U,OAfhC,MAAO,CAAP,EAAO,kBA5HE2oV,EAAY,GADxB,uB,uBAe6C,mB,OAAA,IAAhB,UAAgB,SACF,mBADE,OACF,IAAf,UAAe,SACJ,mBADI,OACJ,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YAjBzBA,GAAb,I,0FCjBA/pV,EAAOD,QAAU,2+H,67DCSjB,aAME,WACU6lD,EACAokS,GADA,KAAApkS,mBACA,KAAAokS,8BANF,KAAAloU,MAAkB,IAAI,IAQ5Bxd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,iB,QAiCvC,OA9Bc,YAAA0Y,SAAb,SAAsB4E,G,qBAAkBxhB,GAAO,W,kCAC5CgE,KAAKC,OAAO0zC,MAAM,YAClB3zC,KAAKwd,MAAQA,EACbxd,KAAK2lV,2B,WAGP,YAAAA,yBAAA,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,QAAQpyK,YAAY,6CAA6CwkD,WACxE4tH,OAAO,eAAepyK,YAAY,oDAAoDwkD,WACtF4tH,OAAO,QAAQpyK,YAAY,6CAA6CwkD,WACxE4tH,OAAO,SAASpyK,YAAY,8CAA8CwkD,WAAWrvL,QAAQ,6DAC7Fi9S,OAAO,UAAUpyK,YAAY,+CAA+CwkD,WAC5En+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,W,qBAAuBp/G,GAAO,W,sCAC5B,MAAO,CAAP,EAAOgE,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKF,YAAAA,KAAb,W,qBAAqB1gE,GAAO,W,kDACnB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBA3CEggR,EAAa,GADzB,uB,uBAQ6C,mB,OAAA,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,YARvDA,GAAb,K,2FCTAlqV,EAAOD,QAAU,+8E,qgECmBjB,aAkBE,WACUuoV,EACA6B,EACAC,EACAC,EACAjjM,EACA4iM,EACA5/U,GANA,KAAAk+U,mBACA,KAAA6B,8BACA,KAAAC,yBACA,KAAAC,yBACA,KAAAjjM,eACA,KAAA4iM,8BACA,KAAA5/U,SAjBF,KAAAkgV,kBAAuC,GACvC,KAAAC,iBAAsC,GAEtC,KAAAzoU,MAA8B,IAAI,IAGlC,KAAAmjG,SAAmB,EAEnB,KAAAvgH,OAAc,GAYpBJ,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,4B,kBA+HvC,OA5He,YAAA0Y,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,kCACzCgE,KAAKC,OAAOE,KAAK,YACjBH,KAAKI,OAASA,E,WAGH,YAAAjB,KAAb,W,qBAAqBnD,GAAO,W,mEACrBslB,MAAMthB,KAAKI,OAAOokJ,cAAiBljI,MAAMthB,KAAKI,OAAOid,aAAtD,Y,GACFrd,KAAKqd,YAAcrd,KAAKI,OAAOid,YAC/Brd,KAAKwkJ,YAAcxkJ,KAAKI,OAAOokJ,YAE1BljI,MAAMthB,KAAKI,OAAOikV,kBACrBrkV,KAAKie,WAAaje,KAAKI,OAAOikV,gBAG5BrkV,KAAKI,OAAOkkV,iBAAmD,WAAhCtkV,KAAKI,OAAOkkV,gBAC7CtkV,KAAKie,UAAY,KAETqD,MAAMthB,KAAKI,OAAOkkV,mBAC1BtkV,KAAKie,WAAaje,KAAKI,OAAOkkV,kBAG5BtkV,KAAKwkJ,cAAexkJ,KAAKie,UAAzB,YACFje,KAAKgkV,iBAAiB5mU,OAAO87B,iBAAmBl5C,KAAKie,U,iBAI1B,O,sBAAzB,EAAAje,KAAyB,GAAMA,KAAK8lV,uBAAuBvoU,OAAOvd,KAAKqd,c,OAEtD,OAFjB,EAAK2oU,kBAAoB,SAEzB,EAAAhmV,KAAiB,GAAMA,KAAKgkV,iBAAiB1nU,SAAStc,KAAKI,OAAOokJ,c,OAOrD,OAPb,EAAKqwD,UAAY,SAEb70M,KAAK60M,UAAUuwI,kBAAoB,IAAgBC,gBACrDrlV,KAAK2gH,SAAU,GAGjB3gH,KAAK6lV,4BAA4BzoU,OAAO87B,iBAAmBl5C,KAAKie,UAChE,EAAAje,KAAa,GAAMA,KAAK6lV,4BAA4BvpU,SAAStc,KAAKI,OAAOokJ,c,cAAzE,EAAKhnI,MAAQ,SAES,IAAlBxd,KAAKwd,MAAMjB,GAAX,OACFvc,KAAKwd,MAAMgnI,YAAcxkJ,KAAKwkJ,YAC9BxkJ,KAAKwd,MAAMq3L,UAAY70M,KAAK60M,U,cAEJ,OAAxB,EAAA70M,KAAwB,GAAMA,KAAK+lV,uBAAuBxoU,OAAOvd,KAAKwd,MAAM0nI,oB,OAA5E,EAAK+gM,iBAAmB,S,wBAG1BjmV,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAMxB,YAAA6oV,yBAAR,WAGE,kBACGvM,OAAO,iBAAiBpyK,YAAY,kEAAkEwkD,WACtG4tH,OAAO,iBAAiBpyK,YAAY,kEAAkEwkD,WACtG4tH,OAAO,sBAAsBpyK,YAAY,uEAAuEwkD,WAChH4tH,OAAO,iCAAiCpyK,YAAY,kFAAkFwkD,WACtI4tH,OAAO,qBAAqBpyK,YAAY,4EAA4EwkD,WACpH4tH,OAAO,qBAAqBpyK,YAAY,oEAAoEwkD,WAC5Gn+K,GAAGrtC,KAAKwd,QAIA,YAAA49F,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,sCAChD,MAAO,CAAP,EAAOgE,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKwpR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,mCAKf,sBAAI,sBAAO,C,IAAX,WACE,OAAQlmV,KAAK6lV,4BAA4BzoU,OAAO7C,c,gCAGrC,YAAAmiD,KAAb,SAAkBwpR,G,qBAAuBlqV,GAAO,W,0DAC9CgE,KAAKC,OAAOE,KAAK,Q,+CAQVH,KAAKwd,MAAMjB,GAAZ,OAEF,EAAAvc,KAAa,GAAMA,KAAK6lV,4BAA4B5mV,OAAOe,KAAKwd,S,cAAhE,EAAKA,MAAQ,SAEbxd,KAAK8iJ,aAAaxiJ,QAAQ,4BAErB4lV,EAAD,OACFlmV,KAAK8F,OAAOyI,OAAOvF,gBAAgB,wBAAyB,CAAEw7I,YAAaxkJ,KAAKwkJ,c,cAIzE,SAAMxkJ,KAAK8F,OAAOkD,gBAAgB,4B,OAAzC,MAAO,CAAP,EAAO,U,0BAKT,SAAMhJ,KAAK6lV,4BAA4BnpU,OAAO1c,KAAKwd,Q,OAAnD,SAEAxd,KAAK8iJ,aAAaxiJ,QAAQ,6BAErB4lV,GACHlmV,KAAK8F,OAAOyI,OAAOvF,gBAAgB,wBAAyB,CAAEw7I,YAAaxkJ,KAAKwkJ,c,uDAKpFxkJ,KAAK8iJ,aAAahmJ,MAAM,G,iCAIf,YAAAqpV,WAAb,SAAwBjhM,G,qBAA4BlpJ,GAAO,W,wDAGjC,OAFxBgE,KAAKwd,MAAM4oU,kBAAoB,KAE/B,EAAApmV,KAAwB,GAAMA,KAAK+lV,uBAAuBxoU,OAAO2nI,I,cAAjE,EAAK+gM,iBAAmB,S,YA5JfI,EAAwB,GADpC,uB,uBAoB6C,mB,OAAA,IAAhB,UAAgB,SACsB,mBADtB,OACsB,IAA3B,UAA2B,SACV,mBADU,OACV,IAAtB,UAAsB,SACA,mBADA,OACA,IAAtB,UAAsB,SACpB,mBADoB,OACpB,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1C,mBAD0C,OAC1C,IAAN,oBAAM,YAzBbA,GAAb,I,mGCnBA3qV,EAAOD,QAAU,2rJ,mpEC6BjB,aAyBE,WACUm/D,EACA0rR,EACAC,EACAC,EACAxC,EACAE,EACAuC,EACA3jM,EACA4iM,EACA5/U,GATA,KAAA80D,QACA,KAAA0rR,iBACA,KAAAC,iBACA,KAAAC,uBACA,KAAAxC,mBACA,KAAAE,gBACA,KAAAuC,uBACA,KAAA3jM,eACA,KAAA4iM,8BACA,KAAA5/U,SA/BF,KAAA0X,MAAmB,IAAI,IAKvB,KAAAkpU,MAAgB,GAChB,KAAAC,SAAmB,GACnB,KAAAC,eAAyB,GACzB,KAAAC,SAAsB,GAKtB,KAAAC,UAA2B,GAE3B,KAAAnmO,SAAmB,EAEnB,KAAAvgH,OAAc,GAiBpBJ,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,iBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,wBAoN5B,OAjNe,YAAA+H,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,kCACzCgE,KAAKC,OAAOE,KAAK,YACjBH,KAAKI,OAASA,E,WAGH,YAAAjB,KAAb,W,qBAAqBnD,GAAO,W,8EAErBslB,MAAMthB,KAAKI,OAAOikV,iBAAoB/iU,MAAMthB,KAAKI,OAAOid,aAAzD,a,iBAEiB,O,wBAAjB,EAAArd,KAAiB,GAAMA,KAAKsmV,eAAe9lL,iB,cAA3C,EAAKsmL,UAAY,SACZxlU,MAAMthB,KAAKI,OAAOikV,kBACrBrkV,KAAKie,WAAaje,KAAKI,OAAOikV,gBAG5BrkV,KAAKI,OAAOkkV,iBAAmD,WAAhCtkV,KAAKI,OAAOkkV,gBAC7CtkV,KAAKie,UAAY,KAETqD,MAAMthB,KAAKI,OAAOkkV,mBAC1BtkV,KAAKie,WAAaje,KAAKI,OAAOkkV,iBAG5BtkV,KAAKie,WAEPje,KAAKgkV,iBAAiB5mU,OAAO87B,iBAAmBl5C,KAAKie,UACrDje,KAAKwmV,qBAAqBppU,OAAO87B,iBAAmBl5C,KAAKie,UAEzDje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAC3D,EAAAje,KAAgB,GAAMA,KAAKumV,eAAe58S,OAAO3pC,KAAKie,aANpD,O,OAOc,OADhB,EAAK4oU,SAAW,SAChB,EAAA7mV,KAAgB,GAAMA,KAAKwmV,qBAAqB7oU,8BAA8B3d,KAAKI,OAAOid,c,OAE7E,OAFb,EAAKspU,SAAW,SAChB3mV,KAAK0mV,MAAQ1mV,KAAK2mV,SAAS9hV,QAAO,SAAAqC,GAAK,OAACA,EAAEywE,iBAC1C,EAAA33E,KAAa,GAAMA,KAAKgkV,iBAAiB1sQ,0BAA0Bt3E,KAAKie,Y,cAAxE,EAAKT,MAAQ,SACbxd,KAAK4mV,eAAiB5mV,KAAK2mV,SAAS9hV,QAAO,SAAAqC,GAAK,OAAAA,EAAEywE,eAAiBzwE,EAAE6/U,qBAEhEzlU,MAAMthB,KAAKI,OAAOokJ,aAAnB,OAEF,EAAAxkJ,KAAa,GAAMA,KAAKgkV,iBAAiB1nU,SAAStc,KAAKI,OAAOokJ,e,cAA9D,EAAKhnI,MAAQ,SAETxd,KAAKwd,MAAM4nU,kBAAoB,IAAgBC,gBACjDrlV,KAAK2gH,SAAU,GAGjB3gH,KAAKgnV,qBACLhnV,KAAKinV,wBACLjnV,KAAKknV,uB,aAILlnV,KAAKwd,MAAMS,UAAYje,KAAKie,UAC5Bje,KAAKwd,MAAMkB,QAAU1e,KAAK0e,Q,wBAGxB1e,KAAKwd,MAAM2pU,qBACb,EAAAnnV,KAAuB,GAAMA,KAAKymV,qBAAqBhgD,0BAA0BzmS,KAAKI,OAAOid,eAD3F,O,OACF,EAAKupU,eAAkB,SACpB/hV,QAAO,SAAAqC,GAAK,OAAAA,EAAEywE,eAAiBzwE,EAAE6/U,qB,mBAItC/mV,KAAK2lV,2B,0DAIP3lV,KAAK8iJ,aAAahmJ,MAAM,G,iCAKtB,YAAA6oV,yBAAR,sBACE3lV,KAAKC,OAAOE,KAAK,4BAEjB,kBACGi5U,OAAO,eAAepyK,YAAY,2CAA2CwkD,WAG7E4tH,OAAO,oBAAoBpyK,YAAY,gDAAgDwkD,WACvF4tH,OAAO,WAAWpyK,YAAY,uCAAuCwkD,WAAWrvL,QAAQ,YACxFi9S,OAAO,oBAAoBpyK,YAAY,uCAAuCwkD,WAAWrvL,QAAQ,YACjGi9S,OAAO,eAAepyK,YAAY,2CAA2CwkD,WAC7E4tH,OAAO,SAASpyK,YAAY,qCAAqCwkD,WACjE4tH,OAAO,WAAWpyK,YAAY,uCAAuCwkD,WACrE4tH,OAAO,qBAAqBpyK,YAAY,iDAAiDwkD,WAAWrvL,QAAQ,YAC5Gi9S,OAAO,qBAAqBpyK,YAAY,wCAAwCwkD,WAChF4tH,OAAO,aAAapyK,YAAY,yCAAyCwkD,WACzE4tH,OAAO,WAAWpyK,YAAY,uCAAuCwkD,WACrE4tH,OAAO,gBAAgBpyK,YAAY,0CAA0CwkD,WAC7E4tH,OAAO,0BAA0BpyK,YAAY,oDAAoDwkD,WACjG4tH,OAAO,0BAA0BpyK,YAAY,qDAAqDwkD,WAAWvpG,MAAK,SAAA/6G,GAAK,SAAKsW,MAAM2pU,uBAClI/N,OAAO,mBAAmBpyK,YAAY,8CAA8CwkD,WAAWvpG,MAAK,SAAA/6G,GAAK,SAAKsW,MAAM2pU,uBACpH95S,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,sCAEhD,MAAO,CAAP,EAAOgE,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKwpR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,mCAID,YAAAkB,eAAd,SAA6BC,G,uGACvBA,GACFrnV,KAAKwd,MAAMmB,uBAAyB,IAAItF,KACxC,EAAArZ,KAAuB,GAAMA,KAAKymV,qBAAqBhgD,0BAA0BzmS,KAAKI,OAAOid,eAF3F,M,cAEF,EAAKupU,eAAkB,SACpB/hV,QAAO,SAAAqC,GAAK,OAAAA,EAAEywE,eAAiBzwE,EAAE6/U,qB,aAGpC/mV,KAAK4mV,eAAiB5mV,KAAK2mV,SAAS9hV,QAAO,SAAAqC,GAAK,OAAAA,EAAEywE,iBAC/C9yE,QAAO,SAAAqC,GAAK,OAAAA,EAAE6/U,qB,mCAGrB,sBAAI,sBAAO,C,IAAX,WACE,OAAQ/mV,KAAKgkV,iBAAiB5mU,OAAO7C,c,gCAG1B,YAAAmiD,KAAb,SAAkBwpR,G,qBAAuBlqV,GAAO,W,0DAC9CgE,KAAKC,OAAOE,KAAK,Q,8CAEVH,KAAKwd,MAAMjB,GAAZ,OAEF,EAAAvc,KAAa,GAAMA,KAAKgkV,iBAAiB/kV,OAAOe,KAAKwd,S,cAArD,EAAKA,MAAQ,SAER0oU,EAIHlmV,KAAK8F,OAAOyI,OAAOvF,gBAAgB,uBAAwB,CAAEw7I,YAAaxkJ,KAAKwd,MAAMjB,KAHrFvc,KAAK8F,OAAOyI,OAAOvF,gBAAgB,wBAAyB,CAAEw7I,YAAaxkJ,KAAKwd,MAAMjB,KAMxFvc,KAAK8iJ,aAAaxiJ,QAAQ,4B,aAI1B,SAAMN,KAAKgkV,iBAAiBtnU,OAAO1c,KAAKwd,Q,OAAxC,SAEAxd,KAAK8iJ,aAAaxiJ,QAAQ,6BAErB4lV,GACHlmV,KAAK8F,OAAOyI,OAAOvF,gBAAgB,wBAAyB,CAAEw7I,YAAaxkJ,KAAKwd,MAAMjB,K,sDAM1Fvc,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAwqV,cAAd,W,qBAA+BtrV,GAAO,W,+DAK7B,OAJPgE,KAAKC,OAAOE,KAAK,kBACbK,EAAgB,IAAI,KACnByd,UAAYje,KAAK0e,QAAQnC,GAEvB,GAAMvc,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,2DACzCA,EAASw9B,aAAV,Y,iBAGO,O,sBAAA,GAAMj5C,KAAKumV,eAAetnV,OAAOuB,I,cAAxCA,EAAO,SAEPR,KAAK6mV,SAAS/iV,QAAQtD,GACtBR,KAAK8iJ,aAAaxiJ,QAAQ,iD,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCAb9B,MAAO,CAAP,EAAO,kBAmBD,YAAAkqV,mBAAR,sBACEhnV,KAAKunV,aAAevnV,KAAK6mV,SAAS7gV,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,KAAO,EAAKiB,MAAMgqU,yBAChExnV,KAAKwd,MAAMiqU,oBAAsBznV,KAAKunV,aAAa9+R,UAG7C,YAAAw+R,sBAAR,sBACEjnV,KAAK0nV,gBAAkB1nV,KAAK6mV,SAAS7gV,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,KAAO,EAAKiB,MAAMmqU,0BACnE3nV,KAAKwd,MAAMoqU,qBAAuB5nV,KAAK0nV,gBAAgBj/R,UAGjD,YAAAy+R,qBAAR,sBACElnV,KAAK6nV,eAAiB7nV,KAAK6mV,SAAS7gV,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,KAAO,EAAKiB,MAAMsqU,gBAClE9nV,KAAKwd,MAAMuqU,WAAa/nV,KAAK6nV,eAAep/R,UAGhC,YAAAu/R,kBAAd,W,qBAAmChsV,GAAO,W,6DAEjC,OADPgE,KAAKC,OAAOE,KAAK,oBACV,GAAMH,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAKwd,MAAMI,SACjB86I,YAAW,SAAOj9I,GAA2B,gEAAK,yB,OAHrD,MAAO,CAAP,EAAO,kBAKK,YAAAwsU,uBAAd,W,qBAAwCjsV,GAAO,W,6DAEtC,OADPgE,KAAKC,OAAOE,KAAK,oBACV,GAAMH,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAKwd,MAAM0qU,kBACjBxvL,YAAW,SAAOj9I,GAA2B,gEAAK,yB,OAHrD,MAAO,CAAP,EAAO,kBAMK,YAAA1R,OAAd,W,iGACM/J,KAAKwd,MAAMjB,GACN,GAAMvc,KAAK8F,OAAOkD,gBAAgB,wBAAyB,CAAEw7I,YAAaxkJ,KAAKwd,MAAMjB,MAD1F,M,OACF,MAAO,CAAP,EAAO,U,OAEA,SAAMvc,KAAK8F,OAAOkD,gBAAgB,e,OAAzC,MAAO,CAAP,EAAO,kBA3PAm/U,EAAa,GADzB,uB,uBA2B8B,mB,OAAA,IAAZ,UAAY,SACW,mBADX,OACW,IAAd,UAAc,SACA,mBADA,OACA,IAAd,UAAc,SACY,mBADZ,OACY,IAApB,UAAoB,SACR,mBADQ,OACR,IAAhB,UAAgB,SACN,mBADM,OACN,IAAb,kCAAa,SACc,mBADd,OACc,IAApB,UAAoB,SAChB,mBADgB,OAChB,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1C,mBAD0C,OAC1C,IAAN,oBAAM,YAnCbA,GAAb,I,2FC7BAzsV,EAAOD,QAAU,6zV,ooECiBjB,aAaE,WACUqK,EACAk+U,EACAoE,EACAlE,EACAphM,GALV,WACU,KAAAh9I,SACA,KAAAk+U,mBACA,KAAAoE,uBACA,KAAAlE,gBACA,KAAAphM,eAXF,KAAAxlI,WAAoC,IAAI,wBAGxC,KAAAqjG,SAAmB,EACnB,KAAAvgH,OAAc,GAkEd,KAAA4sP,QAAU,WAEhB,OAAO,EAAKo7F,qBAAqBt0U,KAAK,EAAK0wI,YAAa,EAAKlnI,aA3D7Dtd,KAAKC,OAAS,aAAWC,UAAU,qB,cAoHvC,OAhHe,YAAA0Y,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,kCACzCgE,KAAKI,OAASA,E,WAGH,YAAAjB,KAAb,W,qBAAqBnD,GAAO,W,6DACrBslB,MAAMthB,KAAKI,OAAOokJ,aAAnB,Y,GACFxkJ,KAAKwkJ,aAAexkJ,KAAKI,OAAOokJ,YAE3BljI,MAAMthB,KAAKI,OAAOikV,kBACrBrkV,KAAKie,WAAaje,KAAKI,OAAOikV,gBAG5BrkV,KAAKI,OAAOkkV,iBAAmD,WAAhCtkV,KAAKI,OAAOkkV,gBAC7CtkV,KAAKie,UAAY,KAETqD,MAAMthB,KAAKI,OAAOkkV,mBAC1BtkV,KAAKie,WAAaje,KAAKI,OAAOkkV,kBAG5BtkV,KAAKwkJ,cAAexkJ,KAAKie,UAAzB,YACFje,KAAKgkV,iBAAiB5mU,OAAO87B,iBAAmBl5C,KAAKI,OAAO6d,UAC5Dje,KAAKooV,qBAAqBhrU,OAAO87B,iBAAmBl5C,KAAKI,OAAO6d,U,iBAE7C,O,sBAAjB,EAAAje,KAAiB,GAAMA,KAAKgkV,iBAAiB1nU,QAAQtc,KAAKwkJ,c,OAK1D,OALA,EAAKqwD,UAAY,SACb70M,KAAK60M,UAAUuwI,kBAAoB,IAAgBC,gBACrDrlV,KAAK2gH,SAAU,GAGV,CAAP,EAAO3gH,KAAKukV,Y,yBAGZvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BAMnB,YAAAynV,SAAb,W,qBAAyBvoV,GAAO,W,6DAEvB,OADPgE,KAAKC,OAAOE,KAAK,YACV,GAAMH,KAAKooV,qBAAqBt0U,KAAK9T,KAAKwkJ,YAAaxkJ,KAAKsd,YAChEna,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAQK,YAAAnxU,OAAd,W,qBAAwBjD,GAAO,W,+DAGtB,OAFHwE,EAAsB,IAAI,KACzBgkJ,YAAcxkJ,KAAKwkJ,YACjB,GAAMxkJ,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,2DACzCA,EAASw9B,aAAV,Y,iBAGO,O,sBAAA,GAAMj5C,KAAKooV,qBAAqBnpV,OAAOuB,I,cAA9CA,EAAO,SAEPR,KAAKsd,WAAWoiU,UAAU57U,QAAQtD,GAClCR,KAAK8iJ,aAAaxiJ,QAAQ,4B,+BAI1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCAd9B,MAAO,CAAP,EAAO,kBAoBK,YAAAggB,OAAd,SAAqBP,EAAY7e,G,qBAAe1B,GAAO,W,6DAC9C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IACNg7J,YAAW,SAACj9I,GACRA,EAASw9B,cACZ,EAAKmvS,qBAAqBtrU,OAAOP,GAC9BpZ,MAAK,WAEJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQkL,EAAGyC,YAChG,EAAK1B,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GAErD,EAAK3hM,aAAaxiJ,QAAQ,iCAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,U,OAdhC,MAAO,CAAP,EAAO,kBAmBK,YAAAurV,gBAAd,SAA8B9rU,G,kGAET,O,sBAAA,GAAMvc,KAAKooV,qBAAqB/iM,0BAA0B9oI,I,OAC3E,OAAkB,OADd+rU,EAAa,UAER,CAAP,EAAOtoV,KAAK8F,OAAOyC,SAAS+/U,I,+BAG9BtoV,KAAK8iJ,aAAahmJ,MAAM,G,+BApIjByrV,EAAiB,GAD7B,uB,uBAeyB,mB,OAAA,IAAN,oBAAM,SACoB,mBADpB,OACoB,IAAhB,UAAgB,SACQ,mBADR,OACQ,IAApB,UAAoB,SACd,mBADc,OACd,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YAlBzBA,GAAb,I,gGCjBA7sV,EAAOD,QAAU,ujG,k9DCWjB,aAME,WACUqnJ,EACAxhG,EACAokS,GAFA,KAAA5iM,eACA,KAAAxhG,mBACA,KAAAokS,8BAPF,KAAAloU,MAAuB,IAAI,IASjCxd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,iB,UAkDvC,OA/Ce,YAAA0Y,SAAb,SAAsB4E,G,qBAAuBxhB,GAAO,W,kCAClDgE,KAAKC,OAAO0zC,MAAM,YAClB3zC,KAAKwd,MAAQA,EACbxd,KAAK2lV,2B,WAGP,YAAAA,yBAAA,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,YAAYpyK,YAAY,mDAAmDwkD,WAClFn+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,W,qBAAuBp/G,GAAO,W,sCAC5B,MAAO,CAAP,EAAOgE,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKF,YAAAA,KAAb,W,qBAAqB1gE,GAAO,W,kDACnB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAGF,YAAA4iR,QAAP,SAAe1kD,GAAf,WACE9jS,KAAKC,OAAO0zC,MAAM,WAClB,IAAIx3B,EAAa2nR,EAAOtmS,OAAO+wO,MAAM,GAKrC,GADoB,IAAoBp9N,MAAM,0BAA2B,QACvD8P,QAAQ9E,GAAO,CAC/B,IAAIo/B,EAAqB,IAAID,WAC7BC,EAAOI,cAAcx/B,GACrBo/B,EAAOr+C,OAAS,WACd,EAAKsgB,MAAMquC,SAAW1vC,EAAKze,KAC3B,EAAK8f,MAAMirU,QAAUlvS,IAAI0B,gBAAgB9+B,SAI3Cnc,KAAK8iJ,aAAahmJ,MAAM,wDA3DjB4rV,EAAkB,GAD9B,uB,uBAQqC,mB,OAAA,IAAZ,UAAY,SACQ,mBADR,OACQ,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,YATvDA,GAAb,K,iGCXAhtV,EAAOD,QAAU,2+B,8rECyBjB,aAuBE,WACU6qV,EACAC,EACAvC,EACA2E,EACAzE,EACAphM,EACA4iM,EACA5/U,GAPA,KAAAwgV,iBACA,KAAAC,iBACA,KAAAvC,mBACA,KAAA2E,0BACA,KAAAzE,gBACA,KAAAphM,eACA,KAAA4iM,8BACA,KAAA5/U,SAxBF,KAAA0X,MAA6B,IAAI,IAGjC,KAAAqpU,SAAsB,GACtB,KAAA+B,WAA4B,GAG5B,KAAAC,gBAA0B,EAC1B,KAAAC,iBAA2B,EAC3B,KAAAC,iBAA2B,EAC3B,KAAAC,iBAA2B,EAE3B,KAAAroO,SAAmB,EAEnB,KAAAvgH,OAAc,GAapBJ,KAAKC,OAAS,aAAWC,UAAU,2BAEnCF,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,K,oBAyP9C,OArPe,YAAAr6T,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,kCACzCgE,KAAKC,OAAOE,KAAK,YACjBH,KAAKI,OAASA,E,WAGH,YAAAjB,KAAb,W,qBAAqBnD,GAAO,W,mEAErBslB,MAAMthB,KAAKI,OAAOokJ,aAAnB,YACFxkJ,KAAKwkJ,YAAcxkJ,KAAKI,OAAOokJ,Y,iBAGX,O,sBAAlB,EAAAxkJ,KAAkB,GAAMA,KAAKsmV,eAAe1lL,kB,cAA5C,EAAKgoL,WAAa,SAEbtnU,MAAMthB,KAAKI,OAAOikV,kBACrBrkV,KAAKie,WAAaje,KAAKI,OAAOikV,gBAG5BrkV,KAAKI,OAAOkkV,iBAAmD,WAAhCtkV,KAAKI,OAAOkkV,gBAC7CtkV,KAAKie,UAAY,KAETqD,MAAMthB,KAAKI,OAAOkkV,mBAC1BtkV,KAAKie,WAAaje,KAAKI,OAAOkkV,iBAG5BtkV,KAAKwkJ,aAAexkJ,KAAKie,WAC3Bje,KAAKgkV,iBAAiB5mU,OAAO87B,iBAAmBl5C,KAAKie,UAErD,EAAAje,KAAgB,GAAMA,KAAKumV,eAAe58S,OAAO3pC,KAAKie,aAHpD,M,OAKe,OAFjB,EAAK4oU,SAAW,SAEhB,EAAA7mV,KAAiB,GAAMA,KAAKgkV,iBAAiB1nU,SAAStc,KAAKI,OAAOokJ,c,OAOrD,OAPb,EAAKqwD,UAAY,SAEb70M,KAAK60M,UAAUuwI,kBAAoB,IAAgBC,gBACrDrlV,KAAK2gH,SAAU,GAIjB,EAAA3gH,KAAa,GAAMA,KAAK2oV,wBAAwBrsU,SAAStc,KAAKI,OAAOokJ,c,OAArE,EAAKhnI,MAAQ,SAES,IAAlBxd,KAAKwd,MAAMjB,IACbvc,KAAKwd,MAAMq3L,UAAY70M,KAAK60M,UAC5B70M,KAAKwd,MAAMgnI,YAAcxkJ,KAAKI,OAAOokJ,cAErCxkJ,KAAKgnV,qBACLhnV,KAAKipV,mBAGPjpV,KAAK2lV,2B,sDAIP3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAMtB,YAAA6oV,yBAAR,WACE3lV,KAAKC,OAAOE,KAAK,4BAEjB,kBACGi5U,OAAO,iBAAiBpyK,YAAY,+DAA+DwkD,WAAWrvL,QAAQ,gBACtHi9S,OAAO,kBAAkBpyK,YAAY,8DAA8DwkD,WAAWrvL,QAAQ,gBACtHi9S,OAAO,mBAAmBpyK,YAAY,+DAA+DwkD,WAAWrvL,QAAQ,gBACxHi9S,OAAO,UAAUpyK,YAAY,8DAA8DwkD,WAAWmsH,SAAS,GAC/GtqS,GAAGrtC,KAAKwd,QAGL,YAAAwpU,mBAAR,sBACEhnV,KAAKkpV,cAAgBlpV,KAAK6mV,SAAS7gV,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,KAAO,EAAKiB,MAAM2rU,oBAGtD,YAAA/tO,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,sCAChD,MAAO,CAAP,EAAOgE,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACL34M,KAAKopV,+BACA,GAAMppV,KAAK08D,KAAKwpR,IADrB,MADF,M,OAEA,MAAO,CAAP,EAAO,U,OAGPlmV,KAAK8iJ,aAAaviJ,QAAQ,qE,6CAOpC,sBAAI,sBAAO,C,IAAX,WACE,OAAQP,KAAK2oV,wBAAwBvrU,OAAO7C,c,gCAGjC,YAAAmiD,KAAb,SAAkBwpR,G,qBAAuBlqV,GAAO,W,0DAC9CgE,KAAKC,OAAOE,KAAK,Q,+CAIVH,KAAKwd,MAAMjB,GAAZ,OAEF,EAAAvc,KAAa,GAAMA,KAAK2oV,wBAAwB1pV,OAAOe,KAAKwd,S,cAA5D,EAAKA,MAAQ,SAEbxd,KAAK8iJ,aAAaxiJ,QAAQ,6BAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOyI,OAAOvF,gBAAgB,wBAAyB,CAAEw7I,YAAaxkJ,KAAKwkJ,e,OAA7F,MAAO,CAAP,EAAO,U,0BAST,SAAMxkJ,KAAK2oV,wBAAwBjsU,OAAO1c,KAAKwd,Q,cAA/C,SAEAxd,KAAK8iJ,aAAaxiJ,QAAQ,6BAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOyI,OAAOvF,gBAAgB,wBAAyB,CAAEw7I,YAAaxkJ,KAAKwkJ,e,OAA7F,MAAO,CAAP,EAAO,U,6CAUXxkJ,KAAK8iJ,aAAahmJ,MAAM,G,iCAId,YAAAwqV,cAAd,W,qBAA+BtrV,GAAO,W,+DAK7B,OAJPgE,KAAKC,OAAOE,KAAK,kBACbK,EAAgB,IAAI,KACnByd,UAAYje,KAAK60M,UAAU52L,UAEzB,GAAMje,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,2DACzCA,EAASw9B,aAAV,Y,iBAGO,O,sBAAA,GAAMj5C,KAAKumV,eAAetnV,OAAOuB,I,cAAxCA,EAAO,SACPR,KAAK6mV,SAAS/iV,QAAQtD,GAEtBR,KAAK8iJ,aAAaxiJ,QAAQ,4B,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCAb9B,MAAO,CAAP,EAAO,kBAoBK,YAAAusV,YAAd,W,qBAA6BrtV,GAAO,W,+DAM3B,OALPgE,KAAKC,OAAOE,KAAK,gBAEbK,EAAc,IAAI,KACjB8oV,sBAAwBtpV,KAAKwd,MAAMjB,GAEjC,GAAMvc,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,kCACzCA,EAASw9B,eAEZj5C,KAAKwd,MAAMs3L,OAAOhxM,QAAQtD,GAE1BR,KAAKipV,mB,aAGNh9U,OAAM,SAAAnP,GACP,EAAKgmJ,aAAahmJ,MAAMA,O,OAZ1B,MAAO,CAAP,EAAO,kBAgBK,YAAAysV,YAAd,SAA0BC,EAAkB7/U,G,qBAAgB3N,GAAO,W,+DAK1D,OAJPgE,KAAKC,OAAOE,KAAK,eAEbspV,EAAgBv4U,KAAKC,MAAMD,KAAKE,UAAUo4U,IAEvC,GAAMxpV,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOgsU,IACN9wL,YAAW,SAAOj9I,GAA2B,qC,kCAC1CA,EAASw9B,cACXj5C,KAAKwd,MAAMs3L,OAAO39L,OAAOxN,EAAO,EAAG8/U,GAGrCzpV,KAAKipV,kB,aAEJh9U,OAAM,SAAAnP,GACP,EAAKgmJ,aAAahmJ,MAAMA,O,OAX1B,MAAO,CAAP,EAAO,kBAeK,YAAA4sV,YAAd,SAA0BC,G,qBAAqB3tV,GAAO,W,6DAG7C,OAFPgE,KAAKC,OAAOE,KAAK,kBAEV,GAAMH,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,OAAQmsU,EAAYh1I,WAAYg1I,EAAY/0I,MAC3Cl8C,YAAW,SAACj9I,GACb,IAAKA,EAASw9B,aAAc,CAE1B,IAAIjoB,EAAM,EAAKxT,MAAMs3L,OAAOzjM,QAAQs4U,GACpC,EAAKnsU,MAAMs3L,OAAO39L,OAAO6Z,EAAK,GAE9B,EAAKi4T,uB,OATT,MAAO,CAAP,EAAO,kBAgBD,YAAAA,gBAAR,WAEE,IAAIW,EAAe,EACfC,EAAU,EACVC,EAAe,EACfC,EAAoB,EAExB/pV,KAAKwd,MAAMs3L,OAAO3tM,SAAQ,SAAU6iV,EAAOrgV,EAAO2d,GAChDyiU,IAAsBC,EAAM31S,WAC5Bu1S,IAAiBI,EAAMr1I,SACvBk1I,IAAYG,EAAMp1I,IAClBk1I,IAAiBE,EAAMr1I,WAAYq1I,EAAMp1I,OAG3C50M,KAAK6oV,gBAAkBkB,EACvB/pV,KAAK8oV,iBAAmBc,EACxB5pV,KAAK+oV,iBAAmBc,EACxB7pV,KAAKgpV,iBAAmBc,GAIlB,YAAAV,6BAAR,WACE,OAAOppV,KAAKwd,MAAMysU,eAAiBjqV,KAAKgpV,kBAA4C,KAAxBhpV,KAAK6oV,iBAG3D,YAAAqB,SAAR,SAAiBC,EAAOC,GACtB,OAAQD,IAASC,GA3RRC,EAAuB,GADnC,uB,uBAyByC,mB,OAAA,IAAd,UAAc,SACA,mBADA,OACA,IAAd,UAAc,SACI,mBADJ,OACI,IAAhB,UAAgB,SACiB,mBADjB,OACiB,IAA1B,UAA0B,SACvB,mBADuB,OACvB,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1C,mBAD0C,OAC1C,IAAN,oBAAM,YA/BbA,GAAb,I,mGCzBA3uV,EAAOD,QAAU,y3L,gqBCWjB,aAME,WACUsE,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAERpsN,KAAKC,OAAS,aAAWC,UAAU,6B,QA+DvC,OA5DS,YAAA+V,gBAAP,SAAuBzT,EAA6BsD,GAClD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,CAAC,GAAG,QACXpI,SAAU,mBACVoD,KAAM,iBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,2BAGtB,CACEqC,MAAO,uBACPpI,SAAU,6BACVoD,KAAM,uBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,wDAGtB,CACEqC,MAAO,0BACPpI,SAAU,2BACVoD,KAAM,0BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,2DAGtB,CACEqC,MAAO,kBACPpI,SAAU,kBACVoD,KAAM,kBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,kDAGtB,CACEqC,MAAO,YACPpI,SAAU,wBACVoD,KAAM,YACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,qDAGtB,CACEqC,MAAO,mBACPpI,SAAU,0BACVoD,KAAM,mBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,yDAGtB,CACEqC,MAAO,WACPpI,SAAU,oCACVoD,KAAM,0BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,oDArEfiqV,EAAyB,GADrC,a,uBAQqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YARzCA,GAAb,I,8ECXA5uV,EAAOD,QAAU,uP,i7DCQjB,aAQE,WACU6lD,EACAokS,GADA,KAAApkS,mBACA,KAAAokS,8BAER1lV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,c,QAsCvC,OAnCQ,YAAA0Y,SAAN,SAAe4E,G,qBAAexhB,GAAO,W,kCACnCgE,KAAKC,OAAO0zC,MAAM,YAClB3zC,KAAKwd,MAAQA,EAEbxd,KAAK2lV,2B,WAGP,YAAAA,yBAAA,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,WAAWpyK,YAAY,gEAAgEwkD,WAC9F4tH,OAAO,cAAcpyK,YAAY,mEAAmEwkD,WAAWrvL,QAAQ,YACvHi9S,OAAO,eAAepyK,YAAY,oEAAoEwkD,WACtG4tH,OAAO,YAAYpyK,YAAY,iEAAiEwkD,WAAWrvL,QAAQ,YACnHi9S,OAAO,OAAOpyK,YAAY,4DAA4DwkD,WAAWrvL,QAAQ,YACzGkR,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,W,qBAAuBp/G,GAAO,W,sCAC5B,MAAO,CAAP,EAAOgE,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKF,YAAAA,KAAb,W,qBAAqB1gE,GAAO,W,kDACnB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAGD,YAAAskR,SAAR,SAAiBC,EAAOC,GACtB,OAAQD,IAASC,GAlDRG,EAAU,GADtB,uB,uBAU6C,mB,OAAA,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,YAVvDA,GAAb,K,sFCRA7uV,EAAOD,QAAU,23E,o+DCYjB,aAWE,WACUuoV,EACAlhM,EACA4iM,EACA5/U,GAHA,KAAAk+U,mBACA,KAAAlhM,eACA,KAAA4iM,8BACA,KAAA5/U,SAVF,KAAA0X,MAAmB,IAAI,IAGvB,KAAAmjG,SAAmB,EACnB,KAAAvgH,OAAc,GAQpBJ,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,uB,YAgFvC,OA7Ee,YAAA0Y,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,kCACzCgE,KAAKC,OAAOE,KAAK,YACjBH,KAAKI,OAASA,E,WAGH,YAAAjB,KAAb,W,qBAAqBnD,GAAO,W,6DACrBslB,MAAMthB,KAAKI,OAAOokJ,aAAnB,Y,GAEFxkJ,KAAKwkJ,YAAcxkJ,KAAKI,OAAOokJ,YAE1BljI,MAAMthB,KAAKI,OAAOikV,kBACrBrkV,KAAKie,WAAaje,KAAKI,OAAOikV,gBAG5BrkV,KAAKI,OAAOkkV,iBAAmD,WAAhCtkV,KAAKI,OAAOkkV,gBAC7CtkV,KAAKie,UAAY,KAETqD,MAAMthB,KAAKI,OAAOkkV,mBAC1BtkV,KAAKie,WAAaje,KAAKI,OAAOkkV,kBAG5BtkV,KAAKwkJ,cAAexkJ,KAAKie,UAAzB,YAEFje,KAAKgkV,iBAAiB5mU,OAAO87B,iBAAmBl5C,KAAKie,U,iBAGtC,O,sBAAb,EAAAje,KAAa,GAAMA,KAAKgkV,iBAAiB1nU,SAAStc,KAAKI,OAAOokJ,c,cAA9D,EAAKhnI,MAAQ,SAETxd,KAAKwd,MAAM4nU,kBAAoB,IAAgBC,gBACjDrlV,KAAK2gH,SAAU,GAGjB3gH,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAMxB,YAAA6oV,yBAAR,WAEE3lV,KAAKC,OAAO0zC,MAAM,QAAS3zC,KAAKwd,OAChC,kBACG47T,OAAO,sBAAsBpyK,YAAY,2CAA2CwkD,WACpFn+K,GAAGrtC,KAAKwd,QAIA,YAAA49F,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,sCAEhD,MAAO,CAAP,EAAOgE,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKwpR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,mCAKf,sBAAI,sBAAO,C,IAAX,WACE,OAAQlmV,KAAKgkV,iBAAiB5mU,OAAO7C,c,gCAG1B,YAAAmiD,KAAb,SAAkBwpR,G,qBAAuBlqV,GAAO,W,wDAC9CgE,KAAKC,OAAOE,KAAK,Q,iBAEf,O,sBAAA,GAAMH,KAAKgkV,iBAAiBtnU,OAAO1c,KAAKwd,Q,cAAxC,SACAxd,KAAK8iJ,aAAaxiJ,QAAQ,6BACrB4lV,GACHlmV,KAAK8F,OAAOyI,OAAOvF,gBAAgB,wBAAyB,CAAEw7I,YAAaxkJ,KAAKwkJ,c,+BAIlFxkJ,KAAK8iJ,aAAahmJ,MAAM,G,+BAjGjB0tV,EAAmB,GAD/B,uB,uBAa6C,mB,OAAA,IAAhB,UAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1C,mBAD0C,OAC1C,IAAN,oBAAM,YAfbA,GAAb,I,gGCZA9uV,EAAOD,QAAU,4nD,i/DCSjB,aAQE,WACU+qV,EACAllS,EACAwhG,GAHV,WACU,KAAA0jM,uBACA,KAAAllS,mBACA,KAAAwhG,eATF,KAAAv/I,KAAa,IAAI,IAGjB,KAAA+Z,WAAoC,IAAI,wBAoCxC,KAAA0vO,QAAU,SAAO1vO,GAAiC,kBAAGthB,GAAO,W,kDAC3D,SAAMgE,KAAKwmV,qBAAqB3oU,yBAAyB7d,KAAK4d,OAAQN,I,OAA7E,MAAO,CAAP,EAAO,kBA7BPtd,KAAKC,OAAS,aAAWC,UAAU,yB,UAgCvC,OA7Be,YAAA0Y,SAAb,SAAsBgF,G,qBAAiB5hB,GAAO,W,kDAGrC,OADPgE,KAAK4d,OAASA,EACP,GAAM5d,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,kBAII,YAAAA,SAAb,W,qBAAyBvoV,GAAO,W,+DAC9BgE,KAAKC,OAAOE,KAAK,aACbH,KAAK4d,OAAL,Y,iBAEY,O,sBAAZ,EAAA5d,KAAY,GAAMA,KAAKwmV,qBAAqBlqU,QAAQtc,KAAK4d,S,OAE1C,OAFf,EAAKra,KAAO,SACZvD,KAAK23E,cAAgB33E,KAAKuD,KAAKo0E,cAChB,GAAM33E,KAAKwmV,qBAAqB3oU,yBAAyB7d,KAAK4d,OAAQ5d,KAAKsd,a,cAAtF7B,EAAW,SAEfzb,KAAKsd,WAAWoiU,UAAYjkU,EAASphB,KACrC2F,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,a,+BAIxCz/U,KAAK8iJ,aAAahmJ,MAAM,G,+BApCnB2tV,EAAqB,GADjC,uB,uBAUqD,mB,OAAA,IAApB,UAAoB,SACR,mBADQ,OACR,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,YAXzBA,GAAb,K,sGCTA/uV,EAAOD,QAAU,osJ,omECqBjB,aAcE,WACUuoV,EACA0G,EACAxG,EACAphM,GAJV,WACU,KAAAkhM,mBACA,KAAA0G,qBACA,KAAAxG,gBACA,KAAAphM,eAZF,KAAAxlI,WAAoC,IAAI,wBAExC,KAAAld,OAAc,GAEd,KAAA4sP,QAAU,WAChB,OAAO,EAAK09F,mBAAmBphC,aAAa,EAAK9kK,YAAa,EAAKlnI,aASnEtd,KAAKC,OAAS,aAAWC,UAAU,gB,YAwHvC,OApHe,YAAA0Y,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,kCACzCgE,KAAKI,OAASA,E,WAIH,YAAAjB,KAAb,W,qBAAqBnD,GAAO,W,6DAIrBslB,MAAMthB,KAAKI,OAAOokJ,aAAnB,Y,GAEFxkJ,KAAKwkJ,aAAexkJ,KAAKI,OAAOokJ,YAE3BljI,MAAMthB,KAAKI,OAAOikV,gBAGdrkV,KAAKI,OAAOkkV,iBAAmD,WAAhCtkV,KAAKI,OAAOkkV,gBAClDtkV,KAAKie,UAAY,KAETqD,MAAMthB,KAAKI,OAAOkkV,mBAC1BtkV,KAAKie,WAAaje,KAAKI,OAAOkkV,iBAN9BtkV,KAAKie,WAAaje,KAAKI,OAAOikV,gBAS5BrkV,KAAKie,YAAaje,KAAKwkJ,YAAvB,YACFxkJ,KAAKgkV,iBAAiB5mU,OAAO87B,iBAAmBl5C,KAAKie,U,iBAElC,O,sBAAjB,EAAAje,KAAiB,GAAMA,KAAKgkV,iBAAiB1nU,QAAQtc,KAAKwkJ,c,OAE1D,OAFA,EAAKqwD,UAAY,SAEV,CAAP,EAAO70M,KAAKukV,Y,yBAGZvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BAMnB,YAAAynV,SAAb,W,qBAAyBvoV,GAAO,W,6DACvB,SAAMgE,KAAK0qV,mBAAmBphC,aAAatpT,KAAKwkJ,YAAaxkJ,KAAKsd,YACtEna,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAAnxU,OAAd,W,qBAAwBjD,GAAO,W,+DAItB,OAHHwE,EAAoB,IAAI,KACvBgkJ,YAAcxkJ,KAAKwkJ,YAEjB,GAAMxkJ,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,2DACzCA,EAASw9B,aAAV,Y,iBAGO,O,sBAAA,GAAMj5C,KAAK0qV,mBAAmBjhC,eAAejpT,I,cAApDA,EAAO,SACPR,KAAKsd,WAAWoiU,UAAU57U,QAAQtD,GAClCR,KAAKsd,WAAWmiU,eAEhBz/U,KAAK8iJ,aAAaxiJ,QAAQ,4D,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCAd9B,MAAO,CAAP,EAAO,kBAoBK,YAAAuxO,KAAd,SAAmB7tO,G,qBAAoBxE,GAAO,W,6DACrC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,2DACzCA,EAASw9B,aAAV,Y,iBAEA,O,sBAAA,GAAMj5C,KAAK0qV,mBAAmB9gC,eAAeppT,I,cAA7C,SACAR,KAAK8iJ,aAAaxiJ,QAAQ,6D,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,gCAG1BkD,KAAKukV,W,6CAbT,MAAO,CAAP,EAAO,kBAkBK,YAAAznU,OAAd,SAAqBtc,EAAmB9C,G,qBAAe1B,GAAO,W,6DACrD,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IACNg7J,YAAW,SAAOj9I,GAA2B,qC,6DACzCA,EAASw9B,aAAV,Y,iBAEA,O,sBAAA,GAAMj5C,KAAK0qV,mBAAmB3gC,eAAevpT,EAAK+b,K,cAAlD,SAEIkoU,EAA6BzkV,KAAKsd,WAAWoiU,UAAUruU,QAAQ7Q,GACnER,KAAKsd,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrDzkV,KAAKsd,WAAWmiU,eAEhBz/U,KAAK8iJ,aAAaxiJ,QAAQ,8D,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCAf9B,MAAO,CAAP,EAAO,kBAxHE6tV,EAAY,GADxB,uB,uBAgB6C,mB,OAAA,IAAhB,UAAgB,SACI,mBADJ,OACI,IAAlB,UAAkB,SACV,mBADU,OACV,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YAlBzBA,GAAb,I,yFCrBAjvV,EAAOD,QAAU,+qE,67DCWjB,aAKE,WACU6lD,EACAokS,GADA,KAAApkS,mBACA,KAAAokS,8BANF,KAAAloU,MAAqB,IAAI,IAQ/Bxd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAC1CjzU,KAAKC,OAAS,aAAWC,UAAU,iB,QA6BvC,OA1BQ,YAAA0Y,SAAN,SAAe4E,G,qBAAqBxhB,GAAO,W,kCACzCgE,KAAKC,OAAO0zC,MAAM,YAClB3zC,KAAKwd,MAAQA,EACbxd,KAAK2lV,2B,WAGP,YAAAA,yBAAA,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,eAAepyK,YAAY,oDAAoDwkD,WACtFn+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,W,qBAAuBp/G,GAAO,W,sCAC5B,MAAO,CAAP,EAAOgE,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKF,YAAAA,KAAb,W,qBAAqB1gE,GAAO,W,kDAEnB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAtCEglR,EAAa,GADzB,uB,uBAO6C,mB,OAAA,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,YAPvDA,GAAb,K,0FCXAlvV,EAAOD,QAAU,upC,+nECmBjB,aAkBE,WACUuoV,EACAe,EACAb,EACAwG,EACAzG,EACAnhM,GALA,KAAAkhM,mBACA,KAAAe,yBACA,KAAAb,gBACA,KAAAwG,qBACA,KAAAzG,aACA,KAAAnhM,eAnBF,KAAAtlI,MAAmB,IAAI,IAKvB,KAAApd,OAAc,GAGd,KAAAgkV,UAAoB,EAGpB,KAAA5qC,YAAsB,EAW5Bx5S,KAAKC,OAAS,aAAWC,UAAU,yB,gBAoQvC,OAjQgB,YAAA0Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCAEpEgE,KAAKI,OAASA,EAGdJ,KAAKokV,SAAWlB,EAAY78U,SAASP,OAAO5D,QAAQmP,QAAQ,oBAAsB,E,WAGvE,YAAAi4C,SAAb,W,qBAAyBttD,GAAO,W,kCAC9BgE,KAAKC,OAAO0zC,MAAM,WAAY3zC,KAAKI,Q,WAIxB,YAAAjB,KAAb,W,qBAAqBnD,GAAO,W,6DAE1BgE,KAAKC,OAAO0zC,MAAM,OAAQ3zC,KAAKI,QAE1BkhB,MAAMthB,KAAKI,OAAOikV,gBAGdrkV,KAAKI,OAAOkkV,iBAAmD,WAAhCtkV,KAAKI,OAAOkkV,gBAClDtkV,KAAKie,UAAY,KAETqD,MAAMthB,KAAKI,OAAOkkV,mBAC1BtkV,KAAKie,WAAaje,KAAKI,OAAOkkV,iBAN9BtkV,KAAKie,WAAaje,KAAKI,OAAOikV,gBAS5BrkV,KAAKie,UAAL,Y,GAEFje,KAAKgkV,iBAAiB5mU,OAAO87B,iBAAmBl5C,KAAKie,UAEhDqD,MAAMthB,KAAKI,OAAOokJ,aAAnB,Y,iBAEa,O,sBAAb,EAAAxkJ,KAAa,GAAMA,KAAKgkV,iBAAiBpsQ,iBAAiB53E,KAAKI,OAAOokJ,c,cAAtE,EAAKhnI,MAAQ,S,+BAGbxd,KAAK8iJ,aAAahmJ,MAAM,G,+BAMnB,YAAA+6E,oBAAb,SAAiCotQ,G,qBAA0BjpV,GAAO,W,6DAEzD,OADPgE,KAAKC,OAAOE,KAAK,qBACV,GAAMH,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOynU,IACNvsL,YAAW,SAAOj9I,GAA2B,qC,2DACzCA,EAASw9B,aAAV,Y,iBAGA,O,sBAAA,GAAMj5C,KAAKgkV,iBAAiBnsQ,oBAAoB73E,KAAKwd,Q,OACrD,OADA,SACA,GAAMxd,KAAKb,Q,cAAX,SACAa,KAAK8iJ,aAAaxiJ,QAAQ,yD,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCAZ9B,MAAO,CAAP,EAAO,kBAmBI,YAAAg7E,qBAAb,SAAkCmtQ,G,qBAA0BjpV,GAAO,W,oEACjEgE,KAAKC,OAAOE,KAAK,sBAEbH,KAAKwd,MAAMqtU,WACN,GAAM7qV,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOynU,IACNvsL,YAAW,SAAOj9I,GAA2B,qC,2DACzCA,EAASw9B,aAAV,Y,iBAGA,O,sBAAA,GAAMj5C,KAAKgkV,iBAAiBlsQ,qBAAqB93E,KAAKwd,Q,cAAtD,SAEAxd,KAAKwd,MAAM4nU,gBAAkB,IAAgB0F,iBAE7C9qV,KAAK8iJ,aAAaxiJ,QAAQ,yD,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,kCAf5B,M,OACF,MAAO,CAAP,EAAO,U,OAoBPkD,KAAK8iJ,aAAaviJ,QAAQ,2D,mCAIjB,YAAAw3E,wBAAb,SAAqCktQ,G,qBAA0BjpV,GAAO,W,oEACpEgE,KAAKC,OAAOE,KAAK,yBAEbH,KAAKwd,MAAMqtU,WACN,GAAM7qV,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOynU,IACNvsL,YAAW,SAAOj9I,GAA2B,qC,2DACzCA,EAASw9B,aAAV,Y,iBAGA,O,sBAAA,GAAMj5C,KAAKgkV,iBAAiBjsQ,wBAAwB/3E,KAAKwd,Q,cAAzD,SAEAxd,KAAKwd,MAAM4nU,gBAAkB,IAAgB2F,gBAE7C/qV,KAAK8iJ,aAAaxiJ,QAAQ,yD,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,kCAf5B,M,OACF,MAAO,CAAP,EAAO,U,OAoBPkD,KAAK8iJ,aAAaviJ,QAAQ,2D,mCAIjB,YAAA8nD,uBAAb,SAAoC48R,G,qBAA0BjpV,GAAO,W,oEACnEgE,KAAKC,OAAOE,KAAK,wBAEbH,KAAKwd,MAAMqtU,WACN,GAAM7qV,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOynU,IACNvsL,YAAW,SAAOj9I,GAA2B,qC,2DACzCA,EAASw9B,aAAV,Y,iBAGA,O,sBAAA,GAAMj5C,KAAK+kV,uBAAuB18R,uBAAuBroD,KAAKwd,Q,cAA9D,SAEAxd,KAAKwd,MAAM4nU,gBAAkB,IAAgB4F,SAE7ChrV,KAAK8iJ,aAAaxiJ,QAAQ,yD,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,kCAf5B,M,OACF,MAAO,CAAP,EAAO,U,OAoBPkD,KAAK8iJ,aAAaviJ,QAAQ,2D,mCAIjB,YAAAy3E,oBAAb,SAAiCitQ,G,qBAA0BjpV,GAAO,W,oEAChEgE,KAAKC,OAAOE,KAAK,qBAEbH,KAAKwd,MAAMqtU,WAEN,GAAM7qV,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOynU,IACNvsL,YAAW,SAAOj9I,GAA2B,qC,2DACzCA,EAASw9B,aAAV,Y,iBAGA,O,sBAAA,GAAMj5C,KAAKgkV,iBAAiBhsQ,oBAAoBh4E,KAAKwd,Q,cAArD,SAEAxd,KAAKwd,MAAM4nU,gBAAkB,IAAgB6F,MAE7CjrV,KAAK8iJ,aAAaxiJ,QAAQ,yD,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,kCAhB5B,M,OAEF,MAAO,CAAP,EAAO,U,OAoBPkD,KAAK8iJ,aAAaviJ,QAAQ,2D,mCAIjB,YAAA03E,wBAAb,SAAqCgtQ,G,qBAA0BjpV,GAAO,W,6DAG7D,OAFPgE,KAAKC,OAAOE,KAAK,yBAEV,GAAMH,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOynU,IACNvsL,YAAW,SAAOj9I,GAA2B,qC,2DACzCA,EAASw9B,aAAV,Y,iBAGA,O,sBAAA,GAAMj5C,KAAKgkV,iBAAiB/rQ,wBAAwBj4E,KAAKwd,Q,cAAzD,SAEAxd,KAAKwd,MAAM4nU,gBAAkB,IAAgB8F,UAE7ClrV,KAAK8iJ,aAAaxiJ,QAAQ,yD,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCAd9B,MAAO,CAAP,EAAO,kBAqBK,YAAA4nV,UAAd,W,qBAA2B1oV,GAAO,W,mCAC5BwsD,EAAO,EAAE,qBAAqBA,OAE9BsY,EAAQ,EAAE,QAAQtY,OACtB,IACE,MAAO,CAAP,EAAOxoD,KAAKikV,WAAW17R,MAAMuY,EAAMtY,EAAMxoD,KAAKwd,MAAMilP,cAEtD,MAAO3lQ,GACLkD,KAAK8iJ,aAAahmJ,MAAMA,G,iBAId,YAAAquV,eAAd,W,qBAAgCnvV,GAAO,W,+DAI9B,OAHHwE,EAAoB,IAAI,KACvBgkJ,YAAcxkJ,KAAKwd,MAAMjB,GAEvB,GAAMvc,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,6DACzCA,EAASw9B,aAAV,Y,iBAIwB,O,sBAAA,GAAMj5C,KAAK0qV,mBAAmBhhC,iBAAiBlpT,I,cAAnE4qV,EAAoB,SACxB5qV,EAAK+b,GAAK6uU,EAAK7uU,GAIfvc,KAAKwd,MAAM4nU,gBAAkB,IAAgBC,cAE7CrlV,KAAK8iJ,aAAaxiJ,QAAQ,wD,+BAI1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCAnB9B,MAAO,CAAP,EAAO,kBA0BI,YAAAuuV,cAAb,W,qBAA8BrvV,GAAO,W,4DAC/BgE,KAAKwd,MAAMqtU,WAAX,Y,iBAEA,O,sBAAA,GAAM7qV,KAAKgkV,iBAAiB9rQ,gBAAgBl4E,KAAKwd,Q,cAAjD,SAEAxd,KAAK8iJ,aAAaxiJ,QAAQ,2D,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,gCAG1BkD,KAAK8iJ,aAAaviJ,QAAQ,2D,mCAjR9B,GADC,W,sDAID,GADC,W,yDAID,GADC,W,2DAfU+qV,EAAqB,GADjC,uB,uBAoB6C,mB,OAAA,IAAhB,UAAgB,SACY,mBADZ,OACY,IAAtB,UAAsB,SAClB,mBADkB,OAClB,IAAb,kCAAa,SACU,mBADV,OACU,IAAlB,UAAkB,SAChB,mBADgB,OAChB,IAAV,UAAU,SACI,mBADJ,OACI,IAAZ,UAAY,YAxBzBA,GAAb,I,qGCnBA5vV,EAAOD,QAAU,4hL,ykECmBjB,aAgBE,WACUuoV,EACA0G,EACAxG,EACAphM,GAJV,WACU,KAAAkhM,mBACA,KAAA0G,qBACA,KAAAxG,gBACA,KAAAphM,eAbF,KAAAxlI,WAAoC,IAAI,wBAGxC,KAAAld,OAAc,GAEd,KAAA4sP,QAAU,WAChB,OAAO,EAAK09F,mBAAmBlhC,gBAAgB,EAAKhlK,YAAa,EAAKlnI,aAQtEtd,KAAKC,OAAS,aAAWC,UAAU,qB,YA4EvC,OAzEe,YAAA0Y,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,kCACzCgE,KAAKI,OAASA,E,WAGH,YAAAjB,KAAb,W,qBAAqBnD,GAAO,W,6DAErBslB,MAAMthB,KAAKI,OAAOokJ,aAAnB,Y,GAEFxkJ,KAAKwkJ,aAAexkJ,KAAKI,OAAOokJ,YAE3BljI,MAAMthB,KAAKI,OAAOikV,gBAGdrkV,KAAKI,OAAOkkV,iBAAmD,WAAhCtkV,KAAKI,OAAOkkV,gBAClDtkV,KAAKie,UAAY,KAETqD,MAAMthB,KAAKI,OAAOkkV,mBAC1BtkV,KAAKie,WAAaje,KAAKI,OAAOkkV,iBAN9BtkV,KAAKie,WAAaje,KAAKI,OAAOikV,gBAS5BrkV,KAAKie,YAAaje,KAAKwkJ,YAAvB,YACFxkJ,KAAKgkV,iBAAiB5mU,OAAO87B,iBAAmBl5C,KAAKie,U,iBAElC,O,sBAAjB,EAAAje,KAAiB,GAAMA,KAAKgkV,iBAAiB1nU,QAAQtc,KAAKwkJ,c,OAE1D,OAFA,EAAKqwD,UAAY,SACjB70M,KAAKsd,WAAWusB,OAAuB,CAAEwtC,gBAAiB,IAAgBk0Q,cACnE,CAAP,EAAOvrV,KAAKukV,Y,yBAGZvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BAMnB,YAAAynV,SAAb,W,qBAAyBvoV,GAAO,W,6DAEvB,OADPgE,KAAKC,OAAOE,KAAK,YACV,GAAMH,KAAK0qV,mBAAmBlhC,gBAAgBxpT,KAAKwkJ,YAAaxkJ,KAAKsd,YACzEna,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAAnxU,OAAd,W,qBAAwBjD,GAAO,W,+DAItB,OAHHwE,EAAoB,IAAI,KACvBgkJ,YAAcxkJ,KAAKwkJ,YAEjB,GAAMxkJ,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,2DACzCA,EAASw9B,aAAV,Y,iBAEO,O,sBAAA,GAAMj5C,KAAK0qV,mBAAmB/gC,kBAAkBnpT,I,cAAvDA,EAAO,SACPR,KAAKsd,WAAWoiU,UAAU57U,QAAQtD,GAClCR,KAAKsd,WAAWmiU,eAEhBz/U,KAAK8iJ,aAAaxiJ,QAAQ,yD,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCAb9B,MAAO,CAAP,EAAO,kBA9EE0uV,EAAiB,GAD7B,uB,uBAkB6C,mB,OAAA,IAAhB,UAAgB,SACI,mBADJ,OACI,IAAlB,UAAkB,SACV,mBADU,OACV,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YApBzBA,GAAb,I,+FCnBA9vV,EAAOD,QAAU,8wD,y7DCWjB,aAKE,WACU6lD,EACAokS,GADA,KAAApkS,mBACA,KAAAokS,8BANF,KAAAloU,MAAqB,IAAI,IAQ/Bxd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAC1CjzU,KAAKC,OAAS,aAAWC,UAAU,a,QA8BvC,OA1BQ,YAAA0Y,SAAN,SAAe4E,G,qBAAqBxhB,GAAO,W,kCACzCgE,KAAKC,OAAO0zC,MAAM,YAClB3zC,KAAKwd,MAAQA,EACbxd,KAAK2lV,2B,WAGP,YAAAA,yBAAA,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,eAAepyK,YAAY,iDAAiDwkD,WACnFn+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,W,qBAAuBp/G,GAAO,W,sCAC5B,MAAO,CAAP,EAAOgE,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKF,YAAAA,KAAb,W,qBAAqB1gE,GAAO,W,kDAEnB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAvCE6lR,EAAS,GADrB,uB,uBAO6C,mB,OAAA,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,YAPvDA,GAAb,K,sFCXA/vV,EAAOD,QAAU,4lC,qkECoBjB,aAeE,WACUuoV,EACA0G,EACAxG,EACAphM,GAJV,WACU,KAAAkhM,mBACA,KAAA0G,qBACA,KAAAxG,gBACA,KAAAphM,eAbF,KAAAxlI,WAAoC,IAAI,wBAGxC,KAAAld,OAAc,GAEd,KAAA4sP,QAAU,WAChB,OAAO,EAAK09F,mBAAmBnhC,eAAe,EAAK/kK,YAAa,EAAKlnI,aASrEtd,KAAKC,OAAS,aAAWC,UAAU,kB,YA6EvC,OAzEe,YAAA0Y,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,kCACzCgE,KAAKI,OAASA,E,WAGH,YAAAjB,KAAb,W,qBAAqBnD,GAAO,W,6DACrBslB,MAAMthB,KAAKI,OAAOokJ,aAAnB,Y,GACFxkJ,KAAKwkJ,aAAexkJ,KAAKI,OAAOokJ,YAE3BljI,MAAMthB,KAAKI,OAAOikV,gBAGdrkV,KAAKI,OAAOkkV,iBAAmD,WAAhCtkV,KAAKI,OAAOkkV,gBAClDtkV,KAAKie,UAAY,KAETqD,MAAMthB,KAAKI,OAAOkkV,mBAC1BtkV,KAAKie,WAAaje,KAAKI,OAAOkkV,iBAN9BtkV,KAAKie,WAAaje,KAAKI,OAAOikV,gBAS5BrkV,KAAKie,YAAaje,KAAKwkJ,YAAvB,YACFxkJ,KAAKgkV,iBAAiB5mU,OAAO87B,iBAAmBl5C,KAAKie,U,iBAElC,O,sBAAjB,EAAAje,KAAiB,GAAMA,KAAKgkV,iBAAiB1nU,QAAQtc,KAAKwkJ,c,OAE1D,OAFA,EAAKqwD,UAAY,SACjB70M,KAAKsd,WAAWusB,OAAuB,CAAEwtC,gBAAiB,IAAgBq0Q,YACnE,CAAP,EAAO1rV,KAAKukV,Y,yBAGZvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BAMnB,YAAAynV,SAAb,W,qBAAyBvoV,GAAO,W,6DAEvB,OADPgE,KAAKC,OAAOE,KAAK,YACV,GAAMH,KAAK0qV,mBAAmBnhC,eAAevpT,KAAKwkJ,YAAaxkJ,KAAKsd,YACxEna,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAKK,YAAAnxU,OAAd,W,qBAAwBjD,GAAO,W,+DAItB,OAHHwE,EAAoB,IAAI,KACvBgkJ,YAAcxkJ,KAAKwkJ,YAEjB,GAAMxkJ,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,2DACzCA,EAASw9B,aAAV,Y,iBAEO,O,sBAAA,GAAMj5C,KAAK0qV,mBAAmBhhC,iBAAiBlpT,I,cAAtDA,EAAO,SACPR,KAAKsd,WAAWoiU,UAAU57U,QAAQtD,GAClCR,KAAKsd,WAAWmiU,eAEhBz/U,KAAK8iJ,aAAaxiJ,QAAQ,yD,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCAb9B,MAAO,CAAP,EAAO,kBA/EE6uV,EAAe,GAD3B,uB,uBAiB6C,mB,OAAA,IAAhB,UAAgB,SACI,mBADJ,OACI,IAAlB,UAAkB,SACV,mBADU,OACV,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YAnBzBA,GAAb,I,6FCpBAjwV,EAAOD,QAAU,ywD,4qBCWjB,aAME,WACUsE,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAERpsN,KAAKC,OAAS,aAAWC,UAAU,gC,QAgDvC,OA7CS,YAAA+V,gBAAP,SAAuBzT,EAA6BsD,GAClD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,CAAC,GAAG,YACXpI,SAAU,4BACVoD,KAAM,0BACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBspM,sBAClEvmQ,MAAOtH,KAAKD,KAAKM,GAAG,iDAGtB,CACEqC,MAAO,eACPpI,SAAU,sBACVoD,KAAM,eACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBsqM,gCAClEvnQ,MAAOtH,KAAKD,KAAKM,GAAG,kDAGtB,CACEqC,MAAO,iBACPpI,SAAU,wBACVoD,KAAM,iBACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBkqM,iCAClEnnQ,MAAOtH,KAAKD,KAAKM,GAAG,oDAGtB,CACEqC,MAAO,YACPpI,SAAU,kBACVoD,KAAM,YACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBspM,sBAClEvmQ,MAAOtH,KAAKD,KAAKM,GAAG,+CAGtB,CACEqC,MAAO,OACPpI,SAAU,kCACVoD,KAAM,uBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,8BArDfurV,EAA4B,GADxC,a,uBAQqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YARzCA,GAAb,I,gFCXAlwV,EAAOD,QAAU,uP,spBCWjB,aAKE,WACUsE,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAGRpsN,KAAKC,OAAS,aAAWC,UAAU,wB,QAgBvC,OAbS,YAAA+V,gBAAP,SAAuBzT,EAA6BsD,GAElDtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,8CACVoD,KAAM,8BACN4J,MAAOtH,KAAKD,KAAKM,GAAG,0DAIxBL,KAAK8F,OAASA,GAxBL+lV,EAAqB,GADjC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,wECXAnwV,EAAOD,QAAU,+G,u/DCejB,aAUE,WACU6lD,EACAokS,EACAoG,EACAhpM,GAHA,KAAAxhG,mBACA,KAAAokS,8BACA,KAAAoG,mBACA,KAAAhpM,eAPF,KAAAxlI,WAAoC,IAAI,wBAS9Ctd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,kB,YAmCvC,OAjCS,YAAAf,KAAP,sBACEa,KAAK8rV,iBAAiBvuU,SAASpa,MAAK,SAAA4oV,GAAc,SAAKA,WAAaA,MAG/D,YAAAnzU,SAAP,SAAgB4E,GACdxd,KAAKwd,MAAQA,EACbxd,KAAK2lV,4BAEC,YAAAA,yBAAR,WACE,kBACGvM,OAAO,QAAQpyK,YAAY,oCAAoCwkD,WAC/D4tH,OAAO,KAAKpyK,YAAY,iCAAiCwkD,WAAWrvL,QAAQ,uBAC5Ei9S,OAAO,KAAKpyK,YAAY,iCAAiCwkD,WAAWrvL,QAAQ,uBAC5Ei9S,OAAO,KAAKpyK,YAAY,iCAAiCwkD,WAAWrvL,QAAQ,uBAC5Ei9S,OAAO,KAAKpyK,YAAY,iCAAiCwkD,WAAWrvL,QAAQ,uBAE5EkR,GAAGrtC,KAAKwd,QAEA,YAAA49F,OAAb,SAAoB4wO,G,qBAA2BhwV,GAAO,W,6DAE7C,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKsvR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAQI,YAAAtvR,KAAb,SAAkBsvR,G,qBAA2BhwV,GAAO,W,kDAG3C,OAFPgE,KAAKC,OAAO0zC,MAAM,QAASq4S,GAC3BhsV,KAAK01U,qBAAqBlnU,QACnB,GAAMxO,KAAKshD,iBAAiBskB,GAAGomR,I,OAAtC,MAAO,CAAP,EAAO,kBApDEC,EAAa,GADzB,a,uBAY6C,mB,OAAA,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,SACtB,mBADsB,OACtB,IAAhB,UAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,YAdzBA,GAAb,K,mFCfAvwV,EAAOD,QAAU,0vE,yrECejB,aAgBE,WACUqK,EACAgmV,EACA5H,EACAphM,GAJV,WACU,KAAAh9I,SACA,KAAAgmV,mBACA,KAAA5H,gBACA,KAAAphM,eAlBF,KAAAxlI,WAAa,IAAI,wBAGjB,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,wDACjCgE,KAAKC,OAAO0zC,MAAM,c,iBAEC,O,sBAAA,GAAM3zC,KAAK8rV,iBAAiBh4U,KAAK9T,KAAKsd,a,OACvD,MAAO,CAAP,EADiB,U,OAIjB,O,WAAO,CAAP,EAAOtd,KAAK8iJ,aAAahmJ,MAAM,I,yBASjCkD,KAAKC,OAAS,aAAWC,UAAU,iB,YAoHvC,OAjHgB,YAAAf,KAAd,W,qBAAsBnD,GAAO,W,6DAGpB,OAFPgE,KAAKC,OAAO0zC,MAAM,YAEX,GAAM3zC,KAAK8rV,iBAAiBh4U,KAAK9T,KAAKsd,YAC1Cna,MAAK,SAACsY,GACL,EAAK6B,WAAWmiU,aAAehkU,EAASgkU,aACxC,EAAKniU,WAAWoiU,UAAYjkU,EAASphB,QAEtC4R,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAynV,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,QACX,GAAM3zC,KAAK8rV,iBAAiBh4U,KAAK9T,KAAKsd,YAC1Cna,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAGzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGI,YAAAnxU,OAAb,W,qBAAuBjD,GAAO,W,+DAGrB,OAFHwE,EAAkB,IAAI,IAEnB,GAAMR,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,6DACzCA,EAASw9B,aAAV,Y,iBAGuB,O,sBAAA,GAAMj5C,KAAK8rV,iBAAiB7sV,OAAOuB,I,cAAtDgd,EAAmB,SACvBhd,EAAK+b,GAAKiB,EAAMjB,GAChBvc,KAAKsd,WAAWoiU,UAAU57U,QAAQ0Z,GAClCxd,KAAKsd,WAAWmiU,eAChBz/U,KAAK8iJ,aAAaxiJ,QAAQ,mD,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCAd9B,MAAO,CAAP,EAAO,kBAqBI,YAAAuxO,KAAb,SAAkB7tO,G,qBAAkBxE,GAAO,W,6DAClC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,2DACzCA,EAASw9B,aAAV,Y,iBAEA,O,sBAAA,GAAMj5C,KAAK8rV,iBAAiBpvU,OAAOlc,I,cAAnC,SACAR,KAAK8iJ,aAAaxiJ,QAAQ,oD,+BAE1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCAT9B,MAAO,CAAP,EAAO,kBAgBI,YAAAggB,OAAb,SAAoBP,EAAY7e,G,qBAAe1B,GAAO,W,6DAC7C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IACNg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK8rV,iBAAiBhvU,OAAOP,GACvCpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOA,KACnF,EAAKe,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,wDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAmBI,YAAA2gB,YAAb,SAAyBjd,G,qBAAkBxE,GAAO,W,6DACzC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK9C,OACXg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK8rV,iBAAiBruU,YAAYjd,EAAK+b,IACjDpZ,MAAK,WAGJ,EAAK2/I,aAAaxiJ,QAAQ,uDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,U,OAWP0D,EAAK8F,UAAY9F,EAAK8F,S,6CAhB1B,MAAO,CAAP,EAAO,kBApHE4lV,EAAa,GADzB,a,uBAkByB,mB,OAAA,IAAN,oBAAM,SACoB,mBADpB,OACoB,IAAhB,UAAgB,SACN,mBADM,OACN,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YApBzBA,GAAb,I,qpBCNA,aAKE,WACUnsV,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,4B,MAuBvC,OApBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,mBACVoD,KAAM,cAKR,CACEgF,MAAO,yBACPpI,SAAU,2BACVoD,KAAM,6BAxBDyuV,EAAwB,GADpC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,6ECTAzwV,EAAOD,QAAU,uD,kECAjBC,EAAOD,QAAU,47G,i/DCejB,aASE,WACU6lD,EACAokS,EACAoG,GAFA,KAAAxqS,mBACA,KAAAokS,8BACA,KAAAoG,mBANF,KAAAxuU,WAAoC,IAAI,wBAQ9Ctd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,kB,UAqCvC,OAlCS,YAAAf,KAAP,sBACEa,KAAK8rV,iBAAiBvuU,SAASpa,MAAK,SAAA4oV,GAAc,SAAKA,WAAaA,MAG/D,YAAAnzU,SAAP,SAAgB4E,GACdxd,KAAKwd,MAAQA,EACbxd,KAAK2lV,4BAEC,YAAAA,yBAAR,WACE,kBACGvM,OAAO,QAAQpyK,YAAY,oCAAoCwkD,WAC/D4tH,OAAO,KAAKpyK,YAAY,iCAAiCwkD,WAAWrvL,QAAQ,uBAC5Ei9S,OAAO,KAAKpyK,YAAY,iCAAiCwkD,WAAWrvL,QAAQ,uBAC5Ei9S,OAAO,KAAKpyK,YAAY,iCAAiCwkD,WAAWrvL,QAAQ,uBAC5Ei9S,OAAO,KAAKpyK,YAAY,iCAAiCwkD,WAAWrvL,QAAQ,uBAC5Ei9S,OAAO,iBAAiBpyK,YAAY,oCAAoCwkD,WAExEn+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,SAAoB4wO,G,qBAA2BhwV,GAAO,W,6DAE7C,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKsvR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAOI,YAAAtvR,KAAb,SAAkBsvR,G,qBAA2BhwV,GAAO,W,kDAG3C,OAFPgE,KAAKC,OAAO0zC,MAAM,QAASq4S,GAC3BhsV,KAAK01U,qBAAqBlnU,QACnB,GAAMxO,KAAKshD,iBAAiBskB,GAAGomR,I,OAAtC,MAAO,CAAP,EAAO,kBApDEI,EAAc,GAD1B,a,uBAW6C,mB,OAAA,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,SACtB,mBADsB,OACtB,IAAhB,UAAgB,YAZjCA,GAAb,K,oFCfA1wV,EAAOD,QAAU,k4E,+nECYjB,aAsBE,WACU4wV,EACA3W,EACA4W,EACApI,EACAphM,GALV,WACU,KAAAupM,kBACA,KAAA3W,uBACA,KAAA4W,+BACA,KAAApI,gBACA,KAAAphM,eAxBF,KAAA1iJ,OAAc,GAEd,KAAAkd,WAAoC,IAAI,wBAIxC,KAAAivU,UAAoB,EAEpB,KAAAv/F,QAAU,6BAAUhxP,GAAO,W,wDACjCgE,KAAKC,OAAO0zC,MAAM,c,iBAEC,O,sBAAA,GAAM3zC,KAAKssV,6BAA6Bx4U,KAAK9T,KAAKsd,a,OACnE,MAAO,CAAP,EADiB,U,OAIjB,O,WAAO,CAAP,EAAOtd,KAAK8iJ,aAAahmJ,MAAM,I,yBAWjCkD,KAAKC,OAAS,aAAWC,UAAU,6BAEnCF,KAAKsd,WAAWusB,OAAS,G,cAmG7B,OA/FgB,YAAAjxB,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,yDACtCgE,KAAKusV,UACPvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAIJ,YAAAmkV,SAAd,W,qBAA0BvoV,GAAO,W,6DAGxB,OAFPgE,KAAKC,OAAO0zC,MAAM,YAEX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAKxb,OAAO0zC,MAAM,UAAWl4B,GAC7B,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAYK,YAAAqC,KAAd,W,qBAAsBnD,GAAO,W,0DAER,O,sBAAjB,EAAAgE,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,U,cAA5C,EAAKu9C,UAAY,SACb96D,KAAK86D,UAAUlgE,OAAS,GAC1BoF,KAAKsd,WAAWusB,OAAO2iT,WAAaxsV,KAAK86D,UAAU,GAAGv+C,GAC/C,GAAMvc,KAAKukV,aAFhB,M,OAEF,MAAO,CAAP,EAAO,U,4CAITvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGI,YAAAnxU,OAAb,SAAoBuB,G,qBAA8BxE,GAAO,W,6DAChD,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,6DACzCA,EAASw9B,aAAV,YACFj5C,KAAKC,OAAO0zC,MAAM,kBAAmBl4B,EAASxR,Q,iBAET,O,sBAAA,GAAMjK,KAAKssV,6BAA6BrtV,OAAOuB,I,cAA9Egd,EAA+B,SAEnChd,EAAK+b,GAAKiB,EAAMjB,GAGhBvc,KAAK8iJ,aAAaxiJ,QAAQ,4B,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCAf9B,MAAO,CAAP,EAAO,kBAqBI,YAAAuxO,KAAb,SAAkB7tO,G,qBAA8BxE,GAAO,W,6DAC9C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,2DAC9Czb,KAAKC,OAAO0zC,MAAM,kBAAmBl4B,EAASxR,QACzCwR,EAASw9B,aAAV,Y,iBAEA,O,sBAAA,GAAMj5C,KAAKssV,6BAA6B5vU,OAAOlc,I,cAA/C,SAEAR,KAAK8iJ,aAAaxiJ,QAAQ,oD,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCAZ9B,MAAO,CAAP,EAAO,kBAoBI,YAAAs+G,OAAb,SAAoB56G,G,qBAA8BxE,GAAO,W,6DAChD,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDAC5B,GAAXvP,EAAK+b,GAAL,MACK,GAAMvc,KAAKquO,KAAK7tO,I,OAAvB,MAAO,CAAP,EAAO,U,OAEF,SAAMR,KAAKf,OAAOuB,I,OAAzB,MAAO,CAAP,EAAO,qB,OALX,MAAO,CAAP,EAAO,kBAzHEisV,EAAyB,GADrC,uB,uBAwB2C,mB,OAAA,IAAf,UAAe,SACU,mBADV,OACU,IAApB,gDAAoB,SACgB,mBADhB,OACgB,IAA5B,UAA4B,SAC9B,mBAD8B,OAC9B,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YA3BzBA,GAAb,I,8GCZA/wV,EAAOD,QAAU,k2F,w8DCSjB,aAOE,WACU6lD,EACAokS,GADA,KAAApkS,mBACA,KAAAokS,8BAIR1lV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,kB,QAkCvC,OA3BS,YAAA0Y,SAAP,SAAgB4E,GACdxd,KAAKwd,MAAQA,EACbxd,KAAK2lV,4BAGC,YAAAA,yBAAR,WACE,kBACCvM,OAAO,yBAAyBpyK,YAAY,sDAAsDwkD,WAClG4tH,OAAO,cAAcpyK,YAAY,oCAAoCwkD,WACrEn+K,GAAGrtC,KAAKwd,QAGE,YAAA49F,OAAb,SAAoB4wO,G,qBAA2BhwV,GAAO,W,6DAC7C,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKsvR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAQI,YAAAtvR,KAAb,SAAkBsvR,G,qBAA2BhwV,GAAO,W,kDAG3C,OAFPgE,KAAKC,OAAO0zC,MAAM,QAASq4S,GAC3BhsV,KAAK01U,qBAAqBlnU,QACnB,GAAMxO,KAAKshD,iBAAiBskB,GAAGomR,I,OAAtC,MAAO,CAAP,EAAO,kBA/CEU,EAA0B,GADtC,a,uBAS6C,mB,OAAA,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,YATvDA,GAAb,K,6GCTAhxV,EAAOD,QAAU,qsF,2qBCUjB,aAKE,WACUsE,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAERpsN,KAAKC,OAAS,aAAWC,UAAU,4B,QAiCvC,OA9BS,YAAA+V,gBAAP,SAAuBzT,EAA6BsD,GAClD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,wBACVoD,KAAM,sBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,uCAGtB,CACEqC,MAAO,aACPpI,SAAU,4CACVoD,KAAM,4BACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBspM,sBAClEvmQ,MAAOtH,KAAKD,KAAKM,GAAG,sCAGtB,CACEqC,MAAO,kBACPpI,SAAU,4CACVoD,KAAM,iCACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB+nM,oBAClEhlQ,MAAOtH,KAAKD,KAAKM,GAAG,wDApCfssV,EAAwB,GADpC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,mFCVAjxV,EAAOD,QAAU,8M,6+DCcjB,aAUE,WACUm/D,EACAgyR,EACA9pM,EACAh9I,EACAuU,GAJA,KAAAugD,QACA,KAAAgyR,6BACA,KAAA9pM,eACA,KAAAh9I,SACA,KAAAuU,KAPF,KAAAmD,MAA6B,IAAI,IAUvCxd,KAAKC,OAAS,aAAWC,UAAU,qBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,cA8E5B,OA1EgB,YAAA+H,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,6DAC1CgE,KAAKC,OAAOE,KAAK,YAEZmhB,MAAMlhB,EAAOkkV,iBAAd,Y,iBAEa,O,sBAAb,EAAAtkV,KAAa,GAAMA,KAAK4sV,2BAA2BtwU,SAASlc,EAAOkkV,kB,cAAnE,EAAK9mU,MAAQ,SACbxd,KAAK6sV,8B,+BAGL7sV,KAAK8iJ,aAAahmJ,MAAM,G,+BAKtB,YAAA+vV,4BAAR,sBACM7sV,KAAK6Q,MAAMskJ,UAAUv6J,OAAS,IAChCoF,KAAK8sV,aAAe9sV,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAKiB,MAAMkB,QAAQgiJ,YAC9E1gK,KAAK+hD,UAAY/hD,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAKuwU,aAAapsL,cAI9E,sBAAI,sBAAO,C,IAAX,WACE,OAAQ1gK,KAAK4sV,2BAA2BxvU,OAAO7C,c,gCAGpC,YAAAmiD,KAAb,SAAkBwpR,G,qBAAuBlqV,GAAO,W,6DAGvC,OAFPgE,KAAKC,OAAOE,KAAK,QAEV,GAAMH,KAAK4sV,2BAA2BlwU,OAAO1c,KAAKwd,OACtDra,MAAK,SAAOsY,GAA6B,qC,yDACxCzb,KAAKwd,MAAMuvU,QAAU/sV,KAAKwd,MAAMuvU,QAKhC/sV,KAAKqa,GAAGb,QAAQ,IAAI,IAAqBiC,EAASiD,UAElD1e,KAAK8iJ,aAAaxiJ,QAAQ,sDAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,uC,OAAzC,MAAO,CAAP,EAAO,U,2BAIViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAjB5B,MAAO,CAAP,EAAO,kBAsBF,YAAA0rV,QAAP,SAAe1kD,GAAf,WACE9jS,KAAKC,OAAO0zC,MAAM,WAClB,IAAIx3B,EAAa2nR,EAAOtmS,OAAO+wO,MAAM,GAErC,GADoB,IAAoBp9N,MAAM,WAC5B8P,QAAQ9E,GAAO,CAC/B,IAAI,EAAqB,IAAIm/B,WAC7B,EAAOK,cAAcx/B,GACrB,EAAOjf,OAAS,WACd,IAAI8vV,EAAkB,EAAOj9U,OAC7B,EAAKyN,MAAMyvU,KAAOD,EAClB,EAAKxvU,MAAM0vU,aAAe/wU,EAAKze,KAC/B,EAAK8f,MAAMuvU,QAAUxzS,IAAI0B,gBAAgB9+B,SAI3Cnc,KAAK8iJ,aAAahmJ,MAAM,sDAIrB,YAAAqwV,UAAP,WACEntV,KAAKwd,MAAMyvU,KAAO,KAClBjtV,KAAKwd,MAAM0vU,aAAe,KAC1BltV,KAAKwd,MAAMuvU,QAAU,MAhGZK,EAAiB,GAD7B,uB,uBAY8B,mB,OAAA,IAAZ,UAAY,SACmC,mBADnC,OACmC,IAA1B,UAA0B,SAC5B,mBAD4B,OAC5B,IAAZ,UAAY,SACZ,mBADY,OACZ,IAAN,oBAAM,SACK,mBADL,OACK,IAAf,sCAAe,YAflBA,GAAb,I,4FCdA1xV,EAAOD,QAAU,syH,upBCWjB,aAKE,WACUsE,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAERpsN,KAAKC,OAAS,aAAWC,UAAU,sB,QAgFvC,OA7ES,YAAA+V,gBAAP,SAAuBzT,EAA6BsD,GAClD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,iBACVoD,KAAM,eACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,uCAGtB,CACEqC,MAAO,aACPpI,SAAU,4CACVoD,KAAM,qBACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBspM,sBAClEvmQ,MAAOtH,KAAKD,KAAKM,GAAG,sCAGtB,CACEqC,MAAO,WACPpI,SAAU,2BACVoD,KAAM,mBACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB0nM,eAClE3kQ,MAAOtH,KAAKD,KAAKM,GAAG,oCAGtB,CACEqC,MAAO,kBACPpI,SAAU,iCACVoD,KAAM,0BACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB+nM,oBAClEhlQ,MAAOtH,KAAKD,KAAKM,GAAG,qDAGtB,CACEqC,MAAO,WACPpI,SAAU,0BACVoD,KAAM,mBACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB0nM,eAClE3kQ,MAAOtH,KAAKD,KAAKM,GAAG,sDAGtB,CACEqC,MAAO,uBACPpI,SAAU,sCACVoD,KAAM,uBACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB0nM,eAClE3kQ,MAAOtH,KAAKD,KAAKM,GAAG,6DA5DfgtV,EAAkB,GAD9B,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,qECXA3xV,EAAOD,QAAU,8M,mhECuBjB,aAoBE,WACU6xV,EACAhH,EACAv7B,EACAwiC,EACAC,EACA1qM,EACA4iM,EACA5/U,EACAuU,GARA,KAAAizU,cACA,KAAAhH,iBACA,KAAAv7B,qBACA,KAAAwiC,sBACA,KAAAC,iBACA,KAAA1qM,eACA,KAAA4iM,8BACA,KAAA5/U,SACA,KAAAuU,KApBF,KAAAmD,MAAuB,IAAI,IAG3B,KAAAiwU,UAAoB,GACpB,KAAAC,aAAuB,GACvB,KAAAC,mBAA6B,GAC7B,KAAAC,gBAAiC,GACjC,KAAA9G,UAA2B,GAC3B,KAAA+G,QAA0B,GAC1B,KAAAC,OAAyB,GAa/B9tV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,e,sBA8JvC,OA1JS,YAAAylV,yBAAP,sBACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,QAAQpyK,YAAY,mCAAmCwkD,WAC9Dn+K,GAAGrtC,KAAKwd,MAAMkB,SACd06T,OAAO,oBAAoBpyK,YAAY,mCAAmCwkD,WAC1E4tH,OAAO,oBAAoBpyK,YAAY,gDAAgDwkD,WACvF4tH,OAAO,aAAapyK,YAAY,4BAA4BwkD,WAC5D4tH,OAAO,YAAYpyK,YAAY,0BAA0BwkD,WACzD4tH,OAAO,UAAUpyK,YAAY,yBAAyBwkD,WAEtD4tH,OAAO,cAAcpyK,YAAY,0CAA0C7qI,QAAQ,YAAYqvL,WAC/F4tH,OAAO,UAAUpyK,YAAY,mCAAmCwkD,WAEhE4tH,OAAO,UAAUpyK,YAAY,mCAAmCwkD,WAAWvpG,MAAK,SAAA/6G,GAAK,SAAKsW,MAAM6pU,UAEhGh6S,GAAGrtC,KAAKwd,QAGC,YAAA5E,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,wEAC1CgE,KAAKC,OAAOE,KAAK,Y,gDAIVmhB,MAAMlhB,EAAOid,cAAiBiE,MAAMlhB,EAAOikV,gBAA5C,QACFrkV,KAAKqd,aAAejd,EAAOid,YAC3B,EAAArd,KAAoB,GAAMA,KAAKutV,oBAAoBjxU,SAASlc,EAAOikV,kB,OAC5C,OADvB,EAAKyI,aAAe,SACpB,EAAA9sV,KAAuB,GAAMA,KAAKsmV,eAAe/lL,wB,OAChC,OADjB,EAAKqtL,gBAAkB,SACvB,EAAA5tV,KAAiB,GAAMA,KAAKsmV,eAAe9lL,iB,OACtB,OADrB,EAAKsmL,UAAY,SACjB,EAAA9mV,KAAqB,GAAMA,KAAKwtV,eAAe/mD,0BAA0BzmS,KAAKqd,c,OAI7D,OAJjB,EAAKqwU,aAAgB,SACrB1tV,KAAKytV,UAAYztV,KAAK0tV,aAAa7oV,QAAO,SAAAqC,GAAI,OAACA,EAAEywE,iBACjD33E,KAAK2tV,mBAAqB3tV,KAAK0tV,aAC9B7oV,QAAO,SAAAqC,GAAI,OAAAA,EAAEywE,eAAiBzwE,EAAE6/U,qBACjC,EAAA/mV,KAAiB,GAAMA,KAAK+qT,mBAAmBzuS,SAASlc,EAAOid,c,cAA/D,EAAK0kC,UAAY,SAEZzgC,MAAMlhB,EAAOkkV,iBAAd,QACF,EAAAtkV,KAAa,GAAMA,KAAKwtV,eAAelxU,SAASlc,EAAOkkV,mB,OACxC,OADf,EAAK9mU,MAAQ,SACb,EAAAxd,KAAe,GAAMA,KAAKsmV,eAAe7lL,sBAAsBzgK,KAAKwd,MAAMgtS,Y,OAC5D,OADd,EAAKqjC,QAAU,SACf,EAAA7tV,KAAc,GAAMA,KAAKsmV,eAAe3lL,oBAAoB3gK,KAAKwd,MAAMuwU,W,cAAvE,EAAKD,OAAS,S,eAGd9tV,KAAKwd,MAAMkB,QAAQgiJ,SAAW1gK,KAAK8sV,aAAa7uU,UAChDje,KAAKwd,MAAMkB,QAAQqrC,UAAY,IAAI1wC,K,mBAErCrZ,KAAK2lV,2B,0DAIP3lV,KAAK8iJ,aAAahmJ,MAAM,G,iCAG5B,YAAAkxV,WAAA,SAAW3G,GACJA,IACHrnV,KAAKwd,MAAMI,OAAS,KACpB5d,KAAKwd,MAAM0qU,gBAAkB,OAIpB,YAAA9sO,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAEzC,OADPgE,KAAKC,OAAOE,KAAK,UACV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKwpR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAQT,sBAAI,sBAAO,C,IAAX,WACE,OAAQlmV,KAAKwtV,eAAepwU,OAAO7C,c,gCAGxB,YAAAmiD,KAAb,SAAkBwpR,G,qBAAuBlqV,GAAO,W,oEAC9CgE,KAAKC,OAAOE,KAAK,QACZH,KAAKwd,MAAMjB,GAAZ,MACK,GAAMvc,KAAKwtV,eAAevuV,OAAOe,KAAKwd,OAC1Cra,MAAK,SAAOsY,GAAuB,qC,yDAClCzb,KAAKwd,MAAMS,UAAYxC,EAASwC,UAGhCje,KAAKqa,GAAGb,QAAQ,IAAI,IAAqBiC,EAASiD,UAElD1e,KAAK8iJ,aAAaxiJ,QAAQ,qDAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,mB,OAAzC,MAAO,CAAP,EAAO,U,OAEA,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,uBAAwB,CAAEq7U,eAAgBrkV,KAAKwd,MAAMkB,QAAQgiJ,SAAU4jL,gBAAiBtkV,KAAKwd,MAAMS,a,OAA5I,MAAO,CAAP,EAAO,oBAGRhS,OAAM,SAAAnP,GACP,EAAKgmJ,aAAahmJ,MAAMA,O,OAhB5B,MAAO,CAAP,EAAO,U,OAoBA,SAAMkD,KAAKwtV,eAAe9wU,OAAO1c,KAAKwd,OAC1Cra,MAAK,SAAOsY,GAAuB,qC,yDAClCzb,KAAKwd,MAAMuvU,QAAU/sV,KAAKwd,MAAMuvU,QAKhC/sV,KAAKqa,GAAGb,QAAQ,IAAI,IAAqBiC,EAASiD,UAElD1e,KAAK8iJ,aAAaxiJ,QAAQ,sDAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,mB,OAAzC,MAAO,CAAP,EAAO,U,2BAIViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAjB5B,MAAO,CAAP,EAAO,kBAsBE,YAAAmxV,aAAb,SAA0BzjC,G,qBAAoBxuT,GAAO,W,wDAIpC,OAHfgE,KAAKwd,MAAMuwU,SAAW,KACtB/tV,KAAKwd,MAAM0wU,OAAS,KAEpB,EAAAluV,KAAe,GAAMA,KAAKsmV,eAAe7lL,sBAAsB+pJ,I,cAA/D,EAAKqjC,QAAU,S,YAGJ,YAAAM,WAAb,SAAwBJ,G,qBAAmB/xV,GAAO,W,wDAGlC,OAFdgE,KAAKwd,MAAM0wU,OAAS,KAEpB,EAAAluV,KAAc,GAAMA,KAAKsmV,eAAe3lL,oBAAoBotL,I,cAA5D,EAAKD,OAAS,S,YAGT,YAAAtF,QAAP,SAAe1kD,GAAf,WACE9jS,KAAKC,OAAO0zC,MAAM,WAClB,IAAIx3B,EAAa2nR,EAAOtmS,OAAO+wO,MAAM,GAErC,GADoB,IAAoBp9N,MAAM,UAAW,QACvC8P,QAAQ9E,GAAO,CAC/B,IAAI,EAAqB,IAAIm/B,WAC7B,EAAOK,cAAcx/B,GACrB,EAAOjf,OAAS,WACd,IAAI8vV,EAAkB,EAAOj9U,OAC7B,EAAKyN,MAAMyvU,KAAOD,EAClB,EAAKxvU,MAAM0vU,aAAe/wU,EAAKze,KAC/B,EAAK8f,MAAMuvU,QAAUxzS,IAAI0B,gBAAgB9+B,SAI3Cnc,KAAK8iJ,aAAahmJ,MAAM,sDAIrB,YAAAqwV,UAAP,WACEntV,KAAKwd,MAAMyvU,KAAO,KAClBjtV,KAAKwd,MAAM0vU,aAAe,KAC1BltV,KAAKwd,MAAMuvU,QAAU,MA9LZqB,EAAW,GADvB,uB,uBAsBmC,mB,OAAA,IAAX,UAAW,SACM,mBADN,OACM,IAAd,UAAc,SACQ,mBADR,OACQ,IAAlB,UAAkB,SACE,mBADF,OACE,IAAnB,UAAmB,SACJ,mBADI,OACJ,IAApB,UAAoB,SACV,mBADU,OACV,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1C,mBAD0C,OAC1C,IAAN,oBAAM,SACK,mBADL,OACK,IAAf,sCAAe,YA7BlBA,GAAb,I,gFCvBA1yV,EAAOD,QAAU,q3M,g/DCejB,aAcE,WACU4yV,EACAvrM,EACA4iM,EACA5/U,EACAilT,EACAujC,GALA,KAAAD,yBACA,KAAAvrM,eACA,KAAA4iM,8BACA,KAAA5/U,SACA,KAAAilT,qBACA,KAAAujC,4BAXF,KAAA9wU,MAAyB,IAAI,IAG7B,KAAA+wU,yBAA0C,GAUhDvuV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,uB,gBA6DvC,OAzDgB,YAAA0Y,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,iEAC1CgE,KAAKC,OAAOE,KAAK,YAEZmhB,MAAMlhB,EAAOkkV,kBAAqBhjU,MAAMlhB,EAAOid,cAAiBiE,MAAMlhB,EAAOikV,gBAA9E,YACFrkV,KAAKqd,aAAejd,EAAOid,YAC3Brd,KAAKqkV,gBAAkBjkV,EAAOouV,e,iBAIb,O,sBAAf,EAAAxuV,KAAe,GAAMA,KAAK+qT,mBAAmBzuS,SAASlc,EAAOkkV,kB,OAEhD,OAFb,EAAK5lU,QAAU,SAEf,EAAA1e,KAAa,GAAMA,KAAKquV,uBAAuB/xU,SAASlc,EAAOkkV,kB,OAE/B,OAFhC,EAAK9mU,MAAQ,SAEb,EAAAxd,KAAgC,GAAMA,KAAKsuV,0BAA0BvpM,+B,cAArE,EAAKwpM,yBAA2B,S,+BAGhCvuV,KAAK8iJ,aAAahmJ,MAAM,G,+BAUjB,YAAAs+G,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAEzC,OADPgE,KAAKC,OAAOE,KAAK,UACV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKwpR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAQT,sBAAI,sBAAO,C,IAAX,WACE,OAAQlmV,KAAKquV,uBAAuBjxU,OAAO7C,c,gCAGhC,YAAAmiD,KAAb,SAAkBwpR,G,qBAAuBlqV,GAAO,W,6DAGvC,OAFPgE,KAAKC,OAAOE,KAAK,QAEV,GAAMH,KAAKquV,uBAAuB3xU,OAAO1c,KAAKwd,OAClDra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,sDAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,mB,OAAzC,MAAO,CAAP,EAAO,U,2BAIViD,OAAM,SAACnP,GACN,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,kBAxEE2xV,EAAmB,GAD/B,uB,uBAgByD,mB,OAAA,IAAtB,UAAsB,SACpB,mBADoB,OACpB,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1C,mBAD0C,OAC1C,IAAN,oBAAM,SACwB,mBADxB,OACwB,IAAlB,UAAkB,SACO,mBADP,OACO,IAAlB,UAAkB,YApB5CA,GAAb,I,mGCfA/yV,EAAOD,QAAU,o2O,y+DCajB,aAWE,WACUizV,EACA5rM,EACA4iM,EACA5/U,EACAilT,GAJA,KAAA2jC,wBACA,KAAA5rM,eACA,KAAA4iM,8BACA,KAAA5/U,SACA,KAAAilT,qBAVF,KAAAvtS,MAAwB,IAAI,IAG5B,KAAA4mU,UAAoB,EAS1BpkV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,6B,cA2FvC,OAvFS,YAAAylV,yBAAP,sBACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,kBAAkBpyK,YAAY,6DAA6D7qI,QAAQ,YAAYqvL,WACtH4tH,OAAO,kCAAkCpyK,YAAY,6EAA6E7qI,QAAQ,YAAYqvL,WACtJ4tH,OAAO,0BAA0BpyK,YAAY,qEAAqEwkD,WAClHvpG,MAAK,SAAA/6G,GAAK,SAAKsW,MAAMmxU,2BACrBthT,GAAGrtC,KAAKwd,QAGC,YAAA5E,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,+DAEpEgE,KAAKokV,SAAWlB,EAAY78U,SAASP,OAAO5D,QAAQmP,QAAQ,oBAAsB,EAE7EiQ,MAAMlhB,EAAOkkV,iBAAd,Y,iBAIe,O,sBAAf,EAAAtkV,KAAe,GAAMA,KAAK+qT,mBAAmBzuS,SAASlc,EAAOkkV,kB,OAEhD,OAFb,EAAK5lU,QAAU,SAEf,EAAA1e,KAAa,GAAMA,KAAK0uV,sBAAsBpyU,SAASlc,EAAOkkV,kB,cAA9D,EAAK9mU,MAAQ,SAEbxd,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAMjB,YAAAs+G,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAEzC,OADPgE,KAAKC,OAAOE,KAAK,UACV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKwpR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAQT,sBAAI,sBAAO,C,IAAX,WACE,OAAQlmV,KAAK0uV,sBAAsBtxU,OAAO7C,c,gCAG/B,YAAAmiD,KAAb,SAAkBwpR,G,qBAAuBlqV,GAAO,W,6DAEvC,OADPgE,KAAKC,OAAOE,KAAK,QACV,GAAMH,KAAK0uV,sBAAsBhyU,OAAO1c,KAAKwd,OACjDra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,sDAErB4lV,EAAD,MACGlmV,KAAKokV,SAAN,MACK,GAAMpkV,KAAK8F,OAAOkD,gBAAgB,mB,OAAzC,MAAO,CAAP,EAAO,U,OAEA,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,uC,OAAzC,MAAO,CAAP,EAAO,U,2BAKZiD,OAAM,SAACnP,GACN,EAAKgmJ,aAAahmJ,MAAMA,O,OAd5B,MAAO,CAAP,EAAO,kBAkBI,YAAAiN,OAAb,W,iGACO/J,KAAKokV,SAAN,MACK,GAAMpkV,KAAK8F,OAAOkD,gBAAgB,mB,OAAzC,MAAO,CAAP,EAAO,U,OAEA,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,uC,OAAzC,MAAO,CAAP,EAAO,kBAIJ,YAAA4lV,cAAP,SAAqBC,GAIjB7uV,KAAKwd,MAAMsxU,+BAHRD,EAGyC,EAFA,GAMzC,YAAAE,qBAAP,SAA4BF,GACrBA,IACH7uV,KAAKwd,MAAMwxU,uBAAyB,OA5G7BC,EAAyB,GADrC,uB,uBAauD,mB,OAAA,IAArB,UAAqB,SAClB,mBADkB,OAClB,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1C,mBAD0C,OAC1C,IAAN,oBAAM,SACwB,mBADxB,OACwB,IAAlB,UAAkB,YAhBrCA,GAAb,I,gGCbAvzV,EAAOD,QAAU,2pJ,o+DCejB,aAcE,WACU4yV,EACAvrM,EACA4iM,EACA5/U,EACAilT,EACAujC,GALA,KAAAD,yBACA,KAAAvrM,eACA,KAAA4iM,8BACA,KAAA5/U,SACA,KAAAilT,qBACA,KAAAujC,4BAXF,KAAA9wU,MAAyB,IAAI,IAG7B,KAAA+wU,yBAA0C,GAUhDvuV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,uB,gBA6DvC,OAzDgB,YAAA0Y,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,iEAC1CgE,KAAKC,OAAOE,KAAK,YAEZmhB,MAAMlhB,EAAOkkV,kBAAqBhjU,MAAMlhB,EAAOid,cAAiBiE,MAAMlhB,EAAOikV,gBAA9E,YACFrkV,KAAKqd,aAAejd,EAAOid,YAC3Brd,KAAKqkV,gBAAkBjkV,EAAOouV,e,iBAIb,O,sBAAf,EAAAxuV,KAAe,GAAMA,KAAK+qT,mBAAmBzuS,SAASlc,EAAOkkV,kB,OAEhD,OAFb,EAAK5lU,QAAU,SAEf,EAAA1e,KAAa,GAAMA,KAAKquV,uBAAuB/xU,SAASlc,EAAOkkV,kB,OAE/B,OAFhC,EAAK9mU,MAAQ,SAEb,EAAAxd,KAAgC,GAAMA,KAAKsuV,0BAA0BvpM,+B,cAArE,EAAKwpM,yBAA2B,S,+BAGhCvuV,KAAK8iJ,aAAahmJ,MAAM,G,+BAUjB,YAAAs+G,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAEzC,OADPgE,KAAKC,OAAOE,KAAK,UACV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKwpR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAQT,sBAAI,sBAAO,C,IAAX,WACE,OAAQlmV,KAAKquV,uBAAuBjxU,OAAO7C,c,gCAGhC,YAAAmiD,KAAb,SAAkBwpR,G,qBAAuBlqV,GAAO,W,6DAGvC,OAFPgE,KAAKC,OAAOE,KAAK,QAEV,GAAMH,KAAKquV,uBAAuB3xU,OAAO1c,KAAKwd,OAClDra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,sDAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,mB,OAAzC,MAAO,CAAP,EAAO,U,2BAIViD,OAAM,SAACnP,GACN,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,kBAxEE2xV,EAAmB,GAD/B,uB,uBAgByD,mB,OAAA,IAAtB,UAAsB,SACpB,mBADoB,OACpB,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1C,mBAD0C,OAC1C,IAAN,oBAAM,SACwB,mBADxB,OACwB,IAAlB,UAAkB,SACO,mBADP,OACO,IAAlB,UAAkB,YApB5CA,GAAb,I,uFCfA/yV,EAAOD,QAAU,g3I,2rBCWjB,aAME,WACUsE,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAERpsN,KAAKC,OAAS,aAAWC,UAAU,iC,QAuCvC,OApCS,YAAA+V,gBAAP,SAAuBzT,EAA6BsD,GAClD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,8BACVoD,KAAM,4BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,kDAGtB,CACEqC,MAAO,aACPpI,SAAU,4CACVoD,KAAM,mCACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBspM,sBAClEvmQ,MAAOtH,KAAKD,KAAKM,GAAG,yCA7Bf6uV,EAA6B,GADzC,a,uBAQqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YARzCA,GAAb,I,8FCXAxzV,EAAOD,QAAU,8M,mqBCSjB,aAKE,WACUsE,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,qC,MAgCvC,OA7BE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,uCACVoD,KAAM,sCASR,CACEgF,MAAO,gCACPpI,SAAU,sCACVoD,KAAM,qCAGR,CACEgF,MAAO,yDACPpI,SAAU,kDACVoD,KAAM,kCAlCDyxV,EAAiC,GAD7C,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,mGCTAzzV,EAAOD,QAAU,uD,kjECcjB,aAsBE,WACU2e,EACA2wS,EACAqkC,EACAtsM,EACAh9I,GALV,WACU,KAAAsU,iBACA,KAAA2wS,qBACA,KAAAqkC,4BACA,KAAAtsM,eACA,KAAAh9I,SAjBF,KAAAupV,iBAA8B,GAC9B,KAAAltS,WAAwB,GACxB,KAAAgzG,UAAuB,GAKvB,KAAA73I,WAAoC,IAAI,wBAmFxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,yEAE7B6tC,EAAS7pC,KAAKsd,WAAWusB,OAAOylT,M,iBAMjB,O,sBAHXC,EAA2B,MAAV1lT,GAAoC,KAAlBA,EAAO8c,OAChD3mD,KAAKsd,WAAWusB,OAAO2lT,UAAYD,EAElB,GAAMvvV,KAAKovV,0BAA0Bt7U,KAAK9T,KAAKqd,YAAard,KAAKsd,a,OAkBlF,OAlBM7B,EAAW,SAEb8zU,GAAkB9zU,EAASgkU,aAAe,GAAKhkU,EAASphB,MAAQohB,EAASphB,KAAKO,OAAS,IAC7D6gB,EAASphB,KAAKwkB,MAAK,SAAAre,GAAQ,OAAAA,EAAKke,QAAQgiJ,WAAa,EAAKrjJ,iBAG9E,EAAyB5B,EAASphB,KAAK,GAAGqkB,QAAQgiJ,UAClD+uL,EAAuBzvV,KAAKmiD,WAAWn8C,MAAK,SAAA+zD,GAAK,OAAAA,EAAEx9C,KAAO,QAG1DkzU,EAAqB/uL,WAAa1gK,KAAKw0M,oBACzCx0M,KAAKw0M,kBAAoBi7I,EAAqB/uL,UAEhD1gK,KAAKqd,YAAcoyU,EAAqBlzU,MAKvC,CAAP,EAAOd,G,OAGP,O,WAAO,CAAP,EAAOzb,KAAK8iJ,aAAahmJ,MAAM,I,yBApGjCkD,KAAKC,OAAS,aAAWC,UAAU,uB,cAqIvC,OAlIgB,YAAAopD,SAAd,W,qBAA0BttD,GAAO,W,4DAE/B,IAAE,sBAAsBqxC,GAAG,SAAS,WAClC,IAAIk8E,EAAS,IAAEvpH,MAAMgG,KAAK,qBACtBsxK,EAAS,IAAEt3K,MAAMgG,KAAK,gBACtBsxK,EAAO18K,QAAU2uH,EAAO3uH,QAAU2uH,EAAOpkC,SAAS,aACpDmyF,EAAO9yF,YAAY,aAEnB8yF,EAAOhnI,SAAS,gB,iBAQD,O,sBAAjB,EAAAtwC,KAAiB,GAAMA,KAAK+qT,mBAAmBxtS,U,cAA/C,EAAK43I,UAAY,SAIjBn1J,KAAKmiD,WAAaniD,KAAKm1J,UAAUtwJ,QAAO,SAAAqC,GAAK,OAAAA,EAAEsiC,SAAW,IAAKkmT,aAG3D1vV,KAAKmiD,WAAWvnD,OAAS,GAE3BoF,KAAKqd,YAAcrd,KAAKmiD,WAAW,GAAG5lC,GACtCvc,KAAKqvV,iBAAmBrvV,KAAKm1J,UAAUtwJ,QAAO,SAAAqC,GAAK,OAAAA,EAAEsiC,SAAW,IAAKmmT,mBAGjE3vV,KAAKqvV,iBAAiBz0V,OAAS,IACjCoF,KAAKw0M,kBAAoBx0M,KAAKqvV,iBAAiB,GAAG9yU,IAE7C,GAAMvc,KAAKukV,aAThB,M,OASF,MAAO,CAAP,EAAO,U,cAGDqL,EAAgB5vV,KAAKm1J,UAAUtwJ,QAAO,SAAAqC,GAAK,OAAAA,EAAEsiC,SAAW,IAAKs6S,WAEjDlpV,OAAS,GACzBoF,KAAKqd,YAAcuyU,EAAc,GAAGlvL,SAC7B,GAAM1gK,KAAKukV,aAFhB,M,OAEF,MAAO,CAAP,EAAO,U,4CAKXvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BAKd,YAAAynV,SAAd,W,qBAA0BvoV,GAAO,W,8DAE3BgE,KAAKqd,YAAL,Y,iBAGiB,O,sBADjBrd,KAAKsd,WAAWusB,OAAO2lT,WAAY,EAClB,GAAMxvV,KAAKovV,0BAA0Bt7U,KAAK9T,KAAKqd,YAAard,KAAKsd,a,cAA5E7B,EAAW,SACjBzb,KAAKsd,WAAWoiU,UAAYjkU,EAASphB,KACrC2F,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,a,+BAGxCz/U,KAAK8iJ,aAAahmJ,MAAM,G,+BAKhB,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAoCK,YAAAyf,uBAAd,W,qBAAwC7zV,GAAO,W,sEAC7CgE,KAAKsd,WAAWoiU,UAAY,GAC5B1/U,KAAKsd,WAAWmiU,aAAe,GACzBqQ,EAAoB9vV,KAAKmiD,WAAWt9C,QAAO,SAAAk1D,GAAK,OAAAA,EAAE2mG,WAAa,EAAK8zC,sBACpD55M,OAAS,GAC7BoF,KAAKqd,YAAcyyU,EAAkB,GAAGvzU,GACjC,GAAMvc,KAAKukV,aAFhB,M,OAEF,MAAO,CAAP,EAAO,U,yBAIG,YAAAwL,gBAAd,SAA8B1yU,G,qBAAsBrhB,GAAO,W,kDAGlD,OADPgE,KAAKqd,YAAcA,EACZ,GAAMrd,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,kBAlJEyL,EAA8B,GAD1C,uB,uBAwByC,mB,OAAA,IAAd,UAAc,SACQ,mBADR,OACQ,IAAlB,UAAkB,SACc,mBADd,OACc,IAAzB,UAAyB,SAC1B,mBAD0B,OAC1B,IAAZ,UAAY,SACZ,mBADY,OACZ,IAAN,oBAAM,YA3BbA,GAAb,I,gHCdAt0V,EAAOD,QAAU,+zF,u8DCUjB,aAME,WACUsvT,EACAqkC,EACAtsM,GAFA,KAAAioK,qBACA,KAAAqkC,4BACA,KAAAtsM,eANF,KAAAtlI,MAA4B,IAAI,IAStCxd,KAAKC,OAAS,aAAWC,UAAU,0B,UAmBvC,OAfgB,YAAA0Y,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,0DAC1CgE,KAAKC,OAAOE,KAAK,Y,8CAIVmhB,MAAMlhB,EAAOikV,gBAAd,OACF,EAAArkV,KAAa,GAAMA,KAAKovV,0BAA0B9yU,SAASlc,EAAOikV,kB,OAAlE,EAAK7mU,MAAQ,S,sDAKfxd,KAAK8iJ,aAAahmJ,MAAM,G,+BA3BjBmzV,EAAsB,GADlC,uB,uBAQiD,mB,OAAA,IAAlB,UAAkB,SACc,mBADd,OACc,IAAzB,UAAyB,SAC1B,mBAD0B,OAC1B,IAAZ,UAAY,YATzBA,GAAb,I,uGCVAv0V,EAAOD,QAAU,o8D,yjECgBjB,aA0BE,WAGUm/D,EACAw0R,EACAtsM,EACAh9I,EACAuU,GAPV,WAGU,KAAAugD,QACA,KAAAw0R,4BACA,KAAAtsM,eACA,KAAAh9I,SACA,KAAAuU,KAvBF,KAAAg1U,iBAA8B,GAC9B,KAAAltS,WAAwB,GACxB,KAAAgzG,UAAuB,GAKvB,KAAA73I,WAAoC,IAAI,wBAOxC,KAAAy3I,cAA8B,GA8I9B,KAAAi4F,QAAU,6BAAUhxP,GAAO,W,yEAE7B6tC,EAAS7pC,KAAKsd,WAAWusB,OAAOylT,MACpC3mL,eAAentF,QAAQ,oBAA+B,MAAV3xC,EAAiB,GAAKA,G,iBAM/C,O,sBAHX0lT,EAA2B,MAAV1lT,GAAoC,KAAlBA,EAAO8c,OAChD3mD,KAAKsd,WAAWusB,OAAO2lT,UAAYD,EAElB,GAAMvvV,KAAKovV,0BAA0Bt7U,KAAK9T,KAAKqd,YAAard,KAAKsd,a,OAqBlF,OArBM7B,EAAW,SAEb8zU,GAAkB9zU,EAASgkU,aAAe,GAAKhkU,EAASphB,MAAQohB,EAASphB,KAAKO,OAAS,IAE7D6gB,EAASphB,KAAKwkB,MAAK,SAAAre,GAAQ,OAAAA,EAAKke,QAAQgiJ,WAAa,EAAKrjJ,iBAI9E,EAAyB5B,EAASphB,KAAK,GAAGqkB,QAAQgiJ,UAClD+uL,EAAuBzvV,KAAKmiD,WAAWn8C,MAAK,SAAA+zD,GAAK,OAAAA,EAAEx9C,KAAO,QAI1DkzU,EAAqB/uL,WAAa1gK,KAAKw0M,oBACzCx0M,KAAKw0M,kBAAoBi7I,EAAqB/uL,UAEhD1gK,KAAKqd,YAAcoyU,EAAqBlzU,MAKvC,CAAP,EAAOd,G,OAGP,O,WAAO,CAAP,EAAOzb,KAAK8iJ,aAAahmJ,MAAM,I,yBApKjCkD,KAAKC,OAAS,aAAWC,UAAU,uBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MAExB7Q,KAAK+0J,cAAc75J,KAAK8E,KAAKqa,GAAGtF,UAAU,IAAwB/U,KAAKsD,KAAKnE,KAAKa,Q,cAiMrF,OA9LgB,YAAAspD,SAAd,W,qBAA0BttD,GAAO,W,kDAa/B,OAXA,IAAE,sBAAsBqxC,GAAG,SAAS,WAClC,IAAIk8E,EAAS,IAAEvpH,MAAMgG,KAAK,qBACtBsxK,EAAS,IAAEt3K,MAAMgG,KAAK,gBACtBsxK,EAAO18K,QAAU2uH,EAAO3uH,QAAU2uH,EAAOpkC,SAAS,aACpDmyF,EAAO9yF,YAAY,aAEnB8yF,EAAOhnI,SAAS,gBAKpB,GAAMtwC,KAAKsD,Q,cAAX,S,YA4CK,YAAAoiE,OAAP,WACE1lE,KAAK+0J,cAAc5tJ,SAAQ,SAAAD,GAAK,OAAAA,EAAEykG,cAGtB,YAAAroG,KAAd,W,kGAEE,GADAtD,KAAKsd,WAAWusB,OAAOylT,MAAQ3mL,eAAexsF,QAAQ,qBAClB,IAAhCn8E,KAAK6Q,MAAMskJ,UAAUv6J,OACvB,U,8CASAoF,KAAKm1J,UAAYn1J,KAAK6Q,MAAMskJ,UAEE,IAA1Bn1J,KAAKm1J,UAAUv6J,OAAf,MACK,GAAMoF,KAAK8F,OAAOkD,gBAAgB,oBAAqB,CAAEiV,UAAWje,KAAKm1J,UAAU,GAAG54I,M,OAA7F,MAAO,CAAP,EAAO,U,cAGTvc,KAAKmiD,WAAaniD,KAAKm1J,UAAUtwJ,QAAO,SAAAqC,GAAK,OAAAA,EAAEsiC,SAAW,IAAKkmT,aAG3D1vV,KAAKmiD,WAAWvnD,OAAS,GAE3BoF,KAAKqd,YAAcrd,KAAKmiD,WAAW,GAAG5lC,GACtCvc,KAAKqvV,iBAAmBrvV,KAAKm1J,UAAUtwJ,QAAO,SAAAqC,GAAK,OAAAA,EAAEsiC,SAAW,IAAKmmT,mBAGjE3vV,KAAKqvV,iBAAiBz0V,OAAS,IACjCoF,KAAKw0M,kBAAoBx0M,KAAKqvV,iBAAiB,GAAG9yU,IAE7C,GAAMvc,KAAKukV,aAThB,M,OASF,MAAO,CAAP,EAAO,U,cAEDqL,EAAgB5vV,KAAKm1J,UAAUtwJ,QAAO,SAAAqC,GAAK,OAAAA,EAAEsiC,SAAW,IAAKs6S,WACjDlpV,OAAS,GACzBoF,KAAKqd,YAAcuyU,EAAc,GAAGlvL,SAC7B,GAAM1gK,KAAKukV,aAFhB,M,OAEF,MAAO,CAAP,EAAO,U,4CAKXvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAynV,SAAd,W,qBAA0BvoV,GAAO,W,8DAE3BgE,KAAKqd,YAAL,Y,iBAGiB,O,sBADjBrd,KAAKsd,WAAWusB,OAAO2lT,WAAY,EAClB,GAAMxvV,KAAKovV,0BAA0Bt7U,KAAK9T,KAAKqd,YAAard,KAAKsd,a,cAA5E7B,EAAW,SACjBzb,KAAKsd,WAAWoiU,UAAYjkU,EAASphB,KACrC2F,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,a,+BAGxCz/U,KAAK8iJ,aAAahmJ,MAAM,G,+BAKhB,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAwCK,YAAAyf,uBAAd,W,qBAAwC7zV,GAAO,W,sEAC7CgE,KAAKsd,WAAWoiU,UAAY,GAC5B1/U,KAAKsd,WAAWmiU,aAAe,GACzBqQ,EAAoB9vV,KAAKmiD,WAAWt9C,QAAO,SAAAk1D,GAAK,OAAAA,EAAE2mG,WAAa,EAAK8zC,sBACpD55M,OAAS,GAC7BoF,KAAKqd,YAAcyyU,EAAkB,GAAGvzU,GACjC,GAAMvc,KAAKukV,aAFhB,M,OAEF,MAAO,CAAP,EAAO,U,yBAIG,YAAAwL,gBAAd,SAA8B1yU,G,qBAAsBrhB,GAAO,W,kDAGlD,OADPgE,KAAKqd,YAAcA,EACZ,GAAMrd,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,kBAGK,YAAA5xO,OAAd,SAAqB10F,G,qBAAoBjiB,GAAO,W,yDAEtCgE,KAAK29I,W,IACN,gC,IAEA,0C,mBADI,SAAM39I,KAAK8F,OAAOkD,gBAAgBhJ,KAAK29I,UAAW,CAAE1/H,UAAWA,K,OAAtE,MAAO,CAAP,EAAO,U,OAEA,SAAMje,KAAK8F,OAAOkD,gBAAgBhJ,KAAK29I,UAAW,CAAE2mM,gBAAiBrmU,K,OAA5E,MAAO,CAAP,EAAO,U,OAEP,Y,yBA9NN,GADC,W,yDAID,GADC,W,4DAPUiyU,EAAmB,GAD/B,uB,uBA8B8B,mB,OAAA,IAAZ,UAAY,SACiC,mBADjC,OACiC,IAAzB,UAAyB,SAC1B,mBAD0B,OAC1B,IAAZ,UAAY,SACZ,mBADY,OACZ,IAAN,oBAAM,SACK,mBADL,OACK,IAAf,sCAAe,YAjClBA,GAAb,I,mGChBAx0V,EAAOD,QAAU,m7F,uqBCWjB,aAME,WACUsE,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAERpsN,KAAKC,OAAS,aAAWC,UAAU,2B,QAuCvC,OApCS,YAAA+V,gBAAP,SAAuBzT,EAA6BsD,GAClD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,uBACVoD,KAAM,qBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,kDAGtB,CACEqC,MAAO,aACPpI,SAAU,4CACVoD,KAAM,4BACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBspM,sBAClEvmQ,MAAOtH,KAAKD,KAAKM,GAAG,sCAGtB,CACEqC,MAAO,WACPpI,SAAU,2BACVoD,KAAM,yBACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBqmM,iBAClEtjQ,MAAOtH,KAAKD,KAAKM,GAAG,oCAGtB,CACEqC,MAAO,eACPpI,SAAU,gDACVoD,KAAM,8BACN4J,MAAOtH,KAAKD,KAAKM,GAAG,uCACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBqoM,oBA7C7DujF,EAAuB,GADnC,a,uBAQqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YARzCA,GAAb,I,gFCXAz0V,EAAOD,QAAU,8M,2gECkBjB,aAYE,WACU6qV,EACAv7B,EACAwiC,EACAzqM,EACA4iM,EACA5/U,EACAuU,GANA,KAAAisU,iBACA,KAAAv7B,qBACA,KAAAwiC,sBACA,KAAAzqM,eACA,KAAA4iM,8BACA,KAAA5/U,SACA,KAAAuU,KAhBF,KAAAmD,MAAsB,IAAI,IAI1B,KAAAowU,gBAAiC,GACjC,KAAA9G,UAA2B,GAC3B,KAAA+G,QAA0B,GAC1B,KAAAC,OAAyB,GAW/B9tV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,oB,kBAqHvC,OAjHgB,YAAA0Y,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,oEAC1CgE,KAAKC,OAAOE,KAAK,Y,gDAIVmhB,MAAMlhB,EAAOid,aAAd,QAEF,EAAArd,KAAuB,GAAMA,KAAKsmV,eAAe/lL,yB,OAChC,OADjB,EAAKqtL,gBAAkB,SACvB,EAAA5tV,KAAiB,GAAMA,KAAKsmV,eAAe9lL,iB,OAC1B,OADjB,EAAKsmL,UAAY,SACjB,EAAA9mV,KAAiB,GAAMA,KAAK+qT,mBAAmBzuS,SAASlc,EAAOid,c,cAA/D,EAAK0kC,UAAY,SAEZzgC,MAAMlhB,EAAOikV,gBAAd,OACF,EAAArkV,KAAa,GAAMA,KAAKutV,oBAAoBjxU,SAASlc,EAAOikV,kB,OAC7C,OADf,EAAK7mU,MAAQ,SACb,EAAAxd,KAAe,GAAMA,KAAKsmV,eAAe7lL,sBAAsBzgK,KAAKwd,MAAMgtS,Y,OAC5D,OADd,EAAKqjC,QAAU,SACf,EAAA7tV,KAAc,GAAMA,KAAKsmV,eAAe3lL,oBAAoB3gK,KAAKwd,MAAMuwU,W,cAAvE,EAAKD,OAAS,S,aAGd9tV,KAAKwd,MAAMkB,QAAQgiJ,SAAW1gK,KAAK+hD,UAAUxlC,GAC7Cvc,KAAKwd,MAAMkB,QAAQqrC,UAAY,IAAI1wC,K,iBAErCrZ,KAAK2lV,2B,0DAIP3lV,KAAK8iJ,aAAahmJ,MAAM,G,iCAIpB,YAAA6oV,yBAAR,WACE3lV,KAAKC,OAAOE,KAAK,4BACjBH,KAAKC,OAAO0zC,MAAM,QAAS3zC,KAAKwd,MAAMkB,SACtC,kBACG06T,OAAO,QAAQpyK,YAAY,wCAAwCwkD,WACnEn+K,GAAGrtC,KAAKwd,MAAMkB,SACd06T,OAAO,oBAAoBpyK,YAAY,mCAAmCwkD,WAC1E4tH,OAAO,aAAapyK,YAAY,4BAA4BwkD,WAC5D4tH,OAAO,YAAYpyK,YAAY,0BAA0BwkD,WACzD4tH,OAAO,UAAUpyK,YAAY,yBAAyBwkD,WACtDn+K,GAAGrtC,KAAKwd,QAQA,YAAA49F,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAEzC,OADPgE,KAAKC,OAAOE,KAAK,UACV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKwpR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAQT,sBAAI,sBAAO,C,IAAX,WACE,OAAQlmV,KAAKutV,oBAAoBnwU,OAAO7C,c,gCAG7B,YAAAmiD,KAAb,SAAkBwpR,G,qBAAuBlqV,GAAO,W,oEAC9CgE,KAAKC,OAAOE,KAAK,QACZH,KAAKwd,MAAMjB,GAAZ,MACK,GAAMvc,KAAKutV,oBAAoBtuV,OAAOe,KAAKwd,OAC/Cra,MAAK,SAAOsY,GAAsB,qC,yDACjCzb,KAAKwd,MAAQ/B,EAGbzb,KAAKqa,GAAGb,QAAQ,IAAI,IAAqBxZ,KAAKwd,MAAMkB,UAEpD1e,KAAK8iJ,aAAaxiJ,QAAQ,gEAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,mB,OAAzC,MAAO,CAAP,EAAO,U,OAEA,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,6BAA8B,CAAEq7U,eAAgBrkV,KAAKwd,MAAMS,a,OAApG,MAAO,CAAP,EAAO,oBAGRhS,OAAM,SAAAnP,GACP,EAAKgmJ,aAAahmJ,MAAMA,O,OAhB5B,MAAO,CAAP,EAAO,U,OAmBA,SAAMkD,KAAKutV,oBAAoB7wU,OAAO1c,KAAKwd,OAC/Cra,MAAK,gD,yDAEJnD,KAAKqa,GAAGb,QAAQ,IAAI,IAAqBxZ,KAAKwd,MAAMkB,UAEpD1e,KAAK8iJ,aAAaxiJ,QAAQ,iEAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,mB,OAAzC,MAAO,CAAP,EAAO,U,2BAIViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAb5B,MAAO,CAAP,EAAO,kBAkBE,YAAAmxV,aAAb,SAA0BzjC,G,qBAAoBxuT,GAAO,W,wDAIpC,OAHfgE,KAAKwd,MAAMuwU,SAAW,KACtB/tV,KAAKwd,MAAM0wU,OAAS,KAEpB,EAAAluV,KAAe,GAAMA,KAAKsmV,eAAe7lL,sBAAsB+pJ,I,cAA/D,EAAKqjC,QAAU,S,YAGJ,YAAAM,WAAb,SAAwBJ,G,qBAAmB/xV,GAAO,W,wDAGlC,OAFdgE,KAAKwd,MAAM0wU,OAAS,KAEpB,EAAAluV,KAAc,GAAMA,KAAKsmV,eAAe3lL,oBAAoBotL,I,cAA5D,EAAKD,OAAS,S,YA1ILsC,EAAgB,GAD5B,uB,uBAcyC,mB,OAAA,IAAd,UAAc,SACQ,mBADR,OACQ,IAAlB,UAAkB,SACE,mBADF,OACE,IAAnB,UAAmB,SACd,mBADc,OACd,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1C,mBAD0C,OAC1C,IAAN,oBAAM,SACK,mBADL,OACK,IAAf,sCAAe,YAnBlBA,GAAb,I,yFClBA10V,EAAOD,QAAU,wjH,kqBCSjB,aAKE,WACUsE,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,wC,MAwBvC,OArBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,6BACVoD,KAAM,oBAKR,CACEgF,MAAO,yBACPpI,SAAU,oCACVoD,KAAM,kCACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,6CA1BfgwV,EAAoC,GADhD,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,+FCTA30V,EAAOD,QAAU,uD,wFCCjB,kF,gFCDAC,EAAOD,QAAU,0Z,upECyBjB,aAWE,WACU8xV,EACAC,EACAtJ,EACAphM,EACAh9I,EACAuU,GANV,WACU,KAAAkzU,sBACA,KAAAC,iBACA,KAAAtJ,gBACA,KAAAphM,eACA,KAAAh9I,SACA,KAAAuU,KAdF,KAAAja,OAAc,GAGd,KAAAkd,WAAoC,IAAI,wBAGxC,KAAAivU,UAAoB,EAiEpB,KAAAv/F,QAAU,6BAAUhxP,GAAO,W,uEACjCgE,KAAKC,OAAOE,KAAK,c,iBAME,O,sBAJX0pC,EAAS7pC,KAAKsd,WAAWusB,OAAOylT,MAChCC,EAA2B,MAAV1lT,GAAoC,KAAlBA,EAAO8c,OAChD3mD,KAAKsd,WAAWusB,OAAO2lT,UAAYD,EAElB,GAAMvvV,KAAKutV,oBAAoBz5U,KAAK9T,KAAKqd,YAAard,KAAKsd,a,OAa5E,OAbM7B,EAAW,SAEb8zU,GAAkB9zU,EAASgkU,aAAe,GAAKhkU,EAASphB,MAAQohB,EAASphB,KAAKO,OAAS,IAC7D6gB,EAASphB,KAAKwkB,MAAK,SAAAre,GAAQ,OAAAA,EAAKke,QAAQgiJ,WAAa,EAAKrjJ,iBAG9EizU,EAAyB70U,EAASphB,KAAK,GAAGqkB,QAAQgiJ,WAEtD1gK,KAAK8F,OAAOkD,gBAAgB,kCAAmC,CAAEqU,YAAaizU,KAK7E,CAAP,EAAO70U,G,OAGP,O,WAAO,CAAP,EAAOzb,KAAK8iJ,aAAahmJ,MAAM,I,yBA9EjCkD,KAAKC,OAAS,aAAWC,UAAU,oB,gBAwMvC,OArMgB,YAAA0Y,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,yDAGtCgE,KAAKI,OAAOid,aAAejd,EAAOid,aAAerd,KAAKusV,UACxDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAKX,YAAAkpD,SAAP,WACE,EAAE,sBAAsBjc,GAAG,SAAS,WAClC,IAAIk8E,EAAS,EAAEvpH,MAAMgG,KAAK,qBACtBsxK,EAAS,EAAEt3K,MAAMgG,KAAK,gBACtBsxK,EAAO18K,QAAU2uH,EAAO3uH,QAAU2uH,EAAOpkC,SAAS,aACpDmyF,EAAO9yF,YAAY,aAEnB8yF,EAAOhnI,SAAS,iBAKR,YAAAnxC,KAAd,W,qBAAsBnD,GAAO,W,yDAC3BgE,KAAKC,OAAOE,KAAK,QACZmhB,MAAMthB,KAAKI,OAAOid,aAAnB,OACFrd,KAAKqd,aAAerd,KAAKI,OAAOid,YAChCrd,KAAKusV,UAAW,EAET,GAAMvsV,KAAKukV,a,OAAlB,MAAO,CAAP,EAAO,U,yBAIE,YAAAA,SAAb,W,qBAAyBvoV,GAAO,W,6DAEvB,OADPgE,KAAKsd,WAAWusB,OAAO2lT,WAAY,EAC5B,GAAMxvV,KAAKutV,oBAAoBz5U,KAAK9T,KAAKqd,YAAard,KAAKsd,YAC/Dna,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,aACxC,EAAKx/U,OAAO0zC,MAAM,gBAAiB,EAAKr2B,WAAWmiU,iBAEpDxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBA8BK,YAAAnxU,OAAd,W,qBAAwBjD,GAAO,W,kDACtB,SAAMgE,KAAK8F,OAAOkD,gBAAgB,6BAA8B,CAAEq7U,eAAgB,Y,OAAzF,MAAO,CAAP,EAAO,kBAGK,YAAAF,WAAd,SAAyBoM,EAAoB7vL,G,qBAAmB1kK,GAAO,W,kDAC9D,SAAMgE,KAAK8F,OAAOyC,SAAS,iBAAiBm4J,EAAQ,YAAY6vL,EAAU,gB,OAAjF,MAAO,CAAP,EAAO,kBAGK,YAAAzzU,OAAd,SAAqBgwU,G,qBAA6B9wV,GAAO,W,6DAChD,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOsvU,EAAapuU,QAAQhhB,OAE3Bg7J,YAAW,SAAOj9I,GAA2B,qC,oEACvCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKutV,oBAAoBzwU,OAAOgwU,EAAavwU,IACvDpZ,MAAK,WAGJ,EAAKkX,GAAGb,QAAQ,IAAI,IAAsBszU,EAAa7uU,YAEvD,IAAMwmU,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,IAAMuwU,EAAavwU,MACjG,EAAKe,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAEhB,EAAK38L,aAAaxiJ,QAAQ,iCAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAb5B,MAAO,CAAP,EAAO,U,mCANb,MAAO,CAAP,EAAO,kBAyBK,YAAA04J,cAAd,SAA4B92I,G,qBAAmB1iB,GAAO,W,6DAC7C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOkB,EAAQhhB,OAEdg7J,YAAW,SAAOj9I,GAA2B,qC,oEACvCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKwtV,eAAe1wU,OAAO4B,EAAQnC,IAC7CpZ,MAAK,WAGJ,EAAKkX,GAAGb,QAAQ,IAAI,IAAsBkF,EAAQnC,KAElD,IAAIuwU,EAAe,EAAKxvU,WAAWoiU,UAAU15U,MAAK,SAAAkB,GAAK,OAAAA,EAAE+W,WAAaS,EAAQgiJ,YACxE+jL,EAA6BqI,EAAa33L,UAAU+d,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,IAAMmC,EAAQnC,MACzFuwU,EAAa33L,UAAUh+I,OAAOstU,EAAoB,GAElD,EAAK3hM,aAAaxiJ,QAAQ,iCAE3B2L,OAAM,SAACnP,GACN,EAAKgmJ,aAAahmJ,MAAMA,O,OAb5B,MAAO,CAAP,EAAO,U,mCANb,MAAO,CAAP,EAAO,kBAyBK,YAAA0zV,mBAAd,SAAiChwV,G,qBAAgBxE,GAAO,W,6DAE/C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK9C,OACXg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKwtV,eAAe/vU,YAAYjd,EAAK+b,IAC/CpZ,MAAK,WAKJ,EAAKkX,GAAGb,QAAQ,IAAI,IAAqBhZ,IAEzC,EAAKsiJ,aAAaxiJ,QAAQ,wDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAX5B,MAAO,CAAP,EAAO,U,OAeP0D,EAAK8F,UAAY9F,EAAK8F,S,6CApB1B,MAAO,CAAP,EAAO,kBAyBK,YAAAmqV,wBAAd,SAAsCjwV,G,qBAAqBxE,GAAO,W,6DAEzD,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAKke,QAAQhhB,OACnBg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKutV,oBAAoB9vU,YAAYjd,EAAKyd,WACpD9a,MAAK,WAGJ3C,EAAK20J,UAAUhuJ,SAAQ,SAAAD,GACrBA,EAAEZ,SAAW9F,EAAKke,QAAQpY,YAI5B,EAAK+T,GAAGb,QAAQ,IAAI,IAAqBhZ,EAAKke,UAE9C,EAAKokI,aAAaxiJ,QAAQ,6DAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAd5B,MAAO,CAAP,EAAO,U,OAkBP0D,EAAKke,QAAQpY,UAAY9F,EAAKke,QAAQpY,S,6CAvB1C,MAAO,CAAP,EAAO,kBA9LEoqV,EAAgB,GAD5B,uB,uBAamD,mB,OAAA,IAAnB,UAAmB,SACJ,mBADI,OACJ,IAApB,UAAoB,SACR,mBADQ,OACR,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACZ,mBADY,OACZ,IAAN,oBAAM,SACK,mBADL,OACK,IAAf,sCAAe,YAjBlBA,GAAb,I,gqBChBA,aAKE,WACU3wV,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,+B,MA0BvC,OAvBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,uBACVoD,KAAM,kBAGR,CACEgF,MAAO,gCACPpI,SAAU,+BACVoD,KAAM,8BAGR,CACEgF,MAAO,yDACPpI,SAAU,oCACVoD,KAAM,2BA5BDizV,EAA2B,GADvC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,qFCTAj1V,EAAOD,QAAU,uD,0ECAjBC,EAAOD,QAAU,o8I,olECsBjB,aAcE,WACUm/D,EACAmwP,EACAw7B,EACArC,EACAphM,GALV,WACU,KAAAloF,QACA,KAAAmwP,qBACA,KAAAw7B,iBACA,KAAArC,gBACA,KAAAphM,eAhBF,KAAA1iJ,OAAc,GAMd,KAAAmsV,UAAoB,EAEpB,KAAAjvU,WAAoC,IAAI,wBA+ExC,KAAA0vO,QAAU,WAChB,OAAO,EAAKu5F,eAAezyU,KAAK,EAAKmK,UAAW,EAAKX,aAtErDtd,KAAKC,OAAS,aAAWC,UAAU,eAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,cA4I5B,OAxIgB,YAAA+H,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,yDAEtCgE,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAKJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,oEACtBslB,MAAMthB,KAAKI,OAAOikV,kBACrBrkV,KAAKie,WAAaje,KAAKI,OAAOikV,gBAG5BrkV,KAAKI,OAAOkkV,iBAAmD,WAAhCtkV,KAAKI,OAAOkkV,kBAC7CtkV,KAAKie,UAAY,MAGdqD,MAAMthB,KAAKI,OAAOkkV,mBACrBtkV,KAAKie,WAAaje,KAAKI,OAAOkkV,iBAG5BtkV,KAAKie,WACPje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAC3Dje,KAAKusV,UAAW,EACT,GAAMvsV,KAAKukV,aAHhB,M,OAGF,MAAO,CAAP,EAAO,U,yBAmBE,YAAAA,SAAb,W,qBAAyBvoV,GAAO,W,6DAEvB,SAAMgE,KAAKumV,eAAezyU,KAAK9T,KAAKie,UAAWje,KAAKsd,YACxDna,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAQK,YAAAnxU,OAAd,W,qBAAwBjD,GAAO,W,+DAGtB,OAFHwE,EAAgB,IAAI,KACnByd,UAAYje,KAAKie,UACf,GAAMje,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,6DACzCA,EAASw9B,aAAV,Y,iBAEuB,O,sBAAA,GAAMj5C,KAAKumV,eAAetnV,OAAOuB,I,cAApDowV,EAAmB,SACvBpwV,EAAK+b,GAAKq0U,EAAQr0U,GAElBvc,KAAKsd,WAAWoiU,UAAU57U,QAAQtD,GAClCR,KAAKsd,WAAWmiU,eAEhBz/U,KAAK8iJ,aAAaxiJ,QAAQ,4B,+BAI1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCAhB9B,MAAO,CAAP,EAAO,kBAsBK,YAAAuxO,KAAd,SAAmB7tO,G,qBAAgBxE,GAAO,W,+DAEjC,OADH60V,EAAe3/U,KAAKC,MAAMD,KAAKE,UAAU5Q,IACtC,GAAMR,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKumV,eAAe7pU,OAAOlc,GACrC2C,MAAK,gD,kCAEJnD,KAAK8iJ,aAAaxiJ,QAAQ,6B,aAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,U,OAUPjC,OAAOgI,OAAOrC,EAAMqwV,G,6CAfxB,MAAO,CAAP,EAAO,kBAoBK,YAAA/zU,OAAd,SAAqBP,EAAY7e,G,qBAAe1B,GAAO,W,6DAC9C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IACNg7J,YAAW,SAACj9I,GACRA,EAASw9B,cACZ,EAAKstS,eAAezpU,OAAOP,GACxBpZ,MAAK,WAEJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQkL,EAAGyC,YAChG,EAAK1B,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAEhB,EAAK38L,aAAaxiJ,QAAQ,iCAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,U,OAfhC,MAAO,CAAP,EAAO,kBA/IEg0V,EAAW,GADvB,uB,uBAgB8B,mB,OAAA,IAAZ,UAAY,SACmB,mBADnB,OACmB,IAAlB,UAAkB,SACR,mBADQ,OACR,IAAd,UAAc,SACF,mBADE,OACF,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YAnBzBA,GAAb,I,6ECtBAp1V,EAAOD,QAAU,2kF,k7DCQjB,aAOE,WACU6lD,EACAokS,GADA,KAAApkS,mBACA,KAAAokS,8BAPF,KAAAloU,MAAiB,IAAI,IAS3Bxd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,gB,QAgCvC,OA5BQ,YAAA0Y,SAAN,SAAe4E,G,qBAAiBxhB,GAAO,W,kCACrCgE,KAAKC,OAAO0zC,MAAM,YAClB3zC,KAAKwd,MAAQA,EACbxd,KAAK2lV,2B,WAGP,YAAAA,yBAAA,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,YAAYpyK,YAAY,uCAAuCwkD,WACtE4tH,OAAO,gBAAgBpyK,YAAY,mCAAmCn8F,QAAQ2gJ,WAC9En+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,W,qBAAuBp/G,GAAO,W,sCAC5B,MAAO,CAAP,EAAOgE,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKF,YAAAA,KAAb,W,qBAAqB1gE,GAAO,W,kDAEnB,OADPgE,KAAKC,OAAO0zC,MAAM,SACX,GAAM3zC,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBA3CEmrR,EAAY,GADxB,uB,uBAS6C,mB,OAAA,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,YATvDA,GAAb,K,8ECRAr1V,EAAOD,QAAU,6gD,6nBCSjB,aAKE,WACUsE,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,wB,MAuBvC,OApBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,oBACVoD,KAAM,mBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,kCAGtB,CACEqC,MAAO,mBACPpI,SAAU,0CACVoD,KAAM,+BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,0CA1Bf2wV,EAAoB,GADhC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,4ECTAt1V,EAAOD,QAAU,6kB,+/DCUjB,aAIE,WACUqK,EACAo+U,EACA+M,EACAnuM,GAHA,KAAAh9I,SACA,KAAAo+U,gBACA,KAAA+M,mBACA,KAAAnuM,eAER9iJ,KAAKC,OAAS,aAAWC,UAAU,uB,YA+BvC,OA5BgB,YAAAjB,OAAd,W,qBAAwBjD,GAAO,W,+DAEtB,OADHwE,EAAc,IAAI,IACf,GAAMR,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,OACFj5C,KAAKC,OAAO0zC,MAAM,kBAAmBl4B,EAASxR,QACvC,GAAMjK,KAAKixV,iBAAiBhyV,OAAOuB,GACvC2C,MAAK,SAAOqa,GAAY,qC,yDAGvBxd,KAAK8iJ,aAAaxiJ,QAAQ,4BAEtBmb,EAASxR,OACJ,GAAMjK,KAAK8F,OAAOkD,gBAAgB,0BAA2B,CAAEkoV,YAAa1zU,EAAMjB,MADvF,M,OACF,MAAO,CAAP,EAAO,U,OAEA,SAAMvc,KAAK8F,OAAOkD,gBAAgB,gB,OAAzC,MAAO,CAAP,EAAO,oBAIViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,Q,OAd5B,MAAO,CAAP,EAAO,U,mCANX,MAAO,CAAP,EAAO,kBAfEq0V,EAAmB,GAD/B,uB,uBAMyB,mB,OAAA,IAAN,oBAAM,SACc,mBADd,OACc,IAAb,kCAAa,SACM,mBADN,OACM,IAAhB,UAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,YARzBA,GAAb,I,0FCVAz1V,EAAOD,QAAU,oa,68DCWjB,aAQE,WACU6lD,EACAwhG,EACA4iM,EACAuL,GAHA,KAAA3vS,mBACA,KAAAwhG,eACA,KAAA4iM,8BACA,KAAAuL,mBAERjxV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,cACnCF,KAAK2lV,2B,YA8BT,OA3BgB,YAAA/sU,SAAd,SAAuBpY,G,qBAAcxE,GAAO,W,6DAEnC,OADPgE,KAAKoxV,cAAgBv2V,OAAOgI,OAAO,IAAI,IAASrC,GACzC,GAAMR,KAAKixV,iBAAiB1zU,SAChCpa,MAAK,SAAAkuV,GAAc,SAAKA,WAAaA,KACrCluV,MAAK,WAEJ,EAAKkuV,WAAWl6U,OAAO,EAAKk6U,WAAW1sV,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ7Q,EAAK+b,GAAGyC,YAAa,MAE/F/S,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWD,YAAA6oV,yBAAR,WACE,kBACGvM,OAAO,8BAA8BpyK,YAAY,uDAAuDwkD,WACxGn+K,GAAGrtC,OAGK,YAAAo7G,OAAb,W,qBAAuBp/G,GAAO,W,6DACrB,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAKshD,iBAAiBskB,GAAG5lE,KAAK45Q,6BADzC,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAzCE03E,EAAoB,GADhC,uB,uBAU6C,mB,OAAA,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACtB,mBADsB,OACtB,IAAhB,UAAgB,YAZjCA,GAAb,K,2FCXA51V,EAAOD,QAAU,ysC,89DCajB,aAOE,WACUqK,EACAw7C,EACAwhG,EACA4iM,EACAuL,GAJA,KAAAnrV,SACA,KAAAw7C,mBACA,KAAAwhG,eACA,KAAA4iM,8BACA,KAAAuL,mBATF,KAAAzzU,MAAe,IAAI,IACnB,KAAAwuU,iBAA2B,EAUjChsV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,iB,cAkDvC,OA9CgB,YAAA0Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,6DAC/DslB,MAAMlhB,EAAO8wV,aAAd,Y,iBAEa,O,sBAAb,EAAAlxV,KAAa,GAAMA,KAAKixV,iBAAiB30U,SAASlc,EAAO8wV,c,cAAzD,EAAK1zU,MAAQ,SACbxd,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAKtB,YAAA6oV,yBAAR,WACE,kBACGvM,OAAO,QAAQpyK,YAAY,qCAAqCwkD,WAChEn+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,SAAoB4wO,G,qBAA2BhwV,GAAO,W,sCAEpD,OADAgE,KAAKgsV,gBAAkBA,EAChB,CAAP,EAAOhsV,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKf,sBAAI,sBAAO,C,IAAX,WACE,OAAQ18D,KAAKixV,iBAAiB7zU,OAAO7C,c,gCAG1B,YAAAmiD,KAAb,W,qBAAqB1gE,GAAO,W,6DACnB,SAAMgE,KAAKixV,iBAAiBv0U,OAAO1c,KAAKwd,OAC5Cra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6BAErBN,KAAKgsV,gBAAN,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,gB,OAAzC,MAAO,CAAP,EAAO,U,2BAGViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,kBAtDEy0V,EAAa,GADzB,uB,uBASyB,mB,OAAA,IAAN,oBAAM,SACoB,mBADpB,OACoB,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACtB,mBADsB,OACtB,IAAhB,UAAgB,YAZjCA,GAAb,I,mFCbA71V,EAAOD,QAAU,glD,ymECkBjB,aAkBE,WACUqK,EACA0rV,EACAtN,EACAphM,GAJV,WACU,KAAAh9I,SACA,KAAA0rV,mBACA,KAAAtN,gBACA,KAAAphM,eAlBF,KAAAxlI,WAAoC,IAAI,wBAGxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAKwxV,iBAAiB19U,KAAK9T,KAAKsd,YAC1Cna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAePkD,KAAKC,OAAS,aAAWC,UAAU,iB,YAyFvC,OArFgB,YAAA0Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACpEgE,KAAKC,OAAO0zC,MAAM,Y,WAIN,YAAAx0C,KAAd,W,qBAAsBnD,GAAO,W,kDAEpB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,kBAGK,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAGxB,OAFPgE,KAAKC,OAAO0zC,MAAM,YAEX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAAnxU,OAAd,W,qBAAwBjD,GAAO,W,+DAEtB,OADHwE,EAAc,IAAI,IACf,GAAMR,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEAEzCA,EAASw9B,aAAV,OAEFj5C,KAAKC,OAAO0zC,MAAM,kBAAmBl4B,EAASxR,QAEvC,GAAMjK,KAAKwxV,iBAAiBvyV,OAAOuB,GACvC2C,MAAK,SAAOqa,GAAY,qC,yDAEvBxd,KAAKC,OAAO0zC,MAAM,YAAan2B,EAAMjB,IACrC/b,EAAK+b,GAAKiB,EAAMjB,GAEZd,EAASxR,OAEJ,GAAMjK,KAAK8F,OAAOkD,gBAAgB,0BAA2B,CAAEkoV,YAAa1zU,EAAMjB,MAFvF,M,OAEF,MAAO,CAAP,EAAO,U,OAEPvc,KAAKC,OAAO0zC,MAAM,SAAUnzC,GAC5BR,KAAKsd,WAAWoiU,UAAU57U,QAAQtD,GAClCR,KAAKsd,WAAWmiU,eAChBz/U,KAAK8iJ,aAAaxiJ,QAAQ,4B,qCAI7B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,Q,OAlB5B,MAAO,CAAP,EAAO,U,mCATX,MAAO,CAAP,EAAO,kBAiCK,YAAAggB,OAAd,SAAqBtc,G,qBAAcxE,GAAO,W,6DACjC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,sEACzCA,EAASw9B,aAAV,MACEx9B,EAASxR,QACP2vQ,EAA6Cn+P,EAASxR,OAC1DjK,KAAKC,OAAO0zC,MAAM,+BAAgCimO,GAC3C,GAAM55Q,KAAKwxV,iBAAiB10U,OAAOtc,EAAK+b,GAAIq9P,GAChDz2Q,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ7Q,EAAK+b,GAAGyC,YACrG,EAAK1B,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,iCAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,QAX1B,M,OAGF,MAAO,CAAP,EAAO,U,mCARb,MAAO,CAAP,EAAO,kBA3FE20V,EAAa,GADzB,a,uBAoByB,mB,OAAA,IAAN,oBAAM,SACoB,mBADpB,OACoB,IAAhB,UAAgB,SACN,mBADM,OACN,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YAtBzBA,GAAb,I,upBCTA,aAKE,WACU1xV,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,4B,MAuBvC,OApBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,oBACVoD,KAAM,eAKR,CACEgF,MAAO,0BACPpI,SAAU,4BACVoD,KAAM,8BAxBDg0V,EAAwB,GADpC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,+ECTAh2V,EAAOD,QAAU,uD,oECAjBC,EAAOD,QAAU,ikF,u7DCUjB,aAQE,WACU6lD,EACAokS,EACAuL,GAFA,KAAA3vS,mBACA,KAAAokS,8BACA,KAAAuL,mBARF,KAAAjF,iBAA2B,EAUjChsV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,kB,UAmCvC,OA/BS,YAAAf,KAAP,sBACEa,KAAKixV,iBAAiB1zU,SAASpa,MAAK,SAAAkuV,GAAc,SAAKA,WAAaA,MAG/D,YAAAz4U,SAAP,SAAgB4E,GACdxd,KAAKwd,MAAQA,EACbxd,KAAK2lV,4BAGC,YAAAA,yBAAR,WACE,kBACGvM,OAAO,QAAQpyK,YAAY,qCAAqCwkD,WAChE4tH,OAAO,cAAcpyK,YAAY,oDAAoDwkD,WACrFn+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,SAAoB4wO,G,qBAA2BhwV,GAAO,W,6DAE7C,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKsvR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAQI,YAAAtvR,KAAb,SAAkBsvR,G,qBAA2BhwV,GAAO,W,kDAG3C,OAFPgE,KAAKC,OAAO0zC,MAAM,QAASq4S,GAC3BhsV,KAAK01U,qBAAqBlnU,QACnB,GAAMxO,KAAKshD,iBAAiBskB,GAAGomR,I,OAAtC,MAAO,CAAP,EAAO,kBAjDE2F,EAAc,GAD1B,a,uBAU6C,mB,OAAA,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,SACtB,mBADsB,OACtB,IAAhB,UAAgB,YAXjCA,GAAb,K,oFCVAj2V,EAAOD,QAAU,yqD,ylECyBjB,aAkBE,WACUqK,EACAg9I,EACA4iM,EACAuL,EACAW,EACA1N,EACAnkV,GANA,KAAA+F,SACA,KAAAg9I,eACA,KAAA4iM,8BACA,KAAAuL,mBACA,KAAAW,wBACA,KAAA1N,gBACA,KAAAnkV,OAlBF,KAAAisV,iBAA2B,EAC3B,KAAAO,UAAoB,EAEpB,KAAA/nR,YAAiC,IAAI9jE,MAErC,KAAAmxV,6BAA8C,IAAInxV,MAElD,KAAAoxV,YAA6B,GAE7B,KAAAC,SAAuB,GAW7B/xV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,sB,kBA+KvC,OA5KgB,YAAA0Y,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,yEAC1CgE,KAAKusV,UAAW,EAEhBvsV,KAAKC,OAAO0zC,MAAM,gBAAiBvzC,EAAO8wV,aAC1ClxV,KAAK00M,SAAWt0M,EAAO8wV,YAElBlxV,KAAK00M,QAAN,MACK,GAAM10M,KAAK8F,OAAOkD,gBAAgB,gB,OAAzC,MAAO,CAAP,EAAO,U,OAIM,O,sBAAb,EAAAhJ,KAAa,GAAMA,KAAKixV,iBAAiB30U,QAAQtc,KAAK00M,U,OAEnC,OAFnB,EAAKp0C,MAAQ,SAEb,EAAAtgK,KAAmB,GAAMA,KAAK4xV,sBAAsBr0U,U,OACpD,IADA,EAAKinD,YAAc,SACV9pE,EAAYsF,KAAKwkE,YAAY5pE,OAAS,EAAGF,GAAK,EAAGA,IACpDs3V,EAA8BhyV,KAAKwkE,YAAY9pE,GAAGgD,KACtDsC,KAAK8xV,YAAYE,IAAuB,EAGN,OAApC,EAAAhyV,KAAoC,GAAMA,KAAKixV,iBAAiBx7I,uBAAuBz1M,KAAK00M,U,OAE5F,IAFA,EAAKm9I,6BAA+B,SAE3Bn3V,EAAYsF,KAAK6xV,6BAA6Bj3V,OAAS,EAAGF,GAAK,EAAGA,IACrEs3V,EAA8BhyV,KAAK6xV,6BAA6Bn3V,GACpEsF,KAAK8xV,YAAYE,IAAuB,EACxChyV,KAAKiyV,UAAUD,G,OAEjBhyV,KAAKusV,UAAW,E,+BAIhBvsV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIf,YAAAs+G,OAAb,SAAoB4wO,G,qBAA2BhwV,GAAO,W,kDAE7C,OADPgE,KAAKgsV,gBAAkBA,EAChB,GAAMhsV,KAAK08D,Q,OAAlB,MAAO,CAAP,EAAO,kBAGT,sBAAI,sBAAO,C,IAAX,WACE,OAAQ18D,KAAKixV,iBAAiB7zU,OAAO7C,c,gCAG1B,YAAAmiD,KAAb,W,qBAAqB1gE,GAAO,W,6DACnB,SAAMgE,KAAKixV,iBAAiBv7I,2BAA2B11M,KAAK00M,QAAS10M,KAAK6xV,8BAC9E1uV,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6BAErBN,KAAKgsV,gBAAN,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,gB,OAAzC,MAAO,CAAP,EAAO,U,2BAGViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,kBAaI,YAAAo1V,YAAb,W,qBAA4Bl2V,GAAO,W,6DAC1B,SAAMgE,KAAKixV,iBAAiBp3E,gBAAgB75Q,KAAKsgK,MAAM/jJ,GAAIvc,KAAKsgK,MAAM5iK,MAC1EyF,MAAK,WAAM,eACX8I,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAH5B,MAAO,CAAP,EAAO,kBAOD,YAAAq1V,sBAAR,SAA8BlkS,GAC5B,OAAOjuD,KAAKwkE,YAAY3/D,QAAO,SAAAqC,GAAK,OAAAA,EAAExJ,KAAKy1E,WAAWllB,EAAa,QAChEx8C,MAAK,SAACvK,EAAGkjB,GAAM,OAAAljB,EAAEqV,GAAK6N,EAAE7N,MACxB5X,KAAI,SAAAuC,GAAO,OAAOA,EAAExJ,KAAK4tB,MAAM,KAAKzrB,MAAM,EAAG,GAAGmI,KAAK,QACrDnD,QAAO,SAACrE,EAAM9F,EAAGk6E,GAAS,OAAOA,EAAGvjE,QAAQ7Q,KAAU9F,MAGnD,YAAA03V,mBAAR,SAA2BC,GACzB,OAAOryV,KAAKwkE,YAAY3/D,QAAO,SAAAqC,GAAK,OAAAA,EAAExJ,KAAKy1E,WAAWk/Q,EAAgB,QACnE5gV,MAAK,SAACvK,EAAGkjB,GAAM,OAAAljB,EAAEqV,GAAK6N,EAAE7N,MACxB5X,KAAI,SAAAuC,GAAO,OAAOA,EAAExJ,KAAK4tB,MAAM,KAAKzrB,MAAM,EAAG,GAAGmI,KAAK,QACrDnD,QAAO,SAACrE,EAAM9F,EAAGk6E,GAAS,OAAOA,EAAGvjE,QAAQ7Q,KAAU9F,MAGnD,YAAA43V,8BAAR,SAAsCD,GAGpC,IAFA,IAAItiV,EAAiB,GACjBwiV,EAA+BvyV,KAAK6xV,6BAA6BhtV,QAAO,SAAAqC,GAAK,OAAAA,EAAEisE,WAAWk/Q,EAAgB,QACrG33V,EAAY,EAAGA,EAAI63V,EAAmB33V,OAAQF,IAAK,CAE1DqV,GAD+B/P,KAAKD,KAAKM,GAAG,gCAAkCkyV,EAAmB73V,IAE7FA,EAAI63V,EAAmB33V,OAAS,IAClCmV,GAAU,MAId,OAAOA,GAGD,YAAAyiV,yBAAR,SAAiCC,GAC/B,OAAOzyV,KAAKwkE,YAAY3/D,QAAO,SAAAqC,GAAK,OAAAA,EAAExJ,KAAKy1E,WAAWs/Q,EAAU,QAC7DhhV,MAAK,SAACvK,EAAGkjB,GAAM,OAAAljB,EAAEqV,GAAK6N,EAAE7N,MACxB5X,KAAI,SAAAuC,GAAK,OAAAA,EAAExJ,SAGF,YAAAu0V,UAAd,SAAwBD,G,qBAA8Bh2V,GAAO,W,4EACvDy2V,EAAkBT,EAAoB1mU,MAAM,KAAKzrB,MAAM,EAAG,GAAGmI,KAAK,MAElEgqV,EAAoBv/H,SAAS,SAA7B,YAOF,IALI,EAAmBzyN,KAAK6xV,6BAA6BxgV,QAAQ2gV,GAAuB,EAEpF,EAA+BhyV,KAAKwyV,yBAAyBC,GAGxD/3V,EAAY,EAAmBE,OAAS,EAAGF,GAAK,EAAGA,IACtDg4V,EAA+B,EAAmBh4V,GACtDsF,KAAK8xV,YAAYY,GAAwB,E,IAIvC,cAGF,IAFA1yV,KAAK8xV,YAAYE,GAAuB,EAE/Bt3V,EAAYsF,KAAK6xV,6BAA6Bj3V,OAAS,EAAGF,GAAK,EAAGA,IACrEsF,KAAK6xV,6BAA6Bn3V,GAAGy4E,WAAWs/Q,EAAU,MAC5DzyV,KAAK6xV,6BAA6B16U,OAAOzc,EAAG,G,0BAGvCsF,KAAKusV,YACVxnR,EAAyB/kE,KAAKwkE,YAAY3/D,QAAO,SAAAqC,GAAK,OAAAA,EAAExJ,OAASs0V,KAAqB,KAGrFjtR,EAAW4tR,eAEd3yV,KAAKC,OAAO0zC,MAAM,mCAAoCoxB,GAE/C,GAAM/kE,KAAK4yV,yBACfzvV,MAAK,SAAC4M,GACL,GAAIA,EACF,EAAK+hV,YAAYE,GAAuB,EAExC,EAAKD,SAASU,GAAW,EAAKH,8BAA8BG,OACvD,CACL,EAAKZ,6BAA6B16U,OAAO,EAAK06U,6BAA6BxgV,QAAQ2gV,GAAsB,GAEzG,IAAK,IAAIt3V,EAAY,EAAmBE,OAAS,EAAGF,GAAK,EAAGA,IAAK,CAC/D,IAAIg4V,EAA+B,EAAmBh4V,GACtD,EAAKo3V,YAAYY,IAAwB,SAnB1C,M,OAQP,MAAO,CAAP,EAAO,U,cAqBb1yV,KAAK+xV,SAASU,GAAWzyV,KAAKsyV,8BAA8BG,G,YAGhD,YAAAG,uBAAd,W,qBAAwC52V,GAAO,W,6DACtC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,MACV2qJ,YAAW,SAAOj9I,GAA2B,qC,iCAC9C,OAAKA,EAASw9B,aASL,CAAP,GAAO,GARHx9B,EAASxR,QACP8F,EAA2B0L,EAASxR,OACxCjK,KAAKC,OAAO0zC,MAAM,gBAAiB5jC,GAC5B,CAAP,EAAOA,IAEA,CAAP,GAAO,a,OATb,MAAO,CAAP,EAAO,kBA7LE8iV,EAAkB,GAD9B,a,uBAoByB,mB,OAAA,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACtB,mBADsB,OACtB,IAAhB,UAAgB,SACU,mBADV,OACU,IAArB,UAAqB,SAChB,mBADgB,OAChB,IAAb,kCAAa,SAClB,mBADkB,OAClB,IAAJ,gBAAI,YAzBTA,GAAb,I,yGCzBAn3V,EAAOD,QAAU,mmU,89DCYjB,aAME,WACU6lD,EACAwhG,EACA4iM,EACAoN,GAHA,KAAAxxS,mBACA,KAAAwhG,eACA,KAAA4iM,8BACA,KAAAoN,wBAER9yV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,uB,YAuCvC,OAnCS,YAAA0Y,SAAP,WACE5Y,KAAKwd,MAAQ,IAAI,IACjBxd,KAAK2lV,4BAGC,YAAAA,yBAAR,WACE,kBACGvM,OAAO,YAAYpyK,YAAY,yDAAyDwkD,WACxFn+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,W,qBAAuBp/G,GAAO,W,6DACrB,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAKquC,YADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAQI,YAAAA,SAAb,W,qBAAyBryC,GAAO,W,6DACvB,SAAMgE,KAAK8yV,sBAAsBzkT,SAASruC,KAAKwd,OACnDra,MAAK,SAAOqa,GAAc,qC,kDAOlB,OANPxd,KAAK01U,qBAAqBlnU,QACtBgP,EACFxd,KAAK8iJ,aAAaxiJ,QAAQ,+EAE1BN,KAAK8iJ,aAAahmJ,MAAM,6EAEnB,GAAMkD,KAAKshD,iBAAiBskB,GAAGpoD,I,OAAtC,MAAO,CAAP,EAAO,oBAERvR,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAX5B,MAAO,CAAP,EAAO,kBAxCEi2V,EAAmB,GAD/B,uB,uBAQ6C,mB,OAAA,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACZ,mBADY,OACZ,IAArB,UAAqB,YAV3CA,GAAb,K,0GCZAr3V,EAAOD,QAAU,69B,o/DCMjB,aAIE,WACUyoV,GAAA,KAAAA,gBAERlkV,KAAKC,OAAS,aAAWC,UAAU,2B,MAiBvC,OAde,YAAA8yV,oBAAb,W,qBAAoCh3V,GAAO,W,6DAGlC,OAFPgE,KAAKC,OAAO0zC,MAAM,uBAEX,GAAM3zC,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,MACV2qJ,YAAW,SAAOj9I,GAA2B,qC,wCACzCA,EAASw9B,cACRx9B,EAASxR,SACP8F,EAA2B0L,EAASxR,OACxCjK,KAAKC,OAAO0zC,MAAM,aAAc5jC,I,qBANtC,MAAO,CAAP,EAAO,kBAbEkjV,EAAuB,GADnC,uB,uBAMuC,mB,OAAA,IAAb,kCAAa,YAL3BA,GAAb,I,8FCNAv3V,EAAOD,QAAU,2b,m9DCYjB,aAOE,WACU6lD,EACAwhG,EACA4iM,EACAoN,GAHA,KAAAxxS,mBACA,KAAAwhG,eACA,KAAA4iM,8BACA,KAAAoN,wBAER9yV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,4B,YA+CvC,OA3CS,YAAA0Y,SAAP,WACE5Y,KAAKwd,MAAQ,IAAI,IACjBxd,KAAK2lV,4BAGC,YAAAA,yBAAR,WACE,kBACGvM,OAAO,mBAAmBpyK,YAAY,iEAAiEwkD,WACvG4tH,OAAO,eAAepyK,YAAY,6DAA6DwkD,WAC/F4tH,OAAO,sBAAsBpyK,YAAY,qEAAqEwkD,WAC9G+tH,cAAc,kBAAmB,eACjClsS,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,W,qBAAuBp/G,GAAO,W,6DACrB,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAQT,sBAAI,sBAAO,C,IAAX,WACE,OAAQ18D,KAAK8yV,sBAAsB11U,OAAO7C,c,gCAG/B,YAAAmiD,KAAb,W,qBAAqB1gE,GAAO,W,6DACnB,SAAMgE,KAAK8yV,sBAAsB7zV,OAAOe,KAAKwd,OACjDra,MAAK,SAAOqa,GAAc,qC,kDAOlB,OANPxd,KAAK01U,qBAAqBlnU,QACtBgP,EACFxd,KAAK8iJ,aAAaxiJ,QAAQ,4EAE1BN,KAAK8iJ,aAAahmJ,MAAM,0EAEnB,GAAMkD,KAAKshD,iBAAiBskB,GAAGpoD,I,OAAtC,MAAO,CAAP,EAAO,oBAERvR,OAAM,SAAAnP,GACL,EAAKmD,OAAO0zC,MAAM,UAAW72C,GAC7B,EAAKgmJ,aAAahmJ,MAAMA,O,OAZ5B,MAAO,CAAP,EAAO,kBAhDEo2V,EAAwB,GADpC,uB,uBAS6C,mB,OAAA,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACZ,mBADY,OACZ,IAArB,UAAqB,YAX3CA,GAAb,GAiEA,kBAAgBhZ,WACd,mBACA,SAACt7U,EAAOmC,EAAKoyV,GACX,OAAAv0V,SAEa,KAAVA,GAC2B,OAA3BmC,EAAIoyV,SACuBv1V,IAA3BmD,EAAIoyV,IACuB,KAA3BpyV,EAAIoyV,IACJv0V,IAAUmC,EAAIoyV,KACnB,iCAAiC,SAAAA,GAAqB,OAAGA,kBAAiB,Q,+FCvF5Ez3V,EAAOD,QAAU,m4C,ioBCUjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,wB,MAiCvC,OA9BE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CAcT,CACEjC,MAAO,GACPpI,SAAU,mBACVoD,KAAM,iBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,yCACpB+H,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBo+C,oBApC5BsoF,EAAmB,GAD/B,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,0ECVA13V,EAAOD,QAAU,6T,uECAjBC,EAAOD,QAAU,6c,0gECqBjB,aAkBE,WACUm/D,EACA90D,EACAg9I,EACA4iM,EACA2N,EACApC,EACAlmC,EACAhrT,EACAqa,GARA,KAAAwgD,QACA,KAAA90D,SACA,KAAAg9I,eACA,KAAA4iM,8BACA,KAAA2N,kBACA,KAAApC,mBACA,KAAAlmC,qBACA,KAAAhrT,OACA,KAAAqa,iBAERpa,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,gBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,sBA8I5B,OA1IgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,gEAG1C,O,sBAAxB,EAAAgE,KAAwB,GAAMA,KAAK+qT,mBAAmBvoQ,YAAY,IAAKmtS,kB,OACrD,OADlB,EAAKN,iBAAmB,SACxB,EAAArvV,KAAkB,GAAMA,KAAK+qT,mBAAmBvoQ,YAAY,IAAKktS,Y,OAC/C,OADlB,EAAKvtS,WAAa,SAClB,EAAAniD,KAAkB,GAAMA,KAAKixV,iBAAiB1zU,U,cAA9C,EAAK8zU,WAAa,SAMb/vU,MAAMlhB,EAAOkzV,YAAd,OACF,EAAAtzV,KAAa,GAAMA,KAAKqzV,gBAAgB/2U,SAASlc,EAAOkzV,c,cAAxD,EAAK91U,MAAQ,S,aAGbxd,KAAKwd,MAAQ,IAAI,IACjBxd,KAAKwd,MAAM+1U,UAAY,IAAUhO,Q,wBAEnCvlV,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAKpB,YAAA6oV,yBAAR,WACE,kBACGvM,OAAO,aAAapyK,YAAY,qCAAqCwkD,WACrE4tH,OAAO,YAAYpyK,YAAY,oCAAoCwkD,WACnE4tH,OAAO,SAASpyK,YAAY,gCAAgCn8F,QAAQ2gJ,WACpE4tH,OAAO,WAAWpyK,YAAY,mCAAmCwkD,WACjE4tH,OAAO,UAAUpyK,YAAY,kCAAkCwkD,WAC/D4tH,OAAO,aAAapyK,YAAY,qCAAqCwkD,WACrEn+K,GAAGrtC,KAAKwd,QAGC,YAAA49F,OAAd,SAAqB4wO,G,qBAA2BhwV,GAAO,W,kDACxC,SAAMgE,KAAK01U,qBAAqBrnS,Y,cAAhC,SACFsqK,MACJ34M,KAAKwd,MAAMgsB,OAAZ,OACFxpC,KAAK8iJ,aAAaviJ,QAAQP,KAAKD,KAAKM,GAAG,mD,OAFvC,M,OAKO,SAAML,KAAK08D,KAAKsvR,I,OAAvB,MAAO,CAAP,EAAO,U,yBAMb,sBAAI,sBAAO,C,IAAX,WACE,OAAQhsV,KAAKixV,iBAAiB7zU,OAAO7C,c,gCAGzB,YAAAmiD,KAAd,SAAmBsvR,G,qBAA2BhwV,GAAO,W,oEAC9CgE,KAAKwd,MAAMjB,GAAZ,MACK,GAAMvc,KAAKqzV,gBAAgBp0V,OAAOe,KAAKwd,OAC3Cra,MAAK,SAAOqa,GAAW,qC,yDACtBxd,KAAK8iJ,aAAaxiJ,QAAQ,4BACrB0rV,EAAD,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,e,OAAzC,MAAO,CAAP,EAAO,U,OAEA,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,yBAA0B,CAAEsqV,WAAY91U,EAAMjB,M,OAAvF,MAAO,CAAP,EAAO,oBAIVtQ,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAX5B,MAAO,CAAP,EAAO,U,OAcA,SAAMkD,KAAKqzV,gBAAgB32U,OAAO1c,KAAKwd,OAC3Cra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6BACrB0rV,EAAD,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,e,OAAzC,MAAO,CAAP,EAAO,U,2BAGViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,kBAiEJ,YAAAmR,4BAAP,WACE,OAAO,qBAAmBlH,SA9KjBysV,EAAY,GAFxB,uB,uBAqB8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACxB,mBADwB,OACxB,IAAf,UAAe,SACE,mBADF,OACE,IAAhB,UAAgB,SACI,mBADJ,OACI,IAAlB,UAAkB,SAC5B,mBAD4B,OAC5B,IAAJ,gBAAI,SACoB,mBADpB,OACoB,IAAd,UAAc,YA3B7BA,GAAb,I,mFCrBA93V,EAAOD,QAAU,moI,klECajB,aAkBE,WACUqK,EACAutV,EACAnP,EACAphM,GAJV,WACU,KAAAh9I,SACA,KAAAutV,kBACA,KAAAnP,gBACA,KAAAphM,eAlBF,KAAAxlI,WAAoC,IAAI,wBAGxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAKqzV,gBAAgBv/U,KAAK9T,KAAKsd,YACzCna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAePkD,KAAKC,OAAS,aAAWC,UAAU,gB,YA8GvC,OA1Ge,YAAAf,KAAb,W,qBAAqBnD,GAAO,W,kDAEnB,SAAMgE,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,kBAIK,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAGxB,SAAMgE,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAoBI,YAAA3yT,YAAb,SAAyBjd,G,qBAAaxE,GAAO,W,6DACpC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAKioD,WAEXiwG,YAAW,SAAOj9I,GAA2B,qC,oEACvCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKqzV,gBAAgB51U,YAAYjd,EAAK+b,IAChDpZ,MAAK,WAEJ,OAAQ3C,EAAK+yV,WACX,KAAK,IAAUE,OACbjzV,EAAK+yV,UAAY,IAAUG,SAC3B,MACF,KAAK,IAAUA,SACblzV,EAAK+yV,UAAY,IAAUE,OAK/B,EAAK3wM,aAAaxiJ,QAAQ,gCAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAhB5B,MAAO,CAAP,EAAO,U,OAoBPkD,KAAKC,OAAO0zC,MAAM,qB,6CA1BxB,MAAO,CAAP,EAAO,kBAgCI,YAAAlK,wBAAb,SAAqCltB,G,qBAAavgB,GAAO,W,6DAChD,SAAMgE,KAAKqzV,gBAAgB5pT,wBAAwBltB,GACvDpZ,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,yDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAaI,YAAAggB,OAAb,SAAoBtc,G,qBAAOxE,GAAO,W,6DACzB,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAKioD,WACXiwG,YAAW,SAACj9I,GACRA,EAASw9B,cACZ,EAAKo6S,gBAAgBv2U,OAAOtc,EAAK+b,IAC9BpZ,MAAK,gD,wCACAshV,EAA6BzkV,KAAKsd,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ7Q,EAAK+b,GAAGyC,YACrGhf,KAAKsd,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrDzkV,KAAKsd,WAAWmiU,eAChBz/U,KAAK8iJ,aAAaxiJ,QAAQ,8B,aAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,U,OAbhC,MAAO,CAAP,EAAO,kBApHE62V,EAAY,GADxB,uB,uBAoByB,mB,OAAA,IAAN,oBAAM,SACkB,mBADlB,OACkB,IAAf,UAAe,SACJ,mBADI,OACJ,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YAtBzBA,GAAb,I,opBCJA,aAKE,WACU5zV,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,2B,MAuBvC,OApBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,mBACVoD,KAAM,cAKR,CACEgF,MAAO,wBACPpI,SAAU,2BACVoD,KAAM,6BAxBDk2V,EAAuB,GADnC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,6ECTAl4V,EAAOD,QAAU,uD,kECAjBC,EAAOD,QAAU,8jG,uqECajB,aASE,WACU6qV,EACAuN,EACA3P,EACAphM,GAJV,WACU,KAAAwjM,iBACA,KAAAuN,iCACA,KAAA3P,gBACA,KAAAphM,eATF,KAAAgkM,UAA2B,GAE3B,KAAAxpU,WAAoC,IAAI,wBA+CxC,KAAA0vO,QAAU,WAEhB,OAAO,EAAK6mG,+BAA+B//U,KAAK,EAAKwJ,aAxCrDtd,KAAKC,OAAS,aAAWC,UAAU,+BAEnCF,KAAKsd,WAAWusB,OAAS,G,YA6F7B,OAzFgB,YAAAjxB,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,0DAEvB,O,sBAAjB,EAAAgE,KAAiB,GAAMA,KAAKsmV,eAAe9lL,iB,cAA3C,EAAKsmL,UAAY,SACb9mV,KAAK8mV,UAAUlsV,OAAS,GAC1BoF,KAAKsd,WAAWusB,OAAOiqT,UAAY9zV,KAAK8mV,UAAU,GAAGvqU,GAC9C,GAAMvc,KAAKukV,aAFhB,M,OAEF,MAAO,CAAP,EAAO,U,4CAITvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAynV,SAAd,W,qBAA0BvoV,GAAO,W,6DAGxB,OAFPgE,KAAKC,OAAO0zC,MAAM,YAEX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GAEL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAYK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAQK,YAAA/hG,KAAd,SAAmB7tO,G,qBAAgCxE,GAAO,W,+DAEjD,OADH60V,EAAe3/U,KAAKC,MAAMD,KAAKE,UAAU5Q,IACtC,GAAMR,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK6zV,+BAA+Bn3U,OAAOlc,GACrD2C,MAAK,SAACqa,GAEL,EAAKvd,OAAO0zC,MAAM,WAAYn2B,EAAMjB,IACpC/b,EAAK+b,GAAKiB,EAAMjB,GAEhB,EAAKumI,aAAaxiJ,QAAQ,uEAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,U,OAaPjC,OAAOgI,OAAOrC,EAAMqwV,G,6CAlBxB,MAAO,CAAP,EAAO,kBAuBI,YAAApzU,YAAb,SAAyBjd,G,qBAAgCxE,GAAO,W,6DAEvD,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK9C,OACXg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK6zV,+BAA+Bp2U,YAAYjd,GAC1D2C,MAAK,SAACqa,GAEW,IAAZhd,EAAK+b,KACP/b,EAAK+b,GAAKiB,EAAMjB,IAGlB,EAAKumI,aAAaxiJ,QAAQ,mFAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,U,OAcP0D,EAAK8F,UAAY9F,EAAK8F,S,6CAnB1B,MAAO,CAAP,EAAO,kBArFEytV,EAA2B,GADvC,uB,uBAWyC,mB,OAAA,IAAd,UAAc,SACgC,mBADhC,OACgC,IAA9B,UAA8B,SAClC,mBADkC,OAClC,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YAbzBA,GAAb,I,ssBCJA,aAKE,WACUh0V,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,0C,MAevC,OAZE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPpI,SAAU,mCACVoD,KAAM,qCAjBDs2V,EAAsC,GADlD,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,gHCTAt4V,EAAOD,QAAU,uD,qGCAjBC,EAAOD,QAAU,sqE,y9DCSjB,aAOE,WACU6lD,EACAokS,GADA,KAAApkS,mBACA,KAAAokS,8BAPF,KAAAloU,MAAiC,IAAI,IAS3Cxd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,gC,QA+BvC,OA3BQ,YAAA0Y,SAAN,SAAe4E,G,qBAAiCxhB,GAAO,W,kCACrDgE,KAAKC,OAAO0zC,MAAM,YAClB3zC,KAAKwd,MAAQA,EACbxd,KAAK2lV,2B,WAGP,YAAAA,yBAAA,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,QAAQpyK,YAAY,oDAAoDwkD,WAC/En+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,W,qBAAuBp/G,GAAO,W,sCAC5B,MAAO,CAAP,EAAOgE,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKF,YAAAA,KAAb,W,qBAAqB1gE,GAAO,W,kDAEnB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBA1CEquR,EAA4B,GADxC,uB,uBAS6C,mB,OAAA,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,YATvDA,GAAb,K,qHCTAv4V,EAAOD,QAAU,ilC,iECAjBC,EAAOD,QAAU,8Y,s+DCajB,aAoBE,WACUm/D,EACAvgD,EACA0wS,EACAjlT,GAHA,KAAA80D,QACA,KAAAvgD,KACA,KAAA0wS,qBACA,KAAAjlT,SAZF,KAAAqvJ,UAAuB,GACvB,KAAAk6L,iBAA8B,GAC9B,KAAAltS,WAAwB,GAIxB,KAAA4yG,cAA8B,GAQpC/0J,KAAKC,OAAS,aAAWC,UAAU,6BAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MAExB7Q,KAAK+0J,cAAc75J,KAAK8E,KAAKqa,GAAGtF,UAAU,IAAwB/U,KAAKukV,SAASplV,KAAKa,Q,YA2CzF,OAxCe,YAAAspD,SAAb,W,qBAAyBttD,GAAO,W,kDAEvB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,kBAII,YAAAA,SAAb,W,qBAAyBvoV,GAAO,W,mCAC9B,IAOE,GAJAgE,KAAKm1J,UAAYn1J,KAAK6Q,MAAMskJ,UAE5Bn1J,KAAKmiD,WAAaniD,KAAKm1J,UAAUtwJ,QAAO,SAAAqC,GAAK,OAAAA,EAAEsiC,SAAW,IAAKkmT,aAEhC,IAA3B1vV,KAAKmiD,WAAWvnD,OAClBoF,KAAK2yG,OAAO3yG,KAAKmiD,WAAW,GAAG5lC,SAE5B,GAA+B,IAA3Bvc,KAAKmiD,WAAWvnD,SACjBg1V,EAAgB5vV,KAAKm1J,UAAUtwJ,QAAO,SAAAqC,GAAK,OAAAA,EAAEsiC,SAAW,IAAKs6S,WACjDlpV,OAAS,EAGzB,OAFMyiB,EAAcuyU,EAAc,GAAGlvL,SAE9B,CAAP,EAAO1gK,KAAK2yG,OAAOt1F,IAIvBrd,KAAKqvV,iBAAmBrvV,KAAKm1J,UAAUtwJ,QAAO,SAAAqC,GAAK,OAAAA,EAAEsiC,SAAW,IAAKmmT,mBAGvE,MAAO7yV,GACLkD,KAAKC,OAAO0zC,MAAM,S,iBAKT,YAAAg/D,OAAb,SAAoBt1F,G,qBAAsBrhB,GAAO,W,kDAExC,SAAMgE,KAAK8F,OAAOkD,gBAAgBhJ,KAAK29I,UAAW,CAAEtgI,YAAaA,EAAcs6D,cAAe33E,KAAK23E,iB,OAA1G,MAAO,CAAP,EAAO,kBAhET,GADC,W,yDAID,GADC,W,8DARUu8Q,EAAyB,GADrC,uB,uBAsB8B,mB,OAAA,IAAZ,UAAY,SACA,mBADA,OACA,IAAf,sCAAe,SACmB,mBADnB,OACmB,IAAlB,UAAkB,SACxB,mBADwB,OACxB,IAAN,oBAAM,YAxBbA,GAAb,I,8FCbAx4V,EAAOD,QAAU,8oE,66DCQjB,aAiBE,WACUsvT,EACAjlT,EACAg9I,GAFA,KAAAioK,qBACA,KAAAjlT,SACA,KAAAg9I,eARF,KAAAqS,UAAuB,GACvB,KAAAk6L,iBAA8B,GASpCrvV,KAAKC,OAAS,aAAWC,UAAU,qB,UA+CvC,OA5Ce,YAAAopD,SAAb,W,qBAAyBttD,GAAO,W,kDAEvB,SAAMgE,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,kBAGI,YAAAA,SAAb,W,qBAAyBvoV,GAAO,W,0DAGb,O,sBAAA,GAAMgE,KAAK+qT,mBAAmBxtS,U,cAAzC9B,EAAW,SACfzb,KAAKm1J,UAAY15I,EAAS5W,QAAO,SAAAqC,GAAK,OAAAA,EAAEsiC,QAAU,IAAKkmT,aACvD1vV,KAAKqvV,iBAAmB5zU,EAAS5W,QAAO,SAAAqC,GAAK,OAAAA,EAAEsiC,QAAU,IAAKmmT,mBAE9D3vV,KAAKm0V,uB,+BAGLn0V,KAAK8iJ,aAAahmJ,MAAM,G,+BAIpB,YAAAq3V,qBAAR,sBACE,GAAIn0V,KAAKqd,YAAa,CACpB,IAAI0kC,EAAY/hD,KAAKm1J,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAKc,eAClD0kC,IACF/hD,KAAKw0M,kBAAoBzyJ,EAAU2+G,SACnC1gK,KAAKC,OAAO0zC,MAAM,yBAA0B3zC,KAAKw0M,sBAK/C,YAAA4/I,mBAAR,WACEp0V,KAAKm0V,wBAGO,YAAAtE,uBAAd,W,qBAAwC7zV,GAAO,W,sEACvC8zV,EAAoB9vV,KAAKm1J,UAAUtwJ,QAAO,SAAAk1D,GAAK,OAAAA,EAAE2mG,WAAa,EAAK8zC,sBACnD55M,OAAS,EACtB,GAAMoF,KAAK2yG,OAAOm9O,EAAkB,GAAGvzU,KAD5C,M,OACF,MAAO,CAAP,EAAO,U,yBAIE,YAAAo2F,OAAb,SAAoBt1F,G,qBAAsBrhB,GAAO,W,kDACxC,SAAMgE,KAAK8F,OAAOkD,gBAAgBhJ,KAAK29I,UAAW,CAAEtgI,YAAaA,EAAcs6D,cAAe33E,KAAK23E,iB,OAA1G,MAAO,CAAP,EAAO,kBA/DT,GADC,W,yDAID,GADC,W,2DAID,GADC,W,8DARU08Q,EAAiB,GAD7B,uB,uBAmBiD,mB,OAAA,IAAlB,UAAkB,SACxB,mBADwB,OACxB,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,YApBzBA,GAAb,I,qFCRA34V,EAAOD,QAAU,65B,snBCWjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,oB,MAiCvC,OA7BE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,CAAC,IACRpI,SAAU,eACVoD,KAAM,cACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,iCACpB+H,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBggD,gBAInC,CACEhqQ,MAAO,CAAC,eACRpI,SAAU,gCACVoD,KAAM,0BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,sCACpB+H,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBggD,mBApC5B4nF,EAAgB,GAD5B,uB,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,kECXA54V,EAAOD,QAAU,sZ,u+DCUjB,aAIE,WACUqK,EACAo+U,EACAqQ,EACAzxM,GAHA,KAAAh9I,SACA,KAAAo+U,gBACA,KAAAqQ,eACA,KAAAzxM,eAER9iJ,KAAKC,OAAS,aAAWC,UAAU,mB,YA+BvC,OA5BgB,YAAAjB,OAAd,W,qBAAwBjD,GAAO,W,+DAEtB,OADHwE,EAAc,IAAI,IACf,GAAMR,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,OACFj5C,KAAKC,OAAO0zC,MAAM,kBAAmBl4B,EAASxR,QACvC,GAAMjK,KAAKu0V,aAAat1V,OAAOuB,GACnC2C,MAAK,SAAOqa,GAAY,qC,yDAGvBxd,KAAK8iJ,aAAaxiJ,QAAQ,4BAEtBmb,EAASxR,OACJ,GAAMjK,KAAK8F,OAAOkD,gBAAgB,qBAAsB,CAAE0rM,QAASl3L,EAAMjB,MAD9E,M,OACF,MAAO,CAAP,EAAO,U,OAEA,SAAMvc,KAAK8F,OAAOkD,gBAAgB,W,OAAzC,MAAO,CAAP,EAAO,oBAIViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,Q,OAd5B,MAAO,CAAP,EAAO,U,mCANX,MAAO,CAAP,EAAO,kBAfE03V,EAAe,GAD3B,uB,uBAMyB,mB,OAAA,IAAN,oBAAM,SACc,mBADd,OACc,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACA,mBADA,OACA,IAAZ,UAAY,YARzBA,GAAb,I,gFCVA94V,EAAOD,QAAU,sZ,m8DCWjB,aAQE,WACU6lD,EACAwhG,EACA4iM,EACA6O,GAHA,KAAAjzS,mBACA,KAAAwhG,eACA,KAAA4iM,8BACA,KAAA6O,eAERv0V,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,oBACnCF,KAAK2lV,2B,YA8BT,OA3BgB,YAAA/sU,SAAd,SAAuBpY,G,qBAAcxE,GAAO,W,6DAEnC,OADPgE,KAAKoxV,cAAgBv2V,OAAOgI,OAAO,IAAI,IAASrC,GACzC,GAAMR,KAAKu0V,aAAah3U,SAC5Bpa,MAAK,SAAAsyG,GAAU,SAAKA,OAASA,KAC7BtyG,MAAK,WAEJ,EAAKsyG,OAAOt+F,OAAO,EAAKs+F,OAAO9wG,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ7Q,EAAK+b,GAAGyC,YAAa,MAEvF/S,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWD,YAAA6oV,yBAAR,WACE,kBACGvM,OAAO,0BAA0BpyK,YAAY,6CAA6CwkD,WAC1Fn+K,GAAGrtC,OAGK,YAAAo7G,OAAb,W,qBAAuBp/G,GAAO,W,6DACrB,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAKshD,iBAAiBskB,GAAG5lE,KAAKu1M,yBADzC,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAzCEk/I,EAAgB,GAD5B,uB,uBAU6C,mB,OAAA,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC9B,mBAD8B,OAC9B,IAAZ,UAAY,YAZzBA,GAAb,K,iFCXA/4V,EAAOD,QAAU,mpC,i8DCcjB,aAaE,WACUm/D,EACA90D,EACAg9I,EACA4iM,EACA6O,GAJA,KAAA35R,QACA,KAAA90D,SACA,KAAAg9I,eACA,KAAA4iM,8BACA,KAAA6O,eAXF,KAAA/2U,MAAe,IAAI,IACnB,KAAAwuU,iBAA2B,EAYjChsV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,aAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,cAyD5B,OArDgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,oEAE/DslB,MAAMlhB,EAAO6d,YAAeqD,MAAMlhB,EAAOs0M,SAA1C,YACF10M,KAAKie,WAAa7d,EAAO6d,UACpBqD,MAAMlhB,EAAOkkV,mBAChBtkV,KAAKie,WAAa7d,EAAOkkV,iBAE3BtkV,KAAKu0V,aAAan3U,OAAO87B,iBAAmBl5C,KAAKie,UACjDje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,a,iBAE5C,O,sBAAb,EAAAje,KAAa,GAAMA,KAAKu0V,aAAaj4U,SAASlc,EAAOs0M,U,cAArD,EAAKl3L,MAAQ,SACbxd,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAKtB,YAAA6oV,yBAAR,WACE,kBACGvM,OAAO,QAAQpyK,YAAY,gCAAgCwkD,WAC3Dn+K,GAAGrtC,KAAKwd,QAGC,YAAA49F,OAAd,SAAqB4wO,G,qBAA2BhwV,GAAO,W,sCAErD,OADAgE,KAAKgsV,gBAAkBA,EAChB,CAAP,EAAOhsV,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKf,sBAAI,sBAAO,C,IAAX,WACE,OAAQ18D,KAAKu0V,aAAan3U,OAAO7C,c,gCAGrB,YAAAmiD,KAAd,W,qBAAsB1gE,GAAO,W,6DACpB,SAAMgE,KAAKu0V,aAAa73U,OAAO1c,KAAKwd,OACxCra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6BAErBN,KAAKgsV,gBAAN,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,W,OAAzC,MAAO,CAAP,EAAO,U,2BAGViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,kBArEE43V,EAAS,GADrB,uB,uBAe8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC9B,mBAD8B,OAC9B,IAAZ,UAAY,YAlBzBA,GAAb,I,yECdAh5V,EAAOD,QAAU,qwC,slECgBjB,aAyBE,WACUm/D,EACA90D,EACAyuV,EACArQ,EACAuC,EACA3jM,GANV,WACU,KAAAloF,QACA,KAAA90D,SACA,KAAAyuV,eACA,KAAArQ,gBACA,KAAAuC,uBACA,KAAA3jM,eA5BF,KAAA1iJ,OAAc,GAKd,KAAAkd,WAAoC,IAAI,wBAIxC,KAAAivU,UAAoB,EACpB,KAAAoI,eAAyB,EACzB,KAAA3nG,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAKu0V,aAAazgV,KAAK9T,KAAKsd,YACtCna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAiBPkD,KAAKC,OAAS,aAAWC,UAAU,aAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,gBA0J5B,OAxJA,YAAA5C,4BAAA,WACE,MAAO,WAEO,YAAA2K,SAAd,SAAuBxY,EAAa8iV,EAAyBlgV,G,qBAAwBhH,GAAO,W,+DAGrF44V,EAAc5xV,EAAsBR,OAAO4F,SAASusV,cAC5C30V,KAAK20V,gBAAnBC,EAEK50V,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAKJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,sEAGtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OAEFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE1Bje,KAAKI,OAAOkkV,iBAAmD,WAAhCtkV,KAAKI,OAAOkkV,gBAC7CtkV,KAAKie,UAAY,KAETqD,MAAMthB,KAAKI,OAAOkkV,mBAC1BtkV,KAAKie,WAAaje,KAAKI,OAAOkkV,iBAI5BtkV,KAAKie,UACHje,KAAK20V,cACa,GAAM30V,KAAKymV,qBAAqBnqU,QAClDtc,KAAKie,YAFL,MADF,O,OAEI42U,EAAgB,SAGpB70V,KAAKie,UAAY42U,EAAcn2U,QAAQgiJ,S,iBASlC,OANP1gK,KAAKu0V,aAAan3U,OAAO87B,iBAAmBl5C,KAAKie,UAEjDje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAACkB,GAAM,OAAAA,EAAEqV,IAAM,EAAK0B,aAE7Dje,KAAKusV,UAAW,EAET,GAAMvsV,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yBA+BC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAAnxU,OAAd,W,qBAAwBjD,GAAO,W,+DAEtB,OADHwE,EAAc,IAAI,IACf,GAAMR,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,OACFj5C,KAAKC,OAAO0zC,MAAM,kBAAmBl4B,EAASxR,QACvC,GAAMjK,KAAKu0V,aAAat1V,OAAOuB,GACnC2C,MAAK,SAAOqa,GAAY,qC,yDACvBhd,EAAK+b,GAAKiB,EAAMjB,GACZd,EAASxR,QACXjK,KAAKC,OAAO0zC,MAAM,yBAA0Bn2B,EAAMjB,IAC3C,GAAMvc,KAAK8F,OAAOkD,gBAAgB,qBAAsB,CAAE0rM,QAASl3L,EAAMjB,OAF9E,M,OAEF,MAAO,CAAP,EAAO,U,OAEPvc,KAAKsd,WAAWoiU,UAAU57U,QAAQtD,GAClCR,KAAKsd,WAAWmiU,eAChBz/U,KAAK8iJ,aAAaxiJ,QAAQ,4B,qCAK7B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,Q,OAf5B,MAAO,CAAP,EAAO,U,mCANX,MAAO,CAAP,EAAO,kBA+BK,YAAAggB,OAAd,SAAqBtc,G,qBAAcxE,GAAO,W,6DACjC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,sEACzCA,EAASw9B,aAAV,MACEx9B,EAASxR,QACPsrM,EAAyC95L,EAASxR,OACtDjK,KAAKC,OAAO0zC,MAAM,2BAA4B4hK,GACvC,GAAMv1M,KAAKu0V,aAAaz3U,OAAOtc,EAAK+b,GAAIg5L,GAC5CpyM,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ7Q,EAAK+b,GAAGyC,YACrG,EAAK1B,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,iCAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,QAX1B,M,OAGF,MAAO,CAAP,EAAO,U,mCARb,MAAO,CAAP,EAAO,kBAtKEg4V,EAAS,GADrB,uB,uBA2B8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,SACc,mBADd,OACc,IAApB,UAAoB,SAChB,mBADgB,OAChB,IAAZ,UAAY,YA/BzBA,GAAb,I,6oBCPA,aAKE,WACU/0V,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,4B,MAgCvC,OA9BE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,eACVoD,KAAM,SACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,kCAGtB,CACEqC,MAAO,gDACPpI,SAAU,uBACVoD,KAAM,sBAIR,CACEgF,MAAO,eACPpI,SAAU,eACVoD,KAAM,eACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,uCACpB+H,SAAU,CACRusV,eAAe,OAlCZjD,EAAwB,GADpC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,qECTAh2V,EAAOD,QAAU,+G,wDCAjBC,EAAOD,QAAU,6nF,o7DCUjB,aAQE,WACU6lD,EACAwhG,EACA4iM,EACA6O,GAHA,KAAAjzS,mBACA,KAAAwhG,eACA,KAAA4iM,8BACA,KAAA6O,eATF,KAAAvI,iBAA2B,EAWjChsV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,c,YAqCvC,OAjCS,YAAAf,KAAP,sBACEa,KAAKu0V,aAAah3U,SAASpa,MAAK,SAAAsyG,GAC9B,EAAKA,OAASA,MAIX,YAAA78F,SAAP,SAAgB4E,GACdxd,KAAKwd,MAAQA,EACbxd,KAAK2lV,4BAGC,YAAAA,yBAAR,WACE,kBACGvM,OAAO,QAAQpyK,YAAY,gCAAgCwkD,WAC3D4tH,OAAO,cAAcpyK,YAAY,0CAA0CwkD,WAC3En+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,SAAoB4wO,G,qBAA2BhwV,GAAO,W,6DAE7C,OADPgE,KAAKgsV,gBAAkBA,EAChB,GAAMhsV,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAQI,YAAAA,KAAb,W,qBAAqB1gE,GAAO,W,kDAGnB,SAAMgE,KAAKshD,iBAAiBskB,GAAG5lE,KAAKgsV,kB,OAA3C,MAAO,CAAP,EAAO,kBApDE+I,EAAU,GADtB,uB,uBAU6C,mB,OAAA,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC9B,mBAD8B,OAC9B,IAAZ,UAAY,YAZzBA,GAAb,K,0ECVAr5V,EAAOD,QAAU,whD,4+DCyBjB,aAuBE,WACUm/D,EACA90D,EACAg9I,EACA4iM,EACA6O,EACAS,EACAj1V,GANA,KAAA66D,QACA,KAAA90D,SACA,KAAAg9I,eACA,KAAA4iM,8BACA,KAAA6O,eACA,KAAAS,oBACA,KAAAj1V,OAnBF,KAAAisV,iBAA2B,EAE3B,KAAAxnR,YAA4B,GAE5B,KAAAqtR,6BAA8C,IAAInxV,MAElD,KAAAoxV,YAA6B,GAE7B,KAAAC,SAAuB,GAGvB,KAAA4C,eAAyB,EAU/B30V,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,kBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,kBAmI5B,OAhIgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,4EAE/DslB,MAAMlhB,EAAO6d,YAAeqD,MAAMlhB,EAAOs0M,SAA1C,YACF10M,KAAKie,WAAa7d,EAAO6d,UAEpBqD,MAAMlhB,EAAOkkV,mBAChBtkV,KAAKie,WAAa7d,EAAOkkV,iBAE3BtkV,KAAKu0V,aAAan3U,OAAO87B,kBAAoB94C,EAAO6d,UACpDje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAC3Dje,KAAK00M,SAAWt0M,EAAOs0M,QACvB10M,KAAK20V,cAAyC,SAAzBv0V,EAAOu0V,gBAAqD,IAAzBv0V,EAAOu0V,c,iBAGhD,O,sBAAb,EAAA30V,KAAa,GAAMA,KAAKu0V,aAAaj4U,QAAQtc,KAAK00M,U,OAC/B,OADnB,EAAKp0C,MAAQ,SACb,EAAAtgK,KAAmB,GAAMA,KAAKg1V,kBAAkBz3U,U,OAEhD,IAFA,EAAKinD,YAAc,SAEV9pE,EAAYsF,KAAKwkE,YAAY5pE,OAAS,EAAGF,GAAK,EAAGA,IACpDs3V,EAA8BhyV,KAAKwkE,YAAY9pE,GAAGgD,KACtDsC,KAAK8xV,YAAYE,IAAuB,EAGN,OAApC,EAAAhyV,KAAoC,GAAMA,KAAKu0V,aAAa9+I,uBAAuBz1M,KAAK00M,U,OAExF,IAFA,EAAKm9I,6BAA+B,SAE3Bn3V,EAAYsF,KAAK6xV,6BAA6Bj3V,OAAS,EAAGF,GAAK,EAAGA,IACrEs3V,EAA8BhyV,KAAK6xV,6BAA6Bn3V,GACpEsF,KAAK8xV,YAAYE,IAAuB,EACxChyV,KAAKiyV,UAAUD,G,qCAIjBhyV,KAAK8iJ,aAAahmJ,MAAM,G,+BAKjB,YAAAs+G,OAAb,SAAoB4wO,G,qBAA2BhwV,GAAO,W,kDAE7C,OADPgE,KAAKgsV,gBAAkBA,EAChB,GAAMhsV,KAAK08D,Q,OAAlB,MAAO,CAAP,EAAO,kBAGT,sBAAI,sBAAO,C,IAAX,WACE,OAAQ18D,KAAKu0V,aAAan3U,OAAO7C,c,gCAGtB,YAAAmiD,KAAb,W,qBAAqB1gE,GAAO,W,6DACnB,SAAMgE,KAAKu0V,aAAa7+I,2BAA2B11M,KAAK00M,QAAS10M,KAAK6xV,8BAC1E1uV,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6BAErBN,KAAKgsV,gBAAN,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,W,OAAzC,MAAO,CAAP,EAAO,U,2BAIViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,kBAcD,YAAAq1V,sBAAR,SAA8BlkS,GAE5B,OADAjuD,KAAKC,OAAO0zC,MAAM,yBAA0Bsa,GACrCjuD,KAAKwkE,YACT3/D,QAAO,SAAAqC,GAAK,OAAAA,EAAExJ,KAAKy1E,WAAWllB,EAAa,QAC3Cx8C,MAAK,SAACvK,EAAGkjB,GAAM,OAAAljB,EAAEqV,GAAK6N,EAAE7N,MACxB5X,KAAI,SAAAuC,GAAO,OAAOA,EAAExJ,KAAK4tB,MAAM,KAAKzrB,MAAM,EAAG,GAAGmI,KAAK,QACrDnD,QAAO,SAACrE,EAAM9F,EAAGk6E,GAAO,OAAAA,EAAGvjE,QAAQ7Q,KAAU9F,MAG1C,YAAA03V,mBAAR,SAA2BC,GACzB,OAAOryV,KAAKwkE,YACT3/D,QAAO,SAAAqC,GAAK,OAAAA,EAAExJ,KAAKy1E,WAAWk/Q,EAAgB,QAC9C5gV,MAAK,SAACvK,EAAGkjB,GAAM,OAAAljB,EAAEqV,GAAK6N,EAAE7N,MACxB5X,KAAI,SAAAuC,GAAO,OAAOA,EAAExJ,KAAK4tB,MAAM,KAAKzrB,MAAM,EAAG,GAAGmI,KAAK,QACrDnD,QAAO,SAACrE,EAAM9F,EAAGk6E,GAAO,OAAAA,EAAGvjE,QAAQ7Q,KAAU9F,MAG1C,YAAA43V,8BAAR,SAAsCD,GAGpC,IAFA,IAAItiV,EAAiB,GACjBwiV,EAA+BvyV,KAAK6xV,6BAA6BhtV,QAAO,SAAAqC,GAAK,OAAAA,EAAEisE,WAAWk/Q,EAAgB,QACrG33V,EAAY,EAAGA,EAAI63V,EAAmB33V,OAAQF,IAAK,CAE1DqV,GAD+B/P,KAAKD,KAAKM,GAAG,gCAAkCkyV,EAAmB73V,IAE7FA,EAAI63V,EAAmB33V,OAAS,IAClCmV,GAAU,MAId,OAAOA,GAGD,YAAAyiV,yBAAR,SAAiCC,GAC/B,OAAOzyV,KAAKwkE,YACT3/D,QAAO,SAAAqC,GAAK,OAAAA,EAAExJ,KAAKy1E,WAAWs/Q,EAAU,QACxChhV,MAAK,SAACvK,EAAGkjB,GAAM,OAAAljB,EAAEqV,GAAK6N,EAAE7N,MACxB5X,KAAI,SAAAuC,GAAK,OAAAA,EAAExJ,SAGR,YAAAu0V,UAAR,SAAkBD,GAChB,IAAIS,EAAkBT,EAAoB1mU,MAAM,KAAKzrB,MAAM,EAAG,GAAGmI,KAAK,KAEtE,GAAIgqV,EAAoBv/H,SAAS,SAAU,CAOzC,IALA,IAAI9xG,EAAmB3gH,KAAK6xV,6BAA6BxgV,QAAQ2gV,GAAuB,EAEpFiD,EAA+Bj1V,KAAKwyV,yBAAyBC,GAGxD/3V,EAAYu6V,EAAmBr6V,OAAS,EAAGF,GAAK,EAAGA,IAAK,CAC/D,IAAIg4V,EAA+BuC,EAAmBv6V,GACtDsF,KAAK8xV,YAAYY,GAAwB/xO,EAI3C,GAAIA,EAAS,CACX3gH,KAAK8xV,YAAYE,GAAuBrxO,EAExC,IAASjmH,EAAYsF,KAAK6xV,6BAA6Bj3V,OAAS,EAAGF,GAAK,EAAGA,IACrEsF,KAAK6xV,6BAA6Bn3V,GAAGy4E,WAAWs/Q,EAAU,MAC5DzyV,KAAK6xV,6BAA6B16U,OAAOzc,EAAG,IAMpDsF,KAAK+xV,SAASU,GAAWzyV,KAAKsyV,8BAA8BG,IArKnDyC,EAAc,GAD1B,uB,uBAyB8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC9B,mBAD8B,OAC9B,IAAZ,UAAY,SACU,mBADV,OACU,IAAjB,UAAiB,SAC1B,mBAD0B,OAC1B,IAAJ,gBAAI,YA9BTA,GAAb,I,0FCzBAx5V,EAAOD,QAAU,wrU,++DCajB,aAQE,WACU6qV,EACA+F,EACA8I,EACAzP,EACA5iM,GAJA,KAAAwjM,iBACA,KAAA+F,kBACA,KAAA8I,2BACA,KAAAzP,8BACA,KAAA5iM,eAXF,KAAAgkM,UAA2B,GAC3B,KAAA11R,SAAuB,GAY7BpxD,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAC1CjzU,KAAKC,OAAS,aAAWC,UAAU,yB,cAyDvC,OArDgB,YAAA0Y,SAAd,W,qBAA0B5c,GAAO,W,4DAEZ,O,sBAAjB,EAAAgE,KAAiB,GAAMA,KAAKsmV,eAAe9lL,iB,OAE3B,OAFhB,EAAKsmL,UAAY,SAEjB,EAAA9mV,KAAgB,GAAMA,KAAKqsV,gBAAgB9uU,U,cAA3C,EAAK6zC,SAAW,SAEhBpxD,KAAKwd,MAAQ,IAAI,IACjBxd,KAAK2lV,2BAGD3lV,KAAK8mV,UAAUlsV,OAAS,GAC1BoF,KAAKwd,MAAMgtS,UAAYxqT,KAAK8mV,UAAU,GAAGvqU,GACzCvc,KAAKwd,MAAMwsB,WAAahqC,KAAKoxD,SAAS,GAAG70C,GAClC,GAAMvc,KAAKukV,aAHhB,M,OAGF,MAAO,CAAP,EAAO,U,4CAITvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIpB,YAAA6oV,yBAAR,WACE3lV,KAAKC,OAAO0zC,MAAM,QAAS3zC,KAAKwd,OAChC,kBACG47T,OAAO,cAAcpyK,YAAY,2CAA2CwkD,WAC5En+K,GAAGrtC,KAAKwd,QAGC,YAAA+mU,SAAd,W,qBAA0BvoV,GAAO,W,kDAG/B,OAFAgE,KAAKC,OAAO0zC,MAAM,YAElB,GAAM3zC,KAAKgtP,W,cAAX,S,YAIY,YAAAjjP,OAAd,W,0EACE/J,KAAK8iJ,aAAaviJ,QAAQ,6DAC1BP,KAAKgtP,U,WAGO,YAAAA,QAAd,W,qBAA0BhxP,GAAO,W,wDAElB,OADbgE,KAAKwd,MAAM43U,WAAa,KACxB,EAAAp1V,KAAa,GAAMA,KAAKm1V,yBAAyBxtM,wBAAwB3nJ,KAAKwd,Q,cAA9E,EAAKA,MAAQ,S,YAGD,YAAA49F,OAAd,W,qBAAwBp/G,GAAO,W,wDAE3B,O,sBAAA,GAAMgE,KAAKm1V,yBAAyBvtM,eAAe5nJ,KAAKwd,Q,cAAxD,SACAxd,KAAK8iJ,aAAaxiJ,QAAQ,wE,+BAE1BN,KAAK8iJ,aAAahmJ,MAAM,G,+BAvEjBu4V,EAAqB,GADjC,uB,uBAUyC,mB,OAAA,IAAd,UAAc,SACE,mBADF,OACE,IAAf,UAAe,SACkB,mBADlB,OACkB,IAAxB,UAAwB,SACM,mBADN,OACM,IAA3B,8DAA2B,SAC9B,mBAD8B,OAC9B,IAAZ,UAAY,YAbzBA,GAAb,I,mrBCNA,aAKE,WACUt1V,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,oC,MAcvC,OAXE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPpI,SAAU,6BACVoD,KAAM,+BAjBD43V,EAAgC,GAD5C,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,mGCPA55V,EAAOD,QAAU,sD,sFCAjBC,EAAOD,QAAU,0zD,+jBCIjB,aAEE,WAAoBqK,GAAA,KAAAA,S,MAKtB,OAPaq9U,EAAI,GADhB,a,uBAGmC,mB,OAAA,IAAN,oBAAM,YAFvBA,GAAb,I,gDCJAznV,EAAOD,QAAU,2rB,kkECmBjB,aAcE,WACUqK,EACAyvV,EACArR,EACAphM,GAJV,WACU,KAAAh9I,SACA,KAAAyvV,eACA,KAAArR,gBACA,KAAAphM,eAfF,KAAAzoJ,KAAqB,GACrB,KAAAijB,WAAa,IAAI,wBAKjB,KAAA0vO,QAAU,WAEhB,OADA,EAAK/sP,OAAO0zC,MAAM,cACX,EAAK4hT,aAAazhV,KAAK,EAAKwJ,aAQnCtd,KAAKC,OAAS,aAAWC,UAAU,a,YAwFvC,OArFgB,YAAA0Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACpEgE,KAAKC,OAAO0zC,MAAM,Y,WAIN,YAAAx0C,KAAd,W,qBAAsBnD,GAAO,W,kDACpB,SAAMgE,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,kBAGK,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,QACX,GAAM3zC,KAAKu1V,aAAazhV,KAAK9T,KAAKsd,YACtCna,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAGzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGI,YAAAnxU,OAAb,W,qBAAuBjD,GAAO,W,+DAErB,OADHwE,EAAc,IAAI,IACf,GAAMR,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKu1V,aAAat2V,OAAOuB,GACnC2C,MAAK,SAAO2uE,GAAY,qC,kCACvBtxE,EAAK+b,GAAKu1D,EAAMv1D,GAChBvc,KAAKsd,WAAWoiU,UAAU57U,QAAQtD,GAClCR,KAAKsd,WAAWmiU,eAChBz/U,KAAK8iJ,aAAaxiJ,QAAQ,4B,aAG3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAoBI,YAAAuxO,KAAb,SAAkB7tO,G,qBAAcxE,GAAO,W,6DAC9B,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKu1V,aAAa74U,OAAOlc,GACnC2C,MAAK,gD,kCAEJnD,KAAK8iJ,aAAaxiJ,QAAQ,gD,aAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAiBI,YAAAggB,OAAb,SAAoBP,EAAY7e,G,qBAAe1B,GAAO,W,6DAC7C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IACNg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKu1V,aAAaz4U,OAAOP,GACnCpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOA,KACnF,EAAKe,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,oDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAzFE04V,EAAS,GADrB,a,uBAgByB,mB,OAAA,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YAlBzBA,GAAb,I,yECnBA95V,EAAOD,QAAU,0uE,q6DCUjB,aAME,WACU6lD,EACAokS,GADA,KAAApkS,mBACA,KAAAokS,8BAER1lV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAC1CjzU,KAAKC,OAAS,aAAWC,UAAU,c,QA8BvC,OA1BgB,YAAA0Y,SAAd,SAAuB4E,G,qBAAexhB,GAAO,W,kCAC3CgE,KAAKwd,MAAQA,EACbxd,KAAK2lV,2B,WAGC,YAAAA,yBAAR,WACE,kBACGvM,OAAO,QAAQpyK,YAAY,gCAAgCwkD,WAC3D4tH,OAAO,qBAAqBpyK,YAAY,6CAA6CwkD,WACrF4tH,OAAO,WAAWpyK,YAAY,mCAAmC7qI,QAAQ,YAAYqvL,WACrFn+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,W,qBAAuBp/G,GAAO,W,6DACrB,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAQI,YAAAA,KAAb,W,qBAAqB1gE,GAAO,W,kDACnB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAvCE6vR,EAAU,GADtB,uB,uBAQ6C,mB,OAAA,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,YARvDA,GAAb,K,4ECVA/5V,EAAOD,QAAU,80D,6nBCSjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,uB,MA+CvC,OA3CE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3CtD,EAAOmC,IAAI,CAcT,CACEjC,MAAO,GACPpI,SAAU,kBACVoD,KAAM,gBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,uCACpB+H,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBm6C,mBAInC,CACEnkQ,MAAO,gBACPpI,SAAU,oCACVoD,KAAM,gBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,wCACpB+H,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsB46C,yBAMrCtnQ,KAAK8F,OAASA,GAtDL4vV,EAAmB,GAD/B,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,wECTAh6V,EAAOD,QAAU,yZ,qECAjBC,EAAOD,QAAU,0c,k+DCcjB,aAUE,WACUqK,EACAw7C,EACAwhG,EACA4iM,EACA2G,GAJA,KAAAvmV,SACA,KAAAw7C,mBACA,KAAAwhG,eACA,KAAA4iM,8BACA,KAAA2G,kBAZF,KAAA7uU,MAAkB,IAAI,IACtB,KAAAwuU,iBAA2B,EAE3B,KAAAl2I,SAAsB,GACtB,KAAA30L,MAAgB,GAWtBnhB,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1C,IAAIz4T,EAAa,IAAOC,aAExBza,KAAK88H,KAAOtiH,EAAa,6CACzBxa,KAAKC,OAAS,aAAWC,UAAU,gB,cA+FvC,OA1FgB,YAAA0Y,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,6DAG1C,OADAgE,KAAKC,OAAO0zC,MAAM,gBAAiBvzC,EAAO4pC,YACrC5pC,EAAO4pC,WAIZ,GAAMhqC,KAAKqsV,gBAAgBv2I,WACxB3yM,MAAK,SAACsY,GACL,EAAKq6L,SAAWr6L,MALlB,I,OAQF,OALA,SAKA,GAAMzb,KAAKqsV,gBAAgBlrU,QACxBhe,MAAK,SAACsY,GACL,EAAK0F,MAAQ1F,M,cAFjB,SAKK6F,MAAMlhB,EAAO4pC,YAAd,MACK,GAAMhqC,KAAKqsV,gBAAgB/vU,SAASlc,EAAO4pC,YAC/C7mC,MAAK,SAACiuD,GACL,EAAK5zC,MAAQ4zC,EACb,EAAKu0R,8BAEN15U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,U,OAUPkD,KAAK2lV,2B,mCAID,YAAAA,yBAAR,WACE3lV,KAAKC,OAAO0zC,MAAM,4BAClB,kBACGylS,OAAO,QAAQpyK,YAAY,mCAAmCwkD,WAC9D4tH,OAAO,WAAWpyK,YAAY,sCAAsCwkD,WACpE4tH,OAAO,qBAAqBpyK,YAAY,mCAAmCwkD,WAC3En+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,SAAoB4wO,G,qBAA2BhwV,GAAO,W,sCAGpD,OAFAgE,KAAKC,OAAO0zC,MAAM,UAClB3zC,KAAKgsV,gBAAkBA,EAChB,CAAP,EAAOhsV,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKf,sBAAI,sBAAO,C,IAAX,WACE,OAAQ18D,KAAKqsV,gBAAgBjvU,OAAO7C,c,gCAGzB,YAAAmiD,KAAb,W,qBAAqB1gE,GAAO,W,oEAC1BgE,KAAKC,OAAO0zC,MAAM,QAEb3zC,KAAKwd,MAAMjB,GAAZ,MACK,GAAMvc,KAAKqsV,gBAAgBptV,OAAOe,KAAKwd,OAC3Cra,MAAK,SAAOqa,GAAe,qC,yDAE1Bxd,KAAK8iJ,aAAaxiJ,QAAQ,4BAErBN,KAAKgsV,gBAAN,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,c,OAAzC,MAAO,CAAP,EAAO,U,OAEA,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,wBAAyB,CAAEghC,WAAYxsB,EAAMjB,M,OAAtF,MAAO,CAAP,EAAO,oBAGVtQ,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAZ5B,MAAO,CAAP,EAAO,U,OAeA,SAAMkD,KAAKqsV,gBAAgB3vU,OAAO1c,KAAKwd,OAC3Cra,MAAK,SAAOiuD,GAAkB,qC,yDAE7BpxD,KAAK8iJ,aAAaxiJ,QAAQ,6BAErBN,KAAKgsV,gBAAN,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,c,OAAzC,MAAO,CAAP,EAAO,U,2BAIViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAX5B,MAAO,CAAP,EAAO,kBAxGA64V,EAAY,GADxB,a,uBAYyB,mB,OAAA,IAAN,oBAAM,SACoB,mBADpB,OACoB,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACxB,mBADwB,OACxB,IAAf,UAAe,YAf/BA,GAAb,I,+ECdAj6V,EAAOD,QAAU,soE,+kECajB,aAkBE,WACUqK,EACAumV,EACAnI,EACAphM,GAJV,WACU,KAAAh9I,SACA,KAAAumV,kBACA,KAAAnI,gBACA,KAAAphM,eAnBF,KAAAxlI,WAAa,IAAI,wBAIjB,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,wDACjCgE,KAAKC,OAAO0zC,MAAM,c,iBAEC,O,sBAAA,GAAM3zC,KAAKqsV,gBAAgBv4U,KAAK9T,KAAKsd,a,OACtD,MAAO,CAAP,EADiB,U,OAIjB,O,WAAO,CAAP,EAAOtd,KAAK8iJ,aAAahmJ,MAAM,I,yBAWjC,IAAI0d,EAAa,IAAOC,aAExBza,KAAK88H,KAAOtiH,EAAa,6CACzBxa,KAAKC,OAAS,aAAWC,UAAU,gB,YA4DvC,OAzDgB,YAAAf,KAAd,W,qBAAsBnD,GAAO,W,6DAEpB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKqsV,gBAAgBv4U,KAAK9T,KAAKsd,YACzCna,MAAK,SAACsY,GACL,EAAK6B,WAAWmiU,aAAehkU,EAASgkU,aACxC,EAAKniU,WAAWoiU,UAAYjkU,EAASphB,QAEtC4R,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGI,YAAA3yT,YAAb,SAAyBjd,G,qBAAiBxE,GAAO,W,6DACxC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK9C,OACXg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKqsV,gBAAgB5uU,YAAYjd,EAAK+b,IAChDpZ,MAAK,WAGJ,EAAK2/I,aAAaxiJ,QAAQ,gCAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,U,OAWP0D,EAAK8F,UAAY9F,EAAK8F,S,6CAhB1B,MAAO,CAAP,EAAO,kBAqBI,YAAAwW,OAAb,SAAoBP,EAAY60C,G,qBAAmBp1D,GAAO,W,6DACjD,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,OACNg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKqsV,gBAAgBvvU,OAAOP,GACtCpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOA,KACnF,EAAKe,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,iCAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAtEE84V,EAAY,GADxB,uB,uBAoByB,mB,OAAA,IAAN,oBAAM,SACkB,mBADlB,OACkB,IAAf,UAAe,SACJ,mBADI,OACJ,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YAtBzBA,GAAb,I,kpBCJA,aAKE,WACU71V,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,2B,MAuBvC,OApBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,kBACVoD,KAAM,aAKR,CACEgF,MAAO,uBACPpI,SAAU,0BACVoD,KAAM,4BAxBDm4V,EAAuB,GADnC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,2ECTAn6V,EAAOD,QAAU,uD,gECAjBC,EAAOD,QAAU,40E,skECajB,aAgBE,WACUq6V,EACAzJ,EACAnI,EACAphM,GAJV,WACU,KAAAgzM,sBACA,KAAAzJ,kBACA,KAAAnI,gBACA,KAAAphM,eAfF,KAAAxlI,WAAa,IAAI,wBAMjB,KAAA0vO,QAAU,WAEhB,OAAO,EAAK8oG,oBAAoBhiV,KAAK,EAAKk2B,WAAY,EAAK1sB,aAS3Dtd,KAAKC,OAAS,aAAWC,UAAU,oB,YAqEvC,OAlEgB,YAAA0Y,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,kCAC1CgE,KAAKI,OAASA,E,WAGF,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,6DAEtBslB,MAAMthB,KAAKI,OAAO4pC,YAAnB,YACFhqC,KAAKgqC,YAAchqC,KAAKI,OAAO4pC,W,iBAGb,O,sBAAhB,EAAAhqC,KAAgB,GAAMA,KAAKqsV,gBAAgB/vU,SAAStc,KAAKI,OAAO4pC,a,OACzD,OADP,EAAKonB,SAAW,SACT,GAAMpxD,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yBAGPvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BAMhB,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAAmU,SAAd,W,qBAA0BvoV,GAAO,W,6DAGxB,OAFPgE,KAAKC,OAAOE,KAAK,YAEV,GAAMH,KAAK81V,oBAAoBhiV,KAAK9T,KAAKgqC,WAAYhqC,KAAKsd,YAC9Dna,MAAK,SAACsY,GACL,EAAK6B,WAAWmiU,aAAehkU,EAASgkU,aACxC,EAAKniU,WAAWoiU,UAAYjkU,EAASphB,QAEtC4R,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUI,YAAAuxO,KAAb,SAAkB7tO,G,qBAAqBxE,GAAO,W,6DAGrC,OAFPgE,KAAKC,OAAOE,KAAK,QAEV,GAAMH,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAAQ,qC,oEACtBA,EAASw9B,eAAgBx9B,EAASxR,OAAnC,MACc,IAAZzJ,EAAK+b,GAAL,MACK,GAAMvc,KAAK81V,oBAAoBp5U,OAAOlc,GAC1C2C,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,0DAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,U,OASA,SAAMkD,KAAK81V,oBAAoB72V,OAAOuB,GAC1C2C,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,0DAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,U,mCAfb,MAAO,CAAP,EAAO,kBAjEEi5V,EAAgB,GAD5B,uB,uBAkBmD,mB,OAAA,IAAnB,UAAmB,SACR,mBADQ,OACR,IAAf,UAAe,SACJ,mBADI,OACJ,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YApBzBA,GAAb,I,iGCbAr6V,EAAOD,QAAU,8+D,s8DCSjB,aAME,WACU6lD,EACAokS,GADA,KAAApkS,mBACA,KAAAokS,8BALF,KAAAloU,MAAsB,IAAI,IAOhCxd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAC1CjzU,KAAKC,OAAS,aAAWC,UAAU,qB,QA8BvC,OA3BgB,YAAA0Y,SAAd,SAAuB4E,G,qBAAsBxhB,GAAO,W,2BAElD,OADAgE,KAAKwd,MAAQA,EACN,CAAP,EAAOxd,KAAK2lV,mCAGN,YAAAA,yBAAR,WACE,kBACGvM,OAAO,eAAepyK,YAAY,8CAA8CwkD,WAChFn+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,W,qBAAuBp/G,GAAO,W,6DACrB,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBASI,YAAAA,KAAb,W,qBAAqB1gE,GAAO,W,kDAGnB,SAAMgE,KAAKshD,iBAAiBskB,GAAG5lE,KAAKwd,Q,OAA3C,MAAO,CAAP,EAAO,kBAvCEw4U,EAAiB,GAD7B,a,uBAQ6C,mB,OAAA,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,YARvDA,GAAb,K,kGCTAt6V,EAAOD,QAAU,qmD,goBCSjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,yB,MAevC,OAZE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,qBACVoD,KAAM,oBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,iDApBf41V,EAAqB,GADjC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,8ECTAv6V,EAAOD,QAAU,qU,y7DCKjB,aAQE,WACSsrE,EACC1sD,EACDyrO,GAFA,KAAA/+K,UACC,KAAA1sD,KACD,KAAAyrO,gBALD,KAAA1lP,OAAc,GAMpBJ,KAAKC,OAAS,aAAWC,UAAU,wB,UAMvC,OAFe,YAAAopD,SAAb,W,qBAAyBttD,GAAO,W,4CAXhC,GADC,W,4DAJUk6V,EAAoB,GADhC,a,uBAU0B,mB,EAAA,oBAAP1uR,kBAAO,SACI,mBADJ,OACI,IAAf,sCAAe,SACQ,mBADR,OACQ,IAAb,kCAAa,YAX1B0uR,GAAb,I,4FCLAx6V,EAAOD,QAAU,6nB,m+DCmBjB,aAiBE,WACUm/D,EACA90D,EACAg9I,EACA4iM,EACAyQ,EACA5B,GALA,KAAA35R,QACA,KAAA90D,SACA,KAAAg9I,eACA,KAAA4iM,8BACA,KAAAyQ,oBACA,KAAA5B,eApBF,KAAAn0V,OAAc,GAQd,KAAAod,MAAc,IAAI,IAClB,KAAAwuU,iBAA2B,EAcjChsV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,kBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,gBA8F5B,OA3FgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACpEgE,KAAKI,OAASA,E,WAGF,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,mEAQZ,OAPVslB,MAAMthB,KAAKI,OAAOikV,kBACrBrkV,KAAKie,WAAaje,KAAKI,OAAOikV,gBAGhCrkV,KAAKm2V,kBAAkB/4U,OAAO87B,iBAAmBl5C,KAAKie,UAEtDje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,KAAO,EAAK0B,aAC3D,EAAAje,KAAc,GAAMA,KAAKu0V,aAAah3U,U,OAAtC,EAAKk4F,OAAS,S,8CAGRn0F,MAAMthB,KAAKI,OAAOg2V,cAAnB,OACF,EAAAp2V,KAAa,GAAMA,KAAKm2V,kBAAkB75U,SAAStc,KAAKI,OAAOg2V,gB,cAA/D,EAAK54U,MAAQ,S,aAGbxd,KAAKwd,MAAM+1U,UAAY,IAAUhO,Q,wBAEnCvlV,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIpB,YAAA6oV,yBAAR,WACE,kBACGvM,OAAO,aAAapyK,YAAY,qCAAqCwkD,WACrE4tH,OAAO,YAAYpyK,YAAY,oCAAoCwkD,WACnE4tH,OAAO,SAASpyK,YAAY,gCAAgCn8F,QAAQ2gJ,WACpEn+K,GAAGrtC,KAAKwd,QAGC,YAAA49F,OAAd,SAAqB4wO,G,qBAA2BhwV,GAAO,W,sCAErD,OADAgE,KAAKgsV,gBAAkBA,EAChB,CAAP,EAAOhsV,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKf,sBAAI,sBAAO,C,IAAX,WACE,OAAQ18D,KAAKm2V,kBAAkB/4U,OAAO7C,c,gCAG1B,YAAAmiD,KAAd,W,qBAAsB1gE,GAAO,W,oEACtBgE,KAAKwd,MAAMjB,GAAZ,MACK,GAAMvc,KAAKm2V,kBAAkBl3V,OAAOe,KAAKwd,OAC7Cra,MAAK,SAAOqa,GAAW,qC,yDACtBxd,KAAK8iJ,aAAaxiJ,QAAQ,4BAErBN,KAAKgsV,gBAAN,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,iB,OAAzC,MAAO,CAAP,EAAO,U,cAEJhJ,KAAKI,OAAOid,YACN,GAAMrd,KAAK8F,OAAOkD,gBAAgB,2BAA4B,CAAEotV,aAAc54U,EAAMjB,MAD1F,M,OACD,MAAO,CAAP,EAAO,U,OAGA,SAAMvc,KAAK8F,OAAOkD,gBAAgB,2BAA4B,CAAEotV,aAAc54U,EAAMjB,GAAK8nU,eAAgBrkV,KAAKq2V,uB,OAArH,MAAO,CAAP,EAAO,oBAKZpqV,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAjB5B,MAAO,CAAP,EAAO,U,OAoBA,SAAMkD,KAAKm2V,kBAAkBz5U,OAAO1c,KAAKwd,OAC7Cra,MAAK,gD,yDAEJnD,KAAK8iJ,aAAaxiJ,QAAQ,6BAErBN,KAAKgsV,gBAAN,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,iB,OAAzC,MAAO,CAAP,EAAO,U,2BAGViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,kBAeJ,YAAAmR,4BAAP,WACE,OAAO,qBAAmBlH,SAlH5B,GADC,W,mEAPUuvV,EAAc,GAD1B,uB,uBAmB8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACpB,mBADoB,OACpB,IAAjB,UAAiB,SACV,mBADU,OACV,IAAZ,UAAY,YAvBzBA,GAAb,I,uFCnBA56V,EAAOD,QAAU,g5E,6sECyBjB,aAoCE,WACU8xV,EACA3yR,EACAu7R,EACAjS,EACAphM,GALV,WACU,KAAAyqM,sBACA,KAAA3yR,QACA,KAAAu7R,oBACA,KAAAjS,gBACA,KAAAphM,eAtCF,KAAA1iJ,OAAc,GAKd,KAAAkd,WAAoC,IAAI,wBAKxC,KAAAivU,UAAoB,EAEpB,KAAAgK,WAAqB,EAEtB,KAAAC,aAAiC,IAAiBlnG,KAClD,KAAA8vB,iBAAmB,IAOlB,KAAApyB,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAKm2V,kBAAkBriV,KAAK9T,KAAKsd,YAC3Cna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAgBPkD,KAAKC,OAAS,aAAWC,UAAU,kBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,cA6L5B,OA1LU,YAAA4lV,mBAAR,WACMz2V,KAAKsd,WAAWoiU,UAAU9kV,OAAS,EACrCoF,KAAKu2V,WAAY,EAGjBv2V,KAAKu2V,WAAY,GAIP,YAAA39U,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,yDACpEgE,KAAKI,OAASA,EACVJ,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAIJ,YAAAjB,KAAd,W,kIAEIa,KAAK02V,iBAED12V,KAAKie,WACPje,KAAKC,OAAO0zC,MAAM,YAAa3zC,KAAKie,WACpCje,KAAKm2V,kBAAkB/4U,OAAO87B,iBAAmBl5C,KAAKie,UACtDje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAC3Dje,KAAKusV,UAAW,EAChB,GAAMvsV,KAAK22V,sBALT,M,OAMK,OADP,SACO,GAAM32V,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yEAOC,YAAAmS,eAAd,W,qBAAgC16V,GAAO,W,kCACjCgE,KAAKI,OAAOikV,gBAAiD,WAA/BrkV,KAAKI,OAAOikV,eAC5CrkV,KAAKie,UAAY,KAETqD,MAAMthB,KAAKI,OAAOikV,gBAIpBrkV,KAAKu1J,iBACXv1J,KAAKie,WAAaje,KAAKq2V,sBAJvBr2V,KAAKC,OAAO0zC,MAAM,iBAAkB3zC,KAAKI,OAAOikV,gBAChDrkV,KAAKie,WAAaje,KAAKI,OAAOikV,gB,WAOpB,YAAAE,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,SAAMgE,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,aACxC,EAAKgX,wBAENxqV,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAIK,YAAA3yT,YAAd,SAA0Bjd,G,qBAAaxE,GAAO,W,6DACrC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAKioD,WAEXiwG,YAAW,SAAOj9I,GAA2B,qC,oEACvCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKm2V,kBAAkB14U,YAAYjd,EAAK+b,IAClDpZ,MAAK,WAEJ,OAAQ3C,EAAK+yV,WACX,KAAK,IAAUE,OACbjzV,EAAK+yV,UAAY,IAAUG,SAC3B,MACF,KAAK,IAAUA,SACblzV,EAAK+yV,UAAY,IAAUE,OAK/B,EAAK3wM,aAAaxiJ,QAAQ,gCAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAhB5B,MAAO,CAAP,EAAO,U,mCANb,MAAO,CAAP,EAAO,kBA4BK,YAAA85V,cAAd,SAA4BC,G,qBAAiB76V,GAAO,W,kDAC3C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOq5U,K,OAFT,MAAO,CAAP,EAAO,kBAMK,YAAAptT,wBAAd,SAAsCltB,G,qBAAavgB,GAAO,W,6DACjD,SAAMgE,KAAKm2V,kBAAkB1sT,wBAAwBltB,GACzDpZ,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,yDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBASK,YAAAggB,OAAd,SAAqBtc,G,qBAAaxE,GAAO,W,6DAChC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAKioD,WACXiwG,YAAW,SAACj9I,GACRA,EAASw9B,cACZ,EAAKk9S,kBAAkBr5U,OAAOtc,EAAK+b,IAChCpZ,MAAK,gD,wCACAshV,EAA6BzkV,KAAKsd,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ7Q,EAAK+b,GAAGyC,YACrGhf,KAAKsd,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrDzkV,KAAKsd,WAAWmiU,eAChBz/U,KAAK8iJ,aAAaxiJ,QAAQ,8BAC1BN,KAAKy2V,qB,aAENxqV,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,U,OAdhC,MAAO,CAAP,EAAO,kBAoBK,YAAA+tT,cAAd,SAA4BrqT,G,qBAAaxE,GAAO,W,+DACzB,SAAMgE,KAAKutV,oBAAoBjxU,QAAQtc,KAAKie,Y,OAC1D,OADD6uU,EAAe,SACd,GAAM9sV,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOsvU,EAAa33L,YACnBuD,YAAW,SAAOj9I,GAA2B,qC,6DACzCA,EAASw9B,aAAV,Y,iBAIkB,O,sBAAA,GAAMj5C,KAAKm2V,kBAAkBtrC,cAAcrqT,EAAMib,EAASxR,S,cAA1D,SACdw6U,EAA6BzkV,KAAKsd,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ7Q,EAAK+b,GAAGyC,YACrGhf,KAAKsd,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrDzkV,KAAKsd,WAAWmiU,eAChBz/U,KAAK8iJ,aAAaxiJ,QAAQ,4BAC1BN,KAAKy2V,qB,+BAELz2V,KAAK8iJ,aAAahmJ,MAAM,G,yCAf9B,MAAO,CAAP,EAAO,kBAqBI,YAAAg6V,YAAb,W,qBAA4B96V,GAAO,W,wDAG/B,O,sBADAgE,KAAKw2V,aAAe,IAAiBO,WACrC,GAAM/2V,KAAKm2V,kBAAkB/mG,kB,cAA7B,S,+BAEApvP,KAAKw2V,aAAe,IAAiBlnG,KACrCtvP,KAAK8iJ,aAAahmJ,MAAM,G,+BAIf,YAAAk6V,eAAb,W,qBAA+Bh7V,GAAO,W,0DAEtB,O,sBAAA,GAAMgE,KAAKm2V,kBAAkB5mG,wB,cAAnC9mP,EAAM,WAEV9I,OAAO87C,KAAKhzC,EAAK,U,+BAGnBzI,KAAK8iJ,aAAahmJ,MAAM,G,+BAIf,YAAA65V,kBAAb,W,qBAAkC36V,GAAO,W,wDAEjB,O,sBAApB,EAAAgE,KAAoB,GAAMA,KAAKm2V,kBAAkB9mG,mB,cAAjD,EAAKmnG,aAAe,S,6BAEpBx2V,KAAKw2V,aAAe,IAAiBlnG,K,+BAlNzC,GADC,W,8DAGD,GADC,W,mEAtBU2nG,EAAc,GAD1B,uB,uBAsCmD,mB,OAAA,IAAnB,UAAmB,SACrB,mBADqB,OACrB,IAAZ,UAAY,SACiB,mBADjB,OACiB,IAAjB,UAAiB,SACR,mBADQ,OACR,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YAzCzBA,GAAb,I,opBChBA,aAKE,WACUl3V,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,uB,MAuBvC,OApBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,qBACVoD,KAAM,gBAKR,CACEgF,MAAO,gBACPpI,SAAU,6BACVoD,KAAM,+BAxBDw5V,EAAmB,GAD/B,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,iFCTAx7V,EAAOD,QAAU,uD,sECAjBC,EAAOD,QAAU,s2J,qnBCWjB,aAKE,WACUsE,GAAA,KAAAA,OAERC,KAAKC,OAAS,aAAWC,UAAU,sB,MAuBvC,OApBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPpI,SAAU,iBACVoD,KAAM,sBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,6CApBf82V,EAAkB,GAD9B,uB,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,oECXAz7V,EAAOD,QAAU,8M,w8DCkBjB,aAeE,WACUm/D,EACA90D,EACAg9I,EACDs0M,EACC1R,EACA2R,GALA,KAAAz8R,QACA,KAAA90D,SACA,KAAAg9I,eACD,KAAAs0M,mBACC,KAAA1R,8BACA,KAAA2R,yBAlBF,KAAAj3V,OAAc,GAMd,KAAA4rV,iBAA2B,EAcjChsV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,eAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,gBA6E5B,OAzEe,YAAA+H,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,kCACzCgE,KAAKI,OAASA,E,WAGH,YAAAjB,KAAb,W,qBAAqBnD,GAAO,W,mEAGP,O,sBAAjB,EAAAgE,KAAiB,GAAMA,KAAKo3V,iBAAiB75U,U,OAMhC,OANb,EAAKu9C,UAAY,SAEjB96D,KAAKie,WAAcje,KAAKI,OAAO6d,UAC/Bje,KAAKq3V,uBAAuBj6U,OAAO87B,iBAAmBl5C,KAAKie,UAC3Dje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3D,EAAAje,KAAa,GAAMA,KAAKq3V,uBAAuBvqS,yBAAyB9sD,KAAKI,OAAOk3V,Y,cAApF,EAAK95U,MAAQ,SACbxd,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIpB,YAAA6oV,yBAAR,sBACE,kBACGvM,OAAO,cAAcpyK,YAAY,sCAAsCwkD,WACvE4tH,OAAO,WAAWpyK,YAAY,qCAAqCwkD,WACnE4tH,OAAO,aAAapyK,YAAY,uCAAuCwkD,WACvE4tH,OAAO,WAAWpyK,YAAY,qCAAqCwkD,WACnE4tH,OAAO,iBAAiBpyK,YAAY,2CAA2CwkD,WAAWvpG,MAAK,SAAA/6G,GAAK,MAAmB,iBAAnB,EAAKsW,MAAM9f,QAC/G07U,OAAO,kBAAkBpyK,YAAY,4CAA4CwkD,WAAWvpG,MAAK,SAAA/6G,GAAK,MAAmB,oBAAnB,EAAKsW,MAAM9f,QACjH2vC,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,SAAoB4wO,G,qBAA2BhwV,GAAO,W,sCAEpD,OADAgE,KAAKgsV,gBAAkBA,EAChB,CAAP,EAAOhsV,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKf,sBAAI,sBAAO,C,IAAX,WACE,OAAQ18D,KAAKq3V,uBAAuBj6U,OAAO7C,c,gCAGhC,YAAAmiD,KAAb,W,qBAAqB1gE,GAAO,W,yEACJ4B,IAAlBoC,KAAKwd,MAAMjB,IAAsC,IAAlBvc,KAAKwd,MAAMjB,GAA1C,MACK,GAAMvc,KAAKq3V,uBAAuBp4V,OAAOe,KAAKwd,OAClDra,MAAK,SAAOsY,GAAyB,qC,yDACpCzb,KAAKwd,MAAQ/B,EACbzb,KAAK8iJ,aAAaxiJ,QAAQ,4BACrBN,KAAKgsV,gBAAN,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,a,OAAzC,MAAO,CAAP,EAAO,U,2BAGViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,U,OAYA,SAAMkD,KAAKq3V,uBAAuB36U,OAAO1c,KAAKwd,OAClDra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6BACrBN,KAAKgsV,gBAAN,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,a,OAAzC,MAAO,CAAP,EAAO,U,2BAGViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,kBA5FAy6V,EAAW,GADvB,uB,uBAiB8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SACU,mBADV,OACU,IAAnB,UAAmB,SACoB,mBADpB,OACoB,IAA3B,8DAA2B,SACV,mBADU,OACV,IAAtB,UAAsB,YArB7CA,GAAb,I,+EClBA77V,EAAOD,QAAU,krH,4+DCgBjB,aAQE,WACUqK,EACAw7C,EACAwhG,EACA4iM,EACA8R,GAJA,KAAA1xV,SACA,KAAAw7C,mBACA,KAAAwhG,eACA,KAAA4iM,8BACA,KAAA8R,0BATF,KAAAxL,iBAA2B,EAWjChsV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,6BACnCF,KAAKy3V,aAAe,wI,cAyDxB,OArDe,YAAA7+U,SAAb,SAAsBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,8DAE/DoE,EAAOid,YAAP,Y,iBAEa,O,sBAAb,EAAArd,KAAa,GAAMA,KAAKw3V,wBAAwBl7U,SAASlc,EAAOid,c,cAAhE,EAAKG,MAAQ,SACbxd,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAKtB,YAAA6oV,yBAAR,WACE,kBACGvM,OAAO,SAASpyK,YAAY,6CAA6C7qI,QAAQn8B,KAAKy3V,cAAcjsI,WACpG4tH,OAAO,UAAUpyK,YAAY,8CAA8C7qI,QAAQn8B,KAAKy3V,cAAcjsI,WACtG4tH,OAAO,aAAapyK,YAAY,iDAAiD7qI,QAAQn8B,KAAKy3V,cAAcjsI,WAC5G4tH,OAAO,aAAapyK,YAAY,iDAAiD7qI,QAAQn8B,KAAKy3V,cAAcjsI,WAC5G4tH,OAAO,SAASpyK,YAAY,6CAA6C7qI,QAAQn8B,KAAKy3V,cAAcjsI,WACpG4tH,OAAO,cAAcpyK,YAAY,kDAAkD7qI,QAAQn8B,KAAKy3V,cAAcjsI,WAC9G4tH,OAAO,qBAAqBpyK,YAAY,yDAAyD7qI,QAAQn8B,KAAKy3V,cAAcjsI,WAC5Hn+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,SAAoB4wO,G,qBAA2BhwV,GAAO,W,sCAEpD,OADAgE,KAAKgsV,gBAAkBA,EAChB,CAAP,EAAOhsV,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKf,sBAAI,sBAAO,C,IAAX,WACE,OAAQ18D,KAAKw3V,wBAAwBp6U,OAAO7C,c,gCAGjC,YAAAmiD,KAAb,W,qBAAqB1gE,GAAO,W,6DACnB,SAAMgE,KAAKw3V,wBAAwB96U,OAAO1c,KAAKwd,OACnDra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6BAErBN,KAAKgsV,gBAAN,MAEK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,4B,OAAzC,MAAO,CAAP,EAAO,U,2BAGViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,kBA/DE46V,EAAyB,GADrC,uB,uBAUyB,mB,OAAA,IAAN,oBAAM,SACoB,mBADpB,OACoB,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACR,mBADQ,OACR,IAAvB,UAAuB,YAb/CA,GAAb,I,4FChBAh8V,EAAOD,QAAU,gmG,+nBCWjB,aAKE,WACUsE,GAAA,KAAAA,OAERC,KAAKC,OAAS,aAAWC,UAAU,sB,MAiDvC,OA9CE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,2BACVoD,KAAM,2BAWR,CACEgF,MAAO,YACPpI,SAAU,gCACVoD,KAAM,8BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,uDAStB,CACEqC,MAAO,SACPpI,SAAU,6BACVoD,KAAM,2BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,uDA/Cf82V,EAAkB,GAD9B,uB,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,8ECXAz7V,EAAOD,QAAU,uD,ipBCSjB,aAKE,WACUsE,GAAA,KAAAA,OAERC,KAAKC,OAAS,aAAWC,UAAU,mC,MAuBvC,OApBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,uBACVoD,KAAM,oBAKR,CACEgF,MAAO,yBACPpI,SAAU,mCACVoD,KAAM,iCACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,iDA3Bfs3V,EAA+B,GAD3C,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,mFCTAj8V,EAAOD,QAAU,uD,8lBCajB,aAOE,aAUMuE,KAAKC,OAAS,aAAWC,UAAU,wBAiB3C,OAlCa03V,EAAoB,GADhC,uB,2BACYA,GAAb,I,sECbAl8V,EAAOD,QAAU,quC,s+DCgBjB,aAQE,WACUqK,EACAw7C,EACAwhG,EACA4iM,EACAmS,GAJA,KAAA/xV,SACA,KAAAw7C,mBACA,KAAAwhG,eACA,KAAA4iM,8BACA,KAAAmS,uBATF,KAAA7L,iBAA2B,EAWjChsV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAC1CjzU,KAAKy3V,aAAe,wIACpBz3V,KAAKC,OAAS,aAAWC,UAAU,0B,cAiDvC,OA5Ce,YAAA0Y,SAAb,SAAsBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,6DACnEgE,KAAKC,OAAO0zC,MAAM,wBAAyBvzC,EAAOid,cAC9Cjd,EAAOid,YAAP,Y,iBAEa,O,sBAAb,EAAArd,KAAa,GAAMA,KAAK63V,qBAAqBv7U,SAASlc,EAAOid,c,cAA7D,EAAKG,MAAQ,SACbxd,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAKtB,YAAA6oV,yBAAR,WACE,kBACGvM,OAAO,cAAcpyK,YAAY,kDAAkD7qI,QAAQn8B,KAAKy3V,cAAcjsI,WAC9G4tH,OAAO,WAAWpyK,YAAY,+CAA+C7qI,QAAQn8B,KAAKy3V,cAAcjsI,WACxGn+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,SAAoB4wO,G,qBAA2BhwV,GAAO,W,sCAEpD,OADAgE,KAAKgsV,gBAAkBA,EAChB,CAAP,EAAOhsV,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKF,YAAAA,KAAb,W,qBAAqB1gE,GAAO,W,6DACnB,SAAMgE,KAAK63V,qBAAqBn7U,OAAO1c,KAAKwd,OAChDra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6BAErBN,KAAKgsV,gBAAN,MAEK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,4B,OAAzC,MAAO,CAAP,EAAO,U,2BAGViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,kBAtDEg7V,EAAsB,GADlC,uB,uBAUyB,mB,OAAA,IAAN,oBAAM,SACoB,mBADpB,OACoB,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACd,mBADc,OACd,IAApB,UAAoB,YAbzCA,GAAb,I,yFChBAp8V,EAAOD,QAAU,67C,4ECCjB,6E,oECDAC,EAAOD,QAAU,qd,8nBCSjB,aAKE,WACUsE,GAAA,KAAAA,OAERC,KAAKC,OAAS,aAAWC,UAAU,0B,MAqCvC,OAlCE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,iBACVoD,KAAM,YAKR,CACEgF,MAAO,qBACPpI,SAAU,yBACVoD,KAAM,wBAIR,CACEgF,MAAO,kBACPpI,SAAU,oBACVoD,KAAM,0BAEN4J,MAAOtH,KAAKD,KAAKM,GAAG,+CAlCf03V,EAAsB,GADlC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,yECTAr8V,EAAOD,QAAU,uD,g8DCoBjB,aAaE,WACUqK,EACA80D,EACAkoF,EACA4iM,EACA2R,GAJA,KAAAvxV,SACA,KAAA80D,QACA,KAAAkoF,eACA,KAAA4iM,8BACA,KAAA2R,yBAfF,KAAAj3V,OAAc,GAQd,KAAAmsV,UAAoB,EAQ1BvsV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,eAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,cAmC5B,OAhCe,YAAA+H,SAAb,SAAsBxY,EAAa8iV,EAA0BxyU,G,qBAAa1U,GAAO,W,yDAE3EgE,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAIJ,YAAAjB,KAAd,W,4GAEOmiB,MAAMthB,KAAKI,OAAO6d,WAAnB,YAEFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAC9Bje,KAAKq3V,uBAAuBj6U,OAAO87B,iBAAmBl5C,KAAKie,UAC3Dje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAC3Dje,KAAKusV,UAAW,E,iBAGW,O,sBAAzB,EAAAvsV,KAAyB,GAAMA,KAAKq3V,uBAAuB95U,U,cAA3D,EAAKy6U,kBAAoB,S,+BAGzBh4V,KAAK8iJ,aAAahmJ,MAAM,G,+BAKvB,YAAAm7V,UAAP,WACE,OAAOj4V,KAAK8F,OAAOyC,SAAS,oBAzDnB2vV,EAAW,GADvB,uB,uBAeyB,mB,OAAA,IAAN,oBAAM,SACK,mBADL,OACK,IAAZ,UAAY,SACO,mBADP,OACO,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACV,mBADU,OACV,IAAtB,UAAsB,YAlB7CA,GAAb,I,6ECpBAx8V,EAAOD,QAAU,u1C,q+DCkBjB,aAcE,WACUm/D,EACA90D,EACAw7C,EACAwhG,EACA4iM,EACAyS,GALA,KAAAv9R,QACA,KAAA90D,SACA,KAAAw7C,mBACA,KAAAwhG,eACA,KAAA4iM,8BACA,KAAAyS,wBAjBF,KAAA/3V,OAAc,GAKd,KAAAod,MAA8B,IAAI,IAClC,KAAAwuU,iBAA2B,EAajChsV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,kBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,gBAoF5B,OAhFe,YAAA+H,SAAb,SAAsBxY,EAAa8iV,EAA0BxyU,G,qBAAa1U,GAAO,W,kCAC/EgE,KAAKI,OAASA,E,WAGH,YAAAjB,KAAb,W,qBAAqBnD,GAAO,W,iEAOX,O,sBALbgE,KAAKie,WAAcje,KAAKI,OAAO6d,UAE/Bje,KAAKm4V,sBAAsB/6U,OAAO87B,kBAAoBl5C,KAAKI,OAAO6d,UAClEje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3D,EAAAje,KAAa,GAAMA,KAAKm4V,sBAAsB35V,O,cAA9C,EAAKgf,MAAQ,SACbxd,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIpB,YAAA6oV,yBAAR,sBACE,kBACGvM,OAAO,iBAAiBpyK,YAAY,2CAA2CwkD,WAC/E4tH,OAAO,qBAAqBpyK,YAAY,2CAA2CwkD,WAAWvpG,MAAK,SAAA/6G,GAAK,SAAKsW,MAAM46U,iBACnHhf,OAAO,aAAapyK,YAAY,2CAA2CwkD,WAC3E4tH,OAAO,iBAAiBpyK,YAAY,2CAA2CwkD,WAAWvpG,MAAK,SAAA/6G,GAAK,SAAKsW,MAAM4uE,aAC/GgtP,OAAO,gBAAgBpyK,YAAY,2CAA2CwkD,WAC9E4tH,OAAO,oBAAoBpyK,YAAY,2CAA2CwkD,WAAWvpG,MAAK,SAAA/6G,GAAK,SAAKsW,MAAM66U,gBAClHjf,OAAO,sBAAsBpyK,YAAY,2CAA2CwkD,WACpF4tH,OAAO,0BAA0BpyK,YAAY,2CAA2CwkD,WAAWvpG,MAAK,SAAA/6G,GAAK,SAAKsW,MAAM86U,sBACxHjrT,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,SAAoB4wO,G,qBAA2BhwV,GAAO,W,6DAE7C,OADPgE,KAAKgsV,gBAAkBA,EAChB,GAAMhsV,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAQT,sBAAI,sBAAO,C,IAAX,WACE,OAAQ18D,KAAKm4V,sBAAsB/6U,OAAO7C,c,gCAG/B,YAAAmiD,KAAb,W,qBAAqB1gE,GAAO,W,wDAExB,O,sBAAA,GAAMgE,KAAKm4V,sBAAsBz7U,OAAO1c,KAAKwd,Q,cAA7C,SAEAxd,KAAK8iJ,aAAaxiJ,QAAQ,6BAErBN,KAAKgsV,gBAAN,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,a,OAAzC,MAAO,CAAP,EAAO,U,4CAIThJ,KAAK8iJ,aAAahmJ,MAAM,G,+BAKrB,YAAA+H,OAAP,SAAcgqV,EAAqB0J,GACjC,IAAK1J,EACH,OAAQ0J,GACN,KAAK,EACHv4V,KAAKwd,MAAMg7U,kBAAoB,KAC/B,MACF,KAAK,EACHx4V,KAAKwd,MAAMi7U,cAAgB,KAC3B,MACF,KAAK,EACHz4V,KAAKwd,MAAMk7U,iBAAmB,KAC9B,MACF,KAAK,EACH14V,KAAKwd,MAAMm7U,uBAAyB,OA1GjCC,EAAc,GAD1B,uB,uBAgB8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACoB,mBADpB,OACoB,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACZ,mBADY,OACZ,IAArB,UAAqB,YApB3CA,GAAb,I,kFClBAl9V,EAAOD,QAAU,s5H,wpBCQjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,iC,MA0DvC,OAvDE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3CtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPhF,KAAM,2BACNpD,SAAU,6BACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,8CACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBm7C,sBAInC,CACEnlQ,MAAO,6BACPhF,KAAM,8CACNpD,SAAU,2EACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,2EACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBm7C,sBAIlC,CACCnlQ,MAAO,oBACPhF,KAAM,qCACNpD,SAAU,yDACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,kEACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBm7C,sBAInC,CACEnlQ,MAAO,iBACPhF,KAAM,kCACNpD,SAAU,oDACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,uDACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBi7C,sBAMrC3nQ,KAAK8F,OAASA,GAhELgzV,EAAuB,GADnC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,+FCRAp9V,EAAOD,QAAU,8Q,4FCAjBC,EAAOD,QAAU,ye,ilECqBjB,aAaE,WACUs9V,EACAj2M,EACA4iM,EACA5/U,EACDsxV,EACA4B,EACA9uT,EACA+uT,EACAC,GARC,KAAAH,uBACA,KAAAj2M,eACA,KAAA4iM,8BACA,KAAA5/U,SACD,KAAAsxV,mBACA,KAAA4B,kBACA,KAAA9uT,gBACA,KAAA+uT,mBACA,KAAAC,qBAnBD,KAAA57U,WAAa,IAAI,wBACjB,KAAAE,MAAqB,IAAI,IACzB,KAAAs9C,UAAwB,GACxB,KAAAq+R,qBAA8C,GAE/C,KAAApkT,cAA+B,GAC/B,KAAAqkT,2BAAuC,GAe5Cp5V,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,mB,sBA+HvC,OA3HS,YAAAylV,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,QAAQpyK,YAAY,uCAAuCwkD,WAClE4tH,OAAO,mBAAmBpyK,YAAY,uCAAuCwkD,WAC7E4tH,OAAO,iBAAiBpyK,YAAY,kDAAkDwkD,WACtF4tH,OAAO,oBAAoBpyK,YAAY,oDAAoDwkD,WAC3F4tH,OAAO,cAAcpyK,YAAY,2CAA2CwkD,WAC5E4tH,OAAO,yBAAyBpyK,YAAY,wDAAwDwkD,WACpG4tH,OAAO,eAAepyK,YAAY,+CAA+CwkD,WAAWrvL,QAAQ,YACpGi9S,OAAO,SAASpyK,YAAY,wCAAwC7qI,QAAQ,YAC5EkR,GAAGrtC,KAAKwd,QAGC,YAAA5E,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,uEAGvB,O,sBAAjB,EAAAgE,KAAiB,GAAMA,KAAKo3V,iBAAiB75U,U,cAA7C,EAAKu9C,UAAY,SACZ96D,KAAKwd,MAAMjB,KAChBvc,KAAKwd,MAAMw7U,gBAAkB,IAAgBK,OAC7Cr5V,KAAKwd,MAAM0sB,cAAgB,IAAcovT,OACzCt5V,KAAKwd,MAAM+7U,WAAa,IAAWC,QACnCx5V,KAAKwd,MAAMi8U,sBAAuB,EAClCz5V,KAAKg3G,YAAa,GAEb11F,MAAMlhB,EAAOoqC,eAAd,OACF,EAAAxqC,KAAa,GAAMA,KAAK+4V,qBAAqBz8U,SAASlc,EAAOoqC,iB,OACtC,OADvB,EAAKhtB,MAAQ,SACZ,EAAAxd,KAAsB,GAAMA,KAAKk5V,mBAAmB37U,U,cAApD,EAAKw3B,cAAiB,SACxBlwC,QAAO,SAAAy2D,GAAI,OAAAA,EAAEtxB,YAAc,EAAKxsB,MAAMwsB,cACjChqC,KAAKwd,MAAM+7U,aAAe,IAAWG,cAArC,OACF,EAAA15V,KAA4B,GAAMA,KAAKi5V,iBAAiB17U,W,OAAxD,EAAK47U,qBAAuB,S,wBAGhCn5V,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIf,YAAAs+G,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAGzC,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKwpR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,2BAGVj6U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWT,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAK+4V,qBAAqB37U,OAAO7C,c,gCAG7B,YAAAo/U,iBAAd,SAA+BC,G,uGACzBA,IAAQ,IAAWF,cAAnB,MACsC,GAApC15V,KAAKm5V,qBAAqBv+V,OAA1B,OACF,EAAAoF,KAA4B,GAAMA,KAAKi5V,iBAAiB17U,W,OAAxD,EAAK47U,qBAAuB,S,oCAI9Bn5V,KAAKwd,MAAMq8U,sBAAwB,E,mCAI1B,YAAAn9R,KAAb,SAAkBwpR,G,qBAAuBlqV,GAAO,W,0DAC9CgE,KAAKC,OAAOE,KAAK,Q,gDAGVH,KAAKwd,MAAMjB,GAAZ,OACFvc,KAAKwd,MAAMs8U,WAAY,EACK,GAAM95V,KAAK+4V,qBAAqB95V,OAAOe,KAAKwd,S,cAApE/B,EAAwB,SAE5Bzb,KAAKwd,MAAMjB,GAAKd,EAASc,GAEzBvc,KAAK8iJ,aAAaxiJ,QAAQ,6DAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,0B,OAAzC,MAAO,CAAP,EAAO,U,OAEA,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,mCAAoC,CAAEwhC,cAAexqC,KAAKwd,MAAMjB,M,OAAzG,MAAO,CAAP,EAAO,U,2BAIT,SAAMvc,KAAK+4V,qBAAqBr8U,OAAO1c,KAAKwd,Q,cAA5C,SAEAxd,KAAK8iJ,aAAaxiJ,QAAQ,8DAErB4lV,EAAD,OACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,0B,OAAzC,MAAO,CAAP,EAAO,U,+CAMXhJ,KAAK8iJ,aAAahmJ,MAAM,G,iCAIrB,YAAAi9V,oBAAP,WACM/5V,KAAKwd,MAAM+7U,YAAc,IAAWS,aACnCh6V,KAAKwd,MAAM+7U,YAAc,IAAWU,WACvCj6V,KAAKwd,MAAM0sB,cAAgB,IAAcgwT,SACzCl6V,KAAKg3G,YAAa,GAElBh3G,KAAKg3G,YAAa,GAIN,YAAAmjP,oBAAd,W,uGAIY,OAHRn6V,KAAKwd,MAAM48U,+BACbp6V,KAAKwd,MAAM48U,6BAA+B,IAEhC,GAAMp6V,KAAKk5V,mBAAmB37U,U,cAApCvf,EAAM,SACZgC,KAAK+0C,cAAgB/2C,EAAI6G,QAAO,SAAAy2D,GAAK,OAAAA,EAAEtxB,YAAc,EAAKxsB,MAAMwsB,c,YArJvDqwT,EAAsB,GADlC,uB,uBAe0D,mB,OAAA,IAAzB,UAAyB,SACrB,mBADqB,OACrB,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1C,mBAD0C,OAC1C,IAAN,oBAAM,SACsB,mBADtB,OACsB,IAAnB,UAAmB,SACL,mBADK,OACL,IAAf,UAAe,SACJ,mBADI,OACJ,IAAb,UAAa,SACM,mBADN,OACM,IAAhB,UAAgB,SACI,mBADJ,OACI,IAAlB,UAAkB,YAtBpCA,GAAb,I,wGCrBA3+V,EAAOD,QAAU,2/S,ynECgBjB,aASE,WACU4wV,EACA6M,EACAhV,EACAphM,EACDk2M,EACClzV,GANV,WACU,KAAAumV,kBACA,KAAA6M,qBACA,KAAAhV,gBACA,KAAAphM,eACD,KAAAk2M,kBACC,KAAAlzV,SATF,KAAAwX,WAAa,IAAI,wBAcjB,KAAA0vO,QAAU,WAChB,OAAO,EAAKksG,mBAAmBplV,KAAK,EAAKwJ,aAJzCtd,KAAKC,OAAS,aAAWC,UAAU,mB,gBAqFvC,OA9EgB,YAAAf,KAAd,W,qBAAsBnD,GAAO,W,0DACV,OAAjB,EAAAgE,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,U,OACN,OADtC,EAAKu9C,UAAY,SACqB,GAAM96D,KAAKk5V,mBAAmBplV,KAAK9T,KAAKsd,a,cAAxE7B,EAAgC,SACtCzb,KAAKsd,WAAWoiU,UAAYjkU,EAASphB,KACrC2F,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,a,YAG7B,YAAA6a,eAAb,W,8GACMt6V,KAAKu6V,oBACDnpS,EAAWpxD,KAAK86D,UAAU90D,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,KAAO,EAAKg+U,sBACxDv6V,KAAKsd,WAAWusB,OAAuB,CAAE2iT,WAAYp7R,EAAS70C,IAC9D,GAAMvc,KAAKb,SAHT,M,OAGF,S,mCAKU,YAAAopU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGI,YAAAoqB,cAAb,SAA2Bh9U,G,qBAAqBxhB,GAAO,W,yDAEjDwhB,EAAMi9U,WACD,GAAMz6V,KAAK8c,OAAOU,EAAMjB,GAAIiB,EAAM9f,OADvC,M,OACF,MAAO,CAAP,EAAO,U,yBAIE,YAAAof,OAAb,SAAoBP,EAAY7e,G,qGACvB,SAAMsC,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IACNg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKk5V,mBAAmBp8U,OAAOP,GACzCpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOA,KACnF,EAAKe,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,kEAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAmBI,YAAA2gB,YAAb,SAAyBjd,G,qBAAoBxE,GAAO,W,6DAE3C,OADPgE,KAAKC,OAAO0zC,MAAM,gBAAiBnzC,EAAK8F,UACjC,GAAMtG,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK9C,OACXg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKk5V,mBAAmBz7U,YAAYjd,EAAK+b,IACnDpZ,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,iEAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,U,OASP0D,EAAK8F,UAAY9F,EAAK8F,S,6CAd1B,MAAO,CAAP,EAAO,kBAmBK,YAAA+hV,gBAAd,SAA8BC,G,mEAC5B,IACE,GAAkB,MAAdA,EACF,MAAO,CAAP,EAAOtoV,KAAK8F,OAAOyC,SAAS+/U,IAE9B,MAAOxrV,GACPkD,KAAK8iJ,aAAahmJ,MAAMA,G,iBAlGjB49V,EAAsB,GADlC,uB,uBAW2C,mB,OAAA,IAAf,UAAe,SACa,mBADb,OACa,IAAzB,UAAyB,SACjB,mBADiB,OACjB,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACK,mBADL,OACK,IAAf,UAAe,SACjB,mBADiB,OACjB,IAAN,oBAAM,YAfbA,GAAb,I,mrBCPA,aAKE,WACU36V,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,qC,MAwBvC,OArBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,6BACVoD,KAAM,yBAKR,CACEgF,MAAO,qCACPpI,SAAU,qCACVoD,KAAM,uCAxBDi9V,EAAiC,GAD7C,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,kGCTAj/V,EAAOD,QAAU,uD,uFCAjBC,EAAOD,QAAU,kvG,0qBCQjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,8B,MAwBvC,OArBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3CtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPhF,KAAM,wBACNpD,SAAU,0BACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,qDACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBm7C,wBAOrC7nQ,KAAK8F,OAASA,GA9BL80V,EAA0B,GADtC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,4GCRAl/V,EAAOD,QAAU,uD,2GCAjBC,EAAOD,QAAU,kf,uvEC8BjB,aAqBC,WACSo/V,EACA3W,EACAphM,EACAo2M,EACAxT,EACAoV,EACAC,EACAj1V,EACAsU,EACAra,EACAi7V,EACA1M,GAXA,KAAAuM,kBACA,KAAA3W,gBACA,KAAAphM,eACA,KAAAo2M,qBACA,KAAAxT,8BACA,KAAAoV,uBACA,KAAAC,6BACA,KAAAj1V,SACA,KAAAsU,iBACA,KAAAra,OACA,KAAAi7V,yBACA,KAAA1M,4BAhCD,KAAA2M,2BAA4E,GAE5E,KAAAz9U,MAAkB,IAAI,IAKtB,KAAA09U,mBAA6B,EAC7B,KAAAC,oBAAuC,GACxC,KAAAC,YAAsB,GACrB,KAAAC,iCAA6C,GAC7C,KAAAC,YAAsB,EACtB,KAAAC,wBAA+B,KAM/B,KAAAnyS,YAAc,IAiBrBppD,KAAKC,OAAS,aAAWC,UAAU,uBAEnCF,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,K,4BAub5C,OApbQ,YAAA0S,yBAAP,sBACC3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACA,IAAIw3D,EAAQ,kBACVyhR,OAAO,eAAepyK,YAAY,qDAAqDwkD,WACvF4tH,OAAO,eAAepyK,YAAY,gDAAgDwkD,WAClF4tH,OAAO,sBAAsBpyK,YAAY,iEAAiEwkD,WAC1G4tH,OAAO,QAAQpyK,YAAY,iDAAiDwkD,WAC5E4tH,OAAO,oBAAoBpyK,YAAY,+DAA+DwkD,YAEpGxrN,KAAKs7V,YAAet7V,KAAKwd,MAAMg+U,cAAgB,IAAaC,kBAAoBz7V,KAAKwd,MAAMg+U,cAAgB,IAAaE,qBAC3H/jS,EAAQA,EACNyhR,OAAO,2BACPpyK,YAAY,qEACZwkD,WACA2tH,YAAYn5U,KAAKD,KAAKM,GAAG,gFAG5Bs3D,EAAMtqB,GAAGrtC,KAAKwd,OAEdxd,KAAKwd,MAAMy8P,gBAAgB9yQ,SAAQ,SAAA0+G,GAClC,EAAK81O,sBAAsB91O,OAGrB,YAAA81O,sBAAR,SAA8B91O,GAC7B,kBACEuzN,OAAO,UACPpyK,YAAY,2DACZwkD,WACA8tH,WAAU,SAAA16U,GAAS,OAAAA,GAAS,GAAKA,GAAS,OAC1Cu6U,YAAYn5U,KAAKD,KAAKM,GAAG,2DACzBgtC,GAAGw4E,IAIE,YAAA+1O,+BAAR,SAAuC32V,GAAvC,WACC,IAAKA,EACJ,OAAO,EAER,IAAM42V,EAAiB52V,EAAU62V,wBACjC,OAAID,EAAejhW,OAAS,IAC3BihW,EAAe10V,SAAQ,SAAA3H,GAAO,SAAKsjJ,aAAahmJ,MAAM0C,OAC/C,IAKK,YAAAu8V,+BAAd,W,sGASiB,OARhB/7V,KAAKi7V,2BAA6B,GAE5Be,EAAgB,CACrB,CAAEp9V,MAAO,IAAmBq9V,eAAgBv+V,KAAM,iBAAkBqnE,WAAY,IAAqBijM,mCACrG,CAAEppQ,MAAO,IAAmBs9V,aAAcx+V,KAAM,eAAgBqnE,WAAY,IAAqBkjM,iCACjG,CAAErpQ,MAAO,IAAmBu9V,SAAUz+V,KAAM,WAAYqnE,WAAY,IAAqBmjM,6BACzF,CAAEtpQ,MAAO,IAAmBw9V,QAAS1+V,KAAM,UAAWqnE,WAAY,IAAqBojM,8BAExE,GAAMnoQ,KAAKoa,eAAe0zI,c,OAE1C,IAFMvkG,EAAU,SACVwb,EAAaxb,EAAQib,YAClB9pE,EAAI,EAAGA,EAAIshW,EAAcphW,OAAQF,IACrCqqE,GAAcA,EAAW/tD,SAASglV,EAActhW,GAAGqqE,aACtD/kE,KAAKi7V,2BAA2B//V,KAAK,CAAE0D,MAAOo9V,EAActhW,GAAGkE,MAAOlB,KAAMs+V,EAActhW,GAAGgD,O,kBAIlF,YAAAkb,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,8DAE1C,O,uBAAA,GAAMgE,KAAK+7V,kC,cAAX,SACKz6U,MAAMlhB,EAAO6qC,YAAd,OACHjrC,KAAKirC,WAAa7qC,EAAO6qC,WAEzB,EAAAjrC,KAAa,GAAMA,KAAK66V,gBAAgBv+U,QAAQtc,KAAKirC,c,OAErD,OAFA,EAAKztB,MAAQ,SAEb,GAAMxd,KAAKq8V,0B,OAEc,OAFzB,SAEyB,GAAMr8V,KAAK+6V,2BAA2B/vT,sBAAsBhrC,KAAKwd,MAAMjB,K,cAA5F+/U,EAAqB,SACzBt8V,KAAKu8V,+BAA+BD,G,aAEzBh7U,MAAMlhB,EAAOoqC,gBAAmBlpB,MAAMlhB,EAAOo8V,kBAExDx8V,KAAKC,OAAO0zC,MAAM,0BAA2BvzC,EAAOo8V,gBAEpDx8V,KAAKwd,MAAMgtB,cAAwBpqC,EAAOoqC,cAC1CxqC,KAAKwd,MAAMg+U,aAA6Bp7V,EAAOo8V,eAC/Cx8V,KAAKwd,MAAMi/U,mBAAqB,IAAmBR,eACnDj8V,KAAKC,OAAO0zC,MAAM,4BAA6B,IAAa3zC,KAAKwd,MAAMg+U,eAEnEx7V,KAAKwd,MAAMg+U,cAAgB,IAAakB,iBAAmB18V,KAAKwd,MAAMg+U,cAAgB,IAAamB,oBACtG38V,KAAK48V,mBAAkB,I,iBAGP,SAAM58V,KAAKk5V,mBAAmB58U,QAAQtc,KAAKwd,MAAMgtB,gB,OAKnE,OALI4K,EAAc,SAClBp1C,KAAKs7V,WAAalmT,EAAYynT,YAC9B78V,KAAK88V,uCACL98V,KAAKu7V,wBAA0Bv7V,KAAKwd,MAAMu/U,wBAE1C,GAAM/8V,KAAKg9V,kB,cAAX,SACAh9V,KAAK2lV,2B,gCAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,iCAI1B,YAAAggW,qCAAA,WACK98V,KAAKwd,MAAMg+U,cAAgB,IAAaC,iBAC3Cz7V,KAAKq7V,iCAAmC,CAAC,aAAc,mBAAoB,aAAc,cAAe,YAAa,wBAC3Gr7V,KAAKwd,MAAMg+U,cAAgB,IAAaE,mBAClD17V,KAAKq7V,iCAAmC,CAAC,gBAAiB,sBAAuB,sBAAuB,aAExGr7V,KAAKq7V,iCAAmC,IAI7B,YAAA4B,eAAb,W,qBAA+BjhW,GAAO,W,0DACrCgE,KAAKC,OAAO0zC,MAAM,e,iBAED,O,sBAAA,GAAM3zC,KAAKg7V,uBAAuBpuS,gBAAgB5sD,KAAKwd,MAAMjB,K,OACtE,OADH2gV,EAAY,SACT,GAAMl9V,KAAKkkV,cAAczoS,KAAK,CACpC1tC,UAAW,IACXyP,MAAO0/U,IACLxkM,YAAW,WAAM,gB,OAHpB,MAAO,CAAP,EAAO,U,yBAKP14J,KAAK8iJ,aAAahmJ,MAAM,G,+BAGb,YAAAu/V,uBAAb,W,gGAC0B,SAAMr8V,KAAK86V,qBAAqB3sM,wBAAwBnuJ,KAAKwd,MAAMjB,K,cAAxF4gV,EAAqB,SACzBn9V,KAAKwd,MAAM08P,iBAAmBijF,EAAmBx4V,KAAI,SAAAxG,GAAK,OAAAA,EAAEoe,MAC5Dvc,KAAKwd,MAAM28P,oBAAsBgjF,EAC/Bt4V,QAAO,SAAA1G,GAAK,OAAwB,MAAxBA,EAAEgtC,sBACdxmC,KAAI,SAAAxG,GAAK,OAAAA,EAAEgtC,sB,YAED,YAAA6xT,eAAb,W,gGAC6B,OAA5B,EAAAh9V,KAA4B,GAAMA,KAAKsuV,0BAA0BrkM,4BAA4BjqJ,KAAKwd,MAAMgtB,gB,cAAxG,EAAK2wT,oBAAuB,SAC3Bt2V,QAAO,SAAA1G,GAAK,OAAgB,GAAhBA,EAAE64G,c,YAEhB,YAAAomP,qBAAA,WAEC,OADqB,IAAap9V,KAAKwd,MAAMg+U,eAGjC,YAAA6B,aAAb,W,qBAA6BrhW,GAAO,W,0DACjB,SAAMgE,KAAKk5V,mBAAmB58U,QAAQtc,KAAKwd,MAAMgtB,gB,OAChD,OADf4K,EAAc,SACC,GAAMp1C,KAAK66V,gBAAgBxhF,gBAAgBr5Q,KAAKwd,MAAMjB,GAAIvc,KAAKwd,MAAMgtB,cAAe4K,EAAYpL,a,cAC/F,OADhBqzT,EAAe,UACf,MACH,GAAMr9V,KAAK8F,OAAOkD,gBAAgB,gCAAiC,CAAEiiC,WAAYoyT,EAAa9gV,M,cAA9F,SACA5c,OAAO+7C,SAASygB,S,aAEhBn8D,KAAKk7V,mBAAoB,EACzBl7V,KAAK8iJ,aAAa3iJ,KAAK,uE,mCAIZ,YAAAi7G,OAAb,SAAoB4wO,G,qBAA2BhwV,GAAO,W,sCAErD,OADAgE,KAAKC,OAAO0zC,MAAM,UACb3zC,KAAKwd,MAAMg+U,cAAgB,IAAaC,kBACzCz7V,KAAKwd,MAAMg+U,cAAgB,IAAaE,oBACxC17V,KAAKwd,MAAMg+U,cAAgB,IAAa8B,uBACxCt9V,KAAKwd,MAAMg+U,cAAgB,IAAa+B,yBACxCv9V,KAAKwd,MAAMg+U,cAAgB,IAAagC,8BACxCx9V,KAAKwd,MAAMigV,aAAe,IAAYC,YACA,GAAtC19V,KAAKwd,MAAM08P,iBAAiBt/Q,OAO5BoF,KAAKwd,MAAMu/U,yBAA2B,IAAwBY,YAC7D39V,KAAK47V,+BAA+B57V,KAAK49V,qBAC5C,IAME59V,KAAKwd,MAAMu/U,yBAA2B,IAAwBc,qBAC9D79V,KAAKwd,MAAMu/U,yBAA2B,IAAwBe,gBAC7D99V,KAAK47V,+BAA+B57V,KAAK+9V,8BAM1C/9V,KAAKwd,MAAMu/U,yBAA2B,IAAwBiB,qBAC7Dh+V,KAAK47V,+BAA+B57V,KAAKi+V,gCAcgC,IAP7C,CAChC,IAAwBxC,iBACxB,IAAwByC,WACxB,IAAwBC,YACxB,IAAwBC,UACxB,IAAwBC,sBAEIhtV,QAAQrR,KAAKwd,MAAMu/U,0BAC3C/8V,KAAK47V,+BAA+B57V,KAAKs+V,4BAM1Ct+V,KAAKwd,MAAMu/U,yBAA2B,IAAwBwB,WAC7Dv+V,KAAK47V,+BAA+B57V,KAAKw+V,oBArB5C,IA0BK,CAAP,EAAOx+V,KAAK01U,qBAAqBrnS,WAC/BlrC,MAAK,SAAO4M,GAAgC,qC,yDACxCA,EAAO4oM,MACN34M,KAAKwd,MAAMy8P,gBAAgBr/Q,OAAS,GAAKoF,KAAKwd,MAAMg+U,eAAiB,IAAakB,kBACjD,EAE5B,GAAM18V,KAAK08D,KAAKsvR,KAHrB,MADD,M,OAID,MAAO,CAAP,EAAO,U,0BAGD,SAAMhsV,KAAK08D,KAAKsvR,I,OAAvB,MAAO,CAAP,EAAO,U,4BA1CT,KAjBDhsV,KAAK8iJ,aAAahmJ,MAAM,2EACxB,YAgEF,sBAAI,sBAAO,C,IAAX,WACC,OAAQkD,KAAK66V,gBAAgBz9U,OAAO7C,c,gCAGxB,YAAAmiD,KAAb,SAAkBsvR,G,qBAA2BhwV,GAAO,W,sEACnDgE,KAAKC,OAAO0zC,MAAM,aACa/1C,IAA3BoC,KAAKwd,MAAMihV,YAAX,OACHz+V,KAAKC,OAAO0zC,MAAM,aAAc3zC,KAAKwd,YACf5f,IAAlBoC,KAAKwd,MAAMjB,GAAX,OAE4B,IAA3Bvc,KAAKo7V,YAAYz0S,UAChB+3S,EAAmC,IAAI,KAC3BniV,GAAK,EACrBmiV,EAAgBtD,YAAcp7V,KAAKo7V,YACnCsD,EAAgBzzT,WAAajrC,KAAKwd,MAAMjB,GACxCmiV,EAAgBjC,mBAAqBz8V,KAAKwd,MAAMi/U,mBAE3Cz8V,KAAKwd,MAAM48P,oBACfp6Q,KAAKwd,MAAM48P,kBAAoB,IAEhCp6Q,KAAKwd,MAAM48P,kBAAkBl/Q,KAAKwjW,IAG5B,GAAM1+V,KAAK66V,gBAAgBn+U,OAAO1c,KAAKwd,OAC5Cra,MAAK,SAAOqa,GAAe,qC,yDAC3Bxd,KAAK8iJ,aAAaxiJ,QAAQ,qEAC1BN,KAAKwd,MAAM48P,kBAAoB,IAAI15Q,MACnCV,KAAKo7V,YAAc,GACdpP,EAAD,MACI,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,sB,OAAzC,MAAO,CAAP,EAAO,U,OAEA,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,gCAAiC,CAAEiiC,WAAYjrC,KAAKwd,MAAMjB,M,OAAnG,MAAO,CAAP,EAAO,oBAGRtQ,OAAM,SAAAnP,GACN,EAAKgmJ,aAAahmJ,MAAMA,S,OAZ1B,MAAO,CAAP,EAAO,U,OAgBP,MAAO,CAAP,EAAOkD,KAAK2+V,+BACX,WAAM,SAAK9D,gBAAgB57V,OAAO,EAAKue,SACvC,mEACAwuU,I,yBAOU,YAAA2S,8BAAd,SAA4CntC,EAAiCotC,EAAwB5S,G,oGAIpF,O,sBAAA,GAAMx6B,K,OAWrB,OAXIqtC,EAAW,SAEd5zT,EADG4zT,EACUA,EAAStiV,GAETvc,KAAKwd,MAAMjB,GAGzBvc,KAAKo7V,YAAc,GAEnBp7V,KAAK8iJ,aAAaxiJ,QAAQs+V,GAErB5S,EAGG,CAAP,EAAOhsV,KAAK8F,OAAOkD,gBAAgB,gCAAiC,CAAEiiC,WAAYA,KAF3E,CAAP,EAAOjrC,KAAK8F,OAAOkD,gBAAgB,sB,yBAKpChJ,KAAK8iJ,aAAahmJ,MAAM,G,+BAInB,YAAA8/V,kBAAP,SAAyBkC,GACxB9+V,KAAKC,OAAOE,KAAK,oBACjB,IAAI4+V,EAAiC,IAAI,IACzCA,EAAexiV,GAAK,EACpBwiV,EAAezuV,MAAQtQ,KAAKwd,MAAMy8P,gBAAgBr/Q,OAClDmkW,EAAeD,SAAWA,EAC1BC,EAAel5O,OAAS,GACxB7lH,KAAKwd,MAAMy8P,gBAAgB/+Q,KAAK6jW,GAIhC/+V,KAAK27V,sBAAsBoD,IAGrB,YAAAC,qBAAP,SAA4Br1V,GAC3B,IAAIo1V,EAAiB/+V,KAAKwd,MAAMy8P,gBAAgBtwQ,GAEhD3J,KAAK01U,qBAAqB/C,aAAaosB,GAEvC/+V,KAAKwd,MAAMy8P,gBAAgB9iQ,OAAOxN,EAAO,IAGnC,YAAA6+U,QAAP,SAAe1kD,EAAatjS,GAC3BR,KAAKC,OAAO0zC,MAAM,WAClB,IAAIx3B,EAAa2nR,EAAOtmS,OAAO+wO,MAAM,GAErC,GADoB,IAAoBp9N,MAAM,UAAW,QACvC8P,QAAQ9E,GAAO,CAChC,IAAI,EAAqB,IAAIm/B,WAC7B,EAAOK,cAAcx/B,GACrB,EAAOjf,OAAS,WACf,IAAI8vV,EAAkB,EAAOj9U,OAC7BvP,EAAKkmJ,eAAiBsmM,EACtBxsV,EAAKqlH,OAAS1pG,EAAKze,KACnB8C,EAAKy+V,kBAAoB1lT,IAAI0B,gBAAgB9+B,SAI9Cnc,KAAK8iJ,aAAahmJ,MAAM,oEAKnB,YAAAqwV,UAAP,SAAiB3sV,GAChBA,EAAKqlH,OAAS,KACdrlH,EAAKkmJ,eAAiB,KACtBlmJ,EAAKy+V,kBAAoB,MAGnB,YAAAC,8BAAP,WACCl/V,KAAKC,OAAO0zC,MAAM,iCAClB,IAAI5jC,EAAqB,GAEzB,OADA/P,KAAKC,OAAO0zC,MAAM,wDAAyD3zC,KAAKwd,MAAMg+U,eAC7Ex7V,KAAKwd,MAAMg+U,cACnB,KAAK,IAAaC,iBAClB,KAAK,IAAa6B,sBAClB,KAAK,IAAaE,6BAClB,KAAK,IAAa9B,mBAClB,KAAK,IAAa6B,wBAClB,KAAK,IAAa4B,OACjBn/V,KAAKC,OAAO0zC,MAAM,oBAClB5jC,EAASlV,OAAO0Z,KAAK,KACnB1P,QAAO,SAAA3F,GAAO,WAAYA,KAAS,IAAYw+V,YAAc,IAAYx+V,KAAS,IAAYkgW,WAC9Fz6V,KAAI,SAAAzF,GAAO,OAAGqd,GAAI,IAAYrd,GAAMxB,KAAMwB,MAC5C,MACD,KAAK,IAAaw9V,gBACjB18V,KAAKC,OAAO0zC,MAAM,gCAClB5jC,EAASlV,OAAO0Z,KAAK,KACnB1P,QAAO,SAAA3F,GAAO,WAAYA,KAAS,IAAYmgW,aAAe,IAAYngW,KAAS,IAAY2vF,SAAW,IAAY3vF,KAAS,IAAYogW,YAC3I36V,KAAI,SAAAzF,GAAO,OAAGqd,GAAI,IAAYrd,GAAMxB,KAAMwB,MAC5C,MACD,KAAK,IAAay9V,mBACjB38V,KAAKC,OAAO0zC,MAAM,mCAClB5jC,EAASlV,OAAO0Z,KAAK,KACnB1P,QAAO,SAAA3F,GAAO,WAAYA,KAAS,IAAYw+V,YAAc,IAAYx+V,KAAS,IAAYkgW,SAAW,IAAYlgW,KAAS,IAAY2vF,WAC1IlqF,KAAI,SAAAzF,GAAO,OAAGqd,GAAI,IAAYrd,GAAMxB,KAAMwB,MAM9C,OADAc,KAAKC,OAAO0zC,MAAM,wCAAyC5jC,GACpDA,GAEA,YAAAwsV,+BAAR,SAAuCgD,GACtC,GAAK7+V,MAAMC,QAAQ4+V,GACnB,I,eAAWC,GAEV,IAAI35O,EAAS,EAAKroG,MAAMy8P,gBAAgBj0Q,MAAK,SAAA3H,GAAK,OAAAA,EAAEke,KAAOijV,EAAUjjV,MAErE,IAAKspG,EACJ,IAAqB,YAAKroG,MAAMy8P,gBAAX,eAA4B,CAA5C,IAAM1rQ,EAAM,KAChB,GAAIA,EAAOqhC,WACVi2E,EAASt3G,EAAOqhC,SAAS5pC,MAAK,SAAA9H,GAAK,OAAAA,EAAEqe,KAAOijV,EAAUjjV,OAC1C,MAIXspG,IACHA,EAAO45O,OAASD,EAAUC,S,OAbJ,MAAAF,EAAA,eAAS,C,EAAb,QAkBf,YAAAG,yBAAN,W,qBAAkC1jW,GAAO,W,sEAClC2jW,EAAqB3/V,KAAKwd,MAAMy8P,gBAAgBr/Q,OAAS,EACL,OAAjCoF,KAAKu7V,8BACO39V,IAAjCoC,KAAKu7V,yBAC4B,KAAjCv7V,KAAKu7V,0BAGgBoE,EAArB,MACI,GAAM3/V,KAAKkkV,cAAczoS,KAAK,CACpC1tC,UAAW,MACT2qJ,YAAW,SAACj9I,GACTA,EAASw9B,aAKb,EAAKz7B,MAAMu/U,wBAA0B,EAAKxB,yBAJ1C,EAAKqE,uBACL,EAAKrE,wBAA0B,EAAK/9U,MAAMu/U,6B,OAL5C,MAAO,CAAP,EAAO,U,cAaR/8V,KAAKu7V,wBAA0Bv7V,KAAKwd,MAAMu/U,wB,YAGnC,YAAA6C,qBAAR,WACC,IADD,WACsB,MAAA5/V,KAAKwd,MAAMy8P,gBAAX,eAA4B,CAA5C,IAAMp0J,EAAM,KACZA,EAAOj2E,UACVi2E,EAAOj2E,SAASzoC,SAAQ,SAAA8jF,GAAS,SAAKyqP,qBAAqB/C,aAAa1nP,MAEzEjrF,KAAK01U,qBAAqB/C,aAAa9sN,GAExC7lH,KAAKwd,MAAMy8P,gBAAkB,IA3dlB4lF,EAAmB,GAD/B,uB,uBAuByC,mB,OAAA,IAAf,UAAe,SACJ,mBADI,OACJ,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACY,mBADZ,OACY,IAAlB,UAAkB,SACkB,mBADlB,OACkB,IAA3B,8DAA2B,SACd,mBADc,OACd,IAApB,UAAoB,SACY,mBADZ,OACY,IAA1B,UAA0B,SACxC,mBADwC,OACxC,IAAN,oBAAM,SACgB,mBADhB,OACgB,IAAd,UAAc,SACpB,mBADoB,OACpB,IAAJ,gBAAI,SACoC,mBADpC,OACoC,IAAtB,UAAsB,SACM,mBADN,OACM,IAAzB,UAAyB,YAjCjDA,GAAb,I,uHC9BAnkW,EAAOD,QAAU,mngB,snECoBjB,aAUE,WACUyoV,EACA2W,EACA3B,EACD7M,EACCvpM,EACD04M,EACCsE,EACAC,GARV,WACU,KAAA7b,gBACA,KAAA2W,kBACA,KAAA3B,qBACD,KAAA7M,kBACC,KAAAvpM,eACD,KAAA04M,eACC,KAAAsE,kCACA,KAAAC,4BAbF,KAAAziV,WAAoC,IAAI,wBAExC,KAAA83B,YAA2B,IAAI,IAE/B,KAAA4qT,eAAyB,IAAOvlV,aAAe,6CA8C/C,KAAAuyO,QAAU,WAChB,OAAO,EAAK6tG,gBAAgBzhF,iBAAiB,EAAK5uO,cAAe,EAAKltB,aApCtEtd,KAAKC,OAAS,aAAWC,UAAU,gB,oBAqGvC,OAjGgB,YAAA0Y,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,iEAC1CgE,KAAKC,OAAO0zC,MAAM,+BAAgCvzC,EAAOoqC,eACpDlpB,MAAMlhB,EAAOoqC,eAAd,OACFxqC,KAAKwqC,eAAiBpqC,EAAOoqC,cAC7B,EAAAxqC,KAAmB,GAAMA,KAAKk5V,mBAAmB58U,QAAQtc,KAAKwqC,iB,OAC9B,OADhC,EAAK4K,YAAc,SACnB,EAAAp1C,KAAgC,GAAMA,KAAK8/V,gCAAgCx4M,8CAA8CtnJ,KAAKwqC,gB,OAC9H,OADA,EAAKy1T,yBAA2B,SAChC,GAAMjgW,KAAKukV,Y,OAAX,S,mCAIU,YAAAplV,KAAd,W,qBAAsBnD,GAAO,W,4CAGhB,YAAAuoV,SAAb,W,qBAAyBvoV,GAAO,W,6DAIvB,OAHPgE,KAAKC,OAAOE,KAAK,YACjBH,KAAKsd,WAAWqiU,YAAc,EAC9B3/U,KAAKsd,WAAWg+F,KAAO,EAChB,GAAMt7G,KAAK66V,gBAAgBzhF,iBAAiBp5Q,KAAKwqC,cAAexqC,KAAKsd,YACzEna,MAAK,SAACsY,GACL,EAAK6B,WAAWmiU,aAAehkU,EAASgkU,aACxC,EAAKniU,WAAWoiU,UAAYjkU,EAASphB,QAEtC4R,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAOK,YAAAtzT,OAAd,SAAqBP,EAAY7e,EAAc+8V,EAAqBzwT,G,qBAAqBhuC,GAAO,W,6DACvF,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IACNg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,eAAgBwhT,EAA1B,MACK,GAAMz6V,KAAK66V,gBAAgB/9U,OAAOP,GACtCpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOA,KACnF,EAAKe,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,gEAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,cAUG2e,EAASw9B,cAAiBwhT,EAA3B,MACF,GAAMz6V,KAAK66V,gBAAgB/1M,mBAAmBvoI,EAAIytB,GACtD7mC,MAAK,gD,kDAEJ,OADAnD,KAAK8iJ,aAAaxiJ,QAAQ,6DAC1B,GAAMN,KAAKukV,Y,cAAX,S,cAEDt4U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,U,mCAhBX,MAAO,CAAP,EAAO,kBA2BK,YAAAojW,qBAAd,SAAmC1/V,G,qGAC1B,SAAMR,KAAK8/V,gCAAgCv4M,qBAAqB/mJ,GACpE2C,MAAK,SAAOqa,GAA+B,qC,kCAC1Cxd,KAAKC,OAAO0zC,MAAM,WAAYn2B,EAAMjB,IACpC/b,EAAK+b,GAAKiB,EAAMjB,GAChBvc,KAAK8iJ,aAAaxiJ,QAAQ,qF,aAE3B2L,OAAM,SAAMnP,GAAK,qC,kDAChB,SAAMkD,KAAKukV,Y,cAAX,SACAvkV,KAAK8iJ,aAAahmJ,MAAMA,G,sBAR5B,MAAO,CAAP,EAAO,kBAYI,YAAA2gB,YAAb,SAAyBjd,G,qBAAiBxE,GAAO,W,6DAExC,OADPgE,KAAKC,OAAO0zC,MAAM,iBAAkBnzC,EAAKw5Q,WAClC,GAAMh6Q,KAAK66V,gBAAgBp9U,YAAYjd,EAAK+b,IAChDpZ,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,0EAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBASI,YAAAqjW,WAAb,SAAwB31T,EAAuBruB,G,qBAAangB,GAAO,W,kDAClD,SAAMgE,KAAK66V,gBAAgBzvT,WAAWZ,EAAeruB,I,OACpE,MAAO,CAAP,EADe,kBAIJ,YAAAovB,cAAb,SAA2Bf,G,qBAAwBxuC,GAAO,W,kDACxD,OAAKwuC,EACH,GAAMxqC,KAAK+/V,0BAA0Bx0T,cAAcf,IADjC,I,cAClB,S,YApHM,GAAT,W,6DAFU41T,EAAmB,GAD/B,uB,uBAYuC,mB,OAAA,IAAb,kCAAa,SACI,mBADJ,OACI,IAAf,UAAe,SACM,mBADN,OACM,IAAlB,UAAkB,SACH,mBADG,OACH,IAAnB,UAAmB,SACT,mBADS,OACT,IAAZ,UAAY,SACD,mBADC,OACD,IAAZ,UAAY,SACqD,mBADrD,OACqD,IAA7C,UAA6C,SAC1B,mBAD0B,OAC1B,IAAzB,UAAyB,YAlBnDA,GAAb,I,usBCXA,aAKE,WACUrgW,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,kC,MA8CvC,OA3CE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,0BACVoD,KAAM,qBAGR,CACEgF,MAAO,cACPpI,SAAU,kCACVoD,KAAM,iCAGR,CACEgF,MAAO,SACPhF,KAAM,yCACNpD,SAAU,oCACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,gEACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBm7C,sBAKnC,CACEnlQ,MAAO,CAAC,0BACRhF,KAAM,0BACNpD,SAAU,kCACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,2DACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBm7C,yBA9C5Bw4F,EAA+B,GAD3C,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,iHCTA3kW,EAAOD,QAAU,uD,sGCAjBC,EAAOD,QAAU,qxJ,qpBCOjB,aAME,WACUqK,EACAg9I,GADA,KAAAh9I,SACA,KAAAg9I,eAER9iJ,KAAKC,OAAS,aAAWC,UAAU,yBACnCF,KAAKsgW,QAAU,gB,QAkBnB,OAdS,YAAA1nV,SAAP,SAAgBxY,GACdJ,KAAKC,OAAOE,KAAK,+BAAgCC,EAAOoqC,eACnDlpB,MAAMlhB,EAAOoqC,eAGhBxqC,KAAK8F,OAAOyC,SAAS,iBAFrBvI,KAAKwqC,eAAiBpqC,EAAOoqC,eAM1B,YAAA+1T,eAAP,SAAsBjjW,GACpB0C,KAAKC,OAAOE,KAAK,6BAA8B7C,GAC/C0C,KAAK8F,OAAOyC,SAAS,UAAUjL,IA1BtBkjW,EAAqB,GADjC,uB,uBAQyB,mB,OAAA,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,YARzBA,GAAb,I,gHCPA9kW,EAAOD,QAAU,k+I,8rBCQjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,sC,MAsBvC,OAnBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3CtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPhF,KAAM,iCACNpD,SAAU,mCACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,8CACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBm7C,wBAMrC7nQ,KAAK8F,OAASA,GA5BL26V,EAA4B,GADxC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,gICRA/kW,EAAOD,QAAU,qL,kqBCGjB,aAKE,cAEF,OAJE,GADC,W,6DAFUilW,EAAiC,GAD7C,uB,2BACYA,GAAb,I,6HCHAhlW,EAAOD,QAAU,oiB,umECejB,aAYE,WACUq/V,EACAh4M,EACA4iM,EACA5/U,EACDsxV,EACA4B,EACA9uT,EACA+uT,GAPC,KAAA6B,uBACA,KAAAh4M,eACA,KAAA4iM,8BACA,KAAA5/U,SACD,KAAAsxV,mBACA,KAAA4B,kBACA,KAAA9uT,gBACA,KAAA+uT,mBAdD,KAAA37U,WAAa,IAAI,wBACjB,KAAAE,MAAuB,IAAI,IAejCxd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,mB,oBAiFvC,OA7ES,YAAAylV,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,QAAQpyK,YAAY,uCAAuCwkD,WAClE4tH,OAAO,eAAepyK,YAAY,kFAAkFwkD,WAAWrvL,QAAQ,YACvIkR,GAAGrtC,KAAKwd,QAGC,YAAA5E,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,uFAGnCslB,MAAMlhB,EAAOoqC,eAAd,OACFxqC,KAAKwqC,eAAiBpqC,EAAOoqC,eACzBpqC,EAAO2d,iBAA8C,WAA3B3d,EAAO2d,iBAAiCuD,MAAMlhB,EAAO2d,iBAA/E,OACF/d,KAAK+d,iBAAmB3d,EAAO2d,gBAC/B,EAAA/d,KAAa,GAAMA,KAAK86V,qBAAqBzsM,4BAA4BruJ,KAAK+d,oB,OAA9E,EAAKP,MAAQ,S,wBAGjBxd,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIf,YAAAs+G,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAGzC,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKwpR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,2BAGVj6U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWT,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAK86V,qBAAqB19U,OAAO7C,c,gCAI9B,YAAAmiD,KAAb,SAAkBwpR,G,qBAAuBlqV,GAAO,W,0DAC9CgE,KAAKC,OAAOE,KAAK,Q,gDAGVH,KAAKwd,MAAMjB,GAAZ,OACFvc,KAAKwd,MAAMgtB,cAAgBxqC,KAAKwqC,cACF,GAAMxqC,KAAK86V,qBAAqBvsM,2BAA2BvuJ,KAAKwd,S,cAA1F/B,EAA0B,SAE9Bzb,KAAKwd,MAAMjB,GAAKd,EAASc,GAEzBvc,KAAK8iJ,aAAaxiJ,QAAQ,yEAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,6BAA8B,CAAEwhC,cAAexqC,KAAKwqC,iB,OAA7F,MAAO,CAAP,EAAO,U,OAEA,SAAMxqC,KAAK8F,OAAOkD,gBAAgB,yCAA0C,CAAE+U,gBAAiB/d,KAAKwd,MAAMjB,GAAIiuB,cAAexqC,KAAKwqC,iB,OAAzI,MAAO,CAAP,EAAO,U,2BAIT,SAAMxqC,KAAK86V,qBAAqBtsM,2BAA2BxuJ,KAAKwd,Q,cAAhE,SAEAxd,KAAK8iJ,aAAaxiJ,QAAQ,0EAErB4lV,EAAD,OACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,+B,OAAzC,MAAO,CAAP,EAAO,U,+CAMXhJ,KAAK8iJ,aAAahmJ,MAAM,G,iCAvGjB6jW,EAA2B,GADvC,uB,uBAcqD,mB,OAAA,IAApB,UAAoB,SAChB,mBADgB,OAChB,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1C,mBAD0C,OAC1C,IAAN,oBAAM,SACsB,mBADtB,OACsB,IAAnB,UAAmB,SACL,mBADK,OACL,IAAf,UAAe,SACJ,mBADI,OACJ,IAAb,UAAa,SACM,mBADN,OACM,IAAhB,UAAgB,YApBhCA,GAAb,I,uICfAjlW,EAAOD,QAAU,4sD,+oECajB,aAQE,WACUq/V,EACA5W,EACAphM,EACDk2M,GAJT,WACU,KAAA8B,uBACA,KAAA5W,gBACA,KAAAphM,eACD,KAAAk2M,kBAPD,KAAA17U,WAAa,IAAI,wBAYjB,KAAA0vO,QAAU,WAChB,OAAK,EAAKxiN,cAGH,EAAKswT,qBAAqB1sM,yBAAyB,EAAK5jH,cAAe,EAAKltB,YAF1EthB,EAAQC,QAAQ,CAAE5B,KAAM,GAAIolV,aAAc,KALnDz/U,KAAKC,OAAS,aAAWC,UAAU,+B,YA6EvC,OAnEgB,YAAAf,KAAd,W,qBAAsBnD,GAAO,W,4CAEf,YAAA4c,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,yDAC1CgE,KAAKC,OAAO0zC,MAAM,+BAAgCvzC,EAAOoqC,eAEpDlpB,MAAMlhB,EAAOoqC,eAAd,OACFxqC,KAAKwqC,eAAiBpqC,EAAOoqC,cAC7B,GAAMxqC,KAAKukV,a,OAAX,S,mCAGS,YAAAA,SAAb,W,qBAAyBvoV,GAAO,W,6DAGvB,OAFPgE,KAAKC,OAAOE,KAAK,YAEV,GAAMH,KAAK86V,qBAAqB1sM,yBAAyBpuJ,KAAKwqC,cAAexqC,KAAKsd,YACtFna,MAAK,SAACsY,GACL,EAAK6B,WAAWmiU,aAAehkU,EAASgkU,aACxC,EAAKniU,WAAWoiU,UAAYjkU,EAASphB,QAEtC4R,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBASK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGI,YAAAtzT,OAAb,SAAoBU,G,qGACX,SAAMxd,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOA,EAAM9f,OACZg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK86V,qBAAqBxsM,2BAA2B9wI,EAAMjB,IACrEpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOiB,EAAMjB,MACzF,EAAKe,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,mEAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAmBI,YAAA2gB,YAAb,SAAyBjd,G,qBAAsBxE,GAAO,W,6DAE7C,OADPgE,KAAKC,OAAO0zC,MAAM,kBAAmBnzC,EAAKw2G,YACnC,GAAMh3G,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK9C,OACXg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK86V,qBAAqBr9U,YAAYjd,EAAK+b,IACrDpZ,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,kEAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,U,OASP0D,EAAKw2G,YAAcx2G,EAAKw2G,W,6CAd5B,MAAO,CAAP,EAAO,kBAtET,GADC,W,6DADU4pP,EAA2B,GADvC,uB,uBAUqD,mB,OAAA,IAApB,UAAoB,SACd,mBADc,OACd,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACK,mBADL,OACK,IAAf,UAAe,YAZ9BA,GAAb,I,ytBCJA,aAKE,WACU7gW,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,0C,MAuBvC,OApBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,mCACVoD,KAAM,8BAGR,CACEgF,MAAO,2CACPpI,SAAU,2CACVoD,KAAM,6CAtBDmjW,EAAsC,GADlD,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,mICTAnlW,EAAOD,QAAU,uD,wHCAjBC,EAAOD,QAAU,g1F,2oECqBjB,aAYE,WACUqlW,EACAC,EACAza,EACApC,EACAphM,EACAh9I,GANV,WACU,KAAAg7V,eACA,KAAAC,2BACA,KAAAza,iBACA,KAAApC,gBACA,KAAAphM,eACA,KAAAh9I,SAfF,KAAAk7V,iBAAqC,IAAI,IAGzC,KAAAxjV,MAAe,IAAI,IACnB,KAAAF,WAAoC,IAAI,wBAExC,KAAAwpU,UAA2B,GAC3B,KAAAkZ,eAAyB,IAAOvlV,aAAe,2CAmD/C,KAAAuyO,QAAU,WAChB,OAAO,EAAK8zG,aAAahtV,KAAK,EAAKq3B,mBAAoB,EAAK7tB,aA1C5Dtd,KAAKC,OAAS,aAAWC,UAAU,oB,gBAkIvC,OA/HgB,YAAA0Y,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,kCAC1CgE,KAAKC,OAAO0zC,MAAM,YACbryB,MAAMlhB,EAAO+qC,sBAChBnrC,KAAKmrC,oBAAsB/qC,EAAO+qC,oB,WAIxB,YAAAhsC,KAAd,W,qBAAsBnD,GAAO,W,yFAErBgE,KAAKmrC,oBACP,EAAAnrC,KAAwB,GAAMA,KAAK+gW,yBAAyBzkV,QAAQtc,KAAKmrC,sBADvE,M,OACF,EAAK61T,iBAAmB,S,iBAET,OAAjB,EAAAhhW,KAAiB,GAAMA,KAAKsmV,eAAe9lL,iB,cAA3C,EAAKsmL,UAAY,S,+BAEjB9mV,KAAK8iJ,aAAahmJ,MAAM,G,aAE1B,MAAO,CAAP,EAAOkD,KAAKukV,oBAGA,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,oEAC/BgE,KAAKsd,WAAWqiU,YAAc,EAC9B3/U,KAAKsd,WAAWg+F,KAAO,EACnBt7G,KAAKmrC,mBACA,GAAMnrC,KAAK8gW,aAAahtV,KAAK9T,KAAKmrC,mBAAoBnrC,KAAKsd,YAC/Dna,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,OAP1B,M,OACF,MAAO,CAAP,EAAO,U,yBAWG,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAOK,YAAA/hG,KAAd,SAAmB7tO,G,qBAAcxE,GAAO,W,+DAE/B,OADHilW,EAAe/vV,KAAKC,MAAMD,KAAKE,UAAU5Q,IACtC,GAAMR,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK8gW,aAAapkV,OAAOlc,GACnC2C,MAAK,gD,kDAEJ,OADAnD,KAAK8iJ,aAAaxiJ,QAAQ,6BAC1B,GAAMN,KAAKukV,Y,cAAX,S,cAEDt4U,OAAM,SAAAnP,GACLjC,OAAOgI,OAAOrC,EAAMygW,GACpB,EAAKn+M,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,U,OAUPjC,OAAOgI,OAAOrC,EAAMygW,G,6CAfxB,MAAO,CAAP,EAAO,kBAoBK,YAAAhiW,OAAd,W,qBAAwBjD,GAAO,W,+DAoBtB,OAnBHwE,EAAc,IAAI,KACjB2qC,mBAAqBnrC,KAAKmrC,mBAE3BnrC,KAAKsd,WAAWusB,OAAOq3T,OAAS,IAClC1gW,EAAK2gW,MAAenhW,KAAKsd,WAAWusB,OAAOq3T,OAGzClhW,KAAKsd,WAAWusB,OAAOshB,kBAAoB,IAC7C3qD,EAAK4gW,iBAAqCphW,KAAKsd,WAAWusB,OAAOshB,kBAG/DnrD,KAAKsd,WAAWusB,OAAOw3T,UAAY,IACrC7gW,EAAK8gW,SAAqBthW,KAAKsd,WAAWusB,OAAOw3T,UAG/CrhW,KAAKsd,WAAWusB,OAAOiqT,YACzBtzV,EAAKgqT,UAAYxqT,KAAKsd,WAAWusB,OAAOiqT,WAGnC,GAAM9zV,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK8gW,aAAa7hW,OAAOuB,GACnC2C,MAAK,SAAOqa,GAAY,qC,kDAEvB,OADAxd,KAAK8iJ,aAAaxiJ,QAAQ,4BAC1B,GAAMN,KAAKukV,Y,cAAX,S,cAEDt4U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAiBK,YAAAggB,OAAd,SAAqBP,EAAY7e,G,qBAAe1B,GAAO,W,6DAC9C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IACNg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK8gW,aAAahkV,OAAOP,GACnCpZ,MAAK,gD,kDAEJ,OADAnD,KAAK8iJ,aAAaxiJ,QAAQ,8BAC1B,GAAMN,KAAKukV,Y,cAAX,S,cAEDt4U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAiBI,YAAAqjW,WAAb,SAAwBh1T,EAA4BhvB,G,qBAAangB,GAAO,W,kDACvD,SAAMgE,KAAK8gW,aAAa11T,WAAWD,EAAoBhvB,I,OACtE,MAAO,CAAP,EADe,kBAIT,YAAAolV,OAAR,WACEvhW,KAAK8F,OAAOmK,gBApJHuxV,EAAgB,GAD5B,uB,uBAcqC,mB,OAAA,IAAZ,UAAY,SACwB,mBADxB,OACwB,IAAxB,UAAwB,SACpB,mBADoB,OACpB,IAAd,UAAc,SACF,mBADE,OACF,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACZ,mBADY,OACZ,IAAN,oBAAM,YAlBbA,GAAb,I,gqBCdA,aAKE,WACUzhW,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,+B,MAqBvC,OAlBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,qCACVoD,KAAM,oCAGR,CACEgF,MAAO,wCACPpI,SAAU,uBACVoD,KAAM,qBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,2DAxBfohW,EAA2B,GADvC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,qFCPA/lW,EAAOD,QAAU,uD,0ECAjBC,EAAOD,QAAU,shL,69DCcjB,aAkBE,WACU6lD,EACAwhG,EACA4iM,EACAY,EACAv7B,GAJA,KAAAzpQ,mBACA,KAAAwhG,eACA,KAAA4iM,8BACA,KAAAY,iBACA,KAAAv7B,qBArBF,KAAAvtS,MAAe,IAAI,IAKnB,KAAAspU,UAA2B,GAC3B,KAAA4a,aAA0B,GAC1B,KAAArS,iBAA8B,GAC9B,KAAAltS,WAAwB,GACxB,KAAAw/S,mBAAgC,GAChC,KAAAxsM,UAAuB,GAa7Bn1J,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,qB,cA4GvC,OAzGgB,YAAA0Y,SAAd,SAAuB4E,G,qBAAexhB,GAAO,W,kDAI3C,OAHAgE,KAAKC,OAAO0zC,MAAM,YAClB3zC,KAAKwd,MAAQA,EACbxd,KAAK2lV,2BACL,GAAM3lV,KAAK4hW,iB,OACX,OADA,SACA,GAAM5hW,KAAKqrT,iB,cAAX,S,YAGY,YAAAu2C,cAAd,W,qBAA+B5lW,GAAO,W,0DAEjB,O,sBAAjB,EAAAgE,KAAiB,GAAMA,KAAKsmV,eAAe9lL,iB,cAA3C,EAAKsmL,UAAY,S,+BAEjB9mV,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAuuT,cAAd,W,qBAA+BrvT,GAAO,W,uEAEd,O,sBAApB,EAAAgE,KAAoB,GAAMA,KAAK+qT,mBAAmBxtS,U,cAAlD,EAAKmkV,aAAe,SACpB1hW,KAAKqvV,iBAAmBrvV,KAAK0hW,aAAa78V,QAAO,SAAAqC,GAAK,OAAAA,EAAEsiC,QAAU,IAAKmmT,mBACvE3vV,KAAKqvV,iBAAiB59U,MAAK,SAACC,EAAGC,GAAM,OAAAD,EAAEhU,KAAKmkW,cAAclwV,EAAEjU,SAGxDsC,KAAKwd,MAAMS,YACT6jV,EAAkB9hW,KAAK0hW,aAAa17V,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAKiB,MAAMS,gBAEnEje,KAAK+hW,4BAA8BD,EAAgBphM,UAC/CshM,EAAgBhiW,KAAK0hW,aAAa17V,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAKwlV,kCAE3D/hW,KAAKiiW,oBAAsBD,EAActhM,UACrCwhM,EAAoBliW,KAAK0hW,aAAa17V,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0lV,0BAE/DjiW,KAAKmiW,0BAA4BD,EAAkBxhM,SACnD1gK,KAAKoiW,0BACLpiW,KAAKqiW,oBACLriW,KAAKsiW,+B,+BAMbtiW,KAAK8iJ,aAAahmJ,MAAM,G,+BAIrB,YAAAslW,wBAAP,sBACEpiW,KAAKmiD,WAAaniD,KAAK0hW,aAAa78V,QAClC,SAAAqC,GAAK,OAAAA,EAAEw5J,UAAY,EAAKyhM,6BAE1BniW,KAAKmiD,WAAW1wC,MAAK,SAACC,EAAGC,GAAM,OAAAD,EAAEhU,KAAKmkW,cAAclwV,EAAEjU,SACtDsC,KAAK2hW,mBAAqB,GAC1B3hW,KAAKm1J,UAAY,GACZn1J,KAAKiiW,qBACPjiW,KAAKmiD,WAAWn8C,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0lV,yBACxCjiW,KAAKiiW,oBAAsB,KAC3BjiW,KAAK+hW,4BAA8B,KACnC/hW,KAAKwd,MAAMS,UAAY,OAIpB,YAAAokV,kBAAP,sBACEriW,KAAK2hW,mBAAqB3hW,KAAK0hW,aAAa78V,QAC1C,SAAAqC,GAAK,OAAAA,EAAEw5J,UAAY,EAAKuhM,uBAE1BjiW,KAAK2hW,mBAAmBlwV,MAAK,SAACC,EAAGC,GAAM,OAAAD,EAAEhU,KAAKmkW,cAAclwV,EAAEjU,SAC9DsC,KAAKm1J,UAAY,GACZn1J,KAAK+hW,6BACP/hW,KAAK2hW,mBAAmB37V,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAKwlV,iCAChD/hW,KAAK+hW,4BAA8B,KACnC/hW,KAAKwd,MAAMS,UAAY,OAIpB,YAAAqkV,0BAAP,sBACEtiW,KAAKm1J,UAAYn1J,KAAK0hW,aAAa78V,QACjC,SAAAqC,GAAK,OAAAA,EAAEw5J,UAAY,EAAKqhM,+BAE1B/hW,KAAKm1J,UAAU1jJ,MAAK,SAACC,EAAGC,GAAM,OAAAD,EAAEhU,KAAKmkW,cAAclwV,EAAEjU,SAChDsC,KAAKwd,MAAMS,WACbje,KAAKm1J,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAKiB,MAAMS,eAC7Cje,KAAKwd,MAAMS,UAAY,OAI3B,YAAA0nU,yBAAA,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,kBAAkBpyK,YAAY,qCAAqCwkD,WAAWrvL,QAAQ,aAC7Fi9S,OAAO,mBAAmBpyK,YAAY,4CAA4CwkD,WAAWrvL,QAAQ,uBACrGkR,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,W,qBAAuBp/G,GAAO,W,sCAC5B,MAAO,CAAP,EAAOgE,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKF,YAAAA,KAAb,W,qBAAqB1gE,GAAO,W,kDACnB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBArIE28R,EAAiB,GAD7B,uB,uBAoB6C,mB,OAAA,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1B,mBAD0B,OAC1B,IAAd,UAAc,SACQ,mBADR,OACQ,IAAlB,UAAkB,YAvBrCA,GAAb,K,4FCdA7mW,EAAOD,QAAU,ykI,stECcjB,aAQE,WACUq/V,EACAiG,EACAj+M,EACAh9I,GAJV,WACU,KAAAg1V,uBACA,KAAAiG,2BACA,KAAAj+M,eACA,KAAAh9I,SARF,KAAAwX,WAAa,IAAI,wBAEjB,KAAAm4F,OAAgB,GAkDhB,KAAAu3I,QAAU,6BAAUhxP,GAAO,W,wEACjC,IAAKgE,KAAKwqC,gBAAkBxqC,KAAKy1G,OAAO76G,OACtC,MAAO,CAAP,EAAO,CAAEP,KAAM,GAAIolV,aAAc,IAG/B+iB,EAAsC,GACtC/iB,EAAe,E,IAED,EAAAz/U,KAAKy1G,O,wBAAL,YAAT6qD,EAAK,KACwB,GAAMtgK,KAAK+gW,yBAAyBjtV,KAAKwsJ,EAAM/jJ,GAAIvc,KAAKsd,cADjE,M,OAE3B,IADI7B,EAAgC,SAC/B,EAAL,EAAqB,EAAAA,EAASphB,KAAT,eAAZooW,EAAQ,KACfD,EAAatnW,KAAK,EAAD,GACZunW,EAAQ,CACXC,kBAAmBpiM,EAAM5iK,QAG7B+hV,GAAgBhkU,EAASgkU,a,wBART,I,aAWlB,MAAO,CAAP,EAAO,CAAEplV,KAAMmoW,EAAc/iB,aAAcA,YA7D3Cz/U,KAAKC,OAAS,aAAWC,UAAU,iC,YAuEvC,OApEgB,YAAA0Y,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,kCAC1CgE,KAAKC,OAAO0zC,MAAM,YACbryB,MAAMlhB,EAAOoqC,iBAChBxqC,KAAKwqC,eAAiBpqC,EAAOoqC,e,WAInB,YAAArrC,KAAd,W,qBAAsBnD,GAAO,W,kDAC3B,SAAMgE,KAAK2iW,c,OACX,OADA,SACA,GAAM3iW,KAAKukV,Y,cAAX,S,YAGY,YAAAoe,WAAd,W,qBAA4B3mW,GAAO,W,4DACjC,IAAKgE,KAAKwqC,cACR,U,iBAK0C,O,sBADtCpqC,EAAS,IAAI,wBACyB,GAAMJ,KAAK86V,qBAAqBhnV,KAAK9T,KAAKwqC,cAAepqC,I,cAA/FwiW,EAAsC,SAC1C5iW,KAAKy1G,OAASmtP,EAAevoW,K,+BAE7B2F,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAynV,SAAd,W,qBAA0BvoV,GAAO,W,6DAGxB,OAFPgE,KAAKC,OAAO0zC,MAAM,YAEX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KAAKwK,QAAO,SAAAnK,GAAK,OAACA,EAAEgoD,uBACzD,EAAKplC,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAgCK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAAz9N,OAAd,SAAqBxnE,G,qBAA6BnvC,GAAO,W,kDACvD,SAAMgE,KAAK8F,OAAOkD,gBAAgB,qBAAsB,CAAEmiC,mBAAoBA,K,cAA9E,S,YAnFS03T,EAA6B,GADzC,uB,uBAUqD,mB,OAAA,IAApB,UAAoB,SACQ,mBADR,OACQ,IAAxB,UAAwB,SACxB,mBADwB,OACxB,IAAZ,UAAY,SACZ,mBADY,OACZ,IAAN,oBAAM,YAZbA,GAAb,I,uGCdAnnW,EAAOD,QAAU,23C,67DCUjB,aAOE,WACU6xV,EACAxqM,EACAh9I,GAFA,KAAAwnV,cACA,KAAAxqM,eACA,KAAAh9I,SALF,KAAAvC,KAAa,IAAI,IAOvBvD,KAAKC,OAAS,aAAWC,UAAU,sB,UA6DvC,OA1DgB,YAAA0Y,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,oEAC1CgE,KAAKC,OAAOE,KAAK,YAEZmhB,MAAMlhB,EAAOwd,QAAd,OACF5d,KAAK4d,QAAUxd,EAAOwd,OACf,GAAM5d,KAAKstV,YAAYhxU,QAAQtc,KAAK4d,QACxCza,MAAK,SAACI,GACL,EAAKA,KAAOA,KAEb0I,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,Q,OAL5B,MAAO,CAAP,EAAO,U,yBAUX,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAKstV,YAAYlwU,OAAO7C,c,gCAGrB,YAAA6gG,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAGzC,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAKstV,YAAY5wU,OAAO1c,KAAKuD,MACvCJ,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,+CAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,U,OAAzC,MAAO,CAAP,EAAO,U,2BAIViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,kBAmBI,YAAAoyJ,sBAAb,W,qBAAsClzJ,GAAO,W,6DAQpC,OAPFgE,KAAKuD,KAAKu/V,qBACb9iW,KAAKuD,KAAKw/V,SAAU,EACpB/iW,KAAKuD,KAAKy/V,cAAe,EACzBhjW,KAAKuD,KAAK0/V,YAAa,EACvBjjW,KAAKuD,KAAK2/V,cAAe,GAGpB,GAAMljW,KAAKstV,YAAYp+L,sBAAsBlvJ,KAAKuD,KAAKgZ,IAC3DpZ,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,kDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAhEEqmW,EAAkB,GAD9B,uB,uBASmC,mB,OAAA,IAAX,UAAW,SACE,mBADF,OACE,IAAZ,UAAY,SACZ,mBADY,OACZ,IAAN,oBAAM,YAVbA,GAAb,I,oGCVAznW,EAAOD,QAAU,s/F,uoECajB,aASE,WACUyoV,EACAoJ,EACA8V,EACAtgN,GAJV,WACU,KAAAohM,gBACA,KAAAoJ,cACA,KAAA8V,yBACA,KAAAtgN,eAVF,KAAAv/I,KAAa,IAAI,IAGjB,KAAA+Z,WAAoC,IAAI,wBAuCxC,KAAA0vO,QAAU,SAAC1vO,GAEjB,OADA,EAAKrd,OAAOE,KAAK,cACV,EAAKijW,uBAAuBtvV,KAAK,EAAK8J,OAAQN,GAClDna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,OAAO,EAAKgmJ,aAAahmJ,MAAMA,OArCnCkD,KAAKC,OAAS,aAAWC,UAAU,qB,YAgHvC,OA7GgB,YAAA0Y,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,yDACrCslB,MAAMlhB,EAAOwd,QAAd,OACF5d,KAAK4d,QAAUxd,EAAOwd,OACf,GAAM5d,KAAKukV,a,OAAlB,MAAO,CAAP,EAAO,U,yBAIG,YAAAplV,KAAd,W,qBAAsBnD,GAAO,W,4CAGhB,YAAAuoV,SAAb,W,qBAAyBvoV,GAAO,W,gEAE1BgE,KAAK4d,OAAL,Y,iBAEY,O,sBAAZ,EAAA5d,KAAY,GAAMA,KAAKstV,YAAYhxU,QAAQtc,KAAK4d,S,cAAhD,EAAKra,KAAO,SACRvD,KAAKuD,KAAKwjV,kBACG,GAAM/mV,KAAKojW,uBAAuBtvV,KAAK9T,KAAK4d,OAAQ5d,KAAKsd,aADtE,M,OACE7B,EAAW,SACfzb,KAAKsd,WAAWoiU,UAAYjkU,EAASphB,KACrC2F,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,a,sDAI1Cz/U,KAAK8iJ,aAAahmJ,MAAM,G,+BAgBhB,YAAAmC,OAAd,W,qBAAwBjD,GAAO,W,+DAGtB,OAFHwE,EAAsB,IAAI,KACzBod,OAAS5d,KAAKuD,KAAKgZ,GACjB,GAAMvc,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKojW,uBAAuBnkW,OAAOuB,GAC7C2C,MAAK,SAAOqa,GAAoB,qC,kCAC/Bhd,EAAK+b,GAAKiB,EAAMjB,GAChBvc,KAAKsd,WAAWoiU,UAAU57U,QAAQtD,GAClCR,KAAKsd,WAAWmiU,eAChBz/U,KAAK8iJ,aAAaxiJ,QAAQ,4B,aAG3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAoBK,YAAAuxO,KAAd,SAAmB7tO,G,qBAAsBxE,GAAO,W,6DACvC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,eAAgBx9B,EAASxR,OAAnC,MACK,GAAMjK,KAAKojW,uBAAuB1mV,OAAOlc,GAC7C2C,MAAK,gD,kCAEJnD,KAAK8iJ,aAAaxiJ,QAAQ,6B,aAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAiBK,YAAAggB,OAAd,SAAqBP,EAAY7e,G,qBAAe1B,GAAO,W,6DAC9C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IAENg7J,YAAW,SAACj9I,GACNA,EAASw9B,cACZ,EAAKmqT,uBAAuBtmV,OAAOP,GAChCpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOA,KACnF,EAAKe,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,iCAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,U,OAdlC,MAAO,CAAP,EAAO,kBAoBK,YAAAmyJ,sBAAd,W,qBAAuCjzJ,GAAO,W,6DACrC,SAAMgE,KAAKstV,YAAYr+L,sBAAsBjvJ,KAAKuD,KAAKgZ,IAC3DpZ,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,kDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAvHEumW,EAAiB,GAD7B,uB,uBAWuC,mB,OAAA,IAAb,kCAAa,SACJ,mBADI,OACJ,IAAX,UAAW,SACqB,mBADrB,OACqB,IAArB,UAAqB,SACnB,mBADmB,OACnB,IAAZ,UAAY,YAbzBA,GAAb,I,qGCbA3nW,EAAOD,QAAU,kpF,w8DCajB,aAME,WACU6lD,EACAokS,GADA,KAAApkS,mBACA,KAAAokS,8BANF,KAAAloU,MAAuB,IAAI,IAQjCxd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,qB,QA8BvC,OA3BgB,YAAA0Y,SAAd,SAAuB4E,G,qBAAuBxhB,GAAO,W,kCACnDgE,KAAKC,OAAO0zC,MAAM,QAASn2B,GAC3Bxd,KAAKwd,MAAQA,EACbxd,KAAK2lV,2B,WAGP,YAAAA,yBAAA,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,qBAAqBpyK,YAAY,gEAAgEwkD,WACxGn+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,W,qBAAuBp/G,GAAO,W,sCAC5B,MAAO,CAAP,EAAOgE,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKF,YAAAA,KAAb,W,qBAAqB1gE,GAAO,W,kDAEnB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAxCE09R,EAAkB,GAD9B,uB,uBAQ6C,mB,OAAA,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,YARvDA,GAAb,K,sGCbA5nW,EAAOD,QAAU,4yD,mnBCSjB,aAKE,WACUsE,EACA+iJ,GADA,KAAA/iJ,OACA,KAAA+iJ,eAHF,KAAAnrE,eAAyB,EAK/B33E,KAAKC,OAAS,aAAWC,UAAU,oB,QA0DvC,OAvDE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,EAAgB1F,GAC3DJ,KAAK8F,OAASA,EACd,IACM1F,EAAOu3E,gBACT33E,KAAK23E,cAAgBzmE,KAAKC,MAAM/Q,EAAOu3E,gBAG3Cn1E,EAAOmC,IAAI,CACT,CACEjC,MAAO,CAAC,IACRpI,SAAU,cACVoD,KAAM,YACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,sCAGtB,CACEqC,MAAO,kBACPpI,SAAU,wCACVoD,KAAM,kBACN6S,KAAMvQ,KAAK23E,cACXrwE,MAAOtH,KAAKD,KAAKM,GAAG,iDAItB,CACEqC,MAAO,mBACPpI,SAAU,2CACVoD,KAAM,mBACN6S,KAAMvQ,KAAK23E,cACXrwE,MAAOtH,KAAKD,KAAKM,GAAG,kDAGtB,CACEqC,MAAO,mBACPpI,SAAU,0CACVoD,KAAM,mBACN6S,KAAMvQ,KAAK23E,cACXrwE,MAAOtH,KAAKD,KAAKM,GAAG,kDAGtB,CACEqC,MAAO,uBACPpI,SAAU,wCACVoD,KAAM,uBACN6S,IAAKvQ,KAAK23E,cACVrwE,MAAOtH,KAAKD,KAAKM,GAAG,wDAK1B,MAAOvD,GACLkD,KAAK8iJ,aAAahmJ,MAAMA,KAhEfymW,EAAe,GAD3B,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgB,mBADhB,OACgB,IAAZ,UAAY,YAPzBA,GAAb,I,8DCTA7nW,EAAOD,QAAU,8M,i9DCcjB,aASE,WACUsvT,EACAuiC,EACAxqM,EACA4iM,EACA5/U,GAJA,KAAAilT,qBACA,KAAAuiC,cACA,KAAAxqM,eACA,KAAA4iM,8BACA,KAAA5/U,SATF,KAAA0X,MAAc,IAAI,IAGlB,KAAAm6D,eAAyB,EAQ/B33E,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,Y,cAoGvC,OAjGS,YAAAylV,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,QAAQpyK,YAAY,oCAAoCwkD,WAC/D4tH,OAAO,YAAYpyK,YAAY,oCAAoCwkD,WACnE4tH,OAAO,WAAWpyK,YAAY,kCAAkCwkD,WAAWrvL,QAAQ,YACnFi9S,OAAO,yBAAyBpyK,YAAY,kDAAkDwkD,WAC9F4tH,OAAO,iBAAiBpyK,YAAY,0CAA0CwkD,WAC9E4tH,OAAO,0BAA0BpyK,YAAY,kCAAkCwkD,WAAWrvL,QAAQ,aAGzF,YAAAvjB,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,iEAErCslB,MAAMlhB,EAAOid,aAAd,Y,iBAMc,O,sBAJVjd,EAAOu3E,gBACT33E,KAAK23E,cAAgBzmE,KAAKC,MAAM/Q,EAAOu3E,eACvC33E,KAAKwd,MAAMgmV,2BAA6B,IAAUC,cAEpD,EAAAzjW,KAAc,GAAMA,KAAKstV,YAAY/vU,OAAOvd,KAAK23E,gB,OAChC,OADjB,EAAK+uQ,MAAS,SACd,EAAA1mV,KAAiB,GAAMA,KAAK+qT,mBAAmBzuS,SAASlc,EAAOid,c,cAA/D,EAAK0kC,UAAY,SACjB/hD,KAAKwd,MAAMm6D,cAAgB33E,KAAK23E,cAC3Br2D,MAAMlhB,EAAOwd,QAAd,OACF,EAAA5d,KAAa,GAAMA,KAAKstV,YAAYhxU,SAASlc,EAAOwd,U,cAApD,EAAKJ,MAAQ,S,aAGbxd,KAAKwd,MAAMS,UAAYje,KAAK+hD,UAAUxlC,G,wBAExCvc,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAI9B,YAAA4mW,iBAAA,WACM1jW,KAAK23E,eAAiB33E,KAAKwd,MAAMmmV,WAAa,IAASC,OACzD5jW,KAAKwd,MAAMqmV,qBAAsB,EACjC7jW,KAAKwd,MAAMsmV,kBAAmB,GAE5B9jW,KAAK23E,eAAiB33E,KAAKwd,MAAMmmV,WAAa,IAASI,WACzD/jW,KAAKwd,MAAMqmV,qBAAsB,EACjC7jW,KAAKwd,MAAMsmV,kBAAmB,IAGrB,YAAA1oP,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAEzC,OADPgE,KAAKC,OAAOE,KAAK,UACV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKwpR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAQT,sBAAI,sBAAO,C,IAAX,WACE,OAAQlmV,KAAKstV,YAAYlwU,OAAO7C,c,gCAGrB,YAAAmiD,KAAb,SAAkBwpR,G,qBAAuBlqV,GAAO,W,6DAE9C,OADAgE,KAAKC,OAAOE,KAAK,QACbH,KAAKwd,MAAMgmV,4BAA8B,IAAUQ,WAC9C,CAAP,EAAOhkW,KAAK8iJ,aAAahmJ,MAAM,4DAE5BkD,KAAKwd,MAAMjB,GAAZ,MACK,GAAMvc,KAAKstV,YAAYruV,OAAOe,KAAKwd,OACvCra,MAAK,SAAOI,GAAU,qC,yDACrBvD,KAAKwd,MAAMjB,GAAKhZ,EAAKgZ,GACrBvc,KAAK8iJ,aAAaxiJ,QAAQ,+CACrB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,U,OAAzC,MAAO,CAAP,EAAO,U,OAEA,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,oBAAqB,CAAE4U,OAAQra,EAAKgZ,M,OAA7E,MAAO,CAAP,EAAO,oBAGRtQ,OAAM,SAAAnP,GACP,EAAKgmJ,aAAahmJ,MAAMA,O,OAX5B,MAAO,CAAP,EAAO,U,OAcA,SAAMkD,KAAKstV,YAAY5wU,OAAO1c,KAAKwd,OACvCra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,+CAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,U,OAAzC,MAAO,CAAP,EAAO,U,2BAIViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,kBArGAmnW,EAAQ,GADpB,uB,uBAWiD,mB,OAAA,IAAlB,UAAkB,SACd,mBADc,OACd,IAAX,UAAW,SACE,mBADF,OACE,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1C,mBAD0C,OAC1C,IAAN,oBAAM,YAdbA,GAAb,I,yECdAvoW,EAAOD,QAAU,+8V,yqBCUjB,aAKE,WACUsE,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBACRpsN,KAAKC,OAAS,aAAWC,UAAU,gC,QAsDvC,OAnDE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,eACVoD,KAAM,aACN4J,MAAOtH,KAAKD,KAAKM,GAAG,2CACpB+H,SAAU,CACRm7U,QAAQ,IAIZ,CACE7gV,MAAO,iBACPpI,SAAU,oBACVoD,KAAM,mBACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB8lM,UAClE/iQ,MAAOtH,KAAKD,KAAKM,GAAG,yCACpB+H,SAAS,CACP28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsB29C,WAE/BlqQ,KAAMH,KAAKD,KAAKM,GAAG,0DAIvB,CACEqC,MAAO,iBACPpI,SAAU,8BACVoD,KAAM,wBACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB8lM,UAClE/iQ,MAAOtH,KAAKD,KAAKM,GAAG,mCACpB+H,SAAS,CACP28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsB29C,WAE/BlqQ,KAAMH,KAAKD,KAAKM,GAAG,0DAIvB,CACEqC,MAAO,0DACPpI,SAAU,2BACVoD,KAAM,yBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,oCAzDf6jW,EAA4B,GADxC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,6ECVAxoW,EAAOD,QAAU,uD,sECCjB,0E,8DCDAC,EAAOD,QAAU,+Y,2kECejB,aAeE,WACUsvT,EACAuiC,EAEApJ,EACAphM,EACAh9I,GANV,WACU,KAAAilT,qBACA,KAAAuiC,cAEA,KAAApJ,gBACA,KAAAphM,eACA,KAAAh9I,SAlBF,KAAA1F,OAAc,GAId,KAAAkd,WAAoC,IAAI,wBAGxC,KAAA63I,UAAuB,GACvB,KAAAhzG,WAAwB,GAExB,KAAAoqS,UAAoB,EAwDpB,KAAAv/F,QAAU,WAEhB,OAAO,EAAKsgG,YAAYx5U,KAAK,EAAKuJ,YAAY,EAAKs6D,cAAe,EAAKr6D,aAhDvEtd,KAAKC,OAAS,aAAWC,UAAU,Y,cAoGvC,OAjGgB,YAAA0Y,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,yDAEtCgE,KAAKI,OAAOid,aAAejd,EAAOid,aAAerd,KAAKusV,UACxDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAIJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,6DACtBslB,MAAMthB,KAAKI,OAAOid,aAAnB,YACFrd,KAAKqd,aAAerd,KAAKI,OAAOid,YAChCrd,KAAK23E,cAAgB33E,KAAKI,OAAOu3E,c,iBAEd,O,sBAAjB,EAAA33E,KAAiB,GAAMA,KAAK+qT,mBAAmBxtS,U,OAGxC,OAHP,EAAK43I,UAAY,SACjBn1J,KAAKmiD,WAAaniD,KAAKm1J,UAAUtwJ,QAAO,SAAAqC,GAAK,OAAAA,EAAEsiC,SAAW,IAAKkmT,aAC/D1vV,KAAKusV,UAAW,EACT,GAAMvsV,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yBAGPvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BAKjB,YAAAynV,SAAb,W,qBAAyBvoV,GAAO,W,6DAEvB,OADPgE,KAAKC,OAAOE,KAAK,YACV,GAAMH,KAAKstV,YAAYx5U,KAAK9T,KAAKqd,YAAYrd,KAAK23E,cAAe33E,KAAKsd,YAC1Ena,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAQK,YAAAnxU,OAAd,W,qBAAwBjD,GAAO,W,kDAEtB,OADPgE,KAAKC,OAAOE,KAAK,UACV,GAAMH,KAAK8F,OAAOkD,gBAAgB,oBAAqB,CAAE4U,OAAQ,SAAW+5D,cAAe33E,KAAK23E,iB,OAAvG,MAAO,CAAP,EAAO,kBAGK,YAAA76D,OAAd,SAAqBP,EAAY7e,G,qBAAe1B,GAAO,W,6DAC9C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IAENg7J,YAAW,SAAOj9I,GAA2B,qC,oEACvCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKstV,YAAYxwU,OAAOP,GAClCpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOA,KACnF,EAAKe,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,mDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,mCANb,MAAO,CAAP,EAAO,kBAqBI,YAAA2gB,YAAb,SAAyBjd,G,qBAAaxE,GAAO,W,6DAEpC,OADPgE,KAAKC,OAAO0zC,MAAM,gBAAiBnzC,EAAK8F,UACjC,GAAMtG,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK9C,OACXg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKstV,YAAY7vU,YAAYjd,EAAK+b,IAC5CpZ,MAAK,WAEJ,EAAK2/I,aAAaxiJ,QAAQ,yDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,U,OAUP0D,EAAK8F,UAAY9F,EAAK8F,S,6CAf1B,MAAO,CAAP,EAAO,kBAvGE69V,EAAQ,GADpB,uB,uBAiBiD,mB,OAAA,IAAlB,UAAkB,SACd,mBADc,OACd,IAAX,UAAW,SAEI,mBAFJ,OAEI,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACZ,mBADY,OACZ,IAAN,oBAAM,YArBbA,GAAb,I,soBCNA,aAKE,WACUpkW,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,uB,MAwBvC,OArBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,cACVoD,KAAM,SAKR,CACEgF,MAAO,eACPpI,SAAU,sBACVoD,KAAM,wBAxBD0mW,EAAmB,GAD/B,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,mECTA1oW,EAAOD,QAAU,uD,wDCAjBC,EAAOD,QAAU,qmG,gFCCjB,mF,wECDAC,EAAOD,QAAU,0Z,2kBCIjB,aAEE,WAAoBqK,GAAA,KAAAA,S,MAKtB,OAPau+V,EAAS,GADrB,a,uBAGmC,mB,OAAA,IAAN,oBAAM,YAFvBA,GAAb,I,uDCJA3oW,EAAOD,QAAU,+vB,47DCQjB,aAUE,WACU6xV,EACAxqM,GADA,KAAAwqM,cACA,KAAAxqM,eAER9iJ,KAAKC,OAAS,aAAWC,UAAU,yB,UAmBvC,OAhBgB,YAAAivJ,4BAAd,W,qBAA6CnzJ,GAAO,W,oEAE9CgE,KAAK4d,QAAU5d,KAAKskW,wBACtBtkW,KAAKC,OAAO0zC,MAAM,qCAAsC3zC,KAAK4d,QAC7D5d,KAAKC,OAAO0zC,MAAM,qDAAsD3zC,KAAKskW,wBAEtE,GAAMtkW,KAAKstV,YAAYn+L,4BAA4BnvJ,KAAK4d,OAAQ5d,KAAKskW,wBACzEnhW,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,kDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,QAT1B,M,OAIF,MAAO,CAAP,EAAO,U,yBAlBX,GADC,W,sDAID,GADC,W,gBACwC,mB,OAAA,IAAT,UAAS,W,6CAR9BynW,EAAqB,GADjC,uB,uBAYmC,mB,OAAA,IAAX,UAAW,SACE,mBADF,OACE,IAAZ,UAAY,YAZzBA,GAAb,I,wGCRA7oW,EAAOD,QAAU,gxB,6pECgBjB,aAYE,WACUsE,EACAmkV,EACAoJ,EACAkX,EACA1+V,EACAg9I,GANV,WACU,KAAA/iJ,OACA,KAAAmkV,gBACA,KAAAoJ,cACA,KAAAkX,wBACA,KAAA1+V,SACA,KAAAg9I,eAfF,KAAAv/I,KAAa,IAAI,IAGjB,KAAA+Z,WAAoC,IAAI,wBAoDxC,KAAA0vO,QAAU,WAEhB,OAAO,EAAKw3G,sBAAsB1wV,KAAK,EAAK8J,OAAQ,EAAKN,aAxCzDtd,KAAKC,OAAS,aAAWC,UAAU,oB,gBAqOvC,OAlOgB,YAAA0Y,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,kCACrCslB,MAAMlhB,EAAOwd,UAChB5d,KAAK4d,QAAUxd,EAAOwd,OAClBxd,EAAOu3E,gBACT33E,KAAK23E,cAAgBzmE,KAAKC,MAAM/Q,EAAOu3E,iB,WAK/B,YAAAx4E,KAAd,W,qBAAsBnD,GAAO,W,kDACpB,SAAMgE,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,kBAGK,YAAAhc,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGI,YAAAmU,SAAb,W,qBAAyBvoV,GAAO,W,+DAC9BgE,KAAKC,OAAOE,KAAK,aACbH,KAAK4d,OAAL,Y,iBAEY,O,sBAAZ,EAAA5d,KAAY,GAAMA,KAAKstV,YAAYhxU,QAAQtc,KAAK4d,S,cAAhD,EAAKra,KAAO,SACZvD,KAAKskW,uBAAyBtkW,KAAKuD,KAAK+gW,uBACpCtkW,KAAKuD,KAAKwjV,kBACG,GAAM/mV,KAAKwkW,sBAAsB1wV,KAAK9T,KAAK4d,OAAQ5d,KAAKsd,aADrE,M,OACE7B,EAAW,SACfzb,KAAKsd,WAAWoiU,UAAYjkU,EAASphB,KACrC2F,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,a,sDAI1Cz/U,KAAK8iJ,aAAahmJ,MAAM,G,+BAUhB,YAAAmC,OAAd,W,qBAAwBjD,GAAO,W,+DAGtB,OAFHwE,EAAqB,IAAI,KACxBod,OAAS5d,KAAKuD,KAAKgZ,GACjB,GAAMvc,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKwkW,sBAAsBvlW,OAAOuB,GAC5C2C,MAAK,SAAOqa,GAAmB,qC,kCAC9Bhd,EAAK+b,GAAKiB,EAAMjB,GAChB/b,EAAKikW,gBAAkBjnV,EAAMinV,gBAC7BjkW,EAAKkkW,mBAAqBlnV,EAAMknV,mBAChClkW,EAAKmkW,UAAYnnV,EAAMmnV,UACvB3kW,KAAKsd,WAAWoiU,UAAU57U,QAAQtD,GAClCR,KAAKsd,WAAWmiU,eAChBz/U,KAAK8iJ,aAAaxiJ,QAAQ,4B,aAG3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAZ5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAuBK,YAAAuxO,KAAd,SAAmB7tO,G,qBAAqBxE,GAAO,W,6DAEtC,OADPwE,EAAKod,OAAS5d,KAAKuD,KAAKgZ,GACjB,GAAMvc,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKwkW,sBAAsB9nV,OAAOlc,GAC5C2C,MAAK,gD,kCAEJnD,KAAK8iJ,aAAaxiJ,QAAQ,6B,aAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAiBK,YAAAggB,OAAd,SAAqBtc,G,qBAAqBxE,GAAO,W,6DACxC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAKgqC,cAAgBhqC,EAAKikW,gBAAkBjkW,EAAKupC,iBAAmB/pC,KAAKD,KAAKM,GAAGG,EAAKkkW,oBAAsB1kW,KAAKD,KAAKM,GAAGG,EAAKmkW,aAEpIjsM,YAAW,SAACj9I,GACNA,EAASw9B,cACZ,EAAKurT,sBAAsB1nV,OAAOtc,EAAK+b,IACpCpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAO/b,EAAK+b,MACxF,EAAKe,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,iCAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,U,OAdlC,MAAO,CAAP,EAAO,kBAoBK,YAAAiyJ,qBAAd,W,qBAAsC/yJ,GAAO,W,6DACpC,SAAMgE,KAAKstV,YAAYv+L,qBAAqB/uJ,KAAKuD,KAAKgZ,IAC1DpZ,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,+CAC1B,EAAKnB,UAEN8M,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAkyJ,oBAAd,W,qBAAqChzJ,GAAO,W,6DACnC,SAAMgE,KAAKstV,YAAYt+L,oBAAoBhvJ,KAAKuD,KAAKgZ,IACzDpZ,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,kDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBASK,YAAAuyJ,sBAAd,W,qBAAuCrzJ,GAAO,W,6DACrC,SAAMgE,KAAKstV,YAAYj+L,sBAAsBrvJ,KAAKuD,KAAKgZ,IAC3DpZ,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,kDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBASK,YAAAwyJ,qBAAd,SAAmCz+I,G,qBAAiB7U,GAAO,W,6DAClD,SAAMgE,KAAKstV,YAAYh+L,qBAAqBtvJ,KAAKuD,KAAKgZ,GAAIvc,KAAKuD,KAAKqhW,sBAAuB/zV,GAC/F1N,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,kDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAmBK,YAAA0yJ,kBAAd,W,qBAAmCxzJ,GAAO,W,6DACjC,SAAMgE,KAAKstV,YAAY99L,kBAAkBxvJ,KAAKuD,KAAKgZ,IACvDpZ,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,kDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBASK,YAAA2yJ,4BAAd,W,qBAA6CzzJ,GAAO,W,6DAC3C,SAAMgE,KAAKstV,YAAY79L,4BAA4BzvJ,KAAKuD,KAAKgZ,IACjEpZ,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,kDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBASK,YAAA4yJ,mBAAd,W,qBAAoC1zJ,GAAO,W,6DAClC,SAAMgE,KAAKstV,YAAY59L,mBAAmB1vJ,KAAKuD,KAAKgZ,IACxDpZ,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,kDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBASK,YAAA6yJ,gCAAd,SAA8C9+I,G,qBAAiB7U,GAAO,W,6DAC7D,SAAMgE,KAAKstV,YAAY39L,gCAAgC3vJ,KAAKuD,KAAKgZ,GAAIvc,KAAKuD,KAAKshW,iCAAkCh0V,GACrH1N,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,kDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBASK,YAAA8yJ,2BAAd,SAAyC/+I,G,qBAAiB7U,GAAO,W,6DACxD,SAAMgE,KAAKstV,YAAY19L,2BAA2B5vJ,KAAKuD,KAAKgZ,GAAIvc,KAAKuD,KAAKuhW,4BAA6Bj0V,GAC3G1N,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,kDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBASK,YAAA+yJ,kCAAd,SAAgDh/I,G,qBAAiB7U,GAAO,W,6DAC/D,SAAMgE,KAAKstV,YAAYz9L,kCAAkC7vJ,KAAKuD,KAAKgZ,GAAIvc,KAAKuD,KAAKwhW,mCAAoCl0V,GACzH1N,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,kDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBASK,YAAAgzJ,mCAAd,SAAiDj/I,G,qBAAiB7U,GAAO,W,6DAChE,SAAMgE,KAAKstV,YAAYx9L,mCAAmC9vJ,KAAKuD,KAAKgZ,GAAIvc,KAAKuD,KAAKyhW,oCAAqCn0V,GAC3H1N,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,kDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAjPEmoW,EAAgB,GAD5B,uB,uBAcqB,mB,OAAA,IAAJ,gBAAI,SACkB,mBADlB,OACkB,IAAb,kCAAa,SACJ,mBADI,OACJ,IAAX,UAAW,SACmB,mBADnB,OACmB,IAApB,UAAoB,SAC7B,mBAD6B,OAC7B,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,YAlBzBA,GAAb,I,mGChBAvpW,EAAOD,QAAU,s6b,y/DCkBjB,aAaE,WACU6lD,EACAwhG,EACA4iM,EACAwf,EACAC,EACAC,EACA9X,GANA,KAAAhsS,mBACA,KAAAwhG,eACA,KAAA4iM,8BACA,KAAAwf,yBACA,KAAAC,oBACA,KAAAC,mBACA,KAAA9X,cAlBF,KAAA9vU,MAAsB,IAAI,IAC1B,KAAAu3B,cAA+B,GAC/B,KAAAswT,QAA4B,GAC5B,KAAAt8T,OAAkB,GAiBxB/oC,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,qB,kBAiEvC,OA9DgB,YAAA0Y,SAAd,SAAuB4E,G,qBAAsBxhB,GAAO,W,wDAItC,OAHZgE,KAAKC,OAAO0zC,MAAM,QAASn2B,GAC3Bxd,KAAKwd,MAAQA,EACbxd,KAAK2lV,2BACL,EAAA3lV,KAAY,GAAMA,KAAKstV,YAAYhxU,QAAQtc,KAAKwd,MAAMI,S,cAAtD,EAAKra,KAAO,S,YAId,YAAAoiV,yBAAA,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,oBAAoBpyK,YAAY,8DAA8DwkD,WACrG4tH,OAAO,iBAAiBpyK,YAAY,mEAAmEwkD,WACvG4tH,OAAO,YAAYpyK,YAAY,mEAAmEwkD,WAClG4tH,OAAO,WAAWpyK,YAAY,mEAAmEwkD,WACjG4tH,OAAO,aAAapyK,YAAY,qDAAqDwkD,WACrF4tH,OAAO,qBAAqBpyK,YAAY,kEAAkEwkD,WAC1G4tH,OAAO,gBAAgBpyK,YAAY,uDAAuDwkD,WAAWrvL,QAAQ,YAC7GkR,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,W,qBAAuBp/G,GAAO,W,sCAC5B,MAAO,CAAP,EAAOgE,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKF,YAAAA,KAAb,W,qBAAqB1gE,GAAO,W,kDAEnB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAGH,YAAA0/R,gBAAN,SAAsB9kW,G,mIAEbR,KAAKuD,KAAKo0E,cAAX,MACEn3E,IAAS,IAAiB+kW,OAA1B,OACF,EAAAvlW,KAAe,GAAMA,KAAKmlW,kBAAkBr+M,iBAAiB9mJ,KAAKwd,MAAMI,U,cAAxE,EAAKynV,QAAU,S,oBACN7kW,IAAS,IAAiBglW,YAA1B,OACT,EAAAxlW,KAAqB,GAAMA,KAAKklW,uBAAuBp+M,iBAAiB9mJ,KAAKwd,MAAMI,U,cAAnF,EAAKm3B,cAAgB,SACrB/0C,KAAKylW,oBAAsBzlW,KAAK+0C,c,oBACvBv0C,IAAS,IAAiBklW,MAA1B,OACT,EAAA1lW,KAAc,GAAMA,KAAKolW,iBAAiBt+M,iBAAiB9mJ,KAAKwd,MAAMI,U,OAAtE,EAAKmrB,OAAS,S,sDAIlB/oC,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAA6oW,2BAAd,W,qFACM3lW,KAAK4lW,oBAAoBhrW,OAAS,GACpCoF,KAAKylW,oBAAsBzlW,KAAK+0C,cAAclwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAE59D,KAAK6d,cAAcvE,SAAS,EAAK4uV,oBAAoBrqV,kBACjHvb,KAAKwd,MAAMgtB,cAAgBxqC,KAAKylW,oBAAoB,GAAGlpV,IAEpB,MAA5Bvc,KAAK4lW,qBAAkE,GAAnC5lW,KAAK4lW,oBAAoBhrW,SACpEoF,KAAKylW,oBAAsB,GAC3BzlW,KAAKylW,oBAAsBzlW,KAAK+0C,e,WAvFzB8wT,EAAiB,GAD7B,uB,uBAe6C,mB,OAAA,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACV,mBADU,OACV,IAAtB,UAAsB,SACV,mBADU,OACV,IAAjB,UAAiB,SACF,mBADE,OACF,IAAhB,UAAgB,SACV,mBADU,OACV,IAAX,UAAW,YApBvBA,GAAb,K,oGClBAnqW,EAAOD,QAAU,orP,qhECgBjB,aAaE,WACUqK,EACAg9I,EACA4iM,EACAogB,EACAC,EACAC,GALA,KAAAlgW,SACA,KAAAg9I,eACA,KAAA4iM,8BACA,KAAAogB,kBACA,KAAAC,gBACA,KAAAC,uBAbF,KAAAxoV,MAAkB,IAAI,IAItB,KAAAyoV,iBAA6B,GAC7B,KAAAC,cAAiC,GAWvClmW,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,oB,gBAuIvC,OApIe,YAAA0Y,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,2FAElCslB,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKie,WAAa7d,EAAO6d,UAEzBje,KAAK8lW,gBAAgB1oV,OAAO87B,iBAAmBl5C,KAAKie,UACpDje,KAAK+lW,cAAc3oV,OAAO87B,iBAAmBl5C,KAAKie,UAG7CqD,MAAMlhB,EAAO6rD,YAAd,OACFjsD,KAAKisD,YAAc7rD,EAAO6rD,WAC1B,EAAAjsD,KAAa,GAAMA,KAAKm8E,QAAQn8E,KAAKisD,e,OAEb,OAFxB,EAAKzuC,MAAQ,SAEb,EAAAxd,KAAwB,GAAMA,KAAKmmW,gBAAgBnmW,KAAKisD,a,OAAxD,EAAKg6S,iBAAmB,S,iBAGP,SAAMjmW,KAAKomW,oB,OAAxBC,EAAa,SAEnBrmW,KAAKkmW,cAAgBG,EAAW1hW,KAAI,SAAAi1V,GAClC,IAAItlN,EAAQslN,EAAI0M,WAAWh7U,MAAM,KAC7Bu2T,EAAWv3T,UAAUgqH,EAAM,IAAM,KAAK3tF,QACtCm7R,EAAWx3T,UAAUgqH,EAAM,IAAM,KAAK3tF,QAG1C,OAFAizS,EAAS,IAAI/X,EACb+X,EAAS,IAAI9X,EACN8X,K,sDAIX55V,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAq/E,QAAd,SAAsB4lM,G,qBAAiB/lR,GAAO,W,kDACrC,SAAMgE,KAAK8lW,gBAAgBxpV,QAAQylQ,I,OAA1C,MAAO,CAAP,EAAO,kBAGK,YAAAwkF,aAAd,W,qBAA8BvqW,GAAO,W,kDAC5B,SAAMgE,KAAK8lW,gBAAgBvoV,U,OAAlC,MAAO,CAAP,EAAO,kBAGK,YAAA6oV,iBAAd,W,qBAAkCpqW,GAAO,W,kDAChC,SAAMgE,KAAKgmW,qBAAqBzoV,U,OAAvC,MAAO,CAAP,EAAO,kBAGK,YAAA4oV,gBAAd,SAA8Bl6S,G,qBAAqBjwD,GAAO,W,mEAElC,SAAMgE,KAAK+lW,cAAc9/D,mBAAmBh6O,I,OAuBlE,OAvBIu6S,EAAkB,SAClBC,EAAU5rW,OAAO0Z,KAAK,QAAM1P,QAAO,SAAAq1B,GAAK,MAAmB,iBAAZ,OAAKA,MAEpD+rU,EAA6B,GAEjCQ,EAAQt/V,SAAQ,SAAAyyV,GACd,IAAI8M,EAAgBF,EAAgB3hW,QAAO,SAAAjI,GAAK,cAAKA,EAAE+pW,QAAU,OAAK/M,MAElE8M,EAAc9rW,OAChBqrW,EAAiB/qW,KAAK,CACpB+wD,WAAY,EAAKA,WACjB06S,KAAM,OAAK/M,GACXh7V,MAAO8nW,EAAc,GAAG9nW,QAG1BqnW,EAAiB/qW,KAAK,CACpB+wD,WAAY,EAAKA,WACjB06S,KAAM,OAAK/M,GACXh7V,MAAO,QAKN,CAAP,EAAOqnW,WAGD,YAAAW,eAAR,SAAuBhoW,EAAe+nW,GAEpC,IAAM/M,EAAM55V,KAAKkmW,cAAclgW,MAAK,SAAC4zV,GAAa,OAAAh7V,GAASg7V,EAAI91U,KAAOllB,GAASg7V,EAAIpzU,KAAOozU,EAAI+M,OAAS,OAAKA,MAC5G,OAAO/M,EAAMA,EAAIl8V,KAAO,IAGZ,YAAAmpW,WAAd,SAAyBrmW,G,qBAAOxE,GAAO,W,+DACjCwE,GACF,EAAAR,KAAwB,GAAMA,KAAKmmW,gBAAgB3lW,KADjD,M,OACF,EAAKylW,iBAAmB,S,mCAIf,YAAA7qP,OAAb,W,qBAAuBp/G,GAAO,W,6DAGrB,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,2BAGVzwD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAYT,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAK+lW,cAAc3oV,OAAO7C,c,gCAGtB,YAAAmiD,KAAd,W,qBAAsB1gE,GAAO,W,iDAEvBH,EAAW,GAGfmE,KAAKwd,MAAMspV,MAAQ3jV,KAAKk3D,SAASr7D,SAAS,IAAIjd,UAAU,IAAK,IAAKsX,MAAQmI,UAAUxC,SAAS,IAGzF+nV,EAAe,CAAEnoW,MAAO,GAC5BoB,KAAKimW,iBAAiB9+V,SAAQ,SAAAyyV,GACxBmN,EAAQnoW,MAAQg7V,EAAIh7V,QACtBmoW,EAAUnN,MAId55V,KAAKwd,MAAMwpV,YAAcD,EAAQJ,KAEjC3mW,KAAKimW,iBAAiB9+V,SAAQ,SAAAyyV,GAC5BA,EAAIkN,MAAQ,EAAKtpV,MAAMspV,MACvBjrW,EAASX,KAAK,EAAK6qW,cAAc7/D,iBAAiB0zD,OAGpD59V,EAAQgC,IAAInC,GACTsH,MAAK,2EAAY,SAAAnD,KAAK8lW,gBAAgBppV,OAAO1c,KAAKwd,iBAClDra,MAAK,2EAAY,SAAAnD,KAAK8iJ,aAAaxiJ,QAAQ,uCAC3C2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,M,WA7JnBmqW,EAAgB,GAD5B,uB,uBAeyB,mB,OAAA,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACxB,mBADwB,OACxB,IAAf,UAAe,SACJ,mBADI,OACJ,IAAb,UAAa,SACc,mBADd,OACc,IAApB,UAAoB,YAnBzCA,GAAb,I,8GChBAvrW,EAAOD,QAAU,68D,uqECgBjB,aAsBE,WACU4wV,EACA3W,EACAwxB,EACAhjB,EACAphM,GALV,WACU,KAAAupM,kBACA,KAAA3W,uBACA,KAAAwxB,8BACA,KAAAhjB,gBACA,KAAAphM,eAxBF,KAAA1iJ,OAAc,GAEd,KAAAkd,WAAoC,IAAI,wBAIxC,KAAAivU,UAAoB,EAEpB,KAAAv/F,QAAU,6BAAUhxP,GAAO,W,wDACjCgE,KAAKC,OAAO0zC,MAAM,c,iBAEC,O,sBAAA,GAAM3zC,KAAKknW,4BAA4BpzV,KAAK9T,KAAKsd,a,OAClE,MAAO,CAAP,EADiB,U,OAIjB,O,WAAO,CAAP,EAAOtd,KAAK8iJ,aAAahmJ,MAAM,I,yBAWjCkD,KAAKC,OAAS,aAAWC,UAAU,qCAEnCF,KAAKsd,WAAWusB,OAAS,G,cAyG7B,OArGgB,YAAAjxB,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,yDACtCgE,KAAKusV,UACPvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAIJ,YAAAmkV,SAAd,W,qBAA0BvoV,GAAO,W,6DAGxB,OAFPgE,KAAKC,OAAO0zC,MAAM,YAEX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAKxb,OAAO0zC,MAAM,UAAWl4B,GAC7B,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAYK,YAAAqC,KAAd,W,qBAAsBnD,GAAO,W,0DAER,O,sBAAjB,EAAAgE,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,U,cAA5C,EAAKu9C,UAAY,SACb96D,KAAK86D,UAAUlgE,OAAS,GACrB0mB,MAAMthB,KAAKI,OAAO6d,aAErBje,KAAKie,WAAaje,KAAKI,OAAO6d,UAC9Bje,KAAKknW,4BAA4B9pV,OAAO87B,iBAAmBl5C,KAAKie,WAGlEje,KAAKsd,WAAWusB,OAAO2iT,WAAaxsV,KAAK86D,UAAU,GAAGv+C,GAC/C,GAAMvc,KAAKukV,aARhB,M,OAQF,MAAO,CAAP,EAAO,U,4CAITvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGI,YAAAnxU,OAAb,SAAoBuB,G,qBAA6BxE,GAAO,W,6DAC/C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,6DACzCA,EAASw9B,aAAV,YACFj5C,KAAKC,OAAO0zC,MAAM,kBAAmBl4B,EAASxR,Q,iBAEV,O,sBAAA,GAAMjK,KAAKknW,4BAA4BjoW,OAAOuB,I,cAA5Egd,EAA8B,SAElChd,EAAK+b,GAAKiB,EAAMjB,GAGhBvc,KAAK8iJ,aAAaxiJ,QAAQ,4B,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCAf9B,MAAO,CAAP,EAAO,kBAqBI,YAAAuxO,KAAb,SAAkB7tO,G,qBAA6BxE,GAAO,W,6DAC7C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,2DAC9Czb,KAAKC,OAAO0zC,MAAM,kBAAmBl4B,EAASxR,QACzCwR,EAASw9B,aAAV,Y,iBAEA,O,sBAAA,GAAMj5C,KAAKknW,4BAA4BxqV,OAAOlc,I,cAA9C,SAEAR,KAAK8iJ,aAAaxiJ,QAAQ,oD,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCAZ9B,MAAO,CAAP,EAAO,kBAoBI,YAAAs+G,OAAb,SAAoB56G,G,qBAA6BxE,GAAO,W,6DAC/C,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDAC5B,GAAXvP,EAAK+b,GAAL,MACK,GAAMvc,KAAKquO,KAAK7tO,I,OAAvB,MAAO,CAAP,EAAO,U,OAEF,SAAMR,KAAKf,OAAOuB,I,OAAzB,MAAO,CAAP,EAAO,qB,OALX,MAAO,CAAP,EAAO,kBA/HE2mW,EAAiC,GAD7C,uB,uBAwB2C,mB,OAAA,IAAf,UAAe,SACU,mBADV,OACU,IAApB,gDAAoB,SACc,mBADd,OACc,IAA3B,UAA2B,SAC5B,mBAD4B,OAC5B,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YA3BzBA,GAAb,I,8HChBAzrW,EAAOD,QAAU,kjF,w9DCUjB,aAOE,WACU6lD,EACAokS,GADA,KAAApkS,mBACA,KAAAokS,8BAIR1lV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,sC,QAiCvC,OA1BS,YAAA0Y,SAAP,SAAgB4E,GACdxd,KAAKwd,MAAQA,EACbxd,KAAK2lV,4BAGC,YAAAA,yBAAR,WACE,kBACCvM,OAAO,kBAAkBpyK,YAAY,6CAA6CwkD,WAClFn+K,GAAGrtC,KAAKwd,QAGE,YAAA49F,OAAb,SAAoB4wO,G,qBAA2BhwV,GAAO,W,6DAC7C,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKsvR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAQI,YAAAtvR,KAAb,SAAkBsvR,G,qBAA2BhwV,GAAO,W,kDAG3C,OAFPgE,KAAKC,OAAO0zC,MAAM,QAASq4S,GAC3BhsV,KAAK01U,qBAAqBlnU,QACnB,GAAMxO,KAAKshD,iBAAiBskB,GAAGomR,I,OAAtC,MAAO,CAAP,EAAO,kBA9CEob,EAAkC,GAD9C,a,uBAS6C,mB,OAAA,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,YATvDA,GAAb,K,6HCVA1rW,EAAOD,QAAU,ykL,opBCQjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,gC,MAyCvC,OArCE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,4BACVoD,KAAM,0BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,uCAGtB,CACEqC,MAAO,OACPpI,SAAU,0DACVoD,KAAM,+BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,uDA7BfgnW,EAA4B,GADxC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,yFCRA3rW,EAAOD,QAAU,8M,+/DCsBjB,aAoBE,WACUm/D,EACA90D,EACAg9I,EACA+wM,EACAnO,EACAogB,EACAwB,GANA,KAAA1sS,QACA,KAAA90D,SACA,KAAAg9I,eACA,KAAA+wM,iCACA,KAAAnO,8BACA,KAAAogB,kBACA,KAAAwB,qBAnBF,KAAA9pV,MAAkB,IAAI,IAGtB,KAAA+pV,0BAA2C,GAC3C,KAAAC,0BAAuD,GAEvD,KAAAC,kBAA4B,EAC5B,KAAArnW,OAAc,GAGd,KAAAmsV,UAAoB,EAW1BvsV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,gBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,kBA6G5B,OA1GS,YAAA80U,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,QAAQpyK,YAAY,+CAA+CwkD,WAC1E4tH,OAAO,0BAA0BpyK,YAAY,gEAAgEwkD,WAC7Gn+K,GAAGrtC,KAAKwd,QAGA,YAAA5E,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,iEACzCgE,KAAKwd,MAAMS,UAAYje,KAAKynW,kBAC5BznW,KAAKwd,MAAMkqV,uBAAyB,IAAuBC,UACvD3nW,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACd,GAAMJ,KAAKb,SAFT,M,cAEF,S,aAGAa,KAAKI,OAASA,E,oBAGXkhB,MAAMlhB,EAAO6d,WAAd,Y,8CAEAje,KAAKie,WAAa7d,EAAO6d,UACzBje,KAAK8lW,gBAAgB1oV,OAAO87B,iBAAmBl5C,KAAKie,UAE/CqD,MAAMlhB,EAAO6rD,YAAd,OACFjsD,KAAKisD,WAAa7rD,EAAO6rD,WACzB,EAAAjsD,KAAa,GAAMA,KAAK8lW,gBAAgBxpV,QAAQtc,KAAKisD,c,OAArD,EAAKzuC,MAAQ,S,wBAEfxd,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAMjB,YAAAqC,KAAb,W,mEAEE,IAAKmiB,MAAMthB,KAAKI,OAAO6d,WACrB,IACEje,KAAKusV,UAAW,EAElB,MAAOzvV,GACLkD,KAAK8iJ,aAAahmJ,MAAMA,G,iBAMjB,YAAAs+G,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAGzC,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACL34M,KAAKisD,WACA,GAAMjsD,KAAK0c,OAAOwpU,IADvB,MADF,M,OAEA,MAAO,CAAP,EAAO,U,OAEA,SAAMlmV,KAAKf,OAAOinV,I,OAAzB,MAAO,CAAP,EAAO,U,2BAIZj6U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAX5B,MAAO,CAAP,EAAO,kBAeT,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAK8lW,gBAAgB1oV,OAAO7C,c,gCAGxB,YAAAtb,OAAd,SAAqBinV,G,qBAAuBlqV,GAAO,W,6DAE1C,SAAMgE,KAAK8lW,gBAAgB7mW,OAAOe,KAAKwd,OAC3Cra,MAAK,SAAO4M,GAAgB,qC,yDAC3B/P,KAAK8iJ,aAAaxiJ,QAAQ,6BACtB4lV,EACO,GAAMlmV,KAAK8F,OAAOyI,OAAOhG,SAAS,sBAAsBwH,EAAOwM,GAAE,UADxE,M,OACA,MAAO,CAAP,EAAO,U,OAGF,SAAMvc,KAAK8F,OAAOkD,gBAAgB,wB,OAAzC,MAAO,CAAP,EAAO,oBAIViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAZ5B,MAAO,CAAP,EAAO,kBAgBK,YAAA4f,OAAd,SAAqBwpU,G,qBAAuBlqV,GAAO,W,6DAC1C,SAAMgE,KAAK8lW,gBAAgBppV,OAAO1c,KAAKwd,OAC3Cra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6BAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,wB,OAAzC,MAAO,CAAP,EAAO,U,2BAGViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,kBAYF,YAAA8qW,iBAAP,SAAwBnqW,GACtBuC,KAAK8iJ,aAAa3iJ,KAAK1C,IA7IdoqW,EAAqB,GADjC,uB,uBAsB8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SACoC,mBADpC,OACoC,IAA9B,UAA8B,SACN,mBADM,OACN,IAA3B,8DAA2B,SACxB,mBADwB,OACxB,IAAf,UAAe,SACM,mBADN,OACM,IAAlB,UAAkB,YA3BrCA,GAAb,I,oGCtBAnsW,EAAOD,QAAU,43J,shECqBjB,aAeE,WACUm/D,EACA90D,EACAilT,EACA+6C,EACA5hB,EACAphM,GANV,WACU,KAAAloF,QACA,KAAA90D,SACA,KAAAilT,qBACA,KAAA+6C,kBACA,KAAA5hB,gBACA,KAAAphM,eAlBF,KAAA1iJ,OAAc,GAMd,KAAAkd,WAAoC,IAAI,wBAIxC,KAAAivU,UAAoB,EAgBpB,KAAAv/F,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAK8lW,gBAAgBr0M,sBAAsBzxJ,KAAKsd,YAC1Dna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBARPkD,KAAKC,OAAS,aAAWC,UAAU,0BAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,gBA0D5B,OA3CgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,yDAGhEgE,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAKJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,yDACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OAEFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE1Bje,KAAKie,WAEPje,KAAK8lW,gBAAgB1oV,OAAO87B,iBAAmBl5C,KAAKie,UACpDje,KAAKusV,UAAW,EACT,GAAMvsV,KAAKukV,aAJhB,O,OAIF,MAAO,CAAP,EAAO,U,yBAKC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBArEEgrW,EAAqB,GADjC,uB,uBAiB8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACwB,mBADxB,OACwB,IAAlB,UAAkB,SACN,mBADM,OACN,IAAf,UAAe,SACJ,mBADI,OACJ,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YArBzBA,GAAb,I,8qBCZA,aAKE,WACU/nW,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,oC,MA4BvC,OAzBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,4BACVoD,KAAM,uBAKR,CACEgF,MAAO,iCACPpI,SAAU,oCACVoD,KAAM,mCAGR,CACEgF,MAAO,eACPpI,SAAU,sDACVoD,KAAM,kCACN4J,MAAOtH,KAAKD,KAAKM,GAAG,8DA/Bf0nW,EAAgC,GAD5C,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,8FCTArsW,EAAOD,QAAU,uD,mFCAjBC,EAAOD,QAAU,m+G,4nBCWjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,oB,MAsBvC,OAnBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPpI,SAAU,iBACVoD,KAAM,gBACN4J,MAAOtH,KAAKD,KAAKM,GAAG,qCACpBkQ,KAAK,EACLnI,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBihD,qBAxB5Bq6F,EAAkB,GAD9B,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,sECXAtsW,EAAOD,QAAU,kU,mECAjBC,EAAOD,QAAU,qc,w8DCWjB,aAQE,WACU6lD,EACAwhG,EACA4iM,EACAuiB,GAHA,KAAA3mT,mBACA,KAAAwhG,eACA,KAAA4iM,8BACA,KAAAuiB,iBAERjoW,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,sBACnCF,KAAK2lV,2B,YA8BT,OA3BgB,YAAA/sU,SAAd,SAAuBpY,G,qBAAgBxE,GAAO,W,6DAErC,OADPgE,KAAKkoW,gBAAkBrtW,OAAOgI,OAAO,IAAI,IAAWrC,GAC7C,GAAMR,KAAKioW,eAAe1qV,SAC9Bpa,MAAK,SAAAglW,GAAY,SAAKA,SAAWA,KACjChlW,MAAK,WAEJ,EAAKglW,SAAShxV,OAAO,EAAKgxV,SAASxjW,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ7Q,EAAK+b,GAAGyC,YAAa,MAE3F/S,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWD,YAAA6oV,yBAAR,WACE,kBACGvM,OAAO,4BAA4BpyK,YAAY,iDAAiDwkD,WAChGn+K,GAAGrtC,OAGK,YAAAo7G,OAAb,W,qBAAuBp/G,GAAO,W,6DACrB,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAKshD,iBAAiBskB,GAAG5lE,KAAK0qT,2BADzC,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAzCE09C,EAAkB,GAD9B,uB,uBAU6C,mB,OAAA,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1B,mBAD0B,OAC1B,IAAd,UAAc,YAZ7BA,GAAb,K,qFCXA1sW,EAAOD,QAAU,6pC,o+DCiBjB,aAcE,WACUm/D,EACA90D,EACAilT,EACAjoK,EACA4iM,EACAuiB,EACAloW,GANA,KAAA66D,QACA,KAAA90D,SACA,KAAAilT,qBACA,KAAAjoK,eACA,KAAA4iM,8BACA,KAAAuiB,iBACA,KAAAloW,OAdF,KAAAyd,MAAiB,IAAI,IAErB,KAAAwuU,iBAA2B,EAcjChsV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,eAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,kBAwF5B,OArFgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,gGAK7DslB,MAAMlhB,EAAO6d,WAAd,OAEFje,KAAKie,WAAa7d,EAAO6d,UAEpBqD,MAAMlhB,EAAOkkV,mBAChBtkV,KAAKie,WAAa7d,EAAOkkV,iBAG3BtkV,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3Dje,KAAKioW,eAAe7qV,OAAO87B,iBAAmBl5C,KAAKie,UAEnD,EAAAje,KAAgB,GAAMA,KAAKioW,eAAe1qV,W,cAA1C,EAAK4qV,SAAW,SAEX7mV,MAAMlhB,EAAOioW,WAAd,OAEF,EAAAroW,KAAa,GAAMA,KAAKioW,eAAe3rV,SAASlc,EAAOioW,a,OAAvD,EAAK7qV,MAAQ,S,iBAIfxd,KAAK2lV,2B,sDAKP3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIpB,YAAA6oV,yBAAR,WACE,kBACGvM,OAAO,QAAQpyK,YAAY,kCAAkCwkD,WAC7D4tH,OAAO,YAAYpyK,YAAY,yCAAyCwkD,WACxEn+K,GAAGrtC,KAAKwd,QAGC,YAAA49F,OAAd,SAAqB4wO,G,qBAA2BhwV,GAAO,W,sCAErD,OADAgE,KAAKgsV,gBAAkBA,EAChB,CAAP,EAAOhsV,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKf,sBAAI,sBAAO,C,IAAX,WACE,OAAQ18D,KAAKioW,eAAe7qV,OAAO7C,c,gCAGvB,YAAAmiD,KAAd,W,qBAAsB1gE,GAAO,W,oEACtBgE,KAAKwd,MAAMjB,GAAZ,MACK,GAAMvc,KAAKioW,eAAehpW,OAAOe,KAAKwd,OAC1Cra,MAAK,SAAOqa,GAAc,qC,yDACzBxd,KAAK8iJ,aAAaxiJ,QAAQ,4BAErBN,KAAKgsV,gBAAN,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,a,OAAzC,MAAO,CAAP,EAAO,U,OAEA,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,uBAAwB,CAAEq/V,UAAW7qV,EAAMjB,M,OAApF,MAAO,CAAP,EAAO,oBAIVtQ,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAZ5B,MAAO,CAAP,EAAO,U,OAeA,SAAMkD,KAAKioW,eAAevrV,OAAO1c,KAAKwd,OAC1Cra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6BAErBN,KAAKgsV,gBAAN,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,a,OAAzC,MAAO,CAAP,EAAO,U,2BAGViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,kBAvGAwrW,EAAW,GADvB,uB,uBAgB8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACwB,mBADxB,OACwB,IAAlB,UAAkB,SACZ,mBADY,OACZ,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1B,mBAD0B,OAC1B,IAAd,UAAc,SACpB,mBADoB,OACpB,IAAJ,gBAAI,YArBTA,GAAb,I,6ECjBA5sW,EAAOD,QAAU,wuE,qiECsBjB,aA0BE,WACUm/D,EACA90D,EACAmiW,EACA/jB,EACAphM,GALV,WACU,KAAAloF,QACA,KAAA90D,SACA,KAAAmiW,iBACA,KAAA/jB,gBACA,KAAAphM,eA5BF,KAAA1iJ,OAAa,GAOb,KAAAmsV,UAAoB,EAEpB,KAAAjvU,WAAoC,IAAI,wBAGxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAKioW,eAAen0V,KAAK9T,KAAKsd,YACxCna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAgBPkD,KAAKC,OAAS,aAAWC,UAAU,eAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,cAsF5B,OAlFgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,yDAEhEgE,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAKJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,oEAEtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OAEFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE1Bje,KAAKI,OAAOkkV,iBAAmD,WAAhCtkV,KAAKI,OAAOkkV,gBAC7CtkV,KAAKie,UAAY,KAETqD,MAAMthB,KAAKI,OAAOkkV,mBAC1BtkV,KAAKie,WAAaje,KAAKI,OAAOkkV,iBAG5BtkV,KAAKie,WAEPje,KAAKioW,eAAe7qV,OAAO87B,iBAAmBl5C,KAAKie,UAEnDje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3Dje,KAAKusV,UAAW,EAET,GAAMvsV,KAAKukV,aARhB,O,OAQF,MAAO,CAAP,EAAO,U,yBAKC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAGxB,OAFPgE,KAAKC,OAAO0zC,MAAM,YAEX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAA/hG,KAAd,SAAmB9xN,G,qBAAavgB,GAAO,W,kDAC9B,SAAMgE,KAAK8F,OAAOkD,gBAAgB,uBAAwB,CAACq/V,UAAW9rV,K,OAA7E,MAAO,CAAP,EAAO,kBAGI,YAAAO,OAAb,SAAoBtc,G,qBAAgBxE,GAAO,W,6DAClC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,sEACzCA,EAASw9B,aAAV,MACEx9B,EAASxR,QACPs+V,EAA+B9sV,EAASxR,OAC5CjK,KAAKC,OAAO0zC,MAAM,6BAA8B40T,GACzC,GAAMvoW,KAAKioW,eAAenrV,OAAOtc,EAAK+b,GAAIgsV,GAC9CplW,MAAK,gD,wCACAshV,EAA6BzkV,KAAKsd,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ7Q,EAAK+b,GAAGyC,YACrGhf,KAAKsd,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrDzkV,KAAKsd,WAAWmiU,eAChBz/U,KAAK8iJ,aAAaxiJ,QAAQ,8B,aAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,QAX1B,M,OAGF,MAAO,CAAP,EAAO,U,mCARb,MAAO,CAAP,EAAO,kBAnGE0rW,EAAW,GADvB,uB,uBA4B8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACgB,mBADhB,OACgB,IAAd,UAAc,SACF,mBADE,OACF,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YA/BzBA,GAAb,I,+oBCbA,aAKE,WACUzoW,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,0B,MAuBvC,OApBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,iBACVoD,KAAM,YAKR,CACEgF,MAAO,qBACPpI,SAAU,yBACVoD,KAAM,2BAxBD+qW,EAAsB,GADlC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,yECTA/sW,EAAOD,QAAU,uD,8DCAjBC,EAAOD,QAAU,68E,ioBCQjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,oB,MA2EvC,OAxEE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3CtD,EAAOmC,IAAI,CAeT,CACEjC,MAAO,GACPhF,KAAM,mBACNpD,SAAU,qBACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,8CACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBm7C,sBAKnC,CACEnlQ,MAAO,YACPhF,KAAM,6BACNpD,SAAU,yCACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,kDACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBm7C,wBAgCrC7nQ,KAAK8F,OAASA,GAjFL4iW,EAAgB,GAD5B,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,+ECRAhtW,EAAOD,QAAU,sQ,4ECAjBC,EAAOD,QAAU,ie,2hECiBjB,aAWE,WACUs9V,EACAj2M,EACA4iM,EACA5/U,EACDsxV,EACA4B,EACA9uT,EACA+uT,GAPC,KAAAF,uBACA,KAAAj2M,eACA,KAAA4iM,8BACA,KAAA5/U,SACD,KAAAsxV,mBACA,KAAA4B,kBACA,KAAA9uT,gBACA,KAAA+uT,mBAfD,KAAAz7U,MAAqB,IAAI,IACzB,KAAAmrV,yBAA0C,GAC1C,KAAAC,gBAA2C,IAAI,IAC/C,KAAA9tS,UAAwB,GACxB,KAAA+tS,sBAAgC,EAatC7oW,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,gC,oBA6FvC,OAzFS,YAAAylV,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,oBAAoBpyK,YAAY,oDAAoDwkD,WAC3F4tH,OAAO,cAAcpyK,YAAY,2CAA2CwkD,WAC5En+K,GAAGrtC,KAAKwd,OACR47T,OAAO,eAAepyK,YAAY,kDAAkDwkD,WACpFn+K,GAAGrtC,KAAK4oW,kBAGC,YAAAhwV,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,qEAEvB,O,sBAAjB,EAAAgE,KAAiB,GAAMA,KAAKo3V,iBAAiB75U,U,cAA7C,EAAKu9C,UAAY,SACZx5C,MAAMlhB,EAAOoqC,eAAd,OACF,EAAAxqC,KAAa,GAAMA,KAAK+4V,qBAAqBz8U,SAASlc,EAAOoqC,iB,OAC7B,OADhC,EAAKhtB,MAAQ,SACb,EAAAxd,KAAgC,GAAMA,KAAK+4V,qBAAqBp0M,gCAAgC3kJ,KAAKwd,Q,OAArG,EAAKmrV,yBAA2B,SAC7B3oW,KAAKwd,OAASxd,KAAK2oW,2BAEjBrnV,MAAMlhB,EAAO4pC,aACdhqC,KAAK86D,UAAY96D,KAAK86D,UAAUj2D,QAAO,SAAAqC,GAAK,OAAAA,EAAEqV,KAAO,EAAKiB,MAAMwsB,cAChEhqC,KAAK86D,UAAY96D,KAAK86D,UAAUj2D,QAAO,SAAAusD,GACrC,OAAQ,EAAKu3S,yBAAyB9pV,MAAK,SAAAg2D,GAAe,OAAAA,EAAY7qC,aAAeonB,EAAS70C,WAIhGvc,KAAK6oW,sBAAwBzoW,EAAO4pC,WACpChqC,KAAK4oW,gBAAgB/zR,YAAc70E,KAAK2oW,yBAAyB3iW,MAAK,SAAAkB,GAAK,OAAAA,EAAE8iC,YAAc,EAAK6+T,yBAAuBnrW,KACvHsC,KAAK4oW,gBAAgB5+T,WAAahqC,KAAK6oW,sBACvC7oW,KAAK86D,UAAY96D,KAAK86D,UAAUj2D,QAAO,SAAAqC,GAAK,OAAAA,EAAEqV,IAAM,EAAKssV,2B,wBAI/D7oW,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIf,YAAAs+G,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAGzC,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKwpR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,2BAGVj6U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWT,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAK+4V,qBAAqB37U,OAAO7C,c,gCAG9B,YAAAmiD,KAAb,SAAkBwpR,G,qBAAuBlqV,GAAO,W,wDAC9CgE,KAAKC,OAAOE,KAAK,Q,gDAEXH,KAAK4oW,gBAAgB/zR,YAAYt5D,eAAiBvb,KAAKwd,MAAM9f,KAAK6d,cAAlE,QACFvb,KAAK4oW,gBAAgBE,QAAU9oW,KAAKwd,MAAMjB,GAC1Cvc,KAAK4oW,gBAAgBG,mBAAqB,IAAiBvD,YACxDxlW,KAAK6oW,uBAAyB,EACS,GAAM7oW,KAAK+4V,qBAAqBn0M,mBAAmB5kJ,KAAK4oW,kBAD/F,O,cACuC,SACxC5oW,KAAK8iJ,aAAaxiJ,QAAQ,6D,aAGc,SAAMN,KAAK+4V,qBAAqBl0M,mBAAmB7kJ,KAAK4oW,kB,OAAxD,SACxC5oW,KAAK8iJ,aAAaxiJ,QAAQ,8D,wBAGvB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,kB,OAAzC,MAAO,CAAP,EAAO,U,OAEA,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,qCAAsC,CAAEwhC,cAAexqC,KAAKwd,MAAMjB,M,OAA3G,MAAO,CAAP,EAAO,U,4BAKTvc,KAAK8iJ,aAAaviJ,QAAQ,oE,0DAK5BP,KAAK8iJ,aAAahmJ,MAAM,G,iCAjHjBksW,EAA4B,GADxC,uB,uBAamD,mB,OAAA,IAAlB,UAAkB,SACd,mBADc,OACd,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1C,mBAD0C,OAC1C,IAAN,oBAAM,SACsB,mBADtB,OACsB,IAAnB,UAAmB,SACL,mBADK,OACL,IAAf,UAAe,SACJ,mBADI,OACJ,IAAb,UAAa,SACM,mBADN,OACM,IAAhB,UAAgB,YAnBhCA,GAAb,I,sGCjBAttW,EAAOD,QAAU,k8I,ijECqBjB,aAYE,WACUs9V,EACAj2M,EACA4iM,EACA5/U,EACDsxV,EACA4B,EACA9uT,EACA+uT,GAPC,KAAAF,uBACA,KAAAj2M,eACA,KAAA4iM,8BACA,KAAA5/U,SACD,KAAAsxV,mBACA,KAAA4B,kBACA,KAAA9uT,gBACA,KAAA+uT,mBAhBD,KAAA37U,WAAa,IAAI,wBACjB,KAAAE,MAAqB,IAAI,IACzB,KAAAs9C,UAAwB,GACxB,KAAAq+R,qBAA8C,GAepDn5V,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,mB,oBA6GvC,OAzGS,YAAAylV,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,QAAQpyK,YAAY,uCAAuCwkD,WAClE4tH,OAAO,mBAAmBpyK,YAAY,uCAAuCwkD,WAC7E4tH,OAAO,iBAAiBpyK,YAAY,kDAAkDwkD,WACtF4tH,OAAO,oBAAoBpyK,YAAY,oDAAoDwkD,WAC3F4tH,OAAO,cAAcpyK,YAAY,2CAA2CwkD,WAC5E4tH,OAAO,yBAAyBpyK,YAAY,wDAAwDwkD,WACpG4tH,OAAO,eAAepyK,YAAY,+CAA+CwkD,WAAWrvL,QAAQ,YACpGi9S,OAAO,SAASpyK,YAAY,wCAAwC7qI,QAAQ,YAC5EkR,GAAGrtC,KAAKwd,QAGC,YAAA5E,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,8DAGvB,O,sBAAjB,EAAAgE,KAAiB,GAAMA,KAAKo3V,iBAAiB75U,U,cAA7C,EAAKu9C,UAAY,SACZx5C,MAAMlhB,EAAOoqC,eAAd,OACF,EAAAxqC,KAAa,GAAMA,KAAK+4V,qBAAqBz8U,SAASlc,EAAOoqC,iB,cAA7D,EAAKhtB,MAAQ,SACVxd,KAAKwd,MAAM+7U,aAAe,IAAWG,cAArC,OAED,EAAA15V,KAA4B,GAAMA,KAAKi5V,iBAAiB17U,W,OAAxD,EAAK47U,qBAAuB,S,wBAGhCn5V,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIf,YAAAs+G,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAGzC,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKwpR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,2BAGVj6U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWT,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAK+4V,qBAAqB37U,OAAO7C,c,gCAG7B,YAAAo/U,iBAAd,SAA+BC,G,uGAC1BA,IAAQ,IAAWF,cAAnB,MACwC,GAApC15V,KAAKm5V,qBAAqBv+V,OAA1B,OACH,EAAAoF,KAA4B,GAAMA,KAAKi5V,iBAAiB17U,W,OAAxD,EAAK47U,qBAAuB,S,oCAI9Bn5V,KAAKwd,MAAMq8U,sBAAwB,E,mCAI1B,YAAAn9R,KAAb,SAAkBwpR,G,qBAAuBlqV,GAAO,W,0DAC9CgE,KAAKC,OAAOE,KAAK,Q,gDAGVH,KAAKwd,MAAMjB,GAAZ,MAC0B,GAAMvc,KAAK+4V,qBAAqB95V,OAAOe,KAAKwd,Q,cAApE/B,EAAwB,SAE5Bzb,KAAKwd,MAAMjB,GAAKd,EAASc,GAEzBvc,KAAK8iJ,aAAaxiJ,QAAQ,6DAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,kB,OAAzC,MAAO,CAAP,EAAO,U,OAEA,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,2BAA4B,CAAEwhC,cAAexqC,KAAKwd,MAAMjB,M,OAAjG,MAAO,CAAP,EAAO,U,2BAIT,SAAMvc,KAAK+4V,qBAAqBr8U,OAAO1c,KAAKwd,Q,cAA5C,SAEAxd,KAAK8iJ,aAAaxiJ,QAAQ,8DAErB4lV,EAAD,OACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,kB,OAAzC,MAAO,CAAP,EAAO,U,+CAMXhJ,KAAK8iJ,aAAahmJ,MAAM,G,iCAIrB,YAAAi9V,oBAAP,WACM/5V,KAAKwd,MAAM+7U,YAAc,IAAWS,aACnCh6V,KAAKwd,MAAM+7U,YAAc,IAAWU,WACvCj6V,KAAKwd,MAAM0sB,cAAgB,IAAcgwT,SACzCl6V,KAAKg3G,YAAa,GAElBh3G,KAAKg3G,YAAa,GAjIXiyP,EAAe,GAD3B,uB,uBAcmD,mB,OAAA,IAAlB,UAAkB,SACd,mBADc,OACd,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1C,mBAD0C,OAC1C,IAAN,oBAAM,SACsB,mBADtB,OACsB,IAAnB,UAAmB,SACL,mBADK,OACL,IAAf,UAAe,SACJ,mBADI,OACJ,IAAb,UAAa,SACM,mBADN,OACM,IAAhB,UAAgB,YApBhCA,GAAb,I,wFCrBAvtW,EAAOD,QAAU,q+S,g7DCUjB,aAQE,WACUs9V,EACAjzV,EACAg9I,EACDk2M,GAHC,KAAAD,uBACA,KAAAjzV,SACA,KAAAg9I,eACD,KAAAk2M,kBACPh5V,KAAKC,OAAS,aAAWC,UAAU,qB,YAkBvC,OAfe,YAAAf,KAAb,W,qBAAqBnD,GAAO,W,6DACnB,SAAMgE,KAAK+4V,qBAAqBx7U,SACpCpa,MAAK,SAAAsY,GAAY,SAAKs5B,cAAgBt5B,KACtCxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAH5B,MAAO,CAAP,EAAO,kBAOI,YAAAosW,kBAAb,SAA+B1+T,G,qBAAwBxuC,GAAO,W,kDAIrD,OADPgE,KAAKC,OAAO0zC,MAAM,+BAAgCnJ,GAC3C,GAAMxqC,KAAK8F,OAAOkD,gBAAgBhJ,KAAK29I,UAAW,CAACnzG,cAAeA,K,OAAzE,MAAO,CAAP,EAAO,kBAzBT,GADC,W,yDAFU2+T,EAAiB,GAD7B,uB,uBAUmD,mB,OAAA,IAAlB,UAAkB,SAC1B,mBAD0B,OAC1B,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SACK,mBADL,OACK,IAAf,UAAe,YAZ9BA,GAAb,I,0FCVAztW,EAAOD,QAAU,wmB,0lECejB,aASE,WACU4wV,EACA6M,EACAhV,EACAphM,EACDk2M,GALT,WACU,KAAA3M,kBACA,KAAA6M,qBACA,KAAAhV,gBACA,KAAAphM,eACD,KAAAk2M,kBARD,KAAA17U,WAAa,IAAI,wBAajB,KAAA0vO,QAAU,WACd,OAAO,EAAKksG,mBAAmBplV,KAAK,EAAKwJ,aAJ3Ctd,KAAKC,OAAS,aAAWC,UAAU,mB,cAmGvC,OA5FgB,YAAAf,KAAd,W,qBAAsBnD,GAAO,W,0DACV,OAAjB,EAAAgE,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,U,OACN,OADtC,EAAKu9C,UAAY,SACqB,GAAM96D,KAAKk5V,mBAAmBplV,KAAK9T,KAAKsd,a,cAAxE7B,EAAgC,SACtCzb,KAAKsd,WAAWoiU,UAAYjkU,EAASphB,KACrC2F,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,a,YAG7B,YAAA6a,eAAb,W,8GACMt6V,KAAKu6V,oBACDnpS,EAAWpxD,KAAK86D,UAAU90D,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,KAAO,EAAKg+U,sBACxDv6V,KAAKsd,WAAWusB,OAAuB,CAAE2iT,WAAYp7R,EAAS70C,IAC9D,GAAMvc,KAAKb,SAHT,M,OAGF,S,mCAKU,YAAAopU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGI,YAAAoqB,cAAb,SAA2Bh9U,G,qBAAsBxhB,GAAO,W,yDAEnDwhB,EAAMi9U,WACD,GAAMz6V,KAAK8c,OAAOU,EAAMjB,GAAIiB,EAAM9f,OADvC,M,OACF,MAAO,CAAP,EAAO,U,OAGC,SAAMsC,KAAKopW,WAAW5rV,EAAMikQ,SAAUjkQ,EAAM9f,O,OAAnD,MAAO,CAAP,EAAO,kBAIE,YAAAof,OAAb,SAAoBP,EAAY7e,G,qGACvB,SAAMsC,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IACNg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKk5V,mBAAmBp8U,OAAOP,GACzCpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOA,KACnF,EAAKe,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,kEAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAmBI,YAAAssW,WAAb,SAAwB7sV,EAAY7e,G,qGAC3B,SAAMsC,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IACNg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKk5V,mBAAmBp0M,mBAAmBvoI,GACrDpZ,MAAK,WAEJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEu6Q,UAAYllQ,KACxF,EAAKe,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,kEAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAoBI,YAAA2gB,YAAb,SAAyBjd,G,qBAAoBxE,GAAO,W,6DAE3C,OADPgE,KAAKC,OAAO0zC,MAAM,gBAAiBnzC,EAAK8F,UACjC,GAAMtG,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK9C,OACXg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKk5V,mBAAmBz7U,YAAYjd,EAAK+b,IACnDpZ,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,iEAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,U,OASP0D,EAAK8F,UAAY9F,EAAK8F,S,6CAd1B,MAAO,CAAP,EAAO,kBAhGE+iW,EAAe,GAD3B,uB,uBAW2C,mB,OAAA,IAAf,UAAe,SACM,mBADN,OACM,IAAlB,UAAkB,SACV,mBADU,OACV,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACK,mBADL,OACK,IAAf,UAAe,YAd9BA,GAAb,I,4pBCNA,aAKE,WACUtpW,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,8B,MA8BvC,OA3BE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,qBACVoD,KAAM,iBAKR,CACEgF,MAAO,6BACPpI,SAAU,6BACVoD,KAAM,4BAKR,CACEgF,MAAO,0CACPpI,SAAU,uCACVoD,KAAM,yCAhCD4rW,EAA0B,GADtC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,kFCTA5tW,EAAOD,QAAU,uD,uECAjBC,EAAOD,QAAU,4+G,0pBCQjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,mC,MAmCvC,OAhCE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3CtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPhF,KAAM,0BACNpD,SAAU,mCACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,yEACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBm7C,sBAKnC,CACEnlQ,MAAO,YACPhF,KAAM,6BACNpD,SAAU,yCACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,kDACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBm7C,wBAMrC7nQ,KAAK8F,OAASA,GAzCLyjW,EAA+B,GAD3C,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,uFCRA7tW,EAAOD,QAAU,uD,2oBCQjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,uB,MAwBvC,OArBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3CtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPhF,KAAM,gBACNpD,SAAU,kBACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,qDACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBm7C,wBAOrC7nQ,KAAK8F,OAASA,GA9BL0jW,EAAmB,GAD/B,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,oFCRA9tW,EAAOD,QAAU,uD,u6DCKjB,aAME,WACU6lD,GAAA,KAAAA,mBALF,KAAA9jC,MAAkB,IAAI,I,MA2ChC,OAnCS,YAAA5E,SAAP,SAAgB4E,GACdxd,KAAKwd,MAAQA,EACbxd,KAAKypW,kBAGM,YAAAruP,OAAb,W,qBAAuBp/G,GAAO,W,kDACrB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAGF,YAAA6jS,eAAP,WACMzpW,KAAKwd,MAAMksV,qBACb1pW,KAAK2pW,iBAAkB,EACnB3pW,KAAKwd,MAAMosV,aAAe5pW,KAAKwd,MAAMqsV,YACvC7pW,KAAK8pW,uBAAyB,EAE9B9pW,KAAK8pW,uBAAyB,IAGhC9pW,KAAK2pW,iBAAkB,EACvB3pW,KAAK8pW,uBAAyB,KAC9B9pW,KAAKwd,MAAMusV,SAAW,KACtB/pW,KAAKwd,MAAMosV,YAAc,KACzB5pW,KAAKwd,MAAMqsV,YAAc,OAItB,YAAAG,qBAAP,WACsC,IAAhChqW,KAAK8pW,wBACP9pW,KAAKwd,MAAMosV,YAAc,KACzB5pW,KAAKwd,MAAMqsV,YAAc,MAEzB7pW,KAAKwd,MAAMusV,SAAW,MAzCfE,EAAmB,GAD/B,uB,uBAQ6C,mB,OAAA,IAAhB,wCAAgB,YAPjCA,GAAb,K,uGCLAvuW,EAAOD,QAAU,u+L,mFCAjBC,EAAOD,QAAU,0d,qlECiBjB,aAkBE,WACUo/V,EACA3W,EACAphM,EACDs0M,EACC1R,EACA5/U,GALA,KAAA+0V,kBACA,KAAA3W,gBACA,KAAAphM,eACD,KAAAs0M,mBACC,KAAA1R,8BACA,KAAA5/U,SArBF,KAAA0X,MAAkB,IAAI,IACtB,KAAA0sV,gBAA4B,IAAI,IAEhC,KAAApvS,UAAwB,GACxB,KAAAqvS,eAA0B,EAC1B,KAAAC,mBAA8B,EAE9B,KAAAC,YAAsB,EAItB,KAAAtL,eAAoC,GAEpC,KAAA7D,mBAA6B,EAC7B,KAAAoP,kBAA4B,EASlCtqW,KAAKC,OAAS,aAAWC,UAAU,gBAEnCF,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,K,gBAuT9C,OApTS,YAAA0S,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,eAAepyK,YAAY,qDAAqDwkD,WACvF4tH,OAAO,SAASpyK,YAAY,kDAAkDwkD,WAAWrvL,QAAQ,YACjGi9S,OAAO,eAAepyK,YAAY,gDAAgDwkD,WAClF4tH,OAAO,QAAQpyK,YAAY,iDAAiDwkD,WAC5En+K,GAAGrtC,KAAKwd,QAGC,YAAA5E,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,kGAEnCslB,MAAMlhB,EAAO6qC,YAAd,OACFjrC,KAAKirC,WAAa7qC,EAAO6qC,WAUGrtC,MAAxBwC,EAAO+pW,gBACTnqW,KAAKmqW,cAAgBj5V,KAAKC,MAAM/Q,EAAO+pW,gBAEhBvsW,MAArBwC,EAAO4pC,aACThqC,KAAKoqW,mBAAqBl5V,KAAKC,MAAM/Q,EAAO4pC,aAG9C,EAAAhqC,KAAiB,GAAMA,KAAKo3V,iBAAiB75U,W,OAGhC,OAHb,EAAKu9C,UAAY,SAGjB,EAAA96D,KAAa,GAAMA,KAAK66V,gBAAgBv+U,QAAQtc,KAAKirC,a,cAArD,EAAKztB,MAAQ,SACbxd,KAAKkqW,gBAAkBh5V,KAAKC,MAAMD,KAAKE,UAAUpR,KAAKwd,QACnDxd,KAAKmqW,eACNnqW,KAAKkqW,gBAAgBlgU,WAAahqC,KAAKoqW,mBACvC,EAAApqW,KAAuB,GAAMA,KAAK66V,gBAAgBthF,4BAA4Bv5Q,KAAKkqW,mBAFlF,M,OAED,EAAKA,gBAAkB,cAGMtsW,IAAzBoC,KAAKkqW,iBAA0D,OAAzBlqW,KAAKkqW,iBAE7ClqW,KAAKkqW,gBAAkBlqW,KAAKwd,MAC5Bxd,KAAKy+V,YAAcz+V,KAAKwd,MAAMihV,YAC9Bz+V,KAAK++V,eAAiB7tV,KAAKC,MAAMD,KAAKE,UAAUpR,KAAKkqW,gBAAgBjwF,kBACrEj6Q,KAAK86D,UAAY96D,KAAK86D,UAAUj2D,QAAQ,SAAAqC,GAAK,OAAAA,EAAEqV,IAAM,EAAK6tV,wBAG1DpqW,KAAKy+V,YAAcz+V,KAAKkqW,gBAAgBzL,YACxCz+V,KAAK++V,eAAiB/+V,KAAKkqW,gBAAgBjwF,gBAC3Cj6Q,KAAKqqW,YAAa,EACdjqW,EAAO4pC,YAAchqC,KAAKsqW,kBAC5BtqW,KAAK86D,UAAY96D,KAAK86D,UAAUj2D,QAAQ,SAAAqC,GAAK,OAAAA,EAAEqV,IAAM,EAAK6tV,sBAE1DpqW,KAAK86D,UAAY96D,KAAK86D,UAAUj2D,QAAQ,SAAAqC,GAAK,OAAAA,EAAEqV,IAAM,EAAK6tV,uB,oCAKtD9oV,MAAMlhB,EAAOoqC,gBAAmBlpB,MAAMlhB,EAAOo8V,kBAEvDx8V,KAAKC,OAAO0zC,MAAM,0BAA2BvzC,EAAOo8V,gBAEpDx8V,KAAKwd,MAAMgtB,cAAwBpqC,EAAOoqC,cAC1CxqC,KAAKwd,MAAMg+U,aAA6Bp7V,EAAOo8V,eAE/Cx8V,KAAKC,OAAO0zC,MAAM,4BAA6B,IAAa3zC,KAAKwd,MAAMg+U,eAEnEx7V,KAAKwd,MAAMg+U,cAAgB,IAAakB,iBAAmB18V,KAAKwd,MAAMg+U,cAAgB,IAAamB,oBACrG38V,KAAK48V,mBAAkB,I,wBAI3B58V,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIf,YAAAmgW,eAAb,W,qBAA+BjhW,GAAO,W,kDAE7B,OADPgE,KAAKC,OAAO0zC,MAAM,kBACX,GAAM3zC,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAKwd,QACXk7I,YAAW,WAAM,gB,OAHpB,MAAO,CAAP,EAAO,kBAMT,YAAA0kM,qBAAA,WAEE,OADqB,IAAap9V,KAAKwd,MAAMg+U,eAGpC,YAAA6B,aAAb,W,qBAA6BrhW,GAAO,W,wDACf,SAAMgE,KAAK66V,gBAAgBxhF,gBAAgBr5Q,KAAKwd,MAAMjB,GAAGvc,KAAKwd,MAAMgtB,cAAcxqC,KAAKoqW,qB,cACpF,OADlB/M,EAAe,UACb,MACF,GAAMr9V,KAAK8F,OAAOkD,gBAAgB,wBAAyB,CAAEiiC,WAAYoyT,EAAa9gV,GAAI4tV,cAAenqW,KAAKmqW,cAAengU,WAAYhqC,KAAKoqW,sB,cAA9I,SACAzqW,OAAO+7C,SAASygB,S,aAEhBn8D,KAAKk7V,mBAAoB,EACzBl7V,KAAK8iJ,aAAa3iJ,KAAK,uE,mCAId,YAAAi7G,OAAb,SAAoB4wO,G,qBAA2BhwV,GAAO,W,sCAEpD,OADAgE,KAAKC,OAAO0zC,MAAM,UACX,CAAP,EAAO3zC,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACL34M,KAAKwd,MAAMy8P,gBAAgBr/Q,OAAS,GAAKoF,KAAKwd,MAAMg+U,eAAiB,IAAakB,kBAChD,EAE3B,GAAM18V,KAAK08D,KAAKsvR,KAHvB,MADF,M,OAIE,MAAO,CAAP,EAAO,U,0BAGF,SAAMhsV,KAAK08D,KAAKsvR,I,OAAvB,MAAO,CAAP,EAAO,U,mCAMjB,sBAAI,sBAAO,C,IAAX,WACE,OAAQhsV,KAAK66V,gBAAgBz9U,OAAO7C,c,gCAGzB,YAAAmiD,KAAb,SAAkBsvR,G,qBAA2BhwV,GAAO,W,sCAElD,OADAgE,KAAKC,OAAO0zC,MAAM,aACuB/1C,IAArCoC,KAAKkqW,gBAAgBzL,kBAAwD7gW,IAA3BoC,KAAKwd,MAAMihV,aAC/Dz+V,KAAKC,OAAO0zC,MAAM,aAAc3zC,KAAKwd,OAEjCxd,KAAKmqW,eACPnqW,KAAKkqW,gBAAgBzL,YAAcz+V,KAAKy+V,YACxCz+V,KAAKkqW,gBAAgBjwF,gBAAkBj6Q,KAAK++V,eAC5C/+V,KAAKkqW,gBAAgBlgU,WAAahqC,KAAKgqC,WAAWztB,GAC9Cvc,KAAKqqW,YACPrqW,KAAKkqW,gBAAgB3tV,GAAKvc,KAAKirC,WACxB,CAAP,EAAOjrC,KAAK2+V,+BACV,WAAM,SAAK9D,gBAAgBh2M,mBAAmB,EAAKqlN,mBACnD,oEACAle,KAGG,CAAP,EAAOhsV,KAAK2+V,+BACV,WAAM,SAAK9D,gBAAgBj2M,mBAAmB,EAAKslN,mBACnD,mEACAle,UAIuBpuV,IAAlBoC,KAAKwd,MAAMjB,GACX,CAAP,EAAOvc,KAAK2+V,+BACV,WAAM,SAAK9D,gBAAgBn+U,OAAO,EAAKc,SACvC,oEACAwuU,IAIK,CAAP,EAAOhsV,KAAK2+V,+BACV,WAAM,SAAK9D,gBAAgB57V,OAAO,EAAKue,SACvC,mEACAwuU,K,WAOM,YAAA2S,8BAAd,SAA4CntC,EAAiCotC,EAAwB5S,G,sGAKnF,O,sBAAA,GAAMx6B,K,OAWpB,OAXIqtC,EAAU,SAEV5zT,EADA4zT,EACaA,EAAStiV,GAETvc,KAAKwd,MAAMjB,GAExBytB,EADAhqC,KAAKgqC,WACQhqC,KAAKoqW,mBAEL,EACjBpqW,KAAK8iJ,aAAaxiJ,QAAQs+V,GAErB5S,EAGI,CAAP,EAAOhsV,KAAK8F,OAAOkD,gBAAgB,wBAAyB,CAAEiiC,WAAYA,EAAak/T,cAAenqW,KAAKmqW,cAAengU,WAAWA,KAF9H,CAAP,EAAOhqC,KAAK8F,OAAOkD,gBAAgB,c,yBAKrChJ,KAAK8iJ,aAAahmJ,MAAM,G,+BAUrB,YAAA8/V,kBAAP,SAAyBkC,GACvB9+V,KAAKC,OAAOE,KAAK,oBACjB,IAAI4+V,EAAiC,IAAI,IACzCA,EAAexiV,GAAK,EACpBwiV,EAAezuV,MAAQtQ,KAAKwd,MAAMy8P,gBAAgBr/Q,OAClDmkW,EAAeD,SAAWA,EAC1BC,EAAel5O,OAAS,GACxB7lH,KAAKwd,MAAMy8P,gBAAgB/+Q,KAAK6jW,GAGhC/+V,KAAK01U,qBAAqBhD,UAAUqsB,EAAgB/+V,KAAKuqW,sBAGpD,YAAAvL,qBAAP,SAA4Br1V,GAC1B,IAAIo1V,EAAiB/+V,KAAKwd,MAAMy8P,gBAAgBtwQ,GAEhD3J,KAAK01U,qBAAqB/C,aAAaosB,GAEvC/+V,KAAKwd,MAAMy8P,gBAAgB9iQ,OAAOxN,EAAO,IAGpC,YAAA6+U,QAAP,SAAe1kD,EAAatjS,GAC1BR,KAAKC,OAAO0zC,MAAM,WAClB,IAAIx3B,EAAa2nR,EAAOtmS,OAAO+wO,MAAM,GAErC,GADoB,IAAoBp9N,MAAM,UAAW,QACvC8P,QAAQ9E,GAAO,CAC/B,IAAI,EAAqB,IAAIm/B,WAC7B,EAAOK,cAAcx/B,GACrB,EAAOjf,OAAS,WACd,IAAI8vV,EAAkB,EAAOj9U,OAC7BvP,EAAKkmJ,eAAiBsmM,EACtBxsV,EAAKqlH,OAAS1pG,EAAKze,KACnB8C,EAAKy+V,kBAAoB1lT,IAAI0B,gBAAgB9+B,SAI/Cnc,KAAK8iJ,aAAahmJ,MAAM,oEAKrB,YAAAqwV,UAAP,SAAiB3sV,GACfA,EAAKqlH,OAAS,KACdrlH,EAAKkmJ,eAAiB,KACtBlmJ,EAAKy+V,kBAAoB,MAGpB,YAAAC,8BAAP,WACEl/V,KAAKC,OAAO0zC,MAAM,iCAClB,IAAI5jC,EAAqB,GAEzB,OADA/P,KAAKC,OAAO0zC,MAAM,wDAAyD3zC,KAAKwd,MAAMg+U,eAC7Ex7V,KAAKwd,MAAMg+U,cAClB,KAAK,IAAaC,iBAClB,KAAK,IAAa6B,sBAClB,KAAK,IAAaE,6BAClB,KAAK,IAAa9B,mBAClB,KAAK,IAAa6B,wBAClB,KAAK,IAAa4B,OAChBn/V,KAAKC,OAAO0zC,MAAM,oBAClB5jC,EAASlV,OAAO0Z,KAAK,KAClB1P,QAAO,SAAA3F,GAAO,WAAYA,KAAS,IAAYw+V,YAAc,IAAYx+V,KAAS,IAAYkgW,WAC9Fz6V,KAAI,SAAAzF,GAAO,OAAGqd,GAAI,IAAYrd,GAAMxB,KAAMwB,MAC7C,MACF,KAAK,IAAaw9V,gBAChB18V,KAAKC,OAAO0zC,MAAM,gCAClB5jC,EAASlV,OAAO0Z,KAAK,KAClB1P,QAAO,SAAA3F,GAAO,WAAYA,KAAS,IAAYmgW,aAAe,IAAYngW,KAAS,IAAY2vF,SAAW,IAAY3vF,KAAS,IAAYogW,YAC3I36V,KAAI,SAAAzF,GAAO,OAAGqd,GAAI,IAAYrd,GAAMxB,KAAMwB,MAC7C,MACF,KAAK,IAAay9V,mBAChB38V,KAAKC,OAAO0zC,MAAM,mCAClB5jC,EAASlV,OAAO0Z,KAAK,KAClB1P,QAAO,SAAA3F,GAAO,WAAYA,KAAS,IAAYw+V,YAAc,IAAYx+V,KAAS,IAAYkgW,SAAW,IAAYlgW,KAAS,IAAY2vF,WAC1IlqF,KAAI,SAAAzF,GAAO,OAAGqd,GAAI,IAAYrd,GAAMxB,KAAMwB,MAMjD,OADAc,KAAKC,OAAO0zC,MAAM,wCAAyC5jC,GACpDA,GArTEy6V,EAAY,GADxB,uB,uBAoB2C,mB,OAAA,IAAf,UAAe,SACJ,mBADI,OACJ,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACU,mBADV,OACU,IAAnB,UAAmB,SACoB,mBADpB,OACoB,IAA3B,8DAA2B,SAC1C,mBAD0C,OAC1C,IAAN,oBAAM,YAxBbA,GAAb,I,+FCjBA9uW,EAAOD,QAAU,qvf,6jECiBjB,aAWE,WACUyoV,EACA2W,EACA3B,EACD7M,EACCvpM,EACD04M,GANT,WACU,KAAAtX,gBACA,KAAA2W,kBACA,KAAA3B,qBACD,KAAA7M,kBACC,KAAAvpM,eACD,KAAA04M,eAZD,KAAAl+U,WAAoC,IAAI,wBAExC,KAAAw9C,UAAwB,GAExB,KAAA1lB,YAA2B,IAAI,IA6D/B,KAAA43M,QAAU,WAEhB,OAAO,EAAK6tG,gBAAgB/mV,KAAK,EAAK02B,cAAe,EAAKltB,aArD1Dtd,KAAKC,OAAS,aAAWC,UAAU,gB,gBAuFvC,OAnFgB,YAAA0Y,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,iEAC1CgE,KAAKC,OAAO0zC,MAAM,+BAAgCvzC,EAASoqC,eACtDlpB,MAAMlhB,EAAOoqC,eAAd,OACFxqC,KAAKwqC,eAAiBpqC,EAAOoqC,cAC7B,EAAAxqC,KAAmB,GAAMA,KAAKk5V,mBAAmB58U,QAAQtc,KAAKwqC,iB,OAE7C,OAFjB,EAAK4K,YAAc,SACnBp1C,KAAKu6V,mBAAqBv6V,KAAKo1C,YAAYpL,WAC3C,EAAAhqC,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,U,OAA5C,EAAKu9C,UAAY,SACjB96D,KAAKs6V,iB,mCAIK,YAAAn7V,KAAd,W,qBAAsBnD,GAAO,W,4CAUhB,YAAAs+V,eAAb,W,8GACMt6V,KAAKu6V,oBACDnpS,EAAWpxD,KAAK86D,UAAU90D,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,KAAO,EAAKg+U,sBACxDv6V,KAAKsd,WAAWusB,OAAuB,CAAE2iT,WAAYp7R,EAAS70C,IAC9D,GAAMvc,KAAKukV,aAHT,M,OAGF,S,mCAKS,YAAAA,SAAb,W,qBAAyBvoV,GAAO,W,+DACb,OAAjB,EAAAgE,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,U,OAErC,OAFP,EAAKu9C,UAAY,SACjB96D,KAAKC,OAAOE,KAAK,YACV,GAAMH,KAAK66V,gBAAgB/mV,KAAK9T,KAAKwqC,cAAexqC,KAAKsd,YAC7Dna,MAAK,SAACsY,GACL,EAAK6B,WAAWmiU,aAAehkU,EAASgkU,aACxC,EAAKniU,WAAWoiU,UAAYjkU,EAASphB,QAEtC4R,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAQK,YAAAtzT,OAAd,SAAqBP,EAAY7e,EAAc+8V,EAAqBzwT,G,qBAAqBhuC,GAAO,W,6DACvF,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IACNg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,eAAgBwhT,EAA1B,MACK,GAAMz6V,KAAK66V,gBAAgB/9U,OAAOP,GACtCpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOA,KACnF,EAAKe,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,gEAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,cAUE2e,EAASw9B,cAAiBwhT,EAA3B,MACD,GAAMz6V,KAAK66V,gBAAgB/1M,mBAAmBvoI,EAAGytB,GACrD7mC,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOA,KACnF,EAAKe,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,gEAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,mCAhBX,MAAO,CAAP,EAAO,kBA1EC,GAAT,W,6DAFU2tW,EAAY,GADxB,uB,uBAauC,mB,OAAA,IAAb,kCAAa,SACI,mBADJ,OACI,IAAf,UAAe,SACM,mBADN,OACM,IAAlB,UAAkB,SACH,mBADG,OACH,IAAnB,UAAmB,SACT,mBADS,OACT,IAAZ,UAAY,SACD,mBADC,OACD,IAAZ,UAAY,YAjBxBA,GAAb,I,mqBCRA,aAKE,WACU1qW,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,uB,MA8CvC,OA3CE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,kBACVoD,KAAM,aAGR,CACEgF,MAAO,yCACPpI,SAAU,0BACVoD,KAAM,yBAGR,CACEgF,MAAO,SACPhF,KAAM,iCACNpD,SAAU,4BACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,wDACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBm7C,sBAKnC,CACEnlQ,MAAO,CAAC,0BACRhF,KAAM,kBACNpD,SAAU,0BACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,mDACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBm7C,yBA9C5BqvF,EAAmB,GAD/B,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,yFCTAx7V,EAAOD,QAAU,uD,8ECAjBC,EAAOD,QAAU,85G,6nBCOjB,aAME,WACUqK,EACAg9I,GADA,KAAAh9I,SACA,KAAAg9I,eAER9iJ,KAAKC,OAAS,aAAWC,UAAU,yBACnCF,KAAKsgW,QAAU,gB,QAkBnB,OAdS,YAAA1nV,SAAP,SAAgBxY,GACdJ,KAAKC,OAAOE,KAAK,+BAAgCC,EAAOoqC,eACnDlpB,MAAMlhB,EAAOoqC,eAGhBxqC,KAAK8F,OAAOyC,SAAS,iBAFrBvI,KAAKwqC,eAAiBpqC,EAAOoqC,eAM1B,YAAA+1T,eAAP,SAAsBjjW,GACpB0C,KAAKC,OAAOE,KAAK,6BAA8B7C,GAC/C0C,KAAK8F,OAAOyC,SAAS,UAAUjL,IA1BtBkjW,EAAqB,GADjC,uB,uBAQyB,mB,OAAA,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,YARzBA,GAAb,I,wFCPA9kW,EAAOD,QAAU,4pK,kkECwBjB,aASE,WACUqlW,EACAx/S,EACA4iS,EACAphM,EACAh9I,GALV,WACU,KAAAg7V,eACA,KAAAx/S,mBACA,KAAA4iS,gBACA,KAAAphM,eACA,KAAAh9I,SATF,KAAA0X,MAAe,IAAI,IACnB,KAAAF,WAAoC,IAAI,wBA2CxC,KAAA0vO,QAAU,WAGhB,OAAO,EAAK8zG,aAAahtV,KAAK,EAAKq3B,mBAAoB,EAAK7tB,aApC5Dtd,KAAKC,OAAS,aAAWC,UAAU,a,cA2HvC,OAvHgB,YAAA0Y,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,kCAC1CgE,KAAKC,OAAO0zC,MAAM,YACbryB,MAAMlhB,EAAO+qC,sBAChBnrC,KAAKmrC,oBAAsB/qC,EAAO+qC,oB,WAKxB,YAAAhsC,KAAd,W,qBAAsBnD,GAAO,W,2BAC3B,MAAO,CAAP,EAAOgE,KAAKukV,mBAGA,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,oEAC3BgE,KAAKmrC,mBACA,GAAMnrC,KAAK8gW,aAAahtV,KAAK9T,KAAKmrC,mBAAoBnrC,KAAKsd,YAC/Dna,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,OAP1B,M,OACF,MAAO,CAAP,EAAO,U,yBAWG,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBASK,YAAA/hG,KAAd,SAAmB7tO,G,qBAAcxE,GAAO,W,+DAE/B,OADH60V,EAAe3/U,KAAKC,MAAMD,KAAKE,UAAU5Q,IACtC,GAAMR,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MAEK,GAAMj5C,KAAK8gW,aAAapkV,OAAOlc,GACnC2C,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,+BAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,U,OASPjC,OAAOgI,OAAOrC,EAAMqwV,G,6CAfxB,MAAO,CAAP,EAAO,kBAoBK,YAAA5xV,OAAd,W,qBAAwBjD,GAAO,W,+DAmBtB,OAlBHwE,EAAc,IAAI,KACjB2qC,mBAAqBnrC,KAAKmrC,mBAK3BnrC,KAAKsd,WAAWusB,OAAOq3T,OAAS,IAClC1gW,EAAK2gW,MAAenhW,KAAKsd,WAAWusB,OAAOq3T,OAGzClhW,KAAKsd,WAAWusB,OAAOshB,kBAAoB,IAC7C3qD,EAAK4gW,iBAAqCphW,KAAKsd,WAAWusB,OAAOshB,kBAG/DnrD,KAAKsd,WAAWusB,OAAOw3T,UAAY,IACrC7gW,EAAK8gW,SAAqBthW,KAAKsd,WAAWusB,OAAOw3T,UAG5C,GAAMrhW,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MAEK,GAAMj5C,KAAK8gW,aAAa7hW,OAAOuB,GACnC2C,MAAK,SAAOqa,GAAY,qC,kCAKvBxd,KAAKsd,WAAWoiU,UAAU57U,QAAQ0Z,GAClCxd,KAAKsd,WAAWmiU,eAChBz/U,KAAK8iJ,aAAaxiJ,QAAQ,4B,aAG3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAZ5B,MAAO,CAAP,EAAO,U,mCANX,MAAO,CAAP,EAAO,kBAwBK,YAAAggB,OAAd,SAAqBP,EAAY7e,G,qBAAe1B,GAAO,W,6DAC9C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IACNg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK8gW,aAAahkV,OAAOP,GACnCpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOA,KACnF,EAAKe,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,kEAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAzHE4tW,EAAS,GADrB,uB,uBAWqC,mB,OAAA,IAAZ,UAAY,SACQ,mBADR,OACQ,IAAhB,wCAAgB,SACN,mBADM,OACN,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACZ,mBADY,OACZ,IAAN,oBAAM,YAdbA,GAAb,I,yoBCfA,aAKE,WACU3qW,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,wB,MAiBvC,OAdE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPpI,SAAU,eACVoD,KAAM,iBAjBDitW,EAAoB,GADhC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,qECTAjvW,EAAOD,QAAU,uD,0DCAjBC,EAAOD,QAAU,kmI,87DCUjB,aAQE,WACU6lD,EACAwhG,EACA4iM,EACAob,GAHA,KAAAx/S,mBACA,KAAAwhG,eACA,KAAA4iM,8BACA,KAAAob,eAVF,KAAAtjV,MAAe,IAAI,IAYzBxd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,c,YA8BvC,OA3BgB,YAAA0Y,SAAd,SAAuB4E,G,qBAAexhB,GAAO,W,kCAC3CgE,KAAKC,OAAO0zC,MAAM,YAClB3zC,KAAKwd,MAAQA,EACbxd,KAAK2lV,2B,WAGP,YAAAA,yBAAA,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,kBAAkBpyK,YAAY,qCAAqCwkD,WAAWrvL,QAAQ,aAC7Fi9S,OAAO,mBAAmBpyK,YAAY,4CAA4CwkD,WAAWrvL,QAAQ,uBACrGkR,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,W,qBAAuBp/G,GAAO,W,sCAC5B,MAAO,CAAP,EAAOgE,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKF,YAAAA,KAAb,W,qBAAqB1gE,GAAO,W,kDACnB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBA5CEglS,EAAU,GADtB,uB,uBAU6C,mB,OAAA,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC9B,mBAD8B,OAC9B,IAAZ,UAAY,YAZzBA,GAAb,K,4ECVAlvW,EAAOD,QAAU,2vE,2ECAjB,8E,mECAAC,EAAOD,QAAU,0S,+oBCSjB,aAKE,WACUsE,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,mC,MAwBvC,OArBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,wBACVoD,KAAM,sBAKR,CACEgF,MAAO,6BACPpI,SAAU,2CACVoD,KAAM,yCACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,8CA1BfwqW,EAA+B,GAD3C,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,iFCTAnvW,EAAOD,QAAU,uD,+oBCSjB,aAKE,WACUsE,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,gC,MAwBvC,OArBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,0BACVoD,KAAM,0BAKR,CACEgF,MAAO,kCACPpI,SAAU,8CACVoD,KAAM,4CACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,iEA1BfyqW,EAA4B,GADxC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,oFCTApvW,EAAOD,QAAU,uD,g5DCIjB,aAKE,aACEuE,KAAKC,OAAS,aAAWC,UAAU,uBAYvC,OATgB,YAAA0Y,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,kCAC1CgE,KAAKC,OAAOE,KAAK,aAEZmhB,MAAMlhB,EAAOoqC,iBAChBxqC,KAAKwqC,eAAiBpqC,EAAOoqC,e,WAbtBugU,EAAmB,GAD/B,a,2BACYA,GAAb,I,sFCJArvW,EAAOD,QAAU,wW,qpBCSjB,aAKE,WACUsE,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,mC,MAwBvC,OArBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,6BACVoD,KAAM,6BAKR,CACEgF,MAAO,wCACPpI,SAAU,4BACVoD,KAAM,0BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,qCA1Bf2qW,EAA+B,GAD3C,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,uFCTAtvW,EAAOD,QAAU,uD,s5DCIjB,aAKE,aACEuE,KAAKC,OAAS,aAAWC,UAAU,uBAYvC,OATgB,YAAA0Y,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,kCAC1CgE,KAAKC,OAAOE,KAAK,aAEZmhB,MAAMlhB,EAAO2d,mBAChB/d,KAAK+d,iBAAmB3d,EAAO2d,iB,WAbxBktV,EAAsB,GADlC,a,2BACYA,GAAb,I,yFCJAvvW,EAAOD,QAAU,0X,8/DCQjB,aAmBE,WACUqK,EACAolW,EACApoN,EACAohM,GAJV,WACU,KAAAp+U,SACA,KAAAolW,2BACA,KAAApoN,eACA,KAAAohM,gBArBF,KAAA9jV,OAAc,GAId,KAAAkd,WAAoC,IAAI,wBAGxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAKkrW,yBAAyBp3V,KAAK9T,KAAKsd,YAClDna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAcPkD,KAAKC,OAAS,aAAWC,UAAU,yB,YAwCvC,OAtCgB,YAAA0Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACpEgE,KAAKI,OAASA,E,WAEF,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,yDACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE9Bje,KAAKkrW,yBAAyB9tV,OAAO87B,iBAAmBl5C,KAAKie,UAEtD,GAAMje,KAAKukV,a,OAAlB,MAAO,CAAP,EAAO,U,yBAIG,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBASK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAAiY,gBAAd,SAA8B9rU,G,kGAET,O,sBAAA,GAAMvc,KAAKkrW,yBAAyBn/S,2BAA2BxvC,I,OAChF,OAAkB,OADd+rU,EAAa,UAER,CAAP,EAAOtoV,KAAK8F,OAAOyC,SAAS+/U,I,+BAG9BtoV,KAAK8iJ,aAAahmJ,MAAM,G,+BA9DjBquW,EAAqB,GADjC,a,uBAqByB,mB,OAAA,IAAN,oBAAM,SACoC,mBADpC,OACoC,IAAxB,UAAwB,SACxB,mBADwB,OACxB,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,YAvB3BA,GAAb,I,0FCRAzvW,EAAOD,QAAU,6/F,85DCOjB,aAME,WACU6lD,EACAwhG,EACAsoN,GAFA,KAAA9pT,mBACA,KAAAwhG,eACA,KAAAsoN,gBAERprW,KAAKC,OAAS,aAAWC,UAAU,sB,UAkBvC,OAde,YAAA0Y,SAAb,SAAsB4E,G,qBAAgDxhB,GAAO,W,kCAC3EgE,KAAKuvJ,QAAU/xI,EAAM+xI,QACrBvvJ,KAAKie,UAAYT,EAAMS,U,WAGZ,YAAAwoP,yBAAb,W,qBAAyCzqQ,GAAO,W,6DACvC,SAAMgE,KAAKorW,cAAc3kG,yBAAyBzmQ,KAAKie,WAC3D9a,MAAK,WACJ,EAAKm+C,iBAAiBskB,S,OAF1B,MAAO,CAAP,EAAO,kBArBEylS,EAAkB,GAD9B,uB,uBAQ6C,mB,OAAA,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,UAAa,YAT3BA,GAAb,K,qFCPA3vW,EAAOD,QAAU,ykB,8hECcjB,aAIE,WACUqK,EACAo+U,EACAonB,EACAxoN,EACAzoI,GAJA,KAAAvU,SACA,KAAAo+U,gBACA,KAAAonB,qBACA,KAAAxoN,eACA,KAAAzoI,KAERra,KAAKC,OAAS,aAAWC,UAAU,wB,cA2BvC,OAxBgB,YAAAjB,OAAd,W,qBAAwBjD,GAAO,W,+DAEtB,OADHwE,EAAoB,IAAI,IACrB,GAAMR,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MAEK,GAAMj5C,KAAKsrW,mBAAmBzoW,OAAOrC,GACzC2C,MAAK,gD,kCAEJnD,KAAKqa,GAAGb,QAAQ,IAAI,KAEpBxZ,KAAK8iJ,aAAaxiJ,QAAQ,4B,aAG3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,U,mCANX,MAAO,CAAP,EAAO,kBAhBEyuW,EAAoB,GADhC,uB,uBAMyB,mB,OAAA,IAAN,oBAAM,SACc,mBADd,OACc,IAAb,kCAAa,SACU,mBADV,OACU,IAAlB,UAAkB,SACZ,mBADY,OACZ,IAAZ,UAAY,SACP,mBADO,OACP,IAAf,sCAAe,YATlBA,GAAb,I,sFCdA7vW,EAAOD,QAAU,oW,w+DCkBjB,aAkBE,WACUm/D,EACA0wS,EACAF,EACAtoN,GAJV,WACU,KAAAloF,QACA,KAAA0wS,qBACA,KAAAF,gBACA,KAAAtoN,eAlBF,KAAA1iJ,OAAc,GAQd,KAAAkd,WAAoC,IAAI,wBAIxC,KAAAivU,UAAoB,EAcpB,KAAAv/F,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAKorW,cAAc3zM,aAAaz3J,KAAKsd,YAC/Cna,MAAK,SAACsY,GAGL,OAFA,EAAK+vV,cAAgB,EACrB/vV,EAASphB,KAAK8M,SAAQ,SAAAD,GAAK,SAAKskW,eAAiBtkW,EAAEukW,UAC5ChwV,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBARPkD,KAAKC,OAAS,aAAWC,UAAU,sBACnCF,KAAKwrW,cAAgB,EAErBxrW,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,cAwE5B,OAxDgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,+DAEhE0vW,EAAQ,IAAIryV,KAChBrZ,KAAKsd,WAAWusB,OAAuB,CAAE+wO,QAAS8wF,GAE9C1rW,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAIJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,8FAIpBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OAEFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE1Bje,KAAKie,WAEPje,KAAKsrW,mBAAmBluV,OAAO87B,iBAAmBl5C,KAAKie,UACvDje,KAAKorW,cAAchuV,OAAO87B,iBAAmBl5C,KAAKie,UAElDje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3D,EAAAje,KAAa,GAAMA,KAAKsrW,mBAAmB1zM,qBAPzC,O,OAUK,OAHP,EAAK+zM,MAAQ,SAEb3rW,KAAKusV,UAAW,EACT,GAAMvsV,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,4CAKXvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAynV,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBA7FT,GADC,W,sDASD,GADC,W,gBACwC,mB,OAAA,IAArB,kDAAqB,W,iCAZ9Bw7B,EAAkB,GAD9B,uB,uBAoB8B,mB,OAAA,IAAZ,UAAY,SACmB,mBADnB,OACmB,IAAlB,UAAkB,SACV,mBADU,OACV,IAAb,UAAa,SACF,mBADE,OACF,IAAZ,UAAY,YAtBzBA,GAAb,I,sFClBAlwW,EAAOD,QAAU,2rG,g/DCoBjB,aAgBE,WACUm/D,EACA0wS,EACAxoN,GAHV,WACU,KAAAloF,QACA,KAAA0wS,qBACA,KAAAxoN,eAfF,KAAA1iJ,OAAc,GAOd,KAAAkd,WAAoC,IAAI,wBAGxC,KAAAivU,UAAoB,EAapB,KAAAv/F,QAAU,6BAAUhxP,GAAO,W,6DAG1B,OAFPgE,KAAKC,OAAO0zC,MAAM,cAClB,YAAyB3zC,KAAKsd,WAAWusB,QAClC,GAAM7pC,KAAKsrW,mBAAmB5zM,iBAAiB13J,KAAKsd,YACxDna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBATPkD,KAAKC,OAAS,aAAWC,UAAU,0BAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,YAoE5B,OApDgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,iEAEhE0vW,EAAQ,IAAIryV,KACZiF,EAAY,IAAIjF,KACpBrZ,KAAKsd,WAAWusB,OAAuB,CAAE8wO,UAAW,IAAIthQ,KAAKiF,EAAU6zH,QAAQ7zH,EAAUqW,UAAY,KAAMimP,QAAS8wF,GAGhH1rW,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAKJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,sEACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OAEFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE1Bje,KAAKie,WAEPje,KAAKsrW,mBAAmBluV,OAAO87B,iBAAmBl5C,KAAKie,UAEvDje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3D,EAAAje,KAAa,GAAMA,KAAKsrW,mBAAmB1zM,qBANzC,O,OASK,OAHP,EAAK+zM,MAAQ,SAEb3rW,KAAKusV,UAAW,EACT,GAAMvsV,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yBAKC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAzET,GADC,W,sDAQD,GADC,W,gBACwC,mB,OAAA,IAArB,kDAAqB,W,iCAX9B+uW,EAAsB,GADlC,uB,uBAkB8B,mB,OAAA,IAAZ,UAAY,SACmB,mBADnB,OACmB,IAAlB,UAAkB,SACZ,mBADY,OACZ,IAAZ,UAAY,YAnBzBA,GAAb,I,0FCpBAnwW,EAAOD,QAAU,m3I,ujECcjB,aAUE,WACUyoV,EACAp+U,EACAolW,EACApoN,GAHA,KAAAohM,gBACA,KAAAp+U,SACA,KAAAolW,2BACA,KAAApoN,eATF,KAAAxlI,WAAa,IAAI,wBAEjB,KAAAwuV,wBAAmC,EACnC,KAAAtuV,MAA4B,IAAI,IAQtCxd,KAAKC,OAAS,aAAWC,UAAU,oB,YA0CvC,OAxCgB,YAAA0Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACpEgE,KAAKC,OAAO0zC,MAAM,Y,WAGN,YAAA10C,OAAd,SAAqB8sW,G,qBAAuB/vW,GAAO,W,6DAC1C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOuuV,IACNrzM,YAAW,SAAOj9I,GAA2B,qC,6DACzCA,EAASw9B,aAAV,Y,8CAGIj5C,KAAKsd,WAAWmiU,aAAe,KACjCz/U,KAAK8iJ,aAAaviJ,QAAQ,+C,OADxB,M,cAGoC,GAAhCP,KAAKsd,WAAWmiU,aAAhB,OACNz/U,KAAK8iJ,aAAaviJ,QAAQ,wD,cAYb,OARbP,KAAKwd,MAAMsuV,wBAA0B9rW,KAAK8rW,wBAC1C9rW,KAAKwd,MAAMwuV,kBAAoBhsW,KAAKsd,WAAWusB,OAAOoiU,cACnDjsW,KAAK8rW,yBAA0B,IAA+B,YACjE9rW,KAAKwd,MAAMwuV,kBAAoBhsW,KAAK8rW,yBACpC9rW,KAAKwd,MAAMc,UAAYte,KAAKsd,WAAWusB,OAAO8wO,UAC9C36Q,KAAKwd,MAAMe,QAAUve,KAAKsd,WAAWusB,OAAO+wO,QAC5C56Q,KAAKwd,MAAMuuV,aAAe/rW,KAAKsd,WAAWmiU,aAC1Cz/U,KAAKwd,MAAMq5U,OAAS72V,KAAKsd,WAAWusB,OAAOqiU,OAC3C,EAAAlsW,KAAa,GAAMA,KAAKkrW,yBAAyBjsW,OAAOe,KAAKwd,Q,OAEtD,OAFP,EAAKA,MAAQ,SACbxd,KAAK8iJ,aAAaxiJ,QAAQ,4BACnB,GAAMN,KAAK8F,OAAOkD,gBAAgB,6B,OAAzC,MAAO,CAAP,EAAO,U,4CAKThJ,KAAK8iJ,aAAahmJ,MAAM,G,yCA9B9B,MAAO,CAAP,EAAO,kBAlBT,GADC,W,0DAGD,GADC,W,uEANUqvW,EAAgB,GAD5B,uB,uBAYuC,mB,OAAA,IAAb,kCAAa,SACd,mBADc,OACd,IAAN,oBAAM,SACqC,mBADrC,OACqC,IAAxB,UAAwB,SACzB,mBADyB,OACzB,IAAZ,UAAY,YAdzBA,GAAb,I,kFCdAzwW,EAAOD,QAAU,klB,2nBCQjB,aAKE,WACUsE,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,yB,MAmEvC,OAhEE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,CAAC,IACRpI,SAAU,gBACViW,KAAK,EACL7S,KAAM,cACN4J,MAAOtH,KAAKD,KAAKM,GAAG,0CAStB,CACEqC,MAAO,WACPpI,SAAU,yBACViW,KAAK,EACL7S,KAAM,uBACN4J,MAAOtH,KAAKD,KAAKM,GAAG,4CAGtB,CACEqC,MAAO,WACPpI,SAAU,yBACVoD,KAAM,uBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,4CAEtB,CACEqC,MAAO,eACPpI,SAAU,6BACVoD,KAAM,2BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,gDAEtB,CACEqC,MAAO,SACPpI,SAAU,6BACVoD,KAAM,2BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,qEAGtB,CACEqC,MAAO,gBACPpI,SAAU,kBACVoD,KAAM,gBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,0CAGtB,CACEqC,MAAO,kBACPpI,SAAU,oBACVoD,KAAM,kBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,+CAtEf+rW,EAAqB,GADjC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,uECRA1wW,EAAOD,QAAU,sJ,ggECsBjB,aAiBE,WACUm/D,EACA0wS,EACAxoN,EACAzoI,GAJV,WACU,KAAAugD,QACA,KAAA0wS,qBACA,KAAAxoN,eACA,KAAAzoI,KAjBF,KAAAja,OAAc,GAKd,KAAAkd,WAAa,IAAI,wBAIjB,KAAAivU,UAAoB,EAEpB,KAAAx3L,cAA8B,GAiB9B,KAAAi4F,QAAU,6BAAUhxP,GAAO,W,6DAG1B,OAFPgE,KAAKC,OAAO0zC,MAAM,cAClB,YAAyB3zC,KAAKsd,WAAWusB,QAClC,GAAM7pC,KAAKsrW,mBAAmB/zM,WAAWv3J,KAAKsd,YAClDna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAXPkD,KAAKC,OAAS,aAAWC,UAAU,cAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MAExB7Q,KAAK+0J,cAAc75J,KAAK8E,KAAKqa,GAAGtF,UAAU,IAAyB/U,KAAKb,KAAKA,KAAKa,Q,YAoFtF,OApEgB,YAAA4Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,yDAEpEgE,KAAKC,OAAO0zC,MAAM,YAMd3zC,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAKJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,kGAIpBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OAEFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE1Bje,KAAKie,WAEHytV,EAAQ,IAAIryV,KACZiF,EAAY,IAAIjF,KAEpBrZ,KAAKsd,WAAWusB,OAAuB,CAAE8wO,UAAW,IAAIthQ,KAAKiF,EAAU6zH,QAAQ7zH,EAAUqW,UAAY,KAAMimP,QAAS8wF,GAEpH1rW,KAAKsrW,mBAAmBluV,OAAO87B,iBAAmBl5C,KAAKie,UAEvDje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3D,EAAAje,KAAa,GAAMA,KAAKsrW,mBAAmB1zM,qBAXzC,O,OAeK,OAJP,EAAK+zM,MAAQ,SAEb3rW,KAAKusV,UAAW,EAET,GAAMvsV,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,4CAKXvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAynV,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAvGT,GADC,W,sDAMD,GADC,W,0DARUi8B,EAAU,GADtB,uB,uBAmB8B,mB,OAAA,IAAZ,UAAY,SACmB,mBADnB,OACmB,IAAlB,UAAkB,SACZ,mBADY,OACZ,IAAZ,UAAY,SACP,mBADO,OACP,IAAf,sCAAe,YArBlBA,GAAb,I,6ECtBA3wW,EAAOD,QAAU,o4J,+6DCUjB,aAOE,WACU6lD,EACAokS,EACA4lB,GAFA,KAAAhqT,mBACA,KAAAokS,8BACA,KAAA4lB,qBAGRtrW,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,e,UAiCvC,OA7Be,YAAAf,KAAb,W,qBAAqBnD,GAAO,W,6DAC1B,SAAMgE,KAAKsrW,mBAAmB1zM,mBAAmBz0J,MAAK,SAAAwoW,GAAS,SAAKA,MAAQA,M,cAA5E,S,YAGK,YAAA/yV,SAAP,SAAgB4E,GACdxd,KAAKwd,MAAQA,EACbxd,KAAK2lV,4BAGC,YAAAA,yBAAR,WACE,kBACGvM,OAAO,gBAAgBpyK,YAAY,mCAAmC7qI,QAAQ,YAAYqvL,WAC1F4tH,OAAO,UAAUpyK,YAAY,iCAAiCwkD,WAC9Dn+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,SAAoBy7O,G,qBAAiB76V,GAAO,W,6DAEnC,OADPgE,KAAKwd,MAAMy3B,OAAO4hT,OAASA,EACpB,GAAM72V,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAQI,YAAAA,KAAb,W,qBAAqB1gE,GAAO,W,kDACnB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBA/CE0mS,EAAW,GADvB,a,uBAS6C,mB,OAAA,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,SAClB,mBADkB,OAClB,IAAlB,UAAkB,YAVrCA,GAAb,K,4ECVA5wW,EAAOD,QAAU,ooD,49DCQjB,aAKE,WACUyoV,GAAA,KAAAA,gBAERlkV,KAAKC,OAAS,aAAWC,UAAU,mB,MAiBvC,OAdgB,YAAAf,KAAd,SAAmBiB,G,qBAAcpE,GAAO,W,kCACjCslB,MAAMlhB,EAAO6d,aAChBje,KAAKie,WAAa7d,EAAO6d,W,WAIf,YAAA+pU,kBAAd,W,qBAAmChsV,GAAO,W,6DAGjC,OAFPgE,KAAKC,OAAOE,KAAK,oBAEV,GAAMH,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,MACV2qJ,YAAW,SAAOj9I,GAA2B,gEAAK,yB,OAFrD,MAAO,CAAP,EAAO,kBApBE8wV,EAAe,GAD3B,uB,uBAOuC,mB,OAAA,IAAb,kCAAa,YAN3BA,GAAb,I,iFCRA7wW,EAAOD,QAAU,2J,mgECgBjB,aAoBE,WACUm/D,EACA90D,EAEAslW,EACAE,EAEA5lB,EACA5iM,GARV,WACU,KAAAloF,QACA,KAAA90D,SAEA,KAAAslW,gBACA,KAAAE,qBAEA,KAAA5lB,8BACA,KAAA5iM,eAzBF,KAAA1iJ,OAAc,GAKd,KAAAod,MAAkB,GAMlB,KAAAF,WAAoC,IAAI,wBAIxC,KAAAivU,UAAoB,EAmCpB,KAAAv/F,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAKorW,cAAc3zM,aAAaz3J,KAAKsd,YAC/Cna,MAAK,SAACsY,GAML,OALA,EAAK+wV,gBAAkB,EACvB,EAAKC,kBAAoB,EACzB,EAAKC,gBAAkB,EACvB,EAAKnU,KAAM,EACX98U,EAASphB,KAAK8M,SAAQ,SAAAD,GAAK,SAAKslW,iBAAmBtlW,EAAEukW,UAC9ChwV,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,kBAzBPkD,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAC1CjzU,KAAKC,OAAS,aAAWC,UAAU,gBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MAGxB7Q,KAAKwsW,gBAAkB,EACvBxsW,KAAKysW,kBAAoB,EACzBzsW,KAAK0sW,gBAAkB,EACvB1sW,KAAK2sW,kBAAoB,GACzB3sW,KAAKu4V,KAAM,E,gBAgIf,OA3HS,YAAA5S,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,UAAUpyK,YAAY,mCAAmC7qI,QAAQ,YAAYqvL,WACpFn+K,GAAGrtC,KAAKwd,QAmBC,YAAA5E,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,yDAIhEgE,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAIJ,YAAAwsW,OAAd,SAAqBnmU,EAAO42C,G,mEAC1B,MAAO,CAAP,EAAO52C,EAAQ42C,UAGH,YAAAl+E,KAAd,W,qBAAsBnD,GAAO,W,oEACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OAEFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE1Bje,KAAKie,WAEPje,KAAKorW,cAAchuV,OAAO87B,iBAAmBl5C,KAAKie,UAClDje,KAAKsrW,mBAAmBluV,OAAO87B,iBAAmBl5C,KAAKie,UAEvDje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3Dje,KAAKusV,UAAW,EACT,GAAMvsV,KAAKukV,aARhB,O,OAQF,MAAO,CAAP,EAAO,U,yBAKC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAGxB,OAFPgE,KAAKC,OAAO0zC,MAAM,YAEX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUI,YAAA+vW,SAAb,SAAsBrsW,G,qBAAexE,GAAO,W,6CAEtCwE,EAAKssW,2BACHtsW,EAAKirW,QAAUjrW,EAAKujF,OACtB/jF,KAAKu4V,KAAM,EACRv4V,KAAKu4V,KAAM,EAEhBv4V,KAAK0sW,gBAAkB,EACvB1sW,KAAKsd,WAAWoiU,UAAUv4U,SAAQ,SAAAD,GAAK,SAAKwlW,iBAAmBpiV,SAAsB,IAAZpjB,EAAE68E,QAA4B,MAAZ78E,EAAE68E,OAAkB,IAAM78E,EAAE68E,WACvH/jF,KAAKysW,kBAAoBzsW,KAAKwsW,gBAAkBxsW,KAAK0sW,iB,WAK5C,YAAA9d,cAAb,SAA2BpuV,G,qBAAexE,GAAO,W,6CAE1CwE,EAAKssW,2BACRtsW,EAAKujF,OAAS,EACd/jF,KAAK0sW,gBAAkB,EACvBlsW,EAAK46V,YAAc,GACnBp7V,KAAKsd,WAAWoiU,UAAUv4U,SAAQ,SAAAD,GAAK,SAAKwlW,iBAAmBpiV,SAAsB,IAAZpjB,EAAE68E,QAA4B,MAAZ78E,EAAE68E,OAAkB,IAAM78E,EAAE68E,WACvH/jF,KAAKysW,kBAAoBzsW,KAAKwsW,gBAAkBxsW,KAAK0sW,iB,WAKzD,sBAAI,sBAAO,C,IAAX,WACE,OAAQ1sW,KAAKsrW,mBAAmBluV,OAAO7C,c,gCAG5B,YAAAmiD,KAAb,W,qBAAqB1gE,GAAO,W,iEAUnB,OATH8X,EAAO,GACPkB,EAAMhV,KAAK2sW,kBACf3sW,KAAKsd,WAAWoiU,UAAUv4U,SAAQ,SAAU3G,GACtCA,EAAKssW,2BACPtsW,EAAK46V,YAAcpmV,EACnBlB,EAAK5Y,KAAKsF,OAIP,GAAMR,KAAKsrW,mBAAmBx7T,OAAOh8B,GACzC3Q,MAAK,gD,kDAGG,OAFPnD,KAAK8iJ,aAAaxiJ,QAAQ,6BAEnB,GAAMN,KAAK8F,OAAOkD,gBAAgB,gB,OAAzC,MAAO,CAAP,EAAO,oBAGRiD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,kBA7JEs0Q,EAAY,GADxB,uB,uBAsB8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SAEc,mBAFd,OAEc,IAAb,UAAa,SACU,mBADV,OACU,IAAlB,UAAkB,SAEkB,mBAFlB,OAEkB,IAA3B,8DAA2B,SAC9B,mBAD8B,OAC9B,IAAZ,UAAY,YA5BzBA,GAAb,I,kFChBA11Q,EAAOD,QAAU,gY,8DCAjBC,EAAOD,QAAU,wlI,i+DCQjB,aAOE,WACUsxW,EACAzrT,EACAwhG,GAHV,WACU,KAAAiqN,oBACA,KAAAzrT,mBACA,KAAAwhG,eANF,KAAAxlI,WAAoC,IAAI,wBAiCxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,kDAC1B,SAAMgE,KAAK+sW,kBAAkBlvV,yBAAyB7d,KAAKsd,a,OAAlE,MAAO,CAAP,EAAO,kBA1BPtd,KAAKC,OAAS,aAAWC,UAAU,wB,UA6BvC,OA1Be,YAAA0Y,SAAb,W,qBAAyB5c,GAAO,W,4CAKnB,YAAAmD,KAAb,W,qBAAqBnD,GAAO,W,0DAC1BgE,KAAKC,OAAOE,KAAK,Y,iBAIA,O,sBAAA,GAAMH,KAAK+sW,kBAAkBlvV,yBAAyB7d,KAAKsd,a,cAAtE7B,EAAW,SAEfzb,KAAKsd,WAAWoiU,UAAYjkU,EAASphB,KACrC2F,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,a,+BAIxCz/U,KAAK8iJ,aAAahmJ,MAAM,G,+BAhCjBkwW,EAAoB,GADhC,uB,uBAS+C,mB,OAAA,IAAjB,UAAiB,SACF,mBADE,OACF,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,YAVzBA,GAAb,K,8FCRAtxW,EAAOD,QAAU,yuE,q9DCqBjB,aAsBE,WACUm/D,EACA90D,EACAwlW,EACAF,EACA1lB,EACA5iM,GALA,KAAAloF,QACA,KAAA90D,SACA,KAAAwlW,qBACA,KAAAF,gBACA,KAAA1lB,8BACA,KAAA5iM,eAzBF,KAAA1iJ,OAAc,GACd,KAAAod,MAAkB,GAgBlB,KAAA+uU,UAAoB,EAU1BvsV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAC1CjzU,KAAKC,OAAS,aAAWC,UAAU,kBACnCF,KAAKitW,iBAAmB,EACxBjtW,KAAK2sW,kBAAoB,GACzB3sW,KAAKktW,aAAe,KACpBltW,KAAKmtW,aAAe,EAEpBntW,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,gBAuG5B,OApGS,YAAA80U,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,kBAAkBpyK,YAAY,6DAA6D7qI,QAAQ,YAAYqvL,WACtH4tH,OAAO,kCAAkCpyK,YAAY,6EAA6E7qI,QAAQ,YAAYqvL,WAEtJn+K,GAAGrtC,KAAKwd,QAGA,YAAA5E,SAAb,SAAsBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,yDAE/DgE,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAIL,YAAAjB,KAAb,W,qBAAqBnD,GAAO,W,oEAErBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,Y,GAEFje,KAAKie,WAAaje,KAAKI,OAAO6d,WAE1Bje,KAAKie,UAAL,YAEFje,KAAKsrW,mBAAmBluV,OAAO87B,iBAAmBl5C,KAAKie,UAEvDje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3Dje,KAAKusV,UAAW,E,iBAGU,O,sBAAA,GAAMvsV,KAAKorW,cAAc7tV,U,cAA7C6vV,EAAoB,SACxBptW,KAAKotW,QAAUA,EAAQvoW,QAAO,SAAAqC,GAAK,OAAAA,EAAEqV,GAAK,KAC1Cvc,KAAKsd,WAAa8vV,EAClBptW,KAAKqtW,WAAaD,E,+BAElBptW,KAAK8iJ,aAAahmJ,MAAM,G,+BAMnB,YAAA+vW,SAAb,SAAsBrsW,G,qBAAexE,GAAO,W,6CACtCwE,EAAKssW,2BACP9sW,KAAKitW,iBAAmB,EACxBjtW,KAAKsd,WAAWnW,SAAQ,SAAAD,GAAK,SAAK+lW,kBAAoB3iV,SAAiC,IAAvBpjB,EAAE68E,OAAO/kE,YAA2C,MAAvB9X,EAAE68E,OAAO/kE,WAAsB,IAAM9X,EAAE68E,OAAO/kE,gB,WAIlI,YAAAsuV,WAAb,SAAwB9sW,G,qBAAexE,GAAO,W,kCAC5CgE,KAAKsd,WAAatd,KAAKqtW,WAAWxoW,QAAO,SAAAqC,GAAK,OAAAA,EAAEqV,IAAM/b,KACtDR,KAAKsd,WAAWnW,SAAQ,SAAAD,GAAK,OAAAA,EAAE68E,OAAS,KACxC/jF,KAAKsd,WAAWnW,SAAQ,SAAAD,GAAK,OAAAA,EAAE4lW,0BAA2B,KAC1D9sW,KAAKitW,iBAAmB,EACxBjtW,KAAKmtW,aAAyB,GAAR3sW,EAAa,EAAIR,KAAKotW,QAAQpnW,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM/b,KAAMirW,O,WAGjE,YAAA7c,cAAb,SAA2BpuV,G,qBAAexE,GAAO,W,6CAC1CwE,EAAKssW,2BACR9sW,KAAKitW,iBAAmB,EACxBjtW,KAAKsd,WAAWnW,SAAQ,SAAAD,GAAK,SAAK+lW,kBAAoB3iV,SAAiC,IAAvBpjB,EAAE68E,OAAO/kE,YAA2C,MAAvB9X,EAAE68E,OAAO/kE,WAAsB,IAAM9X,EAAE68E,OAAO/kE,gB,WAI/I,sBAAI,sBAAO,C,IAAX,WACE,OAAQhf,KAAKsrW,mBAAmBluV,OAAO7C,c,gCAG5B,YAAAmiD,KAAb,W,qBAAqB1gE,GAAO,W,uEACtB8X,EAAO,GACPy5V,EAAO,IAAI,IACXv4V,EAAMhV,KAAK2sW,kBACXa,EAAextW,KAAKotW,QAAQpnW,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK2wV,gBAAcryV,KAAK0B,GAC1Evc,KAAKsd,WAAWnW,SAAQ,SAAU3G,GAC5BA,EAAKssW,4BACPS,EAAO,IAAI,KACNt4T,OAASz0C,EACd+sW,EAAKC,aAAeA,EACpBD,EAAKE,aAAejtW,EAAKqa,KAAK0B,GAC9BgxV,EAAKnS,YAAcpmV,EACnBlB,EAAK5Y,KAAKqyW,O,iBAMZ,O,sBAAA,GAAMvtW,KAAKsrW,mBAAmB3zM,SAAS7jJ,I,OAIhC,OAJP,SAEA9T,KAAK8iJ,aAAaxiJ,QAAQ,6BAEnB,GAAMN,KAAK8F,OAAOkD,gBAAgB,gB,OAAzC,MAAO,CAAP,EAAO,U,yBAGPhJ,KAAK8iJ,aAAahmJ,MAAM,G,+BA1IjBu0Q,EAAc,GAD1B,uB,uBAwB8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACwB,mBADxB,OACwB,IAAlB,UAAkB,SACV,mBADU,OACV,IAAb,UAAa,SAC4B,mBAD5B,OAC4B,IAA3B,8DAA2B,SAC9B,mBAD8B,OAC9B,IAAZ,UAAY,YA5BzBA,GAAb,I,oFCrBA31Q,EAAOD,QAAU,0Y,w+DCoBjB,aAiBE,WACUm/D,EACA0wS,EACAxoN,GAHV,WACU,KAAAloF,QACA,KAAA0wS,qBACA,KAAAxoN,eAhBF,KAAA1iJ,OAAc,GAOd,KAAAkd,WAAoC,IAAI,wBAIxC,KAAAivU,UAAoB,EAYpB,KAAAv/F,QAAU,6BAAUhxP,GAAO,W,6DAG1B,OAFPgE,KAAKC,OAAO0zC,MAAM,cAClB,YAAyB3zC,KAAKsd,WAAWusB,QAClC,GAAM7pC,KAAKsrW,mBAAmB9zM,aAAax3J,KAAKsd,YACpDna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBARPkD,KAAKC,OAAS,aAAWC,UAAU,sBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,YA0E5B,OA3DgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,iEAGhE0vW,EAAQ,IAAIryV,KACZiF,EAAY,IAAIjF,KACpBrZ,KAAKsd,WAAWusB,OAAuB,CAAE8wO,UAAW,IAAIthQ,KAAKiF,EAAU6zH,QAAQ7zH,EAAUqW,UAAY,KAAMimP,QAAS8wF,GAGhH1rW,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAIJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,8FAIpBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OAEFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE1Bje,KAAKie,WAEPje,KAAKsrW,mBAAmBluV,OAAO87B,iBAAmBl5C,KAAKie,UAEvDje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3D,EAAAje,KAAa,GAAMA,KAAKsrW,mBAAmB1zM,qBANzC,O,OASK,OAHP,EAAK+zM,MAAQ,SAEb3rW,KAAKusV,UAAW,EACT,GAAMvsV,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,4CAKXvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAynV,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBA3FT,GADC,W,sDAQD,GADC,W,gBACwC,mB,OAAA,IAArB,kDAAqB,W,iCAX9Bs9B,EAAkB,GAD9B,uB,uBAmB8B,mB,OAAA,IAAZ,UAAY,SACmB,mBADnB,OACmB,IAAlB,UAAkB,SACZ,mBADY,OACZ,IAAZ,UAAY,YApBzBA,GAAb,I,sFCpBAhyW,EAAOD,QAAU,i7I,gECAjBC,EAAOD,QAAU,g2H,8tECyBjB,aAsBE,WACUsE,EACAmkV,EACAtpR,EACA+yS,EACA7qN,EACAupM,EACAthC,EACAmuC,GARV,WACU,KAAAn5V,OACA,KAAAmkV,gBACA,KAAAtpR,QACA,KAAA+yS,2BACA,KAAA7qN,eACA,KAAAupM,kBACA,KAAAthC,qBACA,KAAAmuC,qBA3BF,KAAA94V,OAAc,GAKd,KAAAkd,WAAoC,IAAI,wBAKxC,KAAAivU,UAAoB,EAGpB,KAAAqhB,eAAyB,EACzB,KAAAC,iBAA2B,EAC3B,KAAAC,cAAwB,EACxB,KAAAC,mBAA6B,EAC9B,KAAAC,aAA2B,GAkB1B,KAAAhhH,QAAU,6BAAUhxP,GAAO,W,kDAE1B,SAAMgE,KAAK2tW,yBAAyB75V,KAAK9T,KAAKsd,WAAYtd,KAAKwqC,cAAexqC,KAAKgqC,a,OAA1F,MAAO,CAAP,EAAO,kBARPhqC,KAAKC,OAAS,aAAWC,UAAU,yBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,oBA0L5B,OAjLgB,YAAA+H,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,yDAC1CgE,KAAKC,OAAO0zC,MAAM,YAEd3zC,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAKJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,0EAGtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAC1Bje,KAAKie,WAEPje,KAAK2tW,yBAAyBvwV,OAAO87B,iBAAmBl5C,KAAKie,UAE7Dje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE5C,GAAMje,KAAK+qT,mBAAmBxoQ,gBAAgBviD,KAAKie,aANhE,O,OAsB2B,OAhBzB7V,EAAW,SACfpI,KAAKwqC,cAAgBpiC,EAAS6lW,yBAEJ,GAAtBjuW,KAAKwqC,gBACPxqC,KAAKwqC,cAAgB,IAAmB,aAEtCxqC,KAAKwqC,eAAiB,IAAmB,aAE3CxqC,KAAK8tW,cAAe,EACpB9tW,KAAK+tW,mBAAoB,IAEzB/tW,KAAK+tW,mBAAoB,EACzB/tW,KAAKgqC,WAAa,IAAUkkU,SAI9B,EAAAluW,KAA6B,GAAMA,KAAKk5V,mBAAmB58U,QAAQtc,KAAKwqC,gB,OAIpD,OAJpB,EAAK2jU,sBAAwB,SAE7BnuW,KAAKusV,UAAW,EAEhB,EAAAvsV,KAAoB,GAAMA,KAAKqsV,gBAAgB9uU,U,OAGxC,OAHP,EAAKywV,aAAe,SACpBhuW,KAAKouW,kBAEE,GAAMpuW,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yBAKC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAGxB,OAFPgE,KAAKC,OAAO0zC,MAAM,YAEX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAAOsY,GAA6B,qC,kDAIxC,OAHAzb,KAAKC,OAAO0zC,MAAM,UAAWl4B,GAC7Bzb,KAAKsd,WAAWoiU,UAAYjkU,EAASphB,KACrC2F,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,aACxC,GAAMz/U,KAAKquW,oB,cAAX,S,cAEDpiW,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,kBAYK,YAAAuxW,iBAAd,W,qBAAkCryW,GAAO,W,kDAC1B,SAAMgE,KAAK2tW,yBAAyBrnN,oCAAoCtmJ,KAAKwqC,gB,OAE1F,OAFa,UAGX,KAAK,IAA6BipT,OAChCzzV,KAAK4tW,eAAgB,EACrB5tW,KAAK6tW,iBAAkB,EACvB,MACF,KAAK,IAA6Bna,SAChC1zV,KAAK4tW,eAAgB,EACrB5tW,KAAK6tW,iBAAkB,EACvB,MACF,KAAK,IAA6BtoB,QAChCvlV,KAAK4tW,eAAgB,EACrB5tW,KAAK6tW,iBAAkB,E,kBAMf,YAAAtlC,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAA1zQ,KAAd,SAAmBl8D,G,qBAA0BxE,GAAO,W,6DAE3C,OADPwE,EAAKwpC,WAAahqC,KAAKgqC,WAChB,GAAMhqC,KAAK2tW,yBAAyBjxV,OAAOlc,GAC/C2C,MAAK,SAACqa,GAEL,EAAKvd,OAAO0zC,MAAM,WAAYn2B,EAAMjB,IACpC/b,EAAK+b,GAAKiB,EAAMjB,GAEhB,EAAKumI,aAAaxiJ,QAAQ,0EAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,kBAcI,YAAAupJ,eAAb,W,qBAA+BrqJ,GAAO,W,wDAElC,O,sBAAA,GAAMgE,KAAK2tW,yBAAyBtnN,eAAermJ,KAAKwqC,gB,OAEjD,OAFP,SACAxqC,KAAK8iJ,aAAaxiJ,QAAQ,uFACnB,GAAMN,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yBAEPvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIf,YAAA2gB,YAAb,SAAyBjd,G,qBAA0BxE,GAAO,W,6DAEjD,OADPgE,KAAKC,OAAO0zC,MAAM,gBAAiBnzC,EAAK8F,UACjC,GAAMtG,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAKD,KAAKM,GAAGG,EAAK8tW,kBACxB51M,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK2tW,yBAAyBlwV,YAAYjd,GACpD2C,MAAK,SAAOqa,GAAwB,qC,kDAM5B,OAJPxd,KAAKC,OAAO0zC,MAAM,WAAYn2B,EAAMjB,IACpC/b,EAAK+b,GAAKiB,EAAMjB,GAEhBvc,KAAK8iJ,aAAaxiJ,QAAQ,uEACnB,GAAMN,KAAKquW,oB,OAAlB,MAAO,CAAP,EAAO,oBAERpiW,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,U,OAeP0D,EAAK8F,UAAY9F,EAAK8F,S,6CApB1B,MAAO,CAAP,EAAO,kBA2BI,YAAAoK,KAAb,SAAkBlQ,G,qBAA0BxE,GAAO,W,6DACjDgE,KAAKC,OAAO0zC,MAAM,0BAGbnzC,EAAK8zM,oBAAyD,IAAnC9zM,EAAK8zM,mBAAmB15M,OAApD,Y,iBAE0B,O,sBAA1B,EAAA4F,EAA0B,GAAMR,KAAK2tW,yBAAyBpnN,sBAAsB/lJ,EAAKgmJ,aAAcxmJ,KAAKwqC,gB,cAA5G,EAAK8pK,mBAAqB,S,aAG1B,O,WADAt0M,KAAK8iJ,aAAahmJ,MAAM,GACxB,I,OAIG,SAAMkD,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,WAAM,gB,OAHpB,MAAO,CAAP,EAAO,kBAKF,YAAA01M,gBAAP,WAEE,GADApuW,KAAKC,OAAO0zC,MAAM,mBACd3zC,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAAe,CAC1C,IAAI,EAAgB11J,KAAK6Q,MAAM6kJ,cAActvG,QACzCmoT,EAAavuW,KAAKguW,aAAahoW,MAAK,SAACwoW,GAA6B,OAAAA,EAAGpoT,UAAY,KACjFmoT,IACFvuW,KAAKgqC,WAAaukU,EAAWhyV,MAItB,YAAA40C,eAAb,W,0FACE,SAAMnxD,KAAKukV,Y,cAAX,S,YA1NSkqB,EAAqB,GADjC,uB,uBAwBqB,mB,OAAA,IAAJ,gBAAI,SACkB,mBADlB,OACkB,IAAb,kCAAa,SACT,mBADS,OACT,IAAZ,UAAY,SACmC,mBADnC,OACmC,IAA5B,UAA4B,SAC5B,mBAD4B,OAC5B,IAAZ,UAAY,SACU,mBADV,OACU,IAAnB,UAAmB,SACE,mBADF,OACE,IAAlB,UAAkB,SACA,mBADA,OACA,IAAlB,UAAkB,YA9BrCA,GAAb,I,ypBClBA,aAKE,aACEzuW,KAAKC,OAAS,aAAWC,UAAU,wBAevC,OAZE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPpI,SAAU,4BACVoD,KAAM,8BAhBDgxW,EAAoB,GADhC,a,2BACYA,GAAb,I,yGCPAhzW,EAAOD,QAAU,uD,4FCAjBC,EAAOD,QAAU,wsG,snBCKjB,aAIE,WACU6lD,GAAA,KAAAA,mB,MAOZ,OAJS,YAAA1oC,SAAP,SAAgB4E,GACdxd,KAAKwd,MAAQA,GATJmxV,EAA0B,GADtC,uB,uBAM6C,mB,OAAA,IAAhB,wCAAgB,YALjCA,GAAb,I,kGCLAjzW,EAAOD,QAAU,+/B,2lECsBjB,aAkBE,WACUsE,EACA+F,EACA80D,EACAg0S,EACA1qB,EACAphM,EACAwqM,EACAtJ,EACAj5B,EACA8jD,GATA,KAAA9uW,OACA,KAAA+F,SACA,KAAA80D,QACA,KAAAg0S,eACA,KAAA1qB,gBACA,KAAAphM,eACA,KAAAwqM,cACA,KAAAtJ,mBACA,KAAAj5B,qBACA,KAAA8jD,qBAxBF,KAAAvxV,WAAoC,IAAI,wBAExC,KAAAwxV,UAAqB,GACrB,KAAA1uW,OAAc,GAGd,KAAAgpT,MAAe,IAAI,IAMpB,KAAApvC,WAAqB,EAc1Bh6Q,KAAKC,OAAS,aAAWC,UAAU,mBACnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,wBA+D5B,OA3De,YAAA+H,SAAb,SAAsBxY,G,4GAGpBJ,KAAKI,OAASA,EACTkhB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKie,UAAYje,KAAKI,OAAO6d,UAEzBje,KAAKie,WAEPje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAC3D,GAAMje,KAAK+uW,yBAAyB/uW,KAAKie,aAHvC,O,OAGF,S,oCAKFje,KAAKie,UAAYje,KAAK6Q,MAAM0kJ,eAAeh5I,G,mCAGjC,YAAAwyV,yBAAd,SAAuC9wV,G,sGAGhB,O,sBAAA,GAAMje,KAAKgkV,iBAAiBtsQ,yBAAyBz5D,GAAU,I,OACzD,OADrB+wV,EAAe,SAAuErqW,KAAI,SAAAuC,GAAI,OAAAA,EAAEqV,MAC3E,GAAMvc,KAAKgkV,iBAAiBtsQ,yBAAyBz5D,GAAU,I,OAQvE,OARZgxV,EAAoB,SAAsEtqW,KAAI,SAAAuC,GAAI,OAAAA,EAAEqV,MAErGyyV,EAAYp0W,OAAS,IACvBoF,KAAKopT,MAAMpnQ,SAAWgtT,GACpBC,EAAiBr0W,OAAS,IAC5BoF,KAAKopT,MAAMnnQ,cAAgBgtT,GAG7B,EAAAjvW,KAAiB,GAAMA,KAAK4uW,aAAahmU,gBAAgB3qB,EAAUje,KAAKopT,Q,cAAxE,EAAK0lD,UAAY,SAEjB9uW,KAAKkvW,OAAUlvW,KAAK8uW,UAAUjqW,QAAO,SAAAqC,GAAI,OAAAA,EAAEioW,mBAAqB,IAAkBC,YAAUx0W,OAExFoF,KAAKkvW,OAAS,KAClBlvW,KAAKkvW,OAAS,IAEK,GAAflvW,KAAKkvW,SACTlvW,KAAKg6Q,WAAY,G,+BAIjBh6Q,KAAK8iJ,aAAahmJ,MAAM,G,+BAGd,YAAAuyW,YAAd,SAA0B7uW,G,qBAAcxE,GAAO,W,wDAS7C,OAPAgE,KAAKsvW,QAAU9uW,EAAK+b,GACpBvc,KAAKuvW,SAAW/uW,EAAK2a,KACrBnb,KAAKwvW,YAAchvW,EAAKkoJ,SACpB+mN,EAAmB,IAAI,KACVH,QAAU9uW,EAAK+b,GAChCkzV,EAAiBN,kBAAoB3uW,EAAK2uW,kBAE1C,GAAMnvW,KAAK6uW,mBAAmB5vW,OAAOwwW,I,OACrC,OADA,SACA,GAAMzvW,KAAK+uW,yBAAyB/uW,KAAKie,Y,cAAzC,S,YA1FSyxV,EAAe,GAD3B,uB,uBAoBqB,mB,OAAA,IAAJ,gBAAI,SACI,mBADJ,OACI,IAAN,oBAAM,SACK,mBADL,OACK,IAAZ,UAAY,SACO,mBADP,OACO,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACF,mBADE,OACF,IAAX,UAAW,SACU,mBADV,OACU,IAAhB,UAAgB,SACI,mBADJ,OACI,IAAlB,UAAkB,SACA,mBADA,OACA,IAAlB,UAAkB,YA5BrCA,GAAb,I,qqBCZA,aAKE,WACU3vW,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,wB,MAqBvC,OAlBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,oBACVoD,KAAM,kBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,6CApBfsvW,EAAoB,GADhC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,iGCVAj0W,EAAOD,QAAU,uD,sFCAjBC,EAAOD,QAAU,iwE,+nBCUjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,oB,MAqBvC,OAlBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,eACVoD,KAAM,aACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,0CACpB+H,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsB28C,wBAvB5BumG,EAAgB,GAD5B,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,2ECVAl0W,EAAOD,QAAU,yL,wECAjBC,EAAOD,QAAU,ic,ghEC2BjB,aAgBE,WACUm/D,EACA90D,EACAg9I,EACA4iM,EACAkpB,EAEA7jD,EACAuiC,EACA9G,EACAxC,EACAjkV,EACAqa,GAXA,KAAAwgD,QACA,KAAA90D,SACA,KAAAg9I,eACA,KAAA4iM,8BACA,KAAAkpB,eAEA,KAAA7jD,qBACA,KAAAuiC,cACA,KAAA9G,uBACA,KAAAxC,mBACA,KAAAjkV,OACA,KAAAqa,iBAlBF,KAAA+6I,UAAuB,GACvB,KAAA/yG,UAAoB,GACpB,KAAAC,eAAyB,GACzB,KAAA23N,WAAqB,EAiB3Bh6Q,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,QACnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,0BAwH5B,OApHgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,8DAG1C,O,sBAAxB,EAAAgE,KAAwB,GAAMA,KAAK+qT,mBAAmBvoQ,YAAY,IAAKmtS,kB,OAErD,OAFlB,EAAKN,iBAAmB,SAExB,EAAArvV,KAAkB,GAAMA,KAAK+qT,mBAAmBvoQ,YAAY,IAAKktS,Y,cAAjE,EAAKvtS,WAAa,SAEb7gC,MAAMlhB,EAAO6d,aACpBje,KAAKie,WAAa7d,EAAO6d,WAElBqD,MAAMlhB,EAAOkvW,SAAd,OACF,EAAAtvW,KAAa,GAAMA,KAAK4uW,aAAatyV,SAASlc,EAAOkvW,W,cAArD,EAAK9xV,MAAQ,SACbxd,KAAK6vW,oCACL7vW,KAAKg6Q,WAAY,E,aAGjBh6Q,KAAKwd,MAAQ,IAAI,I,wBAEnBxd,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIpB,YAAA0R,MAAR,WACExO,KAAKwd,MAAMukC,UAAY,KACvB/hD,KAAKwd,MAAMwkC,SAAW,KACtBhiD,KAAKwd,MAAMykC,cAAgB,MAEf,YAAA6tT,UAAd,W,uGAIuB,OAFrB9vW,KAAKoiD,UAAY,GACjBpiD,KAAKqiD,eAAiB,GACD,GAAMriD,KAAKstV,YAAY/vU,QAAO,I,cAA/CwyV,EAAiB,SAAsClrW,QAAO,SAAAqC,GAAK,OAAAA,EAAEZ,YACzEtG,KAAKwd,MAAMukC,UAAU56C,SAAQ,SAAO3G,GAAI,qC,kCACtCR,KAAKoiD,UAAYpiD,KAAKoiD,UAAUj+C,OAAO4rW,EAAclrW,QAAO,SAAAqC,GAAK,OAAAA,EAAE+W,WAAazd,M,yBAGtE,YAAAwvW,cAAd,W,yGACEhwW,KAAKm1J,UAAY,G,iBAEK,O,sBAAA,GAAMn1J,KAAKgkV,iBAAiBzmU,OAAOvd,KAAKie,Y,cAAxD,EAAgB,SACpBje,KAAKwd,MAAMwkC,SAAS76C,SAAQ,SAAC3G,GAC3B,EAAK20J,UAAY,EAAKA,UAAUhxJ,OAAO,EAAcU,QAAO,SAAAqC,GAAI,OAAAA,EAAE0W,QAAUpd,KAAMmE,KAAI,SAAAuC,GAAG,OAAAA,EAAEwX,e,+BAG7F1e,KAAK8iJ,aAAahmJ,MAAM,G,+BAGpB,YAAA6oV,yBAAR,WACE,kBACGvM,OAAO,WAAWpyK,YAAY,gCAAgCwkD,WAC9D4tH,OAAO,UAAUpyK,YAAY,uCAAuCwkD,WACpEn+K,GAAGrtC,KAAKwd,QAGC,YAAA49F,OAAd,SAAqB4wO,G,qBAA2BhwV,GAAO,W,kDACxC,SAAMgE,KAAK01U,qBAAqBrnS,Y,cAAhC,SACFsqK,MACJ34M,KAAKwd,MAAMgsB,OAAZ,OACFxpC,KAAK8iJ,aAAaviJ,QAAQP,KAAKD,KAAKM,GAAG,mD,OAFvC,M,OAKO,SAAML,KAAK08D,KAAKsvR,I,OAAvB,MAAO,CAAP,EAAO,U,yBAOC,YAAAtvR,KAAd,SAAmBsvR,G,qBAA2BhwV,GAAO,W,oEAC9CgE,KAAKwd,MAAMjB,GAAZ,MAEK,GAAMvc,KAAK4uW,aAAa3vW,OAAOe,KAAKwd,OACxCra,MAAK,SAAOqa,GAAY,qC,yDACvBxd,KAAK8iJ,aAAaxiJ,QAAQ,4BACrB0rV,EAAD,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,e,OAAzC,MAAO,CAAP,EAAO,U,OAEA,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,qBAAsB,CAAEsmW,QAAS9xV,EAAMjB,M,OAAhF,MAAO,CAAP,EAAO,oBAIVtQ,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAX5B,MAAO,CAAP,EAAO,U,OAcA,SAAMkD,KAAK4uW,aAAalyV,OAAO1c,KAAKwd,OACxCra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6BACrB0rV,EAAD,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,e,OAAzC,MAAO,CAAP,EAAO,U,2BAGViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,kBAaH,YAAA+yW,kCAAR,WACE,OAAQ7vW,KAAKwd,MAAMgsB,QACjB,KAAK,EACL,KAAK,EACH,MACF,KAAK,EACL,KAAK,EACHxpC,KAAK8vW,YACL9vW,KAAKgwW,kBAnJAC,EAAS,GAFrB,uB,uBAmB8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC9B,mBAD8B,OAC9B,IAAZ,UAAY,SAEY,mBAFZ,OAEY,IAAlB,UAAkB,SACd,mBADc,OACd,IAAX,UAAW,SACkB,mBADlB,OACkB,IAApB,UAAoB,SACR,mBADQ,OACR,IAAhB,UAAgB,SACxB,mBADwB,OACxB,IAAJ,gBAAI,SACoB,mBADpB,OACoB,IAAd,UAAc,YA5B7BA,GAAb,I,oFC3BAv0W,EAAOD,QAAU,g/H,4jECgBjB,aAqBE,WACUqK,EACA8oW,EACA1qB,EACAphM,EACAwqM,EACAviC,GANV,WACU,KAAAjlT,SACA,KAAA8oW,eACA,KAAA1qB,gBACA,KAAAphM,eACA,KAAAwqM,cACA,KAAAviC,qBAvBF,KAAAztS,WAAoC,IAAI,wBAExC,KAAAwxV,UAAqB,GAGrB,KAAA9hH,QAAU,6BAAUhxP,GAAO,W,6DAEzB,OADRgE,KAAKC,OAAO0zC,MAAM,cACV,GAAM3zC,KAAK4uW,aAAa96V,KAAK9T,KAAKsd,YACtCna,MAAK,SAAOsY,GAA6B,qC,2BACzC,MAAO,CAAP,EAAOA,YAGPxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAkBRkD,KAAKC,OAAS,aAAWC,UAAU,Y,gBAqIvC,OAjIe,YAAAf,KAAb,W,qBAAqBnD,GAAO,W,kDACnB,SAAMgE,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,kBAIK,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DACxB,SAAMgE,KAAKgtP,UACf7pP,MAAK,SAAOsY,GAA6B,qC,kDAIzC,OAHCzb,KAAKsd,WAAWoiU,UAAYjkU,EAASphB,KACrC2F,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,aACxCz/U,KAAK8uW,UAAY9uW,KAAKsd,WAAWoiU,UAClC,GAAM1/U,KAAKkwW,gB,OACV,OADD,SACC,GAAMlwW,KAAKmwW,qB,OACX,OADA,SACA,GAAMnwW,KAAKowW,oB,cAAX,S,cAEDnkW,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,kBAcK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGI,YAAA3yT,YAAb,SAAyBjd,G,qBAAaxE,GAAO,W,6DACpC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK9C,OAEXg7J,YAAW,SAAOj9I,GAA2B,qC,oEACvCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK4uW,aAAanxV,YAAYjd,EAAK+b,IAC7CpZ,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,gCAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,U,OASPkD,KAAKC,OAAO0zC,MAAM,qB,6CAfxB,MAAO,CAAP,EAAO,kBAoBI,YAAAu8T,aAAb,W,8EACE,IACElwW,KAAK8uW,UAAU3nW,SAAQ,SAAAD,GACrB,IAAImpW,EAA0B,GAC1BC,EAA+B,GAC/BppW,EAAE86C,UACJ96C,EAAE86C,SAAS76C,SAAQ,SAAO3G,GAAY,qC,wDAE7B,OADH+C,EAAa,IAAI,IACd,GAAMvD,KAAKstV,YAAYhxU,QAAQ9b,I,cAAtC+C,EAAO,SACP8sW,EAAan1W,KAAKqI,EAAK7F,M,cAGzBwJ,EAAEk7C,UAAYiuT,EAEVnpW,EAAE+6C,eACJ/6C,EAAE+6C,cAAc96C,SAAQ,SAAO3G,GAAY,qC,wDAElC,OADH+C,EAAa,IAAI,IACd,GAAMvD,KAAKstV,YAAYhxU,QAAQ9b,I,cAAtC+C,EAAO,SACP+sW,EAAkBp1W,KAAKqI,EAAK7F,M,cAG9BwJ,EAAEm7C,eAAiBiuT,KAGzB,MAAOxzW,GACPkD,KAAK8iJ,aAAahmJ,MAAMA,G,iBAGf,YAAAszW,iBAAb,W,8EACE,IACEpwW,KAAK8uW,UAAU3nW,SAAQ,SAAAD,GACrB,IAAI8oW,EAA2B,GAE3B9oW,EAAEwX,SACJxX,EAAEwX,QAAQvX,SAAQ,SAAO3G,GAAY,qC,wDAEzB,OADNke,EAAmB,IAAI,IACjB,GAAM1e,KAAK+qT,mBAAmBzuS,QAAQ9b,I,cAAhDke,EAAU,SACVsxV,EAAc90W,KAAKwjB,EAAQhhB,M,cAG7BwJ,EAAEo7C,cAAgB0tT,KAYtB,MAAOlzW,GACPkD,KAAK8iJ,aAAahmJ,MAAMA,G,iBAGf,YAAAqzW,kBAAb,W,8EACE,IACEnwW,KAAK8uW,UAAU3nW,SAAQ,SAAAD,GACrB,IAAIqpW,EAAiC,GACjCC,EAA2B,GAC3BtpW,EAAE46C,iBACJ56C,EAAE46C,gBAAgB36C,SAAQ,SAAO3G,GAAY,qC,wDAE/B,OADRuhD,EAAqB,IAAI,IACjB,GAAM/hD,KAAK+qT,mBAAmBzuS,QAAQ9b,I,cAAlDuhD,EAAY,SACZwuT,EAAoBr1W,KAAK6mD,EAAUrkD,M,cAGrCwJ,EAAEg7C,iBAAmBquT,EAEjBrpW,EAAE66C,WACJ76C,EAAE66C,UAAU56C,SAAQ,SAAO3G,GAAY,qC,wDAEzB,OADRuhD,EAAqB,IAAI,IACjB,GAAM/hD,KAAK+qT,mBAAmBzuS,QAAQ9b,I,cAAlDuhD,EAAY,SACZyuT,EAAct1W,KAAK6mD,EAAUrkD,M,cAG/BwJ,EAAEi7C,WAAaquT,KAGrB,MAAO1zW,GACPkD,KAAK8iJ,aAAahmJ,MAAMA,G,iBA/JjB2zW,EAAS,GADrB,uB,uBAuByB,mB,OAAA,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACF,mBADE,OACF,IAAX,UAAW,SACc,mBADd,OACc,IAAlB,UAAkB,YA3BrCA,GAAb,I,8nBCTA,aAKE,aACEzwW,KAAKC,OAAS,aAAWC,UAAU,wBAoBvC,OAjBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPpI,SAAU,eACVoD,KAAM,cAGR,CACEgF,MAAO,iBACPpI,SAAU,uBACVoD,KAAM,yBAtBDgzW,EAAoB,GADhC,a,2BACYA,GAAb,I,8ECPAh1W,EAAOD,QAAU,uD,mECAjBC,EAAOD,QAAU,iyF,4nBCUjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,mB,MAoBvC,OAjBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,cACVoD,KAAM,YACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,yCACpB+H,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsB28C,wBAvB5BsnG,EAAe,GAD3B,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,yECVAj1W,EAAOD,QAAU,wL,sECAjBC,EAAOD,QAAU,4b,8gECwBjB,aAaE,WACUm/D,EACA90D,EACAg9I,EACA4iM,EACAkrB,EAEA7lD,EACAuiC,EACA9G,EACAzmV,EACAqa,GAVA,KAAAwgD,QACA,KAAA90D,SACA,KAAAg9I,eACA,KAAA4iM,8BACA,KAAAkrB,cAEA,KAAA7lD,qBACA,KAAAuiC,cACA,KAAA9G,uBACA,KAAAzmV,OACA,KAAAqa,iBAdF,KAAAgoC,UAAoB,GACpB,KAAAC,eAAyB,GACzB,KAAA23N,WAAqB,EAc3Bh6Q,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,QACnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,wBAoJ5B,OAhJgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,8DAG1C,O,sBAAxB,EAAAgE,KAAwB,GAAMA,KAAK+qT,mBAAmBvoQ,YAAY,IAAKmtS,kB,OAErD,OAFlB,EAAKN,iBAAmB,SAExB,EAAArvV,KAAkB,GAAMA,KAAK+qT,mBAAmBvoQ,YAAY,IAAKktS,Y,cAAjE,EAAKvtS,WAAa,SAGb7gC,MAAMlhB,EAAOywW,QAAd,OACF,EAAA7wW,KAAa,GAAMA,KAAK4wW,YAAYt0V,SAASlc,EAAOywW,U,cAApD,EAAKrzV,MAAQ,SACbxd,KAAK6vW,oCACL7vW,KAAKg6Q,WAAY,E,aAGjBh6Q,KAAKwd,MAAQ,IAAI,I,wBAEnBxd,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIpB,YAAA0R,MAAR,WAEExO,KAAKwd,MAAMukC,UAAY,KACvB/hD,KAAKwd,MAAMwkC,SAAW,KACtBhiD,KAAKwd,MAAMykC,cAAgB,MAEf,YAAA6tT,UAAd,W,yGAIuB,OAFrB9vW,KAAKoiD,UAAY,GACjBpiD,KAAKqiD,eAAiB,GACD,GAAMriD,KAAKstV,YAAY/vU,QAAO,I,OAKzB,OALtBwyV,EAAiB,SAAsClrW,QAAO,SAAAqC,GAAK,OAAAA,EAAEZ,YACzEtG,KAAKwd,MAAMukC,UAAU56C,SAAQ,SAAO3G,GAAI,qC,kCACtCR,KAAKoiD,UAAYpiD,KAAKoiD,UAAUj+C,OAAO4rW,EAAclrW,QAAO,SAAAqC,GAAK,OAAAA,EAAE+W,WAAazd,M,aAGxD,GAAMR,KAAKstV,YAAY/vU,QAAO,I,cAApDuzV,EAAsB,SAAqCjsW,QAAO,SAAAqC,GAAK,OAAAA,EAAEZ,YAC7EtG,KAAKwd,MAAMukC,UAAU56C,SAAQ,SAAO3G,GAAI,qC,kCACtCR,KAAKqiD,eAAiBriD,KAAKqiD,eAAel+C,OAAO2sW,EAAmBjsW,QAAO,SAAAqC,GAAK,OAAAA,EAAE+W,WAAazd,M,yBAK3F,YAAAmlV,yBAAR,WACE,kBACGvM,OAAO,QAAQpyK,YAAY,8BAA8BwkD,WACzD4tH,OAAO,UAAUpyK,YAAY,uCAAuCwkD,WACpE4tH,OAAO,YAAYpyK,YAAY,+BAA+BwkD,WAC9Dn+K,GAAGrtC,KAAKwd,QAGC,YAAA49F,OAAd,SAAqB4wO,G,qBAA2BhwV,GAAO,W,kDACxC,SAAMgE,KAAK01U,qBAAqBrnS,Y,cAAhC,SACFsqK,MACJ34M,KAAKwd,MAAMgsB,OAAZ,OACFxpC,KAAK8iJ,aAAaviJ,QAAQP,KAAKD,KAAKM,GAAG,mD,OAFvC,M,OAKO,SAAML,KAAK08D,KAAKsvR,I,OAAvB,MAAO,CAAP,EAAO,U,yBAOC,YAAAtvR,KAAd,SAAmBsvR,G,qBAA2BhwV,GAAO,W,oEAC9CgE,KAAKwd,MAAMjB,GAAZ,MAEK,GAAMvc,KAAK4wW,YAAY3xW,OAAOe,KAAKwd,OACvCra,MAAK,SAAOqa,GAAW,qC,yDACtBxd,KAAK8iJ,aAAaxiJ,QAAQ,4BACrB0rV,EAAD,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,c,OAAzC,MAAO,CAAP,EAAO,U,OAEA,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,oBAAqB,CAAE6nW,OAAQrzV,EAAMjB,M,OAA9E,MAAO,CAAP,EAAO,oBAIVtQ,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAX5B,MAAO,CAAP,EAAO,U,OAcA,SAAMkD,KAAK4wW,YAAYl0V,OAAO1c,KAAKwd,OACvCra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6BACrB0rV,EAAD,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,c,OAAzC,MAAO,CAAP,EAAO,U,2BAGViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,kBAeH,YAAA+yW,kCAAR,WACE,OAAQ7vW,KAAKwd,MAAMgsB,QACjB,KAAK,EACL,KAAK,EACH,MACF,KAAK,EACL,KAAK,EACHxpC,KAAK8vW,cAQJ,YAAA3iB,UAAP,WACEntV,KAAKwd,MAAMquC,SAAW,KACtB7rD,KAAKwd,MAAMyhV,kBAAoB,MAE1B,YAAAhxV,4BAAP,WACE,OAAO,qBAAmBlH,SAErB,YAAAyhV,QAAP,SAAe1kD,EAAatjS,GAC1BR,KAAKC,OAAO0zC,MAAM,WAClB,IAAIx3B,EAAa2nR,EAAOtmS,OAAO+wO,MAAM,GAErC,GADoB,IAAoBp9N,MAAM,UAAW,QACvC8P,QAAQ9E,GAAO,CAC/B,IAAI,EAAqB,IAAIm/B,WAC7B,EAAOK,cAAcx/B,GACrB,EAAOjf,OAAS,WACd,IAAI8vV,EAAkB,EAAOj9U,OAC7BvP,EAAKkmJ,eAAiBsmM,EACtBxsV,EAAKqrD,SAAW1vC,EAAKze,KACrB8C,EAAKy+V,kBAAoB1lT,IAAI0B,gBAAgB9+B,SAI/Cnc,KAAK8iJ,aAAahmJ,MAAM,oEA1KjBi0W,EAAQ,GAFpB,uB,uBAgB8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAChC,mBADgC,OAChC,IAAX,UAAW,SAEc,mBAFd,OAEc,IAAlB,UAAkB,SACd,mBADc,OACd,IAAX,UAAW,SACkB,mBADlB,OACkB,IAApB,UAAoB,SAChC,mBADgC,OAChC,IAAJ,gBAAI,SACoB,mBADpB,OACoB,IAAd,UAAc,YAxB7BA,GAAb,I,kFCxBAr1W,EAAOD,QAAU,m4J,0jECcjB,aAqBE,WACUqK,EACA8qW,EACA1sB,EACAphM,EACAwqM,EACAviC,GANV,WACU,KAAAjlT,SACA,KAAA8qW,cACA,KAAA1sB,gBACA,KAAAphM,eACA,KAAAwqM,cACA,KAAAviC,qBAvBF,KAAAztS,WAAoC,IAAI,wBAExC,KAAA0zV,SAAmB,GAGnB,KAAAhkH,QAAU,6BAAUhxP,GAAO,W,6DAEzB,OADRgE,KAAKC,OAAO0zC,MAAM,cACV,GAAM3zC,KAAK4wW,YAAY98V,KAAK9T,KAAKsd,YACrCna,MAAK,SAAOsY,GAA6B,qC,2BACzC,MAAO,CAAP,EAAOA,YAGPxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAkBRkD,KAAKC,OAAS,aAAWC,UAAU,Y,gBAwGvC,OApGe,YAAAf,KAAb,W,qBAAqBnD,GAAO,W,kDACnB,SAAMgE,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,kBAIK,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DACxB,SAAMgE,KAAKgtP,UACf7pP,MAAK,SAAOsY,GAA6B,qC,kCACxCzb,KAAKsd,WAAWoiU,UAAYjkU,EAASphB,KACrC2F,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,aACxCz/U,KAAKgxW,SAAWhxW,KAAKsd,WAAWoiU,UAChC1/U,KAAKkwW,eACLlwW,KAAKmwW,oB,aAENlkW,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,kBAaK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGI,YAAA3yT,YAAb,SAAyBjd,G,qBAAaxE,GAAO,W,6DACpC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK9C,OAEXg7J,YAAW,SAAOj9I,GAA2B,qC,oEACvCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK4wW,YAAYnzV,YAAYjd,EAAK+b,IAC5CpZ,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,gCAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,U,OASPkD,KAAKC,OAAO0zC,MAAM,qB,6CAfxB,MAAO,CAAP,EAAO,kBAoBI,YAAAu8T,aAAb,W,8EACE,IACElwW,KAAKgxW,SAAS7pW,SAAQ,SAAAD,GACpB,IAAImpW,EAA0B,GAC1BC,EAA+B,GAC/BppW,EAAE86C,UACJ96C,EAAE86C,SAAS76C,SAAQ,SAAO3G,GAAY,qC,wDAE7B,OADH+C,EAAa,IAAI,IACd,GAAMvD,KAAKstV,YAAYhxU,QAAQ9b,I,cAAtC+C,EAAO,SACP8sW,EAAan1W,KAAKqI,EAAK7F,M,cAGzBwJ,EAAEk7C,UAAYiuT,EAEVnpW,EAAE+6C,eACJ/6C,EAAE+6C,cAAc96C,SAAQ,SAAO3G,GAAY,qC,wDAElC,OADH+C,EAAa,IAAI,IACd,GAAMvD,KAAKstV,YAAYhxU,QAAQ9b,I,cAAtC+C,EAAO,SACP+sW,EAAkBp1W,KAAKqI,EAAK7F,M,cAG9BwJ,EAAEm7C,eAAiBiuT,KAGzB,MAAOxzW,I,iBAIE,YAAAqzW,kBAAb,W,8EACE,IACEnwW,KAAKgxW,SAAS7pW,SAAQ,SAAAD,GACpB,IAAIqpW,EAAiC,GACjCC,EAA2B,GAC3BtpW,EAAE46C,iBACJ56C,EAAE46C,gBAAgB36C,SAAQ,SAAO3G,GAAY,qC,wDAE/B,OADRuhD,EAAqB,IAAI,IACjB,GAAM/hD,KAAK+qT,mBAAmBzuS,QAAQ9b,I,cAAlDuhD,EAAY,SACZwuT,EAAoBr1W,KAAK6mD,EAAUrkD,M,cAGrCwJ,EAAEg7C,iBAAmBquT,EAEjBrpW,EAAE66C,WACJ76C,EAAE66C,UAAU56C,SAAQ,SAAO3G,GAAY,qC,wDAEzB,OADRuhD,EAAqB,IAAI,IACjB,GAAM/hD,KAAK+qT,mBAAmBzuS,QAAQ9b,I,cAAlDuhD,EAAY,SACZyuT,EAAct1W,KAAK6mD,EAAUrkD,M,cAG/BwJ,EAAEi7C,WAAaquT,KAGrB,MAAO1zW,I,iBAjIAm0W,EAAQ,GADpB,uB,uBAuByB,mB,OAAA,IAAN,oBAAM,SACU,mBADV,OACU,IAAX,UAAW,SACI,mBADJ,OACI,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACF,mBADE,OACF,IAAX,UAAW,SACc,mBADd,OACc,IAAlB,UAAkB,YA3BrCA,GAAb,I,2nBCPA,aAKE,aACEjxW,KAAKC,OAAS,aAAWC,UAAU,uBAqBvC,OAlBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPpI,SAAU,cACVoD,KAAM,aAGR,CACEgF,MAAO,eACPpI,SAAU,sBACVoD,KAAM,wBAtBDwzW,EAAmB,GAD/B,a,2BACYA,GAAb,I,4ECPAx1W,EAAOD,QAAU,uD,iECAjBC,EAAOD,QAAU,sxF,ypBCUjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,uB,MAqBvC,OAlBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPpI,SAAU,wBACVoD,KAAM,sBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,mDACpB+H,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsB28C,wBAxB5B8nG,EAAwB,GADpC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,2FCVAz1W,EAAOD,QAAU,uD,s/DCgBjB,aAOE,WACUm/D,EACA90D,EACAg9I,EACA4iM,EACA3lV,EACAqa,EACAivC,GANA,KAAAuR,QACA,KAAA90D,SACA,KAAAg9I,eACA,KAAA4iM,8BACA,KAAA3lV,OACA,KAAAqa,iBACA,KAAAivC,uBAERrpD,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,qBACnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,kBAyC5B,OArCgB,YAAA+H,SAAd,W,qBAA0B5c,GAAO,W,0DAGd,O,sBAAb,EAAAgE,KAAa,GAAMA,KAAKqpD,qBAAqBI,4B,cAA7C,EAAKjsC,MAAQ,SACfxd,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAGpB,YAAA6oV,yBAAR,WACE,kBACGvM,OAAO,SAASpyK,YAAY,yCAAyCwkD,WACrEn+K,GAAGrtC,KAAKwd,QAGC,YAAA49F,OAAd,SAAqB4wO,G,qBAA2BhwV,GAAO,W,kDACxC,SAAMgE,KAAK01U,qBAAqBrnS,Y,cAAhC,SACFsqK,MACF,GAAM34M,KAAK08D,KAAKsvR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,yBAKG,YAAAtvR,KAAd,SAAmBsvR,G,qBAA2BhwV,GAAO,W,6DAC5C,SAAMgE,KAAKqpD,qBAAqB3sC,OAAO1c,KAAKwd,OAChDra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6BACrB0rV,EAAD,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,wB,OAAzC,MAAO,CAAP,EAAO,U,2BAGViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,kBAjDEs0W,EAAe,GAF3B,uB,uBAU8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC9C,mBAD8C,OAC9C,IAAJ,gBAAI,SACoB,mBADpB,OACoB,IAAd,UAAc,SACY,mBADZ,OACY,IAApB,UAAoB,YAdzCA,GAAb,I,oGChBA11W,EAAOD,QAAU,gqC,26DCOjB,aAKE,WACUqK,EACAujD,GADA,KAAAvjD,SACA,KAAAujD,uBAGRrpD,KAAKC,OAAS,aAAWC,UAAU,qB,QAKvC,OAHe,YAAA0Y,SAAb,W,gGACuB,OAArB,EAAA5Y,KAAqB,GAAMA,KAAKqpD,qBAAqBI,4B,cAArD,EAAKC,cAAgB,S,YAbZ2nT,EAAe,GAD3B,uB,uBAOyB,mB,OAAA,IAAN,oBAAM,SAC4B,mBAD5B,OAC4B,IAApB,UAAoB,YAPzCA,GAAb,I,+oBCAA,aAKE,aACErxW,KAAKC,OAAS,aAAWC,UAAU,gCAqBvC,OAlBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPpI,SAAU,wBACVoD,KAAM,uBAGR,CACEgF,MAAO,iBACPpI,SAAU,gCACVoD,KAAM,kCAtBDwzW,EAAmB,GAD/B,a,2BACYA,GAAb,I,gGCPAx1W,EAAOD,QAAU,uD,mFCAjBC,EAAOD,QAAU,6lC,0+DCOjB,aAiCE,WAEUyoV,EACDn9Q,EACA++K,GAFC,KAAAo+F,gBACD,KAAAn9Q,UACA,KAAA++K,gBA7BF,KAAA/qI,aAAiBn9G,EAGjB,KAAAgB,MAAa,KAGb,KAAAy2G,UAAoB,EAGpB,KAAAgpG,YAAsB,EAGtB,KAAAizJ,gBAA0B,EAG1B,KAAAC,eAA2B,KAKxB,KAAA/hE,aAA2B,KAC3B,KAAA3+R,OAAiB,EAC3B,KAAA2gW,YAAsB,GAQpBxxW,KAAKC,OAAS,aAAWC,UAAU,a,cA4FvC,OAtFS,YAAAuxW,eAAP,sBAEEzxW,KAAK0xW,sBAEDhxW,MAAMC,QAAQX,KAAK+6G,WACrB/6G,KAAKwvS,aAAexvS,KAAK8lP,cAAcY,mBAAmB1mP,KAAK+6G,SAC5DhmG,WAAU,WAAM,SAAK48V,sBAE1B3xW,KAAK2xW,mBAKA,YAAA99D,aAAP,WACE7zS,KAAK2xW,mBAuBA,YAAAA,gBAAP,WACMjxW,MAAMC,QAAQX,KAAK+6G,SAGrB/6G,KAAK6Q,OAA8C,IAAtC7Q,KAAK+6G,QAAQ1pG,QAAQrR,KAAKpB,OAEvCoB,KAAK6Q,OAAQ,GAEY,IAAvB7Q,KAAK4xW,MAAMrxW,UACbP,KAAKwxW,YAAc,kBAKhB,YAAAK,iBAAP,WAEE,GAAKnxW,MAAMC,QAAQX,KAAK+6G,SAGxB,GAAI/6G,KAAK6Q,QAA+C,IAAtC7Q,KAAK+6G,QAAQ1pG,QAAQrR,KAAKpB,OAC1CoB,KAAK+6G,QAAQ7/G,KAAK8E,KAAKpB,YAClB,IAAKoB,KAAK6Q,MAAO,CACtB,IAAMlH,EAAQ3J,KAAK+6G,QAAQ1pG,QAAQrR,KAAKpB,QACzB,IAAX+K,GACF3J,KAAK+6G,QAAQ5jG,OAAOxN,EAAO,KAM1B,YAAA+nW,oBAAP,WAC4B,OAAtB1xW,KAAKwvS,eACPxvS,KAAKwvS,aAAa7jM,UAClB3rG,KAAKwvS,aAAe,OAIjB,YAAA9pO,OAAP,WACE1lE,KAAK0xW,uBAGO,YAAAI,oBAAd,W,qBAAqC91W,GAAO,W,6DACnC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAK4xW,QACXl5M,YAAW,SAAOj9I,GAA2B,qC,2BAC9C,MAAO,CAAP,GAAO,a,OAJT,MAAO,CAAP,EAAO,kBAtHT,GADC,W,gBACkB,mB,OAAA,IAAL,UAAK,W,4BAGnB,GADC,mBAAS,CAAEo8R,mBAAoB,cAAY3mB,S,sDAI5C,GADC,W,qDAID,GADC,W,yDAID,GADC,W,2DAID,GADC,W,+DAID,GADC,W,gBAC8B,mB,EAAA,oBAARpsQ,oBAAQ,W,qCAvBpBitV,EAAS,GADrB,a,uBAoCuC,mB,OAAA,IAAb,kCAAa,SACb,mBADa,EACb,oBAAPvqS,kBAAO,SACY,mBADZ,OACY,IAAb,kCAAa,YArC1BuqS,GAAb,I,sgECAA,aA4BE,WACU7tB,EACDn9Q,EACA++K,GAFC,KAAAo+F,gBACD,KAAAn9Q,UACA,KAAA++K,gBAvBF,KAAA/qI,aAAiBn9G,EAGjB,KAAAgB,MAAa,KAGb,KAAAy2G,UAAoB,EAGpB,KAAAgpG,YAAsB,EAGtB,KAAAizJ,gBAA0B,EAG1B,KAAAC,eAA2B,KAExB,KAAA/hE,aAA2B,KAC3B,KAAA3+R,OAAiB,EAC3B,KAAA2gW,YAAsB,GAKpBxxW,KAAKC,OAAS,aAAWC,UAAU,kB,cA6FvC,OAvFS,YAAAuxW,eAAP,sBAEEzxW,KAAK0xW,sBAEDhxW,MAAMC,QAAQX,KAAK+6G,WACrB/6G,KAAKwvS,aAAexvS,KAAK8lP,cAAcY,mBAAmB1mP,KAAK+6G,SAC5DhmG,WAAU,WAAM,SAAK48V,sBAE1B3xW,KAAK2xW,mBAKA,YAAA99D,aAAP,WACE7zS,KAAK2xW,mBAuBA,YAAAA,gBAAP,WACMjxW,MAAMC,QAAQX,KAAK+6G,SAGrB/6G,KAAK6Q,OAA8C,IAAtC7Q,KAAK+6G,QAAQ1pG,QAAQrR,KAAKpB,OAEvCoB,KAAK6Q,OAAQ,GAEY,IAAvB7Q,KAAK4xW,MAAMrxW,UACbP,KAAKwxW,YAAc,kBAKhB,YAAAK,iBAAP,WAEE,GAAKnxW,MAAMC,QAAQX,KAAK+6G,SAGxB,GAAI/6G,KAAK6Q,QAA+C,IAAtC7Q,KAAK+6G,QAAQ1pG,QAAQrR,KAAKpB,OAC1CoB,KAAK+6G,QAAQ7/G,KAAK8E,KAAKpB,YAClB,IAAKoB,KAAK6Q,MAAO,CACtB,IAAMlH,EAAQ3J,KAAK+6G,QAAQ1pG,QAAQrR,KAAKpB,QACzB,IAAX+K,GACF3J,KAAK+6G,QAAQ5jG,OAAOxN,EAAO,KAO1B,YAAA+nW,oBAAP,WAC4B,OAAtB1xW,KAAKwvS,eACPxvS,KAAKwvS,aAAa7jM,UAClB3rG,KAAKwvS,aAAe,OAIjB,YAAA9pO,OAAP,WACE1lE,KAAK0xW,uBAGO,YAAAI,oBAAd,W,qBAAqC91W,GAAO,W,6DACnC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAK4xW,QACXl5M,YAAW,SAAOj9I,GAA2B,qC,2BAC9C,MAAO,CAAP,GAAO,a,OAJT,MAAO,CAAP,EAAO,kBAjHT,GADC,W,gBACkB,mB,OAAA,IAAL,UAAK,W,4BAGnB,GADC,mBAAS,CAAEo8R,mBAAoB,cAAY3mB,S,sDAI5C,GADC,W,qDAID,GADC,W,yDAID,GADC,W,2DAID,GADC,W,+DAID,GADC,W,gBAC8B,mB,EAAA,oBAARpsQ,oBAAQ,W,qCAvBpBktV,EAAc,GAD1B,a,uBA8BuC,mB,OAAA,IAAb,kCAAa,SACb,mBADa,EACb,oBAAPxqS,kBAAO,SACY,mBADZ,OACY,IAAb,kCAAa,YA/B1BwqS,GAAb,I,2FCPAt2W,EAAOD,QAAU,qRAA6R,EAAQ,KAA4D,yrC,oECAlXC,EAAOD,QAAU,mRAA2R,EAAQ,KAA4D,ovC,w7DCQhX,aAKE,WACUw2W,EACAnvN,EACAxhG,GAFA,KAAA2wT,mBACA,KAAAnvN,eACA,KAAAxhG,mBANF,KAAA9jC,MAAe,IAAI,IAQzBxd,KAAKC,OAAS,aAAWC,UAAU,6B,UAcvC,OAVgB,YAAA0Y,SAAd,SAAuBg5V,G,qBAAa51W,GAAO,W,wDAE5B,OADbgE,KAAKC,OAAO0zC,MAAM,YAClB,EAAA3zC,KAAa,GAAMA,KAAKm8E,QAAQy1R,EAAMr1V,K,cAAtC,EAAKiB,MAAQ,SACbxd,KAAKwd,MAAMw3B,eAAiB48T,EAAM58T,e,YAGtB,YAAAmnC,QAAd,SAAsB5/D,G,qBAAavgB,GAAO,W,kDACjC,SAAMgE,KAAKiyW,iBAAiB31V,QAAQC,I,OAA3C,MAAO,CAAP,EAAO,kBArBE21V,EAAyB,GADrC,uB,uBAO6C,mB,OAAA,IAAhB,UAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SACQ,mBADR,OACQ,IAAhB,wCAAgB,YARjCA,GAAb,K,qGCRAx2W,EAAOD,QAAU,qnB,+6DCSjB,aAQE,WACUqnJ,EACAxhG,GADA,KAAAwhG,eACA,KAAAxhG,mBARF,KAAA9jC,MAAuB,IAAI,IAUjCxd,KAAKC,OAAS,aAAWC,UAAU,sB,QAqDvC,OAjDQ,YAAA0Y,SAAN,SAAe4E,G,qBAAexhB,GAAO,W,kCACnCgE,KAAKC,OAAO0zC,MAAM,YAClB3zC,KAAKwd,MAAQA,EAAMw3B,eAAe,GAClCh1C,KAAKtC,KAAO8f,EAAM9f,KAClBsC,KAAKyiQ,YAAcjlP,EAAMilP,Y,WAIpB,YAAA0vG,kBAAP,SAAyBruE,GAAzB,WACE9jS,KAAKC,OAAO0zC,MAAM,WAClB,IAAIx3B,EAAa2nR,EAAOtmS,OAAO+wO,MAAM,GAKrC,GADoB,IAAoBp9N,MAAM,UAAW,QACvC8P,QAAQ9E,GAAO,CAC/B,IAAIo/B,EAAqB,IAAID,WAC7BC,EAAOI,cAAcx/B,GACrBo/B,EAAOr+C,OAAS,WACd,EAAKsgB,MAAM40V,uBAAyBj2V,EAAKze,KACzC,EAAK8f,MAAMyhV,kBAAoB1lT,IAAI0B,gBAAgB9+B,SAIrDnc,KAAK8iJ,aAAahmJ,MAAM,6DAKrB,YAAAu1W,SAAP,SAAgBvuE,GAAhB,WACE9jS,KAAKC,OAAO0zC,MAAM,WAClB,IAAIx3B,EAAa2nR,EAAOtmS,OAAO+wO,MAAM,GAKrC,GADoB,IAAoBp9N,MAAM,UAAW,OACvC8P,QAAQ9E,GAAO,CAC/B,IAAIo/B,EAAqB,IAAID,WAC7BC,EAAOI,cAAcx/B,GACrBo/B,EAAOr+C,OAAS,WACd,EAAKsgB,MAAM80V,cAAgBn2V,EAAKze,KAChC,EAAK8f,MAAM+0V,SAAWh5T,IAAI0B,gBAAgB9+B,SAI5Cnc,KAAK8iJ,aAAahmJ,MAAM,6DA7DjB01W,EAAkB,GAD9B,uB,uBAUqC,mB,OAAA,IAAZ,UAAY,SACQ,mBADR,OACQ,IAAhB,wCAAgB,YAVjCA,GAAb,K,6FCTA92W,EAAOD,QAAU,45D,ioECkBjB,aAaE,WACUm/D,EACAyxR,EACAtsV,EACAkyW,EACAQ,EACAvuB,EACAphM,GAPV,WACU,KAAAloF,QACA,KAAAyxR,kBACA,KAAAtsV,OACA,KAAAkyW,mBACA,KAAAQ,2BACA,KAAAvuB,gBACA,KAAAphM,eAZF,KAAAxlI,WAAoC,IAAI,wBAoBxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,6DAC1B,SAAMgE,KAAKiyW,iBAAiBn+V,KAAK9T,KAAKgqC,WAAYhqC,KAAKsd,YAC3Dna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAPPkD,KAAKC,OAAS,aAAWC,UAAU,aAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,kBA4G5B,OA9FgB,YAAA+H,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,4CAM9B,YAAAmD,KAAd,W,qBAAsBnD,GAAO,W,wDAGV,OAFjBgE,KAAKC,OAAO0zC,MAAM,QAElB,EAAA3zC,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,U,OAGrC,OAHP,EAAKu9C,UAAY,SACjB96D,KAAKouW,kBAEE,GAAMpuW,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,kBAIF,YAAA6pB,gBAAP,WAEE,GADApuW,KAAKC,OAAO0zC,MAAM,mBACd3zC,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAAe,CAC1C,IAAI,EAAgB11J,KAAK6Q,MAAM6kJ,cAActvG,QACzCmoT,EAAavuW,KAAK86D,UAAU90D,MAAK,SAACwoW,GAA6B,OAAAA,EAAGpoT,UAAY,KAC9EmoT,IACFvuW,KAAKgqC,WAAaukU,EAAWhyV,MAKrB,YAAAgoU,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAKxb,OAAO0zC,MAAM,UAAWl4B,GAC7B,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAYK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAA/hG,KAAd,SAAmB7tO,G,qBAAcxE,GAAO,W,+DAG/B,OAFH60V,EAAe3/U,KAAKC,MAAMD,KAAKE,UAAU5Q,IAEtC,GAAMR,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKyyW,yBAAyB/1V,OAAOlc,EAAMR,KAAKgqC,YAC1D7mC,MAAK,SAAOqa,GAAoB,qC,kCAE/Bxd,KAAKC,OAAO0zC,MAAM,WAAYn2B,EAAMjB,IAEpC/b,EAAKw0C,eAAe,GAAGiqT,kBAAoBzhV,EAAMyhV,kBACjDj/V,KAAK8iJ,aAAaxiJ,QAAQ,0D,aAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,U,OAaPjC,OAAOgI,OAAOrC,EAAMqwV,G,6CAlBxB,MAAO,CAAP,EAAO,kBAuBK,YAAApzU,YAAd,SAA0Bjd,G,qBAAcxE,GAAO,W,6DAEtC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAKD,KAAKM,GAAGG,EAAK9C,QACxBg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKiyW,iBAAiBx0V,YAAYjd,EAAK+b,IACjDpZ,MAAK,WAGJ,EAAK2/I,aAAaxiJ,QAAQ,oEAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,U,OAWP0D,EAAK8F,UAAY9F,EAAK8F,S,6CAhB1B,MAAO,CAAP,EAAO,kBAzGT,GADC,W,0DALUosW,EAAS,GADrB,uB,uBAe8B,mB,OAAA,IAAZ,UAAY,SACa,mBADb,OACa,IAAf,UAAe,SACtB,mBADsB,OACtB,IAAJ,gBAAI,SACwB,mBADxB,OACwB,IAAhB,UAAgB,SACgB,mBADhB,OACgB,IAAxB,UAAwB,SACtB,mBADsB,OACtB,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YApBzBA,GAAb,I,+nBCXA,aAKE,aACE1yW,KAAKC,OAAS,aAAWC,UAAU,wBAevC,OAZE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPpI,SAAU,eACVoD,KAAM,iBAhBDgxW,EAAoB,GADhC,a,2BACYA,GAAb,I,+ECPAhzW,EAAOD,QAAU,uD,kECAjBC,EAAOD,QAAU,8wE,0pBCUjB,aAKE,WACUsE,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAERpsN,KAAKC,OAAS,aAAWC,UAAU,uB,QA2FvC,OAxFE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPpI,SAAU,mBACVoD,KAAM,iBACN4J,MAAOtH,KAAKD,KAAKM,GAAG,oCACpB+H,SAAU,CACRm7U,QAAQ,IAIZ,CACE7gV,MAAO,2BACPpI,SAAU,6DACVoD,KAAM,6CACN4J,MAAOtH,KAAKD,KAAKM,GAAG,wDACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB2kM,yBAClE9gQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBw8C,0BAE/B/oQ,KAAMH,KAAKD,KAAKM,GAAG,yDAIvB,CACEqC,MAAO,SACPpI,SAAU,mCACVoD,KAAM,0BACN4J,MAAOtH,KAAKD,KAAKM,GAAG,2CACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBklM,WAClErhQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsB+8C,YAE/BtpQ,KAAMH,KAAKD,KAAKM,GAAG,4CAIvB,CACEqC,MAAO,OACPpI,SAAU,gCACVoD,KAAM,yBACN4J,MAAOtH,KAAKD,KAAKM,GAAG,yCACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB8kM,kBAClEjhQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsB28C,mBAE/BlpQ,KAAMH,KAAKD,KAAKM,GAAG,0CAIvB,CACEqC,MAAO,iBACPpI,SAAU,oDACVoD,KAAM,mCACN4J,MAAOtH,KAAKD,KAAKM,GAAG,mDACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB8kM,kBAClEjhQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsB28C,mBAE/BlpQ,KAAMH,KAAKD,KAAKM,GAAG,oDAIvB,CACEqC,MAAO,QACPpI,SAAU,kCACVoD,KAAM,0BACN4J,MAAOtH,KAAKD,KAAKM,GAAG,gCACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB0lM,mBAClE7hQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBu9C,oBAE/B9pQ,KAAMH,KAAKD,KAAKM,GAAG,oCA5FhBsyW,EAAmB,GAD/B,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,uECVAj3W,EAAOD,QAAU,uD,4lBCIjB,aAEE,WAAoBqK,GAAA,KAAAA,S,MAKtB,OAPa8sW,EAAkB,GAD9B,a,uBAGmC,mB,OAAA,IAAN,oBAAM,YAFvBA,GAAb,I,+DCJAl3W,EAAOD,QAAU,ivB,0jECYjB,aAKE,WACUsE,EACA8yW,EACA/vN,EACAspE,GAHA,KAAArsN,OACA,KAAA8yW,yCACA,KAAA/vN,eACA,KAAAspE,uBAGRpsN,KAAKC,OAAS,aAAWC,UAAU,oB,YAqEvC,OAlEgB,YAAA0Y,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,yFAEnCslB,MAAMlhB,EAAO6d,aAChBje,KAAK6yW,uCAAuCz1V,OAAO87B,kBAAoB94C,EAAO6d,WAG3EqD,MAAMlhB,EAAOoqC,eAAd,MACkB,GAAMxqC,KAAK6yW,uCAAuCv2V,SAASlc,EAAOoqC,gB,QAAhF4K,EAAc,WAEDA,EAAYmkT,aAAe,IAAWS,cACjD8Y,EAAc9yW,KAAK8F,OAAOsJ,WAAWpJ,MAAK,SAAA5G,GAAK,MAAkB,oCAAlBA,EAAEoD,OAAO9E,WAE5Do1W,EAAYtwW,OAAO+N,KAAM,EACzBvQ,KAAK8F,OAAOsJ,WAAapP,KAAK8F,OAAOsJ,WAAWvK,QAAO,SAAAzF,GAAK,OAAiB,IAAjBA,EAAEoD,OAAO+N,Q,sDAK3EvQ,KAAK8iJ,aAAahmJ,MAAM,G,+BAI5B,YAAAmZ,gBAAA,SAAgBzT,EAA6BsD,GAC3CtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPhF,KAAM,0CACNpD,SAAU,4CACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,sDACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBokD,sDAInC,CACEpuQ,MAAO,mCACPhF,KAAM,oDACNpD,SAAU,uFACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,0DACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBokD,sDAInC,CACEpuQ,MAAO,iBACPhF,KAAM,kCACNpD,SAAU,uDACViW,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBojM,iBAClErgQ,MAAOtH,KAAKD,KAAKM,GAAG,uDACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBi7C,sBAMrC3nQ,KAAK8F,OAASA,GA9ELitW,EAAoC,GADhD,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACoE,mBADpE,OACoE,IAAtC,UAAsC,SACpD,mBADoD,OACpD,IAAZ,UAAY,SACgB,mBADhB,OACgB,IAApB,gDAAoB,YATzCA,GAAb,I,4JCZAr3W,EAAOD,QAAU,8M,0ICAjBC,EAAOD,QAAU,wd,qpECmBjB,aAaE,WACUm/D,EACAi4S,EACA/vN,EACA4iM,EACA5/U,EACDsxV,EACA4B,EACA9uT,EACCnqC,GARA,KAAA66D,QACA,KAAAi4S,yCACA,KAAA/vN,eACA,KAAA4iM,8BACA,KAAA5/U,SACD,KAAAsxV,mBACA,KAAA4B,kBACA,KAAA9uT,gBACC,KAAAnqC,OAjBF,KAAAud,WAAa,IAAI,wBACjB,KAAAE,MAAqB,IAAI,IACzB,KAAAs9C,UAAwB,GACxB,KAAAxqD,MAAgB,EAiBtBtQ,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAC1CjzU,KAAKC,OAAS,aAAWC,UAAU,uCACnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,sBA6F5B,OA1FS,YAAA80U,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,QAAQpyK,YAAY,+CAA+CwkD,WAC1E4tH,OAAO,cAAcpyK,YAAY,2DAA2DwkD,WAC5F4tH,OAAO,cAAcpyK,YAAY,mDAAmDwkD,WACpF4tH,OAAO,iBAAiBpyK,YAAY,0DAA0DwkD,WAC9Fn+K,GAAGrtC,KAAKwd,QAGC,YAAA5E,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,mEAIvB,O,sBAFjBgE,KAAKg3G,YAAa,EAElB,EAAAh3G,KAAiB,GAAMA,KAAKo3V,iBAAiB75U,U,cAA7C,EAAKu9C,UAAY,SACZx5C,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKie,WAAa7d,EAAO6d,UACzBje,KAAK6yW,uCAAuCz1V,OAAO87B,iBAAmBl5C,KAAKie,UAC3Eje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAC3Dje,KAAKg3G,YAAa,EAEb11F,MAAMlhB,EAAOoqC,eAAd,OACF,EAAAxqC,KAAa,GAAMA,KAAK6yW,uCAAuCv2V,SAASlc,EAAOoqC,kB,OAA/E,EAAKhtB,MAAQ,S,iBAEfxd,KAAK2lV,2B,sDAIP3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIf,YAAAs+G,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAEzC,OADPgE,KAAKC,OAAOE,KAAK,UACV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKwpR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,2BAGVj6U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWF,YAAAi9V,oBAAP,WACM/5V,KAAKwd,MAAM+7U,YAAc,IAAWC,UACtCx5V,KAAKg3G,YAAa,GAGhBh3G,KAAKwd,MAAM+7U,YAAc,IAAWS,cACtCh6V,KAAKwd,MAAM0sB,cAAgB,IAAcgwT,SACzCl6V,KAAKg3G,YAAa,IAItB,sBAAI,sBAAO,C,IAAX,WACE,OAAQh3G,KAAK6yW,uCAAuCz1V,OAAO7C,c,gCAGhD,YAAAmiD,KAAb,SAAkBwpR,G,qBAAuBlqV,GAAO,W,0DAC9CgE,KAAKC,OAAOE,KAAK,Q,gDAEVH,KAAKwd,MAAMjB,GAAZ,OACFvc,KAAKwd,MAAMw7U,gBAAkB,IAAgBK,OAC7Cr5V,KAAKwd,MAAMlN,MAAQtQ,KAAKsQ,MACI,GAAMtQ,KAAK6yW,uCAAuC5zW,OAAOe,KAAKwd,S,cAAtF/B,EAAwB,SAC5Bzb,KAAKwd,MAAMjB,GAAKd,EAASc,GACzBvc,KAAK8iJ,aAAaxiJ,QAAQ,6DAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,4C,OAAzC,MAAO,CAAP,EAAO,U,OAEA,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,kDAAmD,CAAEwhC,cAAexqC,KAAKwd,MAAMjB,M,OAAxH,MAAO,CAAP,EAAO,U,2BAIT,SAAMvc,KAAK6yW,uCAAuCn2V,OAAO1c,KAAKwd,Q,cAA9D,SACAxd,KAAK8iJ,aAAaxiJ,QAAQ,8DAErB4lV,EAAD,OACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,4C,OAAzC,MAAO,CAAP,EAAO,U,+CAKXhJ,KAAK8iJ,aAAahmJ,MAAM,G,iCArHjBk2W,EAAmC,GAD/C,uB,uBAe8B,mB,OAAA,IAAZ,UAAY,SAC2D,mBAD3D,OAC2D,IAAtC,UAAsC,SACpD,mBADoD,OACpD,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1C,mBAD0C,OAC1C,IAAN,oBAAM,SACsB,mBADtB,OACsB,IAAnB,UAAmB,SACL,mBADK,OACL,IAAf,UAAe,SACJ,mBADI,OACJ,IAAb,UAAa,SACjB,mBADiB,OACjB,IAAJ,gBAAI,YAtBTA,GAAb,I,sJCnBAt3W,EAAOD,QAAU,sjI,krECgBjB,aAWE,WACUm/D,EACAi4S,EACA3uB,EACAp+U,EACAg9I,EACDk2M,GANT,WACU,KAAAp+R,QACA,KAAAi4S,yCACA,KAAA3uB,gBACA,KAAAp+U,SACA,KAAAg9I,eACD,KAAAk2M,kBAdD,KAAA54V,OAAc,GAGd,KAAAkd,WAAa,IAAI,wBAEjB,KAAAivU,UAAoB,EAoDpB,KAAAv/F,QAAU,WAChB,OAAO,EAAK6lH,uCAAuC/+V,KAAK,EAAKwJ,aA1C7Dtd,KAAKC,OAAS,aAAWC,UAAU,uCACnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,gBAkG5B,OA/FgB,YAAA+H,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,yDACtCgE,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAIJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,oEACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAC1Bje,KAAKie,WACPje,KAAK6yW,uCAAuCz1V,OAAO87B,iBAAmBl5C,KAAKie,UAC3Eje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAC3Dje,KAAKusV,UAAW,EACT,GAAMvsV,KAAKukV,aAJhB,O,OAIF,MAAO,CAAP,EAAO,U,yBAKC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAGxB,OAFPgE,KAAKC,OAAO0zC,MAAM,YAEX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAKxb,OAAO0zC,MAAM,UAAWl4B,GAC7B,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAgBK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGI,YAAAtzT,OAAb,SAAoBP,EAAY7e,G,qBAAe1B,GAAO,W,6DAC7C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IACNg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK6yW,uCAAuC/1V,OAAOP,GAC7DpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOA,KACnF,EAAKe,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,kEAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAmBI,YAAA2gB,YAAb,SAAyBjd,G,qBAAoBxE,GAAO,W,6DAE3C,OADPgE,KAAKC,OAAO0zC,MAAM,gBAAiBnzC,EAAK8F,UACjC,GAAMtG,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK9C,OACXg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK6yW,uCAAuCp1V,YAAYjd,EAAK+b,IACvEpZ,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,6EAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,U,OASP0D,EAAK8F,UAAY9F,EAAK8F,S,6CAd1B,MAAO,CAAP,EAAO,kBAmBK,YAAA+hV,gBAAd,SAA8BC,G,mEAC5B,IACE,GAAkB,MAAdA,EACF,MAAO,CAAP,EAAOtoV,KAAK8F,OAAOyC,SAAS+/U,IAE9B,MAAOxrV,GACPkD,KAAK8iJ,aAAahmJ,MAAMA,G,iBAnHjBm2W,EAAmC,GAD/C,uB,uBAa8B,mB,OAAA,IAAZ,UAAY,SAC2D,mBAD3D,OAC2D,IAAtC,UAAsC,SAClD,mBADkD,OAClD,IAAb,kCAAa,SACd,mBADc,OACd,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SACK,mBADL,OACK,IAAf,UAAe,YAjB9BA,GAAb,I,2KCfA,mHAKA,GALA,KAKA,WAKE,aACEjzW,KAAKC,OAAS,aAAWC,UAAU,kDAqBvC,OAlBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,4CACVoD,KAAM,2CAIR,CACEgF,MAAO,oDACPpI,SAAU,oDACVoD,KAAM,sDAKd,EA3BA,K,gJCNAhC,EAAOD,QAAU,uD,qICAjBC,EAAOD,QAAU,47F,ovBCQjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,2C,MAwBvC,OArBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3CtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPhF,KAAM,uCACNpD,SAAU,yCACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,yDACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBokD,wDAOrC9wQ,KAAK8F,OAASA,GA9BLotW,EAAuC,GADnD,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,yKCRAx3W,EAAOD,QAAU,uD,wKCAjBC,EAAOD,QAAU,ic,svECwBjB,aAaE,WACUm/D,EACAu4S,EACAjvB,EACAphM,EACA4iM,EACAqV,EACAC,EACAl1V,EACC/F,EACDqsN,GATA,KAAAxxJ,QACA,KAAAu4S,sCACA,KAAAjvB,gBACA,KAAAphM,eACA,KAAA4iM,8BACA,KAAAqV,6BACA,KAAAC,yBACA,KAAAl1V,SACC,KAAA/F,OACD,KAAAqsN,uBApBF,KAAA5uM,MAAkB,IAAI,IAEtB,KAAApd,OAAc,GAKd,KAAAgzW,gBAA0B,EAC3B,KAAAhY,YAAsB,GAazBp7V,KAAKC,OAAS,aAAWC,UAAU,oCACnCF,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAC1CjzU,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,wBA0P9B,OAvPS,YAAA80U,yBAAP,sBACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,eAAepyK,YAAY,6DAA6DwkD,WAC/F4tH,OAAO,eAAepyK,YAAY,wDAAwDwkD,WAC1Fn+K,GAAGrtC,KAAKwd,OACXxd,KAAKwd,MAAMy8P,gBAAgB9yQ,SAAQ,SAAA0+G,GACjC,EAAK81O,sBAAsB91O,OAIvB,YAAA81O,sBAAR,SAA8B91O,GAC5B,kBACGuzN,OAAO,UACPpyK,YAAY,2DACZwkD,WACA8tH,WAAU,SAAA16U,GAAS,OAAAA,GAAS,GAAKA,GAAS,OAC1Cu6U,YAAYn5U,KAAKD,KAAKM,GAAG,2DACzBgtC,GAAGw4E,IAGM,YAAAjtG,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,gGAInCslB,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKC,OAAOE,KAAK,6BAA8BC,EAAO6qC,YACtDjrC,KAAKie,WAAa7d,EAAO6d,UACzBje,KAAKmzW,oCAAoC/1V,OAAO87B,iBAAmBl5C,KAAKie,UACxEje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aACtDqD,MAAMlhB,EAAO6qC,YAAd,OACF,EAAAjrC,KAAa,GAAMA,KAAKmzW,oCAAoC72V,SAASlc,EAAO6qC,e,cAA5E,EAAKztB,MAAQ,SAGTxd,KAAKosN,qBAAqB7nJ,aAAa,IAAsBojM,iBACtC,GAAM3nQ,KAAK+6V,2BAA2B/vT,sBAAsBhrC,KAAKwd,MAAMjB,KAD9F,M,OACE+/U,EAAqB,SACzBt8V,KAAKu8V,+BAA+BD,G,oCAG9Bh7U,MAAMlhB,EAAOoqC,gBAAmBlpB,MAAMlhB,EAAOo8V,kBACrDx8V,KAAKC,OAAO0zC,MAAM,0BAA2BvzC,EAAOo8V,gBACpDx8V,KAAKwd,MAAMgtB,cAAwBpqC,EAAOoqC,cAC1CxqC,KAAKwd,MAAMg+U,aAA6Bp7V,EAAOo8V,eAC/Cx8V,KAAKC,OAAO0zC,MAAM,4BAA6B,IAAa3zC,KAAKwd,MAAMg+U,eACvEx7V,KAAKozW,gBAAkBrvT,OAAO3jD,EAAOkQ,OAEjCtQ,KAAKwd,MAAMg+U,cAAgB,IAAakB,iBAAmB18V,KAAKwd,MAAMg+U,cAAgB,IAAamB,oBACrG38V,KAAK48V,mBAAkB,I,wBAI7B58V,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIf,YAAAu2W,YAAb,W,qBAA4Br3W,GAAO,W,0DAEf,O,sBAAA,GAAMgE,KAAKg7V,uBAAuBpuS,gBAAgB5sD,KAAKwd,MAAMjB,K,OACtE,OADH2gV,EAAY,SACT,GAAMl9V,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO0/U,IACNxkM,YAAW,WAAM,gB,OAHpB,MAAO,CAAP,EAAO,U,yBAKP14J,KAAK8iJ,aAAahmJ,MAAM,G,+BAIf,YAAAw2W,WAAb,W,qBAA2Bt3W,GAAO,W,uCAKhC,IAJqB,EACjB+T,EAAiB,GAEjBwjW,GADAC,EAAqB,kEACiB54W,OACjCF,EAAI,EAAGA,EAJK,EAIOA,IAC1BqV,GAAUyjW,EAAW7iW,OAAOwS,KAAKE,MAAMF,KAAKk3D,SAAWk5R,IAEzD,MAAO,CAAP,EAAOxjW,UAGI,YAAAqrG,OAAb,SAAoB4wO,G,qBAA2BhwV,GAAO,W,sCAEpD,OADAgE,KAAKC,OAAO0zC,MAAM,UACX,CAAP,EAAO3zC,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACL34M,KAAKwd,MAAMy8P,gBAAgBr/Q,OAAS,GAAKoF,KAAKwd,MAAMg+U,eAAiB,IAAakB,kBAChD,EAE3B,GAAM18V,KAAK08D,KAAKsvR,KAHvB,MADF,M,OAIE,MAAO,CAAP,EAAO,U,0BAGF,SAAMhsV,KAAK08D,KAAKsvR,I,OAAvB,MAAO,CAAP,EAAO,U,mCAMjB,sBAAI,sBAAO,C,IAAX,WACE,OAAQhsV,KAAKmzW,oCAAoC/1V,OAAO7C,c,gCAG7C,YAAAmiD,KAAb,SAAkBsvR,G,qBAA2BhwV,GAAO,W,0EAClDgE,KAAKC,OAAO0zC,MAAM,QACb3zC,KAAKwd,MAAMjB,GAAZ,OAEF,EAAAvc,KAAKwd,MAAcxd,KAAKwd,MAAM22C,MAAmC,KAA3Bn0D,KAAKwd,MAAM22C,KAAKxN,QAAiB,EAAA3mD,KAAKwd,MAAM22C,K,OAAhE,O,OAAuE,SAAMn0D,KAAKszW,c,OAAX,W,iBAUlF,OAVP,EAAWn/S,KAAO,EAClBn0D,KAAKwd,MAAMlN,MAAQtQ,KAAKwd,MAAMlN,MAC9BtQ,KAAKwd,MAAMigV,YAAcz9V,KAAKwd,MAAMigV,YACpCz9V,KAAKwd,MAAMi2V,yBAA2BzzW,KAAKwd,MAAMg+U,cAAgB,IAAa2D,QAAgB,KAC9Fn/V,KAAKwd,MAAMk2V,sBAAwB1zW,KAAKwd,MAAMg+U,cAAgB,IAAa2D,QAAgB,KAC3Fn/V,KAAKwd,MAAMksV,oBAAuB1pW,KAAKwd,MAAMg+U,cAAgB,IAAamB,oBAAsB38V,KAAKwd,MAAMg+U,cAAgB,IAAagC,8BAAuC,KAC/Kx9V,KAAKwd,MAAMosV,YAAc5pW,KAAKwd,MAAMg+U,cAAgB,IAAamB,mBAAqB,EAAI,KAC1F38V,KAAKwd,MAAMqsV,YAAe7pW,KAAKwd,MAAMg+U,cAAgB,IAAamB,oBAAsB38V,KAAKwd,MAAMg+U,cAAgB,IAAagC,6BAAgC,IAAO,KACvKx9V,KAAKwd,MAAMosV,YAAc5pW,KAAKwd,MAAMg+U,cAAgB,IAAagC,6BAA+B,EAAI,KAE7F,GAAMx9V,KAAKmzW,oCAAoCl0W,OAAOe,KAAKwd,OAC/Dra,MAAK,SAAO07V,GAAkB,qC,yDAC7B7+V,KAAK8iJ,aAAaxiJ,QAAQ,oEACrB0rV,EAAD,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,qC,OAAzC,MAAO,CAAP,EAAO,U,OAGA,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,+CAAgD,CAAEiiC,WAAY4zT,EAAStiV,M,OAAhH,MAAO,CAAP,EAAO,oBAGVtQ,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAX5B,MAAO,CAAP,EAAO,U,OA0BA,MAXwB,IAA3BkD,KAAKo7V,YAAYz0S,UACf+3S,EAAmC,IAAI,KAC3BniV,GAAK,EACrBmiV,EAAgBtD,YAAcp7V,KAAKo7V,YACnCsD,EAAgBzzT,WAAajrC,KAAKwd,MAAMjB,GACnCvc,KAAKwd,MAAM48P,oBACdp6Q,KAAKwd,MAAM48P,kBAAoB,IAAI15Q,OAErCV,KAAKwd,MAAM48P,kBAAkBl/Q,KAAKwjW,IAG7B,GAAM1+V,KAAKmzW,oCAAoCz2V,OAAO1c,KAAKwd,OAC/Dra,MAAK,SAAOqa,GAAe,qC,yDAC1Bxd,KAAK8iJ,aAAaxiJ,QAAQ,qEAC1BN,KAAKwd,MAAM48P,kBAAoB,IAAI15Q,MACnCV,KAAKo7V,YAAc,GACdpP,EAAD,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,qC,OAAzC,MAAO,CAAP,EAAO,U,2BAGViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,kBAeJ,YAAA8/V,kBAAP,SAAyBkC,GACvB9+V,KAAKC,OAAOE,KAAK,oBACjB,IAAI4+V,EAAiC,IAAI,IACzCA,EAAexiV,GAAK,EACpBwiV,EAAezuV,MAAQtQ,KAAKwd,MAAMy8P,gBAAgBr/Q,OAClDmkW,EAAeD,SAAWA,EAC1BC,EAAel5O,OAAS,GACxBk5O,EAAeU,OAAS,EACxBz/V,KAAKwd,MAAMy8P,gBAAgB/+Q,KAAK6jW,GAChC/+V,KAAK27V,sBAAsBoD,IAGtB,YAAAC,qBAAP,SAA4Br1V,GAC1B,IAAIo1V,EAAiB/+V,KAAKwd,MAAMy8P,gBAAgBtwQ,GAEhD3J,KAAK01U,qBAAqB/C,aAAaosB,GAEvC/+V,KAAKwd,MAAMy8P,gBAAgB9iQ,OAAOxN,EAAO,IAGpC,YAAA6+U,QAAP,SAAe1kD,EAAatjS,GAC1BR,KAAKC,OAAO0zC,MAAM,WAClB,IAAIx3B,EAAa2nR,EAAOtmS,OAAO+wO,MAAM,GAErC,GADoB,IAAoBp9N,MAAM,UAAW,QACvC8P,QAAQ9E,GAAO,CAC/B,IAAI,EAAqB,IAAIm/B,WAC7B,EAAOK,cAAcx/B,GACrB,EAAOjf,OAAS,WACd,IAAI8vV,EAAkB,EAAOj9U,OAC7BvP,EAAKkmJ,eAAiBsmM,EACtBxsV,EAAKqlH,OAAS1pG,EAAKze,KACnB8C,EAAKy+V,kBAAoB1lT,IAAI0B,gBAAgB9+B,SAI/Cnc,KAAK8iJ,aAAahmJ,MAAM,oEAKrB,YAAAqwV,UAAP,SAAiB3sV,GACfA,EAAKqlH,OAAS,KACdrlH,EAAKkmJ,eAAiB,KACtBlmJ,EAAKy+V,kBAAoB,MAGpB,YAAAC,8BAAP,WACEl/V,KAAKC,OAAO0zC,MAAM,iCAClB,IAAI5jC,EAAqB,GAEzB,OADA/P,KAAKC,OAAO0zC,MAAM,wDAAyD3zC,KAAKwd,MAAMg+U,eAC7Ex7V,KAAKwd,MAAMg+U,cAClB,KAAK,IAAaC,iBAClB,KAAK,IAAa6B,sBAClB,KAAK,IAAaE,6BAClB,KAAK,IAAa9B,mBAClB,KAAK,IAAa6B,wBAClB,KAAK,IAAa4B,OAChBn/V,KAAKC,OAAO0zC,MAAM,oBAClB5jC,EAASlV,OAAO0Z,KAAK,KAClB1P,QAAO,SAAA3F,GAAO,WAAYA,KAAS,IAAYw+V,YAAc,IAAYx+V,KAAS,IAAYkgW,WAC9Fz6V,KAAI,SAAAzF,GAAO,OAAGqd,GAAI,IAAYrd,GAAMxB,KAAMwB,MAC7C,MACF,KAAK,IAAaw9V,gBAChB18V,KAAKC,OAAO0zC,MAAM,gCAClB5jC,EAASlV,OAAO0Z,KAAK,KAClB1P,QAAO,SAAA3F,GAAO,WAAYA,KAAS,IAAYmgW,aAAe,IAAYngW,KAAS,IAAY2vF,SAAW,IAAY3vF,KAAS,IAAYogW,YAC3I36V,KAAI,SAAAzF,GAAO,OAAGqd,GAAI,IAAYrd,GAAMxB,KAAMwB,MAC7C,MACF,KAAK,IAAay9V,mBAChB38V,KAAKC,OAAO0zC,MAAM,mCAClB5jC,EAASlV,OAAO0Z,KAAK,KAClB1P,QAAO,SAAA3F,GAAO,WAAYA,KAAS,IAAYw+V,YAAc,IAAYx+V,KAAS,IAAYkgW,SAAW,IAAYlgW,KAAS,IAAY2vF,WAC1IlqF,KAAI,SAAAzF,GAAO,OAAGqd,GAAI,IAAYrd,GAAMxB,KAAMwB,MAMjD,OADAc,KAAKC,OAAO0zC,MAAM,wCAAyC5jC,GACpDA,GAGD,YAAAwsV,+BAAR,SAAuCgD,GACrC,GAAK7+V,MAAMC,QAAQ4+V,GACnB,I,eAAWC,GACT,IAAM35O,EAAS,EAAKroG,MAAMy8P,gBAAgBj0Q,MAAK,SAAA3H,GAAK,OAAAA,EAAEke,KAAOijV,EAAUjjV,MACnEspG,IACFA,EAAO45O,OAASD,EAAUC,S,OAHN,MAAAF,EAAA,eAAS,C,EAAb,QA9QXoU,EAAgC,GAD5C,uB,uBAe8B,mB,OAAA,IAAZ,UAAY,SACqD,mBADrD,OACqD,IAAnC,UAAmC,SAC5C,mBAD4C,OAC5C,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACF,mBADE,OACF,IAA1B,UAA0B,SACR,mBADQ,OACR,IAAtB,UAAsB,SAChC,mBADgC,OAChC,IAAN,oBAAM,SACH,mBADG,OACH,IAAJ,gBAAI,SAC+B,mBAD/B,OAC+B,IAApB,gDAAoB,YAvBzCA,GAAb,I,oLCxBAj4W,EAAOD,QAAU,owP,srECmBjB,aAeE,WACUm/D,EACAspR,EACAivB,EACAN,EACA/S,EACAh6V,EACAg9I,EACD04M,GART,WACU,KAAA5gS,QACA,KAAAspR,gBACA,KAAAivB,sCACA,KAAAN,yCACA,KAAA/S,kCACA,KAAAh6V,SACA,KAAAg9I,eACD,KAAA04M,eAnBD,KAAAl+U,WAAoC,IAAI,wBAExC,KAAAld,OAAc,GAId,KAAAmsV,UAAoB,EAEpB,KAAAyT,eAAyB,IAAOvlV,aAAe,4DA+D/C,KAAAuyO,QAAU,WAChB,OAAO,EAAKmmH,oCAAoCr/V,KAAK,EAAK02B,cAAe,EAAKltB,aApD5Etd,KAAKC,OAAS,aAAWC,UAAU,oCACnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,oBA2G9B,OAxGgB,YAAA+H,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,yDACtCgE,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,wBAGhBJ,KAAKC,OAAO0zC,MAAM,+BAAgCvzC,EAAOoqC,eACpDlpB,MAAMlhB,EAAOoqC,iBAChBxqC,KAAKwqC,eAAiBpqC,EAAOoqC,e,YAInB,YAAArrC,KAAd,W,qBAAsBnD,GAAO,W,sEACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAC1Bje,KAAKie,WACPje,KAAKmzW,oCAAoC/1V,OAAO87B,iBAAmBl5C,KAAKie,UACxEje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAC3Dje,KAAKusV,UAAW,EAChB,EAAAvsV,KAAgC,GAAMA,KAAK8/V,gCAAgCrzS,gCAAgCzsD,KAAKwqC,iBAJ9G,O,OAKK,OADP,EAAKy1T,yBAA2B,SACzB,GAAMjgW,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yBAKA,YAAAA,SAAb,W,qBAAyBvoV,GAAO,W,6DAIvB,OAHPgE,KAAKC,OAAO0zC,MAAM,YAClB3zC,KAAKsd,WAAWqiU,YAAc,EAC9B3/U,KAAKsd,WAAWg+F,KAAO,EAChB,GAAMt7G,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAKxb,OAAO0zC,MAAM,UAAWl4B,GAC7B,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAOK,YAAAtzT,OAAd,SAAqBP,EAAY7e,G,qBAAe1B,GAAO,W,6DAC9C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IACNg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKmzW,oCAAoCr2V,OAAOP,GAC1DpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOA,KACnF,EAAKe,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,gEAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAmBK,YAAAojW,qBAAd,SAAmC1/V,G,qGAC1B,SAAMR,KAAK8/V,gCAAgCpjV,OAAOlc,GACpD2C,MAAK,SAAOqa,GAA+B,qC,kCAC1Cxd,KAAKC,OAAO0zC,MAAM,WAAYn2B,EAAMjB,IACpC/b,EAAK+b,GAAKiB,EAAMjB,GAChBvc,KAAK8iJ,aAAaxiJ,QAAQ,qF,aAE3B2L,OAAM,SAAMnP,GAAK,qC,kDAChB,SAAMkD,KAAKukV,Y,cAAX,SACAvkV,KAAK8iJ,aAAahmJ,MAAMA,G,sBAR9B,MAAO,CAAP,EAAO,kBAYI,YAAA2gB,YAAb,SAAyBjd,G,qBAAiBxE,GAAO,W,6DAEtC,OADPgE,KAAKC,OAAO0zC,MAAM,iBAAkBnzC,EAAKw5Q,WAClC,GAAMh6Q,KAAKmzW,oCAAoC11V,YAAYjd,EAAK+b,IACpEpZ,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,0EAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBASE,YAAAqjW,WAAb,SAAwB31T,EAAuBruB,G,qBAAangB,GAAO,W,kDAClD,SAAMgE,KAAKmzW,oCAAoC/nU,WAAWZ,EAAeruB,I,OACxF,MAAO,CAAP,EADe,kBAIJ,YAAAovB,cAAb,SAA2Bf,G,qBAAwBxuC,GAAO,W,kDACxD,OAAKwuC,EACH,GAAMxqC,KAAK6yW,uCAAuCtnU,cAAcf,IAD9C,I,cAClB,S,YAhIM,GAAT,W,6DAFUopU,EAAgC,GAD5C,uB,uBAiB8B,mB,OAAA,IAAZ,UAAY,SACS,mBADT,OACS,IAAb,kCAAa,SAC4C,mBAD5C,OAC4C,IAAnC,UAAmC,SACO,mBADP,OACO,IAAtC,UAAsC,SACf,mBADe,OACf,IAA/B,UAA+B,SAClD,mBADkD,OAClD,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SACD,mBADC,OACD,IAAZ,UAAY,YAvBxBA,GAAb,I,gxBCXA,aAKE,WACU7zW,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,+C,MA8CvC,OA3CE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,yCACVoD,KAAM,oCAGR,CACEgF,MAAO,cACPpI,SAAU,iDACVoD,KAAM,gDAGR,CACEgF,MAAO,SACPhF,KAAM,wDACNpD,SAAU,mDACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,wDACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBokD,sDAKnC,CACEpuQ,MAAO,CAAC,0BACRhF,KAAM,yCACNpD,SAAU,iDACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,mDACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBokD,yDA9C5B+iG,EAA2C,GADvD,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,8KCRAn4W,EAAOD,QAAU,uD,mKCAjBC,EAAOD,QAAU,+0J,suBCOjB,aAME,WACUqK,EACAg9I,GADA,KAAAh9I,SACA,KAAAg9I,eAER9iJ,KAAKC,OAAS,aAAWC,UAAU,6CACnCF,KAAKsgW,QAAU,gB,QAkBnB,OAdS,YAAA1nV,SAAP,SAAgBxY,GACdJ,KAAKC,OAAOE,KAAK,+BAAgCC,EAAOoqC,eACnDlpB,MAAMlhB,EAAOoqC,eAGhBxqC,KAAK8F,OAAOyC,SAAS,wCAFrBvI,KAAKwqC,eAAiBpqC,EAAOoqC,eAM1B,YAAA+1T,eAAP,SAAsBjjW,GACpB0C,KAAKC,OAAOE,KAAK,6BAA8B7C,GAC/C0C,KAAK8F,OAAOyC,SAAS,UAAUjL,IA1BtBw2W,EAAyC,GADrD,uB,uBAQyB,mB,OAAA,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,YARzBA,GAAb,I,6KCPAp4W,EAAOD,QAAU,q+I,4rBCQjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,oB,MAqCvC,OAlCE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3CtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPhF,KAAM,kCACNpD,SAAU,oCACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,8CACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBikD,iDAKnC,CACEjuQ,MAAO,2BACPhF,KAAM,4CACNpD,SAAU,uEACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,kDACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBikD,mDAOrC3wQ,KAAK8F,OAASA,GA3CLiuW,EAA6B,GADzC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,2HCRAr4W,EAAOD,QAAU,8M,0HCAjBC,EAAOD,QAAU,wd,wqEC8BjB,aAoBE,WACUm/D,EACAo5S,EACAC,EACAnxN,EACA4iM,EACA5/U,EACAouW,EACAC,EACAC,EACDhd,EACA4B,EACA9uT,EACCnqC,EACA0b,GAbA,KAAAm/C,QACA,KAAAo5S,kCACA,KAAAC,+BACA,KAAAnxN,eACA,KAAA4iM,8BACA,KAAA5/U,SACA,KAAAouW,kBACA,KAAAC,kBACA,KAAAC,mBACD,KAAAhd,mBACA,KAAA4B,kBACA,KAAA9uT,gBACC,KAAAnqC,OACA,KAAA0b,WA3BF,KAAA6B,WAAa,IAAI,wBACjB,KAAAE,MAAqB,IAAI,IACzB,KAAAs9C,UAAwB,GACxB,KAAAm/M,gBAAoC,GAEpC,KAAAo6F,YAAsB,GACtB,KAAA/jW,MAAgB,EAMjB,KAAA+4B,kBAA4B,EAkBjCrpC,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,gCAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,gCAyK5B,OAtKS,YAAA80U,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,QAAQpyK,YAAY,uCAAuCwkD,WAClE4tH,OAAO,cAAcpyK,YAAY,uCAAuCwkD,WACxE4tH,OAAO,cAAcpyK,YAAY,2CAA2CwkD,WAC5E4tH,OAAO,iBAAiBpyK,YAAY,kDAAkDwkD,WACtFn+K,GAAGrtC,KAAKwd,QAGC,YAAA5E,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,mEAIvB,O,sBAFjBgE,KAAKg3G,YAAa,EAElB,EAAAh3G,KAAiB,GAAMA,KAAKo3V,iBAAiB75U,U,cAA7C,EAAKu9C,UAAY,SACZx5C,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKie,WAAa7d,EAAO6d,UACzBje,KAAKg0W,gCAAgC52V,OAAO87B,iBAAmBl5C,KAAKie,UACpEje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE5BrgB,MAA3BwC,EAAOipC,mBACTrpC,KAAKqpC,iBAAmBn4B,KAAKC,MAAM/Q,EAAOipC,mBAE5CrpC,KAAKs0W,yBAAyBt0W,KAAKqpC,kBAE9B/nB,MAAMlhB,EAAOoqC,eAAd,OACF,EAAAxqC,KAAa,GAAMA,KAAKg0W,gCAAgC13V,SAASlc,EAAOoqC,kB,OAAxE,EAAKhtB,MAAQ,S,iBAEfxd,KAAK2lV,2B,sDAIP3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIf,YAAAs+G,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAKzC,OAJPgE,KAAKC,OAAOE,KAAK,UACbH,KAAKwd,MAAM+7U,YAAc,IAAWgb,iBACtCv0W,KAAKkqC,cAAiB,IAAcovT,QAE/B,GAAMt5V,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKwpR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,2BAGVj6U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAUF,YAAAw3W,yBAAP,SAAgCjrU,GAC1BA,GACFrpC,KAAKwd,MAAM+7U,WAAa,IAAWgb,eACnCv0W,KAAKwd,MAAM0sB,cAAgB,IAAcovT,OACzCt5V,KAAKg3G,YAAa,GAGlBh3G,KAAKg3G,YAAa,GAEf,YAAA+iP,oBAAP,WACM/5V,KAAKwd,MAAM+7U,YAAc,IAAWC,UACtCx5V,KAAKg3G,YAAa,GAEhBh3G,KAAKwd,MAAM+7U,YAAc,IAAWgb,gBAAkBv0W,KAAKwd,MAAM+7U,YAAc,IAAWib,aAC5Fx0W,KAAKwd,MAAM0sB,cAAgB,IAAcovT,OACzCt5V,KAAKg3G,YAAa,GAEhBh3G,KAAKwd,MAAM+7U,YAAc,IAAWkb,kBAAoBz0W,KAAKwd,MAAM+7U,YAAc,IAAWmb,eAC9F10W,KAAKwd,MAAM0sB,cAAgB,IAAcyqU,KACzC30W,KAAKg3G,YAAa,GAEhBh3G,KAAKwd,MAAM+7U,YAAc,IAAWS,cACtCh6V,KAAKwd,MAAM0sB,cAAgB,IAAcgwT,SACzCl6V,KAAKg3G,YAAa,IAMtB,sBAAI,sBAAO,C,IAAX,WACE,OAAQh3G,KAAKg0W,gCAAgC52V,OAAO7C,c,gCAEzC,YAAA+4V,WAAb,W,qBAA2Bt3W,GAAO,W,uCAKhC,IAJuB,EACnB+T,EAAiB,GAEfwjW,GADAC,EAAqB,kEACiB54W,OACnCF,EAAI,EAAGA,EAJO,EAIKA,IAC1BqV,GAAUyjW,EAAW7iW,OAAOwS,KAAKE,MAAMF,KAAKk3D,SAAWk5R,IAEzD,MAAO,CAAP,EAAOxjW,UAEI,YAAA6kW,oBAAb,SAAiCpqU,G,oGAKH,OAJ5BxqC,KAAKk0W,gBAAgBzW,YAAc,IAAY5uQ,QAC/C7uF,KAAKk0W,gBAAgB1Y,aAAe,IAAakB,gBACjD18V,KAAKk0W,gBAAgB5jW,MAAQ,EAC7BtQ,KAAKk0W,gBAAgBzV,YAAcz+V,KAAKD,KAAKM,GAAG,6DAChD,EAAAL,KAAKk0W,gBAAuB,GAAMl0W,KAAKszW,c,OAEvC,OAFA,EAAqBn/S,KAAO,SAC5Bn0D,KAAKk0W,gBAAgB1pU,cAAgBA,EACrC,GAAMxqC,KAAKi0W,6BAA6Bh1W,OAAOe,KAAKk0W,kB,OAMvB,OAN7B,SAEAl0W,KAAKo0W,iBAAiB3W,YAAc,IAAY6B,SAChDt/V,KAAKo0W,iBAAiB5Y,aAAe,IAAakB,gBAClD18V,KAAKo0W,iBAAiB9jW,MAAQ,EAC9BtQ,KAAKo0W,iBAAiB3V,YAAcz+V,KAAKD,KAAKM,GAAG,8DACjD,EAAAL,KAAKo0W,iBAAwB,GAAMp0W,KAAKszW,c,OAExC,OAFA,EAAsBn/S,KAAO,SAC7Bn0D,KAAKo0W,iBAAiB5pU,cAAgBA,EACtC,GAAMxqC,KAAKi0W,6BAA6Bh1W,OAAOe,KAAKo0W,mB,OAWxB,OAX5B,SAEAp0W,KAAKm0W,gBAAgB1W,YAAc,IAAY2B,QAC/Cp/V,KAAKm0W,gBAAgB3Y,aAAe,IAAamB,mBACjD38V,KAAKyb,SAASnL,MAAQ,EACtBtQ,KAAKyb,SAASoqG,OAAS,IACvB7lH,KAAKyb,SAASqjV,UAAW,EACzB9+V,KAAKi6Q,gBAAkB,CAACj6Q,KAAKyb,UAC7Bzb,KAAKm0W,gBAAgBl6F,gBAAkBj6Q,KAAKi6Q,gBAC5Cj6Q,KAAKm0W,gBAAgB7jW,MAAQ,EAC7BtQ,KAAKm0W,gBAAgB1V,YAAcz+V,KAAKD,KAAKM,GAAG,6DAChD,EAAAL,KAAKm0W,gBAAuB,GAAMn0W,KAAKszW,c,OAEvC,OAFA,EAAqBn/S,KAAO,SAC5Bn0D,KAAKm0W,gBAAgB3pU,cAAgBA,EACrC,GAAMxqC,KAAKi0W,6BAA6Bh1W,OAAOe,KAAKm0W,kB,cAApD,S,YAIW,YAAAz3S,KAAb,SAAkBwpR,G,qBAAuBlqV,GAAO,W,0DAC9CgE,KAAKC,OAAOE,KAAK,Q,gDAGVH,KAAKwd,MAAMjB,GAAZ,OACFvc,KAAKwd,MAAMw7U,gBAAkB,IAAgBK,OAC7Cr5V,KAAKwd,MAAM62V,YAAcr0W,KAAKq0W,YAC9Br0W,KAAKwd,MAAMlN,MAAQtQ,KAAKsQ,MAEI,GAAMtQ,KAAKg0W,gCAAgC/0W,OAAOe,KAAKwd,S,cAA/E/B,EAAwB,SACxBzb,KAAKqpC,kBAAoB68S,GAC3BlmV,KAAK40W,oBAAoBn5V,EAASc,IAC3B,GAAMvc,KAAK8F,OAAOkD,gBAAgB,iCAAkC,CAAEwzV,eAAgB,IAAaG,mBAAoBnyT,cAAe/uB,EAASc,GAAI8sB,kBAAkB,EAAM/4B,MAAO,MAFvL,M,OAEF,MAAO,CAAP,EAAO,U,cAETtQ,KAAKwd,MAAMjB,GAAKd,EAASc,GAEzBvc,KAAK8iJ,aAAaxiJ,QAAQ,6DAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,oC,OAAzC,MAAO,CAAP,EAAO,U,OAEA,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,0CAA2C,CAAEwhC,cAAexqC,KAAKwd,MAAMjB,M,OAAhH,MAAO,CAAP,EAAO,U,2BAKT,SAAMvc,KAAKg0W,gCAAgCt3V,OAAO1c,KAAKwd,Q,eAAvD,SAEAxd,KAAK8iJ,aAAaxiJ,QAAQ,8DAErB4lV,EAAD,OACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,oC,QAAzC,MAAO,CAAP,EAAO,U,+CAMXhJ,KAAK8iJ,aAAahmJ,MAAM,G,iCA/MjB+3W,EAA4B,GADxC,uB,uBAsB8B,mB,OAAA,IAAZ,UAAY,SAC6C,mBAD7C,OAC6C,IAA/B,UAA+B,SACN,mBADM,OACN,IAA5B,UAA4B,SAChC,mBADgC,OAChC,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1C,mBAD0C,OAC1C,IAAN,oBAAM,SACW,mBADX,OACW,IAAR,UAAQ,SACA,mBADA,OACA,IAAR,UAAQ,SACC,mBADD,OACC,IAAR,UAAQ,SACU,mBADV,OACU,IAAnB,UAAmB,SACL,mBADK,OACL,IAAf,UAAe,SACJ,mBADI,OACJ,IAAb,UAAa,SACjB,mBADiB,OACjB,IAAJ,gBAAI,SACc,mBADd,OACc,IAAd,UAAc,YAlCvBA,GAAb,I,sIC9BAn5W,EAAOD,QAAU,q7J,4pECgBjB,aAeE,WACUm/D,EACAo5S,EACA9vB,EACAp+U,EACAg9I,EACDk2M,GANT,WACU,KAAAp+R,QACA,KAAAo5S,kCACA,KAAA9vB,gBACA,KAAAp+U,SACA,KAAAg9I,eACD,KAAAk2M,kBAjBD,KAAA54V,OAAc,GAId,KAAAkd,WAAa,IAAI,wBAGjB,KAAAivU,UAAoB,EAErB,KAAAuoB,sBAAgC,EA4B/B,KAAA9nH,QAAU,WAEhB,OADA,EAAK8nH,qBAAuB,EAAKhvW,OAAOyI,OAAOnI,mBAAmB5D,OAAO4F,SAAS2sW,qBAC3E,EAAKf,gCAAgClgW,KAAK,EAAKwJ,WAAW,EAAKw3V,uBApBtE90W,KAAKC,OAAS,aAAWC,UAAU,gCAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,gBA8F5B,OA3FgB,YAAA+H,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,yDAGtCgE,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAUJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,oEACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAC1Bje,KAAKie,WACPje,KAAKg0W,gCAAgC52V,OAAO87B,iBAAmBl5C,KAAKie,UACpEje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAC3Dje,KAAKusV,UAAW,EACT,GAAMvsV,KAAKukV,aAJhB,O,OAIF,MAAO,CAAP,EAAO,U,yBAKC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAGxB,OAFPgE,KAAKC,OAAO0zC,MAAM,YAEX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAKxb,OAAO0zC,MAAM,UAAWl4B,GAC7B,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAYK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGI,YAAAtzT,OAAb,SAAoBP,EAAY7e,G,qBAAe1B,GAAO,W,6DAC7C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IACNg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKg0W,gCAAgCl3V,OAAOP,GACtDpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOA,KACnF,EAAKe,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,kEAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAmBI,YAAA2gB,YAAb,SAAyBjd,G,qBAAoBxE,GAAO,W,6DAE3C,OADPgE,KAAKC,OAAO0zC,MAAM,gBAAiBnzC,EAAK8F,UACjC,GAAMtG,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK9C,OACXg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKg0W,gCAAgCv2V,YAAYjd,EAAK+b,IAChEpZ,MAAK,WAEJ,EAAK2/I,aAAaxiJ,QAAQ,mFAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,U,OAUP0D,EAAK8F,UAAY9F,EAAK8F,S,6CAf1B,MAAO,CAAP,EAAO,kBAnGE0uW,EAA4B,GADxC,uB,uBAiB8B,mB,OAAA,IAAZ,UAAY,SAC6C,mBAD7C,OAC6C,IAA/B,UAA+B,SACpC,mBADoC,OACpC,IAAb,kCAAa,SACd,mBADc,OACd,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SACK,mBADL,OACK,IAAf,UAAe,YArB9BA,GAAb,I,2JCfA,4GAKA,GALA,KAKA,WAKE,aACEh1W,KAAKC,OAAS,aAAWC,UAAU,2CA6BvC,OA1BE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,oCACVoD,KAAM,mCAIR,CACEgF,MAAO,4CACPpI,SAAU,4CACVoD,KAAM,2CAGR,CACEgF,MAAO,kCACPhF,KAAM,iCACNpD,SAAU,kEACViW,KAAK,MAMb,EAnCA,K,gICNA7U,EAAOD,QAAU,uD,qHCAjBC,EAAOD,QAAU,gkH,yICAjBC,EAAOD,QAAU,ue,qtBCQjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,oC,MAwBvC,OArBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3CtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPhF,KAAM,+BACNpD,SAAU,iCACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,qDACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBikD,mDAOrC3wQ,KAAK8F,OAASA,GA9BLmvW,EAAgC,GAD5C,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,iJCRAv5W,EAAOD,QAAU,uD,o+DCKjB,aAME,WACU6lD,GAAA,KAAAA,mBALF,KAAA9jC,MAAkB,IAAI,I,MA2ChC,OAnCS,YAAA5E,SAAP,SAAgB4E,GACdxd,KAAKwd,MAAQA,EACbxd,KAAKypW,kBAGM,YAAAruP,OAAb,W,qBAAuBp/G,GAAO,W,kDACrB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAGF,YAAA6jS,eAAP,WACMzpW,KAAKwd,MAAMksV,qBACb1pW,KAAK2pW,iBAAkB,EACnB3pW,KAAKwd,MAAMosV,aAAe5pW,KAAKwd,MAAMqsV,YACvC7pW,KAAK8pW,uBAAyB,EAE9B9pW,KAAK8pW,uBAAyB,IAGhC9pW,KAAK2pW,iBAAkB,EACvB3pW,KAAK8pW,uBAAyB,KAC9B9pW,KAAKwd,MAAMusV,SAAW,KACtB/pW,KAAKwd,MAAMosV,YAAc,KACzB5pW,KAAKwd,MAAMqsV,YAAc,OAItB,YAAAG,qBAAP,WACsC,IAAhChqW,KAAK8pW,wBACP9pW,KAAKwd,MAAMosV,YAAc,KACzB5pW,KAAKwd,MAAMqsV,YAAc,MAEzB7pW,KAAKwd,MAAMusV,SAAW,MAzCfmL,EAAgC,GAD5C,uB,uBAQ6C,mB,OAAA,IAAhB,wCAAgB,YAPjCA,GAAb,K,oKCLAx5W,EAAOD,QAAU,0+L,8sBCKjB,aAOE,WAAoBqK,GAAA,KAAAA,SAJH,KAAAqvW,iCAA2C,EAC3C,KAAA9rU,kBAA4B,EAC5B,KAAA+rU,WAAqB,E,MAqBxC,OAhBS,YAAA7U,eAAP,WACE,OAAKvgW,KAAKo1W,UAILp1W,KAAKqpC,iBAIHrpC,KAAK8F,OAAOkD,gBAAgB,iCAAkC,CACnEwzV,eAAgB,IAAaG,mBAC7BnyT,cAAexqC,KAAKwqC,cACpBnB,kBAAkB,EAClB/4B,MAAOtQ,KAAKm1W,iCAAmC,IAPxCn1W,KAAK8F,OAAOkD,gBAAgB,iDAJ5BhN,EAAQC,SAAQ,IAVjB,GAAT,W,6DACS,GAAT,W,gFACS,GAAT,W,iEACS,GAAT,W,0DALUo5W,EAA+B,GAD3C,a,uBAQmC,mB,OAAA,IAAN,oBAAM,YAPvBA,GAAb,I,iKCLA35W,EAAOD,QAAU,kgB,gvECqBjB,aAgBE,WACUm/D,EACAq5S,EACA/vB,EACAphM,EACA4iM,EACA5/U,EACA/F,GANA,KAAA66D,QACA,KAAAq5S,+BACA,KAAA/vB,gBACA,KAAAphM,eACA,KAAA4iM,8BACA,KAAA5/U,SACA,KAAA/F,OArBF,KAAAyd,MAAkB,IAAI,IAItB,KAAApd,OAAc,GAKf,KAAAipC,kBAA4B,EAE5B,KAAAisU,kCAA4C,GAE3C,KAAAlC,gBAA0B,EAUhCpzW,KAAKC,OAAS,aAAWC,UAAU,6BAEnCF,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,kBAmS5B,OAhSS,YAAA80U,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,eAAepyK,YAAY,qDAAqDwkD,WACvFn+K,GAAGrtC,KAAKwd,QAGC,YAAA5E,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,8FAInCslB,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKC,OAAOE,KAAK,6BAA8BC,EAAO6qC,YACtDjrC,KAAKie,WAAa7d,EAAO6d,UACzBje,KAAKi0W,6BAA6B72V,OAAO87B,iBAAmBl5C,KAAKie,UACjEje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aACtDqD,MAAMlhB,EAAO6qC,YAAd,OACF,EAAAjrC,KAAa,GAAMA,KAAKi0W,6BAA6B33V,SAASlc,EAAO6qC,e,cAArE,EAAKztB,MAAQ,S,oBAEL8D,MAAMlhB,EAAOoqC,gBAAmBlpB,MAAMlhB,EAAOo8V,gBAA9C,OAEPx8V,KAAKC,OAAO0zC,MAAM,0BAA2BvzC,EAAOo8V,gBAEpDx8V,KAAKwd,MAAMgtB,cAAwBpqC,EAAOoqC,cAC1CxqC,KAAKwd,MAAMg+U,aAA6Bp7V,EAAOo8V,eAE/Cx8V,KAAKC,OAAO0zC,MAAM,4BAA6B,IAAa3zC,KAAKwd,MAAMg+U,eAExC59V,MAA3BwC,EAAOipC,mBACTrpC,KAAKqpC,iBAAmBn4B,KAAKC,MAAM/Q,EAAOipC,mBAExCrpC,KAAKqpC,iBACP,GAAMrpC,KAAKu1W,8BADT,O,OACF,S,iBAEFv1W,KAAKozW,gBAAkBrvT,OAAO3jD,EAAOkQ,OACrCtQ,KAAKs0W,yBAAyBt0W,KAAKqpC,kBAG/BrpC,KAAKwd,MAAMg+U,cAAgB,IAAakB,iBAAmB18V,KAAKwd,MAAMg+U,cAAgB,IAAamB,oBACrG38V,KAAK48V,mBAAkB,G,wBAI7B58V,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAy4W,2BAAd,W,qBAA4Cv5W,GAAO,W,wDACR,SAAMgE,KAAKi0W,6BAA6BxpU,6B,cAA3EriC,EAAmC,SACzCpI,KAAKw1W,yCAA2CptW,EAASqtW,+BACzDz1W,KAAKs1W,kCAAoCt1W,KAAKD,KAAKM,GACjD,gFACA,CAAEq1W,QAAS11W,KAAKw1W,2C,YAGb,YAAAlB,yBAAP,SAAgCjrU,GAC1BA,GACFrpC,KAAKwd,MAAMigV,YAAc,IAAYC,WACrC19V,KAAKg3G,YAAa,EAClBh3G,KAAKwd,MAAMlN,MAAQtQ,KAAKozW,iBAGxBpzW,KAAKg3G,YAAa,GAGT,YAAAimP,eAAb,W,qBAA+BjhW,GAAO,W,kDAE7B,OADPgE,KAAKC,OAAO0zC,MAAM,kBACX,GAAM3zC,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAKwd,QACXk7I,YAAW,WAAM,gB,OAHpB,MAAO,CAAP,EAAO,kBAMI,YAAA46M,WAAb,W,qBAA2Bt3W,GAAO,W,uCAKhC,IAJqB,EACjB+T,EAAiB,GAEjBwjW,GADAC,EAAqB,kEACiB54W,OACjCF,EAAI,EAAGA,EAJK,EAIOA,IAC1BqV,GAAUyjW,EAAW7iW,OAAOwS,KAAKE,MAAMF,KAAKk3D,SAAWk5R,IAEzD,MAAO,CAAP,EAAOxjW,UAGI,YAAAqrG,OAAb,SAAoB4wO,G,qBAA2BhwV,GAAO,W,sCAEpD,OADAgE,KAAKC,OAAO0zC,MAAM,UACX,CAAP,EAAO3zC,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACL34M,KAAKwd,MAAMy8P,gBAAgBr/Q,OAAS,GAAKoF,KAAKwd,MAAMg+U,eAAiB,IAAakB,kBAChD,EAG3B,GAAM18V,KAAK08D,KAAKsvR,KAJvB,MADF,M,OAKE,MAAO,CAAP,EAAO,U,0BAGF,SAAMhsV,KAAK08D,KAAKsvR,I,OAAvB,MAAO,CAAP,EAAO,U,mCAMjB,sBAAI,sBAAO,C,IAAX,WACE,OAAQhsV,KAAKi0W,6BAA6B72V,OAAO7C,c,gCAGtC,YAAAmiD,KAAb,SAAkBsvR,G,qBAA2BhwV,GAAO,W,sEAClDgE,KAAKC,OAAO0zC,MAAM,QACb3zC,KAAKwd,MAAMjB,GAAZ,OAEF,EAAAvc,KAAKwd,MAAa,GAAMxd,KAAKszW,e,OAUtB,OAVP,EAAWn/S,KAAO,SAClBn0D,KAAKwd,MAAMlN,MAAQtQ,KAAKwd,MAAMlN,MAC9BtQ,KAAKwd,MAAMigV,YAAcz9V,KAAKwd,MAAMigV,YACpCz9V,KAAKwd,MAAMi2V,yBAA2BzzW,KAAKwd,MAAMg+U,cAAgB,IAAa2D,QAAgB,KAC9Fn/V,KAAKwd,MAAMk2V,sBAAwB1zW,KAAKwd,MAAMg+U,cAAgB,IAAa2D,QAAgB,KAC3Fn/V,KAAKwd,MAAMksV,oBAAuB1pW,KAAKwd,MAAMg+U,cAAgB,IAAamB,oBAAsB38V,KAAKwd,MAAMg+U,cAAgB,IAAagC,8BAAuC,KAC/Kx9V,KAAKwd,MAAMosV,YAAc5pW,KAAKwd,MAAMg+U,cAAgB,IAAamB,mBAAqB,EAAI,KAC1F38V,KAAKwd,MAAMqsV,YAAe7pW,KAAKwd,MAAMg+U,cAAgB,IAAamB,oBAAsB38V,KAAKwd,MAAMg+U,cAAgB,IAAagC,6BAAgC,IAAO,KACvKx9V,KAAKwd,MAAMosV,YAAc5pW,KAAKwd,MAAMg+U,cAAgB,IAAagC,6BAA+B,EAAI,KAE7F,GAAMx9V,KAAKi0W,6BAA6Bh1W,OAAOe,KAAKwd,OACxDra,MAAK,SAAO07V,GAAkB,qC,yDAE7B7+V,KAAK8iJ,aAAaxiJ,QAAQ,oEAErB0rV,EAAD,MACK,GAAMhsV,KAAK21W,0B,OAAlB,MAAO,CAAP,EAAO,U,cAEA31W,KAAKqpC,kBAAoB2iT,GAChChsV,KAAKozW,gBAAkBpzW,KAAKozW,gBAAkB,EAC9CpzW,KAAKwd,MAAMlN,MAAQtQ,KAAKozW,gBACxBpzW,KAAKwd,MAAMihV,YAAc,GACrBz+V,KAAKozW,gBAAkBpzW,KAAKw1W,0CAC9Bx1W,KAAK8iJ,aAAaviJ,QAAQ,2FACnB,GAAMP,KAAK8F,OAAOkD,gBAAgB,qCAFvC,OAJG,M,OAML,MAAO,CAAP,EAAO,U,OAEF,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,iCAAkC,CAAEwzV,eAAgB,IAAaG,mBAAoBnyT,cAAexqC,KAAKwd,MAAMgtB,cAAenB,kBAAkB,EAAM/4B,MAAOtQ,KAAKozW,mB,OAA3M,MAAO,CAAP,EAAO,U,OAGA,SAAMpzW,KAAK8F,OAAOkD,gBAAgB,uCAAwC,CAAEiiC,WAAY4zT,EAAStiV,M,OAAxG,MAAO,CAAP,EAAO,oBAGVtQ,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAvB5B,MAAO,CAAP,EAAO,U,OA0BA,SAAMkD,KAAKi0W,6BAA6Bv3V,OAAO1c,KAAKwd,OACxDra,MAAK,SAAOqa,GAAe,qC,yDAE1Bxd,KAAK8iJ,aAAaxiJ,QAAQ,qEAErB0rV,EAAD,MACK,GAAMhsV,KAAK21W,0B,OAAlB,MAAO,CAAP,EAAO,U,2BAGV1pW,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,kBAkBG,YAAA64W,uBAAd,W,qBAAwC35W,GAAO,W,wDAEpC,O,sBAAA,GAAMgE,KAAK8F,OAAOkD,gBAAgB,6B,OAAzC,MAAO,CAAP,EAAO,U,OAGA,O,SADD4sW,EAA0B51W,KAAK8F,OAAO2G,SAAS,0CAA2C,CAAE+9B,cAAexqC,KAAKwd,MAAMgtB,gBAAmB,4BACxI,GAAMxqC,KAAK8F,OAAOyC,SAASqtW,I,OAAlC,MAAO,CAAP,EAAO,U,yBASJ,YAAAhZ,kBAAP,SAAyBkC,GACvB9+V,KAAKC,OAAOE,KAAK,oBACjB,IAAI4+V,EAAiC,IAAI,IACzCA,EAAexiV,GAAK,EACpBwiV,EAAezuV,MAAQtQ,KAAKwd,MAAMy8P,gBAAgBr/Q,OAClDmkW,EAAeD,SAAWA,EAC1BC,EAAel5O,OAAS,GACxB7lH,KAAKwd,MAAMy8P,gBAAgB/+Q,KAAK6jW,IAG3B,YAAAC,qBAAP,SAA4Br1V,GAC1B,IAAIo1V,EAAiB/+V,KAAKwd,MAAMy8P,gBAAgBtwQ,GAEhD3J,KAAK01U,qBAAqB/C,aAAaosB,GAEvC/+V,KAAKwd,MAAMy8P,gBAAgB9iQ,OAAOxN,EAAO,IAGpC,YAAA6+U,QAAP,SAAe1kD,EAAatjS,GAC1BR,KAAKC,OAAO0zC,MAAM,WAClB,IAAIx3B,EAAa2nR,EAAOtmS,OAAO+wO,MAAM,GAErC,GADoB,IAAoBp9N,MAAM,UAAW,QACvC8P,QAAQ9E,GAAO,CAC/B,IAAI,EAAqB,IAAIm/B,WAC7B,EAAOK,cAAcx/B,GACrB,EAAOjf,OAAS,WACd,IAAI8vV,EAAkB,EAAOj9U,OAC7BvP,EAAKkmJ,eAAiBsmM,EACtBxsV,EAAKqlH,OAAS1pG,EAAKze,KACnB8C,EAAKy+V,kBAAoB1lT,IAAI0B,gBAAgB9+B,SAI/Cnc,KAAK8iJ,aAAahmJ,MAAM,oEAKrB,YAAAqwV,UAAP,SAAiB3sV,GACfA,EAAKqlH,OAAS,KACdrlH,EAAKkmJ,eAAiB,KACtBlmJ,EAAKy+V,kBAAoB,MAGpB,YAAAC,8BAAP,WACEl/V,KAAKC,OAAO0zC,MAAM,iCAClB,IAAI5jC,EAAqB,GAEzB,OADA/P,KAAKC,OAAO0zC,MAAM,wDAAyD3zC,KAAKwd,MAAMg+U,eAC7Ex7V,KAAKwd,MAAMg+U,cAClB,KAAK,IAAaC,iBAClB,KAAK,IAAa6B,sBAClB,KAAK,IAAaE,6BAClB,KAAK,IAAa9B,mBAClB,KAAK,IAAa6B,wBAClB,KAAK,IAAa4B,OAChBn/V,KAAKC,OAAO0zC,MAAM,oBAClB5jC,EAASlV,OAAO0Z,KAAK,KAClB1P,QAAO,SAAA3F,GAAO,WAAYA,KAAS,IAAYw+V,YAAc,IAAYx+V,KAAS,IAAYkgW,WAC9Fz6V,KAAI,SAAAzF,GAAO,OAAGqd,GAAI,IAAYrd,GAAMxB,KAAMwB,MAC7C,MACF,KAAK,IAAaw9V,gBAChB18V,KAAKC,OAAO0zC,MAAM,gCAClB5jC,EAASlV,OAAO0Z,KAAK,KAClB1P,QAAO,SAAA3F,GAAO,WAAYA,KAAS,IAAYmgW,aAAe,IAAYngW,KAAS,IAAY2vF,SAAW,IAAY3vF,KAAS,IAAYogW,YAC3I36V,KAAI,SAAAzF,GAAO,OAAGqd,GAAI,IAAYrd,GAAMxB,KAAMwB,MAC7C,MACF,KAAK,IAAay9V,mBAChB38V,KAAKC,OAAO0zC,MAAM,mCAClB5jC,EAASlV,OAAO0Z,KAAK,KAClB1P,QAAO,SAAA3F,GAAO,WAAYA,KAAS,IAAYw+V,YAAc,IAAYx+V,KAAS,IAAYkgW,SAAW,IAAYlgW,KAAS,IAAY2vF,WAC1IlqF,KAAI,SAAAzF,GAAO,OAAGqd,GAAI,IAAYrd,GAAMxB,KAAMwB,MAMjD,OADAc,KAAKC,OAAO0zC,MAAM,wCAAyC5jC,GACpDA,GAlSE8lW,EAAyB,GADrC,uB,uBAkB8B,mB,OAAA,IAAZ,UAAY,SACuC,mBADvC,OACuC,IAA5B,UAA4B,SAC9B,mBAD8B,OAC9B,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1C,mBAD0C,OAC1C,IAAN,oBAAM,SACJ,mBADI,OACJ,IAAJ,gBAAI,YAvBTA,GAAb,I,4JCrBAn6W,EAAOD,QAAU,2oP,8oECqBjB,aA6BE,WACUm/D,EACAspR,EACA+vB,EACAnuW,EACAg9I,EACA/iJ,EACDy7V,GAPT,WACU,KAAA5gS,QACA,KAAAspR,gBACA,KAAA+vB,+BACA,KAAAnuW,SACA,KAAAg9I,eACA,KAAA/iJ,OACD,KAAAy7V,eA/BD,KAAAl+U,WAAoC,IAAI,wBAIxC,KAAAld,OAAc,GAId,KAAAmsV,UAAoB,EAErB,KAAA4oB,iCAA2C,EAC3C,KAAAW,mCAA8C,KAC9C,KAAAC,oCAA8C,GAC9C,KAAAC,kCAAuE,KACvE,KAAAlwN,kCAAoC,IA6EnC,KAAAknG,QAAU,WAChB,OAAO,EAAKinH,6BAA6BngW,KAAK,EAAK02B,cAAe,EAAKltB,YACpEna,MAAK,SAACsY,GAOL,OANA,EAAK05V,iCAAmC15V,EAAS05V,iCACjD,EAAKW,mCAAqCr6V,EAASq6V,mCACnD,EAAKE,kCAAoCv6V,EAASu6V,kCAClD,EAAKD,oCAAsC,EAAKh2W,KAAKM,GACnD,iFACA,CAAEq1W,QAASj6V,EAASg6V,iCACfh6V,MAnEXzb,KAAKC,OAAS,aAAWC,UAAU,gBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,kBAuF5B,OA1GE,sBAAW,+BAAgB,C,IAA3B,WACE,OAAiD,MAA1C7Q,KAAKg2W,mC,gCAGd,sBAAW,gCAAiB,C,IAA5B,WACE,OAAOh2W,KAAKg2W,oCAAsC,IAAkCC,gB,gCAkBxE,YAAAr9V,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,yDAEtCgE,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,wBAKhBJ,KAAKC,OAAO0zC,MAAM,+BAAgCvzC,EAAOoqC,eACpDlpB,MAAMlhB,EAAOoqC,iBAChBxqC,KAAKwqC,eAAiBpqC,EAAOoqC,e,YAInB,YAAArrC,KAAd,W,qBAAsBnD,GAAO,W,oEAEtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAC1Bje,KAAKie,WACPje,KAAKi0W,6BAA6B72V,OAAO87B,iBAAmBl5C,KAAKie,UACjEje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAC3Dje,KAAKusV,UAAW,EACT,GAAMvsV,KAAKukV,aAJhB,O,OAIF,MAAO,CAAP,EAAO,U,yBAOA,YAAAA,SAAb,W,qBAAyBvoV,GAAO,W,6DAIvB,OAFPgE,KAAKC,OAAO0zC,MAAM,YAEX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAKxb,OAAO0zC,MAAM,UAAWl4B,GAC7B,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAgBK,YAAAtzT,OAAd,SAAqBP,EAAY7e,G,qBAAe1B,GAAO,W,6DAC9C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IACNg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKi0W,6BAA6Bn3V,OAAOP,GACnDpZ,MAAK,gD,kDAEG,OADPnD,KAAK8iJ,aAAaxiJ,QAAQ,6DACnB,GAAMN,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,oBAERt4U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBA5GC,GAAT,W,6DAFU2tW,EAAY,GADxB,uB,uBA+B8B,mB,OAAA,IAAZ,UAAY,SACS,mBADT,OACS,IAAb,kCAAa,SAC8B,mBAD9B,OAC8B,IAA5B,UAA4B,SAC5C,mBAD4C,OAC5C,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SAChB,mBADgB,OAChB,IAAJ,gBAAI,SACe,mBADf,OACe,IAAZ,UAAY,YApCxBA,GAAb,I,guBCZA,aAKE,WACU1qW,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,uB,MA8CvC,OA3CE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,iCACVoD,KAAM,4BAGR,CACEgF,MAAO,cACPpI,SAAU,yCACVoD,KAAM,wCAGR,CACEgF,MAAO,SACPhF,KAAM,gDACNpD,SAAU,2CACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,wDACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBikD,iDAKnC,CACEjuQ,MAAO,CAAC,0BACRhF,KAAM,iCACNpD,SAAU,yCACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,mDACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBikD,oDA9C5BumF,EAAmB,GAD/B,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,sJCTAx7V,EAAOD,QAAU,uD,2ICAjBC,EAAOD,QAAU,qgH,usBCOjB,aAME,WACUqK,EACAg9I,GADA,KAAAh9I,SACA,KAAAg9I,eAER9iJ,KAAKC,OAAS,aAAWC,UAAU,sCACnCF,KAAKsgW,QAAU,gB,QAkBnB,OAdS,YAAA1nV,SAAP,SAAgBxY,GACdJ,KAAKC,OAAOE,KAAK,+BAAgCC,EAAOoqC,eACnDlpB,MAAMlhB,EAAOoqC,eAGhBxqC,KAAK8F,OAAOyC,SAAS,iBAFrBvI,KAAKwqC,eAAiBpqC,EAAOoqC,eAM1B,YAAA+1T,eAAP,SAAsBjjW,GACpB0C,KAAKC,OAAOE,KAAK,6BAA8B7C,GAC/C0C,KAAK8F,OAAOyC,SAAS,UAAUjL,IA1BtB44W,EAAkC,GAD9C,uB,uBAQyB,mB,OAAA,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,YARzBA,GAAb,I,qJCPAx6W,EAAOD,QAAU,+pK,orBCQjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,kC,MAkCvC,OA9BE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,+BACVoD,KAAM,6BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,qEACpB+H,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBqjD,sCAKnC,CACErtQ,MAAO,+BACPpI,SAAU,0CACVoD,KAAM,wCACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,kEACpB+H,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBqjD,yCArC5BomG,EAA8B,GAD1C,uB,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,gHCRAz6W,EAAOD,QAAU,6M,ugECcjB,aAiBE,WACUm/D,EACAyxR,EACAvmV,EACAg9I,EACA4iM,EACA0wB,GALA,KAAAx7S,QACA,KAAAyxR,kBACA,KAAAvmV,SACA,KAAAg9I,eACA,KAAA4iM,8BACA,KAAA0wB,wBAZF,KAAA54V,MAAwB,IAAI,IAC5B,KAAAwuU,iBAA2B,EAajChsV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,2BAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,gBA4F5B,OAxFgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,0EACpEgE,KAAKC,OAAO0zC,MAAM,YAEbryB,MAAMlhB,EAAO6d,WAAd,OAEFje,KAAKie,WAAa7d,EAAO6d,UAEzB,EAAAje,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,W,UAA5C,EAAKu9C,UAAY,SACjB96D,KAAKouW,kBAELpuW,KAAKo2W,sBAAsBh5V,OAAO87B,iBAAmBl5C,KAAKie,UAE1Dje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAEtDqD,MAAMlhB,EAAO2pC,kBAAd,Y,iBAEa,O,sBAAb,EAAA/pC,KAAa,GAAMA,KAAKo2W,sBAAsB95V,SAASlc,EAAO2pC,mB,cAA9D,EAAKvsB,MAAQ,S,+BAGbxd,KAAK8iJ,aAAahmJ,MAAM,G,aAG5BkD,KAAK2lV,2B,mCAID,YAAAA,yBAAR,WACE,kBACGvM,OAAO,QAAQpyK,YAAY,4DAA4DwkD,WACvF4tH,OAAO,iBAAiBpyK,YAAY,kDAAkDwkD,WACtF4tH,OAAO,cAAcpyK,YAAY,kDAAkDwkD,WACnFn+K,GAAGrtC,KAAKwd,QAGN,YAAA4wV,gBAAP,WAEE,GADApuW,KAAKC,OAAO0zC,MAAM,mBACd3zC,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAAe,CAC1C,IAAI,EAAgB11J,KAAK6Q,MAAM6kJ,cAActvG,QACzCmoT,EAAavuW,KAAK86D,UAAU90D,MAAK,SAACwoW,GAA6B,OAAAA,EAAGpoT,UAAY,KAC9EmoT,IACFvuW,KAAKgqC,WAAaukU,EAAWhyV,GAC7Bvc,KAAKwd,MAAMwsB,WAAahqC,KAAKgqC,cAKrB,YAAAoxE,OAAd,SAAqB4wO,G,qBAA2BhwV,GAAO,W,sCAErD,OADAgE,KAAKgsV,gBAAkBA,EAChB,CAAP,EAAOhsV,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKf,sBAAI,sBAAO,C,IAAX,WACE,OAAQ18D,KAAKo2W,sBAAsBh5V,OAAO7C,c,gCAG9B,YAAAmiD,KAAd,W,qBAAsB1gE,GAAO,W,yFAEpBgE,KAAKwd,MAAMjB,GAAZ,OACF,EAAAvc,KAAa,GAAMA,KAAKo2W,sBAAsBn3W,OAAOe,KAAKwd,S,cAA1D,EAAKA,MAAQ,SACbxd,KAAK8iJ,aAAaxiJ,QAAQ,4BAErBN,KAAKgsV,gBAAN,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,2B,OAAzC,MAAO,CAAP,EAAO,U,OAEA,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,qCAAsC,CAAE+gC,iBAAkB/pC,KAAKwd,MAAMjB,M,OAA9G,MAAO,CAAP,EAAO,U,0BAIT,SAAMvc,KAAKo2W,sBAAsB15V,OAAO1c,KAAKwd,Q,cAA7C,SAEAxd,KAAK8iJ,aAAaxiJ,QAAQ,6BAErBN,KAAKgsV,gBAAN,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,2B,OAAzC,MAAO,CAAP,EAAO,U,8CAMXhJ,KAAK8iJ,aAAahmJ,MAAM,G,iCAtHjBu5W,EAAuB,GADnC,uB,uBAmB8B,mB,OAAA,IAAZ,UAAY,SACiB,mBADjB,OACiB,IAAnB,UAAmB,SACtB,mBADsB,OACtB,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACZ,mBADY,OACZ,IAArB,UAAqB,YAvB3CA,GAAb,I,2HCdA36W,EAAOD,QAAU,+nH,smECwBjB,aAmBE,WACUm/D,EACAyxR,EACAgC,EACAioB,EACApyB,EACAphM,GANV,WACU,KAAAloF,QACA,KAAAyxR,kBACA,KAAAgC,yBACA,KAAAioB,uBACA,KAAApyB,gBACA,KAAAphM,eAtBF,KAAA1iJ,OAAc,GASd,KAAAkd,WAAoC,IAAI,wBAIxC,KAAAivU,UAAoB,EACpB,KAAAnJ,gBAAmC,IAAI,IAevC,KAAAp2F,QAAU,6BAAUhxP,GAAO,W,+DAK1B,OAJPgE,KAAKC,OAAO0zC,MAAM,cACd9J,EAAS7pC,KAAKsd,WAAWusB,OAAOylT,MACpC3mL,eAAentF,QAAQ,gCAA2C,MAAV3xC,EAAiB,GAAKA,GAEvE,GAAM7pC,KAAKs2W,qBAAqBxiW,KAAK9T,KAAKsd,YAC9Cna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAVPkD,KAAKC,OAAS,aAAWC,UAAU,2BAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,gBAwI5B,OAvHgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,yDAEpEgE,KAAKsd,WAAWusB,OAAOylT,MAAQ3mL,eAAexsF,QAAQ,iCAGlDn8E,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAKJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,wEAGtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OAEFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE1Bje,KAAKie,WAGP,EAAAje,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,WAH1C,O,OAUqB,OAPvB,EAAKu9C,UAAY,SACjB96D,KAAKouW,kBAELpuW,KAAKs2W,qBAAqBl5V,OAAO87B,iBAAmBl5C,KAAKie,UAEzDje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3D,EAAAje,KAAuB,GAAMA,KAAKquV,uBAAuB/xU,QAAQtc,KAAKie,Y,OAG/D,OAHP,EAAKmlU,gBAAkB,SAEvBpjV,KAAKusV,UAAW,EACT,GAAMvsV,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yBAKC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAy5W,aAAd,W,qBAA8Bv6W,GAAO,W,kDAEnC,OADAgE,KAAKsd,WAAWusB,OAAOylT,MAAQ,KAC/B,GAAMtvV,KAAKukV,Y,cAAX,S,YAGY,YAAAhc,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAAtzT,OAAd,SAAqBtc,G,qBAAuBxE,GAAO,W,6DAC1C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK9C,OACXg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MAEK,GAAMj5C,KAAKs2W,qBAAqBx5V,OAAOtc,EAAK+b,IAChDpZ,MAAK,WAEJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ7Q,EAAK+b,GAAGyC,YACrG,EAAK1B,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,iCAG3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,U,mCANX,MAAO,CAAP,EAAO,kBAuBF,YAAAsxW,gBAAP,WAEE,GADApuW,KAAKC,OAAO0zC,MAAM,mBACd3zC,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAAe,CAC1C,IAAI,EAAgB11J,KAAK6Q,MAAM6kJ,cAActvG,QACzCmoT,EAAavuW,KAAK86D,UAAU90D,MAAK,SAACwoW,GAA6B,OAAAA,EAAGpoT,UAAY,KAC9EmoT,IACFvuW,KAAKgqC,WAAaukU,EAAWhyV,MAKtB,YAAAi6V,sBAAb,SAAmCh2W,G,qBAAwBxE,GAAO,W,6DAEhE,OADAgE,KAAKkpG,OAAOmM,UAAW,EACvB,GAAMr1G,KAAKquV,uBAAuB3xU,OAAOlc,GACtC2C,MAAK,gD,kDACG,SAAMnD,KAAKi8M,OAAOz7M,I,OAAzB,MAAO,CAAP,EAAO,oBAERyL,OAAM,SAACnP,GACN,EAAKgmJ,aAAahmJ,MAAMA,O,cAL5B,S,YASW,YAAAm/M,OAAb,SAAoBz7M,G,qBAAwBxE,GAAO,W,6DACjD,SAAMgE,KAAKs2W,qBAAqB74V,YAAYzd,KAAKgqC,WAAYxpC,EAAK0lJ,mBAC/D/iJ,MAAK,gD,kDAGG,OAFPnD,KAAK8iJ,aAAaxiJ,QAAQ,qFAC1BN,KAAKkpG,OAAOmM,UAAW,EAChB,GAAMr1G,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,oBAERt4U,OAAM,SAACnP,GACN,EAAKgmJ,aAAahmJ,MAAMA,O,cAP5B,S,YA1JS25W,EAAuB,GADnC,uB,uBAqB8B,mB,OAAA,IAAZ,UAAY,SACiB,mBADjB,OACiB,IAAnB,UAAmB,SACU,mBADV,OACU,IAAtB,UAAsB,SACG,mBADH,OACG,IAA3B,UAA2B,SACrB,mBADqB,OACrB,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YAzBzBA,GAAb,I,gJCxBA,uGAKA,GALA,KAKA,WAKE,aACEz2W,KAAKC,OAAS,aAAWC,UAAU,sCAoBvC,OAjBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,+BACVoD,KAAM,0BAIR,CACEgF,MAAO,0CACPpI,SAAU,uCACVoD,KAAM,yCAId,EA1BA,K,qHCLAhC,EAAOD,QAAU,sD,0GCAjBC,EAAOD,QAAU,mpG,6pECgCjB,aA8CE,WACUm/D,EACA90D,EACAg9I,EACAohM,EACAwB,EACA0wB,EACAM,EACAC,EACAhJ,EACA5iD,GATA,KAAAnwP,QACA,KAAA90D,SACA,KAAAg9I,eACA,KAAAohM,gBACA,KAAAwB,8BACA,KAAA0wB,wBACA,KAAAM,sBACA,KAAAC,uBACA,KAAAhJ,2BACA,KAAA5iD,qBA7CF,KAAAvtS,MAAwB,IAAI,IAE5B,KAAAo5V,WAAyB,GACzB,KAAA7tU,OAAkB,GAIlB,KAAAc,OAAiB,KAEjB,KAAAgtU,mBAA6B,EAC7B,KAAAl8U,SAAmB,EACnB,KAAAm8U,MAAgB,EAEhB,KAAAl2N,SAAqB,GACrB,KAAAm2N,+BAA2C,GAC3C,KAAAC,wBAAoC,GAEpC,KAAAC,eAAiC,GACjC,KAAAC,oBAA8B,EAC9B,KAAA9jH,mBAA0C,GAE1C,KAAA5vP,QAA0B,CAChCm3B,SAAU,IACVqhT,QAAS,CACPm7B,IAAK,EACLC,IAAK,EACLC,KAAM,GAERp7B,WAAW,EACXC,MAAM,EACNo7B,UAAU,EACVC,iBAAkB,MAiBlBv3W,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,oCACnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,wBAkR5B,OA/QgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,0EACpEgE,KAAKC,OAAO0zC,MAAM,YAEbryB,MAAMlhB,EAAO6d,WAAd,YACFje,KAAKie,WAAa7d,EAAO6d,UACzBje,KAAK+pC,kBAAoB3pC,EAAO2pC,iBAEhC/pC,KAAKo2W,sBAAsBh5V,OAAO87B,iBAAmBl5C,KAAKie,UAC1Dje,KAAK02W,oBAAoBt5V,OAAO87B,iBAAmBl5C,KAAKie,UACxDje,KAAK22W,qBAAqBv5V,OAAO87B,iBAAmBl5C,KAAKie,UACzDje,KAAK2tW,yBAAyBvwV,OAAO87B,iBAAmBl5C,KAAKie,UAE7Dje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,a,iBAG1C,O,sBAAA,GAAMje,KAAK+qT,mBAAmBxoQ,gBAAgBviD,KAAKie,Y,OAMxC,OANtB7V,EAAW,SACfpI,KAAKwqC,cAAgBpiC,EAAS6lW,yBAEJ,GAAtBjuW,KAAKwqC,gBACPxqC,KAAKwqC,cAAgB,IAAmB,aAE1C,EAAAxqC,KAA0B,GAAMA,KAAK2tW,yBAAyBpwV,OAAOvd,KAAKwqC,gB,OAC5D,OADd,EAAK4oN,mBAAqB,SAC1B,EAAApzP,KAAc,GAAMA,KAAK02W,oBAAoBn5V,U,cAA7C,EAAKwrB,OAAS,SACd/oC,KAAKw3W,6BAEAl2V,MAAMlhB,EAAO2pC,kBAAd,OACF,EAAA/pC,KAAa,GAAMA,KAAKo2W,sBAAsB95V,QAAQtc,KAAK+pC,oB,OASpD,OATP,EAAKvsB,MAAQ,SACbxd,KAAKgqC,WAAahqC,KAAKwd,MAAMwsB,WAE7BhqC,KAAKy3W,qCACLz3W,KAAK03W,sBAGL13W,KAAK23W,oBAEE,GAAM33W,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,4CAITvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BAKhB,YAAAynV,SAAd,W,qBAA0BvoV,GAAO,W,0DAC/BgE,KAAKC,OAAO0zC,MAAM,Y,iBAEE,O,sBAAlB,EAAA3zC,KAAkB,GAAMA,KAAK22W,qBAAqB7iW,KAAK9T,KAAK+pC,iBAAkB/pC,KAAKgqC,WAAYhqC,KAAK6pC,S,cAApG,EAAK+sU,WAAa,S,+BAElB52W,KAAK8iJ,aAAahmJ,MAAM,G,+BAI5B,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAKo2W,sBAAsBh5V,OAAO7C,c,gCAG/B,YAAAmiD,KAAb,SAAkBsvR,G,qBAA2BhwV,GAAO,W,6DAG3C,OAFPgE,KAAKC,OAAO0zC,MAAM,WAAY3zC,KAAKwd,MAAMojI,UAElC,GAAM5gJ,KAAKo2W,sBAAsB15V,OAAO1c,KAAKwd,OACjDra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6BAErB0rV,EAAD,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,2B,OAAzC,MAAO,CAAP,EAAO,U,2BAIViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,kBAcI,YAAAs+G,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAGhD,OAFAgE,KAAKC,OAAOE,KAAK,UACjBH,KAAKC,OAAO0zC,MAAM,uBAAwB3zC,KAAKk3W,oBACb,GAA9Bl3W,KAAKwd,MAAMojI,SAAShmJ,QACtBoF,KAAK8iJ,aAAaviJ,QAAQ,mDAC1B,KAEK,GAAMP,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACL34M,KAAKozP,mBAAmBx4P,OAAS,GAAKoF,KAAKk3W,oBAAgE,GAA1Cl3W,KAAKwd,MAAM23L,qBAAqBv6M,QACnGoF,KAAK8iJ,aAAaviJ,QAAQ,yD,OADxB,MADF,M,OAKO,SAAMP,KAAK08D,KAAKwpR,I,OAAvB,MAAO,CAAP,EAAO,U,2BAIZj6U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAZ5B,MAAO,CAAP,EAAO,kBAgBD,YAAA86W,iBAAR,SAAyBhG,GAGvB,IAAe,IAFD5xW,KAAKwd,MAAMojI,SAASvvI,QAAQugW,EAAMr1V,IAG9Cvc,KAAKwd,MAAMurB,OAAO7tC,KAAK02W,OAEpB,CACH,IAAMppF,EAASxoR,KAAKwd,MAAMurB,OAAOmqI,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOq1V,EAAMr1V,OAC/C,IAAZisQ,GACFxoR,KAAKwd,MAAMurB,OAAO5xB,OAAOqxQ,EAAQ,GAIjCxoR,KAAKozP,mBAAmBx4P,OAAS,GAAKoF,KAAK63W,qCAAqCjG,EAAMr1V,KAAOvc,KAAKk3W,oBACpGl3W,KAAK83W,0BAIP93W,KAAK03W,sBAGL13W,KAAK23W,qBAGC,YAAAD,oBAAR,sBACM3iU,EAA+B,GAC/Bpa,EAAW,EACXm8U,EAAQ,EACZ92W,KAAKwd,MAAMojI,SAASz5I,SAAQ,SAAAD,GAC1B,IAAI0qW,EAAQ,EAAK7oU,OAAO/iC,MAAK,SAAAokB,GAAK,OAAAA,EAAE7N,KAAOrV,KACvC0qW,IACFkF,IAAUlF,EAAMmG,aAChBnG,EAAM78T,cAAc5tC,SAAQ,SAAAm0D,GACrBvmB,EAAc/uC,MAAK,SAAA8lK,GAAK,OAAAA,EAAEvvJ,KAAO++C,EAAE/+C,QACtCw4B,EAAc75C,KAAKogE,GACnB3gC,IAAa2gC,EAAE+4S,oBAMvBr0W,KAAK62W,mBAAqB9hU,EAAcn6C,OACxCoF,KAAK26B,SAAWA,EAChB36B,KAAK82W,MAAQA,GAGP,YAAAkB,iBAAR,SAAyBjvU,GAAzB,WACMxpB,GAAe,EAUnB,OATAwpB,EAAO5hC,SAAQ,SAAAD,GACb,IAAI0qW,EAAQ,EAAK7oU,OAAO/iC,MAAK,SAAAokB,GAAK,OAAAA,EAAE7N,KAAOrV,EAAEqV,MACzCq1V,IACgBA,EAAM78T,cAAc/uC,MAAK,SAAAs1D,GAAK,OAAAA,EAAE09R,iBAAmB,IAAgBif,iBAEnF14V,GAAM,OAILA,GAGD,YAAAo4V,kBAAR,sBACE33W,KAAK+oC,OAAO5hC,SAAQ,SAAAD,IACyB,IAAvC,EAAKsW,MAAMojI,SAASvvI,QAAQnK,EAAEqV,IAChC,EAAK06V,eAAe/vW,EAAEqV,KAAM,EAG5B,EAAK06V,eAAe/vW,EAAEqV,KAAM,MAK3B,YAAA27V,aAAP,SAAoBC,GAApB,WACEn4W,KAAKwd,MAAMurB,OAASovU,EACpBn4W,KAAKwd,MAAMojI,SAAWu3N,EAAaxzW,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MAG9Cvc,KAAK03W,sBAGL13W,KAAK23W,oBAEL,IAAIS,GAAiB,EAErBD,EAAahxW,SAAQ,SAAAD,GACf,EAAK2wW,qCAAqC3wW,EAAEqV,MAC9C67V,GAAiB,MAIjBA,GAAkBp4W,KAAKozP,mBAAmBx4P,OAAS,GAAKoF,KAAKk3W,oBAC/Dl3W,KAAK83W,2BAID,YAAAN,2BAAR,sBACEx3W,KAAK+oC,OAAO5hC,SAAQ,SAAAD,GAClBA,EAAE6tC,cAAc5tC,SAAQ,SAAAm0D,GAClBA,EAAE09R,iBAAmB,IAAgBif,aACvC,EAAKjB,wBAAwB97W,KAAKgM,EAAEqV,WAM/B,YAAAu7V,wBAAb,W,uFACMO,EAAc,CAChBjlH,mBAAoBpzP,KAAKozP,mBACzBklH,6BAA8Bt4W,KAAKwd,MAAM23L,qBACzCv0D,SAAU5gJ,KAAK+2W,gCAGjB/2W,KAAKkkV,cAAczoS,KAAK,CAAE1tC,UAAW,yBAAwByP,MAAO66V,IACjE3/M,YAAW,SAAC3oJ,GACNA,EAAOkpC,eACV,EAAKz7B,MAAM23L,qBAAuBplM,EAAO9F,QAAU,O,WAKnD,YAAA4tW,qCAAR,SAA6CU,GAC3C,IAAIC,GAA0C,EACxCC,EAA0Bz4W,KAAKg3W,wBAAwB3lW,QAAQknW,GAC/DG,EAAqB14W,KAAKwd,MAAMojI,SAASvvI,QAAQknW,GAEvD,IAAiC,IAA7BE,EAAgC,CAClC,IAAME,EAAiC34W,KAAK+2W,+BAA+B1lW,QAAQknW,IACvD,IAAxBG,GACsC,IAApCC,IACF34W,KAAK+2W,+BAA+B77W,KAAKq9W,GACzCC,GAAiC,IAGK,IAApCG,IACF34W,KAAK+2W,+BAA+B5/V,OAAOwhW,EAAgC,GAC3EH,GAAiC,GAYvC,OAPIx4W,KAAKozP,mBAAmBx4P,OAAS,GAAKoF,KAAK+2W,+BAA+Bn8W,OAAS,EACrFoF,KAAKk3W,oBAAqB,GAE1Bl3W,KAAKk3W,oBAAqB,EAC1Bl3W,KAAKwd,MAAM23L,qBAAuB,IAG7BqjK,GAGD,YAAAf,mCAAR,sBACEz3W,KAAK+2W,+BAAiC,GACtC/2W,KAAKwd,MAAMojI,SAASz5I,SAAQ,SAAAD,IAGO,IAFD,EAAK8vW,wBAAwB3lW,QAAQnK,MAI3B,IADD,EAAK6vW,+BAA+B1lW,QAAQnK,IAEjF,EAAK6vW,+BAA+B77W,KAAKgM,OAK/ClH,KAAKC,OAAO0zC,MAAM,0CAA2C3zC,KAAK+2W,+BAA+Bn8W,QAE7FoF,KAAKozP,mBAAmBx4P,OAAS,GAAKoF,KAAK+2W,+BAA+Bn8W,OAAS,EACrFoF,KAAKk3W,oBAAqB,GAE1Bl3W,KAAKk3W,oBAAqB,EAC1Bl3W,KAAKwd,MAAM23L,qBAAuB,IAGpCn1M,KAAKC,OAAO0zC,MAAM,uBAAwB3zC,KAAKk3W,qBA9UtC0B,EAAgC,GAD5C,uB,uBAgD8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,SAC4B,mBAD5B,OAC4B,IAA3B,8DAA2B,SACZ,mBADY,OACZ,IAArB,UAAqB,SACJ,mBADI,OACJ,IAAnB,UAAmB,SACE,mBADF,OACE,IAApB,UAAoB,SACQ,mBADR,OACQ,IAAxB,UAAwB,SACZ,mBADY,OACZ,IAAlB,UAAkB,YAxDrCA,GAAb,I,sIChCAl9W,EAAOD,QAAU,qlH,s/DCgBjB,aAkBE,WACUm/D,EACAi+S,EACA/1N,EACA4iM,EACA5/U,EACAgzW,GALA,KAAAl+S,QACA,KAAAi+S,4BACA,KAAA/1N,eACA,KAAA4iM,8BACA,KAAA5/U,SACA,KAAAgzW,sBArBF,KAAA14W,OAAc,GAKf,KAAA4tW,aAA2B,GAK1B,KAAAzhB,UAAoB,EAEpB,KAAA/uU,MAA4B,IAAI,IAWtCxd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,0BAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,gBA4G5B,OAtGS,YAAA80U,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,KAAKpyK,YAAY,0DAA0DwkD,WAClF4tH,OAAO,KAAKpyK,YAAY,0DAA0DwkD,WAClF4tH,OAAO,KAAKpyK,YAAY,0DAA0DwkD,WAClF4tH,OAAO,KAAKpyK,YAAY,0DAA0DwkD,WAClFn+K,GAAGrtC,KAAKwd,QAGC,YAAA5E,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,yDAGtCgE,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACD,GAAMJ,KAAKb,SAFtB,M,OAEI,MAAO,CAAP,EAAO,U,OAGba,KAAKI,OAASA,E,mCAIX,YAAAguW,gBAAP,WAEE,GADApuW,KAAKC,OAAO0zC,MAAM,mBACd3zC,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAAe,CAC1C,IAAI,EAAgB11J,KAAK6Q,MAAM6kJ,cAActvG,QACzCmoT,EAAavuW,KAAKguW,aAAahoW,MAAK,SAACwoW,GAA6B,OAAAA,EAAGpoT,UAAY,KACjFmoT,IACFvuW,KAAKgqC,WAAaukU,EAAWhyV,MAKtB,YAAA40C,eAAb,W,gGACe,OAAb,EAAAnxD,KAAa,GAAMA,KAAK64W,0BAA0B9wT,kBAAkB/nD,KAAKgqC,a,cAAzE,EAAKxsB,MAAQ,S,YAGD,YAAAre,KAAd,W,qBAAsBnD,GAAO,W,gGAKpBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OAEFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAC9B,EAAAje,KAAoB,GAAMA,KAAK84W,oBAAoBv7V,W,cAAnD,EAAKywV,aAAe,SACpBhuW,KAAKouW,kBACDpuW,KAAKie,WAEPje,KAAK64W,0BAA0Bz7V,OAAO87B,iBAAmBl5C,KAAKie,UAE9Dje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3Dje,KAAKusV,UAAW,EAKhB,EAAAvsV,KAAa,GAAMA,KAAK64W,0BAA0B9wT,kBAAkB/nD,KAAKgqC,cAXvE,M,OAWF,EAAKxsB,MAAQ,SACbxd,KAAK2lV,2B,sDAMT3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAKf,YAAAs+G,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAEzC,OADPgE,KAAKC,OAAOE,KAAK,UACV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKwpR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAQT,sBAAI,sBAAO,C,IAAX,WACE,OAAQlmV,KAAK64W,0BAA0Bz7V,OAAO7C,c,gCAGnC,YAAAmiD,KAAb,SAAkBwpR,G,qBAAuBlqV,GAAO,W,6DAGvC,OAFPgE,KAAKC,OAAOE,KAAK,QAEV,GAAMH,KAAK64W,0BAA0Bn8V,OAAO1c,KAAKgqC,WAAYhqC,KAAKwd,OACtEra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,kEAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,yB,OAAzC,MAAO,CAAP,EAAO,U,2BAIViD,OAAM,SAACnP,GACN,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,kBA5HEi8W,EAAsB,GADlC,uB,uBAoB8B,mB,OAAA,IAAZ,UAAY,SACiC,mBADjC,OACiC,IAAzB,UAAyB,SAC1B,mBAD0B,OAC1B,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1C,mBAD0C,OAC1C,IAAN,oBAAM,SAC0B,mBAD1B,OAC0B,IAAnB,UAAmB,YAxBvCA,GAAb,I,uGChBAr9W,EAAOD,QAAU,g+E,8lECsBjB,aAmBE,WACUm/D,EACAo+S,EACA90B,EACA40B,EACAzsB,EACAvpM,GANV,WACU,KAAAloF,QACA,KAAAo+S,0BACA,KAAA90B,gBACA,KAAA40B,sBACA,KAAAzsB,kBACA,KAAAvpM,eAtBF,KAAA1iJ,OAAc,GAKd,KAAAkd,WAAoC,IAAI,wBAExC,KAAA27V,OAA2B,IAAI,IAEhC,KAAAjL,aAA2B,GAK1B,KAAAzhB,UAAoB,EAgBpB,KAAAv/F,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAKg5W,wBAAwBllW,KAAK9T,KAAKgqC,WAAYhqC,KAAKsd,YAClEna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBARPkD,KAAKC,OAAS,aAAWC,UAAU,wBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,gBAgH5B,OAjGgB,YAAA+H,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,yDAGtCgE,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAIX,YAAAguW,gBAAP,WAEE,GADApuW,KAAKC,OAAO0zC,MAAM,mBACd3zC,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAAe,CAC1C,IAAI,EAAgB11J,KAAK6Q,MAAM6kJ,cAActvG,QACzCmoT,EAAavuW,KAAKguW,aAAahoW,MAAK,SAACwoW,GAA6B,OAAAA,EAAGpoT,UAAY,KACjFmoT,IACFvuW,KAAKgqC,WAAaukU,EAAWhyV,MAKrB,YAAA40C,eAAb,W,0FAEC,SAAMnxD,KAAKukV,Y,cAAX,S,YAGY,YAAAplV,KAAd,W,qBAAsBnD,GAAO,W,sEAItBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OAEF,EAAAje,KAAoB,GAAMA,KAAKqsV,gBAAgB9uU,W,cAA/C,EAAKywV,aAAe,SACpBhuW,KAAKouW,kBACLpuW,KAAKie,WAAaje,KAAKI,OAAO6d,UAE1Bje,KAAKie,WAEPje,KAAKg5W,wBAAwB57V,OAAO87B,iBAAmBl5C,KAAKie,UAE5Dje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3Dje,KAAKusV,UAAW,EACT,GAAMvsV,KAAKukV,aAPhB,M,OAOF,MAAO,CAAP,EAAO,U,yBAKC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAGxB,OAFPgE,KAAKC,OAAO0zC,MAAM,YAEX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAKxb,OAAO0zC,MAAM,UAAWl4B,GAC7B,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAYK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAA/hG,KAAd,SAAoB7tO,G,qBAAyBxE,GAAO,W,+DAE3C,OADH60V,EAAe3/U,KAAKC,MAAMD,KAAKE,UAAU5Q,IACtC,GAAMR,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IAENk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,OACFz4C,EAAKwpC,WAAahqC,KAAKgqC,WAChB,GAAMhqC,KAAKg5W,wBAAwBt8V,OAAQlc,GAC/C2C,MAAK,SAAOqa,GAAuB,qC,kCAElCxd,KAAKC,OAAO0zC,MAAM,WAAYn2B,EAAMjB,IACpC/b,EAAK+b,GAAKiB,EAAMjB,GAEhBvc,KAAK8iJ,aAAaxiJ,QAAQ,qE,aAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,Q,OAT5B,MAAO,CAAP,EAAO,U,OAaPjC,OAAOgI,OAAOrC,EAAMqwV,G,6CApBxB,MAAO,CAAP,EAAO,kBAnHEqoB,EAAoB,GADhC,uB,uBAqB8B,mB,OAAA,IAAZ,UAAY,SAC6B,mBAD7B,OAC6B,IAAvB,UAAuB,SACpB,mBADoB,OACpB,IAAb,kCAAa,SACY,mBADZ,OACY,IAAnB,UAAmB,SACJ,mBADI,OACJ,IAAnB,UAAmB,SACV,mBADU,OACV,IAAZ,UAAY,YAzBzBA,GAAb,I,mGCtBAx9W,EAAOD,QAAU,yuE,w8DCSjB,aAOE,WACU6lD,EACAokS,GADA,KAAApkS,mBACA,KAAAokS,8BAPF,KAAAloU,MAA0B,IAAI,IASpCxd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,yB,QA8BvC,OA1BQ,YAAA0Y,SAAN,SAAe4E,G,qBAA0BxhB,GAAO,W,kCAC9CgE,KAAKC,OAAO0zC,MAAM,YAClB3zC,KAAKwd,MAAQA,EACbxd,KAAK2lV,2B,WAGP,YAAAA,yBAAA,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,QAAQpyK,YAAY,qDAAqDwkD,WAChFn+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,W,qBAAuBp/G,GAAO,W,sCAC5B,MAAO,CAAP,EAAOgE,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKF,YAAAA,KAAb,W,qBAAqB1gE,GAAO,W,kDACnB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAzCEuzS,EAAqB,GADjC,uB,uBAS6C,mB,OAAA,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,YATvDA,GAAb,K,oGCTAz9W,EAAOD,QAAU,yiC,ujECoBjB,aAgBE,WACUm/D,EACAklS,EACA5b,EACAF,EACAlhM,GALV,WACU,KAAAloF,QACA,KAAAklS,kCACA,KAAA5b,gBACA,KAAAF,mBACA,KAAAlhM,eAlBF,KAAA1iJ,OAAc,GAKd,KAAAkd,WAAoC,IAAI,wBAIxC,KAAAivU,UAAoB,EAEpB,KAAA6sB,uBAAiC,EAejC,KAAApsH,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAK8/V,gCAAgChsV,KAAK9T,KAAKsd,YACzDna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBARPkD,KAAKC,OAAS,aAAWC,UAAU,gCAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,cAyH5B,OA1GgB,YAAA+H,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,wDAEpB,SAAMgE,KAAKgkV,iBAAiB7rQ,yCAAyC/3E,EAAO6d,Y,cAA9FmlU,EAAkB,SACtBpjV,KAAKo5W,sBAA2C,MAAnBh2B,GAA0BA,EAAgBi2B,eAGnEr5W,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAKJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,oEAGtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OAEFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE1Bje,KAAKie,WAEPje,KAAK8/V,gCAAgC1iV,OAAO87B,iBAAmBl5C,KAAKie,UAEpEje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3Dje,KAAKusV,UAAW,EACT,GAAMvsV,KAAKukV,aAPhB,O,OAOF,MAAO,CAAP,EAAO,U,yBAKC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAGxB,OAFPgE,KAAKC,OAAO0zC,MAAM,YAEX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAKxb,OAAO0zC,MAAM,UAAWl4B,GAC7B,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAYK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBA4BK,YAAA1zQ,KAAd,SAAmBl8D,G,qBAAiCxE,GAAO,W,oEAErDgE,KAAKs5W,qBAAqB94W,EAAK+4W,iBAE1B,GAAMv5W,KAAK8/V,gCAAgCpjV,OAAOlc,GACtD2C,MAAK,SAAOqa,GAA+B,qC,kCAE1Cxd,KAAKC,OAAO0zC,MAAM,WAAYn2B,EAAMjB,IACpC/b,EAAK+b,GAAKiB,EAAMjB,GAEhBvc,KAAK8iJ,aAAaxiJ,QAAQ,qF,aAE3B2L,OAAM,SAAMnP,GAAK,qC,kDAChB,SAAMkD,KAAKukV,Y,cAAX,SACAvkV,KAAK8iJ,aAAahmJ,MAAMA,G,eAZ1B,M,OAEF,MAAO,CAAP,EAAO,U,OAePkD,KAAK8iJ,aAAaviJ,QAAQ,sG,mCAKtB,YAAA+4W,qBAAR,SAA6Bl6W,GAC3B,MAAO,4CAA4CgD,KAAKhD,IAhJ/Co6W,EAA4B,GADxC,uB,uBAkB8B,mB,OAAA,IAAZ,UAAY,SAC6C,mBAD7C,OAC6C,IAA/B,UAA+B,SACpC,mBADoC,OACpC,IAAb,kCAAa,SACM,mBADN,OACM,IAAhB,UAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,YArBzBA,GAAb,I,kICpBA99W,EAAOD,QAAU,6iI,yqBCSjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,+B,MAsBvC,OAlBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,2BACVoD,KAAM,0BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,yEACpB+H,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsB2iD,0CAxB5BoqG,EAA2B,GADvC,uB,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,wGCTA/9W,EAAOD,QAAU,8M,uGCAjBC,EAAOD,QAAU,me,wsEC4BjB,aA2BE,WACUm/D,EACA90D,EACAg9I,EACA4iM,EACAg0B,EACAx1B,EACAmI,EACAiC,EACA7/L,EACAkrN,GATA,KAAA/+S,QACA,KAAA90D,SACA,KAAAg9I,eACA,KAAA4iM,8BACA,KAAAg0B,0BACA,KAAAx1B,gBACA,KAAAmI,kBACA,KAAAiC,4BACA,KAAA7/L,uBACA,KAAAkrN,aA9BF,KAAAn8V,MAA0B,IAAI,IAE9B,KAAAo8V,qBAA4C,IAAIltU,IAIjD,KAAAshU,aAA2B,GAE1B,KAAAj5T,cAAmC,GACnC,KAAA8kU,eAAoC,GACpC,KAAAC,MAA2B,GAC3B,KAAAC,QAA6B,GAC7B,KAAAC,cAAmC,GACnC,KAAAC,aAAkC,GAClC,KAAApwU,OAAiB,KACjB,KAAAlP,SAAmB,EACnB,KAAAu8U,oBAA8B,EAC9B,KAAAgD,iBAA2B,EAC3B,KAAAC,sBAAgC,EActCn6W,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,wBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,wBA2b5B,OAxbe,YAAAupW,2BAAb,W,gGAC6B,OAA5B,EAAAp6W,KAA4B,GAAMA,KAAK25W,WAAWh0N,oB,cAAlD,EAAKw0N,qBAAuB,SAC5Bn6W,KAAKC,OAAOE,KAAK,6BAA8BH,KAAKm6W,sB,YAEvC,YAAAvhW,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,qEACpEgE,KAAKC,OAAO0zC,MAAM,Y,8CAIXryB,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKo6W,6BACLp6W,KAAKie,WAAa7d,EAAO6d,UAEzBje,KAAK05W,wBAAwBt8V,OAAO87B,iBAAmBl5C,KAAKie,UAE5Dje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAG3D,EAAAje,KAAqB,GAAMA,KAAKsuV,0BAA0B/wU,W,OAEtC,OAFpB,EAAKw3B,cAAgB,SACrB/0C,KAAK65W,eAAiB75W,KAAK+0C,cAC3B,EAAA/0C,KAAoB,GAAMA,KAAKqsV,gBAAgB9uU,U,cAA/C,EAAKywV,aAAe,SAEpBhuW,KAAKouW,kBACLpuW,KAAK6E,SAEAyc,MAAMlhB,EAAOi6W,oBAAd,OACF,EAAAr6W,KAAa,GAAMA,KAAK05W,wBAAwBp9V,SAASlc,EAAOi6W,sB,cAAhE,EAAK78V,MAAQ,SACbxd,KAAKs6W,+BACLt6W,KAAKu6W,aAAY,G,aAIjBv6W,KAAKwd,MAAM03L,eAAiB,G,iBAG9Bl1M,KAAK2lV,2B,sDAKP3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIpB,YAAA6oV,yBAAR,WACE,kBACGvM,OAAO,QAAQpyK,YAAY,4DAA4DwkD,WACvFn+K,GAAGrtC,KAAKwd,QAGN,YAAA4wV,gBAAP,WAEE,GADApuW,KAAKC,OAAO0zC,MAAM,mBACd3zC,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAAe,CAC1C,IAAI,EAAgB11J,KAAK6Q,MAAM6kJ,cAActvG,QACzCmoT,EAAavuW,KAAKguW,aAAahoW,MACjC,SAACwoW,GAA4B,OAAAA,EAAGpoT,UAAY,KAE1CmoT,IACFvuW,KAAKu6V,mBAAqBgU,EAAWhyV,MAK3C,sBAAI,sBAAO,C,IAAX,WACE,OAAQvc,KAAK05W,wBAAwBt8V,OAAO7C,c,gCAG9C,sBAAI,uCAAwB,C,IAA5B,WACE,OAAOva,KAAKwd,OAASxd,KAAKwd,MAAM03L,gBAAkBl1M,KAAKwd,MAAM03L,eAAet6M,OAAS,G,gCAG1E,YAAA4/W,eAAb,SAA4Bt0B,G,qBAAuBlqV,GAAO,W,iFACxDgE,KAAKC,OAAOE,KAAK,kB,iBAI0B,O,wBAAA,GAAMH,KAAK01U,qBAAqBrnS,Y,OAEzE,OAFMt+B,EAAmC,UAE7B4oM,MAKP34M,KAAKwd,MAAMi9V,6BAA2D,MAA5Bz6W,KAAKwd,MAAMk9V,cACvC,GAAM16W,KAAK25W,WAAWj0N,iBAAiB1lJ,KAAKwd,MAAMk9V,gBADhE,OAJH16W,KAAKC,OAAO0zC,MAAM,qBAAsB5jC,EAAOqC,SAC/CpS,KAAK8iJ,aAAaviJ,QAAQ,2BAC1B,K,OAIiB,OADbo6W,EAAa,YAEjB36W,KAAKwd,MAAMo9V,mBAAqBD,EAAWE,gBAC3C76W,KAAKwd,MAAMs9V,gBAAkBH,EAAWI,e,iBAK1C,GAAwC,GAApC/6W,KAAKwd,MAAM03L,eAAet6M,OAE5B,OADAoF,KAAK8iJ,aAAaviJ,QAAQ,2DAC1B,IAUF,GALMy6W,EAAsBh7W,KAAKwd,MAAM03L,eACpCvwM,KAAI,SAAAs2W,GAAO,SAAKpB,eAAe7zW,MAAK,SAAAs1D,GAAK,OAAAA,EAAEmmN,UAAYw5F,EAAIx5F,eAC3D58Q,QAAO,SAAAy2D,GAAK,OAAK,MAALA,GAAaA,EAAEh1D,UAA4B,MAAhBg1D,EAAEtxB,cACzCrlC,KAAI,SAAA22D,GAAK,OAAAA,EAAGtxB,cACWtpC,MAAM0hB,KAAK,IAAIqgN,IAAIu4I,IACvBpgX,OAAS,EAI7B,OAHAoF,KAAK8iJ,aAAaviJ,QAChB,6FAEF,IAIF,GAAIP,KAAKk3W,oBAAgE,GAA1Cl3W,KAAKwd,MAAM23L,qBAAqBv6M,OAE7D,OADAoF,KAAK8iJ,aAAaviJ,QAAQ,yDAC1B,IAIL,GAAIP,KAAKk6W,mBAAqBl6W,KAAKwd,MAAM43L,oCAA+F,IAAzDp1M,KAAKwd,MAAM43L,mCAAmCx6M,QAExH,OADAoF,KAAK8iJ,aAAaviJ,QAAQ,8DAC1B,IAGF,GAAIP,KAAKwd,MAAM03L,eAAet6M,OAAS,EAMrC,IALI,EAAcoF,KAAKwd,MAAM03L,eAAevwM,KAAI,SAAAs2W,GAClD,IAAM3/S,EAAI,EAAKu+S,eAAe7zW,MAAK,SAAAokB,GAAK,OAAAA,EAAEq3P,UAAYw5F,EAAIx5F,YACtD,OAAOnmN,EAAIA,EAAE/+C,GAAK,KACjB1X,QAAO,SAAA0X,GAAM,OAAAA,EAAK,K,WAEZ7hB,GACP,IAAM4gE,EAAI,EAAKu+S,eAAe7zW,MAAK,SAAAokB,GAAK,OAAAA,EAAE7N,KAAO,EAAY7hB,MAC7D,GAAI4gE,GAAKA,EAAE8+R,8BAAgC9+R,EAAE8+R,6BAA6Bx/V,OAAS,EACjF,I,eAASg5B,GACP,IAAMsnV,EAAiB5/S,EAAE8+R,6BAA6BxmU,GAAGunV,0BACzD,IAA6C,IAAzC,EAAY9pW,QAAQ6pW,GAAwB,CAC9C,IAAME,EAAgB,EAAKvB,eAAe7zW,MAAK,SAAAokB,GAAK,OAAAA,EAAE7N,KAAO2+V,K,OAC7D,EAAKp4N,aAAaviJ,QACb+6D,EAAE59D,KAAI,kFAAiF09W,EAAgBA,EAAc19W,KAAOw9W,I,iBAL5HtnV,EAAI,EAAGA,EAAI0nC,EAAE8+R,6BAA6Bx/V,OAAQg5B,IAAK,C,QAAvDA,G,wCAHJl5B,EAAI,EAAGA,EAAI,EAAYE,OAAQF,I,wBAA/BA,I,yBAkBNsF,KAAKwd,MAAMjB,GAAZ,OACFvc,KAAKC,OAAO0zC,MAAM,qCAClB,EAAA3zC,KAAa,GAAMA,KAAK05W,wBAAwBz6W,OAAOe,KAAKwd,S,OAA5D,EAAKA,MAAQ,SACbxd,KAAKC,OAAO0zC,MAAM,qCAAsC3zC,KAAKwd,MAAMjB,IACnEvc,KAAK8iJ,aAAaxiJ,QAAQ,4B,iBAI5B,SAAMN,KAAK05W,wBAAwBh9V,OAAO1c,KAAKwd,Q,cAA/C,SACAxd,KAAK8iJ,aAAaxiJ,QAAQ,6BAGrB4lV,EAAD,MACF,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,uB,OAAlC,S,wDAGFhJ,KAAKC,OAAOnD,MAAM,wBAAyB,GAC3CkD,KAAK8iJ,aAAahmJ,MAAM,G,iCAIpB,YAAA+H,OAAR,SAAeglC,GAAf,WAEI7pC,KAAK+0C,cADHlL,EACmB7pC,KAAK65W,eAAeh1W,QACvC,SAACqC,GAAM,OAAwD,IAAxDA,EAAExJ,KAAK6d,cAAclK,QAAQw4B,EAAOtuB,kBAGxBvb,KAAK65W,eAGG,GAA3B75W,KAAKu6V,oBAAsD,MAA3Bv6V,KAAKu6V,oBACvCv6V,KAAK85W,MAAQ95W,KAAK+0C,cACflwC,QACC,SAACqC,GACC,OAAAA,EAAE8xV,kBAAoB,IAAgBqiB,MACtCn0W,EAAEgjC,gBAAkB,IAAcovT,SACjCpyV,EAAE4yV,aAENroV,MAAK,SAACvK,EAAGkjB,GAAM,OAAAljB,EAAEoJ,MAAQ8Z,EAAE9Z,SAE9BtQ,KAAK+5W,QAAU/5W,KAAK+0C,cACjBlwC,QACC,SAACqC,GACC,OAAAA,EAAE8xV,kBAAoB,IAAgBqiB,MACtCn0W,EAAEqyV,aAAe,IAAWG,eAC5BxyV,EAAEqyV,aAAe,IAAWU,YAC3B/yV,EAAE4yV,aAENroV,MAAK,SAACvK,EAAGkjB,GAAM,OAAAljB,EAAEoJ,MAAQ8Z,EAAE9Z,SAE5BtQ,KAAKi6W,aAAej6W,KAAK+0C,cACxBlwC,QACC,SAACqC,GACC,OAAAA,EAAE8xV,kBAAoB,IAAgBqiB,MACtCn0W,EAAEqyV,aAAe,IAAWG,eAC5BxyV,EAAEqyV,aAAe,IAAWU,WAC5B/yV,EAAEqyV,aAAe,IAAWS,aAC5B9yV,EAAE4yV,aAELroV,MAAK,SAACvK,EAAGkjB,GAAM,OAAAljB,EAAEoJ,MAAQ8Z,EAAE9Z,SAE9BtQ,KAAKg6W,cAAgBh6W,KAAK+0C,cACvBlwC,QACC,SAACqC,GACC,OAAAA,EAAE8xV,kBAAoB,IAAgBqiB,MACtCn0W,EAAEqyV,YAAc,IAAWG,gBAC1BxyV,EAAE4yV,aAENroV,MAAK,SAACvK,EAAGkjB,GAAM,OAAAljB,EAAEoJ,MAAQ8Z,EAAE9Z,WAE9BtQ,KAAK85W,MAAQ95W,KAAK+0C,cACflwC,QACC,SAACqC,GACC,OAAAA,EAAE8xV,kBAAoB,IAAgBqiB,MACtCn0W,EAAE8iC,aAAe,EAAKuwT,oBACtBrzV,EAAEgjC,gBAAkB,IAAcovT,SACjCpyV,EAAE4yV,aAENroV,MAAK,SAACvK,EAAGkjB,GAAM,OAAAljB,EAAEoJ,MAAQ8Z,EAAE9Z,SAE9BtQ,KAAK+5W,QAAU/5W,KAAK+0C,cACjBlwC,QACC,SAACqC,GACC,OAAAA,EAAE8xV,kBAAoB,IAAgBqiB,MACtCn0W,EAAEqyV,aAAe,IAAWG,eAC5BxyV,EAAEqyV,aAAe,IAAWU,WAC5B/yV,EAAE8iC,aAAe,EAAKuwT,qBACrBrzV,EAAE4yV,aAENroV,MAAK,SAACvK,EAAGkjB,GAAM,OAAAljB,EAAEoJ,MAAQ8Z,EAAE9Z,SAE7BtQ,KAAKi6W,aAAej6W,KAAK+0C,cACvBlwC,QACC,SAACqC,GACC,OAAAA,EAAE8xV,kBAAoB,IAAgBqiB,MACtCn0W,EAAEqyV,aAAe,IAAWG,eAC5BxyV,EAAEqyV,aAAe,IAAWU,WAC5B/yV,EAAEqyV,aAAe,IAAWS,aAC5B9yV,EAAE8iC,aAAe,EAAKuwT,oBACtBrzV,EAAE4yV,aAELroV,MAAK,SAACvK,EAAGkjB,GAAM,OAAAljB,EAAEoJ,MAAQ8Z,EAAE9Z,SAE9BtQ,KAAKg6W,cAAgBh6W,KAAK+0C,cACvBlwC,QACC,SAACqC,GACC,OAAAA,EAAE8xV,kBAAoB,IAAgBqiB,MACtCn0W,EAAE8iC,aAAe,EAAKuwT,oBACtBrzV,EAAEqyV,YAAc,IAAWG,gBAC1BxyV,EAAE4yV,aAENroV,MAAK,SAACvK,EAAGkjB,GAAM,OAAAljB,EAAEoJ,MAAQ8Z,EAAE9Z,WAIpB,YAAAiqW,YAAd,SAA0Be,EAA0BC,G,YAAA,IAAAA,MAAA,M,mGAClDv7W,KAAKC,OAAO0zC,MAAM,kBAAmB2nU,GACjCE,EAAM,EACVx7W,KAAKk3W,oBAAqB,EAC1Bl3W,KAAKk6W,iBAAkB,E,WACZhzW,G,2EACLo0D,EAAI,EAAKu+S,eAAe7zW,MAAK,SAACokB,GAAM,OAAAA,EAAEq3P,UAAYv6Q,EAAEu6Q,cAEtD+5F,IAAQlgT,EAAE+4S,YACN/4S,EAAE09R,iBAAmB,IAAgBif,cACvC,EAAKf,oBAAqB,EACtBoE,GACF,EAAKxD,2BAGLx8S,EAAEw+R,WACJ,EAAKogB,iBAAkB,EAEQ,MAA3BqB,GAAmCjgT,EAAE/+C,KAAOg/V,GAC9C,EAAKE,gBAAgBngT,EAAE/+C,GAAI++C,EAAE59D,MAEuB,MAAjD,EAAK8f,MAAM43L,oCAA8C,EAAK53L,MAAM43L,mCAAmCx6M,OAAS,EAC1F,GAAM,EAAK0zV,0BAA0BrkM,4BAA4B3uF,EAAE/+C,KADzF,OANH,OARF,M,OAiBE,IAFIm/V,EAAqB,SACrBC,EAA2B,EAAKn+V,MAAM43L,mCAAmCvwM,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkB8wB,EAAE/+C,M,WACpGolQ,GACT,IAAIi6F,EAAWF,EAAmB11W,MAAK,SAAAi+D,GAAK,OAAAA,EAAE1nD,KAAOolQ,EAAU5jQ,mBAC/Dy9V,KAASI,GAAYA,EAASvH,YAAcuH,EAASvH,YAAc,IAFhE,EAAL,EAAwB,EAAAsH,EAAA,eAAbh6F,EAAS,K,EAATA,G,2CAnBH,EAAA3hR,KAAKwd,MAAM03L,e,wBAAX,YAALhuM,EAAC,K,KAADA,KAA8B,M,wCAAzB,I,oBA4BhBlH,KAAK26B,SAAW6gV,EAChBx7W,KAAKC,OAAO0zC,MAAM,WAAY3zC,KAAK26B,U,YAG7B,YAAA2/U,6BAAR,sBACEt6W,KAAKC,OAAO0zC,MAAM,iDAAkD3zC,KAAKwd,MAAM03L,eAAet6M,QAE9F,IAAMihX,EAAgB77W,KAAKwd,MAAM03L,eAAet6M,OAG1CkhX,EAAsB97W,KAAKwd,MAAM03L,eAAerwM,QAAO,SAAAo2W,GAC3D,IAAM5pT,EAAS,EAAKwoT,eAAeh7V,MAAK,SAAAy8C,GAAK,OAAAA,EAAEmmN,WAAaw5F,EAAIx5F,YAIhE,OAHKpwN,GACH,EAAKpxD,OAAO0zC,MAAM,iCAAkCsnU,EAAIx5F,UAEnDpwN,KAILyqT,EAAoBlhX,SAAWihX,IACjC77W,KAAKwd,MAAM03L,eAAiB4mK,EAC5B97W,KAAKC,OAAO0zC,MAAM,gDAAiD3zC,KAAKwd,MAAM03L,eAAet6M,UAInF,YAAAk9W,wBAAd,W,qBAAyC97W,GAAO,W,6DAEvC,OADPgE,KAAKC,OAAO0zC,MAAM,8BACX,GAAM3zC,KAAKkkV,cACfzoS,KAAK,CACJ1tC,UAAW,yBACXyP,MAAOxd,KAAKwd,MAAM23L,uBAEnBz8C,YAAW,SAAOj9I,GAAa,qC,kCACzBA,EAASw9B,cAEVj5C,KAAKk3W,oBACqC,GAA1Cl3W,KAAKwd,MAAM23L,qBAAqBv6M,QAEhCoF,KAAK8iJ,aAAaviJ,QAChB,yD,qBAZV,MAAO,CAAP,EAAO,kBAkBG,YAAAk7W,gBAAd,SAA8BjxU,EAAuBi6T,G,qBAA0BzoW,GAAO,W,yEAS5D,OARtBgE,KAAKC,OAAO0zC,MAAM,2CAA4C3zC,KAAKwd,MAAM43L,oCAGpEp1M,KAAKwd,MAAM43L,qCACdp1M,KAAKwd,MAAM43L,mCAAqC,IAI5B,GAAMp1M,KAAKsuV,0BAA0BrkM,4BAA4Bz/G,I,cAAjFuxU,EAAgB,SAChBC,EAAoBD,EAAcl3W,QAAO,SAAA1G,GAAK,OAACA,EAAE64G,eAGjD5hE,EAAcp1C,KAAK65W,eAAe7zW,MAAK,SAAAs1D,GAAK,OAAAA,EAAE/+C,KAAOiuB,OAEf,MAAzB4K,EAAYn3B,WAAqB+9V,EAAkBphX,OAAS,GAGvEqhX,EAAqDD,EAAkBr3W,KAAI,SAAAu3W,GAC/E,IAAIv6F,EAAY,IAAI,IAIpB,OAHAA,EAAUn3O,cAAgBA,EAC1Bm3O,EAAU5jQ,gBAAkBm+V,EAAI3/V,GAChColQ,EAAUx2O,mBAAqB+wU,EAAI/wU,mBAC5Bw2O,KAGHznM,EAAYl6E,KAAKwd,MAAM43L,mCAC1BvwM,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkBA,KACnCxqC,KAAKwd,MAAM43L,mCAAqCl7H,EAAU/1E,OAAO83W,GAEjE,GAAMj8W,KAAKu6W,aAAY,KAfrB,M,OAgBF,OADA,SACA,I,OASK,OAND4B,EAAqC,CACzC3xU,cAAeA,EACfi6T,gBAAiBA,EACjBrvJ,mCAAwCp1M,KAAKwd,MAAM43L,mCAAkC,SAGhF,GAAMp1M,KAAKkkV,cACfzoS,KAAK,CACJ1tC,UAAW,IACXyP,MAAO2+V,IAERzjN,YAAW,SAAOj9I,GAAa,qC,+DACzBA,EAASw9B,eAAgBx9B,EAASxR,OAAnC,OAEIiwE,EAAYl6E,KAAKwd,MAAM43L,mCAC1BvwM,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkBA,KACnCxqC,KAAKwd,MAAM43L,mCAAqCl7H,EAAU/1E,OAAOsX,EAASxR,OAAOmyW,YAEjF,GAAMp8W,KAAKu6W,aAAY,K,OAAvB,SACAv6W,KAAKC,OAAO0zC,MAAM,8CAChB3zC,KAAKwd,MAAM43L,mCAAmCx6M,Q,wBAGhDoF,KAAKk6W,iBACHl6W,KAAKwd,MAAM43L,oCAC4C,IAAzDp1M,KAAKwd,MAAM43L,mCAAmCx6M,QAE9CoF,KAAK8iJ,aAAaviJ,QAChB,uD,sBAtBR,MAAO,CAAP,EAAO,kBA4BD,YAAA87W,WAAR,SAAmBjnU,GAIjB,OAH8Bp1C,KAAKwd,MAAM03L,eAAerwM,QACtD,SAACqC,GAAM,OAAAA,EAAEu6Q,UAAYrsO,EAAYqsO,YAEN7mR,OAAS,GAGhC,YAAA0hX,qBAAR,SACEhB,EACAlmU,EACAmnU,QAAA,IAAAA,OAAA,GAEA,IAAM5yW,EAAQ3J,KAAKwd,MAAM03L,eAAehiC,WACtC,SAAChsK,GAAM,OAAAA,EAAEu6Q,UAAYrsO,EAAYqsO,YAE/B5jP,GAAsB,IAAXl0B,EACf,IAAe,IAAXA,EACF3J,KAAKwd,MAAM03L,eAAe/9L,OAAOxN,EAAO,OACnC,CACL,IAAI6yW,EAA2C,IAAI,IACnDA,EAAoBxyU,WAAaoL,EAAYpL,WAC7CwyU,EAAoBhyU,cAAgB4K,EAAY74B,GAChDigW,EAAoB/6F,SAAWrsO,EAAYqsO,SAC3CzhR,KAAKwd,MAAM03L,eAAeh6M,KAAKshX,GAGjC,IAAMC,EAAgB5+U,GAAY0+U,GAAiBnnU,EAAY0kT,UAAa1kT,EAAY74B,GAAK,KAC7Fvc,KAAKu6W,YAAYe,EAAiBmB,IAE7B,YAAA7U,iBAAP,SAAwBnqW,GACtBuC,KAAK8iJ,aAAa3iJ,KAAK1C,IAredi/W,EAAoB,GADhC,uB,uBA6B8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACR,mBADQ,OACR,IAAvB,UAAuB,SACpB,mBADoB,OACpB,IAAb,kCAAa,SACQ,mBADR,OACQ,IAAnB,UAAmB,SACgB,mBADhB,OACgB,IAAzB,UAAyB,SACV,mBADU,OACV,IAApB,UAAoB,SACpB,mBADoB,OACpB,IAAV,UAAU,YArCrBA,GAAb,I,mHC5BAhhX,EAAOD,QAAU,uzGAA+0G,EAAQ,KAAuD,m7BAAm8B,EAAQ,KAAuD,i4CAAy5C,EAAQ,KAAuD,20BAAu1B,EAAQ,KAAuD,+jC,uqECwB/wN,aAcE,WACUm/D,EACA8+S,EACAx1B,EACAphM,GAJV,WACU,KAAAloF,QACA,KAAA8+S,0BACA,KAAAx1B,gBACA,KAAAphM,eAfF,KAAA1iJ,OAAc,GAKd,KAAAkd,WAAoC,IAAI,wBAIxC,KAAAivU,UAAoB,EAapB,KAAAv/F,QAAU,6BAAUhxP,GAAO,W,+DAK1B,OAJPgE,KAAKC,OAAO0zC,MAAM,cACd9J,EAAS7pC,KAAKsd,WAAWusB,OAAOylT,MACpC3mL,eAAentF,QAAQ,6BAAwC,MAAV3xC,EAAiB,GAAKA,GAEpE,GAAM7pC,KAAK05W,wBAAwB5lW,KAAK9T,KAAKsd,YACjDna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAVPkD,KAAKC,OAAS,aAAWC,UAAU,wBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,YAsH5B,OArGgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,yDAEpEgE,KAAKsd,WAAWusB,OAAOylT,MAAQ3mL,eAAexsF,QAAQ,8BAGlDn8E,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAKJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,oEAGtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OAEFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE1Bje,KAAKie,WAEPje,KAAK05W,wBAAwBt8V,OAAO87B,iBAAmBl5C,KAAKie,UAE5Dje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3Dje,KAAKusV,UAAW,EACT,GAAMvsV,KAAKukV,aAPhB,O,OAOF,MAAO,CAAP,EAAO,U,yBAKC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAy5W,aAAd,W,qBAA8Bv6W,GAAO,W,kDAEnC,OADAgE,KAAKsd,WAAWusB,OAAOylT,MAAQ,KAC/B,GAAMtvV,KAAKukV,Y,cAAX,S,YAGY,YAAAhc,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAAtzT,OAAd,SAAqBtc,G,qBAAyBxE,GAAO,W,6DAC5C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK9C,OACXg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MAEK,GAAMj5C,KAAK05W,wBAAwB58V,OAAOtc,EAAK+b,IACnDpZ,MAAK,WAEJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ7Q,EAAK+b,GAAGyC,YACrG,EAAK1B,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,iCAG3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,U,mCANX,MAAO,CAAP,EAAO,kBAuBK,YAAA6/W,uBAAd,SAAqCC,G,qBAAkE5gX,GAAO,W,wDAM5G,OALMwhB,EAAiC,CACrC6mB,OAAQ,oBACR+wK,mCAAoCwnK,GAGtC,GAAM58W,KAAKkkV,cAAczoS,KAAK,CAAE1tC,UAAW,IAAyByP,MAAOA,K,cAA3E,S,YAGY,YAAAq/V,MAAd,SAAoBr8W,G,qBAAyBxE,GAAO,W,wDAOlD,OANIwhB,EAA2B,CAC7BlgB,KAAM,IAAkB60J,mBACxB51I,GAAI/b,EAAK+b,GACT0B,UAAWje,KAAKie,UAChB44U,OAAQ72V,KAAK6Q,MAAM6kJ,cAAcn5I,IAEnC,GAAMvc,KAAKkkV,cAAczoS,KAAK,CAC5B1tC,UAAW,IACXyP,MAAOA,K,cAFT,S,YAtISs/V,EAAoB,GADhC,uB,uBAgB8B,mB,OAAA,IAAZ,UAAY,SAC6B,mBAD7B,OAC6B,IAAvB,UAAuB,SACpB,mBADoB,OACpB,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YAlBzBA,GAAb,I,wICvBA,oGAKA,GALA,KAKA,WAKE,aACE98W,KAAKC,OAAS,aAAWC,UAAU,mCAqBvC,OAlBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,2BACVoD,KAAM,sBAIR,CACEgF,MAAO,wCACPpI,SAAU,mCACVoD,KAAM,qCAKd,EA3BA,K,6GCNAhC,EAAOD,QAAU,uD,kGCAjBC,EAAOD,QAAU,ygG,wrBCSjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,8B,MAmCvC,OA/BE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,mCACVoD,KAAM,iCACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,qEACpB+H,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBqjD,sCAKnC,CACErtQ,MAAO,mBACPpI,SAAU,8BACVoD,KAAM,4BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,kEACpB+H,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBqjD,yCArC5BgtG,EAA0B,GADtC,uB,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,wHCTArhX,EAAOD,QAAU,8M,2gECcjB,aAiBE,WACUm/D,EACAyxR,EACAvmV,EACAg9I,EACA4iM,EACA0wB,GALA,KAAAx7S,QACA,KAAAyxR,kBACA,KAAAvmV,SACA,KAAAg9I,eACA,KAAA4iM,8BACA,KAAA0wB,wBAZF,KAAA54V,MAAwB,IAAI,IAC5B,KAAAwuU,iBAA2B,EAajChsV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,uBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,gBA4F5B,OAxFgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,0EACpEgE,KAAKC,OAAO0zC,MAAM,YAEbryB,MAAMlhB,EAAO6d,WAAd,OAEFje,KAAKie,WAAa7d,EAAO6d,UAEzB,EAAAje,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,W,UAA5C,EAAKu9C,UAAY,SACjB96D,KAAKouW,kBAELpuW,KAAKo2W,sBAAsBh5V,OAAO87B,iBAAmBl5C,KAAKie,UAE1Dje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAEtDqD,MAAMlhB,EAAO2pC,kBAAd,Y,iBAEa,O,sBAAb,EAAA/pC,KAAa,GAAMA,KAAKo2W,sBAAsB95V,SAASlc,EAAO2pC,mB,cAA9D,EAAKvsB,MAAQ,S,+BAGbxd,KAAK8iJ,aAAahmJ,MAAM,G,aAG5BkD,KAAK2lV,2B,mCAID,YAAAA,yBAAR,WACE,kBACGvM,OAAO,QAAQpyK,YAAY,4DAA4DwkD,WACvF4tH,OAAO,iBAAiBpyK,YAAY,kDAAkDwkD,WACtF4tH,OAAO,cAAcpyK,YAAY,kDAAkDwkD,WACnFn+K,GAAGrtC,KAAKwd,QAGN,YAAA4wV,gBAAP,WAEE,GADApuW,KAAKC,OAAO0zC,MAAM,mBACd3zC,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAAe,CAC1C,IAAI,EAAgB11J,KAAK6Q,MAAM6kJ,cAActvG,QACzCmoT,EAAavuW,KAAK86D,UAAU90D,MAAK,SAACwoW,GAA6B,OAAAA,EAAGpoT,UAAY,KAC9EmoT,IACFvuW,KAAKgqC,WAAaukU,EAAWhyV,GAC7Bvc,KAAKwd,MAAMwsB,WAAahqC,KAAKgqC,cAKrB,YAAAoxE,OAAd,SAAqB4wO,G,qBAA2BhwV,GAAO,W,sCAErD,OADAgE,KAAKgsV,gBAAkBA,EAChB,CAAP,EAAOhsV,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKf,sBAAI,sBAAO,C,IAAX,WACE,OAAQ18D,KAAKo2W,sBAAsBh5V,OAAO7C,c,gCAG9B,YAAAmiD,KAAd,W,qBAAsB1gE,GAAO,W,yFAEpBgE,KAAKwd,MAAMjB,GAAZ,OACF,EAAAvc,KAAa,GAAMA,KAAKo2W,sBAAsBn3W,OAAOe,KAAKwd,S,cAA1D,EAAKA,MAAQ,SACbxd,KAAK8iJ,aAAaxiJ,QAAQ,4BAErBN,KAAKgsV,gBAAN,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,+B,OAAzC,MAAO,CAAP,EAAO,U,OAEA,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,yCAA0C,CAAE+gC,iBAAkB/pC,KAAKwd,MAAMjB,M,OAAlH,MAAO,CAAP,EAAO,U,0BAIT,SAAMvc,KAAKo2W,sBAAsB15V,OAAO1c,KAAKwd,Q,cAA7C,SAEAxd,KAAK8iJ,aAAaxiJ,QAAQ,6BAErBN,KAAKgsV,gBAAN,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,+B,OAAzC,MAAO,CAAP,EAAO,U,8CAMXhJ,KAAK8iJ,aAAahmJ,MAAM,G,iCAtHjBkgX,EAAmB,GAD/B,uB,uBAmB8B,mB,OAAA,IAAZ,UAAY,SACiB,mBADjB,OACiB,IAAnB,UAAmB,SACtB,mBADsB,OACtB,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACZ,mBADY,OACZ,IAArB,UAAqB,YAvB3CA,GAAb,I,mICdAthX,EAAOD,QAAU,ooH,0mECwBjB,aAmBE,WACUm/D,EACAyxR,EACAgC,EACA4uB,EACA/4B,EACAphM,GANV,WACU,KAAAloF,QACA,KAAAyxR,kBACA,KAAAgC,yBACA,KAAA4uB,iCACA,KAAA/4B,gBACA,KAAAphM,eAtBF,KAAA1iJ,OAAc,GASd,KAAAkd,WAAoC,IAAI,wBAIxC,KAAAivU,UAAoB,EACpB,KAAAnJ,gBAAmC,IAAI,IAevC,KAAAp2F,QAAU,6BAAUhxP,GAAO,W,+DAK1B,OAJPgE,KAAKC,OAAO0zC,MAAM,cACd9J,EAAS7pC,KAAKsd,WAAWusB,OAAOylT,MACpC3mL,eAAentF,QAAQ,oCAA+C,MAAV3xC,EAAiB,GAAKA,GAE3E,GAAM7pC,KAAKi9W,+BAA+BnpW,KAAK9T,KAAKsd,YACxDna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAVPkD,KAAKC,OAAS,aAAWC,UAAU,uBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,gBAwI5B,OAvHgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,yDAEpEgE,KAAKsd,WAAWusB,OAAOylT,MAAQ3mL,eAAexsF,QAAQ,qCAGlDn8E,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAKJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,wEAGtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OAEFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE1Bje,KAAKie,WAGP,EAAAje,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,WAH1C,O,OAUqB,OAPvB,EAAKu9C,UAAY,SACjB96D,KAAKouW,kBAELpuW,KAAKi9W,+BAA+B7/V,OAAO87B,iBAAmBl5C,KAAKie,UAEnEje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3D,EAAAje,KAAuB,GAAMA,KAAKquV,uBAAuB/xU,QAAQtc,KAAKie,Y,OAG/D,OAHP,EAAKmlU,gBAAkB,SAEvBpjV,KAAKusV,UAAW,EACT,GAAMvsV,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yBAKC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAy5W,aAAd,W,qBAA8Bv6W,GAAO,W,kDAEnC,OADAgE,KAAKsd,WAAWusB,OAAOylT,MAAQ,KAC/B,GAAMtvV,KAAKukV,Y,cAAX,S,YAGY,YAAAhc,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAAtzT,OAAd,SAAqBtc,G,qBAAuBxE,GAAO,W,6DAC1C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK9C,OACXg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MAEK,GAAMj5C,KAAKi9W,+BAA+BngW,OAAOtc,EAAK+b,IAC1DpZ,MAAK,WAEJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ7Q,EAAK+b,GAAGyC,YACrG,EAAK1B,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,iCAG3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,U,mCANX,MAAO,CAAP,EAAO,kBAuBF,YAAAsxW,gBAAP,WAEE,GADApuW,KAAKC,OAAO0zC,MAAM,mBACd3zC,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAAe,CAC1C,IAAI,EAAgB11J,KAAK6Q,MAAM6kJ,cAActvG,QACzCmoT,EAAavuW,KAAK86D,UAAU90D,MAAK,SAACwoW,GAA6B,OAAAA,EAAGpoT,UAAY,KAC9EmoT,IACFvuW,KAAKgqC,WAAaukU,EAAWhyV,MAKtB,YAAAi6V,sBAAb,SAAmCh2W,G,qBAAwBxE,GAAO,W,6DAEhE,OADAgE,KAAKkpG,OAAOmM,UAAW,EACvB,GAAMr1G,KAAKquV,uBAAuB3xU,OAAOlc,GACtC2C,MAAK,gD,kDACG,SAAMnD,KAAKi8M,OAAOz7M,I,OAAzB,MAAO,CAAP,EAAO,oBAERyL,OAAM,SAACnP,GACN,EAAKgmJ,aAAahmJ,MAAMA,O,cAL5B,S,YASW,YAAAm/M,OAAb,SAAoBz7M,G,qBAAwBxE,GAAO,W,6DACjD,SAAMgE,KAAKi9W,+BAA+Bx/V,YAAYzd,KAAKgqC,WAAYxpC,EAAKwlJ,cACzE7iJ,MAAK,gD,kDAGG,OAFPnD,KAAK8iJ,aAAaxiJ,QAAQ,qFAC1BN,KAAKkpG,OAAOmM,UAAW,EAChB,GAAMr1G,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,oBAERt4U,OAAM,SAACnP,GACN,EAAKgmJ,aAAahmJ,MAAMA,O,cAP5B,S,YA1JSogX,EAAmB,GAD/B,uB,uBAqB8B,mB,OAAA,IAAZ,UAAY,SACiB,mBADjB,OACiB,IAAnB,UAAmB,SACU,mBADV,OACU,IAAtB,UAAsB,SACgB,mBADhB,OACgB,IAA9B,UAA8B,SAClC,mBADkC,OAClC,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YAzBzBA,GAAb,I,wJCvBA,mGAKA,GALA,KAKA,WAKE,aACEl9W,KAAKC,OAAS,aAAWC,UAAU,kCAoBvC,OAjBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,mCACVoD,KAAM,8BAIR,CACEgF,MAAO,8CACPpI,SAAU,2CACVoD,KAAM,6CAId,EA1BA,K,6HCNAhC,EAAOD,QAAU,uD,kHCAjBC,EAAOD,QAAU,qoG,2oECiCjB,aA6CE,WACUm/D,EACA90D,EACAg9I,EACAohM,EACAwB,EACA0wB,EACAM,EACAC,EACAhJ,EACA5iD,GATA,KAAAnwP,QACA,KAAA90D,SACA,KAAAg9I,eACA,KAAAohM,gBACA,KAAAwB,8BACA,KAAA0wB,wBACA,KAAAM,sBACA,KAAAC,uBACA,KAAAhJ,2BACA,KAAA5iD,qBA5CF,KAAAvtS,MAAwB,IAAI,IAE5B,KAAAo5V,WAAyB,GACzB,KAAA7tU,OAAkB,GAIlB,KAAAc,OAAiB,KAEjB,KAAAgtU,mBAA6B,EAC7B,KAAAl8U,SAAmB,EACnB,KAAAm8U,MAAgB,EAEhB,KAAAl2N,SAAqB,GACrB,KAAAm2N,+BAA2C,GAC3C,KAAAC,wBAAoC,GAEpC,KAAAC,eAAiC,GACjC,KAAAC,oBAA8B,EAC9B,KAAA9jH,mBAA0C,GAE1C,KAAA5vP,QAA0B,CAChCm3B,SAAU,IACVqhT,QAAS,CACPm7B,IAAK,EACLC,IAAK,EACLC,KAAM,GAERp7B,WAAW,EACXC,MAAM,EACNo7B,UAAU,EACVC,iBAAkB,MAgBlBv3W,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,0BACnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,wBAqT5B,OAlTgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,0EACpEgE,KAAKC,OAAO0zC,MAAM,YAEbryB,MAAMlhB,EAAO6d,WAAd,YAEFje,KAAKie,WAAa7d,EAAO6d,UACzBje,KAAKo2W,sBAAsBh5V,OAAO87B,kBAAoB94C,EAAO6d,UAC7Dje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3Dje,KAAK2tW,yBAAyBvwV,OAAO87B,iBAAmBl5C,KAAKie,U,iBAG5C,O,sBAAA,GAAMje,KAAK+qT,mBAAmBxoQ,gBAAgBviD,KAAKie,Y,OAKxC,OALtB7V,EAAW,SACfpI,KAAKwqC,cAAgBpiC,EAAS6lW,yBAEJ,GAAtBjuW,KAAKwqC,gBACPxqC,KAAKwqC,cAAgB,IAAmB,aAC1C,EAAAxqC,KAA0B,GAAMA,KAAK2tW,yBAAyBpwV,OAAOvd,KAAKwqC,gB,OAC5D,OADd,EAAK4oN,mBAAqB,SAC1B,EAAApzP,KAAc,GAAMA,KAAK02W,oBAAoBn5V,U,cAA7C,EAAKwrB,OAAS,SACd/oC,KAAKw3W,6BAEAl2V,MAAMlhB,EAAO2pC,kBAAd,OACF/pC,KAAK+pC,kBAAoB3pC,EAAO2pC,iBAChC,EAAA/pC,KAAa,GAAMA,KAAKo2W,sBAAsB95V,QAAQtc,KAAK+pC,oB,OASpD,OATP,EAAKvsB,MAAQ,SACbxd,KAAKgqC,WAAahqC,KAAKwd,MAAMwsB,WAE7BhqC,KAAKy3W,qCACLz3W,KAAK03W,sBAGL13W,KAAK23W,oBAEE,GAAM33W,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,4CAITvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BAMhB,YAAAynV,SAAd,W,qBAA0BvoV,GAAO,W,0DAC/BgE,KAAKC,OAAO0zC,MAAM,Y,iBAEE,O,sBAAlB,EAAA3zC,KAAkB,GAAMA,KAAK22W,qBAAqB7iW,KAAK9T,KAAK+pC,iBAAkB/pC,KAAKgqC,WAAYhqC,KAAK6pC,S,cAApG,EAAK+sU,WAAa,S,+BAElB52W,KAAK8iJ,aAAahmJ,MAAM,G,+BAI5B,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAKo2W,sBAAsBh5V,OAAO7C,c,gCAG/B,YAAAmiD,KAAb,SAAkBsvR,G,qBAA2BhwV,GAAO,W,6DAG3C,OAFPgE,KAAKC,OAAO0zC,MAAM,WAAY3zC,KAAKwd,MAAMojI,UAElC,GAAM5gJ,KAAKo2W,sBAAsB15V,OAAO1c,KAAKwd,OACjDra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6BAErB0rV,EAAD,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,+B,OAAzC,MAAO,CAAP,EAAO,U,2BAIViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,kBAcI,YAAAs+G,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAGzC,OAFPgE,KAAKC,OAAOE,KAAK,UACjBH,KAAKC,OAAO0zC,MAAM,uBAAwB3zC,KAAKk3W,oBACxC,GAAMl3W,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACL34M,KAAKozP,mBAAmBx4P,OAAS,GAAKoF,KAAKk3W,oBAAgE,GAA1Cl3W,KAAKwd,MAAM23L,qBAAqBv6M,QACnGoF,KAAK8iJ,aAAaviJ,QAAQ,yD,OADxB,MADF,M,OAKO,SAAMP,KAAK08D,KAAKwpR,I,OAAvB,MAAO,CAAP,EAAO,U,2BAIZj6U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAZ5B,MAAO,CAAP,EAAO,kBAgBD,YAAA86W,iBAAR,SAAyBhG,GAGvB,IAAe,IAFD5xW,KAAKwd,MAAMojI,SAASvvI,QAAQugW,EAAMr1V,IAG9Cvc,KAAKwd,MAAMurB,OAAO7tC,KAAK02W,OAEpB,CACH,IAAMppF,EAASxoR,KAAKwd,MAAMurB,OAAOmqI,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOq1V,EAAMr1V,OAC/C,IAAZisQ,GACFxoR,KAAKwd,MAAMurB,OAAO5xB,OAAOqxQ,EAAQ,GASjCxoR,KAAKozP,mBAAmBx4P,OAAS,GAAKoF,KAAK63W,qCAAqCjG,EAAMr1V,KAAOvc,KAAKk3W,oBACpGl3W,KAAK83W,0BAIP93W,KAAK03W,sBAGL13W,KAAK23W,qBAQC,YAAAD,oBAAR,sBACM3iU,EAA+B,GAC/Bpa,EAAW,EACXm8U,EAAQ,EACZ92W,KAAKwd,MAAMojI,SAASz5I,SAAQ,SAAAD,GAC1B,IAAI0qW,EAAQ,EAAK7oU,OAAO/iC,MAAK,SAAAokB,GAAK,OAAAA,EAAE7N,KAAOrV,KACvC0qW,IACFkF,IAAUlF,EAAMmG,aAChBnG,EAAM78T,cAAc5tC,SAAQ,SAAAm0D,GACrBvmB,EAAc/uC,MAAK,SAAA8lK,GAAK,OAAAA,EAAEvvJ,KAAO++C,EAAE/+C,QACtCw4B,EAAc75C,KAAKogE,GACnB3gC,IAAa2gC,EAAE+4S,oBAMvBr0W,KAAK62W,mBAAqB9hU,EAAcn6C,OAExCoF,KAAK26B,SAAWA,EAChB36B,KAAK82W,MAAQA,GAIP,YAAAkB,iBAAR,SAAyBjvU,GAAzB,WACMxpB,GAAe,EAUnB,OATAwpB,EAAO5hC,SAAQ,SAAAD,GACb,IAAI0qW,EAAQ,EAAK7oU,OAAO/iC,MAAK,SAAAokB,GAAK,OAAAA,EAAE7N,KAAOrV,EAAEqV,MACzCq1V,IACgBA,EAAM78T,cAAc/uC,MAAK,SAAAs1D,GAAK,OAAAA,EAAE09R,iBAAmB,IAAgBif,iBAEnF14V,GAAM,OAILA,GAGD,YAAAo4V,kBAAR,sBACE33W,KAAK+oC,OAAO5hC,SAAQ,SAAAD,IACyB,IAAvC,EAAKsW,MAAMojI,SAASvvI,QAAQnK,EAAEqV,IAChC,EAAK06V,eAAe/vW,EAAEqV,KAAM,EAG5B,EAAK06V,eAAe/vW,EAAEqV,KAAM,MAO3B,YAAA27V,aAAP,SAAoBC,GAApB,WAGEn4W,KAAKwd,MAAMurB,OAASovU,EACpBn4W,KAAKwd,MAAMojI,SAAWu3N,EAAaxzW,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MAM9Cvc,KAAK03W,sBAGL13W,KAAK23W,oBAGL,IAAIS,GAAiB,GAErBD,EAAahxW,SAAQ,SAAAD,GACf,EAAK2wW,qCAAqC3wW,EAAEqV,MAC9C67V,GAAiB,MAIhBA,IACgDp4W,KAAK+2W,+BACrB5vW,SAAQ,SAAAD,GACzC,EAAK2wW,qCAAqC3wW,MAI9ClH,KAAKC,OAAO0zC,MAAM,wBAAyB3zC,KAAKwd,MAAMojI,UACtD5gJ,KAAKC,OAAO0zC,MAAM,mCAAoC3zC,KAAK+2W,gCAEvD/2W,KAAKozP,mBAAmBx4P,OAAS,GAAKw9W,GAAkBp4W,KAAKk3W,oBAC/Dl3W,KAAK83W,2BAWK,YAAAA,wBAAd,W,qBAAyC97W,GAAO,W,6DAEvC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,yBACXyP,MAAOxd,KAAKwd,MAAM23L,uBACjBz8C,YAAW,SAAOj9I,GAA2B,qC,kCACzCA,EAASw9B,cACRj5C,KAAKozP,mBAAmBx4P,OAAS,GAAKoF,KAAKk3W,oBAAgE,GAA1Cl3W,KAAKwd,MAAM23L,qBAAqBv6M,QACnGoF,KAAK8iJ,aAAaviJ,QAAQ,yD,qBANhC,MAAO,CAAP,EAAO,kBAYD,YAAAi3W,2BAAR,sBACEx3W,KAAK+oC,OAAO5hC,SAAQ,SAAAD,GAClBA,EAAE6tC,cAAc5tC,SAAQ,SAAAm0D,GAClBA,EAAE09R,iBAAmB,IAAgBif,eAExB,IADD,EAAKjB,wBAAwB3lW,QAAQnK,EAAEqV,KAEnD,EAAKy6V,wBAAwB97W,KAAKgM,EAAEqV,YAOtC,YAAAs7V,qCAAR,SAA6CU,GAC3C,IAAIC,GAA0C,EACxCC,EAA0Bz4W,KAAKg3W,wBAAwB3lW,QAAQknW,GAC/DG,EAAqB14W,KAAKwd,MAAMojI,SAASvvI,QAAQknW,GAEvD,IAAiC,IAA7BE,EAAgC,CAClC,IAAME,EAAiC34W,KAAK+2W,+BAA+B1lW,QAAQknW,IACvD,IAAxBG,GACsC,IAApCC,IACF34W,KAAK+2W,+BAA+B77W,KAAKq9W,GACzCC,GAAiC,IAGK,IAApCG,IACF34W,KAAK+2W,+BAA+B5/V,OAAOwhW,EAAgC,GAC3EH,GAAiC,GAYvC,OAPIx4W,KAAKozP,mBAAmBx4P,OAAS,GAAKoF,KAAK+2W,+BAA+Bn8W,OAAS,EACrFoF,KAAKk3W,oBAAqB,GAE1Bl3W,KAAKk3W,oBAAqB,EAC1Bl3W,KAAKwd,MAAM23L,qBAAuB,IAG7BqjK,GAGD,YAAAf,mCAAR,sBACEz3W,KAAK+2W,+BAAiC,GACtC/2W,KAAKwd,MAAMojI,SAASz5I,SAAQ,SAAAD,IAGO,IAFD,EAAK8vW,wBAAwB3lW,QAAQnK,MAI3B,IADD,EAAK6vW,+BAA+B1lW,QAAQnK,IAEjF,EAAK6vW,+BAA+B77W,KAAKgM,OAK/ClH,KAAKC,OAAO0zC,MAAM,0CAA2C3zC,KAAK+2W,+BAA+Bn8W,QAE7FoF,KAAKozP,mBAAmBx4P,OAAS,GAAKoF,KAAK+2W,+BAA+Bn8W,OAAS,EACrFoF,KAAKk3W,oBAAqB,GAE1Bl3W,KAAKk3W,oBAAqB,EAC1Bl3W,KAAKwd,MAAM23L,qBAAuB,IAIpCn1M,KAAKC,OAAO0zC,MAAM,uBAAwB3zC,KAAKk3W,qBA/WtCiG,EAAsB,GADlC,uB,uBA+C8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,SAC4B,mBAD5B,OAC4B,IAA3B,8DAA2B,SACZ,mBADY,OACZ,IAArB,UAAqB,SACJ,mBADI,OACJ,IAAnB,UAAmB,SACE,mBADF,OACE,IAApB,UAAoB,SACQ,mBADR,OACQ,IAAxB,UAAwB,SACZ,mBADY,OACZ,IAAlB,UAAkB,YAvDrCA,GAAb,I,8HCjCAzhX,EAAOD,QAAU,oiH,gnBCUjB,aAIE,WAAoB6lD,GAAA,KAAAA,mBAHb,KAAA99C,QAAmC,GACnC,KAAA45W,WAAqB,K,MAoB9B,OAhBS,YAAAxkW,SAAP,SAAgB4E,GACdxd,KAAKwD,QAAWga,GAASA,EAAMha,QAAWga,EAAMha,QAAU,GAC1DxD,KAAKo9W,WAAa5/V,GAASA,EAAM4/V,WAAa5/V,EAAM4/V,WAAa,MAG5D,YAAAhnN,OAAP,WACOp2J,KAAKo9W,YAIVp9W,KAAKshD,iBAAiBskB,GAAG5lE,KAAKo9W,aAGzB,YAAArzW,OAAP,WACE/J,KAAKshD,iBAAiBv3C,UApBbszW,EAAkB,GAD9B,uB,uBAKuD,mB,OAAA,IAAhB,wCAAgB,YAJ3CA,GAAb,I,4FCVA3hX,EAAOD,QAAU,g0D,2pBCSjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,qB,MAsBvC,OAlBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,yBACVoD,KAAM,uBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,qEACpB+H,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBgjD,gCAxB5B4tG,EAAiB,GAD7B,uB,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,oGCTA5hX,EAAOD,QAAU,8M,mGCAjBC,EAAOD,QAAU,2d,+tECwCjB,aAwEE,WACUm/D,EACAyxR,EACAvmV,EACAg9I,EACA4iM,EACA0wB,EACAM,EACAC,EACAhJ,EACA5iD,EACAm5B,EACAoK,GAXA,KAAA1zR,QACA,KAAAyxR,kBACA,KAAAvmV,SACA,KAAAg9I,eACA,KAAA4iM,8BACA,KAAA0wB,wBACA,KAAAM,sBACA,KAAAC,uBACA,KAAAhJ,2BACA,KAAA5iD,qBACA,KAAAm5B,gBACA,KAAAoK,4BAzEF,KAAA9wU,MAAwB,IAAI,IAM5B,KAAAo5V,WAAyB,GACzB,KAAA7tU,OAAkB,GAClB,KAAAc,OAAiB,KACjB,KAAAgtU,mBAA6B,EAC7B,KAAA0G,mBAA6B,GAC7B,KAAAxoU,cAAmC,GACnC,KAAApa,SAAmB,EACnB,KAAAm8U,MAAgB,EAChB,KAAAl2N,SAAqB,GACrB,KAAAm2N,+BAA2C,GAC3C,KAAAC,wBAAoC,GACpC,KAAAC,eAAiC,GACjC,KAAAuG,uBAAoD,GACpD,KAAAtG,oBAA8B,EAC9B,KAAAgD,iBAA2B,EAC3B,KAAA9mH,mBAA0C,GAE1C,KAAAqqH,0BAAoC,KACpC,KAAAC,qBAA+B,EAC/B,KAAAC,YAAuC,GACvC,KAAAC,wBAAkC,GAClC,KAAAC,sCAAgD,EAGjD,KAAAzzU,cAAgB,IAChB,KAAAC,iBAAmB,IACnB,KAAAyzU,eAAiBjjX,OAAO0Z,KAAK,KAAe1P,QAAO,SAAAq1B,GAAK,OAAA5Y,MAAMyiC,OAAO7pB,OACrE,KAAA6jV,kBAAoBljX,OAAO0Z,KAAK,KAAkB1P,QAAO,SAAAq1B,GAAK,OAAA5Y,MAAMyiC,OAAO7pB,OAe1E,KAAA12B,QAA0B,CAChCm3B,SAAU,IACVqhT,QAAS,CACPm7B,IAAK,EACLC,IAAK,EACLC,KAAM,GAERp7B,WAAW,EACXC,MAAM,EACNo7B,UAAU,EACVC,iBAAkB,MAiBlBv3W,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,cAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,4BAo8B5B,OAj/BE,sBAAW,2BAAY,C,IAAvB,sBACE,GAAI7Q,KAAKwd,MAAMwsB,YAAchqC,KAAK86D,UAAW,CAC3C,IAAM1J,EAAWpxD,KAAK86D,UAAU90D,MAAK,SAAArK,GAAK,OAAAA,EAAE4gB,KAAO,EAAKiB,MAAMwsB,cAC9D,OAAOonB,EAAWA,EAAS1zD,KAAO,GAEpC,MAAO,I,gCAGT,sBAAW,gCAAiB,C,IAA5B,WACE,OAAOsC,KAAKwd,OAASxd,KAAKwd,MAAMojI,UAAY5gJ,KAAKwd,MAAMojI,SAAShmJ,OAAS,G,gCAwC7D,YAAAge,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kFACpEgE,KAAKC,OAAO0zC,MAAM,YAEbryB,MAAMlhB,EAAO6d,WAAd,QAEFje,KAAKie,WAAa7d,EAAO6d,UAEzB,EAAAje,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,W,OAA5C,EAAKu9C,UAAY,SACjB96D,KAAKouW,kBAELpuW,KAAKo2W,sBAAsBh5V,OAAO87B,iBAAmBl5C,KAAKie,UAC1Dje,KAAK2tW,yBAAyBvwV,OAAO87B,iBAAmBl5C,KAAKie,UAE7Dje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,a,iBAI1C,O,wBAAA,GAAMje,KAAK+qT,mBAAmBxoQ,gBAAgBviD,KAAKie,Y,OAMxC,OANtB7V,EAAW,SACfpI,KAAKwqC,cAAgBpiC,EAAS6lW,yBAEJ,GAAtBjuW,KAAKwqC,gBACPxqC,KAAKwqC,cAAgB,IAAmB,aAE1C,EAAAxqC,KAA0B,GAAMA,KAAK2tW,yBAAyBpwV,OAAOvd,KAAKwqC,gB,OAC5D,OADd,EAAK4oN,mBAAqB,SAC1B,EAAApzP,KAAc,GAAMA,KAAK02W,oBAAoBn5V,U,OACxB,OADrB,EAAKwrB,OAAS,SACd,EAAA/oC,KAAqB,GAAMA,KAAKsuV,0BAA0B/wU,U,cAA1D,EAAKw3B,cAAgB,SACrB/0C,KAAKw3W,6BAEAl2V,MAAMlhB,EAAO2pC,kBAAd,OACF,EAAA/pC,KAAa,GAAMA,KAAKo2W,sBAAsB95V,SAASlc,EAAO2pC,oB,cAA9D,EAAKvsB,MAAQ,SACTxd,KAAKwd,MAAM2oP,8BAAgCnmQ,KAAKwd,MAAM2oP,6BAA6BvrQ,OAAS,IAC9FoF,KAAKy9W,0BAA4Bz9W,KAAKwd,MAAM2oP,6BAA6B,GACzEnmQ,KAAK09W,qBAAsB,GAE7B19W,KAAKg+W,wBACLh+W,KAAKy3W,qCACLz3W,KAAK03W,sBACL13W,KAAK23W,oBACL33W,KAAKi+W,+B,aAGLj+W,KAAKwd,MAAM0sB,cAAgBlqC,KAAKoqC,cAAckvT,OAC9Ct5V,KAAK23W,oB,iBAMP,OAHA33W,KAAK49W,wBAA0B59W,KAAKk+W,kBAAkBl+W,KAAKwd,MAAMojI,UACjE5gJ,KAAK69W,sCAAuC,EAE5C,GAAM79W,KAAKm+W,kB,eAAX,S,iCAGAn+W,KAAK8iJ,aAAahmJ,MAAM,G,eAG1BkD,KAAK2lV,2BAEL3lV,KAAKC,OAAO0zC,MAAM,+BAAgC3zC,KAAKwd,O,qCAInD,YAAAmoU,yBAAR,WACE,kBACGvM,OAAO,QAAQpyK,YAAY,4DAA4DwkD,WACvF4tH,OAAO,iBAAiBpyK,YAAY,kDAAkDwkD,WACtF4tH,OAAO,cAAcpyK,YAAY,2CAA2CwkD,WAC5En+K,GAAGrtC,KAAKwd,QAGN,YAAA4wV,gBAAP,WAEE,GADApuW,KAAKC,OAAO0zC,MAAM,mBACd3zC,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAAe,CAC1C,IAAI,EAAgB11J,KAAK6Q,MAAM6kJ,cAActvG,QACzCmoT,EAAavuW,KAAK86D,UAAU90D,MAAK,SAACwoW,GAA6B,OAAAA,EAAGpoT,UAAY,KAC9EmoT,GACFvuW,KAAKgqC,WAAaukU,EAAWhyV,GAC7Bvc,KAAKwd,MAAMwsB,WAAahqC,KAAKgqC,WAC7BhqC,KAAKC,OAAO0zC,MAAM,mBAAoB46T,EAAW7wW,KAAM,MAAOsC,KAAKgqC,aAEnEhqC,KAAKC,OAAOikB,KAAK,0CAA2C,QAG9DlkB,KAAKC,OAAOikB,KAAK,iCAIrB,sBAAI,sBAAO,C,IAAX,WACE,OAAQlkB,KAAKo2W,sBAAsBh5V,OAAO7C,c,gCAG5C,sBAAI,gCAAiB,C,IAArB,WACE,OAAOva,KAAKwd,OAASxd,KAAKwd,MAAMojI,UAAY5gJ,KAAKwd,MAAMojI,SAAShmJ,OAAS,G,gCAG7D,YAAAwjX,oBAAd,W,qBAAqCpiX,GAAO,W,8DAEzB,O,sBAAA,GAAMgE,KAAK+qT,mBAAmBxoQ,gBAAgBviD,KAAKie,Y,OAMxC,OANtB7V,EAAW,SACfpI,KAAKwqC,cAAgBpiC,EAAS6lW,yBAEJ,GAAtBjuW,KAAKwqC,gBACPxqC,KAAKwqC,cAAgB,IAAmB,aAE1C,EAAAxqC,KAA0B,GAAMA,KAAK2tW,yBAAyBpwV,OAAOvd,KAAKwqC,gB,OAC5D,OADd,EAAK4oN,mBAAqB,SAC1B,EAAApzP,KAAc,GAAMA,KAAK02W,oBAAoBn5V,U,OAG7C,OAHA,EAAKwrB,OAAS,SACd/oC,KAAKw3W,6BACLx3W,KAAK23W,oBACL,GAAM33W,KAAKm+W,kB,cAAX,S,+BAEAn+W,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAqhX,eAAd,W,qBAAgCniX,GAAO,W,0DACrCgE,KAAKC,OAAO0zC,MAAM,kB,8CAEX3zC,KAAKwd,MAAMjB,GAAZ,MAEF,GAAMvc,KAAKq+W,gC,cAAX,S,aAGkB,OAAlB,EAAAr+W,KAAkB,GAAMA,KAAK22W,qBAAqB7iW,KAAK9T,KAAKwd,MAAMjB,GAAIvc,KAAKwd,MAAMwsB,WAAYhqC,KAAK6pC,S,OAAlG,EAAK+sU,WAAa,S,sDAGpB52W,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAuhX,6BAAd,W,qBAA8CriX,GAAO,W,wDAGnD,OAFAgE,KAAKC,OAAO0zC,MAAM,gCAEb3zC,KAAKwd,MAAMwsB,iBAA2CpsC,IAA7BoC,KAAKwd,MAAM0sB,eAOzC,EAAAlqC,KAAkB,GAAMA,KAAK22W,qBAAqB1sU,oBAChDjqC,KAAKwd,MAAM0sB,cACXlqC,KAAKwd,MAAMwsB,WACXhqC,KAAK6pC,OACL7pC,KAAKwd,MAAM2sB,qBAVXnqC,KAAKC,OAAO0zC,MAAM,iEAClB3zC,KAAK42W,WAAa,GAClB,K,cAIF,EAAKA,WAAa,S,YAQb,YAAA0H,sBAAP,WACEt+W,KAAKC,OAAO0zC,MAAM,wBAAyB3zC,KAAKwd,MAAM0sB,eAGtDlqC,KAAKwd,MAAMojI,SAAW,GAGlB5gJ,KAAKwd,MAAM0sB,gBAAkBlqC,KAAKoqC,cAAcm0U,eAClDv+W,KAAKwd,MAAM2sB,sBAAmBvsC,GAIhCoC,KAAKm+W,kBAGA,YAAAK,yBAAP,WACEx+W,KAAKC,OAAO0zC,MAAM,2BAA4B3zC,KAAKwd,MAAM2sB,kBAGzDnqC,KAAKwd,MAAMojI,SAAW,GAGtB5gJ,KAAKm+W,kBAGM,YAAA3D,eAAb,SAA4Bt0B,G,qBAAuBlqV,GAAO,W,4DACxDgE,KAAKC,OAAOE,KAAK,kB,iBAI0B,O,uBAAA,GAAMH,KAAK01U,qBAAqBrnS,Y,OAEzE,OAFMt+B,EAAmC,UAE7B4oM,MAOP34M,KAAKwd,MAAMjB,GAAZ,OACFvc,KAAKC,OAAO0zC,MAAM,4BAClB,EAAA3zC,KAAa,GAAMA,KAAKo2W,sBAAsBn3W,OAAOe,KAAKwd,UAR1Dxd,KAAKC,OAAO0zC,MAAM,qBAAsB5jC,EAAOqC,SAC/CpS,KAAK8iJ,aAAaviJ,QAAQ,2BAC1B,K,OAWA,OALA,EAAKid,MAAQ,SACbxd,KAAKC,OAAO0zC,MAAM,4BAA6B3zC,KAAKwd,MAAMjB,IAC1Dvc,KAAK8iJ,aAAaxiJ,QAAQ,4BAG1B,GAAMN,KAAKo+W,uB,OAAX,S,iBAIF,OAAkC,GAA9Bp+W,KAAKwd,MAAMojI,SAAShmJ,QACtBoF,KAAK8iJ,aAAaviJ,QAAQ,mDAC1B,KAIEP,KAAKozP,mBAAmBx4P,OAAS,GAAKoF,KAAKk3W,oBAAgE,GAA1Cl3W,KAAKwd,MAAM23L,qBAAqBv6M,QACnGoF,KAAK8iJ,aAAaviJ,QAAQ,yDAC1B,MAIEP,KAAKk6W,iBAAqBl6W,KAAKwd,MAAM4oP,kCAA2F,IAAvDpmQ,KAAKwd,MAAM4oP,iCAAiCxrQ,QAMzHoF,KAAKy+W,mCACL,GAAMz+W,KAAKo2W,sBAAsB15V,OAAO1c,KAAKwd,UAN3Cxd,KAAK8iJ,aAAaviJ,QAAQ,8DAC1B,K,cAKF,SACAP,KAAK8iJ,aAAaxiJ,QAAQ,6BAC1BN,KAAK0+W,uBAGAx4B,EAAD,MACF,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,qB,OAAlC,S,uDAGFhJ,KAAKC,OAAOnD,MAAM,wBAAyB,GAC3CkD,KAAK8iJ,aAAahmJ,MAAM,G,iCAIf,YAAA6hX,aAAb,SAA0Bz4B,G,qBAAuBlqV,GAAO,W,wDAEtD,GADAgE,KAAKC,OAAOE,KAAK,gBACiB,GAA9BH,KAAKwd,MAAMojI,SAAShmJ,OAEtB,OADAoF,KAAK8iJ,aAAaviJ,QAAQ,mDAC1B,IAGF,GAAIP,KAAKozP,mBAAmBx4P,OAAS,GAAKoF,KAAKk3W,oBAAgE,GAA1Cl3W,KAAKwd,MAAM23L,qBAAqBv6M,OAEnG,OADAoF,KAAK8iJ,aAAaviJ,QAAQ,yDAC1B,IAGF,GAAIP,KAAKk6W,mBAAqBl6W,KAAKwd,MAAM4oP,kCAA2F,IAAvDpmQ,KAAKwd,MAAM4oP,iCAAiCxrQ,QAEvH,OADAoF,KAAK8iJ,aAAaviJ,QAAQ,8DAC1B,I,iBAKA,O,sBADAP,KAAKy+W,mCACL,GAAMz+W,KAAKo2W,sBAAsB15V,OAAO1c,KAAKwd,Q,cAA7C,SACAxd,KAAK8iJ,aAAaxiJ,QAAQ,6BAC1BN,KAAK0+W,uBAEAx4B,EAAD,MACF,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,qB,OAAlC,S,sDAGFhJ,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAA86W,iBAAd,SAA+BhG,G,+HA6Bd,OA1BA,IAFD5xW,KAAKwd,MAAMojI,SAASvvI,QAAQugW,EAAMr1V,IAG9Cvc,KAAKwd,MAAMurB,OAAO7tC,KAAK02W,IAIP,KADVppF,EAASxoR,KAAKwd,MAAMurB,OAAOmqI,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOq1V,EAAMr1V,QAE7Dvc,KAAKwd,MAAMurB,OAAO5xB,OAAOqxQ,EAAQ,GAIjCxoR,KAAKozP,mBAAmBx4P,OAAS,GAAKoF,KAAK63W,qCAAqCjG,EAAMr1V,KAAOvc,KAAKk3W,oBACpGl3W,KAAK83W,0BAGP93W,KAAK03W,sBACL13W,KAAK23W,oBAICiH,GAAwD,IAA3C5+W,KAAKwd,MAAMojI,SAASvvI,QAAQugW,EAAMr1V,IAG/CsiW,EAAe7+W,KAAK+oC,OAAO/iC,MAAK,SAAAlG,GAAK,OAAAA,EAAEyc,KAAOq1V,EAAMr1V,MACpDuiW,IAAeD,GAAeA,EAAa9pU,cAAcl2B,MAAK,SAAAy8C,GAAK,SAAK3Y,kBAAkB2Y,MAGjF,GAAMt7D,KAAK++W,uBAAuBH,GAAcE,I,OAC/D,IADe,SAEb,UAGF,GAAIF,EAAY,CAEd,GADMI,EAAYh/W,KAAK+oC,OAAO/iC,MAAK,SAAAlG,GAAK,OAAAA,EAAEyc,KAAOq1V,EAAMr1V,MAGrD,IADM0iW,EAAuBD,EAAUjqU,cAAclwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAEw+R,a,WACxDolB,GAEa,EAAK1hW,MAAMojI,SAAS/hI,MAAK,SAAAi1J,GAC7C,IAAMh0K,EAAI,EAAKipC,OAAO/iC,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,KAAOu3J,KACzC,OAAOh0K,GAAKA,EAAEi1C,cAAcl2B,MAAK,SAAAy8C,GAAK,OAAAA,EAAE/+C,KAAO2iW,EAAG3iW,WAGlD,EAAKiB,MAAM4oP,iCAAmC,EAAK5oP,MAAM4oP,iCACtDvhQ,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkB00U,EAAG3iW,Q,OARrC,EAAL,EAAiB,EAAA0iW,EAAA,eAANC,EAAE,K,EAAFA,GAYbl/W,KAAKi+W,+B,GAIFW,EAAD,Y,KACII,EAAYh/W,KAAK+oC,OAAO/iC,MAAK,SAAAlG,GAAK,OAAAA,EAAEyc,KAAOq1V,EAAMr1V,OACnD,YACI0iW,EAAuBD,EAAUjqU,cAAclwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAEw+R,a,IAClD,EAAAmlB,E,wBAAA,YAANC,EAAE,KACX,GAAMl/W,KAAKy7W,gBAAgByD,EAAG3iW,GAAI2iW,EAAGxhX,KAAMk0W,KADR,M,OACnC,S,wBADe,I,+BAOf,YAAAoG,iBAAR,SAAyBjvU,GAAzB,WACMxpB,GAAe,EAUnB,OATAwpB,EAAO5hC,SAAQ,SAAAD,GACb,IAAI0qW,EAAQ,EAAK7oU,OAAO/iC,MAAK,SAAAokB,GAAK,OAAAA,EAAE7N,KAAOrV,EAAEqV,MACzCq1V,IACgBA,EAAM78T,cAAc/uC,MAAK,SAAAs1D,GAAK,OAAAA,EAAE09R,iBAAmB,IAAgBif,iBAEnF14V,GAAM,OAILA,GAGK,YAAAm4V,oBAAd,W,qHACM3iU,EAAuB/0C,KAAKm/W,8CAC5BxkV,EAAW,EACXm8U,EAAQ,EACZ92W,KAAKk6W,iBAAkB,EACvBl6W,KAAKwd,MAAMojI,SAASz5I,SAAQ,SAAAD,GAC1B,IAAI0qW,EAAQ,EAAK7oU,OAAO/iC,MAAK,SAAAokB,GAAK,OAAAA,EAAE7N,KAAOrV,KACvC0qW,IACFkF,IAAUlF,EAAMmG,iBAIpB/3W,KAAKk6W,gBAAkBnlU,EAAcl2B,MAAK,SAAAy8C,GAAK,OAAAA,EAAEw+R,aAGjDn/T,EAAW,E,WACA2gC,G,yEACLA,EAAEw+R,WACEslB,GAAkB,EAAK5hW,MAAM4oP,kCAAoC,IACpEvhQ,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkB8wB,EAAE/+C,OAClB3hB,OAAS,EACC,GAAM,EAAK0zV,0BAA0BrkM,4BAA4B3uF,EAAE/+C,KAD5F,MAHF,M,OAKA,IADMm/V,EAAqB,S,WAChB/5F,GACT,IAAMi6F,EAAWF,EAAmB11W,MAAK,SAAAi+D,GAAK,OAAAA,EAAE1nD,KAAOolQ,EAAU5jQ,mBACjE4c,GAAaihV,GAAYA,EAASvH,aAAeuH,EAASvH,YAAc,GAFrE,EAAL,EAAwB,EAAA+K,EAAA,eAAbz9F,EAAS,K,EAATA,G,oCAMbhnP,IAAa2gC,EAAE+4S,Y,2CAZH,EAAAt/T,E,wBAAA,YAALumB,EAAC,K,KAADA,KAAkB,M,wCAAb,I,oBAgBhBt7D,KAAK62W,mBAAqB9hU,EAAcn6C,OACxCoF,KAAKu9W,mBAAqBxoU,EAAcn6C,OAAS,EAC7Cm6C,EAAcpwC,KAAI,SAAA22D,GAAK,SAAK+jT,4BAA4B/jT,MAAItzD,KAAK,MACjE,GACJhI,KAAK26B,SAAWA,EAChB36B,KAAK82W,MAAQA,E,YAGP,YAAAuI,4BAAR,SAAoCjqU,GAApC,WACQkqU,EAAuBt/W,KAAK+0C,cAAc/uC,MAAK,SAAAs1D,GACnD,OAAAA,EAAE/+C,KAAO64B,EAAY74B,IAAM++C,EAAEtxB,aAAe,EAAKxsB,MAAMwsB,cAEzD,OAAOs1U,EACHA,EAAqB5hX,KACrB03C,EAAY13C,KAAO,QAGjB,YAAAilD,kBAAR,SAA0BvN,GACxB,OAAOA,GAA0C,OAA3BA,EAAYmkT,YAAuBnkT,EAAY4jT,kBAAoB,IAAgBqiB,MAGnG,YAAAoD,iCAAR,WACE,GAAKz+W,KAAKwd,MAAV,CAIA,IAAM+hW,EAAyBv/W,KAAKm/W,8CACpCn/W,KAAKwd,MAAM2oP,6BAA+Bo5G,EAAuB56W,KAAI,SAAA22D,GAAK,OAAAA,EAAE/+C,QAGtE,YAAA4iW,4CAAR,sBACMpqU,EAAuB,GAE3B,IAAK/0C,KAAKwd,QAAUxd,KAAKwd,MAAMojI,WAAa5gJ,KAAK+oC,OAC/C,OAAOgM,EAGT/0C,KAAKwd,MAAMojI,SAASz5I,SAAQ,SAAAk7I,GAC1B,IAAIuvN,EAAQ,EAAK7oU,OAAO/iC,MAAK,SAAAlG,GAAK,OAAAA,EAAEyc,KAAO8lI,KACvCuvN,GACFA,EAAM78T,cAAc5tC,SAAQ,SAAAm0D,GACrBvmB,EAAc/uC,MAAK,SAAAumP,GAAY,OAAAA,EAAShwO,KAAO++C,EAAE/+C,OACpDw4B,EAAc75C,KAAKogE,SAO3B,IAAMkkT,EAAoBzqU,EAAclwC,QAAO,SAAAy2D,GAAK,SAAK3Y,kBAAkB2Y,MAC3E,GAAIkkT,EAAkB5kX,OAAS,EAAG,CAChC,IAAM6kX,EAAiBD,EAAkB36W,QAAO,SAAAy2D,GAAK,OAAAA,EAAEtxB,aAAe,EAAKxsB,MAAMwsB,cAC3E01U,EAAiBD,EAAe7kX,OAAS,EAAI6kX,EAAiBD,EAC9DG,EAA2B3/W,KAAK4/W,gCAAgCF,GAEtE3qU,EAAgBA,EAAclwC,QAAO,SAAAy2D,GAAK,OAAC,EAAK3Y,kBAAkB2Y,MAC9DqkT,GACF5qU,EAAc75C,KAAKykX,GAIvB,OAAO5qU,GAGD,YAAA6qU,gCAAR,SAAwCJ,GAAxC,WACE,IAAKA,GAAkD,IAA7BA,EAAkB5kX,OAC1C,OAAO,KAGT,GAAIoF,KAAKy9W,0BAA2B,CAClC,IAAMziQ,EAAWwkQ,EAAkBx5W,MAAK,SAAAs1D,GAAK,OAAAA,EAAE/+C,KAAO,EAAKkhW,6BAC3D,GAAIziQ,EACF,OAAOA,EAKX,OADgBwkQ,EAAkB3/W,QAAQ4R,MAAK,SAACC,EAAGC,GAAM,OAAAD,EAAE6K,GAAK5K,EAAE4K,MACnD,IAGT,YAAAyhW,sBAAR,sBACEh+W,KAAKC,OAAO0zC,MAAM,0CAA2C3zC,KAAKwd,MAAMojI,SAAShmJ,QAEjF,IAAMihX,EAAgB77W,KAAKwd,MAAMojI,SAAShmJ,OAGpCilX,EAAgB7/W,KAAKwd,MAAMojI,SAAS/7I,QAAO,SAAAw9I,GAC/C,IAAMhxF,EAAS,EAAKtoB,OAAOlqB,MAAK,SAAA+yV,GAAS,OAAAA,EAAMr1V,KAAO8lI,KAItD,OAHKhxF,GACH,EAAKpxD,OAAO0zC,MAAM,2BAA4B0uG,GAEzChxF,KAIHyuT,EAAc9/W,KAAKwd,MAAMurB,OAAOlkC,QAAO,SAAA+sW,GAE3C,OADe,EAAK7oU,OAAOlqB,MAAK,SAAA/e,GAAK,OAAAA,EAAEyc,KAAOq1V,EAAMr1V,SAKlDsjW,EAAcjlX,SAAWihX,GAAiBiE,EAAYllX,SAAWoF,KAAKwd,MAAMurB,OAAOnuC,SACrFoF,KAAKwd,MAAMojI,SAAWi/N,EACtB7/W,KAAKwd,MAAMurB,OAAS+2U,EACpB9/W,KAAKC,OAAO0zC,MAAM,yCAA0C3zC,KAAKwd,MAAMojI,SAAShmJ,UAK5E,YAAA+8W,kBAAR,sBACE33W,KAAK+oC,OAAO5hC,SAAQ,SAAAD,IACyB,IAAvC,EAAKsW,MAAMojI,SAASvvI,QAAQnK,EAAEqV,IAChC,EAAK06V,eAAe/vW,EAAEqV,KAAM,EAG5B,EAAK06V,eAAe/vW,EAAEqV,KAAM,MAKrB,YAAA27V,aAAb,SAA0BC,G,sHAClB4H,EAAmB//W,KAAKwd,MAAMojI,SAAS/gJ,QAC7CG,KAAKwd,MAAMurB,OAASovU,EACpBn4W,KAAKwd,MAAMojI,SAAWu3N,EAAaxzW,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MACxCyjW,EAAqBhgX,KAAKk+W,kBAAkB6B,KAAsB//W,KAAKk+W,kBAAkBl+W,KAAKwd,MAAMojI,UAE1G5gJ,KAAK03W,sBACL13W,KAAK23W,oBAEDS,GAAiB,EACrBD,EAAahxW,SAAQ,SAAAD,GACf,EAAK2wW,qCAAqC3wW,EAAEqV,MAC9C67V,GAAiB,MAIhBA,GACgDp4W,KAAK+2W,+BACrB5vW,SAAQ,SAAAD,GACzC,EAAK2wW,qCAAqC3wW,MAI1ClH,KAAKozP,mBAAmBx4P,OAAS,GAAKw9W,GAAkBp4W,KAAKk3W,oBAC/Dl3W,KAAK83W,0BAIDmI,EAAgBjgX,KAAKwd,MAAMojI,SAAS/7I,QAAO,SAAA0X,GAAM,OAACwjW,EAAiB/oW,SAASuF,MAC9EyjW,GACIE,EAAsBD,EAAcrlX,OAAS,EACnD,GAAMoF,KAAK++W,sBAAsBmB,KAF/B,M,OAEF,S,wBAGED,EAAcrlX,OAAS,EACzB,GAAMoF,KAAKmgX,yBAAyBF,IADlC,M,OACF,S,wBAGFjgX,KAAKi+W,+B,YAGC,YAAAmC,yBAAR,WACE,OAAOpgX,KAAKwd,OACVxd,KAAKwd,MAAM0sB,gBAAkB,IAAcovT,QAGjC,YAAAylB,sBAAd,SAAoCsB,G,qBAA6BrkX,GAAO,W,iFACtE,OAAKgE,KAAKwd,OAAUxd,KAAKwd,MAAMwsB,YAAehqC,KAAKwd,MAAMojI,UAA2C,IAA/B5gJ,KAAKwd,MAAMojI,SAAShmJ,OAIpFoF,KAAKogX,4BAQJE,EAAwBtgX,KAAKk+W,kBAAkBl+W,KAAKwd,MAAMojI,UAC1D2/N,EAA+BD,IAA0BtgX,KAAK49W,wBAC9D4C,EAAiBxgX,KAAKygX,0BACvBF,IACHvgX,KAAK69W,sCAAuC,GAGb0C,IAC3BvgX,KAAK69W,sCACN2C,IAGHxgX,KAAK09W,qBAAsB,EAC3B19W,KAAK69W,sCAAuC,GAGxClgX,EAAuC,CAC3CqsC,WAAYhqC,KAAKwd,MAAMwsB,WACvBE,cAAelqC,KAAKwd,MAAM0sB,cAC1B02G,SAAU5gJ,KAAKwd,MAAMojI,SAAS/gJ,QAC9B6gX,sBAAuB1gX,KAAK09W,oBAAsB19W,KAAKy9W,+BAA4B7/W,GAGrFoC,KAAKC,OAAO0zC,MAAM,wBAAyB,CACzC3J,WAAYrsC,EAAQqsC,WACpBE,cAAevsC,EAAQusC,cACvB02G,SAAUjjJ,EAAQijJ,SAClB8/N,sBAAuB/iX,EAAQ+iX,sBAC/BhD,oBAAqB19W,KAAK09W,sBAGW,GAAM19W,KAAKo2W,sBAAsBvtN,wBAAwBlrJ,MAtC9FqC,KAAKy9W,0BAA4B,KACjCz9W,KAAK09W,qBAAsB,EAC3B19W,KAAK29W,YAAc,GACnB39W,KAAKy+W,mCACE,CAAP,GAAO,IARA,CAAP,GAAO,G,OAyDT,OAfMhjW,EAAiC,SACvCzb,KAAK29W,YAAcliW,EAASklW,wBAA0B,GAEtD3gX,KAAKC,OAAO0zC,MAAM,yBAA0B,CAC1CitU,cAAenlW,EAASmlW,cACxBC,WAAYplW,EAASolW,WACrBC,eAAgB9gX,KAAK29W,YAAY/iX,OACjCmmX,aAAc/gX,KAAK29W,YAAYh5W,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MAC1CykW,sBAAuBvlW,EAASulW,sBAChCC,+BAAgCxlW,EAASwlW,iCAGrCC,GAA4BlhX,KAAK09W,qBAAuB19W,KAAK29W,YAAY/iX,OAAS,GAClFgmX,EAAgBnlW,EAASmlW,eAAiBM,GAc3Cb,EAqBDrgX,KAAK09W,qBAAuBjiW,EAASulW,sBAChC,CAAP,GAAO,IAGLT,IACFvgX,KAAK69W,sCAAuC,GAG7B,GAAM79W,KAAKmhX,uBAAuBnhX,KAAK29W,YAAa39W,KAAKy9W,8BA5BpEmD,IACIQ,IAAwBphX,KAAKy9W,0BACM2D,GACpCphX,KAAK29W,YAAY9+V,MAAK,SAAA3X,GAAK,OAAAA,EAAEqV,KAAO,EAAKkhW,gCAGtC4D,EAA0BrhX,KAAKshX,8BAA8B7lW,GAAU,IAE3Ezb,KAAKy9W,0BAA4B4D,GAEjCrhX,KAAKy9W,0BAA4B,KACjCz9W,KAAK09W,qBAAsB,IAI/B19W,KAAKy+W,oCAEA,CAAP,GAAO,MA7BD4C,EAA0BrhX,KAAKshX,8BAA8B7lW,GAAU,IAE3Ezb,KAAKy9W,0BAA4B4D,GAEjCrhX,KAAKy9W,0BAA4B,KACjCz9W,KAAK09W,qBAAsB,GAE7B19W,KAAKy+W,mCACE,CAAP,GAAO,I,OAiCT,OADMzjQ,EAAW,WAMjBh7G,KAAKy9W,0BAA4BziQ,EACjCh7G,KAAK09W,qBAAsB,EAC3B19W,KAAKy+W,mCACE,CAAP,GAAO,KAPLz+W,KAAK8iJ,aAAaviJ,QAAQ,2BACnB,CAAP,GAAO,YASH,YAAA29W,kBAAR,SAA0Bt9N,GACxB,OAAKA,GAAgC,IAApBA,EAAShmJ,OAInBgmJ,EAAS/gJ,QAAQ4R,MAAK,SAACC,EAAGC,GAAM,OAAAD,EAAIC,KAAG3J,KAAK,KAH1C,IAMH,YAAAy4W,wBAAR,sBACE,QAAIzgX,KAAKy9W,2BAIsBz9W,KAAKm/W,8CACNtgW,MAAK,SAAAy8C,GAAK,SAAK3Y,kBAAkB2Y,OAGzD,YAAAojT,qBAAR,WACE1+W,KAAK49W,wBAA0B59W,KAAKk+W,kBAAkBl+W,KAAKwd,MAAMojI,UACjE5gJ,KAAK69W,sCAAuC,GAGtC,YAAAyD,8BAAR,SAAsC7lW,EAAgC8lW,GACpE,OAAI9lW,EAASwlW,+BACJxlW,EAASwlW,+BAGdxlW,EAAS+lW,sBAAwB/lW,EAASolW,aAAe,IAAwBY,wBAC5EhmW,EAAS+lW,qBAGdD,GAA+BvhX,KAAK29W,aAAe39W,KAAK29W,YAAY/iX,OAAS,EACxEoF,KAAK29W,YAAY,GAAGphW,GAGtB,MAGK,YAAA4kW,uBAAd,SAAqC39W,EAAkCk+W,G,qBAA2B1lX,GAAO,W,0DACvG,OAAKwH,GAA8B,IAAnBA,EAAQ5I,OAID,IAAnB4I,EAAQ5I,OACH,CAAP,EAAO4I,EAAQ,GAAG+Y,KAGdiB,EAAiC,CACrCha,QAASA,EACT45W,WAAYsE,GAGC,GAAM1hX,KAAKkkV,cAAczoS,KAAK,CAC3C1tC,UAAW,IACXyP,MAAOA,EACPikC,MAAM,IACLi3G,eAhBM,CAAP,EAAO,M,OAkBT,OANM3oJ,EAAS,UAMJkpC,eAAiBlpC,EAAO9F,OAC1B,CAAP,EAAO,MAGF,CAAP,EAAO8F,EAAO9F,gBAGF,YAAAk2W,yBAAd,SAAuCF,G,qBAA0BjkX,GAAO,W,2EAC3D2lX,G,uEACH3C,EAAY,EAAKj2U,OAAO/iC,MAAK,SAAAlG,GAAK,OAAAA,EAAEyc,KAAOolW,MAC7C,YACI1C,EAAuBD,EAAUjqU,cAAclwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAEw+R,a,WACxDolB,G,yDACqB,EAAK1hW,MAAM4oP,iCACtCvnP,MAAK,SAAAnN,GAAK,OAAAA,EAAE84B,gBAAkB00U,EAAG3iW,MAChC,MACF,GAAM,EAAKk/V,gBAAgByD,EAAG3iW,GAAI2iW,EAAGxhX,KAAMshX,I,OAA3C,S,oCAJa,EAAAC,E,wBAAA,YAANC,EAAE,K,KAAFA,KAA0B,M,wCAApB,I,uCAJC,EAAAe,E,wBAAA,YAAX0B,EAAO,K,KAAPA,KAAwB,M,wCAAb,I,oBAatB3hX,KAAKi+W,+B,YAGO,YAAAnG,wBAAd,W,qBAAyC97W,GAAO,W,+DAEX,SAAM,6F,OAElC,OAFC4lX,EAA2B,SAAiF,uBAE7G,GAAM5hX,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW6zW,EACXpkW,MAAOxd,KAAKwd,MAAM23L,uBACjBz8C,YAAW,SAAOj9I,GAAa,qC,kCAC3BA,EAASw9B,cACRj5C,KAAKozP,mBAAmBx4P,OAAS,GAAKoF,KAAKk3W,oBAAgE,GAA1Cl3W,KAAKwd,MAAM23L,qBAAqBv6M,QACnGoF,KAAK8iJ,aAAaviJ,QAAQ,yD,qBANhC,MAAO,CAAP,EAAO,kBAYD,YAAAi3W,2BAAR,sBACEx3W,KAAK+oC,OAAO5hC,SAAQ,SAAAD,GAClBA,EAAE6tC,cAAc5tC,SAAQ,SAAAm0D,GAClBA,EAAE09R,iBAAmB,IAAgBif,eAExB,IADD,EAAKjB,wBAAwB3lW,QAAQnK,EAAEqV,KAEnD,EAAKy6V,wBAAwB97W,KAAKgM,EAAEqV,YAOtC,YAAAs7V,qCAAR,SAA6CU,GAC3C,IAAIC,GAA0C,EACxCC,EAA0Bz4W,KAAKg3W,wBAAwB3lW,QAAQknW,GAC/DG,EAAqB14W,KAAKwd,MAAMojI,SAASvvI,QAAQknW,GAEvD,IAAiC,IAA7BE,EAAgC,CAClC,IAAME,EAAiC34W,KAAK+2W,+BAA+B1lW,QAAQknW,IACvD,IAAxBG,GACsC,IAApCC,IACF34W,KAAK+2W,+BAA+B77W,KAAKq9W,GACzCC,GAAiC,IAGK,IAApCG,IACF34W,KAAK+2W,+BAA+B5/V,OAAOwhW,EAAgC,GAC3EH,GAAiC,GAYvC,OAPIx4W,KAAKozP,mBAAmBx4P,OAAS,GAAKoF,KAAK+2W,+BAA+Bn8W,OAAS,EACrFoF,KAAKk3W,oBAAqB,GAE1Bl3W,KAAKk3W,oBAAqB,EAC1Bl3W,KAAKwd,MAAM23L,qBAAuB,IAG7BqjK,GAGD,YAAAf,mCAAR,sBACEz3W,KAAK+2W,+BAAiC,GACtC/2W,KAAKwd,MAAMojI,SAASz5I,SAAQ,SAAAD,IAGO,IAFD,EAAK8vW,wBAAwB3lW,QAAQnK,MAI3B,IADD,EAAK6vW,+BAA+B1lW,QAAQnK,IAEjF,EAAK6vW,+BAA+B77W,KAAKgM,OAK3ClH,KAAKozP,mBAAmBx4P,OAAS,GAAKoF,KAAK+2W,+BAA+Bn8W,OAAS,EACrFoF,KAAKk3W,oBAAqB,GAE1Bl3W,KAAKk3W,oBAAqB,EAC1Bl3W,KAAKwd,MAAM23L,qBAAuB,KAI/B,YAAAyyJ,iBAAP,SAAwBnqW,GACtBuC,KAAK8iJ,aAAa3iJ,KAAK1C,IAGjB,YAAAokX,cAAR,SAAsB94U,GAAtB,WACMxpB,GAAe,EAUnB,OATAwpB,EAAO5hC,SAAQ,SAAAD,GACb,IAAI0qW,EAAQ,EAAK7oU,OAAO/iC,MAAK,SAAAokB,GAAK,OAAAA,EAAE7N,KAAOrV,EAAEqV,MACzCq1V,IACgBA,EAAM78T,cAAc/uC,MAAK,SAAAs1D,GAAK,OAAAA,EAAEw+R,eAEhDv6U,GAAM,OAILA,GAGD,YAAA0+V,6BAAR,sBACEj+W,KAAK+oC,OAAO5hC,SAAQ,SAAAyqW,GAClB,IAAMqN,EAAuBrN,EAAM78T,cAAclwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAEw+R,aAC3B,IAAhCmlB,EAAqBrkX,OAIzB,EAAK4iX,uBAAuB5L,EAAMr1V,IAAM0iW,EAAqBpgW,MAAK,SAAAqgW,GAChE,SAAK1hW,MAAM4oP,kCACX,EAAK5oP,MAAM4oP,iCAAiCvnP,MAAK,SAAAnN,GAAK,OAAAA,EAAE84B,gBAAkB00U,EAAG3iW,SAL7E,EAAKihW,uBAAuB5L,EAAMr1V,KAAM,MAUhC,YAAAulW,oBAAd,SAAkClQ,G,qBAAe51W,GAAO,W,gEAEtD,KADMgjX,EAAYh/W,KAAK+oC,OAAO/iC,MAAK,SAAAlG,GAAK,OAAAA,EAAEyc,KAAOq1V,EAAMr1V,OACvC,UACV0iW,EAAuBD,EAAUjqU,cAAclwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAEw+R,a,IAClD,EAAAmlB,E,wBAAA,YAANC,EAAE,KACX,GAAMl/W,KAAKy7W,gBAAgByD,EAAG3iW,GAAI2iW,EAAGxhX,QADF,M,OACnC,S,wBADe,I,+BAKX,YAAAqkX,wBAAR,sBACM9C,EAA8B,GAWlC,OAVAj/W,KAAKwd,MAAMojI,SAASz5I,SAAQ,SAAAk7I,GAC1B,IAAIuvN,EAAQ,EAAK7oU,OAAO/iC,MAAK,SAAAokB,GAAK,OAAAA,EAAE7N,KAAO8lI,KACvCuvN,GACFA,EAAM78T,cAAc5tC,SAAQ,SAAAm0D,GACtBA,EAAEw+R,YAAcmlB,EAAqBj5W,MAAK,SAAA/H,GAAK,OAAAA,EAAEse,KAAO++C,EAAE/+C,OAC5D0iW,EAAqB/jX,KAAKogE,SAK3B2jT,GAGK,YAAAxD,gBAAd,SAA8BjxU,EAAuBi6T,EAAyBud,G,qBAAuBhmX,GAAO,W,2EAOpF,OANtBgE,KAAKC,OAAO0zC,MAAM,kBAAmBnJ,EAAei6T,GAE/CzkW,KAAKwd,MAAM4oP,mCACdpmQ,KAAKwd,MAAM4oP,iCAAmC,IAG1B,GAAMpmQ,KAAKsuV,0BAA0BrkM,4BAA4Bz/G,I,OAOvF,OAPMuxU,EAAgB,SAChBC,EAAoBD,EAAcl3W,QAAO,SAAA1G,GAAK,OAACA,EAAE64G,cAGjDioQ,EAAuBj/W,KAAK+hX,2BAC5B3sU,EAAc6pU,EAAqBj5W,MAAK,SAAAs1D,GAAK,OAAAA,EAAE/+C,KAAOiuB,OAEhB,MAAzB4K,EAAYn3B,WAAqB+9V,EAAkBphX,OAAS,GACvEqhX,EAAmDD,EAAkBr3W,KAAI,SAAAu3W,GAC7E,IAAIv6F,EAAY,IAAI,IAIpB,OAHAA,EAAUn3O,cAAgBA,EAC1Bm3O,EAAU5jQ,gBAAkBm+V,EAAI3/V,GAChColQ,EAAUx2O,mBAAqB+wU,EAAI/wU,mBAC5Bw2O,KAGHznM,EAAYl6E,KAAKwd,MAAM4oP,iCAC1BvhQ,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkBA,KACnCxqC,KAAKwd,MAAM4oP,iCAAmClsL,EAAU/1E,OAAO83W,GAC/Dj8W,KAAKi+W,+BACLj+W,KAAK03W,sBACL,MAGIyE,EAAqC,CACzC3xU,cAAeA,EACfi6T,gBAAiBA,EACjBrvJ,mCAAwCp1M,KAAKwd,MAAM4oP,iCAAgC,SAG9E,GAAMpmQ,KAAKkkV,cACfzoS,KAAK,CACJ1tC,UAAW,IACXyP,MAAO2+V,IAERzjN,YAAW,SAAOj9I,GAAa,qC,wCACzBA,EAASw9B,cAAgBx9B,EAASxR,QAAUwR,EAASxR,OAAOmyW,YAAc3gW,EAASxR,OAAOmyW,WAAWxhX,OAAS,GAC3Gs/E,EAAYl6E,KAAKwd,MAAM4oP,iCAC1BvhQ,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkBA,KACnCxqC,KAAKwd,MAAM4oP,iCAAmClsL,EAAU/1E,OAAOsX,EAASxR,OAAOmyW,YAE/Ep8W,KAAKC,OAAO0zC,MAAM,4CAChB3zC,KAAKwd,MAAM4oP,iCAAiCxrQ,QAC9CoF,KAAKi+W,+BACLj+W,KAAK03W,uBAGyB13W,KAAKwd,MAAM4oP,iCACtCvnP,MAAK,SAAAnN,GAAK,OAAAA,EAAE84B,gBAAkBA,OAI3Bw3U,GACFhiX,KAAKiiX,cAAcD,GAErBhiX,KAAK8iJ,aAAaviJ,QAChB,wD,sBA1BV,MAAO,CAAP,EAAO,kBAiCD,YAAA0hX,cAAR,SAAsBrQ,GAEpB,IAAMsQ,EAAeliX,KAAKwd,MAAMojI,SAASvvI,QAAQugW,EAAMr1V,KACjC,IAAlB2lW,GACFliX,KAAKwd,MAAMojI,SAASzpI,OAAO+qW,EAAc,GAI3C,IAAMC,EAAaniX,KAAKwd,MAAMurB,OAAOmqI,WAAU,SAAApzK,GAAK,OAAAA,EAAEyc,KAAOq1V,EAAMr1V,MAMnE,IALoB,IAAhB4lW,GACFniX,KAAKwd,MAAMurB,OAAO5xB,OAAOgrW,EAAY,GAInCvQ,EAAM78T,cAAe,CACvB,IAAM,EAAiB68T,EAAM78T,cAAclwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAEw+R,aAAWn1V,KAAI,SAAA22D,GAAK,OAAAA,EAAE/+C,MAC/Evc,KAAKwd,MAAM4oP,iCAAmCpmQ,KAAKwd,MAAM4oP,iCACtDvhQ,QAAO,SAAA6M,GAAK,OAAC,EAAesF,SAAStF,EAAE84B,kBAG5CxqC,KAAK63W,qCAAqCjG,EAAMr1V,IAChDvc,KAAK03W,sBACL13W,KAAK23W,oBACL33W,KAAKi+W,gCA7hCImE,EAAU,GADtB,uB,uBA0E8B,mB,OAAA,IAAZ,UAAY,SACiB,mBADjB,OACiB,IAAnB,UAAmB,SACtB,mBADsB,OACtB,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACZ,mBADY,OACZ,IAArB,UAAqB,SACJ,mBADI,OACJ,IAAnB,UAAmB,SACE,mBADF,OACE,IAApB,UAAoB,SACQ,mBADR,OACQ,IAAxB,UAAwB,SACZ,mBADY,OACZ,IAAlB,UAAkB,SACV,mBADU,OACV,IAAb,kCAAa,SACwB,mBADxB,OACwB,IAAzB,UAAyB,YApFnDA,GAAb,I,+GCxCA1mX,EAAOD,QAAU,6yP,mrECwBjB,aAqBE,WACUqK,EACA80D,EACAw7S,EACAlyB,EACAphM,GALV,WACU,KAAAh9I,SACA,KAAA80D,QACA,KAAAw7S,wBACA,KAAAlyB,gBACA,KAAAphM,eAvBF,KAAA1iJ,OAAc,GAKd,KAAAkd,WAAoC,IAAI,wBAIxC,KAAAivU,UAAoB,EAGrB,KAAA81B,mBAAuC,GACvC,KAAAC,yBAA6C,GAC7C,KAAAC,gBAA0B,GAC1B,KAAAC,oBAA8B,KAC9B,KAAAC,eAAyB,EAcxB,KAAAz1H,QAAU,6BAAUhxP,GAAO,W,+DAK1B,OAJPgE,KAAKC,OAAO0zC,MAAM,cACd9J,EAAS7pC,KAAKsd,WAAWusB,OAAOylT,MACpC3mL,eAAentF,QAAQ,2BAAsC,MAAV3xC,EAAiB,GAAKA,GAElE,GAAM7pC,KAAKo2W,sBAAsBtiW,KAAK9T,KAAKsd,YAC/Cna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAVPkD,KAAKC,OAAS,aAAWC,UAAU,cAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,cA8J5B,OA7IgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,yDAEpEgE,KAAKsd,WAAWusB,OAAOylT,MAAQ3mL,eAAexsF,QAAQ,4BAGlDn8E,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAKJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,oEAGtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OAEFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE1Bje,KAAKie,WAEPje,KAAKo2W,sBAAsBh5V,OAAO87B,iBAAmBl5C,KAAKie,UAE1Dje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3Dje,KAAKusV,UAAW,EAET,GAAMvsV,KAAKukV,aARhB,O,OAQF,MAAO,CAAP,EAAO,U,yBAKC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,aACxC,EAAKijC,8BAENz2W,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWK,YAAAy5W,aAAd,W,qBAA8Bv6W,GAAO,W,kDAEnC,OADAgE,KAAKsd,WAAWusB,OAAOylT,MAAQ,KAC/B,GAAMtvV,KAAKukV,Y,cAAX,S,YAGY,YAAAhc,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGD,YAAAsyC,yBAAR,WACE1iX,KAAKqiX,oBAAsBriX,KAAKsd,WAAWoiU,WAAa,IAAI76U,QAAO,SAAAqC,GAAK,OAACA,EAAEy7W,aAC3E3iX,KAAKsiX,yBAA2BtiX,KAAKqiX,mBACrCriX,KAAKuiX,gBAAkB,GACvBviX,KAAKwiX,oBAAsB,MAGf,YAAA1lW,OAAd,SAAqBtc,G,qBAAuBxE,GAAO,W,6DAC1C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK9C,OACXg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MAEK,GAAMj5C,KAAKo2W,sBAAsBt5V,OAAOtc,EAAK+b,IACjDpZ,MAAK,WAEJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ7Q,EAAK+b,GAAGyC,YACrG,EAAK1B,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,iCAG3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,U,mCANX,MAAO,CAAP,EAAO,kBAuBK,YAAA8lX,wBAAd,SAAsCC,G,qBAAyC7mX,GAAO,W,kDACpF,SAAMgE,KAAKkkV,cAAczoS,KAAK,CAC5B1tC,UAAW,IACXyP,MAAOqlW,K,cAFT,S,YAMK,YAAAC,wBAAP,sBACM9iX,KAAKuiX,iBAAmBviX,KAAKuiX,gBAAgB3nX,OAAS,GACxDoF,KAAKsiX,yBAA2BtiX,KAAKqiX,mBAAmBx9W,QACtD,SAAAy2D,GAAK,OAAAA,EAAE59D,KAAK6d,cAAcvE,SAAS,EAAKurW,gBAAgBhnW,kBAEtDvb,KAAKsiX,yBAAyB1nX,OAAS,IACzCoF,KAAKwiX,oBAAsBxiX,KAAKsiX,yBAAyB,GAAG/lW,MAG9Dvc,KAAKsiX,yBAA2BtiX,KAAKqiX,mBACrCriX,KAAKwiX,oBAAsB,OAIlB,YAAAO,gBAAb,W,qBAAgC/mX,GAAO,W,0DACrC,IAAKgE,KAAKwiX,oBAER,OADAxiX,KAAK8iJ,aAAaviJ,QAAQ,oFAC1B,I,iBAK6B,O,uBAD7BP,KAAKyiX,eAAgB,EACQ,GAAMziX,KAAKo2W,sBAAsBxtN,UAAU5oJ,KAAKwiX,sB,cAAzEp0T,EAAyB,SAC7BpuD,KAAK8iJ,aAAaxiJ,QAAQ,4BAC1BN,KAAK8F,OAAOkD,gBAAgB,+BAAgC,CAAE+gC,iBAAkBqkB,EAAO7xC,K,+BAEvFvc,KAAK8iJ,aAAahmJ,MAAM,G,oBAExBkD,KAAKyiX,eAAgB,E,6BAIT,YAAA5F,MAAd,SAAoBr8W,G,qBAAuBxE,GAAO,W,wDAOhD,OANIwhB,EAA2B,CAC7BlgB,KAAM,IAAkB80J,eACxB71I,GAAI/b,EAAK+b,GACT0B,UAAWje,KAAKie,UAChB44U,OAAQ72V,KAAK6Q,MAAM6kJ,cAAcn5I,IAEnC,GAAMvc,KAAKkkV,cAAczoS,KAAK,CAC5B1tC,UAAW,IACXyP,MAAOA,K,cAFT,S,YArLOwlW,EAAU,GADtB,uB,uBAuByB,mB,OAAA,IAAN,oBAAM,SACK,mBADL,OACK,IAAZ,UAAY,SACyB,mBADzB,OACyB,IAArB,UAAqB,SAChB,mBADgB,OAChB,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YA1BzBA,GAAb,I,oICvBA,0FAKA,GALA,KAKA,WAKE,aACEhjX,KAAKC,OAAS,aAAWC,UAAU,yBAoBvC,OAjBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,yBACVoD,KAAM,oBAIR,CACEgF,MAAO,oCACPpI,SAAU,iCACVoD,KAAM,mCAId,EA1BA,K,yGCNAhC,EAAOD,QAAU,uD,8FCAjBC,EAAOD,QAAU,85I,4qBCUjB,aAKE,WACUsE,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAERpsN,KAAKC,OAAS,aAAWC,UAAU,6B,QAkLvC,OA/KE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPpI,SAAU,yBACVoD,KAAM,uBACN4J,MAAOtH,KAAKD,KAAKM,GAAG,0CACpB+H,SAAU,CACRm7U,QAAQ,IAIZ,CACE7gV,MAAO,mBACPpI,SAAU,uDACVoD,KAAM,oCACN4J,MAAOtH,KAAKD,KAAKM,GAAG,2DACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBmrM,0BAClEtnQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBgjD,2BAE/BvvQ,KAAMH,KAAKD,KAAKM,GAAG,4DAIvB,CACEqC,MAAO,qBACPpI,SAAU,2DACVoD,KAAM,sCACN4J,MAAOtH,KAAKD,KAAKM,GAAG,6DACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB8qM,oCAClEjnQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsB2iD,qCAE/BlvQ,KAAMH,KAAKD,KAAKM,GAAG,8DAIvB,CACEqC,MAAO,gBACPpI,SAAU,oCACVoD,KAAM,kBACN4J,MAAOtH,KAAKD,KAAKM,GAAG,wDACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB8rM,+BAClEjoQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsB2jD,gCAE/BlwQ,KAAMH,KAAKD,KAAKM,GAAG,yDAIvB,CACEqC,MAAO,cACPpI,SAAU,gCACVoD,KAAM,kBACN4J,MAAOtH,KAAKD,KAAKM,GAAG,sDACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB4rM,6BAClE/nQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsByjD,8BAE/BhwQ,KAAMH,KAAKD,KAAKM,GAAG,uDAIvB,CACEqC,MAAO,8BACPpI,SAAU,+DACVoD,KAAM,iCACN4J,MAAOtH,KAAKD,KAAKM,GAAG,oEACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBgsM,4CAClEnoQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsB6jD,6CAE/BpwQ,KAAMH,KAAKD,KAAKM,GAAG,qEAIvB,CACEqC,MAAO,+BACPpI,SAAU,8EACVoD,KAAM,+CACN4J,MAAOtH,KAAKD,KAAKM,GAAG,wCACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBksM,4CAClEroQ,SAAU,CACR2sW,sBAAsB,EACtBhwS,WAAY,CACV2nJ,KAAM,CAAC,IAAsB+jD,6CAE/BtwQ,KAAMH,KAAKD,KAAKM,GAAG,oFAKvB,CACEqC,MAAO,uCACPpI,SAAU,8FACVoD,KAAM,uDACN4J,MAAOtH,KAAKD,KAAKM,GAAG,gDACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBusM,mDAClE1oQ,SAAU,CAER28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBokD,oDAE/B3wQ,KAAMH,KAAKD,KAAKM,GAAG,4FAIvB,CACEqC,MAAO,iCACPpI,SAAU,8EACVoD,KAAM,+CACN4J,MAAOtH,KAAKD,KAAKM,GAAG,uDACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBksM,4CAClEroQ,SAAU,CACR2sW,sBAAsB,EACtBhwS,WAAY,CACV2nJ,KAAM,CAAC,IAAsB+jD,6CAE/BtwQ,KAAMH,KAAKD,KAAKM,GAAG,mGAkBvB,CACEqC,MAAO,6BACPpI,SAAU,2EACVoD,KAAM,8CACN4J,MAAOtH,KAAKD,KAAKM,GAAG,qEACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBwrM,mCAClE3nQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBqjD,oCAE/B5vQ,KAAMH,KAAKD,KAAKM,GAAG,sEAIvB,CACEqC,MAAO,yBACPpI,SAAU,mEACVoD,KAAM,sCACN4J,MAAOtH,KAAKD,KAAKM,GAAG,iEACpBkQ,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBwrM,mCAClE3nQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBqjD,oCAE/B5vQ,KAAMH,KAAKD,KAAKM,GAAG,qEApLhB4iX,EAAyB,GADrC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,mFCVAvnX,EAAOD,QAAU,uD,wmBCIjB,aAEE,WAAoBqK,GAAA,KAAAA,S,MAKtB,OAPa8sW,EAAkB,GAD9B,a,uBAGmC,mB,OAAA,IAAN,oBAAM,YAFvBA,GAAb,I,2ECJAl3W,EAAOD,QAAU,6vB,wnECWjB,aAmBE,WACUqK,EACAi1V,EACA7W,EACAphM,GAJV,WACU,KAAAh9I,SACA,KAAAi1V,6BACA,KAAA7W,gBACA,KAAAphM,eAnBF,KAAAxlI,WAAoC,IAAI,wBAIxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAK+6V,2BAA2BjnV,KAAK9T,KAAK+d,gBAAiB/d,KAAKsd,YAC1Ena,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAePkD,KAAKC,OAAS,aAAWC,UAAU,2B,YAsDvC,OAnDgB,YAAAqoU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAAx3T,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,kCAC1CgE,KAAKC,OAAOE,KAAK,YACZmhB,MAAMlhB,EAAO2d,mBAChB/d,KAAK+d,iBAAmB3d,EAAO2d,iB,WAKrB,YAAA5e,KAAd,W,qBAAsBnD,GAAO,W,oEACvBgE,KAAK+d,gBACA,GAAM/d,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,OAP1B,M,OACF,MAAO,CAAP,EAAO,U,yBAWE,YAAAuxO,KAAb,SAAkB7tO,G,qBAA4BxE,GAAO,W,+DAE5C,OADH60V,EAAe3/U,KAAKC,MAAMD,KAAKE,UAAU5Q,IACtC,GAAMR,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK+6V,2BAA2Br+U,OAAOlc,GACjD2C,MAAK,SAAC+/W,GACL,IAAIz+B,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAO/b,EAAK+b,MACxF,EAAKe,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,EAAGy+B,GAExD,EAAKpgO,aAAaxiJ,QAAQ,gCAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,OAYPkD,KAAKC,OAAO0zC,MAAM,qBAGlB94C,OAAOgI,OAAOrC,EAAMqwV,G,6CApBxB,MAAO,CAAP,EAAO,kBAvDEsyB,EAAuB,GADnC,uB,uBAqByB,mB,OAAA,IAAN,oBAAM,SACwC,mBADxC,OACwC,IAA1B,UAA0B,SAC1B,mBAD0B,OAC1B,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YAvBzBA,GAAb,I,uHCXAznX,EAAOD,QAAU,8tE,m+DCajB,aAUE,WACU6lD,EACA8hU,EACA19B,EACA5iM,GAHA,KAAAxhG,mBACA,KAAA8hU,0BACA,KAAA19B,8BACA,KAAA5iM,eAXF,KAAAkpM,iBAA2B,EAE3B,KAAAq3B,kBAAwC,GAY9CrjX,KAAKC,OAAS,aAAWC,UAAU,4BAEnCF,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,K,YAkD9C,OA/CgB,YAAAr6T,SAAd,SAAuB4E,G,qBAA6BxhB,GAAO,W,6DAGlD,OADPgE,KAAKwd,MAAQA,EACN,GAAMxd,KAAKojX,wBAAwB7lW,OAAOC,EAAMO,iBACpD5a,MAAK,SAACkgX,GACL,EAAKA,kBAAoBA,EACzB,EAAKC,yBAENr3W,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUD,YAAAwmX,oBAAR,sBACEtjX,KAAKuqW,oBAAsB,kBAExBnxB,OAAO,UAAUj9S,QAAQ,uBACzBw7B,MAEH33D,KAAKwd,MAAMy8P,gBAAgB9yQ,SAAQ,SAAAsU,GACjC,EAAKi6T,qBAAqBhD,UAAUj3T,EAAU,EAAK8uV,yBAI/C,YAAAgZ,sBAAR,sBACEvjX,KAAKwd,MAAMy8P,gBAAgB9yQ,SAAQ,SAAAsU,GACjC,EAAKi6T,qBAAqB/C,aAAal3T,OAI7B,YAAA2/F,OAAd,W,qBAAwBp/G,GAAO,W,sCAC7B,MAAO,CAAP,EAAOgE,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKD,YAAAA,KAAd,W,qBAAsB1gE,GAAO,W,kDAEpB,OADPgE,KAAKujX,wBACE,GAAMvjX,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAhEE49S,EAAwB,GADpC,uB,uBAY6C,mB,OAAA,IAAhB,wCAAgB,SACe,mBADf,OACe,IAAxB,UAAwB,SACO,mBADP,OACO,IAA3B,8DAA2B,SAC9B,mBAD8B,OAC9B,IAAZ,UAAY,YAdzBA,GAAb,K,wHCbA9nX,EAAOD,QAAU,8qD,wpBCUjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,4B,MAgDvC,OA7CE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3CtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPhF,KAAM,sBACNpD,SAAU,wBACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,mDACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBi7C,oBAKnC,CACEjlQ,MAAO,qBACPhF,KAAM,yBACNpD,SAAU,8CACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,6DACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBi7C,oBAKnC,CACEjlQ,MAAO,wBACPhF,KAAM,4BACNpD,SAAU,oDACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,gEACpB+H,SAAU,CACRywV,WAAY,CACVnsI,KAAM,CAAC,IAAsBi7C,sBAMrC3nQ,KAAK8F,OAASA,GAtDL29W,EAAwB,GADpC,uB,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,kFCVA/nX,EAAOD,QAAU,8M,69DCuBjB,aAuBE,WACUq/V,EACAD,EACA/3M,EACA4iM,EACA5/U,GAJA,KAAAg1V,uBACA,KAAAD,kBACA,KAAA/3M,eACA,KAAA4iM,8BACA,KAAA5/U,SAvBF,KAAA0X,MAAuB,IAAI,IAG3B,KAAAkmW,cAA4B,GAC5B,KAAAC,eAA6B,GAG7B,KAAAC,WAAqB,GAGrB,KAAAC,YAAsB,GAEtB,KAAAC,mBAAiC,GACjC,KAAAC,mBAAiC,GAEjC,KAAAC,eAAyB,EACzB,KAAAC,gBAA0B,EAShCjkX,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,qB,cA+LvC,OA3LS,YAAAylV,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,QAAQpyK,YAAY,yCAAyCwkD,WACpEn+K,GAAGrtC,KAAKwd,QAGC,YAAA5E,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,4DAC1CgE,KAAKC,OAAO0zC,MAAM,0BAA2BvzC,G,8CAItCkhB,MAAMlhB,EAAOoqC,eAAd,OACF,EAAAxqC,KAAiB,GAAMA,KAAK66V,gBAAgBt9U,QAAQnd,EAAOoqC,iB,cAA3D,EAAKoY,UAAY,SAEZthC,MAAMlhB,EAAO2d,iBAAd,OAEF,EAAA/d,KAAa,GAAMA,KAAK86V,qBAAqBx+U,SAASlc,EAAO2d,mB,cAA7D,EAAKP,MAAQ,SACbxd,KAAK2lV,2B,aAGL3lV,KAAKC,OAAO0zC,MAAM,2BAClB3zC,KAAKwd,MAAMgtB,eAAiBpqC,EAAOoqC,c,iBAErCxqC,KAAKkkX,qB,sDAIPlkX,KAAK8iJ,aAAahmJ,MAAM,G,+BAIrB,YAAAonX,mBAAP,sBAEElkX,KAAK2jX,eAAiB3jX,KAAK4iD,UAAU/9C,QAAO,SAAAjJ,GAC1C,SAAK4hB,MAAMolC,UAAU58C,MAAK,SAAAkB,GAAK,OAAAA,IAAMtL,EAAE2gB,SAGzCvc,KAAK0jX,cAAgB1jX,KAAK4iD,UAAU/9C,QAAO,SAAAjJ,GACzC,OAAE,EAAK4hB,MAAMolC,UAAU58C,MAAK,SAAAkB,GAAK,OAAAA,IAAMtL,EAAE2gB,UAKtC,YAAA4nW,oBAAP,sBACEnkX,KAAKC,OAAO0zC,MAAM,uCAAwC3zC,KAAK4jX,YAC/D5jX,KAAK0jX,cAAgB1jX,KAAK4iD,UAAU/9C,QAAO,SAAAjJ,GACzC,OAAE,EAAK4hB,MAAMolC,UAAU58C,MAAK,SAAAkB,GAAK,OAAAA,IAAMtL,EAAE2gB,QAGtC3gB,EAAE6iW,cAAuF,IAAxE7iW,EAAE6iW,YAAYljV,cAAclK,QAAQ,EAAKuyW,WAAWroW,gBAErE3f,EAAEu4D,OAAyE,IAAjEv4D,EAAEu4D,KAAK54C,cAAclK,QAAQ,EAAKuyW,WAAWroW,oBAKvD,YAAA6oW,qBAAP,sBACEpkX,KAAKC,OAAO0zC,MAAM,yCAA0C3zC,KAAK6jX,aACjE7jX,KAAK2jX,eAAiB3jX,KAAK4iD,UAAU/9C,QAAO,SAAAjJ,GAC1C,SAAK4hB,MAAMolC,UAAU58C,MAAK,SAAAkB,GAAK,OAAAA,IAAMtL,EAAE2gB,QAGpC3gB,EAAE6iW,cAAwF,IAAzE7iW,EAAE6iW,YAAYljV,cAAclK,QAAQ,EAAKwyW,YAAYtoW,gBAEtE3f,EAAEu4D,OAA0E,IAAlEv4D,EAAEu4D,KAAK54C,cAAclK,QAAQ,EAAKwyW,YAAYtoW,oBAKxD,YAAA8oW,yBAAP,sBACErkX,KAAK0jX,cACF7+W,QAAO,SAAAqC,GAAK,SAAK48W,mBAAmB58W,EAAEqV,OACtCpV,SAAQ,SAAC03V,EAAUl1V,GAClB,EAAK1J,OAAO0zC,MAAM,wCAAyCkrT,EAAStiV,IAChE,EAAKiB,MAAMolC,UAAUswH,WAAU,SAAAhsK,GAAK,OAAAA,IAAM23V,EAAStiV,MAAM,GAC3D,EAAKiB,MAAMolC,UAAU1nD,KAAK2jW,EAAStiV,IAErC,EAAKonW,eAAezoX,KAAK2jW,GACzB,EAAKilB,mBAAmBjlB,EAAStiV,KAAM,EACvC,EAAKmnW,cAAcvsW,OAAO,EAAKusW,cAAcxwM,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOsiV,EAAStiV,MAAK,MAGvFvc,KAAKC,OAAO0zC,MAAM,+CAAgD3zC,KAAK0jX,gBAGlE,YAAAY,yBAAP,sBACEtkX,KAAK2jX,eACF9+W,QAAO,SAAAqC,GAAK,SAAK68W,mBAAmB78W,EAAEqV,OACtCpV,SAAQ,SAAC03V,EAAUl1V,GAClB,EAAK6T,MAAMolC,UAAUzrC,OAAO,EAAKqG,MAAMolC,UAAUswH,WAAU,SAAAhsK,GAAK,OAAAA,IAAM23V,EAAStiV,MAAK,GACpF,EAAKmnW,cAAcxoX,KAAK2jW,GACxB,EAAKklB,mBAAmBllB,EAAStiV,KAAM,EACvC,EAAKonW,eAAexsW,OAAO,EAAKwsW,eAAezwM,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOsiV,EAAStiV,MAAK,OAIpF,YAAAgoW,mBAAP,SAA0BtpQ,GAA1B,WAEE,GADAj7G,KAAKC,OAAO0zC,MAAM,+BAAgCsnE,IAC3B,IAAnBA,EAAsB,CACxB,IAAIhwE,EAAajrC,KAAK0jX,cAAczoQ,GAAe1+F,GACnDvc,KAAK8jX,mBAAmB74U,QAAsDrtC,IAAxCoC,KAAK8jX,mBAAmB74U,KAAoCjrC,KAAK8jX,mBAAmB74U,QAG1HjrC,KAAK0jX,cAAcv8W,SAAQ,SAAC03V,EAAUl1V,GACpC,EAAKm6W,mBAAmBjlB,EAAStiV,IAAM,EAAKynW,kBAM3C,YAAAQ,oBAAP,SAA2BvpQ,GAA3B,WAEE,GADAj7G,KAAKC,OAAO0zC,MAAM,gCAAiCsnE,IAC5B,IAAnBA,EAAsB,CACxB,IAAIhwE,EAAajrC,KAAK2jX,eAAe1oQ,GAAe1+F,GACpDvc,KAAK+jX,mBAAmB94U,QAAsDrtC,IAAxCoC,KAAK+jX,mBAAmB94U,KAAoCjrC,KAAK+jX,mBAAmB94U,QAG1HjrC,KAAK2jX,eAAex8W,SAAQ,SAAC03V,EAAUl1V,GACrC,EAAKo6W,mBAAmBllB,EAAStiV,IAAM,EAAK0nW,mBAKrC,YAAA7oQ,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,sCAEhD,OADAgE,KAAKC,OAAOE,KAAK,UACV,CAAP,EAAOH,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,KAAKwpR,IADrB,M,OACF,MAAO,CAAP,EAAO,U,mCAKf,sBAAI,sBAAO,C,IAAX,WACE,OAAQlmV,KAAK86V,qBAAqB19U,OAAO7C,c,gCAG9B,YAAAmiD,KAAb,SAAkBwpR,G,qBAAuBlqV,GAAO,W,oEAC9CgE,KAAKC,OAAOE,KAAK,QACZH,KAAKwd,MAAMjB,GAAZ,MACK,GAAMvc,KAAK86V,qBAAqB77V,OAAOe,KAAKwd,OAChDra,MAAK,SAAOsY,GAAuB,qC,yDAClCzb,KAAKwd,MAAMjB,GAAKd,EAASc,GAEzBvc,KAAK8iJ,aAAaxiJ,QAAQ,4BAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,oB,OAAzC,MAAO,CAAP,EAAO,U,OAEA,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,8BAA+B,CAAE+U,gBAAiB/d,KAAKwd,MAAMjB,M,OAAtG,MAAO,CAAP,EAAO,oBAIVtQ,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAd5B,MAAO,CAAP,EAAO,U,OAiBA,SAAMkD,KAAK86V,qBAAqBp+U,OAAO1c,KAAKwd,OAChDra,MAAK,SAAOsY,GAAuB,qC,yDAElCzb,KAAK8iJ,aAAaxiJ,QAAQ,6BAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,oB,OAAzC,MAAO,CAAP,EAAO,U,2BAGViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,kBAvLX,GADC,a,0DAID,GADC,a,2DAdU2nX,EAAiB,GAD7B,uB,uBAyBqD,mB,OAAA,IAApB,UAAoB,SACV,mBADU,OACV,IAAf,UAAe,SACN,mBADM,OACN,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC1C,mBAD0C,OAC1C,IAAN,oBAAM,YA5BbA,GAAb,I,2FCvBA/oX,EAAOD,QAAU,gxI,+iECcjB,aA2BE,WACUy9V,EACA4B,EACA5W,EACAp+U,EACAg9I,GALV,WACU,KAAAo2M,qBACA,KAAA4B,uBACA,KAAA5W,gBACA,KAAAp+U,SACA,KAAAg9I,eAvBF,KAAA02J,YAAsB,EAItB,KAAAl8R,WAAoC,IAAI,wBAGxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAK86V,qBAAqBhnV,KAAK9T,KAAKwqC,cAAexqC,KAAKsd,YAClEna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAgBPkD,KAAKC,OAAS,aAAWC,UAAU,qB,cA6DvC,OA1DgB,YAAA0Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACpEgE,KAAKC,OAAOE,KAAK,YACZmhB,MAAMlhB,EAAOoqC,iBAChBxqC,KAAKwqC,eAAiBpqC,EAAOoqC,e,WAInB,YAAArrC,KAAd,W,qBAAsBnD,GAAO,W,0DAEN,O,sBAAnB,EAAAgE,KAAmB,GAAMA,KAAKk5V,mBAAmB58U,QAAQtc,KAAKwqC,gB,OACvD,OADP,EAAK4K,YAAc,SACZ,GAAMp1C,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,OAGP,O,WAAO,CAAP,EAAOvkV,KAAK8iJ,aAAahmJ,MAAM,I,yBAItB,YAAAynV,SAAb,W,qBAAyBvoV,GAAO,W,6DAEvB,OADPgE,KAAKC,OAAOE,KAAK,YACV,GAAMH,KAAK86V,qBAAqBhnV,KAAK9T,KAAKwqC,cAAexqC,KAAKsd,YAClEna,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAAz9N,OAAd,SAAqB50F,G,qBAA0B/hB,GAAO,W,kDAE7C,OADPgE,KAAKC,OAAO0zC,MAAM,iCAAkC51B,GAC7C,GAAM/d,KAAK8F,OAAOkD,gBAAgBhJ,KAAK29I,UAAW,CAAE5/H,gBAAiBA,K,OAA5E,MAAO,CAAP,EAAO,kBAGI,YAAAjB,OAAb,SAAoBP,EAAY7e,G,qBAAe1B,GAAO,W,6DAC7C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IACNg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK86V,qBAAqBh+U,OAAOP,GAC3CpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOA,KACnF,EAAKe,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,uEAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAzET,GADC,W,6DAID,GADC,W,yDAID,GADC,W,2DARU4nX,EAAiB,GAD7B,uB,uBA6BiD,mB,OAAA,IAAlB,UAAkB,SACI,mBADJ,OACI,IAApB,UAAoB,SACd,mBADc,OACd,IAAb,kCAAa,SACd,mBADc,OACd,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,YAhCzBA,GAAb,I,mqBCLA,aAKE,WACU3kX,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,gC,MAwBvC,OArBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,wBACVoD,KAAM,mBAKR,CACEgF,MAAO,kCACPpI,SAAU,gCACVoD,KAAM,kCAxBDotW,EAA4B,GADxC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,uFCTApvW,EAAOD,QAAU,uD,0ECAjBC,EAAOD,QAAU,yvF,6FCAjB,sF,qFCAAC,EAAOD,QAAU,sT,yqBCSjB,aAKE,WACUsE,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,2C,MAwBvC,OArBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,iCACVoD,KAAM,sBAKR,CACEgF,MAAO,6BACPpI,SAAU,qCACVoD,KAAM,mCACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,8CA1BfskX,EAAuC,GADnD,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,mGCTAjpX,EAAOD,QAAU,uD,8qECkBjB,aAkBE,WACUyoV,EACA6c,EACAjG,EACAh1V,EACAg9I,GALV,WACU,KAAAohM,gBACA,KAAA6c,2BACA,KAAAjG,uBACA,KAAAh1V,SACA,KAAAg9I,eAZF,KAAA02J,YAAsB,EAEtB,KAAAorE,cAA+B,IAAI,IAEnC,KAAAtnW,WAAoC,IAAI,wBAqCxC,KAAA0vO,QAAU,WAEhB,OADA,EAAK/sP,OAAOE,KAAK,cACV,EAAK4gW,yBAAyBjtV,KAAK,EAAKiK,gBAAiB,EAAKT,aA7BrEtd,KAAKC,OAAS,aAAWC,UAAU,wB,cAkGvC,OA/FgB,YAAA0Y,SAAd,SAAuBxY,G,qBAAcpE,GAAO,W,kCACrCslB,MAAMlhB,EAAO2d,mBAChB/d,KAAK+d,iBAAmB3d,EAAO2d,iB,WAIrB,YAAA5e,KAAd,W,qBAAsBnD,GAAO,W,kDACpB,SAAMgE,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,kBAGK,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,gEAC3BgE,KAAK+d,gBAAL,Y,iBAEqB,O,sBAArB,EAAA/d,KAAqB,GAAMA,KAAK86V,qBAAqBx+U,QAAQtc,KAAK+d,kB,OACnD,OADf,EAAK6mW,cAAgB,SACN,GAAM5kX,KAAK+gW,yBAAyBjtV,KAAK9T,KAAK+d,gBAAiB/d,KAAKsd,a,cAA/E7B,EAAW,SACfzb,KAAKsd,WAAWoiU,UAAYjkU,EAASphB,KACrC2F,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,a,+BAGxCz/U,KAAK8iJ,aAAahmJ,MAAM,G,+BAUhB,YAAAuxO,KAAd,SAAmB7tO,G,qBAAyBxE,GAAO,W,6DAC1C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MAEK,GAAMj5C,KAAK+gW,yBAAyBrkV,OAAOlc,GAC/C2C,MAAK,gD,kCACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6B,aAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,U,mCANX,MAAO,CAAP,EAAO,kBAiBK,YAAAmC,OAAd,W,qBAAwBjD,GAAO,W,+DAItB,OAHHwE,EAAyB,IAAI,KAC5Bud,gBAAkB/d,KAAK+d,gBAErB,GAAM/d,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK+gW,yBAAyB9hW,OAAOuB,GAC/C2C,MAAK,SAAOqa,GAAuB,qC,kCAClChd,EAAK+b,GAAKiB,EAAMjB,GAChBvc,KAAKsd,WAAWoiU,UAAU57U,QAAQtD,GAClCR,KAAKsd,WAAWmiU,eAChBz/U,KAAK8iJ,aAAaxiJ,QAAQ,4B,aAG3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAoBK,YAAA61G,OAAd,SAAqBxnE,G,qBAA6BnvC,GAAO,W,kDAEhD,SAAMgE,KAAK8F,OAAOkD,gBAAgBhJ,KAAK29I,UAAW,CAAExyG,mBAAoBA,K,OAA/E,MAAO,CAAP,EAAO,kBAGK,YAAAruB,OAAd,SAAqBP,EAAY7e,G,qBAAe1B,GAAO,W,6DAC9C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IACNg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK+gW,yBAAyBjkV,OAAOP,GAC/CpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOA,KACnF,EAAKe,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaxiJ,QAAQ,iCAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBApGT,GADC,W,yDAID,GADC,W,+DAID,GADC,W,2DAVU+nX,EAAoB,GADhC,uB,uBAoBuC,mB,OAAA,IAAb,kCAAa,SACsB,mBADtB,OACsB,IAAxB,UAAwB,SACR,mBADQ,OACR,IAApB,UAAoB,SAC5B,mBAD4B,OAC5B,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,YAvBzBA,GAAb,I,iHClBAnpX,EAAOD,QAAU,g7F,s9DCSjB,aAME,WACU6lD,EACAokS,GADA,KAAApkS,mBACA,KAAAokS,8BANF,KAAAloU,MAA0B,IAAI,IAQpCxd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,yB,QA+BvC,OA3BgB,YAAA0Y,SAAd,SAAuB4E,G,qBAA0BxhB,GAAO,W,kCAEtDgE,KAAKC,OAAO0zC,MAAM,wBAAyBn2B,GAC3Cxd,KAAKwd,MAAQA,EACbxd,KAAK2lV,2B,WAGC,YAAAA,yBAAR,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,QAAQpyK,YAAY,4DAA4DwkD,WACvFn+K,GAAGrtC,KAAKwd,QAGC,YAAA49F,OAAd,W,qBAAwBp/G,GAAO,W,sCAC7B,MAAO,CAAP,EAAOgE,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKD,YAAAA,KAAd,W,qBAAsB1gE,GAAO,W,kDACpB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAzCEk/S,EAAqB,GADjC,uB,uBAQ6C,mB,OAAA,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,YARvDA,GAAb,K,kHCTAppX,EAAOD,QAAU,glC,iqBCUjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,4B,MAoBvC,OAjBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,8BACVoD,KAAM,4BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,+DACpB+H,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBygD,kBAvB5B43G,EAA6B,GADzC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,8FCVArpX,EAAOD,QAAU,+G,qhECajB,aAUE,WACUqnJ,EACAkiO,EACAC,EACA/gC,GAHA,KAAAphM,eACA,KAAAkiO,cACA,KAAAC,4BACA,KAAA/gC,gBANF,KAAA1mU,MAA4B,IAAI,IAQtCxd,KAAKC,OAAS,aAAWC,UAAU,0B,YAwEvC,OApEgB,YAAA0Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,yFAI7DslB,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKie,WAAa7d,EAAO6d,UACpBqD,MAAMlhB,EAAOkkV,mBAChBtkV,KAAKie,WAAa7d,EAAOkkV,iBAE3BtkV,KAAKilX,0BAA0B7nW,OAAO87B,iBAAmBl5C,KAAKie,UACzDqD,MAAMlhB,EAAOy2V,QAAd,OACF,EAAA72V,KAAY,GAAMA,KAAKglX,YAAY1oW,SAASlc,EAAOy2V,W,OACtC,OADb,EAAKh8U,KAAO,SACZ,EAAA7a,KAAa,GAAMA,KAAKilX,0BAA0B3oW,SAASlc,EAAOy2V,S,cAAlE,EAAKr5U,MAAQ,S,aAEbxd,KAAKC,OAAO0zC,MAAM,iC,sDAKtB3zC,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAooX,aAAd,W,qBAA8BlpX,GAAO,W,6DAC5B,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,MACV2qJ,YAAW,SAAOj9I,GAA2B,qC,iCAC9C,OAAKA,EAASw9B,aASL,CAAP,GAAO,GARHx9B,EAASxR,QACP8F,EAA2B0L,EAASxR,OACxCjK,KAAKC,OAAO0zC,MAAM,gBAAiB5jC,GAC5B,CAAP,EAAOA,IAEA,CAAP,GAAO,a,OATb,MAAO,CAAP,EAAO,kBAiBT,sBAAI,sBAAO,C,IAAX,WACE,OAAQ/P,KAAKilX,0BAA0B7nW,OAAO7C,c,gCAGlC,YAAA9N,SAAd,W,qBAA0BzQ,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAKklX,eACf/hX,MAAK,SAAO4M,GAAe,qC,yDACtBA,EACK,GAAM/P,KAAKilX,0BAA0Bx4W,SAASzM,KAAK6a,KAAK0B,KAD7D,M,OACF,MAAO,CAAP,EAAO,U,OAGP,oBAGHpZ,MAAK,SAAOqa,GAAyB,qC,kCAChCA,IACFxd,KAAKwd,MAAQA,EACbxd,KAAK8iJ,aAAaxiJ,QAAQ,4E,aAG7B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAhB5B,MAAO,CAAP,EAAO,kBAnEEqoX,EAAsB,GADlC,uB,uBAYqC,mB,OAAA,IAAZ,UAAY,SACF,mBADE,OACF,IAAX,UAAW,SAC4B,mBAD5B,OAC4B,IAAzB,UAAyB,SACxB,mBADwB,OACxB,IAAb,kCAAa,YAd3BA,GAAb,I,yGCbAzpX,EAAOD,QAAU,suE,mqBCQjB,aAKE,WACUsE,GAAA,KAAAA,OACRC,KAAKC,OAAS,aAAWC,UAAU,qC,MAmBvC,OAhBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,cACVoD,KAAM,8BAGR,CACEgF,MAAO,+BACPpI,SAAU,sCACVoD,KAAM,wCAtBD0nX,EAAiC,GAD7C,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,mGCRA1pX,EAAOD,QAAU,uD,2gECcjB,aA0BE,WACUm/D,EACAvgD,EACA2qW,EACAliO,GAJV,WACU,KAAAloF,QACA,KAAAvgD,KACA,KAAA2qW,cACA,KAAAliO,eA3BF,KAAA1iJ,OAAc,GAKd,KAAAkd,WAAoC,IAAI,wBAKxC,KAAAivU,UAAoB,EAEpB,KAAAv/F,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAKglX,YAAYlxW,KAAK9T,KAAKsd,YACrCna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAePkD,KAAKC,OAAS,aAAWC,UAAU,8BAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,YAuD5B,OApDgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,yDAEhEgE,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAIJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,oEACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OAEFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE1Bje,KAAKI,OAAOkkV,iBAAmD,WAAhCtkV,KAAKI,OAAOkkV,gBAC7CtkV,KAAKie,UAAY,KAETqD,MAAMthB,KAAKI,OAAOkkV,mBAC1BtkV,KAAKie,WAAaje,KAAKI,OAAOkkV,iBAG5BtkV,KAAKie,WAEPje,KAAKglX,YAAY5nW,OAAO87B,iBAAmBl5C,KAAKie,UAEhDje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3Dje,KAAKusV,SAEE,GAAMvsV,KAAKukV,aARhB,O,OAQF,MAAO,CAAP,EAAO,U,yBAKC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAtFEi1C,EAA0B,GADtC,uB,uBA4B8B,mB,OAAA,IAAZ,UAAY,SACA,mBADA,OACA,IAAf,sCAAe,SACK,mBADL,OACK,IAAX,UAAW,SACE,mBADF,OACE,IAAZ,UAAY,YA9BzBA,GAAb,I,yFCdA3pX,EAAOD,QAAU,8nE,08DCYjB,aAME,WACU6lD,EACAwhG,EACA4iM,EACAs/B,GAHA,KAAA1jU,mBACA,KAAAwhG,eACA,KAAA4iM,8BACA,KAAAs/B,cAPF,KAAAxnW,MAA4B,IAAI,IAStCxd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,2BACnCF,KAAK2lV,2B,YAyCT,OAtCS,YAAA/sU,SAAP,WACE5Y,KAAKC,OAAO0zC,MAAM,aAGZ,YAAAgyS,yBAAR,WACE,kBACGvM,OAAO,YAAYpyK,YAAY,mDAAmDwkD,WAClFn+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,W,qBAAuBp/G,GAAO,W,6DACrB,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAKquC,YADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAQT,sBAAI,sBAAO,C,IAAX,WACE,OAAQruC,KAAKglX,YAAY5nW,OAAO7C,c,gCAIrB,YAAA8zB,SAAb,W,qBAAyBryC,GAAO,W,6DACvB,SAAMgE,KAAKglX,YAAY32U,SAASruC,KAAKwd,OACzCra,MAAK,SAAOqa,GAAc,qC,kDAMlB,OALHA,EACFxd,KAAK8iJ,aAAaxiJ,QAAQ,gEAE1BN,KAAK8iJ,aAAahmJ,MAAM,8DAEnB,GAAMkD,KAAKshD,iBAAiBskB,GAAGpoD,I,OAAtC,MAAO,CAAP,EAAO,oBAERvR,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,kBA5CEwoX,EAAuB,GADnC,uB,uBAQ6C,mB,OAAA,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAChC,mBADgC,OAChC,IAAX,UAAW,YAVvBA,GAAb,K,uFCZA5pX,EAAOD,QAAU,4gC,kiECqBjB,aA0BE,WACUm/D,EACAoqT,EACA9gC,EACAphM,EAEAqzM,GANV,WACU,KAAAv7R,QACA,KAAAoqT,cACA,KAAA9gC,gBACA,KAAAphM,eAEA,KAAAqzM,oBA7BF,KAAA/1V,OAAc,GAKd,KAAAkd,WAAoC,IAAI,wBAKxC,KAAAivU,UAAoB,EAEpB,KAAAv/F,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAKglX,YAAY/1H,YAAYjvP,KAAKsd,YAC5Cna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAiBPkD,KAAKC,OAAS,aAAWC,UAAU,YAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,cA+E5B,OA3EgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,yDAEhEgE,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAKJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,oEACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OAEFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE1Bje,KAAKI,OAAOkkV,iBAAmD,WAAhCtkV,KAAKI,OAAOkkV,gBAC7CtkV,KAAKie,UAAY,KAETqD,MAAMthB,KAAKI,OAAOkkV,mBAC1BtkV,KAAKie,WAAaje,KAAKI,OAAOkkV,iBAG5BtkV,KAAKie,WAEPje,KAAKglX,YAAY5nW,OAAO87B,iBAAmBl5C,KAAKie,UAEhDje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3Dje,KAAKusV,UAAW,EAET,GAAMvsV,KAAKukV,aARhB,O,OAQF,MAAO,CAAP,EAAO,U,yBAKC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGI,YAAA1zT,OAAb,SAAoBlc,G,qBAAaxE,GAAO,W,6DAC/B,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAKioD,WACXiwG,YAAW,SAAOj9I,GAA2B,qC,6DACzCA,EAASw9B,aAAV,Y,iBAEA,O,sBAAA,GAAMj5C,KAAKglX,YAAY71H,YAAY3uP,I,cAAnC,SAEIikV,EAA6BzkV,KAAKsd,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAO/b,EAAK+b,MACxFvc,KAAKsd,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrDzkV,KAAKsd,WAAWmiU,eAEhBz/U,KAAK8iJ,aAAaxiJ,QAAQ,uD,+BAE1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCAd9B,MAAO,CAAP,EAAO,kBA9FEyoX,EAAe,GAD3B,uB,uBA4B8B,mB,OAAA,IAAZ,UAAY,SACK,mBADL,OACK,IAAX,UAAW,SACI,mBADJ,OACI,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SAEU,mBAFV,OAEU,IAAjB,UAAiB,YAhCnCA,GAAb,I,oFCrBA7pX,EAAOD,QAAU,iZ,8DCAjBC,EAAOD,QAAU,46D,09DCejB,aAaE,WACUsvT,EACAwpC,EACAzxM,EACAxhG,EACAokS,GAJA,KAAA36B,qBACA,KAAAwpC,eACA,KAAAzxM,eACA,KAAAxhG,mBACA,KAAAokS,8BAER1lV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,0B,cAkEvC,OA9De,YAAA0Y,SAAb,SAAsBpY,G,qBAAaxE,GAAO,W,0DACxCgE,KAAKC,OAAO0zC,MAAM,WAAYnzC,GAC9BR,KAAKwlX,aAAehlX,EACpBR,KAAKwd,MAAQ,IAAI,I,iBAEC,O,sBAAhB,EAAAxd,KAAgB,GAAMA,KAAK+qT,mBAAmBxtS,U,cAA9C,EAAK9B,SAAW,SAEhBzb,KAAKqvV,iBAAmBrvV,KAAKyb,SAAS5W,QAAO,SAAAqC,GAAK,OAAAA,EAAEsiC,QAAU,IAAKmmT,mBAEnE3vV,KAAKqvV,iBAAiB59U,MAAK,SAACC,EAAGC,GAAM,OAAAD,EAAEhU,KAAKmkW,cAAclwV,EAAEjU,SAC5DsC,KAAK2lV,2B,+BAEL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIpB,YAAA6oV,yBAAR,WACE,kBACGvM,OAAO,qBAAqBpyK,YAAY,2CAA2CwkD,WACnF4tH,OAAO,eAAepyK,YAAY,oCAAoCwkD,WACtE4tH,OAAO,mBAAmBpyK,YAAY,yCAAyCwkD,WAC/E4tH,OAAO,aAAapyK,YAAY,kCAAkCwkD,WAClE4tH,OAAO,WAAWpyK,YAAY,sCAAsCwkD,WACpEn+K,GAAGrtC,KAAKwd,QAGA,YAAAgzV,cAAb,W,qFACExwW,KAAKmiD,WAAaniD,KAAKyb,SAAS5W,QAAO,SAAAqC,GAAK,OAAAA,EAAEw5J,UAAY,EAAKljJ,MAAMg3L,qBACrEx0M,KAAKmiD,WAAW1wC,MAAK,SAACC,EAAGC,GAAM,OAAAD,EAAEhU,KAAKmkW,cAAclwV,EAAEjU,S,WAG3C,YAAA+nX,kBAAb,W,qFACEzlX,KAAK0lX,gBAAkB1lX,KAAKyb,SAAS5W,QAAO,SAAAqC,GAAK,OAAAA,EAAEsiC,QAAU,IAAKs6S,QAAU58U,EAAEw5J,UAAY,EAAKljJ,MAAMH,eACrGrd,KAAK0lX,gBAAgBj0W,MAAK,SAACC,EAAGC,GAAM,OAAAD,EAAEhU,KAAKmkW,cAAclwV,EAAEjU,S,WAGhD,YAAAioX,YAAb,W,qFACE3lX,KAAKm1J,UAAYn1J,KAAKyb,SAAS5W,QAAO,SAAAqC,GAAK,OAAAA,EAAEsiC,QAAU,IAAKo8U,UAAY1+W,EAAEw5J,UAAY,EAAKljJ,MAAMi3L,mBACjGz0M,KAAKm1J,UAAU1jJ,MAAK,SAACC,EAAGC,GAAM,OAAAD,EAAEhU,KAAKmkW,cAAclwV,EAAEjU,S,WAG1C,YAAAmoX,UAAb,W,gGACgB,OAAd,EAAA7lX,KAAc,GAAMA,KAAKu0V,aAAal/I,eAAer1M,KAAKwd,MAAMS,Y,cAAhE,EAAKw3F,OAAS,SACdz1G,KAAKy1G,OAAOhkG,MAAK,SAACC,EAAGC,GAAM,OAAAD,EAAEhU,KAAKmkW,cAAclwV,EAAEjU,S,YAGvC,YAAA09G,OAAb,W,qBAAuBp/G,GAAO,W,sCAC5B,MAAO,CAAP,EAAOgE,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,sEACvCA,EAAO4oM,OACT34M,KAAKwlX,aAAa9wK,QAAU10M,KAAKwd,MAAMk3L,QACvC10M,KAAKwlX,aAAavnW,UAAYje,KAAKwd,MAAMS,UACrC6nW,EAAc9lX,KAAKm1J,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAKiB,MAAMS,aAC9Dje,KAAKwlX,aAAatlO,SAAW4lO,EAAYC,aAClC,GAAM/lX,KAAK08D,SALhB,M,OAKF,MAAO,CAAP,EAAO,U,mCAKF,YAAAA,KAAb,W,qBAAqB1gE,GAAO,W,kDACnB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAvFEogT,EAAsB,GADlC,uB,uBAeiD,mB,OAAA,IAAlB,UAAkB,SACZ,mBADY,OACZ,IAAZ,UAAY,SACA,mBADA,OACA,IAAZ,UAAY,SACQ,mBADR,OACQ,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,YAlBvDA,GAAb,K,uFCfAtqX,EAAOD,QAAU,s5F,mnBCUjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,mB,MAoBvC,OAjBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,cACVoD,KAAM,aACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,+BACpB+H,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBygD,kBAvB5B84G,EAAe,GAD3B,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,gECVAvqX,EAAOD,QAAU,+d,6DCAjBC,EAAOD,QAAU,0a,u9DCqBjB,aAgBE,WACUm/D,EACA90D,EACAg9I,EACA4iM,EACAs/B,EACAzwB,EACA0T,GANA,KAAArtS,QACA,KAAA90D,SACA,KAAAg9I,eACA,KAAA4iM,8BACA,KAAAs/B,cACA,KAAAzwB,eACA,KAAA0T,iBAhBF,KAAAzqV,MAAc,IAAI,IAClB,KAAAwuU,iBAA2B,EAkBjChsV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,YAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,kBAkG5B,OA9Fe,YAAA+H,SAAb,SAAsBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,qEAEnEgE,KAAKC,OAAO0zC,MAAM,gBAAiBvzC,EAAOy2V,Q,8CAInCv1U,MAAMlhB,EAAO6d,WAAd,OAEFje,KAAKie,WAAa7d,EAAO6d,UAEpBqD,MAAMlhB,EAAOkkV,mBAChBtkV,KAAKie,WAAa7d,EAAOkkV,iBAG3BtkV,KAAKglX,YAAY5nW,OAAO87B,iBAAmBl5C,KAAKie,UAEhDje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3D,EAAAje,KAAc,GAAMA,KAAKu0V,aAAah3U,W,OAEtB,OAFhB,EAAKk4F,OAAS,SAEd,EAAAz1G,KAAgB,GAAMA,KAAKioW,eAAe1qV,U,cAA1C,EAAK4qV,SAAW,SAEX7mV,MAAMlhB,EAAOy2V,QAAd,OACF,EAAA72V,KAAa,GAAMA,KAAKglX,YAAY1oW,SAASlc,EAAOy2V,U,cAApD,EAAKr5U,MAAQ,S,aAEbxd,KAAKwd,MAAM+1U,UAAY,IAAUhO,Q,iBAEnCvlV,KAAK2lV,2B,sDAIP3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIpB,YAAA6oV,yBAAR,WACE,kBACGvM,OAAO,aAAapyK,YAAY,qCAAqCwkD,WACrE4tH,OAAO,YAAYpyK,YAAY,oCAAoCwkD,WACnE4tH,OAAO,SAASpyK,YAAY,gCAAgCn8F,QAAQ2gJ,WACpE4tH,OAAO,WAAWpyK,YAAY,mCAAmCwkD,WACjE4tH,OAAO,aAAapyK,YAAY,qCAAqCwkD,WACrEn+K,GAAGrtC,KAAKwd,QAGC,YAAA49F,OAAd,SAAqB4wO,G,qBAA2BhwV,GAAO,W,sCAErD,OADAgE,KAAKgsV,gBAAkBA,EAChB,CAAP,EAAOhsV,KAAK01U,qBAAqBrnS,WAC9BlrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAKf,sBAAI,sBAAO,C,IAAX,WACE,OAAQ18D,KAAKglX,YAAY5nW,OAAO7C,c,gCAGpB,YAAAmiD,KAAd,W,qBAAsB1gE,GAAO,W,oEACtBgE,KAAKwd,MAAMjB,GAAZ,MACK,GAAMvc,KAAKglX,YAAY/lX,OAAOe,KAAKwd,OACvCra,MAAK,SAAOqa,GAAW,qC,yDACtBxd,KAAK8iJ,aAAaxiJ,QAAQ,4BAErBN,KAAKgsV,gBAAN,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,U,OAAzC,MAAO,CAAP,EAAO,U,OAEA,SAAMhJ,KAAK8F,OAAOkD,gBAAgB,oBAAqB,CAAE6tV,OAAQr5U,EAAMjB,M,OAA9E,MAAO,CAAP,EAAO,oBAIVtQ,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAZ5B,MAAO,CAAP,EAAO,U,OAeA,SAAMkD,KAAKglX,YAAYtoW,OAAO1c,KAAKwd,OACvCra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6BACrBN,KAAKgsV,gBAAN,MACK,GAAMhsV,KAAK8F,OAAOkD,gBAAgB,U,OAAzC,MAAO,CAAP,EAAO,U,2BAGViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,kBAcX,YAAAmR,4BAAA,WACE,OAAO,qBAAmBlH,SA9HjBm/W,EAAQ,GADpB,uB,uBAkB8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAChC,mBADgC,OAChC,IAAX,UAAW,SACE,mBADF,OACE,IAAZ,UAAY,SACI,mBADJ,OACI,IAAd,UAAc,YAvB7BA,GAAb,I,yECrBAxqX,EAAOD,QAAU,g0F,+xECgCjB,aA+BE,WACUsE,EACA66D,EACAoqT,EACA9gC,EACAphM,EAEAqzM,EACAmV,EACA5kG,GATV,WACU,KAAA3mQ,OACA,KAAA66D,QACA,KAAAoqT,cACA,KAAA9gC,gBACA,KAAAphM,eAEA,KAAAqzM,oBACA,KAAAmV,qBACA,KAAA5kG,gBArCF,KAAAtmQ,OAAc,GAOd,KAAAkd,WAAoC,IAAI,wBAKxC,KAAAivU,UAAoB,EACrB,KAAAiK,aAAiC,IAAiBlnG,KAClD,KAAA62H,aAAuB,EACvB,KAAA/mG,iBAAmB,IAElB,KAAApyB,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAKglX,YAAYlxW,KAAK9T,KAAKsd,YACrCna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAoBPkD,KAAKC,OAAS,aAAWC,UAAU,YAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,oBAyN5B,OArNgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,yDAEhEgE,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAKJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,oEACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OAEFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE1Bje,KAAKI,OAAOkkV,iBAAmD,WAAhCtkV,KAAKI,OAAOkkV,gBAC7CtkV,KAAKie,UAAY,KAETqD,MAAMthB,KAAKI,OAAOkkV,mBAC1BtkV,KAAKie,WAAaje,KAAKI,OAAOkkV,iBAG5BtkV,KAAKie,WAEPje,KAAKglX,YAAY5nW,OAAO87B,iBAAmBl5C,KAAKie,UAEhDje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3Dje,KAAKusV,UAAW,EAEhB,GAAMvsV,KAAK22V,sBART,O,OAUK,OAFP,SAEO,GAAM32V,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yBAKC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAA3yT,YAAd,SAA0Bjd,G,qBAAaxE,GAAO,W,6DACrC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAKioD,WAEXiwG,YAAW,SAAOj9I,GAA2B,qC,oEACvCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKglX,YAAYvnW,YAAYjd,EAAK+b,IAC5CpZ,MAAK,WAEJ,OAAQ3C,EAAK+yV,WACX,KAAK,IAAUE,OACbjzV,EAAK+yV,UAAY,IAAUG,SAC3B,MACF,KAAK,IAAUA,SACblzV,EAAK+yV,UAAY,IAAUE,OAK/B,EAAK3wM,aAAaxiJ,QAAQ,gCAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAhB5B,MAAO,CAAP,EAAO,U,mCANb,MAAO,CAAP,EAAO,kBA4BK,YAAA85V,cAAd,SAA4BC,G,qBAAiB76V,GAAO,W,kDAC3C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOq5U,K,OAFT,MAAO,CAAP,EAAO,kBAMK,YAAAptT,wBAAd,SAAsCltB,G,qBAAavgB,GAAO,W,6DACjD,SAAMgE,KAAKglX,YAAYv7U,wBAAwBltB,GACnDpZ,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,yDAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBASK,YAAAggB,OAAd,SAAqBtc,G,qBAAaxE,GAAO,W,+DAEzB,OAAd,EAAAgE,KAAc,GAAMA,KAAK0mQ,cAAcL,YAAY7lQ,EAAK+b,K,OAGjD,OAHP,EAAK04B,OAAS,SACdj1C,KAAKvC,QAAUuC,KAAKD,KAAKM,GAAG,2CAA2C0G,QAAQ,MAAO/G,KAAKi1C,OAAOw2T,OAAOzsV,YAElG,GAAMhf,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAKi1C,OAAOw2T,OAAS,EAAIjrW,EAAKioD,SAAWzoD,KAAKvC,QAAU+C,EAAKioD,WACnEiwG,YAAW,SAACj9I,GACRA,EAASw9B,cACZ,EAAK+rU,YAAYloW,OAAOtc,EAAK+b,IAC1BpZ,MAAK,gD,wCACAshV,EAA6BzkV,KAAKsd,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ7Q,EAAK+b,GAAGyC,YACrGhf,KAAKsd,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrDzkV,KAAKsd,WAAWmiU,eAChBz/U,KAAK8iJ,aAAaxiJ,QAAQ,8B,aAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,U,OAbhC,MAAO,CAAP,EAAO,kBAmBK,YAAAspX,kBAAd,SAAgC5lX,G,qBAAaxE,GAAO,W,6DAC3C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,qEACzCA,EAASw9B,aAAV,Y,iBAGwB,O,sBAAA,GAAMj5C,KAAK0mQ,cAAcnpP,U,cAA7C6vV,EAAoB,UACpBiZ,EAAajZ,EAAQvoW,QAAO,SAAAqC,GAAK,OAAAA,EAAE2vV,QAAUr2V,EAAK+b,OACxC3hB,OAAS,GACjBkZ,EAAO,GACPy5V,EAAO,IAAI,KACfA,EAAO,IAAI,KACNt4T,OAAO8uC,OAASsiS,EAAW,GAAG5a,OACnC8B,EAAKC,aAAehtW,EAAK+b,GACzBgxV,EAAKE,aAAe,EAEpBF,EAAKnS,YAAcp7V,KAAKD,KAAKM,GAAG,6DAA6D0G,QAAQ,MAAO/G,KAAK6Q,MAAM6kJ,cAAcxrG,UAAUnjD,QAAQ,MAAMvG,EAAK0pD,UAAUnjD,QAAQ,MAAMvG,EAAK0/I,UAE/LqtN,EAAKt4T,OAAO63T,0BAA2B,EACvCh5V,EAAK5Y,KAAKqyW,GACV,GAAMvtW,KAAKsrW,mBAAmB3zM,SAAS7jJ,KAZtC,M,OAYD,S,iBAEF,SAAM9T,KAAKm2V,kBAAkBvrC,kBAAkBpqT,I,cAA/C,SACIikV,EAA6BzkV,KAAKsd,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ7Q,EAAK+b,GAAGyC,YACrGhf,KAAKsd,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrDzkV,KAAKsd,WAAWmiU,eAChBz/U,KAAK8iJ,aAAaxiJ,QAAQ,6B,+BAE1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCA7B9B,MAAO,CAAP,EAAO,kBAmCK,YAAAwpX,cAAd,SAA4B9lX,G,qBAAaxE,GAAO,W,6DACvC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAKioD,WACXiwG,YAAW,SAAOj9I,GAA2B,qC,6DACzCA,EAASw9B,aAAV,Y,iBAGkB,O,sBAAA,GAAMj5C,KAAKm2V,kBAAkBv8K,QAAQp5K,I,cAArC,SACdikV,EAA6BzkV,KAAKsd,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ7Q,EAAK+b,GAAGyC,YACrGhf,KAAKsd,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrDzkV,KAAKsd,WAAWmiU,eAChBz/U,KAAK8iJ,aAAaxiJ,QAAQ,4B,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCAd9B,MAAO,CAAP,EAAO,kBAoBI,YAAAg6V,YAAb,W,qBAA4B96V,GAAO,W,wDAI/B,O,uBAFAgE,KAAKmmX,aAAc,EACnBnmX,KAAKw2V,aAAe,IAAiBO,WACrC,GAAM/2V,KAAKglX,YAAY51H,kB,cAAvB,S,+BAEApvP,KAAK8iJ,aAAahmJ,MAAM,GACxBkD,KAAKw2V,aAAe,IAAiBlnG,K,oBAErCtvP,KAAKmmX,aAAc,E,6BAIV,YAAAnvB,eAAb,W,qBAA+Bh7V,GAAO,W,0DAEtB,O,sBAAA,GAAMgE,KAAKglX,YAAYz1H,wB,cAA7B9mP,EAAM,WAEV9I,OAAO87C,KAAKhzC,EAAK,U,+BAGnBzI,KAAK8iJ,aAAahmJ,MAAM,G,+BAIf,YAAA65V,kBAAb,W,qBAAkC36V,GAAO,W,wDAEjB,O,sBAApB,EAAAgE,KAAoB,GAAMA,KAAKglX,YAAY31H,mB,cAA3C,EAAKmnG,aAAe,S,6BAEpBx2V,KAAKw2V,aAAe,IAAiBlnG,K,+BAlQ9Bi3H,EAAQ,GADpB,uB,uBAiCqB,mB,OAAA,IAAJ,gBAAI,SACS,mBADT,OACS,IAAZ,UAAY,SACK,mBADL,OACK,IAAX,UAAW,SACI,mBADJ,OACI,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SAEU,mBAFV,OAEU,IAAjB,UAAiB,SACE,mBADF,OACE,IAAlB,UAAkB,SACV,mBADU,OACV,IAAb,UAAa,YAxC3BA,GAAb,I,uqBCvBA,aAKE,WACUxmX,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBACRpsN,KAAKC,OAAS,aAAWC,UAAU,uB,QA2CvC,OAxCE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,cACVoD,KAAM,QACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB0oM,UAClE3lQ,MAAOtH,KAAKD,KAAKM,GAAG,iCAGtB,CACEqC,MAAO,eACPpI,SAAU,sBACVoD,KAAM,qBAKR,CACEgF,MAAO,eACPpI,SAAU,sBACVoD,KAAM,sBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,kCAEtB,CACEqC,MAAO,eACPpI,SAAU,qBACVoD,KAAM,eACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBmnM,kBAClEpkQ,MAAOtH,KAAKD,KAAKM,GAAG,wCAEtB,CACEqC,MAAO,6BACPpI,SAAU,2CACVoD,KAAM,+BA/CDw5V,EAAmB,GAD/B,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,mECTAx7V,EAAOD,QAAU,8M,wDCAjBC,EAAOD,QAAU,y8J,45DCQjB,aAOE,WACUupX,EACA1jU,EACAwhG,GAFA,KAAAkiO,cACA,KAAA1jU,mBACA,KAAAwhG,eAER9iJ,KAAKC,OAAS,aAAWC,UAAU,sB,UAqBvC,OAjBe,YAAA0Y,SAAb,SAAsBi+U,G,qBAAiB76V,GAAO,W,0DAC5CgE,KAAKC,OAAO0zC,MAAM,WAAYkjT,G,iBAGX,O,sBAAjB,EAAA72V,KAAiB,GAAMA,KAAKglX,YAAY/6S,iBAAiB4sR,I,cAAzD,EAAK2vB,UAAY,S,+BAEjBxmX,KAAK8iJ,aAAahmJ,MAAM,G,+BAIpB,YAAA8sH,MAAR,WACM5pH,KAAKymX,uBACPzmX,KAAKymX,sBAAsB78P,SA5BpB88P,EAAkB,GAD9B,uB,uBASmC,mB,OAAA,IAAX,UAAW,SACU,mBADV,OACU,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,YAVzBA,GAAb,K,mFCRAhrX,EAAOD,QAAU,+tC,64DCSjB,aASE,WACUgrV,GAAA,KAAAA,uBANF,KAAArmV,OAAc,GAOpBJ,KAAKC,OAAS,aAAWC,UAAU,kB,MAavC,OAVgB,YAAA0Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,+DACpEgE,KAAKI,OAASA,EAETkhB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACAje,KAAKie,WAAaje,KAAKI,OAAO6d,UAC9B,EAAAje,KAAqB,GAAMA,KAAKymV,qBAAqBnqU,QAAQtc,KAAKie,a,OAAlE,EAAK42U,cAAgB,SACrB70V,KAAKqkV,eAAiBrkV,KAAK60V,cAAcn2U,QAAQgiJ,SACjD1gK,KAAKI,OAAOikV,eAAiBrkV,KAAKqkV,e,mCAjBxC,GADC,W,sDAHUsiC,EAAc,GAD1B,uB,uBAWqD,mB,OAAA,IAApB,UAAoB,YAVzCA,GAAb,I,gFCTAjrX,EAAOD,QAAU,qU,ilBCIjB,aAGE,WAAoB6lD,GAAA,KAAAA,mB,MAMtB,OAHS,YAAA1oC,SAAP,SAAgBlb,GACdsC,KAAKtC,KAAOA,GAPHkpX,EAAsB,GADlC,uB,uBAIuD,mB,OAAA,IAAhB,wCAAgB,YAH3CA,GAAb,I,6DCJAlrX,EAAOD,QAAU,ypB,y6DCQjB,aAIE,WACU6lD,EACAulU,EACA/jO,EACA/iJ,GAHA,KAAAuhD,mBACA,KAAAulU,oBACA,KAAA/jO,eACA,KAAA/iJ,OAPH,KAAA+mX,eAAgC,KAChC,KAAAC,gBAAiC,K,YAyC1C,OA/Be,YAAAnuW,SAAb,SAAsB4E,G,kGAED,O,sBAAA,GAAMxd,KAAK6mX,kBAAkB30N,kBAAkB10I,I,cAA1D/B,EAAW,SACjBzb,KAAK8mX,eAAiBrrW,EACtBzb,KAAK+mX,gBAAkB,K,+BAEvB/mX,KAAK8mX,eAAiB,KACtB9mX,KAAK+mX,gBAAkB,EAAQ/mX,KAAKD,KAAKM,GAAG,GAASL,KAAKD,KAAKM,GAAG,gD,+BAIzD,YAAA2mX,mBAAb,W,oGACMhnX,KAAK8mX,eAAL,Y,8CAEI3tU,WAAcA,UAAkB+6K,WAA+D,mBAA1C/6K,UAAkB+6K,UAAU+yJ,UACnF,GAAO9tU,UAAkB+6K,UAAU+yJ,UAAUjnX,KAAK8mX,iBADhD,M,cACF,S,cAEM/nW,EAAQ1iB,SAASC,cAAc,UAC/BsC,MAAQoB,KAAK8mX,eACnBzqX,SAAS8e,KAAKpd,YAAYghB,GAC1BA,EAAM4zF,SACNt2G,SAASg0O,YAAY,QACrBh0O,SAAS8e,KAAKomD,YAAYxiD,G,wBAE5B/e,KAAK8iJ,aAAaxiJ,QAAQN,KAAKD,KAAKM,GAAG,yB,6BAEvCL,KAAK8iJ,aAAahmJ,MAAMkD,KAAKD,KAAKM,GAAG,yB,+BAtChC6mX,EAAmB,GAD/B,uB,uBAM6C,mB,OAAA,IAAhB,wCAAgB,SACE,mBADF,OACE,IAAjB,UAAiB,SACV,mBADU,OACV,IAAZ,UAAY,SAChB,mBADgB,OAChB,IAAJ,gBAAI,YARTA,GAAb,K,4ECRAxrX,EAAOD,QAAU,60C,85DCOjB,aAaE,WACUqnJ,GAAA,KAAAA,eARO,KAAA87M,eAAyB,qEAGlC,KAAAuoB,SAAiB,KACjB,KAAAC,aAAuB,GACvB,KAAAC,iBAA2B,EAKjCrnX,KAAKC,OAAS,aAAWC,UAAU,kB,MA2CvC,OAxCS,YAAAonX,YAAP,SAAmBxjF,GACjB,IAAI3nR,EAAa2nR,EAAOtmS,OAAO+wO,MAAM,GACjB,IAAoBp9N,MAAM,iBAAkB,SAC9C8P,QAAQ9E,IACxBnc,KAAKmnX,SAAWhrW,EAChBnc,KAAKonX,aAAejrW,EAAKze,OAEzBsC,KAAKmnX,SAAW,KAChBnnX,KAAKonX,aAAe,GACpBpnX,KAAKunX,iBACLvnX,KAAK8iJ,aAAahmJ,MAAM,6EAIf,YAAAsuC,WAAb,W,qBAA2BpvC,GAAO,W,wDAChC,IAAKgE,KAAKmnX,SAAU,UAEpBnnX,KAAKqnX,iBAAkB,E,iBAErB,O,uBAAA,GAAMrnX,KAAKwnX,eAAe,CAAEh9U,cAAexqC,KAAKwqC,cAAeruB,KAAMnc,KAAKmnX,Y,cAA1E,SACAnnX,KAAK8iJ,aAAaxiJ,QAAQN,KAAK4+V,gBAC3B5+V,KAAKynX,WACP,GAAMznX,KAAKynX,cADT,M,OACF,S,sDAGFznX,KAAK8iJ,aAAahmJ,MAAM,G,oBAExBkD,KAAKqnX,iBAAkB,EACvBrnX,KAAKmnX,SAAW,KAChBnnX,KAAKonX,aAAe,GACpBpnX,KAAKunX,iB,6BAID,YAAAA,eAAR,WACE,IAAMj5I,EAAYjyO,SAAS8nF,eAAe,kBACtCmqJ,IACFA,EAAU1vO,MAAQ,KAtDZ,GAAT,W,6DACS,GAAT,W,8DACS,GAAT,W,gEACS,GAAT,W,4DACS,GAAT,W,8DANU8oX,EAAsB,GADlC,uB,uBAeqC,mB,OAAA,IAAZ,UAAY,YAdzBA,GAAb,I,gFCPAhsX,EAAOD,QAAU,6vC,46DCQjB,aAaE,WACUqnJ,EACA/iJ,GADA,KAAA+iJ,eACA,KAAA/iJ,OATO,KAAA6+V,eAAyB,+DAGlC,KAAAuoB,SAAiB,KACjB,KAAAC,aAAuB,GACvB,KAAAC,iBAA2B,EAMjCrnX,KAAKC,OAAS,aAAWC,UAAU,uB,QAoDvC,OAjDS,YAAAonX,YAAP,SAAmBxjF,GACjB,IAAI3nR,EAAa2nR,EAAOtmS,OAAO+wO,MAAM,GACjB,IAAoBp9N,MAAM,iBAAkB,SAC9C8P,QAAQ9E,IACxBnc,KAAKmnX,SAAWhrW,EAChBnc,KAAKonX,aAAejrW,EAAKze,OAEzBsC,KAAKmnX,SAAW,KAChBnnX,KAAKonX,aAAe,GACpBpnX,KAAKunX,iBACLvnX,KAAK8iJ,aAAahmJ,MAAM,0EAIf,YAAAsuC,WAAb,W,qBAA2BpvC,GAAO,W,0DAChC,IAAKgE,KAAKmnX,SAAU,UAEpBnnX,KAAKqnX,iBAAkB,E,iBAEN,O,uBAAA,GAAMrnX,KAAKwnX,eAAe,CAAEr8U,mBAAoBnrC,KAAKmrC,mBAAoBhvB,KAAMnc,KAAKmnX,Y,eAA7Fp3W,EAAS,gBACmBnS,IAAnBmS,EAAO03D,cAA4C7pE,IAAnBmS,EAAO6pT,QAQpD55T,KAAK8iJ,aAAaxiJ,QAAQN,KAAK4+V,iBAP3B7uV,EAAO03D,QAAU,GACnBznE,KAAK8iJ,aAAaxiJ,QAAQN,KAAKD,KAAKM,GAAG,qEAAsE,CAAEsnX,WAAY53W,EAAO03D,WAEhI13D,EAAO6pT,QAAU,GACnB55T,KAAK8iJ,aAAaxiJ,QAAQN,KAAKD,KAAKM,GAAG,qEAAsE,CAAEunX,WAAY73W,EAAO6pT,YAKlI55T,KAAKynX,WACP,GAAMznX,KAAKynX,cADT,M,OACF,S,sDAGFznX,KAAK8iJ,aAAahmJ,MAAM,G,oBAExBkD,KAAKqnX,iBAAkB,EACvBrnX,KAAKmnX,SAAW,KAChBnnX,KAAKonX,aAAe,GACpBpnX,KAAKunX,iB,6BAID,YAAAA,eAAR,WACE,IAAMj5I,EAAYjyO,SAAS8nF,eAAe,uBACtCmqJ,IACFA,EAAU1vO,MAAQ,KAhEZ,GAAT,W,kEACS,GAAT,W,8DACS,GAAT,W,gEACS,GAAT,W,4DACS,GAAT,W,8DANUipX,EAAmB,GAD/B,uB,uBAeqC,mB,OAAA,IAAZ,UAAY,SAChB,mBADgB,OAChB,IAAJ,gBAAI,YAfTA,GAAb,I,6ECRAnsX,EAAOD,QAAU,suC,glBCIjB,aAIE,aAFU,KAAAu1W,SAAmB,GAO/B,OAHS,YAAA1nT,SAAP,aAJU,GAAT,W,uDAFUw+T,EAAyB,GADrC,uB,2BACYA,GAAb,I,mDCJApsX,EAAOD,QAAU,2jC,mlBCIjB,aAGE,WAAoB6lD,GAAA,KAAAA,mBAClBthD,KAAKtC,KAAO,K,MAMhB,OAHS,YAAAkb,SAAP,SAAgBlb,GACdsC,KAAKtC,KAAOA,GARHqqX,EAAuB,GADnC,uB,uBAIuD,mB,OAAA,IAAhB,wCAAgB,YAH3CA,GAAb,I,+DCJArsX,EAAOD,QAAU,0qB,+4DCOjB,aAkBE,WACU6rW,GAAA,KAAAA,qBAGRtnW,KAAKC,OAAS,aAAWC,UAAU,e,UA+BvC,OA5Be,YAAA8nX,sBAAb,W,uGACOhoX,KAAKioX,kBAAmBjoX,KAAKu1J,eAA9B,OACF,EAAAv1J,KAAe,GAAMA,KAAKsnW,mBAAmBp+C,WAAWlpT,KAAKu1J,eAAeh5I,M,OAA5E,EAAKwwU,QAAU,S,mCAIN,YAAAm7B,qBAAb,W,uGACOloX,KAAKioX,kBAAmBjoX,KAAK81J,cAA9B,OACF,EAAA91J,KAAe,GAAMA,KAAKsnW,mBAAmBp+C,WAAWlpT,KAAK81J,cAAc73I,a,OAA3E,EAAK8uU,QAAU,S,mCAIZ,YAAAo7B,uBAAP,sBACMnoX,KAAKioX,iBACPjoX,KAAK+sV,QAAU/sV,KAAKioX,gBAEpBpqX,YAAW,WACL,EAAKkvV,UAAY,EAAKk7B,kBACxB,EAAKl7B,QAAU,EAAKk7B,mBAErB,MAEMjoX,KAAKu1J,eACdv1J,KAAKgoX,wBACIhoX,KAAK81J,eACd91J,KAAKkoX,wBA7CT,GAFC,WACA,a,gBAC8B,mB,OAAA,IAAP,UAAO,W,qCAI/B,GAFC,WACA,a,gBAC4B,mB,OAAA,IAAN,UAAM,W,oCAI7B,GAFC,WACA,a,+DAZUE,EAAW,GADvB,uB,uBAoBiD,mB,OAAA,IAAlB,UAAkB,YAnBrCA,GAAb,I,qECPA1sX,EAAOD,QAAU,uDAAyD,EAAQ,KAA8C,wF,88DCahI,aAgBE,WACUm/D,EACA90D,EACAuU,EACA0wS,GAHA,KAAAnwP,QACA,KAAA90D,SACA,KAAAuU,KACA,KAAA0wS,qBANF,KAAAh2J,cAA8B,GAQpC/0J,KAAKC,OAAS,aAAWC,UAAU,mBAKnCF,KAAK+0J,cAAc75J,KAAK8E,KAAKqa,GAAGtF,UAAU,4BAA6B/U,KAAKgtP,QAAQ7tP,KAAKa,QAEzFA,KAAK+0J,cAAc75J,KAAK8E,KAAKqa,GAAGtF,UAAU,IAAwB/U,KAAKsD,KAAKnE,KAAKa,Q,cAkIrF,OA/He,YAAAspD,SAAb,W,qBAAyBttD,GAAO,W,4CAIzB,YAAA0pE,OAAP,WACE1lE,KAAK+0J,cAAc5tJ,SAAQ,SAAAD,GAAK,OAAAA,EAAEykG,cAGtB,YAAAroG,KAAd,W,0FAEE,SAAMtD,KAAKqoX,kB,OACX,OADA,SACA,GAAMroX,KAAKgtP,W,cAAX,S,YAGY,YAAAA,QAAd,W,kGASE,OANI3lP,EAAqCrH,KAAK8F,OAAOM,oBAErChG,QAAUiH,EAAYjH,OAAO6d,YAC3Ci7B,GAAoB7xC,EAAYjH,OAAO6d,WAGrCje,KAAK6Q,MAAM0kJ,gBAAkBv1J,KAAK6Q,MAAM0kJ,eAAeh5I,IAAM28B,EAC/D,IAIK,GAAMl5C,KAAKsoX,mBAAmBpvU,I,OAArC,MAAO,CAAP,EAAO,kBAID,YAAAmvU,eAAR,sBACMroX,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,eAAiB11J,KAAK6Q,MAAMskJ,UAAUv6J,OAAS,IAC1EoF,KAAKuoX,YAAcvoX,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,KAAO,EAAK1L,MAAM6kJ,cAAcz3I,eAK1E,YAAAqqW,mBAAd,SAAiCpvU,G,qBAA2Bl9C,GAAO,W,+DAE7Dk9C,GAAoBl5C,KAAK6Q,MAAMskJ,UAAUv6J,OAAS,GAEhDknW,OAAe,EAEf5oT,GAAoBl5C,KAAK6Q,MAAMskJ,UAAUxwJ,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ6nC,EAAiBl6B,YAAc,GAE5Ghf,KAAKC,OAAO0zC,MAAM,qCAElBmuT,EAAkB9hW,KAAK6Q,MAAMskJ,UAAUtwJ,QAAO,SAAAqC,GAAK,OAAAA,EAAEsiC,QAAU,IAAKo8U,YAAU,IAI9E9jB,EAAkB9hW,KAAK6Q,MAAMskJ,UAAUtwJ,QAAO,SAAAqC,GAAK,OAAAA,EAAEqV,IAAM28B,KAAkB,GAI3E4oT,EAAgBt4T,QAAU,IAAKo8U,UAAa9jB,EAAgBx7V,WAC9Dw7V,EAAkB9hW,KAAK6Q,MAAMskJ,UAAUtwJ,QAAO,SAAAqC,GAAK,OAAAA,EAAEsiC,QAAU,IAAKo8U,YAAU,IAG5E9jB,EACK,GAAM9hW,KAAKwoX,cAAc1mB,IAD9B,OApBF,M,OAqBA,MAAO,CAAP,EAAO,U,iCAEC5oT,IAAoBl5C,KAAK6Q,MAAM0kJ,eAAhC,MACF,GAAMv1J,KAAKwoX,cAAc,O,OAAhC,MAAO,CAAP,EAAO,U,yBAKG,YAAAA,cAAd,SAA4B9pW,G,qBAAmB1iB,GAAO,W,qEAG/C0iB,EAAD,MACK,GAAM1e,KAAK46D,MAAM+6F,uBAAuB,O,OAA/C,MAAO,CAAP,EAAO,U,OAGT,OAAI31J,KAAK6Q,MAAM0kJ,gBAAkBv1J,KAAK6Q,MAAM0kJ,eAAeh5I,IAAMmC,EAAQnC,GACvE,IAGa,GAAMvc,KAAK+qT,mBAAmBxoQ,gBAAgB7jC,EAAQnC,K,OAMrE,OANInU,EAAW,SAIfsW,EAAQ0kU,gBAAkBh7U,EAE1B,GAAMpI,KAAK46D,MAAM+6F,uBAAuBj3I,I,cAAxC,UAGIzc,EAAWjC,KAAK8F,OAAOM,mBAAmBnE,UAIjCrH,OAAS,GAAKqH,EAASkxE,WAAW,cACzCs1S,EAA0BxmX,EAASqpB,MAAM,MAC/BnU,OAAO,EAAG,EAAGnX,KAAK6Q,MAAM0kJ,eAAeh5I,GAAGyC,YACpD0pW,EAAsBD,EAAczgX,KAAK,KAEzC/F,IAAaymX,GACf1oX,KAAK8F,OAAOyC,SAASmgX,G,OANrB,M,OAUK,SAAM1oX,KAAK8F,OAAOkD,gBAAgB,oBAAqB,CAAEiV,UAAWje,KAAK6Q,MAAM0kJ,eAAeh5I,M,OAArG,MAAO,CAAP,EAAO,U,yBAnIX,GADC,qB,gBACkB,mB,OAAA,IAAL,kBAAK,W,4BALRosW,EAAe,GAD3B,uB,uBAkB8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACK,mBADL,OACK,IAAf,sCAAe,SACmB,mBADnB,OACmB,IAAlB,UAAkB,YApBrCA,GAAb,I,uECbAjtX,EAAOD,QAAU,0P,48DCcjB,aA8BE,WACUsrE,EACAnM,EACAvgD,GAHV,WACU,KAAA0sD,UACA,KAAAnM,QACA,KAAAvgD,KAZH,KAAAg7F,UAAoB,EAgBzBr1G,KAAKC,OAAS,aAAWC,UAAU,oBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MAExB7Q,KAAKg9Q,0BAA4Bh9Q,KAAKqa,GAAGtF,UAAU,KAA6B,SAACtX,GAE/E,EAAKy7C,iBAAmBz7C,EAAQy7C,oB,UAgEtC,OA5DS,YAAAiwG,SAAP,WACEnpJ,KAAKg9Q,0BAA0BrxK,WAGnB,YAAAsxK,wBAAd,W,iGACMj9Q,KAAKk5C,iBACP,GAAMl5C,KAAKsD,QADT,M,OACF,S,mCAIS,YAAAnE,KAAb,W,0EAEMa,KAAK6Q,OAAS7Q,KAAK6Q,MAAM0kJ,iBAC3Bv1J,KAAKk5C,iBAAmBl5C,KAAK6Q,MAAM0kJ,eAAeh5I,I,WAIzC,YAAAjZ,KAAb,W,uGAeE,OAbIslX,EAAS,IAAOnuW,aACpBza,KAAKwa,WAAgBouW,EAAM,mBAAmB5oX,KAAKk5C,iBAAgB,cAEnEl5C,KAAK6oX,YAAc,IAAI,EAAW,CAChC7qS,eAAgB,aAAsBj9E,IAAIy5E,WAC1CyD,eAAgB,aAAsBzD,WACtCmG,OAAQ,CACNl4E,IAAK,4BACLi3E,QAAS,SAACd,EAAOx2E,GAAa,SAAK0gX,aAAalqS,EAAOx2E,IACvD64E,cAAe,OAInB,GAAMjhF,KAAK6oX,YAAYtoS,c,cAAvB,S,YAIK,YAAAwoS,mBAAP,WACM/oX,KAAK6oX,cAEP7oX,KAAKwD,QAAU,CACb6pP,YAAa,CACX3vP,KAAM,OACN2gE,OAAO,EACP12B,MAAO,GACPg9E,QAAS,SAAAplG,GAAO,OAAAA,EAAI7hB,MACpB2mC,OAAQrkC,KAAK6oX,YAAY1mS,gBAM1B,YAAA2mS,aAAP,SAAoBlqS,EAAOx2E,GAKzB,OAJAA,EAASK,IAAMzI,KAAKwa,WAAa,gBAAkBwiC,mBAAmB4hC,GACtEx2E,EAAS6S,QAAU,CACjB,OAAU,oBAEL7S,GA5FT,GADC,uB,2DAID,GADC,mBAAS,CAAEyvS,mBAAoB,cAAY3mB,S,qDAK5C,GADC,qB,uDAID,GADC,qB,yDAMD,GADC,uB,gEAzBU83F,EAAgB,GAF5B,wBAAc,sBACd,uB,uBAgC2B,mB,EAAA,oBAAPxhT,kBAAO,SACG,mBADH,OACG,IAAZ,UAAY,SACA,mBADA,OACA,IAAf,sCAAe,YAjClBwhT,GAAb,I,yECdAttX,EAAOD,QAAU,+J,qlBCIjB,aAGE,WAAoB6lD,GAAA,KAAAA,mB,MAMtB,OAHS,YAAA1oC,SAAP,SAAgBlb,GACdsC,KAAKtC,KAAOA,GAPHurX,EAAyB,GADrC,uB,uBAIuD,mB,OAAA,IAAhB,wCAAgB,YAH3CA,GAAb,I,iECJAvtX,EAAOD,QAAU,ouB,04DCMjB,aAIE,WAAoB6lD,GAAA,KAAAA,mB,MAYtB,OATS,YAAA1oC,SAAP,SAAgB4E,GACdxd,KAAKwd,MAAQA,EACbxd,KAAKie,UAAYje,KAAKwd,MAAM,GAAGjB,IAEnB,YAAAmgD,KAAd,W,qBAAsB1gE,GAAO,W,kDAEpB,SAAMgE,KAAKshD,iBAAiBskB,GAAG5lE,KAAKie,Y,OAA3C,MAAO,CAAP,EAAO,kBAbEirW,EAAuB,GADnC,uB,uBAKuD,mB,OAAA,IAAhB,wCAAgB,YAJ3CA,GAAb,K,gFCNAxtX,EAAOD,QAAU,yiC,ilBCIjB,aAGE,WAAoB6lD,GAAA,KAAAA,mB,MAMtB,OAHS,YAAA1oC,SAAP,SAAgB4E,GACdxd,KAAKwd,MAAQA,GAPJ2rW,EAAsB,GADlC,uB,uBAIuD,mB,OAAA,IAAhB,wCAAgB,YAH3CA,GAAb,I,6DCJAztX,EAAOD,QAAU,gqB,6kBCIjB,aAGE,WAAoB6lD,GAAA,KAAAA,mB,MAMtB,OAHS,YAAA1oC,SAAP,SAAgBlb,GACdsC,KAAKtC,KAAOA,GAPH0rX,EAAkB,GAD9B,uB,uBAIuD,mB,OAAA,IAAhB,wCAAgB,YAH3CA,GAAb,I,yDCJA1tX,EAAOD,QAAU,4tB,26DCuBjB,aAOE,WACU6lD,EACA+nU,EACAvuB,EACA5B,EACA5K,GAJA,KAAAhtS,mBACA,KAAA+nU,qCACA,KAAAvuB,uBACA,KAAA5B,qBACA,KAAA5K,4BATF,KAAAg7B,WAA8B,GAE9B,KAAAC,qBAA0G,GAShHvpX,KAAKC,OAAS,aAAWC,UAAU,2B,cAgIvC,OA7He,YAAA0Y,SAAb,SAAsB4E,G,qBAAiCxhB,GAAO,W,yDAC5DgE,KAAKqkC,OAAS7mB,EAAM6mB,OAEC,eAAjB7mB,EAAM6mB,OAAN,MACF,GAAMrkC,KAAKwpX,mBAAmBhsW,EAAMiuC,aAAcjuC,EAAMgtB,gB,cAAxD,S,mBAC0B,sBAAjBhtB,EAAM6mB,OAAN,MACT,GAAMrkC,KAAKypX,yBAAyBjsW,EAAM43L,qC,cAA1C,S,mBAC0B,oBAAjB53L,EAAM6mB,OAAN,MACT,GAAMrkC,KAAK0pX,uBAAuBlsW,EAAM4oP,mC,OAAxC,S,mCAIU,YAAAojH,mBAAd,SAAiC/9T,EAAsBjhB,G,qBAAwBxuC,GAAO,W,4DAGhF,O,sBAAA,GAAMgE,KAAKqpX,mCAAmC1mO,kBAAkBl3F,I,cAD5D,EACJ,WAEkC,EAA6B7wD,OAAS,EAClD,GAAMoF,KAAKsuV,0BAA0BpkM,sBAAsB1/G,IAD/E,M,OACIuxU,EAAgB,SACtB/7W,KAAKspX,WAAavN,EAAcl3W,QAAO,SAAA1G,GACrC,SAA6B0gB,MAAK,SAAAnN,GAAK,OAAAA,EAAEqM,kBAAoB5f,EAAEoe,S,sDAInEvc,KAAKC,OAAOnD,MAAM,2CAA4C,G,+BAIpD,YAAA2sX,yBAAd,SACEr0K,G,qBACCp5M,GAAO,W,wEAEN,G,uBAAKo5M,GAAoF,IAA9CA,EAAmCx6M,OAC5E,UAIF,IADM+uX,EAAkE,GACnE,EAAL,EAAwB,EAAAv0K,EAAA,eAAbusE,EAAS,KACbgoG,EAAQhoG,EAAUn3O,iBACrBm/U,EAAQhoG,EAAUn3O,eAAiB,IAErCm/U,EAAQhoG,EAAUn3O,eAAetvC,KAAKymR,GAGxC3hR,KAAKupX,qBAAuB,GAEtBr0K,EAAiBr6M,OAAO0Z,KAAKo1W,G,WAC1BjvX,G,kEAIe,OAHhB8vC,GAAiB0qK,EAAex6M,GAChC0hX,EAAauN,EAAQn/U,GAEL,GAAM,EAAK8jT,0BAA0BpkM,sBAAsB1/G,I,OAA3EuxU,EAAgB,SAChB6N,EAAqB7N,EAAcl3W,QAAO,SAAA1G,GAC9C,OAAAi+W,EAAWv9V,MAAK,SAAAnN,GAAK,OAAAA,EAAEqM,kBAAoB5f,EAAEoe,SAG3CkoV,EAAkB,GAAGj6T,E,iBAEH,O,sBAAA,GAAM,EAAK0uT,mBAAmB58U,QAAQkuB,I,cAApD4K,EAAc,YAElBqvT,EAAkBrvT,EAAY13C,M,iDAMlC,EAAK6rX,qBAAqBruX,KAAK,CAC7BsvC,cAAa,EACbi6T,gBAAe,EACf6kB,WAAYM,I,gBAtBPlvX,EAAI,E,wBAAGA,EAAIw6M,EAAet6M,O,KAA1BF,IAAgC,M,wCAAEA,I,kDA0B3CsF,KAAKC,OAAOnD,MAAM,kDAAmD,G,+BAI3D,YAAA4sX,uBAAd,SACEtjH,G,qBACCpqQ,GAAO,W,wEAEN,G,uBAAKoqQ,GAAgF,IAA5CA,EAAiCxrQ,OACxE,UAIF,IADM+uX,EAAgE,GACjE,EAAL,EAAwB,EAAAvjH,EAAA,eAAbub,EAAS,KACbgoG,EAAQhoG,EAAUn3O,iBACrBm/U,EAAQhoG,EAAUn3O,eAAiB,IAErCm/U,EAAQhoG,EAAUn3O,eAAetvC,KAAKymR,GAGxC3hR,KAAKupX,qBAAuB,GAEtBr0K,EAAiBr6M,OAAO0Z,KAAKo1W,G,WAC1BjvX,G,kEAIe,OAHhB8vC,GAAiB0qK,EAAex6M,GAChC0hX,EAAauN,EAAQn/U,GAEL,GAAM,EAAK8jT,0BAA0BpkM,sBAAsB1/G,I,OAA3EuxU,EAAgB,SAChB6N,EAAqB7N,EAAcl3W,QAAO,SAAA1G,GAC9C,OAAAi+W,EAAWv9V,MAAK,SAAAnN,GAAK,OAAAA,EAAEqM,kBAAoB5f,EAAEoe,SAG3CkoV,EAAkB,GAAGj6T,E,iBAEH,O,sBAAA,GAAM,EAAK0uT,mBAAmB58U,QAAQkuB,I,cAApD4K,EAAc,YAElBqvT,EAAkBrvT,EAAY13C,M,iDAMlC,EAAK6rX,qBAAqBruX,KAAK,CAC7BsvC,cAAa,EACbi6T,gBAAe,EACf6kB,WAAYM,I,gBAtBPlvX,EAAI,E,wBAAGA,EAAIw6M,EAAet6M,O,KAA1BF,IAAgC,M,wCAAEA,I,kDA0B3CsF,KAAKC,OAAOnD,MAAM,gDAAiD,G,+BA3I5D+sX,EAAuB,GADnC,uB,uBAS6C,mB,OAAA,IAAhB,wCAAgB,SACoC,mBADpC,OACoC,IAAlC,UAAkC,SAC5B,mBAD4B,OAC5B,IAApB,UAAoB,SACJ,mBADI,OACJ,IAAlB,UAAkB,SACc,mBADd,OACc,IAAzB,UAAyB,YAZnDA,GAAb,K,gFCvBAnuX,EAAOD,QAAU,k5C,w7DCgCjB,aAcE,WACU6lD,EACAw5S,EACAh4M,EACAgjG,EACAwoG,GAJA,KAAAhtS,mBACA,KAAAw5S,uBACA,KAAAh4M,eACA,KAAAgjG,gBACA,KAAAwoG,4BAfF,KAAAg7B,WAA8B,GAC9B,KAAAQ,qBAAiC,GACjC,KAAAC,oBAAgC,GAChC,KAAAC,gBAA4B,GAC5B,KAAAC,iBAA2B,EAC3B,KAAA70K,mCAA8D,GAC9D,KAAA80K,cAAwB,EAExB,KAAAC,YAAsB,GACtB,KAAAC,eAA2B,CAAC,QAQlCpqX,KAAKC,OAAS,aAAWC,UAAU,0B,cAsGvC,OAnGe,YAAA0Y,SAAb,SAAsB4E,G,qBAAgCxhB,GAAO,W,mEAC3DgE,KAAKC,OAAO0zC,MAAM,mCAClB3zC,KAAKwqC,cAAgBhtB,EAAMgtB,cAC3BxqC,KAAKykW,gBAAkBjnV,EAAMinV,gBAC7BzkW,KAAKo1M,mCAAqC53L,EAAM43L,oCAAsC,GACtFp1M,KAAKkqX,aAAe1sW,EAAM0sW,eAAgB,E,iBAGpB,O,sBAAA,GAAMlqX,KAAKsuV,0BAA0BrkM,4BAA4BjqJ,KAAKwqC,gB,cAAtFuxU,EAAgB,SACpB/7W,KAAKspX,WAAavN,EAAcl3W,QAAO,SAAA1G,GAAK,OAAgB,GAAhBA,EAAE64G,c,+BAE9Ch3G,KAAK8iJ,aAAahmJ,MAAM,G,oBAGpB6+W,EAA2B37W,KAAKo1M,mCACnCvwM,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkB,EAAKA,iBACxCxqC,KAAK8pX,qBAAuBnO,EAAyBh3W,KAAI,SAAA+M,GAAK,OAAAA,EAAEqM,mBAChE/d,KAAK+pX,oBAAsBpO,EACxB92W,QAAO,SAAA6M,GAAK,OAAwB,MAAxBA,EAAEy5B,sBACdxmC,KAAI,SAAA+M,GAAK,OAAAA,EAAEy5B,sBAEdnrC,KAAKC,OAAO0zC,MAAM,wBAAyB3zC,KAAK8pX,sBAChD9pX,KAAKC,OAAO0zC,MAAM,uBAAwB3zC,KAAK+pX,qBAE/C/pX,KAAKqqX,wBAELrqX,KAAKwvS,aAAexvS,KAAK8lP,cACtBY,mBAAmB1mP,KAAK8pX,sBACxB/0W,WAAU,WAAM,SAAKs1W,2B,YAGlB,YAAAA,sBAAR,sBACErqX,KAAKgqX,gBAAkB,GACvBhqX,KAAKiqX,iBAAmB,EACnBjqX,KAAK8pX,sBAAyB9pX,KAAKspX,aACxCtpX,KAAK8pX,qBAAqB3iX,SAAQ,SAAAoV,GAChC,IAAM2/V,EAAM,EAAKoN,WAAWtjX,MAAK,SAAA7H,GAAK,OAAAA,EAAEoe,KAAOA,KAC3C2/V,IACF,EAAK8N,gBAAgB9uX,KAAKghX,EAAIx+W,MAC9B,EAAKusX,oBAAsB/N,EAAI7H,aAAe,OAGlDr0W,KAAKC,OAAO0zC,MAAM,2BAA4B3zC,KAAKgqX,iBACnDhqX,KAAKC,OAAO0zC,MAAM,4BAA6B3zC,KAAKiqX,oBAG9C,YAAAK,gBAAR,sBACE,IAAKtqX,KAAK8pX,qBAAsB,MAAO,GAEvC,GAAI9pX,KAAKkqX,aAAc,CACrB,IAAI,EAA4C,GAShD,OARAlqX,KAAK8pX,qBAAqB3iX,SAAQ,SAAAojX,GAChC,IAAMrO,EAAM,EAAKoN,WAAWtjX,MAAK,SAAA7H,GAAK,OAAAA,EAAEoe,KAAOguW,KAC3C5oG,EAAY,IAAI,IACpBA,EAAUn3O,cAAgB,EAAKA,cAC/Bm3O,EAAU5jQ,gBAAkBwsW,EAC5B5oG,EAAUx2O,mBAAqB+wU,EAAMA,EAAI/wU,mBAAqB,KAC9D,EAAWjwC,KAAKymR,MAEX,EAEP,IAAI,EAAkD,GAStD,OARA3hR,KAAK8pX,qBAAqB3iX,SAAQ,SAAAojX,GAChC,IAAMrO,EAAM,EAAKoN,WAAWtjX,MAAK,SAAA7H,GAAK,OAAAA,EAAEoe,KAAOguW,KAC3C5oG,EAAY,IAAI,IACpBA,EAAUn3O,cAAgB,EAAKA,cAC/Bm3O,EAAU5jQ,gBAAkBwsW,EAC5B5oG,EAAUx2O,mBAAqB+wU,EAAMA,EAAI/wU,mBAAqB,KAC9D,EAAWjwC,KAAKymR,MAEX,GAIJ,YAAAvrH,OAAP,WACE,IAAM6lN,EAAgBj8W,KAAKsqX,kBAC3BtqX,KAAKC,OAAO0zC,MAAM,6BAA8BsoU,EAAcrhX,QAC9DoF,KAAKC,OAAO0zC,MAAM,6BAA8B3zC,KAAKiqX,kBACrD,IAAMl6W,EAAkC,CACtCy6B,cAAexqC,KAAKwqC,cACpBi6T,gBAAiBzkW,KAAKykW,gBACtB2X,WAAYH,EACZgO,iBAAkBjqX,KAAKiqX,kBAEzBjqX,KAAKshD,iBAAiBskB,GAAG71D,IAGpB,YAAAhG,OAAP,WACM/J,KAAKwvS,cACPxvS,KAAKwvS,aAAa7jM,UAEpB3rG,KAAKshD,iBAAiBv3C,UAGjB,YAAA+O,WAAP,WACM9Y,KAAKwvS,cACPxvS,KAAKwvS,aAAa7jM,WAxHX6+Q,EAAsB,GADlC,uB,uBAgB6C,mB,OAAA,IAAhB,wCAAgB,SACQ,mBADR,OACQ,IAApB,UAAoB,SAChB,mBADgB,OAChB,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,SACwB,mBADxB,OACwB,IAAzB,UAAyB,YAnBnDA,GAAb,K,iFChCA9uX,EAAOD,QAAU,stD,mDCAjBC,EAAOD,QAAU,ijG,+jBCGjB,aAKE,aAHQ,KAAAgvX,SAAmB,EACnB,KAAAC,OAAiB,EAY3B,OAJS,YAAAphU,SAAP,WACEtpD,KAAKyqX,QAAU9qX,OAAO+7C,SAASvzC,KAAKkJ,QAAQ,SAAW,EACvDrR,KAAK0qX,MAAQ/qX,OAAO+7C,SAASvzC,KAAKkJ,QAAQ,aAAe,GAbhDs5W,EAAU,GADtB,uB,2BACYA,GAAb,I,iDCHAjvX,EAAOD,QAAU,+V,uqBCMjB,aAOE,WAAYsE,GAN0C,KAAAktE,MAA0B,GACtE,KAAA29S,sBAAgC,EAMxC5qX,KAAKD,KAAOA,E,QAiEhB,OA9DE,YAAAupD,SAAA,WACE,IAAqB,UAAAtpD,KAAKitE,MAAL,eAAY,CAA5B,IAAM44C,EAAM,KACf7lH,KAAK6qX,sBAAsBhlQ,KAI/B,YAAAilQ,UAAA,WACE,IAAMjlQ,EAAS,IAAI,IACnBA,EAAOtpG,GAAK,EACZspG,EAAOv1G,MAAQtQ,KAAKitE,MAAMryE,OAAS,EACnCirH,EAAOi5O,UAAW,EAClBj5O,EAAOA,OAAS,GAChBA,EAAO45O,OAAS,EAChB55O,EAAOj2E,SAAW,GAClB5vC,KAAKitE,MAAM/xE,KAAK2qH,GAChB7lH,KAAK6qX,sBAAsBhlQ,IAG7B,YAAAklQ,aAAA,SAAaphX,GACX,IAAMk8G,EAAS7lH,KAAKitE,MAAMtjE,GAC1B3J,KAAK01U,qBAAqB/C,aAAa9sN,GACvC7lH,KAAKitE,MAAM91D,OAAOxN,EAAO,IAG3B,YAAAmyV,sBAAA,WACE,IAAM3gS,EAAmB,GACC,IAAtBn7D,KAAKitE,MAAMryE,QACbugE,EAAOjgE,KAAK,wFAGd,IAAM8vX,EAAShrX,KAAKitE,MAAMtoE,KAAI,SAAAjK,GAAK,OAAAqpD,OAAOrpD,EAAE4V,UACtC26W,EAAe,IAAIxoJ,IAAIuoJ,IACzBA,EAAOpwX,OAAS,GAAKqwX,EAAav6S,OAASs6S,EAAOpwX,QACpDugE,EAAOjgE,KAAK,yEAGV8E,KAAK4qX,sBAAwB5qX,KAAKitE,MAAMryE,OAAS,KAC7BoF,KAAKitE,MAAMqM,OAAM,SAAA5+E,GAAK,OAAAA,EAAE+kW,OAAS,MAErDtkS,EAAOjgE,KAAK,2FAGhB,OAAOigE,GAGD,YAAA0vT,sBAAR,SAA8BhlQ,GAC5B,kBACGuzN,OAAO,UACPpyK,YAAY,6DACZwkD,WACA2tH,YAAYn5U,KAAKD,KAAKM,GAAG,uEACzB+4U,OAAO,SACPpyK,YAAY,kDACZwkD,WACA2tH,YAAYn5U,KAAKD,KAAKM,GAAG,oEACzB+4U,OAAO,UACPpyK,YAAY,2DACZwkD,WACA8tH,WAAU,SAAA16U,GAAS,OAAAA,GAAS,GAAKA,GAAS,OAC1Cu6U,YAAYn5U,KAAKD,KAAKM,GAAG,2DACzBgtC,GAAGw4E,IAtE8C,GAArD,mBAAS,CAAEgyL,mBAAoB,cAAY3mB,S,oDAClC,GAAT,W,qEACS,GAAT,W,gBAAmD,mB,OAAA,IAApB,gDAAoB,W,2CAHzCg6F,EAAkC,GAD9C,uB,uBAQuB,mB,OAAA,IAAJ,gBAAI,YAPXA,GAAb,I,2ECNAxvX,EAAOD,QAAU,o4C,86DCMjB,aAUE,WACUqnJ,EACAo2M,GADA,KAAAp2M,eACA,KAAAo2M,qBAPO,KAAA0F,eAAyB,qEAEnC,KAAAunB,aAAuB,EAO5BnmX,KAAKC,OAAS,aAAWC,UAAU,kC,QAmBvC,OAhBe,YAAAqrC,cAAb,W,qBAA8BvvC,GAAO,W,wDACnC,IAAKgE,KAAKwqC,cAAe,UACzBxqC,KAAKmmX,aAAc,E,iBAEjB,O,uBAAA,GAAMnmX,KAAKmrX,eAAe,CAAE3gV,cAAexqC,KAAKwqC,iB,cAAhD,SACAxqC,KAAK8iJ,aAAaxiJ,QAAQN,KAAK4+V,gBAE3B5+V,KAAKorX,WACP,GAAMprX,KAAKorX,cADT,M,OACF,S,sDAGFprX,KAAK8iJ,aAAahmJ,MAAM,G,oBAExBkD,KAAKmmX,aAAc,E,6BA7Bb,GAAT,W,6DACS,GAAT,W,gEACS,GAAT,W,4DACS,GAAT,W,8DACS,GAAT,W,8DALUkF,EAA8B,GAD1C,uB,uBAYqC,mB,OAAA,IAAZ,UAAY,SACY,mBADZ,OACY,IAAlB,UAAkB,YAZrCA,GAAb,I,wFCNA3vX,EAAOD,QAAU,wc,uqBCMjB,aAOE,WAAYsE,GAN0C,KAAAktE,MAA0B,GACtE,KAAA29S,sBAAgC,EAMxC5qX,KAAKD,KAAOA,E,QAiEhB,OA9DE,YAAAupD,SAAA,WACE,IAAqB,UAAAtpD,KAAKitE,MAAL,eAAY,CAA5B,IAAM44C,EAAM,KACf7lH,KAAK6qX,sBAAsBhlQ,KAI/B,YAAAilQ,UAAA,WACE,IAAMjlQ,EAAS,IAAI,IACnBA,EAAOtpG,GAAK,EACZspG,EAAOv1G,MAAQtQ,KAAKitE,MAAMryE,OAAS,EACnCirH,EAAOi5O,UAAW,EAClBj5O,EAAOA,OAAS,GAChBA,EAAO45O,OAAS,EAChB55O,EAAOj2E,SAAW,GAClB5vC,KAAKitE,MAAM/xE,KAAK2qH,GAChB7lH,KAAK6qX,sBAAsBhlQ,IAG7B,YAAAklQ,aAAA,SAAaphX,GACX,IAAMk8G,EAAS7lH,KAAKitE,MAAMtjE,GAC1B3J,KAAK01U,qBAAqB/C,aAAa9sN,GACvC7lH,KAAKitE,MAAM91D,OAAOxN,EAAO,IAG3B,YAAAmyV,sBAAA,WACE,IAAM3gS,EAAmB,GACC,IAAtBn7D,KAAKitE,MAAMryE,QACbugE,EAAOjgE,KAAK,wFAGd,IAAM8vX,EAAShrX,KAAKitE,MAAMtoE,KAAI,SAAAjK,GAAK,OAAAqpD,OAAOrpD,EAAE4V,UACtC26W,EAAe,IAAIxoJ,IAAIuoJ,IACzBA,EAAOpwX,OAAS,GAAKqwX,EAAav6S,OAASs6S,EAAOpwX,QACpDugE,EAAOjgE,KAAK,yEAGV8E,KAAK4qX,sBAAwB5qX,KAAKitE,MAAMryE,OAAS,KACzBoF,KAAKitE,MAAMpuD,MAAK,SAAAnkB,GAAK,OAAAA,EAAE+kW,OAAS,MAExDtkS,EAAOjgE,KAAK,8FAGhB,OAAOigE,GAGD,YAAA0vT,sBAAR,SAA8BhlQ,GAC5B,kBACGuzN,OAAO,UACPpyK,YAAY,6DACZwkD,WACA2tH,YAAYn5U,KAAKD,KAAKM,GAAG,uEACzB+4U,OAAO,SACPpyK,YAAY,kDACZwkD,WACA2tH,YAAYn5U,KAAKD,KAAKM,GAAG,oEACzB+4U,OAAO,UACPpyK,YAAY,2DACZwkD,WACA8tH,WAAU,SAAA16U,GAAS,OAAAA,GAAS,GAAKA,GAAS,OAC1Cu6U,YAAYn5U,KAAKD,KAAKM,GAAG,2DACzBgtC,GAAGw4E,IAtE8C,GAArD,mBAAS,CAAEgyL,mBAAoB,cAAY3mB,S,oDAClC,GAAT,W,qEACS,GAAT,W,gBAAmD,mB,OAAA,IAApB,gDAAoB,W,2CAHzCo6F,EAAkC,GAD9C,uB,uBAQuB,mB,OAAA,IAAJ,gBAAI,YAPXA,GAAb,I,2ECNA5vX,EAAOD,QAAU,o4C,28DCYjB,aAmBE,WACU6rW,EACAtjB,EACA4qB,EACA9oW,EACAg9I,GAJA,KAAAwkN,qBACA,KAAAtjB,mBACA,KAAA4qB,eACA,KAAA9oW,SACA,KAAAg9I,eAXH,KAAAk3H,WAAqB,EAEpB,KAAAovC,MAAe,IAAI,IACnB,KAAA0lD,UAAqB,GAErB,KAAAyc,eAAyB,EAS/BvrX,KAAKC,OAAS,aAAWC,UAAU,e,kBAsDvC,OAnDe,YAAA8nX,sBAAb,W,iGAE6B,MAAvBhoX,KAAKu1J,eAAL,OACFv1J,KAAKurX,eAAgB,EACrBvrX,KAAKk5C,iBAAmBl5C,KAAKu1J,eAAeh5I,GAC5C,GAAMvc,KAAK+uW,yBAAyB/uW,KAAKk5C,oB,cAAzC,S,aAGAl5C,KAAKurX,eAAgB,E,mCAGZ,YAAArD,qBAAb,W,iGAE4B,MAAtBloX,KAAK81J,cAAL,OACF91J,KAAKurX,eAAgB,EACrBvrX,KAAKk5C,iBAAmBl5C,KAAK81J,cAAc73I,UAC3C,GAAMje,KAAK+uW,yBAAyB/uW,KAAKk5C,oB,cAAzC,S,aAGAl5C,KAAKurX,eAAgB,E,mCAGlB,YAAAnwQ,OAAP,WACEp7G,KAAKg6Q,WAAY,EACjBh6Q,KAAK8F,OAAOyC,SAAS,WAAWvI,KAAKk5C,iBAAgB,iBAIzC,YAAA61T,yBAAd,SAAuC9wV,G,sGAGhB,O,sBAAA,GAAMje,KAAKgkV,iBAAiBtsQ,yBAAyBz5D,GAAU,I,OACzD,OADrB+wV,EAAe,SAAuErqW,KAAI,SAAAuC,GAAI,OAAAA,EAAEqV,MAC3E,GAAMvc,KAAKgkV,iBAAiBtsQ,yBAAyBz5D,GAAU,I,OAOvE,OAPZgxV,EAAoB,SAAsEtqW,KAAI,SAAAuC,GAAI,OAAAA,EAAEqV,MAErGyyV,EAAYp0W,OAAS,IACvBoF,KAAKopT,MAAMpnQ,SAAWgtT,GACpBC,EAAiBr0W,OAAS,IAC5BoF,KAAKopT,MAAMnnQ,cAAgBgtT,GAE3B,EAAAjvW,KAAe,GAAMA,KAAK4uW,aAAahmU,gBAAgB3qB,EAAUje,KAAKopT,Q,cAAtE,EAAK8lD,OAAU,SAA+DrqW,QAAO,SAAAqC,GAAI,OAAAA,EAAEioW,mBAAqB,IAAkBC,YAAUx0W,OAExIoF,KAAKkvW,OAAS,KAClBlvW,KAAKkvW,OAAS,IAEK,GAAflvW,KAAKkvW,SACTlvW,KAAKg6Q,WAAY,G,+BAGnBh6Q,KAAK8iJ,aAAahmJ,MAAM,G,+BAzE5B,GAFC,WACA,a,gBAC8B,mB,OAAA,IAAP,UAAO,W,qCAI/B,GAFC,WACA,a,gBAC4B,mB,OAAA,IAAN,UAAM,W,oCATlB0uX,EAAiB,GAD7B,uB,uBAqBiD,mB,OAAA,IAAlB,UAAkB,SACJ,mBADI,OACJ,IAAhB,UAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SACZ,mBADY,OACZ,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,YAxBzBA,GAAb,I,yECZA9vX,EAAOD,QAAU,uT,qDCAjB,wEAKO,SAASmU,EAAUpN,GACxBA,EAAO4xE,gBAAgB,CAErB,gBAEA,qBACA,2B,8lBCPJ,aAEE,WAAoB9yB,GAAA,KAAAA,mB,MAEtB,OAJamqU,EAAiC,GAD7C,uB,uBAGuD,mB,OAAA,IAAhB,wCAAgB,YAF3CA,GAAb,I,0ECJA/vX,EAAOD,QAAU,gwB,opBCMjB,aAOE,WAAYsE,GAN0C,KAAAktE,MAA0B,GAEtE,KAAA29S,sBAAgC,EAKxC5qX,KAAKD,KAAOA,E,QA6FhB,OA1FE,YAAAupD,SAAA,WAEE,IAFF,W,WAEa/6C,GACT,EAAKm9W,sBAAsBn9W,GACvBA,EAAOqhC,UACTrhC,EAAOqhC,SAASzoC,SAAQ,SAAA8jF,GAAS,SAAK0gS,qBAAqB1gS,EAAO18E,O,OAHjD,MAAAvO,KAAKitE,MAAL,eAAY,C,EAAhB,QAQnB,YAAA2+S,cAAA,WACE,IAAM/lQ,EAAS,IAAI,IACnBA,EAAOtpG,GAAK,EACZspG,EAAOv1G,MAAQtQ,KAAKitE,MAAMryE,OAC1BirH,EAAOi5O,UAAW,EAClBj5O,EAAOA,OAAS,GAChBA,EAAO45O,OAAS,EAChB55O,EAAOj2E,SAAW,GAClB5vC,KAAKitE,MAAM/xE,KAAK2qH,GAChB7lH,KAAK0rX,sBAAsB7lQ,IAG7B,YAAAgmQ,iBAAA,SAAiBrrX,GAAjB,WACEA,EAAKovC,SAASzoC,SAAQ,SAAA8jF,GACpB,EAAKyqP,qBAAqB/C,aAAa1nP,MAEzCjrF,KAAK01U,qBAAqB/C,aAAanyU,GACvC,IAAM23D,EAAMn4D,KAAKitE,MAAM57D,QAAQ7Q,GAC3B23D,GAAO,GAAGn4D,KAAKitE,MAAM91D,OAAOghD,EAAK,IAGvC,YAAA2zT,eAAA,SAAev9W,GACb,IAAM08E,EAAQ,IAAI,IAClBA,EAAM1uE,GAAK,EACX0uE,EAAM36E,MAAQ/B,EAAOqhC,SAASh1C,OAC9BqwF,EAAM6zQ,UAAW,EACjB7zQ,EAAM46B,OAAS,GACf56B,EAAMr7C,SAAW,GACjBq7C,EAAMy1E,SAAWnyJ,EAAOgO,GACxB0uE,EAAMw0Q,OAAS,EACflxV,EAAOqhC,SAAS10C,KAAK+vF,GACrBjrF,KAAK2rX,qBAAqB1gS,EAAO18E,IAGnC,YAAAw9W,kBAAA,SAAkBx9W,EAAwBy9W,GACxC,IAAM/gS,EAAQ18E,EAAOqhC,SAASo8U,GAC9BhsX,KAAK01U,qBAAqB/C,aAAa1nP,GACvC18E,EAAOqhC,SAASz4B,OAAO60W,EAAY,IAGrC,YAAAlwB,sBAAA,WAEE,IADA,IAAM3gS,EAAmB,GACJ,MAAAn7D,KAAKitE,MAAL,eAAY,CAA5B,IAAM1+D,EAAM,KACf,GAAKA,EAAOqhC,UAAuC,IAA3BrhC,EAAOqhC,SAASh1C,QAGZ2T,EAAOqhC,SAAS/wB,MAAK,SAAA3gB,GAAK,OAAAA,EAAEuhW,OAAS,MACrCz/V,KAAK4qX,sBAC7BzvT,EAAOjgE,KAAK,6GAJdigE,EAAOjgE,KAAK,kGAWhB,OAH0B,IAAtB8E,KAAKitE,MAAMryE,QACbugE,EAAOjgE,KAAK,wFAEPigE,GAGD,YAAAuwT,sBAAR,SAA8B7lQ,GAC5B,kBACGuzN,OAAO,UACPpyK,YAAY,6DACZwkD,WACA2tH,YAAYn5U,KAAKD,KAAKM,GAAG,uEACzBgtC,GAAGw4E,IAGA,YAAA8lQ,qBAAR,SAA6B1gS,EAAuB18E,GAClD,kBACG6qU,OAAO,UACPpyK,YAAY,wEACZwkD,WACA2tH,YAAYn5U,KAAKD,KAAKM,GAAG,kFACzB+4U,OAAO,UACPpyK,YAAY,2DACZwkD,WACA8tH,WAAU,SAAA16U,GAAS,OAAAA,GAAS,GAAKA,GAAS,OAC1Cu6U,YAAYn5U,KAAKD,KAAKM,GAAG,2DACzBgtC,GAAG49C,IAlG8C,GAArD,mBAAS,CAAE4sN,mBAAoB,cAAY3mB,S,oDAClC,GAAT,W,gBAAmD,mB,OAAA,IAApB,gDAAoB,W,2CAC1C,GAAT,W,qEAHU+6F,EAAyB,GADrC,uB,uBAQuB,mB,OAAA,IAAJ,gBAAI,YAPXA,GAAb,I,iECNAvwX,EAAOD,QAAU,mpE,sqBCMjB,aAOE,WAAYsE,GAN0C,KAAAktE,MAA0B,GAEtE,KAAA29S,sBAAgC,EAKxC5qX,KAAKD,KAAOA,E,QAsDhB,OAnDE,YAAAupD,SAAA,WACE,IAAqB,UAAAtpD,KAAKitE,MAAL,eAAY,CAA5B,IAAM44C,EAAM,KACf7lH,KAAK6qX,sBAAsBhlQ,KAI/B,YAAAilQ,UAAA,WACE,IAAMjlQ,EAAS,IAAI,IACnBA,EAAOtpG,GAAK,EACZspG,EAAOv1G,MAAQtQ,KAAKitE,MAAMryE,OAC1BirH,EAAOi5O,UAAW,EAClBj5O,EAAOA,OAAS,GAChBA,EAAO45O,OAAS,EAChB55O,EAAOj2E,SAAW,GAClB5vC,KAAKitE,MAAM/xE,KAAK2qH,GAChB7lH,KAAK6qX,sBAAsBhlQ,IAG7B,YAAAklQ,aAAA,SAAaphX,GACX,IAAMk8G,EAAS7lH,KAAKitE,MAAMtjE,GAC1B3J,KAAK01U,qBAAqB/C,aAAa9sN,GACvC7lH,KAAKitE,MAAM91D,OAAOxN,EAAO,IAG3B,YAAAmyV,sBAAA,WACE,IAAM3gS,EAAmB,IACC,IAAtBn7D,KAAKitE,MAAMryE,QACbugE,EAAOjgE,KAAK,wFAEV8E,KAAK4qX,yBACmB5qX,KAAKitE,MAAMpuD,MAAK,SAAAnkB,GAAK,OAAAA,EAAE+kW,OAAS,MAChCz/V,KAAKitE,MAAMryE,OAAS,GAC5CugE,EAAOjgE,KAAK,4EAGhB,OAAOigE,GAGD,YAAA0vT,sBAAR,SAA8BhlQ,GAC5B,kBACGuzN,OAAO,UACPpyK,YAAY,6DACZwkD,WACA2tH,YAAYn5U,KAAKD,KAAKM,GAAG,uEACzB+4U,OAAO,UACPpyK,YAAY,2DACZwkD,WACA8tH,WAAU,SAAA16U,GAAS,OAAAA,GAAS,GAAKA,GAAS,OAC1Cu6U,YAAYn5U,KAAKD,KAAKM,GAAG,2DACzBgtC,GAAGw4E,IA3D8C,GAArD,mBAAS,CAAEgyL,mBAAoB,cAAY3mB,S,oDAClC,GAAT,W,gBAAmD,mB,OAAA,IAApB,gDAAoB,W,2CAC1C,GAAT,W,qEAHUg7F,EAAiC,GAD7C,uB,uBAQuB,mB,OAAA,IAAJ,gBAAI,YAPXA,GAAb,I,2ECNAxwX,EAAOD,QAAU,ilC,6lBCKjB,aAOE,aANsD,KAAAmD,MAA+B,GAC/B,KAAAutX,cAAgB,GAC5D,KAAAC,WAAgC,GAElC,KAAAC,WAAyC,GA0CnD,OArCS,YAAA/iU,SAAP,WACEtpD,KAAKssX,kBAGA,YAAAz4E,aAAP,WACE7zS,KAAKssX,kBAGA,YAAAC,kBAAP,WACEvsX,KAAKssX,kBAGC,YAAAA,eAAR,WAEE,GADAtsX,KAAKqsX,WAAa,GACdrsX,KAAKosX,YAAcpsX,KAAKpB,MAC1B,I,eAASlE,GACP,IAAMmrH,EAAS,EAAKumQ,WAAW1xX,GACzBqc,EAAQ,EAAKnY,MAAMigB,MAAK,SAAA3X,GAAK,OAAAA,EAAEu6Q,UAAY57J,EAAO47J,YACxD,EAAK4qG,WAAWxmQ,EAAO47J,UAAY1qQ,G,OAH5Brc,EAAI,EAAGA,EAAIsF,KAAKosX,WAAWxxX,OAAQF,I,EAAnCA,IAQL,YAAA4hX,qBAAR,SAA6BlnU,GAC3B,IAAMzrC,EAAQ3J,KAAKpB,MAAMs0K,WAAU,SAAAhsK,GAAK,OAAAA,EAAEu6Q,UAAYrsO,EAAYqsO,YAClE,IAAe,IAAX93Q,EACF3J,KAAKpB,MAAMuY,OAAOxN,EAAO,GACzB3J,KAAKqsX,WAAWj3U,EAAYqsO,WAAY,MACnC,CACL,IAAI+6F,EAA2C,IAAI,IACnDA,EAAoBxyU,WAAaoL,EAAYpL,WAC7CwyU,EAAoBhyU,cAAgB4K,EAAY74B,GAChDigW,EAAoB/6F,SAAWrsO,EAAYqsO,SAC3CzhR,KAAKpB,MAAM1D,KAAKshX,GAChBx8W,KAAKqsX,WAAWj3U,EAAYqsO,WAAY,IA3CU,GAArD,mBAAS,CAAEo2B,mBAAoB,cAAY3mB,S,oDACU,GAArD,mBAAS,CAAE2mB,mBAAoB,cAAY3mB,S,6DAClC,GAAT,W,yDAHUs7F,EAA2B,GADvC,uB,2BACYA,GAAb,I,qDCLA9wX,EAAOD,QAAU,kkB,ylBCEjB,0BACY,KAAAwxE,MAAQ,GACR,KAAAw/S,OAAS,KACT,KAAAC,SAAW,OACX,KAAAC,eAAiB,qBAC2B,KAAAC,YAAwB,GACxB,KAAA7C,oBAAgC,GAC5E,KAAA8C,uBAAkC,EAE5C,KAAAC,YAA0C,GAkE5C,OAhEE,YAAAxjU,SAAA,WACEtpD,KAAK+sX,WAGP,YAAArlI,aAAA,WACE1nP,KAAK+sX,WAGP,YAAAC,mBAAA,WACEhtX,KAAK+sX,WAGP,YAAAE,2BAAA,WACEjtX,KAAK+sX,WAGP,YAAAA,QAAA,sBACE/sX,KAAK8sX,YAAc,GACd9sX,KAAKitE,OACVjtE,KAAKitE,MAAM9lE,SAAQ,SAAA3G,GACjB,IAAM+b,EAAK/b,EAAK,EAAKisX,QACrB,EAAKK,YAAYvwW,GAAM7b,MAAMC,QAAQ,EAAKisX,eAAkD,IAAlC,EAAKA,YAAYv7W,QAAQkL,OAIvF,YAAAw9H,SAAA,SAASv5I,GACP,IAAM+b,EAAK/b,EAAKR,KAAKysX,QACfS,EAAa1sX,EAAKR,KAAK2sX,gBAK7B,GAHKjsX,MAAMC,QAAQX,KAAK4sX,eAAc5sX,KAAK4sX,YAAc,IACpDlsX,MAAMC,QAAQX,KAAK+pX,uBAAsB/pX,KAAK+pX,oBAAsB,IAErE/pX,KAAK8sX,YAAYvwW,IAEmB,IAAlCvc,KAAK4sX,YAAYv7W,QAAQkL,IAC3Bvc,KAAK4sX,YAAY1xX,KAAKqhB,GAEN,MAAd2wW,IAAwE,IAAlDltX,KAAK+pX,oBAAoB14W,QAAQ67W,IACzDltX,KAAK+pX,oBAAoB7uX,KAAKgyX,OAE3B,CAEL,IAAM/0T,EAAMn4D,KAAK4sX,YAAYv7W,QAAQkL,GAGrC,IAFa,IAAT47C,GAAYn4D,KAAK4sX,YAAYz1W,OAAOghD,EAAK,GAE3B,MAAd+0T,EAAoB,CACtB,IAAMC,EAAOntX,KAAK+pX,oBAAoB14W,QAAQ67W,IAChC,IAAVC,GAAantX,KAAK+pX,oBAAoB5yW,OAAOg2W,EAAM,MAI7D,sBAAI,2CAA4B,C,IAAhC,sBACE,SAAKntX,KAAKitE,QAAUjtE,KAAK4sX,cAClB5sX,KAAKitE,MAAMpuD,MAAK,SAAAre,GACrB,OAAOA,EAAKkiD,qBAAuB,EAAKoqU,YAAYtsX,EAAK,EAAKisX,a,gCAIlE,sBAAI,8CAA+B,C,IAAnC,sBACE,SAAKzsX,KAAKitE,QAAUjtE,KAAK4sX,cAClB5sX,KAAKitE,MAAMpuD,MAAK,SAAAre,GACrB,OAAQA,EAAKkiD,qBAAuB,EAAKoqU,YAAYtsX,EAAK,EAAKisX,a,gCAvEzD,GAAT,W,qDACS,GAAT,W,sDACS,GAAT,W,wDACS,GAAT,W,8DACqD,GAArD,mBAAS,CAAE50E,mBAAoB,cAAY3mB,S,0DACU,GAArD,mBAAS,CAAE2mB,mBAAoB,cAAY3mB,S,kEAClC,GAAT,W,sEAoEH,EA3EA,I,8DCFAx1R,EAAOD,QAAU,2xB,q6DCQjB,aAWE,WACUqK,EACAuU,GADA,KAAAvU,SACA,KAAAuU,KAVF,KAAA+yW,cAAwB,GACxB,KAAAC,aAAuB,GACvB,KAAAC,sBAAgC,GAChC,KAAAC,wBAAkC,EAUxCvtX,KAAKC,OAAS,aAAWC,UAAU,UAEnC,IAAIsa,EAAa,IAAOC,aACxBza,KAAKotX,cAAgB5yW,EAAa,QAElC,IAAI6yW,EAAe,IAAO9pT,eAC1BvjE,KAAKqtX,aAAeA,E,UA0DxB,OAvDe,YAAA/jU,SAAb,W,uFAEEtpD,KAAKqa,GAAGtF,UAAU,6BAA6B,WAC7C,EAAKy4W,iCAIPxtX,KAAKqa,GAAGtF,UAAU,+BAA+B,SAACg4U,GAChDttV,QAAQm0C,IAAI,4BAA6Bm5S,GACzC,EAAK0gC,qBAAqB1gC,MAI5B/sV,KAAKwtX,8BACL/tX,QAAQm0C,IAAI,0CAA2C5zC,KAAKutX,yBAGxDviQ,EAAU3uH,SAASw5G,qBAAqB,WAEhCj7G,OAAS,GACnBowH,EAAQ,GAAG9a,iBAAiB,SAAS,WAAM,OAAAy4D,eAAet5H,W,WAIvD,YAAAo+U,qBAAP,SAA4B1gC,GAC1BttV,QAAQm0C,IAAI,+BAAgCm5S,GAC5C/sV,KAAKstX,sBAAwBvgC,EAC7B/sV,KAAKwtX,8BACL/tX,QAAQm0C,IAAI,iDAAkD5zC,KAAKutX,uBAAwB,QAASvtX,KAAKstX,wBAGnG,YAAAE,4BAAR,WACE,IAAME,EAAa/tX,OAAO+7C,SAASwmG,SAC7ByrO,EAAchuX,OAAO+7C,SAASoF,KAEpCrhD,QAAQm0C,IAAI,2BAA4B85U,EAAY,QAASC,GAG7D3tX,KAAKutX,uBAAyBG,EAAW12W,SAAS,sBACrB22W,EAAY32W,SAAS,sBACN,uBAAf02W,EAE7BjuX,QAAQm0C,IAAI,qCAAsC5zC,KAAKutX,yBA1DzD,GADC,qB,gBACkB,mB,OAAA,IAAL,kBAAK,W,4BATRK,EAAM,GADlB,uB,uBAayB,mB,OAAA,IAAN,oBAAM,SACK,mBADL,OACK,IAAf,sCAAe,YAblBA,GAAb,I,gECRAlyX,EAAOD,QAAU,22DAA+3D,EAAQ,KAAuC,sa,8CCA/7DC,EAAOD,QAAU,2uB,2DCAjBC,EAAOD,QAAU,s0C,mDCAjBC,EAAOD,QAAU,w1B,uDCAjBC,EAAOD,QAAU,4gC,glBCMjB,aAKE,WACU6lD,GAAA,KAAAA,mBAHF,KAAA47S,UAAoC,GAK1Cl9V,KAAKC,OAAS,aAAWC,UAAU,wB,MAWvC,OARS,YAAA0Y,SAAP,SAAgBskV,GACdl9V,KAAKC,OAAOE,KAAK,WAAY+8V,GAC7Bl9V,KAAKk9V,UAAYA,GAAa,IAGzB,YAAAr3R,MAAP,WACE7lE,KAAKshD,iBAAiBv3C,UAjBb8jX,EAAoB,GADhC,uB,uBAO6C,mB,OAAA,IAAhB,wCAAgB,YANjCA,GAAb,I,8DCNAnyX,EAAOD,QAAU,gnD,yKCAjB,e,qbCKA,aADA,aAEwD,KAAAmD,MAAsC,GAClF,KAAAwtX,WAA4B,GAC5B,KAAA5hV,cAAwB,EAEd,KAAAsjV,WAAqB,GACjC,KAAAC,aAA8B,GAC9B,KAAA1B,WAAyC,GACzC,KAAA2B,cAA+B,GAyEzC,OAvES,YAAA1kU,SAAP,WACEtpD,KAAKiuX,aACLjuX,KAAKssX,iBACLtsX,KAAKkuX,uBAGA,YAAAr6E,aAAP,WACE7zS,KAAKssX,iBACLtsX,KAAKkuX,uBAGA,YAAA3B,kBAAP,WACEvsX,KAAKiuX,aACLjuX,KAAKssX,iBACLtsX,KAAKkuX,uBAGC,YAAAC,kBAAR,WACEnuX,KAAKiuX,cAGC,YAAAA,WAAR,sBACE,GAAKjuX,KAAKosX,WAAV,CAIA,IAAIt4W,EAAO9T,KAAKosX,WAAWvnX,QAAO,SAAAy2D,GAAK,OAAAA,EAAE/+C,KAAO,EAAKiuB,iBACrD,GAAIxqC,KAAK8tX,YAAyC,KAA3B9tX,KAAK8tX,WAAWnnU,OAAe,CACpD,IAAM,EAAS3mD,KAAK8tX,WAAWvyW,cAAcorC,OAC7C7yC,EAAOA,EAAKjP,QAAO,SAAAy2D,GAAK,OAAAA,EAAE59D,OAAkD,IAA1C49D,EAAE59D,KAAK6d,cAAclK,QAAQ,MAEjErR,KAAK+tX,aAAej6W,OARlB9T,KAAK+tX,aAAe,IAWhB,YAAAzB,eAAR,WAEE,GADAtsX,KAAKqsX,WAAa,GACbrsX,KAAKosX,YAAepsX,KAAKpB,MAC9B,I,eAASlE,GACP,IAAM6hB,EAAK,EAAK6vW,WAAW1xX,GAAG6hB,GAC9B,EAAK8vW,WAAW9vW,GAAM,EAAK3d,MAAMigB,MAAK,SAAAolD,GAAK,OAAAA,EAAEk3S,4BAA8B5+V,M,OAFpE7hB,EAAI,EAAGA,EAAIsF,KAAKosX,WAAWxxX,OAAQF,I,EAAnCA,IAMH,YAAAwzX,oBAAR,sBAEE,GADAluX,KAAKguX,cAAgB,GAChBhuX,KAAKosX,YAAepsX,KAAKpB,MAC9B,I,eAASlE,GACP,IAAM4gE,EAAI,EAAK8wT,WAAWpmX,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,KAAO,EAAK3d,MAAMlE,GAAGygX,6BACvD7/S,GACF,EAAK0yT,cAAc9yX,KAAKogE,I,OAHnB5gE,EAAI,EAAGA,EAAIsF,KAAKpB,MAAMhE,OAAQF,I,EAA9BA,IAQH,YAAAwuG,OAAR,SAAe9zD,GACRp1C,KAAKpB,QACRoB,KAAKpB,MAAQ,IAEf,IAAM+K,EAAQ3J,KAAKpB,MAAMs0K,WAAU,SAAAjvG,GAAK,OAAAA,EAAEk3S,4BAA8B/lU,EAAY74B,MACpF,IAAe,IAAX5S,EACF3J,KAAKpB,MAAMuY,OAAOxN,EAAO,GACzB3J,KAAKqsX,WAAWj3U,EAAY74B,KAAM,MAC7B,CACL,IAAM6xW,EAAkB,IAAIC,EAC5BD,EAAgB5jV,cAAgBxqC,KAAKwqC,cACrC4jV,EAAgBjT,0BAA4B/lU,EAAY74B,GACxDvc,KAAKpB,MAAM1D,KAAKkzX,GAChBpuX,KAAKqsX,WAAWj3U,EAAY74B,KAAM,EAEpCvc,KAAKkuX,uBA9E+C,GAArD,mBAAS,CAAEr2E,mBAAoB,cAAY3mB,S,oDAClC,GAAT,W,yDACS,GAAT,W,6DAEW,GAAX,a,0DALUo9F,EAAgC,GAD5C,wBACYA,GAAb,I,0DCLA5yX,EAAOD,QAAU,kkC,8kBCIjB,aAGE,WAAoB6lD,GAAA,KAAAA,mBAClBthD,KAAKtC,KAAO,K,MAMhB,OAHS,YAAAkb,SAAP,SAAgBlb,GACdsC,KAAKtC,KAAOA,GARH6wX,EAAmB,GAD/B,uB,uBAIuD,mB,OAAA,IAAhB,wCAAgB,YAH3CA,GAAb,I,0DCJA7yX,EAAOD,QAAU,6rB,49DCcjB,aAkDE,WACU+yX,EACA1rO,GAFV,WACU,KAAA0rO,gBACA,KAAA1rO,eAnCF,KAAA2rO,OAAmB,GAEnB,KAAAxhT,MAAe,GAEf,KAAAyhT,SAAkB,GAElB,KAAAC,cAA+B,GAM/B,KAAArxW,WAAoC,IAAI,wBAGxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,6DAE1B,SAAMgE,KAAKwuX,cAAc16W,KAAK9T,KAAKsd,YACvCna,MAAK,SAACsY,GAQL,OAFA,EAAKmzW,cAEEnzW,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAZ5B,MAAO,CAAP,EAAO,kBAoBPkD,KAAKC,OAAS,aAAWC,UAAU,oBACnCF,KAAK6uX,gBAAkB,EACvB7uX,KAAK8uX,UAAW,EAEhB9uX,KAAKsd,WAAWkiU,SAAW,G,YAkH/B,OA/GgB,YAAAl2R,SAAd,W,qBAA0BttD,GAAO,W,yDAE3BgE,KAAK+uX,OAAO9wW,WACdje,KAAKwuX,cAAcpxW,OAAO87B,iBAAmBl5C,KAAK+uX,OAAO9wW,UAClD,GAAMje,KAAKukV,aAFhB,M,OAEF,MAAO,CAAP,EAAO,U,yBAKG,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,SAAMgE,KAAKgtP,UACf7pP,MAAK,SAACsY,GAEL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGD,YAAA4+C,kBAAR,sBACEhvX,KAAKivX,eAAiB,GACtBjvX,KAAKitE,MAAM9lE,SAAQ,SAAAD,GACW,KAAxB,EAAK+nX,iBACP,EAAKA,gBAAkB,MAEzB,EAAKA,gBAAkB/nX,EAAEuhD,aAIhB,YAAAymU,gBAAb,SAA6B1uX,G,qBAAexE,GAAO,W,iCAiBjD,QAbmB,IAFfmzX,EAAanvX,KAAKyuX,OAAOv7M,WAAU,SAAA9oJ,GAAK,OAAAA,IAAM5pB,EAAK+b,QAGrDvc,KAAKyuX,OAAOvzX,KAAKsF,EAAK+b,IACtBvc,KAAK6uX,kBAAoB7uX,KAAK6uX,gBAC9B7uX,KAAKitE,MAAM/xE,KAAKsF,KAEhBR,KAAKyuX,OAAOt3W,OAAOg4W,EAAY,GAC/BnvX,KAAK6uX,kBAAoB7uX,KAAK6uX,gBAC9B7uX,KAAKitE,MAAM91D,OAAOg4W,EAAY,IAIhCnvX,KAAK4uX,cAEG5uX,KAAKovX,kBACX,KAAK,IAAUC,eACbrvX,KAAK+uX,OAAOhuO,kBAAoB/gJ,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MACtD,MAEF,KAAK,IAAU+yW,UACbtvX,KAAK+uX,OAAO/tO,aAAehhJ,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MACjD,MAEF,KAAK,IAAUgzW,YACbvvX,KAAK+uX,OAAO9tO,eAAiBjhJ,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MACnD,MAEF,KAAK,IAAU+8U,OACbt5V,KAAK+uX,OAAO3jU,SAAWprD,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MAAI,GACjD,MAEF,KAAK,IAAUizW,gBACbxvX,KAAK+uX,OAAOU,kBAAoBzvX,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MAAI,GAC1D,MAEF,KAAK,IAAUmzW,OACb1vX,KAAK+uX,OAAOjuO,UAAY9gJ,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MAC9C,MAEF,KAAK,IAAUozW,OACb3vX,KAAK+uX,OAAO3jU,SAAWprD,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MAAI,G,OAQrDvc,KAAKgvX,oB,WAIC,YAAAJ,YAAR,sBACM5uX,KAAK6uX,iBAAmB7uX,KAAK4vX,gBAC/B5vX,KAAK8uX,UAAW,EAChB9uX,KAAKsd,WAAWoiU,UAAUv4U,SAAQ,SAAAD,GAChC,EAAKynX,cAAcznX,EAAEqV,KAAM,OAI7Bvc,KAAK8uX,UAAW,EAChB9uX,KAAKsd,WAAWoiU,UAAUv4U,SAAQ,SAAAD,GAChC,IAAIqxV,EAAM,EAAKk2B,OAAOv7M,WAAU,SAAA9oJ,GAAK,OAAAA,IAAMljB,EAAEqV,MAE3C,EAAKoyW,cAAcznX,EAAEqV,KADV,IAATg8U,OA9JV,GADC,W,gBACqB,mB,OAAA,IAAN,UAAM,W,6BAGtB,GADC,W,gBACkC,mB,OAAA,IAAT,UAAS,W,uCAGnC,GADC,W,8DAVUs3B,EAAgB,GAD5B,uB,uBAoDuC,mB,OAAA,IAAb,UAAa,SACF,mBADE,OACF,IAAZ,UAAY,YApDzBA,GAAb,I,yECdAn0X,EAAOD,QAAU,q5E,gnBCSjB,aAcE,WACUm/D,EACAvgD,GADA,KAAAugD,QACA,KAAAvgD,KANF,KAAAy1W,gBAA0B,EAE1B,KAAA/6N,cAA8B,GAMpC/0J,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MAExB7Q,KAAK8vX,eAAiB9vX,KAAK6Q,OAAS7Q,KAAK6Q,MAAMskJ,UAAUv6J,OAAS,EAElEoF,KAAK+0J,cAAc75J,KAAK8E,KAAKqa,GAAGtF,UAAU,IAAwB/U,KAAK+vX,qBAAqB5wX,KAAKa,Q,QAoCrG,OAhCS,YAAAspD,SAAP,WAEE,IAAI0mU,EAAW,EAAE,+BACbC,EAAU,EAAE,wBACZC,EAAa,EAAE,eACfC,EAAiB,EAAE,mBACL,EAAE,oBAepB,EAAE9zX,UAAU0sE,OAAM,WAZhB,EAAE,iBAAiBz4B,SAAS,QAC5B0/U,EAAS1/U,SAAS,2BAClB6/U,EAAe7/U,SAAS,QAIxB4/U,EAAW38U,OAAM,WACfy8U,EAASt4P,YAAY,yBACrBu4P,EAAQv4P,YAAY,iBAYlB,YAAAq4P,qBAAR,WACE/vX,KAAK8vX,eAAiB9vX,KAAK6Q,OAAS7Q,KAAK6Q,MAAMskJ,UAAUv6J,OAAS,GArDpE,GADC,qB,0DAID,GADC,qB,qDALUw1X,EAAO,GAFnB,wBAAc,YACd,uB,uBAgB8B,mB,OAAA,IAAZ,UAAY,SACA,mBADA,OACA,IAAf,sCAAe,YAhBlBA,GAAb,I,gDCTA10X,EAAOD,QAAU,yoC,kqBCMjB,aAOE,WAAYsE,GAN0C,KAAAktE,MAA0B,GAEtE,KAAA29S,sBAAgC,EAKxC5qX,KAAKD,KAAOA,E,QAsDhB,OAnDE,YAAAupD,SAAA,WACE,IAAqB,UAAAtpD,KAAKitE,MAAL,eAAY,CAA5B,IAAM44C,EAAM,KACf7lH,KAAK6qX,sBAAsBhlQ,KAI/B,YAAAilQ,UAAA,WACE,IAAMjlQ,EAAS,IAAI,IACnBA,EAAOtpG,GAAK,EACZspG,EAAOv1G,MAAQtQ,KAAKitE,MAAMryE,OAC1BirH,EAAOi5O,UAAW,EAClBj5O,EAAOA,OAAS,GAChBA,EAAO45O,OAAS,EAChB55O,EAAOj2E,SAAW,GAClB5vC,KAAKitE,MAAM/xE,KAAK2qH,GAChB7lH,KAAK6qX,sBAAsBhlQ,IAG7B,YAAAklQ,aAAA,SAAaphX,GACX,IAAMk8G,EAAS7lH,KAAKitE,MAAMtjE,GAC1B3J,KAAK01U,qBAAqB/C,aAAa9sN,GACvC7lH,KAAKitE,MAAM91D,OAAOxN,EAAO,IAG3B,YAAAmyV,sBAAA,WACE,IAAM3gS,EAAmB,IACC,IAAtBn7D,KAAKitE,MAAMryE,QACbugE,EAAOjgE,KAAK,wFAEV8E,KAAK4qX,yBACmB5qX,KAAKitE,MAAMpuD,MAAK,SAAAnkB,GAAK,OAAAA,EAAE+kW,OAAS,MAChCz/V,KAAKitE,MAAMryE,OAAS,GAC5CugE,EAAOjgE,KAAK,4EAGhB,OAAOigE,GAGD,YAAA0vT,sBAAR,SAA8BhlQ,GAC5B,kBACGuzN,OAAO,UACPpyK,YAAY,6DACZwkD,WACA2tH,YAAYn5U,KAAKD,KAAKM,GAAG,uEACzB+4U,OAAO,UACPpyK,YAAY,2DACZwkD,WACA8tH,WAAU,SAAA16U,GAAS,OAAAA,GAAS,GAAKA,GAAS,OAC1Cu6U,YAAYn5U,KAAKD,KAAKM,GAAG,2DACzBgtC,GAAGw4E,IA3D8C,GAArD,mBAAS,CAAEgyL,mBAAoB,cAAY3mB,S,oDAClC,GAAT,W,gBAAmD,mB,OAAA,IAApB,gDAAoB,W,2CAC1C,GAAT,W,qEAHUm/F,EAA+B,GAD3C,uB,uBAQuB,mB,OAAA,IAAJ,gBAAI,YAPXA,GAAb,I,yECNA30X,EAAOD,QAAU,ilC,olBCIjB,aAEE,WACS6lD,GAAA,KAAAA,mB,MAeX,OAXS,YAAAgI,SAAP,aAGO,YAAA6/F,SAAP,aAIO,YAAAmnO,WAAP,WACEtwX,KAAKshD,iBAAiBv3C,UAfbwmX,EAAwB,GADpC,uB,uBAI4C,mB,OAAA,IAAhB,wCAAgB,YAHhCA,GAAb,I,gECJA70X,EAAOD,QAAU,w0B,24DCGjB,aAGE,WAAoB6lD,GAAA,KAAAA,mBADZ,KAAAyqT,aAAwB,I,MAWlC,OAPS,YAAAnzV,SAAP,SAAgBmzV,GACVzqV,MAAMyqV,KACV/rW,KAAK+rW,aAAeA,EAAa/sV,aAErB,YAAA09C,KAAd,W,qBAAsB1gE,GAAO,W,kDACpB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBATT,GADC,W,4DADU4qT,EAAwB,GADpC,uB,uBAIuD,mB,OAAA,IAAhB,wCAAgB,YAH3CA,GAAb,K,iFCHA90X,EAAOD,QAAU,wsB,iDCAjBC,EAAOD,QAAU,oS,gDCAjBC,EAAOD,QAAU,4L,m+DCiBjB,aAiBE,WACUm/D,EACAxgD,EACAgxV,EACApnB,EACAl+U,EACAuU,EACAyoI,EACAioK,GAPA,KAAAnwP,QACA,KAAAxgD,iBACA,KAAAgxV,gBACA,KAAApnB,mBACA,KAAAl+U,SACA,KAAAuU,KACA,KAAAyoI,eACA,KAAAioK,qBAfH,KAAA0lE,cAAwB,EAKvB,KAAA17N,cAA8B,GAYpC/0J,KAAKC,OAAS,aAAWC,UAAU,mBAGnCF,KAAK+0J,cAAc75J,KAAK8E,KAAKqa,GAAGtF,UAAU,4BAA6B/U,KAAKgtP,QAAQ7tP,KAAKa,QAEzFA,KAAK+0J,cAAc75J,KAAK8E,KAAKqa,GAAGtF,UAAU,IAAwB/U,KAAKsD,KAAKnE,KAAKa,Q,sBAmJrF,OAhJe,YAAAspD,SAAb,W,qBAAyBttD,GAAO,W,4CAGzB,YAAA0pE,OAAP,WACE1lE,KAAK+0J,cAAc5tJ,SAAQ,SAAAD,GAAK,OAAAA,EAAEykG,cAGtB,YAAAroG,KAAd,W,0FACE,SAAMtD,KAAKqoX,kB,OACX,OADA,SACA,GAAMroX,KAAKgtP,W,cAAX,S,YAGY,YAAAA,QAAd,W,+GAGE,OAFM5lF,EAAe,CAAC,qBAChB4jJ,EAAerrT,OAAO+7C,SAASwmG,SAASn7I,QAAQ,MAAO,IAAIukB,MAAM,KAAK,GACxE87I,EAAapwJ,SAASg0S,GACxB,MAIE3jT,EAAqCrH,KAAK8F,OAAOM,oBAErChG,QAAUiH,EAAYjH,OAAO6d,YAC3Ci7B,GAAoB7xC,EAAYjH,OAAO6d,WAGrCje,KAAK6Q,MAAM0kJ,gBAAkBv1J,KAAK6Q,MAAM0kJ,eAAeh5I,IAAM28B,EAC/D,IAEF,GAAMl5C,KAAKorT,oB,cAAX,SACGprT,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,gBAC1B11J,KAAKwpC,OAASxpC,KAAK6Q,MAAM6kJ,cAAclsH,OACvCxpC,KAAK62V,OAAS72V,KAAK6Q,MAAM6kJ,cAAcn5I,KAEtC28B,GAAqBl5C,KAAKwpC,QAAU,IAAKo8U,UAAY5lX,KAAKwpC,QAAU,IAAKs6S,OAAzE,OAED,EAAA9jV,KAAyB,GAAMA,KAAKgkV,iBAAiBtsQ,yBAAyBx+B,GAAiB,K,cAA/F,EAAKw3U,iBAAoB,SAA8E/rX,KAAI,SAAAuC,GAAI,OAAAA,EAAEupX,gBACjHzwX,KAAKywX,aAAezwX,KAAK0wX,iBAAiB1qX,MAAK,SAAA+gE,GAAW,OAAW,GAAXA,KAEvD/mE,KAAKywX,aAEN,GAAMzwX,KAAK2wX,eAAez3U,EAAiBl5C,KAAKwpC,OAAOxpC,KAAK62V,SAF3D,M,OAED,SACA9jT,aAAY,2E,uBAAY,SAAM/yC,KAAK2wX,eAAez3U,EAAiBl5C,KAAKwpC,OAAOxpC,KAAK62V,S,OAA5D,4BAAqE,K,iBAG1F,SAAM72V,KAAKsoX,mBAAmBpvU,I,OAArC,MAAO,CAAP,EAAO,kBAGD,YAAAmvU,eAAR,sBACMroX,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,eAAiB11J,KAAK6Q,MAAMskJ,UAAUv6J,OAAS,IAC1EoF,KAAKuoX,YAAcvoX,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,KAAO,EAAK1L,MAAM6kJ,cAAcz3I,eAI1E,YAAAmtS,gBAAd,W,qBAAiCpvT,GAAO,W,0DAEpB,O,sBAAA,GAAMgE,KAAKoa,eAAe0zI,c,cAApCvkG,EAAU,UAEhB,GAAMvpD,KAAK46D,MAAM66F,sBAAsBlsG,EAAQO,aAD5C,M,OACH,S,sDAGA9pD,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAwrX,mBAAd,SAAiCpvU,G,qBAA2Bl9C,GAAO,W,+DAE7Dk9C,GAAoBl5C,KAAK6Q,MAAMskJ,UAAUv6J,OAAS,GAEhDknW,OAAe,EAEf5oT,GAAoBl5C,KAAK6Q,MAAMskJ,UAAUxwJ,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ6nC,EAAiBl6B,YAAc,GAE5Ghf,KAAKC,OAAO0zC,MAAM,qCAElBmuT,EAAkB9hW,KAAK6Q,MAAMskJ,UAAUtwJ,QAAO,SAAAqC,GAAK,OAAAA,EAAEsiC,QAAU,IAAKo8U,YAAU,IAI9E9jB,EAAkB9hW,KAAK6Q,MAAMskJ,UAAUtwJ,QAAO,SAAAqC,GAAK,OAAAA,EAAEqV,IAAM28B,KAAkB,GAI3E4oT,EAAgBt4T,QAAU,IAAKo8U,UAAa9jB,EAAgBx7V,WAC9Dw7V,EAAkB9hW,KAAK6Q,MAAMskJ,UAAUtwJ,QAAO,SAAAqC,GAAK,OAAAA,EAAEsiC,QAAU,IAAKo8U,YAAU,IAG5E9jB,EACK,GAAM9hW,KAAKwoX,cAAc1mB,IAD9B,OApBF,M,OAqBA,MAAO,CAAP,EAAO,U,iCAEC5oT,IAAoBl5C,KAAK6Q,MAAM0kJ,eAAhC,MACF,GAAMv1J,KAAKwoX,cAAc,O,OAAhC,MAAO,CAAP,EAAO,U,yBAKG,YAAAA,cAAd,SAA4B9pW,G,qBAAmB1iB,GAAO,W,qEAE/C0iB,EAAD,MACK,GAAM1e,KAAK46D,MAAM+6F,uBAAuB,O,OAA/C,MAAO,CAAP,EAAO,U,OAGT,OAAI31J,KAAK6Q,MAAM0kJ,gBAAkBv1J,KAAK6Q,MAAM0kJ,eAAeh5I,IAAMmC,EAAQnC,GACvE,IAGa,GAAMvc,KAAK+qT,mBAAmBxoQ,gBAAgB7jC,EAAQnC,K,OAIrE,OAJInU,EAAW,SAEfsW,EAAQ0kU,gBAAkBh7U,EAE1B,GAAMpI,KAAK46D,MAAM+6F,uBAAuBj3I,I,cAAxC,UAGIzc,EAAWjC,KAAK8F,OAAOM,mBAAmBnE,UAEjCrH,OAAS,GAAKqH,EAASkxE,WAAW,cACzCs1S,EAA0BxmX,EAASqpB,MAAM,MAC/BnU,OAAO,EAAG,EAAGnX,KAAK6Q,MAAM0kJ,eAAeh5I,GAAGyC,YACpD0pW,EAAsBD,EAAczgX,KAAK,KAEzC/F,IAAaymX,GACf1oX,KAAK8F,OAAOyC,SAASmgX,G,OANrB,M,OAUK,SAAM1oX,KAAK8F,OAAOkD,gBAAgB,oBAAqB,CAAEiV,UAAWje,KAAK6Q,MAAM0kJ,eAAeh5I,M,OAArG,MAAO,CAAP,EAAO,U,yBAKE,YAAAo0W,eAAb,SAA4B1yW,EAAmBurB,EAAgBqtT,G,qIAE3C,MAAb54U,GAA+B,MAAVurB,GAAkBA,GAAU,IAAKo8U,SAAtD,OACH,EAAA5lX,KAAc,GAAMA,KAAKorW,cAAc7kG,cAAcswF,EAAO54U,K,OACvC,OADrB,EAAKg3B,OAAS,SACd,EAAAj1C,KAAqB,GAAMA,KAAKorW,cAAc5kG,yBAAyBvoP,I,cAAvE,EAAK2yW,cAAgB,S,oBAEA,MAAb3yW,GAA+B,MAAVurB,GAAkBA,GAAU,IAAKs6S,OAAtD,OACR,EAAA9jV,KAAqB,GAAMA,KAAKorW,cAAc5kG,yBAAyBvoP,K,OACzD,OADd,EAAK2yW,cAAgB,SACrB,EAAA5wX,KAAc,GAAMA,KAAKorW,cAAc9kG,iBAAiBroP,I,OAAxD,EAAKg3B,OAAS,S,sDAGdj1C,KAAK8iJ,aAAahmJ,MAAM,G,+BA3K5B,GADC,qB,gBACkB,mB,OAAA,IAAL,kBAAK,W,4BALR+zX,EAAU,GADtB,uB,uBAmB8B,mB,OAAA,IAAZ,UAAY,SACW,mBADX,OACW,IAAd,UAAc,SACF,mBADE,OACF,IAAb,UAAa,SACM,mBADN,OACM,IAAhB,UAAgB,SACpB,mBADoB,OACpB,IAAN,oBAAM,SACK,mBADL,OACK,IAAf,sCAAe,SACO,mBADP,OACO,IAAZ,UAAY,SACY,mBADZ,OACY,IAAlB,UAAkB,YAzBrCA,GAAb,I,oECjBAn1X,EAAOD,QAAU,wyB,u9DCYjB,aAYE,WACUm/D,EACA76D,EACAonE,EACA9sD,GAJV,WACU,KAAAugD,QACA,KAAA76D,OACA,KAAAonE,oBACA,KAAA9sD,KATF,KAAA06I,cAAmC,GAYzC/0J,KAAKC,OAAS,aAAWC,UAAU,mBAInCF,KAAK+0J,cAAc75J,KAAK8E,KAAKqa,GAAGtF,UAAU,8BAA8B,SAAA0G,GAAc,EAAKq1W,qBAAqBr1W,EAASpU,YAAa,OAEtIrH,KAAK+0J,cAAc75J,KAAK8E,KAAKqa,GAAGtF,UAAU,KAA6B,SAACtX,GAEtE,EAAKy7C,iBAAmBz7C,EAAQy7C,qB,YAwLtC,OAnLe,YAAAoQ,SAAb,W,0FAEE,SAAMtpD,KAAKgtP,W,cAAX,S,YAIK,YAAA/2O,gBAAP,SAAuBzT,EAA6BsD,GAElD9F,KAAK8F,OAASA,EAEdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,CAAC,GAAI,aACZpI,SAAU,yBACVoD,KAAM,YACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,yBACpB+H,SAAU,CACRk7U,KAAM,eAIV,CACE5gV,MAAO,OACPpI,SAAU,2BACVoD,KAAM,oBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,8BACpB+H,SAAU,CACRk7U,KAAM,oBACNytC,eAAe,IAInB,CACEruX,MAAO,eACPpI,SAAU,0CACVoD,KAAM,2BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,sCACpB+H,SAAU,CACRk7U,KAAM,uBACNytC,eAAe,IAInB,CACEruX,MAAO,QACPpI,SAAU,6BACVoD,KAAM,qBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,+BACpB+H,SAAU,CACRk7U,KAAM,qBACNytC,eAAe,OAkBV,YAAA/jI,QAAb,W,gGAGwB,OAFtBhtP,KAAKC,OAAO0zC,MAAM,iBAElB,EAAA3zC,KAAsB,GAAMA,KAAKgxX,cAAchxX,KAAK8F,S,OACpD,OADA,EAAKmrX,eAAiB,SACtB,GAAMjxX,KAAK8wX,qBAAqB9wX,KAAK8F,OAAOM,mBAAoB,I,cAAhE,S,YAIK,YAAA4qX,cAAP,SAAqBlrX,EAAgBtD,GAArC,WACQ3G,EAAW,GACXqC,EAAIsE,GAAkB,CAAEE,MAAO,MASrC,OARAoD,EAAOsJ,WAAWjI,SAAQ,SAAAoJ,GACpBrS,EAAEwE,QAAU6N,EAAI/N,OAAOE,MACzB7G,EAASX,KAAK,EAAKg2X,kBAAkB3gX,EAAKzK,IAE1CjK,EAASX,KAAKc,EAAQC,QAAQsU,OAI3BvU,EAAQgC,IAAInC,IAGR,YAAAq1X,kBAAb,SAA+B3gX,EAAezK,G,qHAEtCtD,EAAc+N,EAAI/N,OAClB6D,EAAgBxL,OAAOgI,OAAO,GAAI0N,GAEpC/N,EAAOlI,UAEHyb,EAAiBjQ,EAAOuI,UAAU6B,cAClC7I,EAAc,CAClB0G,UAAW,YAAevL,EAAOlI,SAAU,IAAOkE,IAAUsH,EAAOuI,UAAWN,UAAU/M,aAAa1G,UACrGyb,eAAgBA,EAChBrF,KAAMlO,EAAOkO,MAAQlO,EAAO4lE,cAGI,GAAMpoE,KAAKmnE,kBAAkBkyF,gBAAqBhyJ,KATlF,M,aAWE,oBAFA8L,EAA8B,UAEDpF,WAEzB5I,EAAc,IAAI,SAAO4Q,EAAgBjQ,EAAO2B,SAChDwd,EAAc,IAAI,sBAExB9R,EAAQpF,UAAUkI,gBAAgBgP,EAAa9f,GAC/C8f,EAAY7Z,eAAejG,GAE3BA,EAAYiK,WAAWjI,SAAQ,SAAAoJ,GAE7B,IAAIpI,EAAU9B,EAAS8B,KAAI,KAAIoI,EAAI/N,OAAO2F,KAAOoI,EAAI/N,OAAO2F,KAAOoI,EAAI/N,OAAOE,OAU9E6N,EAAIpI,KAAOA,KAIb,EAAA9B,EAAsB,GAAMrG,KAAKgxX,cAAc7rX,EAAa3C,KAxB1D,M,OA0BF,OAFA,EAAS4M,WAAa,SAEf,CAAP,EAAO/I,G,OAGT,MAAO,CAAP,EAAOA,G,OAGT,MAAO,CAAP,EAAOrK,EAAQC,QAAQoK,YAGlB,YAAA8qX,gBAAP,SAAuBt4D,EAAWxxT,EAAa+pX,EAAkBC,GAAjE,WACMx4D,GACFA,EAAU1xT,SAAQ,SAAAd,GACZgrX,GAAcD,IAChB/qX,EAASC,UAAW,GAClBD,EAAS8B,OAASd,EAAY7E,OAAO6D,SAAS8B,OAChD9B,EAASC,UAAW,GAClBD,EAAS+I,YACX,EAAK+hX,gBAAgB9qX,EAAS+I,WAAY/H,EAAa+pX,EAAkBC,EAAa,OAMvF,YAAAP,qBAAP,SAA4BzpX,EAAak6G,GACvCvhH,KAAKmxX,gBAAgBnxX,KAAKixX,eAAgB5pX,EAAak6G,EAAO,GAC1D,+BAAgCl6G,EAAY5D,qBAAqBoyD,SACnE71D,KAAK8wX,qBAAqBzpX,EAAY5D,qBAAqBoyD,QAAQpxD,2BAA4B88G,EAAQ,IAI9F,YAAA07J,wBAAb,SAAqCluN,EAAUgiB,G,iGAEzChiB,GACF/uD,KAAKk5C,iBAAmB6V,EAExB,GAAM/uD,KAAKgtP,YAHT,M,OAGF,S,mCAIG,YAAA7jG,SAAP,WACEnpJ,KAAK+0J,cAAc5tJ,SAAQ,SAAAD,GAAK,OAAAA,EAAEykG,cAtMpC,GADC,uB,gEATU2lR,EAAe,GAD3B,uB,uBAc8B,mB,OAAA,IAAZ,UAAY,SACT,mBADS,OACT,IAAJ,gBAAI,SAC0B,mBAD1B,OAC0B,IAAjB,0CAAiB,SACjB,mBADiB,OACjB,IAAf,sCAAe,YAhBlBA,GAAb,I,+DCZA51X,EAAOD,QAAU,uQ,qDCAjBC,EAAOD,QAAU,6Y,i9DCsBjB,aAoBE,WACUm/D,EACA22T,EACAC,EACA1uO,EACAkhM,EACA4sB,EACAvnT,EACA66R,GAPA,KAAAtpR,QACA,KAAA22T,UACA,KAAAC,aACA,KAAA1uO,eACA,KAAAkhM,mBACA,KAAA4sB,cACA,KAAAvnT,uBACA,KAAA66R,gBAvBF,KAAAutC,UAAY,oGAA2GtuW,KAAKk3D,SAG5H,KAAAq3S,aAAe,IACf,KAAA71W,SAAW,IAAIuhO,MACf,KAAA4zH,SAAwB,GACxB,KAAA2gB,WAAqB,EACrB,KAAAvxX,OAAc,GAEd,KAAAyoC,KAAa,IAAI,IACjB,KAAA+oV,qBAA+B,GAI/B,KAAAC,eAAyB,GAY/B7xX,KAAKC,OAAS,aAAWC,UAAU,QAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MACxB,IAAIghX,EAAiB,IAAOpuT,iBAC5BzjE,KAAK6xX,eAAiBA,E,oBAoG1B,OAhGe,YAAAj5W,SAAb,SAAsBxY,G,oGAEC,OAArB,EAAAJ,KAAqB,GAAMA,KAAKqpD,qBAAqBI,4B,OAC9B,OADvB,EAAKC,cAAgB,SACrB,EAAA1pD,KAAuB,GAAMA,KAAKqpD,qBAAqB8gQ,sB,OAC7B,OAD1B,EAAK2nE,gBAAkB,SACvB,EAAA9xX,KAA0B,GAAMA,KAAKqpD,qBAAqB+gQ,yB,cAA1D,EAAK2nE,mBAAqB,SAC1B/xX,KAAK4xX,qBAAuB5xX,KAAK0pD,cAAc9qD,MAE5CoB,KAAK8xX,gBAAgBE,8BACtBhyX,KAAKuxX,QAAQjoU,SAAStpD,KAAK8xX,gBAAgBlzX,OAG7CoB,KAAKiyX,sBAGLjyX,KAAKI,OAASA,EAETkhB,MAAMthB,KAAKI,OAAO6d,WAIrBje,KAAKie,UAAYje,KAAK6Q,MAAM0kJ,eAAeh5I,GAH3Cvc,KAAKie,UAAYje,KAAKI,OAAO6d,UAK/Bje,KAAKkyX,wBAAwBlyX,KAAKie,WAElCje,KAAKmyX,c,YAIC,YAAAF,oBAAR,WACE,IACE,IAAKjyX,KAAK+xX,mBAER,YADA/xX,KAAKC,OAAOikB,KAAK,uCAGnB,IAAKlkB,KAAK+xX,mBAAmBC,6BAE3B,YADAhyX,KAAKC,OAAOE,KAAK,uCAGnB,MAAOvE,GACPoE,KAAKC,OAAOnD,MAAM,mCAAoClB,KAI5C,YAAAs2X,wBAAd,SAAsCj0W,G,2GAGf,O,sBAAA,GAAMje,KAAKgkV,iBAAiBtsQ,yBAAyBz5D,GAAU,I,OACzD,OADrB+wV,EAAe,SAAuErqW,KAAI,SAAAuC,GAAI,OAAAA,EAAEqV,MAC3E,GAAMvc,KAAKgkV,iBAAiBtsQ,yBAAyBz5D,GAAU,I,OAQxE,OARXgxV,EAAoB,SAAsEtqW,KAAI,SAAAuC,GAAI,OAAAA,EAAEqV,MAErGyyV,EAAYp0W,OAAS,IACvBoF,KAAK6oC,KAAKmZ,SAAWgtT,GACnBC,EAAiBr0W,OAAS,IAC5BoF,KAAK6oC,KAAKoZ,cAAgBgtT,GAG5B,EAAAjvW,KAAgB,GAAMA,KAAK4wW,YAAYhoU,gBAAgB3qB,EAAUje,KAAK6oC,O,cAAtE,EAAKmoU,SAAW,SACbhxW,KAAKgxW,WACNhxW,KAAK2xX,WAAaxuW,KAAKE,MAAMF,KAAKk3D,SAAWr6E,KAAKgxW,SAASp2W,QAC3DoF,KAAKgxW,SAAS7pW,SAAQ,SAACD,EAAEyC,GACnBA,GAAS,EAAKgoX,WAChBzqX,EAAEkrX,iBAAiB,EAEnBlrX,EAAEkrX,iBAAkB,M,4DAOvB,YAAAD,YAAP,sBACEnyX,KAAK6b,SAAS3e,OAAS,WACrB,EAAKg3C,SAAU,IAAK76B,MAAQmI,UAC5B,EAAK6wW,sBAEPryX,KAAK0xC,WAAY,IAAKr4B,MAAQmI,UAC9BxhB,KAAK6b,SAASlf,IAAMqD,KAAKyxX,WAElB,YAAAY,mBAAP,WACI,IAAIC,EACAC,EACA53V,GAAY36B,KAAKk0C,QAAUl0C,KAAK0xC,WAAa,IAC7C8gV,EAAiC,EAApBxyX,KAAK0xX,aAEtBY,EAAWvuU,QAAQyuU,EAAa73V,GAAU6L,QAAQ,IAClD+rV,EAAYxuU,QAAQuuU,EAAW,MAAM9rV,QAAQ,IAC7Bud,QAAQwuU,EAAY,MAAM/rV,QAAQ,IAEnC,GACfxmC,KAAK8iJ,aAAaviJ,QAAQ,yCA/HrBkyX,EAAQ,GADpB,a,uBAsB8B,mB,OAAA,IAAZ,UAAY,SACH,mBADG,OACH,IAAP,UAAO,SACM,mBADN,OACM,IAAV,UAAU,SACI,mBADJ,OACI,IAAZ,UAAY,SACQ,mBADR,OACQ,IAAhB,UAAgB,SACV,mBADU,OACV,IAAX,UAAW,SACkB,mBADlB,OACkB,IAApB,UAAoB,SACd,mBADc,OACd,IAAb,kCAAa,YA5B3BA,GAAb,I,kECtBA/2X,EAAOD,QAAU,4SAAgT,EAAQ,KAAiD,w0C,smBCO1X,aAsBE,aAnBQ,KAAA2E,OAAc,GAGd,KAAAod,MAAgB,IAAI,IAkB1Bxd,KAAKC,OAAS,aAAWC,UAAU,mB,QAIvC,OAtBE,GADC,W,gBACoB,mB,OAAA,IAAN,UAAM,W,4BAGrB,GADC,W,0DAID,GADC,W,mEAID,GADC,W,gBACqC,mB,OAAA,IAAd,UAAc,W,qCAGtC,GADC,W,wEAjBUwyX,EAAe,GAD3B,uB,2BACYA,GAAb,I,qECPAh3X,EAAOD,QAAU,+1T,i6DCQjB,aAME,WACU6lD,EACAwhG,EACA6vO,GAFA,KAAArxU,mBACA,KAAAwhG,eACA,KAAA6vO,gBANF,KAAA1lT,MAA4B,GAC5B,KAAA2lT,UAAoB,EAM1B5yX,KAAKC,OAAS,aAAWC,UAAU,sB,UAavC,OAVe,YAAA0Y,SAAb,SAAsB4kE,G,qBAAaxhF,GAAO,W,0DAEzB,O,sBAAA,GAAMgE,KAAK2yX,cAAcj5G,WAAWl8L,EAAMq1S,W,cAAnD9D,EAAS,SACb/uX,KAAKitE,MAAS8hT,GAAUA,EAAOztO,YAAeytO,EAAOztO,YAAc,GACnEthJ,KAAK4yX,UAAY5yX,KAAKitE,MAAM1nB,QAAO,SAACutU,EAAKtyX,GAAS,OAAAsyX,EAAM/uU,OAAOvjD,EAAKi/V,UAAS,G,+BAE7Ez/V,KAAK8iJ,aAAahmJ,MAAM,GACxBkD,KAAKshD,iBAAiBv3C,S,+BApBfgpX,EAAkB,GAD9B,uB,uBAQ6C,mB,OAAA,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,UAAa,YAT3BA,GAAb,K,0FCRAr3X,EAAOD,QAAU,wvF,ugECSjB,aAaE,WACUqnJ,EACAohM,GADA,KAAAphM,eACA,KAAAohM,gBAZF,KAAA9jV,OAAc,GAQd,KAAA6sE,MAA4B,GAKlCjtE,KAAKC,OAAS,aAAWC,UAAU,wBACnCF,KAAK4yX,UAAY,E,UAyDrB,OArDgB,YAAAzzX,KAAd,W,qBAAsBnD,GAAO,W,kCAC3BgE,KAAKC,OAAO0zC,MAAM,QACd3zC,KAAK+uX,SACP/uX,KAAKitE,MAAQjtE,KAAK+uX,OAAOztO,YACzBthJ,KAAKgzX,e,WAIK,YAAAA,YAAd,W,qBAA6Bh3X,GAAO,W,6CAClCgE,KAAK4yX,UAAY,EACjB5yX,KAAK+uX,OAAOztO,YAAYn6I,SAAQ,SAAC8rX,GAC/B,EAAKL,WAAa7uU,OAAOkvU,EAAiBxzB,WAGxCz/V,KAAK4yX,UAAY,KACnB5yX,KAAK8iJ,aAAahmJ,MAAM,yE,WAIf,YAAAoyX,gBAAb,SAA6BgE,G,qBAAqCl3X,GAAO,W,wCACvEgE,KAAKC,OAAO0zC,MAAM,mBACdhqC,EAAQ3J,KAAK+uX,OAAOztO,YAAY4xB,WAAU,SAAAhsK,GAAK,OAAAA,EAAEukD,cAAgBynU,EAAiBznU,cAAgBvkD,EAAEyiE,yBAA2BupT,EAAiBvpT,2BAE/IupT,EAAiBC,YAIpBD,EAAiBC,aAAc,GAH/BD,EAAiBC,aAAc,EAC/BD,EAAiBzzB,OAAS,GAK5Bz/V,KAAK+uX,OAAOztO,YAAY33I,GAASupX,EACjClzX,KAAKgzX,c,WAGA,YAAAprB,iBAAP,SAAwBnqW,GACtBuC,KAAK8iJ,aAAa3iJ,KAAK1C,IAGX,YAAAmlX,wBAAd,SAAsCsQ,G,qBAAqCl3X,GAAO,W,+DAMhF,OALIoE,EAAc,CAChB8yX,iBAAkBA,EAClBnE,OAAQ/uX,KAAK+uX,QAGf,GAAM/uX,KAAKkkV,cAAczoS,KAAK,CAC5B1tC,UAAW,IACXyP,MAAOpd,IACNs4J,YAAW,SAACj9I,GACRA,EAASw9B,cACZ,EAAK+5U,kB,cALT,S,YA1DF,GAFC,WACA,a,gBACqB,mB,OAAA,IAAN,UAAM,W,6BAPXI,EAAoB,GADhC,uB,uBAeqC,mB,OAAA,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,YAf3BA,GAAb,I,4FCTA13X,EAAOD,QAAU,giI,6gECSjB,aAYE,WACUo9W,GAAA,KAAAA,4BAVF,KAAAwa,YAAkC,IAAI,IAMtC,KAAA/1W,WAAoC,IAAI,wBAM9Ctd,KAAKC,OAAS,aAAWC,UAAU,wBACnCF,KAAKsd,WAAWkiU,SAAW,G,QA4B/B,OAzBgB,YAAArgV,KAAd,W,qBAAsBnD,GAAO,W,wDAER,OAAnB,EAAAgE,KAAmB,GAAMA,KAAK64W,0BAA0Br6W,O,cAAxD,EAAK60X,YAAc,SAChBrzX,KAAK+uX,SAEN/uX,KAAK+uX,OAAO3tO,YAAY,GAAGxiJ,MAAQ,KACnCoB,KAAK+uX,OAAO3tO,YAAY,GAAGxiJ,MAAQ,KACnCoB,KAAK+uX,OAAO3tO,YAAY,GAAGxiJ,MAAQ,KACnCoB,KAAK+uX,OAAO3tO,YAAY,GAAGxiJ,MAAQ,KAEnCoB,KAAK+uX,OAAO3tO,YAAY,GAAGvnC,SAAW,KACtC75G,KAAK+uX,OAAO3tO,YAAY,GAAGvnC,SAAW,KACtC75G,KAAK+uX,OAAO3tO,YAAY,GAAGvnC,SAAW,KACtC75G,KAAK+uX,OAAO3tO,YAAY,GAAGvnC,SAAW,KAEtC75G,KAAK+uX,OAAO3tO,YAAY,GAAGulN,KAAO,OAAKpgU,EACvCvmC,KAAK+uX,OAAO3tO,YAAY,GAAGulN,KAAO,OAAKx7L,EACvCnrK,KAAK+uX,OAAO3tO,YAAY,GAAGulN,KAAO,OAAK5rN,EACvC/6I,KAAK+uX,OAAO3tO,YAAY,GAAGulN,KAAO,OAAKnvT,G,YA9B3C,GAFC,WACA,a,gBACqB,mB,OAAA,IAAN,UAAM,W,6BAPX87U,EAAoB,GADhC,uB,uBAc+D,mB,OAAA,IAAzB,UAAyB,YAbnDA,GAAb,I,4FCTA53X,EAAOD,QAAU,iyC,4gECkBjB,aA0BE,WACUorX,EACA/jO,GAFV,WACU,KAAA+jO,oBACA,KAAA/jO,eAzBF,KAAA1iJ,OAAc,GAed,KAAA6sE,MAAe,GACf,KAAAwhT,OAAmB,GACnB,KAAAE,cAA+B,GAE/B,KAAArxW,WAAoC,IAAI,wBAexC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAK6mX,kBAAkB70N,aAAahyJ,KAAKsd,WAAYtd,KAAK+uX,OAAO3jU,UAC3EjoD,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBATPkD,KAAKC,OAAS,aAAWC,UAAU,yBACnCF,KAAK6uX,gBAAkB,EACvB7uX,KAAK8uX,UAAW,EAEhB9uX,KAAKsd,WAAWkiU,SAAW,G,YA4H/B,OA9GgB,YAAAl2R,SAAd,W,qBAA0BttD,GAAO,W,yDAC3BgE,KAAK+uX,OAAO9wW,WACdje,KAAK6mX,kBAAkBzpW,OAAO87B,iBAAmBl5C,KAAK+uX,OAAO9wW,UAKtD,GAAMje,KAAKukV,aANhB,M,OAMF,MAAO,CAAP,EAAO,U,yBAIG,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGD,YAAA4+C,kBAAR,sBACEhvX,KAAKivX,eAAiB,GACtBjvX,KAAKitE,MAAM9lE,SAAQ,SAACD,EAAGyC,GACjBA,EAAQ,IACV,EAAKslX,gBAAkB,MAGzB,IAAMsE,EAAgB,IAAOrsX,EAAE6iD,WAAWnqC,OAAO,oBACjD,EAAKqvW,gBAAkBsE,MAId,YAAArE,gBAAb,SAA6B1uX,G,qBAAmBxE,GAAO,W,iCAiBrD,QAdmB,IAFfmzX,EAAanvX,KAAKyuX,OAAOv7M,WAAU,SAAA9oJ,GAAK,OAAAA,IAAM5pB,EAAK+b,QAGrDvc,KAAKyuX,OAAOvzX,KAAKsF,EAAK+b,IACtBvc,KAAK6uX,kBAAoB7uX,KAAK6uX,gBAC9B7uX,KAAKitE,MAAM/xE,KAAKsF,KAGhBR,KAAKyuX,OAAOt3W,OAAOg4W,EAAY,GAC/BnvX,KAAK6uX,kBAAoB7uX,KAAK6uX,gBAC9B7uX,KAAKitE,MAAM91D,OAAOg4W,EAAY,IAGhCnvX,KAAK4uX,cAGG5uX,KAAKovX,kBACX,KAAK,IAAUoE,UACf,KAAK,IAAUC,cACM,GAAftE,EACFnvX,KAAK+uX,OAAOluO,YAAY3lJ,KAAKsF,EAAK+b,IAElCvc,KAAK+uX,OAAOluO,YAAY1pI,OAAOg4W,EAAY,G,OASjDnvX,KAAKgvX,oB,WAsBC,YAAAJ,YAAR,sBACQ8E,EAAsB1zX,KAAKitE,MAAMpuD,MAAK,SAAA3X,GAAK,OAAAA,EAAEqyV,aAAe,IAAWS,eACvE25B,EAAoB3zX,KAAKitE,MAAMpuD,MAAK,SAAA3X,GAAK,OAAAA,EAAEqyV,aAAe,IAAWU,aAE3Ej6V,KAAKsd,WAAWoiU,UAAUv4U,SAAQ,SAAAD,GAC5BA,EAAEqyV,aAAe,IAAWS,YAE9B,EAAK20B,cAAcznX,EAAEqV,IAAMm3W,IAAwB,EAAKzmT,MAAMpuD,MAAK,SAAAnkB,GAAK,OAAAA,EAAE6hB,KAAOrV,EAAEqV,MAC1ErV,EAAEqyV,aAAe,IAAWU,UAErC,EAAK00B,cAAcznX,EAAEqV,IAAMo3W,IAAsB,EAAK1mT,MAAMpuD,MAAK,SAAAnkB,GAAK,OAAAA,EAAE6hB,KAAOrV,EAAEqV,MAGjF,EAAKoyW,cAAcznX,EAAEqV,KAAM,MApJjC,GADC,W,gBACqB,mB,OAAA,IAAN,UAAM,W,6BAGtB,GADC,W,gBACkC,mB,OAAA,IAAT,UAAS,W,uCAGnC,GADC,W,8DAXUq3W,EAAqB,GADjC,uB,uBA4B+C,mB,OAAA,IAAjB,UAAiB,SACV,mBADU,OACV,IAAZ,UAAY,YA5BzBA,GAAb,I,2FClBAl4X,EAAOD,QAAU,6mF,8hECkBjB,aAoCE,WACUqnJ,EACA4iM,EACAmhC,EACA2H,GAJV,WACU,KAAA1rO,eACA,KAAA4iM,8BACA,KAAAmhC,oBACA,KAAA2H,gBAnCF,KAAAhxW,MAAgB,IAAI,IAepB,KAAAixW,OAAmB,GAEnB,KAAAE,cAA+B,GAE/B,KAAA1hT,MAAe,GAEf,KAAAyhT,SAAkB,GAIlB,KAAApxW,WAAoC,IAAI,wBAmDxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,kCAChCgE,KAAKC,OAAO0zC,MAAM,c,WAzCnB3zC,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,mBAEnCF,KAAK6uX,gBAAkB,EACvB7uX,KAAK8uX,UAAW,EAEhB9uX,KAAKsd,WAAWkiU,SAAW,G,kBAiH/B,OA7GgB,YAAAl2R,SAAd,W,qBAA0BttD,GAAO,W,yDAE3BgE,KAAK+uX,OAAO9wW,WAEdje,KAAKwuX,cAAcpxW,OAAO87B,iBAAmBl5C,KAAK+uX,OAAO9wW,UAEpDqD,MAAMthB,KAAK+uX,OAAO3jU,UAAnB,OACFprD,KAAKorD,SAAWprD,KAAK+uX,OAAO3jU,SAC5B,GAAMprD,KAAKukV,cANX,M,OAMA,S,iBAGK,SAAMvkV,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yBAIG,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GAEL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBA4BK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGD,YAAA4+C,kBAAR,sBACEhvX,KAAKivX,eAAiB,GACtBjvX,KAAKitE,MAAM9lE,SAAQ,SAAAD,GACW,KAAxB,EAAK+nX,iBACP,EAAKA,gBAAkB,MAEzB,EAAKA,gBAAqB/nX,EAAEmnD,SAAS4xF,UAAS,IAAI/4I,EAAEmnD,SAAS6xF,aAIpD,YAAAgvO,gBAAb,SAA6B1uX,G,qBAAuBxE,GAAO,W,iCAiBzD,QAbmB,IAFfmzX,EAAanvX,KAAKyuX,OAAOv7M,WAAU,SAAA9oJ,GAAK,OAAAA,IAAM5pB,EAAK+b,QAGrDvc,KAAKyuX,OAAOvzX,KAAKsF,EAAK+b,IACtBvc,KAAK6uX,kBAAoB7uX,KAAK6uX,gBAC9B7uX,KAAKitE,MAAM/xE,KAAKsF,KAEhBR,KAAKyuX,OAAOt3W,OAAOg4W,EAAY,GAC/BnvX,KAAK6uX,kBAAoB7uX,KAAK6uX,gBAC9B7uX,KAAKitE,MAAM91D,OAAOg4W,EAAY,IAGhCnvX,KAAK4uX,cAGG5uX,KAAKovX,kBACX,KAAK,IAAUoE,UACbxzX,KAAK+uX,OAAOluO,YAAc7gJ,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,M,OAQpDvc,KAAKgvX,oB,WAIC,YAAAJ,YAAR,sBACM5uX,KAAK6uX,iBAAmB7uX,KAAK4vX,gBAC/B5vX,KAAK8uX,UAAW,EAChB9uX,KAAKsd,WAAWoiU,UAAUv4U,SAAQ,SAAAD,GAChC,EAAKynX,cAAcznX,EAAEqV,KAAM,OAI7Bvc,KAAK8uX,UAAW,EAChB9uX,KAAKsd,WAAWoiU,UAAUv4U,SAAQ,SAAAD,GAChC,IAAIqxV,EAAM,EAAKk2B,OAAOv7M,WAAU,SAAA9oJ,GAAK,OAAAA,IAAMljB,EAAEqV,MAE3C,EAAKoyW,cAAcznX,EAAEqV,KADV,IAATg8U,OArJV,GADC,W,gBACoB,mB,OAAA,IAAN,UAAM,W,4BAGrB,GADC,W,gBACqB,mB,OAAA,IAAN,UAAM,W,6BAGtB,GADC,W,gBACkC,mB,OAAA,IAAT,UAAS,W,uCAGnC,GADC,W,8DAbUs7B,EAAkB,GAD9B,uB,uBAsCqC,mB,OAAA,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACpB,mBADoB,OACpB,IAAjB,UAAiB,SACR,mBADQ,OACR,IAAb,UAAa,YAxC3BA,GAAb,I,0FClBAn4X,EAAOD,QAAU,wtG,q/DCajB,aA+CE,WACUq4X,EACAhxO,GAFV,WACU,KAAAgxO,sBACA,KAAAhxO,eAhCF,KAAA2rO,OAAmB,GAEnB,KAAAE,cAA+B,GAE/B,KAAA1hT,MAAe,GAEf,KAAAyhT,SAAkB,GAIlB,KAAApxW,WAAoC,IAAI,wBAGxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,6DAE1B,SAAMgE,KAAK8zX,oBAAoBhgX,KAAK9T,KAAKsd,YAC7Cna,MAAK,SAACsY,GAOL,OAFA,EAAKmzW,cAEEnzW,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAX5B,MAAO,CAAP,EAAO,kBAmBPkD,KAAKC,OAAS,aAAWC,UAAU,0BACnCF,KAAK6uX,gBAAkB,EACvB7uX,KAAK8uX,UAAW,EAEhB9uX,KAAKsd,WAAWkiU,SAAW,G,YAyF/B,OAtFgB,YAAAl2R,SAAd,W,qBAA0BttD,GAAO,W,yDAE3BgE,KAAK+uX,OAAO9wW,WACdje,KAAK8zX,oBAAoB12W,OAAO87B,iBAAmBl5C,KAAK+uX,OAAO9wW,UACxD,GAAMje,KAAKukV,aAFhB,M,OAEF,MAAO,CAAP,EAAO,U,yBAIG,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,SAAMgE,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGD,YAAA4+C,kBAAR,sBACEhvX,KAAKivX,eAAiB,GACtBjvX,KAAKitE,MAAM9lE,SAAQ,SAAAD,GACW,KAAxB,EAAK+nX,iBACP,EAAKA,gBAAkB,MAEzB,EAAKA,gBAAkB/nX,EAAExJ,SAIhB,YAAAwxX,gBAAb,SAA6B1uX,G,qBAAqBxE,GAAO,W,iCAevD,QAZmB,IADfmzX,EAAanvX,KAAKyuX,OAAOv7M,WAAU,SAAA9oJ,GAAK,OAAAA,IAAM5pB,EAAK+b,QAErDvc,KAAKyuX,OAAOvzX,KAAKsF,EAAK+b,IACtBvc,KAAK6uX,kBAAoB7uX,KAAK6uX,gBAC9B7uX,KAAKitE,MAAM/xE,KAAKsF,KAEhBR,KAAKyuX,OAAOt3W,OAAOg4W,EAAY,GAC/BnvX,KAAK6uX,kBAAoB7uX,KAAK6uX,gBAC9B7uX,KAAKitE,MAAM91D,OAAOg4W,EAAY,IAGhCnvX,KAAK4uX,cAEG5uX,KAAKovX,kBACX,KAAK,IAAU7Q,aACbv+W,KAAK+uX,OAAOhrO,eAAiB/jJ,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MAAI,GACvD,MAEF,KAAK,IAAUw3W,sBACb/zX,KAAK+uX,OAAOiF,wBAA0Bh0X,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MAAI,G,OAQpEvc,KAAKgvX,oB,WAIC,YAAAJ,YAAR,sBACM5uX,KAAK6uX,iBAAmB7uX,KAAK4vX,gBAC/B5vX,KAAK8uX,UAAW,EAChB9uX,KAAKsd,WAAWoiU,UAAUv4U,SAAQ,SAAAD,GAChC,EAAKynX,cAAcznX,EAAEqV,KAAM,OAI7Bvc,KAAK8uX,UAAW,EAChB9uX,KAAKsd,WAAWoiU,UAAUv4U,SAAQ,SAAAD,GAChC,IAAIqxV,EAAM,EAAKk2B,OAAOv7M,WAAU,SAAA9oJ,GAAK,OAAAA,IAAMljB,EAAEqV,MAE3C,EAAKoyW,cAAcznX,EAAEqV,KADV,IAATg8U,OAnIV,GADC,W,gBACqB,mB,OAAA,IAAN,UAAM,W,6BAGtB,GADC,W,gBACkC,mB,OAAA,IAAT,UAAS,W,uCAGnC,GADC,W,8DAVU07B,EAAsB,GADlC,uB,uBAiDmD,mB,OAAA,IAAnB,UAAmB,SACd,mBADc,OACd,IAAZ,UAAY,YAjDzBA,GAAb,I,8FCbAv4X,EAAOD,QAAU,29G,o/DCgBjB,aA8CE,WACU+yX,EACA1rO,GAFV,WACU,KAAA0rO,gBACA,KAAA1rO,eA/BF,KAAA2rO,OAAmB,GAEnB,KAAAxhT,MAAe,GAEf,KAAAyhT,SAAkB,GAElB,KAAAC,cAA+B,GAM/B,KAAArxW,WAAoC,IAAI,wBAGxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,6DAE1B,SAAMgE,KAAKwuX,cAAc16W,KAAK9T,KAAKsd,YACvCna,MAAK,SAACsY,GAIL,OAFA,EAAKmzW,cAEEnzW,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,kBAgBPkD,KAAKC,OAAS,aAAWC,UAAU,oBACnCF,KAAK6uX,gBAAkB,EACvB7uX,KAAK8uX,UAAW,EAEhB9uX,KAAKsd,WAAWkiU,SAAW,G,YAkH/B,OA/GgB,YAAAl2R,SAAd,W,qBAA0BttD,GAAO,W,yDAE3BgE,KAAK+uX,OAAO9wW,WACdje,KAAKwuX,cAAcpxW,OAAO87B,iBAAmBl5C,KAAK+uX,OAAO9wW,UAClD,GAAMje,KAAKukV,aAFhB,M,OAEF,MAAO,CAAP,EAAO,U,yBAKG,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,SAAMgE,KAAKgtP,UACf7pP,MAAK,SAACsY,GAEL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGD,YAAA4+C,kBAAR,sBACEhvX,KAAKivX,eAAiB,GACtBjvX,KAAKitE,MAAM9lE,SAAQ,SAAAD,GACW,KAAxB,EAAK+nX,iBACP,EAAKA,gBAAkB,MAEzB,EAAKA,gBAAkB/nX,EAAEuhD,aAIhB,YAAAymU,gBAAb,SAA6B1uX,G,qBAAexE,GAAO,W,iCAiBjD,QAbmB,IAFfmzX,EAAanvX,KAAKyuX,OAAOv7M,WAAU,SAAA9oJ,GAAK,OAAAA,IAAM5pB,EAAK+b,QAGrDvc,KAAKyuX,OAAOvzX,KAAKsF,EAAK+b,IACtBvc,KAAK6uX,kBAAoB7uX,KAAK6uX,gBAC9B7uX,KAAKitE,MAAM/xE,KAAKsF,KAEhBR,KAAKyuX,OAAOt3W,OAAOg4W,EAAY,GAC/BnvX,KAAK6uX,kBAAoB7uX,KAAK6uX,gBAC9B7uX,KAAKitE,MAAM91D,OAAOg4W,EAAY,IAIhCnvX,KAAK4uX,cAEG5uX,KAAKovX,kBACX,KAAK,IAAUC,eACbrvX,KAAK+uX,OAAOhuO,kBAAoB/gJ,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MACtD,MAEF,KAAK,IAAU+yW,UACbtvX,KAAK+uX,OAAO/tO,aAAehhJ,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MACjD,MAEF,KAAK,IAAUgzW,YACbvvX,KAAK+uX,OAAO9tO,eAAiBjhJ,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MACnD,MAEF,KAAK,IAAU+8U,OACbt5V,KAAK+uX,OAAO3jU,SAAWprD,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MAAI,GACjD,MAEF,KAAK,IAAUizW,gBACbxvX,KAAK+uX,OAAOU,kBAAoBzvX,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MAAI,GAC1D,MAEF,KAAK,IAAUmzW,OACb1vX,KAAK+uX,OAAOjuO,UAAY9gJ,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MAC9C,MAEF,KAAK,IAAUozW,OACb3vX,KAAK+uX,OAAO3jU,SAAWprD,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MAAI,G,OAQrDvc,KAAKgvX,oB,WAIC,YAAAJ,YAAR,sBACM5uX,KAAK6uX,iBAAmB7uX,KAAK4vX,gBAC/B5vX,KAAK8uX,UAAW,EAChB9uX,KAAKsd,WAAWoiU,UAAUv4U,SAAQ,SAAAD,GAChC,EAAKynX,cAAcznX,EAAEqV,KAAM,OAI7Bvc,KAAK8uX,UAAW,EAChB9uX,KAAKsd,WAAWoiU,UAAUv4U,SAAQ,SAAAD,GAChC,IAAIqxV,EAAM,EAAKk2B,OAAOv7M,WAAU,SAAA9oJ,GAAK,OAAAA,IAAMljB,EAAEqV,MAE3C,EAAKoyW,cAAcznX,EAAEqV,KADV,IAATg8U,OA1JV,GADC,W,gBACqB,mB,OAAA,IAAN,UAAM,W,6BAGtB,GADC,W,gBACkC,mB,OAAA,IAAT,UAAS,W,uCAGnC,GADC,W,8DAVU27B,EAAgB,GAD5B,uB,uBAgDuC,mB,OAAA,IAAb,UAAa,SACF,mBADE,OACF,IAAZ,UAAY,YAhDzBA,GAAb,I,wFChBAx4X,EAAOD,QAAU,0/E,2mECiBjB,aAmDE,WACU04X,EACArxO,EACAohM,GAHV,WACU,KAAAiwC,+BACA,KAAArxO,eACA,KAAAohM,gBApCF,KAAAuqC,OAAmB,GAEnB,KAAAE,cAA+B,GAE/B,KAAA1hT,MAAe,GAIf,KAAA3vD,WAAoC,IAAI,wBAMxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAKm0X,6BAA6BrgX,KAAK9T,KAAKsd,WAAYtd,KAAK+uX,OAAO3jU,UAC9EjoD,MAAK,SAACsY,GAOL,OANI,EAAK24W,WAGT34W,EAASphB,KAAOohB,EAASphB,KAAKwK,QAAO,SAAAqC,GAAK,OAAAA,EAAE8xV,iBAAmB,IAAgBqiB,OAASn0W,EAAEmtX,gBAAkB,IAAe/6B,QAAUpyV,EAAEmtX,gBAAkB,IAAeC,aAFxK74W,EAASphB,KAAOohB,EAASphB,KAAKwK,QAAO,SAAAqC,GAAK,OAAAA,EAAEsjC,eAAiB,EAAKA,iBAGlE/uB,EAASgkU,aAAehkU,EAASphB,KAAKO,OACtC,EAAKg0X,cACEnzW,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAX5B,MAAO,CAAP,EAAO,kBAsBPkD,KAAKC,OAAS,aAAWC,UAAU,+BACnCF,KAAK6uX,gBAAkB,EACvB7uX,KAAK8uX,UAAW,E,cAmGpB,OAhGgB,YAAAxlU,SAAd,W,qBAA0BttD,GAAO,W,yDAE3BgE,KAAK+uX,OAAO9wW,WACdje,KAAKm0X,6BAA6B/2W,OAAO87B,iBAAmBl5C,KAAK+uX,OAAO9wW,UACjE,GAAMje,KAAKukV,aAFhB,M,OAEF,MAAO,CAAP,EAAO,U,yBAIG,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGD,YAAA4+C,kBAAR,sBACEhvX,KAAKivX,eAAiB,GACtBjvX,KAAKitE,MAAM9lE,SAAQ,SAAAD,GACW,KAAxB,EAAK+nX,iBACP,EAAKA,gBAAkB,MAEzB,EAAKA,gBAAkB/nX,EAAEqtX,oBAIhB,YAAArF,gBAAb,SAA6B1uX,G,qBAA8BxE,GAAO,W,iCAiBhE,QAdmB,IAFfmzX,EAAanvX,KAAKyuX,OAAOv7M,WAAU,SAAA9oJ,GAAK,OAAAA,IAAM5pB,EAAK+b,QAGrDvc,KAAKyuX,OAAOvzX,KAAKsF,EAAK+b,IACtBvc,KAAK6uX,kBAAoB7uX,KAAK6uX,gBAC9B7uX,KAAKitE,MAAM/xE,KAAKsF,KAGhBR,KAAKyuX,OAAOt3W,OAAOg4W,EAAY,GAC/BnvX,KAAK6uX,kBAAoB7uX,KAAK6uX,gBAC9B7uX,KAAKitE,MAAM91D,OAAOg4W,EAAY,IAGhCnvX,KAAK4uX,cAGG5uX,KAAKovX,kBACX,KAAK,IAAU5pB,aACK,GAAf2pB,EACAnvX,KAAK+uX,OAAO5tO,yBAAyBjmJ,KAAKsF,EAAK+b,IAEhDvc,KAAK+uX,OAAO5tO,yBAAyBhqI,OAAOg4W,EAAY,G,OAS9DnvX,KAAKgvX,oB,WAIC,YAAAJ,YAAR,sBACM5uX,KAAK6uX,iBAAmB7uX,KAAK4vX,gBAC/B5vX,KAAK8uX,UAAW,EAChB9uX,KAAKsd,WAAWoiU,UAAUv4U,SAAQ,SAAAD,GAChC,EAAKynX,cAAcznX,EAAEqV,KAAM,OAI7Bvc,KAAK8uX,UAAW,EAChB9uX,KAAKsd,WAAWoiU,UAAUv4U,SAAQ,SAAAD,GAChC,IAAIqxV,EAAM,EAAKk2B,OAAOv7M,WAAU,SAAA9oJ,GAAK,OAAAA,IAAMljB,EAAEqV,MAE3C,EAAKoyW,cAAcznX,EAAEqV,KADV,IAATg8U,OASI,YAAAqqB,wBAAd,SAAsCrmW,G,qBAAavgB,GAAO,W,kDACxD,SAAMgE,KAAKkkV,cAAczoS,KAAK,CAC5B1tC,UAAW,IACXyP,MAAOjB,K,cAFT,S,YAlJF,GADC,W,gBACqB,mB,OAAA,IAAN,UAAM,W,6BAGtB,GADC,W,gBACkC,mB,OAAA,IAAT,UAAS,W,uCAGnC,GADC,W,8DAID,GADC,W,2DAiBD,GADC,W,6DA7BUi4W,EAA2B,GADvC,uB,uBAqDqE,mB,OAAA,IAA5B,UAA4B,SAChC,mBADgC,OAChC,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,YAtD3BA,GAAb,I,oGCjBA94X,EAAOD,QAAU,+mI,w/DCajB,aAuDE,WACUqqW,EACAhjN,GAFV,WACU,KAAAgjN,kBACA,KAAAhjN,eA1CF,KAAA2rO,OAAmB,GAEnB,KAAAE,cAA+B,GAE/B,KAAA1hT,MAAe,GAEf,KAAAyhT,SAAkB,GAIlB,KAAApxW,WAAoC,IAAI,wBAGxC,KAAAm3W,qBAA+B,EAE/B,KAAAznI,QAAU,6BAAUhxP,GAAO,W,oEAG5BgE,KAAKy0X,oBAAN,MACK,GAAMz0X,KAAK8lW,gBAAgBhyV,KAAK9T,KAAKsd,YAC3Cna,MAAK,SAACsY,GAEL,OADA,EAAKmzW,cACEnzW,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN1B,MAAO,CAAP,EAAO,U,OAUA,SAAMkD,KAAK8lW,gBAAgBr0M,sBAAsBzxJ,KAAKsd,YAC5Dna,MAAK,SAACsY,GAEL,OADA,EAAKmzW,cACEnzW,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN1B,MAAO,CAAP,EAAO,kBAeTkD,KAAKC,OAAS,aAAWC,UAAU,sBACnCF,KAAK6uX,gBAAkB,EACvB7uX,KAAK8uX,UAAW,EAEhB9uX,KAAKsd,WAAWkiU,SAAW,G,YAyG/B,OAtGgB,YAAAl2R,SAAd,W,qBAA0BttD,GAAO,W,yDAE3BgE,KAAK+uX,OAAO9wW,WACdje,KAAK8lW,gBAAgB1oV,OAAO87B,iBAAmBl5C,KAAK+uX,OAAO9wW,UACpD,GAAMje,KAAKukV,aAFhB,M,OAEF,MAAO,CAAP,EAAO,U,yBAIG,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAID,YAAA4+C,kBAAR,sBACEhvX,KAAKivX,eAAiB,GACtBjvX,KAAKitE,MAAM9lE,SAAQ,SAAAD,GACU,KAAxB,EAAK+nX,iBACN,EAAKA,gBAAkB,MAEzB,EAAKA,gBAAkB/nX,EAAExJ,SAIhB,YAAAwxX,gBAAb,SAA6B1uX,G,qBAAiBxE,GAAO,W,iCAkBnD,QAdmB,IAFfmzX,EAAanvX,KAAKyuX,OAAOv7M,WAAU,SAAA9oJ,GAAK,OAAAA,IAAM5pB,EAAK+b,QAGrDvc,KAAKyuX,OAAOvzX,KAAKsF,EAAK+b,IACtBvc,KAAK6uX,kBAAoB7uX,KAAK6uX,gBAC9B7uX,KAAKitE,MAAM/xE,KAAKsF,KAGhBR,KAAKyuX,OAAOt3W,OAAOg4W,EAAY,GAC/BnvX,KAAK6uX,kBAAoB7uX,KAAK6uX,gBAC9B7uX,KAAKitE,MAAM91D,OAAOg4W,EAAY,IAGhCnvX,KAAK4uX,cAGG5uX,KAAKovX,kBACX,KAAK,IAAUkF,SACf,KAAK,IAAUI,kBACb10X,KAAK+uX,OAAO9iU,WAAajsD,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MAAI,GACnD,MAEF,KAAK,IAAUo4W,UACb30X,KAAK+uX,OAAO7tO,YAAclhJ,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MAChD,MAEF,KAAK,IAAUq4W,kBACb50X,KAAK+uX,OAAO8F,oBAAsB70X,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MAAI,G,OAOhEvc,KAAKgvX,oB,WAIC,YAAAJ,YAAR,sBACM5uX,KAAK6uX,iBAAmB7uX,KAAK4vX,gBAC/B5vX,KAAK8uX,UAAW,EAChB9uX,KAAKsd,WAAWoiU,UAAUv4U,SAAQ,SAAAD,GAChC,EAAKynX,cAAcznX,EAAEqV,KAAM,OAI7Bvc,KAAK8uX,UAAW,EAChB9uX,KAAKsd,WAAWoiU,UAAUv4U,SAAQ,SAAAD,GAChC,IAAIqxV,EAAM,EAAKk2B,OAAOv7M,WAAU,SAAA9oJ,GAAK,OAAAA,IAAMljB,EAAEqV,MAE3C,EAAKoyW,cAAcznX,EAAEqV,KADV,IAATg8U,OAOG,YAAAu8B,WAAb,SAAwBC,G,0FAOhB,OAFJ/0X,KAAKy0X,qBAHJM,EAKG,GAAM/0X,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,kBAjKR,GADC,W,gBACqB,mB,OAAA,IAAN,UAAM,W,6BAGtB,GADC,W,gBACkC,mB,OAAA,IAAT,UAAS,W,uCAGnC,GADC,W,8DAVUywC,EAAkB,GAD9B,uB,uBAyD2C,mB,OAAA,IAAf,UAAe,SACN,mBADM,OACN,IAAZ,UAAY,YAzDzBA,GAAb,I,0FCbAt5X,EAAOD,QAAU,kwH,+mECiBjB,aAuBE,WACUqnJ,EACAqxO,EACAc,EACA/wC,GAJV,WACU,KAAAphM,eACA,KAAAqxO,+BACA,KAAAc,oBACA,KAAA/wC,gBAxBF,KAAA9jV,OAAc,GAed,KAAA80X,eAAwC,IAAI,wBAE5C,KAAA53W,WAAoC,IAAI,wBAcxC,KAAA63W,YAAc,6BAAUn5X,GAAO,W,kDAE9B,OADPgE,KAAKC,OAAO0zC,MAAM,mBACX,GAAM3zC,KAAKi1X,kBAAkBnhX,KAAK9T,KAAKk1X,eAAgBl1X,KAAKkoD,S,OAAnE,MAAO,CAAP,EAAO,kBAGD,KAAA8kM,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAKm0X,6BAA6B19N,kBAAkBz2J,KAAKsd,YACnEna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAZPkD,KAAKC,OAAS,aAAWC,UAAU,6BACnCF,KAAK4yX,UAAY,EACjB5yX,KAAKsd,WAAWusB,OAAOurV,UAAY,G,gBA4HvC,OAxGgB,YAAAj2X,KAAd,W,qBAAsBnD,GAAO,W,yDACnBgE,KAAK+uX,OACT/uX,KAAK+uX,OAAO7mU,QACdloD,KAAKkoD,OAASloD,KAAK+uX,OAAO7mU,OAC1BloD,KAAKm0X,6BAA6B/2W,OAAO87B,iBAAmBl5C,KAAK+uX,OAAO9wW,UACxEje,KAAKi1X,kBAAkB73W,OAAO87B,iBAAmBl5C,KAAK+uX,OAAO9wW,UAE7D,GAAMje,KAAKq1X,iBALT,M,OAOF,OAFA,SAEA,GAAMr1X,KAAKukV,Y,OAAX,SAEAvkV,KAAKgzX,cAELhzX,KAAK8iJ,aAAaviJ,QAAQ,iF,mCAIhB,YAAAgkV,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACDA,IACF,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,aACxC,EAAKniU,WAAWoiU,UAAUv4U,SAAQ,SAAAiuC,GAChC,IAAIkgV,EAAkD,CACpDzC,SAAU9uU,OAAO,EAAKgrU,OAAOxtO,kBAAkB3mJ,QAC/C4vC,cAAe4K,EAAY74B,GAC3B64B,YAAaA,EACbqqT,OAAQ,EACR0zB,aAAa,EACboC,iCAAkCngV,EAAYmgV,kCAEhD,EAAKxG,OAAOxtO,kBAAkBrmJ,KAAKo6X,UAIxCrpX,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAnB5B,MAAO,CAAP,EAAO,kBAuBK,YAAAu4X,aAAd,W,qBAA8Br5X,GAAO,W,iEACnCgE,KAAKC,OAAO0zC,MAAM,gB,iBAEoB,O,sBAAA,GAAM3zC,KAAKm1X,e,cAA3C15W,EAAgC,SACpCzb,KAAKk1X,eAAex1C,UAAYjkU,EAASphB,KACzC2F,KAAKk1X,eAAez1C,aAAehkU,EAASgkU,aAC5Cz/U,KAAKk1X,eAAex1C,UAAUv4U,SAAQ,SAAAD,GACpC,EAAKoW,WAAWusB,OAAOurV,UAAUl6X,KAAKgM,EAAEkkD,a,+BAI1CprD,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAk2X,YAAd,W,qBAA6Bh3X,GAAO,W,6CAClCgE,KAAK4yX,UAAY,EACjB5yX,KAAK+uX,OAAOxtO,kBAAkBp6I,SAAQ,SAACquX,GACrC,EAAK5C,WAAa7uU,OAAOyxU,EAAsB/1B,WAG7Cz/V,KAAK4yX,UAAY,KACnB5yX,KAAK8iJ,aAAahmJ,MAAM,yE,WAIf,YAAAoyX,gBAAb,SAA6BsG,G,qBAA+Cx5X,GAAO,W,wCACjFgE,KAAKC,OAAO0zC,MAAM,mBACdhqC,EAAQ3J,KAAK+uX,OAAOxtO,kBAAkB2xB,WAAU,SAAAhsK,GAAK,OAAAA,EAAEsjC,eAAiBgrV,EAAsBhrV,iBAE7FgrV,EAAsBrC,YAIzBqC,EAAsBrC,aAAc,GAHpCqC,EAAsBrC,aAAc,EACpCqC,EAAsB/1B,OAAS,GAIjCz/V,KAAK+uX,OAAOxtO,kBAAkB53I,GAAS6rX,EACvCx1X,KAAKgzX,c,WAGA,YAAAprB,iBAAP,SAAwBnqW,GACtBuC,KAAK8iJ,aAAa3iJ,KAAK1C,IAEX,YAAAmlX,wBAAd,SAAsC2S,G,qBAAqEv5X,GAAO,W,iEAUhH,OATIk3X,EAAqC,IAAI,KAC5BznU,aAAe8pU,EAAiC9pU,aACjEynU,EAAiBvpT,wBAA0B4rT,EAAiC5rT,wBACxEvpE,EAAc,CAChB8yX,iBAAkBA,EAClBnE,OAAQ/uX,KAAK+uX,OACb0G,QAAQ,GAGV,GAAMz1X,KAAKkkV,cAAczoS,KAAK,CAC5B1tC,UAAW,IACXyP,MAAOpd,IACNs4J,YAAW,SAACj9I,GACRA,EAASw9B,cACZ,EAAK+5U,kB,cALT,S,YA3IF,GAFC,WACA,a,gBACqB,mB,OAAA,IAAN,UAAM,W,6BAGtB,GADC,W,gBACkC,mB,OAAA,IAAT,UAAS,W,uCAVxB0C,EAAyB,GADrC,uB,uBAyBqC,mB,OAAA,IAAZ,UAAY,SACgC,mBADhC,OACgC,IAA5B,UAA4B,SACtB,mBADsB,OACtB,IAAjB,UAAiB,SACR,mBADQ,OACR,IAAb,kCAAa,YA3B3BA,GAAb,I,kGCjBAh6X,EAAOD,QAAU,soE,q+DCcjB,aAkDE,WACUk6X,EACA7yO,GAFV,WACU,KAAA6yO,cACA,KAAA7yO,eAjDF,KAAA1iJ,OAAc,GAiBd,KAAAquX,OAAmB,GAEnB,KAAAE,cAA+B,GAE/B,KAAA1hT,MAAe,GAEf,KAAAyhT,SAAkB,GAIlB,KAAApxW,WAAoC,IAAI,wBAGxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,6DAE1B,SAAMgE,KAAK21X,YAAY7hX,KAAK9T,KAAKsd,YACrCna,MAAK,SAACsY,GAOL,OAFA,EAAKmzW,cAEEnzW,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAX5B,MAAO,CAAP,EAAO,kBAmBPkD,KAAKC,OAAS,aAAWC,UAAU,kBACnCF,KAAK6uX,gBAAkB,EACvB7uX,KAAK8uX,UAAW,EAEhB9uX,KAAKsd,WAAWkiU,SAAW,G,YAyF/B,OArFgB,YAAAl2R,SAAd,W,qBAA0BttD,GAAO,W,yDAC3BgE,KAAK+uX,OAAO9wW,WACdje,KAAK21X,YAAYv4W,OAAO87B,iBAAmBl5C,KAAK+uX,OAAO9wW,UAChD,GAAMje,KAAKukV,aAFhB,M,OAEF,MAAO,CAAP,EAAO,U,yBAIG,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,SAAMgE,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGD,YAAA4+C,kBAAR,sBACEhvX,KAAKivX,eAAiB,GACtBjvX,KAAKitE,MAAM9lE,SAAQ,SAAAD,GACW,KAAxB,EAAK+nX,iBACP,EAAKA,gBAAkB,MAEzB,EAAKA,gBAAkB/nX,EAAExJ,SAIhB,YAAAwxX,gBAAb,SAA6B1uX,G,qBAAaxE,GAAO,W,iCAiB/C,QAbmB,IAFfmzX,EAAanvX,KAAKyuX,OAAOv7M,WAAU,SAAA9oJ,GAAK,OAAAA,IAAM5pB,EAAK+b,QAGrDvc,KAAKyuX,OAAOvzX,KAAKsF,EAAK+b,IACtBvc,KAAK6uX,kBAAoB7uX,KAAK6uX,gBAC9B7uX,KAAKitE,MAAM/xE,KAAKsF,KAGhBR,KAAKyuX,OAAOt3W,OAAOg4W,EAAY,GAC/BnvX,KAAK6uX,kBAAoB7uX,KAAK6uX,gBAC9B7uX,KAAKitE,MAAM91D,OAAOg4W,EAAY,IAGpCnvX,KAAK4uX,cAEO5uX,KAAKovX,kBACX,KAAK,IAAUza,KACb30W,KAAK+uX,OAAO7mU,OAASloD,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MAAI,GAC/C,MAEF,KAAK,IAAUq5W,cACb51X,KAAK+uX,OAAO8G,gBAAkB71X,KAAKitE,MAAMtoE,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MAAI,G,OAO5Dvc,KAAKgvX,oB,WAGC,YAAAJ,YAAR,sBACM5uX,KAAK6uX,iBAAmB7uX,KAAK4vX,gBAC/B5vX,KAAK8uX,UAAW,EAChB9uX,KAAKsd,WAAWoiU,UAAUv4U,SAAQ,SAAAD,GAChC,EAAKynX,cAAcznX,EAAEqV,KAAM,OAI7Bvc,KAAK8uX,UAAW,EAChB9uX,KAAKsd,WAAWoiU,UAAUv4U,SAAQ,SAAAD,GAChC,IAAIqxV,EAAM,EAAKk2B,OAAOv7M,WAAU,SAAA9oJ,GAAK,OAAAA,IAAMljB,EAAEqV,MAE3C,EAAKoyW,cAAcznX,EAAEqV,KADV,IAATg8U,OAnIV,GADC,W,gBACqB,mB,OAAA,IAAN,UAAM,W,6BAGtB,GADC,W,gBACkC,mB,OAAA,IAAT,UAAS,W,uCAGnC,GADC,W,8DAbUu9B,EAAc,GAD1B,uB,uBAoDmC,mB,OAAA,IAAX,UAAW,SACE,mBADF,OACE,IAAZ,UAAY,YApDzBA,GAAb,I,sFCdAp6X,EAAOD,QAAU,sjE,4kBCIjB,aAEE,WAAoBqK,GAAA,KAAAA,S,MAKtB,OAPaiwX,EAAU,GADtB,a,uBAGmC,mB,OAAA,IAAN,oBAAM,YAFvBA,GAAb,I,uDCJAr6X,EAAOD,QAAU,yrB,ynBCSjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,qB,MAgBvC,OAbE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,gBACVoD,KAAM,cACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,6CApBfi9W,EAAiB,GAD7B,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,yECTA5hX,EAAOD,QAAU,uD,yrECyCjB,aAsCE,WACUqK,EACA80D,EACAw7S,EACAuc,EACAnE,EACA1oB,EACAguB,EACAK,EACAtN,EACA8O,EACAzxC,EACAphM,EACA4iM,GAZA,KAAA5/U,SACA,KAAA80D,QACA,KAAAw7S,wBACA,KAAAuc,gBACA,KAAAnE,gBACA,KAAA1oB,kBACA,KAAAguB,sBACA,KAAAK,+BACA,KAAAtN,oBACA,KAAA8O,cACA,KAAAzxC,gBACA,KAAAphM,eACA,KAAA4iM,8BAhDF,KAAAtlV,OAAc,GAed,KAAA41X,UAAoB,EAEpB,KAAAx4W,MAAgB,IAAI,IAMpB,KAAAy4W,yBAAmC,EAGlC,KAAAC,cAAyB,GAC1B,KAAAC,gBAA0B,EAwBhCn2X,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,cAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,8BAwgB5B,OAniBE,sBAAW,yBAAU,C,IAArB,WACE,OAAO7Q,KAAKm2X,iB,gCA6BA,YAAAv9W,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,4EAIpEgE,KAAKI,OAASA,EAEdJ,KAAK2lV,2BAEArkU,MAAMlhB,EAAO6d,WAAd,a,GAEFje,KAAKie,WAAa7d,EAAO6d,WAErBje,KAAKie,UAAL,aACFje,KAAKwd,MAAMS,UAAYje,KAAKie,UAC5Bje,KAAKo2W,sBAAsBh5V,OAAO87B,iBAAmBl5C,KAAKie,UAC1Dje,KAAKwuX,cAAcpxW,OAAO87B,iBAAmBl5C,KAAKie,UAClDje,KAAKm0X,6BAA6B/2W,OAAO87B,iBAAmBl5C,KAAKie,UACjEje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,a,iBAGlC,O,wBAAvB,EAAAje,KAAuB,GAAMA,KAAKo2W,sBAAsB74V,U,cAAxD,EAAK64W,gBAAkB,SAElB90W,MAAMlhB,EAAOgrD,UAAd,OACFprD,KAAKwd,MAAM4tC,UAAYhrD,EAAOgrD,SAC9B,EAAAprD,KAAc,GAAMA,KAAKwuX,cAAclyW,QAAQtc,KAAKwd,MAAM4tC,Y,OAA1D,EAAKyqG,OAAS,S,wBAIXv0I,MAAMlhB,EAAO6rD,YAAd,OACFjsD,KAAKwd,MAAMyuC,YAAc7rD,EAAO6rD,WAChC,EAAAjsD,KAAgB,GAAMA,KAAK8lW,gBAAgBxpV,SAAStc,KAAKI,OAAO6rD,c,OAAhE,EAAK0jE,SAAW,S,wBAIbruG,MAAMlhB,EAAO2jJ,gBAAd,OACF/jJ,KAAKwd,MAAMumI,gBAAkB3jJ,EAAO2jJ,eACpC,EAAA/jJ,KAAoB,GAAMA,KAAK8zX,oBAAoBx3W,SAAStc,KAAKI,OAAO2jJ,kB,OAAxE,EAAKsyO,aAAe,S,wBAIjB/0W,MAAMlhB,EAAO8nD,QAAd,QACFloD,KAAKwd,MAAM0qC,QAAU9nD,EAAO8nD,OAC5B,EAAAloD,KAAY,GAAMA,KAAK21X,YAAYr5W,SAAStc,KAAKI,OAAO8nD,U,OAAxD,EAAKouU,KAAO,S,0BAGTt2X,KAAKq2X,cAGRr2X,KAAKC,OAAO0zC,MAAM,kCAAmC3zC,KAAKq2X,aAAalsV,kBACvEnqC,KAAKu2X,sBAAsBn2X,EAAO8pC,cAAelqC,KAAKq2X,aAAalsV,mBAHnEnqC,KAAKu2X,sBAAsBn2X,EAAO8pC,eAMpClqC,KAAKw2X,sBAAwBx2X,KAAKo2X,gB,iCAGlCp2X,KAAK8iJ,aAAahmJ,MAAM,G,iCAOxB,YAAA6oV,yBAAR,WACE,kBACGvM,OAAO,oBAAoBpyK,YAAY,mDAAmDwkD,WAC1F4tH,OAAO,YAAYpyK,YAAY,kDAAkDwkD,WACjF4tH,OAAO,uBAAuBpyK,YAAY,gEAAgE4wK,SAAS,GACnHwB,OAAO,cAAcpyK,YAAY,uDAAuDwkD,WACxF4tH,OAAO,UAAUpyK,YAAY,mDAAmDwkD,WAChF4tH,OAAO,kBAAkBpyK,YAAY,2DAA2DwkD,WAChG4tH,OAAO,eAAepyK,YAAY,wDAAwDwkD,WAAWmsH,SAAS,GAAGC,SAAS,KAC1HwB,OAAO,uBAAuBpyK,YAAY,8DAA8DwkD,WACxG4tH,OAAO,mBAAmBpyK,YAAY,0DAA0DwkD,WAChG4tH,OAAO,2BAA2BpyK,YAAY,kEAAkEwkD,WAChH4tH,OAAO,qBAAqBpyK,YAAY,4DAA4DwkD,WACpG4tH,OAAO,YAAYpyK,YAAY,qDAAqDwkD,WACpF4tH,OAAO,YAAYpyK,YAAY,qDAAqDwkD,WACpF4tH,OAAO,aAAapyK,YAAY,qDAAqDwkD,WAAWmsH,SAAS,GACzGyB,OAAO,qBAAqBpyK,YAAY,6DAA6DwkD,WAAWmsH,SAAS,GAAGC,SAAS,GACrIwB,OAAO,gBAAgBpyK,YAAY,wDAAwDwkD,WAAWmsH,SAAS,GAC/GyB,OAAO,kBAAkBpyK,YAAY,0DAA0DwkD,WAAWmsH,SAAS,GAAGC,SAAS,GAC/HwB,OAAO,eAAepyK,YAAY,wDAAwDwkD,WAAWmsH,SAAS,GAAGC,SAAS,KAC1HvqS,GAAGrtC,KAAKwd,QAGL,YAAAi5W,qBAAR,sBACMz2X,KAAK02X,cAAgB12X,KAAK02X,aAAa97X,OAAS,GAClDoF,KAAKw2X,sBAAwBx2X,KAAKo2X,gBAAgBvxX,QAChD,SAAAy2D,GAAK,OAAAA,EAAE59D,KAAK6d,cAAcvE,SAAS,EAAK0/W,aAAan7W,kBAEnDvb,KAAKw2X,sBAAsB57X,OAAS,IACtCoF,KAAKwd,MAAMusB,iBAAmB/pC,KAAKw2X,sBAAsB,GAAGj6W,GAC5Dvc,KAAK22X,kBAGP32X,KAAKw2X,sBAAwBx2X,KAAKo2X,gBAClCp2X,KAAKwd,MAAMusB,iBAAmB,OAI1B,YAAAwsV,sBAAR,SAA8BrsV,EAA8BC,GACrD7oB,MAAM4oB,KACTlqC,KAAKo2X,gBAAkBp2X,KAAKo2X,gBAAgBvxX,QAAO,SAAAqC,GAAK,OAAAA,EAAEgjC,eAAiBA,MAGxE5oB,MAAM6oB,KACTnqC,KAAKC,OAAO0zC,MAAM,kCAClB3zC,KAAKo2X,gBAAkBp2X,KAAKo2X,gBAAgBvxX,QAAO,SAAAqC,GAAK,OAAAA,EAAEijC,kBAAoBA,GAA0C,MAAtBjjC,EAAEijC,sBAI3F,YAAAysV,eAAb,W,qBAA+B56X,GAAO,W,6DAC7B,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,kCACvCA,EAAO4oM,QACP34M,KAAKg6Q,WAAY,G,qBAHzB,MAAO,CAAP,EAAO,kBAQI,YAAA68G,eAAb,W,qBAA+B76X,GAAO,W,kCACpCgE,KAAKg6Q,WAAY,E,WAGN,YAAA28G,aAAb,W,qBAA6B36X,GAAO,W,mFAElCgE,KAAKC,OAAO0zC,MAAM,gB,iBAGM,O,sBAAtB,EAAA3zC,KAAsB,GAAMA,KAAKo2W,sBAAsB95V,QAAQtc,KAAKwd,MAAMusB,mB,OAMrC,OANrC,EAAK+sV,eAAiB,SAGtB92X,KAAKwd,MAAMwsB,WAAahqC,KAAK82X,eAAe9sV,WAC5ChqC,KAAKk2X,cAAgBl2X,KAAK82X,eAAe/tV,QAAU,GAEnD,EAAA/oC,KAAqC,GAAMA,KAAKm0X,6BAA6B52W,OAAOvd,KAAKwd,MAAM4tC,W,cAA/F,EAAK2rU,8BAAgC,SAErC/2X,KAAKwd,MAAMurB,OAAS/oC,KAAK82X,eAAe/tV,OACxC/oC,KAAKg3X,cAAch3X,KAAKwd,MAAMurB,OAAOpkC,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,OAG1C06W,EAA2Bj3X,KAAKwd,MAAMF,WAAW41J,WAAU,SAAAhsK,GAAK,OAAAA,IAAM,IAAUgwX,cAChFC,EAA4Bn3X,KAAKwd,MAAMF,WAAW41J,WAAU,SAAAhsK,GAAK,OAAAA,IAAM,IAAUs+V,eACjF,EAA4C,IAEhB,IAA9ByxB,IAAkE,IAA/BE,IAEIn3X,KAAK+2X,8BAA8BlyX,QAC1E,SAAAqC,GAAK,OAAAA,EAAEkwX,8BAAgC,8BAA4BC,WAAanwX,EAAEkuC,YAAYlL,gBAAkB,IAAcgwT,YAG/F/yV,SAAQ,SAACmwX,GAChC,IAAAliV,EAAA,EAAAA,aAGe,IAFD,EAA2B89H,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAO64B,EAAY74B,OAGnF,EAA2BrhB,KAAKk6C,GAIJ,OAA1BA,EAAYn3B,WACd,EAAKs5W,sBAAsB,EAA4BniV,EAAY74B,IAIjE64B,EAAYlL,gBAAkB,IAAcgwT,UAC9C,EAAKq9B,sBAAsB,EAA4BniV,EAAY74B,IAIjE,CAAC,IAAWm9U,cAAe,IAAW+a,iBAAkB,IAAWxa,UAAW,IAAWD,YAAa,IAAWua,gBAAgBv9V,SAASo+B,EAAYmkT,aACxJ,EAAKg+B,sBAAsB,EAA4BniV,EAAY74B,OAMjE,EAAyBvc,KAAK82X,eAAe/hV,cAAcpwC,KAAI,SAAA22D,GAAK,OAAAA,EAAE/+C,MACtEi7W,EAAqB,EAA2B3yX,QAAO,SAAAy2D,GAAK,SAAuBtkD,SAASskD,EAAE/+C,OAEpGvc,KAAK82X,eAAe/hV,cAAgByiV,GAIlCziV,EAA+B,GACnCl6C,OAAOgI,OAAOkyC,EAAe/0C,KAAK82X,eAAe/hV,eAE7C,EAAwB,EACxB,EAAkC,GAEtCA,EAAc5tC,SAAQ,SAAC3G,EAAMmJ,GAG3B,GAAInJ,EAAKw4V,kBAAoB,IAAgBK,QAAU74V,EAAK+4V,aAAe,IAAWib,WACpF,EAAsBt5W,KAAKsF,EAAK+b,SAE7B,GAAI/b,EAAKw4V,kBAAoB,IAAgBqiB,KAAM,CAEzB,EAAK0b,8BAA8BlyX,QAAO,SAAAqC,GAAK,OAAAA,EAAEsjC,gBAAkBhqC,EAAK+b,IAChGrV,EAAEkwX,8BAAgC,8BAA4BC,aAExCz8X,OAAS,GAClC,EAAsBM,KAAKsF,EAAK+b,SAKlC,GAAgC,EAAKw6W,8BAA8BlyX,QAAO,SAAAqC,GAAK,OAAAA,EAAEkuC,YAAY4jT,kBAAoB,IAAgBqiB,MAC5Hn0W,EAAEkwX,8BAAgC,8BAA4BC,aAAWz8X,UAKlFoF,KAAK82X,eAAe/hV,cAAgB/0C,KAAK82X,eAAe/hV,cAAclwC,QAAO,SAAAy2D,GAAK,OAAC,EAAsBtkD,SAASskD,EAAE/+C,OAGhHw4B,EAAcl2B,MAAK,SAAA3X,GAAK,OAAAA,EAAE8xV,kBAAoB,IAAgBqiB,SAC5D,EAAgB,IAElBr7W,KAAK82X,eAAe/hV,cAAgB/0C,KAAK82X,eAAe/hV,cAAclwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAE09R,kBAAoB,IAAgBqiB,SAI5Hr7W,KAAKy3X,yB,+BAGLz3X,KAAK8iJ,aAAahmJ,MAAM,G,+BAIpB,YAAAk6X,cAAR,SAAsBp2O,GAAtB,WAEE5gJ,KAAKwd,MAAMF,WAAa,GAExBtd,KAAKwd,MAAMurB,OAAO5hC,SAAQ,SAAAyqW,GAExB,IAAe,IADDhxN,EAASsyB,WAAU,SAAAhsK,GAAK,OAAAA,GAAK0qW,EAAMr1V,MAE/C,I,eAASm7W,IAES,IADD,EAAKl6W,MAAMF,WAAW41J,WAAU,SAAAhsK,GAAK,OAAAA,IAAMwwX,EAAIC,cAE5D,EAAKn6W,MAAMF,WAAWpiB,KAAKw8X,EAAIC,YAHnB,MAAA/lB,EAAMt0V,WAAN,eAAkB,C,EAAtB,UAShBtd,KAAKC,OAAO0zC,MAAM,eAAgB3zC,KAAKwd,MAAMF,aAGlC,YAAAs6W,YAAb,W,qBAA4B57X,GAAO,W,6DAC1B,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAKwd,QACXk7I,YAAW,SAAOj9I,GAA2B,qC,kCACzCA,EAASw9B,aAGZj5C,KAAKwd,MAAMojI,SAAW,GAFtB5gJ,KAAKg3X,cAAch3X,KAAKwd,MAAMojI,U,qBALlC,MAAO,CAAP,EAAO,kBAYK,YAAAxlC,OAAd,W,qBAAwBp/G,GAAO,W,iFAI7B,OAA0B,IAFDgE,KAAKwd,MAAMF,WAAW41J,WAAU,SAAAhsK,GAAK,OAAAA,GAAK,IAAUs+V,iBAGvEqyB,EAAgB73X,KAAK82X,eAAe/hV,cAAclwC,QAAO,SAAAqC,GAAK,OAAAA,EAAE8xV,kBAAoB,IAAgBqiB,QACpGyc,EAAkB93X,KAAK82X,eAAe/hV,cAAclwC,QAAO,SAAAqC,GAAK,OAAAA,EAAE8xV,kBAAoB,IAAgBqiB,QACtG0c,EAAsBD,EAAgBl9X,OACtCi9X,EAAcj9X,OAAS,GACzBm9X,IAGEA,EAAsB/3X,KAAKwd,MAAM2jI,yBAAyBvmJ,SAC5DoF,KAAK8iJ,aAAahmJ,MAAM,mEACxB,MAMoB,IAFDkD,KAAKwd,MAAMF,WAAW41J,WAAU,SAAAhsK,GAAK,OAAAA,GAAK,IAAUssX,cAIrExzX,KAAKwd,MAAMqjI,YAAYjmJ,QAAU,IAQZ,IAFDoF,KAAKwd,MAAMF,WAAW41J,WAAU,SAAAhsK,GAAK,OAAAA,GAAK,IAAUusX,iBAIxEzzX,KAAKwd,MAAMqjI,YAAYjmJ,QAAU,GATnCoF,KAAK8iJ,aAAahmJ,MAAM,gEACxB,MAiBqB,IAFDkD,KAAKwd,MAAMF,WAAW41J,WAAU,SAAAhsK,GAAK,OAAAA,GAAK,IAAUgwX,cAExE,MACEl3X,KAAKwd,MAAM8jI,YAAY1mJ,QAAU,GACnCoF,KAAKi2X,yBAA0B,EAC/B,GAAMj2X,KAAKg4X,mCAFT,M,OAGF,OADA,SACA,GAAMh4X,KAAKi4X,8B,OAIX,OAJA,SAEAj4X,KAAK8iJ,aAAaviJ,QAAQ,kEAC1BP,KAAK42X,iBACL,I,OAGF,GAAI52X,KAAKwd,MAAM8jI,YAAY1mJ,OAAS,EAAG,CAIrC,IAHIg4X,EAAY,EACZsF,GAAc,EAEb,EAAL,EAA+B,EAAAl4X,KAAKwd,MAAM8jI,YAAX,eAApB4xO,EAAgB,KACzBN,GAAa7uU,OAAOmvU,EAAiBzzB,SAC/B04B,EAAwBjF,EAAiBiF,wBAClBjF,EAAiBzzB,OAAS,IAChBz/V,KAAKwd,MAAM2jI,yBAAyBnqI,SAASmhX,EAAsB57W,KAEtGvc,KAAKwd,MAAM2jI,yBAAyBjmJ,KAAKi9X,EAAsB57W,IAE7D47W,EAAsB/iV,YAAY4jT,kBAAoB,IAAgBqiB,OACxE6c,GAAc,IAKpB,GAAkB,MAAdtF,EAEF,OADA5yX,KAAK8iJ,aAAahmJ,MAAM,yEACxB,IAGF,GAAIo7X,QAAyCt6X,IAA1BoC,KAAKwd,MAAMyuC,WAE5B,OADAjsD,KAAK8iJ,aAAahmJ,MAAM,gEACxB,I,iBAQN,IAA8B,IAFDkD,KAAKwd,MAAMF,WAAW41J,WAAU,SAAAhsK,GAAK,OAAAA,GAAK,IAAUkxX,mBAEhD,CAE/B,GAAIp4X,KAAKwd,MAAM+jI,kBAAkB3mJ,OAAS,EAExC,OADAoF,KAAK8iJ,aAAahmJ,MAAM,mEACxB,IAQF,GALI,EAAY,EAChBkD,KAAKwd,MAAM+jI,kBAAkBp6I,SAAQ,SAACquX,GACpC,GAAazxU,OAAOyxU,EAAsB/1B,WAGxC,EAAY,KAAO,EAAY,IAEjC,OADAz/V,KAAK8iJ,aAAahmJ,MAAM,yEACxB,IAKG,SAAMkD,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDAEvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAJb,MAAO,CAAP,EAAO,kBAST,sBAAI,sBAAO,C,IAAX,WACE,OAAQ18D,KAAK2yX,cAAcv1W,OAAO7C,c,gCAGtB,YAAAmiD,KAAd,W,qBAAsB1gE,GAAO,W,8DAEF,O,sBAAA,GAAMgE,KAAK2yX,cAAc1zX,OAAOe,KAAKwd,Q,OAQrD,OARH/B,EAAmB,SAEnB48W,EAAiB,IAAOtvU,aAEtBtgD,EAAM,YAAS4vX,GAAkB,gBAAkB58W,EAASc,GAElE5c,OAAO87C,KAAKhzC,EAAK,UAEV,GAAMzI,KAAK8F,OAAOkD,gBAAgB,UAAWhJ,KAAKI,S,OAAzD,MAAO,CAAP,EAAO,U,yBAGPJ,KAAK8iJ,aAAahmJ,MAAM,G,+BAKpB,YAAAw7X,oBAAR,SAA4BC,EAAoDJ,GAC9E,IAEE,OADsBI,EAA0B1zX,QAAO,SAAAqC,GAAK,OAAAA,EAAEsjC,gBAAkB2tV,EAAsB3tV,iBAEtG,MAAO1tC,GACP,OAAOy7X,IAIH,YAAAC,aAAR,SAAqBD,GACnB,IAEE,OADsBA,EAA0B1zX,QAAO,SAAAqC,GAAK,OAAAA,EAAEkuC,YAAY4jT,kBAAoB,IAAgBqiB,QAE9G,MAAOv+W,GACP,OAAOy7X,IAIH,YAAAhB,sBAAR,SAA8BxiV,EAA8Bx4B,GAC1D,IAAM5S,EAAQorC,EAAcm+H,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOA,MACrC,IAAX5S,GACForC,EAAc59B,OAAOxN,EAAO,IAIlB,YAAAquX,+BAAd,W,iIACMS,EAAkD,G,WAE3C9uT,G,4DAET,OADM+uT,EAAyB,EAAK3B,8BAA8B/wX,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,KAAOotD,MAGlE,GAAM,EAAKk9S,kBAAkBvqW,QAAQo8W,EAAuBjtU,e,sBAC/E,OADMktU,EAAa,WAGbC,EAAsB,EAAKC,yBAAyBH,EAAwBC,GAElFF,EAAuBv9X,KAAKw9X,GAC5B,EAAKl7W,MAAM8jI,YAAYpmJ,KAAK09X,G,oCAVQ,EAAA54X,KAAKwd,MAAM2jI,yB,wBAAX,YAA3Bx3E,EAAuB,K,KAAvBA,KAA8D,M,wCAAnC,I,aAchCmvT,EAAmC94X,KAAK+2X,8BAA8BlyX,QAC1E,SAAAqC,GAAK,OAAAA,EAAEkwX,8BAAgC,8BAA4BC,WAAanwX,EAAEkuC,YAAYlL,gBAAkB,IAAcgwT,YAG1H6+B,EAAiCD,EAAiCj0X,QAAO,SAAAqC,GAAK,OAA4B,OAA5BA,EAAEkuC,YAAYn3B,aAE9F+6W,EAAgCD,EAA+Bl0X,QAAO,SAAAqC,GAAK,OAAC,CAAC,IAAWwyV,cAAe,IAAW+a,iBACtH,IAAWxa,UAAW,IAAWD,YAAa,IAAWua,gBAAgBv9V,SAAS9P,EAAEkuC,YAAYmkT,eAErEk/B,EAAuB55W,MAAK,SAACo6W,GACtD,OAAOA,EAAmB7jV,YAAY4jT,kBAAoB,IAAgBqiB,UAI1E2d,EAAgCh5X,KAAKw4X,aAAaQ,IAGpDP,EAAuBtxX,SAAQ,SAAC8xX,GAC9BD,EAAgC,EAAKV,oBAAoBU,EAA+BC,M,IAGlD,EAAAD,E,wBAAA,YAA7B1B,EAAyB,KACf,GAAMt3X,KAAK6mX,kBAAkBvqW,QAAQg7W,EAA0B7rU,gBADf,M,OAEnE,KADMktU,EAAa,UACF,YAEXC,EAAsB54X,KAAK64X,yBAAyBvB,EAA2BqB,GAErF34X,KAAKwd,MAAM8jI,YAAYpmJ,KAAK09X,G,wBANU,I,+BAU5B,YAAAX,2BAAd,W,4GAEqC,EAAAj4X,KAAKwd,MAAMqjI,Y,wBAAX,YAAxBq4O,EAAoB,KACV,GAAMl5X,KAAK6mX,kBAAkBvqW,QAAQ48W,KADD,M,OAEvD,KADMP,EAAa,UACF,YAEXQ,EAAgD,CACpDtG,SAAU9uU,OAAO/jD,KAAKwd,MAAM8jI,YAAY1mJ,QACxC6wD,aAAcktU,EAAWp8W,GACzBo8W,WAAYA,EACZl5B,OAAQ,EACR0zB,aAAa,GAGfnzX,KAAKwd,MAAM8jI,YAAYpmJ,KAAKi+X,G,wBAZK,I,+BAgB7B,YAAAN,yBAAR,SAAiCH,EAA+CC,GAW9E,MAV8C,CAC5C9F,SAAU9uU,OAAO/jD,KAAKwd,MAAM8jI,YAAY1mJ,QACxC6wD,aAAcitU,EAAuBjtU,aACrCktU,WAAYA,EACZhvT,wBAAyB+uT,EAAuBn8W,GAChD47W,sBAAuBO,EACvBj5B,OAAQ,EACR0zB,aAAa,IAMT,YAAAsE,uBAAR,sBACM3gB,EAAQ,EAER92W,KAAKwd,MAAMurB,QAAU/oC,KAAKwd,MAAMurB,OAAOnuC,OAAS,GAClDoF,KAAKwd,MAAMurB,OAAO5hC,SAAQ,SAAAiyX,GACxB,IAAMC,EAAe,EAAKnD,cAAclwX,MAAK,SAAAszX,GAAM,OAAAA,EAAG/8W,KAAO68W,EAAc78W,MACvE88W,GAAgBA,EAAathB,eAC/BjB,IAAUuiB,EAAathB,iBAK7B/3W,KAAKm2X,gBAAkBrf,GAhkBdsL,EAAU,GADtB,uB,uBAwCyB,mB,OAAA,IAAN,oBAAM,SACK,mBADL,OACK,IAAZ,UAAY,SACyB,mBADzB,OACyB,IAArB,UAAqB,SAChB,mBADgB,OAChB,IAAb,UAAa,SACA,mBADA,OACA,IAAb,UAAa,SACI,mBADJ,OACI,IAAf,UAAe,SACQ,mBADR,OACQ,IAAnB,UAAmB,SACkB,mBADlB,OACkB,IAA5B,UAA4B,SACtB,mBADsB,OACtB,IAAjB,UAAiB,SACZ,mBADY,OACZ,IAAX,UAAW,SACI,mBADJ,OACI,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,YAnDvDA,GAAb,I,oFCzCA1mX,EAAOD,QAAU,0iI,o3EC8CjB,aA0DE,WACUqK,EACA80D,EACA+3T,EACAvc,EACAtzN,EACA0rO,EACA1oB,EACAguB,EACAK,EACAtN,EACA8O,EACAzxC,EACAwB,EACA0lB,GAdV,WACU,KAAAtlW,SACA,KAAA80D,QACA,KAAA+3T,gBACA,KAAAvc,wBACA,KAAAtzN,eACA,KAAA0rO,gBACA,KAAA1oB,kBACA,KAAAguB,sBACA,KAAAK,+BACA,KAAAtN,oBACA,KAAA8O,cACA,KAAAzxC,gBACA,KAAAwB,8BACA,KAAA0lB,gBArEF,KAAAhrW,OAAc,GAOd,KAAAmsV,UAAoB,EAGpB,KAAAjvU,WAAoC,IAAI,wBAcxC,KAAAE,MAAgB,IAAI,IACpB,KAAAy4W,yBAAmC,EAEnC,KAAAC,cAAyB,GACzB,KAAAC,gBAA0B,EAE1B,KAAAoD,sBAA0C,IAAI,IAE9C,KAAAC,kBAA4B,EAE5B,KAAAC,oBAAoCz9X,EAAQC,UAU5C,KAAA+wP,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAK2yX,cAAc7+W,KAAK9T,KAAKsd,YACvCna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBA0BPkD,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,cAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,gCAklB5B,OA3nBE,sBAAW,yBAAU,C,IAArB,WACE,OAAO7Q,KAAKm2X,iB,gCAGd,sBAAI,sBAAO,C,IAAX,WACE,OAAQn2X,KAAK2yX,cAAcv1W,OAAO7C,c,gCAwCtB,YAAA3B,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,yDAEhEgE,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAKJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,oFAEtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,QAEFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE1Bje,KAAKie,UACM,GAAMje,KAAKorW,cAAc5kG,yBAAyBxmQ,KAAKie,YADlE,Q,cACEg3B,EAAS,WACCA,EAAOykV,gBAAkBzkV,EAAOp6B,KAAK4rP,yBACjD,GAAMzmQ,KAAK25X,uBAAuB1kV,EAAOw2T,SADvC,M,OACF,S,wBAGFzrW,KAAK2yX,cAAcv1W,OAAO87B,iBAAmBl5C,KAAKie,UAClDje,KAAKo2W,sBAAsBh5V,OAAO87B,iBAAmBl5C,KAAKie,UAC1Dje,KAAKwuX,cAAcpxW,OAAO87B,iBAAmBl5C,KAAKie,UAClDje,KAAKm0X,6BAA6B/2W,OAAO87B,iBAAmBl5C,KAAKie,UAEjEje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAC3Dje,KAAKwd,MAAMS,UAAYje,KAAKie,UAGvBqD,MAAMthB,KAAKI,OAAOgrD,UAAnB,OACFprD,KAAKsd,WAAWusB,OAAO+vV,UAAY55X,KAAKI,OAAOgrD,SAC/CprD,KAAKwd,MAAM4tC,UAAYprD,KAAKI,OAAOgrD,SACnC,EAAAprD,KAAc,GAAMA,KAAKwuX,cAAclyW,SAAStc,KAAKI,OAAOgrD,Y,OAA5D,EAAKyqG,OAAS,S,wBAIXv0I,MAAMthB,KAAKI,OAAO6rD,YAAnB,OACFjsD,KAAKsd,WAAWusB,OAAOgwV,YAAc75X,KAAKI,OAAO6rD,WACjDjsD,KAAKwd,MAAMyuC,YAAcjsD,KAAKI,OAAO6rD,WACrC,EAAAjsD,KAAgB,GAAMA,KAAK8lW,gBAAgBxpV,SAAStc,KAAKI,OAAO6rD,c,OAAhE,EAAK0jE,SAAW,S,wBAIbruG,MAAMthB,KAAKI,OAAO2jJ,gBAAnB,OACF/jJ,KAAKsd,WAAWusB,OAAOiwV,gBAAkB95X,KAAKI,OAAO2jJ,eACrD/jJ,KAAKwd,MAAMumI,gBAAkB/jJ,KAAKI,OAAO2jJ,eACzC,EAAA/jJ,KAAoB,GAAMA,KAAK8zX,oBAAoBx3W,SAAStc,KAAKI,OAAO2jJ,kB,OAAxE,EAAKsyO,aAAe,S,wBAIjB/0W,MAAMthB,KAAKI,OAAO8nD,QAAnB,QACFloD,KAAKsd,WAAWusB,OAAOkwV,QAAU/5X,KAAKI,OAAO8nD,OAC7CloD,KAAKwd,MAAM0qC,QAAUloD,KAAKI,OAAO8nD,OACjC,EAAAloD,KAAY,GAAMA,KAAK21X,YAAYr5W,SAAStc,KAAKI,OAAO8nD,U,QAAxD,EAAKouU,KAAO,S,mBAKW,O,yBAAvB,EAAAt2X,KAAuB,GAAMA,KAAKo2W,sBAAsB74V,U,eAAxD,EAAK64W,gBAAkB,SAEnBlsV,OAAa,EACZ5oB,MAAMthB,KAAKI,OAAOgrD,UAEX9pC,MAAMthB,KAAKI,OAAO6rD,YAElB3qC,MAAMthB,KAAKI,OAAO8nD,QAElB5mC,MAAMthB,KAAKI,OAAO2jJ,kBAC5B75G,EAAgB,IAAcq0U,cAF9Br0U,EAAgB,IAAcyqU,KAF9BzqU,EAAgB,IAAcoqV,SAF9BpqV,EAAgB,IAAcovT,OAS3Bt5V,KAAKq2X,aAGRr2X,KAAKu2X,sBAAsBrsV,EAAelqC,KAAKq2X,aAAalsV,kBAF5DnqC,KAAKu2X,sBAAsBrsV,GAK7BlqC,KAAKw2X,sBAAwBx2X,KAAKo2X,gB,iCAElCp2X,KAAK8iJ,aAAahmJ,MAAM,G,eAOnB,OAJPkD,KAAK2lV,2BAEL3lV,KAAKusV,UAAW,EAET,GAAMvsV,KAAKukV,Y,QAAlB,MAAO,CAAP,EAAO,U,0BAKC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAA68X,uBAAd,SAAqCK,G,qBAA0Bh+X,GAAO,W,kDAC7D,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO,CAAE+xI,QAASyqO,EAAiB/7W,UAAWje,KAAKie,c,OAFrD,MAAO,CAAP,EAAO,kBAMK,YAAAsqT,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGD,YAAA6pD,WAAR,SAAmB19W,GACjB,IAAI87W,EAAiB,IAAOtvU,aACtBtgD,EAAM,YAAS4vX,GAAkB,gBAAkB97W,EACzD5c,OAAO87C,KAAKhzC,EAAK,WAGN,YAAAyxX,YAAb,SAAyB39W,G,qBAAavgB,GAAO,W,kDAC3C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CAC5B1tC,UAAW,IACXyP,MAAO,CAAEq1W,SAAUt2W,M,cAFrB,S,YAQM,YAAAopU,yBAAR,WACE,kBACGvM,OAAO,oBAAoBpyK,YAAY,mDAAmDwkD,WAC1F4tH,OAAO,YAAYpyK,YAAY,kDAAkDwkD,WACjF4tH,OAAO,uBAAuBpyK,YAAY,gEAAgE4wK,SAAS,GACnHwB,OAAO,cAAcpyK,YAAY,uDAAuDwkD,WACxF4tH,OAAO,UAAUpyK,YAAY,mDAAmDwkD,WAChF4tH,OAAO,kBAAkBpyK,YAAY,2DAA2DwkD,WAChG4tH,OAAO,eAAepyK,YAAY,wDAAwDwkD,WAAWmsH,SAAS,GAAGC,SAAS,KAC1HwB,OAAO,uBAAuBpyK,YAAY,8DAA8DwkD,WACxG4tH,OAAO,mBAAmBpyK,YAAY,0DAA0DwkD,WAChG4tH,OAAO,2BAA2BpyK,YAAY,kEAAkEwkD,WAChH4tH,OAAO,qBAAqBpyK,YAAY,4DAA4DwkD,WACpG4tH,OAAO,YAAYpyK,YAAY,qDAAqDwkD,WACpF4tH,OAAO,YAAYpyK,YAAY,qDAAqDwkD,WACpF4tH,OAAO,aAAapyK,YAAY,qDAAqDwkD,WAAWmsH,SAAS,GACzGyB,OAAO,qBAAqBpyK,YAAY,6DAA6DwkD,WAAWmsH,SAAS,GAAGC,SAAS,GACrIwB,OAAO,gBAAgBpyK,YAAY,wDAAwDwkD,WAAWmsH,SAAS,GAC/GyB,OAAO,kBAAkBpyK,YAAY,0DAA0DwkD,WAAWmsH,SAAS,GAAGC,SAAS,GAC/HwB,OAAO,eAAepyK,YAAY,wDAAwDwkD,WAAWmsH,SAAS,GAAGC,SAAS,KAC1HvqS,GAAGrtC,KAAKwd,QAGL,YAAAi5W,qBAAR,sBACMz2X,KAAK02X,cAAgB12X,KAAK02X,aAAa97X,OAAS,GAClDoF,KAAKw2X,sBAAwBx2X,KAAKo2X,gBAAgBvxX,QAChD,SAAAy2D,GAAK,OAAAA,EAAE59D,KAAK6d,cAAcvE,SAAS,EAAK0/W,aAAan7W,kBAEnDvb,KAAKw2X,sBAAsB57X,OAAS,IACtCoF,KAAKwd,MAAMusB,iBAAmB/pC,KAAKw2X,sBAAsB,GAAGj6W,GAC5Dvc,KAAK22X,kBAGP32X,KAAKw2X,sBAAwBx2X,KAAKo2X,gBAClCp2X,KAAKwd,MAAMusB,iBAAmB,OAI1B,YAAAwsV,sBAAR,SAA8BrsV,EAA8BC,GACrD7oB,MAAM4oB,KACTlqC,KAAKo2X,gBAAkBp2X,KAAKo2X,gBAAgBvxX,QAAO,SAAAqC,GAAK,OAAAA,EAAEgjC,eAAiBA,MAGxE5oB,MAAM6oB,KACTnqC,KAAKo2X,gBAAkBp2X,KAAKo2X,gBAAgBvxX,QAAO,SAAAqC,GAAK,OAAAA,EAAEijC,kBAAoBA,GAA0C,MAAtBjjC,EAAEijC,sBAI3F,YAAAysV,eAAb,W,qBAA+B56X,GAAO,W,6DAEpC,SAAMgE,KAAKy5X,qB,OAEJ,OAFP,SAEO,GAAMz5X,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,kCACvCA,EAAO4oM,QACT34M,KAAKg6Q,WAAY,G,qBAHvB,MAAO,CAAP,EAAO,kBAOI,YAAA68G,eAAb,W,qBAA+B76X,GAAO,W,kCACpCgE,KAAKg6Q,WAAY,E,WAGN,YAAA28G,aAAb,W,qBAA6B36X,GAAO,W,kDAClCgE,KAAKw5X,kBAAmB,EACxBx5X,KAAKy5X,oBAAsBz5X,KAAKm6X,iB,iBAGvB,O,sBAAA,GAAMn6X,KAAKy5X,qB,OAAlB,MAAO,CAAP,EAAO,U,cAEPz5X,KAAKw5X,kBAAmB,E,6BAId,YAAAW,eAAd,W,qBAAgCn+X,GAAO,W,qFACrCgE,KAAKC,OAAO0zC,MAAM,gBAEZ7sB,EAAQ9mB,KAAKu5X,sBAAsBt2X,OAGzCjD,KAAKm2X,gBAAkB,E,iBAGE,O,sBAAA,GAAMn2X,KAAKo2W,sBAAsB95V,QAAQtc,KAAKwd,MAAMusB,mB,OACrC,OADhC+sV,EAAiB,SACe,GAAM92X,KAAKm0X,6BAA6B52W,OAAOvd,KAAKwd,MAAM4tC,W,OAGhG,OAHM,EAAgC,SAGjCprD,KAAKu5X,sBAAsBhlL,SAASztL,IAIzC9mB,KAAKwd,MAAMwsB,WAAa8sV,EAAe9sV,WACvChqC,KAAKk2X,cAAgBY,EAAe/tV,QAAU,GAC9C/oC,KAAK+2X,8BAAgC,EAErC/2X,KAAKwd,MAAMurB,OAAS+tV,EAAe/tV,OACnC/oC,KAAKg3X,cAAch3X,KAAKwd,MAAMurB,OAAOpkC,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,OAE1C06W,EAA2Bj3X,KAAKwd,MAAMF,WAAW41J,WAAU,SAAAhsK,GAAK,OAAAA,IAAM,IAAUgwX,cAChFC,EAA4Bn3X,KAAKwd,MAAMF,WAAW41J,WAAU,SAAAhsK,GAAK,OAAAA,IAAM,IAAUs+V,eACjF,EAA4C,IAEhB,IAA9ByxB,IAAkE,IAA/BE,IAEI,EAA8BtyX,QACrE,SAAAqC,GAAK,OAAAA,EAAEkwX,8BAAgC,8BAA4BC,WAAanwX,EAAEkuC,YAAYlL,gBAAkB,IAAcgwT,YAG/F/yV,SAAQ,SAACmwX,GAChC,IAAAliV,EAAA,EAAAA,aAGe,IAFD,EAA2B89H,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAO64B,EAAY74B,OAGnF,EAA2BrhB,KAAKk6C,GAGJ,OAA1BA,EAAYn3B,WACd,EAAKs5W,sBAAsB,EAA4BniV,EAAY74B,IAGjE64B,EAAYlL,gBAAkB,IAAcgwT,UAC9C,EAAKq9B,sBAAsB,EAA4BniV,EAAY74B,IAGjE,CAAC,IAAWm9U,cAAe,IAAW+a,iBAAkB,IAAWxa,UAAW,IAAWD,YAAa,IAAWua,gBAAgBv9V,SAASo+B,EAAYmkT,aACxJ,EAAKg+B,sBAAsB,EAA4BniV,EAAY74B,OAIjE,EAAyBu6W,EAAe/hV,cAAcpwC,KAAI,SAAA22D,GAAK,OAAAA,EAAE/+C,MACjEi7W,EAAqB,EAA2B3yX,QAAO,SAAAy2D,GAAK,SAAuBtkD,SAASskD,EAAE/+C,OAEpGu6W,EAAe/hV,cAAgByiV,GAG7BziV,EAA+B,GACnCl6C,OAAOgI,OAAOkyC,EAAe+hV,EAAe/hV,eAExC,EAAwB,EACxB,EAAkC,GAEtCA,EAAc5tC,SAAQ,SAAC3G,GACrB,GAAIA,EAAKw4V,kBAAoB,IAAgBK,QAAU74V,EAAK+4V,aAAe,IAAWib,WACpF,EAAsBt5W,KAAKsF,EAAK+b,SAE7B,GAAI/b,EAAKw4V,kBAAoB,IAAgBqiB,KAAM,CACzB,EAA8Bx2W,QAAO,SAAAqC,GAAK,OAAAA,EAAEsjC,gBAAkBhqC,EAAK+b,IAC3FrV,EAAEkwX,8BAAgC,8BAA4BC,aAExCz8X,OAAS,GAClC,EAAsBM,KAAKsF,EAAK+b,SAIlC,GAAgC,EAA8B1X,QAAO,SAAAqC,GAAK,OAAAA,EAAEkuC,YAAY4jT,kBAAoB,IAAgBqiB,MACvHn0W,EAAEkwX,8BAAgC,8BAA4BC,aAAWz8X,UAIlFk8X,EAAe/hV,cAAgB+hV,EAAe/hV,cAAclwC,QAAO,SAAAy2D,GAAK,OAAC,EAAsBtkD,SAASskD,EAAE/+C,OAEtGw4B,EAAcl2B,MAAK,SAAA3X,GAAK,OAAAA,EAAE8xV,kBAAoB,IAAgBqiB,SAC5D,EAAgB,IAClByb,EAAe/hV,cAAgB+hV,EAAe/hV,cAAclwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAE09R,kBAAoB,IAAgBqiB,SAIlHr7W,KAAK82X,eAAiBA,EACtB92X,KAAKy3X,yB,OAhFH,I,OAoFF,O,WAAKz3X,KAAKu5X,sBAAsBhlL,SAASztL,IAGzC9mB,KAAK8iJ,aAAahmJ,MAAM,G,OAFtB,I,yBAME,YAAAk6X,cAAR,SAAsBp2O,GAAtB,WACE5gJ,KAAKwd,MAAMF,WAAa,GAExBtd,KAAKwd,MAAMurB,OAAO5hC,SAAQ,SAAAyqW,GAExB,IAAe,IADDhxN,EAASsyB,WAAU,SAAAhsK,GAAK,OAAAA,GAAK0qW,EAAMr1V,MAE/C,I,eAASm7W,IAES,IADD,EAAKl6W,MAAMF,WAAW41J,WAAU,SAAAhsK,GAAK,OAAAA,IAAMwwX,EAAIC,cAE5D,EAAKn6W,MAAMF,WAAWpiB,KAAKw8X,EAAIC,YAHnB,MAAA/lB,EAAMt0V,WAAN,eAAkB,C,EAAtB,WAUL,YAAAs6W,YAAb,W,qBAA4B57X,GAAO,W,6DAC1B,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAKwd,QACXk7I,YAAW,SAAOj9I,GAA2B,qC,kCACzCA,EAASw9B,aAGZj5C,KAAKwd,MAAMojI,SAAW,GAFtB5gJ,KAAKg3X,cAAch3X,KAAKwd,MAAMojI,U,qBALlC,MAAO,CAAP,EAAO,kBAYK,YAAAxlC,OAAd,W,qBAAwBp/G,GAAO,W,iFAG7B,OAA0B,IAFDgE,KAAKwd,MAAMF,WAAW41J,WAAU,SAAAhsK,GAAK,OAAAA,GAAK,IAAUs+V,iBAGvEqyB,EAAgB73X,KAAK82X,eAAe/hV,cAAclwC,QAAO,SAAAqC,GAAK,OAAAA,EAAE8xV,kBAAoB,IAAgBqiB,QACpGyc,EAAkB93X,KAAK82X,eAAe/hV,cAAclwC,QAAO,SAAAqC,GAAK,OAAAA,EAAE8xV,kBAAoB,IAAgBqiB,QACtG0c,EAAsBD,EAAgBl9X,OACtCi9X,EAAcj9X,OAAS,GACzBm9X,IAGEA,EAAsB/3X,KAAKwd,MAAM2jI,yBAAyBvmJ,SAC5DoF,KAAK8iJ,aAAahmJ,MAAM,mEACxB,MAMoB,IAFDkD,KAAKwd,MAAMF,WAAW41J,WAAU,SAAAhsK,GAAK,OAAAA,GAAK,IAAUssX,cAGrExzX,KAAKwd,MAAMqjI,YAAYjmJ,QAAU,IAQZ,IAFDoF,KAAKwd,MAAMF,WAAW41J,WAAU,SAAAhsK,GAAK,OAAAA,GAAK,IAAUusX,iBAGxEzzX,KAAKwd,MAAMqjI,YAAYjmJ,QAAU,GARnCoF,KAAK8iJ,aAAahmJ,MAAM,gEACxB,MAeqB,IAFDkD,KAAKwd,MAAMF,WAAW41J,WAAU,SAAAhsK,GAAK,OAAAA,GAAK,IAAUgwX,cAExE,MACEl3X,KAAKwd,MAAM8jI,YAAY1mJ,QAAU,GACnCoF,KAAKi2X,yBAA0B,EAC/B,GAAMj2X,KAAKg4X,mCAFT,M,OAGF,OADA,SACA,GAAMh4X,KAAKi4X,8B,OAIX,OAJA,SAEAj4X,KAAK8iJ,aAAaviJ,QAAQ,kEAC1BP,KAAK42X,iBACL,I,OAGF,GAAI52X,KAAKwd,MAAM8jI,YAAY1mJ,OAAS,EAAG,CAIrC,IAHIg4X,EAAY,EACZsF,GAAc,EAEb,EAAL,EAA+B,EAAAl4X,KAAKwd,MAAM8jI,YAAX,eAApB4xO,EAAgB,KACzBN,GAAa7uU,OAAOmvU,EAAiBzzB,SAC/B04B,EAAwBjF,EAAiBiF,wBAClBjF,EAAiBzzB,OAAS,IAChBz/V,KAAKwd,MAAM2jI,yBAAyBnqI,SAASmhX,EAAsB57W,KAEtGvc,KAAKwd,MAAM2jI,yBAAyBjmJ,KAAKi9X,EAAsB57W,IAE7D47W,EAAsB/iV,YAAY4jT,kBAAoB,IAAgBqiB,OACxE6c,GAAc,IAKpB,GAAkB,MAAdtF,EAEF,OADA5yX,KAAK8iJ,aAAahmJ,MAAM,yEACxB,IAGF,GAAIo7X,QAAyCt6X,IAA1BoC,KAAKwd,MAAMyuC,WAE5B,OADAjsD,KAAK8iJ,aAAahmJ,MAAM,gEACxB,I,iBAON,IAA8B,IAFDkD,KAAKwd,MAAMF,WAAW41J,WAAU,SAAAhsK,GAAK,OAAAA,GAAK,IAAUkxX,mBAEhD,CAC/B,GAAIp4X,KAAKwd,MAAM+jI,kBAAkB3mJ,OAAS,EAExC,OADAoF,KAAK8iJ,aAAahmJ,MAAM,mEACxB,IAQF,GALI,EAAY,EAChBkD,KAAKwd,MAAM+jI,kBAAkBp6I,SAAQ,SAACquX,GACpC,GAAazxU,OAAOyxU,EAAsB/1B,WAGxC,EAAY,KAAO,EAAY,IAEjC,OADAz/V,KAAK8iJ,aAAahmJ,MAAM,yEACxB,IAIG,SAAMkD,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAQK,YAAAA,KAAd,W,qBAAsB1gE,GAAO,W,8DAEF,O,sBAAA,GAAMgE,KAAK2yX,cAAc1zX,OAAOe,KAAKwd,Q,OAiBrD,OAjBH/B,EAAmB,SAEnB48W,EAAiB,IAAOtvU,aACtBtgD,EAAM,YAAS4vX,GAAkB,gBAAkB58W,EAASc,GAClE5c,OAAO87C,KAAKhzC,EAAK,UAGjBzI,KAAKwd,MAAQ,IAAI,IACjBxd,KAAKwd,MAAMS,UAAYje,KAAKie,UACxBje,KAAK61J,SAAQ71J,KAAKwd,MAAM4tC,SAAWprD,KAAK61J,OAAOt5I,IAC/Cvc,KAAK2vH,WAAU3vH,KAAKwd,MAAMyuC,WAAajsD,KAAK2vH,SAASpzG,IACrDvc,KAAKq2X,eAAcr2X,KAAKwd,MAAMumI,eAAiB/jJ,KAAKq2X,aAAa95W,IACjEvc,KAAKs2X,OAAMt2X,KAAKwd,MAAM0qC,OAASloD,KAAKs2X,KAAK/5W,IAC7Cvc,KAAKg6Q,WAAY,EACjBh6Q,KAAK82X,eAAiB,KACtB92X,KAAK2lV,2BAEE,GAAM3lV,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yBAGPvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIpB,YAAAw7X,oBAAR,SAA4BC,EAAoDJ,GAC9E,IAEE,OADsBI,EAA0B1zX,QAAO,SAAAqC,GAAK,OAAAA,EAAEsjC,gBAAkB2tV,EAAsB3tV,iBAEtG,MAAO1tC,GACP,OAAOy7X,IAIH,YAAAC,aAAR,SAAqBD,GACnB,IAEE,OADsBA,EAA0B1zX,QAAO,SAAAqC,GAAK,OAAAA,EAAEkuC,YAAY4jT,kBAAoB,IAAgBqiB,QAE9G,MAAOv+W,GACP,OAAOy7X,IAIH,YAAAhB,sBAAR,SAA8BxiV,EAA8Bx4B,GAC1D,IAAM5S,EAAQorC,EAAcm+H,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAOA,MACrC,IAAX5S,GACForC,EAAc59B,OAAOxN,EAAO,IAIlB,YAAAquX,+BAAd,W,qBAAgDh8X,GAAO,W,yFACjDy8X,EAAkD,G,WAE3C9uT,G,4DAET,OADM+uT,EAAyB,EAAK3B,8BAA8B/wX,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,KAAOotD,MAGlE,GAAM,EAAKk9S,kBAAkBvqW,QAAQo8W,EAAuBjtU,e,sBAC/E,OADMktU,EAAa,WAGbC,EAAsB,EAAKC,yBAAyBH,EAAwBC,GAElFF,EAAuBv9X,KAAKw9X,GAC5B,EAAKl7W,MAAM8jI,YAAYpmJ,KAAK09X,G,oCAVQ,EAAA54X,KAAKwd,MAAM2jI,yB,wBAAX,YAA3Bx3E,EAAuB,K,KAAvBA,KAA8D,M,wCAAnC,I,aAahCmvT,EAAmC94X,KAAK+2X,8BAA8BlyX,QAC1E,SAAAqC,GAAK,OAAAA,EAAEkwX,8BAAgC,8BAA4BC,WAAanwX,EAAEkuC,YAAYlL,gBAAkB,IAAcgwT,YAG1H6+B,EAAiCD,EAAiCj0X,QAAO,SAAAqC,GAAK,OAA4B,OAA5BA,EAAEkuC,YAAYn3B,aAE9F+6W,EAAgCD,EAA+Bl0X,QAAO,SAAAqC,GAAK,OAAC,CAAC,IAAWwyV,cAAe,IAAW+a,iBACtH,IAAWxa,UAAW,IAAWD,YAAa,IAAWua,gBAAgBv9V,SAAS9P,EAAEkuC,YAAYmkT,eAErEk/B,EAAuB55W,MAAK,SAACo6W,GACtD,OAAOA,EAAmB7jV,YAAY4jT,kBAAoB,IAAgBqiB,UAI1E2d,EAAgCh5X,KAAKw4X,aAAaQ,IAGpDP,EAAuBtxX,SAAQ,SAAC8xX,GAC9BD,EAAgC,EAAKV,oBAAoBU,EAA+BC,M,IAGlD,EAAAD,E,wBAAA,YAA7B1B,EAAyB,KACf,GAAMt3X,KAAK6mX,kBAAkBvqW,QAAQg7W,EAA0B7rU,gBADf,M,OAEnE,KADMktU,EAAa,UACF,YAEXC,EAAsB54X,KAAK64X,yBAAyBvB,EAA2BqB,GAErF34X,KAAKwd,MAAM8jI,YAAYpmJ,KAAK09X,G,wBANU,I,+BAU5B,YAAAX,2BAAd,W,qBAA4Cj8X,GAAO,W,oEACd,EAAAgE,KAAKwd,MAAMqjI,Y,wBAAX,YAAxBq4O,EAAoB,KACV,GAAMl5X,KAAK6mX,kBAAkBvqW,QAAQ48W,KADD,M,OAEvD,KADMP,EAAa,UACF,YAEXQ,EAAgD,CACpDtG,SAAU9uU,OAAO/jD,KAAKwd,MAAM8jI,YAAY1mJ,QACxC6wD,aAAcktU,EAAWp8W,GACzBo8W,WAAYA,EACZl5B,OAAQ,EACR0zB,aAAa,GAGfnzX,KAAKwd,MAAM8jI,YAAYpmJ,KAAKi+X,G,wBAZK,I,+BAgB7B,YAAAN,yBAAR,SAAiCH,EAA+CC,GAW9E,MAV8C,CAC5C9F,SAAU9uU,OAAO/jD,KAAKwd,MAAM8jI,YAAY1mJ,QACxC6wD,aAAcitU,EAAuBjtU,aACrCktU,WAAYA,EACZhvT,wBAAyB+uT,EAAuBn8W,GAChD47W,sBAAuBO,EACvBj5B,OAAQ,EACR0zB,aAAa,IAMT,YAAAsE,uBAAR,sBACM3gB,EAAQ,EAER92W,KAAKwd,MAAMurB,QAAU/oC,KAAKwd,MAAMurB,OAAOnuC,OAAS,GAClDoF,KAAKwd,MAAMurB,OAAO5hC,SAAQ,SAAAiyX,GACxB,IAAMC,EAAe,EAAKnD,cAAclwX,MAAK,SAAAszX,GAAM,OAAAA,EAAG/8W,KAAO68W,EAAc78W,MACvE88W,GAAgBA,EAAathB,eAC/BjB,IAAUuiB,EAAathB,iBAK7B/3W,KAAKm2X,gBAAkBrf,GA/pBdkM,EAAU,GADtB,uB,uBA4DyB,mB,OAAA,IAAN,oBAAM,SACK,mBADL,OACK,IAAZ,UAAY,SACS,mBADT,OACS,IAAb,UAAa,SACgB,mBADhB,OACgB,IAArB,UAAqB,SAClB,mBADkB,OAClB,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,UAAa,SACI,mBADJ,OACI,IAAf,UAAe,SACQ,mBADR,OACQ,IAAnB,UAAmB,SACkB,mBADlB,OACkB,IAA5B,UAA4B,SACtB,mBADsB,OACtB,IAAjB,UAAiB,SACZ,mBADY,OACZ,IAAX,UAAW,SACI,mBADJ,OACI,IAAb,kCAAa,SAC4B,mBAD5B,OAC4B,IAA3B,8DAA2B,SAC5B,mBAD4B,OAC5B,IAAb,UAAa,YAxE3BA,GAAb,I,6qBCpCA,aAKE,WACUjjX,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAGRpsN,KAAKC,OAAS,aAAWC,UAAU,yB,QAqBvC,OAlBS,YAAA+V,gBAAP,SAAuBzT,EAA6BsD,GAClD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,gBACVoD,KAAM,WAGR,CACEgF,MAAO,yBACPpI,SAAU,wBACVoD,KAAM,0BAzBD08X,EAAqB,GADjC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,8ECVA1+X,EAAOD,QAAU,uD,mECAjBC,EAAOD,QAAU,srJ,05DCQjB,aAwBE,WACU6lD,EACAwhG,GADA,KAAAxhG,mBACA,KAAAwhG,eAlBF,KAAAu3O,iBAA6B,GAE7B,KAAA72X,QAA0B,CAChCm3B,SAAU,IACVqhT,QAAS,CACPm7B,IAAK,EACLC,IAAK,EACLC,KAAM,GAERp7B,WAAW,EACXC,MAAM,EACNo7B,UAAU,EACVC,iBAAkB,MAQlBv3W,KAAKC,OAAS,aAAWC,UAAU,oB,QA2BvC,OAxBU,YAAA0Y,SAAR,SAAiB4E,GAEfxd,KAAKwd,MAAQA,EAEqB,GAA9Bxd,KAAKwd,MAAMojI,SAAShmJ,OACtBoF,KAAKq6X,iBAAmBr6X,KAAKwd,MAAMurB,OAAOpkC,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,MAGrDvc,KAAKq6X,iBAAmBr6X,KAAKwd,MAAMojI,UAKzB,YAAAjuC,OAAd,W,qBAAwB32G,GAAO,W,yDAEO,GAAhCgE,KAAKq6X,iBAAiBz/X,OAAtB,OACFoF,KAAK8iJ,aAAaviJ,QAAQ,6D,cAInB,OADPP,KAAKwd,MAAMojI,SAAW5gJ,KAAKq6X,iBACpB,GAAMr6X,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,U,yBAnDA00T,EAAgB,GAD5B,a,uBA0B6C,mB,OAAA,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,YA1BzBA,GAAb,K,2FCRA5+X,EAAOD,QAAU,wkC,8oBCYjB,aAME,WACUsE,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAERpsN,KAAKC,OAAS,aAAWC,UAAU,yB,QA0CvC,OAvCS,YAAA+V,gBAAP,SAAuBzT,EAA6BsD,GAElDtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,CAAC,GAAI,eACZpI,SAAU,oBACVoD,KAAM,mBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,sCACpB+H,SAAU,CACRk7U,KAAM,sBACNC,QAAQ,IAIb,CACG7gV,MAAO,UACPpI,SAAU,2CACVoD,KAAM,2BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,4CAgBxBL,KAAK8F,OAASA,GAjDLy0X,EAAqB,GADjC,uB,uBAQqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YARzCA,GAAb,I,gECZA7+X,EAAOD,QAAU,wE,ghECYjB,aASE,WACUqK,EACA00X,EACA13O,EACAohM,GAJV,WACU,KAAAp+U,SACA,KAAA00X,iBACA,KAAA13O,eACA,KAAAohM,gBAVF,KAAA9jV,OAAc,GAGd,KAAAkd,WAAoC,IAAI,wBAaxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,+DAK1B,OAJPgE,KAAKC,OAAO0zC,MAAM,cACd9J,EAAS7pC,KAAKsd,WAAWusB,OAAOylT,MACpC3mL,eAAentF,QAAQ,oBAA+B,MAAV3xC,EAAiB,GAAKA,GAE3D,GAAM7pC,KAAKw6X,eAAe1mX,KAAK9T,KAAKsd,YACxCna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBARPkD,KAAKC,OAAS,aAAWC,UAAU,e,YAyEvC,OAxDgB,YAAA0Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACpEgE,KAAKsd,WAAWusB,OAAOylT,MAAQ3mL,eAAexsF,QAAQ,qBACtDn8E,KAAKI,OAASA,E,WAGF,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,yDACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKC,OAAO0zC,MAAM,sBAAuB3zC,KAAKI,OAAO6d,WACrDje,KAAKie,WAAaje,KAAKI,OAAO6d,UAC9Bje,KAAKw6X,eAAep9W,OAAO87B,iBAAmBl5C,KAAKie,UAC5C,GAAMje,KAAKukV,a,OAAlB,MAAO,CAAP,EAAO,U,yBAIG,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAAmmC,aAAd,W,0FAES,OADPv2W,KAAKsd,WAAWusB,OAAOylT,MAAQtvV,KAAKsd,WAAWusB,OAAO8wO,UAAY36Q,KAAKsd,WAAWusB,OAAO+wO,QAAU,KAC5F,GAAM56Q,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,kBAGI,YAAA7nU,OAAb,SAAoBlc,G,qBAAgBxE,GAAO,W,6DAClC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK9C,OACXg7J,YAAW,SAAOj9I,GAA2B,qC,6DACzCA,EAASw9B,aAAV,Y,iBAEA,O,sBAAA,GAAMj5C,KAAKw6X,eAAe/8W,YAAYjd,I,cAAtC,SAEIikV,EAA6BzkV,KAAKsd,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAO/b,EAAK+b,MACxFvc,KAAKsd,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrDzkV,KAAKsd,WAAWmiU,eAEhBz/U,KAAK8iJ,aAAaxiJ,QAAQ,uD,+BAE1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCAd9B,MAAO,CAAP,EAAO,kBArEE29X,EAAQ,GADpB,uB,uBAWyB,mB,OAAA,IAAN,oBAAM,SACgB,mBADhB,OACgB,IAAd,UAAc,SACJ,mBADI,OACJ,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,YAb3BA,GAAb,I,uqBCDA,aAKE,WACU16X,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAGRpsN,KAAKC,OAAS,aAAWC,UAAW,0B,QAaxC,OAVS,YAAA+V,gBAAP,SAAyBzT,EAA6BsD,GACpD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAK,CACV,CACEjC,MAAO,GACPpI,SAAU,iBACVoD,KAAM,mBAnBDg9X,EAAsB,GADlC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,uECXAh/X,EAAOD,QAAU,8M,4DCAjBC,EAAOD,QAAU,myF,k2EC2CjB,aA4CE,WACUqK,EACA60X,EACA//T,EACAkoF,EACA4iM,EACAg0B,EACAtD,EACA/pB,EACEhyU,EACF6pU,EACA2W,EACAvM,EACAwM,EACA/6V,GAdV,WACU,KAAA+F,SACA,KAAA60X,wBACA,KAAA//T,QACA,KAAAkoF,eACA,KAAA4iM,8BACA,KAAAg0B,0BACA,KAAAtD,wBACA,KAAA/pB,kBACE,KAAAhyU,KACF,KAAA6pU,gBACA,KAAA2W,kBACA,KAAAvM,4BACA,KAAAwM,uBACA,KAAA/6V,OAlDF,KAAA66X,eAAmE,GACnE,KAAAC,kBAA4B,GAS5B,KAAA9lV,cAAmC,GACnC,KAAA+lV,kBAAuC,GACvC,KAAA5jB,oBAA8B,EAC9B,KAAAgD,iBAA2B,EAC3B,KAAA6gB,sBAAwB,CAC9BC,IAAK,EACLC,IAAK,EACLlmV,cAAe,GACfmmV,gBAAgB,EAChBC,kBAAkB,EAClBC,YAAY,GAGN,KAAA59W,MAAwB,IAAI,IAG5B,KAAA69W,cAAwB,GACxB,KAAAr7B,eAAyB,GAKzB,KAAAs7B,kBAA4B,EAC5B,KAAAC,cAAwB,EACxB,KAAAhhC,mBAA6B,IAAU2T,QACvC,KAAAvuF,OAAiB3/Q,KAAKD,KAAKM,GAAG,sCAmBpCL,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,uBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MAExB,IAAI2J,EAAa,IAAOC,aACxBza,KAAKq7X,cAAgB7gX,EAAa,8CAClCxa,KAAKggW,eAAiBxlV,EAAa,+CAEnCxa,KAAKwvS,aAAexvS,KAAKqa,GAAGtF,UAAU,KAAuB,SAACtX,GAAmC,SAAK2wW,gBAAgBjvW,KAAK,M,gCA8qB/H,OA1qBS,YAAAgqJ,SAAP,WACEnpJ,KAAKwvS,aAAa7jM,WAGb,YAAAg6O,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,QAAQpyK,YAAY,qDAAqDwkD,WAChF4tH,OAAO,YAAYpyK,YAAY,sDAAsDwkD,WACrF4tH,OAAO,yBAAyBpyK,YAAY,2CAA2CwkD,WAEvFn+K,GAAGrtC,KAAKwd,QAGA,YAAA5E,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,mEACzCgE,KAAKC,OAAO0zC,MAAM,YAEbryB,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKie,WAAa7d,EAAO6d,UAEzBje,KAAKwd,MAAMS,UAAYje,KAAKie,UAG5Bje,KAAK05W,wBAAwBt8V,OAAO87B,iBAAmBl5C,KAAKie,UAC5Dje,KAAKo2W,sBAAsBh5V,OAAO87B,iBAAmBl5C,KAAKie,UAE1D,EAAAje,KAAyB,GAAMA,KAAKw7X,yB,OACb,OADvB,EAAKC,kBAAoB,SACzB,EAAAz7X,KAAuB,GAAMA,KAAK07X,sB,OACb,OADrB,EAAKtF,gBAAkB,SACvB,EAAAp2X,KAAqB,GAAMA,KAAKsuV,0BAA0B/wU,U,OAA1D,EAAKw3B,cAAgB,SACrB/0C,KAAK2lV,2BACL3lV,KAAK86X,kBAAoB96X,KAAK+0C,cAC9B/0C,KAAK27X,uBAAyB37X,KAAKy7X,kBACnCz7X,KAAK47X,aAAe57X,KAAKo2X,gB,mCAKtB,YAAAhoB,gBAAP,WAEE,GADApuW,KAAKC,OAAO0zC,MAAM,mBACd3zC,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAAe,CAC1C,IAAI,EAAgB11J,KAAK6Q,MAAM6kJ,cAActvG,QACzCmoT,EAAavuW,KAAK86D,UAAU90D,MAAK,SAAAwoW,GAAM,OAAAA,EAAGpoT,UAAY,KACtDmoT,IACFvuW,KAAKwd,MAAMwsB,WAAaukU,EAAWhyV,MAK3B,YAAApd,KAAd,W,qBAAsBnD,GAAO,W,0DAGR,O,sBAAjB,EAAAgE,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,U,cAA5C,EAAKu9C,UAAY,SACjB96D,KAAKouW,kB,+BAGLpuW,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAg7W,wBAAd,W,qBAAyC97W,GAAO,W,6DAEvC,OADPgE,KAAKC,OAAO0zC,MAAM,8BACX,GAAM3zC,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,yBACXyP,MAAOxd,KAAKwd,MAAM23L,uBACjBz8C,YAAW,SAAOj9I,GAA2B,qC,kCACzCA,EAASw9B,cACRj5C,KAAKk3W,oBAAgE,GAA1Cl3W,KAAKwd,MAAM23L,qBAAqBv6M,QAC7DoF,KAAK8iJ,aAAaviJ,QAAQ,yD,qBANhC,MAAO,CAAP,EAAO,kBAYK,YAAAs7X,cAAd,SAA4BjiC,G,yHAC1B55V,KAAKwd,MAAMusB,iBAAmB,KAC9B/pC,KAAKwd,MAAM03L,eAAiB,GAC5Bl1M,KAAKwd,MAAM+lI,eAAiB,KACtBu4O,EAAK97X,KAAKy7X,kBAAkB52X,QAAO,SAAAmwE,GAAM,OAAAA,EAAGz4D,KAAOq9U,KACzD55V,KAAKwd,MAAM61O,6BAA+B,GAC1CrzP,KAAK46X,eAAiB,GACtB56X,KAAKk6W,iBAAkB,EACnB4hB,EAAGlhY,QACCm6C,EAAgB+mV,EAAG,GAAG/mV,cACtBgnV,EAAqBD,EAAG,GAAG1mL,oCAAsC,GACjE,EAAOp1M,KAAK2/Q,OACZy7G,EAAarmV,EAAcl2B,MAAK,SAAAm2D,GAAM,OAAAA,EAAG8kR,aACrC,GAAM95V,KAAKg8X,iBAAiBZ,EAAYW,EAAoBhnV,KALpE,M,UAKEkmV,EAAM,UAGNG,EAAA,Y,WACO1gY,G,iFACD4gE,EAAIvmB,EAAcr6C,IAClBo/V,UAAF,Y,MACIslB,EAAiB2c,EAAmBl3X,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkB8wB,EAAE/+C,OACzD3hB,OAAS,GAAxB,YACF,IAAK,EAAL,EAAgB,EAAAwkX,EAAA,eAAL1tW,EAAC,MACNiwQ,EAAY,IAAI,KACVn3O,cAAgB8wB,EAAE/+C,GAC5BolQ,EAAU5jQ,gBAAkBrM,EAAEqM,gBAC9B4jQ,EAAUx2O,mBAAqBz5B,EAAEy5B,mBACjC,EAAK3tB,MAAM61O,6BAA6Bn4P,KAAKymR,G,mBAGpB,SAAM,EAAK2sE,0BAA0BrkM,4BAA4B3uF,EAAE/+C,K,OAE9F,IAFMm/V,EAAqB,SACrBM,EAAoBN,EAAmB72W,QAAO,SAAA1G,GAAK,OAACA,EAAE64G,cACvD,EAAL,EAAkB,EAAAglQ,EAAA,eAAPE,EAAG,MACRv6F,EAAY,IAAI,KACVn3O,cAAgB8wB,EAAE/+C,GAC5BolQ,EAAU5jQ,gBAAkBm+V,EAAI3/V,GAChColQ,EAAUx2O,mBAAqB+wU,EAAI/wU,mBACnC,EAAK3tB,MAAM61O,6BAA6Bn4P,KAAKymR,G,uCApB5CjnR,EAAI,E,wBAAGA,EAAIq6C,EAAcn6C,O,KAAzBF,IAA+B,M,wCAAEA,I,aAyB1CsF,KAAKk6W,iBAAkB,E,wBAGzBnlU,EAAc5tC,SAAQ,SAAU6tE,GACd,GAAhBA,EAAGinT,UAAoBjnT,EAAGt3E,KAAOs3E,EAAGt3E,KAAO,IAAM,EAAOs3E,EAAGt3E,QAE7DsC,KAAK+6X,sBAAwB,CAC3BC,IAAKjmV,EAAcn6C,OACnBqgY,IAAKA,EACLlmV,cAAeA,EAAcn6C,OAAS,EAAIm6C,EAAcpwC,KAAI,SAAAqwE,GAAM,OAAAA,EAAGt3E,QAAM6nD,QAAO,SAAC7zC,EAAGC,GAAM,OAAAD,EAAI,KAAOC,KAAK,GAC5GupX,eAAgBnmV,EAAcn6C,OAAS,GAAIm6C,EAAcl2B,MAAK,SAAAm2D,GAAM,OAAAA,EAAGgkR,iBAAmB,IAAgBif,eAC1GkjB,iBAAkBpmV,EAAcn6C,OAAS,GAAIm6C,EAAcl2B,MAAK,SAAAm2D,GAAM,OAAAA,EAAGukR,YAAc,IAAWG,iBAClG0hC,WAAYrmV,EAAcn6C,OAAS,GAAIm6C,EAAcl2B,MAAK,SAAAm2D,GAAM,OAAAA,EAAG8kR,cAGrE95V,KAAKk8X,uBAAuBnnV,GAC5B/0C,KAAKm8X,8BAA8BpnV,G,aAEnC/0C,KAAK+6X,sBAAwB,CAC3BC,IAAK,EACLC,IAAK,EACLlmV,cAAe,GACfmmV,gBAAgB,EAChBC,kBAAkB,EAClBC,YAAY,G,iBAMS,OAFzBp7X,KAAKo8X,0BAEoB,GAAMp8X,KAAK05W,wBAAwBp9V,QAAQs9U,I,OACpE,OADMyiC,EAAmB,SACzB,GAAMr8X,KAAKs8X,gCAAgCD,I,eAA3C,S,YAEY,YAAAC,gCAAd,SAA8CD,G,iGAClBA,EAAiBtnV,cAAclwC,QAAO,SAAAqC,GAAK,OAAAA,EAAEqyV,aAAe,IAAWgb,kBAC3E35W,OAAS,EACZ,GAAMoF,KAAK05W,wBAAwBx3F,iCAAiCm6G,EAAiB9/W,KADpG,M,OAEF,OADiB,UAMfvc,KAAKu8X,WAAY,E,QAJjBv8X,KAAKu8X,WAAY,EACV,CAAP,EAAOv8X,KAAK8iJ,aAAaviJ,QAAQ,oF,OAMnCP,KAAKu8X,WAAY,E,mCAGP,YAAAC,kBAAd,W,4HACEx8X,KAAKwd,MAAMusB,iBAAmB,KAC9B/pC,KAAKwd,MAAM68V,mBAAqB,KAE5BzU,EAAyC,GACzC62B,EAAkB,IAAI,IAC1Bz8X,KAAKwd,MAAM03L,eAAe/tM,SAAQ,SAAA4/D,GAChC01T,EAAkB,IAAI,IACtBA,EAAkB,EAAK1nV,cAAc/uC,MAAK,SAAAgvE,GAAM,OAAAA,EAAGysM,UAAY16M,EAAQ06M,YACvEmkF,EAAoB1qW,KAAKuhY,MAG3Bz8X,KAAKk6W,iBAAkB,EAEnBl6W,KAAKwd,MAAM61O,8BAAgCrzP,KAAKwd,MAAM61O,6BAA6Bz4P,OAAS,IACxF,EAAyBgrW,EAC5B/gW,QAAO,SAAAy2D,GAAK,OAAK,MAALA,KACZ32D,KAAI,SAAA22D,GAAK,OAAAA,EAAE/+C,MACdvc,KAAKwd,MAAM61O,6BAA+BrzP,KAAKwd,MAAM61O,6BAClDxuP,QAAO,SAAA6M,GAAK,OAAqD,IAArD,EAAuBL,QAAQK,EAAE84B,kBAEhDxqC,KAAK46X,eAAiB56X,KAAK46X,eACxB/1X,QAAO,SAAA6M,GAAK,OAAqD,IAArD,EAAuBL,QAAQK,EAAE84B,qBAE9Co7T,EAAoBhrW,OAAS,GAA7B,YAIF,IAHM8hY,EAAa92B,EAAoB/gW,QAAO,SAAAmwE,GAAM,OAACA,EAAG8kR,aAClD6iC,EAAgBD,EAAW9hY,OAAS,EAAI8hY,EAAW/3X,KAAI,SAAAqwE,GAAM,OAAAA,EAAGq/R,eAAa9uT,QAAO,SAAC7zC,EAAGC,GAAM,OAAAD,EAAIC,KAAK,EACzGirX,EAAa,EACRliY,EAAI,EAAGA,EAAIsF,KAAK46X,eAAehgY,OAAQF,IAC9CkiY,GAAc58X,KAAK46X,eAAelgY,GAAG25W,aAAe,E,GAEtDr0W,KAAK+6X,sBAAwB,CAC3BC,IAAKp1B,EAAoBhrW,OACzBqgY,IAAK0B,EAAgBC,EACrB7nV,cAAe6wT,EAAoBhrW,OAAS,EAAIgrW,EAAoBjhW,KAAI,SAAAqwE,GAAM,OAAAA,EAAGt3E,QAAM6nD,QAAO,SAAC7zC,EAAGC,GAAM,OAAAD,EAAI,KAAOC,KAAK,GACxHupX,eAAgBt1B,EAAoBhrW,OAAS,GAAIgrW,EAAoB/mV,MAAK,SAAAm2D,GAAM,OAAAA,EAAGgkR,iBAAmB,IAAgBif,eACtHkjB,iBAAkBv1B,EAAoBhrW,OAAS,GAAIgrW,EAAoB/mV,MAAK,SAAAm2D,GAAM,OAAAA,EAAGukR,YAAc,IAAWG,iBAC9G0hC,WAAYx1B,EAAoBhrW,OAAS,GAAIgrW,EAAoB/mV,MAAK,SAAAm2D,GAAM,OAAAA,EAAG8kR,cAG7E95V,KAAK+6X,sBAAsBI,kBAC7Bn7X,KAAKk8X,uBAAuBt2B,GAGzB5lW,KAAK+6X,sBAAsBI,mBAC9Bn7X,KAAKs7X,kBAAmB,EACxBt7X,KAAKwd,MAAM+lI,eAAiB,IAE9BvjJ,KAAKm8X,8BAA8Bv2B,GAC/B5lW,KAAK+6X,sBAAsBG,gBAA+C,GAA7Bl7X,KAAK68X,uBACpD78X,KAAK83W,0BACL93W,KAAK68X,sBAAuB,GAEzB78X,KAAK+6X,sBAAsBG,iBAC9Bl7X,KAAK68X,sBAAuB,IAG1B78X,KAAK+6X,sBAAsBK,WAA3B,YACFp7X,KAAKk6W,iBAAkB,EAEjB+E,EAAuBrZ,EAAoB/gW,QAAO,SAAAy2D,GAAK,OAAK,MAALA,GAAaA,EAAEw+R,a,WACnEp/V,G,+DACDwkX,EAAKD,EAAqBvkX,GACX,EAAK8iB,MAAM61O,8BAC9B,EAAK71O,MAAM61O,6BAA6Bx0O,MAAK,SAAAnN,GAAK,OAAAA,EAAE84B,gBAAkB00U,EAAG3iW,MAEvE,MACF,GAAM,EAAKk/V,gBAAgByD,EAAG3iW,GAAI2iW,EAAGxhX,O,OAArC,S,uCANKhD,EAAI,E,wBAAGA,EAAIukX,EAAqBrkX,O,KAAhCF,IAAsC,M,wCAAEA,I,gCAWnDsF,KAAK+6X,sBAAwB,CAC3BC,IAAK,EACLC,IAAK,EACLlmV,cAAe,GACfmmV,gBAAgB,EAChBC,kBAAkB,EAClBC,YAAY,GAEdp7X,KAAKwd,MAAM61O,6BAA+B,G,mCAKhC,YAAAsjI,aAAd,SAA2B/8B,G,2HACzB55V,KAAKwd,MAAM68V,mBAAqB,KAChCr6W,KAAKwd,MAAM03L,eAAiB,GAC5Bl1M,KAAKwd,MAAM+lI,eAAiB,KAC5BvjJ,KAAKwd,MAAM61O,6BAA+B,IACpCyoI,EAAK97X,KAAKo2X,gBAAgBvxX,QAAO,SAAAmwE,GAAM,OAAAA,EAAGz4D,KAAOq9U,MAEhDh/V,QACCk8X,EAAiBgF,EAAG,GACpB/mV,EAAgB/0C,KAAK88X,sCAAsChG,GAC3DiF,EAAqBjF,EAAe1wH,kCAAoC,GACxE,EAAOpmQ,KAAK2/Q,OAClB5qO,EAAc5tC,SAAQ,SAAU6tE,GACd,GAAhBA,EAAGinT,UAAoBjnT,EAAGt3E,KAAOs3E,EAAGt3E,KAAO,IAAM,EAAOs3E,EAAGt3E,QAGvD09X,EAAarmV,EAAcn6C,OAAS,GAAIm6C,EAAcl2B,MAAK,SAAAm2D,GAAM,OAAAA,EAAG8kR,aAChE,GAAM95V,KAAKg8X,iBAAiBZ,EAAYW,EAAoBhnV,KAVpE,M,OAaF,GAHIkmV,EAAM,SAGNG,GAAcW,EAAmBnhY,OAAS,EAC5C,IAAK,EAAL,EAAwB,EAAAmhY,EAAA,eAAbp6G,EAAS,MACdo7G,EAAsB,IAAI,KACVvyV,cAAgBm3O,EAAUn3O,cAC9CuyV,EAAoBh/W,gBAAkB4jQ,EAAU5jQ,gBAChDg/W,EAAoB5xV,mBAAqBw2O,EAAUx2O,mBACnDnrC,KAAKwd,MAAM61O,6BAA6Bn4P,KAAK6hY,G,OAIjD/8X,KAAK+6X,sBAAwB,CAC3BC,IAAKjmV,EAAcn6C,OACnBqgY,IAAKA,EACLlmV,cAAeA,EAAcn6C,OAAS,EAAIm6C,EAAcpwC,KAAI,SAAAqwE,GAAM,OAAAA,EAAGt3E,QAAM6nD,QAAO,SAAC7zC,EAAGC,GAAM,OAAAD,EAAI,KAAOC,KAAK,GAC5GupX,eAAgBnmV,EAAcn6C,OAAS,GAAIm6C,EAAcl2B,MAAK,SAAAm2D,GAAM,OAAAA,EAAGgkR,iBAAmB,IAAgBif,eAC1GkjB,iBAAkBpmV,EAAcn6C,OAAS,GAAIm6C,EAAcl2B,MAAK,SAAAm2D,GAAM,OAAAA,EAAGukR,YAAc,IAAWG,iBAClG0hC,WAAYA,GAEdp7X,KAAKk8X,uBAAuBnnV,GAC5B/0C,KAAKm8X,8BAA8BpnV,G,aAEnC/0C,KAAK+6X,sBAAwB,CAC3BC,IAAK,EACLC,IAAK,EACLlmV,cAAe,GACfmmV,gBAAgB,EAChBC,kBAAkB,EAClBC,YAAY,G,wBAKhBp7X,KAAKo8X,0B,YAGC,YAAAU,sCAAR,SAA8ChG,GAC5C,IAAKA,EACH,MAAO,GAGT,IAAMkG,GAAgBlG,EAAe3wH,8BAAgC,IAClEthQ,QAAO,SAAAqC,GAAK,OAAAA,EAAI,KAEnB,GAAI81X,EAAapiY,OAAS,EAAG,CAC3B,IAAMqiY,EAAwBnG,EAAe/hV,cAC1ClwC,QAAO,SAAAy2D,GAAK,OAAgC,IAAhC0hU,EAAa3rX,QAAQiqD,EAAE/+C,OACnC5X,KAAI,SAAA22D,GAAK,OAA0BA,KAEtC,GAAI2hU,EAAsBriY,OAAS,EACjC,OAAOqiY,EAKX,OAAOnG,EAAe/hV,cAAcpwC,KAAI,SAAA22D,GAAK,OAA0BA,MAGjE,YAAA6gU,8BAAR,SAAsCpnV,GACpC/0C,KAAKu7X,cAAe,EACpB,IAAM2B,EAAenoV,EAAclwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAEi+R,YAAc,IAAW4jC,cAC1En9X,KAAKu7X,aAAe2B,EAAatiY,OAAS,GAGpC,YAAAwhY,wBAAR,WACOp8X,KAAK+6X,sBAAsBK,aAC9Bp7X,KAAKwd,MAAM61O,6BAA+B,IAEvCrzP,KAAK+6X,sBAAsBG,iBAC9Bl7X,KAAKwd,MAAM23L,qBAAuB,KAIxB,YAAAqmL,qBAAd,W,qBAAsCx/X,GAAO,W,2BAC3C,MAAO,CAAP,EAAOgE,KAAK05W,wBAAwBn8V,iBAGxB,YAAAm+W,mBAAd,W,qBAAoC1/X,GAAO,W,2BACzC,MAAO,CAAP,EAAOgE,KAAKo2W,sBAAsB74V,iBAG5B,YAAA6/W,UAAR,WACEp9X,KAAKwd,MAAMusB,iBAAmB,KAC9B/pC,KAAKwd,MAAM68V,mBAAqB,KAChCr6W,KAAK+6X,sBAAwB,CAC3BC,IAAK,EACLC,IAAK,EACLlmV,cAAe,GACfmmV,gBAAgB,EAChBC,kBAAkB,EAClBC,YAAY,GAEdp7X,KAAKwd,MAAM03L,eAAiB,GAC5Bl1M,KAAKwd,MAAM+lI,eAAiB,MAItB,YAAA85O,oBAAR,sBACEr9X,KAAK86X,kBAAoB,GACpB96X,KAAKu6V,oBAAuBv6V,KAAK66X,kBAGF,GAA3B76X,KAAKu6V,oBAA6D,IAAlCv6V,KAAK66X,kBAAkBjgY,OAC9DoF,KAAK86X,kBAAoB96X,KAAK+0C,cAEvB/0C,KAAK66X,kBAAkBjgY,OAAS,GAAKoF,KAAKu6V,mBAAqB,EACtEv6V,KAAK86X,kBAAoB96X,KAAK+0C,cAAclwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAE59D,KAAK6d,cAAcvE,SAAS,EAAK6jX,kBAAkBt/W,gBAAkB+/C,EAAEtxB,aAAe,EAAKuwT,sBAE9Iv6V,KAAK66X,kBAAkBjgY,OAAS,EACvCoF,KAAK86X,kBAAoB96X,KAAK+0C,cAAclwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAE59D,KAAK6d,cAAcvE,SAAS,EAAK6jX,kBAAkBt/W,kBAEtGvb,KAAKu6V,mBAAqB,IACjCv6V,KAAK86X,kBAAoB96X,KAAK+0C,cAAclwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAEtxB,YAAc,EAAKuwT,uBAZ7Ev6V,KAAK86X,kBAAoB96X,KAAK+0C,eAiBpB,YAAAuoV,yBAAd,W,4GACMt9X,KAAKu9X,uBAAuB3iY,OAAS,GACvCoF,KAAK27X,uBAAyB37X,KAAKy7X,kBAAkB52X,QAAO,SAAAy2D,GAAK,OAAAA,EAAE59D,KAAK6d,cAAcvE,SAAS,EAAKumX,uBAAuBhiX,kBAC3Hvb,KAAKwd,MAAM68V,mBAAqBr6W,KAAK27X,uBAAuB,GAAGp/W,GAC/D,GAAMvc,KAAK67X,cAAc77X,KAAKwd,MAAM68V,sBAHlC,M,cAGF,S,aAEsC,MAA/Br6W,KAAKu9X,wBAAwE,GAAtCv9X,KAAKu9X,uBAAuB3iY,SAC1EoF,KAAK27X,uBAAyB,GAC9B37X,KAAK27X,uBAAyB37X,KAAKy7X,kBACnCz7X,KAAKwd,MAAM68V,mBAAqB,M,mCAKtB,YAAAmjB,eAAd,W,4GACMx9X,KAAK02X,aAAa97X,OAAS,GAC7BoF,KAAK47X,aAAe57X,KAAKo2X,gBAAgBvxX,QAAO,SAAAy2D,GAAK,OAAAA,EAAE59D,KAAK6d,cAAcvE,SAAS,EAAK0/W,aAAan7W,kBACrGvb,KAAKwd,MAAMusB,iBAAmB/pC,KAAK47X,aAAa,GAAGr/W,GACnD,GAAMvc,KAAK22X,aAAa32X,KAAKwd,MAAMusB,oBAHjC,M,cAGF,S,oBAE4B,MAArB/pC,KAAK02X,cAAoD,GAA5B12X,KAAK02X,aAAa97X,OAA/C,OACPoF,KAAK47X,aAAe,GACpB57X,KAAK47X,aAAe57X,KAAKo2X,gBACzBp2X,KAAKwd,MAAMusB,iBAAmB,KAC9B,GAAM/pC,KAAK22X,aAAa32X,KAAKwd,MAAMusB,oB,OAAnC,S,mCAKS,YAAAqxE,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAGzC,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,qFACvCA,EAAO4oM,MAAP,YAgBF,GAfI34M,KAAKu7X,cAAgBv7X,KAAKwd,MAAMigX,aAAe,IAAWC,OAC5D19X,KAAK8iJ,aAAaviJ,QAAQ,kDAElBP,KAAKwd,MAAMouC,SAGX5rD,KAAKwd,MAAMusB,kBAAqB/pC,KAAKwd,MAAM68V,oBAAuBr6W,KAAKwd,MAAM03L,eAAet6M,OAG7FoF,KAAKwd,MAAMmgX,sBAAwB39X,KAAKwd,MAAMmgX,qBAAuB,IAAItkX,MAChFrZ,KAAK8iJ,aAAaviJ,QAAQ,4DAH1BP,KAAK8iJ,aAAaviJ,QAAQ,wEAH1BP,KAAK8iJ,aAAaviJ,QAAQ,iDAQtBq9X,EAAY59X,KAAKwd,MAAM03L,eAAevwM,KAAI,SAACm0G,GAC/C,SAAK/jE,cAAc/uC,MAAK,SAACs1D,GAAM,OAAAA,EAAEmmN,WAAa3oK,EAAI2oK,eAClD58Q,QAAO,SAACy2D,GAAM,OAAAA,GAAKA,EAAE09R,kBAAoB,IAAgBqiB,QAAMzgX,OAC7DoF,KAAKwd,MAAM03L,eAAet6M,OAAS,EAMrC,IALIijY,EAAgB79X,KAAKwd,MAAM03L,eAAevwM,KAAI,SAAAm0G,GAChD,SAAK/jE,cAAc/uC,MAAK,SAAAs1D,GAAK,OAAAA,EAAEmmN,WAAa3oK,EAAI2oK,eAChD58Q,QAAO,SAAAy2D,GAAK,OAAK,MAALA,KAERsxT,EAAciR,EAAcl5X,KAAI,SAAA22D,GAAK,OAAAA,EAAE/+C,MACpC7hB,EAAI,EAAGA,EAAImjY,EAAcjjY,OAAQF,IAExC,IADM4gE,EAAIuiU,EAAcnjY,IAClB0/V,8BAAgC9+R,EAAE8+R,6BAA6Bx/V,OAAS,EAC5E,I,WAASg5B,GACP,IAAMsnV,EAAiB5/S,EAAE8+R,6BAA6BxmU,GAAGunV,0BACzD,IAA6C,IAAzCyR,EAAYv7W,QAAQ6pW,GAAwB,CAC9C,IAAME,EAAgByiB,EAAc73X,MAAK,SAAAokB,GAAK,OAAAA,EAAE7N,KAAO2+V,K,OACvD,EAAKp4N,aAAaviJ,QACb+6D,EAAE59D,KAAI,kFAAiF09W,EAAgBA,EAAc19W,KAAOw9W,I,wBAL5HtnV,EAAI,EAAGA,EAAI0nC,EAAE8+R,6BAA6Bx/V,OAAQg5B,I,wBAAlDA,I,kBAcf,OAAI5zB,KAAKk6W,iBACLl6W,KAAKwd,MAAM61O,8BACwC,IAAnDrzP,KAAKwd,MAAM61O,6BAA6Bz4P,OAIxCgjY,EAAY,GACd59X,KAAK8iJ,aAAaviJ,QAAQ,6DAC1B,KAFE,OAHFP,KAAK8iJ,aAAaviJ,QAAQ,uDAC1B,K,cAOqC,MAAjCP,KAAKwd,MAAM68V,mBAAX,OACF,EAAAr6W,KAAwB,GAAMA,KAAK05W,wBAAwBz3F,eAAejiR,KAAKwd,MAAM68V,sB,cAArF,EAAKgiB,iBAAmB,SACAr8X,KAAKq8X,iBAAiBtnV,cAAclwC,QAAO,SAAAqC,GAAK,OAAAA,EAAEqyV,aAAe,IAAWgb,kBAE9E35W,OAAS,GAAKoF,KAAKq8X,iBAAiBtkB,aAAe,EAChE,GAAM/3W,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAKq8X,iBAAiBtkB,eAC5Br/M,YAAW,SAAOj9I,GAA2B,qC,yDACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK08D,Q,OAAlB,MAAO,CAAP,EAAO,U,4BANT,M,OACF,MAAO,CAAP,EAAO,U,OAUA,SAAM18D,KAAK08D,Q,OAAlB,MAAO,CAAP,EAAO,U,0BAIF,SAAM18D,KAAK08D,Q,OAAlB,MAAO,CAAP,EAAO,U,2BAKdzwD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OA7E5B,MAAO,CAAP,EAAO,kBAiFT,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAK26X,sBAAsBv9W,OAAO7C,c,gCAG9B,YAAAmiD,KAAd,W,qBAAsB1gE,GAAO,W,0DAEZ,O,sBAAb,EAAAgE,KAAa,GAAMA,KAAK26X,sBAAsB17X,OAAOe,KAAKwd,Q,OAKnD,OALP,EAAKA,MAAQ,SAEbxd,KAAK8iJ,aAAaxiJ,QAAQ,4BAGnB,GAAMN,KAAK8F,OAAOkD,gBAAgB,qB,OAAzC,MAAO,CAAP,EAAO,U,yBAGPhJ,KAAK8iJ,aAAahmJ,MAAM,G,+BAIpB,YAAAghY,uBAAR,WAEE99X,KAAK8F,OAAOyC,SAAS,YAAYvI,KAAKie,UAAS,uEAGzC,YAAA8/W,qBAAR,WAEE/9X,KAAK8F,OAAOyC,SAAS,YAAYvI,KAAKie,UAAS,mEAG1C,YAAAuqU,QAAP,SAAe1kD,GAAf,WACE9jS,KAAKC,OAAO0zC,MAAM,WAClB,IAAIx3B,EAAa2nR,EAAOtmS,OAAO+wO,MAAM,GAGrC,GADoB,IAAoBp9N,MAAM,iBAAkB,OAC9C8P,QAAQ9E,GAAO,CAC/B,IAAIo/B,EAAqB,IAAID,WAC7BC,EAAOI,cAAcx/B,GACrBo/B,EAAOr+C,OAAS,WACd,EAAKsgB,MAAMquC,SAAW1vC,EAAKze,WAK7BsC,KAAK8iJ,aAAahmJ,MAAM,iEAKpB,YAAAo/X,uBAAR,SAA+BnnV,GAC7B/0C,KAAKs7X,kBAAmB,EACxB,IAAI/3O,EAAyB,GACzBy6O,EAA2B,GACEpgY,MAA7BoC,KAAKwd,MAAM+lI,gBACTvjJ,KAAKwd,MAAM+lI,eAAe3oJ,OAAS,IACrC2oJ,EAAiBvjJ,KAAKwd,MAAM+lI,gBAEhC,IAAInhJ,EAAO,IAAI,IACf2yC,EAAc5tC,SAAQ,SAAU3G,GAC1BA,EAAK+4V,YAAc,IAAWG,eACV97V,MAAlB2lJ,IACEA,EAAe3oJ,OAAS,IAC1BojY,EAAmBz6O,EAAe1+I,QAAO,SAAAqC,GAAK,OAAAA,EAAEsjC,gBAAkBhqC,EAAK+b,OAE1C,GAA3ByhX,EAAiBpjY,UACnBwH,EAAO,IAAI,KACNooC,cAAgBhqC,EAAK+b,GAC1Bna,EAAKqiW,gBAAkBjkW,EAAK9C,KAC5B6lJ,EAAeroJ,KAAKkH,QAOxBmhJ,EAAe3oJ,SACjBoF,KAAKwd,MAAM+lI,eAAiBA,EAC5BvjJ,KAAKs7X,kBAAmB,IAGrB,YAAA1zB,iBAAP,SAAwBnqW,GACtBuC,KAAK8iJ,aAAa3iJ,KAAK1C,IAEX,YAAAg+W,gBAAd,SAA8BjxU,EAAuBi6T,G,qBAA0BzoW,GAAO,W,2EAO9D,OALjBgE,KAAKwd,MAAM61O,+BACdrzP,KAAKwd,MAAM61O,6BAA+B,IAItB,GAAMrzP,KAAKsuV,0BAA0BrkM,4BAA4Bz/G,I,OAKvF,OALMuxU,EAAgB,SAChBC,EAAoBD,EAAcl3W,QAAO,SAAA1G,GAAK,OAACA,EAAE64G,eAGjD5hE,EAAcp1C,KAAK+0C,cAAc/uC,MAAK,SAAAs1D,GAAK,OAAAA,EAAE/+C,KAAOiuB,OACd,MAAzB4K,EAAYn3B,WAAqB+9V,EAAkBphX,OAAS,GAEvEqhX,EAA+CD,EAAkBr3W,KAAI,SAAAu3W,GACzE,IAAIv6F,EAAY,IAAI,IAIpB,OAHAA,EAAUn3O,cAAgBA,EAC1Bm3O,EAAU5jQ,gBAAkBm+V,EAAI3/V,GAChColQ,EAAUx2O,mBAAqB+wU,EAAI/wU,mBAC5Bw2O,KAGHznM,EAAYl6E,KAAKwd,MAAM61O,6BAC1BxuP,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkBA,KACnCxqC,KAAKwd,MAAM61O,6BAA+Bn5K,EAAU/1E,OAAO83W,GAEvD,EAAmB,EACvBD,EAAkB70W,SAAQ,SAAA+0W,GAAO,YAAsBA,EAAI7H,aAAe,MAC1Er0W,KAAK46X,eAAiB56X,KAAK46X,eAAe/1X,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkBA,KAC1ExqC,KAAK46X,eAAe1/X,KAAK,CAAEsvC,cAAeA,EAAe6pU,YAAa,IACtEr0W,KAAK+6X,sBAAsBE,KAAO,EAClC,MAGI9e,EAAqC,CACzC3xU,cAAeA,EACfi6T,gBAAiBA,EACjBrvJ,mCAAwCp1M,KAAKwd,MAAM61O,6BAA4B,QAC/E62H,cAAc,GAGT,GAAMlqX,KAAKkkV,cACfzoS,KAAK,CACJ1tC,UAAW,IACXyP,MAAO2+V,IAGRzjN,YAAW,SAAOj9I,GAAa,qC,wCACzBA,EAASw9B,cAAgBx9B,EAASxR,SAE/BiwE,EAAYl6E,KAAKwd,MAAM61O,6BAC1BxuP,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkBA,KACnCxqC,KAAKwd,MAAM61O,6BAA+Bn5K,EAAU/1E,OAAOsX,EAASxR,OAAOmyW,YAG3Ep8W,KAAK46X,eAAiB56X,KAAK46X,eAAe/1X,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkBA,KAC1ExqC,KAAK46X,eAAe1/X,KAAK,CAAEsvC,cAAeA,EAAe6pU,YAAa54V,EAASxR,OAAOggX,kBAAoB,IAE1GjqX,KAAK+6X,sBAAsBE,KAAOx/W,EAASxR,OAAOggX,kBAAoB,EAEtEjqX,KAAKC,OAAO0zC,MAAM,uCAChB3zC,KAAKwd,MAAM61O,6BAA6Bz4P,UAG1CoF,KAAKk6W,iBACHl6W,KAAKwd,MAAM61O,8BACwC,IAAnDrzP,KAAKwd,MAAM61O,6BAA6Bz4P,QAE1CoF,KAAK8iJ,aAAaviJ,QAChB,uD,sBA5BR,MAAO,CAAP,EAAO,kBAiCK,YAAAy7X,iBAAd,SAA+BZ,EAAqBW,EAA0EhnV,G,qBAA+B/4C,GAAO,W,iEAC9Ji/X,EAAM,GACNG,EAAA,Y,WACO1gY,G,yEACD4gE,EAAIvmB,EAAcr6C,IAClBo/V,WACE,EAAiBiiC,EAAmBl3X,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkB8wB,EAAE/+C,OACzD3hB,OAAS,EACC,GAAM,EAAK0zV,0BAA0BrkM,4BAA4B3uF,EAAE/+C,KAD5F,MAFF,M,OAIA,IADMm/V,EAAqB,S,WAClB9nV,GACP,IAAMgoV,EAAWF,EAAmB11W,MAAK,SAAAi+D,GAAK,OAAAA,EAAE1nD,KAAO,EAAeqX,GAAG7V,mBACzEk9W,GAAQrf,GAAYA,EAASvH,YAAcuH,EAASvH,YAAc,GAF3DzgV,EAAI,EAAGA,EAAI,EAAeh5B,OAAQg5B,I,EAAlCA,G,0BAIe,MAAf0nC,EAAEr9C,UAAF,MAEkB,GAAM,EAAKqwU,0BAA0BrkM,4BAA4B3uF,EAAE/+C,K,OAE9F,IAFMm/V,EAAqB,SACrBM,EAAoBN,EAAmB72W,QAAO,SAAA1G,GAAK,OAACA,EAAE64G,cACnDpjF,EAAI,EAAGA,EAAIooV,EAAkBphX,OAAQg5B,IAC5CqnW,KAASjf,EAAkBpoV,GAAGygV,aAAe,G,oCAIjD4mB,IAAQ3/T,EAAE+4S,Y,uCAnBL35W,EAAI,E,wBAAGA,EAAIq6C,EAAcn6C,O,KAAzBF,IAA+B,M,wCAAEA,I,gCAuB1CugY,EAAMlmV,EAAcn6C,OAAS,EAAIm6C,EAAcpwC,KAAI,SAAAqwE,GAAM,OAAAA,EAAGq/R,eAAa9uT,QAAO,SAAC7zC,EAAGC,GAAM,OAAAD,EAAIC,KAAK,E,iBAErG,MAAO,CAAP,EAAOspX,WArvBEgD,EAAmB,GAD/B,uB,uBA8CyB,mB,OAAA,IAAN,oBAAM,SAC8B,mBAD9B,OAC8B,IAArB,UAAqB,SACzB,mBADyB,OACzB,IAAZ,UAAY,SACO,mBADP,OACO,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACR,mBADQ,OACR,IAAvB,UAAuB,SACJ,mBADI,OACJ,IAArB,UAAqB,SACR,mBADQ,OACR,IAAnB,UAAmB,SACf,mBADe,OACf,IAAf,sCAAe,SACO,mBADP,OACO,IAAb,kCAAa,SACI,mBADJ,OACI,IAAf,UAAe,SACoB,mBADpB,OACoB,IAAzB,UAAyB,SACV,mBADU,OACV,IAApB,UAAoB,SAChC,mBADgC,OAChC,IAAJ,gBAAI,YA1DTA,GAAb,I,+FC3CAviY,EAAOD,QAAU,gtd,ipECejB,aAsCE,WACUqK,EACA0oX,EACAmM,EACA73O,EACAohM,GALV,WACU,KAAAp+U,SACA,KAAA0oX,gBACA,KAAAmM,wBACA,KAAA73O,eACA,KAAAohM,gBAxCF,KAAA9jV,OAAc,GACd,KAAA89X,eAAyB,EAI1B,KAAA1gX,MAAwB,IAAI,IAE3B,KAAAF,WAAoC,IAAI,wBAGxC,KAAA6gX,mBAA6B,EAE7B,KAAAhY,aAAuB,EAEvB,KAAAkH,aAAuB,GAIvB,KAAAgO,cAAwB,GACxB,KAAAr7B,eAAyB,GAGzB,KAAAo+B,kBAA4B,GAE5B,KAAApxI,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAK26X,sBAAsBp5G,cAAcvhR,KAAKwd,MAAMjB,GAAIvc,KAAKsd,YACvEna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAwGD,KAAAuhY,mBAA6B,EAvFnCr+X,KAAKC,OAAS,aAAWC,UAAU,0BAEnC,IAAImtX,EAAe,IAAO9pT,eAC1BvjE,KAAKqtX,aAAeA,EAEpB,IAAI7yW,EAAa,IAAOC,aACxBza,KAAKq7X,cAAgB7gX,EAAa,8CAClCxa,KAAKggW,eAAiBxlV,EAAa,+C,cA8KvC,OA3KgB,YAAA5B,SAAd,SAAuBxY,EAAa8iV,EAA0BlgV,G,qBAA+ChH,GAAO,W,0CAClHgE,KAAKI,OAASA,EAGR2D,EAAoBf,GAAyBA,EAAsBe,kBACnEu6X,EAAkBv6X,GAAqBA,EAAkBvB,QAAUuB,EAAkBvB,OAAO4F,UAAa,GAC/GpI,KAAKk+X,cAAgBI,EAAeJ,gBAAiB,E,WAGzC,YAAA/+X,KAAd,W,qBAAsBnD,GAAO,W,+DACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE9Bje,KAAK26X,sBAAsBv9W,OAAO87B,iBAAmBl5C,KAAKie,UAErDqD,MAAMthB,KAAKI,OAAO0hR,kBAAnB,OACF,EAAA9hR,KAAa,GAAMA,KAAK26X,sBAAsBr+W,SAAStc,KAAKI,OAAO0hR,qB,OAG5D,OAHP,EAAKtkQ,MAAQ,SACbxd,KAAKm+X,kBAA6C,GAAzBn+X,KAAKwd,MAAMigX,WAE7B,GAAMz9X,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yBAKC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGI,YAAAmuD,YAAb,W,qBAA4BviY,GAAO,W,6DAC1B,SAAMgE,KAAK26X,sBAAsBn5G,gBAAgBxhR,KAAKwd,MAAMjB,GAAIvc,KAAKwd,MAAM9f,MAC/EyF,MAAK,WAAM,eACX8I,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAH5B,MAAO,CAAP,EAAO,kBAOD,YAAA8sH,MAAR,WACM5pH,KAAKw+X,qBACPx+X,KAAKw+X,oBAAoB50Q,SAIf,YAAAgtO,cAAd,SAA4BxrS,G,qBAAmBpvD,GAAO,W,6DAE7C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO4tC,IACNstG,YAAW,SAAOj9I,GAA2B,qC,yDACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKy+X,uBAAuBrzU,I,OAAzC,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAUK,YAAAqzU,uBAAd,SAAqCliX,G,qBAAavgB,GAAO,W,wDAErD,O,sBAAA,GAAMgE,KAAKwuX,cAAc/jT,aAAaluD,I,OAEtC,OAFA,SACAvc,KAAK8iJ,aAAaxiJ,QAAQ,wCACnB,CAAP,GAAO,G,yBAGPN,KAAK8iJ,aAAahmJ,MAAM,G,+BAMd,YAAA2tE,aAAd,W,qBAA8BzuE,GAAO,W,wDACnCgE,KAAKq+X,mBAAoB,E,iBAEvB,O,uBAAA,GAAMr+X,KAAK26X,sBAAsBlwT,aAAazqE,KAAKwd,MAAMjB,K,cAAzD,SACAvc,KAAK8iJ,aAAaxiJ,QAAQ,wC,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,oBAGxBkD,KAAKq+X,mBAAoB,E,6BAIf,YAAA9yV,cAAd,SAA4BhvB,G,qBAAavgB,GAAO,W,0DAC9CgE,KAAKmmX,aAAc,E,iBAEF,O,uBAAA,GAAMnmX,KAAK26X,sBAAsBpvV,cAAchvB,I,cAAxDxM,EAAS,WACDA,EAAOm0Q,OACnBlkR,KAAK8iJ,aAAa3iJ,KAAK,wDAAyD,CAAEqwB,QAASzgB,EAAO2uX,oBAGlG1+X,KAAK2+X,eAAe5uX,EAAOusC,QAASvsC,EAAO87C,SAAU97C,EAAOuL,aAC5Dtb,KAAK8iJ,aAAaxiJ,QAAQ,6B,+BAI5BN,KAAK8iJ,aAAahmJ,MAAM,G,oBAGxBkD,KAAKmmX,aAAc,E,6BAIf,YAAAwY,eAAR,SAAuBjgJ,EAAgB7yL,EAAkBvwC,GAGvD,IAFA,IAAMsjX,EAAiBn/T,KAAKi/K,GACtBmgJ,EAAc,IAAIn+X,MAAMk+X,EAAehkY,QACpCF,EAAI,EAAGA,EAAIkkY,EAAehkY,OAAQF,IACzCmkY,EAAYnkY,GAAKkkY,EAAezgV,WAAWzjD,GAE7C,IAAMihB,EAAO,IAAI2+B,KAAK,CAAC,IAAIu3H,WAAWgtN,IAAe,CAAEvhY,KAAMge,GAAe,aAC5E,IAAUe,OAAOV,EAAMkwC,IAGjB,YAAAizU,iBAAR,SAAyB9hY,GACvB,IAAI+hB,EAAQ/hB,EAAMQ,OACduhB,EAAMwvN,OAASxvN,EAAMwvN,MAAM3zO,OAAS,IACtCoF,KAAKo+X,kBAAoBr/W,EAAMwvN,MAAM,GAAG7wO,OAI9B,YAAAkkR,UAAd,W,qBAA2B5lR,GAAO,W,0DAChC,IAAKgE,KAAK++X,mBAAuD,IAAlC/+X,KAAK++X,kBAAkBnkY,OAEpD,OADAoF,KAAK8iJ,aAAaviJ,QAAQ,oDAC1B,I,iBAQA,O,uBAJIy+X,EAAW,IAAI,KACVpzU,SAAW5rD,KAAK++X,kBACzBC,EAASnzU,SAAW7rD,KAAKo+X,kBAEzB,GAAMp+X,KAAK26X,sBAAsB/4G,UAAU5hR,KAAKwd,MAAMjB,GAAIyiX,I,OAInD,OAJP,SACAh/X,KAAK8iJ,aAAaxiJ,QAAQ,4BAC1BN,KAAK++X,kBAAoB,KACzB/+X,KAAKo+X,kBAAoB,GAClB,GAAMp+X,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yBAGPvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAA+kR,aAAd,SAA2BE,EAAgBrkR,G,qBAAe1B,GAAO,W,6DACxD,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IAENg7J,YAAW,SAAOj9I,GAA2B,qC,oEACvCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK26X,sBAAsB94G,aAAa7hR,KAAKwd,MAAMjB,GAAIwlQ,GACjE5+Q,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,8BAC1B,EAAKikV,cAENt4U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,U,mCANb,MAAO,CAAP,EAAO,kBAjNEmiY,EAAsB,GADlC,uB,uBAwCyB,mB,OAAA,IAAN,oBAAM,SACc,mBADd,OACc,IAAb,UAAa,SACgB,mBADhB,OACgB,IAArB,UAAqB,SAClB,mBADkB,OAClB,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,YA3C3BA,GAAb,I,usBCJA,aAKE,WACUl/X,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAGRpsN,KAAKC,OAAS,aAAWC,UAAU,qC,QAoBvC,OAjBS,YAAA+V,gBAAP,SAAuBzT,EAA6BsD,GAClD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,8BACViW,KAAK,EACL7S,KAAM,4BACN4J,MAAOtH,KAAKD,KAAKM,GAAG,wDArBf6+X,EAAiC,GAD7C,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,4FCXAxjY,EAAOD,QAAU,uD,iFCAjBC,EAAOD,QAAU,sgK,6/DCSjB,aA6BE,WACUqK,EACA60X,EACA73O,EACAohM,GAJV,WACU,KAAAp+U,SACA,KAAA60X,wBACA,KAAA73O,eACA,KAAAohM,gBA9BF,KAAA9jV,OAAc,GAGf,KAAA89X,eAAyB,EAExB,KAAA5gX,WAAoC,IAAI,wBAGxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,+DAS1B,OARPgE,KAAKC,OAAO0zC,MAAM,cACd9J,EAAS7pC,KAAKsd,WAAWusB,OAAOylT,MACpC3mL,eAAentF,QAAQ,2BAAsC,MAAV3xC,EAAiB,GAAKA,GAMlE,IAJY7pC,KAAKk+X,cACpBl+X,KAAK26X,sBAAsBr5G,gBAAgBthR,KAAKsd,YAChDtd,KAAK26X,sBAAsB7mX,KAAK9T,KAAKsd,aAGtCna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAePkD,KAAKC,OAAS,aAAWC,UAAU,sB,YA+DvC,OA5DgB,YAAA0Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACpEgE,KAAKsd,WAAWusB,OAAOylT,MAAQ3mL,eAAexsF,QAAQ,4BACtDn8E,KAAKI,OAASA,EACdJ,KAAKk+X,cAAyC,SAAzB99X,EAAO89X,gBAAqD,IAAzB99X,EAAO89X,eACzDh7C,EAAY96U,WAAmD,IAAvC86U,EAAY96U,SAAS81X,c,WAGvC,YAAA/+X,KAAd,W,qBAAsBnD,GAAO,W,yDACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE9Bje,KAAK26X,sBAAsBv9W,OAAO87B,iBAAmBl5C,KAAKie,UAEnD,GAAMje,KAAKukV,a,OAAlB,MAAO,CAAP,EAAO,U,yBAKG,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAA3lQ,aAAd,SAA2BluD,G,qBAAavgB,GAAO,W,wDAE3C,O,sBAAA,GAAMgE,KAAK26X,sBAAsBlwT,aAAaluD,I,OAE9C,OAFA,SACAvc,KAAK8iJ,aAAaxiJ,QAAQ,wCACnB,CAAP,GAAO,G,yBAGPN,KAAK8iJ,aAAahmJ,MAAM,G,+BAIpB,YAAAy5W,aAAR,WACEv2W,KAAKsd,WAAWusB,OAAOylT,MAAQtvV,KAAKsd,WAAWusB,OAAO8wO,UAAY36Q,KAAKsd,WAAWusB,OAAO+wO,QAAU,MAGvF,YAAAytE,gBAAd,SAA8B9rU,G,kGAET,O,sBAAA,GAAMvc,KAAK26X,sBAAsB5uU,2BAA2BxvC,I,OAC7E,OAAkB,OADd+rU,EAAa,UAER,CAAP,EAAOtoV,KAAK8F,OAAOyC,SAAS+/U,I,+BAG9BtoV,KAAK8iJ,aAAahmJ,MAAM,G,+BA9FjBqiY,EAAkB,GAD9B,uB,uBA+ByB,mB,OAAA,IAAN,oBAAM,SAC8B,mBAD9B,OAC8B,IAArB,UAAqB,SAClB,mBADkB,OAClB,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,YAjC3BA,GAAb,I,qsBCCA,aAKE,WACUp/X,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAGRpsN,KAAKC,OAAS,aAAWC,UAAU,iC,QAoDvC,OAjDE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPpI,SAAU,yBACVoD,KAAM,mBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,2CAGtB,CACEqC,MAAO,SACPpI,SAAU,2BACVoD,KAAM,0BAKR,CACEgF,MAAO,oCACPpI,SAAU,2CACVoD,KAAM,6BAGR,CACEgF,MAAO,iBACPpI,SAAU,mDACVoD,KAAM,qBAEN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBmuM,4BAClEprQ,MAAOtH,KAAKD,KAAKM,GAAG,wCACpB+H,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBgmD,+BAMnC,CACEhwQ,MAAO,2CACPpI,SAAU,6CACVoD,KAAM,gCAzDD0hY,EAA6B,GADzC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,uFCVA1jY,EAAOD,QAAU,8M,4ECAjBC,EAAOD,QAAU,ogL,2tEC2BjB,aAuBE,WACUqK,EACAu5X,EACA1E,EACA//T,EACAkoF,EACA4iM,EACA0wB,EACA/pB,EACEhyU,EACF6pU,GAVV,WACU,KAAAp+U,SACA,KAAAu5X,sBACA,KAAA1E,wBACA,KAAA//T,QACA,KAAAkoF,eACA,KAAA4iM,8BACA,KAAA0wB,wBACA,KAAA/pB,kBACE,KAAAhyU,KACF,KAAA6pU,gBAvBF,KAAA4yC,eAAiC,IAAI,IAQrC,KAAA98G,WAAqB,EACrB,KAAAslH,sBAAgC,EAChC,KAAAvQ,OAAiB,IAAI,IACrB,KAAAwQ,eAAyB,IAAI,IAcnCv/X,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,2BAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MAExB7Q,KAAKwvS,aAAexvS,KAAKqa,GAAGtF,UAAU,KAAuB,SAACtX,GAAmC,SAAK2wW,gBAAgBjvW,KAAK,M,wBA+N9H,OA5NQ,YAAAgqJ,SAAP,WACEnpJ,KAAKwvS,aAAa7jM,WAGb,YAAAg6O,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACf,kBACCi5U,OAAO,oBAAoBpyK,YAAY,mDAAmDwkD,WAC1F4tH,OAAO,YAAYpyK,YAAY,kDAAkDwkD,WACjF4tH,OAAO,uBAAuBpyK,YAAY,gEAAgE4wK,SAAS,GACnHwB,OAAO,cAAcpyK,YAAY,uDAAuDwkD,WACxF4tH,OAAO,UAAUpyK,YAAY,mDAAmDwkD,WAChF4tH,OAAO,kBAAkBpyK,YAAY,2DAA2DwkD,WAChG4tH,OAAO,eAAepyK,YAAY,wDAAwDwkD,WAAWmsH,SAAS,GAAGC,SAAS,KAC1HwB,OAAO,uBAAuBpyK,YAAY,8DAA8DwkD,WACxG4tH,OAAO,mBAAmBpyK,YAAY,0DAA0DwkD,WAChG4tH,OAAO,2BAA2BpyK,YAAY,kEAAkEwkD,WAChH4tH,OAAO,qBAAqBpyK,YAAY,4DAA4DwkD,WACpG4tH,OAAO,YAAYpyK,YAAY,qDAAqDwkD,WACpF4tH,OAAO,YAAYpyK,YAAY,qDAAqDwkD,WACpF4tH,OAAO,aAAapyK,YAAY,qDAAqDwkD,WAAWmsH,SAAS,GACzGyB,OAAO,qBAAqBpyK,YAAY,6DAA6DwkD,WAAWmsH,SAAS,GAAGC,SAAS,GACrIwB,OAAO,gBAAgBpyK,YAAY,wDAAwDwkD,WAAWmsH,SAAS,GAC/GyB,OAAO,kBAAkBpyK,YAAY,0DAA0DwkD,WAAWmsH,SAAS,GAAGC,SAAS,GAC/HwB,OAAO,eAAepyK,YAAY,wDAAwDwkD,WAAWmsH,SAAS,GAAGC,SAAS,KAC1HvqS,GAAGrtC,KAAK+uX,SAGA,YAAAn2W,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,iEACzCgE,KAAKC,OAAO0zC,MAAM,YAEbryB,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKie,WAAa7d,EAAO6d,UAGzBje,KAAK+uX,OAAO9wW,UAAYje,KAAKie,UAC7Bje,KAAK+uX,OAAO3jU,SAAW,EAEvBprD,KAAKo2W,sBAAsBh5V,OAAO87B,iBAAmBl5C,KAAKie,UAC1Dje,KAAKq/X,oBAAoBjiX,OAAO87B,iBAAmBl5C,KAAKie,UAExD,EAAAje,KAAuB,GAAMA,KAAK07X,uB,cAAlC,EAAKtF,gBAAkB,SAElB90W,MAAMlhB,EAAO0hR,kBAAd,OACF9hR,KAAK2lV,2BACL3lV,KAAK8hR,kBAAoB1hR,EAAO0hR,iBAChC9hR,KAAK26X,sBAAsBv9W,OAAO87B,iBAAmBl5C,KAAKie,UAErC,GAAMje,KAAK26X,sBAAsBr+W,QAAQtc,KAAK8hR,oB,QAA/D09G,EAAiB,UAEFz1V,mBACjB/pC,KAAK+uX,OAAOhlV,iBAAmBy1V,EAAez1V,iBAC9C/pC,KAAK22X,gB,mCAQN,YAAAvoB,gBAAP,WAEE,GADApuW,KAAKC,OAAO0zC,MAAM,mBACd3zC,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAAe,CAC1C,IAAI,EAAgB11J,KAAK6Q,MAAM6kJ,cAActvG,QACzCmoT,EAAavuW,KAAK86D,UAAU90D,MAAK,SAAAwoW,GAAM,OAAAA,EAAGpoT,UAAY,KACtDmoT,IACFvuW,KAAK+uX,OAAO/kV,WAAaukU,EAAWhyV,MAK5B,YAAApd,KAAd,W,qBAAsBnD,GAAO,W,0DAC3BgE,KAAKC,OAAO0zC,MAAM,Q,iBAEC,O,sBAAjB,EAAA3zC,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,U,cAA5C,EAAKu9C,UAAY,SACjB96D,KAAKouW,kB,+BAGLpuW,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAA4+X,mBAAd,W,qBAAoC1/X,GAAO,W,kDAEV,SADNgE,KAAKo2W,sBAAsB74V,U,OAEpD,MAAO,CAAP,EAD+B,SAA0B1Y,QAAO,SAAAqC,GAAK,OAAAA,EAAEgjC,gBAAkB,IAAcovT,mBAI5F,YAAAl+O,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAIzC,OAHPgE,KAAKC,OAAOE,KAAK,UAGV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,sEACvCA,EAAO4oM,MACJ34M,KAAK+uX,OAAOhlV,iBAAb,OACF/pC,KAAK8iJ,aAAaviJ,QAAQ,oD,OAF1B,M,OAKmB,SAAMP,KAAKq/X,oBAAoBn2V,wBAAwBlpC,KAAK+uX,S,OACxE,OADHhX,EAAe,SACZ,GAAM/3W,KAAKkkV,cAAczoS,KAAK,CAC/B1tC,UAAW,IACXyP,MAAOu6V,IACNr/M,YAAW,SAAOj9I,GAA2B,qC,yDACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK08D,Q,OAAlB,MAAO,CAAP,EAAO,U,mCALf,MAAO,CAAP,EAAO,U,2BAWZzwD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OApB5B,MAAO,CAAP,EAAO,kBAwBT,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAKq/X,oBAAoBjiX,OAAO7C,c,gCAG5B,YAAAmiD,KAAd,W,qBAAsB1gE,GAAO,W,wDAC3BgE,KAAKC,OAAOE,KAAK,U,iBAEf,O,sBAAA,GAAMH,KAAKq/X,oBAAoBp2V,sBAAsBjpC,KAAK8hR,iBAAkB9hR,KAAK+uX,S,OAK1E,OALP,SAEA/uX,KAAK8iJ,aAAaxiJ,QAAQ,4BAGnB,GAAMN,KAAK8F,OAAOkD,gBAAgB,uB,OAAzC,MAAO,CAAP,EAAO,U,yBAGPhJ,KAAK8iJ,aAAahmJ,MAAM,G,+BAIf,YAAA65X,aAAb,W,qBAA6B36X,GAAO,W,mEAElCgE,KAAKC,OAAO0zC,MAAM,gB,iBAGM,O,sBAAtB,EAAA3zC,KAAsB,GAAMA,KAAKo2W,sBAAsB95V,QAAQtc,KAAK+uX,OAAOhlV,mB,cAA3E,EAAK+sV,eAAiB,SAGtB92X,KAAK+uX,OAAO/kV,WAAahqC,KAAK82X,eAAe9sV,WAIzC+K,EAA+B,GACnCl6C,OAAOgI,OAAOkyC,EAAe/0C,KAAK82X,eAAe/hV,eAEjDA,EAAc5tC,SAAQ,SAAC3G,EAAMmJ,GAG3B,GAAInJ,EAAKw4V,kBAAoB,IAAgBK,QAAU74V,EAAK+4V,aAAe,IAAWib,WAAY,CAChG,IAAIirB,EAAS,EAAK3I,eAAe/hV,cAAcm+H,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAO/b,EAAK+b,MAC5E,EAAKu6W,eAAe/hV,cAAc59B,OAAOsoX,EAAQ,OAcrDz/X,KAAK+uX,OAAOhmV,OAAS/oC,KAAK82X,eAAe/tV,OACzC/oC,KAAKg3X,cAAch3X,KAAK+uX,OAAOhmV,OAAOpkC,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,O,+BAEjDvc,KAAK8iJ,aAAahmJ,MAAM,G,+BAIf,YAAA86X,YAAb,W,qBAA4B57X,GAAO,W,6DAC1B,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAK+uX,SACXr2N,YAAW,SAAOj9I,GAA2B,qC,kCACzCA,EAASw9B,aAGZj5C,KAAK+uX,OAAOnuO,SAAW,GAFvB5gJ,KAAKg3X,cAAch3X,KAAK+uX,OAAOnuO,U,qBALnC,MAAO,CAAP,EAAO,kBAYD,YAAAo2O,cAAR,SAAsBp2O,GAAtB,WAEE5gJ,KAAK+uX,OAAOzxW,WAAa,GAEzBtd,KAAK+uX,OAAOhmV,OAAO5hC,SAAQ,SAAAyqW,GAEzB,IAAe,IADDhxN,EAASsyB,WAAU,SAAAhsK,GAAK,OAAAA,GAAK0qW,EAAMr1V,MAE/C,I,eAASm7W,IAES,IADD,EAAK3I,OAAOzxW,WAAW41J,WAAU,SAAAhsK,GAAK,OAAAA,IAAMwwX,EAAIC,cAE7D,EAAK5I,OAAOzxW,WAAWpiB,KAAKw8X,EAAIC,YAHpB,MAAA/lB,EAAMt0V,WAAN,eAAkB,C,EAAtB,UAShBtd,KAAKC,OAAO0zC,MAAM,eAAgB3zC,KAAK+uX,OAAOzxW,aAGjC,YAAAs5W,eAAb,W,qBAA+B56X,GAAO,W,6DAC7B,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,kCACvCA,EAAO4oM,QACT34M,KAAKg6Q,WAAY,G,qBAHvB,MAAO,CAAP,EAAO,kBAOI,YAAA68G,eAAb,W,qBAA+B76X,GAAO,W,kCACpCgE,KAAKg6Q,WAAY,E,WAtQV0lH,EAAuB,GADnC,uB,uBAyByB,mB,OAAA,IAAN,oBAAM,SAC0B,mBAD1B,OAC0B,IAAnB,UAAmB,SACI,mBADJ,OACI,IAArB,UAAqB,SACzB,mBADyB,OACzB,IAAZ,UAAY,SACO,mBADP,OACO,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACZ,mBADY,OACZ,IAArB,UAAqB,SACR,mBADQ,OACR,IAAnB,UAAmB,SACf,mBADe,OACf,IAAf,sCAAe,SACO,mBADP,OACO,IAAb,kCAAa,YAjC3BA,GAAb,I,gGC3BAhkY,EAAOD,QAAU,m7F,+5DCIjB,aAEE,WAAoB6lD,GAAA,KAAAA,mB,MAKtB,OAHe,YAAA1oC,SAAb,SAAsBm/V,G,0EACpB/3W,KAAK+3W,aAAeA,E,WALX4nB,EAA6B,GADzC,uB,uBAGuD,mB,OAAA,IAAhB,wCAAgB,YAF3CA,GAAb,K,qGCJAjkY,EAAOD,QAAU,svB,0tEC2BjB,aAwBE,WACUqK,EACAu5X,EACAzkU,EACAkoF,EACA4iM,EACA0wB,EACA/pB,EACEhyU,EACF6pU,GATV,WACU,KAAAp+U,SACA,KAAAu5X,sBACA,KAAAzkU,QACA,KAAAkoF,eACA,KAAA4iM,8BACA,KAAA0wB,wBACA,KAAA/pB,kBACE,KAAAhyU,KACF,KAAA6pU,gBAxBF,KAAA4yC,eAAiC,IAAI,IAGrC,KAAAt5W,MAAsB,IAAI,IAG1B,KAAAoiX,uBAAmC,GAInC,KAAA5lH,WAAqB,EACrB,KAAAslH,sBAAgC,EAChC,KAAAvQ,OAAiB,IAAI,IACrB,KAAAwQ,eAAyB,IAAI,IAanCv/X,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,qBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MAExB7Q,KAAKwvS,aAAexvS,KAAKqa,GAAGtF,UAAU,KAAuB,SAACtX,GAAmC,SAAK2wW,gBAAgBjvW,KAAK,M,sBA4N9H,OAzNQ,YAAAgqJ,SAAP,WACEnpJ,KAAKwvS,aAAa7jM,WAGb,YAAAg6O,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,QAAQpyK,YAAY,mDAAmDwkD,WAC9En+K,GAAGrtC,KAAKwd,OAEX,kBACG47T,OAAO,aAAapyK,YAAY,+DAA+DwkD,WAAWmsH,SAAS,GAAGC,SAAS,KAC/HvqS,GAAGrtC,KAAKu/X,gBAET,kBACCnmD,OAAO,oBAAoBpyK,YAAY,mDAAmDwkD,WAC1F4tH,OAAO,YAAYpyK,YAAY,kDAAkDwkD,WACjF4tH,OAAO,uBAAuBpyK,YAAY,gEAAgE4wK,SAAS,GACnHwB,OAAO,cAAcpyK,YAAY,uDAAuDwkD,WACxF4tH,OAAO,UAAUpyK,YAAY,mDAAmDwkD,WAChF4tH,OAAO,kBAAkBpyK,YAAY,2DAA2DwkD,WAChG4tH,OAAO,eAAepyK,YAAY,wDAAwDwkD,WAAWmsH,SAAS,GAAGC,SAAS,KAC1HwB,OAAO,uBAAuBpyK,YAAY,8DAA8DwkD,WACxG4tH,OAAO,mBAAmBpyK,YAAY,0DAA0DwkD,WAChG4tH,OAAO,2BAA2BpyK,YAAY,kEAAkEwkD,WAChH4tH,OAAO,qBAAqBpyK,YAAY,4DAA4DwkD,WACpG4tH,OAAO,YAAYpyK,YAAY,qDAAqDwkD,WACpF4tH,OAAO,YAAYpyK,YAAY,qDAAqDwkD,WACpF4tH,OAAO,aAAapyK,YAAY,qDAAqDwkD,WAAWmsH,SAAS,GACzGyB,OAAO,qBAAqBpyK,YAAY,6DAA6DwkD,WAAWmsH,SAAS,GAAGC,SAAS,GACrIwB,OAAO,gBAAgBpyK,YAAY,wDAAwDwkD,WAAWmsH,SAAS,GAC/GyB,OAAO,kBAAkBpyK,YAAY,0DAA0DwkD,WAAWmsH,SAAS,GAAGC,SAAS,GAC/HwB,OAAO,eAAepyK,YAAY,wDAAwDwkD,WAAWmsH,SAAS,GAAGC,SAAS,KAC1HvqS,GAAGrtC,KAAK+uX,SAGA,YAAAn2W,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,+DACzCgE,KAAKC,OAAO0zC,MAAM,YAEbryB,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKie,WAAa7d,EAAO6d,UAEzBje,KAAKwd,MAAMS,UAAYje,KAAKie,UAC5Bje,KAAK+uX,OAAO9wW,UAAYje,KAAKie,UAC7Bje,KAAK+uX,OAAO3jU,SAAW,EACvBprD,KAAK6/X,UAAY,IAAUnQ,OAC3B1vX,KAAKu/X,eAAethX,UAAYje,KAAKie,UAErCje,KAAKo2W,sBAAsBh5V,OAAO87B,iBAAmBl5C,KAAKie,UAE1D,EAAAje,KAAuB,GAAMA,KAAK07X,uB,OAAlC,EAAKtF,gBAAkB,SAEvBp2X,KAAK2lV,2B,mCAKF,YAAAyoB,gBAAP,WAEE,GADApuW,KAAKC,OAAO0zC,MAAM,mBACd3zC,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAAe,CAC1C,IAAI,EAAgB11J,KAAK6Q,MAAM6kJ,cAActvG,QACzCmoT,EAAavuW,KAAK86D,UAAU90D,MAAK,SAAAwoW,GAAM,OAAAA,EAAGpoT,UAAY,KACtDmoT,IACFvuW,KAAKwd,MAAMwsB,WAAaukU,EAAWhyV,MAK3B,YAAApd,KAAd,W,qBAAsBnD,GAAO,W,0DAC3BgE,KAAKC,OAAO0zC,MAAM,Q,iBAEC,O,sBAAjB,EAAA3zC,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,U,cAA5C,EAAKu9C,UAAY,SACjB96D,KAAKouW,kB,+BAGLpuW,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAA4+X,mBAAd,W,qBAAoC1/X,GAAO,W,kDAEV,SADNgE,KAAKo2W,sBAAsB74V,U,OAEpD,MAAO,CAAP,EAD+B,SAA0B1Y,QAAO,SAAAqC,GAAK,OAAAA,EAAEgjC,gBAAkB,IAAcovT,mBAI5F,YAAAl+O,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAIzC,OAHPgE,KAAKC,OAAOE,KAAK,UACjBH,KAAKwd,MAAMuxW,OAAS/uX,KAAK+uX,OACzB/uX,KAAKwd,MAAM42L,oBAAsBp0M,KAAKu/X,eAAez+O,UAC9C,GAAM9gJ,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,sEACvCA,EAAO4oM,MACJ34M,KAAKwd,MAAMuxW,OAAOhlV,iBAAnB,OACF/pC,KAAK8iJ,aAAaviJ,QAAQ,oD,OAF1B,M,OAKmB,SAAMP,KAAKq/X,oBAAoBn2V,wBAAwBlpC,KAAK+uX,S,OACxE,OADHhX,EAAe,SACZ,GAAM/3W,KAAKkkV,cAAczoS,KAAK,CAC/B1tC,UAAW,IACXyP,MAAOu6V,IACNr/M,YAAW,SAAOj9I,GAA2B,qC,yDACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK08D,Q,OAAlB,MAAO,CAAP,EAAO,U,mCALf,MAAO,CAAP,EAAO,U,2BAWZzwD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OApB5B,MAAO,CAAP,EAAO,kBAwBT,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAKq/X,oBAAoBjiX,OAAO7C,c,gCAG5B,YAAAmiD,KAAd,W,qBAAsB1gE,GAAO,W,0DAC3BgE,KAAKC,OAAOE,KAAK,U,iBAEF,O,sBAAb,EAAAH,KAAa,GAAMA,KAAKq/X,oBAAoBpgY,OAAOe,KAAKwd,Q,OAKjD,OALP,EAAKA,MAAQ,SAEbxd,KAAK8iJ,aAAaxiJ,QAAQ,4BAGnB,GAAMN,KAAK8F,OAAOkD,gBAAgB,mB,OAAzC,MAAO,CAAP,EAAO,U,yBAGPhJ,KAAK8iJ,aAAahmJ,MAAM,G,+BAIf,YAAA65X,aAAb,W,qBAA6B36X,GAAO,W,mEAElCgE,KAAKC,OAAO0zC,MAAM,gB,iBAGM,O,sBAAtB,EAAA3zC,KAAsB,GAAMA,KAAKo2W,sBAAsB95V,QAAQtc,KAAK+uX,OAAOhlV,mB,cAA3E,EAAK+sV,eAAiB,SAGtB92X,KAAK+uX,OAAO/kV,WAAahqC,KAAK82X,eAAe9sV,WAIzC+K,EAA+B,GACnCl6C,OAAOgI,OAAOkyC,EAAe/0C,KAAK82X,eAAe/hV,eAEjDA,EAAc5tC,SAAQ,SAAC3G,EAAMmJ,GAG3B,GAAInJ,EAAKw4V,kBAAoB,IAAgBK,QAAU74V,EAAK+4V,aAAe,IAAWib,WAAY,CAChG,IAAIirB,EAAS,EAAK3I,eAAe/hV,cAAcm+H,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAO/b,EAAK+b,MAC5E,EAAKu6W,eAAe/hV,cAAc59B,OAAOsoX,EAAQ,OAcrDz/X,KAAK+uX,OAAOhmV,OAAS/oC,KAAK82X,eAAe/tV,OACzC/oC,KAAKg3X,cAAch3X,KAAK+uX,OAAOhmV,OAAOpkC,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,O,+BAEjDvc,KAAK8iJ,aAAahmJ,MAAM,G,+BAIf,YAAA86X,YAAb,W,qBAA4B57X,GAAO,W,6DAC1B,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAK+uX,SACXr2N,YAAW,SAAOj9I,GAA2B,qC,kCACzCA,EAASw9B,aAGZj5C,KAAK+uX,OAAOnuO,SAAW,GAFvB5gJ,KAAKg3X,cAAch3X,KAAK+uX,OAAOnuO,U,qBALnC,MAAO,CAAP,EAAO,kBAYD,YAAAo2O,cAAR,SAAsBp2O,GAAtB,WAEE5gJ,KAAK+uX,OAAOzxW,WAAa,GAEzBtd,KAAK+uX,OAAOhmV,OAAO5hC,SAAQ,SAAAyqW,GAEzB,IAAe,IADDhxN,EAASsyB,WAAU,SAAAhsK,GAAK,OAAAA,GAAK0qW,EAAMr1V,MAE/C,I,eAASm7W,IAES,IADD,EAAK3I,OAAOzxW,WAAW41J,WAAU,SAAAhsK,GAAK,OAAAA,IAAMwwX,EAAIC,cAE7D,EAAK5I,OAAOzxW,WAAWpiB,KAAKw8X,EAAIC,YAHpB,MAAA/lB,EAAMt0V,WAAN,eAAkB,C,EAAtB,UAShBtd,KAAKC,OAAO0zC,MAAM,eAAgB3zC,KAAK+uX,OAAOzxW,aAGjC,YAAAs5W,eAAb,W,qBAA+B56X,GAAO,W,6DAC7B,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,kCACvCA,EAAO4oM,QACT34M,KAAKg6Q,WAAY,G,qBAHvB,MAAO,CAAP,EAAO,kBAOI,YAAA68G,eAAb,W,qBAA+B76X,GAAO,W,kCACpCgE,KAAKg6Q,WAAY,E,WAnQV8lH,EAAkB,GAD9B,uB,uBA0ByB,mB,OAAA,IAAN,oBAAM,SAC0B,mBAD1B,OAC0B,IAAnB,UAAmB,SACrB,mBADqB,OACrB,IAAZ,UAAY,SACO,mBADP,OACO,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACZ,mBADY,OACZ,IAArB,UAAqB,SACR,mBADQ,OACR,IAAnB,UAAmB,SACf,mBADe,OACf,IAAf,sCAAe,SACO,mBADP,OACO,IAAb,kCAAa,YAjC3BA,GAAb,I,2FC3BApkY,EAAOD,QAAU,kvI,w/DCSjB,aAsBE,WACUqK,EACAu5X,EACAv8O,EACAohM,GAJV,WACU,KAAAp+U,SACA,KAAAu5X,sBACA,KAAAv8O,eACA,KAAAohM,gBAvBF,KAAA9jV,OAAc,GAEd,KAAAkd,WAAoC,IAAI,wBAGxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,+DAK1B,OAJPgE,KAAKC,OAAO0zC,MAAM,cACd9J,EAAS7pC,KAAKsd,WAAWusB,OAAOylT,MACpC3mL,eAAentF,QAAQ,yBAAoC,MAAV3xC,EAAiB,GAAKA,GAEhE,GAAM7pC,KAAKq/X,oBAAoBvrX,KAAK9T,KAAKsd,YAC7Cna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAePkD,KAAKC,OAAS,aAAWC,UAAU,oB,YAmDvC,OAhDgB,YAAA0Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACpEgE,KAAKsd,WAAWusB,OAAOylT,MAAQ3mL,eAAexsF,QAAQ,0BACtDn8E,KAAKI,OAASA,E,WAGF,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,yDACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAC9Bje,KAAKq/X,oBAAoBjiX,OAAO87B,iBAAmBl5C,KAAKie,UAEjD,GAAMje,KAAKukV,a,OAAlB,MAAO,CAAP,EAAO,U,yBAKG,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGD,YAAAmmC,aAAR,WACEv2W,KAAKsd,WAAWusB,OAAOylT,MAAQtvV,KAAKsd,WAAWusB,OAAO8wO,UAAY36Q,KAAKsd,WAAWusB,OAAO+wO,QAAU,MAGvF,YAAAzxO,uBAAd,SAAqC5sB,G,qBAAYvgB,GAAO,W,wDACtDgE,KAAKC,OAAOE,KAAK,2B,iBAEf,O,sBAAA,GAAMH,KAAKq/X,oBAAoBl2V,uBAAuB5sB,I,OAG/C,OAHP,SAEAvc,KAAK8iJ,aAAaxiJ,QAAQ,6BACnB,GAAMN,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yBAGPvkV,KAAK8iJ,aAAahmJ,MAAM,G,+BA3EjBijY,EAAgB,GAD5B,uB,uBAwByB,mB,OAAA,IAAN,oBAAM,SAC0B,mBAD1B,OAC0B,IAAnB,UAAmB,SACd,mBADc,OACd,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,YA1B3BA,GAAb,I,+rBCAA,aAKE,WACUhgY,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAGRpsN,KAAKC,OAAS,aAAWC,UAAU,+B,QAsCvC,OAnCE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPpI,SAAU,uBACVoD,KAAM,iBAGN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBmuM,4BAClEtqQ,SAAU,CACR28D,WAAY,CACV2nJ,KAAM,CAAC,IAAsBgmD,+BAMnC,CACEhwQ,MAAO,SACPpI,SAAU,yBACVoD,KAAM,wBAKR,CACEgF,MAAO,2CACPpI,SAAU,8BACVoD,KAAM,6BA3CDsiY,EAA2B,GADvC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,mFCTAtkY,EAAOD,QAAU,sJ,wECAjBC,EAAOD,QAAU,ioGAAqqG,EAAQ,KAA6D,wqC,uqBCU3vG,aAKE,WACUsE,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAGRpsN,KAAKC,OAAS,aAAWC,UAAU,8B,QAmCvC,OAhCE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CAET,CACEjC,MAAO,GACPpI,SAAU,0CACVoD,KAAM,oBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,+CACpB+H,SAAU,CACR81X,eAAe,IAInB,CACEx7X,MAAO,SACPpI,SAAU,4BACVoD,KAAM,2BAGR,CACEgF,MAAO,qCACPpI,SAAU,4DACVoD,KAAM,6BACN0K,SAAU,CACR81X,eAAe,OAvCZ+B,EAA0B,GADtC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,oFCVAvkY,EAAOD,QAAU,8M,2jECsBjB,aAYE,WACUqK,EACA60X,EACA//T,EACAkoF,EACA4iM,EACA2G,EACAiC,EACEj0U,GARZ,WACU,KAAAvU,SACA,KAAA60X,wBACA,KAAA//T,QACA,KAAAkoF,eACA,KAAA4iM,8BACA,KAAA2G,kBACA,KAAAiC,4BACE,KAAAj0U,KAdJ,KAAA6lX,yBAA0C,GAC1C,KAAA1iX,MAAwB,IAAI,IAE5B,KAAAwiV,eAAyB,GAc/BhgW,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAC1CjzU,KAAKC,OAAS,aAAWC,UAAU,yBACnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MACxB,IAAI2J,EAAa,IAAOC,aACxBza,KAAKggW,eAAiBxlV,EAAa,+CACnCxa,KAAKwvS,aAAexvS,KAAKqa,GAAGtF,UAAU,KAAuB,SAACtX,GAAmC,SAAK2wW,gBAAgBjvW,KAAK,M,oBAqH/H,OAlHS,YAAAgqJ,SAAP,WACEnpJ,KAAKwvS,aAAa7jM,WAGb,YAAAg6O,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,QAAQpyK,YAAY,qDAAqDwkD,WAChF4tH,OAAO,YAAYpyK,YAAY,sDAAsDwkD,WACrFn+K,GAAGrtC,KAAKwd,QAGA,YAAA5E,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,+DACzCgE,KAAKC,OAAO0zC,MAAM,YAEbryB,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKie,WAAa7d,EAAO6d,UACzBje,KAAKwd,MAAMS,UAAYje,KAAKie,UAC5Bje,KAAKsuV,0BAA0BlxU,OAAO87B,iBAAmBl5C,KAAKie,UACxC,GAAMje,KAAKmgY,qB,OAA3BprV,EAAgB,SAEtB/0C,KAAKkgY,yBAA2BnrV,EAAclwC,QAC5C,SAAA+0V,GAAO,OAAAA,EAAIZ,iBAAmB,IAAgBif,aAAere,EAAI1vT,gBAAkB,IAAcgwT,YAGnGl6V,KAAKwd,MAAM62W,oBAAiBz2X,EAC5BoC,KAAKwd,MAAM0gX,eAAgB,EAC3Bl+X,KAAK2lV,2B,mCAIF,YAAAyoB,gBAAP,WAEE,GADApuW,KAAKC,OAAO0zC,MAAM,mBACd3zC,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAAe,CAC1C,IAAI,EAAgB11J,KAAK6Q,MAAM6kJ,cAActvG,QACzCmoT,EAAavuW,KAAK86D,UAAU90D,MAAK,SAAAwoW,GAAM,OAAAA,EAAGpoT,UAAY,KACtDmoT,IACFvuW,KAAKwd,MAAMwsB,WAAaukU,EAAWhyV,MAK3B,YAAApd,KAAd,W,qBAAsBnD,GAAO,W,0DAER,O,sBAAjB,EAAAgE,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,U,cAA5C,EAAKu9C,UAAY,SACjB96D,KAAKouW,kB,+BAGLpuW,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAqjY,iBAAd,W,qBAAkCnkY,GAAO,W,kDAChC,SAAMgE,KAAKsuV,0BAA0B/wU,U,OAA5C,MAAO,CAAP,EAAO,kBAGI,YAAA69F,OAAb,W,qBAAuBp/G,GAAO,W,6DAGrB,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MAEJ34M,KAAKwd,MAAMouC,SAAZ,OACF5rD,KAAK8iJ,aAAaviJ,QAAQ,iD,OAH1B,M,cAKQP,KAAKwd,MAAMgtB,cAAZ,OACPxqC,KAAK8iJ,aAAaviJ,QAAQ,oE,cAGnB,SAAMP,KAAK08D,Q,OAAlB,MAAO,CAAP,EAAO,U,2BAIZzwD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAhB5B,MAAO,CAAP,EAAO,kBAoBT,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAK26X,sBAAsBv9W,OAAO7C,c,gCAG9B,YAAAmiD,KAAd,W,qBAAsB1gE,GAAO,W,0DAEZ,O,sBAAb,EAAAgE,KAAa,GAAMA,KAAK26X,sBAAsB17X,OAAOe,KAAKwd,Q,OAEnD,OAFP,EAAKA,MAAQ,SACbxd,KAAK8iJ,aAAaxiJ,QAAQ,4BACnB,GAAMN,KAAK8F,OAAOkD,gBAAgB,W,OAAzC,MAAO,CAAP,EAAO,U,yBAGPhJ,KAAK8iJ,aAAahmJ,MAAM,G,+BAIrB,YAAA0rV,QAAP,SAAe1kD,GAAf,WACE9jS,KAAKC,OAAO0zC,MAAM,WAClB,IAAIx3B,EAAa2nR,EAAOtmS,OAAO+wO,MAAM,GAGrC,GADoB,IAAoBp9N,MAAM,iBAAkB,OAC9C8P,QAAQ9E,GAAO,CAC/B,IAAIo/B,EAAqB,IAAID,WAC7BC,EAAOI,cAAcx/B,GACrBo/B,EAAOr+C,OAAS,WACd,EAAKsgB,MAAMquC,SAAW1vC,EAAKze,WAI7BsC,KAAK8iJ,aAAahmJ,MAAM,iEAIrB,YAAA8qW,iBAAP,SAAwBnqW,GACtBuC,KAAK8iJ,aAAa3iJ,KAAK1C,IAhJd2iY,EAAqB,GADjC,uB,uBAcyB,mB,OAAA,IAAN,oBAAM,SAC8B,mBAD9B,OAC8B,IAArB,UAAqB,SACzB,mBADyB,OACzB,IAAZ,UAAY,SACO,mBADP,OACO,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACpB,mBADoB,OACpB,IAAnB,UAAmB,SACgB,mBADhB,OACgB,IAAzB,UAAyB,SAC/B,mBAD+B,OAC/B,IAAf,sCAAe,YApBpBA,GAAb,I,iGCtBA1kY,EAAOD,QAAU,m7M,qpBCUjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,gC,MAuBvC,OApBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,6BACVoD,KAAM,2BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,kCAEtB,CACEqC,MAAO,SACPpI,SAAU,+BACVoD,KAAM,6BACL6S,KAAK,EACNjJ,MAAOtH,KAAKD,KAAKM,GAAG,kDA3BfggY,EAA4B,GADxC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,0FCVA3kY,EAAOD,QAAU,uD,ulECwBjB,aAiCE,WACUm/D,EACA90D,EAEAquX,EACAmM,EACAztB,EACAxf,EACA2xB,EACAub,EACAr8C,EACAphM,GAXV,WACU,KAAAloF,QACA,KAAA90D,SAEA,KAAAquX,+BACA,KAAAmM,8BACA,KAAAztB,yCACA,KAAAxf,kBACA,KAAA2xB,cACA,KAAAub,2BACA,KAAAr8C,gBACA,KAAAphM,eA1CF,KAAA1iJ,OAAc,GAId,KAAAgqX,eAA2B,GAG3B,KAAA9sW,WAAoC,IAAI,wBAExC,KAAAE,MAA2B,IAAI,IAE/B,KAAA+uU,UAAoB,EACpB,KAAA7rM,iBAA2B,EAG3B,KAAA3rG,cAA+B,GAC/B,KAAAyrV,qBAAsC,GACtC,KAAA70B,MAAgB,GAChB,KAAA80B,gBAA0B,EAE1B,KAAAzzI,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAKm0X,6BAA6Bv9N,mBAAmB52J,KAAKsd,YACpEna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAsBPkD,KAAKC,OAAS,aAAWC,UAAU,cAGnCF,KAAKoqX,eAAiB,CAAC,WAAY,SACnCpqX,KAAKsd,WAAWusB,OAAO62V,SAAW,G,wBA+HtC,OA7HgB,YAAA9nX,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,yDAEpEgE,KAAKC,OAAO0zC,MAAM,YAEd3zC,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAIJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,qEAC3BgE,KAAKC,OAAO0zC,MAAM,QAEbryB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKC,OAAO0zC,MAAM,sBAAuB3zC,KAAKI,OAAO6d,WACrDje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE1Bje,KAAKie,WAEPje,KAAKm0X,6BAA6B/2W,OAAO87B,iBAAmBl5C,KAAKie,UAGjE,EAAAje,KAAa,GAAMA,KAAKglX,YAAY91H,qBALlC,O,OAOI,OAFN,EAAKy8G,MAAQ,SACb,EAAA3rW,KACM,GAAMA,KAAKsgY,4BAA4B/iX,U,OACvC,O,GADA,YAAgD,OAChD,GAAMvd,KAAK6yW,uCAAuCt1V,U,OAOjD,OATP,EAAKijX,qBAAuB,EAAH,SAEnB,WAENxgY,KAAK2gY,sBAEL3gY,KAAKsd,WAAWusB,OAAO+2V,kCACrB5gY,KAAK+0C,cAAcn6C,OAAS,EAAIoF,KAAK+0C,cAAc,GAAGx4B,GAAK,KAC7Dvc,KAAKusV,UAAW,EACT,GAAMvsV,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yBAMC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,+DAGxB,OAFPgE,KAAKC,OAAO0zC,MAAM,YACZktV,IAAmB7gY,KAAKygY,gBACvB,GAAMzgY,KAAKgtP,UACf7pP,MAAK,SAACsY,GACDolX,IAAmB,EAAKJ,kBAC5B,EAAKnjX,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,iBAGzCxzU,OAAM,SAAAnP,GACD+jY,IAAmB,EAAKJ,iBAC5B,EAAK39O,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,kBAcD,YAAA6jY,oBAAR,WACM3gY,KAAKsd,WAAWusB,OAAOi3V,2BAA6B,IAAM9mC,YAC5Dh6V,KAAK+0C,cAAgB/0C,KAAKwgY,qBAAqB37X,QAAO,SAAAqC,GAAK,OAAAA,EAAEqyV,aAAe,IAAWS,eAEvFh6V,KAAK+0C,cAAgB/0C,KAAKwgY,qBAAqB37X,QAAO,SAAAqC,GAAK,OAAAA,EAAEqyV,aAAe,IAAWC,YAK7E,YAAAunC,yBAAd,W,qBAA0C/kY,GAAO,W,kDAIxC,OAHPgE,KAAK2gY,sBACL3gY,KAAKsd,WAAWusB,OAAO+2V,kCACrB5gY,KAAK+0C,cAAcn6C,OAAS,EAAIoF,KAAK+0C,cAAc,GAAGx4B,GAAK,KACtD,GAAMvc,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,kBAGK,YAAAyqC,kBAAd,W,qBAAmChzX,GAAO,W,6DAajC,OAZPgE,KAAKivX,eAAiB,GACtBjvX,KAAKsd,WAAWusB,OAAO62V,SAASv5X,SAAQ,SAAAijB,GACtC,IAAI42W,EAAe,EAAKr1B,MAAM3lW,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,KAAO6N,UAC5BxsB,IAAjBojY,IAC0B,KAAxB,EAAK/R,iBACP,EAAKA,gBAAkB,MAEzB,EAAKA,gBAAkB+R,EAAav4U,aAKjC,GAAMzoD,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,kBAIK,YAAA08C,cAAd,W,qBAA+BjlY,GAAO,W,kDAC7B,SAAMgE,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,kBAGK,YAAA7nR,KAAd,W,qBAAsB1gE,GAAO,W,uFAErBgE,KAAKsd,WAAWmiU,aAAe,KACjCz/U,KAAK8iJ,aAAaviJ,QAAQ,+C,OADxB,M,OAYW,OARbP,KAAKwd,MAAM0jX,yBAA2BlhY,KAAKsd,WAAWusB,OAAOi3V,yBACzD9gY,KAAKsd,WAAWusB,OAAOi3V,2BAA6B,IAAMK,sBAAwBnhY,KAAKsd,WAAWusB,OAAOi3V,2BAA6B,IAAM9mC,cAC9Ih6V,KAAKwd,MAAM4jX,uBAAyBphY,KAAKsd,WAAWusB,OAAO+2V,mCAC7D5gY,KAAKwd,MAAMc,UAAYte,KAAKsd,WAAWusB,OAAO8wO,UAC9C36Q,KAAKwd,MAAMe,QAAUve,KAAKsd,WAAWusB,OAAO+wO,QAC5C56Q,KAAKwd,MAAMmtD,KAAO3qE,KAAKsd,WAAWusB,OAAOylT,MACzCtvV,KAAKwd,MAAMuuV,aAAe/rW,KAAKsd,WAAWmiU,aAC1Cz/U,KAAKwd,MAAM6jX,SAAWrhY,KAAKsd,WAAWusB,OAAO62V,SAC7C,EAAA1gY,KAAa,GAAMA,KAAKugY,yBAAyBthY,OAAOe,KAAKwd,Q,OAEtD,OAFP,EAAKA,MAAQ,SACbxd,KAAK8iJ,aAAaxiJ,QAAQ,4BACnB,GAAMN,KAAK8F,OAAOkD,gBAAgB,qC,OAAzC,MAAO,CAAP,EAAO,U,4CAKThJ,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAy5W,aAAd,W,qBAA8Bv6W,GAAO,W,kDAEnC,OADAgE,KAAKsd,WAAWusB,OAAOylT,MAAQtvV,KAAKsd,WAAWusB,OAAO8wO,UAAY36Q,KAAKsd,WAAWusB,OAAO+wO,QAAU,KACnG,GAAM56Q,KAAKukV,Y,cAAX,S,YA9KS+8C,EAAuB,GADnC,uB,uBAmC8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SAE4C,mBAF5C,OAE4C,IAA5B,UAA4B,SACE,mBADF,OACE,IAA/B,UAA+B,SACkB,mBADlB,OACkB,IAAtC,UAAsC,SAC9C,mBAD8C,OAC9C,IAAf,UAAe,SACR,mBADQ,OACR,IAAX,UAAW,SAC0B,mBAD1B,OAC0B,IAAxB,UAAwB,SACtB,mBADsB,OACtB,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YA5CzBA,GAAb,I,uGCxBA5lY,EAAOD,QAAU,qiM,ygECQjB,aAmBE,WACUqK,EACAy6X,EACAz9O,EACAohM,GAJV,WACU,KAAAp+U,SACA,KAAAy6X,2BACA,KAAAz9O,eACA,KAAAohM,gBArBF,KAAA9jV,OAAc,GAId,KAAAkd,WAAoC,IAAI,wBAGxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAKugY,yBAAyBzsX,KAAK9T,KAAKsd,YAClDna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAcPkD,KAAKC,OAAS,aAAWC,UAAU,yB,YAwCvC,OAtCgB,YAAA0Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACpEgE,KAAKI,OAASA,E,WAEF,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,yDACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE9Bje,KAAKugY,yBAAyBnjX,OAAO87B,iBAAmBl5C,KAAKie,UAEtD,GAAMje,KAAKukV,a,OAAlB,MAAO,CAAP,EAAO,U,yBAIG,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBASK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAAiY,gBAAd,SAA8B9rU,G,kGAET,O,sBAAA,GAAMvc,KAAKugY,yBAAyBx0U,2BAA2BxvC,I,OAChF,OAAkB,OADd+rU,EAAa,UAER,CAAP,EAAOtoV,KAAK8F,OAAOyC,SAAS+/U,I,+BAG9BtoV,KAAK8iJ,aAAahmJ,MAAM,G,+BA9DjBykY,EAAqB,GADjC,a,uBAqByB,mB,OAAA,IAAN,oBAAM,SACoC,mBADpC,OACoC,IAAxB,UAAwB,SACxB,mBADwB,OACxB,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,YAvB3BA,GAAb,I,qGCRA7lY,EAAOD,QAAU,s8G,kkBCIjB,aAEE,WAAoBqK,GAAA,KAAAA,S,MAKtB,OAPa07X,EAAQ,GADpB,a,uBAGmC,mB,OAAA,IAAN,oBAAM,YAFvBA,GAAb,I,+CCJA9lY,EAAOD,QAAU,4rB,koBCUjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,2B,MAgBvC,OAbE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,sBACVoD,KAAM,oBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,qCApBfohY,EAAuB,GADnC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,4ECVA/lY,EAAOD,QAAU,uD,wiECoBjB,aAcE,WACUqK,EACAg9I,EACA4iM,EACA8oC,EACAzoB,EACAC,EACA6gB,GANA,KAAA/gX,SACA,KAAAg9I,eACA,KAAA4iM,8BACA,KAAA8oC,gBACA,KAAAzoB,gBACA,KAAAC,uBACA,KAAA6gB,oBAfF,KAAArpW,MAAgB,IAAI,IAEpB,KAAAkkX,sBAAkC,GAClC,KAAAC,sBAAkC,GAClC,KAAAz7B,cAAiC,GAcvClmW,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,oBACnCF,KAAKwd,MAAMmtD,KAAO,G,kBA4NtB,OAzNS,YAAAg7Q,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,aAAapyK,YAAY,qCAAqCwkD,WACrE4tH,OAAO,YAAYpyK,YAAY,oCAAoCwkD,WACnE4tH,OAAO,SAASpyK,YAAY,gCAAgCn8F,QAAQ2gJ,WACpE4tH,OAAO,YAAYpyK,YAAY,mCAAmCwkD,WAClE4tH,OAAO,8BAA8BpyK,YAAY,uDAAuDwkD,WACxGn+K,GAAGrtC,KAAKwd,OAEX,kBACG47T,OAAO,mBAAmBpyK,YAAY,uDAAuDwkD,WAC7Fn+K,GAAGrtC,KAAKwd,MAAMm7W,aAGN,YAAA//W,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,wEACzCgE,KAAKC,OAAO0zC,MAAM,Y,gDAIXryB,MAAMlhB,EAAO6d,WAAd,QACFje,KAAKie,WAAa7d,EAAO6d,UAEzBje,KAAKwuX,cAAcpxW,OAAO87B,iBAAmBl5C,KAAKie,UAE3B,UAAnB7d,EAAOgrD,SAAP,OACF,EAAAprD,KAA6B,GAAMA,KAAK4hY,iB,OACX,OAD7B,EAAKF,sBAAwB,SAC7B,EAAA1hY,KAA6B,GAAMA,KAAK4hY,e,cAAxC,EAAKD,sBAAwB,UAEzBhJ,EAAa,IAAI,KACVkJ,qBAAuB,IAAqBC,aACvDnJ,EAAWoJ,gBAAkB,IAAgBC,iBAC7ChiY,KAAKwd,MAAMm7W,WAAaA,E,oBAEhBr3W,MAAMlhB,EAAOgrD,WAAc9pC,MAAMlhB,EAAOqrD,cAAzC,OAEP,EAAAzrD,KAAa,GAAMA,KAAKwuX,cAAclyW,QAAQlc,EAAOgrD,Y,OAE7B,OAFxB,EAAK5tC,MAAQ,SAEb,EAAAxd,KAAKwd,MAAmB,GAAMxd,KAAK6mX,kBAAkBvqW,QAAQlc,EAAOqrD,e,OAEvC,OAF7B,EAAWktU,WAAa,SAExB,EAAA34X,KAA6B,GAAMA,KAAKiiY,0BAA0B7hY,EAAOgrD,SAAUhrD,EAAOqrD,aAAc,IAASy2U,U,OACpF,OAD7B,EAAKR,sBAAwB,SAC7B,EAAA1hY,KAA6B,GAAMA,KAAKiiY,0BAA0B7hY,EAAOgrD,SAAUhrD,EAAOqrD,aAAc,IAAS02U,U,OAAjH,EAAKR,sBAAwB,S,iBAIZ,SAAM3hY,KAAKomW,oB,QAAxBC,EAAa,SAEnBrmW,KAAKkmW,cAAgBG,EAAW1hW,KAAI,SAAAi1V,GAClC,IAAItlN,EAAQslN,EAAI0M,WAAWh7U,MAAM,KAC7Bu2T,EAAWv3T,UAAUgqH,EAAM,IAAM,KAAK3tF,QACtCm7R,EAAWx3T,UAAUgqH,EAAM,IAAM,KAAK3tF,QAG1C,OAFAizS,EAAS,IAAI/X,EACb+X,EAAS,IAAI9X,EACN8X,KAGT55V,KAAK2lV,2B,0DAIP3lV,KAAK8iJ,aAAahmJ,MAAM,G,iCAIf,YAAAs+G,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAEzC,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MAEL34M,KAAK0hY,sBAAsB/8X,KAAI,SAAAuC,GAAK,OAAAA,EAAEtI,SAAO06E,OAAM,SAAApyE,GAAK,OAAK,GAALA,MACvDlH,KAAK2hY,sBAAsBh9X,KAAI,SAAAuC,GAAK,OAAAA,EAAEtI,SAAO06E,OAAM,SAAApyE,GAAK,OAAK,GAALA,MAC3DlH,KAAK8iJ,aAAaviJ,QAAQ,+D,OAFxB,MAFF,M,OAOO,SAAMP,KAAK08D,KAAKwpR,I,OAAvB,MAAO,CAAP,EAAO,U,2BAIZj6U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAd5B,MAAO,CAAP,EAAO,kBAkBT,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAK+lW,cAAc3oV,OAAO7C,c,gCAGtB,YAAAmiD,KAAd,SAAmBwpR,G,qBAAuBlqV,GAAO,W,2FAI7CgE,KAAKwd,MAAMspV,MAAQ3jV,KAAKk3D,SAASr7D,SAAS,IAAIjd,UAAU,IAAK,IAAKsX,MAAQmI,UAAUxC,SAAS,IAEzF,EAAe,CAAEpgB,MAAO,GAC5BoB,KAAK0hY,sBAAsBv6X,SAAQ,SAAAyyV,GAC7B,EAAQh7V,MAAQg7V,EAAIh7V,QACtB,EAAUg7V,MAId55V,KAAKwd,MAAMwpV,YAAc,EAAQL,KACjC3mW,KAAKwd,MAAM4kX,wBAA0BpiY,KAAKwd,MAAMm7W,WAAWpE,gBAGtDv0X,KAAKwd,MAAMjB,GAAZ,OAEF,EAAAvc,KAAa,GAAMA,KAAKwuX,cAAcvvX,OAAOe,KAAKwd,S,OAElD,OAFA,EAAKA,MAAQ,SAEb,GAAMxd,KAAKqiY,eAAeriY,KAAKwd,MAAMjB,GAAIvc,KAAKwd,MAAMm7W,WAAWp8W,K,cAA/D,S,aAGA,SAAMvc,KAAKwuX,cAAc9xW,OAAO1c,KAAKwd,Q,OAErC,OAFA,SAEA,GAAMxd,KAAK6mX,kBAAkBnqW,OAAO1c,KAAKwd,MAAMm7W,a,OAE/C,OAFA,SAEA,GAAM34X,KAAKqiY,eAAeriY,KAAKwd,MAAMjB,GAAIvc,KAAKwd,MAAMm7W,WAAWp8W,K,OAA/D,S,wBAGG2pU,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,W,OAAzC,MAAO,CAAP,EAAO,U,8CAIThJ,KAAK8iJ,aAAahmJ,MAAM,EAAMA,O,iCAKpB,YAAA8kY,YAAd,W,qBAA6B5lY,GAAO,W,mCAclC,OAZIyqW,EAAU5rW,OAAO0Z,KAAK,QAAM1P,QAAO,SAAAq1B,GAAK,MAAmB,iBAAZ,OAAKA,MAEpDooW,EAA2B,GAE/B77B,EAAQt/V,SAAQ,SAAAyyV,GACd0oC,EAAepnY,KAAK,CAClByrW,KAAM,OAAK/M,GACXh7V,MAAO,QAKJ,CAAP,EAAO0jY,UAGK,YAAAL,0BAAd,SAAwC72U,EAAkBK,EAAsB82U,G,qBAAqBvmY,GAAO,W,4DAEtF,SAAMgE,KAAK+lW,cAAc9zM,iBAAiB7mG,EAAUK,I,OAyBxE,OAzBI+2U,EAAgB,SAEhB/7B,EAAU5rW,OAAO0Z,KAAK,QAAM1P,QAAO,SAAAq1B,GAAK,MAAmB,iBAAZ,OAAKA,MAEpDooW,EAA2B,GAE/B77B,EAAQt/V,SAAQ,SAAAyyV,GACd,IAAI8M,EAAgB87B,EAAc39X,QAAO,SAAAjI,GAAK,cAAKA,EAAE+pW,QAAU,OAAK/M,IAAQh9V,EAAE2lY,UAAYA,KAEtF77B,EAAc9rW,OAChB0nY,EAAepnY,KAAK,CAClBkwD,SAAUA,EACVK,aAAcL,EACdu7S,KAAM,OAAK/M,GACXh7V,MAAO8nW,EAAc,GAAG9nW,QAG1B0jY,EAAepnY,KAAK,CAClBkwD,SAAUA,EACVu7S,KAAM,OAAK/M,GACXh7V,MAAO,QAKN,CAAP,EAAO0jY,WAGD,YAAA17B,eAAR,SAAuBhoW,EAAe+nW,GACpC,IAAM/M,EAAM55V,KAAKkmW,cAAclgW,MAAK,SAAC4zV,GAAa,OAAAh7V,GAASg7V,EAAI91U,KAAOllB,GAASg7V,EAAIpzU,KAAOozU,EAAI+M,OAAS,OAAKA,MAC5G,OAAO/M,EAAMA,EAAIl8V,KAAO,IAGZ,YAAA0oW,iBAAd,W,qBAAkCpqW,GAAO,W,kDAChC,SAAMgE,KAAKgmW,qBAAqBzoV,U,OAAvC,MAAO,CAAP,EAAO,kBAGK,YAAA8kX,eAAd,SAA6Bj3U,EAAkBK,G,qBAAuBzvD,GAAO,W,wCA6B3E,OA3BIH,EAAW,GAEfmE,KAAK0hY,sBAAsBv6X,SAAQ,SAAAyyV,GACjCA,EAAI2oC,SAAW,IAASL,QACxBtoC,EAAIxuS,SAAWA,EACfwuS,EAAInuS,aAAeA,EACnBmuS,EAAIkN,MAAQ,EAAKtpV,MAAMspV,MACvBjrW,EAASX,KAAK,EAAK6qW,cAAc1/D,eAAeuzD,OAGlD55V,KAAK2hY,sBAAsBx6X,SAAQ,SAAAyyV,GACjCA,EAAI2oC,SAAW,IAASJ,QACxBvoC,EAAIxuS,SAAWA,EACfwuS,EAAInuS,aAAeA,EACnBmuS,EAAIkN,MAAQ,EAAKtpV,MAAMspV,MACvBjrW,EAASX,KAAK,EAAK6qW,cAAc1/D,eAAeuzD,OAGlD59V,EAAQgC,IAAInC,GACTsH,MAAK,gD,kCACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6B,aAG3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,MAGrB,CAAP,GAAO,UArPE2lY,EAAgB,GAD5B,uB,uBAgByB,mB,OAAA,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC5B,mBAD4B,OAC5B,IAAb,UAAa,SACA,mBADA,OACA,IAAb,UAAa,SACc,mBADd,OACc,IAApB,UAAoB,SACN,mBADM,OACN,IAAjB,UAAiB,YArBnCA,GAAb,I,qFCpBA/mY,EAAOD,QAAU,8xM,qjECajB,aAaE,WACUorX,EACA/jO,EACAohM,GAHV,WACU,KAAA2iC,oBACA,KAAA/jO,eACA,KAAAohM,gBAbF,KAAA9jV,OAAc,GAMd,KAAAkd,WAAoC,IAAI,wBAaxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAK6mX,kBAAkB/yW,KAAK9T,KAAKsd,WAAYtd,KAAK61J,OAAOt5I,IACnEpZ,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBALPkD,KAAKC,OAAS,aAAWC,UAAU,oB,YAqDvC,OAvCgB,YAAAf,KAAd,W,qBAAsBnD,GAAO,W,yDACvBgE,KAAK61J,QAEP71J,KAAK6mX,kBAAkBzpW,OAAO87B,iBAAmBl5C,KAAK61J,OAAO53I,UAG7Dje,KAAKsd,WAAWusB,OAAOi6M,qBAAuB,IAAqBg+I,aAE5D,GAAM9hY,KAAKukV,aAPhB,M,OAOF,MAAO,CAAP,EAAO,U,yBAKG,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAA1/T,KAAd,SAAmBioX,G,qBAAyB38X,GAAO,W,6DAC1C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOm7W,IAENjgO,YAAW,SAAOj9I,GAA2B,qC,2BAC5C,MAAO,CAAP,GAAO,a,OALX,MAAO,CAAP,EAAO,kBAxDT,GADC,W,gBACqB,mB,OAAA,IAAN,UAAM,W,6BAPXinX,EAAgB,GAD5B,uB,uBAe+C,mB,OAAA,IAAjB,UAAiB,SACV,mBADU,OACV,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,YAhB3BA,GAAb,I,qFCbAhnY,EAAOD,QAAU,60D,08DCYjB,aAUE,WACU6lD,EACAykT,EACAC,GAFA,KAAA1kT,mBACA,KAAAykT,gBACA,KAAAC,uBAPF,KAAA07B,sBAAkC,GAClC,KAAAC,sBAAkC,GAClC,KAAAz7B,cAAiC,GAOvClmW,KAAKC,OAAS,aAAWC,UAAU,qB,UAkEvC,OA9De,YAAA0Y,SAAb,SAAsB+/W,G,qBAAyB38X,GAAO,W,4DAMvB,OAJ7BgE,KAAKie,UAAY06W,EAAW16W,UAE5Bje,KAAK+lW,cAAc3oV,OAAO87B,iBAAmBl5C,KAAKie,UAElD,EAAAje,KAA6B,GAAMA,KAAK4hY,YAAYjJ,EAAWvtU,SAAUutU,EAAWp8W,GAAI,IAAS2lX,U,OACpE,OAD7B,EAAKR,sBAAwB,SAC7B,EAAA1hY,KAA6B,GAAMA,KAAK4hY,YAAYjJ,EAAWvtU,SAAUutU,EAAWp8W,GAAI,IAAS4lX,U,OAE9E,OAFnB,EAAKR,sBAAwB,SAEV,GAAM3hY,KAAKomW,oB,cAAxBC,EAAa,SAEnBrmW,KAAKkmW,cAAgBG,EAAW1hW,KAAI,SAAAi1V,GAClC,IAAItlN,EAAQslN,EAAI0M,WAAWh7U,MAAM,KAC7Bu2T,EAAWv3T,UAAUgqH,EAAM,IAAM,KAAK3tF,QACtCm7R,EAAWx3T,UAAUgqH,EAAM,IAAM,KAAK3tF,QAG1C,OAFAizS,EAAS,IAAI/X,EACb+X,EAAS,IAAI9X,EACN8X,K,YAMG,YAAAgoC,YAAd,SAA0Bx2U,EAAkBK,EAAsB82U,G,qBAAqBvmY,GAAO,W,4DAExE,SAAMgE,KAAK+lW,cAAc9zM,iBAAiB7mG,EAAUK,I,OAyBxE,OAzBI+2U,EAAgB,SAEhB/7B,EAAU5rW,OAAO0Z,KAAK,QAAM1P,QAAO,SAAAq1B,GAAK,MAAmB,iBAAZ,OAAKA,MAEpDooW,EAA2B,GAE/B77B,EAAQt/V,SAAQ,SAAAyyV,GACd,IAAI8M,EAAgB87B,EAAc39X,QAAO,SAAAjI,GAAK,cAAKA,EAAE+pW,QAAU,OAAK/M,IAAQh9V,EAAE2lY,UAAYA,KAEtF77B,EAAc9rW,OAChB0nY,EAAepnY,KAAK,CAClBkwD,SAAUA,EACVK,aAAcL,EACdu7S,KAAM,OAAK/M,GACXh7V,MAAO8nW,EAAc,GAAG9nW,QAG1B0jY,EAAepnY,KAAK,CAClBkwD,SAAUA,EACVu7S,KAAM,OAAK/M,GACXh7V,MAAO,QAKN,CAAP,EAAO0jY,WAGD,YAAA17B,eAAR,SAAuBhoW,EAAe+nW,GACpC,IAAM/M,EAAM55V,KAAKkmW,cAAclgW,MAAK,SAAC4zV,GAAa,OAAAh7V,GAASg7V,EAAI91U,KAAOllB,GAASg7V,EAAIpzU,KAAOozU,EAAI+M,OAAS,OAAKA,MAC5G,OAAO/M,EAAMA,EAAIl8V,KAAO,IAGZ,YAAA0oW,iBAAd,W,qBAAkCpqW,GAAO,W,kDAChC,SAAMgE,KAAKgmW,qBAAqBzoV,U,OAAvC,MAAO,CAAP,EAAO,kBA9EEolX,EAAiB,GAD7B,uB,uBAY6C,mB,OAAA,IAAhB,wCAAgB,SACN,mBADM,OACN,IAAb,UAAa,SACc,mBADd,OACc,IAApB,UAAoB,YAbzCA,GAAb,K,sFCZAjnY,EAAOD,QAAU,iyD,+nBCUjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,0B,MAsBvC,OAnBE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,qBACVoD,KAAM,mBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,uDAGtB,CACEqC,MAAO,0BACPpI,SAAU,yCACVoD,KAAM,iCA1BDklY,EAAsB,GADlC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,0ECVAlnY,EAAOD,QAAU,uD,ijECuBjB,aAgBE,WACUqK,EACA80D,EACA0zR,EACAxrM,EACA4iM,EACA8oC,EACA3H,EACAx6B,EACEhyU,GATZ,WACU,KAAAvU,SACA,KAAA80D,QACA,KAAA0zR,4BACA,KAAAxrM,eACA,KAAA4iM,8BACA,KAAA8oC,gBACA,KAAA3H,oBACA,KAAAx6B,kBACE,KAAAhyU,KAjBJ,KAAAmD,MAAgB,IAAI,IAGpB,KAAA0iX,yBAA0C,GAiBhDlgY,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,mBACnCF,KAAKwd,MAAMmtD,KAAO,GAElB3qE,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MAExB7Q,KAAKwvS,aAAexvS,KAAKqa,GAAGtF,UAAU,KAAuB,SAACtX,GAAmC,SAAK2wW,gBAAgBjvW,KAAK,M,sBA4G/H,OAzGS,YAAAwmV,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,aAAapyK,YAAY,qCAAqCwkD,WACrE4tH,OAAO,YAAYpyK,YAAY,oCAAoCwkD,WACnEn+K,GAAGrtC,KAAKwd,OAEX,kBACG47T,OAAO,iBAAiBpyK,YAAY,oDAAoDwkD,WACxFn+K,GAAGrtC,KAAKwd,MAAMm7W,aAIN,YAAA//W,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,iEACpCslB,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKie,WAAa7d,EAAO6d,UAEzBje,KAAKsuV,0BAA0BlxU,OAAO87B,iBAAmBl5C,KAAKie,UAExC,GAAMje,KAAKmgY,qB,OAA3BprV,EAAgB,SAEtB/0C,KAAKkgY,yBAA2BnrV,EAAclwC,QAAO,SAAA+0V,GAAO,OAACA,EAAIZ,iBAAmB,IAAgBif,aAAgBre,EAAI1vT,gBAAkB,IAAcgwT,aAEpJy+B,EAAa,IAAI,KACVkJ,qBAAuB,IAAqB3nC,SACvDl6V,KAAKwd,MAAMm7W,WAAaA,EACxB34X,KAAK2lV,2B,mCAKF,YAAAx8L,SAAP,WACEnpJ,KAAKwvS,aAAa7jM,WAGN,YAAAxsG,KAAd,W,qBAAsBnD,GAAO,W,0DAGR,O,sBAAjB,EAAAgE,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,U,cAA5C,EAAKu9C,UAAY,SACjB96D,KAAKouW,kB,+BAGLpuW,KAAK8iJ,aAAahmJ,MAAM,G,+BAKrB,YAAAsxW,gBAAP,WAEE,GADApuW,KAAKC,OAAO0zC,MAAM,mBACd3zC,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAAe,CAC1C,IAAI,EAAgB11J,KAAK6Q,MAAM6kJ,cAActvG,QACzCmoT,EAAavuW,KAAK86D,UAAU90D,MAAK,SAAAwoW,GAAM,OAAAA,EAAGpoT,UAAY,KACtDmoT,IACFvuW,KAAKwd,MAAMm7W,WAAW3uV,WAAaukU,EAAWhyV,MAKtC,YAAAsmX,UAAd,W,qBAA2B7mY,GAAO,W,kDACzB,SAAMgE,KAAKwuX,cAAclyW,QAAQtc,KAAKorD,W,OAA7C,MAAO,CAAP,EAAO,kBAGK,YAAA+0U,iBAAd,W,qBAAkCnkY,GAAO,W,kDAChC,SAAMgE,KAAKsuV,0BAA0B/wU,U,OAA5C,MAAO,CAAP,EAAO,kBAGI,YAAA69F,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAGzC,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAKf,OAAOinV,IADvB,M,OACF,MAAO,CAAP,EAAO,U,2BAGVj6U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWT,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAKwuX,cAAcpxW,OAAO7C,c,gCAGtB,YAAAtb,OAAd,SAAqBinV,G,qBAAuBlqV,GAAO,W,6DAC1C,SAAMgE,KAAKwuX,cAAcvvX,OAAOe,KAAKwd,OACzCra,MAAK,SAAO4M,GAAc,qC,yDAEzB/P,KAAK8iJ,aAAaxiJ,QAAQ,6BAEvB4lV,EAEM,GAAMlmV,KAAK8F,OAAOyC,SAAS,YAAYvI,KAAKie,UAAS,mCAAmClO,EAAOwM,GAAE,cAAcxM,EAAO4oX,WAAWp8W,KAFvI,M,OAED,MAAO,CAAP,EAAO,U,OAGA,SAAMvc,KAAK8F,OAAOkD,gBAAgB,W,OAAzC,MAAO,CAAP,EAAO,oBAGViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,EAAMA,W,OAdlC,MAAO,CAAP,EAAO,kBA5HEgmY,EAAe,GAD3B,uB,uBAkByB,mB,OAAA,IAAN,oBAAM,SACK,mBADL,OACK,IAAZ,UAAY,SACiC,mBADjC,OACiC,IAAzB,UAAyB,SAC1B,mBAD0B,OAC1B,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC5B,mBAD4B,OAC5B,IAAb,UAAa,SACQ,mBADR,OACQ,IAAjB,UAAiB,SACA,mBADA,OACA,IAAnB,UAAmB,SACf,mBADe,OACf,IAAf,sCAAe,YAzBpBA,GAAb,I,miECJA,aAiBE,WACUxhV,EACAsZ,EACAkoF,EACA4iM,EACA4I,EACEj0U,EACFgyU,GAPV,WACU,KAAA/qS,mBACA,KAAAsZ,QACA,KAAAkoF,eACA,KAAA4iM,8BACA,KAAA4I,4BACE,KAAAj0U,KACF,KAAAgyU,kBAhBF,KAAA6zC,yBAA0C,GAG1C,KAAA1iX,MAAoB,IAAI,IAe5Bxd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAC1CjzU,KAAKC,OAAS,aAAWC,UAAU,oCACnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MACxB7Q,KAAKwvS,aAAexvS,KAAKqa,GAAGtF,UAAU,KAAuB,SAACtX,GAAmC,SAAK2wW,gBAAgBjvW,KAAK,M,kBAuEjI,OApES,YAAAwmV,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,iBAAiBpyK,YAAY,oDAAoDwkD,WACxFn+K,GAAGrtC,KAAKwd,QAGA,YAAA5E,SAAb,SAAsBs+W,G,qBAAyBl7X,GAAO,W,wDAS9B,OARtBgE,KAAKC,OAAO0zC,MAAM,YAElB3zC,KAAKwd,MAAQ05W,EAEbl3X,KAAKie,UAAYje,KAAKwd,MAAMS,UAE5Bje,KAAKsuV,0BAA0BlxU,OAAO87B,iBAAmBl5C,KAAKie,UAExC,GAAMje,KAAKmgY,oB,cAA3BprV,EAAgB,SACtB/0C,KAAKkgY,yBAA2BnrV,EAAclwC,QAAO,SAAA+0V,GAAO,OAACA,EAAIZ,iBAAmB,IAAgBif,aAAgBre,EAAI1vT,gBAAkB,IAAcgwT,YACxJl6V,KAAK2lV,2B,YAGO,YAAAxmV,KAAd,W,qBAAsBnD,GAAO,W,0DAER,O,sBAAjB,EAAAgE,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,U,cAA5C,EAAKu9C,UAAY,SACjB96D,KAAKouW,kB,+BAGLpuW,KAAK8iJ,aAAahmJ,MAAM,G,+BAIrB,YAAAsxW,gBAAP,WAEE,GADApuW,KAAKC,OAAO0zC,MAAM,mBACd3zC,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAAe,CAC1C,IAAI,EAAgB11J,KAAK6Q,MAAM6kJ,cAActvG,QACzCmoT,EAAavuW,KAAK86D,UAAU90D,MAAK,SAAAwoW,GAAM,OAAAA,EAAGpoT,UAAY,KACtDmoT,IACFvuW,KAAKwd,MAAMwsB,WAAaukU,EAAWhyV,MAK3B,YAAA4jX,iBAAd,W,qBAAkCnkY,GAAO,W,kDAChC,SAAMgE,KAAKsuV,0BAA0B/wU,U,OAA5C,MAAO,CAAP,EAAO,kBAGI,YAAA69F,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAGzC,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACJ34M,KAAKwd,MAAMgtB,cAAZ,OACFxqC,KAAK8iJ,aAAaviJ,QAAQ,wE,OAF1B,M,OAKO,SAAMP,KAAK08D,Q,OAAlB,MAAO,CAAP,EAAO,U,2BAIZzwD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAZ5B,MAAO,CAAP,EAAO,kBAgBK,YAAA4/D,KAAd,W,qBAAsB1gE,GAAO,W,kDACpB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAnGEm9T,EAAoB,GADhC,uB,uBAmB6C,mB,OAAA,IAAhB,wCAAgB,SACf,mBADe,OACf,IAAZ,UAAY,SACO,mBADP,OACO,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACJ,mBADI,OACJ,IAAzB,UAAyB,SAC/B,mBAD+B,OAC/B,IAAf,sCAAe,SACe,mBADf,OACe,IAAnB,UAAmB,YAxBnCA,GAAb,K,yFCnBArnY,EAAOD,QAAU,82F,kECAjBC,EAAOD,QAAU,goK,q+DCUjB,aAeE,WACUorX,EACA/jO,GAFV,WACU,KAAA+jO,oBACA,KAAA/jO,eAdF,KAAA1iJ,OAAc,GAQd,KAAAkd,WAAoC,IAAI,wBAWxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAK6mX,kBAAkB/yW,KAAK9T,KAAKsd,WAAYtd,KAAK61J,OAAOt5I,IACnEpZ,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBALPkD,KAAKC,OAAS,aAAWC,UAAU,mB,UA2CvC,OA7BgB,YAAAf,KAAd,W,qBAAsBnD,GAAO,W,yDACvBgE,KAAK61J,QAEP71J,KAAK6mX,kBAAkBzpW,OAAO87B,iBAAmBl5C,KAAK61J,OAAO53I,UAG7Dje,KAAKsd,WAAWusB,OAAOi6M,qBAAuB,IAAqBo2G,SAE5D,GAAMl6V,KAAKukV,aAPhB,M,OAOF,MAAO,CAAP,EAAO,U,yBAKG,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBArDT,GADC,W,yDAID,GADC,W,gBACqB,mB,OAAA,IAAN,UAAM,W,6BATX4yD,EAAe,GAD3B,uB,uBAiB+C,mB,OAAA,IAAjB,UAAiB,SACV,mBADU,OACV,IAAZ,UAAY,YAjBzBA,GAAb,I,mFCVAtnY,EAAOD,QAAU,6mD,o/DCejB,aAiBE,WACU6lD,EACAsZ,EACAyxR,EACAvpM,EACA4iM,GAJA,KAAApkS,mBACA,KAAAsZ,QACA,KAAAyxR,kBACA,KAAAvpM,eACA,KAAA4iM,8BAdF,KAAAloU,MAAwB,IAAI,IAI5B,KAAA69W,cAAwB,GACxB,KAAAr7B,eAAyB,GAY/BhgW,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,uBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MAExB,IAAI2J,EAAa,IAAOC,aACxBza,KAAKq7X,cAAgB7gX,EAAa,4CAClCxa,KAAKggW,eAAiBxlV,EAAa,6C,cAuFvC,OAnFS,YAAAmrU,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,YAAYpyK,YAAY,sDAAsDwkD,WACrFn+K,GAAGrtC,KAAKwd,QAGA,YAAA5E,SAAb,SAAsB4E,G,qBAAwBxhB,GAAO,W,kCACnDgE,KAAKC,OAAO0zC,MAAM,YAElB3zC,KAAKwd,MAAQA,EAEbxd,KAAK2lV,2B,WAIO,YAAAxmV,KAAd,W,qBAAsBnD,GAAO,W,0DAGR,O,sBAAjB,EAAAgE,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,U,cAA5C,EAAKu9C,UAAY,SACjB96D,KAAKouW,kB,+BAGLpuW,KAAK8iJ,aAAahmJ,MAAM,G,+BAIrB,YAAAsxW,gBAAP,WAEE,GADApuW,KAAKC,OAAO0zC,MAAM,mBACd3zC,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAAe,CAC1C,IAAI,EAAgB11J,KAAK6Q,MAAM6kJ,cAActvG,QACzCmoT,EAAavuW,KAAK86D,UAAU90D,MAAK,SAAAwoW,GAAM,OAAAA,EAAGpoT,UAAY,KACtDmoT,IACFvuW,KAAKwd,MAAMwsB,WAAaukU,EAAWhyV,MAK5B,YAAA6+F,OAAb,W,qBAAuBp/G,GAAO,W,6DAGrB,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACL34M,KAAKwd,MAAMouC,SAAZ,OACD5rD,KAAK8iJ,aAAaviJ,QAAQ,iD,OAF1B,M,OAIO,SAAMP,KAAK08D,Q,OAAlB,MAAO,CAAP,EAAO,U,2BAIZzwD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAX5B,MAAO,CAAP,EAAO,kBAeK,YAAA4/D,KAAd,W,qBAAsB1gE,GAAO,W,6DACpB,SAAMgE,KAAKshD,iBAAiBskB,KAClCziE,MAAK,gD,kDACJ,SAAMnD,KAAKshD,iBAAiBskB,M,cAA5B,S,cAEH35D,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OALxB,MAAO,CAAP,EAAO,kBASF,YAAA0rV,QAAP,SAAe1kD,GAAf,WACE9jS,KAAKC,OAAO0zC,MAAM,WAClB,IAAIx3B,EAAa2nR,EAAOtmS,OAAO+wO,MAAM,GAGrC,GADoB,IAAoBp9N,MAAM,iBAAkB,OAC9C8P,QAAQ9E,GAAO,CAC/B,IAAIo/B,EAAqB,IAAID,WAC7BC,EAAOI,cAAcx/B,GACrBo/B,EAAOr+C,OAAS,WACd,EAAKsgB,MAAMquC,SAAW1vC,EAAKze,WAI7BsC,KAAK8iJ,aAAahmJ,MAAM,uFArHjBmmY,EAA2B,GADvC,uB,uBAmB6C,mB,OAAA,IAAhB,wCAAgB,SACf,mBADe,OACf,IAAZ,UAAY,SACiB,mBADjB,OACiB,IAAnB,UAAmB,SACV,mBADU,OACV,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,YAtBvDA,GAAb,K,2GCfAvnY,EAAOD,QAAU,q3D,o9DCUjB,aAWE,WACU6lD,EACAwhG,EACA4iM,EACAw9C,GAHA,KAAA5hV,mBACA,KAAAwhG,eACA,KAAA4iM,8BACA,KAAAw9C,wBAPF,KAAA1lX,MAAwB,IAAI,IAUlCxd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,mB,YA0DvC,OAtDS,YAAAylV,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,gBAAgBpyK,YAAY,uEAAuEwkD,WAC1G4tH,OAAO,UAAUpyK,YAAY,2DAA2DwkD,WACxFn+K,GAAGrtC,KAAKwd,OAEX,kBACG47T,OAAO,aAAapyK,YAAY,qCAAqCwkD,WACrE4tH,OAAO,YAAYpyK,YAAY,oCAAoCwkD,WAEnEn+K,GAAGrtC,KAAKwd,MAAM6wC,WAGN,YAAAz1C,SAAb,SAAsB4E,G,qBAAQxhB,GAAO,W,6DAGxB,OAFXgE,KAAKwd,MAAQA,EACbxd,KAAKmjY,YAAc,EACR,GAAMnjY,KAAKkjY,sBAAsB3lX,OAAOvd,KAAKwd,MAAMguC,a,cAAnD,SACR3mD,QAAO,SAAAjJ,GAAK,OAAAA,EAAE6vD,cAAgB,EAAKjuC,MAAMiuC,gBAActkD,SAAQ,SAAAvL,GAAK,SAAKunY,cAAgBvnY,EAAE6jW,UAE9Fz/V,KAAK2lV,2B,YAGM,YAAAvqO,OAAb,W,qBAAuBp/G,GAAO,W,oEACzB+nD,OAAO/jD,KAAKwd,MAAMiiV,QAAUz/V,KAAKmjY,aAAe,IAC1C,GAAMnjY,KAAK01U,qBAAqBrnS,WACtClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,2BAGVzwD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,OARzB,M,OACD,MAAO,CAAP,EAAO,U,OAUPkD,KAAK8iJ,aAAahmJ,MAAM,yE,mCAId,YAAA4/D,KAAd,W,qBAAsB1gE,GAAO,W,6DACpB,SAAMgE,KAAKshD,iBAAiBskB,KAClCziE,MAAK,gD,kDACJ,SAAMnD,KAAKshD,iBAAiBskB,M,cAA5B,S,cAEH35D,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OALxB,MAAO,CAAP,EAAO,kBASF,YAAA8qW,iBAAP,SAAwBnqW,GACtBuC,KAAK8iJ,aAAa3iJ,KAAK1C,IA3Ed2lY,EAAiB,GAD7B,uB,uBAa6C,mB,OAAA,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACZ,mBADY,OACZ,IAArB,UAAqB,YAf3CA,GAAb,K,kGCVA1nY,EAAOD,QAAU,+vF,0lFCoCjB,aAsBE,WACUqK,EACA/F,EACAmkV,EACAphM,EACA4iM,EACA8oC,EACA0U,EACArc,EACA9tB,EACA45B,EACAt4W,EACAgpX,GAZV,WACU,KAAAv9X,SACA,KAAA/F,OACA,KAAAmkV,gBACA,KAAAphM,eACA,KAAA4iM,8BACA,KAAA8oC,gBACA,KAAA0U,wBACA,KAAArc,oBACA,KAAA9tB,uBACA,KAAA45B,gBACA,KAAAt4W,KACA,KAAAgpX,+BA5BF,KAAA/lX,WAAoC,IAAI,wBAMxC,KAAAgmX,oBAA8B,EAG9B,KAAAztO,OAAiB,IAAI,IACrB,KAAAr4I,MAAwB,IAAI,IAC5B,KAAAipB,MAAgB,EAGhB,KAAAsuH,cAA8B,GAkL9B,KAAAi4F,QAAU,6BAAUhxP,GAAO,W,8DACjCgE,KAAKC,OAAO0zC,MAAM,c,iBAEoB,O,sBAAA,GAAM3zC,KAAKkjY,sBAAsBpvX,KAAK9T,KAAKwrD,WAAYxrD,KAAKyrD,aAAczrD,KAAKsd,a,OACtG,OADT7B,EAAgC,SACpC,EAAAzb,KAAa,GAAMA,KAAKkjY,sBAAsBx3U,mCAAmC1rD,KAAKyrD,aAAczrD,KAAKwrD,a,OACvF,OADlB,EAAK/kB,MAAQ,SACb,EAAAzmC,KAAkB,GAAMA,KAAK6mX,kBAAkBvqW,QAAQtc,KAAKyrD,e,OAC5D,OADA,EAAKktU,WAAa,SACX,CAAP,EAAOl9W,G,yBAGPzb,KAAK8iJ,aAAahmJ,MAAM,G,+BA1K1BkD,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,mBAGnCF,KAAK+0J,cAAc75J,KAAK8E,KAAKqa,GAAGtF,UAAU,IAAkC/U,KAAKujY,yBAAyBpkY,KAAKa,MAAM,K,4BAuQzH,OAlQe,YAAA4Y,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,+DACpCslB,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKie,WAAa7d,EAAO6d,UAEzBje,KAAKkjY,sBAAsB9lX,OAAO87B,iBAAmBl5C,KAAKie,UAC1Dje,KAAKwuX,cAAcpxW,OAAO87B,iBAAmBl5C,KAAKie,UAE7CqD,MAAMlhB,EAAOorD,aAAgBlqC,MAAMlhB,EAAOqrD,cAA3C,OAEFzrD,KAAKwrD,YAAcprD,EAAOorD,WAC1BxrD,KAAKyrD,cAAgBrrD,EAAOqrD,aAE5B,EAAAzrD,KAAc,GAAMA,KAAK6iY,e,OAAzB,EAAKhtO,OAAS,S,mCAMN,YAAA12J,KAAd,W,qBAAsBnD,GAAO,W,kDACpB,SAAMgE,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,kBAGK,YAAAs+C,UAAd,W,qBAA2B7mY,GAAO,W,kDACzB,SAAMgE,KAAKwuX,cAAclyW,QAAQtc,KAAKwrD,a,OAA7C,MAAO,CAAP,EAAO,kBAGK,YAAA+4R,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAAOsY,GAA6B,qC,yDACxCzb,KAAKsd,WAAWoiU,UAAYjkU,EAASphB,KACrC2F,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,aACrB,MAAfz/U,KAAKymC,MAAL,MAEF,GAAMzmC,KAAKwjY,0B,OAAX,S,qCAGHv3X,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,kBAcK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAAmzD,yBAAd,SAAuCE,G,YAAA,IAAAA,OAAA,G,cAA4BznY,GAAO,W,+DACrEgE,KAAKsjY,oBAAsBG,GAC5B,EAAAzjY,KAAuB,GAAMA,KAAKqjY,6BAA6B7kY,IAAIwB,KAAK61J,OAAOt5I,MAD9E,M,OACD,EAAKmnX,gBAAkB,SACvB1jY,KAAKsjY,oBAAqB,E,mCAIjB,YAAArkY,OAAb,W,qBAAuBjD,GAAO,W,+DAQrB,OAPPgE,KAAKC,OAAOE,KAAK,mBAEbK,EAAO,IAAI,KACVgrD,WAAaxrD,KAAKwrD,WACvBhrD,EAAKirD,aAAezrD,KAAKyrD,aACzBjrD,EAAK6tD,SAAW,IAAI,IAEb,GAAMruD,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKkjY,sBAAsBjkY,OAAOuB,GAC5C2C,MAAK,WAEJ,EAAK2/I,aAAaxiJ,QAAQ,4BAC1B,EAAKikV,cAGNt4U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAmBI,YAAAuxO,KAAb,SAAkB7tO,G,qBAAuBxE,GAAO,W,6DAGvC,OAFPgE,KAAKC,OAAOE,KAAK,gBAEV,GAAMH,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKkjY,sBAAsBxmX,OAAOlc,GAC5C2C,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,6BAC1B,EAAKikV,cAENt4U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,U,OASP,SAAMkD,KAAK8F,OAAOyC,SAAS,YAAYvI,KAAKie,UAAS,mCAAmCzd,EAAKgrD,WAAU,cAAcxrD,KAAKyrD,e,OAA1H,S,6CAdJ,MAAO,CAAP,EAAO,kBAoBK,YAAA3uC,OAAd,SAAqBtc,G,qBAAuBxE,GAAO,W,6DAE1C,OADPgE,KAAKC,OAAOE,KAAK,kBACV,GAAMH,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK6tD,SAAS5F,WACpBiwG,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MAEK,GAAMj5C,KAAKkjY,sBAAsBpmX,OAAOtc,EAAK+b,IACjDpZ,MAAK,gD,kDAIJ,OAFAnD,KAAK8iJ,aAAaxiJ,QAAQ,8BAE1B,GAAMN,KAAKukV,Y,cAAX,S,cAEDt4U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,mCANX,MAAO,CAAP,EAAO,kBAoBK,YAAA6uD,qBAAd,W,qBAAsC3vD,GAAO,W,+DAMpC,OALHwE,EAAO,IAAI,KACVgrD,WAAaxrD,KAAKwrD,WACvBhrD,EAAKirD,aAAezrD,KAAKyrD,aACzBjrD,EAAK9C,KAAOsC,KAAK61J,OAAOptG,SAEjB,GAAMzoD,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKkjY,sBAAsBv3U,qBAAqBnrD,GAC1D2C,MAAK,WAEJ,EAAK2/I,aAAaxiJ,QAAQ,4BAC1B,EAAKikV,cAGNt4U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAgCK,YAAA2hY,uBAAd,SAAqCliX,G,qBAAavgB,GAAO,W,wDAErD,O,sBAAA,GAAMgE,KAAKwuX,cAAc/jT,aAAaluD,I,OAEtC,OAFA,SACAvc,KAAK8iJ,aAAaxiJ,QAAQ,wCACnB,CAAP,GAAO,G,yBAGPN,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAA85V,cAAd,SAA4BxrS,G,qBAAmBpvD,GAAO,W,6DAC7C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO4tC,IACNstG,YAAW,SAAOj9I,GAA2B,qC,yDACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKy+X,uBAAuBrzU,I,OAAzC,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAUK,YAAA8a,cAAd,W,qBAA+BlqE,GAAO,W,6DACpC,OAAmB,MAAfgE,KAAKymC,OAGAzmC,KAAKsd,WAAWmiU,cAAgBz/U,KAAKsd,WAAWmiU,aAAe,EAF/D,CAAP,GAAO,GAMF,GAAMz/U,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAKD,KAAKM,GAAG,iEACnBq4J,YAAW,SAAOj9I,GAA2B,qC,2BAC9C,MAAO,CAAP,GAAQA,EAASw9B,wB,OAJnB,MAAO,CAAP,EAAO,kBAQI,YAAAuqV,uBAAb,W,qBAAuCxnY,GAAO,W,6DAErC,OADPgE,KAAKC,OAAOE,KAAK,0BACV,GAAMH,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAK61J,OAAOt5I,KAClBm8I,YAAW,SAAOj9I,GAA2B,qC,2DACzCA,EAASw9B,aAAV,Y,iBAGA,O,sBAAA,GAAMj5C,KAAK2jY,oB,cAAX,S,+BAGA3jY,KAAK8iJ,aAAahmJ,MAAM,G,yCAV9B,MAAO,CAAP,EAAO,kBAiBK,YAAA6mY,iBAAd,W,qBAAkC3nY,GAAO,W,+DAMhC,OALHwE,EAAmB,IAAI,KACtByd,UAAYje,KAAKie,UACtBzd,EAAK6zX,eAAiB,IAAe/6B,OACrC94V,EAAKqhY,qBAAuB,IAAqB+B,OAE1C,GAAM5jY,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,OACFj5C,KAAKC,OAAO0zC,MAAM,kBAAmBl4B,EAASxR,QAEvC,GAAMjK,KAAK6mX,kBAAkB5nX,OAAOuB,EAAMR,KAAK61J,OAAOt5I,IAC1DpZ,MAAK,SAAOqa,GAAiB,qC,+DAC5Bhd,EAAK+b,GAAKiB,EAAMjB,GAEbd,EAASxR,QACN8kX,EAAS,IAAI,KACjBA,EAAStzW,EAASxR,QACXwhD,aAAejuC,EAAMjB,GAC5BwyW,EAAO3jU,SAAWprD,KAAK61J,OAAOt5I,GACrB,GAAMvc,KAAK2yX,cAAc1zX,OAAO8vX,KALxC,M,OAKDA,EAAS,S,wBAGX/uX,KAAK8iJ,aAAaxiJ,QAAQ,4BAG1BN,KAAKqa,GAAGb,QAAQ,IAAI,K,cAGrBvN,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,Q,OAnB5B,MAAO,CAAP,EAAO,U,mCAPX,MAAO,CAAP,EAAO,kBAlRE+mY,EAAY,GADxB,uB,uBAwByB,mB,OAAA,IAAN,oBAAM,SACJ,mBADI,OACJ,IAAJ,gBAAI,SACkB,mBADlB,OACkB,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC5B,mBAD4B,OAC5B,IAAb,UAAa,SACgB,mBADhB,OACgB,IAArB,UAAqB,SACR,mBADQ,OACR,IAAjB,UAAiB,SACI,mBADJ,OACI,IAAlB,UAAkB,SACZ,mBADY,OACZ,IAAb,UAAa,SACT,mBADS,OACT,IAAf,sCAAe,SACuC,mBADvC,OACuC,IAA5B,UAA4B,YAlCzDA,GAAb,I,urBCzBA,aAKE,WACU9jY,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAGRpsN,KAAKC,OAAS,aAAWC,UAAU,2B,QAoBvC,OAjBS,YAAA+V,gBAAP,SAAuBzT,EAA6BsD,GAClD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,kBACViW,KAAK,EACL7S,KAAM,gBACN4J,MAAOtH,KAAKD,KAAKM,GAAG,8DArBfyjY,EAAuB,GADnC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,sFCXApoY,EAAOD,QAAU,uD,2ECAjBC,EAAOD,QAAU,ygM,6gECejB,aAYE,WACUqK,EACAg9I,EACA4iM,EACAouC,EACA/tB,EACAC,GALA,KAAAlgW,SACA,KAAAg9I,eACA,KAAA4iM,8BACA,KAAAouC,sBACA,KAAA/tB,gBACA,KAAAC,uBAZF,KAAAxoV,MAAsB,IAAI,IAG1B,KAAAumX,qBAAiC,GACjC,KAAA79B,cAAiC,GAWvClmW,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,oB,gBAmIvC,OAhIe,YAAA0Y,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,2FAElCslB,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKie,WAAa7d,EAAO6d,UAEzBje,KAAK8zX,oBAAoB12W,OAAO87B,iBAAmBl5C,KAAKie,UACxDje,KAAK+lW,cAAc3oV,OAAO87B,iBAAmBl5C,KAAKie,UAG7CqD,MAAMlhB,EAAO2jJ,gBAAd,OACF/jJ,KAAK+jJ,gBAAkB3jJ,EAAO2jJ,eAE9B,EAAA/jJ,KAAa,GAAMA,KAAKm8E,QAAQn8E,KAAK+jJ,mB,OACT,OAD5B,EAAKvmI,MAAQ,SACb,EAAAxd,KAA4B,GAAMA,KAAKgkY,oBAAoBhkY,KAAK+jJ,iB,OAAhE,EAAKggP,qBAAuB,S,iBAGX,SAAM/jY,KAAKomW,oB,OAAxBC,EAAa,SAEnBrmW,KAAKkmW,cAAgBG,EAAW1hW,KAAI,SAAAi1V,GAClC,IAAItlN,EAAQslN,EAAI0M,WAAWh7U,MAAM,KAC7Bu2T,EAAWv3T,UAAUgqH,EAAM,IAAM,KAAK3tF,QACtCm7R,EAAWx3T,UAAUgqH,EAAM,IAAM,KAAK3tF,QAG1C,OAFAizS,EAAS,IAAI/X,EACb+X,EAAS,IAAI9X,EACN8X,K,sDAIX55V,KAAK8iJ,aAAahmJ,MAAM,G,+BAKd,YAAAq/E,QAAd,SAAsB4lM,G,qBAAiB/lR,GAAO,W,kDACrC,SAAMgE,KAAK8zX,oBAAoBx3W,QAAQylQ,I,OAA9C,MAAO,CAAP,EAAO,kBAGK,YAAAqkF,iBAAd,W,qBAAkCpqW,GAAO,W,kDAChC,SAAMgE,KAAKgmW,qBAAqBzoV,U,OAAvC,MAAO,CAAP,EAAO,kBAGK,YAAAymX,oBAAd,SAAkCjgP,G,qBAAyB/nJ,GAAO,W,mEAE/C,SAAMgE,KAAK+lW,cAAc5/D,uBAAuBpiJ,I,OAuBjE,OAvBIkgP,EAAa,SACbx9B,EAAU5rW,OAAO0Z,KAAK,QAAM1P,QAAO,SAAAq1B,GAAK,MAAmB,iBAAZ,OAAKA,MAEpDgqW,EAAwB,GAE5Bz9B,EAAQt/V,SAAQ,SAAAyyV,GACd,IAAI8M,EAAgBu9B,EAAWp/X,QAAO,SAAAjI,GAAK,cAAKA,EAAE+pW,QAAU,OAAK/M,MAE7D8M,EAAc9rW,OAChBspY,EAAYhpY,KAAK,CACf6oJ,eAAgB,EAAKA,eACrB4iN,KAAM,OAAK/M,GACXh7V,MAAO8nW,EAAc,GAAG9nW,QAG1BslY,EAAYhpY,KAAK,CACf6oJ,eAAgB,EAAKA,eACrB4iN,KAAM,OAAK/M,GACXh7V,MAAO,QAKN,CAAP,EAAOslY,WAGD,YAAAt9B,eAAR,SAAuBhoW,EAAe+nW,GAEpC,IAAM/M,EAAM55V,KAAKkmW,cAAclgW,MAAK,SAAC4zV,GAAa,OAAAh7V,GAASg7V,EAAI91U,KAAOllB,GAASg7V,EAAIpzU,KAAOozU,EAAI+M,OAAS,OAAKA,MAC5G,OAAO/M,EAAMA,EAAIl8V,KAAO,IAGZ,YAAAmpW,WAAd,SAAyBrmW,G,qBAAOxE,GAAO,W,+DACjCwE,GACF,EAAAR,KAA4B,GAAMA,KAAKgkY,oBAAoBxjY,KADzD,M,OACF,EAAKujY,qBAAuB,S,mCAInB,YAAA3oR,OAAb,W,qBAAuBp/G,GAAO,W,6DAGrB,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,2BAGVzwD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWT,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAK8zX,oBAAoB12W,OAAO7C,c,gCAG5B,YAAAmiD,KAAd,W,qBAAsB1gE,GAAO,W,iDAEvBH,EAAW,GAGfmE,KAAKwd,MAAMspV,MAAQ3jV,KAAKk3D,SAASr7D,SAAS,IAAIjd,UAAU,IAAK,IAAKsX,MAAQmI,UAAUxC,SAAS,IAGzF+nV,EAAe,CAAEnoW,MAAO,GAC5BoB,KAAK+jY,qBAAqB58X,SAAQ,SAAAyyV,GAC5BmN,EAAQnoW,MAAQg7V,EAAIh7V,QACtBmoW,EAAUnN,MAId55V,KAAKwd,MAAMwpV,YAAcD,EAAQJ,KAEjC3mW,KAAK+jY,qBAAqB58X,SAAQ,SAAAyyV,GAChCA,EAAIkN,MAAQ,EAAKtpV,MAAMspV,MACvBjrW,EAASX,KAAK,EAAK6qW,cAAc3/D,qBAAqBwzD,OAGxD59V,EAAQgC,IAAInC,GACTsH,MAAK,2EAAY,SAAAnD,KAAK8zX,oBAAoBp3W,OAAO1c,KAAKwd,iBACtDra,MAAK,2EAAY,SAAAnD,KAAK8iJ,aAAaxiJ,QAAQ,uCAC3C2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,M,WAxJnBqnY,EAAoB,GADhC,uB,uBAcyB,mB,OAAA,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAChB,mBADgB,OAChB,IAAnB,UAAmB,SACZ,mBADY,OACZ,IAAb,UAAa,SACc,mBADd,OACc,IAApB,UAAoB,YAlBzCA,GAAb,I,iGCfAzoY,EAAOD,QAAU,w+D,mgECejB,aAiBE,WACU6lD,EACAsZ,EACAyxR,EACAvpM,EACA4iM,GAJA,KAAApkS,mBACA,KAAAsZ,QACA,KAAAyxR,kBACA,KAAAvpM,eACA,KAAA4iM,8BAdF,KAAAloU,MAAwB,IAAI,IAI5B,KAAA69W,cAAwB,GACxB,KAAAr7B,eAAyB,GAY/BhgW,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,4CAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MAExB,IAAI2J,EAAa,IAAOC,aACxBza,KAAKq7X,cAAgB7gX,EAAa,6CAClCxa,KAAKggW,eAAiBxlV,EAAa,8C,cAiFvC,OA7ES,YAAAmrU,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,YAAYpyK,YAAY,sDAAsDwkD,WACrFn+K,GAAGrtC,KAAKwd,QAGA,YAAA5E,SAAb,SAAsB4E,G,qBAAwBxhB,GAAO,W,kCACnDgE,KAAKC,OAAO0zC,MAAM,YAElB3zC,KAAKwd,MAAQA,EAEbxd,KAAK2lV,2B,WAIO,YAAAxmV,KAAd,W,qBAAsBnD,GAAO,W,0DAGR,O,sBAAjB,EAAAgE,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,U,cAA5C,EAAKu9C,UAAY,SACjB96D,KAAKouW,kB,+BAGLpuW,KAAK8iJ,aAAahmJ,MAAM,G,+BAIrB,YAAAsxW,gBAAP,WAEE,GADApuW,KAAKC,OAAO0zC,MAAM,mBACd3zC,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAAe,CAC1C,IAAI,EAAgB11J,KAAK6Q,MAAM6kJ,cAActvG,QACzCmoT,EAAavuW,KAAK86D,UAAU90D,MAAK,SAAAwoW,GAAM,OAAAA,EAAGpoT,UAAY,KACtDmoT,IACFvuW,KAAKwd,MAAMwsB,WAAaukU,EAAWhyV,MAK5B,YAAA6+F,OAAb,W,qBAAuBp/G,GAAO,W,6DAGrB,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACL34M,KAAKwd,MAAMouC,SAAZ,OACD5rD,KAAK8iJ,aAAaviJ,QAAQ,iD,OAF1B,M,OAIO,SAAMP,KAAK08D,Q,OAAlB,MAAO,CAAP,EAAO,U,2BAIZzwD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAX5B,MAAO,CAAP,EAAO,kBAeK,YAAA4/D,KAAd,W,qBAAsB1gE,GAAO,W,kDACpB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAGF,YAAA4iR,QAAP,SAAe1kD,GAAf,WACE9jS,KAAKC,OAAO0zC,MAAM,WAClB,IAAIx3B,EAAa2nR,EAAOtmS,OAAO+wO,MAAM,GAGrC,GADoB,IAAoBp9N,MAAM,iBAAkB,OAC9C8P,QAAQ9E,GAAO,CAC/B,IAAIo/B,EAAqB,IAAID,WAC7BC,EAAOI,cAAcx/B,GACrBo/B,EAAOr+C,OAAS,WACd,EAAKsgB,MAAMquC,SAAW1vC,EAAKze,WAI7BsC,KAAK8iJ,aAAahmJ,MAAM,+FA/GjBsnY,EAAwC,GADpD,uB,uBAmB6C,mB,OAAA,IAAhB,wCAAgB,SACf,mBADe,OACf,IAAZ,UAAY,SACiB,mBADjB,OACiB,IAAnB,UAAmB,SACV,mBADU,OACV,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,YAtBvDA,GAAb,K,0HCfA1oY,EAAOD,QAAU,0vD,09DCSjB,aAQE,WACU6lD,EACAwhG,EACA4iM,GAFA,KAAApkS,mBACA,KAAAwhG,eACA,KAAA4iM,8BAPF,KAAAloU,MAA+B,IAAI,IASzCxd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,6B,UAsCvC,OAnCS,YAAAylV,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,UAAUpyK,YAAY,oEAAoEwkD,WACjGn+K,GAAGrtC,KAAKwd,OAEX,kBACG47T,OAAO,aAAapyK,YAAY,uEAAuEwkD,WACvG4tH,OAAO,YAAYpyK,YAAY,sEAAsEwkD,WACrG4tH,OAAO,SAASpyK,YAAY,kEAAkEn8F,QAC9Fx9B,GAAGrtC,KAAKwd,MAAMtK,YAEN,YAAA0F,SAAb,SAAsB4E,G,qBAA+BxhB,GAAO,W,kCAC1DgE,KAAKwd,MAAQA,EACbxd,KAAK2lV,2B,WAIM,YAAAvqO,OAAb,W,qBAAuBp/G,GAAO,W,6DAGrB,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,kCACvCA,EAAO4oM,OACT34M,KAAK08D,O,aAGRzwD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWK,YAAA4/D,KAAd,W,qBAAsB1gE,GAAO,W,kCAC3BgE,KAAKshD,iBAAiBskB,K,WApDby+T,EAA8B,GAD1C,uB,uBAU6C,mB,OAAA,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,YAXvDA,GAAb,K,+GCTA3oY,EAAOD,QAAU,+8E,s5ECuBjB,aA4BE,WACUsE,EACA+zX,EACAwQ,EACA9V,EACA1rO,EACAohM,GANV,WACU,KAAAnkV,OACA,KAAA+zX,sBACA,KAAAwQ,+BACA,KAAA9V,gBACA,KAAA1rO,eACA,KAAAohM,gBA/BF,KAAA9jV,OAAc,GAId,KAAAod,MAAsB,IAAI,IAC1B,KAAAipB,MAAgB,EAEhB,KAAAnpB,WAAoC,IAAI,wBAGxC,KAAA+9W,cAAwB,GACxB,KAAAr7B,eAAyB,GAEzB,KAAAhzG,QAAU,6BAAUhxP,GAAO,W,4DACjCgE,KAAKC,OAAO0zC,MAAM,c,iBAEoB,O,sBAAA,GAAM3zC,KAAKskY,6BAA6BxwX,KAAK9T,KAAKsd,WAAYtd,KAAK+jJ,iB,OAC1F,OADTtoI,EAAgC,SACpC,EAAAzb,KAAa,GAAMA,KAAKskY,6BAA6B5gP,uBAAuB1jJ,KAAK+jJ,iB,OACjF,OADA,EAAKt9G,MAAQ,SACN,CAAP,EAAOhrB,G,yBAGPzb,KAAK8iJ,aAAahmJ,MAAM,G,+BAa1BkD,KAAKC,OAAS,aAAWC,UAAU,6BAEnC,IAAIsa,EAAa,IAAOC,aACxBza,KAAKq7X,cAAgB7gX,EAAa,6CAClCxa,KAAKggW,eAAiBxlV,EAAa,8C,gBA6KvC,OA1KgB,YAAA5B,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACpEgE,KAAKI,OAASA,E,WAGF,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,+DACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAEzBqD,MAAMthB,KAAKI,OAAO2jJ,gBAAnB,OACF/jJ,KAAK+jJ,eAAiB/jJ,KAAKI,OAAO2jJ,eAElC/jJ,KAAK8zX,oBAAoB12W,OAAO87B,iBAAmBl5C,KAAKie,UACxDje,KAAKskY,6BAA6BlnX,OAAO87B,iBAAmBl5C,KAAKie,UAEjE,EAAAje,KAAa,GAAMA,KAAK8zX,oBAAoBx3W,QAAQtc,KAAK+jJ,mB,OAElD,OAFP,EAAKvmI,MAAQ,SAEN,GAAMxd,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yBAKC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAAOsY,GAA6B,qC,kCACxCzb,KAAKsd,WAAWoiU,UAAYjkU,EAASphB,KACrC2F,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,a,aAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAIK,YAAAnxU,OAAd,W,qBAAwBjD,GAAO,W,+DAItB,OAHHwE,EAAO,IAAI,KACVujJ,eAAiB/jJ,KAAKwd,MAAMjB,GAE1B,GAAMvc,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKskY,6BAA6BrlY,OAAOuB,GACnD2C,MAAK,gD,kDAIJ,OAFAnD,KAAK8iJ,aAAaxiJ,QAAQ,4BAE1B,GAAMN,KAAKukV,Y,cAAX,S,cAGDt4U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAqBK,YAAA4f,OAAd,SAAqBlc,G,qBAA8BxE,GAAO,W,6DAEjD,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKskY,6BAA6B5nX,OAAOlc,GACnD2C,MAAK,gD,kDAIJ,OAFAnD,KAAK8iJ,aAAaxiJ,QAAQ,4BAE1B,GAAMN,KAAKukV,Y,cAAX,S,cAGDt4U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAoBK,YAAAggB,OAAd,SAAqBtc,G,qBAA8BxE,GAAO,W,6DAEjD,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK0S,UAAUu1C,WACrBiwG,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MAEK,GAAMj5C,KAAKskY,6BAA6BxnX,OAAOtc,EAAK+b,IACxDpZ,MAAK,gD,kDAIJ,OAFAnD,KAAK8iJ,aAAaxiJ,QAAQ,8BAE1B,GAAMN,KAAKukV,Y,cAAX,S,cAEDt4U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,mCANX,MAAO,CAAP,EAAO,kBAqBK,YAAA6uD,qBAAd,W,qBAAsC3vD,GAAO,W,+DAKpC,OAJHwE,EAAO,IAAI,KACVujJ,eAAiB/jJ,KAAKwd,MAAMjB,GACjC/b,EAAK9C,KAAOsC,KAAKwd,MAAM9f,KAEhB,GAAMsC,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKskY,6BAA6B34U,qBAAqBnrD,GACjE2C,MAAK,gD,kDAIJ,OAFAnD,KAAK8iJ,aAAaxiJ,QAAQ,4BAE1B,GAAMN,KAAKukV,Y,cAAX,S,cAGDt4U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAoBK,YAAA2hY,uBAAd,SAAqCliX,G,qBAAavgB,GAAO,W,wDAErD,O,sBAAA,GAAMgE,KAAKwuX,cAAc/jT,aAAaluD,I,OAEtC,OAFA,SACAvc,KAAK8iJ,aAAaxiJ,QAAQ,wCACnB,CAAP,GAAO,G,yBAGPN,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAA85V,cAAd,SAA4BxrS,G,qBAAmBpvD,GAAO,W,6DAC7C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO4tC,IACNstG,YAAW,SAAOj9I,GAA2B,qC,yDACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKy+X,uBAAuBrzU,I,OAAzC,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAWK,YAAA8a,cAAd,W,qBAA+BlqE,GAAO,W,6DAEpC,OAAmB,MAAfgE,KAAKymC,OAAiBzmC,KAAKwd,MAAM+mX,6BAA+B,IAA2BC,UACtF,CAAP,GAAO,GAGF,GAAMxkY,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAKD,KAAKM,GAAG,8EACnBq4J,YAAW,SAAOj9I,GAA2B,qC,2BAC9C,MAAO,CAAP,GAAQA,EAASw9B,wB,OAJnB,MAAO,CAAP,EAAO,kBA9MEwrV,EAAyB,GADrC,uB,uBA8BqB,mB,OAAA,IAAJ,gBAAI,SAC8B,mBAD9B,OAC8B,IAAnB,UAAmB,SACkB,mBADlB,OACkB,IAA5B,UAA4B,SAC9B,mBAD8B,OAC9B,IAAb,UAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,YAlC3BA,GAAb,I,mtBCZA,aAKE,WACU1kY,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAGRpsN,KAAKC,OAAS,aAAWC,UAAW,wC,QAkBxC,OAfS,YAAA+V,gBAAP,SAAyBzT,EAA6BsD,GACpD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAK,CACV,CACEjC,MAAO,GACPpI,SAAU,gCACVoD,KAAM,kCAnBDgnY,EAAoC,GADhD,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,qGCXAhpY,EAAOD,QAAU,uD,0FCAjBC,EAAOD,QAAU,iwM,koBCUjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,2B,MAgCvC,OA7BE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,sBACVoD,KAAM,oBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,+CAGtB,CACEqC,MAAO,aACPpI,SAAU,qEACVoD,KAAM,2CACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,6CAGtB,CACEqC,MAAO,OACPpI,SAAU,8CACVoD,KAAM,yBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,0CApCfskY,EAAuB,GADnC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,4ECVAjpY,EAAOD,QAAU,8M,++DCgBjB,aAYE,WACUqK,EACAg9I,EACA4iM,EACAouC,EACAxlC,GAJA,KAAAxoV,SACA,KAAAg9I,eACA,KAAA4iM,8BACA,KAAAouC,sBACA,KAAAxlC,4BAVF,KAAA9wU,MAAsB,IAAI,IAG1B,KAAAonX,qBAAsC,GAS5C5kY,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,oBACnCF,KAAKwd,MAAMmtD,KAAO,G,cAsGtB,OAnGS,YAAAg7Q,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,QAAQpyK,YAAY,sCAAsCwkD,WACjE4tH,OAAO,oBAAoBpyK,YAAY,0DAA0DwkD,WACjG4tH,OAAO,8BAA8BpyK,YAAY,wDAAwDwkD,WACzG4tH,OAAO,iBAAiBpyK,YAAY,+CAA+CwkD,WACnFn+K,GAAGrtC,KAAKwd,QAGA,YAAA5E,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,+DACpCslB,MAAMlhB,EAAO6d,WAAd,Y,iBAKsB,O,sBAHtBje,KAAKie,WAAa7d,EAAO6d,UACzBje,KAAK8zX,oBAAoB12W,OAAO87B,iBAAmBl5C,KAAKie,UACxDje,KAAKsuV,0BAA0BlxU,OAAO87B,iBAAmBl5C,KAAKie,UACxC,GAAMje,KAAKmgY,oB,cAA3BprV,EAAgB,SACtB/0C,KAAK4kY,qBAAuB7vV,EAAclwC,QAAO,SAAA+0V,GAAO,OAACA,EAAIZ,kBAAoB,IAAgBqiB,MAAQzhB,EAAI1vT,gBAAkB,IAAcq0U,gBACxIj9V,MAAMlhB,EAAO2jJ,gBAAd,OACF/jJ,KAAK+jJ,eAAiB3jJ,EAAO2jJ,eAC7B,EAAA/jJ,KAAa,GAAMA,KAAKm8E,Y,OAAxB,EAAK3+D,MAAQ,S,wBAEfxd,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAKhB,YAAAq/E,QAAd,W,qBAAyBngF,GAAO,W,kDACvB,SAAMgE,KAAK8zX,oBAAoBx3W,QAAQtc,KAAK+jJ,iB,OAAnD,MAAO,CAAP,EAAO,kBAGK,YAAAo8O,iBAAd,W,qBAAkCnkY,GAAO,W,kDAChC,SAAMgE,KAAKsuV,0BAA0B/wU,U,OAA5C,MAAO,CAAP,EAAO,kBAGT,sBAAI,sBAAO,C,IAAX,WACE,OAAQvd,KAAK8zX,oBAAoB12W,OAAO7C,c,gCAG7B,YAAA6gG,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAGzC,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACL34M,KAAK+jJ,eACA,GAAM/jJ,KAAK0c,OAAOwpU,IADvB,MADF,M,OAEA,MAAO,CAAP,EAAO,U,OAEA,SAAMlmV,KAAKf,OAAOinV,I,OAAzB,MAAO,CAAP,EAAO,U,2BAIZj6U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAX5B,MAAO,CAAP,EAAO,kBAeK,YAAAmC,OAAd,SAAqBinV,G,qBAAuBlqV,GAAO,W,6DAC1C,SAAMgE,KAAK8zX,oBAAoB70X,OAAOe,KAAKwd,OAC/Cra,MAAK,SAAO4M,GAAoB,qC,yDAC/B/P,KAAK8iJ,aAAaxiJ,QAAQ,6BACtB4lV,EACElmV,KAAKwd,MAAM+mX,4BAA8B,IAA2B7G,OAApE,MACK,GAAM19X,KAAK8F,OAAOyI,OAAOhG,SAAS,gBAAgBwH,EAAOwM,GAAE,UAFlE,M,OAEA,MAAO,CAAP,EAAO,U,cAEAvc,KAAKwd,MAAM+mX,4BAA8B,IAA2BC,UAApE,MACA,GAAMxkY,KAAK8F,OAAOyI,OAAOhG,SAAS,gBAAgBwH,EAAOwM,GAAE,gB,OAAlE,MAAO,CAAP,EAAO,U,cAEAvc,KAAKwd,MAAM+mX,4BAA8B,IAA2BM,WAApE,OACP7kY,KAAK8iJ,aAAa3iJ,KAAK,4B,cAIhB,SAAMH,KAAK8F,OAAOkD,gBAAgB,kB,OAAzC,MAAO,CAAP,EAAO,U,2BAKZiD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OArB5B,MAAO,CAAP,EAAO,kBAyBK,YAAA4f,OAAd,SAAqBwpU,G,qBAAuBlqV,GAAO,W,6DAC1C,SAAMgE,KAAK8zX,oBAAoBp3W,OAAO1c,KAAKwd,OAC/Cra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6BAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,kB,OAAzC,MAAO,CAAP,EAAO,U,2BAGViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,kBAjHEgoY,EAAgB,GAD5B,uB,uBAcyB,mB,OAAA,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAChB,mBADgB,OAChB,IAAnB,UAAmB,SACY,mBADZ,OACY,IAAzB,UAAyB,YAjBnDA,GAAb,I,uFChBAppY,EAAOD,QAAU,goK,mmECajB,aAwBE,WACUqK,EACAo+U,EACA4vC,EACAhxO,GAJV,WACU,KAAAh9I,SACA,KAAAo+U,gBACA,KAAA4vC,sBACA,KAAAhxO,eAzBF,KAAA1iJ,OAAc,GAId,KAAAkd,WAAoC,IAAI,wBAGxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,+DAK1B,OAJPgE,KAAKC,OAAO0zC,MAAM,cACd9J,EAAS7pC,KAAKsd,WAAWusB,OAAOylT,MACpC3mL,eAAentF,QAAQ,yBAAoC,MAAV3xC,EAAiB,GAAKA,GAEhE,GAAM7pC,KAAK8zX,oBAAoBhgX,KAAK9T,KAAKsd,YAC7Cna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAgBPkD,KAAKC,OAAS,aAAWC,UAAU,oB,YAyFvC,OAtFgB,YAAA0Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACpEgE,KAAKsd,WAAWusB,OAAOylT,MAAQ3mL,eAAexsF,QAAQ,0BACtDn8E,KAAKI,OAASA,E,WAGF,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,yDACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKC,OAAO0zC,MAAM,sBAAuB3zC,KAAKI,OAAO6d,WACrDje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE9Bje,KAAK8zX,oBAAoB12W,OAAO87B,iBAAmBl5C,KAAKie,UAEjD,GAAMje,KAAKukV,a,OAAlB,MAAO,CAAP,EAAO,U,yBAKG,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAAtzT,OAAd,SAAqBtc,G,qBAAqBxE,GAAO,W,6DACxC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK9C,OACXg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MAEK,GAAMj5C,KAAK8zX,oBAAoBh3W,OAAOtc,EAAK+b,IAC/CpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ7Q,EAAK+b,GAAGyC,YACrG,EAAK1B,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAK3hM,aAAaxiJ,QAAQ,iCAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,U,mCANX,MAAO,CAAP,EAAO,kBAoBK,YAAAy5W,aAAd,W,qBAA+Bv6W,GAAO,W,kDAEpC,OADAgE,KAAKsd,WAAWusB,OAAOylT,MAAQtvV,KAAKsd,WAAWusB,OAAO8wO,UAAY36Q,KAAKsd,WAAWusB,OAAO+wO,QAAU,KACnG,GAAM56Q,KAAKukV,Y,cAAX,S,YAGY,YAAAwgD,qBAAd,W,qBAAsC/oY,GAAO,W,6DACpC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAKsd,WAAWoiU,UAAU9kV,SAChC89J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MAEK,GAAMj5C,KAAK8zX,oBAAoBvpT,sBAAsBvqE,KAAKsd,YAC9Dna,MAAK,WAEJ,OADA,EAAK2/I,aAAaxiJ,QAAQ,8CACnB,M,OAHX,MAAO,CAAP,EAAO,U,mCANX,MAAO,CAAP,EAAO,kBAeK,YAAAmqE,aAAd,SAA2BluD,G,qBAAavgB,GAAO,W,wDAE3C,O,sBAAA,GAAMgE,KAAK8zX,oBAAoBrpT,aAAaluD,I,OAE5C,OAFA,SACAvc,KAAK8iJ,aAAaxiJ,QAAQ,wCACnB,CAAP,GAAO,G,yBAGPN,KAAK8iJ,aAAahmJ,MAAM,G,+BApHjBkoY,EAAgB,GAD5B,uB,uBA0ByB,mB,OAAA,IAAN,oBAAM,SACc,mBADd,OACc,IAAb,kCAAa,SACY,mBADZ,OACY,IAAnB,UAAmB,SACd,mBADc,OACd,IAAZ,UAAY,YA5BzBA,GAAb,I,srBCFA,aAKE,WACUjlY,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAGRpsN,KAAKC,OAAS,aAAWC,UAAW,+B,QAoBxC,OAjBS,YAAA+V,gBAAP,SAAyBzT,EAA6BsD,GACpD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAK,CACV,CACEjC,MAAO,GACPpI,SAAU,sBACVoD,KAAM,iBAGR,CACEgF,MAAO,+BACPpI,SAAU,8BACVoD,KAAM,gCAzBDunY,EAA2B,GADvC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,iFCXAvpY,EAAOD,QAAU,+G,sECAjBC,EAAOD,QAAU,8qN,08DCSjB,aAQE,WACU6lD,EACAwhG,EACA4iM,GAFA,KAAApkS,mBACA,KAAAwhG,eACA,KAAA4iM,8BANF,KAAAloU,MAAiB,IAAI,IAS3Bxd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,0B,UAoCvC,OAjCS,YAAAylV,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,eAAepyK,YAAY,2DAA2DwkD,WAC7Fn+K,GAAGrtC,KAAKwd,QAGA,YAAA5E,SAAb,SAAsB4E,G,qBAAiBxhB,GAAO,W,kCAC5CgE,KAAKwd,MAAQA,EACbxd,KAAK2lV,2B,WAGM,YAAAvqO,OAAb,W,qBAAuBp/G,GAAO,W,6DAGrB,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MAEF,GAAM34M,KAAK08D,QAFhB,M,OAEF,MAAO,CAAP,EAAO,U,2BAIVzwD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,kBAaK,YAAA4/D,KAAd,W,qBAAsB1gE,GAAO,W,kDAEpB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAlDEs/T,EAAsB,GADlC,uB,uBAU6C,mB,OAAA,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,YAXvDA,GAAb,K,+FCTAxpY,EAAOD,QAAU,6tC,omECajB,aAYE,WACU0pY,EACAriP,EACAzoI,EACA6pU,EACAnkV,GALV,WACU,KAAAolY,iBACA,KAAAriP,eACA,KAAAzoI,KACA,KAAA6pU,gBACA,KAAAnkV,OAVF,KAAAud,WAAoC,IAAI,wBAGxC,KAAAy3I,cAA8B,GAoB9B,KAAAi4F,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAKmlY,eAAerxX,KAAK9T,KAAKsd,WAAYtd,KAAK61J,OAAOt5I,IAChEpZ,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAZPkD,KAAKC,OAAS,aAAWC,UAAU,qBAGnCF,KAAK+0J,cAAc75J,KAAK8E,KAAKqa,GAAGtF,UAAU,IAA0B/U,KAAKukV,SAASplV,KAAKa,Q,gBAuE3F,OApES,YAAA0lE,OAAP,WACE1lE,KAAK+0J,cAAc5tJ,SAAQ,SAAAD,GAAK,OAAAA,EAAEykG,cAoBtB,YAAA7uF,OAAd,SAAqBP,EAAY7e,G,qBAAe1B,GAAO,W,6DAC9C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAKD,KAAKM,GAAG,kDAAoD,IAAM3C,IAE7Eg7J,YAAW,SAAOj9I,GAA2B,qC,oEACvCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKmlY,eAAeroX,OAAOP,GACrCpZ,MAAK,WAEJ,EAAK2/I,aAAaxiJ,QAAQ,8BAC1B,EAAKikV,cAGNt4U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAR5B,MAAO,CAAP,EAAO,U,mCANb,MAAO,CAAP,EAAO,kBAoBK,YAAAqC,KAAd,W,qBAAsBnD,GAAO,W,yDAEvBgE,KAAK61J,QAEP71J,KAAKmlY,eAAe/nX,OAAO87B,iBAAmBl5C,KAAK61J,OAAO53I,UAEnD,GAAMje,KAAKukV,aAJhB,M,OAIF,MAAO,CAAP,EAAO,U,yBAIG,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAtFT,GADC,W,gBACqB,mB,OAAA,IAAN,UAAM,W,6BALXg1D,EAAiB,GAD7B,uB,uBAcyC,mB,OAAA,IAAd,UAAc,SACJ,mBADI,OACJ,IAAZ,UAAY,SACP,mBADO,OACP,IAAf,sCAAe,SACS,mBADT,OACS,IAAb,kCAAa,SAClB,mBADkB,OAClB,IAAJ,gBAAI,YAjBTA,GAAb,I,yFCbA1pY,EAAOD,QAAU,6xC,49DCWjB,aAUE,WAAoB6lD,EACVsZ,EACA+yS,EACA7qN,EACAioK,GAJU,KAAAzpQ,mBACV,KAAAsZ,QACA,KAAA+yS,2BACA,KAAA7qN,eACA,KAAAioK,qBAbF,KAAA51G,qBAAiC,GACjC,KAAAi+C,mBAA0C,GAI1C,KAAA67H,eAA2B,GAC3B,KAAA7E,eAA2B,GAQjCpqX,KAAKC,OAAS,aAAWC,UAAU,0BACnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MACxB7Q,KAAKoqX,eAAiB,CAAC,kB,cAwC3B,OArCS,YAAAxxW,SAAP,SAAgBu8L,GACdn1M,KAAKC,OAAO0zC,MAAM,0BAClB3zC,KAAKm1M,qBAAuBA,GAGtB,YAAA65K,kBAAR,sBACEhvX,KAAKivX,eAAiB,GACtBjvX,KAAKm1M,qBAAqBhuM,SAAQ,SAAAijB,GAChC,IAAIi7W,EAAqB,EAAKjyI,mBAAmBptP,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,KAAO6N,UACzCxsB,IAAvBynY,GACF,EAAKpW,eAAe/zX,KAAKmqY,EAAmB/2B,oBAMrC,YAAAnvW,KAAb,W,qBAAqBnD,GAAO,W,+DAC1BgE,KAAKC,OAAO0zC,MAAM,gCAClB3zC,KAAKie,UAAYje,KAAK6Q,MAAM0kJ,eAAeh5I,GAEtC+E,MAAMthB,KAAKie,WAAZ,YACFje,KAAK2tW,yBAAyBvwV,OAAO87B,iBAAmBl5C,KAAKie,U,iBAE3C,O,sBAAA,GAAMje,KAAK+qT,mBAAmBxoQ,gBAAgBviD,KAAKie,Y,OAMzC,OANrB7V,EAAW,SAChBpI,KAAKwqC,cAAgBpiC,EAAS6lW,yBAEJ,GAAtBjuW,KAAKwqC,gBACPxqC,KAAKwqC,cAAgB,IAAmB,aAE1C,EAAAxqC,KAA0B,GAAMA,KAAK2tW,yBAAyBpwV,OAAOvd,KAAKwqC,gB,cAA1E,EAAK4oN,mBAAqB,SAC1BpzP,KAAKgvX,oB,+BAELhvX,KAAK8iJ,aAAahmJ,MAAM,G,+BApDnB8kX,EAAsB,GADlC,uB,uBAWuD,mB,OAAA,IAAhB,wCAAgB,SACzB,mBADyB,OACzB,IAAZ,UAAY,SAC+B,mBAD/B,OAC+B,IAAxB,UAAwB,SACxB,mBADwB,OACxB,IAAZ,UAAY,SACY,mBADZ,OACY,IAAlB,UAAkB,YAdrCA,GAAb,I,mGCXAlmX,EAAOD,QAAU,ktD,q6DCQjB,aAME,WAAoB6lD,EACV6yU,GADU,KAAA7yU,mBACV,KAAA6yU,+BAHF,KAAA/gI,mBAA0C,G,QAqBpD,OAfe,YAAAx6O,SAAb,SAAsB4kE,G,gGACC,iBAAVA,EAAP,MACF,GAAMx9E,KAAKslY,2BAA2B9nT,I,cAAtC,S,aAEAx9E,KAAKozP,mBAAqB51K,E,wBAE5Bx9E,KAAKC,OAAS,aAAWC,UAAU,6B,YAGvB,YAAAolY,2BAAd,SAAyCnN,G,gGACV,OAA7B,EAAAn4X,KAA6B,GAAMA,KAAKm0X,6BAA6Bx9N,yBAAyBwhO,I,cAA9F,EAAKA,sBAAwB,SACzBn4X,KAAKm4X,sBAAsBQ,WAAWvlI,mBAAmBx4P,OAAS,IACpEoF,KAAKozP,mBAAqBpzP,KAAKm4X,sBAAsBQ,WAAWvlI,oB,YAtBzDmyI,EAAwB,GADpC,uB,uBAOuD,mB,OAAA,IAAhB,wCAAgB,SACc,mBADd,OACc,IAA5B,UAA4B,YAPzDA,GAAb,K,mGCRA7pY,EAAOD,QAAU,wyB,o7DCYjB,aASE,WACU6lD,EACA6yU,GADA,KAAA7yU,mBACA,KAAA6yU,+BANF,KAAAvB,UAAoB,EACpB,KAAA3lT,MAA4B,GAE5B,KAAAwoT,QAAkB,E,QAmF5B,OA5Ee,YAAA78W,SAAb,SAAsB4kE,G,iGACpBx9E,KAAKC,OAAS,aAAWC,UAAU,kCACnCF,KAAK+uX,OAASvxS,EAAMuxS,OACpB/uX,KAAKkzX,iBAAmB11S,EAAM01S,iBAC9BlzX,KAAKitE,MAAQjtE,KAAK+uX,OAAOvtO,aACrBhkE,EAAMi4S,aAA2B73X,IAAjB4/E,EAAMi4S,UACxBz1X,KAAKy1X,QAAS,GAGZz1X,KAAKitE,MAAMryE,OAAS,EACtB,GAAMoF,KAAKslY,2BAA2B9nT,EAAM01S,iBAAiBvpT,0BAD3D,M,OACF,S,wBAGE3pE,KAAKkzX,iBAAiBC,YACxBnzX,KAAKgzX,cAELhzX,KAAKgzX,YAAYhzX,KAAKkzX,iBAAiBzzB,Q,YAI7B,YAAA6lC,2BAAd,SAAyC37T,G,uGACV,OAA7B,EAAA3pE,KAA6B,GAAMA,KAAKm0X,6BAA6Bx9N,yBAAyBhtF,I,cAA9F,EAAKwuT,sBAAwB,SACzBn4X,KAAKm4X,sBAAsBQ,WAAWvlI,mBAAmBx4P,OAAS,GACpEoF,KAAKm4X,sBAAsBQ,WAAWvlI,mBAAmBjsP,SAAQ,SAACisP,GAChE,IAAMoyI,EAAwC,CAC5C3S,SAAU9uU,OAAO,EAAKgrU,OAAOvtO,YAAY5mJ,QACzC6qY,oBAAqBryI,EAAmB72O,GACxCsmW,kBAAmBzvH,EACnBqsG,OAAQ,EACR0zB,aAAa,GAEf,EAAKpE,OAAOvtO,YAAYtmJ,KAAKsqY,GAC7B,EAAKzW,OAAO1tO,cAAcnmJ,KAAKk4P,EAAmB72O,O,YAK1C,YAAAy2W,YAAd,SAA0B0S,G,qBAAqB1pY,GAAO,W,iDAChD0pY,GACA1lY,KAAK+uX,OAAOvtO,YAAYr6I,SAAQ,SAACw+X,GAC7BA,EAAiBlmC,OAASimC,KAIlC1lY,KAAK4yX,UAAY5yX,KAAK+uX,OAAOvtO,YAAYj8F,QAAO,SAACutU,EAAK6S,GAAqB,OAAA7S,EAAM/uU,OAAO4hV,EAAiBlmC,UAAS,IAInG,KAFT91V,EAAQ3J,KAAK+uX,OAAOztO,YAAY4xB,WAAU,SAAAhsK,GAAK,OAAAA,EAAEukD,eAAiB,EAAKynU,iBAAiBznU,cAAgBvkD,EAAEyiE,0BAA4B,EAAKupT,iBAAiBvpT,8BAG9J3pE,KAAK+uX,OAAOztO,YAAY33I,GAAO81V,OAASz/V,KAAK4yX,UAC7C5yX,KAAK+uX,OAAOztO,YAAY33I,GAAOwpX,YAAcnzX,KAAK4yX,UAAY,GAE9D5yX,KAAKy1X,SAE8B,KAD/BmQ,EAA8B5lY,KAAK+uX,OAAOxtO,kBAAkB2xB,WAAU,SAAAhsK,GAAI,OAAAA,EAAEkuC,YAAY4jT,iBAAmB,IAAgBif,kBAEzHj4W,KAAK+uX,OAAOxtO,kBAAkBqkP,GAA6BnmC,OAASz/V,KAAK4yX,UACzE5yX,KAAK+uX,OAAOxtO,kBAAkBqkP,GAA6BzS,YAAcnzX,KAAK4yX,UAAY,G,WAKzF,YAAA1D,gBAAb,SAA6ByW,G,qBAAqC3pY,GAAO,W,wCACvEgE,KAAKC,OAAO0zC,MAAM,mBACdhqC,EAAQ3J,KAAK+uX,OAAOvtO,YAAY0xB,WAAU,SAAAhsK,GAAK,OAAAA,EAAEu+X,qBAAuBE,EAAiBF,uBAExFE,EAAiBxS,YAIpBwS,EAAiBxS,aAAc,GAH/BwS,EAAiBxS,aAAc,EAC/BwS,EAAiBlmC,OAAS,GAK5Bz/V,KAAK+uX,OAAOvtO,YAAY73I,GAASg8X,EACjC3lY,KAAKgzX,c,WAxFI6S,EAA8B,GAD1C,uB,uBAW6C,mB,OAAA,IAAhB,wCAAgB,SACwB,mBADxB,OACwB,IAA5B,UAA4B,YAXzDA,GAAb,K,0GCZAnqY,EAAOD,QAAU,2kD,k9DCUjB,aAaE,WACUm/D,EACA+yS,EACA7qN,EACAioK,GAHA,KAAAnwP,QACA,KAAA+yS,2BACA,KAAA7qN,eACA,KAAAioK,qBAVF,KAAA33D,mBAA0C,GAI1C,KAAAj+C,qBAAiC,GAQvCn1M,KAAKC,OAAS,aAAWC,UAAU,gCAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,YAyB5B,OAtBe,YAAA1R,KAAb,W,qBAAqBnD,GAAO,W,+DAC1BgE,KAAKC,OAAO0zC,MAAM,gCAClB3zC,KAAKie,UAAYje,KAAK6Q,MAAM0kJ,eAAeh5I,GAEtC+E,MAAMthB,KAAKie,WAAZ,YAEFje,KAAK2tW,yBAAyBvwV,OAAO87B,iBAAmBl5C,KAAKie,U,iBAG5C,O,sBAAA,GAAMje,KAAK+qT,mBAAmBxoQ,gBAAgBviD,KAAKie,Y,OAKxC,OALtB7V,EAAW,SACfpI,KAAKwqC,cAAgBpiC,EAAS6lW,yBAEJ,GAAtBjuW,KAAKwqC,gBACPxqC,KAAKwqC,cAAgB,IAAmB,aAC1C,EAAAxqC,KAA0B,GAAMA,KAAK2tW,yBAAyBpwV,OAAOvd,KAAKwqC,gB,cAA1E,EAAK4oN,mBAAqB,S,+BAG1BpzP,KAAK8iJ,aAAahmJ,MAAM,G,+BA9B9B,GADC,mBAAS,CAAE+6S,mBAAoB,cAAY3mB,S,mEAVjC40G,EAA4B,GADxC,uB,uBAe8B,mB,OAAA,IAAZ,UAAY,SAC+B,mBAD/B,OAC+B,IAAxB,UAAwB,SACxB,mBADwB,OACxB,IAAZ,UAAY,SACY,mBADZ,OACY,IAAlB,UAAkB,YAjBrCA,GAAb,I,uGCVApqY,EAAOD,QAAU,0gB,ilECejB,aAWE,WACUm/D,EACAspR,EACAphM,EACAugP,EACAhpX,GAJA,KAAAugD,QACA,KAAAspR,gBACA,KAAAphM,eACA,KAAAugP,+BACA,KAAAhpX,KAGRra,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MAExB7Q,KAAKC,OAAS,aAAWC,UAAU,gB,kBA0BvC,OAvBgB,YAAAmuO,KAAd,W,qBAAsBryO,GAAO,W,6DACpB,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAK0jY,kBACXhrO,YAAW,SAAOj9I,GAA2B,qC,yDACzCA,EAASw9B,aAAV,MAEF,GAAMj5C,KAAKqjY,6BAA6B3mX,OAAO1c,KAAK0jY,kB,OAApD,SAGA1jY,KAAKqa,GAAGb,QAAQ,IAAI,KAGpBxZ,KAAKqa,GAAGb,QAAQ,IAAI,KAEpBxZ,KAAK8iJ,aAAaxiJ,QAAQ,6B,qCAG3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAlB5B,MAAO,CAAP,EAAO,kBArBT,GADC,qB,gBACoB,mB,OAAA,IAAN,UAAM,W,6BAGrB,GADC,mBAAS,CAAE+6S,mBAAoB,cAAY3mB,S,gBACL,mB,OAAA,IAAf,UAAe,W,sCAP5B60G,EAAqB,GADjC,uB,uBAa8B,mB,OAAA,IAAZ,UAAY,SACS,mBADT,OACS,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACgC,mBADhC,OACgC,IAA5B,UAA4B,SACvC,mBADuC,OACvC,IAAf,sCAAe,YAhBlBA,GAAb,I,mGCfArqY,EAAOD,QAAU,6mE,6+DCuBjB,aAoBE,WAEU6lD,EACAglS,EACAuN,EACA/wM,EACA4iM,EACA29C,GALA,KAAA/hV,mBACA,KAAAglS,iBACA,KAAAuN,iCACA,KAAA/wM,eACA,KAAA4iM,8BACA,KAAA29C,+BAxBF,KAAA7lX,MAAyB,IAAI,IAM7B,KAAAspU,UAA2B,GAC3B,KAAA+G,QAA0B,GAC1B,KAAAC,OAAyB,GACzB,KAAAk4C,YAA6B,GAC7B,KAAAx+B,0BAAuD,GAGvD,KAAAy+B,OAAiB,EAcvBjmY,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,yB,gBA6GvC,OA1GS,YAAAylV,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BAEjB,kBACGi5U,OAAO,SAASpyK,YAAY,8CAA8CwkD,WAC1E4tH,OAAO,YAAYpyK,YAAY,kDAAkDwkD,WACjF4tH,OAAO,aAAapyK,YAAY,4BAA4BwkD,WAC5D4tH,OAAO,YAAYpyK,YAAY,0BAA0BwkD,WACzD4tH,OAAO,UAAUpyK,YAAY,yBAAyBwkD,WACtD4tH,OAAO,oBAAoBpyK,YAAY,yDAAyDwkD,WAChG4tH,OAAO,gBAAgBpyK,YAAY,mDAAmDwkD,WACtFn+K,GAAGrtC,KAAKwd,QAGA,YAAA5E,SAAb,SAAsB4E,G,qBAAyBxhB,GAAO,W,kCAKpDgE,KAAKkmY,UAAY1oX,E,WAIN,YAAAre,KAAb,W,qBAAqBnD,GAAO,W,kEAGP,O,sBAAjB,EAAAgE,KAAiB,GAAMA,KAAKsmV,eAAe9lL,iB,OAExB,OAFnB,EAAKsmL,UAAY,SAEjB,EAAA9mV,KAAmB,GAAMA,KAAKsmV,eAAezlL,oB,OAEZ,OAFjC,EAAKmlO,YAAc,SAEnB,EAAAhmY,KAAiC,GAAMA,KAAK6zV,+BAA+Bt2U,U,OAM5D,OANf,EAAKiqV,0BAA4B,SAIjCxnW,KAAKwd,MAAQxd,KAAKkmY,UAElB,EAAAlmY,KAAe,GAAMA,KAAKsmV,eAAe7lL,sBAAsBzgK,KAAKwd,MAAMgtS,Y,OAE5D,OAFd,EAAKqjC,QAAU,SAEf,EAAA7tV,KAAc,GAAMA,KAAKsmV,eAAe3lL,oBAAoB3gK,KAAKwd,MAAMuwU,W,cAAvE,EAAKD,OAAS,SAEd9tV,KAAK2lV,2B,+BAIL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAIf,YAAAs+G,OAAb,W,qBAAuBp/G,GAAO,W,oEACvBgE,KAAKmmY,WAAWnmY,KAAKwd,MAAM4oX,UAA5B,OACFpmY,KAAK8iJ,aAAaviJ,QAAQ,uD,cAInB,SAAMP,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,U,yBASE,YAAAA,KAAb,W,qBAAqB1gE,GAAO,W,kDACnB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAGI,YAAAygU,yBAAb,SAAsC77E,G,qBAAoBxuT,GAAO,W,wDAMhD,OALfgE,KAAKwd,MAAMuwU,SAAW,KACtB/tV,KAAKwd,MAAM0wU,OAAS,KACpBluV,KAAKwd,MAAM4jV,iBAAmB,KAG9B,EAAAphW,KAAe,GAAMA,KAAKsmV,eAAe7lL,sBAAsB+pJ,I,cAA/D,EAAKqjC,QAAU,S,YAGJ,YAAAM,WAAb,SAAwBJ,G,qBAAmB/xV,GAAO,W,wDAGlC,OAFdgE,KAAKwd,MAAM0wU,OAAS,KAEpB,EAAAluV,KAAc,GAAMA,KAAKsmV,eAAe3lL,oBAAoBotL,I,cAA5D,EAAKD,OAAS,S,YAGT,YAAAq4C,WAAP,SAAkBC,GAChB,IAAIr2X,GAAkB,EAEtB,GAA2B,MAAvB/P,KAAKwd,MAAM4oX,SAAkB,CAE/B,IAAI,EAAW,IAAI/sX,KAAKrZ,KAAKwd,MAAM4oX,UAE/BE,EAAM,YAAa,GAGnBA,EAAMtmY,KAAKimY,OAEbjmY,KAAKC,OAAO0zC,MAAM,gBAAiB2yV,GAInCv2X,GAAS,EAKb,OAAOA,GA3IEw2X,EAA0B,GADtC,uB,uBAuB6C,mB,OAAA,IAAhB,wCAAgB,SACJ,mBADI,OACJ,IAAd,UAAc,SACgC,mBADhC,OACgC,IAA9B,UAA8B,SACpC,mBADoC,OACpC,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACE,mBADF,OACE,IAA5B,UAA4B,YA3BzDA,GAAb,K,oGCvBA7qY,EAAOD,QAAU,wrH,w7DCQjB,aAIE,WACU6lD,EACAklV,EACA1jP,GAFA,KAAAxhG,mBACA,KAAAklV,sBACA,KAAA1jP,eAER9iJ,KAAKC,OAAS,aAAWC,UAAU,kC,UAWvC,OARe,YAAA0Y,SAAb,SAAsB6tX,G,qBAAgBzqY,GAAO,W,0DAC3CgE,KAAKC,OAAO0zC,MAAM,WAAY8yV,G,iBAEf,O,sBAAb,EAAAzmY,KAAa,GAAMA,KAAKwmY,oBAAoBlqX,QAAQmqX,I,cAApD,EAAKjpX,MAAQ,S,+BAEbxd,KAAK8iJ,aAAahmJ,MAAM,G,+BAjBjB4pY,EAA8B,GAD1C,uB,uBAM6C,mB,OAAA,IAAhB,wCAAgB,SACM,mBADN,OACM,IAAnB,UAAmB,SACd,mBADc,OACd,IAAZ,UAAY,YAPzBA,GAAb,K,8GCRAhrY,EAAOD,QAAU,u1D,qmECYjB,aAWE,WACU+yX,EACA1rO,EACAohM,EACAsiD,GAJV,WACU,KAAAhY,gBACA,KAAA1rO,eACA,KAAAohM,gBACA,KAAAsiD,sBAVF,KAAApmY,OAAc,GACf,KAAAod,MAAsB,IAAI,IAEzB,KAAAF,WAAoC,IAAI,wBAwCxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAKwmY,oBAAoB1yX,KAAK9T,KAAK61J,OAAOhrF,MAAO7qE,KAAKsd,YAChEna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAjCPkD,KAAKC,OAAS,aAAWC,UAAU,0B,cAqEvC,O,EAtFaymY,EAoBE,YAAA/tX,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,+DAEpCslB,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKie,WAAa7d,EAAO6d,UACzBje,KAAKwuX,cAAcpxW,OAAO87B,iBAAmBl5C,KAAKie,UAE7CqD,MAAMlhB,EAAOgrD,UAAd,OACFprD,KAAKorD,SAAWhrD,EAAOgrD,SACvB,EAAAprD,KAAc,GAAMA,KAAK6iY,e,OAAzB,EAAKhtO,OAAS,SACd71J,KAAK4mY,sBACL5mY,KAAKukV,W,mCAKH,YAAAqiD,oBAAR,WACA,IAAMt2T,EAAM,IAAIj3D,KACVisC,EAAQ,IAAIjsC,KAClBisC,EAAM6sF,QAAQ7hE,EAAI37C,WAAa,EAAuBkyW,eAAiB,IACvEv2T,EAAI6hE,QAAQ7hE,EAAI37C,UAAY,GAC5B30B,KAAKsd,WAAWusB,OAAO8wO,UAAYr1N,EACnCtlD,KAAKsd,WAAWusB,OAAO+wO,QAAUtqM,GAGnB,YAAAuyT,UAAd,W,qBAA2B7mY,GAAO,W,2BAChC,MAAO,CAAP,EAAOgE,KAAKwuX,cAAclyW,QAAQtc,KAAKorD,kBAc3B,YAAAm5R,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGD,YAAAmmC,aAAR,WACEv2W,KAAK4mY,uBAGO,YAAAE,oBAAd,SAAkCL,G,qBAAgBzqY,GAAO,W,6DAChD,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOipX,IACN/tO,YAAW,SAAOj9I,GAA2B,gE,2BAHhD,MAAO,CAAP,EAAO,kBAzEe,EAAAorX,eAAiB,EAP9BF,EAAsB,KADlC,uB,uBAauC,mB,OAAA,IAAb,UAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,SACY,mBADZ,OACY,IAAnB,UAAmB,YAfvCA,GAAb,I,uGCZAjrY,EAAOD,QAAU,49I,2tECsCjB,aA2CE,WACUqK,EACAw7C,EACAgtS,EACA1zR,EACAspR,EACAphM,EACA4iM,EACAg0B,EACAtD,EACA/pB,EACAwO,EACAC,GAXA,KAAAh1V,SACA,KAAAw7C,mBACA,KAAAgtS,4BACA,KAAA1zR,QACA,KAAAspR,gBACA,KAAAphM,eACA,KAAA4iM,8BACA,KAAAg0B,0BACA,KAAAtD,wBACA,KAAA/pB,kBACA,KAAAwO,kBACA,KAAAC,uBAhDF,KAAA+/B,kBAA4B,GAS5B,KAAA9lV,cAAmC,GACnC,KAAA+lV,kBAAuC,GACvC,KAAA5jB,oBAA8B,EAC9B,KAAAl9F,WAAqB,EACrB,KAAAshH,kBAA4B,EAC5B,KAAAgE,sBAAgC,EAChC,KAAAvQ,OAAiB,IAAI,IACrB,KAAA+H,eAAiC,IAAI,IACrC,KAAAiE,sBAAwB,CAC9BC,IAAK,EACLC,IAAK,EACLlmV,cAAe,GACfmmV,gBAAgB,EAChBC,kBAAkB,EAClBC,YAAY,GAEN,KAAA59W,MAAoB,IAAI,IAExB,KAAAo9W,eAAmE,GACnE,KAAA1gB,iBAA2B,EAG3B,KAAA6sB,iBAA2B,EAG3B,KAAAxL,cAAwB,EACxB,KAAAhhC,mBAA6B,IAAU2T,QAgB7CluW,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,oCAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,4BAguB5B,OA7tBS,YAAA80U,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,cAAcpyK,YAAY,2CAA2CwkD,WAE5En+K,GAAGrtC,KAAKwd,OAEX,kBACG47T,OAAO,oBAAoBpyK,YAAY,mDAAmDwkD,WAC1F4tH,OAAO,YAAYpyK,YAAY,kDAAkDwkD,WACjF4tH,OAAO,uBAAuBpyK,YAAY,gEAAgE4wK,SAAS,GACnHwB,OAAO,cAAcpyK,YAAY,uDAAuDwkD,WACxF4tH,OAAO,UAAUpyK,YAAY,mDAAmDwkD,WAChF4tH,OAAO,kBAAkBpyK,YAAY,2DAA2DwkD,WAChG4tH,OAAO,eAAepyK,YAAY,wDAAwDwkD,WAAWmsH,SAAS,GAAGC,SAAS,KAC1HwB,OAAO,uBAAuBpyK,YAAY,8DAA8DwkD,WACxG4tH,OAAO,mBAAmBpyK,YAAY,0DAA0DwkD,WAChG4tH,OAAO,2BAA2BpyK,YAAY,kEAAkEwkD,WAChH4tH,OAAO,qBAAqBpyK,YAAY,4DAA4DwkD,WACpG4tH,OAAO,YAAYpyK,YAAY,qDAAqDwkD,WACpF4tH,OAAO,YAAYpyK,YAAY,qDAAqDwkD,WACpF4tH,OAAO,aAAapyK,YAAY,qDAAqDwkD,WAAWmsH,SAAS,GACzGyB,OAAO,qBAAqBpyK,YAAY,6DAA6DwkD,WAAWmsH,SAAS,GAAGC,SAAS,GACrIwB,OAAO,gBAAgBpyK,YAAY,wDAAwDwkD,WAAWmsH,SAAS,GAC/GyB,OAAO,kBAAkBpyK,YAAY,0DAA0DwkD,WAAWmsH,SAAS,GAAGC,SAAS,GAC/HwB,OAAO,eAAepyK,YAAY,wDAAwDwkD,WAAWmsH,SAAS,GAAGC,SAAS,KAC1HvqS,GAAGrtC,KAAK+uX,SAgBA,YAAAn2W,SAAb,SAAsB+/W,G,qBAAyB38X,GAAO,W,4DAY3B,OAVzBgE,KAAKC,OAAO0zC,MAAM,YAElB3zC,KAAKwd,MAAQm7W,EAEb34X,KAAKie,UAAYje,KAAKwd,MAAMS,UAG5Bje,KAAK05W,wBAAwBt8V,OAAO87B,iBAAmBl5C,KAAKie,UAC5Dje,KAAKo2W,sBAAsBh5V,OAAO87B,iBAAmBl5C,KAAKie,UAE1D,EAAAje,KAAyB,GAAMA,KAAKw7X,wB,OACb,OADvB,EAAKC,kBAAoB,SACzB,EAAAz7X,KAAuB,GAAMA,KAAK07X,sB,OAGZ,OAHtB,EAAKtF,gBAAkB,SAEvBp2X,KAAK2lV,2BACL,EAAA3lV,KAAsB,GAAMA,KAAKsuV,0BAA0B/wU,U,cAA3D,EAAKw3B,cAAiB,SAA+ClwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAEpxB,eAAiB,IAAcovT,QAAUh+R,EAAE09R,iBAAmB,IAAgBif,eACjKj4W,KAAK86X,kBAAoB96X,KAAK+0C,cAC9B/0C,KAAK27X,uBAAyB37X,KAAKy7X,kBACnCz7X,KAAK47X,aAAe57X,KAAKo2X,gB,YAmBb,YAAAj3X,KAAd,W,qBAAsBnD,GAAO,W,0DAIR,O,sBAAjB,EAAAgE,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,U,cAA5C,EAAKu9C,UAAY,SACjB96D,KAAKouW,kB,+BAGLpuW,KAAK8iJ,aAAahmJ,MAAM,G,+BAKrB,YAAAsxW,gBAAP,WAEE,GADApuW,KAAKC,OAAO0zC,MAAM,mBACd3zC,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAAe,CAC1C,IAAI,EAAgB11J,KAAK6Q,MAAM6kJ,cAActvG,QACzCmoT,EAAavuW,KAAK86D,UAAU90D,MAAK,SAAAwoW,GAAM,OAAAA,EAAGpoT,UAAY,KACtDmoT,IACFvuW,KAAKwd,MAAMwsB,WAAaukU,EAAWhyV,MAK3B,YAAAu7V,wBAAd,W,qBAAyC97W,GAAO,W,6DAEvC,OADPgE,KAAKC,OAAO0zC,MAAM,8BACX,GAAM3zC,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,yBACXyP,MAAOxd,KAAKwd,MAAM23L,uBACjBz8C,YAAW,SAAOj9I,GAA2B,qC,kCACzCA,EAASw9B,cACRj5C,KAAKk3W,oBAAgE,GAA1Cl3W,KAAKwd,MAAM23L,qBAAqBv6M,QAC7DoF,KAAK8iJ,aAAaviJ,QAAQ,yD,qBANhC,MAAO,CAAP,EAAO,kBAYK,YAAAi8X,kBAAd,W,4HAEEx8X,KAAKwd,MAAMusB,iBAAmB,KAC9B/pC,KAAKwd,MAAM68V,mBAAqB,KAC5BzU,EAAyC,GACzC62B,EAAkB,IAAI,IAC1Bz8X,KAAKwd,MAAM03L,eAAe/tM,SAAQ,SAAA4/D,GAChC01T,EAAkB,IAAI,IACtBA,EAAkB,EAAK1nV,cAAc/uC,MAAK,SAAAgvE,GAAM,OAAAA,EAAGysM,UAAY16M,EAAQ06M,YACvEmkF,EAAoB1qW,KAAKuhY,MAE3Bz8X,KAAKg6Q,WAAY,EACjBh6Q,KAAKk6W,iBAAkB,EAEnBl6W,KAAKwd,MAAM61O,8BAAgCrzP,KAAKwd,MAAM61O,6BAA6Bz4P,OAAS,IACxF,EAAyBgrW,EAC5B/gW,QAAO,SAAAy2D,GAAK,OAAK,MAALA,KACZ32D,KAAI,SAAA22D,GAAK,OAAAA,EAAE/+C,MACdvc,KAAKwd,MAAM61O,6BAA+BrzP,KAAKwd,MAAM61O,6BAClDxuP,QAAO,SAAA6M,GAAK,OAAqD,IAArD,EAAuBL,QAAQK,EAAE84B,kBAEhDxqC,KAAK46X,eAAiB56X,KAAK46X,eACxB/1X,QAAO,SAAA6M,GAAK,OAAqD,IAArD,EAAuBL,QAAQK,EAAE84B,qBAE9Co7T,EAAoBhrW,OAAS,GAA7B,YAKF,IAHM8hY,EAAa92B,EAAoB/gW,QAAO,SAAAmwE,GAAM,OAACA,EAAG8kR,aAClD6iC,EAAgBD,EAAW9hY,OAAS,EAAI8hY,EAAW/3X,KAAI,SAAAqwE,GAAM,OAAAA,EAAGq/R,eAAa9uT,QAAO,SAAC7zC,EAAGC,GAAM,OAAAD,EAAIC,KAAK,EACzGirX,EAAa,EACRliY,EAAI,EAAGA,EAAIsF,KAAK46X,eAAehgY,OAAQF,IAC9CkiY,GAAc58X,KAAK46X,eAAelgY,GAAG25W,aAAe,E,GAEtDr0W,KAAK+6X,sBAAwB,CAC3BC,IAAKp1B,EAAoBhrW,OACzBqgY,IAAK0B,EAAgBC,EACrB7nV,cAAe6wT,EAAoBhrW,OAAS,EAAIgrW,EAAoBjhW,KAAI,SAAAqwE,GAAM,OAAAA,EAAGt3E,QAAM6nD,QAAO,SAAC7zC,EAAGC,GAAM,OAAAD,EAAI,KAAOC,KAAK,GACxHupX,eAAgBt1B,EAAoBhrW,OAAS,GAAIgrW,EAAoB/mV,MAAK,SAAAm2D,GAAM,OAAAA,EAAGgkR,iBAAmB,IAAgBif,eACtHkjB,iBAAkBv1B,EAAoBhrW,OAAS,GAAIgrW,EAAoB/mV,MAAK,SAAAm2D,GAAM,OAAAA,EAAGukR,YAAc,IAAWG,iBAC9G0hC,WAAYx1B,EAAoBhrW,OAAS,GAAIgrW,EAAoB/mV,MAAK,SAAAm2D,GAAM,OAAAA,EAAG8kR,cAG7E95V,KAAK+6X,sBAAsBI,kBAC7Bn7X,KAAKk8X,uBAAuBt2B,GAGzB5lW,KAAK+6X,sBAAsBI,mBAC9Bn7X,KAAKs7X,kBAAmB,EACxBt7X,KAAKwd,MAAM+lI,eAAiB,IAG9BvjJ,KAAKm8X,8BAA8Bv2B,GAC/B5lW,KAAK+6X,sBAAsBG,gBAA+C,GAA7Bl7X,KAAK68X,uBACpD78X,KAAK83W,0BACL93W,KAAK68X,sBAAuB,GAEzB78X,KAAK+6X,sBAAsBG,iBAC9Bl7X,KAAK68X,sBAAuB,IAG1B78X,KAAK+6X,sBAAsBK,WAA3B,YACFp7X,KAAKk6W,iBAAkB,EACjB+E,EAAuBrZ,EAAoB/gW,QAAO,SAAAy2D,GAAK,OAAK,MAALA,GAAaA,EAAEw+R,a,WACnEp/V,G,+DACDwkX,EAAKD,EAAqBvkX,GACX,EAAK8iB,MAAM61O,8BAC9B,EAAK71O,MAAM61O,6BAA6Bx0O,MAAK,SAAAnN,GAAK,OAAAA,EAAE84B,gBAAkB00U,EAAG3iW,MAEvE,MACF,GAAM,EAAKk/V,gBAAgByD,EAAG3iW,GAAI2iW,EAAGxhX,O,OAArC,S,uCANKhD,EAAI,E,wBAAGA,EAAIukX,EAAqBrkX,O,KAAhCF,IAAsC,M,wCAAEA,I,gCAYnDsF,KAAK+6X,sBAAwB,CAC3BC,IAAK,EACLC,IAAK,EACLlmV,cAAe,GACfmmV,gBAAgB,EAChBC,kBAAkB,EAClBC,YAAY,GAEdp7X,KAAKwd,MAAM61O,6BAA+B,G,mCAIhC,YAAAwoI,cAAd,SAA4BjiC,G,uHAE1B55V,KAAKwd,MAAMusB,iBAAmB,KAC9B/pC,KAAKwd,MAAM03L,eAAiB,GAC5Bl1M,KAAKwd,MAAM+lI,eAAiB,KAC5BvjJ,KAAKwd,MAAM61O,6BAA+B,GAC1CrzP,KAAK46X,eAAiB,GAChBkB,EAAK97X,KAAKy7X,kBAAkB52X,QAAO,SAAAmwE,GAAM,OAAAA,EAAGz4D,KAAOq9U,KACzD55V,KAAKg6Q,WAAY,EACjBh6Q,KAAKk6W,iBAAkB,EAEnB4hB,EAAGlhY,QACCm6C,EAAgB+mV,EAAG,GAAG/mV,cACtBgnV,EAAqBD,EAAG,GAAG1mL,oCAAsC,GACjEgmL,EAAarmV,EAAcl2B,MAAK,SAAAm2D,GAAM,OAAAA,EAAG8kR,aACrC,GAAM95V,KAAKg8X,iBAAiBZ,EAAYW,EAAoBhnV,KAJpE,M,UAIEkmV,EAAM,UAENG,EAAA,Y,WACO1gY,G,iFACD4gE,EAAIvmB,EAAcr6C,IAClBo/V,UAAF,Y,MACIslB,EAAiB2c,EAAmBl3X,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkB8wB,EAAE/+C,OACzD3hB,OAAS,GAAxB,YAEF,IAAK,EAAL,EAAgB,EAAAwkX,EAAA,eAAL1tW,EAAC,MACNiwQ,EAAY,IAAI,KACVn3O,cAAgB8wB,EAAE/+C,GAC5BolQ,EAAU5jQ,gBAAkBrM,EAAEqM,gBAC9B4jQ,EAAUx2O,mBAAqBz5B,EAAEy5B,mBACjC,EAAK3tB,MAAM61O,6BAA6Bn4P,KAAKymR,G,mBAGpB,SAAM,EAAK2sE,0BAA0BrkM,4BAA4B3uF,EAAE/+C,K,OAE9F,IAFMm/V,EAAqB,SACrBM,EAAoBN,EAAmB72W,QAAO,SAAA1G,GAAK,OAACA,EAAE64G,cACvD,EAAL,EAAkB,EAAAglQ,EAAA,eAAPE,EAAG,MACRv6F,EAAY,IAAI,KACVn3O,cAAgB8wB,EAAE/+C,GAC5BolQ,EAAU5jQ,gBAAkBm+V,EAAI3/V,GAChColQ,EAAUx2O,mBAAqB+wU,EAAI/wU,mBACnC,EAAK3tB,MAAM61O,6BAA6Bn4P,KAAKymR,G,uCArB5CjnR,EAAI,E,wBAAGA,EAAIq6C,EAAcn6C,O,KAAzBF,IAA+B,M,wCAAEA,I,aA0B1CsF,KAAKk6W,iBAAkB,E,wBAGzBl6W,KAAK+6X,sBAAwB,CAC3BC,IAAKjmV,EAAcn6C,OACnBqgY,IAAKA,EACLlmV,cAAeA,EAAcn6C,OAAS,EAAIm6C,EAAcpwC,KAAI,SAAAqwE,GAAM,OAAAA,EAAGt3E,QAAM6nD,QAAO,SAAC7zC,EAAGC,GAAM,OAAAD,EAAI,KAAOC,KAAK,GAC5GupX,eAAgBnmV,EAAcn6C,OAAS,GAAIm6C,EAAcl2B,MAAK,SAAAm2D,GAAM,OAAAA,EAAGgkR,iBAAmB,IAAgBif,eAC1GkjB,iBAAkBpmV,EAAcn6C,OAAS,GAAIm6C,EAAcl2B,MAAK,SAAAm2D,GAAM,OAAAA,EAAGukR,YAAc,IAAWG,iBAClG0hC,WAAYrmV,EAAcn6C,OAAS,GAAIm6C,EAAcl2B,MAAK,SAAAm2D,GAAM,OAAAA,EAAG8kR,cAGrE95V,KAAKk8X,uBAAuBnnV,G,aAE5B/0C,KAAK+6X,sBAAwB,CAC3BC,IAAK,EACLC,IAAK,EACLlmV,cAAe,GACfmmV,gBAAgB,EAChBC,kBAAkB,EAClBC,YAAY,G,iBAKS,OADzBp7X,KAAKo8X,0BACoB,GAAMp8X,KAAK05W,wBAAwBp9V,QAAQs9U,I,OACpE,OADMyiC,EAAmB,SACzB,GAAMr8X,KAAKs8X,gCAAgCD,I,eAA3C,SACAr8X,KAAKgnY,mBAAmBptC,G,YAEZ,YAAA0iC,gCAAd,SAA8CD,G,iGAClBA,EAAiBtnV,cAAclwC,QAAO,SAAAqC,GAAK,OAAAA,EAAEqyV,aAAe,IAAWgb,kBAC3E35W,OAAS,EACZ,GAAMoF,KAAK05W,wBAAwBx3F,iCAAiCm6G,EAAiB9/W,KADpG,M,OAEF,OADiB,UAMfvc,KAAKu8X,WAAY,E,QAJjBv8X,KAAKu8X,WAAY,EACV,CAAP,EAAOv8X,KAAK8iJ,aAAaviJ,QAAQ,oF,OAMnCP,KAAKu8X,WAAY,E,mCAGP,YAAAyK,mBAAd,SAAiCptC,G,gGACP,OAAxB,EAAA55V,KAAwB,GAAMA,KAAK05W,wBAAwBz3F,eAAe23E,I,cAA1E,EAAKyiC,iBAAmB,SACEr8X,KAAKq8X,iBAAiBtnV,cAAclwC,QAAO,SAAAqC,GAAK,OAAAA,EAAEqyV,aAAe,IAAWgb,kBAChF35W,OAAS,GAAKoF,KAAKq8X,iBAAiBtkB,aAAe,GACvE/3W,KAAK+mY,iBAAkB,EACvB/mY,KAAK+3W,aAAe/3W,KAAKq8X,iBAAiBtkB,cAE1C/3W,KAAK+mY,iBAAkB,E,YAIb,YAAApQ,aAAd,SAA2B/8B,G,yHACzB55V,KAAKwd,MAAM68V,mBAAqB,KAChCr6W,KAAKwd,MAAM03L,eAAiB,GAC5Bl1M,KAAKwd,MAAM+lI,eAAiB,KAC5BvjJ,KAAKwd,MAAM61O,6BAA+B,IAEpCyoI,EAAK97X,KAAKo2X,gBAAgBvxX,QAAO,SAAAmwE,GAAM,OAAAA,EAAGz4D,KAAOq9U,MAEhDh/V,QACCk8X,EAAiBgF,EAAG,GACpB/mV,EAAgB/0C,KAAK88X,sCAAsChG,GACjE92X,KAAKwd,MAAM03L,eAAiBngK,EAAcpwC,KAAI,SAACqwE,GAC7C,IAAMwnS,EAAsB,IAAI,IAIhC,OAHAA,EAAoBhyU,cAAgBwqC,EAAGz4D,GACvCigW,EAAoBxyU,WAAagrC,EAAGhrC,WACpCwyU,EAAoB/6F,SAAWzsM,EAAGysM,SAC3B+6F,KAEHuf,EAAqBjF,EAAe1wH,kCAAoC,GAExEg1H,EAAarmV,EAAcn6C,OAAS,GAAIm6C,EAAcl2B,MAAK,SAAAm2D,GAAM,OAAAA,EAAG8kR,aAChE,GAAM95V,KAAKg8X,iBAAiBZ,EAAYW,EAAoBhnV,KAbpE,M,OAgBF,GAHIkmV,EAAM,SAGNG,GAAcW,EAAmBnhY,OAAS,EAC5C,IAAK,EAAL,EAAwB,EAAAmhY,EAAA,eAAbp6G,EAAS,MACdo7G,EAAsB,IAAI,KACVvyV,cAAgBm3O,EAAUn3O,cAC9CuyV,EAAoBh/W,gBAAkB4jQ,EAAU5jQ,gBAChDg/W,EAAoB5xV,mBAAqBw2O,EAAUx2O,mBACnDnrC,KAAKwd,MAAM61O,6BAA6Bn4P,KAAK6hY,G,OAIjD/8X,KAAK+6X,sBAAwB,CAC3BC,IAAKjmV,EAAcn6C,OACnBqgY,IAAKA,EACLlmV,cAAeA,EAAcn6C,OAAS,EAAIm6C,EAAcpwC,KAAI,SAAAqwE,GAAM,OAAAA,EAAGt3E,QAAM6nD,QAAO,SAAC7zC,EAAGC,GAAM,OAAAD,EAAI,KAAOC,KAAK,GAC5GupX,eAAgBnmV,EAAcn6C,OAAS,GAAIm6C,EAAcl2B,MAAK,SAAAm2D,GAAM,OAAAA,EAAGgkR,iBAAmB,IAAgBif,eAC1GkjB,iBAAkBpmV,EAAcn6C,OAAS,GAAIm6C,EAAcl2B,MAAK,SAAAm2D,GAAM,OAAAA,EAAGukR,YAAc,IAAWG,iBAClG0hC,WAAYA,GAGdp7X,KAAK+uX,OAAOhlV,iBAAmB6vT,EAC/B55V,KAAKk8X,uBAAuBnnV,GAI5B/0C,KAAKinY,wB,aAELjnY,KAAK+6X,sBAAwB,CAC3BC,IAAK,EACLC,IAAK,EACLlmV,cAAe,GACfmmV,gBAAgB,EAChBC,kBAAkB,EAClBC,YAAY,G,wBAIhBp7X,KAAKo8X,0B,YAGC,YAAAU,sCAAR,SAA8ChG,GAC5C,IAAKA,EACH,MAAO,GAGT,IAAMkG,GAAgBlG,EAAe3wH,8BAAgC,IAClEthQ,QAAO,SAAAqC,GAAK,OAAAA,EAAI,KAEnB,GAAI81X,EAAapiY,OAAS,EAAG,CAC3B,IAAMqiY,EAAwBnG,EAAe/hV,cAC1ClwC,QAAO,SAAAy2D,GAAK,OAAgC,IAAhC0hU,EAAa3rX,QAAQiqD,EAAE/+C,OACnC5X,KAAI,SAAA22D,GAAK,OAA0BA,KAEtC,GAAI2hU,EAAsBriY,OAAS,EACjC,OAAOqiY,EAKX,OAAOnG,EAAe/hV,cAAcpwC,KAAI,SAAA22D,GAAK,OAA0BA,MAGjE,YAAA6gU,8BAAR,SAAsCpnV,GACpC/0C,KAAKu7X,cAAe,EACpB,IAAM2B,EAAenoV,EAAclwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAEi+R,YAAc,IAAW4jC,cAC1En9X,KAAKu7X,aAAe2B,EAAatiY,OAAS,GAGpC,YAAAshY,uBAAR,SAA+BnnV,GAC7B/0C,KAAKs7X,kBAAmB,EACxB,IAAI/3O,EAAyB,GACzBy6O,EAA2B,GAEEpgY,MAA7BoC,KAAKwd,MAAM+lI,gBACTvjJ,KAAKwd,MAAM+lI,eAAe3oJ,OAAS,IACrC2oJ,EAAiBvjJ,KAAKwd,MAAM+lI,gBAGhC,IAAInhJ,EAAO,IAAI,IACf2yC,EAAc5tC,SAAQ,SAAU3G,GAC1BA,EAAK+4V,YAAc,IAAWG,eACV97V,MAAlB2lJ,IACEA,EAAe3oJ,OAAS,IAC1BojY,EAAmBz6O,EAAe1+I,QAAO,SAAAqC,GAAK,OAAAA,EAAEsjC,gBAAkBhqC,EAAK+b,OAE1C,GAA3ByhX,EAAiBpjY,UACnBwH,EAAO,IAAI,KACNooC,cAAgBhqC,EAAK+b,GAC1Bna,EAAKqiW,gBAAkBjkW,EAAK9C,KAC5B6lJ,EAAeroJ,KAAKkH,QAOxBmhJ,EAAe3oJ,SACjBoF,KAAKwd,MAAM+lI,eAAiBA,EAC5BvjJ,KAAKs7X,kBAAmB,IAIpB,YAAAc,wBAAR,WACOp8X,KAAK+6X,sBAAsBK,aAC9Bp7X,KAAKwd,MAAM61O,6BAA+B,IAEvCrzP,KAAK+6X,sBAAsBG,iBAC9Bl7X,KAAKwd,MAAM23L,qBAAuB,KAIxB,YAAAqmL,qBAAd,W,qBAAsCx/X,GAAO,W,2BAC3C,MAAO,CAAP,EAAOgE,KAAK05W,wBAAwBn8V,iBAGxB,YAAAm+W,mBAAd,W,qBAAoC1/X,GAAO,W,2BACzC,MAAO,CAAP,EAAOgE,KAAKo2W,sBAAsB74V,iBAGvB,YAAA69F,OAAb,W,qBAAuBp/G,GAAO,W,6DAGrB,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,iFACvCA,EAAO4oM,MAAP,YACF,KAAK34M,KAAKwd,MAAMusB,kBAAqB/pC,KAAKwd,MAAM68V,oBAAuBr6W,KAAKwd,MAAM03L,gBAEhF,OADAl1M,KAAK8iJ,aAAaviJ,QAAQ,wEAC1B,IAEG,GAAIP,KAAKwd,MAAMmgX,sBAAwB39X,KAAKwd,MAAMmgX,qBAAuB,IAAItkX,KAEhF,OADArZ,KAAK8iJ,aAAaviJ,QAAQ,4DAC1B,IAEF,GAAIP,KAAKwd,MAAM03L,eAAet6M,OAAS,EAMrC,IALIijY,EAAgB79X,KAAKwd,MAAM03L,eAAevwM,KAAI,SAAAm0G,GAChD,SAAK/jE,cAAc/uC,MAAK,SAAAs1D,GAAK,OAAAA,EAAEmmN,WAAa3oK,EAAI2oK,eAChD58Q,QAAO,SAAAy2D,GAAK,OAAK,MAALA,KAERsxT,EAAciR,EAAcl5X,KAAI,SAAA22D,GAAK,OAAAA,EAAE/+C,MACpC7hB,EAAI,EAAGA,EAAImjY,EAAcjjY,OAAQF,IAExC,IADM4gE,EAAIuiU,EAAcnjY,IAClB0/V,8BAAgC9+R,EAAE8+R,6BAA6Bx/V,OAAS,EAC5E,I,WAASg5B,GACP,IAAMsnV,EAAiB5/S,EAAE8+R,6BAA6BxmU,GAAGunV,0BACzD,IAA6C,IAAzCyR,EAAYv7W,QAAQ6pW,GAAwB,CAC9C,IAAME,EAAgByiB,EAAc73X,MAAK,SAAAokB,GAAK,OAAAA,EAAE7N,KAAO2+V,K,OACvD,EAAKp4N,aAAaviJ,QACb+6D,EAAE59D,KAAI,kFAAiF09W,EAAgBA,EAAc19W,KAAOw9W,I,wBAL5HtnV,EAAI,EAAGA,EAAI0nC,EAAE8+R,6BAA6Bx/V,OAAQg5B,I,wBAAlDA,I,kBAaf,OAAI5zB,KAAKk6W,iBACLl6W,KAAKwd,MAAM61O,8BACwC,IAAnDrzP,KAAKwd,MAAM61O,6BAA6Bz4P,OAO1BoF,KAAKwd,MAAM03L,eAAevwM,KAAI,SAACm0G,GAC/C,SAAK/jE,cAAc/uC,MAAK,SAACs1D,GAAM,OAAAA,EAAEmmN,WAAa3oK,EAAI2oK,eAClD58Q,QAAO,SAACy2D,GAAM,OAAAA,GAAKA,EAAE09R,kBAAoB,IAAgBqiB,QAAMzgX,OAEjD,GACdoF,KAAK8iJ,aAAaviJ,QAAQ,6DAC1B,KAFE,OAVFP,KAAK8iJ,aAAaviJ,QAAQ,uDAC1B,K,OAcO,SAAMP,KAAK08D,Q,OAAlB,MAAO,CAAP,EAAO,U,2BAIZzwD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAxD5B,MAAO,CAAP,EAAO,kBA4DK,YAAA4/D,KAAd,W,qBAAsB1gE,GAAO,W,yDAEvBgE,KAAKg6Q,WAAah6Q,KAAKs/X,sBACzBt/X,KAAK+uX,OAAO3jU,SAAWprD,KAAKwd,MAAM4tC,SAC3B,GAAMprD,KAAKshD,iBAAiBskB,GAAG5lE,KAAK+uX,UAFzC,M,OAEF,MAAO,CAAP,EAAO,U,OAGA,SAAM/uX,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAKH,YAAAy3T,oBAAR,sBACEr9X,KAAK86X,kBAAoB,GACpB96X,KAAKu6V,oBAAuBv6V,KAAK66X,kBAGF,GAA3B76X,KAAKu6V,oBAA6D,IAAlCv6V,KAAK66X,kBAAkBjgY,OAC9DoF,KAAK86X,kBAAoB96X,KAAK+0C,cAEvB/0C,KAAK66X,kBAAkBjgY,OAAS,GAAKoF,KAAKu6V,mBAAqB,EACtEv6V,KAAK86X,kBAAoB96X,KAAK+0C,cAAclwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAE59D,KAAK6d,cAAcvE,SAAS,EAAK6jX,kBAAkBt/W,gBAAkB+/C,EAAEtxB,aAAe,EAAKuwT,sBAE9Iv6V,KAAK66X,kBAAkBjgY,OAAS,EACvCoF,KAAK86X,kBAAoB96X,KAAK+0C,cAAclwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAE59D,KAAK6d,cAAcvE,SAAS,EAAK6jX,kBAAkBt/W,kBAEtGvb,KAAKu6V,mBAAqB,IACjCv6V,KAAK86X,kBAAoB96X,KAAK+0C,cAAclwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAEtxB,YAAc,EAAKuwT,uBAZ7Ev6V,KAAK86X,kBAAoB96X,KAAK+0C,eAgBpB,YAAAuoV,yBAAd,W,4GACMt9X,KAAKu9X,uBAAuB3iY,OAAS,GACvCoF,KAAK27X,uBAAyB37X,KAAKy7X,kBAAkB52X,QAAO,SAAAy2D,GAAK,OAAAA,EAAE59D,KAAK6d,cAAcvE,SAAS,EAAKumX,uBAAuBhiX,kBAC3Hvb,KAAKwd,MAAM68V,mBAAqBr6W,KAAK27X,uBAAuB,GAAGp/W,GAC/D,GAAMvc,KAAK67X,cAAc77X,KAAKwd,MAAM68V,sBAHlC,M,cAGF,S,aAEsC,MAA/Br6W,KAAKu9X,wBAAwE,GAAtCv9X,KAAKu9X,uBAAuB3iY,SAC1EoF,KAAK27X,uBAAyB,GAC9B37X,KAAK27X,uBAAyB37X,KAAKy7X,kBACnCz7X,KAAKwd,MAAM68V,mBAAqB,M,mCAKtB,YAAAmjB,eAAd,W,4GACMx9X,KAAK02X,aAAa97X,OAAS,GAC7BoF,KAAK47X,aAAe57X,KAAKo2X,gBAAgBvxX,QAAO,SAAAy2D,GAAK,OAAAA,EAAE59D,KAAK6d,cAAcvE,SAAS,EAAK0/W,aAAan7W,kBACrGvb,KAAKwd,MAAMusB,iBAAmB/pC,KAAK47X,aAAa,GAAGr/W,GACnD,GAAMvc,KAAK22X,aAAa32X,KAAKwd,MAAMusB,oBAHjC,M,cAGF,S,oBAE4B,MAArB/pC,KAAK02X,cAAoD,GAA5B12X,KAAK02X,aAAa97X,OAA/C,OACPoF,KAAK47X,aAAe,GACpB57X,KAAK47X,aAAe57X,KAAKo2X,gBACzBp2X,KAAKwd,MAAMusB,iBAAmB,KAC9B,GAAM/pC,KAAK22X,aAAa32X,KAAKwd,MAAMusB,oB,OAAnC,S,mCAKI,YAAA+zV,uBAAR,WACE99X,KAAKshD,iBAAiBv3C,SACtB/J,KAAK8F,OAAOyC,SAAS,WAAWvI,KAAKie,UAAS,uEAGxC,YAAA8/W,qBAAR,WACE/9X,KAAKshD,iBAAiBv3C,SACtB/J,KAAK8F,OAAOyC,SAAS,WAAWvI,KAAKie,UAAS,mEAGxC,YAAAm/W,UAAR,SAAkB7kC,GAChBv4V,KAAKs/X,qBAAuB/mC,EACvBA,IACHv4V,KAAKg6Q,UAAYu+E,GAEnBv4V,KAAKwd,MAAMusB,iBAAmB,KAC9B/pC,KAAKwd,MAAM68V,mBAAqB,KAChCr6W,KAAK+6X,sBAAwB,CAC3BC,IAAK,EACLC,IAAK,EACLlmV,cAAe,GACfmmV,gBAAgB,EAChBC,kBAAkB,EAClBC,YAAY,GAEdp7X,KAAKwd,MAAM03L,eAAiB,GAC5Bl1M,KAAKwd,MAAM+lI,eAAiB,MAKjB,YAAA0jP,sBAAb,W,qBAAsCjrY,GAAO,W,0DAE3CgE,KAAKC,OAAO0zC,MAAM,yB,iBAGM,O,sBAAtB,EAAA3zC,KAAsB,GAAMA,KAAKo2W,sBAAsB95V,QAAQtc,KAAK+uX,OAAOhlV,mB,cAA3E,EAAK+sV,eAAiB,SACtB92X,KAAK+uX,OAAO9wW,UAAYje,KAAKie,UAC7Bje,KAAK+uX,OAAOhmV,OAAS/oC,KAAK82X,eAAe/tV,OACzC/oC,KAAKg3X,cAAch3X,KAAK+uX,OAAOhmV,OAAOpkC,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,O,+BAEjDvc,KAAK8iJ,aAAahmJ,MAAM,G,+BAIpB,YAAAk6X,cAAR,SAAsBp2O,GAAtB,WACE5gJ,KAAK+uX,OAAOzxW,WAAa,GAEzBtd,KAAK+uX,OAAOhmV,OAAO5hC,SAAQ,SAAAyqW,GAEzB,IAAe,IADDhxN,EAASsyB,WAAU,SAAAhsK,GAAK,OAAAA,GAAK0qW,EAAMr1V,MAE/C,I,eAASm7W,IAES,IADD,EAAK3I,OAAOzxW,WAAW41J,WAAU,SAAAhsK,GAAK,OAAAA,IAAMwwX,EAAIC,cAE7D,EAAK5I,OAAOzxW,WAAWpiB,KAAKw8X,EAAIC,YAHpB,MAAA/lB,EAAMt0V,WAAN,eAAkB,C,EAAtB,UAShBtd,KAAKC,OAAO0zC,MAAM,eAAgB3zC,KAAK+uX,OAAOzxW,aAElC,YAAAm+V,gBAAd,SAA8BjxU,EAAuBi6T,G,qBAA0BzoW,GAAO,W,2EAO9D,OALjBgE,KAAKwd,MAAM61O,+BACdrzP,KAAKwd,MAAM61O,6BAA+B,IAItB,GAAMrzP,KAAKsuV,0BAA0BrkM,4BAA4Bz/G,I,OAKvF,OALMuxU,EAAgB,SAChBC,EAAoBD,EAAcl3W,QAAO,SAAA1G,GAAK,OAACA,EAAE64G,eAGjD5hE,EAAcp1C,KAAK+0C,cAAc/uC,MAAK,SAAAs1D,GAAK,OAAAA,EAAE/+C,KAAOiuB,OACd,MAAzB4K,EAAYn3B,WAAqB+9V,EAAkBphX,OAAS,GAEvEqhX,EAA+CD,EAAkBr3W,KAAI,SAAAu3W,GACzE,IAAIv6F,EAAY,IAAI,IAIpB,OAHAA,EAAUn3O,cAAgBA,EAC1Bm3O,EAAU5jQ,gBAAkBm+V,EAAI3/V,GAChColQ,EAAUx2O,mBAAqB+wU,EAAI/wU,mBAC5Bw2O,KAGHznM,EAAYl6E,KAAKwd,MAAM61O,6BAC1BxuP,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkBA,KACnCxqC,KAAKwd,MAAM61O,6BAA+Bn5K,EAAU/1E,OAAO83W,GAEvD,EAAmB,EACvBD,EAAkB70W,SAAQ,SAAA+0W,GAAO,YAAsBA,EAAI7H,aAAe,MAC1Er0W,KAAK46X,eAAiB56X,KAAK46X,eAAe/1X,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkBA,KAC1ExqC,KAAK46X,eAAe1/X,KAAK,CAAEsvC,cAAeA,EAAe6pU,YAAa,IACtEr0W,KAAK+6X,sBAAsBE,KAAO,EAClC,MAGI9e,EAAqC,CACzC3xU,cAAeA,EACfi6T,gBAAiBA,EACjBrvJ,mCAAwCp1M,KAAKwd,MAAM61O,6BAA4B,QAC/E62H,cAAc,GAGT,GAAMlqX,KAAKkkV,cACfzoS,KAAK,CACJ1tC,UAAW,IACXyP,MAAO2+V,IAERzjN,YAAW,SAAOj9I,GAAa,qC,wCACzBA,EAASw9B,cAAgBx9B,EAASxR,SAE/BiwE,EAAYl6E,KAAKwd,MAAM61O,6BAC1BxuP,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkBA,KACnCxqC,KAAKwd,MAAM61O,6BAA+Bn5K,EAAU/1E,OAAOsX,EAASxR,OAAOmyW,YAG3Ep8W,KAAK46X,eAAiB56X,KAAK46X,eAAe/1X,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkBA,KAC1ExqC,KAAK46X,eAAe1/X,KAAK,CAAEsvC,cAAeA,EAAe6pU,YAAa54V,EAASxR,OAAOggX,kBAAoB,IAE1GjqX,KAAK+6X,sBAAsBE,KAAOx/W,EAASxR,OAAOggX,kBAAoB,EAEtEjqX,KAAKC,OAAO0zC,MAAM,uCAChB3zC,KAAKwd,MAAM61O,6BAA6Bz4P,UAG1CoF,KAAKk6W,iBACHl6W,KAAKwd,MAAM61O,8BACwC,IAAnDrzP,KAAKwd,MAAM61O,6BAA6Bz4P,QAE1CoF,KAAK8iJ,aAAaviJ,QAChB,uD,sBA3BR,MAAO,CAAP,EAAO,kBAgCK,YAAAy7X,iBAAd,SAA+BZ,EAAqBW,EAA0EhnV,G,qBAA+B/4C,GAAO,W,iEAC9Ji/X,EAAM,GACNG,EAAA,Y,WACO1gY,G,yEACD4gE,EAAIvmB,EAAcr6C,IAClBo/V,WACE,EAAiBiiC,EAAmBl3X,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkB8wB,EAAE/+C,OACzD3hB,OAAS,EACC,GAAM,EAAK0zV,0BAA0BrkM,4BAA4B3uF,EAAE/+C,KAD5F,MAFF,M,OAIA,IADMm/V,EAAqB,S,WAClB9nV,GACP,IAAMgoV,EAAWF,EAAmB11W,MAAK,SAAAi+D,GAAK,OAAAA,EAAE1nD,KAAO,EAAeqX,GAAG7V,mBACzEk9W,GAAQrf,GAAYA,EAASvH,YAAcuH,EAASvH,YAAc,GAF3DzgV,EAAI,EAAGA,EAAI,EAAeh5B,OAAQg5B,I,EAAlCA,G,0BAIe,MAAf0nC,EAAEr9C,UAAF,MAEkB,GAAM,EAAKqwU,0BAA0BrkM,4BAA4B3uF,EAAE/+C,K,OAE9F,IAFMm/V,EAAqB,SACrBM,EAAoBN,EAAmB72W,QAAO,SAAA1G,GAAK,OAACA,EAAE64G,cACnDpjF,EAAI,EAAGA,EAAIooV,EAAkBphX,OAAQg5B,IAC5CqnW,KAASjf,EAAkBpoV,GAAGygV,aAAe,G,oCAIjD4mB,IAAQ3/T,EAAE+4S,Y,uCAnBL35W,EAAI,E,wBAAGA,EAAIq6C,EAAcn6C,O,KAAzBF,IAA+B,M,wCAAEA,I,gCAuB1CugY,EAAMlmV,EAAcn6C,OAAS,EAAIm6C,EAAcpwC,KAAI,SAAAqwE,GAAM,OAAAA,EAAGq/R,eAAa9uT,QAAO,SAAC7zC,EAAGC,GAAM,OAAAD,EAAIC,KAAK,E,iBAErG,MAAO,CAAP,EAAOspX,WA7xBEiM,EAAgC,GAD5C,uB,uBA6CyB,mB,OAAA,IAAN,oBAAM,SACoB,mBADpB,OACoB,IAAhB,wCAAgB,SACkB,mBADlB,OACkB,IAAzB,UAAyB,SACjC,mBADiC,OACjC,IAAZ,UAAY,SACS,mBADT,OACS,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACR,mBADQ,OACR,IAAvB,UAAuB,SACJ,mBADI,OACJ,IAArB,UAAqB,SACR,mBADQ,OACR,IAAnB,UAAmB,SACJ,mBADI,OACJ,IAAf,UAAe,SACU,mBADV,OACU,IAApB,UAAoB,YAvDzCA,GAAb,K,+GCtCAxrY,EAAOD,QAAU,o6V,0wECsBjB,aAiBE,WACU04X,EACArxO,EACAzoI,EACA6pU,EACAijD,EACAC,EACAhxB,EACAuc,GARV,WACU,KAAAwB,+BACA,KAAArxO,eACA,KAAAzoI,KACA,KAAA6pU,gBACA,KAAAijD,8BACA,KAAAC,0BACA,KAAAhxB,wBACA,KAAAuc,gBAtBF,KAAAvyX,OAAc,GAOd,KAAAkd,WAAoC,IAAI,wBAGxC,KAAA+pX,wBAA+C,IAAI36V,IAEnD,KAAAqoH,cAA8B,GAyB9B,KAAAi4F,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAKm0X,6BAA6BrgX,KAAK9T,KAAKsd,WAAYtd,KAAK61J,OAAOt5I,IAC9EpZ,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAdPkD,KAAKC,OAAS,aAAWC,UAAU,yBAGnCF,KAAK+0J,cAAc75J,KAAK8E,KAAKqa,GAAGtF,UAAU,IAAoC/U,KAAKukV,SAASplV,KAAKa,QAEjGA,KAAKsd,WAAWusB,OAAOy9V,6BAA+B,E,sBAoL1D,OAjLS,YAAA5hU,OAAP,WACE1lE,KAAK+0J,cAAc5tJ,SAAQ,SAAAD,GAAK,OAAAA,EAAEykG,cAatB,YAAA47R,UAAd,SAAwBhrX,G,0FACtB,SAAMvc,KAAKm0X,6BAA6Bp9N,cAAcx6I,I,cAAtD,SACAvc,KAAK8iJ,aAAaxiJ,QAAQ,6B,YAEd,YAAAnB,KAAd,W,qBAAsBnD,GAAO,W,4DACvBgE,KAAK61J,OAAL,YAEF71J,KAAKm0X,6BAA6B/2W,OAAO87B,iBAAmBl5C,KAAK61J,OAAO53I,UACxEje,KAAKmnY,4BAA4B/pX,OAAO87B,iBAAmBl5C,KAAK61J,OAAO53I,U,iBAGvD,O,sBAAA,GAAMje,KAAKmnY,4BAA4B7kP,8B,cAA/Cr1E,EAAQ,SACdjtE,KAAKqnY,wBAA0B,IAAI36V,IAAoBugC,EAAMtoE,KAAI,SAASuC,GAAuB,MAAO,CAACA,EAAEsjC,cAAetjC,EAAE6wW,kB,6BAE5H/3W,KAAKqnY,wBAA0B,IAAI36V,I,aAG9B,SAAM1sC,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yBAKJ,YAAAijD,gBAAP,SAAuBh9V,GACrB,OAAOxqC,KAAKqnY,wBAAwBztS,IAAIpvD,IAGnC,YAAAi9V,gBAAP,SAAuBj9V,GACrB,OAAOxqC,KAAKqnY,wBAAwB7oY,IAAIgsC,IAAkB,GAG9C,YAAA+5S,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAAtzT,OAAd,SAAqBP,EAAY7e,G,qBAAe1B,GAAO,W,6DAC9C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO9f,IAENg7J,YAAW,SAAOj9I,GAA2B,qC,oEACvCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKm0X,6BAA6Br3W,OAAOP,GACnDpZ,MAAK,WAEJ,EAAK2/I,aAAaxiJ,QAAQ,8BAC1B,EAAKikV,cAENt4U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,U,mCANb,MAAO,CAAP,EAAO,kBAmBD,YAAAy5W,aAAR,WACEv2W,KAAKsd,WAAWusB,OAAOylT,MAAQtvV,KAAKsd,WAAWusB,OAAO8wO,UAAY36Q,KAAKsd,WAAWusB,OAAO+wO,QAAU,KACnG56Q,KAAKsd,WAAWusB,OAAOy9V,6BAA+B,GAG1C,YAAA1kB,wBAAd,SAAsCrmW,G,qBAAavgB,GAAO,W,kDACxD,SAAMgE,KAAKkkV,cAAczoS,KAAK,CAC5B1tC,UAAW,IACXyP,MAAOjB,K,cAFT,S,YAMW,YAAAmrX,qBAAb,SAAkCj8U,EAAsBjhB,G,qBAAwBxuC,GAAO,W,wFAQ5D,O,uBALvBgE,KAAKmnY,4BAA4B/pX,OAAO87B,iBAAmBl5C,KAAK61J,OAAO53I,UACvEje,KAAKonY,wBAAwBhqX,OAAO87B,iBAAmBl5C,KAAK61J,OAAO53I,UACnEje,KAAKo2W,sBAAsBh5V,OAAO87B,iBAAmBl5C,KAAK61J,OAAO53I,UACjEje,KAAK2yX,cAAcv1W,OAAO87B,iBAAmBl5C,KAAK61J,OAAO53I,UAElC,GAAMje,KAAKonY,wBAAwB3kP,+BACxDziJ,KAAK61J,OAAO53I,UACZusB,I,OAGF,OALMm9V,EAAiB,UAQE,GAAM3nY,KAAKmnY,4BAA4B/kP,WAC9DpiJ,KAAK61J,OAAO53I,UACZ0pX,EAAeprX,KAJf,I,OAOF,OALQqrX,EAAiB,WAKDA,EAAerrX,GAIhB,GAAMvc,KAAKo2W,sBAAsB95V,QAAQsrX,EAAerrX,KAH7E,I,OAKF,KAFMsrX,EAAiB,UAGrB,U,iBAKuB,O,sBAAA,GAAM7nY,KAAK2yX,cAAcl5G,aAAaz5Q,KAAK61J,OAAOt5I,GAAIsrX,EAAetrX,GAAIkvC,I,OAChG,OADMq8U,EAAiB,WACDA,EAAevrX,IAC7BusC,EAAa,YAAS,IAAOC,cAAgB,gBAAkB++U,EAAevrX,GACpF5c,OAAO87C,KAAKqN,EAAY,UACxB,K,0CAOJ,IADMxrC,EAAuB,GACxB,EAAL,EAAoB,EAAAuqX,EAAe9+V,OAAf,eAClB,IADS6oU,EAAK,MACJt0V,WACR,IAAK,EAAL,EAAoB,EAAAs0V,EAAMt0V,WAAN,eAATkgE,EAAK,KACTlgE,EAAWtG,SAASwmE,EAAMm6S,YAC7Br6W,EAAWpiB,KAAKsiF,EAAMm6S,WAgBb,OAVX5I,EAAS,IAAI,KACZ9wW,UAAYje,KAAK61J,OAAO53I,UAC/B8wW,EAAO3jU,SAAWprD,KAAK61J,OAAOt5I,GAC9BwyW,EAAOhlV,iBAAmB89V,EAAetrX,GACzCwyW,EAAO/kV,WAAa69V,EAAe79V,WACnC+kV,EAAOwT,SAAW,EAClBxT,EAAOhmV,OAAS8+V,EAAe9+V,OAC/BgmV,EAAOzxW,WAAaA,EACpByxW,EAAO5tO,yBAA2B,CAAC11F,GAElB,GAAMzrD,KAAK2yX,cAAc1zX,OAAO8vX,I,cAA3CtzW,EAAW,SAEX48W,EAAiB,IAAOtvU,aACxBtgD,EAAM,YAAS4vX,GAAkB,gBAAkB58W,EAASc,GAClE5c,OAAO87C,KAAKhzC,EAAK,U,gCAGjBzI,KAAK8iJ,aAAahmJ,MAAM,G,iCAId,YAAA6/W,uBAAd,SAAqClxT,EAAsBjhB,G,qBAAwBxuC,GAAO,W,wDAOxF,OANMwhB,EAAiC,CACrC6mB,OAAQ,aACRmG,cAAeA,EACfihB,aAAcA,GAGhB,GAAMzrD,KAAKkkV,cAAczoS,KAAK,CAAE1tC,UAAW,IAAyByP,MAAOA,K,cAA3E,S,YA1MF,GADC,W,gBACqB,mB,OAAA,IAAN,UAAM,W,6BARXuqX,EAAqB,GADjC,uB,uBAmBqE,mB,OAAA,IAA5B,UAA4B,SAChC,mBADgC,OAChC,IAAZ,UAAY,SACP,mBADO,OACP,IAAf,sCAAe,SACS,mBADT,OACS,IAAb,kCAAa,SAC4B,mBAD5B,OAC4B,IAA3B,UAA2B,SACR,mBADQ,OACR,IAAvB,UAAuB,SACJ,mBADI,OACJ,IAArB,UAAqB,SAChB,mBADgB,OAChB,IAAb,UAAa,YAzB3BA,GAAb,I,mGCtBArsY,EAAOD,QAAU,wlN,y9DCYjB,aAYE,WACUqK,EACAkiY,EACAxZ,EACA1rO,EACA4iM,GAJA,KAAA5/U,SACA,KAAAkiY,sBACA,KAAAxZ,gBACA,KAAA1rO,eACA,KAAA4iM,8BATF,KAAAloU,MAAsB,IAAI,IAWhCxd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,oB,cA0FvC,OAvFS,YAAAylV,yBAAP,WACE,kBACGvM,OAAO,aAAapyK,YAAY,wDAAwD0wK,UAAU,KAClG0B,OAAO,cAAcpyK,YAAY,uDAAuD0wK,UAAU,KAClG0B,OAAO,UAAUpyK,YAAY,oDAAoD0wK,UAAU,KAC3F0B,OAAO,UAAUpyK,YAAY,yDAAyD0wK,UAAU,KAChG0B,OAAO,aAAapyK,YAAY,sDAAsD0wK,UAAU,KAChG0B,OAAO,gBAAgBpyK,YAAY,0DAA0D0wK,UAAU,KACvGrqS,GAAGrtC,KAAKwd,QAGA,YAAA5E,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,iEAEpCslB,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKie,WAAa7d,EAAO6d,UAEzBje,KAAKgoY,oBAAoB5qX,OAAO87B,iBAAmBl5C,KAAKie,UACxDje,KAAKwuX,cAAcpxW,OAAO87B,iBAAmBl5C,KAAKie,UAE7CqD,MAAMlhB,EAAOgrD,UAAd,OACFprD,KAAKorD,SAAWhrD,EAAOgrD,SACvB,EAAAprD,KAAa,GAAMA,KAAKm8E,a,OACV,OADd,EAAK3+D,MAAQ,SACb,EAAAxd,KAAc,GAAMA,KAAK6iY,a,OAAzB,EAAKhtO,OAAS,S,iBAGhB71J,KAAK2lV,2B,mCAIK,YAAAxpQ,QAAd,W,qBAAyBngF,GAAO,W,kDACvB,SAAMgE,KAAKgoY,oBAAoB1rX,QAAQtc,KAAKorD,W,OAAnD,MAAO,CAAP,EAAO,kBAGK,YAAAy3U,UAAd,W,qBAA2B7mY,GAAO,W,2BAChC,MAAO,CAAP,EAAOgE,KAAKwuX,cAAclyW,QAAQtc,KAAKorD,kBAG5B,YAAAgwD,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAIzC,OAHPgE,KAAKC,OAAOE,KAAK,UACjBH,KAAKwd,MAAM4tC,SAAWprD,KAAKorD,SAEpB,GAAMprD,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACL34M,KAAKwd,MAAMjB,GACN,GAAMvc,KAAK0c,OAAOwpU,IADvB,MADF,M,OAEA,MAAO,CAAP,EAAO,U,OAEA,SAAMlmV,KAAKf,OAAOinV,I,OAAzB,MAAO,CAAP,EAAO,U,2BAIZj6U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAX5B,MAAO,CAAP,EAAO,kBAeT,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAKgoY,oBAAoB5qX,OAAO7C,c,gCAG5B,YAAAtb,OAAd,SAAqBinV,G,qBAAuBlqV,GAAO,W,0DAElC,O,sBAAb,EAAAgE,KAAa,GAAMA,KAAKgoY,oBAAoB/oY,OAAOe,KAAKwd,MAAOxd,KAAKorD,W,cAApE,EAAK5tC,MAAQ,SACbxd,KAAK8iJ,aAAaxiJ,QAAQ,6BACrB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,W,OAAzC,MAAO,CAAP,EAAO,U,4CAIThJ,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAA4f,OAAd,SAAqBwpU,G,qBAAuBlqV,GAAO,W,wDAG/C,O,sBAAA,GAAMgE,KAAKgoY,oBAAoBtrX,OAAO1c,KAAKwd,MAAOxd,KAAKorD,W,cAAvD,SACAprD,KAAK8iJ,aAAaxiJ,QAAQ,6BAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,W,OAAzC,MAAO,CAAP,EAAO,U,4CAIThJ,KAAK8iJ,aAAahmJ,MAAM,G,+BA7GjBmrY,EAAgB,GAD5B,uB,uBAcyB,mB,OAAA,IAAN,oBAAM,SAC0B,mBAD1B,OAC0B,IAAnB,UAAmB,SACZ,mBADY,OACZ,IAAb,UAAa,SACF,mBADE,OACF,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,YAjBvDA,GAAb,I,yFCZAvsY,EAAOD,QAAU,iqH,m+DCSjB,aAME,WACUyoV,EACAphM,EACA0rO,GAFA,KAAAtqC,gBACA,KAAAphM,eACA,KAAA0rO,gBAGRxuX,KAAKC,OAAS,aAAWC,UAAU,gB,YAkBvC,OAfgB,YAAAmuO,KAAd,W,qBAAsBryO,GAAO,W,6DACpB,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAK61J,SACX6C,YAAW,SAAOj9I,GAA2B,qC,yDACzCA,EAASw9B,aAAV,MAEF,GAAMj5C,KAAKwuX,cAAc9jT,WAAW1qE,KAAK61J,OAAOt5I,GAAIvc,KAAK61J,OAAOlrF,O,OAAhE,SACA3qE,KAAK8iJ,aAAaxiJ,QAAQ,6B,qCAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAV5B,MAAO,CAAP,EAAO,kBAZT,GADC,qB,gBACoB,mB,OAAA,IAAN,UAAM,W,6BAJVorY,EAAU,GADtB,uB,uBAQuC,mB,OAAA,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,UAAa,YAT3BA,GAAb,I,+5DCJA,aAIE,WACU5mV,GAAA,KAAAA,mB,MAUZ,OAPS,YAAA1oC,SAAP,SAAgBi9I,GACd71J,KAAK61J,OAASA,GAGH,YAAAn5F,KAAb,W,qBAAqB1gE,GAAO,W,kDACnB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAbEuiU,EAAe,GAD3B,uB,uBAM6C,mB,OAAA,IAAhB,wCAAgB,YALjCA,GAAb,K,oFCLAzsY,EAAOD,QAAU,yvB,6DCAjBC,EAAOD,QAAU,4Z,+mECcjB,aASE,WACW+yX,EACA1rO,EACAh9I,EACAk+U,EACAmwC,EACAjwC,GANX,WACW,KAAAsqC,gBACA,KAAA1rO,eACA,KAAAh9I,SACA,KAAAk+U,mBACA,KAAAmwC,+BACA,KAAAjwC,gBATH,KAAA5mU,WAAoC,IAAI,wBAsDxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,6DAC1B,SAAMgE,KAAKm0X,6BAA6B39N,oBAAoBx2J,KAAKsd,WAAYtd,KAAK61J,OAAOt5I,IAC7FpZ,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBA5CPkD,KAAKsd,WAAWusB,OAAOu+V,qBAAuB,E,gBAoFlD,OAjFe,YAAAxvX,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,0DAClB,OAAvB,EAAAgE,KAAuB,GAAMA,KAAKgkV,iBAAiB7rQ,yCAAyC/3E,EAAO6d,Y,OACnG,OADA,EAAKmlU,gBAAkB,SACnBpjV,KAAKojV,iBAAoBpjV,KAAKojV,gBAAgBi2B,eAM7C/3V,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKie,WAAa7d,EAAO6d,UACzBje,KAAKwuX,cAAcpxW,OAAO87B,iBAAmBl5C,KAAKie,UAE7CqD,MAAMlhB,EAAOgrD,UAAd,OACFprD,KAAKorD,SAAWhrD,EAAOgrD,SACvB,EAAAprD,KAAc,GAAMA,KAAK6iY,gBAX3B7iY,KAAK8iJ,aAAahmJ,MAAM,wEACxBkD,KAAK8F,OAAOkD,gBAAgB,UAC5B,K,OAeE,OANA,EAAK6sJ,OAAS,SAEX71J,KAAK61J,OAAOwyO,mBAAqBroY,KAAK61J,OAAOwyO,kBAAkBC,kBAAoBtoY,KAAK61J,OAAOwyO,kBAAkBE,aAClHvoY,KAAK61J,OAAO2yO,WAAaxoY,KAAK61J,OAAOwyO,kBAAkBE,YAGzD,GAAMvoY,KAAKukV,Y,OAAX,S,mCAKQ,YAAAs+C,UAAd,W,qBAA2B7mY,GAAO,W,2BAChC,MAAO,CAAP,EAAOgE,KAAKwuX,cAAclyW,QAAQtc,KAAKorD,kBAG3B,YAAAm5R,SAAd,W,qBAA0BvoV,GAAO,W,6DACxB,SAAMgE,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAoBK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGD,YAAAmmC,aAAR,WACEv2W,KAAKsd,WAAWusB,OAAOylT,MAAQtvV,KAAKsd,WAAWusB,OAAO8wO,UAAY36Q,KAAKsd,WAAWusB,OAAO+wO,QAAU,KACnG56Q,KAAKsd,WAAWusB,OAAOu+V,qBAAuB,EAC9CpoY,KAAKukV,YAGM,YAAAkkD,iBAAb,SAA8BC,EAA4BztR,G,YAAA,IAAAA,MAAA,G,cAA4Bj/G,GAAO,W,0DAI3F,OAA2B,KAFrB2sY,EAAcD,EAAO7jY,QAAO,SAAA8lC,GAAS,OAAAA,EAAM49V,YAA0C,KAA5B59V,EAAM49V,WAAW5hV,WAEhE/rD,QACdoF,KAAK8iJ,aAAaviJ,QAAQ,gEAC1B,MAIIqoY,EAAgBzlX,KAAKW,IAAIm3F,EAAe0tR,EAAY/tY,OAAS,GAE5D,GAAMoF,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO,CACLkrX,OAAQC,EACR1tR,cAAe2tR,KAEhBlwO,YAAW,SAACj9I,S,OANf,MAAO,CAAP,EAAO,kBA5FEotX,EAAqB,GADjC,uB,uBAWwC,mB,OAAA,IAAb,UAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACZ,mBADY,OACZ,IAAN,oBAAM,SACoB,mBADpB,OACoB,IAAhB,UAAgB,SACwB,mBADxB,OACwB,IAA5B,UAA4B,SAC9B,mBAD8B,OAC9B,IAAb,kCAAa,YAf5BA,GAAb,I,qGCdAntY,EAAOD,QAAU,iyJAAu1J,EAAQ,KAAwE,mT,orBCOx7J,aAQI,WACUgqE,GAAA,KAAAA,aAPH,KAAAijU,OAA6B,GAC7B,KAAAI,kBAA4B,EAE5B,KAAAC,YAAsB,EACtB,KAAAzrX,WAAoC,IAAI,wBAM7Ctd,KAAKylE,WAAWr9D,SAASuxJ,gBAAiB,EAC1C35J,KAAKylE,WAAWr9D,SAAS4gY,oBAAqB,EAC9ChpY,KAAKylE,WAAWr9D,SAAS6gY,kBAAmB,E,MAmElD,OAhEW,YAAArwX,SAAP,SAAgB4E,GACdxd,KAAK0oY,OAASlrX,EAAMkrX,QAAU,GAC9B1oY,KAAK8oY,kBAAoBtrX,EAAMy9F,eAAiB,EAChDj7G,KAAK+oY,YAAc/oY,KAAK0oY,OAAO9tY,OAG/BoF,KAAKsd,WAAWkiU,SAAW,EAC3Bx/U,KAAKsd,WAAWqiU,YAAc3/U,KAAK8oY,kBAAoB,EACvD9oY,KAAKsd,WAAWmiU,aAAez/U,KAAK+oY,YACpC/oY,KAAKsd,WAAWuiU,WAAa7/U,KAAK+oY,YAElC/oY,KAAKkpY,sBAGC,YAAAA,mBAAR,WACMlpY,KAAK0oY,OAAO9tY,OAAS,GAAKoF,KAAK8oY,mBAAqB,GAAK9oY,KAAK8oY,kBAAoB9oY,KAAK0oY,OAAO9tY,OAChGoF,KAAKmpY,aAAenpY,KAAK0oY,OAAO1oY,KAAK8oY,mBAErC9oY,KAAKmpY,aAAe,MAIjB,YAAAC,UAAP,WACMppY,KAAK8oY,kBAAoB9oY,KAAK+oY,YAAc,IAC9C/oY,KAAK8oY,oBACL9oY,KAAKsd,WAAWqiU,YAAc3/U,KAAK8oY,kBAAoB,EACvD9oY,KAAKkpY,uBAIF,YAAAG,cAAP,WACMrpY,KAAK8oY,kBAAoB,IAC3B9oY,KAAK8oY,oBACL9oY,KAAKsd,WAAWqiU,YAAc3/U,KAAK8oY,kBAAoB,EACvD9oY,KAAKkpY,uBAIF,YAAAI,YAAP,SAAmB3/X,GACbA,GAAS,GAAKA,EAAQ3J,KAAK+oY,cAC7B/oY,KAAK8oY,kBAAoBn/X,EACzB3J,KAAKsd,WAAWqiU,YAAc3/U,KAAK8oY,kBAAoB,EACvD9oY,KAAKkpY,uBAIF,YAAAK,aAAP,WACE,IAAMh6P,EAAWvvI,KAAKsd,WAAWqiU,YAAc,EAC/C3/U,KAAKspY,YAAY/5P,IAGZ,YAAAxlI,OAAP,WACE/J,KAAKylE,WAAW17D,UAGlB,YAAAy/X,UAAA,WACAxpY,KAAK8oY,kBAAoB,EACzB9oY,KAAKkpY,sBAGL,YAAAO,SAAA,WACAzpY,KAAK8oY,kBAAoB9oY,KAAK+oY,YAAc,EAC5C/oY,KAAKkpY,sBA/EIQ,EAA4B,GADxC,uB,uBAUyC,mB,OAAA,IAAhB,wCAAgB,YAT7BA,GAAb,I,0FCPAhuY,EAAOD,QAAU,oyD,srBCWjB,aAKE,WACUsE,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAGRpsN,KAAKC,OAAS,aAAWC,UAAU,mC,QAoBvC,OAjBS,YAAA+V,gBAAP,SAAuBzT,EAA6BsD,GAClD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,sDACVoD,KAAM,yBAGR,CACEgF,MAAO,6BACPpI,SAAU,sDACVoD,KAAM,+BAzBDisY,EAA+B,GAD3C,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,8FCXAjuY,EAAOD,QAAU,+G,0nECyBjB,aA6CE,WACUqK,EACA0oX,EACAob,EACAhvU,EACAkoF,EACAqxO,EACAgE,EACA0R,EACA3lD,EACA5iM,EACAwoP,EACAjgU,EACA95D,GAZA,KAAAjK,SACA,KAAA0oX,gBACA,KAAAob,2CACA,KAAAhvU,QACA,KAAAkoF,eACA,KAAAqxO,+BACA,KAAAgE,wBACA,KAAA0R,gBACA,KAAA3lD,gBACA,KAAA5iM,cACA,KAAAwoP,sBACA,KAAAjgU,sBACA,KAAA95D,SApDH,KAAAg6X,aAAuB,IAAMvwC,QAsB5B,KAAAh2V,QAAU,GACV,KAAAwmY,eAAsB,KAatB,KAAAC,mBAA6B,EAC7B,KAAAC,cAAwB,EAmB9BlqY,KAAKwD,QAAU,CAAC,CAAE+Y,GAAI,EAAG3d,MAAO,KAAMo8G,UAAU,GAAS,CAAEz+F,GAAI,EAAG3d,MAAO,KAAMo8G,UAAU,GAAS,CAAEz+F,GAAI,EAAG3d,MAAO,KAAMo8G,UAAU,GAAS,CAAEz+F,GAAI,EAAG3d,MAAO,KAAMo8G,UAAU,GAAS,CAAEz+F,GAAI,EAAG3d,MAAO,KAAMo8G,UAAU,GAAS,CAAEz+F,GAAI,EAAG3d,MAAO,KAAMo8G,UAAU,GAAS,CAAEz+F,GAAI,EAAG3d,MAAO,KAAMo8G,UAAU,GAAS,CAAEz+F,GAAI,EAAG3d,MAAO,KAAMo8G,UAAU,GAAS,CAAEz+F,GAAI,EAAG3d,MAAO,KAAMo8G,UAAU,GAAS,CAAEz+F,GAAI,GAAI3d,MAAO,MAAOo8G,UAAU,IACnah7G,KAAKmqY,WAAY,EACjBnqY,KAAKoqY,YAAa,EAElBpqY,KAAKC,OAAS,aAAWC,UAAU,oB,4BA8NvC,OA3Ne,YAAA0Y,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,yEAEpCslB,MAAMlhB,EAAO6d,WAAd,QACFje,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MACxB7Q,KAAKie,WAAa7d,EAAO6d,UACzBje,KAAKwuX,cAAcpxW,OAAO87B,iBAAmBl5C,KAAKie,UAClDje,KAAKqqY,yBAA2BjqY,EAAOupE,wBAClCroD,MAAMlhB,EAAOgrD,UAAd,QACFprD,KAAKorD,SAAWhrD,EAAOgrD,SAEvB,EAAAprD,KAAmB,GAAMA,KAAKm0X,6BAA6Br9N,6BAA6B92J,KAAKorD,a,cAA7F,EAAKk2F,YAAc,SACY,GAA3BthJ,KAAKshJ,YAAY1mJ,OAAjB,OACFoF,KAAKkqY,cAAe,EACpBlqY,KAAKiqY,mBAAoB,E,sBAElBjqY,KAAKshJ,YAAY1mJ,OAAS,IAAM0mB,MAAMthB,KAAKqqY,2BAClD,EAAArqY,KAA6B,GAAMA,KAAKm0X,6BAA6B73W,QAAQtc,KAAKqqY,4BAD3E,M,OAIO,OAHd,EAAKlS,sBAAwB,SAC7Bn4X,KAAKkqY,cAAe,EACpBlqY,KAAKiqY,mBAAoB,EACzB,EAAAjqY,KAAc,GAAMA,KAAK6iY,a,OAGC,OAH1B,EAAKhtO,OAAS,SACd71J,KAAKqqY,yBAA2BrqY,KAAKm4X,sBAAsB57W,GAC3Dvc,KAAKsqY,cAAgBtqY,KAAKm4X,sBAAsB1sU,aACtB,GAAMzrD,KAAK8pY,oBAAoBpgU,6BAA6B1pE,KAAKqqY,2B,cAAvFxgU,EAAsB,SAC1B7pE,KAAKuqY,uBAAyB1gU,EAAoBttD,GAClDvc,KAAKwqY,YAAY,IAAMC,W,qBAEW,GAA3BzqY,KAAKshJ,YAAY1mJ,OAAjB,QACP,EAAAoF,KAA6B,GAAMA,KAAKm0X,6BAA6Bt9N,gCAAgC72J,KAAKorD,Y,OAG5F,OAHd,EAAK+sU,sBAAwB,SAC7Bn4X,KAAKkqY,cAAe,EACpBlqY,KAAKiqY,mBAAoB,EACzB,EAAAjqY,KAAc,GAAMA,KAAK6iY,a,OAGC,OAH1B,EAAKhtO,OAAS,SACd71J,KAAKqqY,yBAA2BrqY,KAAKm4X,sBAAsB57W,GAC3Dvc,KAAKsqY,cAAgBtqY,KAAKm4X,sBAAsB1sU,aACtB,GAAMzrD,KAAK8pY,oBAAoBpgU,6BAA6B1pE,KAAKqqY,2B,cAAvFxgU,EAAsB,SAC1B7pE,KAAKuqY,uBAAyB1gU,EAAoBttD,GAClDvc,KAAKwqY,YAAY,IAAMC,W,eAEvBzqY,KAAKiqY,mBAAoB,E,qCAMnB,YAAAS,aAAd,SAA2B/gU,G,sGAET,O,sBAAd,EAAA3pE,KAAc,GAAMA,KAAK6iY,a,OACI,OAD7B,EAAKhtO,OAAS,SACd,EAAA71J,KAA6B,GAAMA,KAAKm0X,6BAA6BzqT,6BAA6BC,I,OAGxE,OAH1B,EAAKwuT,sBAAwB,SAC7Bn4X,KAAKqqY,yBAA2B1gU,EAChC3pE,KAAKsqY,cAAgBtqY,KAAKm4X,sBAAsB1sU,aACtB,GAAMzrD,KAAK8pY,oBAAoBpgU,6BAA6B1pE,KAAKqqY,2B,cAAvFxgU,EAAsB,SAC1B7pE,KAAKuqY,uBAAyB1gU,EAAoBttD,GAClDvc,KAAKwqY,YAAY,IAAMC,WACvBzqY,KAAKiqY,mBAAoB,E,+BAGzBjqY,KAAK8iJ,aAAahmJ,MAAM,G,+BAIrB,YAAA0tY,YAAP,SAAmBG,GACjB3qY,KAAKmqY,WAAY,EACbnqY,KAAK4qY,2BACP5qY,KAAK6qY,eAAeF,GAItB3qY,KAAK8qY,cAAcH,IAGP,YAAAG,cAAd,SAA4BH,G,qBAAgB3uY,GAAO,W,8DAEjDgE,KAAKC,OAAOE,KAAK,iB,iBAOL,O,sBALVH,KAAK6pE,oBAAoBttD,GAAKvc,KAAKuqY,uBACnCvqY,KAAK6pE,oBAAoBze,SAAWprD,KAAKorD,SACzCprD,KAAK6pE,oBAAoBF,wBAA0B3pE,KAAKqqY,yBACxDrqY,KAAK6pE,oBAAoBpe,aAAezrD,KAAKsqY,cAEnC,GAAMtqY,KAAK8pY,oBAAoBlgU,kCAAkC5pE,KAAK6pE,sB,cAA5E9oE,EAAM,SACNo3X,EAAwBp3X,EAAIo3X,sBAChCn4X,KAAK+qY,eAAiB5S,EAAqC,cAEvD6S,EAA2BjqY,EAAIiqY,yBAEnChrY,KAAK4qY,2BAA6BI,EAAyBC,uBAC3DjrY,KAAK6qY,eAAeF,G,+BAGpB3qY,KAAK8iJ,aAAahmJ,MAAM,G,+BAIpB,YAAA+tY,eAAR,SAAuBF,GACrB3qY,KAAKkrY,wBAEL,IAAIC,EAAmBnrY,KAAK4qY,2BAA2B5kY,MAAK,SAAAxF,GAAQ,OAAAA,EAAKmqY,OAASA,KAC7EQ,IAILnrY,KAAK6+V,SAAWssC,EAAiBtsC,SAASJ,YAC1Cz+V,KAAKorY,WAAaD,EAAiB76X,MACnCtQ,KAAKqrY,OAASF,EAAiBR,MAE3BQ,EAAiBR,OAAS3qY,KAAK+pY,cAAgBoB,EAAiBG,SAClEtrY,KAAKurY,SAAWJ,EAAiBG,OAAOE,kBAGtCL,EAAiBM,cACnBzrY,KAAK0rY,4BAA8BP,EAAiBM,YAAYrwC,YAChEp7V,KAAK2rY,kBAAkBR,EAAiBM,YAAY7sY,UAIhD,YAAAssY,sBAAR,WACElrY,KAAK6+V,SAAW,GAChB7+V,KAAKorY,WAAa,KAClBprY,KAAKurY,SAAW,GAChBvrY,KAAK0rY,4BAA8B,GACnC1rY,KAAKgqY,eAAiB,KACtB,IAAmB,UAAAhqY,KAAKwD,QAAL,eAAc,CAAlB,KACNw3G,UAAW,IAId,YAAA2wR,kBAAR,SAA0B/sY,GACxB,GAAKA,EAAL,CAIA,IAAIgtY,GAAoB,IAAMhtY,GAAS,GACnCinH,EAAS7lH,KAAKwD,QAAQwC,MAAK,SAAAxF,GAAQ,OAAAA,EAAK+b,IAAMqvX,KAC9C/lR,IACFA,EAAO7K,UAAW,EAClBh7G,KAAKgqY,eAAiBnkR,KAIZ,YAAAg9Q,UAAd,W,qBAA2B7mY,GAAO,W,2BAChC,MAAO,CAAP,EAAOgE,KAAKwuX,cAAclyW,QAAQtc,KAAKorD,kBAG3B,YAAAygV,kBAAd,W,kGAGE,GAFA7rY,KAAKC,OAAOE,KAAK,sBAEZH,KAAK0rY,8BAAgC1rY,KAAKgqY,eAE7C,OADAhqY,KAAKmqY,WAAY,EACV,CAAP,GAAO,GAGTnqY,KAAKmqY,WAAY,EACjBnqY,KAAKwR,MAAQxR,KAAKgqY,eAAmB,GACrChqY,KAAKoqY,YAAa,EAClBpqY,KAAKC,OAAO0zC,MAAM,aAAc3zC,KAAKwR,OAEjCs6X,EAAS3oX,KAAKk3D,SAASr7D,SAAS,IAAIjd,UAAU,IAAK,IAAKsX,MAAQmI,UAAUxC,SAAS,IACvFhf,KAAKwR,MAAqB,GAAbxR,KAAKwR,MAClBxR,KAAKwR,MAAQ,IAAMxR,KAAKwR,MACpBxR,KAAKwR,OAAS,MAAOxR,KAAKwR,MAAQ,GAEtCxR,KAAK+P,OAAOq7C,SAAWprD,KAAKorD,SAC5BprD,KAAK+P,OAAO07C,aAAezrD,KAAKsqY,cAChCtqY,KAAK+P,OAAOnR,MAAQoB,KAAKwR,MACzBxR,KAAK+P,OAAO+2V,MAAQglC,EACpB9rY,KAAK+P,OAAOqrV,YAAcp7V,KAAK0rY,4BAC/B1rY,KAAK+P,OAAO46X,MAAQ3qY,KAAKqrY,OACzBrrY,KAAK+P,OAAOy6B,cAAgBxqC,KAAK+qY,e,iBAE/B,O,uBAAA,GAAM/qY,KAAK8pY,oBAAoBptU,KAAK18D,KAAK+P,S,OAEzC,OAFA,SACA/P,KAAK8iJ,aAAaxiJ,QAAQ,qEAC1B,GAAMN,KAAK8qY,cAAc9qY,KAAKqrY,S,cAA9B,S,+BAEArrY,KAAK8iJ,aAAahmJ,MAAM,G,oBAGxBkD,KAAKoqY,YAAa,E,6BAIT,YAAA2B,oBAAb,W,qBAAoC/vY,GAAO,W,2EACrC3B,EAA2C,CAC7C4jB,UAAWje,KAAKie,UAChBmtC,SAAUprD,KAAK61J,OAAOt5I,GACtB9T,IAAK,GACLujY,iBAAkB,I,iBAID,O,sBAAA,GAAMhsY,KAAKkkV,cAAczoS,KAAK,CAC7C1tC,UAAW,IACXyP,MAAOnjB,IACNq+J,c,cAHc,SAKHz/G,aAAV,OACEruB,EAAO,IAAIvR,KACX8B,EAA2C,CAC7CwuD,wBAAyB3pE,KAAKm4X,sBAAsB57W,GACpDkvC,aAAczrD,KAAKm4X,sBAAsB1sU,aACzCL,SAAUprD,KAAK61J,OAAOt5I,GACtBqO,KAAMA,EAAKpJ,UACXvD,UAAWje,KAAK61J,OAAO53I,UACvB4sD,MAAOxwE,EAAK2xY,kBAED,GAAMhsY,KAAK6pY,cAAcxtT,OAAOnrE,KAAKE,UAAU+J,GAAO,IAAOuoD,c,OAI1E,OAJI2Y,EAAS,SACT+9J,EAAY/9J,EAAOt1E,QAAQ,MAAO,IAAO48D,UAAU58D,QAAQ,MAAO,IAAO68D,WAAW78D,QAAQ,KAAM,IAAO88D,WACzGooU,EAAe,IAAOxoU,iBAAmB,yBAA2B22K,EACxE//O,EAAKoO,IAAMwjY,EACX,GAAMjsY,KAAK4pY,yCAAyC9/T,mCAAmCzvE,GACpF8I,MAAK,WACJ,EAAK2/I,aAAaxiJ,QAAQ,yHAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,S,sDASFkD,KAAK8iJ,aAAahmJ,MAAM,EAAMW,S,+BA7RvByuY,EAAwB,GADpC,uB,uBA+CyB,mB,OAAA,IAAN,oBAAM,SACc,mBADd,OACc,IAAb,UAAa,SACsD,mBADtD,OACsD,IAAxC,UAAwC,SAC/D,mBAD+D,OAC/D,IAAZ,UAAY,SACO,mBADP,OACO,IAAZ,UAAY,SACgC,mBADhC,OACgC,IAA5B,UAA4B,SACd,mBADc,OACd,IAArB,UAAqB,SAChB,mBADgB,OAChB,IAAb,UAAa,SACA,mBADA,OACA,IAAb,kCAAa,eAEiC,mBAFjC,OAEiC,IAAxC,UAAwC,SACrB,mBADqB,OACrB,IAAnB,UAAmB,SAC1B,mBAD0B,OAC1B,IAAN,UAAM,YA1DbA,GAAb,I,yGCzBAxwY,EAAOD,QAAU,+wH,m9DCQjB,aAKE,WACU6lD,EACAokS,GADA,KAAApkS,mBACA,KAAAokS,8BACN1lV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAC1CjzU,KAAKC,OAAS,aAAWC,UAAU,sC,QA2BzC,OAxBkB,YAAA0Y,SAAd,SAAuB4E,G,qBAA4CxhB,GAAO,W,kCACxEgE,KAAKwd,MAAQA,E,WAIP,YAAAmoU,yBAAR,WACE,kBACGvM,OAAO,oBAAoBpyK,YAAY,gCAAgCwkD,WACvEn+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,W,qBAAuBp/G,GAAO,W,6DACrB,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,mCAHb,MAAO,CAAP,EAAO,kBAQI,YAAAA,KAAb,W,qBAAqB1gE,GAAO,W,kDACnB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAlCAumU,EAAuC,GADnD,uB,uBAO6C,mB,OAAA,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,YAPvDA,GAAb,K,wHCRAzwY,EAAOD,QAAU,wmC,05DCMjB,aAKC,WACS6lD,EACA0iS,GADA,KAAA1iS,mBACA,KAAA0iS,mBAERhkV,KAAKC,OAAS,aAAWC,UAAU,4B,QAarC,OAVc,YAAA0Y,SAAb,SAAsB4E,G,qBAA+BxhB,GAAO,W,kCAC3DgE,KAAKie,UAAYT,EAAMS,U,WAGX,YAAAm4I,OAAb,W,qBAAuBp6J,GAAO,W,6DACtB,SAAMgE,KAAKgkV,iBAAiBxsQ,yBAAyBx3E,KAAKie,WAC/D9a,MAAK,WACL,EAAKm+C,iBAAiBskB,S,OAFxB,MAAO,CAAP,EAAO,kBAjBIwmU,EAAwB,GADpC,uB,uBAO2C,mB,OAAA,IAAhB,wCAAgB,SACA,mBADA,OACA,IAAhB,UAAgB,YAP/BA,GAAb,K,wFCNA1wY,EAAOD,QAAU,ohB,qmBCIjB,aAGE,WAAoB6lD,GAAA,KAAAA,mB,MAMtB,OAHS,YAAA1oC,SAAP,SAAgByzX,GACdrsY,KAAKqsY,SAAWA,GAPPC,EAAiC,GAD7C,uB,uBAIuD,mB,OAAA,IAAhB,wCAAgB,YAH3CA,GAAb,I,iFCJA5wY,EAAOD,QAAU,46B,45DCMjB,aAEE,WAAoB6lD,GAAA,KAAAA,mB,MAKtB,OAHe,YAAA1oC,SAAb,SAAsBm/V,G,0EACpB/3W,KAAK+3W,aAAeA,E,WALXw0B,EAAiC,GAD7C,uB,uBAGuD,mB,OAAA,IAAhB,wCAAgB,YAF3CA,GAAb,K,kGCNA7wY,EAAOD,QAAU,yvB,i+ECuDjB,aAmDE,WACU6qV,EACAxgV,EACA80D,EACA+3T,EACAnE,EACA1rO,EACA4iM,EACAg0B,EACAtD,EACA/pB,EACEhyU,EACF6pU,EACA9pU,EACAoyX,EACAl+C,EACAwM,EACA/6V,GAjBV,WACU,KAAAumV,iBACA,KAAAxgV,SACA,KAAA80D,QACA,KAAA+3T,gBACA,KAAAnE,gBACA,KAAA1rO,eACA,KAAA4iM,8BACA,KAAAg0B,0BACA,KAAAtD,wBACA,KAAA/pB,kBACE,KAAAhyU,KACF,KAAA6pU,gBACA,KAAA9pU,iBACA,KAAAoyX,UACA,KAAAl+C,4BACA,KAAAwM,uBACA,KAAA/6V,OAjEF,KAAA+mV,UAA2B,GAE3B,KAAA2lD,oBAA2B,GAK3B,KAAA7R,eAAmE,GAEnE,KAAAC,kBAA4B,GAQ5B,KAAA/D,eAAiC,IAAI,IAErC,KAAA/hV,cAAmC,GACnC,KAAA+lV,kBAAuC,GACvC,KAAA5jB,oBAA8B,EAC9B,KAAAgD,iBAA2B,EAC3B,KAAAv6F,OAAiB3/Q,KAAKD,KAAKM,GAAG,sCAC9B,KAAA06X,sBAAwB,CAC9BC,IAAK,EACLC,IAAK,EACLlmV,cAAe,GACfmmV,gBAAgB,EAChBC,kBAAkB,EAClBC,YAAY,GAIN,KAAA59W,MAAgB,IAAI,IAMpB,KAAAw8P,WAAqB,EACrB,KAAAshH,kBAA4B,EAC5B,KAAAgE,sBAAgC,EAChC,KAAAvQ,OAAiB,IAAI,IAErB,KAAAwN,WAAqB,EACrB,KAAAhB,cAAwB,EACxB,KAAAhhC,mBAA6B,IAAU2T,QAqB7CluW,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,0BAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MAExB7Q,KAAKwvS,aAAexvS,KAAKqa,GAAGtF,UAAU,KAAuB,SAACtX,GAAmC,SAAK2wW,gBAAgBjvW,KAAK,MAE3H,IAAIqb,EAAa,IAAOC,aAExBza,KAAK88H,KAAOtiH,EAAa,6C,+CAw1B7B,OAr1BS,YAAA2uI,SAAP,WACEnpJ,KAAKwvS,aAAa7jM,WAGb,YAAAg6O,yBAAP,sBACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,aAAapyK,YAAY,qCAAqCwkD,WACrE4tH,OAAO,YAAYpyK,YAAY,oCAAoCwkD,WACnE4tH,OAAO,SAASpyK,YAAY,gCAAgCn8F,QAAQ2gJ,WACpEvpG,MAAK,SAAA/6G,GAAK,SAAKsW,MAAMigX,aAAe,IAAWiP,YAC/CtzD,OAAO,SAASpyK,YAAY,gCAAgCn8F,QAAQ2gJ,WACpEvpG,MAAK,SAAA/6G,GAAK,SAAKq0X,gBACfniD,OAAO,yBAAyBpyK,YAAY,2CAA2CwkD,WACvF4tH,OAAO,SAASpyK,YAAY,gCAAgCwkD,WAC5DvpG,MAAK,SAAA/6G,GAAK,OAAgC,GAAhC,EAAKsW,MAAMmvX,qBACrBvzD,OAAO,qBAAqBpyK,YAAY,qCAAqCwkD,WAC7EvpG,MAAK,SAAA/6G,GAAK,SAAKsW,MAAMovX,MAAQ,OAC7Bv/V,GAAGrtC,KAAKwd,OAEX,kBACG47T,OAAO,oBAAoBpyK,YAAY,mDAAmDwkD,WAC1F4tH,OAAO,YAAYpyK,YAAY,kDAAkDwkD,WACjF4tH,OAAO,uBAAuBpyK,YAAY,gEAAgE4wK,SAAS,GACnHwB,OAAO,cAAcpyK,YAAY,uDAAuDwkD,WACxF4tH,OAAO,UAAUpyK,YAAY,mDAAmDwkD,WAChF4tH,OAAO,kBAAkBpyK,YAAY,2DAA2DwkD,WAChG4tH,OAAO,eAAepyK,YAAY,wDAAwDwkD,WAAWmsH,SAAS,GAAGC,SAAS,KAC1HwB,OAAO,uBAAuBpyK,YAAY,8DAA8DwkD,WACxG4tH,OAAO,mBAAmBpyK,YAAY,0DAA0DwkD,WAChG4tH,OAAO,2BAA2BpyK,YAAY,kEAAkEwkD,WAChH4tH,OAAO,qBAAqBpyK,YAAY,4DAA4DwkD,WACpG4tH,OAAO,YAAYpyK,YAAY,qDAAqDwkD,WACpF4tH,OAAO,YAAYpyK,YAAY,qDAAqDwkD,WACpF4tH,OAAO,aAAapyK,YAAY,qDAAqDwkD,WAAWmsH,SAAS,GACzGyB,OAAO,qBAAqBpyK,YAAY,6DAA6DwkD,WAAWmsH,SAAS,GAAGC,SAAS,GACrIwB,OAAO,gBAAgBpyK,YAAY,wDAAwDwkD,WAAWmsH,SAAS,GAC/GyB,OAAO,kBAAkBpyK,YAAY,0DAA0DwkD,WAAWmsH,SAAS,GAAGC,SAAS,GAC/HwB,OAAO,eAAepyK,YAAY,wDAAwDwkD,WAAWmsH,SAAS,GAAGC,SAAS,KAC1HvqS,GAAGrtC,KAAK+uX,SAGA,YAAAn2W,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,kEAa1B,OAZfgE,KAAKysY,oBAAsBzsY,KAAK6sY,iCAChC7sY,KAAKwd,MAAMyiI,UAAYjgJ,KAAK8sY,eAAe9sY,KAAKysY,oBAAqB,aACrEzsY,KAAKwd,MAAM0iI,SAAWlgJ,KAAK8sY,eAAe9sY,KAAKysY,oBAAqB,YACpEzsY,KAAKwd,MAAMnhB,SAAW2D,KAAK8sY,eAAe9sY,KAAKysY,oBAAqB,YACpEzsY,KAAKwd,MAAMqtD,MAAQ7qE,KAAK8sY,eAAe9sY,KAAKysY,oBAAqB,SAGhC,iBAF7BE,EAAoB3sY,KAAK8sY,eAAe9sY,KAAKysY,oBAAqB,wBAGpEzsY,KAAKwd,MAAMmvX,kBAAoBriX,SAASqiX,IAE1C3sY,KAAKwd,MAAMovX,MAAQ5sY,KAAK8sY,eAAe9sY,KAAKysY,oBAAqB,SAEjE,EAAAzsY,KAAe,GAAMA,KAAKoa,eAAe0zI,c,cAAzC,EAAKvkG,QAAU,SACfvpD,KAAKwsY,QAAQljV,SAAStpD,KAAKupD,QAAS,IAAqBoB,wBAEpDrpC,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKie,WAAa7d,EAAO6d,UAEzBje,KAAKwd,MAAMS,UAAYje,KAAKie,UAG5Bje,KAAKwd,MAAMm7W,WAAa,IAAI,IAC5B34X,KAAKwd,MAAMm7W,WAAWkJ,qBAAuB,IAAqB+B,OAGlE5jY,KAAK05W,wBAAwBt8V,OAAO87B,iBAAmBl5C,KAAKie,UAC5Dje,KAAKo2W,sBAAsBh5V,OAAO87B,iBAAmBl5C,KAAKie,UAE1D,EAAAje,KAAyB,GAAMA,KAAKw7X,yB,OACb,OADvB,EAAKC,kBAAoB,SACzB,EAAAz7X,KAAuB,GAAMA,KAAK07X,sB,OACjB,OADjB,EAAKtF,gBAAkB,SACvB,EAAAp2X,KAAiB,GAAMA,KAAKsmV,eAAe9lL,iB,OAErB,OAFtB,EAAKsmL,UAAY,SACjB9mV,KAAK2lV,2BACL,EAAA3lV,KAAsB,GAAMA,KAAKsuV,0BAA0B/wU,U,OAA3D,EAAKw3B,cAAiB,SAA+ClwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAEpxB,eAAiB,IAAcovT,QAAUh+R,EAAE09R,iBAAmB,IAAgBif,eACjKj4W,KAAK86X,kBAAoB96X,KAAK+0C,cAC9B/0C,KAAK27X,uBAAyB37X,KAAKy7X,kBACnCz7X,KAAK47X,aAAe57X,KAAKo2X,gB,mCAKtB,YAAAhoB,gBAAP,WAEE,GAAIpuW,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAAe,CAC1C,IAAI,EAAgB11J,KAAK6Q,MAAM6kJ,cAActvG,QACzCmoT,EAAavuW,KAAK86D,UAAU90D,MAAK,SAAAwoW,GAAM,OAAAA,EAAGpoT,UAAY,KACtDmoT,IACFvuW,KAAKwd,MAAMm7W,WAAW3uV,WAAaukU,EAAWhyV,MAKtC,YAAApd,KAAd,W,qBAAsBnD,GAAO,W,0DAER,O,sBAAjB,EAAAgE,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,U,cAA5C,EAAKu9C,UAAY,SACjB96D,KAAKouW,kB,+BAGLpuW,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAg7W,wBAAd,W,qBAAyC97W,GAAO,W,6DAEvC,OADPgE,KAAKC,OAAO0zC,MAAM,8BACX,GAAM3zC,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,yBACXyP,MAAOxd,KAAKwd,MAAMm7W,WAAWxjL,uBAC5Bz8C,YAAW,SAAOj9I,GAA2B,qC,kCACzCA,EAASw9B,cACRj5C,KAAKk3W,oBAA2E,GAArDl3W,KAAKwd,MAAMm7W,WAAWxjL,qBAAqBv6M,QACxEoF,KAAK8iJ,aAAaviJ,QAAQ,yD,qBANhC,MAAO,CAAP,EAAO,kBAWK,YAAAk7W,gBAAd,SAA8BjxU,EAAuBi6T,G,qBAA0BzoW,GAAO,W,2EAO9D,OALjBgE,KAAKwd,MAAMm7W,WAAWtlI,+BACzBrzP,KAAKwd,MAAMm7W,WAAWtlI,6BAA+B,IAIjC,GAAMrzP,KAAKsuV,0BAA0BrkM,4BAA4Bz/G,I,OAKvF,OALMuxU,EAAgB,SAChBC,EAAoBD,EAAcl3W,QAAO,SAAA1G,GAAK,OAACA,EAAE64G,eAGjD5hE,EAAcp1C,KAAK+0C,cAAc/uC,MAAK,SAAAs1D,GAAK,OAAAA,EAAE/+C,KAAOiuB,OACd,MAAzB4K,EAAYn3B,WAAqB+9V,EAAkBphX,OAAS,GAEvEqhX,EAA+CD,EAAkBr3W,KAAI,SAAAu3W,GACzE,IAAIv6F,EAAY,IAAI,IAIpB,OAHAA,EAAUn3O,cAAgBA,EAC1Bm3O,EAAU5jQ,gBAAkBm+V,EAAI3/V,GAChColQ,EAAUx2O,mBAAqB+wU,EAAI/wU,mBAC5Bw2O,KAGHznM,EAAYl6E,KAAKwd,MAAMm7W,WAAWtlI,6BACrCxuP,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkBA,KACnCxqC,KAAKwd,MAAMm7W,WAAWtlI,6BAA+Bn5K,EAAU/1E,OAAO83W,GAElE,EAAmB,EACvBD,EAAkB70W,SAAQ,SAAA+0W,GAAO,YAAsBA,EAAI7H,aAAe,MAC1Er0W,KAAK46X,eAAiB56X,KAAK46X,eAAe/1X,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkBA,KAC1ExqC,KAAK46X,eAAe1/X,KAAK,CAAEsvC,cAAeA,EAAe6pU,YAAa,IACtEr0W,KAAK+6X,sBAAsBE,KAAO,EAClC,MAGI9e,EAAqC,CACzC3xU,cAAeA,EACfi6T,gBAAiBA,EACjBrvJ,mCAAwCp1M,KAAKwd,MAAMm7W,WAAWtlI,6BAA4B,QAC1F62H,cAAc,GAGT,GAAMlqX,KAAKkkV,cACfzoS,KAAK,CACJ1tC,UAAW,IACXyP,MAAO2+V,IAERzjN,YAAW,SAAOj9I,GAAa,qC,wCACzBA,EAASw9B,cAAgBx9B,EAASxR,SAE/BiwE,EAAYl6E,KAAKwd,MAAMm7W,WAAWtlI,6BACrCxuP,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkBA,KACnCxqC,KAAKwd,MAAMm7W,WAAWtlI,6BAA+Bn5K,EAAU/1E,OAAOsX,EAASxR,OAAOmyW,YAEtFp8W,KAAK46X,eAAiB56X,KAAK46X,eAAe/1X,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkBA,KAC1ExqC,KAAK46X,eAAe1/X,KAAK,CAAEsvC,cAAeA,EAAe6pU,YAAa54V,EAASxR,OAAOggX,kBAAoB,IAE1GjqX,KAAK+6X,sBAAsBE,KAAOx/W,EAASxR,OAAOggX,kBAAoB,EAEtEjqX,KAAKC,OAAO0zC,MAAM,uCAChB3zC,KAAKwd,MAAMm7W,WAAWtlI,6BAA6Bz4P,UAGrDoF,KAAKk6W,iBACHl6W,KAAKwd,MAAMm7W,WAAWtlI,8BACwC,IAA9DrzP,KAAKwd,MAAMm7W,WAAWtlI,6BAA6Bz4P,QAErDoF,KAAK8iJ,aAAaviJ,QAChB,uD,sBA1BR,MAAO,CAAP,EAAO,kBA+BK,YAAAy7X,iBAAd,SAA+BZ,EAAqBW,EAA0EhnV,G,qBAA+B/4C,GAAO,W,iEAC9Ji/X,EAAM,GACNG,EAAA,Y,WACO1gY,G,yEACD4gE,EAAIvmB,EAAcr6C,IAClBo/V,WACE,EAAiBiiC,EAAmBl3X,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkB8wB,EAAE/+C,OACzD3hB,OAAS,EACC,GAAM,EAAK0zV,0BAA0BrkM,4BAA4B3uF,EAAE/+C,KAD5F,MAFF,M,OAIA,IADMm/V,EAAqB,S,WAClB9nV,GACP,IAAMgoV,EAAWF,EAAmB11W,MAAK,SAAAi+D,GAAK,OAAAA,EAAE1nD,KAAO,EAAeqX,GAAG7V,mBACzEk9W,GAAQrf,GAAYA,EAASvH,YAAcuH,EAASvH,YAAc,GAF3DzgV,EAAI,EAAGA,EAAI,EAAeh5B,OAAQg5B,I,EAAlCA,G,0BAIe,MAAf0nC,EAAEr9C,UAAF,MAEkB,GAAM,EAAKqwU,0BAA0BrkM,4BAA4B3uF,EAAE/+C,K,OAE9F,IAFMm/V,EAAqB,SACrBM,EAAoBN,EAAmB72W,QAAO,SAAA1G,GAAK,OAACA,EAAE64G,cACnDpjF,EAAI,EAAGA,EAAIooV,EAAkBphX,OAAQg5B,IAC5CqnW,KAASjf,EAAkBpoV,GAAGygV,aAAe,G,oCAIjD4mB,IAAQ3/T,EAAE+4S,Y,uCAnBL35W,EAAI,E,wBAAGA,EAAIq6C,EAAcn6C,O,KAAzBF,IAA+B,M,wCAAEA,I,gCAuB1CugY,EAAMlmV,EAAcn6C,OAAS,EAAIm6C,EAAcpwC,KAAI,SAAAqwE,GAAM,OAAAA,EAAGq/R,eAAa9uT,QAAO,SAAC7zC,EAAGC,GAAM,OAAAD,EAAIC,KAAK,E,iBAErG,MAAO,CAAP,EAAOspX,WAEK,YAAAY,cAAd,SAA4BjiC,G,yHAC1B55V,KAAKwd,MAAMm7W,WAAW5uV,iBAAmB,KACzC/pC,KAAKwd,MAAMm7W,WAAWzjL,eAAiB,GACvCl1M,KAAKwd,MAAM+lI,eAAiB,KAC5BvjJ,KAAKwd,MAAMm7W,WAAWtlI,6BAA+B,GACrDrzP,KAAK46X,eAAiB,GAChBkB,EAAK97X,KAAKy7X,kBAAkB52X,QAAO,SAAAmwE,GAAM,OAAAA,EAAGz4D,KAAOq9U,KACzD55V,KAAKg6Q,WAAY,EACjBh6Q,KAAKk6W,iBAAkB,EACnB4hB,EAAGlhY,QACCm6C,EAAgB+mV,EAAG,GAAG/mV,cACtBgnV,EAAqBD,EAAG,GAAG1mL,oCAAsC,GACjE,EAAOp1M,KAAK2/Q,OAEZy7G,EAAarmV,EAAcl2B,MAAK,SAAAm2D,GAAM,OAAAA,EAAG8kR,aACrC,GAAM95V,KAAKg8X,iBAAiBZ,EAAYW,EAAoBhnV,KANpE,M,UAMEkmV,EAAM,UAGNG,EAAA,Y,WACO1gY,G,iFACD4gE,EAAIvmB,EAAcr6C,IAClBo/V,UAAF,Y,MACIslB,EAAiB2c,EAAmBl3X,QAAO,SAAA6M,GAAK,OAAAA,EAAE84B,gBAAkB8wB,EAAE/+C,OACzD3hB,OAAS,GAAxB,YACF,IAAK,EAAL,EAAgB,EAAAwkX,EAAA,eAAL1tW,EAAC,MACNiwQ,EAAY,IAAI,KACVn3O,cAAgB8wB,EAAE/+C,GAC5BolQ,EAAU5jQ,gBAAkBrM,EAAEqM,gBAC9B4jQ,EAAUx2O,mBAAqBz5B,EAAEy5B,mBACjC,EAAK3tB,MAAMm7W,WAAWtlI,6BAA6Bn4P,KAAKymR,G,mBAG/B,SAAM,EAAK2sE,0BAA0BrkM,4BAA4B3uF,EAAE/+C,K,OAE9F,IAFMm/V,EAAqB,SACrBM,EAAoBN,EAAmB72W,QAAO,SAAA1G,GAAK,OAACA,EAAE64G,cACvD,EAAL,EAAkB,EAAAglQ,EAAA,eAAPE,EAAG,MACRv6F,EAAY,IAAI,KACVn3O,cAAgB8wB,EAAE/+C,GAC5BolQ,EAAU5jQ,gBAAkBm+V,EAAI3/V,GAChColQ,EAAUx2O,mBAAqB+wU,EAAI/wU,mBACnC,EAAK3tB,MAAMm7W,WAAWtlI,6BAA6Bn4P,KAAKymR,G,uCApBvDjnR,EAAI,E,wBAAGA,EAAIq6C,EAAcn6C,O,KAAzBF,IAA+B,M,wCAAEA,I,aAyB1CsF,KAAKk6W,iBAAkB,E,wBAGzBnlU,EAAc5tC,SAAQ,SAAU6tE,GACd,GAAhBA,EAAGinT,UAAoBjnT,EAAGt3E,KAAOs3E,EAAGt3E,KAAO,IAAM,EAAOs3E,EAAGt3E,QAE7DsC,KAAK+6X,sBAAwB,CAC3BC,IAAKjmV,EAAcn6C,OACnBqgY,IAAKA,EACLlmV,cAAeA,EAAcn6C,OAAS,EAAIm6C,EAAcpwC,KAAI,SAAAqwE,GAAM,OAAAA,EAAGt3E,QAAM6nD,QAAO,SAAC7zC,EAAGC,GAAM,OAAAD,EAAI,KAAOC,KAAK,GAC5GupX,eAAgBnmV,EAAcn6C,OAAS,GAAIm6C,EAAcl2B,MAAK,SAAAm2D,GAAM,OAAAA,EAAGgkR,iBAAmB,IAAgBif,eAC1GkjB,iBAAkBpmV,EAAcn6C,OAAS,GAAIm6C,EAAcl2B,MAAK,SAAAm2D,GAAM,OAAAA,EAAGukR,YAAc,IAAWG,iBAClG0hC,WAAYrmV,EAAcn6C,OAAS,GAAIm6C,EAAcl2B,MAAK,SAAAm2D,GAAM,OAAAA,EAAG8kR,cAGrE95V,KAAKk8X,uBAAuBnnV,GAC5B/0C,KAAKm8X,8BAA8BpnV,G,aAGnC/0C,KAAK+6X,sBAAwB,CAC3BC,IAAK,EACLC,IAAK,EACLlmV,cAAe,GACfmmV,gBAAgB,EAChBC,kBAAkB,EAClBC,YAAY,G,iBAKS,OADzBp7X,KAAKo8X,0BACoB,GAAMp8X,KAAK05W,wBAAwBp9V,QAAQs9U,I,OACpE,OADMyiC,EAAmB,SACzB,GAAMr8X,KAAKs8X,gCAAgCD,I,eAA3C,S,YAGY,YAAAG,kBAAd,W,4HACEx8X,KAAKwd,MAAMm7W,WAAW5uV,iBAAmB,KACzC/pC,KAAKwd,MAAMm7W,WAAWte,mBAAqB,KACvCzU,EAAyC,GACzC62B,EAAkB,IAAI,IAC1Bz8X,KAAKwd,MAAMm7W,WAAWzjL,eAAe/tM,SAAQ,SAAA4/D,GAC3C01T,EAAkB,IAAI,IACtBA,EAAkB,EAAK1nV,cAAc/uC,MAAK,SAAAgvE,GAAM,OAAAA,EAAGysM,UAAY16M,EAAQ06M,YACvEmkF,EAAoB1qW,KAAKuhY,MAE3Bz8X,KAAKg6Q,WAAY,EACjBh6Q,KAAKk6W,iBAAkB,EAGnBl6W,KAAKwd,MAAMm7W,WAAWtlI,8BAAgCrzP,KAAKwd,MAAMm7W,WAAWtlI,6BAA6Bz4P,OAAS,IAC9G,EAAyBgrW,EAC5B/gW,QAAO,SAAAy2D,GAAK,OAAK,MAALA,KACZ32D,KAAI,SAAA22D,GAAK,OAAAA,EAAE/+C,MACdvc,KAAKwd,MAAMm7W,WAAWtlI,6BAA+BrzP,KAAKwd,MAAMm7W,WAAWtlI,6BACxExuP,QAAO,SAAA6M,GAAK,OAAqD,IAArD,EAAuBL,QAAQK,EAAE84B,kBAEhDxqC,KAAK46X,eAAiB56X,KAAK46X,eACxB/1X,QAAO,SAAA6M,GAAK,OAAqD,IAArD,EAAuBL,QAAQK,EAAE84B,qBAG9Co7T,EAAoBhrW,OAAS,GAA7B,YAIF,IAHM8hY,EAAa92B,EAAoB/gW,QAAO,SAAAmwE,GAAM,OAACA,EAAG8kR,aAClD6iC,EAAgBD,EAAW9hY,OAAS,EAAI8hY,EAAW/3X,KAAI,SAAAqwE,GAAM,OAAAA,EAAGq/R,eAAa9uT,QAAO,SAAC7zC,EAAGC,GAAM,OAAAD,EAAIC,KAAK,EACzGirX,EAAa,EACRliY,EAAI,EAAGA,EAAIsF,KAAK46X,eAAehgY,OAAQF,IAC9CkiY,GAAc58X,KAAK46X,eAAelgY,GAAG25W,aAAe,E,GAEtDr0W,KAAK+6X,sBAAwB,CAC3BC,IAAKp1B,EAAoBhrW,OACzBqgY,IAAK0B,EAAgBC,EACrB7nV,cAAe6wT,EAAoBhrW,OAAS,EAAIgrW,EAAoBjhW,KAAI,SAAAqwE,GAAM,OAAAA,EAAGt3E,QAAM6nD,QAAO,SAAC7zC,EAAGC,GAAM,OAAAD,EAAI,KAAOC,KAAK,GACxHupX,eAAgBt1B,EAAoBhrW,OAAS,GAAIgrW,EAAoB/mV,MAAK,SAAAm2D,GAAM,OAAAA,EAAGgkR,iBAAmB,IAAgBif,eACtHkjB,iBAAkBv1B,EAAoBhrW,OAAS,GAAIgrW,EAAoB/mV,MAAK,SAAAm2D,GAAM,OAAAA,EAAGukR,YAAc,IAAWG,iBAC9G0hC,WAAYx1B,EAAoBhrW,OAAS,GAAIgrW,EAAoB/mV,MAAK,SAAAm2D,GAAM,OAAAA,EAAG8kR,cAE7E95V,KAAK+6X,sBAAsBI,kBAC7Bn7X,KAAKk8X,uBAAuBt2B,GAGzB5lW,KAAK+6X,sBAAsBI,mBAC9Bn7X,KAAKs7X,kBAAmB,EACxBt7X,KAAKwd,MAAM+lI,eAAiB,IAG9BvjJ,KAAKm8X,8BAA8Bv2B,GAC/B5lW,KAAK+6X,sBAAsBG,gBAA+C,GAA7Bl7X,KAAK68X,uBACpD78X,KAAK83W,0BACL93W,KAAK68X,sBAAuB,GAEzB78X,KAAK+6X,sBAAsBG,iBAC9Bl7X,KAAK68X,sBAAuB,IAG1B78X,KAAK+6X,sBAAsBK,WAA3B,YACFp7X,KAAKk6W,iBAAkB,EAEjB+E,EAAuBrZ,EAAoB/gW,QAAO,SAAAy2D,GAAK,OAAK,MAALA,GAAaA,EAAEw+R,a,WACnEp/V,G,+DACDwkX,EAAKD,EAAqBvkX,GACX,EAAK8iB,MAAMm7W,WAAWtlI,8BACzC,EAAK71O,MAAMm7W,WAAWtlI,6BAA6Bx0O,MAAK,SAAAnN,GAAK,OAAAA,EAAE84B,gBAAkB00U,EAAG3iW,MAElF,MACF,GAAM,EAAKk/V,gBAAgByD,EAAG3iW,GAAI2iW,EAAGxhX,O,OAArC,S,uCANKhD,EAAI,E,wBAAGA,EAAIukX,EAAqBrkX,O,KAAhCF,IAAsC,M,wCAAEA,I,gCAYnDsF,KAAK+6X,sBAAwB,CAC3BC,IAAK,EACLC,IAAK,EACLlmV,cAAe,GACfmmV,gBAAgB,EAChBC,kBAAkB,EAClBC,YAAY,GAEdp7X,KAAKwd,MAAMm7W,WAAWtlI,6BAA+B,G,mCAI3C,YAAAsjI,aAAd,SAA2B/8B,G,2HACzB55V,KAAKwd,MAAMm7W,WAAWte,mBAAqB,KAC3Cr6W,KAAKwd,MAAMm7W,WAAWzjL,eAAiB,GACvCl1M,KAAKwd,MAAM+lI,eAAiB,KAC5BvjJ,KAAKwd,MAAMm7W,WAAWtlI,6BAA+B,GACrDrzP,KAAK46X,eAAiB,IAChBkB,EAAK97X,KAAKo2X,gBAAgBvxX,QAAO,SAAAmwE,GAAM,OAAAA,EAAGz4D,KAAOq9U,MAChDh/V,QACCk8X,EAAiBgF,EAAG,GACpB/mV,EAAgB/0C,KAAK88X,sCAAsChG,GACjE92X,KAAKwd,MAAMm7W,WAAWzjL,eAAiBngK,EAAcpwC,KAAI,SAACqwE,GACxD,IAAMwnS,EAAsB,IAAI,IAIhC,OAHAA,EAAoBhyU,cAAgBwqC,EAAGz4D,GACvCigW,EAAoBxyU,WAAagrC,EAAGhrC,WACpCwyU,EAAoB/6F,SAAWzsM,EAAGysM,SAC3B+6F,KAEHuf,EAAqBjF,EAAe1wH,kCAAoC,GACxE,EAAOpmQ,KAAK2/Q,OAClB5qO,EAAc5tC,SAAQ,SAAU6tE,GACd,GAAhBA,EAAGinT,UAAoBjnT,EAAGt3E,KAAOs3E,EAAGt3E,KAAO,IAAM,EAAOs3E,EAAGt3E,QAGvD09X,EAAarmV,EAAcn6C,OAAS,GAAIm6C,EAAcl2B,MAAK,SAAAm2D,GAAM,OAAAA,EAAG8kR,aAChE,GAAM95V,KAAKg8X,iBAAiBZ,EAAYW,EAAoBhnV,KAjBpE,M,OAoBF,GAHIkmV,EAAM,SAGNG,GAAcW,EAAmBnhY,OAAS,EAC5C,IAAK,EAAL,EAAwB,EAAAmhY,EAAA,eAAbp6G,EAAS,MACdo7G,EAAsB,IAAI,KACVvyV,cAAgBm3O,EAAUn3O,cAC9CuyV,EAAoBh/W,gBAAkB4jQ,EAAU5jQ,gBAChDg/W,EAAoB5xV,mBAAqBw2O,EAAUx2O,mBACnDnrC,KAAKwd,MAAMm7W,WAAWtlI,6BAA6Bn4P,KAAK6hY,G,OAI5D/8X,KAAK+6X,sBAAwB,CAC3BC,IAAKjmV,EAAcn6C,OACnBqgY,IAAKA,EACLlmV,cAAeA,EAAcn6C,OAAS,EAAIm6C,EAAcpwC,KAAI,SAAAqwE,GAAM,OAAAA,EAAGt3E,QAAM6nD,QAAO,SAAC7zC,EAAGC,GAAM,OAAAD,EAAI,KAAOC,KAAK,GAC5GupX,eAAgBnmV,EAAcn6C,OAAS,GAAIm6C,EAAcl2B,MAAK,SAAAm2D,GAAM,OAAAA,EAAGgkR,iBAAmB,IAAgBif,eAC1GkjB,iBAAkBpmV,EAAcn6C,OAAS,GAAIm6C,EAAcl2B,MAAK,SAAAm2D,GAAM,OAAAA,EAAGukR,YAAc,IAAWG,iBAClG0hC,WAAYA,GAGdp7X,KAAK+uX,OAAOhlV,iBAAmB6vT,EAC/B55V,KAAKk8X,uBAAuBnnV,GAC5B/0C,KAAKinY,wBACLjnY,KAAKm8X,8BAA8BpnV,G,aAGnC/0C,KAAK+6X,sBAAwB,CAC3BC,IAAK,EACLC,IAAK,EACLlmV,cAAe,GACfmmV,gBAAgB,EAChBC,kBAAkB,EAClBC,YAAY,G,mCAKV,YAAA0B,sCAAR,SAA8ChG,GAC5C,IAAKA,EACH,MAAO,GAGT,IAAMkG,GAAgBlG,EAAe3wH,8BAAgC,IAClEthQ,QAAO,SAAAqC,GAAK,OAAAA,EAAI,KAEnB,GAAI81X,EAAapiY,OAAS,EAAG,CAC3B,IAAMqiY,EAAwBnG,EAAe/hV,cAC1ClwC,QAAO,SAAAy2D,GAAK,OAAgC,IAAhC0hU,EAAa3rX,QAAQiqD,EAAE/+C,OACnC5X,KAAI,SAAA22D,GAAK,OAA0BA,KAEtC,GAAI2hU,EAAsBriY,OAAS,EACjC,OAAOqiY,EAKX,OAAOnG,EAAe/hV,cAAcpwC,KAAI,SAAA22D,GAAK,OAA0BA,MAGjE,YAAA6gU,8BAAR,SAAsCpnV,GACpC/0C,KAAKu7X,cAAe,EACpB,IAAM2B,EAAenoV,EAAclwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAEi+R,YAAc,IAAW4jC,cAC1En9X,KAAKu7X,aAAe2B,EAAatiY,OAAS,GAGpC,YAAAshY,uBAAR,SAA+BnnV,GAC7B/0C,KAAKs7X,kBAAmB,EACxB,IAAI/3O,EAAyB,GACzBy6O,EAA2B,GACEpgY,MAA7BoC,KAAKwd,MAAM+lI,gBACTvjJ,KAAKwd,MAAM+lI,eAAe3oJ,OAAS,IACrC2oJ,EAAiBvjJ,KAAKwd,MAAM+lI,gBAGhC,IAAInhJ,EAAO,IAAI,IACf2yC,EAAc5tC,SAAQ,SAAU3G,GAC1BA,EAAK+4V,YAAc,IAAWG,eACV97V,MAAlB2lJ,IACEA,EAAe3oJ,OAAS,IAC1BojY,EAAmBz6O,EAAe1+I,QAAO,SAAAqC,GAAK,OAAAA,EAAEsjC,gBAAkBhqC,EAAK+b,OAE1C,GAA3ByhX,EAAiBpjY,UACnBwH,EAAO,IAAI,KACNooC,cAAgBhqC,EAAK+b,GAC1Bna,EAAKqiW,gBAAkBjkW,EAAK9C,KAC5B6lJ,EAAeroJ,KAAKkH,QAOxBmhJ,EAAe3oJ,SACjBoF,KAAKwd,MAAM+lI,eAAiBA,EAC5BvjJ,KAAKs7X,kBAAmB,IAId,YAAAgB,gCAAd,SAA8CD,G,iGAClBA,EAAiBtnV,cAAclwC,QAAO,SAAAqC,GAAK,OAAAA,EAAEqyV,aAAe,IAAWgb,kBAC3E35W,OAAS,EACZ,GAAMoF,KAAK05W,wBAAwBx3F,iCAAiCm6G,EAAiB9/W,KADpG,M,OAEF,OADiB,UAMfvc,KAAKu8X,WAAY,E,QAJjBv8X,KAAKu8X,WAAY,EACV,CAAP,EAAOv8X,KAAK8iJ,aAAaviJ,QAAQ,oF,OAMnCP,KAAKu8X,WAAY,E,mCAGb,YAAAH,wBAAR,WACOp8X,KAAK+6X,sBAAsBK,aAC9Bp7X,KAAKwd,MAAMm7W,WAAWtlI,6BAA+B,IAElDrzP,KAAK+6X,sBAAsBG,iBAC9Bl7X,KAAKwd,MAAMm7W,WAAWxjL,qBAAuB,KAInC,YAAAqmL,qBAAd,W,qBAAsCx/X,GAAO,W,2BAC3C,MAAO,CAAP,EAAOgE,KAAK05W,wBAAwBn8V,iBAGxB,YAAAm+W,mBAAd,W,qBAAoC1/X,GAAO,W,2BACzC,MAAO,CAAP,EAAOgE,KAAKo2W,sBAAsB74V,iBAG5B,YAAAsvX,+BAAR,WACE,OAAiE,MAA1D37X,KAAKC,MAAMw3J,eAAexsF,QAAQ,qBACrC,IAAIthF,OACNqW,KAAKC,MAAMw3J,eAAexsF,QAAQ,sBAG9B,YAAA2wT,eAAR,SAAuB/rY,EAAashB,GAClC,OAAoBzkB,MAAbmD,EAAIshB,GAAqB,GAAKthB,EAAIshB,IAGpC,YAAA0qX,aAAP,SAAoBvvY,GAClB,IAAI6kB,EAAe7kB,EAAO+e,GAAG+O,MAAM,KAAK,GACxCtrB,KAAKysY,oBAAoBpqX,GAAQriB,KAAKwd,MAAM6E,GAC5CsmJ,eAAentF,QAAQ,mBAAoBtqE,KAAKE,UAAUpR,KAAKysY,uBAGpD,YAAArxR,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAGzC,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,mFAEvCA,EAAO4oM,MAAP,YACF,KAAK34M,KAAKwd,MAAMm7W,WAAW5uV,kBAAqB/pC,KAAKwd,MAAMm7W,WAAWte,oBAAuBr6W,KAAKwd,MAAMm7W,WAAWzjL,eAAet6M,QAEhI,OADAoF,KAAK8iJ,aAAaviJ,QAAQ,wEAC1B,IAEG,GAAIP,KAAKwd,MAAMm7W,WAAWgF,sBAAwB39X,KAAKwd,MAAMm7W,WAAWgF,qBAAuB,IAAItkX,KAEtG,OADArZ,KAAK8iJ,aAAaviJ,QAAQ,4DAC1B,IAEF,GAAIP,KAAKwd,MAAMm7W,WAAWzjL,eAAet6M,OAAS,EAOhD,IALIijY,EAAgB79X,KAAKwd,MAAMm7W,WAAWzjL,eAAevwM,KAAI,SAAAm0G,GAC3D,SAAK/jE,cAAc/uC,MAAK,SAAAs1D,GAAK,OAAAA,EAAEmmN,WAAa3oK,EAAI2oK,eAChD58Q,QAAO,SAAAy2D,GAAK,OAAK,MAALA,KAERsxT,EAAciR,EAAcl5X,KAAI,SAAA22D,GAAK,OAAAA,EAAE/+C,MACpC7hB,EAAI,EAAGA,EAAImjY,EAAcjjY,OAAQF,IAExC,IADM4gE,EAAIuiU,EAAcnjY,IAClB0/V,8BAAgC9+R,EAAE8+R,6BAA6Bx/V,OAAS,EAC5E,I,WAASg5B,GACP,IAAMsnV,EAAiB5/S,EAAE8+R,6BAA6BxmU,GAAGunV,0BACzD,IAA6C,IAAzCyR,EAAYv7W,QAAQ6pW,GAAwB,CAC9C,IAAME,EAAgByiB,EAAc73X,MAAK,SAAAokB,GAAK,OAAAA,EAAE7N,KAAO2+V,K,OACvD,EAAKp4N,aAAaviJ,QACb+6D,EAAE59D,KAAI,kFAAiF09W,EAAgBA,EAAc19W,KAAOw9W,I,wBAL5HtnV,EAAI,EAAGA,EAAI0nC,EAAE8+R,6BAA6Bx/V,OAAQg5B,I,wBAAlDA,I,kBAcf,OAAI5zB,KAAKk6W,iBACLl6W,KAAKwd,MAAMm7W,WAAWtlI,8BACwC,IAA9DrzP,KAAKwd,MAAMm7W,WAAWtlI,6BAA6Bz4P,OAOrCoF,KAAKwd,MAAMm7W,WAAWzjL,eAAevwM,KAAI,SAACm0G,GAC1D,SAAK/jE,cAAc/uC,MAAK,SAACs1D,GAAM,OAAAA,EAAEmmN,WAAa3oK,EAAI2oK,eAClD58Q,QAAO,SAACy2D,GAAM,OAAAA,GAAKA,EAAE09R,kBAAoB,IAAgBqiB,QAAMzgX,OAEjD,GACdoF,KAAK8iJ,aAAaviJ,QAAQ,6DAC1B,KAFE,OAVFP,KAAK8iJ,aAAaviJ,QAAQ,uDAC1B,K,cAcgD,MAA5CP,KAAKwd,MAAMm7W,WAAWte,mBAAtB,OACF,EAAAr6W,KAAwB,GAAMA,KAAK05W,wBAAwBz3F,eAAejiR,KAAKwd,MAAMm7W,WAAWte,sB,cAAhG,EAAKgiB,iBAAmB,SACAr8X,KAAKq8X,iBAAiBtnV,cAAclwC,QAAO,SAAAqC,GAAK,OAAAA,EAAEqyV,aAAe,IAAWgb,kBAE9E35W,OAAS,GAAKoF,KAAKq8X,iBAAiBtkB,aAAe,EAChE,GAAM/3W,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAKq8X,iBAAiBtkB,eAC5Br/M,YAAW,SAAOj9I,GAA2B,qC,yDACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK08D,KAAKwpR,I,OAAvB,MAAO,CAAP,EAAO,U,4BANT,M,OACF,MAAO,CAAP,EAAO,U,OAUA,SAAMlmV,KAAK08D,KAAKwpR,I,OAAvB,MAAO,CAAP,EAAO,U,0BAIF,SAAMlmV,KAAK08D,KAAKwpR,I,OAAvB,MAAO,CAAP,EAAO,U,2BAKdj6U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OA/E5B,MAAO,CAAP,EAAO,kBAmFT,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAKwuX,cAAcpxW,OAAO7C,c,gCAG5B,YAAAyyX,iBAAR,sBAEE,GAAyB,MAApBhtY,KAAKwd,MAAMovX,OAAqC,IAApB5sY,KAAKwd,MAAMovX,QAAiBtrX,MAAMthB,KAAKwd,MAAMmvX,mBAAoB,CAChG,IAAIM,EAAUjtY,KAAK8mV,UAAUjiV,QAAO,SAAAk1D,GAAK,OAAAA,EAAEx9C,KAAO,EAAKiB,MAAMmvX,qBAC7D3sY,KAAKwd,MAAMovX,MAAQ,IAAMK,EAAQ,GAAGC,UAAY,IAAMltY,KAAKwd,MAAMovX,QAKvD,YAAAlwU,KAAd,SAAmBsvR,G,qBAA2BhwV,GAAO,W,oGAEjDgE,KAAKgtY,mBACDhtY,KAAKwd,MAAMqtD,MACa,GAAM7qE,KAAKwuX,cAAc5jT,YAAY5qE,KAAKwd,MAAMqtD,QADxE,O,cACEsiU,EAAsB,UAEjB,GAAMntY,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO2vX,IACNz0O,YAAW,SAAOj9I,GAA2B,qC,+DACzCA,EAASw9B,aAAV,OAEF,EAAAj5C,KAAa,GAAMA,KAAKwuX,cAAcvvX,OAAOe,KAAKwd,S,cAAlD,EAAKA,MAAQ,SACTxd,KAAKg6Q,WAAah6Q,KAAKs/X,sBACzBt/X,KAAKotY,aAGPptY,KAAK8iJ,aAAaxiJ,QAAQ,4BACtB0rV,GACFrjL,eAAeltF,WAAW,oBAEnB,GAAMz7E,KAAK8F,OAAOkD,gBAAgB,sBAAuB,CAAEoiD,SAAUprD,KAAKwd,MAAMjB,OAHrF,M,OAGF,MAAO,CAAP,EAAO,U,OAGA,OADPosJ,eAAeltF,WAAW,oBACnB,GAAMz7E,KAAK8F,OAAOkD,gBAAgB,W,OAAzC,MAAO,CAAP,EAAO,U,4BAnBX,M,OACF,MAAO,CAAP,EAAO,U,OAyBM,OAAb,EAAAhJ,KAAa,GAAMA,KAAKwuX,cAAcvvX,OAAOe,KAAKwd,Q,OAAlD,EAAKA,MAAQ,SACTxd,KAAKg6Q,WAAah6Q,KAAKs/X,sBACzBt/X,KAAKotY,aAEPptY,KAAK8iJ,aAAaxiJ,QAAQ,4B,wBAExB0rV,GACFrjL,eAAeltF,WAAW,oBAEnB,GAAMz7E,KAAK8F,OAAOkD,gBAAgB,sBAAuB,CAAEoiD,SAAUprD,KAAKwd,MAAMjB,OAHrF,M,OAGF,MAAO,CAAP,EAAO,U,OAGA,OADPosJ,eAAeltF,WAAW,oBACnB,GAAMz7E,KAAK8F,OAAOkD,gBAAgB,W,OAAzC,MAAO,CAAP,EAAO,U,4BAII,OAAb,EAAAhJ,KAAa,GAAMA,KAAKwuX,cAAcvvX,OAAOe,KAAKwd,Q,eAAlD,EAAKA,MAAQ,SACTxd,KAAKg6Q,WAAah6Q,KAAKs/X,sBACzBt/X,KAAKotY,aAEPptY,KAAK8iJ,aAAaxiJ,QAAQ,4BACtB0rV,GACFrjL,eAAeltF,WAAW,oBAEnB,GAAMz7E,KAAK8F,OAAOkD,gBAAgB,sBAAuB,CAAEoiD,SAAUprD,KAAKwd,MAAMjB,OAHrF,O,QAGF,MAAO,CAAP,EAAO,U,QAGA,OADPosJ,eAAeltF,WAAW,oBACnB,GAAMz7E,KAAK8F,OAAOkD,gBAAgB,W,QAAzC,MAAO,CAAP,EAAO,U,+CAKXhJ,KAAK8iJ,aAAahmJ,MAAM,EAAMA,O,iCAI1B,YAAAsgY,UAAR,SAAkB7kC,GAChBv4V,KAAKs/X,qBAAuB/mC,EACvBA,IACHv4V,KAAKg6Q,UAAYu+E,GAEnBv4V,KAAKwd,MAAMm7W,WAAW5uV,iBAAmB,KACzC/pC,KAAKwd,MAAMm7W,WAAWte,mBAAqB,KAC3Cr6W,KAAK+6X,sBAAwB,CAC3BC,IAAK,EACLC,IAAK,EACLlmV,cAAe,GACfmmV,gBAAgB,EAChBC,kBAAkB,EAClBC,YAAY,GAEdp7X,KAAKwd,MAAMm7W,WAAWzjL,eAAiB,GACvCl1M,KAAKwd,MAAM+lI,eAAiB,MAMtB,YAAAu6O,uBAAR,WAEE99X,KAAK8F,OAAOyC,SAAS,YAAYvI,KAAKie,UAAS,uEAGzC,YAAAo/W,oBAAR,sBACEr9X,KAAK86X,kBAAoB,GAEpB96X,KAAKu6V,oBAAuBv6V,KAAK66X,kBAGF,GAA3B76X,KAAKu6V,oBAA6D,IAAlCv6V,KAAK66X,kBAAkBjgY,OAC9DoF,KAAK86X,kBAAoB96X,KAAK+0C,cAEvB/0C,KAAK66X,kBAAkBjgY,OAAS,GAAKoF,KAAKu6V,mBAAqB,EACtEv6V,KAAK86X,kBAAoB96X,KAAK+0C,cAAclwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAE59D,KAAK6d,cAAcvE,SAAS,EAAK6jX,kBAAkBt/W,gBAAkB+/C,EAAEtxB,aAAe,EAAKuwT,sBAE9Iv6V,KAAK66X,kBAAkBjgY,OAAS,EACvCoF,KAAK86X,kBAAoB96X,KAAK+0C,cAAclwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAE59D,KAAK6d,cAAcvE,SAAS,EAAK6jX,kBAAkBt/W,kBAEtGvb,KAAKu6V,mBAAqB,IAEjCv6V,KAAK86X,kBAAoB96X,KAAK+0C,cAAclwC,QAAO,SAAAy2D,GAAK,OAAAA,EAAEtxB,YAAc,EAAKuwT,uBAb7Ev6V,KAAK86X,kBAAoB96X,KAAK+0C,eAiBpB,YAAAuoV,yBAAd,W,4GACMt9X,KAAKu9X,uBAAuB3iY,OAAS,GACvCoF,KAAK27X,uBAAyB37X,KAAKy7X,kBAAkB52X,QAAO,SAAAy2D,GAAK,OAAAA,EAAE59D,KAAK6d,cAAcvE,SAAS,EAAKumX,uBAAuBhiX,kBAC3Hvb,KAAKwd,MAAMm7W,WAAWte,mBAAqBr6W,KAAK27X,uBAAuB,GAAGp/W,GAC1E,GAAMvc,KAAK67X,cAAc77X,KAAKwd,MAAMm7W,WAAWte,sBAH7C,M,cAGF,S,aAIsC,MAA/Br6W,KAAKu9X,wBAAwE,GAAtCv9X,KAAKu9X,uBAAuB3iY,SAC1EoF,KAAK27X,uBAAyB,GAC9B37X,KAAK27X,uBAAyB37X,KAAKy7X,kBACnCz7X,KAAKwd,MAAMm7W,WAAWte,mBAAqB,M,mCAKjC,YAAAmjB,eAAd,W,4GACMx9X,KAAK02X,aAAa97X,OAAS,GAC7BoF,KAAK47X,aAAe57X,KAAKo2X,gBAAgBvxX,QAAO,SAAAy2D,GAAK,OAAAA,EAAE59D,KAAK6d,cAAcvE,SAAS,EAAK0/W,aAAan7W,kBACrGvb,KAAKwd,MAAMm7W,WAAW5uV,iBAAmB/pC,KAAK47X,aAAa,GAAGr/W,GAC9D,GAAMvc,KAAK22X,aAAa32X,KAAKwd,MAAMm7W,WAAW5uV,oBAH5C,M,cAGF,S,oBAE4B,MAArB/pC,KAAK02X,cAAoD,GAA5B12X,KAAK02X,aAAa97X,OAA/C,OACPoF,KAAK47X,aAAe,GACpB57X,KAAK47X,aAAe57X,KAAKo2X,gBACzBp2X,KAAKwd,MAAMm7W,WAAW5uV,iBAAmB,KACzC,GAAM/pC,KAAK22X,aAAa32X,KAAKwd,MAAMm7W,WAAW5uV,oB,OAA9C,S,mCAKI,YAAAg0V,qBAAR,WAEE/9X,KAAK8F,OAAOyC,SAAS,YAAYvI,KAAKie,UAAS,mEAGpC,YAAAgpX,sBAAb,W,qBAAsCjrY,GAAO,W,0DAE3CgE,KAAKC,OAAO0zC,MAAM,gB,iBAGM,O,sBAAtB,EAAA3zC,KAAsB,GAAMA,KAAKo2W,sBAAsB95V,QAAQtc,KAAK+uX,OAAOhlV,mB,cAA3E,EAAK+sV,eAAiB,SACtB92X,KAAK+uX,OAAO9wW,UAAYje,KAAKie,UAC7Bje,KAAK+uX,OAAOhmV,OAAS/oC,KAAK82X,eAAe/tV,OACzC/oC,KAAKg3X,cAAch3X,KAAK+uX,OAAOhmV,OAAOpkC,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,O,+BAEjDvc,KAAK8iJ,aAAahmJ,MAAM,G,+BAIpB,YAAAk6X,cAAR,SAAsBp2O,GAAtB,WAEE5gJ,KAAK+uX,OAAOzxW,WAAa,GAEzBtd,KAAK+uX,OAAOhmV,OAAO5hC,SAAQ,SAAAyqW,GAEzB,IAAe,IADDhxN,EAASsyB,WAAU,SAAAhsK,GAAK,OAAAA,GAAK0qW,EAAMr1V,MAE/C,I,eAASm7W,IAES,IADD,EAAK3I,OAAOzxW,WAAW41J,WAAU,SAAAhsK,GAAK,OAAAA,IAAMwwX,EAAIC,cAE7D,EAAK5I,OAAOzxW,WAAWpiB,KAAKw8X,EAAIC,YAHpB,MAAA/lB,EAAMt0V,WAAN,eAAkB,C,EAAtB,UAShBtd,KAAKC,OAAO0zC,MAAM,eAAgB3zC,KAAK+uX,OAAOzxW,aAGlC,YAAA8vX,WAAd,W,qBAA4BpxY,GAAO,W,0DAIjB,O,sBAFdgE,KAAK+uX,OAAO3jU,SAAWprD,KAAKwd,MAAMjB,GAClCvc,KAAK+uX,OAAOtjU,aAAezrD,KAAKwd,MAAMm7W,WAAWp8W,GACjD,EAAAvc,KAAc,GAAMA,KAAK2yX,cAAc1zX,OAAOe,KAAK+uX,S,cAAnD,EAAKA,OAAS,S,+BAEd/uX,KAAK8iJ,aAAahmJ,MAAM,G,+BAKrB,YAAA8qW,iBAAP,SAAwBnqW,GACtBuC,KAAK8iJ,aAAa3iJ,KAAK1C,IAv6Bd4vY,EAAsB,GADlC,uB,uBAqDyC,mB,OAAA,IAAd,UAAc,SAChB,mBADgB,OAChB,IAAN,oBAAM,SACK,mBADL,OACK,IAAZ,UAAY,SACS,mBADT,OACS,IAAb,UAAa,SACA,mBADA,OACA,IAAb,UAAa,SACF,mBADE,OACF,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACR,mBADQ,OACR,IAAvB,UAAuB,SACJ,mBADI,QACJ,IAArB,UAAqB,UACR,mBADQ,QACR,IAAnB,UAAmB,UACf,mBADe,QACf,IAAf,sCAAe,UACO,mBADP,QACO,IAAb,kCAAa,UACE,mBADF,QACE,IAAd,UAAc,UACd,mBADc,QACd,IAAP,UAAO,UACoC,mBADpC,QACoC,IAAzB,UAAyB,UACV,mBADU,QACV,IAApB,UAAoB,UAChC,mBADgC,QAChC,IAAJ,gBAAI,aApETA,GAAb,I,wFCvDA3xY,EAAOD,QAAU,i1jB,y9DCejB,aAME,WACUsE,EACAikV,EACAwqC,EACA8e,EACAlhL,GAJA,KAAArsN,OACA,KAAAikV,mBACA,KAAAwqC,gBACA,KAAA8e,kBACA,KAAAlhL,uBAERpsN,KAAKC,OAAS,aAAWC,UAAU,qB,cA+DvC,OA1De,YAAA+V,gBAAb,SAA6BzT,EAA6BsD,G,qBAAiB9J,GAAO,W,uEAC1EiiB,EAAYje,KAAKstY,gBAAgBrrP,uBACjC72F,EAAWprD,KAAKstY,gBAAgBnrP,sBAElCihM,EAAoC,KACpCmqD,GAA+B,EAE/BtvX,EAEgB,GAAMje,KAAKgkV,iBAAiB7rQ,yCAAyCl6D,IAFrF,M,OAGW,OADbmlU,EAAkB,SACL,GAAMpjV,KAAKwuX,cAAclyW,QAAQ8uC,I,OAA1CyqG,EAAS,SACb03O,EAAqB13O,EAAO03O,mB,wBAI9BvtY,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,gBACVoD,KAAM,cACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,wCAGtB,CACEqC,MAAO,SACPpI,SAAU,sCACVoD,KAAM,qBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,kDAEtB,CACEqC,MAAO,iBACPpI,SAAU,8DACVoD,KAAM,6BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,sEAGtB,CACEqC,MAAO,eACPpI,SAAU,oDACVoD,KAAM,4BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,8DAGtB,CACEqC,MAAO,cACPpI,SAAU,kDACVoD,KAAM,2BACN6S,OAAQ6yU,GAAmBA,EAAgBi2B,gBAAkBk0B,GAC7DjmY,MAAOtH,KAAKD,KAAKM,GAAG,4D,YAvEfmtY,EAAiB,GAD7B,a,uBAQqB,mB,OAAA,IAAJ,gBAAI,SACwB,mBADxB,OACwB,IAAhB,UAAgB,SACN,mBADM,OACN,IAAb,UAAa,SACI,mBADJ,OACI,IAAf,UAAe,SACU,mBADV,OACU,IAApB,gDAAoB,YAXzCA,GAAb,I,iFCfA9xY,EAAOD,QAAU,8M,m8DCYjB,aAOE,WACU6lD,EACAwhG,EACA4iM,EACA8oC,GAHA,KAAAltU,mBACA,KAAAwhG,eACA,KAAA4iM,8BACA,KAAA8oC,gBAERxuX,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,qBACnCF,KAAK2lV,2B,YAeT,OAZgB,YAAA/sU,SAAd,SAAuBpY,G,qBAAexE,GAAO,W,kCAC3CgE,KAAKytY,eAAiB5yY,OAAOgI,OAAO,IAAI,IAAUrC,G,WAE5C,YAAAmlV,yBAAR,aAMa,YAAAvqO,OAAb,W,qBAAuBp/G,GAAO,W,kDACrB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBA9BE8nU,EAAiB,GAD7B,uB,uBAS6C,mB,OAAA,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAC5B,mBAD4B,OAC5B,IAAb,UAAa,YAX3BA,GAAb,K,iFCZAhyY,EAAOD,QAAU,k3B,2zEC8BjB,aAkBE,WACUm/D,EACA90D,EACAg9I,EACA0rO,EACAmE,EACA0Q,EACAxc,EACAse,EACAjhD,EACA7pU,GATA,KAAAugD,QACA,KAAA90D,SACA,KAAAg9I,eACA,KAAA0rO,gBACA,KAAAmE,gBACA,KAAA0Q,+BACA,KAAAxc,oBACA,KAAAse,iBACA,KAAAjhD,gBACA,KAAA7pU,KApBF,KAAAw7I,OAAiB,IAAI,IAErB,KAAAytO,oBAA8B,EAG9B,KAAAqK,mBAA6B,EAC7B,KAAAC,kBAA4B,EAE5B,KAAA74O,cAA8B,GAepC/0J,KAAKC,OAAS,aAAWC,UAAU,gBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MAGxB7Q,KAAK+0J,cAAc75J,KAAK8E,KAAKqa,GAAGtF,UAAU,IAAkC/U,KAAKujY,yBAAyBpkY,KAAKa,MAAM,K,wBAmMzH,OA/Le,YAAA4Y,SAAb,SAAsBxY,EAAaytY,G,qBAA4B7xY,GAAO,W,0DACpEgE,KAAKC,OAAO0zC,MAAM,Y,8CAGXryB,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKie,WAAa7d,EAAO6d,UAErBje,KAAKie,WAEPje,KAAKwuX,cAAcpxW,OAAO87B,iBAAmBl5C,KAAKie,UAE7CqD,MAAMlhB,EAAOgrD,UAAd,OAEF,EAAAprD,KAAc,GAAMA,KAAKwuX,cAAclyW,SAASlc,EAAOgrD,aANvD,O,OAWA,OALA,EAAKyqG,OAAS,SAKd,GAAM71J,KAAK8tY,kB,OACX,OADA,SACA,GAAM9tY,KAAK+tY,2B,OACX,OADA,SACA,GAAM/tY,KAAKguY,0B,OAAX,S,sDAMNhuY,KAAK8iJ,aAAahmJ,MAAM,EAAMA,O,+BAIpB,YAAAymY,yBAAd,SAAuCE,G,YAAA,IAAAA,OAAA,G,cAA4BznY,GAAO,W,+DACrEgE,KAAKsjY,oBAAsBG,GAC5B,EAAAzjY,KAAuB,GAAMA,KAAKqjY,6BAA6B7kY,IAAIwB,KAAK61J,OAAOt5I,MAD9E,M,OACD,EAAKmnX,gBAAkB,SACvB1jY,KAAKsjY,oBAAqB,E,mCAIhB,YAAAwK,eAAd,W,gGACqB,OAAnB,EAAA9tY,KAAmB,GAAMA,KAAK6mX,kBAAkB50N,iBAAiBjyJ,KAAK61J,OAAOt5I,K,cAA7E,EAAK+kI,YAAc,S,YAGP,YAAAysP,wBAAd,W,0EACE/tY,KAAK2tY,kBAAoB3tY,KAAKshJ,YAAYz8I,QAAO,SAAAqC,GAAK,OAAAA,EAAE26X,sBAAwB,IAAqBC,gBAAclnY,OAAS,E,WAGhH,YAAAozY,uBAAd,W,0EACEhuY,KAAK4tY,iBAAmB5tY,KAAKshJ,YAAYz8I,QAAO,SAAAqC,GAAK,OAAAA,EAAE26X,sBAAwB,IAAqB3nC,YAAUt/V,OAAS,E,WAG3G,YAAA+oY,iBAAd,W,qBAAkC3nY,GAAO,W,+DAMhC,OALHwE,EAAmB,IAAI,KACtByd,UAAYje,KAAKie,UACtBzd,EAAK6zX,eAAiB,IAAe/6B,OACrC94V,EAAKqhY,qBAAuB,IAAqB+B,OAE1C,GAAM5jY,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,OACFj5C,KAAKC,OAAO0zC,MAAM,kBAAmBl4B,EAASxR,QAEvC,GAAMjK,KAAK6mX,kBAAkB5nX,OAAOuB,EAAMR,KAAK61J,OAAOt5I,IAC1DpZ,MAAK,SAAOqa,GAAiB,qC,+DAC5Bhd,EAAK+b,GAAKiB,EAAMjB,GAEbd,EAASxR,QACN8kX,EAAS,IAAI,KACjBA,EAAStzW,EAASxR,QACXwhD,aAAejuC,EAAMjB,GAC5BwyW,EAAO3jU,SAAWprD,KAAK61J,OAAOt5I,GACrB,GAAMvc,KAAK2yX,cAAc1zX,OAAO8vX,KALxC,M,OAKDA,EAAS,S,wBAGX/uX,KAAK8iJ,aAAaxiJ,QAAQ,4BAG1BN,KAAKqa,GAAGb,QAAQ,IAAI,K,cAGrBvN,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,Q,OAnB5B,MAAO,CAAP,EAAO,U,mCAPX,MAAO,CAAP,EAAO,kBAgCK,YAAAmxY,kBAAd,W,qBAAmCjyY,GAAO,W,+DAMjC,OALHwE,EAAmB,IAAI,KACtByd,UAAYje,KAAKie,UACtBzd,EAAK6zX,eAAiB,IAAe/6B,OACrC94V,EAAKqhY,qBAAuB,IAAqB3nC,SAE1C,GAAMl6V,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK6mX,kBAAkB5nX,OAAOuB,EAAMR,KAAK61J,OAAOt5I,IAC1DpZ,MAAK,SAAOqa,GAAiB,qC,kDAKrB,OAJPhd,EAAK+b,GAAKiB,EAAMjB,GAChBvc,KAAK8iJ,aAAaxiJ,QAAQ,4BAE1BN,KAAKqa,GAAGb,QAAQ,IAAI,KACb,GAAMxZ,KAAK8F,OAAOyC,SAAS,YAAYvI,KAAKie,UAAS,mCAAmCje,KAAK61J,OAAOt5I,GAAE,cAAc/b,EAAK+b,K,OAAhI,MAAO,CAAP,EAAO,oBAERtQ,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAqBK,YAAA06G,cAAd,W,qBAA+Bx7G,GAAO,W,+DAI7B,OAHHwE,EAAgB,IAAI,KACnB4qD,SAAWprD,KAAK61J,OAAOt5I,GAErB,GAAMvc,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,OACFj5C,KAAKC,OAAO0zC,MAAM,kBAAmBl4B,EAASxR,QAEvC,GAAMjK,KAAKmlY,eAAelmY,OAAOuB,EAAMR,KAAK61J,OAAOt5I,IACvDpZ,MAAK,SAAOqa,GAAc,qC,kCACzBhd,EAAK+b,GAAKiB,EAAMjB,GAEhBvc,KAAK8iJ,aAAaxiJ,QAAQ,4BAG1BN,KAAKqa,GAAGb,QAAQ,IAAI,K,aAGrBvN,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,Q,OAX5B,MAAO,CAAP,EAAO,U,mCAPX,MAAO,CAAP,EAAO,kBAwBK,YAAA2hY,uBAAd,SAAqCliX,G,qBAAavgB,GAAO,W,wDAErD,O,sBAAA,GAAMgE,KAAKwuX,cAAc/jT,aAAaluD,I,OAEtC,OAFA,SACAvc,KAAK8iJ,aAAaxiJ,QAAQ,wCACnB,CAAP,GAAO,G,yBAGPN,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAA85V,cAAd,SAA4BxrS,G,qBAAmBpvD,GAAO,W,6DAC7C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO4tC,IACNstG,YAAW,SAAOj9I,GAA2B,qC,yDACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKy+X,uBAAuBrzU,I,OAAzC,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAlME8iV,EAAU,GADtB,uB,uBAoB8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,UAAa,SACA,mBADA,OACA,IAAb,UAAa,SAC8B,mBAD9B,OAC8B,IAA5B,UAA4B,SACtB,mBADsB,OACtB,IAAjB,UAAiB,SACN,mBADM,OACN,IAAd,UAAc,SACF,mBADE,OACF,IAAb,kCAAa,SACT,mBADS,OACT,IAAf,sCAAe,YA5BlBA,GAAb,I,2EC9BAxyY,EAAOD,QAAU,qqK,y5DCMjB,aAGE,WAEU6lD,EACAktU,GADA,KAAAltU,mBACA,KAAAktU,gBAERxuX,KAAKuc,GAAK,K,QAMd,OAHe,YAAA3D,SAAb,SAAsB2D,G,gGACP,OAAb,EAAAvc,KAAa,GAAMA,KAAKwuX,cAAclyW,QAAQC,I,cAA9C,EAAKiB,MAAQ,S,YAZJ2wX,EAAW,GADvB,uB,uBAM6C,mB,OAAA,IAAhB,wCAAgB,SACN,mBADM,OACN,IAAb,UAAa,YAN3BA,GAAb,K,uFCNAzyY,EAAOD,QAAU,43B,g2EC8BjB,aA4CC,WACSm/D,EACA4zT,EACAxqC,EACAoqD,EACAlqD,EACAphM,EACA1oI,EACAkxV,EACAkhC,GATT,WACS,KAAA5xU,QACA,KAAA4zT,gBACA,KAAAxqC,mBACA,KAAAoqD,yBACA,KAAAlqD,gBACA,KAAAphM,eACA,KAAA1oI,iBACA,KAAAkxV,qBACA,KAAAkhC,UAlDD,KAAApsY,OAAc,GAMd,KAAAy3J,sBAAgC,EAIhC,KAAAv6I,WAAoC,IAAI,wBACxC,KAAA+wX,mBAA4C,IAAI,wBAIhD,KAAA9hD,UAAoB,EACpB,KAAA7rM,iBAA2B,EAE3B,KAAA+wO,UAAY,oGAA2GtuW,KAAKk3D,SAI5H,KAAAq3S,aAAe,IACf,KAAA71W,SAAW,IAAIuhO,MAGd,KAAAi8H,gBAA2B,EAE5B,KAAArsH,QAAU,6BAAUhxP,GAAO,W,+DAI3B,OAHPgE,KAAKC,OAAO0zC,MAAM,cACd9J,EAAS7pC,KAAKsd,WAAWusB,OAAOylT,MACpC3mL,eAAentF,QAAQ,mBAA8B,MAAV3xC,EAAiB,GAAKA,GAC1D,GAAM7pC,KAAKwuX,cAAc16W,KAAK9T,KAAKsd,YACxCna,MAAK,SAACsY,GACN,OAAOA,KAEPxP,OAAM,SAAAnP,GACN,EAAKgmJ,aAAahmJ,MAAMA,O,OAL1B,MAAO,CAAP,EAAO,kBAoBPkD,KAAKC,OAAS,aAAWC,UAAU,cAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,sBA0N1B,OAvNe,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,wDAItD,OAHfgE,KAAKC,OAAO0zC,MAAM,YAClB3zC,KAAKsd,WAAWusB,OAAOylT,MAAQ3mL,eAAexsF,QAAQ,oBAEtD,EAAAn8E,KAAe,GAAMA,KAAKoa,eAAe0zI,c,cAAzC,EAAKvkG,QAAU,SACfvpD,KAAKwsY,QAAQljV,SAAStpD,KAAKupD,QAAS,IAAqBiB,YAErDxqD,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACrDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFf,M,OAEH,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAIF,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,sEAC5BgE,KAAKC,OAAO0zC,MAAM,QAEbryB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACHje,KAAKC,OAAO0zC,MAAM,sBAAuB3zC,KAAKI,OAAO6d,WACrDje,KAAKie,WAAaje,KAAKI,OAAO6d,UAC1Bje,KAAKie,WAERje,KAAKwuX,cAAcpxW,OAAO87B,iBAAmBl5C,KAAKie,UAClDje,KAAKouY,uBAAuBhxX,OAAO87B,iBAAmBl5C,KAAKie,UAC3Dje,KAAK0e,QAAU1e,KAAK6Q,MAAMskJ,UAAUnvJ,MAAK,SAAAkB,GAAK,OAAAA,EAAEqV,IAAM,EAAK0B,aAE3D,GAAMje,KAAKsuY,gBAAgBtuY,KAAKie,aAN7B,O,OAQW,OAFd,SAEc,GAAMje,KAAKgkV,iBAAiBzsQ,qBAAqBv3E,KAAKie,Y,cAAhE1d,EAAU,WACCA,EAAQguY,wBAA0BhuY,EAAQiuY,QACxD,GAAMxuY,KAAKyuY,gCADR,M,OACH,S,iBAYM,OATPzuY,KAAK0uY,yBAEL1uY,KAAKusV,UAAW,EAEhBvsV,KAAKq6E,OAASl3D,KAAKE,MAAsB,GAAhBF,KAAKk3D,UAEX,GAAfr6E,KAAKq6E,QACRr6E,KAAKmyX,cAEC,GAAMnyX,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yBAMI,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAEzB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UAChB7pP,MAAK,SAACsY,GAEN,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAExCxzU,OAAM,SAAAnP,GACN,EAAKgmJ,aAAahmJ,MAAMA,O,OAP1B,MAAO,CAAP,EAAO,kBAWM,YAAA2xY,6BAAd,W,qBAA8CzyY,GAAO,W,kDAC7C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACpC1tC,UAAW,IACXyP,MAAO,CAAES,UAAWje,KAAKie,c,OAF1B,MAAO,CAAP,EAAO,kBAMM,YAAAsqT,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDAC1C,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGM,YAAAtzT,OAAd,SAAqBtc,G,qBAAOxE,GAAO,W,6DAC3B,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACpC1tC,UAAW,IACXyP,MAAOhd,IACLk4J,YAAW,SAAOj9I,GAA2B,qC,oEAC1CA,EAASw9B,aAAV,MAEI,GAAMj5C,KAAKwuX,cAAc1xW,OAAOtc,EAAK+b,IAC1CpZ,MAAK,WACL,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ7Q,EAAK+b,GAAGyC,YACrG,EAAK1B,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAK3hM,aAAaxiJ,QAAQ,iCAE1B2L,OAAM,SAAAnP,GACN,EAAKgmJ,aAAahmJ,MAAMA,O,OAP1B,MAAO,CAAP,EAAO,U,mCANT,MAAO,CAAP,EAAO,kBAoBM,YAAA2hY,uBAAd,SAAqCliX,G,qBAAavgB,GAAO,W,wDAEvD,O,sBAAA,GAAMgE,KAAKwuX,cAAc/jT,aAAaluD,I,OAEtC,OAFA,SACAvc,KAAK8iJ,aAAaxiJ,QAAQ,wCACnB,CAAP,GAAO,G,yBAGPN,KAAK8iJ,aAAahmJ,MAAM,G,+BAKZ,YAAAioY,qBAAd,W,qBAAsC/oY,GAAO,W,+DAC3B,SAAMgE,KAAKwuX,cAAchkT,gBAAgBxqE,KAAKsd,a,OACxD,OADHktC,EAAa,SACV,GAAMxqD,KAAKkkV,cAAczoS,KAAK,CACpC1tC,UAAW,IACXyP,MAAOgtC,EAAW5vD,SAChB89J,YAAW,SAAOj9I,GAA2B,qC,oEAC1CA,EAASw9B,aAAV,MAEI,GAAMj5C,KAAKwuX,cAAcjkT,sBAAsB/f,GACpDrnD,MAAK,WAEL,OADA,EAAK2/I,aAAaxiJ,QAAQ,8CACnB,M,OAHT,MAAO,CAAP,EAAO,U,mCANT,MAAO,CAAP,EAAO,kBAeM,YAAAs2V,cAAd,SAA4BxrS,G,qBAAmBpvD,GAAO,W,6DAE9C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACpC1tC,UAAW,IACXyP,MAAO4tC,IACLstG,YAAW,SAAOj9I,GAA2B,qC,yDAC1CA,EAASw9B,aAAV,MAEI,GAAMj5C,KAAKy+X,uBAAuBrzU,I,OAAzC,MAAO,CAAP,EAAO,U,mCANT,MAAO,CAAP,EAAO,kBAWM,YAAAmrT,aAAd,W,qBAA8Bv6W,GAAO,W,kDAEpC,OADAgE,KAAKsd,WAAWusB,OAAOylT,MAAQtvV,KAAKsd,WAAWusB,OAAO8wO,UAAY36Q,KAAKsd,WAAWusB,OAAO+wO,QAAU,KACnG,GAAM56Q,KAAKukV,Y,cAAX,S,YAGa,YAAAmqD,uBAAd,W,kGAEyB,O,sBAAvB,EAAA1uY,KAAuB,GAAMA,KAAKouY,uBAAuB1tP,mB,cAAzD,EAAKA,gBAAkB,S,+BAEvB1gJ,KAAK8iJ,aAAahmJ,MAAM,G,+BAIZ,YAAAwxY,gBAAd,SAA8BrwX,G,oGAEb,O,sBAAA,GAAMje,KAAKgkV,iBAAiBvsQ,qBAAqBx5D,I,OAKxC,OAHV,OAFP1a,EAAQ,YAGdvD,KAAKuD,KAAOA,GAEW,GAAMvD,KAAKgkV,iBAAiB7rQ,yCAAyCl6D,I,cAAvFmlU,EAAkB,YAEvBpjV,KAAKq5W,eAAiBj2B,EAAgBi2B,gB,+BAGvCr5W,KAAK8iJ,aAAahmJ,MAAM,G,+BAIZ,YAAA6xY,UAAd,SAAwBvjV,G,qBAAmBpvD,GAAO,W,+DACxB,SAAMgE,KAAKwuX,cAAclkT,+BAA+Blf,EAAS,IAAgBwjV,Y,cAApGC,EAAmB,UAED,EAChB,GAAM7uY,KAAKkkV,cAAczoS,KAAK,CACpC1tC,UAAW,IACXyP,MAAOqxX,IACLn2O,YAAW,SAAOj9I,GAA2B,qC,yDAC1CA,EAASw9B,aAAV,MACH,GAAMj5C,KAAK8uY,YAAY1jV,I,OAAvB,S,sCANE,M,OACJ,MAAO,CAAP,EAAO,U,OASR,SAAMprD,KAAK8uY,YAAY1jV,I,cAAvB,S,YAGa,YAAA0jV,YAAd,SAA0B1jV,G,qBAAmBpvD,GAAO,W,mCACnD,IAEKq8X,EAAiB,IAAO70T,eACtB/6D,EAAM,YAAS4vX,GAAkB,aAAar4X,KAAKie,UAAS,IAAImtC,EACtEzrD,OAAO87C,KAAKhzC,EAAK,UAChB,MAAO3L,GACRkD,KAAK8iJ,aAAahmJ,MAAMA,EAAMA,O,iBAGxB,YAAAq1X,YAAP,sBACEnyX,KAAK6b,SAAS3e,OAAS,WACxB,EAAKg3C,SAAU,IAAK76B,MAAQmI,UAC5B,EAAK6wW,sBAENryX,KAAK0xC,WAAY,IAAKr4B,MAAQmI,UAC9BxhB,KAAK6b,SAASlf,IAAMqD,KAAKyxX,WAEhB,YAAAY,mBAAP,WACF,IAAIC,EACAC,EACA53V,GAAY36B,KAAKk0C,QAAUl0C,KAAK0xC,WAAa,IAC7C8gV,EAAiC,EAApBxyX,KAAK0xX,aAEtBY,EAAWvuU,QAAQyuU,EAAa73V,GAAU6L,QAAQ,IAClD+rV,EAAYxuU,QAAQuuU,EAAW,MAAM9rV,QAAQ,IAC7Bud,QAAQwuU,EAAY,MAAM/rV,QAAQ,IAElC,GACfxmC,KAAK8iJ,aAAaviJ,QAAQ,yCA/QhBwuY,EAAU,GADtB,uB,uBA8C4B,mB,OAAA,IAAZ,UAAY,SACS,mBADT,OACS,IAAb,UAAa,SACM,mBADN,OACM,IAAhB,UAAgB,SACY,mBADZ,OACY,IAAtB,UAAsB,SAClB,mBADkB,OAClB,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACI,mBADJ,OACI,IAAd,UAAc,SACQ,mBADR,OACQ,IAAlB,UAAkB,SACtB,mBADsB,OACtB,IAAP,UAAO,YArDbA,GAAb,I,oqBCnBA,aAKE,WACUhvY,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAGRpsN,KAAKC,OAAS,aAAWC,UAAU,yB,QA6DvC,OA1DS,YAAA+V,gBAAP,SAAuBzT,EAA6BsD,GAClD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,gBACVoD,KAAM,UAGR,CACEgF,MAAO,mBACPpI,SAAU,uDACVoD,KAAM,oCACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,2CAGtB,CACEqC,MAAO,SACPpI,SAAU,6BACVoD,KAAM,2BACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,mDAGtB,CACEqC,MAAO,mBACPpI,SAAU,wBACVoD,KAAM,uBAGR,CACEgF,MAAO,kCACPpI,SAAU,0CACVoD,KAAM,4BAGR,CACEgF,MAAO,mBACPpI,SAAU,oDACVoD,KAAM,iCAGR,CACEgF,MAAO,wCACPpI,SAAU,4CACVoD,KAAM,4BACN4J,MAAOtH,KAAKD,KAAKM,GAAG,wDAEtB,CACEqC,MAAO,sBACPpI,SAAU,0DACVoD,KAAM,mCACN4J,MAAOtH,KAAKD,KAAKM,GAAG,wEAlEf2uY,EAAqB,GADjC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,qECXAtzY,EAAOD,QAAU,+G,0DCAjBC,EAAOD,QAAU,i3HAA+5H,EAAQ,KAAoD,65CAAu6C,EAAQ,KAAwD,uQAA2Q,EAAQ,KAA4D,olI,s6DCUlyL,aAYE,WACU6lD,EACAktU,EACA1rO,GAFA,KAAAxhG,mBACA,KAAAktU,gBACA,KAAA1rO,eAPF,KAAAuqO,aAAuB,KACvB,KAAA4hB,eAAyB,KAQ/BjvY,KAAKC,OAAS,aAAWC,UAAU,wBAGnC,IAAImtX,EAAe,IAAO9pT,eAC1BvjE,KAAKqtX,aAAeA,E,UAqCxB,OAlCe,YAAAz0W,SAAb,SAAsBwyC,G,qBAAmBpvD,GAAO,W,0DAC9CgE,KAAKC,OAAO0zC,MAAM,WAAYyX,GAC9BprD,KAAKorD,SAAWA,E,iBAKG,O,sBAAjB,EAAAprD,KAAiB,GAAMA,KAAKwuX,cAAcvkT,iBAAiB7e,I,cAA3D,EAAKo7T,UAAY,S,+BAEjBxmX,KAAK8iJ,aAAahmJ,MAAM,G,+BAIpB,YAAA8sH,MAAR,WACM5pH,KAAKymX,uBACPzmX,KAAKymX,sBAAsB78P,SAIjB,YAAA1/C,mBAAd,W,uGAEI,O,sBAAA,GAAMlqE,KAAKwuX,cAActkT,mBAAmBlqE,KAAKorD,UAChDjoD,MAAK,SAACsY,GACL,EAAK+qW,UAAY/qW,EACjB,EAAKqnI,aAAaxiJ,QAAQ,uEAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,cAN1B,S,+BASAkD,KAAK8iJ,aAAahmJ,MAAM,G,+BAtDjBoyY,EAAoB,GADhC,uB,uBAc6C,mB,OAAA,IAAhB,wCAAgB,SACN,mBADM,OACN,IAAb,UAAa,SACF,mBADE,OACF,IAAZ,UAAY,YAfzBA,GAAb,K,qFCVAxzY,EAAOD,QAAU,q4D,25DCIjB,aAIE,WAAoB6lD,GAAA,KAAAA,mB,MAOtB,OAJe,YAAA1oC,SAAb,SAAsBi2X,G,0EACpB7uY,KAAK6uY,iBAAmBA,E,WARfM,EAAgC,GAD5C,uB,uBAKuD,mB,OAAA,IAAhB,wCAAgB,YAJ3CA,GAAb,K,iGCJAzzY,EAAOD,QAAU,4vB,qmEC6BjB,aAwBI,WACY2zY,EACAtsP,EACA4iM,EACErrU,EACFvU,EACA/F,EACAmkV,GANA,KAAAkrD,sBACA,KAAAtsP,eACA,KAAA4iM,8BACE,KAAArrU,KACF,KAAAvU,SACA,KAAA/F,OACA,KAAAmkV,gBA5BJ,KAAA4C,UAA2B,GAK3B,KAAAtpU,MAAgB,IAAI,IAIpB,KAAA6xX,gBAA0B,GAC1B,KAAAC,cAAwB,EACxB,KAAAC,gBAA0B,EAC1B,KAAAC,kBAA4B,GAC5B,KAAAC,SAAmB,EAGnB,KAAAzvP,eAAyB,GACzB,KAAA0vP,mBAA6B,EAC7B,KAAAC,kBAAmC,KACnC,KAAA5gB,OAAiB,IAAI,IACrB,KAAA6gB,iBAA2B,GAW/B5vY,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,0BAEnC,IAAIsa,EAAa,IAAOC,aAExBza,KAAK88H,KAAOtiH,EAAa,6C,kBAuQjC,OApQW,YAAAmrU,yBAAP,WACI3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACKi5U,OAAO,aAAapyK,YAAY,qCAAqCwkD,WACrE4tH,OAAO,YAAYpyK,YAAY,oCAAoCwkD,WACnE4tH,OAAO,SAASpyK,YAAY,gCAAgCn8F,QAAQ2gJ,WACpEn+K,GAAGrtC,KAAKwd,OAEb,kBACK47T,OAAO,oBAAoBpyK,YAAY,mDAAmDwkD,WAC1F4tH,OAAO,YAAYpyK,YAAY,kDAAkDwkD,WACjF4tH,OAAO,uBAAuBpyK,YAAY,gEAAgE4wK,SAAS,GACnHwB,OAAO,cAAcpyK,YAAY,uDAAuDwkD,WACxF4tH,OAAO,UAAUpyK,YAAY,mDAAmDwkD,WAChF4tH,OAAO,kBAAkBpyK,YAAY,2DAA2DwkD,WAChG4tH,OAAO,eAAepyK,YAAY,wDAAwDwkD,WAAWmsH,SAAS,GAAGC,SAAS,KAC1HwB,OAAO,uBAAuBpyK,YAAY,8DAA8DwkD,WACxG4tH,OAAO,mBAAmBpyK,YAAY,0DAA0DwkD,WAChG4tH,OAAO,2BAA2BpyK,YAAY,kEAAkEwkD,WAChH4tH,OAAO,qBAAqBpyK,YAAY,4DAA4DwkD,WACpG4tH,OAAO,YAAYpyK,YAAY,qDAAqDwkD,WACpF4tH,OAAO,YAAYpyK,YAAY,qDAAqDwkD,WACpF4tH,OAAO,aAAapyK,YAAY,qDAAqDwkD,WAAWmsH,SAAS,GACzGyB,OAAO,qBAAqBpyK,YAAY,6DAA6DwkD,WAAWmsH,SAAS,GAAGC,SAAS,GACrIwB,OAAO,gBAAgBpyK,YAAY,wDAAwDwkD,WAAWmsH,SAAS,GAC/GyB,OAAO,kBAAkBpyK,YAAY,0DAA0DwkD,WAAWmsH,SAAS,GAAGC,SAAS,GAC/HwB,OAAO,eAAepyK,YAAY,wDAAwDwkD,WAAWmsH,SAAS,GAAGC,SAAS,KAC1HvqS,GAAGrtC,KAAK+uX,SAGJ,YAAAn2W,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,0DAIvC,OAHAgE,KAAKC,OAAOE,KAAK,+BAGjB,GAAMH,KAAK6vY,2B,UAAX,UAGI7vY,KAAKsvY,aAAL,Y,iBAEqB,O,sBAAjB,EAAAtvY,KAAiB,GAAMA,KAAKovY,oBAAoBhvP,gB,cAAhD,EAAK0mM,UAAY,SAEZxlU,MAAMlhB,EAAO6d,aACdje,KAAKie,WAAa7d,EAAO6d,UACzBje,KAAKwd,MAAMS,UAAYje,KAAKie,WAGhCje,KAAKwd,MAAMm7W,WAAa,IAAI,IAC5B34X,KAAKwd,MAAMm7W,WAAWkJ,qBAAuB,IAAqB+B,OAElE5jY,KAAK2lV,2BACL3lV,KAAKyvY,SAAU,E,+BAEfzvY,KAAKC,OAAOnD,MAAM,+BAAgC,GAElDkD,KAAKyvY,SAAU,E,gCAGnBzvY,KAAKyvY,SAAU,E,wBAGnBzvY,KAAKuvY,gBAAiB,EAGtBvvY,KAAK8vY,gB,YAGK,YAAAD,wBAAd,W,qBAAyC7zY,GAAO,W,qEAI5C,GAHMivT,EAAY,IAAIC,gBAAgBvrT,OAAO+7C,SAAS7R,QACtD7pC,KAAKqvY,gBAAkBpkF,EAAUzsT,IAAI,UAAY,IAE5CwB,KAAKqvY,gBAAgB1oV,OAGtB,OAFA3mD,KAAKwvY,kBAAoBxvY,KAAKD,KAAKM,GAAG,qEACtCL,KAAKsvY,cAAe,EACpB,I,iBAKiB,O,sBADjBtvY,KAAKC,OAAOE,KAAK,4CACA,GAAMH,KAAKovY,oBAAoB/uP,cAAcrgJ,KAAKqvY,kB,cAA7D,EAAW,WAKD,EAASjpV,QACrB,GAAMpmD,KAAKD,KAAK2/Q,UAAU,EAASt5N,UADnC,M,OACA,S,wBAGA,GAAY,EAASnlC,SACrBjhB,KAAKsvY,cAAe,EACpBtvY,KAAKwvY,kBAAoB,GACrB,EAASI,mBACT5vY,KAAK4vY,iBAAmB,EAASA,kBAEjC,EAASG,iBACT/vY,KAAKqa,GAAGb,QAAQ,8BAA+B,EAASu2X,gBACxDlyY,YAAW,WACP,EAAKwc,GAAGb,QAAQ,8BAA+B,EAASu2X,kBACzD,KAEHlyY,YAAW,WACP,EAAKwc,GAAGb,QAAQ,8BAA+B,EAASu2X,kBACzD,QAGP/vY,KAAKsvY,cAAe,EACdt3D,EAAc,GAAY,EAASv6U,QACnC,EAASA,QACT,oEACNuC,KAAKwvY,kBAAoBxvY,KAAKD,KAAKM,GAAG23U,I,+BAI1Ch4U,KAAKC,OAAOnD,MAAM,2BAA4B,GAC9CkD,KAAKsvY,cAAe,EACpBtvY,KAAKwvY,kBAAoBxvY,KAAKD,KAAKM,GAAG,qE,+BAItC,YAAAysY,eAAR,SAAuB/rY,EAAashB,GAChC,OAAoBzkB,MAAbmD,EAAIshB,GAAqB,GAAKthB,EAAIshB,IAGhC,YAAA+4F,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAI9C,OAHAgE,KAAKC,OAAOE,KAAK,UAGbH,KAAK0vY,oBAAsB1vY,KAAKggJ,gBAChChgJ,KAAK8iJ,aAAahmJ,MAAMkD,KAAKD,KAAKM,GAAG,iEACrC,KAGG,GAAML,KAAK01U,qBAAqBrnS,WAClClrC,MAAK,SAAO4M,GAAgC,qC,yDACrCA,EAAO4oM,MACA,GAAM34M,KAAK08D,QADlB,M,OACA,MAAO,CAAP,EAAO,U,2BAGdzwD,OAAM,SAAAnP,GACH,EAAKgmJ,aAAahmJ,MAAMA,O,OAPhC,MAAO,CAAP,EAAO,kBAWH,YAAAkwY,iBAAR,sBAEI,GAAyB,MAApBhtY,KAAKwd,MAAMovX,OAAqC,IAApB5sY,KAAKwd,MAAMovX,QAAiBtrX,MAAMthB,KAAKwd,MAAMmvX,mBAAoB,CAC9F,IAAIM,EAAUjtY,KAAK8mV,UAAUjiV,QAAO,SAAAk1D,GAAK,OAAAA,EAAEx9C,KAAO,EAAKiB,MAAMmvX,qBAC7D3sY,KAAKwd,MAAMovX,MAAQ,IAAMK,EAAQ,GAAGC,UAAY,IAAMltY,KAAKwd,MAAMovX,QAK3D,YAAAlwU,KAAd,W,qBAAsB1gE,GAAO,W,wFAErBgE,KAAKgtY,mBACLhtY,KAAKyvY,SAAU,EAEXzvY,KAAKwd,OAEL,EAAAxd,KAAa,GAAMA,KAAKovY,oBAAoBtvP,mBAAmB9/I,KAAKwd,MAAOxd,KAAKqvY,gBAAiBrvY,KAAKggJ,kBAFtG,M,OAGA,OADA,EAAKxiI,MAAQ,SACb,GAAMxd,KAAKgwY,oB,OAAX,S,sDAIJhwY,KAAKC,OAAOnD,MAAM,uBAAwB,GAC1CkD,KAAK8iJ,aAAahmJ,MAAMkD,KAAKD,KAAKM,GAAG,sEACrCL,KAAKsvY,cAAe,EACpBtvY,KAAKwvY,kBAAoBxvY,KAAKD,KAAKM,GAAG,qE,oBAGtCL,KAAKyvY,QAAUzvY,KAAKsvY,a,6BAId,YAAAU,iBAAd,W,qBAAkCh0Y,GAAO,W,wDAEjC,O,sBAAA,GAAMgE,KAAKkkV,cAAczoS,KAAK,CAC1B1tC,UAAW,MACZ2qJ,c,cAFH,S,+BAKA14J,KAAKC,OAAOnD,MAAM,gCAAiC,GACnDkD,KAAKiwY,sB,+BAIL,YAAAA,oBAAR,WAEI,IAAM5iB,EAAertX,KAAKie,UACtB,wBAAwBje,KAAKie,UAC7B,aAEJje,KAAK8F,OAAOyC,SAAS8kX,IAGlB,YAAAzlB,iBAAP,SAAwBnqW,GACpBuC,KAAK8iJ,aAAa3iJ,KAAK1C,IAGnB,YAAAqyY,cAAR,sBAGUjwX,EAAU7f,KAAKD,MAAQC,KAAKD,KAAKuzB,YAAetzB,KAAKD,KAAKuzB,YAAc,KACxEmxI,EAAKznH,mBAAmBn9B,GAG9B,QAA0C,IAA9BlgB,OAAeuwY,WAA4B,CACnD,IAAM9zY,EAASC,SAASC,cAAc,UACtCF,EAAOO,IAAM,qFAAqF8nK,EAClGroK,EAAOiiE,OAAQ,EACfjiE,EAAOu9E,OAAQ,EAGdh6E,OAAewwY,gBAAkB,WAC9B,EAAKC,yBAGTh0Y,EAAOa,QAAU,WACb,EAAKgD,OAAOnD,MAAM,gCAEtBT,SAASyB,KAAKC,YAAY3B,QAE1B4D,KAAKowY,yBAIL,YAAAA,sBAAR,sBAEI,GADkB/zY,SAAS8nF,eAAe,0BACa,IAA9BxkF,OAAeuwY,WACpC,IACI,IAAMG,EAAUrwY,KAAK4vY,iBACrB5vY,KAAK2vY,kBAAqBhwY,OAAeuwY,WAAW7sT,OAAO,mBAAoB,CAC3E,QAAWgtT,EACX,SAAY,SAACvpX,GACT,EAAKk5H,eAAiBl5H,EACtB,EAAK7mB,OAAOE,KAAK,gCAErB,mBAAoB,WAChB,EAAK6/I,eAAiB,GACtB,EAAK//I,OAAOikB,KAAK,+BAErB,iBAAkB,WACd,EAAK87H,eAAiB,GACtB,EAAK//I,OAAOnD,MAAM,kCAG1BkD,KAAK0vY,mBAAoB,EACzB1vY,KAAKC,OAAOE,KAAK,6CACnB,MAAOrD,GACLkD,KAAKC,OAAOnD,MAAM,wCAAyCA,KAK/D,YAAAwzY,eAAR,WACQtwY,KAAK0vY,mBAAgD,OAA3B1vY,KAAK2vY,wBAAoE,IAA9BhwY,OAAeuwY,aACnFvwY,OAAeuwY,WAAW1hY,MAAMxO,KAAK2vY,mBACtC3vY,KAAKggJ,eAAiB,KA5SrBuwP,EAAgB,GAD5B,uB,uBA0BuD,mB,OAAA,IAAnB,UAAmB,SACd,mBADc,OACd,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACnC,mBADmC,OACnC,IAAf,sCAAe,SACP,mBADO,OACP,IAAN,oBAAM,SACJ,mBADI,OACJ,IAAJ,gBAAI,SACkB,mBADlB,OACkB,IAAb,kCAAa,YA/B/BA,GAAb,I,kFC7BA70Y,EAAOD,QAAU,w/I,4/DCejB,aAiBE,WACUqK,EACAw7C,EACAwhG,EACA4iM,EACA8qD,EACA7iC,EACA5iD,GANA,KAAAjlT,SACA,KAAAw7C,mBACA,KAAAwhG,eACA,KAAA4iM,8BACA,KAAA8qD,4BACA,KAAA7iC,2BACA,KAAA5iD,qBAjBF,KAAAz2G,mBAA0C,GAE1C,KAAA92L,MAA4B,IAAI,IAGhC,KAAAgkI,YAAmC,GAGnC,KAAAivP,sBAAgC,EAWtCzwY,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,+B,kBA6GvC,OA1GS,YAAAylV,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,uBAAuBpyK,YAAY,gEAAgEwkD,WAC1G4tH,OAAO,qBAAqBpyK,YAAY,wEAAwEwkD,WAChHn+K,GAAGrtC,KAAKwd,QAGA,YAAA5E,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,mEAEzCgE,KAAK0wY,qBAAuBtwY,EAAOmc,GACnCvc,KAAKie,UAAY7d,EAAO6d,UAExBje,KAAKC,OAAO0zC,MAAM,WAAY3zC,KAAK0wY,sBAG/B1wY,KAAK0wY,sBACP,EAAA1wY,KAAa,GAAMA,KAAKm8E,YADtB,M,OAGiB,OAFnB,EAAK3+D,MAAQ,SACbxd,KAAKywY,sBAAwBzwY,KAAKwd,MAAMizX,sBACxC,EAAAzwY,KAAmB,GAAMA,KAAK2wY,kB,cAA9B,EAAKnvP,YAAc,SACnBxhJ,KAAK4wY,qBACL5wY,KAAK2lV,2B,aAKc,OADnB3lV,KAAKwd,MAAMyuC,YAAc7rD,EAAO6rD,WAChC,EAAAjsD,KAAmB,GAAMA,KAAK2wY,kB,OAA9B,EAAKnvP,YAAc,SACnBxhJ,KAAK4wY,qBACL5wY,KAAK2lV,2B,mCAUD,YAAAirD,mBAAR,sBACQ,aAAE,IAAAnL,oBAAmCnxL,EAAA,EAAAA,mBAC3Ct0M,KAAK6wY,yBAAyBrqP,GAC9B8tD,EAAmBntM,SAAQ,SAAA2pY,GACzB,IAAIC,EAAK,EAAKz8L,mBAAmBtuM,MAAK,SAAA4zV,GAAO,OAAAA,EAAIr9U,KAAOu0X,EAAKv0X,MACzDw0X,IACFA,EAAGnyY,MAAQkyY,EAAKlyY,WAMR,YAAAu9E,QAAd,W,qBAAyBngF,GAAO,W,kDACvB,SAAMgE,KAAKwwY,0BAA0Bl0X,QAAQtc,KAAK0wY,uB,OAAzD,MAAO,CAAP,EAAO,kBAGK,YAAAC,eAAd,W,qBAAgC30Y,GAAO,W,wDAEtB,SAAMgE,KAAK+qT,mBAAmBxoQ,gBAAgBviD,KAAKie,Y,OAK3D,OALH7V,EAAW,SACfpI,KAAKwqC,cAAgBpiC,EAAS6lW,yBAEJ,GAAtBjuW,KAAKwqC,gBACPxqC,KAAKwqC,cAAgB,IAAmB,aACnC,GAAMxqC,KAAK2tW,yBAAyBpwV,OAAOvd,KAAKwqC,gB,OAAvD,MAAO,CAAP,EAAO,kBAGD,YAAAqmW,yBAAR,SAAiCpL,GAE/B,GAAKA,EAAL,CACA,IAAIuL,EAAahxY,KAAKwhJ,YAAYx7I,MAAK,SAAAirY,GAAO,OAAAA,EAAI10X,IAAMkpX,KAIxDzlY,KAAKkxY,uBAAyBF,EAAWtzY,MAAQszY,EAAW1iC,gBAAkB,GAC9EtuW,KAAKs0M,mBAAyB08L,EAAW18L,mBAAkB,QAC3Dt0M,KAAKmxY,sBAAwBH,EAAWG,wBAK7B,YAAA/1R,OAAb,W,qBAAuBp/G,GAAO,W,kDAMf,OALbgE,KAAKC,OAAOE,KAAK,UACjBH,KAAKwd,MAAM82L,mBAAqBt0M,KAAKs0M,mBACjCt0M,KAAKwqC,eAAiB,IAAmB,cAC3CxqC,KAAKwd,MAAMizX,sBAAwBzwY,KAAKywY,uBAE7B,GAAMzwY,KAAK01U,qBAAqBrnS,Y,cAAhC,SACFsqK,OACT34M,KAAK08D,O,YAIK,YAAAA,KAAd,W,qBAAsB1gE,GAAO,W,qFAEpBgE,KAAKwd,MAAMjB,GAAZ,MACF,GAAMvc,KAAKwwY,0BAA0BvxY,OAAOe,KAAKwd,MAAOxd,KAAKwd,MAAMyuC,a,cAAnE,SACAjsD,KAAK8iJ,aAAaxiJ,QAAQ,4B,aAG1B,SAAMN,KAAKwwY,0BAA0B9zX,OAAO1c,KAAKwd,Q,OAAjD,SACAxd,KAAK8iJ,aAAaxiJ,QAAQ,6B,wBAE5BN,KAAKshD,iBAAiBskB,K,+BAGtB5lE,KAAK8iJ,aAAahmJ,MAAM,EAAMA,O,+BAvIvBs0Y,EAA2B,GADvC,uB,uBAmByB,mB,OAAA,IAAN,oBAAM,SACoB,mBADpB,OACoB,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACJ,mBADI,OACJ,IAAzB,UAAyB,SACF,mBADE,OACF,IAAxB,UAAwB,SACZ,mBADY,OACZ,IAAlB,UAAkB,YAxBrCA,GAAb,K,2GCfA11Y,EAAOD,QAAU,kkG,uqECiBjB,aAoBE,WACUqK,EACAo+U,EACA4hB,EACA0qC,EACA1tP,EACAo2M,EACAnuC,GAPV,WACU,KAAAjlT,SACA,KAAAo+U,gBACA,KAAA4hB,kBACA,KAAA0qC,4BACA,KAAA1tP,eACA,KAAAo2M,qBACA,KAAAnuC,qBAxBF,KAAA3qT,OAAc,GAId,KAAAod,MAAkB,IAAI,IAEtB,KAAAF,WAAoC,IAAI,wBAMxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,kDAE1B,SAAMgE,KAAKwwY,0BAA0B18X,KAAK9T,KAAKsd,WAAYtd,KAAKisD,WAAYjsD,KAAKwqC,gB,OAAxF,MAAO,CAAP,EAAO,kBAaPxqC,KAAKC,OAAS,aAAWC,UAAU,0B,kBAyGvC,OAtGgB,YAAA0Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACpEgE,KAAKI,OAASA,E,WAGF,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,mEACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE9Bje,KAAKwwY,0BAA0BpzX,OAAO87B,iBAAmBl5C,KAAKie,UAEzDqD,MAAMthB,KAAKI,OAAO6rD,YAAnB,OACFjsD,KAAKisD,WAAajsD,KAAKI,OAAO6rD,WAE9BjsD,KAAKisD,WAAajsD,KAAKisD,WACvB,EAAAjsD,KAAa,GAAMA,KAAKm8E,QAAQn8E,KAAKisD,e,OAEtB,OAFf,EAAKzuC,MAAQ,SAEE,GAAMxd,KAAK+qT,mBAAmBxoQ,gBAAgBviD,KAAKie,Y,OAMpC,OAN1B7V,EAAW,SACfpI,KAAKwqC,cAAgBpiC,EAAS6lW,yBAEJ,GAAtBjuW,KAAKwqC,gBACPxqC,KAAKwqC,cAAgB,IAAmB,aAE1C,EAAAxqC,KAA8B,GAAMA,KAAKk5V,mBAAmB58U,QAAQtc,KAAKwqC,gB,OAElE,OAFP,EAAK2jU,sBAAyB,SAEvB,GAAMnuW,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yBAKC,YAAApoQ,QAAd,SAAsB4lM,G,qBAAiB/lR,GAAO,W,kDACrC,SAAMgE,KAAK8lW,gBAAgBxpV,QAAQylQ,I,OAA1C,MAAO,CAAP,EAAO,kBAGK,YAAAwiE,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGI,YAAAnxU,OAAb,W,qBAAuBjD,GAAO,W,6DAGrB,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO,CAAEjB,GAAI,KAAM0B,UAAWje,KAAKie,UAAWguC,WAAYjsD,KAAKisD,cAC9DysG,YAAW,SAAOj9I,GAA2B,qC,kCACzCA,EAASw9B,cAEZj5C,KAAKukV,W,qBANT,MAAO,CAAP,EAAO,kBAYI,YAAAl2G,KAAb,SAAkB7tO,G,qBAA2BxE,GAAO,W,6DAG3C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO,CAAEjB,GAAI/b,EAAK+b,GAAI0B,UAAWje,KAAKie,aACrCy6I,YAAW,SAAOj9I,GAA2B,qC,kCACzCA,EAASw9B,cAGZj5C,KAAKukV,W,qBAPT,MAAO,CAAP,EAAO,kBAcK,YAAAznU,OAAd,SAAqBtc,G,qBAA2BxE,GAAO,W,6DAC9C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK6wY,oBACX34O,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MAEK,GAAMj5C,KAAKwwY,0BAA0B1zX,OAAOtc,EAAK+b,IACrDpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ7Q,EAAK+b,GAAGyC,YACrG,EAAK1B,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAK3hM,aAAaxiJ,QAAQ,iCAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,U,mCANX,MAAO,CAAP,EAAO,kBAnHEw0Y,EAAsB,GADlC,uB,uBAsByB,mB,OAAA,IAAN,oBAAM,SACc,mBADd,OACc,IAAb,kCAAa,SACI,mBADJ,OACI,IAAf,UAAe,SACoB,mBADpB,OACoB,IAAzB,UAAyB,SAC1B,mBAD0B,OAC1B,IAAZ,UAAY,SACY,mBADZ,OACY,IAAlB,UAAkB,SACA,mBADA,OACA,IAAlB,UAAkB,YA3BrCA,GAAb,I,0sBCNA,aAKE,WACUvxY,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAGRpsN,KAAKC,OAAS,aAAWC,UAAW,qC,QAkBxC,OAfS,YAAA+V,gBAAP,SAAyBzT,EAA6BsD,GACpD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAK,CACV,CACEjC,MAAO,GACPpI,SAAU,6BACVoD,KAAM,2BAnBD6zY,EAAiC,GAD7C,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,+FCXA71Y,EAAOD,QAAU,uD,oFCAjBC,EAAOD,QAAU,6oG,ggECejB,aAgBE,WACUqK,EACAg9I,EACA4iM,EACAogB,EACAC,EACAC,GALA,KAAAlgW,SACA,KAAAg9I,eACA,KAAA4iM,8BACA,KAAAogB,kBACA,KAAAC,gBACA,KAAAC,uBAhBF,KAAAxoV,MAAkB,IAAI,IAEtB,KAAAwiN,UAAwB,GAExB,KAAAimI,iBAA6B,GAC7B,KAAAC,cAAiC,GAcvClmW,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,oB,kBAsLvC,O,EAlNa+mW,EA+BE,YAAAruV,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,6FAElCslB,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKie,WAAa7d,EAAO6d,UAEzBje,KAAK8lW,gBAAgB1oV,OAAO87B,iBAAmBl5C,KAAKie,UACpDje,KAAK+lW,cAAc3oV,OAAO87B,iBAAmBl5C,KAAKie,UAG7CqD,MAAMlhB,EAAO6rD,YAAd,OACFjsD,KAAKisD,YAAc7rD,EAAO6rD,WAC1B,EAAAjsD,KAAa,GAAMA,KAAKm8E,QAAQn8E,KAAKisD,e,OAEpB,OAFjB,EAAKzuC,MAAQ,SAEb,EAAAxd,KAAiB,GAAMA,KAAKumW,gB,OAIJ,OAJxB,EAAKvmI,UAAY,SAEjBhgO,KAAKggO,UAAYhgO,KAAKggO,UAAUn7N,QAAO,SAAAqC,GAAK,OAAAA,EAAE8/V,aAAe,KAE7D,EAAAhnW,KAAwB,GAAMA,KAAKmmW,gBAAgBnmW,KAAKisD,a,OAAxD,EAAKg6S,iBAAmB,S,iBAGP,SAAMjmW,KAAKomW,oB,OAAxBC,EAAa,SAEnBrmW,KAAKkmW,cAAgBG,EAAW1hW,KAAI,SAAAi1V,GAClC,IAAItlN,EAAQslN,EAAI0M,WAAWh7U,MAAM,KAC7Bu2T,EAAWv3T,UAAUgqH,EAAM,IAAM,KAAK3tF,QACtCm7R,EAAWx3T,UAAUgqH,EAAM,IAAM,KAAK3tF,QAG1C,OAFAizS,EAAS,IAAI/X,EACb+X,EAAS,IAAI9X,EACN8X,K,sDAIX55V,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAq/E,QAAd,SAAsB4lM,G,qBAAiB/lR,GAAO,W,kDACrC,SAAMgE,KAAK8lW,gBAAgBxpV,QAAQylQ,I,OAA1C,MAAO,CAAP,EAAO,kBAGK,YAAAwkF,aAAd,W,qBAA8BvqW,GAAO,W,kDAC5B,SAAMgE,KAAK8lW,gBAAgBvoV,U,OAAlC,MAAO,CAAP,EAAO,kBAGK,YAAA6oV,iBAAd,W,qBAAkCpqW,GAAO,W,kDAChC,SAAMgE,KAAKgmW,qBAAqBzoV,U,OAAvC,MAAO,CAAP,EAAO,kBAGK,YAAA4oV,gBAAd,SAA8Bl6S,G,qBAAqBjwD,GAAO,W,mEAElC,SAAMgE,KAAK+lW,cAAc9/D,mBAAmBh6O,I,OAuBlE,OAvBIu6S,EAAkB,SAClBC,EAAU5rW,OAAO0Z,KAAK,QAAM1P,QAAO,SAAAq1B,GAAK,MAAmB,iBAAZ,OAAKA,MAEpD+rU,EAA6B,GAEjCQ,EAAQt/V,SAAQ,SAAAyyV,GACd,IAAI8M,EAAgBF,EAAgB3hW,QAAO,SAAAjI,GAAK,cAAKA,EAAE+pW,QAAU,OAAK/M,MAElE8M,EAAc9rW,OAChBqrW,EAAiB/qW,KAAK,CACpB+wD,WAAY,EAAKA,WACjB06S,KAAM,OAAK/M,GACXh7V,MAAO8nW,EAAc,GAAG9nW,QAG1BqnW,EAAiB/qW,KAAK,CACpB+wD,WAAY,EAAKA,WACjB06S,KAAM,OAAK/M,GACXh7V,MAAO,QAKN,CAAP,EAAOqnW,WAGD,YAAAW,eAAR,SAAuBhoW,EAAe+nW,GAEpC,IAAM/M,EAAM55V,KAAKkmW,cAAclgW,MAAK,SAAC4zV,GAAa,OAAAh7V,GAASg7V,EAAI91U,KAAOllB,GAASg7V,EAAIpzU,KAAOozU,EAAI+M,OAAS,OAAKA,MAC5G,OAAO/M,EAAMA,EAAIl8V,KAAO,IAGlB,YAAAovJ,SAAR,SAAiBluJ,GACf,OAAIA,GAAS,EAAiB4yY,mBAA2B,wDACrD5yY,GAAS,EAAiB6yY,sBAA8B,2DACrD,0DAGK,YAAA5qC,WAAd,SAAyBrmW,G,qBAAOxE,GAAO,W,+DACjCwE,GACF,EAAAR,KAAwB,GAAMA,KAAKmmW,gBAAgB3lW,KADjD,M,OACF,EAAKylW,iBAAmB,S,mCAIf,YAAA7qP,OAAb,W,qBAAuBp/G,GAAO,W,6DAGrB,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,2BAGVzwD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAYT,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAK+lW,cAAc3oV,OAAO7C,c,gCAGtB,YAAAmiD,KAAd,W,qBAAsB1gE,GAAO,W,iDAEvBH,EAAW,GAGfmE,KAAKwd,MAAMspV,MAAQ3jV,KAAKk3D,SAASr7D,SAAS,IAAIjd,UAAU,IAAK,IAAKsX,MAAQmI,UAAUxC,SAAS,IAGzF+nV,EAAe,CAAEnoW,MAAO,GAC5BoB,KAAKimW,iBAAiB9+V,SAAQ,SAAAyyV,GACxBmN,EAAQnoW,MAAQg7V,EAAIh7V,QACtBmoW,EAAUnN,MAId55V,KAAKwd,MAAMwpV,YAAcD,EAAQJ,KAEjC3mW,KAAKimW,iBAAiB9+V,SAAQ,SAAAyyV,GAC5BA,EAAIkN,MAAQ,EAAKtpV,MAAMspV,MACvBjrW,EAASX,KAAK,EAAK6qW,cAAc7/D,iBAAiB0zD,OAGpD59V,EAAQgC,IAAInC,GACTsH,MAAK,2EAAY,SAAAnD,KAAK8lW,gBAAgBppV,OAAO1c,KAAKwd,iBAClDra,MAAK,gD,kCACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6BAC1BN,KAAK8F,OAAOkD,gBAAgB,a,aAE7BiD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,M,WAhKN,EAAA00Y,mBAAqB,GACrB,EAAAC,sBAAwB,GAdrCxqC,EAAgB,KAD5B,uB,uBAkByB,mB,OAAA,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SACxB,mBADwB,OACxB,IAAf,UAAe,SACJ,mBADI,OACJ,IAAb,UAAa,SACc,mBADd,OACc,IAApB,UAAoB,YAtBzCA,GAAb,I,yFCfAvrW,EAAOD,QAAU,+3G,2/DCejB,aAiBE,WACU6lD,EACAsZ,EACAyxR,EACAvpM,EACA4iM,GAJA,KAAApkS,mBACA,KAAAsZ,QACA,KAAAyxR,kBACA,KAAAvpM,eACA,KAAA4iM,8BAdF,KAAAloU,MAAwB,IAAI,IAI5B,KAAA69W,cAAwB,GACxB,KAAAr7B,eAAyB,GAY/BhgW,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,uBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,MAExB,IAAI2J,EAAa,IAAOC,aACxBza,KAAKq7X,cAAgB7gX,EAAa,6CAClCxa,KAAKggW,eAAiBxlV,EAAa,8C,cAiFvC,OA7ES,YAAAmrU,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,YAAYpyK,YAAY,sDAAsDwkD,WACrFn+K,GAAGrtC,KAAKwd,QAGA,YAAA5E,SAAb,SAAsB4E,G,qBAAwBxhB,GAAO,W,kCACnDgE,KAAKC,OAAO0zC,MAAM,YAElB3zC,KAAKwd,MAAQA,EAEbxd,KAAK2lV,2B,WAIO,YAAAxmV,KAAd,W,qBAAsBnD,GAAO,W,0DAGR,O,sBAAjB,EAAAgE,KAAiB,GAAMA,KAAKqsV,gBAAgB9uU,U,cAA5C,EAAKu9C,UAAY,SACjB96D,KAAKouW,kB,+BAGLpuW,KAAK8iJ,aAAahmJ,MAAM,G,+BAIrB,YAAAsxW,gBAAP,WAEE,GADApuW,KAAKC,OAAO0zC,MAAM,mBACd3zC,KAAK6Q,OAAS7Q,KAAK6Q,MAAM6kJ,cAAe,CAC1C,IAAI,EAAgB11J,KAAK6Q,MAAM6kJ,cAActvG,QACzCmoT,EAAavuW,KAAK86D,UAAU90D,MAAK,SAAAwoW,GAAM,OAAAA,EAAGpoT,UAAY,KACtDmoT,IACFvuW,KAAKwd,MAAMwsB,WAAaukU,EAAWhyV,MAK5B,YAAA6+F,OAAb,W,qBAAuBp/G,GAAO,W,6DAGrB,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACL34M,KAAKwd,MAAMouC,SAAZ,OACD5rD,KAAK8iJ,aAAaviJ,QAAQ,iD,OAF1B,M,OAIO,SAAMP,KAAK08D,Q,OAAlB,MAAO,CAAP,EAAO,U,2BAIZzwD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAX5B,MAAO,CAAP,EAAO,kBAeK,YAAA4/D,KAAd,W,qBAAsB1gE,GAAO,W,kDACpB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAGF,YAAA4iR,QAAP,SAAe1kD,GAAf,WACE9jS,KAAKC,OAAO0zC,MAAM,WAClB,IAAIx3B,EAAa2nR,EAAOtmS,OAAO+wO,MAAM,GAGrC,GADoB,IAAoBp9N,MAAM,iBAAkB,OAC9C8P,QAAQ9E,GAAO,CAC/B,IAAIo/B,EAAqB,IAAID,WAC7BC,EAAOI,cAAcx/B,GACrBo/B,EAAOr+C,OAAS,WACd,EAAKsgB,MAAMquC,SAAW1vC,EAAKze,WAI7BsC,KAAK8iJ,aAAahmJ,MAAM,uFA/GjB40Y,EAAoC,GADhD,uB,uBAmB6C,mB,OAAA,IAAhB,wCAAgB,SACf,mBADe,OACf,IAAZ,UAAY,SACiB,mBADjB,OACiB,IAAnB,UAAmB,SACV,mBADU,OACV,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,YAtBvDA,GAAb,K,kHCfAh2Y,EAAOD,QAAU,8tD,k9DCSjB,aAQE,WACU6lD,EACAwhG,EACA4iM,GAFA,KAAApkS,mBACA,KAAAwhG,eACA,KAAA4iM,8BAPF,KAAAloU,MAA2B,IAAI,IAUrCxd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,8B,UAwCvC,OArCS,YAAAylV,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,UAAUpyK,YAAY,2DAA2DwkD,WACxFn+K,GAAGrtC,KAAKwd,OAEX,kBACG47T,OAAO,aAAapyK,YAAY,8DAA8DwkD,WAC9F4tH,OAAO,YAAYpyK,YAAY,6DAA6DwkD,WAC5F4tH,OAAO,SAASpyK,YAAY,0DAA0Dn8F,QACtFx9B,GAAGrtC,KAAKwd,MAAMtK,YAGN,YAAA0F,SAAb,SAAsB4E,G,qBAA2BxhB,GAAO,W,kCACtDgE,KAAKwd,MAAQA,EACbxd,KAAK2lV,2B,WAIM,YAAAvqO,OAAb,W,qBAAuBp/G,GAAO,W,6DAGrB,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,kCACvCA,EAAO4oM,OACT34M,KAAK08D,O,aAGRzwD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWK,YAAA4/D,KAAd,W,qBAAsB1gE,GAAO,W,kCAC3BgE,KAAKshD,iBAAiBskB,K,WAtDb+rU,EAA0B,GADtC,uB,uBAU6C,mB,OAAA,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,YAXvDA,GAAb,K,uGCTAj2Y,EAAOD,QAAU,4wE,y3ECuBjB,aA4BE,WACUsE,EACA+lW,EACA8rC,EACApjB,EACA1rO,EACAohM,GANV,WACU,KAAAnkV,OACA,KAAA+lW,kBACA,KAAA8rC,2BACA,KAAApjB,gBACA,KAAA1rO,eACA,KAAAohM,gBA/BF,KAAA9jV,OAAc,GAId,KAAAod,MAAkB,IAAI,IACtB,KAAAipB,MAAgB,EAEhB,KAAAnpB,WAAoC,IAAI,wBAGxC,KAAA+9W,cAAwB,GACxB,KAAAr7B,eAAyB,GAEzB,KAAAhzG,QAAU,6BAAUhxP,GAAO,W,4DACjCgE,KAAKC,OAAO0zC,MAAM,c,iBAEoB,O,sBAAA,GAAM3zC,KAAK4xY,yBAAyB99X,KAAK9T,KAAKsd,WAAYtd,KAAKisD,a,OACtF,OADTxwC,EAAgC,SACpC,EAAAzb,KAAa,GAAMA,KAAK4xY,yBAAyBluP,uBAAuB1jJ,KAAKisD,a,OAC7E,OADA,EAAKxlB,MAAQ,SACN,CAAP,EAAOhrB,G,yBAGPzb,KAAK8iJ,aAAahmJ,MAAM,G,+BAa1BkD,KAAKC,OAAS,aAAWC,UAAU,yBAEnC,IAAIsa,EAAa,IAAOC,aACxBza,KAAKq7X,cAAgB7gX,EAAa,6CAClCxa,KAAKggW,eAAiBxlV,EAAa,8C,gBAgLvC,OA7KgB,YAAA5B,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACpEgE,KAAKI,OAASA,E,WAGF,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,+DACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAEzBqD,MAAMthB,KAAKI,OAAO6rD,YAAnB,OACFjsD,KAAKisD,WAAajsD,KAAKI,OAAO6rD,WAE9BjsD,KAAK8lW,gBAAgB1oV,OAAO87B,iBAAmBl5C,KAAKie,UACpDje,KAAK4xY,yBAAyBx0X,OAAO87B,iBAAmBl5C,KAAKie,UAE7D,EAAAje,KAAa,GAAMA,KAAKm8E,a,OAEjB,OAFP,EAAK3+D,MAAQ,SAEN,GAAMxd,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,U,yBAKC,YAAApoQ,QAAd,W,qBAAyBngF,GAAO,W,kDACvB,SAAMgE,KAAK8lW,gBAAgBxpV,QAAQtc,KAAKisD,a,OAA/C,MAAO,CAAP,EAAO,kBAGK,YAAAs4R,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAAnxU,OAAd,W,qBAAwBjD,GAAO,W,+DAItB,OAHHwE,EAAO,IAAI,KACVyrD,WAAajsD,KAAKwd,MAAMjB,GAEtB,GAAMvc,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK4xY,yBAAyB3yY,OAAOuB,GAC/C2C,MAAK,gD,kDAIJ,OAFAnD,KAAK8iJ,aAAaxiJ,QAAQ,4BAE1B,GAAMN,KAAKukV,Y,cAAX,S,cAGDt4U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAoBK,YAAA4f,OAAd,SAAqBlc,G,qBAA0BxE,GAAO,W,6DAE7C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK4xY,yBAAyBl1X,OAAOlc,GAC/C2C,MAAK,gD,kDAIJ,OAFAnD,KAAK8iJ,aAAaxiJ,QAAQ,4BAE1B,GAAMN,KAAKukV,Y,cAAX,S,cAGDt4U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAoBK,YAAAggB,OAAd,SAAqBtc,G,qBAA0BxE,GAAO,W,6DAC7C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK0S,UAAUu1C,WACrBiwG,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MAEK,GAAMj5C,KAAK4xY,yBAAyB90X,OAAOtc,EAAK+b,IACpDpZ,MAAK,gD,kDAIJ,OAFAnD,KAAK8iJ,aAAaxiJ,QAAQ,8BAE1B,GAAMN,KAAKukV,Y,cAAX,S,cAGDt4U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,U,mCANX,MAAO,CAAP,EAAO,kBAsBK,YAAA6uD,qBAAd,W,qBAAsC3vD,GAAO,W,+DAKpC,OAJHwE,EAAO,IAAI,KACVyrD,WAAajsD,KAAKwd,MAAMjB,GAC7B/b,EAAK9C,KAAOsC,KAAKwd,MAAM9f,KAEhB,GAAMsC,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,IACNk4J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAK4xY,yBAAyBjmV,qBAAqBnrD,GAC7D2C,MAAK,gD,kDAIJ,OAFAnD,KAAK8iJ,aAAaxiJ,QAAQ,4BAE1B,GAAMN,KAAKukV,Y,cAAX,S,cAGDt4U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAoBK,YAAA2hY,uBAAd,SAAqCliX,G,qBAAavgB,GAAO,W,wDAErD,O,sBAAA,GAAMgE,KAAKwuX,cAAc/jT,aAAaluD,I,OAEtC,OAFA,SACAvc,KAAK8iJ,aAAaxiJ,QAAQ,wCACnB,CAAP,GAAO,G,yBAGPN,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAA85V,cAAd,SAA4BxrS,G,qBAAmBpvD,GAAO,W,6DAE7C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO4tC,IACNstG,YAAW,SAAOj9I,GAA2B,qC,yDACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKy+X,uBAAuBrzU,I,OAAzC,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAUK,YAAA8a,cAAd,W,qBAA+BlqE,GAAO,W,6DAEpC,OAAmB,MAAfgE,KAAKymC,OAAiBzmC,KAAKwd,MAAMkqV,yBAA2B,IAAuB88B,UAC9E,CAAP,GAAO,GAGF,GAAMxkY,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAKD,KAAKM,GAAG,sEACnBq4J,YAAW,SAAOj9I,GAA2B,qC,2BAC9C,MAAO,CAAP,GAAQA,EAASw9B,wB,OAJnB,MAAO,CAAP,EAAO,kBAhNE44V,EAAqB,GADjC,uB,uBA8BqB,mB,OAAA,IAAJ,gBAAI,SACsB,mBADtB,OACsB,IAAf,UAAe,SACkB,mBADlB,OACkB,IAAxB,UAAwB,SACtB,mBADsB,OACtB,IAAb,UAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,YAlC3BA,GAAb,I,usBCZA,aAKE,WACU9xY,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAGRpsN,KAAKC,OAAS,aAAWC,UAAW,oC,QAkBxC,OAfS,YAAA+V,gBAAP,SAAyBzT,EAA6BsD,GACpD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAK,CACV,CACEjC,MAAO,GACPpI,SAAU,4BACVoD,KAAM,8BAnBDo0Y,EAAgC,GAD5C,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,6FCXAp2Y,EAAOD,QAAU,uD,kFCAjBC,EAAOD,QAAU,knM,6gECoBjB,aAeE,WACUm/D,EACA90D,EACAggW,EACA5hB,EACAphM,GALV,WACU,KAAAloF,QACA,KAAA90D,SACA,KAAAggW,kBACA,KAAA5hB,gBACA,KAAAphM,eAjBF,KAAA1iJ,OAAc,GAMd,KAAAkd,WAAoC,IAAI,wBAIxC,KAAAivU,UAAoB,EAepB,KAAAv/F,QAAU,6BAAUhxP,GAAO,W,6DAE1B,OADPgE,KAAKC,OAAO0zC,MAAM,cACX,GAAM3zC,KAAK8lW,gBAAgBr0M,sBAAsBzxJ,KAAKsd,YAC1Dna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBARPkD,KAAKC,OAAS,aAAWC,UAAU,0BAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,cA0D5B,OA3CgB,YAAA+H,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,yDAGhEgE,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,UACpDvsV,KAAKI,OAASA,EACP,GAAMJ,KAAKb,SAFhB,M,OAEF,MAAO,CAAP,EAAO,U,OAGPa,KAAKI,OAASA,E,mCAKJ,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,yDACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OAEFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE1Bje,KAAKie,WAEPje,KAAK8lW,gBAAgB1oV,OAAO87B,iBAAmBl5C,KAAKie,UACpDje,KAAKusV,UAAW,EACT,GAAMvsV,KAAKukV,aAJhB,O,OAIF,MAAO,CAAP,EAAO,U,yBAKC,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBApEEgrW,EAAqB,GADjC,uB,uBAiB8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACkB,mBADlB,OACkB,IAAf,UAAe,SACJ,mBADI,OACJ,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YApBzBA,GAAb,I,mGCpBApsW,EAAOD,QAAU,0pF,snBCQjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,uB,MAyCvC,OArCE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,kBACVoD,KAAM,gBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,uCAGtB,CACEqC,MAAO,cACPpI,SAAU,+DACVoD,KAAM,wCACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,2DAGtB,CACEqC,MAAO,aACPpI,SAAU,6DACVoD,KAAM,uCACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,0DAGtB,CACEqC,MAAO,OACPpI,SAAU,sCACVoD,KAAM,qBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,uDA7Cf0xY,EAAmB,GAD/B,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,oECRAr2Y,EAAOD,QAAU,8M,shECuBjB,aAmBE,WACUm/D,EACA90D,EACAwoV,EACAxrM,EACA+wM,EACAnO,EACAogB,EACAwB,EACAvnW,GARA,KAAA66D,QACA,KAAA90D,SACA,KAAAwoV,4BACA,KAAAxrM,eACA,KAAA+wM,iCACA,KAAAnO,8BACA,KAAAogB,kBACA,KAAAwB,qBACA,KAAAvnW,OApBF,KAAAyd,MAAkB,IAAI,IAGtB,KAAA+pV,0BAA2C,GAC3C,KAAAC,0BAAuD,GAEvD,KAAApnW,OAAc,GAGd,KAAAmsV,UAAoB,EAa1BvsV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,gBAEnCF,KAAK6Q,MAAQ7Q,KAAK46D,MAAM/pD,M,sBA0I5B,OAvIS,YAAA80U,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,QAAQpyK,YAAY,+CAA+CwkD,WAC1E4tH,OAAO,0BAA0BpyK,YAAY,gEAAgEwkD,WAC7G4tH,OAAO,iBAAiBpyK,YAAY,2DAA2DwkD,WAC/Fn+K,GAAGrtC,KAAKwd,QAGA,YAAA5E,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,6DAErCgE,KAAKI,OAAO6d,WAAa7d,EAAO6d,WAAaje,KAAKusV,SACpDvsV,KAAKI,OAASA,EAQXkhB,MAAMlhB,EAAO6d,WAAd,Y,8CAEAje,KAAKie,WAAa7d,EAAO6d,UACzBje,KAAK8lW,gBAAgB1oV,OAAO87B,iBAAmBl5C,KAAKie,UACpDje,KAAKsuV,0BAA0BlxU,OAAO87B,iBAAmBl5C,KAAKie,UAEzDqD,MAAMlhB,EAAO6rD,YAAd,OACFjsD,KAAKisD,WAAa7rD,EAAO6rD,WACzB,EAAAjsD,KAAa,GAAMA,KAAK8lW,gBAAgBxpV,QAAQtc,KAAKisD,c,OAArD,EAAKzuC,MAAQ,S,wBAIfxd,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAKtB,YAAAk1Y,wBAAR,SAAgC79U,GAC9B,IAAMitS,EAAmBphW,KAAKwnW,0BAA0BxhW,MAAK,SAAAkB,GAAI,OAAAA,EAAEk6V,kBAAoBjtS,KACnF89U,EAAuBjyY,KAAKD,KAAKM,GAAG,kCAAoC,IAAiB8zD,IAI7F,OAHwBv2D,MAApBwjW,GACEA,EAAiB7kV,GAAK,IACxB01X,EAAuB7wC,EAAiB1jW,MACrCu0Y,GAEI,YAAA9yY,KAAb,W,gHAEOmiB,MAAMthB,KAAKI,OAAO6d,WAAnB,Y,iBAGqB,O,sBAArB,EAAAje,KAAqB,GAAMA,KAAKsnW,mBAAmBhrV,QAAQtc,KAAKI,OAAO6d,Y,OAGtC,OAHjC,EAAK42U,cAAgB,SAGrB,EAAA70V,KAAiC,GAAMA,KAAK6zV,+BAA+Bt2U,U,OAErD,OAFtB,EAAKiqV,0BAA4B,SACjCxnW,KAAKwnW,0BAA4BxnW,KAAKwnW,0BAA0B3iW,QAAO,SAAAqC,GAAK,OAAAA,EAAEsjT,YAAc,EAAKqqC,cAAcrqC,aACzF,GAAMxqT,KAAKsuV,0BAA0B/wU,U,cAArDw3B,EAAgB,SACtB/0C,KAAKunW,0BAA4BxyT,EAAclwC,QAAO,SAAA+0V,GAAO,OAACA,EAAIZ,kBAAoB,IAAgBqiB,MAAQzhB,EAAI1vT,gBAAkB,IAAcoqV,YAElJt0X,KAAKusV,UAAW,E,+BAGhBvsV,KAAK8iJ,aAAahmJ,MAAM,G,+BAMjB,YAAAs+G,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAGzC,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACL34M,KAAKisD,WACA,GAAMjsD,KAAK0c,OAAOwpU,IADvB,MADF,M,OAEA,MAAO,CAAP,EAAO,U,OAEA,SAAMlmV,KAAKf,OAAOinV,I,OAAzB,MAAO,CAAP,EAAO,U,2BAIZj6U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAX5B,MAAO,CAAP,EAAO,kBAeT,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAK8lW,gBAAgB1oV,OAAO7C,c,gCAGxB,YAAAtb,OAAd,SAAqBinV,G,qBAAuBlqV,GAAO,W,6DAC1C,SAAMgE,KAAK8lW,gBAAgB7mW,OAAOe,KAAKwd,OAC3Cra,MAAK,SAAO4M,GAAgB,qC,yDAC3B/P,KAAK8iJ,aAAaxiJ,QAAQ,6BACtB4lV,EACClmV,KAAKwd,MAAMkqV,yBAA2B,IAAuBm9B,WAA7D,OACD7kY,KAAK8iJ,aAAa3iJ,KAAK,qDAChB,GAAMH,KAAK8F,OAAOkD,gBAAgB,wBAAyB,CAAEijD,WAAYl8C,EAAOwM,OAHvF,M,OAGA,MAAO,CAAP,EAAO,U,cAEDvc,KAAKwd,MAAMkqV,yBAA2B,IAAuB88B,UAA7D,MACC,GAAMxkY,KAAK8F,OAAOyI,OAAOhG,SAAS,YAAYwH,EAAOwM,GAAE,gB,OAA9D,MAAO,CAAP,EAAO,U,OAEA,SAAMvc,KAAK8F,OAAOyI,OAAOhG,SAAS,YAAYwH,EAAOwM,GAAE,U,OAA9D,MAAO,CAAP,EAAO,U,0BAMF,SAAMvc,KAAK8F,OAAOkD,gBAAgB,c,OAAzC,MAAO,CAAP,EAAO,U,2BAIViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAtB5B,MAAO,CAAP,EAAO,kBA0BK,YAAA4f,OAAd,SAAqBwpU,G,qBAAuBlqV,GAAO,W,6DAC1C,SAAMgE,KAAK8lW,gBAAgBppV,OAAO1c,KAAKwd,OAC3Cra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6BAErB4lV,EAAD,MACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,c,OAAzC,MAAO,CAAP,EAAO,U,2BAGViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAT5B,MAAO,CAAP,EAAO,kBAYF,YAAA8qW,iBAAP,SAAwBnqW,GACtBuC,KAAK8iJ,aAAa3iJ,KAAK1C,IA3Kdy0Y,EAAY,GADxB,uB,uBAqB8B,mB,OAAA,IAAZ,UAAY,SACL,mBADK,OACL,IAAN,oBAAM,SACsC,mBADtC,OACsC,IAAzB,UAAyB,SAC1B,mBAD0B,OAC1B,IAAZ,UAAY,SACoC,mBADpC,OACoC,IAA9B,UAA8B,SACN,mBADM,OACN,IAA3B,8DAA2B,SACxB,mBADwB,OACxB,IAAf,UAAe,SACM,mBADN,OACM,IAAlB,UAAkB,SAC5B,mBAD4B,OAC5B,IAAJ,gBAAI,YA5BTA,GAAb,I,+ECvBAx2Y,EAAOD,QAAU,02Q,w7DCWjB,aAWE,WACU02Y,EACArvP,EACAh9I,GAFA,KAAAqsY,iCACA,KAAArvP,eACA,KAAAh9I,SATH,KAAA25U,aAAuB,EAEvB,KAAAjiU,MAAiC,IAAI,IACrC,KAAAutD,qBAAuB,IAQ5B/qE,KAAKC,OAAS,aAAWC,UAAU,sB,UAwEvC,OArEgB,YAAAf,KAAd,W,qBAAsBnD,GAAO,W,kDACpB,SAAMgE,KAAKoyY,iB,OAAlB,MAAO,CAAP,EAAO,kBAGD,YAAAjpP,SAAR,WACEnpJ,KAAKqyY,eAGP,sBAAY,0BAAW,C,IAAvB,WACE,OAAOryY,KAAKwd,MAAMxT,SAAW,IAAqB+sV,Y,gCAGpD,sBAAY,wBAAS,C,IAArB,WACE,OAAO/2V,KAAKy/U,aAAe,GAAKz/U,KAAKwd,MAAMxT,SAAW,IAAqB+sV,Y,gCAG/D,YAAAq7C,cAAd,W,qBAA+Bp2Y,GAAO,W,0DAErB,O,sBAAb,EAAAgE,KAAa,GAAMA,KAAKmyY,+BAA+B3uP,a,cAAvD,EAAKhmI,MAAQ,SACTxd,KAAKwd,MAAMxT,SAAW,IAAqB+sV,WAC7C/2V,KAAKsyY,eAGLtyY,KAAKqyY,c,+BAIPryY,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAy1Y,gBAAd,W,qBAAiCv2Y,GAAO,W,0DAEvB,O,sBAAb,EAAAgE,KAAa,GAAMA,KAAKmyY,+BAA+BlzY,U,cAAvD,EAAKue,MAAQ,SACbxd,KAAKsyY,e,mBAGS,mF,aACZtyY,KAAK8iJ,aAAahmJ,MAAM,GACxBkD,KAAKsyY,gBAGLtyY,KAAK8iJ,aAAahmJ,MAAM,G,+BAKtB,YAAA01Y,aAAR,WACMxyY,KAAKwd,MAAM+qX,YACbvoY,KAAK8F,OAAOyC,SAASvI,KAAKwd,MAAM+qX,aAI5B,YAAA+J,aAAR,sBACMtyY,KAAKyyY,gBAITzyY,KAAKyyY,cAAgB1/V,aAAY,gD,kDAC/B,SAAM/yC,KAAKoyY,iB,cAAX,S,aAjFsB,OAqFlB,YAAAC,YAAR,WACMryY,KAAKyyY,gBACPpnU,cAAcrrE,KAAKyyY,eACnBzyY,KAAKyyY,cAAgB,OAhFzB,GADC,W,4DAJUC,EAAkB,GAD9B,uB,uBAayE,mB,OAAA,IAA9B,UAA8B,SACpC,mBADoC,OACpC,IAAZ,UAAY,SACZ,mBADY,OACZ,IAAN,oBAAM,YAdbA,GAAb,I,oFCXAh3Y,EAAOD,QAAU,w6C,ulECajB,aAwBE,WACUqK,EACAggW,EACAhjN,EACAohM,GAJV,WACU,KAAAp+U,SACA,KAAAggW,kBACA,KAAAhjN,eACA,KAAAohM,gBAzBF,KAAA9jV,OAAc,GAId,KAAAkd,WAAoC,IAAI,wBAGxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,+DAK1B,OAJPgE,KAAKC,OAAO0zC,MAAM,cACd9J,EAAS7pC,KAAKsd,WAAWusB,OAAOylT,MACpC3mL,eAAentF,QAAQ,qBAAgC,MAAV3xC,EAAiB,GAAKA,GAE5D,GAAM7pC,KAAK8lW,gBAAgBhyV,KAAK9T,KAAKsd,YACzCna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBAgBPkD,KAAKC,OAAS,aAAWC,UAAU,gB,YAyFvC,OAtFgB,YAAA0Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACpEgE,KAAKsd,WAAWusB,OAAOylT,MAAQ3mL,eAAexsF,QAAQ,sBACtDn8E,KAAKI,OAASA,E,WAGF,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,yDACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKC,OAAO0zC,MAAM,sBAAuB3zC,KAAKI,OAAO6d,WACrDje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE9Bje,KAAK8lW,gBAAgB1oV,OAAO87B,iBAAmBl5C,KAAKie,UAE7C,GAAMje,KAAKukV,a,OAAlB,MAAO,CAAP,EAAO,U,yBAKG,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAAtzT,OAAd,SAAqBtc,G,qBAAiBxE,GAAO,W,6DACpC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK9C,OACXg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MAEK,GAAMj5C,KAAK8lW,gBAAgBhpV,OAAOtc,EAAK+b,IAC3CpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ7Q,EAAK+b,GAAGyC,YACrG,EAAK1B,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAK3hM,aAAaxiJ,QAAQ,iCAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,U,mCANX,MAAO,CAAP,EAAO,kBAoBK,YAAAy5W,aAAd,W,qBAA8Bv6W,GAAO,W,kDAEnC,OADAgE,KAAKsd,WAAWusB,OAAOylT,MAAQtvV,KAAKsd,WAAWusB,OAAO8wO,UAAY36Q,KAAKsd,WAAWusB,OAAO+wO,QAAU,KACnG,GAAM56Q,KAAKukV,Y,cAAX,S,YAGY,YAAAwgD,qBAAd,W,qBAAsC/oY,GAAO,W,6DACpC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAKsd,WAAWoiU,UAAU9kV,SAChC89J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MAEK,GAAMj5C,KAAK8lW,gBAAgBv7R,sBAAsBvqE,KAAKsd,YAC1Dna,MAAK,WAEJ,OADA,EAAK2/I,aAAaxiJ,QAAQ,8CACnB,M,OAHX,MAAO,CAAP,EAAO,U,mCANX,MAAO,CAAP,EAAO,kBAeK,YAAAmqE,aAAd,SAA2BluD,G,qBAAavgB,GAAO,W,wDAE3C,O,sBAAA,GAAMgE,KAAK8lW,gBAAgBr7R,aAAaluD,I,OAExC,OAFA,SACAvc,KAAK8iJ,aAAaxiJ,QAAQ,wCACnB,CAAP,GAAO,G,yBAGPN,KAAK8iJ,aAAahmJ,MAAM,G,+BApHjB61Y,EAAY,GADxB,uB,uBA0ByB,mB,OAAA,IAAN,oBAAM,SACkB,mBADlB,OACkB,IAAf,UAAe,SACN,mBADM,OACN,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,YA5B3BA,GAAb,I,0qBCFA,aAKE,WACU5yY,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAGRpsN,KAAKC,OAAS,aAAWC,UAAU,2B,QA4BvC,OAzBS,YAAA+V,gBAAP,SAAuBzT,EAA6BsD,GAClD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,kBACViW,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,mDACpB3C,KAAM,aAER,CACEgF,MAAO,qBACPpI,SAAU,gDACVoD,KAAM,qBACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,2DAEtB,CACEqC,MAAO,uBACPpI,SAAU,0BACVoD,KAAM,4BAjCDk1Y,EAAuB,GADnC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,yECXAl3Y,EAAOD,QAAU,+G,8DCAjBC,EAAOD,QAAU,o1M,ghECYjB,aAuBE,WACUqK,EACA+sY,EACA/vP,EACAohM,GAJV,WACU,KAAAp+U,SACA,KAAA+sY,sBACA,KAAA/vP,eACA,KAAAohM,gBAxBF,KAAA9jV,OAAc,GAEf,KAAA0yY,MAAsB,CAC3B1uP,MAAM,EACNmW,QAAQ,GACRw4O,WAAW,GACXC,SAAU,EACVC,YAAa,EACbC,cAAe,EACfC,UAAW,EACXC,kBAAmB,EACnBC,oBAAqB,EACrBC,gBAAiB,EACjBC,kBAAmB,EACnBC,UAAU,GAGJ,KAAAl2X,WAAoC,IAAI,wBAaxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,+DAK1B,OAJPgE,KAAKC,OAAO0zC,MAAM,cACd9J,EAAS7pC,KAAKsd,WAAWusB,OAAOylT,MACpC3mL,eAAentF,QAAQ,iBAA4B,MAAV3xC,EAAiB,GAAKA,GAExD,GAAM7pC,KAAK6yY,oBAAoB/+X,KAAK9T,KAAKsd,YAC7Cna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBARPkD,KAAKC,OAAS,aAAWC,UAAU,Y,YAyFvC,OAxEgB,YAAA0Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACpEgE,KAAKsd,WAAWusB,OAAOylT,MAAQ3mL,eAAexsF,QAAQ,kBACtDn8E,KAAKI,OAASA,E,WAGF,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,yDACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKC,OAAO0zC,MAAM,sBAAuB3zC,KAAKI,OAAO6d,WACrDje,KAAKie,WAAaje,KAAKI,OAAO6d,UAC9Bje,KAAK6yY,oBAAoBz1X,OAAO87B,iBAAmBl5C,KAAKie,UACjD,GAAMje,KAAKukV,a,OAAlB,MAAO,CAAP,EAAO,U,yBAIG,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAAmmC,aAAd,W,0FAES,OADPv2W,KAAKsd,WAAWusB,OAAOylT,MAAQtvV,KAAKsd,WAAWusB,OAAO8wO,UAAY36Q,KAAKsd,WAAWusB,OAAO+wO,QAAU,KAC5F,GAAM56Q,KAAKukV,Y,OAAlB,MAAO,CAAP,EAAO,kBAGI,YAAAkvD,aAAb,SAA0BjzY,EAAmBgzY,G,qBAAoBx3Y,GAAO,W,iEACxD,SAAMgE,KAAK6yY,oBAAoB5uP,aAAazjJ,I,OAGnD,OAHHkzY,EAAU,SACVC,EAAanzY,EAAK+5J,QACtBm5O,EAAQF,SAAWA,EACZ,GAAMxzY,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOk2X,IACNh7O,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,cAAgB06V,GAAYD,EAAQn5O,QAA9C,OACFv6J,KAAK8yY,MAAQY,EACb1zY,KAAK8yY,MAAMC,WAAaW,EAAQn5O,QAChCv6J,KAAK8yY,MAAMv4O,QAAUo5O,EACd,GAAM3zY,KAAK6yY,oBAAoB1uP,eAAenkJ,KAAK8yY,OACvD3vY,MAAK,gD,+CACAshV,EAA6BzkV,KAAKsd,WAAWoiU,UAAUxsK,WAAU,SAAC,GAAY,OAAX,EAAA9uB,QAAqB,EAAK0uP,MAAM1uP,SACvGpkJ,KAAKsd,WAAWoiU,UAAU+E,GAAsBzkV,KAAK8yY,MACrD9yY,KAAK8iJ,aAAaviJ,QAAQ,8C,aAE3B0L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,Q,OAP5B,MAAO,CAAP,EAAO,U,cAUA2e,EAASw9B,aAAV,OACNj5C,KAAK8yY,MAAQY,EACN,GAAM1zY,KAAK6yY,oBAAoB1uP,eAAenkJ,KAAK8yY,OACvD3vY,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAUxsK,WAAU,SAAC,GAAY,OAAX,EAAA9uB,QAAqB,EAAK0uP,MAAM1uP,SACvG,EAAK9mI,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAKnnU,WAAWmiU,eAChB,EAAK38L,aAAaviJ,QAAQ,kDAE3B0L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,Q,OAR5B,MAAO,CAAP,EAAO,U,mCApBX,MAAO,CAAP,EAAO,kBAtFE82Y,EAAQ,GADpB,uB,uBAyByB,mB,OAAA,IAAN,oBAAM,SAC0B,mBAD1B,OAC0B,IAAnB,UAAmB,SACd,mBADc,OACd,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,YA3B3BA,GAAb,I,8pBCDA,aAKE,WACU7zY,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAGRpsN,KAAKC,OAAS,aAAWC,UAAW,uB,QAaxC,OAVS,YAAA+V,gBAAP,SAAyBzT,EAA6BsD,GACpD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAK,CACV,CACEjC,MAAO,GACPpI,SAAU,cACVoD,KAAM,gBAnBDm2Y,EAAmB,GAD/B,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,iECXAn4Y,EAAOD,QAAU,6M,oDCAjBC,EAAOD,QAAU,0vD,i6DCQjB,aAOE,WACU6lD,EACAokS,GADA,KAAApkS,mBACA,KAAAokS,8BAER1lV,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAC1CjzU,KAAKC,OAAS,aAAWC,UAAU,a,QA8BvC,OA1BgB,YAAA0Y,SAAd,SAAuB4E,G,qBAAsBxhB,GAAO,W,kCAClDgE,KAAKwd,MAAQA,EACbxd,KAAKu6J,QAAUv6J,KAAKwd,MAAM+8I,QAC1Bv6J,KAAK2lV,2B,WAGC,YAAAA,yBAAR,WACE,kBACGvM,OAAO,QAAQpyK,YAAY,gCAAgCwkD,WAC3Dn+K,GAAGrtC,KAAKwd,QAGA,YAAA49F,OAAb,W,qBAAuBp/G,GAAO,W,6DACrB,SAAMgE,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MAEF,GAAM34M,KAAK08D,QAFhB,M,OAEF,MAAO,CAAP,EAAO,U,mCAJb,MAAO,CAAP,EAAO,kBASI,YAAAA,KAAb,W,qBAAqB1gE,GAAO,W,kDACnB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAxCEkuU,EAAS,GADrB,uB,uBAS6C,mB,OAAA,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,YATvDA,GAAb,K,sECRAp4Y,EAAOD,QAAU,+oE,mgECgBjB,aAYE,WACUqK,EACAg9I,EACA4iM,EACAiwC,EACArnC,EACAylD,GALA,KAAAjuY,SACA,KAAAg9I,eACA,KAAA4iM,8BACA,KAAAiwC,cACA,KAAArnC,4BACA,KAAAylD,iBAXF,KAAAv2X,MAAoB,IAAI,IACxB,KAAAw2X,UAAkB,IAAI,IAEtB,KAAAj/V,cAA+B,GAWrC/0C,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,wB,gBAmEvC,OA/DS,YAAAylV,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,QAAQpyK,YAAY,+CAA+CwkD,WAC1En+K,GAAGrtC,KAAKwd,QAGA,YAAA5E,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,iEACpCslB,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKie,WAAa7d,EAAO6d,UAEzBje,KAAK21X,YAAYv4W,OAAO87B,iBAAmBl5C,KAAKie,UAC3CqD,MAAMlhB,EAAO8nD,QAAd,OACFloD,KAAKkoD,OAAS9nD,EAAO8nD,OACrB,EAAAloD,KAAiB,GAAMA,KAAK21X,YAAYr5W,QAAQtc,KAAKkoD,W,OAE/B,OAFtB,EAAK8rV,UAAY,SAEK,GAAMh0Y,KAAKmgY,oB,cAA3BprV,EAAgB,SACtB/0C,KAAK+0C,cAAgBA,EAAclwC,QAAO,SAAA+0V,GAAO,OAACA,EAAIZ,kBAAoB,IAAgBK,QAAUO,EAAI1vT,gBAAkB,IAAcyqU,OAAyB,IAAjB/a,EAAItzV,YACpJtG,KAAK2lV,2B,aAEL3lV,KAAK2lV,2B,mCAIG,YAAAw6C,iBAAd,W,qBAAkCnkY,GAAO,W,kDAChC,SAAMgE,KAAKsuV,0BAA0B/wU,U,OAA5C,MAAO,CAAP,EAAO,kBAGI,YAAA69F,OAAb,SAAoB8qO,EAAsBh+R,G,qBAAiBlsD,GAAO,W,6DAGzD,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACF,GAAM34M,KAAKf,OAAOinV,EAAah+R,IADpC,M,OACF,MAAO,CAAP,EAAO,U,2BAGVj8C,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,kBAWT,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAK21X,YAAYv4W,OAAO7C,c,gCAGpB,YAAAtb,OAAd,SAAqBinV,EAAsBh+R,G,qBAAiBlsD,GAAO,W,6DAC1D,SAAMgE,KAAK+zY,eAAe90Y,OAAOe,KAAKwd,MAAO0qC,GACjD/kD,MAAK,SAAO4M,GAAkB,qC,yDAC7B/P,KAAK8iJ,aAAaxiJ,QAAQ,6BACtB4lV,EACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,oBAAqB,CAAEk/C,OAAQn4C,EAAOwM,MAD7E,M,OACF,MAAO,CAAP,EAAO,U,OAGA,SAAMvc,KAAK8F,OAAOkD,gBAAgB,yB,OAAzC,MAAO,CAAP,EAAO,oBAIViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAZ5B,MAAO,CAAP,EAAO,kBA3EEm3Y,EAAoB,GADhC,uB,uBAcyB,mB,OAAA,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAChC,mBADgC,OAChC,IAAX,UAAW,SACqB,mBADrB,OACqB,IAAlB,UAAkB,SACR,mBADQ,OACR,IAArB,UAAqB,YAlBpCA,GAAb,I,+FChBAv4Y,EAAOD,QAAU,mnD,uhECYjB,aAsBE,WACUqK,EACA0oX,EACAmH,EACAue,EACAhwD,EACAphM,GANV,WACU,KAAAh9I,SACA,KAAA0oX,gBACA,KAAAmH,cACA,KAAAue,wBACA,KAAAhwD,gBACA,KAAAphM,eAzBF,KAAA1iJ,OAAc,GAMd,KAAA+zY,iBAA0C,IAAI,wBAG9C,KAAA72X,WAAoC,IAAI,wBAGxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,kDAE1B,SAAMgE,KAAKk0Y,sBAAsBpgY,KAAK9T,KAAKsd,WAAYtd,KAAKkoD,S,OAAnE,MAAO,CAAP,EAAO,kBAED,KAAA8rV,UAAkB,IAAI,IAa5Bh0Y,KAAKC,OAAS,aAAWC,UAAU,sB,gBA2CvC,OAxCgB,YAAA0Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACpEgE,KAAKI,OAASA,E,WAIF,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,+DACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE9Bje,KAAKk0Y,sBAAsB92X,OAAO87B,iBAAmBl5C,KAAKie,UAErDqD,MAAMthB,KAAKI,OAAO8nD,QAAnB,OACFloD,KAAKkoD,OAASloD,KAAKI,OAAO8nD,OAC1B,EAAAloD,KAAiB,GAAMA,KAAK21X,YAAYr5W,QAAQtc,KAAKkoD,W,OAErD,OAFA,EAAK8rV,UAAY,SAEjB,GAAMh0Y,KAAKukV,Y,OAAX,S,mCAMQ,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,0DAGO,O,sBAAA,GAAMgE,KAAKgtP,W,cAA3CvxO,EAAgC,SACpCzb,KAAKsd,WAAWoiU,UAAYjkU,EAASphB,KACrC2F,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,a,+BAGxCz/U,KAAK8iJ,aAAahmJ,MAAM,G,+BAMd,YAAAs3Y,cAAd,SAA4BhkE,G,qBAAqBp0U,GAAO,W,kDAC/C,SAAMgE,KAAKq0Y,kBAAkBr0D,aAAa5P,I,OAAjD,MAAO,CAAP,EAAO,kBAvEEkkE,EAAkB,GAD9B,uB,uBAwByB,mB,OAAA,IAAN,oBAAM,SACc,mBADd,OACc,IAAb,UAAa,SACJ,mBADI,OACJ,IAAX,UAAW,SACoB,mBADpB,OACoB,IAArB,UAAqB,SAChB,mBADgB,OAChB,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YA5BzBA,GAAb,I,8rBCDA,aAKE,WACUv0Y,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAGRpsN,KAAKC,OAAS,aAAWC,UAAU,iC,QA6BvC,OA1BS,YAAA+V,gBAAP,SAAuBzT,EAA6BsD,GAClD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,yBACVoD,KAAM,wBAER,CACEgF,MAAO,SACPpI,SAAU,2BACVoD,KAAM,0BAIR,CACEgF,MAAO,2BACPpI,SAAU,qDACVoD,KAAM,uCA/BD62Y,EAA6B,GADzC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,uFCXA74Y,EAAOD,QAAU,uD,4ECAjBC,EAAOD,QAAU,6/G,ilECejB,aAoBE,WACUqK,EACA0oX,EACAmH,EACA6e,EACAtwD,EACAphM,EACAixP,GAPV,WACU,KAAAjuY,SACA,KAAA0oX,gBACA,KAAAmH,cACA,KAAA6e,uBACA,KAAAtwD,gBACA,KAAAphM,eACA,KAAAixP,iBAxBF,KAAA3zY,OAAc,GAMd,KAAA+zY,iBAA0C,IAAI,wBAG9C,KAAA72X,WAAoC,IAAI,wBAGxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,kDAE1B,SAAMgE,KAAKw0Y,qBAAqB1gY,KAAK9T,KAAKsd,WAAYtd,KAAKyrD,e,OAAlE,MAAO,CAAP,EAAO,kBAED,KAAAgpV,gBAA8B,IAAI,IAWxCz0Y,KAAKC,OAAS,aAAWC,UAAU,sB,kBA8DvC,OA3DgB,YAAA0Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACpEgE,KAAKI,OAASA,E,WAGF,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,+DACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAEzBqD,MAAMthB,KAAKI,OAAO8nD,QAAnB,OACFloD,KAAKkoD,OAASloD,KAAKI,OAAO8nD,OAC1BloD,KAAKyrD,aAAezrD,KAAKI,OAAOqrD,aAChCzrD,KAAK21X,YAAYv4W,OAAO87B,iBAAmBl5C,KAAKie,UAChD,EAAAje,KAAuB,GAAMA,KAAK+zY,eAAez3X,QAAQtc,KAAKyrD,iB,OAG9D,OAHA,EAAKgpV,gBAAkB,SACvBz0Y,KAAKw0Y,qBAAqBp3X,OAAO87B,iBAAmBl5C,KAAKie,UACzDje,KAAKykW,gBAAkBzkW,KAAKy0Y,gBAAgBhwC,gBAC5C,GAAMzkW,KAAKukV,Y,OAAX,S,mCAMQ,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,0DAGO,O,sBAAA,GAAMgE,KAAKgtP,W,cAA3CvxO,EAAgC,SACpCzb,KAAKsd,WAAWoiU,UAAYjkU,EAASphB,KACrC2F,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,a,+BAGxCz/U,KAAK8iJ,aAAahmJ,MAAM,G,+BAMd,YAAAs3Y,cAAd,SAA4BhkE,G,qBAAqBp0U,GAAO,W,kDAC/C,SAAMgE,KAAKq0Y,kBAAkBr0D,aAAa5P,I,OAAjD,MAAO,CAAP,EAAO,kBAEK,YAAAquD,uBAAd,SAAqCliX,G,qBAAavgB,GAAO,W,wDAErD,O,sBAAA,GAAMgE,KAAKwuX,cAAc/jT,aAAaluD,I,OAEtC,OAFA,SACAvc,KAAK8iJ,aAAaxiJ,QAAQ,wCACnB,CAAP,GAAO,G,yBAGPN,KAAK8iJ,aAAahmJ,MAAM,G,+BAGd,YAAA85V,cAAd,SAA4BxrS,G,qBAAmBpvD,GAAO,W,6DAC7C,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAO4tC,IACNstG,YAAW,SAAOj9I,GAA2B,qC,yDACzCA,EAASw9B,aAAV,MACK,GAAMj5C,KAAKy+X,uBAAuBrzU,I,OAAzC,MAAO,CAAP,EAAO,U,mCALX,MAAO,CAAP,EAAO,kBAlFEspV,EAAiB,GAD7B,uB,uBAsByB,mB,OAAA,IAAN,oBAAM,SACc,mBADd,OACc,IAAb,UAAa,SACJ,mBADI,OACJ,IAAX,UAAW,SACkB,mBADlB,OACkB,IAApB,UAAoB,SACd,mBADc,OACd,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,SACO,mBADP,OACO,IAAjB,UAAiB,YA3BhCA,GAAb,I,0rBCLA,aAKE,WACU30Y,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAGRpsN,KAAKC,OAAS,aAAWC,UAAU,+B,QAavC,OAVS,YAAA+V,gBAAP,SAAuBzT,EAA6BsD,GAClD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,wBACVoD,KAAM,0BAnBDi3Y,EAA2B,GADvC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,qFCVAj5Y,EAAOD,QAAU,uD,0ECAjBC,EAAOD,QAAU,u/G,u7DCSjB,aAQE,WACU6lD,EACAwhG,EACA8xP,GAFA,KAAAtzV,mBACA,KAAAwhG,eACA,KAAA8xP,8BATF,KAAAp3X,MAAoB,IAAI,IAExB,KAAA8jI,YAAiC,GAUvCthJ,KAAKC,OAAS,aAAWC,UAAU,iC,UAqBvC,OAjBe,YAAA0Y,SAAb,SAAsB4E,G,qBAAoBxhB,GAAO,W,0DAC/CgE,KAAKC,OAAO0zC,MAAM,YAClB3zC,KAAKwd,MAAQA,E,iBAGQ,O,sBAAnB,EAAAxd,KAAmB,GAAMA,KAAK40Y,4BAA4BhxP,cAAc5jJ,KAAKwd,MAAM4tC,W,cAAnF,EAAKk2F,YAAc,S,+BAGnBthJ,KAAK8iJ,aAAahmJ,MAAM,G,+BAKd,YAAAs+G,OAAd,W,qBAAwBp/G,GAAO,W,kDACtB,SAAMgE,KAAKshD,iBAAiBskB,M,OAAnC,MAAO,CAAP,EAAO,kBAhCEivU,EAA6B,GADzC,uB,uBAU6C,mB,OAAA,IAAhB,wCAAgB,SACR,mBADQ,OACR,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,UAA2B,YAXvDA,GAAb,K,oGCTAn5Y,EAAOD,QAAU,yvC,s/DCejB,aAUE,WACU6lD,EACAokS,EACA5iM,EACAwrM,GAHA,KAAAhtS,mBACA,KAAAokS,8BACA,KAAA5iM,eACA,KAAAwrM,4BATF,KAAA9wU,MAAgB,IAAI,IAGpB,KAAAu3B,cAA+B,GASrC/0C,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,iC,YAwDvC,OApDS,YAAAylV,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,aAAapyK,YAAY,qCAAqCwkD,WACrE4tH,OAAO,YAAYpyK,YAAY,oCAAoCwkD,WACnE4tH,OAAO,4BAA4BpyK,YAAY,sCAAsCwkD,WACrFn+K,GAAGrtC,KAAKwd,QAGA,YAAA5E,SAAb,SAAsBqF,G,qBAAoBjiB,GAAO,W,6DAC1CslB,MAAMrD,GAAP,Y,iBASsB,O,sBAPtBje,KAAKie,UAAYA,EACjBje,KAAKsuV,0BAA0BlxU,OAAO87B,iBAAmBl5C,KAAKie,UAG9Dje,KAAKwd,MAAMm7W,WAAa,IAAI,IAC5B34X,KAAKwd,MAAMm7W,WAAWkJ,qBAAuB,IAAqB+B,OAE5C,GAAM5jY,KAAKmgY,oB,cAA3BprV,EAAgB,SACtB/0C,KAAK+0C,cAAgBA,EAAclwC,QAAO,SAAA+0V,GAAO,OAACA,EAAIZ,kBAAoB,IAAgBqiB,MAAQzhB,EAAI1vT,gBAAkB,IAAcovT,UAEtIt5V,KAAK2lV,2B,+BAGL3lV,KAAK8iJ,aAAahmJ,MAAM,G,+BAKhB,YAAAqjY,iBAAd,W,qBAAkCnkY,GAAO,W,kDAChC,SAAMgE,KAAKsuV,0BAA0B/wU,U,OAA5C,MAAO,CAAP,EAAO,kBAGI,YAAA69F,OAAb,W,qBAAuBp/G,GAAO,W,wDAC5BgE,KAAKC,OAAOE,KAAK,U,iBAGwB,O,sBAAA,GAAMH,KAAK01U,qBAAqBrnS,Y,cAAhC,SAC5BsqK,MACF,GAAM34M,KAAK08D,QADhB,M,OACF,MAAO,CAAP,EAAO,U,4CAIT18D,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAA4/D,KAAd,W,qBAAsB1gE,GAAO,W,kDACpB,SAAMgE,KAAKshD,iBAAiBskB,GAAG5lE,KAAKwd,Q,OAA3C,MAAO,CAAP,EAAO,kBAzEEs3X,EAA6B,GADzC,uB,uBAY6C,mB,OAAA,IAAhB,wCAAgB,SACsB,mBADtB,OACsB,IAA3B,8DAA2B,SAC9B,mBAD8B,OAC9B,IAAZ,UAAY,SAC0B,mBAD1B,OAC0B,IAAzB,UAAyB,YAdnDA,GAAb,K,oGCfAp5Y,EAAOD,QAAU,knF,qpECqBjB,aA4BE,WACUqK,EACA0oX,EACAmH,EACAV,EACA/wC,EACAphM,GANV,WACU,KAAAh9I,SACA,KAAA0oX,gBACA,KAAAmH,cACA,KAAAV,oBACA,KAAA/wC,gBACA,KAAAphM,eA/BF,KAAA1iJ,OAAc,GAMd,KAAA20Y,gBAA8B,GAC9B,KAAAC,gBAA8B,GAE9B,KAAAb,iBAA0C,IAAI,wBAG9C,KAAA72X,WAAoC,IAAI,wBAGxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,kDAE1B,SAAMgE,KAAKi1X,kBAAkBnhX,KAAK9T,KAAKsd,WAAYtd,KAAKkoD,S,OAA/D,MAAO,CAAP,EAAO,kBAGD,KAAA+sV,cAAgB,6BAAUj5Y,GAAO,W,kDAEhC,SAAMgE,KAAKi1X,kBAAkBhtU,WAAWjoD,KAAKm0Y,iBAAkBn0Y,KAAKkoD,S,OAA3E,MAAO,CAAP,EAAO,kBAYPloD,KAAKC,OAAS,aAAWC,UAAU,kB,gBAoJvC,OAjJgB,YAAA0Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACpEgE,KAAKI,OAASA,E,WAGF,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,+DACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKie,WAAaje,KAAKI,OAAO6d,UAEzBqD,MAAMthB,KAAKI,OAAO8nD,QAAnB,OACFloD,KAAKkoD,OAASloD,KAAKI,OAAO8nD,OAE1BloD,KAAK21X,YAAYv4W,OAAO87B,iBAAmBl5C,KAAKie,UAChDje,KAAKi1X,kBAAkB73W,OAAO87B,iBAAmBl5C,KAAKie,UAEtD,EAAAje,KAAa,GAAMA,KAAK21X,YAAYr5W,QAAQtc,KAAKkoD,W,OAEjD,OAFA,EAAK1qC,MAAQ,SAEb,GAAMxd,KAAKk1Y,kB,OAEX,OAFA,SAEA,GAAMl1Y,KAAKukV,Y,OAAX,S,mCAMQ,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,0DAGO,O,sBAAA,GAAMgE,KAAKgtP,W,cAA3CvxO,EAAgC,SACpCzb,KAAKsd,WAAWoiU,UAAYjkU,EAASphB,KACrC2F,KAAKsd,WAAWmiU,aAAehkU,EAASgkU,a,+BAGxCz/U,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAo4Y,eAAd,W,qBAAgCl5Y,GAAO,W,0DAGC,O,sBAAA,GAAMgE,KAAKi1Y,iB,cAA3Cx5X,EAAgC,SACpCzb,KAAKm0Y,iBAAiBz0D,UAAYjkU,EAASphB,KAC3C2F,KAAKm0Y,iBAAiB10D,aAAehkU,EAASgkU,a,+BAG9Cz/U,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAs3Y,cAAd,SAA4BhkE,G,qBAAqBp0U,GAAO,W,kDAC/C,SAAMgE,KAAKq0Y,kBAAkBr0D,aAAa5P,I,OAAjD,MAAO,CAAP,EAAO,kBAGK,YAAA+kE,QAAd,SAAsBC,G,qBAAyBp5Y,GAAO,W,0DAEpDo5Y,EAAWltV,OAASloD,KAAKkoD,O,iBAIV,O,sBAAA,GAAMloD,KAAKi1X,kBAAkBh2X,OAAOm2Y,EAAYp1Y,KAAKkoD,S,cAAlEktV,EAAa,SAET3wD,EAA6BzkV,KAAKm0Y,iBAAiBz0D,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEkkD,WAAagqV,EAAWhqV,YAC1GprD,KAAKm0Y,iBAAiBz0D,UAAUvoU,OAAOstU,EAAoB,GAC3DzkV,KAAKm0Y,iBAAiB10D,eAGtBz/U,KAAKsd,WAAWoiU,UAAU57U,QAAQsxY,GAClCp1Y,KAAKsd,WAAWmiU,eAEhBz/U,KAAK8iJ,aAAaxiJ,QAAQ,4B,+BAI1BN,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAA2+E,WAAd,SAAyB25T,G,kGAGrB,O,sBAAA,GAAMp1Y,KAAKi1X,kBAAkBn4W,OAAOs4X,EAAW74X,K,cAA/C,SAOIkoU,EAA6BzkV,KAAKsd,WAAWoiU,UAAUxsK,WAAU,SAAAhsK,GAAK,OAAAA,EAAEqV,KAAO64X,EAAW74X,MAC9Fvc,KAAKsd,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrDzkV,KAAKsd,WAAWmiU,eAGhBz/U,KAAKm0Y,iBAAiBz0D,UAAU57U,QAAQsxY,GACxCp1Y,KAAKm0Y,iBAAiB10D,eAEtBz/U,KAAK8iJ,aAAaxiJ,QAAQ,8B,+BAG1BN,KAAK8iJ,aAAahmJ,MAAM,G,+BAId,YAAAu4Y,wBAAd,SAAsC73X,G,qBAAoBxhB,GAAO,W,6DAExD,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOA,IACNk7I,YAAW,SAAOj9I,GAA2B,qC,yDACzCA,EAASw9B,aAAV,MACF,GAAMj5C,KAAKm1Y,QAAQ33X,I,OAAnB,S,6CALJ,MAAO,CAAP,EAAO,kBAUK,YAAA83X,wBAAd,W,qBAAyCt5Y,GAAO,W,6DAEvC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAKie,YACXy6I,YAAW,SAAOj9I,GAA2B,qC,+DACzCA,EAASw9B,aAAV,Y,iBAGqB,O,sBAAA,GAAMj5C,KAAKwuX,cAAcvvX,OAAOwc,EAASxR,S,OAMtD,OANJ4rJ,EAAiB,UAEjBr4I,EAAoB,IAAI,KACtB0qC,OAASloD,KAAKkoD,OACpB1qC,EAAM4tC,SAAWyqG,EAAOt5I,GAEhB,GAAMvc,KAAKi1X,kBAAkBh2X,OAAOue,EAAOxd,KAAKkoD,S,cAAxD1qC,EAAQ,SAGRxd,KAAKsd,WAAWoiU,UAAU57U,QAAQ0Z,GAClCxd,KAAKsd,WAAWmiU,eAEhBz/U,KAAK8iJ,aAAaxiJ,QAAQ,4B,+BAI1BN,KAAK8iJ,aAAahmJ,MAAM,G,yCAvB9B,MAAO,CAAP,EAAO,kBA3JEy4Y,EAAc,GAD1B,uB,uBA8ByB,mB,OAAA,IAAN,oBAAM,SACc,mBADd,OACc,IAAb,UAAa,SACJ,mBADI,OACJ,IAAX,UAAW,SACY,mBADZ,OACY,IAAjB,UAAiB,SACR,mBADQ,OACR,IAAb,kCAAa,SACF,mBADE,OACF,IAAZ,UAAY,YAlCzBA,GAAb,I,krBCVA,aAKE,WACUx1Y,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAGRpsN,KAAKC,OAAS,aAAWC,UAAW,6B,QAcxC,OAXS,YAAA+V,gBAAP,SAAyBzT,EAA6BsD,GACpD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAK,CACV,CACEjC,MAAO,GACPpI,SAAU,qBACVoD,KAAM,uBAnBD83Y,EAAyB,GADrC,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,+ECXA95Y,EAAOD,QAAU,uD,kECAjBC,EAAOD,QAAU,w9I,0mBCUjB,aAKE,WACUsE,GAAA,KAAAA,OAGRC,KAAKC,OAAS,aAAWC,UAAU,mB,MA+BvC,OA5BE,YAAA+V,gBAAA,SAAgBzT,EAA6BsD,GAC3C9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,GACPpI,SAAU,cACVoD,KAAM,YACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,0CAGtB,CACEqC,MAAO,cACPpI,SAAU,+CACVoD,KAAM,gCACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,kDAGtB,CACEqC,MAAO,kBACPpI,SAAU,uDACVoD,KAAM,oCACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,oDApCfo1Y,EAAe,GAD3B,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,YANTA,GAAb,I,4DCVA/5Y,EAAOD,QAAU,8M,s7DCUjB,aAWE,WACUqK,EACAg9I,EACA4iM,EACAiwC,GAHA,KAAA7vX,SACA,KAAAg9I,eACA,KAAA4iM,8BACA,KAAAiwC,cARF,KAAAn4W,MAAc,IAAI,IAUxBxd,KAAK01U,qBAAuB11U,KAAK0lV,4BAA4BnP,wBAC7Dv2U,KAAK01U,qBAAqBzC,YAAY,IAAI,KAE1CjzU,KAAKC,OAAS,aAAWC,UAAU,YACnCF,KAAKwd,MAAMmtD,KAAO,G,YAwFtB,OArFS,YAAAg7Q,yBAAP,WACE3lV,KAAKC,OAAOE,KAAK,4BACjB,kBACGi5U,OAAO,QAAQpyK,YAAY,+CAA+CwkD,WAC1En+K,GAAGrtC,KAAKwd,QAGA,YAAA5E,SAAb,SAAsBxY,G,qBAAcpE,GAAO,W,+DACpCslB,MAAMlhB,EAAO6d,WAAd,OACFje,KAAKie,WAAa7d,EAAO6d,UAEzBje,KAAK21X,YAAYv4W,OAAO87B,iBAAmBl5C,KAAKie,UAE3CqD,MAAMlhB,EAAO8nD,QAAd,OACFloD,KAAKkoD,OAAS9nD,EAAO8nD,OACrB,EAAAloD,KAAa,GAAMA,KAAKm8E,a,cAAxB,EAAK3+D,MAAQ,SACbxd,KAAK2lV,2B,aAEL3lV,KAAK2lV,2B,mCAKG,YAAAxpQ,QAAd,W,qBAAyBngF,GAAO,W,kDACvB,SAAMgE,KAAK21X,YAAYr5W,QAAQtc,KAAKkoD,S,OAA3C,MAAO,CAAP,EAAO,kBAGI,YAAAkzD,OAAb,SAAoB8qO,G,qBAAuBlqV,GAAO,W,6DAGzC,OAFPgE,KAAKC,OAAOE,KAAK,UAEV,GAAMH,KAAK01U,qBAAqBrnS,WACpClrC,MAAK,SAAO4M,GAAgC,qC,yDACvCA,EAAO4oM,MACL34M,KAAKkoD,OACA,GAAMloD,KAAK0c,OAAOwpU,IADvB,MADF,M,OAEA,MAAO,CAAP,EAAO,U,OAEA,SAAMlmV,KAAKf,OAAOinV,I,OAAzB,MAAO,CAAP,EAAO,U,2BAIZj6U,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAX5B,MAAO,CAAP,EAAO,kBAeT,sBAAI,sBAAO,C,IAAX,WACE,OAAQkD,KAAK21X,YAAYv4W,OAAO7C,c,gCAGpB,YAAAtb,OAAd,SAAqBinV,G,qBAAuBlqV,GAAO,W,6DAC1C,SAAMgE,KAAK21X,YAAY12X,OAAOe,KAAKwd,OACvCra,MAAK,SAAO4M,GAAY,qC,yDACvB/P,KAAK8iJ,aAAaxiJ,QAAQ,6BACtB4lV,EACK,GAAMlmV,KAAK8F,OAAOyI,OAAOhG,SAAS,QAAQwH,EAAOwM,GAAE,iBADxD,M,OACF,MAAO,CAAP,EAAO,U,OAGA,SAAMvc,KAAK8F,OAAOkD,gBAAgB,c,OAAzC,MAAO,CAAP,EAAO,oBAIViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAZ5B,MAAO,CAAP,EAAO,kBAgBK,YAAA4f,OAAd,SAAqBwpU,G,qBAAuBlqV,GAAO,W,6DAC1C,SAAMgE,KAAK21X,YAAYj5W,OAAO1c,KAAKwd,OACvCra,MAAK,gD,yDACJnD,KAAK8iJ,aAAaxiJ,QAAQ,6BAEtB4lV,EACK,GAAMlmV,KAAK8F,OAAOkD,gBAAgB,oBAAqB,CAAEk/C,OAAQloD,KAAKkoD,UAD3E,M,OACF,MAAO,CAAP,EAAO,U,OAGA,SAAMloD,KAAK8F,OAAOkD,gBAAgB,c,OAAzC,MAAO,CAAP,EAAO,oBAGViD,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAZ5B,MAAO,CAAP,EAAO,kBAeF,YAAA8qW,iBAAP,SAAwBnqW,GACtBuC,KAAK8iJ,aAAa3iJ,KAAK1C,IA3Gdi4Y,EAAQ,GADpB,uB,uBAayB,mB,OAAA,IAAN,oBAAM,SACY,mBADZ,OACY,IAAZ,UAAY,SAC8B,mBAD9B,OAC8B,IAA3B,8DAA2B,SAChC,mBADgC,OAChC,IAAX,UAAW,YAfvBA,GAAb,I,qECVAh6Y,EAAOD,QAAU,wpE,2kECYjB,aASE,WACUqK,EACA6vX,EACA7yO,EACAohM,GAJV,WACU,KAAAp+U,SACA,KAAA6vX,cACA,KAAA7yO,eACA,KAAAohM,gBAVF,KAAA9jV,OAAc,GAGd,KAAAkd,WAAoC,IAAI,wBAaxC,KAAA0vO,QAAU,6BAAUhxP,GAAO,W,+DAK1B,OAJPgE,KAAKC,OAAO0zC,MAAM,cACd9J,EAAS7pC,KAAKsd,WAAWusB,OAAOylT,MACpC3mL,eAAentF,QAAQ,iBAA4B,MAAV3xC,EAAiB,GAAKA,GAExD,GAAM7pC,KAAK21X,YAAY7hX,KAAK9T,KAAKsd,YACrCna,MAAK,SAACsY,GACL,OAAOA,KAERxP,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAL5B,MAAO,CAAP,EAAO,kBARPkD,KAAKC,OAAS,aAAWC,UAAU,Y,YAuGvC,OAtFgB,YAAA0Y,SAAd,SAAuBxY,EAAa8iV,G,qBAA2BlnV,GAAO,W,kCACpEgE,KAAKsd,WAAWusB,OAAOylT,MAAQ3mL,eAAexsF,QAAQ,kBACtDn8E,KAAKI,OAASA,E,WAGF,YAAAjB,KAAd,W,qBAAsBnD,GAAO,W,yDACtBslB,MAAMthB,KAAKI,OAAO6d,WAAnB,OACFje,KAAKC,OAAO0zC,MAAM,sBAAuB3zC,KAAKI,OAAO6d,WACrDje,KAAKie,WAAaje,KAAKI,OAAO6d,UAE9Bje,KAAK21X,YAAYv4W,OAAO87B,iBAAmBl5C,KAAKie,UAEzC,GAAMje,KAAKukV,a,OAAlB,MAAO,CAAP,EAAO,U,yBAKG,YAAAA,SAAd,W,qBAA0BvoV,GAAO,W,6DAExB,OADPgE,KAAKC,OAAO0zC,MAAM,YACX,GAAM3zC,KAAKgtP,UACf7pP,MAAK,SAACsY,GACL,EAAK6B,WAAWoiU,UAAYjkU,EAASphB,KACrC,EAAKijB,WAAWmiU,aAAehkU,EAASgkU,gBAEzCxzU,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAN5B,MAAO,CAAP,EAAO,kBAUK,YAAAyrU,QAAd,SAAsB6H,G,qBAAqBp0U,GAAO,W,kDACzC,SAAMgE,KAAKwkV,YAAYxE,aAAa5P,I,OAA3C,MAAO,CAAP,EAAO,kBAGK,YAAAmmC,aAAd,W,0FAEE,OADAv2W,KAAKsd,WAAWusB,OAAOylT,MAAQtvV,KAAKsd,WAAWusB,OAAO8wO,UAAY36Q,KAAKsd,WAAWusB,OAAO+wO,QAAU,KACnG,GAAM56Q,KAAKukV,Y,cAAX,S,YAGY,YAAAwgD,qBAAd,W,qBAAsC/oY,GAAO,W,6DACpC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOxd,KAAKsd,WAAWoiU,UAAU9kV,SAChC89J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MAEK,GAAMj5C,KAAK21X,YAAYprT,sBAAsBvqE,KAAKsd,YACtDna,MAAK,WAEJ,OADA,EAAK2/I,aAAaxiJ,QAAQ,8CACnB,M,OAHX,MAAO,CAAP,EAAO,U,mCANX,MAAO,CAAP,EAAO,kBAeK,YAAAmqE,aAAd,SAA2BluD,G,qBAAavgB,GAAO,W,wDAE3C,O,sBAAA,GAAMgE,KAAK21X,YAAYlrT,aAAaluD,I,OAEpC,OAFA,SACAvc,KAAK8iJ,aAAaxiJ,QAAQ,wCACnB,CAAP,GAAO,G,yBAGPN,KAAK8iJ,aAAahmJ,MAAM,G,+BAKd,YAAAggB,OAAd,SAAqBtc,G,qBAAaxE,GAAO,W,6DAChC,SAAMgE,KAAKkkV,cAAczoS,KAAK,CACnC1tC,UAAW,IACXyP,MAAOhd,EAAK9C,OACXg7J,YAAW,SAAOj9I,GAA2B,qC,oEACzCA,EAASw9B,aAAV,MAEK,GAAMj5C,KAAK21X,YAAY74W,OAAOtc,EAAK+b,IACvCpZ,MAAK,WACJ,IAAIshV,EAA6B,EAAKnnU,WAAWoiU,UAAU/6U,KAAI,SAAAuC,GAAK,OAAAA,EAAEqV,GAAGyC,cAAY3N,QAAQ7Q,EAAK+b,GAAGyC,YACrG,EAAK1B,WAAWoiU,UAAUvoU,OAAOstU,EAAoB,GACrD,EAAK3hM,aAAaxiJ,QAAQ,iCAE3B2L,OAAM,SAAAnP,GACL,EAAKgmJ,aAAahmJ,MAAMA,O,OAP5B,MAAO,CAAP,EAAO,U,mCANX,MAAO,CAAP,EAAO,kBApGE29X,EAAQ,GADpB,uB,uBAWyB,mB,OAAA,IAAN,oBAAM,SACU,mBADV,OACU,IAAX,UAAW,SACE,mBADF,OACE,IAAZ,UAAY,SACE,mBADF,OACE,IAAb,kCAAa,YAb3BA,GAAb,I,8pBCDA,aAKE,WACU16X,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAGRpsN,KAAKC,OAAS,aAAWC,UAAW,uB,QAkBxC,OAfS,YAAA+V,gBAAP,SAAyBzT,EAA6BsD,GACpD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAK,CACV,CACEjC,MAAO,GACPpI,SAAU,cACVoD,KAAM,aAER,CACEgF,MAAO,eACPpI,SAAU,sBACVoD,KAAM,wBAxBDi4Y,EAAmB,GAD/B,a,uBAOqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YAPzCA,GAAb,I,iECXAj6Y,EAAOD,QAAU,uD,sDCAjBC,EAAOD,QAAU,wtJ,goBCYjB,aAME,WACUsE,EACAqsN,GADA,KAAArsN,OACA,KAAAqsN,uBAERpsN,KAAKC,OAAS,aAAWC,UAAU,mB,QAwFvC,OArFS,YAAA+V,gBAAP,SAAuBzT,EAA6BsD,GAClD9F,KAAK8F,OAASA,EACdtD,EAAOmC,IAAI,CACT,CACEjC,MAAO,CAAC,GAAI,aACZpI,SAAU,oBACVoD,KAAM,YACN6S,KAAK,EACLjJ,MAAOtH,KAAKD,KAAKM,GAAG,8BACpB+H,SAAU,CACRk7U,KAAM,oBACNC,QAAQ,IAIZ,CACE7gV,MAAO,SACPpI,SAAU,0CACVoD,KAAM,2BACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBmtM,gBAClEpqQ,MAAOtH,KAAKD,KAAKM,GAAG,gCACpB+H,SAAU,CACRk7U,KAAM,kBAIV,CACE5gV,MAAO,YACPpI,SAAU,8CACVoD,KAAM,6BACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB4uM,kBAClE7rQ,MAAOtH,KAAKD,KAAKM,GAAG,mCACpB+H,SAAU,CACRk7U,KAAM,iBAIV,CACE5gV,MAAO,QACPpI,SAAU,sCACVoD,KAAM,yBACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB4uM,kBAClE7rQ,MAAOtH,KAAKD,KAAKM,GAAG,+BACpB+H,SAAU,CACRk7U,KAAM,iBAIV,CACE5gV,MAAO,gBACPpI,SAAU,sDACVoD,KAAM,iCACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB4uM,kBAClE7rQ,MAAOtH,KAAKD,KAAKM,GAAG,uCACpB+H,SAAU,CACRk7U,KAAM,uBAIV,CACE5gV,MAAO,OACPpI,SAAU,sCACVoD,KAAM,yBACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsBmtM,gBAClEpqQ,MAAOtH,KAAKD,KAAKM,GAAG,8BACpB+H,SAAU,CACRk7U,KAAM,cAIV,CACE5gV,MAAO,WACPpI,SAAU,4CACVoD,KAAM,4BACN6S,IAAKvQ,KAAKosN,qBAAqB7nJ,aAAa,IAAsB0wM,iBAClE3tQ,MAAOtH,KAAKD,KAAKM,GAAG,iCACpB+H,SAAU,CACRk7U,KAAM,eA1FHsyD,EAAe,GAD3B,uB,uBAQqB,mB,OAAA,IAAJ,gBAAI,SACgC,mBADhC,OACgC,IAApB,gDAAoB,YARzCA,GAAb,I,iDCZAl6Y,EAAOD,QAAU,wE,yECAjB,IAAYo6Y,E,+DAAZ,SAAYA,GACV,mDACA,6CAFF,CAAYA,MAAQ,KCQpB,+BAkBA,OAbE,YAAAv+F,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAA0B,SAAIiuU,EAInCnlY,EAAKk3D,gBAA2B,UAC9B/sE,OAAO0Z,KAAKshY,GACThxY,QAAO,SAAC3F,GAAQ,MAAyB,iBAAlB22Y,EAAS32Y,OAEzC,EAlBA,I,+ECRA,kFASA,2BAkBA,OAbE,YAAAo4S,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAAgC,eAAI,IAIzCl3D,EAAKk3D,gBAAkC,iBACrC/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAA+B,iBAAxB,IAAeA,OAE/C,EAlBA,I,kFCTA,IAAY42Y,E,wEAAZ,SAAYA,GACV,0BACA,6BACA,yBACA,6BAJF,CAAYA,MAAiB,KCQ7B,+BAkBA,OAbE,YAAAx+F,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAAmC,kBAAIkuU,EAI5CplY,EAAKk3D,gBAAoC,mBACvC/sE,OAAO0Z,KAAKuhY,GACTjxY,QAAO,SAAC3F,GAAQ,MAAkC,iBAA3B42Y,EAAkB52Y,OAElD,EAlBA,I,gFCNA,kFAMA,2BAkBA,OAbE,YAAAo4S,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAAiC,gBAAI,IAI1Cl3D,EAAKk3D,gBAAmC,kBACtC/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAAgC,iBAAzB,IAAgBA,OAEhD,EAlBA,I,4ECRA,IAAY62Y,E,sEAAZ,SAAYA,GACV,yBACA,qBAFF,CAAYA,MAAW,KCQvB,+BAkBA,OAbE,YAAAz+F,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAA6B,YAAImuU,EAItCrlY,EAAKk3D,gBAA8B,aACjC/sE,OAAO0Z,KAAKwhY,GACTlxY,QAAO,SAAC3F,GAAQ,MAA4B,iBAArB62Y,EAAY72Y,OAE5C,EAlBA,I,gFCRA,IAAY82Y,E,sEAAZ,SAAYA,GACV,eACA,iBACA,eACA,mBAJF,CAAYA,MAAe,KCQ3B,+BAkBA,OAbE,YAAA1+F,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAAiC,gBAAIouU,EAI1CtlY,EAAKk3D,gBAAkC,iBACrC/sE,OAAO0Z,KAAKyhY,GACTnxY,QAAO,SAAC3F,GAAQ,MAAgC,iBAAzB82Y,EAAgB92Y,OAEhD,EAlBA,I,uECRA,IAAY+2Y,E,6DAAZ,SAAYA,GACV,uBACA,oCACA,sCACA,qCAJF,CAAYA,MAAM,KCSlB,+BAkBA,OAbE,YAAA3+F,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAAwB,OAAIquU,EAIjCvlY,EAAKk3D,gBAA0B,SAC7B/sE,OAAO0Z,KAAK0hY,GACTpxY,QAAO,SAAC3F,GAAQ,MAAuB,iBAAhB+2Y,EAAO/2Y,OAEvC,EAlBA,I,8ECTA,IAAYg3Y,E,oEAAZ,SAAYA,GACV,6BACA,6CACA,mDAHF,CAAYA,MAAa,KCQzB,+BAkBA,OAbE,YAAA5+F,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAA+B,cAAIsuU,EAIxCxlY,EAAKk3D,gBAAgC,eACnC/sE,OAAO0Z,KAAK2hY,GACTrxY,QAAO,SAAC3F,GAAQ,MAA8B,iBAAvBg3Y,EAAch3Y,OAE9C,EAlBA,I,uECWA,IAAYmiW,E,+DAAZ,SAAYA,GACV,uCACA,mCACA,mDACA,mDACA,mDACA,2DACA,uDACA,uDACA,uDACA,mDACA,oDACA,gDAZF,CAAYA,MAAQ,KCVpB,+BAkBA,OAbE,YAAA/pD,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAA0B,SAAIy5R,EAInC3wV,EAAKk3D,gBAA2B,UAC9B/sE,OAAO0Z,KAAK8sV,GACTx8V,QAAO,SAAC3F,GAAQ,MAAyB,iBAAlBmiW,EAASniW,OAEzC,EAlBA,I,+ECNA,oFAMA,2BAkBA,OAbE,YAAAo4S,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAAkC,iBAAI,IAI3Cl3D,EAAKk3D,gBAAmC,kBACtC/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAAiC,iBAA1B,IAAiBA,OAEjD,EAlBA,I,oECKA,IAAYgiW,E,4DAAZ,SAAYA,GACV,mBACA,uBACA,6BAHF,CAAYA,MAAK,KCLjB,+BAkBA,OAbE,YAAA5pD,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAAuB,MAAIs5R,EAIhCxwV,EAAKk3D,gBAAwB,OAC3B/sE,OAAO0Z,KAAK2sV,GACTr8V,QAAO,SAAC3F,GAAQ,MAAsB,iBAAfgiW,EAAMhiW,OAEtC,EAlBA,I,uFCRA,IAAYi3Y,E,8EAAZ,SAAYA,GACV,uDACA,+BACA,mCACA,qCAJF,CAAYA,MAAuB,KCEnC,+BAUA,OARE,YAAA7+F,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAAyC,wBAAIuuU,EAElDzlY,EAAKk3D,gBAA0C,yBAC7C/sE,OAAO0Z,KAAK4hY,GACTtxY,QAAO,SAAC3F,GAAQ,MAAwC,iBAAjCi3Y,EAAwBj3Y,OAExD,EAVA,I,sFCHA,IAAYk3Y,E,6EAAZ,SAAYA,GAER,0BAEA,4BAEA,6BAEA,yBARJ,CAAYA,MAAsB,KCGlC,+BAUA,OARE,YAAA9+F,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAAwC,uBAAIwuU,EAEjD1lY,EAAKk3D,gBAAyC,wBAC5C/sE,OAAO0Z,KAAK6hY,GACTvxY,QAAO,SAAC3F,GAAQ,MAAuC,iBAAhCk3Y,EAAuBl3Y,OAEvD,EAVA,I,+ECHA,IAAYm3Y,E,kEAAZ,SAAYA,GACV,yBACA,mBACA,6BACA,yBACA,6BALF,CAAYA,MAAW,KCGvB,+BAUA,OARE,YAAA/+F,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAA6B,YAAIyuU,EAEtC3lY,EAAKk3D,gBAA8B,aACjC/sE,OAAO0Z,KAAK8hY,GACTxxY,QAAO,SAAC3F,GAAQ,MAA4B,iBAArBm3Y,EAAYn3Y,OAE5C,EAVA,I,4ECHA,IAAYo3Y,E,oEAAZ,SAAYA,GAER,qBAEA,uBAEA,0BANJ,CAAYA,MAAa,KCGzB,+BAUA,OARE,YAAAh/F,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAA+B,cAAI0uU,EAExC5lY,EAAKk3D,gBAAgC,eACnC/sE,OAAO0Z,KAAK+hY,GACTzxY,QAAO,SAAC3F,GAAQ,MAA8B,iBAAvBo3Y,EAAcp3Y,OAE9C,EAVA,I,yECFA,IAAYq3Y,E,oEAAZ,SAAYA,GACV,yBACA,uBACA,2BAHF,CAAYA,MAAa,KCOzB,+BAkBA,OAbE,YAAAj/F,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAA+B,cAAI2uU,EAIxC7lY,EAAKk3D,gBAAgC,eACnC/sE,OAAO0Z,KAAKgiY,GACT1xY,QAAO,SAAC3F,GAAQ,MAA8B,iBAAvBq3Y,EAAcr3Y,OAE9C,EAlBA,I,6ECRA,IAAYs3Y,E,wEAAZ,SAAYA,GAER,2BACA,yBACA,uCACA,6BALJ,CAAYA,MAAiB,KCG7B,+BAUA,OARE,YAAAl/F,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAAmC,kBAAI4uU,EAE5C9lY,EAAKk3D,gBAAoC,mBACvC/sE,OAAO0Z,KAAKiiY,GACT3xY,QAAO,SAAC3F,GAAQ,MAAkC,iBAA3Bs3Y,EAAkBt3Y,OAElD,EAVA,I,oECDA,4EAMA,2BAkBA,OAbE,YAAAo4S,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAA0B,SAAI,IAInCl3D,EAAKk3D,gBAA2B,UAC9B/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAAyB,iBAAlB,IAASA,OAEzC,EAlBA,I,sFCPA,IAAYu3Y,E,iFAAZ,SAAYA,GACV,6BACA,uCACA,2CACA,qCACA,qBACA,iCANF,CAAYA,MAA0B,KCOtC,+BAkBA,OAbE,YAAAn/F,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAA4C,2BAAI6uU,EAIrD/lY,EAAKk3D,gBAA6C,4BAChD/sE,OAAO0Z,KAAKkiY,GACT5xY,QAAO,SAAC3F,GAAQ,MAA2C,iBAApCu3Y,EAA2Bv3Y,OAE3D,EAlBA,I,qECPA,6EAEA,2BAUA,OARE,YAAAo4S,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAA2B,UAAI,IAEpCl3D,EAAKk3D,gBAA4B,WAC/B/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAA0B,iBAAnB,IAAUA,OAE1C,EAVA,I,iFCFA,IAAYw3Y,E,4EAAZ,SAAYA,GACV,mBACA,yBACA,6BACA,uBACA,2BALF,CAAYA,MAAqB,KCOjC,+BAkBA,OAbE,YAAAp/F,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAAuC,sBAAI8uU,EAIhDhmY,EAAKk3D,gBAAyC,wBAC5C/sE,OAAO0Z,KAAKmiY,GACT7xY,QAAO,SAAC3F,GAAQ,MAAsC,iBAA/Bw3Y,EAAsBx3Y,OAEtD,EAlBA,I,4ECNA,oFAMA,2BAkBA,OAbE,YAAAo4S,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAAkC,iBAAI,IAI3Cl3D,EAAKk3D,gBAAmC,kBACtC/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAAiC,iBAA1B,IAAiBA,OAEjD,EAlBA,I,6ECPA,IAAYy3Y,E,wEAAZ,SAAYA,GACV,uBACA,yBACA,uBAHF,CAAYA,MAAiB,KCO7B,+BAkBA,OAbE,YAAAr/F,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAAmC,kBAAI+uU,EAI5CjmY,EAAKk3D,gBAAoC,mBACvC/sE,OAAO0Z,KAAKoiY,GACT9xY,QAAO,SAAC3F,GAAQ,MAAkC,iBAA3By3Y,EAAkBz3Y,OAElD,EAlBA,I,yDCPA,IAAYm8W,EAAZ,qDAAYA,GACR,aACA,aACA,aACA,aAJJ,CAAYA,MAAI,M,4ECAhB,gFAEA,2BAUA,OARE,YAAA/jE,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAA0B,SAAI,IAEnCl3D,EAAKk3D,gBAA2B,UAC9B/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAAyB,iBAAlB,IAASA,OAEzC,EAVA,I,wECDA,gGAMA,2BAkBA,OAbE,YAAAo4S,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAAsB,KAAI,OAI/Bl3D,EAAKk3D,gBAAuB,MAC1B/sE,OAAO0Z,KAAK,QACT1P,QAAO,SAAC3F,GAAQ,MAAqB,iBAAd,OAAKA,OAErC,EAlBA,I,4ECRA,IAAY03Y,E,+DAAZ,SAAYA,GACV,2BACA,6BACA,+BACA,+BACA,6BACA,mCACA,+CAPF,CAAYA,MAAQ,KCGpB,+BAUA,OARE,YAAAt/F,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAA0B,SAAIgvU,EAEnClmY,EAAKk3D,gBAA2B,UAC9B/sE,OAAO0Z,KAAKqiY,GACT/xY,QAAO,SAAC3F,GAAQ,MAAyB,iBAAlB03Y,EAAS13Y,OAEzC,EAVA,I,iFCDA,gFAMA,2BAkBA,OAbE,YAAAo4S,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAA+B,cAAI,IAIxCl3D,EAAKk3D,gBAAgC,eACnC/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAA8B,iBAAvB,IAAcA,IAAqB,IAAcA,KAAS,IAAcg7V,aAExG,EAlBA,I,gGCPA,+FAEA,2BAcA,OAZE,YAAA5iD,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAA4B,WAAI,IAGrCl3D,EAAKk3D,gBAA6B,YAChC/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GACP,MAA2B,iBAApB,IAAWA,KACjB,IAAWA,KAAS,IAAWs6V,SAAW,IAAWt6V,KAAS,IAAW86V,iBAGpF,EAdA,I,8ECFA,6EAEA,2BAUA,OARE,YAAA1iD,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAA4B,WAAI,IAErCl3D,EAAKk3D,gBAA6B,YAChC/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAA2B,iBAApB,IAAWA,OAE3C,EAVA,I,oFCFA,8FAEA,2BAUA,OARE,YAAAo4S,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAAkC,iBAAI,IAE3Cl3D,EAAKk3D,gBAAmC,kBACtC/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAAiC,iBAA1B,IAAiBA,OAEjD,EAVA,I,mFCDA,kFAMA,2BAkBA,OAbE,YAAAo4S,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAAiC,gBAAI,IAI1Cl3D,EAAKk3D,gBAAkC,iBACrC/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAAgC,iBAAzB,IAAgBA,OAEhD,EAlBA,I,uFCPA,0FAEA,2BAOA,OANE,YAAAo4S,WAAA,SAAW5mS,GACTA,EAAKk3D,gBAAyC,wBAAI,IAClDl3D,EAAKk3D,gBAA0C,yBAC7C/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAAwC,iBAAjC,IAAwBA,OAExD,EAPA,I,4ECDA,+EAMA,2BAkBA,OAbE,YAAAo4S,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAA8B,aAAI,IAIvCl3D,EAAKk3D,gBAA+B,cAClC/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAA6B,iBAAtB,IAAaA,OAE7C,EAlBA,I,kFCPA,sFAMA,2BAkBA,OAbE,YAAAo4S,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAAoC,mBAAI,IAI7Cl3D,EAAKk3D,gBAAqC,oBACxC/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAAmC,iBAA5B,IAAmBA,OAEnD,EAlBA,I,mECNA,uEAEA,2BAQA,OANE,YAAAo4S,WAAA,SAAW5mS,GACTA,EAAKk3D,gBAAsB,KAAI,IAC/Bl3D,EAAKk3D,gBAAuB,MAC1B/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAAqB,iBAAd,IAAKA,OAErC,EARA,I,wECDA,4EAMA,2BAkBA,OAbE,YAAAo4S,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAA2B,UAAI,IAIpCl3D,EAAKk3D,gBAA+B,cAClC/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAA0B,iBAAnB,IAAUA,OAE1C,EAlBA,I,mFCPA,mFAEA,2BAUA,OARE,YAAAo4S,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAAuC,sBAAI,IAEhDl3D,EAAKk3D,gBAAwC,uBAC3C/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAAsC,iBAA/B,IAAsBA,OAEtD,EAVA,I,6ECFA,mFAEA,2BAUA,OARE,YAAAo4S,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAAiC,gBAAI,IAE1Cl3D,EAAKk3D,gBAAkC,iBACrC/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAAgC,iBAAzB,IAAgBA,OAEhD,EAVA,I,8ECHA,IAAY23Y,E,oEAAZ,SAAYA,GACV,uBACA,2BACA,mBACA,mCACA,uCACA,2CANF,CAAYA,MAAW,KCQvB,+BAkBA,OAbE,YAAAv/F,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAA6B,YAAIivU,EAItCnmY,EAAKk3D,gBAA8B,aACjC/sE,OAAO0Z,KAAKsiY,GACThyY,QAAO,SAAC3F,GAAQ,MAA4B,iBAArB23Y,EAAY33Y,OAE5C,EAlBA,I,uFCPA,qFASA,2BAkBA,OAbE,YAAAo4S,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAAmC,kBAAI,IAI5Cl3D,EAAKk3D,gBAAqC,oBACxC/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAAkC,iBAA3B,IAAkBA,OAElD,EAlBA,I,6FCVA,IAAY43Y,E,wEAAZ,SAAYA,GACV,mBACA,iBACA,6BACA,qCAJF,CAAYA,MAAiB,KCG7B,+BAUA,OARE,YAAAx/F,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAAmC,kBAAIkvU,EAE5CpmY,EAAKk3D,gBAAqC,oBACxC/sE,OAAO0Z,KAAKuiY,GACTjyY,QAAO,SAAC3F,GAAQ,MAAkC,iBAA3B43Y,EAAkB53Y,OAElD,EAVA,I,kGCFA,8FAEA,2BAUA,OARE,YAAAo4S,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAA4C,2BAAI,IAErDl3D,EAAKk3D,gBAA6C,4BAChD/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAA2C,iBAApC,IAA2BA,OAE3D,EAVA,I,+ECHA,IAAY63Y,E,iEAAZ,SAAYA,GACV,mBACA,uBACA,mBAHF,CAAYA,MAAU,KCGtB,+BAUA,OARE,YAAAz/F,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAA4B,WAAImvU,EAErCrmY,EAAKk3D,gBAA8B,aACjC/sE,OAAO0Z,KAAKwiY,GACTlyY,QAAO,SAAC3F,GAAQ,MAA2B,iBAApB63Y,EAAW73Y,OAE3C,EAVA,I,8ECHA,IAAYooY,EAAZ,4EAAYA,GACV,yBACA,mBACA,6BACA,6BACA,mCACA,mBACA,yBACA,6BACA,yCACA,6BACA,0BAXF,CAAYA,MAA2B,M,6FCCvC,4IAEA,2BAUA,OARE,YAAAhwF,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAA6C,4BAAI,8BAEtDl3D,EAAKk3D,gBAA+C,8BAClD/sE,OAAO0Z,KAAK,+BACT1P,QAAO,SAAC3F,GAAQ,MAA4C,iBAArC,8BAA4BA,OAE5D,EAVA,I,8ECHA,IAAY83Y,E,mEAAZ,SAAYA,GACV,mBACA,yBACA,6BACA,qBAJF,CAAYA,MAAY,KCGxB,+BAUA,OARE,YAAA1/F,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAA8B,aAAIovU,EAEvCtmY,EAAKk3D,gBAA+B,cAClC/sE,OAAO0Z,KAAKyiY,GACTnyY,QAAO,SAAC3F,GAAQ,MAA6B,iBAAtB83Y,EAAa93Y,OAE7C,EAVA,I,sFCFA,mFAEA,2BAUA,OARE,YAAAo4S,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAAsC,qBAAI,IAE/Cl3D,EAAKk3D,gBAAuC,sBAC1C/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAAqC,iBAA9B,IAAqBA,OAErD,EAVA,I,4ECDA,8EAMA,2BAkBA,OAbE,YAAAo4S,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAA4B,WAAI,IAIrCl3D,EAAKk3D,gBAA6B,YAChC/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAA2B,iBAApB,IAAWA,OAE3C,EAlBA,I,gFCRA,IAAY+3Y,E,qEAAZ,SAAYA,GACR,uBADJ,CAAYA,MAAc,KCQ1B,+BAkBA,OAbE,YAAA3/F,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAAgC,eAAIqvU,EAIzCvmY,EAAKk3D,gBAAiC,gBACpC/sE,OAAO0Z,KAAK0iY,GACTpyY,QAAO,SAAC3F,GAAQ,MAA+B,iBAAxB+3Y,EAAe/3Y,OAE/C,EAlBA,I,uECNA,wEAMA,2BAkBA,OAbE,YAAAo4S,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAAsB,KAAI,IAI/Bl3D,EAAKk3D,gBAAuB,MAC1B/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAAsB,iBAAf,IAAMA,OAEtC,EAlBA,I,iFCNA,mFAEA,2BAUA,OARE,YAAAo4S,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAAiC,gBAAI,IAE1Cl3D,EAAKk3D,gBAAkC,iBACrC/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAAgC,iBAAzB,IAAgBA,OAEhD,EAVA,I,0FCHA,0FAEA,2BAUA,OARE,YAAAo4S,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAAwC,uBAAI,IAEjDl3D,EAAKk3D,gBAAyC,wBAC5C/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAAuC,iBAAhC,IAAuBA,OAEvD,EAVA,I,iFCHA,IAAYg4Y,E,oEAAZ,SAAYA,GACV,iCACA,yBACA,6BAHF,CAAYA,MAAa,KCGzB,+BAUA,OARE,YAAA5/F,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAA+B,cAAIsvU,EAExCxmY,EAAKk3D,gBAAgC,eACnC/sE,OAAO0Z,KAAK2iY,GACTryY,QAAO,SAAC3F,GAAQ,MAA8B,iBAAvBg4Y,EAAch4Y,OAE9C,EAVA,I,2FCHA,IAAYi4Y,E,8EAAZ,SAAYA,GACR,+BADJ,CAAYA,MAAuB,KCGnC,+BAUA,OARE,YAAA7/F,WAAA,SAAW5mS,GAETA,EAAKk3D,gBAAyC,wBAAIuvU,EAElDzmY,EAAKk3D,gBAA0C,yBAC7C/sE,OAAO0Z,KAAK4iY,GACTtyY,QAAO,SAAC3F,GAAQ,MAAwC,iBAAjCi4Y,EAAwBj4Y,OAExD,EAVA,I,oFCDA,gFAMA,2BAkBA,OAbE,YAAAo4S,WAAA,SAAW5mS,GAKTA,EAAKk3D,gBAA2B,UAAI,IAIpCl3D,EAAKk3D,gBAA4B,WAC/B/sE,OAAO0Z,KAAK,KACT1P,QAAO,SAAC3F,GAAQ,MAA0B,iBAAnB,IAAUA,OAE1C,EAlBA","file":"app.3a207e82b88f3a87eca8.bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({}[chunkId]||chunkId) + \".\" + {\"2\":\"c14b0f316fd7ec255a6d\",\"3\":\"0fc497042e77e9fdaaca\",\"4\":\"a4505cfa4444d0bbb688\",\"5\":\"cbea58ef8ab29f335444\",\"6\":\"8994bab564e01cc0f8fe\"}[chunkId] + \".chunk.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 484);\n","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { I18N } from \"aurelia-i18n\";\n// import { NotificationService, NotificationLevel } from \"aurelia-notify\";\nimport { Logger } from 'aurelia-logging';\n\nimport * as toastr from 'toastr';\n\n@autoinject\nexport class Notification {\n\n  private logger: Logger;\n\n  constructor(\n    private i18n: I18N) {\n\n    this.logger = LogManager.getLogger('Notification');\n\n  }\n\n  public info(message?: string, params?: any) {\n    toastr.info(this.i18n.tr(message, params));\n  }\n\n  public success(message?: string) {\n    toastr.success(this.i18n.tr(message));\n  }\n\n  public warning(message?: string) {\n    toastr.warning(this.i18n.tr(message));\n  }\n\n  public error(message?: any) {\n    this.logger.error(\"Error:\", message);\n    if (message) {\n      if (typeof message === 'string') {\n        toastr.error(this.i18n.tr(message));\n      }\n      else if (message instanceof Error) {\n        toastr.error(this.i18n.tr(message.message));\n      }\n      else {\n        for (let item in message) {\n          if (message.hasOwnProperty(item)) {\n            let val = message[item];\n            if (Array.isArray(val)) {\n              for (let i = 0; i < val.length; i++) {\n                toastr.error(this.i18n.tr(val[i]));\n              }\n            }\n            else {\n              toastr.error(this.i18n.tr(val));\n            }\n\n          }\n        }\n      }\n    }\n    else {\n      toastr.error(this.i18n.tr(\"error.unknow_error\"));\n    }\n  }\n}\n","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\nimport * as LogManager from 'aurelia-logging';\nimport { RouteRecognizer } from 'aurelia-route-recognizer';\nimport { Container } from 'aurelia-dependency-injection';\nimport { History, NavigationOptions } from 'aurelia-history';\nimport { EventAggregator } from 'aurelia-event-aggregator';\n\nexport function _normalizeAbsolutePath(path, hasPushState) {\n  var absolute = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  if (!hasPushState && path[0] !== '#') {\n    path = '#' + path;\n  }\n\n  if (hasPushState && absolute) {\n    path = path.substring(1, path.length);\n  }\n\n  return path;\n}\n\nexport function _createRootedPath(fragment, baseUrl, hasPushState, absolute) {\n  if (isAbsoluteUrl.test(fragment)) {\n    return fragment;\n  }\n\n  var path = '';\n\n  if (baseUrl.length && baseUrl[0] !== '/') {\n    path += '/';\n  }\n\n  path += baseUrl;\n\n  if ((!path.length || path[path.length - 1] !== '/') && fragment[0] !== '/') {\n    path += '/';\n  }\n\n  if (path.length && path[path.length - 1] === '/' && fragment[0] === '/') {\n    path = path.substring(0, path.length - 1);\n  }\n\n  return _normalizeAbsolutePath(path + fragment, hasPushState, absolute);\n}\n\nexport function _resolveUrl(fragment, baseUrl, hasPushState) {\n  if (isRootedPath.test(fragment)) {\n    return _normalizeAbsolutePath(fragment, hasPushState);\n  }\n\n  return _createRootedPath(fragment, baseUrl, hasPushState);\n}\n\nexport function _ensureArrayWithSingleRoutePerConfig(config) {\n  var routeConfigs = [];\n\n  if (Array.isArray(config.route)) {\n    for (var i = 0, ii = config.route.length; i < ii; ++i) {\n      var current = Object.assign({}, config);\n      current.route = config.route[i];\n      routeConfigs.push(current);\n    }\n  } else {\n    routeConfigs.push(Object.assign({}, config));\n  }\n\n  return routeConfigs;\n}\n\nvar isRootedPath = /^#?\\//;\nvar isAbsoluteUrl = /^([a-z][a-z0-9+\\-.]*:)?\\/\\//i;\n\nexport var CommitChangesStep = function () {\n  function CommitChangesStep() {\n    \n  }\n\n  CommitChangesStep.prototype.run = function run(navigationInstruction, next) {\n    return navigationInstruction._commitChanges(true).then(function () {\n      navigationInstruction._updateTitle();\n      return next();\n    });\n  };\n\n  return CommitChangesStep;\n}();\n\nexport var NavigationInstruction = function () {\n  function NavigationInstruction(init) {\n    \n\n    this.plan = null;\n    this.options = {};\n\n    Object.assign(this, init);\n\n    this.params = this.params || {};\n    this.viewPortInstructions = {};\n\n    var ancestorParams = [];\n    var current = this;\n    do {\n      var currentParams = Object.assign({}, current.params);\n      if (current.config && current.config.hasChildRouter) {\n        delete currentParams[current.getWildCardName()];\n      }\n\n      ancestorParams.unshift(currentParams);\n      current = current.parentInstruction;\n    } while (current);\n\n    var allParams = Object.assign.apply(Object, [{}, this.queryParams].concat(ancestorParams));\n    this.lifecycleArgs = [allParams, this.config, this];\n  }\n\n  NavigationInstruction.prototype.getAllInstructions = function getAllInstructions() {\n    var instructions = [this];\n    for (var _key in this.viewPortInstructions) {\n      var childInstruction = this.viewPortInstructions[_key].childNavigationInstruction;\n      if (childInstruction) {\n        instructions.push.apply(instructions, childInstruction.getAllInstructions());\n      }\n    }\n\n    return instructions;\n  };\n\n  NavigationInstruction.prototype.getAllPreviousInstructions = function getAllPreviousInstructions() {\n    return this.getAllInstructions().map(function (c) {\n      return c.previousInstruction;\n    }).filter(function (c) {\n      return c;\n    });\n  };\n\n  NavigationInstruction.prototype.addViewPortInstruction = function addViewPortInstruction(viewPortName, strategy, moduleId, component) {\n    var config = Object.assign({}, this.lifecycleArgs[1], { currentViewPort: viewPortName });\n    var viewportInstruction = this.viewPortInstructions[viewPortName] = {\n      name: viewPortName,\n      strategy: strategy,\n      moduleId: moduleId,\n      component: component,\n      childRouter: component.childRouter,\n      lifecycleArgs: [].concat(this.lifecycleArgs[0], config, this.lifecycleArgs[2])\n    };\n\n    return viewportInstruction;\n  };\n\n  NavigationInstruction.prototype.getWildCardName = function getWildCardName() {\n    var wildcardIndex = this.config.route.lastIndexOf('*');\n    return this.config.route.substr(wildcardIndex + 1);\n  };\n\n  NavigationInstruction.prototype.getWildcardPath = function getWildcardPath() {\n    var wildcardName = this.getWildCardName();\n    var path = this.params[wildcardName] || '';\n\n    if (this.queryString) {\n      path += '?' + this.queryString;\n    }\n\n    return path;\n  };\n\n  NavigationInstruction.prototype.getBaseUrl = function getBaseUrl() {\n    var _this = this;\n\n    var fragment = decodeURI(this.fragment);\n\n    if (fragment === '') {\n      var nonEmptyRoute = this.router.routes.find(function (route) {\n        return route.name === _this.config.name && route.route !== '';\n      });\n      if (nonEmptyRoute) {\n        fragment = nonEmptyRoute.route;\n      }\n    }\n\n    if (!this.params) {\n      return encodeURI(fragment);\n    }\n\n    var wildcardName = this.getWildCardName();\n    var path = this.params[wildcardName] || '';\n\n    if (!path) {\n      return encodeURI(fragment);\n    }\n\n    return encodeURI(fragment.substr(0, fragment.lastIndexOf(path)));\n  };\n\n  NavigationInstruction.prototype._commitChanges = function _commitChanges(waitToSwap) {\n    var _this2 = this;\n\n    var router = this.router;\n    router.currentInstruction = this;\n\n    if (this.previousInstruction) {\n      this.previousInstruction.config.navModel.isActive = false;\n    }\n\n    this.config.navModel.isActive = true;\n\n    router.refreshNavigation();\n\n    var loads = [];\n    var delaySwaps = [];\n\n    var _loop = function _loop(viewPortName) {\n      var viewPortInstruction = _this2.viewPortInstructions[viewPortName];\n      var viewPort = router.viewPorts[viewPortName];\n\n      if (!viewPort) {\n        throw new Error('There was no router-view found in the view for ' + viewPortInstruction.moduleId + '.');\n      }\n\n      if (viewPortInstruction.strategy === activationStrategy.replace) {\n        if (viewPortInstruction.childNavigationInstruction && viewPortInstruction.childNavigationInstruction.parentCatchHandler) {\n          loads.push(viewPortInstruction.childNavigationInstruction._commitChanges(waitToSwap));\n        } else {\n          if (waitToSwap) {\n            delaySwaps.push({ viewPort: viewPort, viewPortInstruction: viewPortInstruction });\n          }\n          loads.push(viewPort.process(viewPortInstruction, waitToSwap).then(function (x) {\n            if (viewPortInstruction.childNavigationInstruction) {\n              return viewPortInstruction.childNavigationInstruction._commitChanges(waitToSwap);\n            }\n          }));\n        }\n      } else {\n        if (viewPortInstruction.childNavigationInstruction) {\n          loads.push(viewPortInstruction.childNavigationInstruction._commitChanges(waitToSwap));\n        }\n      }\n    };\n\n    for (var viewPortName in this.viewPortInstructions) {\n      _loop(viewPortName);\n    }\n\n    return Promise.all(loads).then(function () {\n      delaySwaps.forEach(function (x) {\n        return x.viewPort.swap(x.viewPortInstruction);\n      });\n      return null;\n    }).then(function () {\n      return prune(_this2);\n    });\n  };\n\n  NavigationInstruction.prototype._updateTitle = function _updateTitle() {\n    var title = this._buildTitle(this.router.titleSeparator);\n    if (title) {\n      this.router.history.setTitle(title);\n    }\n  };\n\n  NavigationInstruction.prototype._buildTitle = function _buildTitle() {\n    var separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ' | ';\n\n    var title = '';\n    var childTitles = [];\n\n    if (this.config.navModel.title) {\n      title = this.router.transformTitle(this.config.navModel.title);\n    }\n\n    for (var viewPortName in this.viewPortInstructions) {\n      var _viewPortInstruction = this.viewPortInstructions[viewPortName];\n\n      if (_viewPortInstruction.childNavigationInstruction) {\n        var childTitle = _viewPortInstruction.childNavigationInstruction._buildTitle(separator);\n        if (childTitle) {\n          childTitles.push(childTitle);\n        }\n      }\n    }\n\n    if (childTitles.length) {\n      title = childTitles.join(separator) + (title ? separator : '') + title;\n    }\n\n    if (this.router.title) {\n      title += (title ? separator : '') + this.router.transformTitle(this.router.title);\n    }\n\n    return title;\n  };\n\n  return NavigationInstruction;\n}();\n\nfunction prune(instruction) {\n  instruction.previousInstruction = null;\n  instruction.plan = null;\n}\n\nexport var NavModel = function () {\n  function NavModel(router, relativeHref) {\n    \n\n    this.isActive = false;\n    this.title = null;\n    this.href = null;\n    this.relativeHref = null;\n    this.settings = {};\n    this.config = null;\n\n    this.router = router;\n    this.relativeHref = relativeHref;\n  }\n\n  NavModel.prototype.setTitle = function setTitle(title) {\n    this.title = title;\n\n    if (this.isActive) {\n      this.router.updateTitle();\n    }\n  };\n\n  return NavModel;\n}();\n\nexport function isNavigationCommand(obj) {\n  return obj && typeof obj.navigate === 'function';\n}\n\nexport var Redirect = function () {\n  function Redirect(url) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    \n\n    this.url = url;\n    this.options = Object.assign({ trigger: true, replace: true }, options);\n    this.shouldContinueProcessing = false;\n  }\n\n  Redirect.prototype.setRouter = function setRouter(router) {\n    this.router = router;\n  };\n\n  Redirect.prototype.navigate = function navigate(appRouter) {\n    var navigatingRouter = this.options.useAppRouter ? appRouter : this.router || appRouter;\n    navigatingRouter.navigate(this.url, this.options);\n  };\n\n  return Redirect;\n}();\n\nexport var RedirectToRoute = function () {\n  function RedirectToRoute(route) {\n    var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    \n\n    this.route = route;\n    this.params = params;\n    this.options = Object.assign({ trigger: true, replace: true }, options);\n    this.shouldContinueProcessing = false;\n  }\n\n  RedirectToRoute.prototype.setRouter = function setRouter(router) {\n    this.router = router;\n  };\n\n  RedirectToRoute.prototype.navigate = function navigate(appRouter) {\n    var navigatingRouter = this.options.useAppRouter ? appRouter : this.router || appRouter;\n    navigatingRouter.navigateToRoute(this.route, this.params, this.options);\n  };\n\n  return RedirectToRoute;\n}();\n\nexport var pipelineStatus = {\n  completed: 'completed',\n  canceled: 'canceled',\n  rejected: 'rejected',\n  running: 'running'\n};\n\nexport var Pipeline = function () {\n  function Pipeline() {\n    \n\n    this.steps = [];\n  }\n\n  Pipeline.prototype.addStep = function addStep(step) {\n    var run = void 0;\n\n    if (typeof step === 'function') {\n      run = step;\n    } else if (typeof step.getSteps === 'function') {\n      var steps = step.getSteps();\n      for (var i = 0, l = steps.length; i < l; i++) {\n        this.addStep(steps[i]);\n      }\n\n      return this;\n    } else {\n      run = step.run.bind(step);\n    }\n\n    this.steps.push(run);\n\n    return this;\n  };\n\n  Pipeline.prototype.run = function run(instruction) {\n    var index = -1;\n    var steps = this.steps;\n\n    function next() {\n      index++;\n\n      if (index < steps.length) {\n        var currentStep = steps[index];\n\n        try {\n          return currentStep(instruction, next);\n        } catch (e) {\n          return next.reject(e);\n        }\n      } else {\n        return next.complete();\n      }\n    }\n\n    next.complete = createCompletionHandler(next, pipelineStatus.completed);\n    next.cancel = createCompletionHandler(next, pipelineStatus.canceled);\n    next.reject = createCompletionHandler(next, pipelineStatus.rejected);\n\n    return next();\n  };\n\n  return Pipeline;\n}();\n\nfunction createCompletionHandler(next, status) {\n  return function (output) {\n    return Promise.resolve({ status: status, output: output, completed: status === pipelineStatus.completed });\n  };\n}\n\nexport var RouterConfiguration = function () {\n  function RouterConfiguration() {\n    \n\n    this.instructions = [];\n    this.options = {};\n    this.pipelineSteps = [];\n  }\n\n  RouterConfiguration.prototype.addPipelineStep = function addPipelineStep(name, step) {\n    if (step === null || step === undefined) {\n      throw new Error('Pipeline step cannot be null or undefined.');\n    }\n    this.pipelineSteps.push({ name: name, step: step });\n    return this;\n  };\n\n  RouterConfiguration.prototype.addAuthorizeStep = function addAuthorizeStep(step) {\n    return this.addPipelineStep('authorize', step);\n  };\n\n  RouterConfiguration.prototype.addPreActivateStep = function addPreActivateStep(step) {\n    return this.addPipelineStep('preActivate', step);\n  };\n\n  RouterConfiguration.prototype.addPreRenderStep = function addPreRenderStep(step) {\n    return this.addPipelineStep('preRender', step);\n  };\n\n  RouterConfiguration.prototype.addPostRenderStep = function addPostRenderStep(step) {\n    return this.addPipelineStep('postRender', step);\n  };\n\n  RouterConfiguration.prototype.fallbackRoute = function fallbackRoute(fragment) {\n    this._fallbackRoute = fragment;\n    return this;\n  };\n\n  RouterConfiguration.prototype.map = function map(route) {\n    if (Array.isArray(route)) {\n      route.forEach(this.map.bind(this));\n      return this;\n    }\n\n    return this.mapRoute(route);\n  };\n\n  RouterConfiguration.prototype.useViewPortDefaults = function useViewPortDefaults(viewPortConfig) {\n    this.viewPortDefaults = viewPortConfig;\n    return this;\n  };\n\n  RouterConfiguration.prototype.mapRoute = function mapRoute(config) {\n    this.instructions.push(function (router) {\n      var routeConfigs = _ensureArrayWithSingleRoutePerConfig(config);\n\n      var navModel = void 0;\n      for (var i = 0, ii = routeConfigs.length; i < ii; ++i) {\n        var _routeConfig = routeConfigs[i];\n        _routeConfig.settings = _routeConfig.settings || {};\n        if (!navModel) {\n          navModel = router.createNavModel(_routeConfig);\n        }\n\n        router.addRoute(_routeConfig, navModel);\n      }\n    });\n\n    return this;\n  };\n\n  RouterConfiguration.prototype.mapUnknownRoutes = function mapUnknownRoutes(config) {\n    this.unknownRouteConfig = config;\n    return this;\n  };\n\n  RouterConfiguration.prototype.exportToRouter = function exportToRouter(router) {\n    var instructions = this.instructions;\n    for (var i = 0, ii = instructions.length; i < ii; ++i) {\n      instructions[i](router);\n    }\n\n    if (this.title) {\n      router.title = this.title;\n    }\n\n    if (this.titleSeparator) {\n      router.titleSeparator = this.titleSeparator;\n    }\n\n    if (this.unknownRouteConfig) {\n      router.handleUnknownRoutes(this.unknownRouteConfig);\n    }\n\n    if (this._fallbackRoute) {\n      router.fallbackRoute = this._fallbackRoute;\n    }\n\n    if (this.viewPortDefaults) {\n      router.useViewPortDefaults(this.viewPortDefaults);\n    }\n\n    Object.assign(router.options, this.options);\n\n    var pipelineSteps = this.pipelineSteps;\n    if (pipelineSteps.length) {\n      if (!router.isRoot) {\n        throw new Error('Pipeline steps can only be added to the root router');\n      }\n\n      var pipelineProvider = router.pipelineProvider;\n      for (var _i = 0, _ii = pipelineSteps.length; _i < _ii; ++_i) {\n        var _pipelineSteps$_i = pipelineSteps[_i],\n            _name = _pipelineSteps$_i.name,\n            _step = _pipelineSteps$_i.step;\n\n        pipelineProvider.addStep(_name, _step);\n      }\n    }\n  };\n\n  return RouterConfiguration;\n}();\n\nexport var activationStrategy = {\n  noChange: 'no-change',\n  invokeLifecycle: 'invoke-lifecycle',\n  replace: 'replace'\n};\n\nexport var BuildNavigationPlanStep = function () {\n  function BuildNavigationPlanStep() {\n    \n  }\n\n  BuildNavigationPlanStep.prototype.run = function run(navigationInstruction, next) {\n    return _buildNavigationPlan(navigationInstruction).then(function (plan) {\n      if (plan instanceof Redirect) {\n        return next.cancel(plan);\n      }\n      navigationInstruction.plan = plan;\n      return next();\n    }).catch(next.cancel);\n  };\n\n  return BuildNavigationPlanStep;\n}();\n\nexport function _buildNavigationPlan(instruction, forceLifecycleMinimum) {\n  var config = instruction.config;\n\n  if ('redirect' in config) {\n    var _router = instruction.router;\n    return _router._createNavigationInstruction(config.redirect).then(function (newInstruction) {\n      var params = {};\n      for (var _key2 in newInstruction.params) {\n        var val = newInstruction.params[_key2];\n        if (typeof val === 'string' && val[0] === ':') {\n          val = val.slice(1);\n\n          if (val in instruction.params) {\n            params[_key2] = instruction.params[val];\n          }\n        } else {\n          params[_key2] = newInstruction.params[_key2];\n        }\n      }\n      var redirectLocation = _router.generate(newInstruction.config.name, params, instruction.options);\n\n      if (instruction.queryString) {\n        redirectLocation += '?' + instruction.queryString;\n      }\n\n      return Promise.resolve(new Redirect(redirectLocation));\n    });\n  }\n\n  var prev = instruction.previousInstruction;\n  var plan = {};\n  var defaults = instruction.router.viewPortDefaults;\n\n  if (prev) {\n    var newParams = hasDifferentParameterValues(prev, instruction);\n    var pending = [];\n\n    var _loop2 = function _loop2(viewPortName) {\n      var prevViewPortInstruction = prev.viewPortInstructions[viewPortName];\n      var nextViewPortConfig = viewPortName in config.viewPorts ? config.viewPorts[viewPortName] : prevViewPortInstruction;\n      if (nextViewPortConfig.moduleId === null && viewPortName in instruction.router.viewPortDefaults) {\n        nextViewPortConfig = defaults[viewPortName];\n      }\n\n      var viewPortPlan = plan[viewPortName] = {\n        name: viewPortName,\n        config: nextViewPortConfig,\n        prevComponent: prevViewPortInstruction.component,\n        prevModuleId: prevViewPortInstruction.moduleId\n      };\n\n      if (prevViewPortInstruction.moduleId !== nextViewPortConfig.moduleId) {\n        viewPortPlan.strategy = activationStrategy.replace;\n      } else if ('determineActivationStrategy' in prevViewPortInstruction.component.viewModel) {\n        var _prevViewPortInstruct;\n\n        viewPortPlan.strategy = (_prevViewPortInstruct = prevViewPortInstruction.component.viewModel).determineActivationStrategy.apply(_prevViewPortInstruct, instruction.lifecycleArgs);\n      } else if (config.activationStrategy) {\n        viewPortPlan.strategy = config.activationStrategy;\n      } else if (newParams || forceLifecycleMinimum) {\n        viewPortPlan.strategy = activationStrategy.invokeLifecycle;\n      } else {\n        viewPortPlan.strategy = activationStrategy.noChange;\n      }\n\n      if (viewPortPlan.strategy !== activationStrategy.replace && prevViewPortInstruction.childRouter) {\n        var path = instruction.getWildcardPath();\n        var task = prevViewPortInstruction.childRouter._createNavigationInstruction(path, instruction).then(function (childInstruction) {\n          viewPortPlan.childNavigationInstruction = childInstruction;\n\n          return _buildNavigationPlan(childInstruction, viewPortPlan.strategy === activationStrategy.invokeLifecycle).then(function (childPlan) {\n            if (childPlan instanceof Redirect) {\n              return Promise.reject(childPlan);\n            }\n            childInstruction.plan = childPlan;\n          });\n        });\n\n        pending.push(task);\n      }\n    };\n\n    for (var viewPortName in prev.viewPortInstructions) {\n      _loop2(viewPortName);\n    }\n\n    return Promise.all(pending).then(function () {\n      return plan;\n    });\n  }\n\n  for (var viewPortName in config.viewPorts) {\n    var viewPortConfig = config.viewPorts[viewPortName];\n    if (viewPortConfig.moduleId === null && viewPortName in instruction.router.viewPortDefaults) {\n      viewPortConfig = defaults[viewPortName];\n    }\n    plan[viewPortName] = {\n      name: viewPortName,\n      strategy: activationStrategy.replace,\n      config: viewPortConfig\n    };\n  }\n\n  return Promise.resolve(plan);\n}\n\nfunction hasDifferentParameterValues(prev, next) {\n  var prevParams = prev.params;\n  var nextParams = next.params;\n  var nextWildCardName = next.config.hasChildRouter ? next.getWildCardName() : null;\n\n  for (var _key3 in nextParams) {\n    if (_key3 === nextWildCardName) {\n      continue;\n    }\n\n    if (prevParams[_key3] !== nextParams[_key3]) {\n      return true;\n    }\n  }\n\n  for (var _key4 in prevParams) {\n    if (_key4 === nextWildCardName) {\n      continue;\n    }\n\n    if (prevParams[_key4] !== nextParams[_key4]) {\n      return true;\n    }\n  }\n\n  if (!next.options.compareQueryParams) {\n    return false;\n  }\n\n  var prevQueryParams = prev.queryParams;\n  var nextQueryParams = next.queryParams;\n  for (var _key5 in nextQueryParams) {\n    if (prevQueryParams[_key5] !== nextQueryParams[_key5]) {\n      return true;\n    }\n  }\n\n  for (var _key6 in prevQueryParams) {\n    if (prevQueryParams[_key6] !== nextQueryParams[_key6]) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nexport var Router = function () {\n  function Router(container, history) {\n    var _this3 = this;\n\n    \n\n    this.parent = null;\n    this.options = {};\n    this.viewPortDefaults = {};\n\n    this.transformTitle = function (title) {\n      if (_this3.parent) {\n        return _this3.parent.transformTitle(title);\n      }\n      return title;\n    };\n\n    this.container = container;\n    this.history = history;\n    this.reset();\n  }\n\n  Router.prototype.reset = function reset() {\n    var _this4 = this;\n\n    this.viewPorts = {};\n    this.routes = [];\n    this.baseUrl = '';\n    this.isConfigured = false;\n    this.isNavigating = false;\n    this.isExplicitNavigation = false;\n    this.isExplicitNavigationBack = false;\n    this.isNavigatingFirst = false;\n    this.isNavigatingNew = false;\n    this.isNavigatingRefresh = false;\n    this.isNavigatingForward = false;\n    this.isNavigatingBack = false;\n    this.couldDeactivate = false;\n    this.navigation = [];\n    this.currentInstruction = null;\n    this.viewPortDefaults = {};\n    this._fallbackOrder = 100;\n    this._recognizer = new RouteRecognizer();\n    this._childRecognizer = new RouteRecognizer();\n    this._configuredPromise = new Promise(function (resolve) {\n      _this4._resolveConfiguredPromise = resolve;\n    });\n  };\n\n  Router.prototype.registerViewPort = function registerViewPort(viewPort, name) {\n    name = name || 'default';\n    this.viewPorts[name] = viewPort;\n  };\n\n  Router.prototype.ensureConfigured = function ensureConfigured() {\n    return this._configuredPromise;\n  };\n\n  Router.prototype.configure = function configure(callbackOrConfig) {\n    var _this5 = this;\n\n    this.isConfigured = true;\n\n    var result = callbackOrConfig;\n    var config = void 0;\n    if (typeof callbackOrConfig === 'function') {\n      config = new RouterConfiguration();\n      result = callbackOrConfig(config);\n    }\n\n    return Promise.resolve(result).then(function (c) {\n      if (c && c.exportToRouter) {\n        config = c;\n      }\n\n      config.exportToRouter(_this5);\n      _this5.isConfigured = true;\n      _this5._resolveConfiguredPromise();\n    });\n  };\n\n  Router.prototype.navigate = function navigate(fragment, options) {\n    if (!this.isConfigured && this.parent) {\n      return this.parent.navigate(fragment, options);\n    }\n\n    this.isExplicitNavigation = true;\n    return this.history.navigate(_resolveUrl(fragment, this.baseUrl, this.history._hasPushState), options);\n  };\n\n  Router.prototype.navigateToRoute = function navigateToRoute(route, params, options) {\n    var path = this.generate(route, params);\n    return this.navigate(path, options);\n  };\n\n  Router.prototype.navigateBack = function navigateBack() {\n    this.isExplicitNavigationBack = true;\n    this.history.navigateBack();\n  };\n\n  Router.prototype.createChild = function createChild(container) {\n    var childRouter = new Router(container || this.container.createChild(), this.history);\n    childRouter.parent = this;\n    return childRouter;\n  };\n\n  Router.prototype.generate = function generate(name, params) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    var hasRoute = this._recognizer.hasRoute(name);\n    if ((!this.isConfigured || !hasRoute) && this.parent) {\n      return this.parent.generate(name, params, options);\n    }\n\n    if (!hasRoute) {\n      throw new Error('A route with name \\'' + name + '\\' could not be found. Check that `name: \\'' + name + '\\'` was specified in the route\\'s config.');\n    }\n\n    var path = this._recognizer.generate(name, params);\n    var rootedPath = _createRootedPath(path, this.baseUrl, this.history._hasPushState, options.absolute);\n    return options.absolute ? '' + this.history.getAbsoluteRoot() + rootedPath : rootedPath;\n  };\n\n  Router.prototype.createNavModel = function createNavModel(config) {\n    var navModel = new NavModel(this, 'href' in config ? config.href : config.route);\n    navModel.title = config.title;\n    navModel.order = config.nav;\n    navModel.href = config.href;\n    navModel.settings = config.settings;\n    navModel.config = config;\n\n    return navModel;\n  };\n\n  Router.prototype.addRoute = function addRoute(config, navModel) {\n    if (Array.isArray(config.route)) {\n      var routeConfigs = _ensureArrayWithSingleRoutePerConfig(config);\n      routeConfigs.forEach(this.addRoute.bind(this));\n      return;\n    }\n\n    validateRouteConfig(config, this.routes);\n\n    if (!('viewPorts' in config) && !config.navigationStrategy) {\n      config.viewPorts = {\n        'default': {\n          moduleId: config.moduleId,\n          view: config.view\n        }\n      };\n    }\n\n    if (!navModel) {\n      navModel = this.createNavModel(config);\n    }\n\n    this.routes.push(config);\n\n    var path = config.route;\n    if (path.charAt(0) === '/') {\n      path = path.substr(1);\n    }\n    var caseSensitive = config.caseSensitive === true;\n    var state = this._recognizer.add({ path: path, handler: config, caseSensitive: caseSensitive });\n\n    if (path) {\n      var _settings = config.settings;\n      delete config.settings;\n      var withChild = JSON.parse(JSON.stringify(config));\n      config.settings = _settings;\n      withChild.route = path + '/*childRoute';\n      withChild.hasChildRouter = true;\n      this._childRecognizer.add({\n        path: withChild.route,\n        handler: withChild,\n        caseSensitive: caseSensitive\n      });\n\n      withChild.navModel = navModel;\n      withChild.settings = config.settings;\n      withChild.navigationStrategy = config.navigationStrategy;\n    }\n\n    config.navModel = navModel;\n\n    if ((navModel.order || navModel.order === 0) && this.navigation.indexOf(navModel) === -1) {\n      if (!navModel.href && navModel.href !== '' && (state.types.dynamics || state.types.stars)) {\n        throw new Error('Invalid route config for \"' + config.route + '\" : dynamic routes must specify an \"href:\" to be included in the navigation model.');\n      }\n\n      if (typeof navModel.order !== 'number') {\n        navModel.order = ++this._fallbackOrder;\n      }\n\n      this.navigation.push(navModel);\n      this.navigation = this.navigation.sort(function (a, b) {\n        return a.order - b.order;\n      });\n    }\n  };\n\n  Router.prototype.hasRoute = function hasRoute(name) {\n    return !!(this._recognizer.hasRoute(name) || this.parent && this.parent.hasRoute(name));\n  };\n\n  Router.prototype.hasOwnRoute = function hasOwnRoute(name) {\n    return this._recognizer.hasRoute(name);\n  };\n\n  Router.prototype.handleUnknownRoutes = function handleUnknownRoutes(config) {\n    var _this6 = this;\n\n    if (!config) {\n      throw new Error('Invalid unknown route handler');\n    }\n\n    this.catchAllHandler = function (instruction) {\n      return _this6._createRouteConfig(config, instruction).then(function (c) {\n        instruction.config = c;\n        return instruction;\n      });\n    };\n  };\n\n  Router.prototype.updateTitle = function updateTitle() {\n    if (this.parent) {\n      return this.parent.updateTitle();\n    }\n\n    if (this.currentInstruction) {\n      this.currentInstruction._updateTitle();\n    }\n    return undefined;\n  };\n\n  Router.prototype.refreshNavigation = function refreshNavigation() {\n    var nav = this.navigation;\n\n    for (var i = 0, length = nav.length; i < length; i++) {\n      var _current = nav[i];\n      if (!_current.config.href) {\n        _current.href = _createRootedPath(_current.relativeHref, this.baseUrl, this.history._hasPushState);\n      } else {\n        _current.href = _normalizeAbsolutePath(_current.config.href, this.history._hasPushState);\n      }\n    }\n  };\n\n  Router.prototype.useViewPortDefaults = function useViewPortDefaults(viewPortDefaults) {\n    for (var viewPortName in viewPortDefaults) {\n      var viewPortConfig = viewPortDefaults[viewPortName];\n      this.viewPortDefaults[viewPortName] = {\n        moduleId: viewPortConfig.moduleId\n      };\n    }\n  };\n\n  Router.prototype._refreshBaseUrl = function _refreshBaseUrl() {\n    if (this.parent) {\n      this.baseUrl = generateBaseUrl(this.parent, this.parent.currentInstruction);\n    }\n  };\n\n  Router.prototype._createNavigationInstruction = function _createNavigationInstruction() {\n    var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n    var parentInstruction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n    var fragment = url;\n    var queryString = '';\n\n    var queryIndex = url.indexOf('?');\n    if (queryIndex !== -1) {\n      fragment = url.substr(0, queryIndex);\n      queryString = url.substr(queryIndex + 1);\n    }\n\n    var results = this._recognizer.recognize(url);\n    if (!results || !results.length) {\n      results = this._childRecognizer.recognize(url);\n    }\n\n    var instructionInit = {\n      fragment: fragment,\n      queryString: queryString,\n      config: null,\n      parentInstruction: parentInstruction,\n      previousInstruction: this.currentInstruction,\n      router: this,\n      options: {\n        compareQueryParams: this.options.compareQueryParams\n      }\n    };\n\n    var result = void 0;\n\n    if (results && results.length) {\n      var first = results[0];\n      var _instruction = new NavigationInstruction(Object.assign({}, instructionInit, {\n        params: first.params,\n        queryParams: first.queryParams || results.queryParams,\n        config: first.config || first.handler\n      }));\n\n      if (typeof first.handler === 'function') {\n        result = evaluateNavigationStrategy(_instruction, first.handler, first);\n      } else if (first.handler && typeof first.handler.navigationStrategy === 'function') {\n        result = evaluateNavigationStrategy(_instruction, first.handler.navigationStrategy, first.handler);\n      } else {\n        result = Promise.resolve(_instruction);\n      }\n    } else if (this.catchAllHandler) {\n      var _instruction2 = new NavigationInstruction(Object.assign({}, instructionInit, {\n        params: { path: fragment },\n        queryParams: results ? results.queryParams : {},\n        config: null }));\n\n      result = evaluateNavigationStrategy(_instruction2, this.catchAllHandler);\n    } else if (this.parent) {\n      var _router2 = this._parentCatchAllHandler(this.parent);\n\n      if (_router2) {\n        var newParentInstruction = this._findParentInstructionFromRouter(_router2, parentInstruction);\n\n        var _instruction3 = new NavigationInstruction(Object.assign({}, instructionInit, {\n          params: { path: fragment },\n          queryParams: results ? results.queryParams : {},\n          router: _router2,\n          parentInstruction: newParentInstruction,\n          parentCatchHandler: true,\n          config: null }));\n\n        result = evaluateNavigationStrategy(_instruction3, _router2.catchAllHandler);\n      }\n    }\n\n    if (result && parentInstruction) {\n      this.baseUrl = generateBaseUrl(this.parent, parentInstruction);\n    }\n\n    return result || Promise.reject(new Error('Route not found: ' + url));\n  };\n\n  Router.prototype._findParentInstructionFromRouter = function _findParentInstructionFromRouter(router, instruction) {\n    if (instruction.router === router) {\n      instruction.fragment = router.baseUrl;\n      return instruction;\n    } else if (instruction.parentInstruction) {\n      return this._findParentInstructionFromRouter(router, instruction.parentInstruction);\n    }\n    return undefined;\n  };\n\n  Router.prototype._parentCatchAllHandler = function _parentCatchAllHandler(router) {\n    if (router.catchAllHandler) {\n      return router;\n    } else if (router.parent) {\n      return this._parentCatchAllHandler(router.parent);\n    }\n    return false;\n  };\n\n  Router.prototype._createRouteConfig = function _createRouteConfig(config, instruction) {\n    var _this7 = this;\n\n    return Promise.resolve(config).then(function (c) {\n      if (typeof c === 'string') {\n        return { moduleId: c };\n      } else if (typeof c === 'function') {\n        return c(instruction);\n      }\n\n      return c;\n    }).then(function (c) {\n      return typeof c === 'string' ? { moduleId: c } : c;\n    }).then(function (c) {\n      c.route = instruction.params.path;\n      validateRouteConfig(c, _this7.routes);\n\n      if (!c.navModel) {\n        c.navModel = _this7.createNavModel(c);\n      }\n\n      return c;\n    });\n  };\n\n  _createClass(Router, [{\n    key: 'isRoot',\n    get: function get() {\n      return !this.parent;\n    }\n  }]);\n\n  return Router;\n}();\n\nfunction generateBaseUrl(router, instruction) {\n  return '' + (router.baseUrl || '') + (instruction.getBaseUrl() || '');\n}\n\nfunction validateRouteConfig(config, routes) {\n  if ((typeof config === 'undefined' ? 'undefined' : _typeof(config)) !== 'object') {\n    throw new Error('Invalid Route Config');\n  }\n\n  if (typeof config.route !== 'string') {\n    var _name2 = config.name || '(no name)';\n    throw new Error('Invalid Route Config for \"' + _name2 + '\": You must specify a \"route:\" pattern.');\n  }\n\n  if (!('redirect' in config || config.moduleId || config.navigationStrategy || config.viewPorts)) {\n    throw new Error('Invalid Route Config for \"' + config.route + '\": You must specify a \"moduleId:\", \"redirect:\", \"navigationStrategy:\", or \"viewPorts:\".');\n  }\n}\n\nfunction evaluateNavigationStrategy(instruction, evaluator, context) {\n  return Promise.resolve(evaluator.call(context, instruction)).then(function () {\n    if (!('viewPorts' in instruction.config)) {\n      instruction.config.viewPorts = {\n        'default': {\n          moduleId: instruction.config.moduleId\n        }\n      };\n    }\n\n    return instruction;\n  });\n}\n\nexport var CanDeactivatePreviousStep = function () {\n  function CanDeactivatePreviousStep() {\n    \n  }\n\n  CanDeactivatePreviousStep.prototype.run = function run(navigationInstruction, next) {\n    return processDeactivatable(navigationInstruction, 'canDeactivate', next);\n  };\n\n  return CanDeactivatePreviousStep;\n}();\n\nexport var CanActivateNextStep = function () {\n  function CanActivateNextStep() {\n    \n  }\n\n  CanActivateNextStep.prototype.run = function run(navigationInstruction, next) {\n    return processActivatable(navigationInstruction, 'canActivate', next);\n  };\n\n  return CanActivateNextStep;\n}();\n\nexport var DeactivatePreviousStep = function () {\n  function DeactivatePreviousStep() {\n    \n  }\n\n  DeactivatePreviousStep.prototype.run = function run(navigationInstruction, next) {\n    return processDeactivatable(navigationInstruction, 'deactivate', next, true);\n  };\n\n  return DeactivatePreviousStep;\n}();\n\nexport var ActivateNextStep = function () {\n  function ActivateNextStep() {\n    \n  }\n\n  ActivateNextStep.prototype.run = function run(navigationInstruction, next) {\n    return processActivatable(navigationInstruction, 'activate', next, true);\n  };\n\n  return ActivateNextStep;\n}();\n\nfunction processDeactivatable(navigationInstruction, callbackName, next, ignoreResult) {\n  var plan = navigationInstruction.plan;\n  var infos = findDeactivatable(plan, callbackName);\n  var i = infos.length;\n\n  function inspect(val) {\n    if (ignoreResult || shouldContinue(val)) {\n      return iterate();\n    }\n\n    return next.cancel(val);\n  }\n\n  function iterate() {\n    if (i--) {\n      try {\n        var viewModel = infos[i];\n        var _result = viewModel[callbackName](navigationInstruction);\n        return processPotential(_result, inspect, next.cancel);\n      } catch (error) {\n        return next.cancel(error);\n      }\n    }\n\n    navigationInstruction.router.couldDeactivate = true;\n\n    return next();\n  }\n\n  return iterate();\n}\n\nfunction findDeactivatable(plan, callbackName) {\n  var list = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n  for (var viewPortName in plan) {\n    var _viewPortPlan = plan[viewPortName];\n    var prevComponent = _viewPortPlan.prevComponent;\n\n    if ((_viewPortPlan.strategy === activationStrategy.invokeLifecycle || _viewPortPlan.strategy === activationStrategy.replace) && prevComponent) {\n      var viewModel = prevComponent.viewModel;\n\n      if (callbackName in viewModel) {\n        list.push(viewModel);\n      }\n    }\n\n    if (_viewPortPlan.strategy === activationStrategy.replace && prevComponent) {\n      addPreviousDeactivatable(prevComponent, callbackName, list);\n    } else if (_viewPortPlan.childNavigationInstruction) {\n      findDeactivatable(_viewPortPlan.childNavigationInstruction.plan, callbackName, list);\n    }\n  }\n\n  return list;\n}\n\nfunction addPreviousDeactivatable(component, callbackName, list) {\n  var childRouter = component.childRouter;\n\n  if (childRouter && childRouter.currentInstruction) {\n    var viewPortInstructions = childRouter.currentInstruction.viewPortInstructions;\n\n    for (var viewPortName in viewPortInstructions) {\n      var _viewPortInstruction2 = viewPortInstructions[viewPortName];\n      var prevComponent = _viewPortInstruction2.component;\n      var prevViewModel = prevComponent.viewModel;\n\n      if (callbackName in prevViewModel) {\n        list.push(prevViewModel);\n      }\n\n      addPreviousDeactivatable(prevComponent, callbackName, list);\n    }\n  }\n}\n\nfunction processActivatable(navigationInstruction, callbackName, next, ignoreResult) {\n  var infos = findActivatable(navigationInstruction, callbackName);\n  var length = infos.length;\n  var i = -1;\n\n  function inspect(val, router) {\n    if (ignoreResult || shouldContinue(val, router)) {\n      return iterate();\n    }\n\n    return next.cancel(val);\n  }\n\n  function iterate() {\n    i++;\n\n    if (i < length) {\n      try {\n        var _current2$viewModel;\n\n        var _current2 = infos[i];\n        var _result2 = (_current2$viewModel = _current2.viewModel)[callbackName].apply(_current2$viewModel, _current2.lifecycleArgs);\n        return processPotential(_result2, function (val) {\n          return inspect(val, _current2.router);\n        }, next.cancel);\n      } catch (error) {\n        return next.cancel(error);\n      }\n    }\n\n    return next();\n  }\n\n  return iterate();\n}\n\nfunction findActivatable(navigationInstruction, callbackName) {\n  var list = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n  var router = arguments[3];\n\n  var plan = navigationInstruction.plan;\n\n  Object.keys(plan).filter(function (viewPortName) {\n    var viewPortPlan = plan[viewPortName];\n    var viewPortInstruction = navigationInstruction.viewPortInstructions[viewPortName];\n    var viewModel = viewPortInstruction.component.viewModel;\n\n    if ((viewPortPlan.strategy === activationStrategy.invokeLifecycle || viewPortPlan.strategy === activationStrategy.replace) && callbackName in viewModel) {\n      list.push({\n        viewModel: viewModel,\n        lifecycleArgs: viewPortInstruction.lifecycleArgs,\n        router: router\n      });\n    }\n\n    if (viewPortPlan.childNavigationInstruction) {\n      findActivatable(viewPortPlan.childNavigationInstruction, callbackName, list, viewPortInstruction.component.childRouter || router);\n    }\n  });\n\n  return list;\n}\n\nfunction shouldContinue(output, router) {\n  if (output instanceof Error) {\n    return false;\n  }\n\n  if (isNavigationCommand(output)) {\n    if (typeof output.setRouter === 'function') {\n      output.setRouter(router);\n    }\n\n    return !!output.shouldContinueProcessing;\n  }\n\n  if (output === undefined) {\n    return true;\n  }\n\n  return output;\n}\n\nvar SafeSubscription = function () {\n  function SafeSubscription(subscriptionFunc) {\n    \n\n    this._subscribed = true;\n    this._subscription = subscriptionFunc(this);\n\n    if (!this._subscribed) this.unsubscribe();\n  }\n\n  SafeSubscription.prototype.unsubscribe = function unsubscribe() {\n    if (this._subscribed && this._subscription) this._subscription.unsubscribe();\n\n    this._subscribed = false;\n  };\n\n  _createClass(SafeSubscription, [{\n    key: 'subscribed',\n    get: function get() {\n      return this._subscribed;\n    }\n  }]);\n\n  return SafeSubscription;\n}();\n\nfunction processPotential(obj, resolve, reject) {\n  if (obj && typeof obj.then === 'function') {\n    return Promise.resolve(obj).then(resolve).catch(reject);\n  }\n\n  if (obj && typeof obj.subscribe === 'function') {\n    var obs = obj;\n    return new SafeSubscription(function (sub) {\n      return obs.subscribe({\n        next: function next() {\n          if (sub.subscribed) {\n            sub.unsubscribe();\n            resolve(obj);\n          }\n        },\n        error: function error(_error) {\n          if (sub.subscribed) {\n            sub.unsubscribe();\n            reject(_error);\n          }\n        },\n        complete: function complete() {\n          if (sub.subscribed) {\n            sub.unsubscribe();\n            resolve(obj);\n          }\n        }\n      });\n    });\n  }\n\n  try {\n    return resolve(obj);\n  } catch (error) {\n    return reject(error);\n  }\n}\n\nexport var RouteLoader = function () {\n  function RouteLoader() {\n    \n  }\n\n  RouteLoader.prototype.loadRoute = function loadRoute(router, config, navigationInstruction) {\n    throw Error('Route loaders must implement \"loadRoute(router, config, navigationInstruction)\".');\n  };\n\n  return RouteLoader;\n}();\n\nexport var LoadRouteStep = function () {\n  LoadRouteStep.inject = function inject() {\n    return [RouteLoader];\n  };\n\n  function LoadRouteStep(routeLoader) {\n    \n\n    this.routeLoader = routeLoader;\n  }\n\n  LoadRouteStep.prototype.run = function run(navigationInstruction, next) {\n    return loadNewRoute(this.routeLoader, navigationInstruction).then(next).catch(next.cancel);\n  };\n\n  return LoadRouteStep;\n}();\n\nfunction loadNewRoute(routeLoader, navigationInstruction) {\n  var toLoad = determineWhatToLoad(navigationInstruction);\n  var loadPromises = toLoad.map(function (current) {\n    return loadRoute(routeLoader, current.navigationInstruction, current.viewPortPlan);\n  });\n\n  return Promise.all(loadPromises);\n}\n\nfunction determineWhatToLoad(navigationInstruction) {\n  var toLoad = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n  var plan = navigationInstruction.plan;\n\n  for (var viewPortName in plan) {\n    var _viewPortPlan2 = plan[viewPortName];\n\n    if (_viewPortPlan2.strategy === activationStrategy.replace) {\n      toLoad.push({ viewPortPlan: _viewPortPlan2, navigationInstruction: navigationInstruction });\n\n      if (_viewPortPlan2.childNavigationInstruction) {\n        determineWhatToLoad(_viewPortPlan2.childNavigationInstruction, toLoad);\n      }\n    } else {\n      var _viewPortInstruction3 = navigationInstruction.addViewPortInstruction(viewPortName, _viewPortPlan2.strategy, _viewPortPlan2.prevModuleId, _viewPortPlan2.prevComponent);\n\n      if (_viewPortPlan2.childNavigationInstruction) {\n        _viewPortInstruction3.childNavigationInstruction = _viewPortPlan2.childNavigationInstruction;\n        determineWhatToLoad(_viewPortPlan2.childNavigationInstruction, toLoad);\n      }\n    }\n  }\n\n  return toLoad;\n}\n\nfunction loadRoute(routeLoader, navigationInstruction, viewPortPlan) {\n  var moduleId = viewPortPlan.config ? viewPortPlan.config.moduleId : null;\n\n  return loadComponent(routeLoader, navigationInstruction, viewPortPlan.config).then(function (component) {\n    var viewPortInstruction = navigationInstruction.addViewPortInstruction(viewPortPlan.name, viewPortPlan.strategy, moduleId, component);\n\n    var childRouter = component.childRouter;\n    if (childRouter) {\n      var path = navigationInstruction.getWildcardPath();\n\n      return childRouter._createNavigationInstruction(path, navigationInstruction).then(function (childInstruction) {\n        viewPortPlan.childNavigationInstruction = childInstruction;\n\n        return _buildNavigationPlan(childInstruction).then(function (childPlan) {\n          if (childPlan instanceof Redirect) {\n            return Promise.reject(childPlan);\n          }\n          childInstruction.plan = childPlan;\n          viewPortInstruction.childNavigationInstruction = childInstruction;\n\n          return loadNewRoute(routeLoader, childInstruction);\n        });\n      });\n    }\n\n    return undefined;\n  });\n}\n\nfunction loadComponent(routeLoader, navigationInstruction, config) {\n  var router = navigationInstruction.router;\n  var lifecycleArgs = navigationInstruction.lifecycleArgs;\n\n  return routeLoader.loadRoute(router, config, navigationInstruction).then(function (component) {\n    var viewModel = component.viewModel,\n        childContainer = component.childContainer;\n\n    component.router = router;\n    component.config = config;\n\n    if ('configureRouter' in viewModel) {\n      var childRouter = childContainer.getChildRouter();\n      component.childRouter = childRouter;\n\n      return childRouter.configure(function (c) {\n        return viewModel.configureRouter.apply(viewModel, [c, childRouter].concat(lifecycleArgs));\n      }).then(function () {\n        return component;\n      });\n    }\n\n    return component;\n  });\n}\n\nvar PipelineSlot = function () {\n  function PipelineSlot(container, name, alias) {\n    \n\n    this.steps = [];\n\n    this.container = container;\n    this.slotName = name;\n    this.slotAlias = alias;\n  }\n\n  PipelineSlot.prototype.getSteps = function getSteps() {\n    var _this8 = this;\n\n    return this.steps.map(function (x) {\n      return _this8.container.get(x);\n    });\n  };\n\n  return PipelineSlot;\n}();\n\nexport var PipelineProvider = function () {\n  PipelineProvider.inject = function inject() {\n    return [Container];\n  };\n\n  function PipelineProvider(container) {\n    \n\n    this.container = container;\n    this.steps = [BuildNavigationPlanStep, CanDeactivatePreviousStep, LoadRouteStep, this._createPipelineSlot('authorize'), CanActivateNextStep, this._createPipelineSlot('preActivate', 'modelbind'), DeactivatePreviousStep, ActivateNextStep, this._createPipelineSlot('preRender', 'precommit'), CommitChangesStep, this._createPipelineSlot('postRender', 'postcomplete')];\n  }\n\n  PipelineProvider.prototype.createPipeline = function createPipeline() {\n    var _this9 = this;\n\n    var useCanDeactivateStep = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n    var pipeline = new Pipeline();\n    this.steps.forEach(function (step) {\n      if (useCanDeactivateStep || step !== CanDeactivatePreviousStep) {\n        pipeline.addStep(_this9.container.get(step));\n      }\n    });\n    return pipeline;\n  };\n\n  PipelineProvider.prototype._findStep = function _findStep(name) {\n    return this.steps.find(function (x) {\n      return x.slotName === name || x.slotAlias === name;\n    });\n  };\n\n  PipelineProvider.prototype.addStep = function addStep(name, step) {\n    var found = this._findStep(name);\n    if (found) {\n      if (!found.steps.includes(step)) {\n        found.steps.push(step);\n      }\n    } else {\n      throw new Error('Invalid pipeline slot name: ' + name + '.');\n    }\n  };\n\n  PipelineProvider.prototype.removeStep = function removeStep(name, step) {\n    var slot = this._findStep(name);\n    if (slot) {\n      slot.steps.splice(slot.steps.indexOf(step), 1);\n    }\n  };\n\n  PipelineProvider.prototype._clearSteps = function _clearSteps() {\n    var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n    var slot = this._findStep(name);\n    if (slot) {\n      slot.steps = [];\n    }\n  };\n\n  PipelineProvider.prototype.reset = function reset() {\n    this._clearSteps('authorize');\n    this._clearSteps('preActivate');\n    this._clearSteps('preRender');\n    this._clearSteps('postRender');\n  };\n\n  PipelineProvider.prototype._createPipelineSlot = function _createPipelineSlot(name, alias) {\n    return new PipelineSlot(this.container, name, alias);\n  };\n\n  return PipelineProvider;\n}();\n\nvar logger = LogManager.getLogger('app-router');\n\nexport var AppRouter = function (_Router) {\n  _inherits(AppRouter, _Router);\n\n  AppRouter.inject = function inject() {\n    return [Container, History, PipelineProvider, EventAggregator];\n  };\n\n  function AppRouter(container, history, pipelineProvider, events) {\n    \n\n    var _this10 = _possibleConstructorReturn(this, _Router.call(this, container, history));\n\n    _this10.pipelineProvider = pipelineProvider;\n    _this10.events = events;\n    return _this10;\n  }\n\n  AppRouter.prototype.reset = function reset() {\n    _Router.prototype.reset.call(this);\n    this.maxInstructionCount = 10;\n    if (!this._queue) {\n      this._queue = [];\n    } else {\n      this._queue.length = 0;\n    }\n  };\n\n  AppRouter.prototype.loadUrl = function loadUrl(url) {\n    var _this11 = this;\n\n    return this._createNavigationInstruction(url).then(function (instruction) {\n      return _this11._queueInstruction(instruction);\n    }).catch(function (error) {\n      logger.error(error);\n      restorePreviousLocation(_this11);\n    });\n  };\n\n  AppRouter.prototype.registerViewPort = function registerViewPort(viewPort, name) {\n    var _this12 = this;\n\n    _Router.prototype.registerViewPort.call(this, viewPort, name);\n\n    if (!this.isActive) {\n      var viewModel = this._findViewModel(viewPort);\n      if ('configureRouter' in viewModel) {\n        if (!this.isConfigured) {\n          var resolveConfiguredPromise = this._resolveConfiguredPromise;\n          this._resolveConfiguredPromise = function () {};\n          return this.configure(function (config) {\n            return viewModel.configureRouter(config, _this12);\n          }).then(function () {\n            _this12.activate();\n            resolveConfiguredPromise();\n          });\n        }\n      } else {\n        this.activate();\n      }\n    } else {\n      this._dequeueInstruction();\n    }\n\n    return Promise.resolve();\n  };\n\n  AppRouter.prototype.activate = function activate(options) {\n    if (this.isActive) {\n      return;\n    }\n\n    this.isActive = true;\n    this.options = Object.assign({ routeHandler: this.loadUrl.bind(this) }, this.options, options);\n    this.history.activate(this.options);\n    this._dequeueInstruction();\n  };\n\n  AppRouter.prototype.deactivate = function deactivate() {\n    this.isActive = false;\n    this.history.deactivate();\n  };\n\n  AppRouter.prototype._queueInstruction = function _queueInstruction(instruction) {\n    var _this13 = this;\n\n    return new Promise(function (resolve) {\n      instruction.resolve = resolve;\n      _this13._queue.unshift(instruction);\n      _this13._dequeueInstruction();\n    });\n  };\n\n  AppRouter.prototype._dequeueInstruction = function _dequeueInstruction() {\n    var _this14 = this;\n\n    var instructionCount = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n    return Promise.resolve().then(function () {\n      if (_this14.isNavigating && !instructionCount) {\n        return undefined;\n      }\n\n      var instruction = _this14._queue.shift();\n      _this14._queue.length = 0;\n\n      if (!instruction) {\n        return undefined;\n      }\n\n      _this14.isNavigating = true;\n\n      var navtracker = _this14.history.getState('NavigationTracker');\n      if (!navtracker && !_this14.currentNavigationTracker) {\n        _this14.isNavigatingFirst = true;\n        _this14.isNavigatingNew = true;\n      } else if (!navtracker) {\n        _this14.isNavigatingNew = true;\n      } else if (!_this14.currentNavigationTracker) {\n        _this14.isNavigatingRefresh = true;\n      } else if (_this14.currentNavigationTracker < navtracker) {\n        _this14.isNavigatingForward = true;\n      } else if (_this14.currentNavigationTracker > navtracker) {\n        _this14.isNavigatingBack = true;\n      }if (!navtracker) {\n        navtracker = Date.now();\n        _this14.history.setState('NavigationTracker', navtracker);\n      }\n      _this14.currentNavigationTracker = navtracker;\n\n      instruction.previousInstruction = _this14.currentInstruction;\n\n      if (!instructionCount) {\n        _this14.events.publish('router:navigation:processing', { instruction: instruction });\n      } else if (instructionCount === _this14.maxInstructionCount - 1) {\n        logger.error(instructionCount + 1 + ' navigation instructions have been attempted without success. Restoring last known good location.');\n        restorePreviousLocation(_this14);\n        return _this14._dequeueInstruction(instructionCount + 1);\n      } else if (instructionCount > _this14.maxInstructionCount) {\n        throw new Error('Maximum navigation attempts exceeded. Giving up.');\n      }\n\n      var pipeline = _this14.pipelineProvider.createPipeline(!_this14.couldDeactivate);\n\n      return pipeline.run(instruction).then(function (result) {\n        return processResult(instruction, result, instructionCount, _this14);\n      }).catch(function (error) {\n        return { output: error instanceof Error ? error : new Error(error) };\n      }).then(function (result) {\n        return resolveInstruction(instruction, result, !!instructionCount, _this14);\n      });\n    });\n  };\n\n  AppRouter.prototype._findViewModel = function _findViewModel(viewPort) {\n    if (this.container.viewModel) {\n      return this.container.viewModel;\n    }\n\n    if (viewPort.container) {\n      var container = viewPort.container;\n\n      while (container) {\n        if (container.viewModel) {\n          this.container.viewModel = container.viewModel;\n          return container.viewModel;\n        }\n\n        container = container.parent;\n      }\n    }\n\n    return undefined;\n  };\n\n  return AppRouter;\n}(Router);\n\nfunction processResult(instruction, result, instructionCount, router) {\n  if (!(result && 'completed' in result && 'output' in result)) {\n    result = result || {};\n    result.output = new Error('Expected router pipeline to return a navigation result, but got [' + JSON.stringify(result) + '] instead.');\n  }\n\n  var finalResult = null;\n  var navigationCommandResult = null;\n  if (isNavigationCommand(result.output)) {\n    navigationCommandResult = result.output.navigate(router);\n  } else {\n    finalResult = result;\n\n    if (!result.completed) {\n      if (result.output instanceof Error) {\n        logger.error(result.output);\n      }\n\n      restorePreviousLocation(router);\n    }\n  }\n\n  return Promise.resolve(navigationCommandResult).then(function (_) {\n    return router._dequeueInstruction(instructionCount + 1);\n  }).then(function (innerResult) {\n    return finalResult || innerResult || result;\n  });\n}\n\nfunction resolveInstruction(instruction, result, isInnerInstruction, router) {\n  instruction.resolve(result);\n\n  var eventArgs = { instruction: instruction, result: result };\n  if (!isInnerInstruction) {\n    router.isNavigating = false;\n    router.isExplicitNavigation = false;\n    router.isExplicitNavigationBack = false;\n    router.isNavigatingFirst = false;\n    router.isNavigatingNew = false;\n    router.isNavigatingRefresh = false;\n    router.isNavigatingForward = false;\n    router.isNavigatingBack = false;\n    router.couldDeactivate = false;\n\n    var eventName = void 0;\n\n    if (result.output instanceof Error) {\n      eventName = 'error';\n    } else if (!result.completed) {\n      eventName = 'canceled';\n    } else {\n      var _queryString = instruction.queryString ? '?' + instruction.queryString : '';\n      router.history.previousLocation = instruction.fragment + _queryString;\n      eventName = 'success';\n    }\n\n    router.events.publish('router:navigation:' + eventName, eventArgs);\n    router.events.publish('router:navigation:complete', eventArgs);\n  } else {\n    router.events.publish('router:navigation:child:complete', eventArgs);\n  }\n\n  return result;\n}\n\nfunction restorePreviousLocation(router) {\n  var previousLocation = router.history.previousLocation;\n  if (previousLocation) {\n    router.navigate(router.history.previousLocation, { trigger: false, replace: true });\n  } else if (router.fallbackRoute) {\n    router.navigate(router.fallbackRoute, { trigger: true, replace: true });\n  } else {\n    logger.error('Router navigation failed, and no previous location or fallbackRoute could be restored.');\n  }\n}","import { autoinject, LogManager, observable } from 'aurelia-framework';\nimport { buildQueryString, join } from 'aurelia-path';\nimport { Logger } from 'aurelia-logging';\nimport { HttpClient } from 'aurelia-fetch-client';\n\nimport { User, UserManager } from \"oidc-client\";\n\n// import environment from \"config/environment\";\nimport { SessionService } from \"./session-service\";\nimport extend from 'extend';\n\nimport FileSaver from 'file-saver';\nimport { EventAggregator } from 'aurelia-event-aggregator';\nimport config from 'config.js';\n\n@autoinject()\nexport class AppHttpClient extends HttpClient {\n\n  private logger: Logger;\n  private useTraditionalUriTemplates: boolean = false;\n  // private user: User;\n\n  public isRequesting = false;\n\n  constructor(\n    protected sessionService: SessionService,\n    protected ea: EventAggregator) {\n\n    super();\n\n    this.logger = LogManager.getLogger('AppHttpClient');\n\n    //base api\n    let backendUrl = config.URLS_BACKEND;\n    this.baseUrl = `${backendUrl}/api/v1/`;\n  }\n\n  private async configuteClient(isFormData?: boolean): Promise<any> {\n    // configure client\n    // this.logger.debug(\"configuteClient\");\n    const user = await this.sessionService.getUser();\n    if (user) {\n      let headers: any = {\n        'Accept': 'application/json',\n        'X-Requested-With': 'Fetch',\n        'Authorization': `Bearer ${user.access_token}`\n      };\n\n      if (!isFormData) {\n        headers['Content-Type'] = 'application/json';\n      }\n\n      this.configure(x => {\n        x.withDefaults({\n          credentials: 'same-origin',\n          headers\n        });\n      });\n    }\n  }\n\n  /**\n* Make a request to the server.\n*\n* @param {string}          method     The fetch method\n* @param {string}          path       Path to the resource\n* @param {{}}              [body]     The body to send if applicable\n* @param {{}}              [options]  Fetch request options overwrites\n*\n* @return {Promise<*>|Promise<Error>} Server response as Object\n*/\n  public async request(method: string, path: string, body?: {}, options?: {}, isBlob?: boolean): Promise<any | Error> {\n\n    this.isRequesting = true;\n    this.ea.publish(\"app:http_client:requesting\");\n\n    await this.configuteClient();\n\n    let requestOptions = extend(true, { headers: {} }, this.defaults, options || {}, { method, body });\n    let contentType = requestOptions.headers['Content-Type'] || requestOptions.headers['content-type'];\n    if (typeof body === 'object' && body !== null && contentType) {\n      requestOptions.body = (/^application\\/json/).test(contentType.toLowerCase()) ? JSON.stringify(body) : buildQueryString(body);\n    }\n    const response = await this.fetch(path, requestOptions);\n\n    this.isRequesting = false;\n    this.ea.publish(\"app:http_client:request_complete\");\n\n    if (response.status >= 200 && response.status < 400) {\n      if (!isBlob) {\n        return await response.json().catch(() => null);\n      }\n      else {\n        return await response.blob().catch(() => null);\n      }\n    }\n    else if (response.status === 401) {\n      // this.sessionService.logout();\n      throw new Error(\"commons.unauthorized\");\n    }\n    else if (response.status === 403) {\n      throw new Error(\"commons.forbidden\");\n    }\n    else if (response.status === 404) {\n      throw new Error(\"commons.invalid_endpoint\");\n    }\n    else {\n      // if we are here something goes wrong\n      const responseBody = await response.json();\n      throw responseBody;\n    }\n  }\n\n  public async requestFormData(method: string, path: string, body?: any, options?: {}, isBlob?: boolean): Promise<any | Error> {\n\n    this.isRequesting = true;\n    this.ea.publish(\"app:http_client:requesting\");\n\n    await this.configuteClient(true);\n\n    const response = await this.fetch(path, {\n      method: method,\n      body: body,\n    });\n\n    this.isRequesting = false;\n    this.ea.publish(\"app:http_client:request_complete\");\n\n    if (response.status >= 200 && response.status < 400) {\n      if (!isBlob) {\n        return await response.json().catch(() => null);\n      }\n      else {\n        return await response.blob().catch(() => null);\n      }\n    }\n    else if (response.status === 401) {\n      throw new Error(\"commons.unauthorized\");\n    }\n    else if (response.status === 403) {\n      throw new Error(\"commons.forbidden\");\n    }\n    else {\n      const responseBody = await response.json();\n      throw responseBody;\n    }\n  }\n\n  public async download(method: string, resource: string, idOrCriteria?: string | number | {}, filename?: string, mimetype?: string, options?: {}): Promise<any | Error> {\n    const blob = await this.request(method, this.getRequestPath(resource, this.useTraditionalUriTemplates, idOrCriteria), undefined, options, true);\n    var file = new File([blob], filename || 'download', { type: mimetype || 'text/plain' });\n    FileSaver.saveAs(file);\n  }\n\n  /**\n * Find a resource.\n *\n * @param {string}                    resource  Resource to find in\n * @param {string|number|{}}          idOrCriteria  Object for where clause, string / number for id.\n * @param {{}}                        [options] Extra request options.\n *\n * @return {Promise<*>|Promise<Error>} Server response as Object\n */\n  public get(resource: string, idOrCriteria?: string | number | {}, options?: {}): Promise<any | Error> {\n    return this.request('GET', this.getRequestPath(resource, this.useTraditionalUriTemplates, idOrCriteria), undefined, options);\n  }\n\n  /**\n   * Find a resource.\n   *\n   * @param {string}           resource    Resource to find in\n   * @param {string|number}    id          String / number for id to be added to the path.\n   * @param {{}}               [criteria]  Object for where clause\n   * @param {{}}               [options]   Extra request options.\n   *\n   * @return {Promise<*>|Promise<Error>} Server response as Object\n   */\n  public getById(resource: string, id: string | number, criteria?: {}, options?: {}): Promise<any | Error> {\n    return this.request('GET', this.getRequestPath(resource, this.useTraditionalUriTemplates, id, criteria), undefined, options);\n  }\n\n  /**\n   * Create a new instance for resource.\n   *\n   * @param {string}           resource  Resource to create\n   * @param {{}}               [body]    The data to post (as Object)\n   * @param {{}}               [options] Extra request options.\n   *\n   * @return {Promise<*>|Promise<Error>} Server response as Object\n   */\n  public post(resource: string, body?: {}, options?: {}): Promise<any | Error> {\n    return this.request('POST', resource, body, options);\n  }\n\n  /**\n   * Update a resource.\n   *\n   * @param {string}           resource  Resource to update\n   * @param {string|number|{}} idOrCriteria  Object for where clause, string / number for id.\n   * @param {{}}               [body]    New data for provided idOrCriteria.\n   * @param {{}}               [options] Extra request options.\n   *\n   * @return {Promise<*>|Promise<Error>} Server response as Object\n   */\n  public update(resource: string, idOrCriteria?: string | number | {}, body?: {}, options?: {}): Promise<any | Error> {\n    return this.request('PUT', this.getRequestPath(resource, this.useTraditionalUriTemplates, idOrCriteria), body, options);\n  }\n\n  /**\n   * Update a resource.\n   *\n   * @param {string}           resource   Resource to update\n   * @param {string|number}    id         String / number for id to be added to the path.\n   * @param {{}}               [criteria] Object for where clause\n   * @param {{}}               [body]     New data for provided criteria.\n   * @param {{}}               [options]  Extra request options.\n   *\n   * @return {Promise<*>|Promise<Error>} Server response as Object\n   */\n  public updateById(resource: string, id: string | number, criteria?: {}, body?: {}, options?: {}): Promise<any | Error> {\n    return this.request('PUT', this.getRequestPath(resource, this.useTraditionalUriTemplates, id, criteria), body, options);\n  }\n\n  /**\n   * Patch a resource.\n  *\n   * @param {string}           resource   Resource to patch\n   * @param {string|number|{}} [idOrCriteria] Object for where clause, string / number for id.\n   * @param {{}}               [body]     Data to patch for provided idOrCriteria.\n   * @param {{}}               [options]  Extra request options.\n   *\n   * @return {Promise<*>|Promise<Error>} Server response as Object\n   */\n  public patch(resource: string, idOrCriteria?: string | number | {}, body?: {}, options?: {}): Promise<any | Error> {\n    return this.request('PATCH', this.getRequestPath(resource, this.useTraditionalUriTemplates, idOrCriteria), body, options);\n  }\n\n  /**\n   * Patch a resource.\n   *\n   * @param {string}           resource   Resource to patch\n   * @param {string|number}    id         String / number for id to be added to the path.\n   * @param {{}}               [criteria] Object for where clause\n   * @param {{}}               [body]     Data to patch for provided criteria.\n   * @param {{}}               [options]  Extra request options.\n   *\n   * @return {Promise<*>|Promise<Error>} Server response as Object\n   */\n  public patchOne(resource: string, id: string | number, criteria?: {}, body?: {}, options?: {}): Promise<any | Error> {\n    return this.request('PATCH', this.getRequestPath(resource, this.useTraditionalUriTemplates, id, criteria), body, options);\n  }\n\n  /**\n   * Delete a resource.\n   *\n   * @param {string}           resource   The resource to delete\n   * @param {string|number|{}} [idOrCriteria] Object for where clause, string / number for id.\n   * @param {{}}               [options]  Extra request options.\n   *\n   * @return {Promise<*>|Promise<Error>} Server response as Object\n   */\n  public delete(resource: string, idOrCriteria?: string | number | {}, options?: {}): Promise<any | Error> {\n    return this.request('DELETE', this.getRequestPath(resource, this.useTraditionalUriTemplates, idOrCriteria), undefined, options);\n  }\n\n  /**\n   * Delete a resource.\n   *\n   * @param {string}           resource   The resource to delete\n   * @param {string|number}    id         String / number for id to be added to the path.\n   * @param {{}}               [criteria] Object for where clause\n   * @param {{}}               [options]  Extra request options.\n   *\n   * @return {Promise<*>|Promise<Error>} Server response as Object\n   */\n  public deleteById(resource: string, id: string | number, criteria?: {}, options?: {}): Promise<any | Error> {\n    return this.request('DELETE', this.getRequestPath(resource, this.useTraditionalUriTemplates, id, criteria), undefined, options);\n  }\n\n  /**\n   * Create a new instance for resource.\n   *\n   * @param {string}           resource  The resource to create\n   * @param {{}}               [body]    The data to post (as Object)\n   * @param {{}}               [options] Extra request options.\n   *\n   * @return {Promise<*>} Server response as Object\n   */\n  public create(resource: string, body?: {}, options?: {}): Promise<any | Error> {\n    return this.post(resource, body, options);\n  }\n\n\n\n  /**\n   * getRequestPath\n   *\n   * @param {string} resource\n   * @param {boolean} traditional\n   * @param {(string|number|{})} [idOrCriteria]\n   * @param {{}} [criteria]\n   * @returns {string}\n   */\n  private getRequestPath(resource: string, traditional: boolean, idOrCriteria?: string | number | {}, criteria?: {}) {\n    let hasSlash = resource.slice(-1) === '/';\n\n    if (typeof idOrCriteria === 'string' || typeof idOrCriteria === 'number') {\n      resource = `${join(resource, String(idOrCriteria))}${hasSlash ? '/' : ''}`;\n    } else {\n      criteria = idOrCriteria;\n    }\n\n    if (typeof criteria === 'object' && criteria !== null) {\n      resource += `?${buildQueryString(criteria, traditional)}`;\n    } else if (criteria) {\n      resource += `${hasSlash ? '' : '/'}${criteria}${hasSlash ? '/' : ''}`;\n    }\n\n    return resource;\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { CompanyGroup } from \"models/companies/company-group\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n@autoinject()\nexport class CompanyGroupService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"CompanyGroupService\");\n  }\n\n  public async list(franchiseId: number,parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`companygroup/list/${franchiseId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getAll(): Promise<CompanyGroup[]> {\n    return await this.client.get(\"companygroup\")\n      .then((response: any) => {\n        return <CompanyGroup[]>response;\n      });\n  }\n\n  public async getById(id: number): Promise<CompanyGroup> {\n    return await this.client.getById(\"companygroup\", id)\n      .then((response: any) => {\n        return <CompanyGroup>response;\n      });\n  }\n\n  public async create(model: CompanyGroup): Promise<CompanyGroup> {\n    return await this.client.create(\"companygroup\", model)\n      .then((response: any) => {\n        return <CompanyGroup>response;\n      });\n  }\n\n  public async update(model: CompanyGroup): Promise<void> {\n    return await this.client.updateById(\"companygroup\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(\"companygroup\", id)\n      .then(() => null);\n  }\n\n  public async changeState(id: number): Promise<void> {    \n    return await this.client.post(`companygroup/change-state/${id}`)\n      .then(() => null);\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { Plan } from \"models/plans/plan\";\n\n@autoinject()\nexport class AgreementPlanService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"AgreementPlanService\");\n  }\n\n  public async getBillablePlansByFranchiseId(franchiseId: number): Promise<Plan[]> {\n    return await this.client.get(`agreementplan/get-billable-plans/${franchiseId}`)\n      .then((response: Plan[]) => {\n        return response;\n      })\n  }\n\n  public async getById(planId: number): Promise<Plan> {\n    return await this.client.getById(\"agreementplan\", planId)\n      .then((response: any) => {\n        return <Plan>response;\n      });\n  }\n\n  public async getTestPlanItemsByPlanId(planId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`agreementplan/items/${planId}`, parameters)\n      .then(response => {\n        return <UxDatatableResponse>response;\n      });\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\n\nimport { ThematicVariable } from \"models/thematic-groups/thematic-variable\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n@autoinject()\nexport class ThematicVariablesService {\n\n  private logger: Logger;\n\n  constructor(\n    private client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"ThematicVariablesService\");\n  }\n\n  public async getAll(thematicGroupId: number): Promise<ThematicVariable[]> {\n    return await this.client.get(`thematicvariable/thematicgroup/${thematicGroupId}`)\n      .then((response: ThematicVariable[]) => {\n        return response;\n      });\n  }\n\n  public async list(thematicGroupId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`thematicvariable/list/${thematicGroupId}`, parameters)\n      .then(response => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getById(id: number): Promise<ThematicVariable> {\n    // this.logger.info(\"id: \" +  id); \n    return await this.client.getById('thematicvariable', id)\n      .then(response => {\n        return <ThematicVariable>response;\n      });\n  }\n\n  public async create(model: ThematicVariable): Promise<ThematicVariable> {\n    return await this.client.post('thematicvariable', model)\n      .then(response => {\n        return <ThematicVariable>response;\n      });\n  }\n\n  public async update(model: ThematicVariable): Promise<ThematicVariable> {\n    return await this.client.updateById('thematicvariable', model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    // this.logger.info(\"id to delete: \" +  id);\n    return await this.client.delete('thematicvariable', id)\n      .then(() => null);\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { CompanySettings } from \"models/companies/company-settings\";\n\n@autoinject\nexport class CompanySettingsService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"CompanySettingsService\");\n  }\n\n  public async getById(id: number): Promise<CompanySettings> {\n    return await this.client.getById(\"companysettings\", id)\n      .then((response: any) => {\n        return <CompanySettings>response;\n      });\n  }\n\n  public async create(model: CompanySettings): Promise<CompanySettings> {\n    return await this.client.create(\"companysettings\", model)\n      .then((response: any) => {\n        return <CompanySettings>response;\n      });\n  }\n\n  public async update(model: CompanySettings): Promise<void> {\n    return await this.client.updateById(\"companysettings\", model.companyId, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(\"companysettings\", id)\n      .then(() => null);\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { ProgrammingLanguage } from \"models/test-perfiltic/programmingLanguage\";\n\n\n@autoinject()\nexport class PerfilticService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"PerfilticService\");\n  }\n  \n  public async getAll(): Promise<ProgrammingLanguage[]> {\n    return await this.client.get(\"perfiltic/get-programming-language\")\n      .then(response => {\n        return <ProgrammingLanguage[]>response;\n      });\n  }\n\n}\n","export enum DiscType {\n  Natural,\n  Adapted\n}\n","import { UserState } from \"./userState\";\n\nexport class User {\n  id: number;\n  firstName: string;\n  lastName: string;\n  fullName: string;\n  userName: string;\n  email: string;\n  userState: UserState;\n  groupId: number;\n  companyId: number;\n  roleId: number;\n  profileId: number;\n  hasSeenLowBalanceMessage: boolean;\n}\n","export enum PositionActivationType {\n  Individual,\n  Direct,\n  Concerted,\n  Reference\n}\n","import { Activity } from './activity';\nimport { AgreementStatus } from './agreementStatus';\nimport { AgreementDuration } from './agreementDuration';\nimport { Company } from 'models/companies/company';\n\nexport class Agreement {\n  id: number;\n  description: string;\n  planId: number;\n  talents: string;\n  numApprovedUsers: number;\n  whoApproveId: number;\n  WhoApprove: string;\n  agreementDuration: AgreementDuration;\n  startDate: Date = new Date();\n  endDate: Date = new Date();\n  officialInterlocutorId: number;\n  officialInterlocutor: string;\n  legalRepresentativeId: number;\n  legalRepresentative: string;\n  agreementStatus: AgreementStatus;\n  companyId: number;\n  termsAndConditions: string;\n  operationCountries: number[] = [];\n  operationCountriesName: string;\n  activities: Array<Activity> = new Array<Activity>();\n  agreementBody: string;\n  isComplete: boolean;\n  corporateID: string;\n  address: string;\n  phone: string;\n  phoneNumber: string;\n  numberOfEmployees: number;\n  company: Company = new Company();\n  selectionPlanId: number;\n  isDemoSelectionPlan: boolean;\n  demoSelectionStartDate = new Date();\n  selectionTalents: string;\n}\n","import { Company } from './company';\n\nexport class CompanySettings {\n  companyId: number;\n  hasUserManagement: boolean;\n  hasGroupManagement: boolean;\n  hasProfileManagement: boolean;\n  hasPreferenceManagement: boolean;\n  hasNotificationManagement: boolean;\n  hasTalentManagement: boolean;\n  hasTestControl: boolean;\n  isResultsExport: boolean;\n  hasPredictor: boolean;\n  hasDefaultReports: boolean;\n  competencesQuestionaryId: number;\n  hasSuccessFactorsConnection: boolean;\n  successFactorsTokenURl: string;\n  successFactorsClientId: string;\n  successFactorsClientSecret: string;\n  successFactorsEndPoint: string;\n  hasBukConnection: boolean;\n  hasHiringRoomConnection: boolean;\n  hiringRoomClientId: string;\n  hiringRoomClientAccount: string;\n  hasKactusConnection: boolean;\n  kactusClientId: string;\n  kactusPassword: string;\n  kactusCompanyDomain: string;\n  kactusTokenUrl: string;\n  // company: Company;\n}\n","//! moment.js\n\n;(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks () {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback (callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return input != null && Object.prototype.toString.call(input) === '[object Object]';\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return (Object.getOwnPropertyNames(obj).length === 0);\n        } else {\n            var k;\n            for (k in obj) {\n                if (obj.hasOwnProperty(k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n    }\n\n    function isDate(input) {\n        return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n    }\n\n    function map(arr, fn) {\n        var res = [], i;\n        for (i = 0; i < arr.length; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC (input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty           : false,\n            unusedTokens    : [],\n            unusedInput     : [],\n            overflow        : -2,\n            charsLeftOver   : 0,\n            nullInput       : false,\n            invalidMonth    : null,\n            invalidFormat   : false,\n            userInvalidated : false,\n            iso             : false,\n            parsedDateParts : [],\n            meridiem        : null,\n            rfc2822         : false,\n            weekdayMismatch : false\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this);\n            var len = t.length >>> 0;\n\n            for (var i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        if (m._isValid == null) {\n            var flags = getParsingFlags(m);\n            var parsedParts = some.call(flags.parsedDateParts, function (i) {\n                return i != null;\n            });\n            var isNowValid = !isNaN(m._d.getTime()) &&\n                flags.overflow < 0 &&\n                !flags.empty &&\n                !flags.invalidMonth &&\n                !flags.invalidWeekday &&\n                !flags.weekdayMismatch &&\n                !flags.nullInput &&\n                !flags.invalidFormat &&\n                !flags.userInvalidated &&\n                (!flags.meridiem || (flags.meridiem && parsedParts));\n\n            if (m._strict) {\n                isNowValid = isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n\n            if (Object.isFrozen == null || !Object.isFrozen(m)) {\n                m._isValid = isNowValid;\n            }\n            else {\n                return isNowValid;\n            }\n        }\n        return m._isValid;\n    }\n\n    function createInvalid (flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        }\n        else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = hooks.momentProperties = [];\n\n    function copyConfig(to, from) {\n        var i, prop, val;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentProperties.length > 0) {\n            for (i = 0; i < momentProperties.length; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    var updateInProgress = false;\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment (obj) {\n        return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n    }\n\n    function absFloor (number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if ((dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    function warn(msg) {\n        if (hooks.suppressDeprecationWarnings === false &&\n                (typeof console !==  'undefined') && console.warn) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [];\n                var arg;\n                for (var i = 0; i < arguments.length; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (var key in arguments[0]) {\n                            arg += key + ': ' + arguments[0][key] + ', ';\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n    }\n\n    function set (config) {\n        var prop, i;\n        for (i in config) {\n            prop = config[i];\n            if (isFunction(prop)) {\n                this[i] = prop;\n            } else {\n                this['_' + i] = prop;\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' + (/\\d{1,2}/).source);\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig), prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (hasOwnProp(parentConfig, prop) &&\n                    !hasOwnProp(childConfig, prop) &&\n                    isObject(parentConfig[prop])) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i, res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay : '[Today at] LT',\n        nextDay : '[Tomorrow at] LT',\n        nextWeek : 'dddd [at] LT',\n        lastDay : '[Yesterday at] LT',\n        lastWeek : '[Last] dddd [at] LT',\n        sameElse : 'L'\n    };\n\n    function calendar (key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    var defaultLongDateFormat = {\n        LTS  : 'h:mm:ss A',\n        LT   : 'h:mm A',\n        L    : 'MM/DD/YYYY',\n        LL   : 'MMMM D, YYYY',\n        LLL  : 'MMMM D, YYYY h:mm A',\n        LLLL : 'dddd, MMMM D, YYYY h:mm A'\n    };\n\n    function longDateFormat (key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n            return val.slice(1);\n        });\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate () {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d';\n    var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal (number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future : 'in %s',\n        past   : '%s ago',\n        s  : 'a few seconds',\n        ss : '%d seconds',\n        m  : 'a minute',\n        mm : '%d minutes',\n        h  : 'an hour',\n        hh : '%d hours',\n        d  : 'a day',\n        dd : '%d days',\n        M  : 'a month',\n        MM : '%d months',\n        y  : 'a year',\n        yy : '%d years'\n    };\n\n    function relativeTime (number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return (isFunction(output)) ?\n            output(number, withoutSuffix, string, isFuture) :\n            output.replace(/%d/i, number);\n    }\n\n    function pastFuture (diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {};\n\n    function addUnitAlias (unit, shorthand) {\n        var lowerCase = unit.toLowerCase();\n        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n    }\n\n    function normalizeUnits(units) {\n        return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {};\n\n    function addUnitPriority(unit, priority) {\n        priorities[unit] = priority;\n    }\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [];\n        for (var u in unitsObj) {\n            units.push({unit: u, priority: priorities[u]});\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n    }\n\n    var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n    var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n    var formatFunctions = {};\n\n    var formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken (token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(func.apply(this, arguments), token);\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens), i, length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '', i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var match1         = /\\d/;            //       0 - 9\n    var match2         = /\\d\\d/;          //      00 - 99\n    var match3         = /\\d{3}/;         //     000 - 999\n    var match4         = /\\d{4}/;         //    0000 - 9999\n    var match6         = /[+-]?\\d{6}/;    // -999999 - 999999\n    var match1to2      = /\\d\\d?/;         //       0 - 99\n    var match3to4      = /\\d\\d\\d\\d?/;     //     999 - 9999\n    var match5to6      = /\\d\\d\\d\\d\\d\\d?/; //   99999 - 999999\n    var match1to3      = /\\d{1,3}/;       //       0 - 999\n    var match1to4      = /\\d{1,4}/;       //       0 - 9999\n    var match1to6      = /[+-]?\\d{1,6}/;  // -999999 - 999999\n\n    var matchUnsigned  = /\\d+/;           //       0 - inf\n    var matchSigned    = /[+-]?\\d+/;      //    -inf - inf\n\n    var matchOffset    = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n    var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n    var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n    // any word (or two) characters or numbers including two/three word month in arabic.\n    // includes scottish gaelic two word and hyphenated months\n    var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\n    var regexes = {};\n\n    function addRegexToken (token, regex, strictRegex) {\n        regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n            return (isStrict && strictRegex) ? strictRegex : regex;\n        };\n    }\n\n    function getParseRegexForToken (token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n            return p1 || p2 || p3 || p4;\n        }));\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    var tokens = {};\n\n    function addParseToken (token, callback) {\n        var i, func = callback;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        for (i = 0; i < token.length; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken (token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    var YEAR = 0;\n    var MONTH = 1;\n    var DATE = 2;\n    var HOUR = 3;\n    var MINUTE = 4;\n    var SECOND = 5;\n    var MILLISECOND = 6;\n    var WEEK = 7;\n    var WEEKDAY = 8;\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? '' + y : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY',   4],       0, 'year');\n    addFormatToken(0, ['YYYYY',  5],       0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // ALIASES\n\n    addUnitAlias('year', 'y');\n\n    // PRIORITIES\n\n    addUnitPriority('year', 1);\n\n    // PARSING\n\n    addRegexToken('Y',      matchSigned);\n    addRegexToken('YY',     match1to2, match2);\n    addRegexToken('YYYY',   match1to4, match4);\n    addRegexToken('YYYYY',  match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear () {\n        return isLeapYear(this.year());\n    }\n\n    function makeGetSet (unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get (mom, unit) {\n        return mom.isValid() ?\n            mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n    }\n\n    function set$1 (mom, unit, value) {\n        if (mom.isValid() && !isNaN(value)) {\n            if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n            }\n            else {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function stringGet (units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n\n    function stringSet (units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units);\n            for (var i = 0; i < prioritized.length; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // ALIASES\n\n    addUnitAlias('month', 'M');\n\n    // PRIORITY\n\n    addUnitPriority('month', 8);\n\n    // PARSING\n\n    addRegexToken('M',    match1to2);\n    addRegexToken('MM',   match1to2, match2);\n    addRegexToken('MMM',  function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n    function localeMonths (m, format) {\n        if (!m) {\n            return isArray(this._months) ? this._months :\n                this._months['standalone'];\n        }\n        return isArray(this._months) ? this._months[m.month()] :\n            this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n    }\n\n    var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n    function localeMonthsShort (m, format) {\n        if (!m) {\n            return isArray(this._monthsShort) ? this._monthsShort :\n                this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n            this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i, ii, mom, llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse (monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n                this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n                return i;\n            } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth (mom, value) {\n        var dayOfMonth;\n\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n        return mom;\n    }\n\n    function getSetMonth (value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth () {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    var defaultMonthsShortRegex = matchWord;\n    function monthsShortRegex (isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict ?\n                this._monthsShortStrictRegex : this._monthsShortRegex;\n        }\n    }\n\n    var defaultMonthsRegex = matchWord;\n    function monthsRegex (isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict ?\n                this._monthsStrictRegex : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse () {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [], longPieces = [], mixedPieces = [],\n            i, mom;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortPieces.push(this.monthsShort(mom, ''));\n            longPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.monthsShort(mom, ''));\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 12; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n        }\n        for (i = 0; i < 24; i++) {\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n        this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n    }\n\n    function createDate (y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date = new Date(y, m, d, h, M, s, ms);\n\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n            date.setFullYear(y);\n        }\n        return date;\n    }\n\n    function createUTCDate (y) {\n        var date = new Date(Date.UTC.apply(null, arguments));\n\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n            date.setUTCFullYear(y);\n        }\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear, resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek, resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // ALIASES\n\n    addUnitAlias('week', 'w');\n    addUnitAlias('isoWeek', 'W');\n\n    // PRIORITIES\n\n    addUnitPriority('week', 5);\n    addUnitPriority('isoWeek', 5);\n\n    // PARSING\n\n    addRegexToken('w',  match1to2);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W',  match1to2);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n        week[token.substr(0, 1)] = toInt(input);\n    });\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek (mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow : 0, // Sunday is the first day of the week.\n        doy : 6  // The week that contains Jan 1st is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek () {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear () {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek (input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek (input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // ALIASES\n\n    addUnitAlias('day', 'd');\n    addUnitAlias('weekday', 'e');\n    addUnitAlias('isoWeekday', 'E');\n\n    // PRIORITY\n    addUnitPriority('day', 11);\n    addUnitPriority('weekday', 11);\n    addUnitPriority('isoWeekday', 11);\n\n    // PARSING\n\n    addRegexToken('d',    match1to2);\n    addRegexToken('e',    match1to2);\n    addRegexToken('E',    match1to2);\n    addRegexToken('dd',   function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd',   function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd',   function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n\n    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n    function localeWeekdays (m, format) {\n        if (!m) {\n            return isArray(this._weekdays) ? this._weekdays :\n                this._weekdays['standalone'];\n        }\n        return isArray(this._weekdays) ? this._weekdays[m.day()] :\n            this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n    }\n\n    var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n    function localeWeekdaysShort (m) {\n        return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n    }\n\n    var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n    function localeWeekdaysMin (m) {\n        return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse (weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n                this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n                this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n            }\n            if (!this._weekdaysParse[i]) {\n                regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n                return i;\n            } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n                return i;\n            } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek (input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek (input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek (input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    var defaultWeekdaysRegex = matchWord;\n    function weekdaysRegex (isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict ?\n                this._weekdaysStrictRegex : this._weekdaysRegex;\n        }\n    }\n\n    var defaultWeekdaysShortRegex = matchWord;\n    function weekdaysShortRegex (isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict ?\n                this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n        }\n    }\n\n    var defaultWeekdaysMinRegex = matchWord;\n    function weekdaysMinRegex (isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict ?\n                this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n        }\n    }\n\n\n    function computeWeekdaysParse () {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n            i, mom, minp, shortp, longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = this.weekdaysMin(mom, '');\n            shortp = this.weekdaysShort(mom, '');\n            longp = this.weekdays(mom, '');\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 7; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n        this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n        this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2);\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2);\n    });\n\n    function meridiem (token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // ALIASES\n\n    addUnitAlias('hour', 'h');\n\n    // PRIORITY\n    addUnitPriority('hour', 13);\n\n    // PARSING\n\n    function matchMeridiem (isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a',  matchMeridiem);\n    addRegexToken('A',  matchMeridiem);\n    addRegexToken('H',  match1to2);\n    addRegexToken('h',  match1to2);\n    addRegexToken('k',  match1to2);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4;\n        var pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4;\n        var pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM (input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return ((input + '').toLowerCase().charAt(0) === 'p');\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n    function localeMeridiem (hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n\n    // MOMENTS\n\n    // Setting the hour should keep the time, because the user explicitly\n    // specified which hour they want. So trying to maintain the same hour (in\n    // a new timezone) makes sense. Adding/subtracting hours does not follow\n    // this rule.\n    var getSetHour = makeGetSet('Hours', true);\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse\n    };\n\n    // internal storage for locale config files\n    var locales = {};\n    var localeFamilies = {};\n    var globalLocale;\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0, j, next, locale, split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (!locales[name] && (typeof module !== 'undefined') &&\n                module && module.exports) {\n            try {\n                oldLocale = globalLocale._abbr;\n                var aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {}\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale (key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            }\n            else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            }\n            else {\n                if ((typeof console !==  'undefined') && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn('Locale ' + key +  ' not found. Did you forget to load it?');\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale (name, config) {\n        if (config !== null) {\n            var locale, parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple('defineLocaleOverride',\n                        'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale, tmpLocale, parentConfig = baseConfig;\n            // MERGE\n            tmpLocale = loadLocale(name);\n            if (tmpLocale != null) {\n                parentConfig = tmpLocale._config;\n            }\n            config = mergeConfigs(parentConfig, config);\n            locale = new Locale(config);\n            locale.parentLocale = locales[name];\n            locales[name] = locale;\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale (key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow (m) {\n        var overflow;\n        var a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH]       < 0 || a[MONTH]       > 11  ? MONTH :\n                a[DATE]        < 1 || a[DATE]        > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n                a[HOUR]        < 0 || a[HOUR]        > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n                a[MINUTE]      < 0 || a[MINUTE]      > 59  ? MINUTE :\n                a[SECOND]      < 0 || a[SECOND]      > 59  ? SECOND :\n                a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n                -1;\n\n            if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray (config) {\n        var i, date, input = [], currentDate, expectedWeekday, yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (config._a[HOUR] === 24 &&\n                config._a[MINUTE] === 0 &&\n                config._a[SECOND] === 0 &&\n                config._a[MILLISECOND] === 0) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n        expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            var curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from begining of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to begining of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n    var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n    var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n    var isoDates = [\n        ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n        ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n        ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n        ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n        ['YYYY-DDD', /\\d{4}-\\d{3}/],\n        ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n        ['YYYYYYMMDD', /[+-]\\d{10}/],\n        ['YYYYMMDD', /\\d{8}/],\n        // YYYYMM is NOT allowed by the standard\n        ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n        ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n        ['YYYYDDD', /\\d{7}/]\n    ];\n\n    // iso time formats and regexes\n    var isoTimes = [\n        ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n        ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n        ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n        ['HH:mm', /\\d\\d:\\d\\d/],\n        ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n        ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n        ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n        ['HHmm', /\\d\\d\\d\\d/],\n        ['HH', /\\d\\d/]\n    ];\n\n    var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n    // date from iso format\n    function configFromISO(config) {\n        var i, l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime, dateFormat, timeFormat, tzFormat;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n\n            for (i = 0, l = isoDates.length; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimes.length; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n    var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n    function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10)\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    var obsOffsets = {\n        UT: 0,\n        GMT: 0,\n        EDT: -4 * 60,\n        EST: -5 * 60,\n        CDT: -5 * 60,\n        CST: -6 * 60,\n        MDT: -6 * 60,\n        MST: -7 * 60,\n        PDT: -7 * 60,\n        PST: -8 * 60\n    };\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10);\n            var m = hm % 100, h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i));\n        if (match) {\n            var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from iso format or fallback\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        // Final attempt, use Input Fallback\n        hooks.createFromInputFallback(config);\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n        'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n        'discouraged and will be removed in an upcoming major release. Please refer to ' +\n        'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i, parsedInput, tokens, token, skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0;\n\n        tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n        for (i = 0; i < tokens.length; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n            // console.log('token', token, 'parsedInput', parsedInput,\n            //         'regex', getParseRegexForToken(token, config));\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                }\n                else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            }\n            else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n\n    function meridiemFixWrap (locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n\n            scoreToBeat,\n            i,\n            currentScore;\n\n        if (config._f.length === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < config._f.length; i++) {\n            currentScore = 0;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (!isValid(tempConfig)) {\n                continue;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (scoreToBeat == null || currentScore < scoreToBeat) {\n                scoreToBeat = currentScore;\n                bestMoment = tempConfig;\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i);\n        config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n            return obj && parseInt(obj, 10);\n        });\n\n        configFromArray(config);\n    }\n\n    function createFromConfig (config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig (config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({nullInput: true});\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        }  else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC (input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if ((isObject(input) && isObjectEmpty(input)) ||\n                (isArray(input) && input.length === 0)) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal (input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n        'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n        function () {\n            var other = createLocal.apply(null, arguments);\n            if (this.isValid() && other.isValid()) {\n                return other < this ? this : other;\n            } else {\n                return createInvalid();\n            }\n        }\n    );\n\n    var prototypeMax = deprecate(\n        'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n        function () {\n            var other = createLocal.apply(null, arguments);\n            if (this.isValid() && other.isValid()) {\n                return other > this ? this : other;\n            } else {\n                return createInvalid();\n            }\n        }\n    );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min () {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max () {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +(new Date());\n    };\n\n    var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n    function isDurationValid(m) {\n        for (var key in m) {\n            if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n                return false;\n            }\n        }\n\n        var unitHasDecimal = false;\n        for (var i = 0; i < ordering.length; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration (duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds = +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days +\n            weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months +\n            quarters * 3 +\n            years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration (obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound (number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // FORMATTING\n\n    function offset (token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset();\n            var sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z',  matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher);\n\n        if (matches === null) {\n            return null;\n        }\n\n        var chunk   = matches[matches.length - 1] || [];\n        var parts   = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ?\n          0 :\n          parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset (m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset (input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone (input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC (keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal (keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset () {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            }\n            else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset (input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime () {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted () {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {};\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted = this.isValid() &&\n                compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal () {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset () {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc () {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n    // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n    // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n    // and further modified to allow for strings containing both week and day\n    var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration (input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms : input._milliseconds,\n                d  : input._days,\n                M  : input._months\n            };\n        } else if (isNumber(input)) {\n            duration = {};\n            if (key) {\n                duration[key] = input;\n            } else {\n                duration.milliseconds = input;\n            }\n        } else if (!!(match = aspNetRegex.exec(input))) {\n            sign = (match[1] === '-') ? -1 : 1;\n            duration = {\n                y  : 0,\n                d  : toInt(match[DATE])                         * sign,\n                h  : toInt(match[HOUR])                         * sign,\n                m  : toInt(match[MINUTE])                       * sign,\n                s  : toInt(match[SECOND])                       * sign,\n                ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n            };\n        } else if (!!(match = isoRegex.exec(input))) {\n            sign = (match[1] === '-') ? -1 : (match[1] === '+') ? 1 : 1;\n            duration = {\n                y : parseIso(match[2], sign),\n                M : parseIso(match[3], sign),\n                w : parseIso(match[4], sign),\n                d : parseIso(match[5], sign),\n                h : parseIso(match[6], sign),\n                m : parseIso(match[7], sign),\n                s : parseIso(match[8], sign)\n            };\n        } else if (duration == null) {// checks for null or undefined\n            duration = {};\n        } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n            diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso (inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {milliseconds: 0, months: 0};\n\n        res.months = other.month() - base.month() +\n            (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return {milliseconds: 0, months: 0};\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(name, 'moment().' + name  + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n                'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n                tmp = val; val = period; period = tmp;\n            }\n\n            val = typeof val === 'string' ? +val : val;\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract (mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add      = createAdder(1, 'add');\n    var subtract = createAdder(-1, 'subtract');\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6 ? 'sameElse' :\n                diff < -1 ? 'lastWeek' :\n                diff < 0 ? 'lastDay' :\n                diff < 1 ? 'sameDay' :\n                diff < 2 ? 'nextDay' :\n                diff < 7 ? 'nextWeek' : 'sameElse';\n    }\n\n    function calendar$1 (time, formats) {\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n        var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n        return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n    }\n\n    function clone () {\n        return new Moment(this);\n    }\n\n    function isAfter (input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore (input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween (from, to, units, inclusivity) {\n        inclusivity = inclusivity || '()';\n        return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&\n            (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));\n    }\n\n    function isSame (input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units || 'millisecond');\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n        }\n    }\n\n    function isSameOrAfter (input, units) {\n        return this.isSame(input, units) || this.isAfter(input,units);\n    }\n\n    function isSameOrBefore (input, units) {\n        return this.isSame(input, units) || this.isBefore(input,units);\n    }\n\n    function diff (input, units, asFloat) {\n        var that,\n            zoneDelta,\n            output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year': output = monthDiff(this, that) / 12; break;\n            case 'month': output = monthDiff(this, that); break;\n            case 'quarter': output = monthDiff(this, that) / 3; break;\n            case 'second': output = (this - that) / 1e3; break; // 1000\n            case 'minute': output = (this - that) / 6e4; break; // 1000 * 60\n            case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60\n            case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default: output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff (a, b) {\n        // difference in months\n        var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2, adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString () {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true;\n        var m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect () {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment';\n        var zone = '';\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        var prefix = '[' + func + '(\"]';\n        var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n        var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        var suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format (inputString) {\n        if (!inputString) {\n            inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from (time, withoutSuffix) {\n        if (this.isValid() &&\n                ((isMoment(time) && time.isValid()) ||\n                 createLocal(time).isValid())) {\n            return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow (withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to (time, withoutSuffix) {\n        if (this.isValid() &&\n                ((isMoment(time) && time.isValid()) ||\n                 createLocal(time).isValid())) {\n            return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow (withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale (key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData () {\n        return this._locale;\n    }\n\n    function startOf (units) {\n        units = normalizeUnits(units);\n        // the following switch intentionally omits break keywords\n        // to utilize falling through the cases.\n        switch (units) {\n            case 'year':\n                this.month(0);\n                /* falls through */\n            case 'quarter':\n            case 'month':\n                this.date(1);\n                /* falls through */\n            case 'week':\n            case 'isoWeek':\n            case 'day':\n            case 'date':\n                this.hours(0);\n                /* falls through */\n            case 'hour':\n                this.minutes(0);\n                /* falls through */\n            case 'minute':\n                this.seconds(0);\n                /* falls through */\n            case 'second':\n                this.milliseconds(0);\n        }\n\n        // weeks are a special case\n        if (units === 'week') {\n            this.weekday(0);\n        }\n        if (units === 'isoWeek') {\n            this.isoWeekday(1);\n        }\n\n        // quarters are also special\n        if (units === 'quarter') {\n            this.month(Math.floor(this.month() / 3) * 3);\n        }\n\n        return this;\n    }\n\n    function endOf (units) {\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond') {\n            return this;\n        }\n\n        // 'date' is an alias for 'day', so it should be considered as such.\n        if (units === 'date') {\n            units = 'day';\n        }\n\n        return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n    }\n\n    function valueOf () {\n        return this._d.valueOf() - ((this._offset || 0) * 60000);\n    }\n\n    function unix () {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate () {\n        return new Date(this.valueOf());\n    }\n\n    function toArray () {\n        var m = this;\n        return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n    }\n\n    function toObject () {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds()\n        };\n    }\n\n    function toJSON () {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2 () {\n        return isValid(this);\n    }\n\n    function parsingFlags () {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt () {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict\n        };\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken (token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg',     'weekYear');\n    addWeekYearFormatToken('ggggg',    'weekYear');\n    addWeekYearFormatToken('GGGG',  'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    addUnitAlias('weekYear', 'gg');\n    addUnitAlias('isoWeekYear', 'GG');\n\n    // PRIORITY\n\n    addUnitPriority('weekYear', 1);\n    addUnitPriority('isoWeekYear', 1);\n\n\n    // PARSING\n\n    addRegexToken('G',      matchSigned);\n    addRegexToken('g',      matchSigned);\n    addRegexToken('GG',     match1to2, match2);\n    addRegexToken('gg',     match1to2, match2);\n    addRegexToken('GGGG',   match1to4, match4);\n    addRegexToken('gggg',   match1to4, match4);\n    addRegexToken('GGGGG',  match1to6, match6);\n    addRegexToken('ggggg',  match1to6, match6);\n\n    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n        week[token.substr(0, 2)] = toInt(input);\n    });\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear (input) {\n        return getSetWeekYearHelper.call(this,\n                input,\n                this.week(),\n                this.weekday(),\n                this.localeData()._week.dow,\n                this.localeData()._week.doy);\n    }\n\n    function getSetISOWeekYear (input) {\n        return getSetWeekYearHelper.call(this,\n                input, this.isoWeek(), this.isoWeekday(), 1, 4);\n    }\n\n    function getISOWeeksInYear () {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getWeeksInYear () {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // ALIASES\n\n    addUnitAlias('quarter', 'Q');\n\n    // PRIORITY\n\n    addUnitPriority('quarter', 7);\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter (input) {\n        return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // ALIASES\n\n    addUnitAlias('date', 'D');\n\n    // PRIORITY\n    addUnitPriority('date', 9);\n\n    // PARSING\n\n    addRegexToken('D',  match1to2);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict ?\n          (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n          locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // ALIASES\n\n    addUnitAlias('dayOfYear', 'DDD');\n\n    // PRIORITY\n    addUnitPriority('dayOfYear', 4);\n\n    // PARSING\n\n    addRegexToken('DDD',  match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear (input) {\n        var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n        return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // ALIASES\n\n    addUnitAlias('minute', 'm');\n\n    // PRIORITY\n\n    addUnitPriority('minute', 14);\n\n    // PARSING\n\n    addRegexToken('m',  match1to2);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // ALIASES\n\n    addUnitAlias('second', 's');\n\n    // PRIORITY\n\n    addUnitPriority('second', 15);\n\n    // PARSING\n\n    addRegexToken('s',  match1to2);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n\n    // ALIASES\n\n    addUnitAlias('millisecond', 'ms');\n\n    // PRIORITY\n\n    addUnitPriority('millisecond', 16);\n\n    // PARSING\n\n    addRegexToken('S',    match1to3, match1);\n    addRegexToken('SS',   match1to3, match2);\n    addRegexToken('SSS',  match1to3, match3);\n\n    var token;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n    // MOMENTS\n\n    var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z',  0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr () {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName () {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add               = add;\n    proto.calendar          = calendar$1;\n    proto.clone             = clone;\n    proto.diff              = diff;\n    proto.endOf             = endOf;\n    proto.format            = format;\n    proto.from              = from;\n    proto.fromNow           = fromNow;\n    proto.to                = to;\n    proto.toNow             = toNow;\n    proto.get               = stringGet;\n    proto.invalidAt         = invalidAt;\n    proto.isAfter           = isAfter;\n    proto.isBefore          = isBefore;\n    proto.isBetween         = isBetween;\n    proto.isSame            = isSame;\n    proto.isSameOrAfter     = isSameOrAfter;\n    proto.isSameOrBefore    = isSameOrBefore;\n    proto.isValid           = isValid$2;\n    proto.lang              = lang;\n    proto.locale            = locale;\n    proto.localeData        = localeData;\n    proto.max               = prototypeMax;\n    proto.min               = prototypeMin;\n    proto.parsingFlags      = parsingFlags;\n    proto.set               = stringSet;\n    proto.startOf           = startOf;\n    proto.subtract          = subtract;\n    proto.toArray           = toArray;\n    proto.toObject          = toObject;\n    proto.toDate            = toDate;\n    proto.toISOString       = toISOString;\n    proto.inspect           = inspect;\n    proto.toJSON            = toJSON;\n    proto.toString          = toString;\n    proto.unix              = unix;\n    proto.valueOf           = valueOf;\n    proto.creationData      = creationData;\n    proto.year       = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear    = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month       = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week           = proto.weeks        = getSetWeek;\n    proto.isoWeek        = proto.isoWeeks     = getSetISOWeek;\n    proto.weeksInYear    = getWeeksInYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.date       = getSetDayOfMonth;\n    proto.day        = proto.days             = getSetDayOfWeek;\n    proto.weekday    = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear  = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset            = getSetOffset;\n    proto.utc                  = setOffsetToUTC;\n    proto.local                = setOffsetToLocal;\n    proto.parseZone            = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST                = isDaylightSavingTime;\n    proto.isLocal              = isLocal;\n    proto.isUtcOffset          = isUtcOffset;\n    proto.isUtc                = isUtc;\n    proto.isUTC                = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates  = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n    proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n    proto.years  = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n    proto.zone   = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n    proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n    function createUnix (input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone () {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat (string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar        = calendar;\n    proto$1.longDateFormat  = longDateFormat;\n    proto$1.invalidDate     = invalidDate;\n    proto$1.ordinal         = ordinal;\n    proto$1.preparse        = preParsePostFormat;\n    proto$1.postformat      = preParsePostFormat;\n    proto$1.relativeTime    = relativeTime;\n    proto$1.pastFuture      = pastFuture;\n    proto$1.set             = set;\n\n    proto$1.months            =        localeMonths;\n    proto$1.monthsShort       =        localeMonthsShort;\n    proto$1.monthsParse       =        localeMonthsParse;\n    proto$1.monthsRegex       = monthsRegex;\n    proto$1.monthsShortRegex  = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays       =        localeWeekdays;\n    proto$1.weekdaysMin    =        localeWeekdaysMin;\n    proto$1.weekdaysShort  =        localeWeekdaysShort;\n    proto$1.weekdaysParse  =        localeWeekdaysParse;\n\n    proto$1.weekdaysRegex       =        weekdaysRegex;\n    proto$1.weekdaysShortRegex  =        weekdaysShortRegex;\n    proto$1.weekdaysMinRegex    =        weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1 (format, index, field, setter) {\n        var locale = getLocale();\n        var utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl (format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i;\n        var out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl (localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0;\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        var i;\n        var out = [];\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths (format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort (format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays (localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort (localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin (localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (toInt(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        }\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n    hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n    var mathAbs = Math.abs;\n\n    function abs () {\n        var data           = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days         = mathAbs(this._days);\n        this._months       = mathAbs(this._months);\n\n        data.milliseconds  = mathAbs(data.milliseconds);\n        data.seconds       = mathAbs(data.seconds);\n        data.minutes       = mathAbs(data.minutes);\n        data.hours         = mathAbs(data.hours);\n        data.months        = mathAbs(data.months);\n        data.years         = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1 (duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days         += direction * other._days;\n        duration._months       += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1 (input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1 (input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil (number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble () {\n        var milliseconds = this._milliseconds;\n        var days         = this._days;\n        var months       = this._months;\n        var data         = this._data;\n        var seconds, minutes, hours, years, monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0))) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds           = absFloor(milliseconds / 1000);\n        data.seconds      = seconds % 60;\n\n        minutes           = absFloor(seconds / 60);\n        data.minutes      = minutes % 60;\n\n        hours             = absFloor(minutes / 60);\n        data.hours        = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days   = days;\n        data.months = months;\n        data.years  = years;\n\n        return this;\n    }\n\n    function daysToMonths (days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return days * 4800 / 146097;\n    }\n\n    function monthsToDays (months) {\n        // the reverse of daysToMonths\n        return months * 146097 / 4800;\n    }\n\n    function as (units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days;\n        var months;\n        var milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'year') {\n            days   = this._days   + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            return units === 'month' ? months : months / 12;\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week'   : return days / 7     + milliseconds / 6048e5;\n                case 'day'    : return days         + milliseconds / 864e5;\n                case 'hour'   : return days * 24    + milliseconds / 36e5;\n                case 'minute' : return days * 1440  + milliseconds / 6e4;\n                case 'second' : return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n                default: throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    // TODO: Use this.as('ms')?\n    function valueOf$1 () {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        return (\n            this._milliseconds +\n            this._days * 864e5 +\n            (this._months % 12) * 2592e6 +\n            toInt(this._months / 12) * 31536e6\n        );\n    }\n\n    function makeAs (alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms');\n    var asSeconds      = makeAs('s');\n    var asMinutes      = makeAs('m');\n    var asHours        = makeAs('h');\n    var asDays         = makeAs('d');\n    var asWeeks        = makeAs('w');\n    var asMonths       = makeAs('M');\n    var asYears        = makeAs('y');\n\n    function clone$1 () {\n        return createDuration(this);\n    }\n\n    function get$2 (units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds');\n    var seconds      = makeGetter('seconds');\n    var minutes      = makeGetter('minutes');\n    var hours        = makeGetter('hours');\n    var days         = makeGetter('days');\n    var months       = makeGetter('months');\n    var years        = makeGetter('years');\n\n    function weeks () {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round;\n    var thresholds = {\n        ss: 44,         // a few seconds to seconds\n        s : 45,         // seconds to minute\n        m : 45,         // minutes to hour\n        h : 22,         // hours to day\n        d : 26,         // days to month\n        M : 11          // months to year\n    };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n        var duration = createDuration(posNegDuration).abs();\n        var seconds  = round(duration.as('s'));\n        var minutes  = round(duration.as('m'));\n        var hours    = round(duration.as('h'));\n        var days     = round(duration.as('d'));\n        var months   = round(duration.as('M'));\n        var years    = round(duration.as('y'));\n\n        var a = seconds <= thresholds.ss && ['s', seconds]  ||\n                seconds < thresholds.s   && ['ss', seconds] ||\n                minutes <= 1             && ['m']           ||\n                minutes < thresholds.m   && ['mm', minutes] ||\n                hours   <= 1             && ['h']           ||\n                hours   < thresholds.h   && ['hh', hours]   ||\n                days    <= 1             && ['d']           ||\n                days    < thresholds.d   && ['dd', days]    ||\n                months  <= 1             && ['M']           ||\n                months  < thresholds.M   && ['MM', months]  ||\n                years   <= 1             && ['y']           || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding (roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof(roundingFunction) === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold (threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize (withSuffix) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var locale = this.localeData();\n        var output = relativeTime$1(this, !withSuffix, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return ((x > 0) - (x < 0)) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000;\n        var days         = abs$1(this._days);\n        var months       = abs$1(this._months);\n        var minutes, hours, years;\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes           = absFloor(seconds / 60);\n        hours             = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years  = absFloor(months / 12);\n        months %= 12;\n\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        var Y = years;\n        var M = months;\n        var D = days;\n        var h = hours;\n        var m = minutes;\n        var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n        var total = this.asSeconds();\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        var totalSign = total < 0 ? '-' : '';\n        var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return totalSign + 'P' +\n            (Y ? ymSign + Y + 'Y' : '') +\n            (M ? ymSign + M + 'M' : '') +\n            (D ? daysSign + D + 'D' : '') +\n            ((h || m || s) ? 'T' : '') +\n            (h ? hmsSign + h + 'H' : '') +\n            (m ? hmsSign + m + 'M' : '') +\n            (s ? hmsSign + s + 'S' : '');\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid        = isValid$1;\n    proto$2.abs            = abs;\n    proto$2.add            = add$1;\n    proto$2.subtract       = subtract$1;\n    proto$2.as             = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds      = asSeconds;\n    proto$2.asMinutes      = asMinutes;\n    proto$2.asHours        = asHours;\n    proto$2.asDays         = asDays;\n    proto$2.asWeeks        = asWeeks;\n    proto$2.asMonths       = asMonths;\n    proto$2.asYears        = asYears;\n    proto$2.valueOf        = valueOf$1;\n    proto$2._bubble        = bubble;\n    proto$2.clone          = clone$1;\n    proto$2.get            = get$2;\n    proto$2.milliseconds   = milliseconds;\n    proto$2.seconds        = seconds;\n    proto$2.minutes        = minutes;\n    proto$2.hours          = hours;\n    proto$2.days           = days;\n    proto$2.weeks          = weeks;\n    proto$2.months         = months;\n    proto$2.years          = years;\n    proto$2.humanize       = humanize;\n    proto$2.toISOString    = toISOString$1;\n    proto$2.toString       = toISOString$1;\n    proto$2.toJSON         = toISOString$1;\n    proto$2.locale         = locale;\n    proto$2.localeData     = localeData;\n\n    proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n    proto$2.lang = lang;\n\n    // Side effect imports\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input, 10) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    // Side effect imports\n\n\n    hooks.version = '2.22.2';\n\n    setHookCallback(createLocal);\n\n    hooks.fn                    = proto;\n    hooks.min                   = min;\n    hooks.max                   = max;\n    hooks.now                   = now;\n    hooks.utc                   = createUTC;\n    hooks.unix                  = createUnix;\n    hooks.months                = listMonths;\n    hooks.isDate                = isDate;\n    hooks.locale                = getSetGlobalLocale;\n    hooks.invalid               = createInvalid;\n    hooks.duration              = createDuration;\n    hooks.isMoment              = isMoment;\n    hooks.weekdays              = listWeekdays;\n    hooks.parseZone             = createInZone;\n    hooks.localeData            = getLocale;\n    hooks.isDuration            = isDuration;\n    hooks.monthsShort           = listMonthsShort;\n    hooks.weekdaysMin           = listWeekdaysMin;\n    hooks.defineLocale          = defineLocale;\n    hooks.updateLocale          = updateLocale;\n    hooks.locales               = listLocales;\n    hooks.weekdaysShort         = listWeekdaysShort;\n    hooks.normalizeUnits        = normalizeUnits;\n    hooks.relativeTimeRounding  = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat        = getCalendarFormat;\n    hooks.prototype             = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm',             // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',  // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',   // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD',                             // <input type=\"date\" />\n        TIME: 'HH:mm',                                  // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss',                       // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS',                        // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'YYYY-[W]WW',                             // <input type=\"week\" />\n        MONTH: 'YYYY-MM'                                // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n","import { AgeRange } from '../catalogs/ageRange';\nimport { EducationalLevel } from '../catalogs/educationalLevel';\nimport { Genre } from '../catalogs/genre';\n\n\nexport class Scale {\n    id: number;\n    genre?: Genre;\n    educationalLevel?: EducationalLevel;\n    ageRange?: AgeRange;\n    rawValuesRange: string;\n    equivalentValue: number;\n    thematicVariableId: number;\n    countryId?: number;\n    countryName?: string;\n    companyId?: number;\n    companyName?: string;\n}\n","export enum OrganizationActivationType {\n  Individual,\n  Direct,\n  Concerted,\n}\n","\nexport enum SpendMode {\n  Unlimitted,\n  UniqueRetail,\n  PermanentRetail,\n}\n","export enum ReviewerStatusType {\n  InConstruction,\n  InValidation,\n  Returned,\n  Aproved\n}\n","export class PersonQuestionaryActivationMessage{\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { CompanyGroupMaster } from \"models/companies/company-group-master\";\n\n@autoinject()\nexport class CompanyGroupMasterService {\n  private logger: Logger;\n\n  constructor(\n    private client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"CompanyGroupMasterService\");\n  }\n\n  public async getById(id: number): Promise<CompanyGroupMaster> {\n    return await this.client.getById(\"companygroupmaster\", id)\n      .then((response: any) => {\n        return <CompanyGroupMaster>response;\n      });\n  }\n\n  public async list(franchiseId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`companygroupmaster/list/${franchiseId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n\n}\n","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { News } from \"models/test-core/news/news\";\n\n@autoinject()\nexport class NewsService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"NewsService\");\n  }\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`news/list`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n  public async changeState(id: number): Promise<void> {\n    return await this.client.post(`news/change-state/${id}`)\n      .then(() => null);\n  }\n\n  public async create(model: News): Promise<News> {\n    return await this.client.create(\"news\", model)\n      .then((response: News) => {\n        return response;\n      });\n  }\n\n  public async getAllByCompany( companyId: Number,news: News): Promise<News[]> {\n    return await this.client.post(`news/get-all-by-company/${companyId}`,news )\n      .then((response: News[]) => {\n        return response;\n      });\n  }\n\n  public async update(model: News): Promise<void> {\n    return await this.client.updateById(\"news\", model.id, null, model)\n      .then(() => null);\n  }\n  public async getById(id: number): Promise<News> {\n    return await this.client.getById(\"news\", id)\n      .then((response: News) => {\n        return response;\n      });\n  }\n\n}\n","import { ActivationQuestionary } from 'models/test-person/activationQuestionary';\nimport { Person } from './../test-person/person';\nimport { ProgrammingLanguage } from './programmingLanguage'\nimport { Difficulty } from './difficulty'\nexport class Test {\n  id: number;\n  programmingLanguage: ProgrammingLanguage;\n  difficulty: Difficulty;\n  updatedAt: Date;\n  problemDescription: string;\n  questionaryName: string;\n  questionaryId: number;\n  activationQuestionary: ActivationQuestionary\n}\n","\nimport { Sheet } from './sheets/sheet';\nimport { QuestionaryType } from 'models/questionaries/questionaryType';\nimport { ItemToQualify } from 'models/questionaries/itemToQualify';\nimport { OrganizationType } from 'models/questionaries/organizationType';\nimport { NoDiscType } from 'models/questionaries/noDiscType';\nimport  {GameTest } from 'models/questionaries/gameTest';\nimport { QuestionaryIncompatibility } from 'models/questionaries/questionaryIncompatibilty';\n\nexport class TestQuestionary {\n  id: number;\n  averageTime: number;\n  order: number;\n  isActive: boolean;\n  name: string;\n  languageId: number;\n  languageName: string;\n  questionaryType: QuestionaryType;\n  itemToQualify: ItemToQualify;\n  organizationType: OrganizationType;\n  noDiscType: NoDiscType;\n  hasEndButton: boolean;\n  hasChronometer: boolean;\n  hasGameTest: boolean;  \n  isNewTest: boolean;\n  programmingLanguageId: number;\n  sheets: Sheet[] = [];\n  isTranslatable: boolean;\n  stringId: string;\n  gameTest: GameTest;\n  isModular: boolean;\n  questionaryIncompatibilities?: QuestionaryIncompatibility[];\n  logFileUrl: string;\n  companyId?: number;\n}\n","\nexport enum QuestionaryType {\n  Disc,\n  NoDisc,\n  Competences\n}\n","import { BulkDownload } from 'models/test-person/bulkDownload';\nimport { Report } from 'models/test-reports/reports/report';\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n@autoinject()\nexport class BulkDownloadService{\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"BulkDownloadService\");\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`bulkdownload/list`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async create(model: BulkDownload): Promise<BulkDownload> {\n      return await this.client.create(`bulkdownload`, model)\n      .then((response: any) => {\n        return <BulkDownload>response;\n      });\n    }\n  \n  public async convertBulkActivation(id: number, model: Report): Promise<boolean> {\n      return await this.client.post(`bulkdownload/convert-bulkactivation/${id}`, model)\n      .then(() => null);\n    }\n\n    public async getGenerationReportCost(model: Report): Promise<number> {\n      return await this.client.post(`bulkdownload/get-report-cost`, model)\n      .then((response: any) => {\n        return <number> response;\n      });\n    }\n\n    public async regenerateBulkDownload(id: number): Promise<boolean> {\n      return await this.client.post(`bulkdownload/re-generate-bulkdownload/${id}`)\n      .then(() => null);\n    }\n}\n\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { Questionary } from \"models/questionaries/questionary\";\n\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n@autoinject()\nexport class CustomCompanyQuestionaryService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"CustomCompanyQuestionariesService\");\n  }\n\n  public async list(parameters: UxDatatableParameters, isVideoInterview: boolean): Promise<UxDatatableResponse> {\n    return await this.client.post(`customcompanyquestionary/list/${isVideoInterview}`, parameters)\n      .then(response => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n   public async getAll(): Promise<Questionary[]> {\n     return await this.client.get(\"customcompanyquestionary\")\n       .then(response => {\n         return <Questionary[]>response;\n      });\n   }\n\n  public async getById(id: number): Promise<Questionary> {\n    return await this.client.getById(\"customcompanyquestionary\", id)\n      .then(response => {\n        return <Questionary>response;\n      });\n  }\n\n  public async create(model: Questionary): Promise<Questionary> {\n    return await this.client.create(\"customcompanyquestionary\", model)\n      .then(response => {\n        return <Questionary>response;\n      });\n  }\n\n  public async update(model: Questionary): Promise<Questionary> {\n    return await this.client.updateById(\"customcompanyquestionary\", model.id, null, model)\n      .then(response => {\n        return <Questionary>response;\n      });\n  }\n\n  public async delete(id: number): Promise<void> {\n    // this.logger.info(\"id to delete: \" +  id);\n    return await this.client.deleteById(\"customcompanyquestionary\", id)\n      .then(() => null);\n  }\n\n  public async changeState(id: number): Promise<void> {\n    // this.logger.info(\"id to delete: \" +  id);\n    return await this.client.post(`customcompanyquestionary/change-state/${id}`)\n      .then(() => null);\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { User } from \"models/security/user\";\n\n@autoinject\nexport class CoreUserService {\n  private logger: Logger;\n\n  constructor(\n    private client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"CoreGroupService\");\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"coreuser/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getAll(): Promise<User[]> {\n    return await this.client.get(\"coreuser\")\n      .then((response: User[]) => {\n        return response;\n      });\n  }\n\n  public async getByRole(roleId: number): Promise<User[]> {\n    return await this.client.get(`coreuser/role/${roleId}`)\n      .then((response: User[]) => {\n        return response;\n      });\n  }\n\n  public async getById(id: number): Promise<User> {\n    return await this.client.getById(\"coreuser\", id)\n      .then((response: User) => {\n        return response;\n      });\n  }\n\n  public async create(model: User): Promise<User> {\n    return await this.client.create(\"coreuser\", model)\n      .then((response: User) => {\n        return response;\n      });\n  }\n\n  public async update(model: User): Promise<void> {\n    return await this.client.updateById(\"coreuser\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async changeState(id: number): Promise<void> {\n    return await this.client.post(`coreuser/change-state/${id}`)\n      .then(() => null);\n  }\n\n  public async resendActivationMessage(id: number): Promise<void> {\n    return await this.client.post(`coreuser/resend-activation-message/${id}`)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(\"coreuser\", id)\n      .then(() => null);\n  }\n}\n","import { LogManager, autoinject } from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Contact } from 'models/contacts/contact';\n\n@autoinject()\nexport class ContactService {\n  private logger: Logger;\n\n  constructor(\n    private client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger('QuestionariesService');\n  }\n\n  public async list(companyId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`contact/list/${companyId}`, parameters)\n      .then(response => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getall(companyId: number): Promise<Contact[]> {\n    return await this.client.get(`contact/getall/${companyId}`)\n      .then((response: Contact[]) => {\n        return response;\n      })\n  }\n\n  public async getById(id: number): Promise<Contact> {\n    return await this.client.getById(\"contact\", id)\n      .then(response => {\n        return <Contact>response;\n      });\n  }\n\n  public async create(model: Contact): Promise<Contact> {\n    return await this.client.create(`contact/${model.companyId}`, model)\n      .then(response => {\n        return <Contact>response;\n      });\n  }\n\n  public async update(model: Contact): Promise<Contact> {\n    return await this.client.updateById('contact', model.id, null, model)\n      .then(response => {\n        return <Contact>response;\n      });\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById('contact', id)\n      .then(() => null);\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { Sheet } from \"models/test-core/sheets/sheet\";\n\n@autoinject()\nexport class CompanySheetService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"CompanySheetService\");\n  }\n\n  public async list(search: string): Promise<Sheet[]> {\n    return await this.client.post(\"companysheet/list\", { search })\n      .then((response: any) => {\n        return <Sheet[]>response;\n      });\n  }\n\n  public async getAll(): Promise<Sheet[]> {\n    return await this.client.get(\"companysheet\")\n      .then((response: Sheet[]) => {\n        return response;\n      });\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { Category } from \"models/test-core/sheets/category\";\nimport { ItemToQualify } from \"models/questionaries/itemToQualify\";\nimport { OrganizationType } from \"models/questionaries/organizationType\";\n\n@autoinject()\nexport class CategorySheetService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"CategorySheetService\");\n  }\n\n  public async list(reportTemplateId: number, languageId: number, search: string): Promise<Category[]> {\n    return await this.client.post(`categorysheet/list/${reportTemplateId}/${languageId}`, { search })\n      .then((response: any) => {\n        return <Category[]>response;\n      });\n  }\n\n  public async listByItemToQualify(\n    itemToQualify: ItemToQualify, \n    languageId: number, \n    search?: string, \n    organizationType?: OrganizationType\n  ): Promise<Category[]> {\n    const parameters = {\n      ItemToQualify: itemToQualify,\n      OrganizationType: organizationType || null,\n      Search: search || null\n    };\n\n    const url = `categorysheet/list-by-itemQualify/${languageId}`;\n\n    return await this.client.post(url, parameters)\n      .then((response: any) => {\n        return <Category[]>response;\n      });\n  }\n}\n","import {\n  inject,\n  newInstance,\n  LogManager,\n  autoinject\n} from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { Question } from 'models/questions/question';\nimport { UxDatatableParameters } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { CustomCompanyQuestionListResponse } from 'models/questions/custom-company-question-list-response';\nimport { VideoInterviewSettings } from 'models/questions/video-interview-settings';\n\n@autoinject()\nexport class CustomCompanyQuestionService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient\n  ) {\n\n    this.logger = LogManager.getLogger('CustomCompanyQuestionsService');\n  }\n\n  // public async getAll(questionaryId: number): Promise<Question[]> {\n  //   return await this.client.get(`customcompanyquestion/questionary/${questionaryId}`)\n  //     .then(response => {\n  //       return <Question[]>response;\n  //     });\n  // }\n\n  public async list(questionaryId: number, parameters: UxDatatableParameters): Promise<CustomCompanyQuestionListResponse> {\n    return await this.client.post(`customcompanyquestion/list/${questionaryId}`, parameters)\n      .then(response => {\n        return <CustomCompanyQuestionListResponse>response;\n      });\n  }\n\n  public async getVideoInterviewSettings(): Promise<VideoInterviewSettings> {\n    return await this.client.get('customcompanyquestion/video-interview-settings')\n      .then((response: any) => {\n        return <VideoInterviewSettings>response;\n      });\n  }\n\n  public async getById(id: number): Promise<Question> {\n    // this.logger.info(\"id: \" +  id); \n    return await this.client.getById(\"customcompanyquestion\", id)\n      .then(response => {\n        return <Question>response;\n      });\n  }\n\n  public async create(model: Question): Promise<Question> {\n    return await this.client.post('customcompanyquestion', model)\n      .then(response => {\n        return <Question>response;\n      });\n  }\n\n  public async update(model: Question): Promise<Question> {\n    return await this.client.updateById('customcompanyquestion', model.id, null, model)\n      .then(response => {\n        return <Question>response;\n      });\n  }\n\n  async delete(id: number): Promise<void> {\n    // this.logger.info(\"id to delete: \" +  id);\n    return await this.client.deleteById('customcompanyquestion', id)\n      .then(() => null);\n  }\n\n  async uploadImage(image): Promise<any> {\n    let formData = new FormData();\n    formData.append('file', image);\n\n    return await this.client.post('customcompanyquestion/upload', formData)\n      .then(response => {\n        return <any>response;\n      });\n  }\n\n}\n","import { LogManager, autoinject } from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport {\n  UxDatatableParameters,\n  UxDatatableCustomAttribute,\n  UxDatatableResponse\n} from 'common/resources/elements/ux/datatable/ux-datatable';\nimport { QuestionAssociation } from 'models/thematic-groups/question-association';\nimport { ResponseOption } from 'models/questions/response-option';\n\n@autoinject()\nexport class ThematicAssociationService {\n  private logger: Logger;\n\n  constructor(\n    private client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger('ThematicAssociationService');\n  }\n\n  public async list(thematicGroupId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`thematicassociation/list/${thematicGroupId}`, parameters)\n      .then(response => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async update(model: QuestionAssociation): Promise<QuestionAssociation> {\n    return await this.client.updateById('thematicassociation', model.id, null, model)\n      .then(response => {\n        return <QuestionAssociation>response;\n      });\n  }\n\n  public async getWeightByQuestionId(questionId: number): Promise<Array<ResponseOption>> {\n    return await this.client.get(`thematicassociation/get-weight-by-question-id/${questionId}`)\n      .then(response => {\n        return <Array<ResponseOption>>response;\n      });\n  }\n}\n","import { inject, newInstance, LogManager, autoinject } from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Scale } from 'models/scales/scale';\n\n@autoinject()\nexport class ScaleService {\n    private logger: Logger;\n\n    constructor(\n        private client: AppHttpClient) {\n\n        this.logger = LogManager.getLogger('QuestionariesService');\n    }\n\n    async list(thematicVariableId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n        return await this.client.post(`scale/list/${thematicVariableId}`, parameters)\n            .then(response => {\n                return <UxDatatableResponse>response;\n            });\n    }\n\n    async getById(id: number): Promise<Scale> {\n        return await this.client.getById(\"scale\", id)\n            .then(response => {\n                return <Scale>response;\n            });\n    }\n\n    async create(model: Scale): Promise<Scale> {\n        return await this.client.create('scale', model)\n            .then(response => {\n                return <Scale>response;\n            });\n    }\n\n    async update(model: Scale): Promise<Scale> {\n        return await this.client.updateById('scale', model.id, null, model)\n            .then(response => {\n                return <Scale>response;\n            });\n    }\n\n    async delete(id: number): Promise<void> {\n        return await this.client.deleteById('scale', id)\n            .then(() => null);\n    }\n\n    async bulkUpload(thematicVariableId: number, file: File): Promise<any> {\n        let formData = new FormData();\n        formData.append('filedata', file);\n        formData.append('fileName', file.name);\n        formData.append('thematicVariableId', thematicVariableId.toString());\n\n        return await this.client.requestFormData('POST', 'scale/bulk-upload', formData)\n            .then((response: any) => {\n                return response;\n            });\n    }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { Questionary } from \"models/questionaries/questionary\";\n\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { QuestionaryLocalization } from \"models/questionaries/questionaryLocalization\";\n\n@autoinject()\nexport class ModularQuestionaryService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient,\n    public currentQuestionary: Questionary) {\n\n    this.logger = LogManager.getLogger(\"QuestionariesService\");\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"modularQuestionary/list\", parameters)\n      .then(response => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getAll(): Promise<Questionary[]> {\n    return await this.client.get(\"modularQuestionary\")\n      .then(response => {\n        return <Questionary[]>response;\n      });\n  }\n\n  public async getById(id: number): Promise<Questionary> {\n    // this.logger.info(\"id: \" +  id); \n    return await this.client.getById(\"modularQuestionary\", id)\n      .then(response => {\n        return <Questionary>response;\n      });\n  }\n\n  public async create(model: Questionary): Promise<Questionary> {\n    return await this.client.create(\"modularQuestionary\", model)\n      .then(response => {\n        return <Questionary>response;\n      });\n  }\n\n  public async update(model: Questionary): Promise<Questionary> {\n    return await this.client.updateById(\"modularQuestionary\", model.id, null, model)\n      .then(response => {\n        return <Questionary>response;\n      });\n  }\n\n  public async delete(id: number): Promise<void> {\n    // this.logger.info(\"id to delete: \" +  id);\n    return await this.client.deleteById(\"modularQuestionary\", id)\n      .then(() => null);\n  }\n\n  public async changeState(id: number): Promise<void> {\n    // this.logger.info(\"id to delete: \" +  id);\n    return await this.client.post(`modularQuestionary/change-state/${id}`)\n      .then(() => null);\n  }\n\n  public async createLogFile(questionaryId: number): Promise<boolean> {\n    return await this.client.post(`modularquestionary/create-logfile/${questionaryId}`)\n      .then((response: boolean) => response);\n  }\n}\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\nimport { PLATFORM } from 'aurelia-pal';\n\nfunction isObject(val) {\n  return val && (typeof val === 'function' || (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object');\n}\n\nexport var metadata = {\n  resource: 'aurelia:resource',\n  paramTypes: 'design:paramtypes',\n  propertyType: 'design:type',\n  properties: 'design:properties',\n  get: function get(metadataKey, target, targetKey) {\n    if (!isObject(target)) {\n      return undefined;\n    }\n    var result = metadata.getOwn(metadataKey, target, targetKey);\n    return result === undefined ? metadata.get(metadataKey, Object.getPrototypeOf(target), targetKey) : result;\n  },\n  getOwn: function getOwn(metadataKey, target, targetKey) {\n    if (!isObject(target)) {\n      return undefined;\n    }\n    return Reflect.getOwnMetadata(metadataKey, target, targetKey);\n  },\n  define: function define(metadataKey, metadataValue, target, targetKey) {\n    Reflect.defineMetadata(metadataKey, metadataValue, target, targetKey);\n  },\n  getOrCreateOwn: function getOrCreateOwn(metadataKey, Type, target, targetKey) {\n    var result = metadata.getOwn(metadataKey, target, targetKey);\n\n    if (result === undefined) {\n      result = new Type();\n      Reflect.defineMetadata(metadataKey, result, target, targetKey);\n    }\n\n    return result;\n  }\n};\n\nvar originStorage = new Map();\nvar unknownOrigin = Object.freeze({ moduleId: undefined, moduleMember: undefined });\n\nexport var Origin = function () {\n  function Origin(moduleId, moduleMember) {\n    \n\n    this.moduleId = moduleId;\n    this.moduleMember = moduleMember;\n  }\n\n  Origin.get = function get(fn) {\n    var origin = originStorage.get(fn);\n\n    if (origin === undefined) {\n      PLATFORM.eachModule(function (key, value) {\n        if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') {\n          for (var name in value) {\n            try {\n              var exp = value[name];\n              if (exp === fn) {\n                originStorage.set(fn, origin = new Origin(key, name));\n                return true;\n              }\n            } catch (e) {}\n          }\n        }\n\n        if (value === fn) {\n          originStorage.set(fn, origin = new Origin(key, 'default'));\n          return true;\n        }\n\n        return false;\n      });\n    }\n\n    return origin || unknownOrigin;\n  };\n\n  Origin.set = function set(fn, origin) {\n    originStorage.set(fn, origin);\n  };\n\n  return Origin;\n}();\n\nexport function decorators() {\n  for (var _len = arguments.length, rest = Array(_len), _key = 0; _key < _len; _key++) {\n    rest[_key] = arguments[_key];\n  }\n\n  var applicator = function applicator(target, key, descriptor) {\n    var i = rest.length;\n\n    if (key) {\n      descriptor = descriptor || {\n        value: target[key],\n        writable: true,\n        configurable: true,\n        enumerable: true\n      };\n\n      while (i--) {\n        descriptor = rest[i](target, key, descriptor) || descriptor;\n      }\n\n      Object.defineProperty(target, key, descriptor);\n    } else {\n      while (i--) {\n        target = rest[i](target) || target;\n      }\n    }\n\n    return target;\n  };\n\n  applicator.on = applicator;\n  return applicator;\n}\n\nexport function deprecated(optionsOrTarget, maybeKey, maybeDescriptor) {\n  function decorator(target, key, descriptor) {\n    var methodSignature = target.constructor.name + '#' + key;\n    var options = maybeKey ? {} : optionsOrTarget || {};\n    var message = 'DEPRECATION - ' + methodSignature;\n\n    if (typeof descriptor.value !== 'function') {\n      throw new SyntaxError('Only methods can be marked as deprecated.');\n    }\n\n    if (options.message) {\n      message += ' - ' + options.message;\n    }\n\n    return _extends({}, descriptor, {\n      value: function deprecationWrapper() {\n        if (options.error) {\n          throw new Error(message);\n        } else {\n          console.warn(message);\n        }\n\n        return descriptor.value.apply(this, arguments);\n      }\n    });\n  }\n\n  return maybeKey ? decorator(optionsOrTarget, maybeKey, maybeDescriptor) : decorator;\n}\n\nexport function mixin(behavior) {\n  var instanceKeys = Object.keys(behavior);\n\n  function _mixin(possible) {\n    var decorator = function decorator(target) {\n      var resolvedTarget = typeof target === 'function' ? target.prototype : target;\n\n      var i = instanceKeys.length;\n      while (i--) {\n        var property = instanceKeys[i];\n        Object.defineProperty(resolvedTarget, property, {\n          value: behavior[property],\n          writable: true\n        });\n      }\n    };\n\n    return possible ? decorator(possible) : decorator;\n  }\n\n  return _mixin;\n}\n\nfunction alwaysValid() {\n  return true;\n}\nfunction noCompose() {}\n\nfunction ensureProtocolOptions(options) {\n  if (options === undefined) {\n    options = {};\n  } else if (typeof options === 'function') {\n    options = {\n      validate: options\n    };\n  }\n\n  if (!options.validate) {\n    options.validate = alwaysValid;\n  }\n\n  if (!options.compose) {\n    options.compose = noCompose;\n  }\n\n  return options;\n}\n\nfunction createProtocolValidator(validate) {\n  return function (target) {\n    var result = validate(target);\n    return result === true;\n  };\n}\n\nfunction createProtocolAsserter(name, validate) {\n  return function (target) {\n    var result = validate(target);\n    if (result !== true) {\n      throw new Error(result || name + ' was not correctly implemented.');\n    }\n  };\n}\n\nexport function protocol(name, options) {\n  options = ensureProtocolOptions(options);\n\n  var result = function result(target) {\n    var resolvedTarget = typeof target === 'function' ? target.prototype : target;\n\n    options.compose(resolvedTarget);\n    result.assert(resolvedTarget);\n\n    Object.defineProperty(resolvedTarget, 'protocol:' + name, {\n      enumerable: false,\n      configurable: false,\n      writable: false,\n      value: true\n    });\n  };\n\n  result.validate = createProtocolValidator(options.validate);\n  result.assert = createProtocolAsserter(name, options.validate);\n\n  return result;\n}\n\nprotocol.create = function (name, options) {\n  options = ensureProtocolOptions(options);\n  var hidden = 'protocol:' + name;\n  var result = function result(target) {\n    var decorator = protocol(name, options);\n    return target ? decorator(target) : decorator;\n  };\n\n  result.decorates = function (obj) {\n    return obj[hidden] === true;\n  };\n  result.validate = createProtocolValidator(options.validate);\n  result.assert = createProtocolAsserter(name, options.validate);\n\n  return result;\n};","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { Archetype } from \"models/archetypes/archetype\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\n\n@autoinject()\nexport class ArchetypeService{\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"ArchetypeService\");\n  }\n\n  public async getAll(): Promise<Archetype[]> {\n    return await this.client.get(\"archetype\")\n      .then((response: any) => {\n        return <Archetype[]>response;\n      });\n  }\n\n  public async getById(id: number): Promise<Archetype> {\n    return await this.client.getById(\"archetype\", id)\n      .then((response: any) => {\n        return <Archetype>response;\n      });\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"archetype/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async create(model: Archetype): Promise<Archetype> {\n    return await this.client.create(\"archetype\", model)\n      .then((response: Archetype) => {\n        return response;\n      });\n  }\n\n  public async update(model: Archetype): Promise<void> {\n    return await this.client.updateById(\"archetype\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(\"archetype\", id)\n      .then(() => null);\n  }\n  async changeState(id: number): Promise<void> {    \n    return await this.client.post(`archetype/change-state/${id}`)\n      .then(() => null);\n  }\n\n  \n}\n","/*\n * Toastr\n * Copyright 2012-2015\n * Authors: John Papa, Hans Fjällemark, and Tim Ferrell.\n * All Rights Reserved.\n * Use, reproduction, distribution, and modification of this code is subject to the terms and\n * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php\n *\n * ARIA Support: Greta Krafsig\n *\n * Project: https://github.com/CodeSeven/toastr\n */\n/* global define */\n(function (define) {\n    define(['jquery'], function ($) {\n        return (function () {\n            var $container;\n            var listener;\n            var toastId = 0;\n            var toastType = {\n                error: 'error',\n                info: 'info',\n                success: 'success',\n                warning: 'warning'\n            };\n\n            var toastr = {\n                clear: clear,\n                remove: remove,\n                error: error,\n                getContainer: getContainer,\n                info: info,\n                options: {},\n                subscribe: subscribe,\n                success: success,\n                version: '2.1.4',\n                warning: warning\n            };\n\n            var previousToast;\n\n            return toastr;\n\n            ////////////////\n\n            function error(message, title, optionsOverride) {\n                return notify({\n                    type: toastType.error,\n                    iconClass: getOptions().iconClasses.error,\n                    message: message,\n                    optionsOverride: optionsOverride,\n                    title: title\n                });\n            }\n\n            function getContainer(options, create) {\n                if (!options) { options = getOptions(); }\n                $container = $('#' + options.containerId);\n                if ($container.length) {\n                    return $container;\n                }\n                if (create) {\n                    $container = createContainer(options);\n                }\n                return $container;\n            }\n\n            function info(message, title, optionsOverride) {\n                return notify({\n                    type: toastType.info,\n                    iconClass: getOptions().iconClasses.info,\n                    message: message,\n                    optionsOverride: optionsOverride,\n                    title: title\n                });\n            }\n\n            function subscribe(callback) {\n                listener = callback;\n            }\n\n            function success(message, title, optionsOverride) {\n                return notify({\n                    type: toastType.success,\n                    iconClass: getOptions().iconClasses.success,\n                    message: message,\n                    optionsOverride: optionsOverride,\n                    title: title\n                });\n            }\n\n            function warning(message, title, optionsOverride) {\n                return notify({\n                    type: toastType.warning,\n                    iconClass: getOptions().iconClasses.warning,\n                    message: message,\n                    optionsOverride: optionsOverride,\n                    title: title\n                });\n            }\n\n            function clear($toastElement, clearOptions) {\n                var options = getOptions();\n                if (!$container) { getContainer(options); }\n                if (!clearToast($toastElement, options, clearOptions)) {\n                    clearContainer(options);\n                }\n            }\n\n            function remove($toastElement) {\n                var options = getOptions();\n                if (!$container) { getContainer(options); }\n                if ($toastElement && $(':focus', $toastElement).length === 0) {\n                    removeToast($toastElement);\n                    return;\n                }\n                if ($container.children().length) {\n                    $container.remove();\n                }\n            }\n\n            // internal functions\n\n            function clearContainer (options) {\n                var toastsToClear = $container.children();\n                for (var i = toastsToClear.length - 1; i >= 0; i--) {\n                    clearToast($(toastsToClear[i]), options);\n                }\n            }\n\n            function clearToast ($toastElement, options, clearOptions) {\n                var force = clearOptions && clearOptions.force ? clearOptions.force : false;\n                if ($toastElement && (force || $(':focus', $toastElement).length === 0)) {\n                    $toastElement[options.hideMethod]({\n                        duration: options.hideDuration,\n                        easing: options.hideEasing,\n                        complete: function () { removeToast($toastElement); }\n                    });\n                    return true;\n                }\n                return false;\n            }\n\n            function createContainer(options) {\n                $container = $('<div/>')\n                    .attr('id', options.containerId)\n                    .addClass(options.positionClass);\n\n                $container.appendTo($(options.target));\n                return $container;\n            }\n\n            function getDefaults() {\n                return {\n                    tapToDismiss: true,\n                    toastClass: 'toast',\n                    containerId: 'toast-container',\n                    debug: false,\n\n                    showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery\n                    showDuration: 300,\n                    showEasing: 'swing', //swing and linear are built into jQuery\n                    onShown: undefined,\n                    hideMethod: 'fadeOut',\n                    hideDuration: 1000,\n                    hideEasing: 'swing',\n                    onHidden: undefined,\n                    closeMethod: false,\n                    closeDuration: false,\n                    closeEasing: false,\n                    closeOnHover: true,\n\n                    extendedTimeOut: 1000,\n                    iconClasses: {\n                        error: 'toast-error',\n                        info: 'toast-info',\n                        success: 'toast-success',\n                        warning: 'toast-warning'\n                    },\n                    iconClass: 'toast-info',\n                    positionClass: 'toast-top-right',\n                    timeOut: 5000, // Set timeOut and extendedTimeOut to 0 to make it sticky\n                    titleClass: 'toast-title',\n                    messageClass: 'toast-message',\n                    escapeHtml: false,\n                    target: 'body',\n                    closeHtml: '<button type=\"button\">&times;</button>',\n                    closeClass: 'toast-close-button',\n                    newestOnTop: true,\n                    preventDuplicates: false,\n                    progressBar: false,\n                    progressClass: 'toast-progress',\n                    rtl: false\n                };\n            }\n\n            function publish(args) {\n                if (!listener) { return; }\n                listener(args);\n            }\n\n            function notify(map) {\n                var options = getOptions();\n                var iconClass = map.iconClass || options.iconClass;\n\n                if (typeof (map.optionsOverride) !== 'undefined') {\n                    options = $.extend(options, map.optionsOverride);\n                    iconClass = map.optionsOverride.iconClass || iconClass;\n                }\n\n                if (shouldExit(options, map)) { return; }\n\n                toastId++;\n\n                $container = getContainer(options, true);\n\n                var intervalId = null;\n                var $toastElement = $('<div/>');\n                var $titleElement = $('<div/>');\n                var $messageElement = $('<div/>');\n                var $progressElement = $('<div/>');\n                var $closeElement = $(options.closeHtml);\n                var progressBar = {\n                    intervalId: null,\n                    hideEta: null,\n                    maxHideTime: null\n                };\n                var response = {\n                    toastId: toastId,\n                    state: 'visible',\n                    startTime: new Date(),\n                    options: options,\n                    map: map\n                };\n\n                personalizeToast();\n\n                displayToast();\n\n                handleEvents();\n\n                publish(response);\n\n                if (options.debug && console) {\n                    console.log(response);\n                }\n\n                return $toastElement;\n\n                function escapeHtml(source) {\n                    if (source == null) {\n                        source = '';\n                    }\n\n                    return source\n                        .replace(/&/g, '&amp;')\n                        .replace(/\"/g, '&quot;')\n                        .replace(/'/g, '&#39;')\n                        .replace(/</g, '&lt;')\n                        .replace(/>/g, '&gt;');\n                }\n\n                function personalizeToast() {\n                    setIcon();\n                    setTitle();\n                    setMessage();\n                    setCloseButton();\n                    setProgressBar();\n                    setRTL();\n                    setSequence();\n                    setAria();\n                }\n\n                function setAria() {\n                    var ariaValue = '';\n                    switch (map.iconClass) {\n                        case 'toast-success':\n                        case 'toast-info':\n                            ariaValue =  'polite';\n                            break;\n                        default:\n                            ariaValue = 'assertive';\n                    }\n                    $toastElement.attr('aria-live', ariaValue);\n                }\n\n                function handleEvents() {\n                    if (options.closeOnHover) {\n                        $toastElement.hover(stickAround, delayedHideToast);\n                    }\n\n                    if (!options.onclick && options.tapToDismiss) {\n                        $toastElement.click(hideToast);\n                    }\n\n                    if (options.closeButton && $closeElement) {\n                        $closeElement.click(function (event) {\n                            if (event.stopPropagation) {\n                                event.stopPropagation();\n                            } else if (event.cancelBubble !== undefined && event.cancelBubble !== true) {\n                                event.cancelBubble = true;\n                            }\n\n                            if (options.onCloseClick) {\n                                options.onCloseClick(event);\n                            }\n\n                            hideToast(true);\n                        });\n                    }\n\n                    if (options.onclick) {\n                        $toastElement.click(function (event) {\n                            options.onclick(event);\n                            hideToast();\n                        });\n                    }\n                }\n\n                function displayToast() {\n                    $toastElement.hide();\n\n                    $toastElement[options.showMethod](\n                        {duration: options.showDuration, easing: options.showEasing, complete: options.onShown}\n                    );\n\n                    if (options.timeOut > 0) {\n                        intervalId = setTimeout(hideToast, options.timeOut);\n                        progressBar.maxHideTime = parseFloat(options.timeOut);\n                        progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n                        if (options.progressBar) {\n                            progressBar.intervalId = setInterval(updateProgress, 10);\n                        }\n                    }\n                }\n\n                function setIcon() {\n                    if (map.iconClass) {\n                        $toastElement.addClass(options.toastClass).addClass(iconClass);\n                    }\n                }\n\n                function setSequence() {\n                    if (options.newestOnTop) {\n                        $container.prepend($toastElement);\n                    } else {\n                        $container.append($toastElement);\n                    }\n                }\n\n                function setTitle() {\n                    if (map.title) {\n                        var suffix = map.title;\n                        if (options.escapeHtml) {\n                            suffix = escapeHtml(map.title);\n                        }\n                        $titleElement.append(suffix).addClass(options.titleClass);\n                        $toastElement.append($titleElement);\n                    }\n                }\n\n                function setMessage() {\n                    if (map.message) {\n                        var suffix = map.message;\n                        if (options.escapeHtml) {\n                            suffix = escapeHtml(map.message);\n                        }\n                        $messageElement.append(suffix).addClass(options.messageClass);\n                        $toastElement.append($messageElement);\n                    }\n                }\n\n                function setCloseButton() {\n                    if (options.closeButton) {\n                        $closeElement.addClass(options.closeClass).attr('role', 'button');\n                        $toastElement.prepend($closeElement);\n                    }\n                }\n\n                function setProgressBar() {\n                    if (options.progressBar) {\n                        $progressElement.addClass(options.progressClass);\n                        $toastElement.prepend($progressElement);\n                    }\n                }\n\n                function setRTL() {\n                    if (options.rtl) {\n                        $toastElement.addClass('rtl');\n                    }\n                }\n\n                function shouldExit(options, map) {\n                    if (options.preventDuplicates) {\n                        if (map.message === previousToast) {\n                            return true;\n                        } else {\n                            previousToast = map.message;\n                        }\n                    }\n                    return false;\n                }\n\n                function hideToast(override) {\n                    var method = override && options.closeMethod !== false ? options.closeMethod : options.hideMethod;\n                    var duration = override && options.closeDuration !== false ?\n                        options.closeDuration : options.hideDuration;\n                    var easing = override && options.closeEasing !== false ? options.closeEasing : options.hideEasing;\n                    if ($(':focus', $toastElement).length && !override) {\n                        return;\n                    }\n                    clearTimeout(progressBar.intervalId);\n                    return $toastElement[method]({\n                        duration: duration,\n                        easing: easing,\n                        complete: function () {\n                            removeToast($toastElement);\n                            clearTimeout(intervalId);\n                            if (options.onHidden && response.state !== 'hidden') {\n                                options.onHidden();\n                            }\n                            response.state = 'hidden';\n                            response.endTime = new Date();\n                            publish(response);\n                        }\n                    });\n                }\n\n                function delayedHideToast() {\n                    if (options.timeOut > 0 || options.extendedTimeOut > 0) {\n                        intervalId = setTimeout(hideToast, options.extendedTimeOut);\n                        progressBar.maxHideTime = parseFloat(options.extendedTimeOut);\n                        progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n                    }\n                }\n\n                function stickAround() {\n                    clearTimeout(intervalId);\n                    progressBar.hideEta = 0;\n                    $toastElement.stop(true, true)[options.showMethod](\n                        {duration: options.showDuration, easing: options.showEasing}\n                    );\n                }\n\n                function updateProgress() {\n                    var percentage = ((progressBar.hideEta - (new Date().getTime())) / progressBar.maxHideTime) * 100;\n                    $progressElement.width(percentage + '%');\n                }\n            }\n\n            function getOptions() {\n                return $.extend({}, getDefaults(), toastr.options);\n            }\n\n            function removeToast($toastElement) {\n                if (!$container) { $container = getContainer(); }\n                if ($toastElement.is(':visible')) {\n                    return;\n                }\n                $toastElement.remove();\n                $toastElement = null;\n                if ($container.children().length === 0) {\n                    $container.remove();\n                    previousToast = undefined;\n                }\n            }\n\n        })();\n    });\n}(typeof define === 'function' && define.amd ? define : function (deps, factory) {\n    if (typeof module !== 'undefined' && module.exports) { //Node\n        module.exports = factory(require('jquery'));\n    } else {\n        window.toastr = factory(window.jQuery);\n    }\n}));\n","export class QuestionaryLanguage {\n  questionaryId: number;\n  languageId: number;\n  stringId: string;\n \n}\n","export enum Languages {\n  Spanish = 1,\n  English = 2,\n  Portugues = 3\n}\n","export class Contact{\n    id: number;\n    fullName: string;\n    idNumber: string;\n    phoneNumber: string;\n    emailAddress: string;\n    charge: string;\n    address: string;\n    companyId: number;\n}","export var LoginRedirectKey = 'loginRedirect';\r\n//# sourceMappingURL=open-id-connect-constants.js.map","export enum InboxByUserStatus {\n  Open,\n  Received\n}\n  ","export enum PersonMode {\n  Linkedin,\n  Direct,\n}\n","export enum ActivationType{\n  Person,\n  Position,\n  Organization,\n  Team\n}\n","export enum WootricComponentName {\n  mainHome,\n  personList,\n  personActivationCreate\n}\n","export enum NoDiscType {\n  General = 0,\n  ExpectationsTeam = 1,\n  Performance = 2,\n  Curriculum = 3,\n  JobProspects = 4,\n  VideoInterview = 5,\n  EngineersTest = 6,\n  CareerPath = 7,\n  Potential = 8\n}\n","import { ItemToQualify } from \"models/questionaries/itemToQualify\";\nimport { OrganizationType } from \"models/questionaries/organizationType\";\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { SheetLanguage } from './sheetLanguage';\n\nexport class Sheet {\n  id: number;\n  name: string;\n  description: string;\n  fullDescription: string;\n  itemToQualify?: ItemToQualify;\n  organizationType?: OrganizationType;\n  isActive: boolean;\n  catergoryId: number;\n  thumbnailImageUrl: string;\n  imageUrl: string;\n  thumbnailImage: any;\n  thumbnailImageFileName: string;\n  image: any;\n  imageFileName: string;\n\n  questionaries: Questionary[] = [];\n\n  sheetLanguages: SheetLanguage[] = [];\n\n  talentsPrice: number;\n  parameters: any[] = [];\n  warning: boolean;\n}\n","import { User } from '../security/user';\nimport { Company } from '../companies/company';\n\nexport class Wallet {\n  id: number;\n  company: Company = new Company();\n  companyId: number;\n  talent: number;\n  canDiscountGeneralWallet: boolean;\n  observation:  string;\n  userId:  number;\n  user: User = new User();\n  amount: number;\n  hasLowBalance: boolean;\n}\n","import { TransactionType } from './transaction-type';\nimport { Wallet } from './wallet';\nimport { Questionary } from '../questionaries/questionary';\nimport { User } from '../security/user';\n\nexport class Transaction {\n  id: number;  \n  transactionTypeId:  TransactionType;\n  walletId:  number;\n  wallet: Wallet = new Wallet();\n  talentsAfter:  number;\n  talentsBefore:  number;\n  observation:  string;\n  sourceUserId:  number;\n  sourceUser: User = new User();\n  targetUserId:  number;\n  targetUser: User = new User();\n  debit:  number;\n  credit:  number;\n  reportId:  number;\n  questionary: Questionary = new Questionary();\n  questionaryId: number;\n  createdOn: Date;\n}\n","\nexport enum TestPlanItemType {\n  Questionary,\n  Report,\n  Sheet\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_algo = C.algo;\n\t    var MD5 = C_algo.MD5;\n\n\t    /**\n\t     * This key derivation function is meant to conform with EVP_BytesToKey.\n\t     * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t     */\n\t    var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t         * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t         * @property {number} iterations The number of iterations to perform. Default: 1\n\t         */\n\t        cfg: Base.extend({\n\t            keySize: 128/32,\n\t            hasher: MD5,\n\t            iterations: 1\n\t        }),\n\n\t        /**\n\t         * Initializes a newly created key derivation function.\n\t         *\n\t         * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var kdf = CryptoJS.algo.EvpKDF.create();\n\t         *     var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t         *     var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t         */\n\t        init: function (cfg) {\n\t            this.cfg = this.cfg.extend(cfg);\n\t        },\n\n\t        /**\n\t         * Derives a key from a password.\n\t         *\n\t         * @param {WordArray|string} password The password.\n\t         * @param {WordArray|string} salt A salt.\n\t         *\n\t         * @return {WordArray} The derived key.\n\t         *\n\t         * @example\n\t         *\n\t         *     var key = kdf.compute(password, salt);\n\t         */\n\t        compute: function (password, salt) {\n\t            var block;\n\n\t            // Shortcut\n\t            var cfg = this.cfg;\n\n\t            // Init hasher\n\t            var hasher = cfg.hasher.create();\n\n\t            // Initial values\n\t            var derivedKey = WordArray.create();\n\n\t            // Shortcuts\n\t            var derivedKeyWords = derivedKey.words;\n\t            var keySize = cfg.keySize;\n\t            var iterations = cfg.iterations;\n\n\t            // Generate key\n\t            while (derivedKeyWords.length < keySize) {\n\t                if (block) {\n\t                    hasher.update(block);\n\t                }\n\t                block = hasher.update(password).finalize(salt);\n\t                hasher.reset();\n\n\t                // Iterations\n\t                for (var i = 1; i < iterations; i++) {\n\t                    block = hasher.finalize(block);\n\t                    hasher.reset();\n\t                }\n\n\t                derivedKey.concat(block);\n\t            }\n\t            derivedKey.sigBytes = keySize * 4;\n\n\t            return derivedKey;\n\t        }\n\t    });\n\n\t    /**\n\t     * Derives a key from a password.\n\t     *\n\t     * @param {WordArray|string} password The password.\n\t     * @param {WordArray|string} salt A salt.\n\t     * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t     *\n\t     * @return {WordArray} The derived key.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var key = CryptoJS.EvpKDF(password, salt);\n\t     *     var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t     *     var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t     */\n\t    C.EvpKDF = function (password, salt, cfg) {\n\t        return EvpKDF.create(cfg).compute(password, salt);\n\t    };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));","var OpenIdConnectRoles;\r\n(function (OpenIdConnectRoles) {\r\n    OpenIdConnectRoles[OpenIdConnectRoles[\"Everyone\"] = 0] = \"Everyone\";\r\n    OpenIdConnectRoles[OpenIdConnectRoles[\"Anonymous\"] = 1] = \"Anonymous\";\r\n    OpenIdConnectRoles[OpenIdConnectRoles[\"Authenticated\"] = 2] = \"Authenticated\";\r\n})(OpenIdConnectRoles || (OpenIdConnectRoles = {}));\r\nexport default OpenIdConnectRoles;\r\n//# sourceMappingURL=open-id-connect-roles.js.map","/**\n * @internal\n */\nexport function createDialogCancelError(output) {\n    var error = new Error('Operation cancelled.');\n    error.wasCancelled = true;\n    error.output = output;\n    return error;\n}\n","\nexport class CurrentCompanyChangeMessage {\n  constructor(\n    public currentCompanyId: number) { }\n}\n","/* FileSaver.js\n * A saveAs() FileSaver implementation.\n * 1.3.2\n * 2016-06-16 18:25:19\n *\n * By Eli Grey, http://eligrey.com\n * License: MIT\n *   See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md\n */\n\n/*global self */\n/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */\n\n/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */\n\nvar saveAs = saveAs || (function(view) {\n\t\"use strict\";\n\t// IE <10 is explicitly unsupported\n\tif (typeof view === \"undefined\" || typeof navigator !== \"undefined\" && /MSIE [1-9]\\./.test(navigator.userAgent)) {\n\t\treturn;\n\t}\n\tvar\n\t\t  doc = view.document\n\t\t  // only get URL when necessary in case Blob.js hasn't overridden it yet\n\t\t, get_URL = function() {\n\t\t\treturn view.URL || view.webkitURL || view;\n\t\t}\n\t\t, save_link = doc.createElementNS(\"http://www.w3.org/1999/xhtml\", \"a\")\n\t\t, can_use_save_link = \"download\" in save_link\n\t\t, click = function(node) {\n\t\t\tvar event = new MouseEvent(\"click\");\n\t\t\tnode.dispatchEvent(event);\n\t\t}\n\t\t, is_safari = /constructor/i.test(view.HTMLElement) || view.safari\n\t\t, is_chrome_ios =/CriOS\\/[\\d]+/.test(navigator.userAgent)\n\t\t, throw_outside = function(ex) {\n\t\t\t(view.setImmediate || view.setTimeout)(function() {\n\t\t\t\tthrow ex;\n\t\t\t}, 0);\n\t\t}\n\t\t, force_saveable_type = \"application/octet-stream\"\n\t\t// the Blob API is fundamentally broken as there is no \"downloadfinished\" event to subscribe to\n\t\t, arbitrary_revoke_timeout = 1000 * 40 // in ms\n\t\t, revoke = function(file) {\n\t\t\tvar revoker = function() {\n\t\t\t\tif (typeof file === \"string\") { // file is an object URL\n\t\t\t\t\tget_URL().revokeObjectURL(file);\n\t\t\t\t} else { // file is a File\n\t\t\t\t\tfile.remove();\n\t\t\t\t}\n\t\t\t};\n\t\t\tsetTimeout(revoker, arbitrary_revoke_timeout);\n\t\t}\n\t\t, dispatch = function(filesaver, event_types, event) {\n\t\t\tevent_types = [].concat(event_types);\n\t\t\tvar i = event_types.length;\n\t\t\twhile (i--) {\n\t\t\t\tvar listener = filesaver[\"on\" + event_types[i]];\n\t\t\t\tif (typeof listener === \"function\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlistener.call(filesaver, event || filesaver);\n\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\tthrow_outside(ex);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t, auto_bom = function(blob) {\n\t\t\t// prepend BOM for UTF-8 XML and text/* types (including HTML)\n\t\t\t// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n\t\t\tif (/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n\t\t\t\treturn new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});\n\t\t\t}\n\t\t\treturn blob;\n\t\t}\n\t\t, FileSaver = function(blob, name, no_auto_bom) {\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\t// First try a.download, then web filesystem, then object URLs\n\t\t\tvar\n\t\t\t\t  filesaver = this\n\t\t\t\t, type = blob.type\n\t\t\t\t, force = type === force_saveable_type\n\t\t\t\t, object_url\n\t\t\t\t, dispatch_all = function() {\n\t\t\t\t\tdispatch(filesaver, \"writestart progress write writeend\".split(\" \"));\n\t\t\t\t}\n\t\t\t\t// on any filesys errors revert to saving with object URLs\n\t\t\t\t, fs_error = function() {\n\t\t\t\t\tif ((is_chrome_ios || (force && is_safari)) && view.FileReader) {\n\t\t\t\t\t\t// Safari doesn't allow downloading of blob urls\n\t\t\t\t\t\tvar reader = new FileReader();\n\t\t\t\t\t\treader.onloadend = function() {\n\t\t\t\t\t\t\tvar url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');\n\t\t\t\t\t\t\tvar popup = view.open(url, '_blank');\n\t\t\t\t\t\t\tif(!popup) view.location.href = url;\n\t\t\t\t\t\t\turl=undefined; // release reference before dispatching\n\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\tdispatch_all();\n\t\t\t\t\t\t};\n\t\t\t\t\t\treader.readAsDataURL(blob);\n\t\t\t\t\t\tfilesaver.readyState = filesaver.INIT;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// don't create more object URLs than needed\n\t\t\t\t\tif (!object_url) {\n\t\t\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t\t}\n\t\t\t\t\tif (force) {\n\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar opened = view.open(object_url, \"_blank\");\n\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t// Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html\n\t\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t}\n\t\t\t;\n\t\t\tfilesaver.readyState = filesaver.INIT;\n\n\t\t\tif (can_use_save_link) {\n\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tsave_link.href = object_url;\n\t\t\t\t\tsave_link.download = name;\n\t\t\t\t\tclick(save_link);\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfs_error();\n\t\t}\n\t\t, FS_proto = FileSaver.prototype\n\t\t, saveAs = function(blob, name, no_auto_bom) {\n\t\t\treturn new FileSaver(blob, name || blob.name || \"download\", no_auto_bom);\n\t\t}\n\t;\n\t// IE 10+ (native saveAs)\n\tif (typeof navigator !== \"undefined\" && navigator.msSaveOrOpenBlob) {\n\t\treturn function(blob, name, no_auto_bom) {\n\t\t\tname = name || blob.name || \"download\";\n\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\treturn navigator.msSaveOrOpenBlob(blob, name);\n\t\t};\n\t}\n\n\tFS_proto.abort = function(){};\n\tFS_proto.readyState = FS_proto.INIT = 0;\n\tFS_proto.WRITING = 1;\n\tFS_proto.DONE = 2;\n\n\tFS_proto.error =\n\tFS_proto.onwritestart =\n\tFS_proto.onprogress =\n\tFS_proto.onwrite =\n\tFS_proto.onabort =\n\tFS_proto.onerror =\n\tFS_proto.onwriteend =\n\t\tnull;\n\n\treturn saveAs;\n}(\n\t   typeof self !== \"undefined\" && self\n\t|| typeof window !== \"undefined\" && window\n\t|| this.content\n));\n// `self` is undefined in Firefox for Android content script context\n// while `this` is nsIContentFrameMessageManager\n// with an attribute `content` that corresponds to the window\n\nif (typeof module !== \"undefined\" && module.exports) {\n  module.exports.saveAs = saveAs;\n} else if ((typeof define !== \"undefined\" && define !== null) && (define.amd !== null)) {\n  define(\"FileSaver.js\", function() {\n    return saveAs;\n  });\n}\n","export enum TypeActivationUrl {\n  IdQuestionaryGroup,\n  ReportTemplate\n}\n","// export class QuestionType {\n//   items = [\n//     { \"id\": 1, \"name\": \"main.admin.pages.questionaries.questions.question_type.single_choice_list\", \"code\": \"single.choice.list\" },\n//     { \"id\": 2, \"name\": \"main.admin.pages.questionaries.questions.question_type.single_choice_images\", \"code\": \"single.choice.image\" },\n//     { \"id\": 3, \"name\": \"main.admin.pages.questionaries.questions.question_type.multiple_choice_list\", \"code\": \"multiple.choice.list\" },\n//     { \"id\": 4, \"name\": \"main.admin.pages.questionaries.questions.question_type.multiple_choice_images\", \"code\": \"multiple.choice.image\" },\n//     { \"id\": 5, \"name\": \"main.admin.pages.questionaries.questions.question_type.matrix\", \"code\": \"matrix\" },\n//     { \"id\": 6, \"name\": \"main.admin.pages.questionaries.questions.question_type.descriptive_text\", \"code\": \"descriptive.text\" },\n//     { \"id\": 7, \"name\": \"main.admin.pages.questionaries.questions.question_type.open_answer_questions\", \"code\": \"open.answer.question\" }\n//   ];\n\n//   public getNameById(id: number): string {\n//     return this.items.find(x => x.id == id)[\"name\"];\n//   }\n\n//   public getIdByCode(code: string): number {\n//     return this.items.find(x => x.code == code)[\"id\"];\n//   }\n// }\n\nexport enum QuestionType {\n  SingleChoiceList,\n  SingleImageChoiceList,\n  MultipleChoiceList,\n  MultipleImageChoiceList,\n  Matrix,\n  DescriptiveText,\n  OpenAnswerQuestion,\n  SingleChoiceListWithComments\n}\n","export enum OrganizationType {\n  Actual, \n  Ideal\n}\n","\nexport enum PlanType {\n  Demo,\n  Billable\n}\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t//  when a module is imported multiple times with different media queries.\n\t\t\t//  I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_enc = C.enc;\n\n\t    /**\n\t     * Base64 encoding strategy.\n\t     */\n\t    var Base64 = C_enc.Base64 = {\n\t        /**\n\t         * Converts a word array to a Base64 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The Base64 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\t            var map = this._map;\n\n\t            // Clamp excess bits\n\t            wordArray.clamp();\n\n\t            // Convert\n\t            var base64Chars = [];\n\t            for (var i = 0; i < sigBytes; i += 3) {\n\t                var byte1 = (words[i >>> 2]       >>> (24 - (i % 4) * 8))       & 0xff;\n\t                var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t                var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t                var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t                for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t                    base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t                }\n\t            }\n\n\t            // Add padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                while (base64Chars.length % 4) {\n\t                    base64Chars.push(paddingChar);\n\t                }\n\t            }\n\n\t            return base64Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Base64 string to a word array.\n\t         *\n\t         * @param {string} base64Str The Base64 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t         */\n\t        parse: function (base64Str) {\n\t            // Shortcuts\n\t            var base64StrLength = base64Str.length;\n\t            var map = this._map;\n\t            var reverseMap = this._reverseMap;\n\n\t            if (!reverseMap) {\n\t                    reverseMap = this._reverseMap = [];\n\t                    for (var j = 0; j < map.length; j++) {\n\t                        reverseMap[map.charCodeAt(j)] = j;\n\t                    }\n\t            }\n\n\t            // Ignore padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                var paddingIndex = base64Str.indexOf(paddingChar);\n\t                if (paddingIndex !== -1) {\n\t                    base64StrLength = paddingIndex;\n\t                }\n\t            }\n\n\t            // Convert\n\t            return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t        },\n\n\t        _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t    };\n\n\t    function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t      var words = [];\n\t      var nBytes = 0;\n\t      for (var i = 0; i < base64StrLength; i++) {\n\t          if (i % 4) {\n\t              var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t              var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t              var bitsCombined = bits1 | bits2;\n\t              words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t              nBytes++;\n\t          }\n\t      }\n\t      return WordArray.create(words, nBytes);\n\t    }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Constants table\n\t    var T = [];\n\n\t    // Compute constants\n\t    (function () {\n\t        for (var i = 0; i < 64; i++) {\n\t            T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t        }\n\t    }());\n\n\t    /**\n\t     * MD5 hash algorithm.\n\t     */\n\t    var MD5 = C_algo.MD5 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init([\n\t                0x67452301, 0xefcdab89,\n\t                0x98badcfe, 0x10325476\n\t            ]);\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Swap endian\n\t            for (var i = 0; i < 16; i++) {\n\t                // Shortcuts\n\t                var offset_i = offset + i;\n\t                var M_offset_i = M[offset_i];\n\n\t                M[offset_i] = (\n\t                    (((M_offset_i << 8)  | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t                    (((M_offset_i << 24) | (M_offset_i >>> 8))  & 0xff00ff00)\n\t                );\n\t            }\n\n\t            // Shortcuts\n\t            var H = this._hash.words;\n\n\t            var M_offset_0  = M[offset + 0];\n\t            var M_offset_1  = M[offset + 1];\n\t            var M_offset_2  = M[offset + 2];\n\t            var M_offset_3  = M[offset + 3];\n\t            var M_offset_4  = M[offset + 4];\n\t            var M_offset_5  = M[offset + 5];\n\t            var M_offset_6  = M[offset + 6];\n\t            var M_offset_7  = M[offset + 7];\n\t            var M_offset_8  = M[offset + 8];\n\t            var M_offset_9  = M[offset + 9];\n\t            var M_offset_10 = M[offset + 10];\n\t            var M_offset_11 = M[offset + 11];\n\t            var M_offset_12 = M[offset + 12];\n\t            var M_offset_13 = M[offset + 13];\n\t            var M_offset_14 = M[offset + 14];\n\t            var M_offset_15 = M[offset + 15];\n\n\t            // Working varialbes\n\t            var a = H[0];\n\t            var b = H[1];\n\t            var c = H[2];\n\t            var d = H[3];\n\n\t            // Computation\n\t            a = FF(a, b, c, d, M_offset_0,  7,  T[0]);\n\t            d = FF(d, a, b, c, M_offset_1,  12, T[1]);\n\t            c = FF(c, d, a, b, M_offset_2,  17, T[2]);\n\t            b = FF(b, c, d, a, M_offset_3,  22, T[3]);\n\t            a = FF(a, b, c, d, M_offset_4,  7,  T[4]);\n\t            d = FF(d, a, b, c, M_offset_5,  12, T[5]);\n\t            c = FF(c, d, a, b, M_offset_6,  17, T[6]);\n\t            b = FF(b, c, d, a, M_offset_7,  22, T[7]);\n\t            a = FF(a, b, c, d, M_offset_8,  7,  T[8]);\n\t            d = FF(d, a, b, c, M_offset_9,  12, T[9]);\n\t            c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t            b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t            a = FF(a, b, c, d, M_offset_12, 7,  T[12]);\n\t            d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t            c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t            b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t            a = GG(a, b, c, d, M_offset_1,  5,  T[16]);\n\t            d = GG(d, a, b, c, M_offset_6,  9,  T[17]);\n\t            c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t            b = GG(b, c, d, a, M_offset_0,  20, T[19]);\n\t            a = GG(a, b, c, d, M_offset_5,  5,  T[20]);\n\t            d = GG(d, a, b, c, M_offset_10, 9,  T[21]);\n\t            c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t            b = GG(b, c, d, a, M_offset_4,  20, T[23]);\n\t            a = GG(a, b, c, d, M_offset_9,  5,  T[24]);\n\t            d = GG(d, a, b, c, M_offset_14, 9,  T[25]);\n\t            c = GG(c, d, a, b, M_offset_3,  14, T[26]);\n\t            b = GG(b, c, d, a, M_offset_8,  20, T[27]);\n\t            a = GG(a, b, c, d, M_offset_13, 5,  T[28]);\n\t            d = GG(d, a, b, c, M_offset_2,  9,  T[29]);\n\t            c = GG(c, d, a, b, M_offset_7,  14, T[30]);\n\t            b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t            a = HH(a, b, c, d, M_offset_5,  4,  T[32]);\n\t            d = HH(d, a, b, c, M_offset_8,  11, T[33]);\n\t            c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t            b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t            a = HH(a, b, c, d, M_offset_1,  4,  T[36]);\n\t            d = HH(d, a, b, c, M_offset_4,  11, T[37]);\n\t            c = HH(c, d, a, b, M_offset_7,  16, T[38]);\n\t            b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t            a = HH(a, b, c, d, M_offset_13, 4,  T[40]);\n\t            d = HH(d, a, b, c, M_offset_0,  11, T[41]);\n\t            c = HH(c, d, a, b, M_offset_3,  16, T[42]);\n\t            b = HH(b, c, d, a, M_offset_6,  23, T[43]);\n\t            a = HH(a, b, c, d, M_offset_9,  4,  T[44]);\n\t            d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t            c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t            b = HH(b, c, d, a, M_offset_2,  23, T[47]);\n\n\t            a = II(a, b, c, d, M_offset_0,  6,  T[48]);\n\t            d = II(d, a, b, c, M_offset_7,  10, T[49]);\n\t            c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t            b = II(b, c, d, a, M_offset_5,  21, T[51]);\n\t            a = II(a, b, c, d, M_offset_12, 6,  T[52]);\n\t            d = II(d, a, b, c, M_offset_3,  10, T[53]);\n\t            c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t            b = II(b, c, d, a, M_offset_1,  21, T[55]);\n\t            a = II(a, b, c, d, M_offset_8,  6,  T[56]);\n\t            d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t            c = II(c, d, a, b, M_offset_6,  15, T[58]);\n\t            b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t            a = II(a, b, c, d, M_offset_4,  6,  T[60]);\n\t            d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t            c = II(c, d, a, b, M_offset_2,  15, T[62]);\n\t            b = II(b, c, d, a, M_offset_9,  21, T[63]);\n\n\t            // Intermediate hash value\n\t            H[0] = (H[0] + a) | 0;\n\t            H[1] = (H[1] + b) | 0;\n\t            H[2] = (H[2] + c) | 0;\n\t            H[3] = (H[3] + d) | 0;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t            var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t            var nBitsTotalL = nBitsTotal;\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t                (((nBitsTotalH << 8)  | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t                (((nBitsTotalH << 24) | (nBitsTotalH >>> 8))  & 0xff00ff00)\n\t            );\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t                (((nBitsTotalL << 8)  | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t                (((nBitsTotalL << 24) | (nBitsTotalL >>> 8))  & 0xff00ff00)\n\t            );\n\n\t            data.sigBytes = (dataWords.length + 1) * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Shortcuts\n\t            var hash = this._hash;\n\t            var H = hash.words;\n\n\t            // Swap endian\n\t            for (var i = 0; i < 4; i++) {\n\t                // Shortcut\n\t                var H_i = H[i];\n\n\t                H[i] = (((H_i << 8)  | (H_i >>> 24)) & 0x00ff00ff) |\n\t                       (((H_i << 24) | (H_i >>> 8))  & 0xff00ff00);\n\t            }\n\n\t            // Return final computed hash\n\t            return hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    function FF(a, b, c, d, x, s, t) {\n\t        var n = a + ((b & c) | (~b & d)) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    function GG(a, b, c, d, x, s, t) {\n\t        var n = a + ((b & d) | (c & ~d)) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    function HH(a, b, c, d, x, s, t) {\n\t        var n = a + (b ^ c ^ d) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    function II(a, b, c, d, x, s, t) {\n\t        var n = a + (c ^ (b | ~d)) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.MD5('message');\n\t     *     var hash = CryptoJS.MD5(wordArray);\n\t     */\n\t    C.MD5 = Hasher._createHelper(MD5);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacMD5(message, key);\n\t     */\n\t    C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));","/**\n * An abstract base class for implementors of the basic Renderer API.\n */\nvar Renderer = /** @class */ (function () {\n    function Renderer() {\n    }\n    /**\n     * Gets an anchor for the ViewSlot to insert a view into.\n     * @returns A DOM element.\n     */\n    Renderer.prototype.getDialogContainer = function () {\n        throw new Error('DialogRenderer must implement getDialogContainer().');\n    };\n    /**\n     * Displays the dialog.\n     * @returns Promise A promise that resolves when the dialog has been displayed.\n     */\n    Renderer.prototype.showDialog = function (dialogController) {\n        throw new Error('DialogRenderer must implement showDialog().');\n    };\n    /**\n     * Hides the dialog.\n     * @returns Promise A promise that resolves when the dialog has been hidden.\n     */\n    Renderer.prototype.hideDialog = function (dialogController) {\n        throw new Error('DialogRenderer must implement hideDialog().');\n    };\n    return Renderer;\n}());\nexport { Renderer };\n","/**\n * @internal\n */\nvar DefaultDialogSettings = /** @class */ (function () {\n    function DefaultDialogSettings() {\n        this.lock = true;\n        this.startingZIndex = 1000;\n        this.centerHorizontalOnly = false;\n        this.rejectOnCancel = false;\n        this.ignoreTransitions = false;\n    }\n    return DefaultDialogSettings;\n}());\nexport { DefaultDialogSettings };\n","import { InboxByUserStatus } from \"./inboxByUserStatus\";\n\n\nexport class Inbox {\n  id: number;\n  subject: string;\n  roleId:number;\n  franchiseMaster: number[] = [];\n  franchise : number[] = [];\n  planTest: number[]= [];\n  planSelection:number[] = [];\n  company:number[] = [];\n\n  isActive: boolean;\n  body:string; \n    \n  franchisesMaster: string[] = [];\n  franchises : string[] = [];\n  plansTest: string[] = [];\n  plansSelection: string[] = [];\n  companiesName: string[] = [];\n\n  inboxByUserStatus : InboxByUserStatus;\n  }\n  ","export class PersonDemographicDataEditMessage {\n\n}\n","import { Company } from \"../companies/company\";\n\nexport class Team {\n  id: number;\n  companyId: number;\n  company: Company;\n  name: string;\n  tags: string;\n\n  peopleWithDiscQuantity?: number;\n  peopleQuantity?: number;\n\n  createdOn: Date;\n  createdByName: string;\n}\n","import { CompanySettings } from 'models/companies/company-settings';\nimport { autoinject, LogManager } from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { Company } from \"models/companies/company\";\n\n@autoinject\nexport class CoreCompanyService {\n  private logger: Logger;\n\n  constructor(\n    private client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger('CoreCompanyService');\n  }\n\n  public async getAll(): Promise<Company[]> {\n    return await this.client.get(\"corecompany\")\n      .then((response: Company[]) => {\n        return response;\n      });\n  }\n\n  public async getById(id: number): Promise<Company> {\n    return await this.client.getById(\"corecompany\", id)\n      .then((response: Company) => {\n        return response;\n      });\n  }\n\n  public async getSettingsById(id: number): Promise<CompanySettings> {\n    return await this.client.get(`corecompany/${id}/settings`)\n      .then((response: CompanySettings) => {\n        return response;\n      });\n  }\n\n  public async getByRoleId(roleId: number): Promise<Company[]> {\n    return await this.client.get(`corecompany/role/${roleId}`)\n      .then((response: Company[]) => {\n        return response;\n      });\n  }\n\n}\n","import { OrganizationActivationType } from \"./organizationActivationType\";\nimport { OrganizationType } from \"../questionaries/organizationType\";\nimport { Disc } from \"models/questionaries/disc\";\n\nexport class Organization {\n  id: number;\n  companyId: number;\n  name: string;\n  tags: string;\n\n  organizationActivationType: OrganizationActivationType;\n  organizationType: OrganizationType;\n  questionaryId: number;\n\n  highestDisc: Disc;\n  stamp: string;\n  \n  evaluatorsQuantity: number;\n  finalizedEvaluatorsQuantity: number;\n  \n  createdOn: Date;\n  createdByName: string;\n}\n","export class ThematicVariable {\n    id: number;\n    name: string;\n    description: string;\n    thematicGroupId: number;\n    isManipulationScale: boolean = false;\n}\n","export class ThematicGroup {\n    id: number;\n    name: string;\n    description: string;\n    isDiscQuestionary: boolean = false;\n    questionaryId: number;\n    questions: number[] = [];\n    thematicVariableId ?: number;\n    averageTime?: number;\n    isDisabled?: boolean;\n}\n","/*! @preserve\n * numeral.js\n * version : 2.0.6\n * author : Adam Draper\n * license : MIT\n * http://adamwdraper.github.com/Numeral-js/\n */\n\n(function (global, factory) {\n    if (typeof define === 'function' && define.amd) {\n        define(factory);\n    } else if (typeof module === 'object' && module.exports) {\n        module.exports = factory();\n    } else {\n        global.numeral = factory();\n    }\n}(this, function () {\n    /************************************\n        Variables\n    ************************************/\n\n    var numeral,\n        _,\n        VERSION = '2.0.6',\n        formats = {},\n        locales = {},\n        defaults = {\n            currentLocale: 'en',\n            zeroFormat: null,\n            nullFormat: null,\n            defaultFormat: '0,0',\n            scalePercentBy100: true\n        },\n        options = {\n            currentLocale: defaults.currentLocale,\n            zeroFormat: defaults.zeroFormat,\n            nullFormat: defaults.nullFormat,\n            defaultFormat: defaults.defaultFormat,\n            scalePercentBy100: defaults.scalePercentBy100\n        };\n\n\n    /************************************\n        Constructors\n    ************************************/\n\n    // Numeral prototype object\n    function Numeral(input, number) {\n        this._input = input;\n\n        this._value = number;\n    }\n\n    numeral = function(input) {\n        var value,\n            kind,\n            unformatFunction,\n            regexp;\n\n        if (numeral.isNumeral(input)) {\n            value = input.value();\n        } else if (input === 0 || typeof input === 'undefined') {\n            value = 0;\n        } else if (input === null || _.isNaN(input)) {\n            value = null;\n        } else if (typeof input === 'string') {\n            if (options.zeroFormat && input === options.zeroFormat) {\n                value = 0;\n            } else if (options.nullFormat && input === options.nullFormat || !input.replace(/[^0-9]+/g, '').length) {\n                value = null;\n            } else {\n                for (kind in formats) {\n                    regexp = typeof formats[kind].regexps.unformat === 'function' ? formats[kind].regexps.unformat() : formats[kind].regexps.unformat;\n\n                    if (regexp && input.match(regexp)) {\n                        unformatFunction = formats[kind].unformat;\n\n                        break;\n                    }\n                }\n\n                unformatFunction = unformatFunction || numeral._.stringToNumber;\n\n                value = unformatFunction(input);\n            }\n        } else {\n            value = Number(input)|| null;\n        }\n\n        return new Numeral(input, value);\n    };\n\n    // version number\n    numeral.version = VERSION;\n\n    // compare numeral object\n    numeral.isNumeral = function(obj) {\n        return obj instanceof Numeral;\n    };\n\n    // helper functions\n    numeral._ = _ = {\n        // formats numbers separators, decimals places, signs, abbreviations\n        numberToFormat: function(value, format, roundingFunction) {\n            var locale = locales[numeral.options.currentLocale],\n                negP = false,\n                optDec = false,\n                leadingCount = 0,\n                abbr = '',\n                trillion = 1000000000000,\n                billion = 1000000000,\n                million = 1000000,\n                thousand = 1000,\n                decimal = '',\n                neg = false,\n                abbrForce, // force abbreviation\n                abs,\n                min,\n                max,\n                power,\n                int,\n                precision,\n                signed,\n                thousands,\n                output;\n\n            // make sure we never format a null value\n            value = value || 0;\n\n            abs = Math.abs(value);\n\n            // see if we should use parentheses for negative number or if we should prefix with a sign\n            // if both are present we default to parentheses\n            if (numeral._.includes(format, '(')) {\n                negP = true;\n                format = format.replace(/[\\(|\\)]/g, '');\n            } else if (numeral._.includes(format, '+') || numeral._.includes(format, '-')) {\n                signed = numeral._.includes(format, '+') ? format.indexOf('+') : value < 0 ? format.indexOf('-') : -1;\n                format = format.replace(/[\\+|\\-]/g, '');\n            }\n\n            // see if abbreviation is wanted\n            if (numeral._.includes(format, 'a')) {\n                abbrForce = format.match(/a(k|m|b|t)?/);\n\n                abbrForce = abbrForce ? abbrForce[1] : false;\n\n                // check for space before abbreviation\n                if (numeral._.includes(format, ' a')) {\n                    abbr = ' ';\n                }\n\n                format = format.replace(new RegExp(abbr + 'a[kmbt]?'), '');\n\n                if (abs >= trillion && !abbrForce || abbrForce === 't') {\n                    // trillion\n                    abbr += locale.abbreviations.trillion;\n                    value = value / trillion;\n                } else if (abs < trillion && abs >= billion && !abbrForce || abbrForce === 'b') {\n                    // billion\n                    abbr += locale.abbreviations.billion;\n                    value = value / billion;\n                } else if (abs < billion && abs >= million && !abbrForce || abbrForce === 'm') {\n                    // million\n                    abbr += locale.abbreviations.million;\n                    value = value / million;\n                } else if (abs < million && abs >= thousand && !abbrForce || abbrForce === 'k') {\n                    // thousand\n                    abbr += locale.abbreviations.thousand;\n                    value = value / thousand;\n                }\n            }\n\n            // check for optional decimals\n            if (numeral._.includes(format, '[.]')) {\n                optDec = true;\n                format = format.replace('[.]', '.');\n            }\n\n            // break number and format\n            int = value.toString().split('.')[0];\n            precision = format.split('.')[1];\n            thousands = format.indexOf(',');\n            leadingCount = (format.split('.')[0].split(',')[0].match(/0/g) || []).length;\n\n            if (precision) {\n                if (numeral._.includes(precision, '[')) {\n                    precision = precision.replace(']', '');\n                    precision = precision.split('[');\n                    decimal = numeral._.toFixed(value, (precision[0].length + precision[1].length), roundingFunction, precision[1].length);\n                } else {\n                    decimal = numeral._.toFixed(value, precision.length, roundingFunction);\n                }\n\n                int = decimal.split('.')[0];\n\n                if (numeral._.includes(decimal, '.')) {\n                    decimal = locale.delimiters.decimal + decimal.split('.')[1];\n                } else {\n                    decimal = '';\n                }\n\n                if (optDec && Number(decimal.slice(1)) === 0) {\n                    decimal = '';\n                }\n            } else {\n                int = numeral._.toFixed(value, 0, roundingFunction);\n            }\n\n            // check abbreviation again after rounding\n            if (abbr && !abbrForce && Number(int) >= 1000 && abbr !== locale.abbreviations.trillion) {\n                int = String(Number(int) / 1000);\n\n                switch (abbr) {\n                    case locale.abbreviations.thousand:\n                        abbr = locale.abbreviations.million;\n                        break;\n                    case locale.abbreviations.million:\n                        abbr = locale.abbreviations.billion;\n                        break;\n                    case locale.abbreviations.billion:\n                        abbr = locale.abbreviations.trillion;\n                        break;\n                }\n            }\n\n\n            // format number\n            if (numeral._.includes(int, '-')) {\n                int = int.slice(1);\n                neg = true;\n            }\n\n            if (int.length < leadingCount) {\n                for (var i = leadingCount - int.length; i > 0; i--) {\n                    int = '0' + int;\n                }\n            }\n\n            if (thousands > -1) {\n                int = int.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1' + locale.delimiters.thousands);\n            }\n\n            if (format.indexOf('.') === 0) {\n                int = '';\n            }\n\n            output = int + decimal + (abbr ? abbr : '');\n\n            if (negP) {\n                output = (negP && neg ? '(' : '') + output + (negP && neg ? ')' : '');\n            } else {\n                if (signed >= 0) {\n                    output = signed === 0 ? (neg ? '-' : '+') + output : output + (neg ? '-' : '+');\n                } else if (neg) {\n                    output = '-' + output;\n                }\n            }\n\n            return output;\n        },\n        // unformats numbers separators, decimals places, signs, abbreviations\n        stringToNumber: function(string) {\n            var locale = locales[options.currentLocale],\n                stringOriginal = string,\n                abbreviations = {\n                    thousand: 3,\n                    million: 6,\n                    billion: 9,\n                    trillion: 12\n                },\n                abbreviation,\n                value,\n                i,\n                regexp;\n\n            if (options.zeroFormat && string === options.zeroFormat) {\n                value = 0;\n            } else if (options.nullFormat && string === options.nullFormat || !string.replace(/[^0-9]+/g, '').length) {\n                value = null;\n            } else {\n                value = 1;\n\n                if (locale.delimiters.decimal !== '.') {\n                    string = string.replace(/\\./g, '').replace(locale.delimiters.decimal, '.');\n                }\n\n                for (abbreviation in abbreviations) {\n                    regexp = new RegExp('[^a-zA-Z]' + locale.abbreviations[abbreviation] + '(?:\\\\)|(\\\\' + locale.currency.symbol + ')?(?:\\\\))?)?$');\n\n                    if (stringOriginal.match(regexp)) {\n                        value *= Math.pow(10, abbreviations[abbreviation]);\n                        break;\n                    }\n                }\n\n                // check for negative number\n                value *= (string.split('-').length + Math.min(string.split('(').length - 1, string.split(')').length - 1)) % 2 ? 1 : -1;\n\n                // remove non numbers\n                string = string.replace(/[^0-9\\.]+/g, '');\n\n                value *= Number(string);\n            }\n\n            return value;\n        },\n        isNaN: function(value) {\n            return typeof value === 'number' && isNaN(value);\n        },\n        includes: function(string, search) {\n            return string.indexOf(search) !== -1;\n        },\n        insert: function(string, subString, start) {\n            return string.slice(0, start) + subString + string.slice(start);\n        },\n        reduce: function(array, callback /*, initialValue*/) {\n            if (this === null) {\n                throw new TypeError('Array.prototype.reduce called on null or undefined');\n            }\n\n            if (typeof callback !== 'function') {\n                throw new TypeError(callback + ' is not a function');\n            }\n\n            var t = Object(array),\n                len = t.length >>> 0,\n                k = 0,\n                value;\n\n            if (arguments.length === 3) {\n                value = arguments[2];\n            } else {\n                while (k < len && !(k in t)) {\n                    k++;\n                }\n\n                if (k >= len) {\n                    throw new TypeError('Reduce of empty array with no initial value');\n                }\n\n                value = t[k++];\n            }\n            for (; k < len; k++) {\n                if (k in t) {\n                    value = callback(value, t[k], k, t);\n                }\n            }\n            return value;\n        },\n        /**\n         * Computes the multiplier necessary to make x >= 1,\n         * effectively eliminating miscalculations caused by\n         * finite precision.\n         */\n        multiplier: function (x) {\n            var parts = x.toString().split('.');\n\n            return parts.length < 2 ? 1 : Math.pow(10, parts[1].length);\n        },\n        /**\n         * Given a variable number of arguments, returns the maximum\n         * multiplier that must be used to normalize an operation involving\n         * all of them.\n         */\n        correctionFactor: function () {\n            var args = Array.prototype.slice.call(arguments);\n\n            return args.reduce(function(accum, next) {\n                var mn = _.multiplier(next);\n                return accum > mn ? accum : mn;\n            }, 1);\n        },\n        /**\n         * Implementation of toFixed() that treats floats more like decimals\n         *\n         * Fixes binary rounding issues (eg. (0.615).toFixed(2) === '0.61') that present\n         * problems for accounting- and finance-related software.\n         */\n        toFixed: function(value, maxDecimals, roundingFunction, optionals) {\n            var splitValue = value.toString().split('.'),\n                minDecimals = maxDecimals - (optionals || 0),\n                boundedPrecision,\n                optionalsRegExp,\n                power,\n                output;\n\n            // Use the smallest precision value possible to avoid errors from floating point representation\n            if (splitValue.length === 2) {\n              boundedPrecision = Math.min(Math.max(splitValue[1].length, minDecimals), maxDecimals);\n            } else {\n              boundedPrecision = minDecimals;\n            }\n\n            power = Math.pow(10, boundedPrecision);\n\n            // Multiply up by precision, round accurately, then divide and use native toFixed():\n            output = (roundingFunction(value + 'e+' + boundedPrecision) / power).toFixed(boundedPrecision);\n\n            if (optionals > maxDecimals - boundedPrecision) {\n                optionalsRegExp = new RegExp('\\\\.?0{1,' + (optionals - (maxDecimals - boundedPrecision)) + '}$');\n                output = output.replace(optionalsRegExp, '');\n            }\n\n            return output;\n        }\n    };\n\n    // avaliable options\n    numeral.options = options;\n\n    // avaliable formats\n    numeral.formats = formats;\n\n    // avaliable formats\n    numeral.locales = locales;\n\n    // This function sets the current locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    numeral.locale = function(key) {\n        if (key) {\n            options.currentLocale = key.toLowerCase();\n        }\n\n        return options.currentLocale;\n    };\n\n    // This function provides access to the loaded locale data.  If\n    // no arguments are passed in, it will simply return the current\n    // global locale object.\n    numeral.localeData = function(key) {\n        if (!key) {\n            return locales[options.currentLocale];\n        }\n\n        key = key.toLowerCase();\n\n        if (!locales[key]) {\n            throw new Error('Unknown locale : ' + key);\n        }\n\n        return locales[key];\n    };\n\n    numeral.reset = function() {\n        for (var property in defaults) {\n            options[property] = defaults[property];\n        }\n    };\n\n    numeral.zeroFormat = function(format) {\n        options.zeroFormat = typeof(format) === 'string' ? format : null;\n    };\n\n    numeral.nullFormat = function (format) {\n        options.nullFormat = typeof(format) === 'string' ? format : null;\n    };\n\n    numeral.defaultFormat = function(format) {\n        options.defaultFormat = typeof(format) === 'string' ? format : '0.0';\n    };\n\n    numeral.register = function(type, name, format) {\n        name = name.toLowerCase();\n\n        if (this[type + 's'][name]) {\n            throw new TypeError(name + ' ' + type + ' already registered.');\n        }\n\n        this[type + 's'][name] = format;\n\n        return format;\n    };\n\n\n    numeral.validate = function(val, culture) {\n        var _decimalSep,\n            _thousandSep,\n            _currSymbol,\n            _valArray,\n            _abbrObj,\n            _thousandRegEx,\n            localeData,\n            temp;\n\n        //coerce val to string\n        if (typeof val !== 'string') {\n            val += '';\n\n            if (console.warn) {\n                console.warn('Numeral.js: Value is not string. It has been co-erced to: ', val);\n            }\n        }\n\n        //trim whitespaces from either sides\n        val = val.trim();\n\n        //if val is just digits return true\n        if (!!val.match(/^\\d+$/)) {\n            return true;\n        }\n\n        //if val is empty return false\n        if (val === '') {\n            return false;\n        }\n\n        //get the decimal and thousands separator from numeral.localeData\n        try {\n            //check if the culture is understood by numeral. if not, default it to current locale\n            localeData = numeral.localeData(culture);\n        } catch (e) {\n            localeData = numeral.localeData(numeral.locale());\n        }\n\n        //setup the delimiters and currency symbol based on culture/locale\n        _currSymbol = localeData.currency.symbol;\n        _abbrObj = localeData.abbreviations;\n        _decimalSep = localeData.delimiters.decimal;\n        if (localeData.delimiters.thousands === '.') {\n            _thousandSep = '\\\\.';\n        } else {\n            _thousandSep = localeData.delimiters.thousands;\n        }\n\n        // validating currency symbol\n        temp = val.match(/^[^\\d]+/);\n        if (temp !== null) {\n            val = val.substr(1);\n            if (temp[0] !== _currSymbol) {\n                return false;\n            }\n        }\n\n        //validating abbreviation symbol\n        temp = val.match(/[^\\d]+$/);\n        if (temp !== null) {\n            val = val.slice(0, -1);\n            if (temp[0] !== _abbrObj.thousand && temp[0] !== _abbrObj.million && temp[0] !== _abbrObj.billion && temp[0] !== _abbrObj.trillion) {\n                return false;\n            }\n        }\n\n        _thousandRegEx = new RegExp(_thousandSep + '{2}');\n\n        if (!val.match(/[^\\d.,]/g)) {\n            _valArray = val.split(_decimalSep);\n            if (_valArray.length > 2) {\n                return false;\n            } else {\n                if (_valArray.length < 2) {\n                    return ( !! _valArray[0].match(/^\\d+.*\\d$/) && !_valArray[0].match(_thousandRegEx));\n                } else {\n                    if (_valArray[0].length === 1) {\n                        return ( !! _valArray[0].match(/^\\d+$/) && !_valArray[0].match(_thousandRegEx) && !! _valArray[1].match(/^\\d+$/));\n                    } else {\n                        return ( !! _valArray[0].match(/^\\d+.*\\d$/) && !_valArray[0].match(_thousandRegEx) && !! _valArray[1].match(/^\\d+$/));\n                    }\n                }\n            }\n        }\n\n        return false;\n    };\n\n\n    /************************************\n        Numeral Prototype\n    ************************************/\n\n    numeral.fn = Numeral.prototype = {\n        clone: function() {\n            return numeral(this);\n        },\n        format: function(inputString, roundingFunction) {\n            var value = this._value,\n                format = inputString || options.defaultFormat,\n                kind,\n                output,\n                formatFunction;\n\n            // make sure we have a roundingFunction\n            roundingFunction = roundingFunction || Math.round;\n\n            // format based on value\n            if (value === 0 && options.zeroFormat !== null) {\n                output = options.zeroFormat;\n            } else if (value === null && options.nullFormat !== null) {\n                output = options.nullFormat;\n            } else {\n                for (kind in formats) {\n                    if (format.match(formats[kind].regexps.format)) {\n                        formatFunction = formats[kind].format;\n\n                        break;\n                    }\n                }\n\n                formatFunction = formatFunction || numeral._.numberToFormat;\n\n                output = formatFunction(value, format, roundingFunction);\n            }\n\n            return output;\n        },\n        value: function() {\n            return this._value;\n        },\n        input: function() {\n            return this._input;\n        },\n        set: function(value) {\n            this._value = Number(value);\n\n            return this;\n        },\n        add: function(value) {\n            var corrFactor = _.correctionFactor.call(null, this._value, value);\n\n            function cback(accum, curr, currI, O) {\n                return accum + Math.round(corrFactor * curr);\n            }\n\n            this._value = _.reduce([this._value, value], cback, 0) / corrFactor;\n\n            return this;\n        },\n        subtract: function(value) {\n            var corrFactor = _.correctionFactor.call(null, this._value, value);\n\n            function cback(accum, curr, currI, O) {\n                return accum - Math.round(corrFactor * curr);\n            }\n\n            this._value = _.reduce([value], cback, Math.round(this._value * corrFactor)) / corrFactor;\n\n            return this;\n        },\n        multiply: function(value) {\n            function cback(accum, curr, currI, O) {\n                var corrFactor = _.correctionFactor(accum, curr);\n                return Math.round(accum * corrFactor) * Math.round(curr * corrFactor) / Math.round(corrFactor * corrFactor);\n            }\n\n            this._value = _.reduce([this._value, value], cback, 1);\n\n            return this;\n        },\n        divide: function(value) {\n            function cback(accum, curr, currI, O) {\n                var corrFactor = _.correctionFactor(accum, curr);\n                return Math.round(accum * corrFactor) / Math.round(curr * corrFactor);\n            }\n\n            this._value = _.reduce([this._value, value], cback);\n\n            return this;\n        },\n        difference: function(value) {\n            return Math.abs(numeral(this._value).subtract(value).value());\n        }\n    };\n\n    /************************************\n        Default Locale && Format\n    ************************************/\n\n    numeral.register('locale', 'en', {\n        delimiters: {\n            thousands: ',',\n            decimal: '.'\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function(number) {\n            var b = number % 10;\n            return (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n        },\n        currency: {\n            symbol: '$'\n        }\n    });\n\n    \n\n(function() {\n        numeral.register('format', 'bps', {\n            regexps: {\n                format: /(BPS)/,\n                unformat: /(BPS)/\n            },\n            format: function(value, format, roundingFunction) {\n                var space = numeral._.includes(format, ' BPS') ? ' ' : '',\n                    output;\n\n                value = value * 10000;\n\n                // check for space before BPS\n                format = format.replace(/\\s?BPS/, '');\n\n                output = numeral._.numberToFormat(value, format, roundingFunction);\n\n                if (numeral._.includes(output, ')')) {\n                    output = output.split('');\n\n                    output.splice(-1, 0, space + 'BPS');\n\n                    output = output.join('');\n                } else {\n                    output = output + space + 'BPS';\n                }\n\n                return output;\n            },\n            unformat: function(string) {\n                return +(numeral._.stringToNumber(string) * 0.0001).toFixed(15);\n            }\n        });\n})();\n\n\n(function() {\n        var decimal = {\n            base: 1000,\n            suffixes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n        },\n        binary = {\n            base: 1024,\n            suffixes: ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']\n        };\n\n    var allSuffixes =  decimal.suffixes.concat(binary.suffixes.filter(function (item) {\n            return decimal.suffixes.indexOf(item) < 0;\n        }));\n        var unformatRegex = allSuffixes.join('|');\n        // Allow support for BPS (http://www.investopedia.com/terms/b/basispoint.asp)\n        unformatRegex = '(' + unformatRegex.replace('B', 'B(?!PS)') + ')';\n\n    numeral.register('format', 'bytes', {\n        regexps: {\n            format: /([0\\s]i?b)/,\n            unformat: new RegExp(unformatRegex)\n        },\n        format: function(value, format, roundingFunction) {\n            var output,\n                bytes = numeral._.includes(format, 'ib') ? binary : decimal,\n                suffix = numeral._.includes(format, ' b') || numeral._.includes(format, ' ib') ? ' ' : '',\n                power,\n                min,\n                max;\n\n            // check for space before\n            format = format.replace(/\\s?i?b/, '');\n\n            for (power = 0; power <= bytes.suffixes.length; power++) {\n                min = Math.pow(bytes.base, power);\n                max = Math.pow(bytes.base, power + 1);\n\n                if (value === null || value === 0 || value >= min && value < max) {\n                    suffix += bytes.suffixes[power];\n\n                    if (min > 0) {\n                        value = value / min;\n                    }\n\n                    break;\n                }\n            }\n\n            output = numeral._.numberToFormat(value, format, roundingFunction);\n\n            return output + suffix;\n        },\n        unformat: function(string) {\n            var value = numeral._.stringToNumber(string),\n                power,\n                bytesMultiplier;\n\n            if (value) {\n                for (power = decimal.suffixes.length - 1; power >= 0; power--) {\n                    if (numeral._.includes(string, decimal.suffixes[power])) {\n                        bytesMultiplier = Math.pow(decimal.base, power);\n\n                        break;\n                    }\n\n                    if (numeral._.includes(string, binary.suffixes[power])) {\n                        bytesMultiplier = Math.pow(binary.base, power);\n\n                        break;\n                    }\n                }\n\n                value *= (bytesMultiplier || 1);\n            }\n\n            return value;\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('format', 'currency', {\n        regexps: {\n            format: /(\\$)/\n        },\n        format: function(value, format, roundingFunction) {\n            var locale = numeral.locales[numeral.options.currentLocale],\n                symbols = {\n                    before: format.match(/^([\\+|\\-|\\(|\\s|\\$]*)/)[0],\n                    after: format.match(/([\\+|\\-|\\)|\\s|\\$]*)$/)[0]\n                },\n                output,\n                symbol,\n                i;\n\n            // strip format of spaces and $\n            format = format.replace(/\\s?\\$\\s?/, '');\n\n            // format the number\n            output = numeral._.numberToFormat(value, format, roundingFunction);\n\n            // update the before and after based on value\n            if (value >= 0) {\n                symbols.before = symbols.before.replace(/[\\-\\(]/, '');\n                symbols.after = symbols.after.replace(/[\\-\\)]/, '');\n            } else if (value < 0 && (!numeral._.includes(symbols.before, '-') && !numeral._.includes(symbols.before, '('))) {\n                symbols.before = '-' + symbols.before;\n            }\n\n            // loop through each before symbol\n            for (i = 0; i < symbols.before.length; i++) {\n                symbol = symbols.before[i];\n\n                switch (symbol) {\n                    case '$':\n                        output = numeral._.insert(output, locale.currency.symbol, i);\n                        break;\n                    case ' ':\n                        output = numeral._.insert(output, ' ', i + locale.currency.symbol.length - 1);\n                        break;\n                }\n            }\n\n            // loop through each after symbol\n            for (i = symbols.after.length - 1; i >= 0; i--) {\n                symbol = symbols.after[i];\n\n                switch (symbol) {\n                    case '$':\n                        output = i === symbols.after.length - 1 ? output + locale.currency.symbol : numeral._.insert(output, locale.currency.symbol, -(symbols.after.length - (1 + i)));\n                        break;\n                    case ' ':\n                        output = i === symbols.after.length - 1 ? output + ' ' : numeral._.insert(output, ' ', -(symbols.after.length - (1 + i) + locale.currency.symbol.length - 1));\n                        break;\n                }\n            }\n\n\n            return output;\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('format', 'exponential', {\n        regexps: {\n            format: /(e\\+|e-)/,\n            unformat: /(e\\+|e-)/\n        },\n        format: function(value, format, roundingFunction) {\n            var output,\n                exponential = typeof value === 'number' && !numeral._.isNaN(value) ? value.toExponential() : '0e+0',\n                parts = exponential.split('e');\n\n            format = format.replace(/e[\\+|\\-]{1}0/, '');\n\n            output = numeral._.numberToFormat(Number(parts[0]), format, roundingFunction);\n\n            return output + 'e' + parts[1];\n        },\n        unformat: function(string) {\n            var parts = numeral._.includes(string, 'e+') ? string.split('e+') : string.split('e-'),\n                value = Number(parts[0]),\n                power = Number(parts[1]);\n\n            power = numeral._.includes(string, 'e-') ? power *= -1 : power;\n\n            function cback(accum, curr, currI, O) {\n                var corrFactor = numeral._.correctionFactor(accum, curr),\n                    num = (accum * corrFactor) * (curr * corrFactor) / (corrFactor * corrFactor);\n                return num;\n            }\n\n            return numeral._.reduce([value, Math.pow(10, power)], cback, 1);\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('format', 'ordinal', {\n        regexps: {\n            format: /(o)/\n        },\n        format: function(value, format, roundingFunction) {\n            var locale = numeral.locales[numeral.options.currentLocale],\n                output,\n                ordinal = numeral._.includes(format, ' o') ? ' ' : '';\n\n            // check for space before\n            format = format.replace(/\\s?o/, '');\n\n            ordinal += locale.ordinal(value);\n\n            output = numeral._.numberToFormat(value, format, roundingFunction);\n\n            return output + ordinal;\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('format', 'percentage', {\n        regexps: {\n            format: /(%)/,\n            unformat: /(%)/\n        },\n        format: function(value, format, roundingFunction) {\n            var space = numeral._.includes(format, ' %') ? ' ' : '',\n                output;\n\n            if (numeral.options.scalePercentBy100) {\n                value = value * 100;\n            }\n\n            // check for space before %\n            format = format.replace(/\\s?\\%/, '');\n\n            output = numeral._.numberToFormat(value, format, roundingFunction);\n\n            if (numeral._.includes(output, ')')) {\n                output = output.split('');\n\n                output.splice(-1, 0, space + '%');\n\n                output = output.join('');\n            } else {\n                output = output + space + '%';\n            }\n\n            return output;\n        },\n        unformat: function(string) {\n            var number = numeral._.stringToNumber(string);\n            if (numeral.options.scalePercentBy100) {\n                return number * 0.01;\n            }\n            return number;\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('format', 'time', {\n        regexps: {\n            format: /(:)/,\n            unformat: /(:)/\n        },\n        format: function(value, format, roundingFunction) {\n            var hours = Math.floor(value / 60 / 60),\n                minutes = Math.floor((value - (hours * 60 * 60)) / 60),\n                seconds = Math.round(value - (hours * 60 * 60) - (minutes * 60));\n\n            return hours + ':' + (minutes < 10 ? '0' + minutes : minutes) + ':' + (seconds < 10 ? '0' + seconds : seconds);\n        },\n        unformat: function(string) {\n            var timeArray = string.split(':'),\n                seconds = 0;\n\n            // turn hours and minutes into seconds and add them all up\n            if (timeArray.length === 3) {\n                // hours\n                seconds = seconds + (Number(timeArray[0]) * 60 * 60);\n                // minutes\n                seconds = seconds + (Number(timeArray[1]) * 60);\n                // seconds\n                seconds = seconds + Number(timeArray[2]);\n            } else if (timeArray.length === 2) {\n                // minutes\n                seconds = seconds + (Number(timeArray[0]) * 60);\n                // seconds\n                seconds = seconds + Number(timeArray[1]);\n            }\n            return Number(seconds);\n        }\n    });\n})();\n\nreturn numeral;\n}));\n","/**\n * Call a lifecycle method on a viewModel if it exists.\n * @function\n * @param instance The viewModel instance.\n * @param name The lifecycle method name.\n * @param model The model to pass to the lifecycle method.\n * @returns Promise The result of the lifecycle method.\n */\nexport function invokeLifecycle(instance, name, model) {\n    if (typeof instance[name] === 'function') {\n        return new Promise(function (resolve) {\n            resolve(instance[name](model));\n        }).then(function (result) {\n            if (result !== null && result !== undefined) {\n                return result;\n            }\n            return true;\n        });\n    }\n    return Promise.resolve(true);\n}\n","export enum WhoCanSeeReport {\n    OnlyOrganization,\n    OrganizationAndCandidates\n  }\n  ","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { CompanyDiscStyle } from \"models/test-management/disc-styles/company-disc-style\";\nimport { CompanyDiscProfile } from \"models/test-management/disc-profiles/company-disc-profile\";\n\n@autoinject()\nexport class CompanyDiscProfileService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"CompanyDiscProfileService\");\n  }\n\n  public async get(): Promise<CompanyDiscProfile> {\n    return await this.client.get(\"companydiscprofile\")\n      .then((response: any) => {\n        return <CompanyDiscProfile>response;\n      });\n  }\n\n  public async getDiscByLanguage(languageId: number): Promise<CompanyDiscProfile> {\n    return await this.client.get(`companydiscprofile/language/${languageId}`)\n      .then((response: any) => {\n        return <CompanyDiscProfile>response;\n      });\n  }\n\n  public async update(languageId: number, model: CompanyDiscProfile): Promise<any> {\n    return await this.client.update(`companydiscprofile/language/${languageId}`, null, model)\n      .then(() => null);\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { TeamPerson } from \"models/team/teamPerson\";\n\n@autoinject()\nexport class TeamPersonService {\n\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n  }\n\n  public async peopleList(parameters: UxDatatableParameters, teamId: number): Promise<UxDatatableResponse> {\n    return await this.client.post(`TeamPerson/people-list/${teamId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async list(parameters: UxDatatableParameters, teamId: number): Promise<UxDatatableResponse> {\n    return await this.client.post(`TeamPerson/list/${teamId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getById(id: number, teamId: number): Promise<TeamPerson> {\n    return await this.client.getById(`TeamPerson/${teamId}`, id)\n      .then((response: TeamPerson) => {\n        return response;\n      });\n  }\n\n  public async create(model: TeamPerson, teamId: number): Promise<TeamPerson> {\n    return await this.client.create(`TeamPerson/${teamId}`, model)\n      .then((response: any) => {\n        return <TeamPerson>response;\n      });\n  }\n\n  public async update(model: TeamPerson): Promise<void> {\n    return await this.client.updateById(`TeamPerson`, model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(`TeamPerson`, id)\n      .then(() => null);\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { Agreement } from \"models/agreements/agreement\";\n\n@autoinject()\nexport class AgreementMasterService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n    this.logger = LogManager.getLogger(\"AgreementMasterService\");\n  }\n\n  public async listToApprove(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"agreementmaster/list-to-approve\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n  \n  public async changeStatusToApproved(model: Agreement): Promise<void> {\n    return await this.client.updateById(\"agreementmaster/change-status-to-approved\", model.id, null, model)\n      .then(() => null);\n  }\n}\n","import * as FileSaver from 'file-saver';\nimport { autoinject, LogManager } from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { HttpClient } from 'aurelia-fetch-client';\nimport config from 'config.js';\n\n@autoinject\nexport class PdfService {\n  private logger: Logger;\n\n  constructor() {\n    this.logger = LogManager.getLogger('PdfService');\n  }\n\n  public async print(html: string, fullName?: string): Promise<any> {\n    this.logger.debug(\"print\");\n\n    let pdfPrinterUrl = config.URLS_PDF_PRINTER;\n\n    let client: HttpClient = new HttpClient();\n\n    client.configure(x => {\n      x.withBaseUrl(`${pdfPrinterUrl}/api/`);\n    });\n    return await client.fetch(`pdf`, { method: 'POST', body: html })\n      .then((response: Response) =>  response.blob())\n      .then((blob: Blob) => FileSaver.saveAs(blob, fullName || 'download.pdf'))\n      .then(() => true)\n      .catch(error => {\n        this.logger.debug(error);\n      });\n\n  }\n\n  public printById(id: number, filename?: string): Promise<any> {\n    this.logger.debug(\"printById\");\n\n    let reportsUrl = config.URLS_REPORTS;\n\n    let reportClient: HttpClient = new HttpClient();\n\n    reportClient.configure(x => {\n      x.withBaseUrl(`${reportsUrl}`);\n    });\n\n    const url = \"/test-reports/\" + id.toString();\n\n    let pdfPrinterClient: HttpClient = new HttpClient();\n\n    pdfPrinterClient.configure(x => {\n      x.withBaseUrl(`${reportsUrl}/api/`);\n    });\n\n    return reportClient.fetch(url, { method: 'GET' })\n      .then((response: Response) => {\n        if (response.status === 200) {\n          return response.text();\n        } else {\n          this.logger.debug(\"response\", response);\n        }\n\n      })\n      .then((body: string) => {\n        this.logger.debug(\"body\", body);\n        return pdfPrinterClient.fetch(`pdf`, { method: 'POST', body: body });\n      })\n      .then((response: Response) => {\n        this.logger.debug(\"response\", response);\n        return response.blob().catch(() => null);\n      })\n      .then((blob: Blob) => {\n        var file = new File([blob], filename || 'download.pdf', { type: 'application/pdf' });\n        FileSaver.saveAs(file);\n      })\n      .catch(error => {\n        this.logger.debug(error);\n      });\n\n  }\n}\n","// export class QuestionUse{\n//     items = [\n//         {\"id\":1,\"name\":\"main.admin.pages.questionaries.questions.question_use.example\", \"code\":\"example\"},\n//         {\"id\":2,\"name\":\"main.admin.pages.questionaries.questions.question_use.evaluation\", \"code\":\"evaluation\"},\n//         {\"id\":3,\"name\":\"main.admin.pages.questionaries.questions.question_use.instruction\", \"code\":\"instruction\"},\n//         {\"id\":4,\"name\":\"main.admin.pages.questionaries.questions.question_use.warning\", \"code\": \"warning\"},\n//         {\"id\":5,\"name\":\"main.admin.pages.questionaries.questions.question_use.farewell\", \"code\": \"farewell\"}\n//     ];\n\n//     getNameById(id: number): string{\n//         return this.items.find(x => x.id == id)['code'];\n//     }\n\n//     getList(questionTypeId: number): Array<any>{\n//         if(questionTypeId==1 || questionTypeId==2 ||\n//             questionTypeId==3 || questionTypeId==4 ||\n//             questionTypeId==5 ){\n//                 return this.items.filter(x => x.code == \"example\" || x.code == \"evaluation\");\n//             }\n\n//         if(questionTypeId==6){\n//                 return this.items.filter(x => x.code == \"instruction\" || x.code == \"warning\" || x.code == \"farewell\");\n//         }\n\n//         if(questionTypeId==7){\n//             return this.items.filter(x => x.code == \"evaluation\");\n//         }\n\n//     }\n// }\n\nexport enum QuestionUse {\n  Instruction,\n  Example,\n  Warning,\n  Evaluation,\n  Farewell\n}\n","import { autoinject } from \"aurelia-framework\";\nimport { OpenIdProfile } from '../../models/security/open-id-profile';\nimport { WootricComponentName } from \"models/wootric/WootricComponentName\";\nimport { ServiceRatingService } from \"main/admin/services/service-rating/service-rating-service\";\nimport { ServiceRating } from \"models/service-rating/service-rating\";\n\n@autoinject\nexport class Wootric {\n\n  private setupScript: HTMLScriptElement;\n  private beacon: HTMLScriptElement;\n  private profile: OpenIdProfile;\n  private timestamp: number;\n  private serviceRating: any;\n  private currentToken: string;\n\n  constructor(\n    private serviceRatingService: ServiceRatingService) {\n  }\n\n  public async attached(profile: OpenIdProfile, component: WootricComponentName) {\n\n    this.profile = profile;\n    this.setupScript = document.createElement('script');\n\n    this.serviceRating = await this.serviceRatingService.getServiceRatingSettings();\n    this.currentToken = await this.setToken(component, this.serviceRating);\n    this.timestamp = await this.toTimestamp(this.profile.basic_info.createdOn);\n\n    if (this.currentToken) {\n      this.setupScript.innerHTML = `\n      window.wootricSettings = {\n        email: '${this.profile.basic_info.userName}',\n        created_at: '${this.timestamp}',\n      account_token: '${this.currentToken}', // This is your unique account token.\n      language: 'ES',\n      properties:{\n        companyId: '${this.profile.basic_info.companyId}', \n        company: '${this.profile.basic_info.company}'\n      }\n    };\n    `;\n\n      document.body.appendChild(this.setupScript);\n\n      this.beacon = document.createElement('script');\n      this.beacon.src = this.serviceRating.sdk;\n\n      this.beacon.onload = () => {\n        if (window['wootric_modal_loaded']) {\n          window['wootric_modal_loaded'] = false;\n          window['WootricSurvey'].stop();\n        }\n        window['WootricSurvey'].run();\n      };\n      document.body.appendChild(this.beacon);\n    }\n  }\n\n\n  private async setToken(component: WootricComponentName, serviceRating: ServiceRating): Promise<string> {\n    let currentToken = '';\n\n    switch (component) {\n      case WootricComponentName.mainHome:\n        currentToken = serviceRating.statusSurvey1 ? serviceRating.tokenSurvey1 : '';\n        break;\n      case WootricComponentName.personList:\n        currentToken = serviceRating.statusSurvey2 ? serviceRating.tokenSurvey2 : '';\n        break;\n      case WootricComponentName.personActivationCreate:\n        currentToken = serviceRating.statusSurvey3 ? serviceRating.tokenSurvey3 : '';\n        break;\n    }\n\n    return currentToken;\n  }\n\n  private async toTimestamp(strDate: any): Promise<number> {\n    let datum = Date.parse(strDate);\n    return Math.round(datum / 1000);\n  }\n}\n\n","export enum TransactionType {\n  Assignment = 1,\n  Transfer = 2,\n  Query = 3,\n  Activation = 4,\n  Removal = 5,\n  ReQuery = 6,\n  Predictor = 7,\n  AvancedFilters = 8,\n  SelectionProcess = 9,\n  ChatBotAnalizer = 10,\n  ReservedInformation = 12,\n  BackgroundCheck = 13\n}\n","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { Sheet } from \"models/test-core/sheets/sheet\";\n\n\n@autoinject()\nexport class CoreSheetService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"CoreSheetService\");\n  }\n\n  public async getById(id: number): Promise<Sheet> {\n    return await this.client.getById(\"coresheet\", id)\n      .then((response: Sheet) => {\n        return response;\n      });\n  }\n\n\n  public async list(languageId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`coresheet/list/${languageId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  // public async update(model: Sheet): Promise<Sheet> {\n\n  //   let formData = new FormData();\n\n  //   let thumbnailImage = null;\n  //   if (model.thumbnailImage) {\n  //     thumbnailImage = model.thumbnailImage[0];\n  //   }\n\n  //   let image = null;\n  //   if (model.image) {\n  //     image = model.image[0];\n  //   }\n\n  //   formData.append('thumbnailImage', thumbnailImage);\n  //   formData.append('image', image);\n  //   // formData.append('fullDescription', model.fullDescription);\n\n  //   return await this.client.requestFormData(\"PUT\", `coresheet/${model.id}`, formData) //.updateById(\"coresheet\", model.id, null, model)\n  //     .then((response) => { return <Sheet>response; });\n  // }\n\n  public async changeState(id: number): Promise<void> {\n    return await this.client.post(`coresheet/change-state/${id}`)\n      .then(() => null);\n  }\n}\n\n","// export class EducationalLevel{\n//     items = [\n//         {\"id\":1,\"name\": \"main.admin.pages.scales.educational_level_enum.level_one\", \"code\": \"level.one\"},\n//         {\"id\":2,\"name\": \"main.admin.pages.scales.educational_level_enum.level_two\", \"code\": \"level.two\"},\n//         {\"id\":3,\"name\": \"main.admin.pages.scales.educational_level_enum.level_three\", \"code\": \"level.three\"},\n//         {\"id\":4,\"name\": \"main.admin.pages.scales.educational_level_enum.level_four\", \"code\": \"level.four\"},\n//         {\"id\":5,\"name\": \"main.admin.pages.scales.educational_level_enum.level_five\", \"code\": \"level.five\"},\n//         {\"id\":6,\"name\": \"main.admin.pages.scales.educational_level_enum.level_six\", \"code\": \"level.six\"}\n//     ];\n\n//     getNameById(id: number): string{\n//         return this.items.find(x => x.id == id)['name'];\n//     }\n\n//     getIdByCode(code: string): number{\n//         return this.items.find(x => x.code == code)['id'];\n//     }\n// }\n\nexport enum EducationalLevel {\n  LevelOne,\n  LevelTwo,\n  LevelThree,\n  LevelFour,\n  LevelFive,\n  LevelSix\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Comment } from \"models/test-person/comment\";\n\n@autoinject()\nexport class CommentService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"CommentService\");\n  }\n\n  public async list(parameters: UxDatatableParameters, personId: number): Promise<UxDatatableResponse> {\n    return await this.client.post(`comment/list/${personId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getAll(personId: number): Promise<Comment[]> {\n    return await this.client.get(`comment/${personId}`)\n      .then((response: any) => {\n        return <Comment[]>response;\n      });\n  }\n\n  public async getById(id: number): Promise<Comment> {\n    return await this.client.getById(`comment`, id)\n      .then((response: Comment) => {\n        return response;\n      });\n  }\n\n  public async create(model: Comment, personId: number): Promise<Comment> {\n    return await this.client.create(`comment/${personId}`, model)\n      .then((response: any) => {\n        return <Comment>response;\n      });\n  }\n\n  public async update(model: Comment): Promise<void> {\n    return await this.client.updateById(`comment`, model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(`comment`, id)\n      .then(() => null);\n  }\n\n}\n","import { UxDatatableParameters, UxDatatableResponse } from 'common/resources/elements/ux/datatable/ux-datatable';\nimport { Logger } from 'aurelia-logging';\nimport { autoinject, LogManager } from 'aurelia-framework';\nimport { EmailHistoryDetails } from 'models/emails-history/email-history-details';\nimport { AppHttpClient } from 'common/services/app-http-client';\n\n@autoinject()\nexport class EmailHistoryService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient,\n  ) {\n    this.logger = LogManager.getLogger(\"EmailHistoryService\");\n  }\n\n  public async list(toEmail: string, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`emailhistory/list/${toEmail}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getById(id: string): Promise<EmailHistoryDetails> {\n    return await this.client.getById(`emailhistory`, id)\n      .then((response: EmailHistoryDetails) => {\n        return response;\n      });\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { PersonObserver } from \"models/test-person/personObserver\";\nimport { BulkActivation } from \"models/test-person/bulkActivation\";\n\n@autoinject()\nexport class PersonObserverService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"PersonObserverService\");\n  }\n\n  public async list(observedId: number, activationId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`personobserver/list/${observedId}/${activationId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getAll(observedId: number): Promise<PersonObserver[]> {\n    return await this.client.get(`personobserver/get-all/${observedId}`)\n      .then((response: any) => {\n        return <PersonObserver[]>response;\n      });\n  }\n\n  public async getById(id: number): Promise<PersonObserver> {\n    return await this.client.getById(\"personobserver\", id)\n      .then((response: PersonObserver) => {\n        return response;\n      });\n  }\n\n  public async create(model: PersonObserver): Promise<PersonObserver> {\n    return await this.client.create(`personobserver/${model.observedId}`, model)\n      .then((response: any) => {\n        return <PersonObserver>response;\n      });\n  }\n\n  public async update(model: PersonObserver): Promise<any> {\n    return await this.client.updateById(\"personobserver\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<any> {\n    return await this.client.deleteById(`personobserver`, id)\n      .then(() => null);\n  }\n\n  public async getWeightAllEvaluatorsByActivation(activationId: number, observedId: number): Promise<number> {\n    return await this.client.get(`personobserver/get-weight-all-observers-by-activation/${activationId}/${observedId}`)\n      .then((response: any) => {\n        return <number>response;\n      });\n  }\n\n\n  public async createBulkActivation(model: BulkActivation): Promise<BulkActivation> {\n\n    let formData = new FormData();\n\n    let filedata = null;\n    if (model.filedata) {\n      filedata = model.filedata[0];\n    }\n\n    formData.append('filedata', filedata);\n    formData.append('filename', model.fileName);\n    formData.append('name', model.name);\n    return await this.client.requestFormData(\"PUT\", `personobserver/bulk-activation/${model.observedId}/${model.activationId}`, formData)\n      .then((response: any) => {\n        return <BulkActivation>response;\n      });\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { BulkResultsExport } from \"models/test-person/bulkResultsExport\";\n\n@autoinject()\nexport class BulkResultsExportService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient,\n  ) {\n\n    this.logger = LogManager.getLogger(\"BulkResultsExportService\");\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"bulkresultsexport/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n  public async create(model: BulkResultsExport): Promise<BulkResultsExport> {\n    return await this.client.create(\"bulkresultsexport\", model)\n      .then((response: BulkResultsExport) => {\n        return response;\n      });\n  }\n  public async getMediaByBulkActivationId(id: number): Promise<string> {\n    return await this.client.get(`bulkresultsexport/get-media-by-bulkResultExportId/${id}`)\n      .then((response: any) => {\n        return <string>response;\n      });\n  }\n\n\n  \n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { PositionCompetence } from \"models/test-position/positionCompetence\";\nimport { CompanyCompetence } from \"../../../../models/test-core/competences/company-competence\";\n\n@autoinject()\nexport class PositionCompetenceService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"PositionCompetenceService\");\n  }\n\n  public async list(parameters: UxDatatableParameters, positionId: number, questionaryId: number): Promise<UxDatatableResponse> {\n    return await this.client.post(`positioncompetence/list/${positionId}/${questionaryId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  // public async getAll(positionId: number): Promise<PositionCompetence[]> {\n  //   return await this.client.get(`positioncompetence/${positionId}`)\n  //     .then((response: any) => {\n  //       return <PositionCompetence[]>response;\n  //     });\n  // }\n\n  public async getById(id: number): Promise<PositionCompetence> {\n    return await this.client.getById(`positioncompetence`, id)\n      .then((response: PositionCompetence) => {\n        return response;\n      });\n  }\n\n  public async create(model: PositionCompetence, positionId: number): Promise<PositionCompetence> {\n    return await this.client.create(`positioncompetence/${positionId}`, model)\n      .then((response: any) => {\n        return <PositionCompetence>response;\n      });\n  }\n\n  public async update(model: PositionCompetence): Promise<void> {\n    return await this.client.updateById(`positioncompetence`, model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(`positioncompetence`, id)\n      .then(() => null);\n  }\n\n  public async getAllCompetences(): Promise<CompanyCompetence[]> {\n    return await this.client.get(\"companycompetence\")\n      .then((response: any) => {\n        return <CompanyCompetence[]>response;\n      });\n  }\n\n}\n","import { Activation } from 'models/test-person/activation';\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { TeamPerson } from \"models/team/teamPerson\";\n\n@autoinject()\nexport class TeamActivationService {\n\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n  }\n\n  public async list(parameters: UxDatatableParameters, teamId: number): Promise<UxDatatableResponse> {\n    return await this.client.post(`TeamActivation/list/${teamId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n  public async create(model: Activation, teamId: number): Promise<Activation> {\n    return await this.client.create(`teamactivation/${teamId}`, model)\n      .then((response: any) => {\n        return <Activation>response;\n      });\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { Language } from \"models/localizations/language\";\n\n@autoinject()\nexport class CoreLanguageService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"CoreLanguageService\");\n  }\n\n  public async getAll(): Promise<Language[]> {\n    return await this.client.get(\"corelanguage\")\n      .then((response: any) => {\n        return <Language[]>response;\n      });\n  }\n\n}\n","export enum ActivityStatus {\n  Pending,\n  Completed\n}\n","export enum ExportTransactionType {\n    Historical = 1,\n    Transfers = 2,\n    Balance = 3,\n    Consolidated = 4\n  }\n  ","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { BulkTalentsExport } from \"models/talents/bulkTalentsExport\";\n\n@autoinject()\nexport class BulkTalentsExportService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient,\n  ) {\n\n    this.logger = LogManager.getLogger(\"BulkResultsExportService\");\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"bulktalentsexport/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n  public async create(model: BulkTalentsExport): Promise<BulkTalentsExport> {\n    return await this.client.create(\"bulktalentsexport\", model)\n      .then((response: BulkTalentsExport) => {\n        return response;\n      });\n  }\n  public async getMediaByBulkActivationId(id: number): Promise<string> {\n    return await this.client.get(`bulktalentsexport/get-media-by-bulkTalentExportId/${id}`)\n      .then((response: any) => {\n        return <string>response;\n      });\n  }\n\n\n  \n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { QuestionaryConfiguration } from \"models/test-management/questionaries-configuration/questionary-configuration\";\n\n@autoinject()\nexport class QuestionaryConfigurationService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"QuestionaryConfigurationService\");\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"questionaryconfiguration/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async update(model: QuestionaryConfiguration): Promise<QuestionaryConfiguration> {\n    return await this.client.updateById(\"questionaryconfiguration\", model.id, null, model)\n      .then((response) => { return <QuestionaryConfiguration>response; });\n  }\n\n  public async getConfigurationByQuestionaryId(questionaryId: number): Promise<QuestionaryConfiguration> {\n    return await this.client.get(\"questionaryconfiguration/get-configuration-by-questionary-id\", questionaryId)\n      .then((response: any) => {\n        return <QuestionaryConfiguration>response;\n      });\n  }  \n}\n","import {LogManager, autoinject} from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { Question } from 'models/questions/question';\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n@autoinject()\nexport class CustomCompanyModularQuestionService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient\n  ) {\n    this.logger = LogManager.getLogger('CustomCompanyModularQuestionService');\n  }\n\n  public async list(questionaryId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`customcompanymodularquestion/list/${questionaryId}`, parameters)\n      .then(response => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getById(id: number): Promise<Question> {\n    return await this.client.getById(\"customcompanymodularquestion\", id)\n      .then(response => {\n        return <Question>response;\n      });\n  }\n\n  public async create(model: Question): Promise<Question> {\n    return await this.client.post('customcompanymodularquestion', model)\n      .then(response => {\n        return <Question>response;\n      });\n  }\n\n  public async update(model: Question): Promise<Question> {\n    return await this.client.updateById('customcompanymodularquestion', model.id, null, model)\n      .then(response => {\n        return <Question>response;\n      });\n  }\n\n  async delete(id: number): Promise<void> {\n    return await this.client.deleteById('customcompanymodularquestion', id)\n      .then(() => null);\n  }\n\n  public async changeState(id: number): Promise<void> {\n    return await this.client.post(`customcompanymodularquestion/change-state/${id}`)\n      .then(() => null);\n  }\n\n  public async bulkUpload(questionaryId: number, file: File): Promise<any> {\n    let formData = new FormData();\n    formData.append('filedata', file);\n    formData.append('fileName', file.name);\n    formData.append('questionaryId', questionaryId.toString());\n\n    return await this.client.requestFormData('POST', 'customcompanymodularquestion/bulk-upload', formData)\n      .then((response: any) => {\n        return response;\n      });\n  }\n}\n","import {\n  LogManager,\n  autoinject\n} from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { CompanyAppHttpClient } from 'common/services/company-app-http-client';\nimport { QuestionHistory } from 'models/questions/questionHistory';\n\n@autoinject()\nexport class QuestionHistoryService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient,\n  ) {\n\n    this.logger = LogManager.getLogger('QuestionHistoryService');\n  }\n\n  public async getByQuestionId(questionId: number): Promise<Array<QuestionHistory>> {\n    return await this.client.getById(\"questionhistory/get-by-question-id\", questionId)\n      .then(response => {\n        return <Array<QuestionHistory>>response;\n      });\n  }\n}\n","import { inject, newInstance, LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { MessageTemplate } from \"models/messages/message-template\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\n\n@autoinject\nexport class MessageTemplateService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"MessageTemplate\");\n  }\n\n  public async getById(id: number): Promise<MessageTemplate> {\n    return await this.client.getById(\"messagetemplate\", id)\n      .then((response: any) => {\n        return <MessageTemplate>response;\n      });\n  }\n\n  public async getMessageByTemplateName(templateName: string): Promise<MessageTemplate> {\n    return await this.client.get(`messagetemplate/template/${templateName}`)\n      .then((response: any) => {\n        return <MessageTemplate>response;\n      });\n  }\n\n  // public async getTemplatesByIdCompany(CompanyId: number): Promise<Array<MessageTemplate>> {\n  //   return await this.client.get(`messagetemplate/getTemplatesByIdCompany/${CompanyId}`)\n  //     .then(response => {\n  //       return <Array<MessageTemplate>>response;\n  //     })\n  //     .catch(error => {\n  //       this.logger.error(error.message);\n  //       throw error;\n  //     });\n  // }\n\n  public async getAll(): Promise<Array<MessageTemplate>> {\n    return await this.client.get(\"messagetemplate/get-all\")\n      .then(response => {\n        return <Array<MessageTemplate>>response;\n      })\n      .catch(error => {\n        this.logger.error(error.message);\n        throw error;\n      });\n  }\n\n\n  public async update(model: MessageTemplate): Promise<void> {\n    return await this.client.updateById(\"messagetemplate\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async create(model: MessageTemplate): Promise<MessageTemplate> {\n    return await this.client.create(\"messagetemplate\", model)\n      .then((response: any) => {\n        return <MessageTemplate>response;\n      });\n  }\n\n  /* public async update(model: CompanyDetail): Promise<CompanyDetail> {\n     return await this.client.updateById(\"companydetail\", model.id, null, model)\n     .then((response: any) => {\n       return <CompanyDetail>response;\n     });\n   }\n \n   public async delete(id: number): Promise<void> {\n     return await this.client.deleteById(\"companydetail\", id)\n       .then(() => null);\n   }\n \n   public async changeState(id: number): Promise<void> {    \n     return await this.client.post(`companydetail/change-state/${id}`)\n     //return await this.client.post(\"companydetail/change-state\",id)\n       .then(() => null);\n   }*/\n\n}\n","import { SecondPassword } from \"models/second-password/second-password\";\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { ResetSecondPassword } from \"models/second-password/reset-second-password\";\n\n@autoinject()\nexport class SecondPasswordService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"SecondPasswordService\");\n  }\n\n  public async create(model: ResetSecondPassword): Promise<boolean> {\n    return await this.client.post(\"secondpassword\", model)\n      .then((response: boolean) => {\n        return response;\n      });\n  }\n\n  public async validate(model: SecondPassword): Promise<boolean> {\n    return await this.client.post(\"secondpassword/validate\", model)\n      .then((response: boolean) => {\n        return response;\n      });\n  }\n}\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar consoleLogger = {\n  type: 'logger',\n\n  log: function log(args) {\n    this.output('log', args);\n  },\n  warn: function warn(args) {\n    this.output('warn', args);\n  },\n  error: function error(args) {\n    this.output('error', args);\n  },\n  output: function output(type, args) {\n    var _console;\n\n    /* eslint no-console: 0 */\n    if (console && console[type]) (_console = console)[type].apply(_console, _toConsumableArray(args));\n  }\n};\n\nvar Logger = function () {\n  function Logger(concreteLogger) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Logger);\n\n    this.init(concreteLogger, options);\n  }\n\n  Logger.prototype.init = function init(concreteLogger) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    this.prefix = options.prefix || 'i18next:';\n    this.logger = concreteLogger || consoleLogger;\n    this.options = options;\n    this.debug = options.debug;\n  };\n\n  Logger.prototype.setDebug = function setDebug(bool) {\n    this.debug = bool;\n  };\n\n  Logger.prototype.log = function log() {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return this.forward(args, 'log', '', true);\n  };\n\n  Logger.prototype.warn = function warn() {\n    for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return this.forward(args, 'warn', '', true);\n  };\n\n  Logger.prototype.error = function error() {\n    for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      args[_key3] = arguments[_key3];\n    }\n\n    return this.forward(args, 'error', '');\n  };\n\n  Logger.prototype.deprecate = function deprecate() {\n    for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n      args[_key4] = arguments[_key4];\n    }\n\n    return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n  };\n\n  Logger.prototype.forward = function forward(args, lvl, prefix, debugOnly) {\n    if (debugOnly && !this.debug) return null;\n    if (typeof args[0] === 'string') args[0] = '' + prefix + this.prefix + ' ' + args[0];\n    return this.logger[lvl](args);\n  };\n\n  Logger.prototype.create = function create(moduleName) {\n    return new Logger(this.logger, _extends({ prefix: this.prefix + ':' + moduleName + ':' }, this.options));\n  };\n\n  return Logger;\n}();\n\nexport default new Logger();","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EventEmitter = function () {\n  function EventEmitter() {\n    _classCallCheck(this, EventEmitter);\n\n    this.observers = {};\n  }\n\n  EventEmitter.prototype.on = function on(events, listener) {\n    var _this = this;\n\n    events.split(' ').forEach(function (event) {\n      _this.observers[event] = _this.observers[event] || [];\n      _this.observers[event].push(listener);\n    });\n  };\n\n  EventEmitter.prototype.off = function off(event, listener) {\n    var _this2 = this;\n\n    if (!this.observers[event]) {\n      return;\n    }\n\n    this.observers[event].forEach(function () {\n      if (!listener) {\n        delete _this2.observers[event];\n      } else {\n        var index = _this2.observers[event].indexOf(listener);\n        if (index > -1) {\n          _this2.observers[event].splice(index, 1);\n        }\n      }\n    });\n  };\n\n  EventEmitter.prototype.emit = function emit(event) {\n    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    if (this.observers[event]) {\n      var cloned = [].concat(this.observers[event]);\n      cloned.forEach(function (observer) {\n        observer.apply(undefined, args);\n      });\n    }\n\n    if (this.observers['*']) {\n      var _cloned = [].concat(this.observers['*']);\n      _cloned.forEach(function (observer) {\n        var _ref;\n\n        observer.apply(observer, (_ref = [event]).concat.apply(_ref, args));\n      });\n    }\n  };\n\n  return EventEmitter;\n}();\n\nexport default EventEmitter;","export function makeString(object) {\n  if (object == null) return '';\n  /* eslint prefer-template: 0 */\n  return '' + object;\n}\n\nexport function copy(a, s, t) {\n  a.forEach(function (m) {\n    if (s[m]) t[m] = s[m];\n  });\n}\n\nfunction getLastOfPath(object, path, Empty) {\n  function cleanKey(key) {\n    return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n  }\n\n  function canNotTraverseDeeper() {\n    return !object || typeof object === 'string';\n  }\n\n  var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n  while (stack.length > 1) {\n    if (canNotTraverseDeeper()) return {};\n\n    var key = cleanKey(stack.shift());\n    if (!object[key] && Empty) object[key] = new Empty();\n    object = object[key];\n  }\n\n  if (canNotTraverseDeeper()) return {};\n  return {\n    obj: object,\n    k: cleanKey(stack.shift())\n  };\n}\n\nexport function setPath(object, path, newValue) {\n  var _getLastOfPath = getLastOfPath(object, path, Object),\n      obj = _getLastOfPath.obj,\n      k = _getLastOfPath.k;\n\n  obj[k] = newValue;\n}\n\nexport function pushPath(object, path, newValue, concat) {\n  var _getLastOfPath2 = getLastOfPath(object, path, Object),\n      obj = _getLastOfPath2.obj,\n      k = _getLastOfPath2.k;\n\n  obj[k] = obj[k] || [];\n  if (concat) obj[k] = obj[k].concat(newValue);\n  if (!concat) obj[k].push(newValue);\n}\n\nexport function getPath(object, path) {\n  var _getLastOfPath3 = getLastOfPath(object, path),\n      obj = _getLastOfPath3.obj,\n      k = _getLastOfPath3.k;\n\n  if (!obj) return undefined;\n  return obj[k];\n}\n\nexport function deepExtend(target, source, overwrite) {\n  /* eslint no-restricted-syntax: 0 */\n  for (var prop in source) {\n    if (prop in target) {\n      // If we reached a leaf string in target or source then replace with source or skip depending on the 'overwrite' switch\n      if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n        if (overwrite) target[prop] = source[prop];\n      } else {\n        deepExtend(target[prop], source[prop], overwrite);\n      }\n    } else {\n      target[prop] = source[prop];\n    }\n  }\n  return target;\n}\n\nexport function regexEscape(str) {\n  /* eslint no-useless-escape: 0 */\n  return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\n\n/* eslint-disable */\nvar _entityMap = {\n  \"&\": \"&amp;\",\n  \"<\": \"&lt;\",\n  \">\": \"&gt;\",\n  '\"': '&quot;',\n  \"'\": '&#39;',\n  \"/\": '&#x2F;'\n};\n/* eslint-enable */\n\nexport function escape(data) {\n  if (typeof data === 'string') {\n    return data.replace(/[&<>\"'\\/]/g, function (s) {\n      return _entityMap[s];\n    });\n  }\n\n  return data;\n}","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); }\n\nimport EventEmitter from './EventEmitter';\nimport * as utils from './utils';\n\nvar ResourceStore = function (_EventEmitter) {\n  _inherits(ResourceStore, _EventEmitter);\n\n  function ResourceStore(data) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { ns: ['translation'], defaultNS: 'translation' };\n\n    _classCallCheck(this, ResourceStore);\n\n    var _this = _possibleConstructorReturn(this, _EventEmitter.call(this));\n\n    _this.data = data || {};\n    _this.options = options;\n    return _this;\n  }\n\n  ResourceStore.prototype.addNamespaces = function addNamespaces(ns) {\n    if (this.options.ns.indexOf(ns) < 0) {\n      this.options.ns.push(ns);\n    }\n  };\n\n  ResourceStore.prototype.removeNamespaces = function removeNamespaces(ns) {\n    var index = this.options.ns.indexOf(ns);\n    if (index > -1) {\n      this.options.ns.splice(index, 1);\n    }\n  };\n\n  ResourceStore.prototype.getResource = function getResource(lng, ns, key) {\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n    var keySeparator = options.keySeparator || this.options.keySeparator;\n    if (keySeparator === undefined) keySeparator = '.';\n\n    var path = [lng, ns];\n    if (key && typeof key !== 'string') path = path.concat(key);\n    if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n    if (lng.indexOf('.') > -1) {\n      path = lng.split('.');\n    }\n\n    return utils.getPath(this.data, path);\n  };\n\n  ResourceStore.prototype.addResource = function addResource(lng, ns, key, value) {\n    var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : { silent: false };\n\n    var keySeparator = this.options.keySeparator;\n    if (keySeparator === undefined) keySeparator = '.';\n\n    var path = [lng, ns];\n    if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n    if (lng.indexOf('.') > -1) {\n      path = lng.split('.');\n      value = ns;\n      ns = path[1];\n    }\n\n    this.addNamespaces(ns);\n\n    utils.setPath(this.data, path, value);\n\n    if (!options.silent) this.emit('added', lng, ns, key, value);\n  };\n\n  ResourceStore.prototype.addResources = function addResources(lng, ns, resources) {\n    /* eslint no-restricted-syntax: 0 */\n    for (var m in resources) {\n      if (typeof resources[m] === 'string') this.addResource(lng, ns, m, resources[m], { silent: true });\n    }\n    this.emit('added', lng, ns, resources);\n  };\n\n  ResourceStore.prototype.addResourceBundle = function addResourceBundle(lng, ns, resources, deep, overwrite) {\n    var path = [lng, ns];\n    if (lng.indexOf('.') > -1) {\n      path = lng.split('.');\n      deep = resources;\n      resources = ns;\n      ns = path[1];\n    }\n\n    this.addNamespaces(ns);\n\n    var pack = utils.getPath(this.data, path) || {};\n\n    if (deep) {\n      utils.deepExtend(pack, resources, overwrite);\n    } else {\n      pack = _extends({}, pack, resources);\n    }\n\n    utils.setPath(this.data, path, pack);\n\n    this.emit('added', lng, ns, resources);\n  };\n\n  ResourceStore.prototype.removeResourceBundle = function removeResourceBundle(lng, ns) {\n    if (this.hasResourceBundle(lng, ns)) {\n      delete this.data[lng][ns];\n    }\n    this.removeNamespaces(ns);\n\n    this.emit('removed', lng, ns);\n  };\n\n  ResourceStore.prototype.hasResourceBundle = function hasResourceBundle(lng, ns) {\n    return this.getResource(lng, ns) !== undefined;\n  };\n\n  ResourceStore.prototype.getResourceBundle = function getResourceBundle(lng, ns) {\n    if (!ns) ns = this.options.defaultNS;\n\n    // COMPATIBILITY: remove extend in v2.1.0\n    if (this.options.compatibilityAPI === 'v1') return _extends({}, this.getResource(lng, ns));\n\n    return this.getResource(lng, ns);\n  };\n\n  ResourceStore.prototype.toJSON = function toJSON() {\n    return this.data;\n  };\n\n  return ResourceStore;\n}(EventEmitter);\n\nexport default ResourceStore;","export default {\n\n  processors: {},\n\n  addPostProcessor: function addPostProcessor(module) {\n    this.processors[module.name] = module;\n  },\n  handle: function handle(processors, value, key, options, translator) {\n    var _this = this;\n\n    processors.forEach(function (processor) {\n      if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n    });\n\n    return value;\n  }\n};","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); }\n\nimport baseLogger from './logger';\nimport EventEmitter from './EventEmitter';\nimport postProcessor from './postProcessor';\nimport * as utils from './utils';\n\nvar Translator = function (_EventEmitter) {\n  _inherits(Translator, _EventEmitter);\n\n  function Translator(services) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Translator);\n\n    var _this = _possibleConstructorReturn(this, _EventEmitter.call(this));\n\n    utils.copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector'], services, _this);\n\n    _this.options = options;\n    _this.logger = baseLogger.create('translator');\n    return _this;\n  }\n\n  Translator.prototype.changeLanguage = function changeLanguage(lng) {\n    if (lng) this.language = lng;\n  };\n\n  Translator.prototype.exists = function exists(key) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { interpolation: {} };\n\n    return this.resolve(key, options) !== undefined;\n  };\n\n  Translator.prototype.extractFromKey = function extractFromKey(key, options) {\n    var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n    if (nsSeparator === undefined) nsSeparator = ':';\n    var keySeparator = options.keySeparator || this.options.keySeparator || '.';\n\n    var namespaces = options.ns || this.options.defaultNS;\n    if (nsSeparator && key.indexOf(nsSeparator) > -1) {\n      var parts = key.split(nsSeparator);\n      if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n      key = parts.join(keySeparator);\n    }\n    if (typeof namespaces === 'string') namespaces = [namespaces];\n\n    return {\n      key: key,\n      namespaces: namespaces\n    };\n  };\n\n  Translator.prototype.translate = function translate(keys) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) !== 'object') {\n      /* eslint prefer-rest-params: 0 */\n      options = this.options.overloadTranslationOptionHandler(arguments);\n    }\n\n    // non valid keys handling\n    if (keys === undefined || keys === null || keys === '') return '';\n    if (typeof keys === 'number') keys = String(keys);\n    if (typeof keys === 'string') keys = [keys];\n\n    // separators\n    var keySeparator = options.keySeparator || this.options.keySeparator || '.';\n\n    // get namespace(s)\n\n    var _extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n        key = _extractFromKey.key,\n        namespaces = _extractFromKey.namespaces;\n\n    var namespace = namespaces[namespaces.length - 1];\n\n    // return key on CIMode\n    var lng = options.lng || this.language;\n    var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n    if (lng && lng.toLowerCase() === 'cimode') {\n      if (appendNamespaceToCIMode) {\n        var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n        return namespace + nsSeparator + key;\n      }\n\n      return key;\n    }\n\n    // resolve from store\n    var res = this.resolve(keys, options);\n\n    var resType = Object.prototype.toString.apply(res);\n    var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n    var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n\n    // object\n    if (res && typeof res !== 'string' && noObject.indexOf(resType) < 0 && !(joinArrays && resType === '[object Array]')) {\n      if (!options.returnObjects && !this.options.returnObjects) {\n        this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n        return this.options.returnedObjectHandler ? this.options.returnedObjectHandler(key, res, options) : 'key \\'' + key + ' (' + this.language + ')\\' returned an object instead of string.';\n      }\n\n      // if we got a separator we loop over children - else we just return object as is\n      // as having it set to false means no hierarchy so no lookup for nested values\n      if (options.keySeparator || this.options.keySeparator) {\n        var copy = resType === '[object Array]' ? [] : {}; // apply child translation on a copy\n\n        /* eslint no-restricted-syntax: 0 */\n        for (var m in res) {\n          if (Object.prototype.hasOwnProperty.call(res, m)) {\n            copy[m] = this.translate('' + key + keySeparator + m, _extends({}, options, { joinArrays: false, ns: namespaces }));\n          }\n        }\n        res = copy;\n      }\n    } else if (joinArrays && resType === '[object Array]') {\n      // array special treatment\n      res = res.join(joinArrays);\n      if (res) res = this.extendTranslation(res, key, options);\n    } else {\n      // string, empty or null\n      var usedDefault = false;\n      var usedKey = false;\n\n      // fallback value\n      if (!this.isValidLookup(res) && options.defaultValue !== undefined) {\n        usedDefault = true;\n        res = options.defaultValue;\n      }\n      if (!this.isValidLookup(res)) {\n        usedKey = true;\n        res = key;\n      }\n\n      // save missing\n      if (usedKey || usedDefault) {\n        this.logger.log('missingKey', lng, namespace, key, res);\n\n        var lngs = [];\n        var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n        if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n          for (var i = 0; i < fallbackLngs.length; i++) {\n            lngs.push(fallbackLngs[i]);\n          }\n        } else if (this.options.saveMissingTo === 'all') {\n          lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n        } else {\n          lngs.push(options.lng || this.language);\n        }\n\n        if (this.options.saveMissing) {\n          if (this.options.missingKeyHandler) {\n            this.options.missingKeyHandler(lngs, namespace, key, res);\n          } else if (this.backendConnector && this.backendConnector.saveMissing) {\n            this.backendConnector.saveMissing(lngs, namespace, key, res);\n          }\n        }\n\n        this.emit('missingKey', lngs, namespace, key, res);\n      }\n\n      // extend\n      res = this.extendTranslation(res, key, options);\n\n      // append namespace if still key\n      if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = namespace + ':' + key;\n\n      // parseMissingKeyHandler\n      if (usedKey && this.options.parseMissingKeyHandler) res = this.options.parseMissingKeyHandler(res);\n    }\n\n    // return\n    return res;\n  };\n\n  Translator.prototype.extendTranslation = function extendTranslation(res, key, options) {\n    var _this2 = this;\n\n    if (options.interpolation) this.interpolator.init(_extends({}, options, { interpolation: _extends({}, this.options.interpolation, options.interpolation) }));\n\n    // interpolate\n    var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n    if (this.options.interpolation.defaultVariables) data = _extends({}, this.options.interpolation.defaultVariables, data);\n    res = this.interpolator.interpolate(res, data, options.lng || this.language);\n\n    // nesting\n    if (options.nest !== false) res = this.interpolator.nest(res, function () {\n      return _this2.translate.apply(_this2, arguments);\n    }, options);\n\n    if (options.interpolation) this.interpolator.reset();\n\n    // post process\n    var postProcess = options.postProcess || this.options.postProcess;\n    var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n\n    if (res !== undefined && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n      res = postProcessor.handle(postProcessorNames, res, key, options, this);\n    }\n\n    return res;\n  };\n\n  Translator.prototype.resolve = function resolve(keys) {\n    var _this3 = this;\n\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    var found = void 0;\n\n    if (typeof keys === 'string') keys = [keys];\n\n    // forEach possible key\n    keys.forEach(function (k) {\n      if (_this3.isValidLookup(found)) return;\n\n      var extracted = _this3.extractFromKey(k, options);\n      var key = extracted.key;\n      var namespaces = extracted.namespaces;\n      if (_this3.options.fallbackNS) namespaces = namespaces.concat(_this3.options.fallbackNS);\n\n      var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n      var needsContextHandling = options.context !== undefined && typeof options.context === 'string' && options.context !== '';\n\n      var codes = options.lngs ? options.lngs : _this3.languageUtils.toResolveHierarchy(options.lng || _this3.language);\n\n      namespaces.forEach(function (ns) {\n        if (_this3.isValidLookup(found)) return;\n\n        codes.forEach(function (code) {\n          if (_this3.isValidLookup(found)) return;\n\n          var finalKey = key;\n          var finalKeys = [finalKey];\n\n          var pluralSuffix = void 0;\n          if (needsPluralHandling) pluralSuffix = _this3.pluralResolver.getSuffix(code, options.count);\n\n          // fallback for plural if context not found\n          if (needsPluralHandling && needsContextHandling) finalKeys.push(finalKey + pluralSuffix);\n\n          // get key for context if needed\n          if (needsContextHandling) finalKeys.push(finalKey += '' + _this3.options.contextSeparator + options.context);\n\n          // get key for plural if needed\n          if (needsPluralHandling) finalKeys.push(finalKey += pluralSuffix);\n\n          // iterate over finalKeys starting with most specific pluralkey (-> contextkey only) -> singularkey only\n          var possibleKey = void 0;\n          /* eslint no-cond-assign: 0 */\n          while (possibleKey = finalKeys.pop()) {\n            if (!_this3.isValidLookup(found)) {\n              found = _this3.getResource(code, ns, possibleKey, options);\n            }\n          }\n        });\n      });\n    });\n\n    return found;\n  };\n\n  Translator.prototype.isValidLookup = function isValidLookup(res) {\n    return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n  };\n\n  Translator.prototype.getResource = function getResource(code, ns, key) {\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n    return this.resourceStore.getResource(code, ns, key, options);\n  };\n\n  return Translator;\n}(EventEmitter);\n\nexport default Translator;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport baseLogger from './logger';\n\nfunction capitalize(string) {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar LanguageUtil = function () {\n  function LanguageUtil(options) {\n    _classCallCheck(this, LanguageUtil);\n\n    this.options = options;\n\n    this.whitelist = this.options.whitelist || false;\n    this.logger = baseLogger.create('languageUtils');\n  }\n\n  LanguageUtil.prototype.getScriptPartFromCode = function getScriptPartFromCode(code) {\n    if (!code || code.indexOf('-') < 0) return null;\n\n    var p = code.split('-');\n    if (p.length === 2) return null;\n    p.pop();\n    return this.formatLanguageCode(p.join('-'));\n  };\n\n  LanguageUtil.prototype.getLanguagePartFromCode = function getLanguagePartFromCode(code) {\n    if (!code || code.indexOf('-') < 0) return code;\n\n    var p = code.split('-');\n    return this.formatLanguageCode(p[0]);\n  };\n\n  LanguageUtil.prototype.formatLanguageCode = function formatLanguageCode(code) {\n    // http://www.iana.org/assignments/language-tags/language-tags.xhtml\n    if (typeof code === 'string' && code.indexOf('-') > -1) {\n      var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n      var p = code.split('-');\n\n      if (this.options.lowerCaseLng) {\n        p = p.map(function (part) {\n          return part.toLowerCase();\n        });\n      } else if (p.length === 2) {\n        p[0] = p[0].toLowerCase();\n        p[1] = p[1].toUpperCase();\n\n        if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n      } else if (p.length === 3) {\n        p[0] = p[0].toLowerCase();\n\n        // if lenght 2 guess it's a country\n        if (p[1].length === 2) p[1] = p[1].toUpperCase();\n        if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n\n        if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n        if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n      }\n\n      return p.join('-');\n    }\n\n    return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n  };\n\n  LanguageUtil.prototype.isWhitelisted = function isWhitelisted(code) {\n    if (this.options.load === 'languageOnly' || this.options.nonExplicitWhitelist) {\n      code = this.getLanguagePartFromCode(code);\n    }\n    return !this.whitelist || !this.whitelist.length || this.whitelist.indexOf(code) > -1;\n  };\n\n  LanguageUtil.prototype.getFallbackCodes = function getFallbackCodes(fallbacks, code) {\n    if (!fallbacks) return [];\n    if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n    if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n\n    if (!code) return fallbacks.default || [];\n\n    // asume we have an object defining fallbacks\n    var found = fallbacks[code];\n    if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n    if (!found) found = fallbacks[this.formatLanguageCode(code)];\n    if (!found) found = fallbacks.default;\n\n    return found || [];\n  };\n\n  LanguageUtil.prototype.toResolveHierarchy = function toResolveHierarchy(code, fallbackCode) {\n    var _this = this;\n\n    var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n\n    var codes = [];\n    var addCode = function addCode(c) {\n      if (!c) return;\n      if (_this.isWhitelisted(c)) {\n        codes.push(c);\n      } else {\n        _this.logger.warn('rejecting non-whitelisted language code: ' + c);\n      }\n    };\n\n    if (typeof code === 'string' && code.indexOf('-') > -1) {\n      if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n      if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n      if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n    } else if (typeof code === 'string') {\n      addCode(this.formatLanguageCode(code));\n    }\n\n    fallbackCodes.forEach(function (fc) {\n      if (codes.indexOf(fc) < 0) addCode(_this.formatLanguageCode(fc));\n    });\n\n    return codes;\n  };\n\n  return LanguageUtil;\n}();\n\nexport default LanguageUtil;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport baseLogger from './logger';\n\n// definition http://translate.sourceforge.net/wiki/l10n/pluralforms\n/* eslint-disable */\nvar sets = [{ lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'tg', 'ti', 'tr', 'uz', 'wa'], nr: [1, 2], fc: 1 }, { lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'he', 'hi', 'hu', 'hy', 'ia', 'it', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'], nr: [1, 2], fc: 2 }, { lngs: ['ay', 'bo', 'cgg', 'fa', 'id', 'ja', 'jbo', 'ka', 'kk', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'], nr: [1], fc: 3 }, { lngs: ['be', 'bs', 'dz', 'hr', 'ru', 'sr', 'uk'], nr: [1, 2, 5], fc: 4 }, { lngs: ['ar'], nr: [0, 1, 2, 3, 11, 100], fc: 5 }, { lngs: ['cs', 'sk'], nr: [1, 2, 5], fc: 6 }, { lngs: ['csb', 'pl'], nr: [1, 2, 5], fc: 7 }, { lngs: ['cy'], nr: [1, 2, 3, 8], fc: 8 }, { lngs: ['fr'], nr: [1, 2], fc: 9 }, { lngs: ['ga'], nr: [1, 2, 3, 7, 11], fc: 10 }, { lngs: ['gd'], nr: [1, 2, 3, 20], fc: 11 }, { lngs: ['is'], nr: [1, 2], fc: 12 }, { lngs: ['jv'], nr: [0, 1], fc: 13 }, { lngs: ['kw'], nr: [1, 2, 3, 4], fc: 14 }, { lngs: ['lt'], nr: [1, 2, 10], fc: 15 }, { lngs: ['lv'], nr: [1, 2, 0], fc: 16 }, { lngs: ['mk'], nr: [1, 2], fc: 17 }, { lngs: ['mnk'], nr: [0, 1, 2], fc: 18 }, { lngs: ['mt'], nr: [1, 2, 11, 20], fc: 19 }, { lngs: ['or'], nr: [2, 1], fc: 2 }, { lngs: ['ro'], nr: [1, 2, 20], fc: 20 }, { lngs: ['sl'], nr: [5, 1, 2, 3], fc: 21 }];\n\nvar _rulesPluralsTypes = {\n  1: function _(n) {\n    return Number(n > 1);\n  },\n  2: function _(n) {\n    return Number(n != 1);\n  },\n  3: function _(n) {\n    return 0;\n  },\n  4: function _(n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  5: function _(n) {\n    return Number(n === 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n  },\n  6: function _(n) {\n    return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n  },\n  7: function _(n) {\n    return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  8: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n  },\n  9: function _(n) {\n    return Number(n >= 2);\n  },\n  10: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n  },\n  11: function _(n) {\n    return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n  },\n  12: function _(n) {\n    return Number(n % 10 != 1 || n % 100 == 11);\n  },\n  13: function _(n) {\n    return Number(n !== 0);\n  },\n  14: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n  },\n  15: function _(n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  16: function _(n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n  },\n  17: function _(n) {\n    return Number(n == 1 || n % 10 == 1 ? 0 : 1);\n  },\n  18: function _(n) {\n    return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n  },\n  19: function _(n) {\n    return Number(n == 1 ? 0 : n === 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n  },\n  20: function _(n) {\n    return Number(n == 1 ? 0 : n === 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n  },\n  21: function _(n) {\n    return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n  }\n};\n/* eslint-enable */\n\nfunction createRules() {\n  var rules = {};\n  sets.forEach(function (set) {\n    set.lngs.forEach(function (l) {\n      rules[l] = {\n        numbers: set.nr,\n        plurals: _rulesPluralsTypes[set.fc]\n      };\n    });\n  });\n  return rules;\n}\n\nvar PluralResolver = function () {\n  function PluralResolver(languageUtils) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, PluralResolver);\n\n    this.languageUtils = languageUtils;\n    this.options = options;\n\n    this.logger = baseLogger.create('pluralResolver');\n\n    this.rules = createRules();\n  }\n\n  PluralResolver.prototype.addRule = function addRule(lng, obj) {\n    this.rules[lng] = obj;\n  };\n\n  PluralResolver.prototype.getRule = function getRule(code) {\n    return this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n  };\n\n  PluralResolver.prototype.needsPlural = function needsPlural(code) {\n    var rule = this.getRule(code);\n\n    return rule && rule.numbers.length > 1;\n  };\n\n  PluralResolver.prototype.getSuffix = function getSuffix(code, count) {\n    var _this = this;\n\n    var rule = this.getRule(code);\n\n    if (rule) {\n      if (rule.numbers.length === 1) return '0'; // only singular support the _0\n\n      var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n      var suffix = rule.numbers[idx];\n\n      // special treatment for lngs only having singular and plural\n      if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n        if (suffix === 2) {\n          suffix = 'plural';\n        } else if (suffix === 1) {\n          suffix = '';\n        }\n      }\n\n      var returnSuffix = function returnSuffix() {\n        return _this.options.prepend && suffix.toString() ? _this.options.prepend + suffix.toString() : suffix.toString();\n      };\n\n      // COMPATIBILITY JSON\n      // v1\n      if (this.options.compatibilityJSON === 'v1') {\n        if (suffix === 1) return '';\n        if (typeof suffix === 'number') return '_plural_' + suffix.toString();\n        return returnSuffix();\n      } else if ( /* v2 */this.options.compatibilityJSON === 'v2' || rule.numbers.length === 2 && rule.numbers[0] === 1) {\n        return returnSuffix();\n      } else if ( /* v3 - gettext index */rule.numbers.length === 2 && rule.numbers[0] === 1) {\n        return returnSuffix();\n      }\n      return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n    }\n\n    this.logger.warn('no plural rule found for: ' + code);\n    return '';\n  };\n\n  return PluralResolver;\n}();\n\nexport default PluralResolver;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport * as utils from './utils';\nimport baseLogger from './logger';\n\nvar Interpolator = function () {\n  function Interpolator() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, Interpolator);\n\n    this.logger = baseLogger.create('interpolator');\n\n    this.init(options, true);\n  }\n\n  /* eslint no-param-reassign: 0 */\n\n\n  Interpolator.prototype.init = function init() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var reset = arguments[1];\n\n    if (reset) {\n      this.options = options;\n      this.format = options.interpolation && options.interpolation.format || function (value) {\n        return value;\n      };\n      this.escape = options.interpolation && options.interpolation.escape || utils.escape;\n    }\n    if (!options.interpolation) options.interpolation = { escapeValue: true };\n\n    var iOpts = options.interpolation;\n\n    this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n\n    this.prefix = iOpts.prefix ? utils.regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n    this.suffix = iOpts.suffix ? utils.regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n\n    this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n\n    this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n    this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n\n    this.nestingPrefix = iOpts.nestingPrefix ? utils.regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || utils.regexEscape('$t(');\n    this.nestingSuffix = iOpts.nestingSuffix ? utils.regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || utils.regexEscape(')');\n\n    this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n\n    // the regexp\n    this.resetRegExp();\n  };\n\n  Interpolator.prototype.reset = function reset() {\n    if (this.options) this.init(this.options);\n  };\n\n  Interpolator.prototype.resetRegExp = function resetRegExp() {\n    // the regexp\n    var regexpStr = this.prefix + '(.+?)' + this.suffix;\n    this.regexp = new RegExp(regexpStr, 'g');\n\n    var regexpUnescapeStr = '' + this.prefix + this.unescapePrefix + '(.+?)' + this.unescapeSuffix + this.suffix;\n    this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n\n    var nestingRegexpStr = this.nestingPrefix + '(.+?)' + this.nestingSuffix;\n    this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n  };\n\n  Interpolator.prototype.interpolate = function interpolate(str, data, lng) {\n    var _this = this;\n\n    var match = void 0;\n    var value = void 0;\n    var replaces = void 0;\n\n    function regexSafe(val) {\n      return val.replace(/\\$/g, '$$$$');\n    }\n\n    var handleFormat = function handleFormat(key) {\n      if (key.indexOf(_this.formatSeparator) < 0) return utils.getPath(data, key);\n\n      var p = key.split(_this.formatSeparator);\n      var k = p.shift().trim();\n      var f = p.join(_this.formatSeparator).trim();\n\n      return _this.format(utils.getPath(data, k), f, lng);\n    };\n\n    this.resetRegExp();\n\n    replaces = 0;\n    // unescape if has unescapePrefix/Suffix\n    /* eslint no-cond-assign: 0 */\n    while (match = this.regexpUnescape.exec(str)) {\n      value = handleFormat(match[1].trim());\n      str = str.replace(match[0], value);\n      this.regexpUnescape.lastIndex = 0;\n      replaces++;\n      if (replaces >= this.maxReplaces) {\n        break;\n      }\n    }\n\n    replaces = 0;\n    // regular escape on demand\n    while (match = this.regexp.exec(str)) {\n      value = handleFormat(match[1].trim());\n      if (typeof value !== 'string') value = utils.makeString(value);\n      if (!value) {\n        this.logger.warn('missed to pass in variable ' + match[1] + ' for interpolating ' + str);\n        value = '';\n      }\n      value = this.escapeValue ? regexSafe(this.escape(value)) : regexSafe(value);\n      str = str.replace(match[0], value);\n      this.regexp.lastIndex = 0;\n      replaces++;\n      if (replaces >= this.maxReplaces) {\n        break;\n      }\n    }\n    return str;\n  };\n\n  Interpolator.prototype.nest = function nest(str, fc) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    var match = void 0;\n    var value = void 0;\n\n    var clonedOptions = _extends({}, options);\n    clonedOptions.applyPostProcessor = false; // avoid post processing on nested lookup\n\n    // if value is something like \"myKey\": \"lorem $(anotherKey, { \"count\": {{aValueInOptions}} })\"\n    function handleHasOptions(key) {\n      if (key.indexOf(',') < 0) return key;\n\n      var p = key.split(',');\n      key = p.shift();\n      var optionsString = p.join(',');\n      optionsString = this.interpolate(optionsString, clonedOptions);\n      optionsString = optionsString.replace(/'/g, '\"');\n\n      try {\n        clonedOptions = JSON.parse(optionsString);\n      } catch (e) {\n        this.logger.error('failed parsing options string in nesting for key ' + key, e);\n      }\n\n      return key;\n    }\n\n    // regular escape on demand\n    while (match = this.nestingRegexp.exec(str)) {\n      value = fc(handleHasOptions.call(this, match[1].trim()), clonedOptions);\n\n      // is only the nesting key (key1 = '$(key2)') return the value without stringify\n      if (value && match[0] === str && typeof value !== 'string') return value;\n\n      // no string to include or empty\n      if (typeof value !== 'string') value = utils.makeString(value);\n      if (!value) {\n        this.logger.warn('missed to resolve ' + match[1] + ' for nesting ' + str);\n        value = '';\n      }\n      // Nested keys should not be escaped by default #854\n      // value = this.escapeValue ? regexSafe(utils.escape(value)) : regexSafe(value);\n      str = str.replace(match[0], value);\n      this.regexp.lastIndex = 0;\n    }\n    return str;\n  };\n\n  return Interpolator;\n}();\n\nexport default Interpolator;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nfunction _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); }\n\nimport * as utils from './utils';\nimport baseLogger from './logger';\nimport EventEmitter from './EventEmitter';\n\nfunction remove(arr, what) {\n  var found = arr.indexOf(what);\n\n  while (found !== -1) {\n    arr.splice(found, 1);\n    found = arr.indexOf(what);\n  }\n}\n\nvar Connector = function (_EventEmitter) {\n  _inherits(Connector, _EventEmitter);\n\n  function Connector(backend, store, services) {\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n    _classCallCheck(this, Connector);\n\n    var _this = _possibleConstructorReturn(this, _EventEmitter.call(this));\n\n    _this.backend = backend;\n    _this.store = store;\n    _this.languageUtils = services.languageUtils;\n    _this.options = options;\n    _this.logger = baseLogger.create('backendConnector');\n\n    _this.state = {};\n    _this.queue = [];\n\n    if (_this.backend && _this.backend.init) {\n      _this.backend.init(services, options.backend, options);\n    }\n    return _this;\n  }\n\n  Connector.prototype.queueLoad = function queueLoad(languages, namespaces, callback) {\n    var _this2 = this;\n\n    // find what needs to be loaded\n    var toLoad = [];\n    var pending = [];\n    var toLoadLanguages = [];\n    var toLoadNamespaces = [];\n\n    languages.forEach(function (lng) {\n      var hasAllNamespaces = true;\n\n      namespaces.forEach(function (ns) {\n        var name = lng + '|' + ns;\n\n        if (_this2.store.hasResourceBundle(lng, ns)) {\n          _this2.state[name] = 2; // loaded\n        } else if (_this2.state[name] < 0) {\n          // nothing to do for err\n        } else if (_this2.state[name] === 1) {\n          if (pending.indexOf(name) < 0) pending.push(name);\n        } else {\n          _this2.state[name] = 1; // pending\n\n          hasAllNamespaces = false;\n\n          if (pending.indexOf(name) < 0) pending.push(name);\n          if (toLoad.indexOf(name) < 0) toLoad.push(name);\n          if (toLoadNamespaces.indexOf(ns) < 0) toLoadNamespaces.push(ns);\n        }\n      });\n\n      if (!hasAllNamespaces) toLoadLanguages.push(lng);\n    });\n\n    if (toLoad.length || pending.length) {\n      this.queue.push({\n        pending: pending,\n        loaded: {},\n        errors: [],\n        callback: callback\n      });\n    }\n\n    return {\n      toLoad: toLoad,\n      pending: pending,\n      toLoadLanguages: toLoadLanguages,\n      toLoadNamespaces: toLoadNamespaces\n    };\n  };\n\n  Connector.prototype.loaded = function loaded(name, err, data) {\n    var _this3 = this;\n\n    var _name$split = name.split('|'),\n        _name$split2 = _slicedToArray(_name$split, 2),\n        lng = _name$split2[0],\n        ns = _name$split2[1];\n\n    if (err) this.emit('failedLoading', lng, ns, err);\n\n    if (data) {\n      this.store.addResourceBundle(lng, ns, data);\n    }\n\n    // set loaded\n    this.state[name] = err ? -1 : 2;\n\n    // callback if ready\n    this.queue.forEach(function (q) {\n      utils.pushPath(q.loaded, [lng], ns);\n      remove(q.pending, name);\n\n      if (err) q.errors.push(err);\n\n      if (q.pending.length === 0 && !q.done) {\n        _this3.emit('loaded', q.loaded);\n        /* eslint no-param-reassign: 0 */\n        q.done = true;\n        if (q.errors.length) {\n          q.callback(q.errors);\n        } else {\n          q.callback();\n        }\n      }\n    });\n\n    // remove done load requests\n    this.queue = this.queue.filter(function (q) {\n      return !q.done;\n    });\n  };\n\n  Connector.prototype.read = function read(lng, ns, fcName) {\n    var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n\n    var _this4 = this;\n\n    var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 250;\n    var callback = arguments[5];\n\n    if (!lng.length) return callback(null, {}); // noting to load\n\n    return this.backend[fcName](lng, ns, function (err, data) {\n      if (err && data /* = retryFlag */ && tried < 5) {\n        setTimeout(function () {\n          _this4.read.call(_this4, lng, ns, fcName, tried + 1, wait * 2, callback);\n        }, wait);\n        return;\n      }\n      callback(err, data);\n    });\n  };\n\n  /* eslint consistent-return: 0 */\n\n\n  Connector.prototype.load = function load(languages, namespaces, callback) {\n    var _this5 = this;\n\n    if (!this.backend) {\n      this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n      return callback && callback();\n    }\n    var options = _extends({}, this.backend.options, this.options.backend);\n\n    if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n    if (typeof namespaces === 'string') namespaces = [namespaces];\n\n    var toLoad = this.queueLoad(languages, namespaces, callback);\n    if (!toLoad.toLoad.length) {\n      if (!toLoad.pending.length) callback(); // nothing to load and no pendings...callback now\n      return null; // pendings will trigger callback\n    }\n\n    // load with multi-load\n    if (options.allowMultiLoading && this.backend.readMulti) {\n      this.read(toLoad.toLoadLanguages, toLoad.toLoadNamespaces, 'readMulti', null, null, function (err, data) {\n        if (err) _this5.logger.warn('loading namespaces ' + toLoad.toLoadNamespaces.join(', ') + ' for languages ' + toLoad.toLoadLanguages.join(', ') + ' via multiloading failed', err);\n        if (!err && data) _this5.logger.log('successfully loaded namespaces ' + toLoad.toLoadNamespaces.join(', ') + ' for languages ' + toLoad.toLoadLanguages.join(', ') + ' via multiloading', data);\n\n        toLoad.toLoad.forEach(function (name) {\n          var _name$split3 = name.split('|'),\n              _name$split4 = _slicedToArray(_name$split3, 2),\n              l = _name$split4[0],\n              n = _name$split4[1];\n\n          var bundle = utils.getPath(data, [l, n]);\n          if (bundle) {\n            _this5.loaded(name, err, bundle);\n          } else {\n            var error = 'loading namespace ' + n + ' for language ' + l + ' via multiloading failed';\n            _this5.loaded(name, error);\n            _this5.logger.error(error);\n          }\n        });\n      });\n    } else {\n      toLoad.toLoad.forEach(function (name) {\n        _this5.loadOne(name);\n      });\n    }\n  };\n\n  Connector.prototype.reload = function reload(languages, namespaces) {\n    var _this6 = this;\n\n    if (!this.backend) {\n      this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n    }\n    var options = _extends({}, this.backend.options, this.options.backend);\n\n    if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n    if (typeof namespaces === 'string') namespaces = [namespaces];\n\n    // load with multi-load\n    if (options.allowMultiLoading && this.backend.readMulti) {\n      this.read(languages, namespaces, 'readMulti', null, null, function (err, data) {\n        if (err) _this6.logger.warn('reloading namespaces ' + namespaces.join(', ') + ' for languages ' + languages.join(', ') + ' via multiloading failed', err);\n        if (!err && data) _this6.logger.log('successfully reloaded namespaces ' + namespaces.join(', ') + ' for languages ' + languages.join(', ') + ' via multiloading', data);\n\n        languages.forEach(function (l) {\n          namespaces.forEach(function (n) {\n            var bundle = utils.getPath(data, [l, n]);\n            if (bundle) {\n              _this6.loaded(l + '|' + n, err, bundle);\n            } else {\n              var error = 'reloading namespace ' + n + ' for language ' + l + ' via multiloading failed';\n              _this6.loaded(l + '|' + n, error);\n              _this6.logger.error(error);\n            }\n          });\n        });\n      });\n    } else {\n      languages.forEach(function (l) {\n        namespaces.forEach(function (n) {\n          _this6.loadOne(l + '|' + n, 're');\n        });\n      });\n    }\n  };\n\n  Connector.prototype.loadOne = function loadOne(name) {\n    var _this7 = this;\n\n    var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n    var _name$split5 = name.split('|'),\n        _name$split6 = _slicedToArray(_name$split5, 2),\n        lng = _name$split6[0],\n        ns = _name$split6[1];\n\n    this.read(lng, ns, 'read', null, null, function (err, data) {\n      if (err) _this7.logger.warn(prefix + 'loading namespace ' + ns + ' for language ' + lng + ' failed', err);\n      if (!err && data) _this7.logger.log(prefix + 'loaded namespace ' + ns + ' for language ' + lng, data);\n\n      _this7.loaded(name, err, data);\n    });\n  };\n\n  Connector.prototype.saveMissing = function saveMissing(languages, namespace, key, fallbackValue) {\n    if (this.backend && this.backend.create) this.backend.create(languages, namespace, key, fallbackValue);\n\n    // write to store to avoid resending\n    if (!languages || !languages[0]) return;\n    this.store.addResource(languages[0], namespace, key, fallbackValue);\n  };\n\n  return Connector;\n}(EventEmitter);\n\nexport default Connector;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); }\n\nimport baseLogger from './logger';\nimport EventEmitter from './EventEmitter';\n\nvar Connector = function (_EventEmitter) {\n  _inherits(Connector, _EventEmitter);\n\n  function Connector(cache, store, services) {\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n    _classCallCheck(this, Connector);\n\n    var _this = _possibleConstructorReturn(this, _EventEmitter.call(this));\n\n    _this.cache = cache;\n    _this.store = store;\n    _this.services = services;\n    _this.options = options;\n    _this.logger = baseLogger.create('cacheConnector');\n\n    if (_this.cache && _this.cache.init) _this.cache.init(services, options.cache, options);\n    return _this;\n  }\n\n  /* eslint consistent-return: 0 */\n\n\n  Connector.prototype.load = function load(languages, namespaces, callback) {\n    var _this2 = this;\n\n    if (!this.cache) return callback && callback();\n    var options = _extends({}, this.cache.options, this.options.cache);\n\n    var loadLngs = typeof languages === 'string' ? this.services.languageUtils.toResolveHierarchy(languages) : languages;\n\n    if (options.enabled) {\n      this.cache.load(loadLngs, function (err, data) {\n        if (err) _this2.logger.error('loading languages ' + loadLngs.join(', ') + ' from cache failed', err);\n        if (data) {\n          /* eslint no-restricted-syntax: 0 */\n          for (var l in data) {\n            if (Object.prototype.hasOwnProperty.call(data, l)) {\n              for (var n in data[l]) {\n                if (Object.prototype.hasOwnProperty.call(data[l], n)) {\n                  if (n !== 'i18nStamp') {\n                    var bundle = data[l][n];\n                    if (bundle) _this2.store.addResourceBundle(l, n, bundle);\n                  }\n                }\n              }\n            }\n          }\n        }\n        if (callback) callback();\n      });\n    } else if (callback) {\n      callback();\n    }\n  };\n\n  Connector.prototype.save = function save() {\n    if (this.cache && this.options.cache && this.options.cache.enabled) this.cache.save(this.store.data);\n  };\n\n  return Connector;\n}(EventEmitter);\n\nexport default Connector;","export { get };\nfunction get() {\n  return {\n    debug: false,\n    initImmediate: true,\n\n    ns: ['translation'],\n    defaultNS: ['translation'],\n    fallbackLng: ['dev'],\n    fallbackNS: false, // string or array of namespaces\n\n    whitelist: false, // array with whitelisted languages\n    nonExplicitWhitelist: false,\n    load: 'all', // | currentOnly | languageOnly\n    preload: false, // array with preload languages\n\n    simplifyPluralSuffix: true,\n    keySeparator: '.',\n    nsSeparator: ':',\n    pluralSeparator: '_',\n    contextSeparator: '_',\n\n    saveMissing: false, // enable to send missing values\n    saveMissingTo: 'fallback', // 'current' || 'all'\n    missingKeyHandler: false, // function(lng, ns, key, fallbackValue) -> override if prefer on handling\n\n    postProcess: false, // string or array of postProcessor names\n    returnNull: true, // allows null value as valid translation\n    returnEmptyString: true, // allows empty string value as valid translation\n    returnObjects: false,\n    joinArrays: false, // or string to join array\n    returnedObjectHandler: function returnedObjectHandler() {}, // function(key, value, options) triggered if key returns object but returnObjects is set to false\n    parseMissingKeyHandler: false, // function(key) parsed a key that was not found in t() before returning\n    appendNamespaceToMissingKey: false,\n    appendNamespaceToCIMode: false,\n    overloadTranslationOptionHandler: function handle(args) {\n      return { defaultValue: args[1] };\n    },\n\n    interpolation: {\n      escapeValue: true,\n      format: function format(value, _format, lng) {\n        return value;\n      },\n      prefix: '{{',\n      suffix: '}}',\n      formatSeparator: ',',\n      // prefixEscaped: '{{',\n      // suffixEscaped: '}}',\n      // unescapeSuffix: '',\n      unescapePrefix: '-',\n\n      nestingPrefix: '$t(',\n      nestingSuffix: ')',\n      // nestingPrefixEscaped: '$t(',\n      // nestingSuffixEscaped: ')',\n      // defaultVariables: undefined // object that can have values to interpolate on - extends passed in interpolation data\n      maxReplaces: 1000 // max replaces to prevent endless loop\n    }\n  };\n}\n\n/* eslint no-param-reassign: 0 */\nexport function transformOptions(options) {\n  // create namespace object if namespace is passed in as string\n  if (typeof options.ns === 'string') options.ns = [options.ns];\n  if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n  if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n\n  // extend whitelist with cimode\n  if (options.whitelist && options.whitelist.indexOf('cimode') < 0) options.whitelist.push('cimode');\n\n  return options;\n}","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); }\n\nimport baseLogger from './logger';\nimport EventEmitter from './EventEmitter';\nimport ResourceStore from './ResourceStore';\nimport Translator from './Translator';\nimport LanguageUtils from './LanguageUtils';\nimport PluralResolver from './PluralResolver';\nimport Interpolator from './Interpolator';\nimport BackendConnector from './BackendConnector';\nimport CacheConnector from './CacheConnector';\nimport { get as getDefaults, transformOptions } from './defaults';\nimport postProcessor from './postProcessor';\n\nfunction noop() {}\n\nvar I18n = function (_EventEmitter) {\n  _inherits(I18n, _EventEmitter);\n\n  function I18n() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var callback = arguments[1];\n\n    _classCallCheck(this, I18n);\n\n    var _this = _possibleConstructorReturn(this, _EventEmitter.call(this));\n\n    _this.options = transformOptions(options);\n    _this.services = {};\n    _this.logger = baseLogger;\n    _this.modules = { external: [] };\n\n    if (callback && !_this.isInitialized && !options.isClone) {\n      var _ret;\n\n      // https://github.com/i18next/i18next/issues/879\n      if (!_this.options.initImmediate) return _ret = _this.init(options, callback), _possibleConstructorReturn(_this, _ret);\n      setTimeout(function () {\n        _this.init(options, callback);\n      }, 0);\n    }\n    return _this;\n  }\n\n  I18n.prototype.init = function init() {\n    var _this2 = this;\n\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var callback = arguments[1];\n\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n    this.options = _extends({}, getDefaults(), this.options, transformOptions(options));\n\n    this.format = this.options.interpolation.format;\n    if (!callback) callback = noop;\n\n    function createClassOnDemand(ClassOrObject) {\n      if (!ClassOrObject) return null;\n      if (typeof ClassOrObject === 'function') return new ClassOrObject();\n      return ClassOrObject;\n    }\n\n    // init services\n    if (!this.options.isClone) {\n      if (this.modules.logger) {\n        baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n      } else {\n        baseLogger.init(null, this.options);\n      }\n\n      var lu = new LanguageUtils(this.options);\n      this.store = new ResourceStore(this.options.resources, this.options);\n\n      var s = this.services;\n      s.logger = baseLogger;\n      s.resourceStore = this.store;\n      s.resourceStore.on('added removed', function (lng, ns) {\n        s.cacheConnector.save();\n      });\n      s.languageUtils = lu;\n      s.pluralResolver = new PluralResolver(lu, { prepend: this.options.pluralSeparator, compatibilityJSON: this.options.compatibilityJSON, simplifyPluralSuffix: this.options.simplifyPluralSuffix });\n      s.interpolator = new Interpolator(this.options);\n\n      s.backendConnector = new BackendConnector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n      // pipe events from backendConnector\n      s.backendConnector.on('*', function (event) {\n        for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          args[_key - 1] = arguments[_key];\n        }\n\n        _this2.emit.apply(_this2, [event].concat(args));\n      });\n\n      s.backendConnector.on('loaded', function (loaded) {\n        s.cacheConnector.save();\n      });\n\n      s.cacheConnector = new CacheConnector(createClassOnDemand(this.modules.cache), s.resourceStore, s, this.options);\n      // pipe events from backendConnector\n      s.cacheConnector.on('*', function (event) {\n        for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n          args[_key2 - 1] = arguments[_key2];\n        }\n\n        _this2.emit.apply(_this2, [event].concat(args));\n      });\n\n      if (this.modules.languageDetector) {\n        s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n        s.languageDetector.init(s, this.options.detection, this.options);\n      }\n\n      this.translator = new Translator(this.services, this.options);\n      // pipe events from translator\n      this.translator.on('*', function (event) {\n        for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n          args[_key3 - 1] = arguments[_key3];\n        }\n\n        _this2.emit.apply(_this2, [event].concat(args));\n      });\n\n      this.modules.external.forEach(function (m) {\n        if (m.init) m.init(_this2);\n      });\n    }\n\n    // append api\n    var storeApi = ['getResource', 'addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle', 'hasResourceBundle', 'getResourceBundle'];\n    storeApi.forEach(function (fcName) {\n      _this2[fcName] = function () {\n        var _store;\n\n        return (_store = _this2.store)[fcName].apply(_store, arguments);\n      };\n    });\n\n    var load = function load() {\n      _this2.changeLanguage(_this2.options.lng, function (err, t) {\n        _this2.isInitialized = true;\n        _this2.logger.log('initialized', _this2.options);\n        _this2.emit('initialized', _this2.options);\n\n        callback(err, t);\n      });\n    };\n\n    if (this.options.resources || !this.options.initImmediate) {\n      load();\n    } else {\n      setTimeout(load, 0);\n    }\n\n    return this;\n  };\n\n  /* eslint consistent-return: 0 */\n\n\n  I18n.prototype.loadResources = function loadResources() {\n    var _this3 = this;\n\n    var callback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n    if (!this.options.resources) {\n      if (this.language && this.language.toLowerCase() === 'cimode') return callback(); // avoid loading resources for cimode\n\n      var toLoad = [];\n\n      var append = function append(lng) {\n        if (!lng) return;\n        var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n        lngs.forEach(function (l) {\n          if (toLoad.indexOf(l) < 0) toLoad.push(l);\n        });\n      };\n\n      if (!this.language) {\n        // at least load fallbacks in this case\n        var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n        fallbacks.forEach(function (l) {\n          return append(l);\n        });\n      } else {\n        append(this.language);\n      }\n\n      if (this.options.preload) {\n        this.options.preload.forEach(function (l) {\n          return append(l);\n        });\n      }\n\n      this.services.cacheConnector.load(toLoad, this.options.ns, function () {\n        _this3.services.backendConnector.load(toLoad, _this3.options.ns, callback);\n      });\n    } else {\n      callback(null);\n    }\n  };\n\n  I18n.prototype.reloadResources = function reloadResources(lngs, ns) {\n    if (!lngs) lngs = this.languages;\n    if (!ns) ns = this.options.ns;\n    this.services.backendConnector.reload(lngs, ns);\n  };\n\n  I18n.prototype.use = function use(module) {\n    if (module.type === 'backend') {\n      this.modules.backend = module;\n    }\n\n    if (module.type === 'cache') {\n      this.modules.cache = module;\n    }\n\n    if (module.type === 'logger' || module.log && module.warn && module.error) {\n      this.modules.logger = module;\n    }\n\n    if (module.type === 'languageDetector') {\n      this.modules.languageDetector = module;\n    }\n\n    if (module.type === 'postProcessor') {\n      postProcessor.addPostProcessor(module);\n    }\n\n    if (module.type === '3rdParty') {\n      this.modules.external.push(module);\n    }\n\n    return this;\n  };\n\n  I18n.prototype.changeLanguage = function changeLanguage(lng, callback) {\n    var _this4 = this;\n\n    var done = function done(err, l) {\n      _this4.translator.changeLanguage(l);\n\n      if (l) {\n        _this4.emit('languageChanged', l);\n        _this4.logger.log('languageChanged', l);\n      }\n\n      if (callback) callback(err, function () {\n        return _this4.t.apply(_this4, arguments);\n      });\n    };\n\n    var setLng = function setLng(l) {\n      if (l) {\n        _this4.language = l;\n        _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n\n        if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n      }\n\n      _this4.loadResources(function (err) {\n        done(err, l);\n      });\n    };\n\n    if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n      setLng(this.services.languageDetector.detect());\n    } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n      this.services.languageDetector.detect(setLng);\n    } else {\n      setLng(lng);\n    }\n  };\n\n  I18n.prototype.getFixedT = function getFixedT(lng, ns) {\n    var _this5 = this;\n\n    var fixedT = function fixedT(key) {\n      var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      var options = typeof opts === 'string' ? { defaultValue: opts } : _extends({}, opts);\n      options.lng = options.lng || fixedT.lng;\n      options.lngs = options.lngs || fixedT.lngs;\n      options.ns = options.ns || fixedT.ns;\n      return _this5.t(key, options);\n    };\n    if (typeof lng === 'string') {\n      fixedT.lng = lng;\n    } else {\n      fixedT.lngs = lng;\n    }\n    fixedT.ns = ns;\n    return fixedT;\n  };\n\n  I18n.prototype.t = function t() {\n    var _translator;\n\n    return this.translator && (_translator = this.translator).translate.apply(_translator, arguments);\n  };\n\n  I18n.prototype.exists = function exists() {\n    var _translator2;\n\n    return this.translator && (_translator2 = this.translator).exists.apply(_translator2, arguments);\n  };\n\n  I18n.prototype.setDefaultNamespace = function setDefaultNamespace(ns) {\n    this.options.defaultNS = ns;\n  };\n\n  I18n.prototype.loadNamespaces = function loadNamespaces(ns, callback) {\n    var _this6 = this;\n\n    if (!this.options.ns) return callback && callback();\n    if (typeof ns === 'string') ns = [ns];\n\n    ns.forEach(function (n) {\n      if (_this6.options.ns.indexOf(n) < 0) _this6.options.ns.push(n);\n    });\n\n    this.loadResources(callback);\n  };\n\n  I18n.prototype.loadLanguages = function loadLanguages(lngs, callback) {\n    if (typeof lngs === 'string') lngs = [lngs];\n    var preloaded = this.options.preload || [];\n\n    var newLngs = lngs.filter(function (lng) {\n      return preloaded.indexOf(lng) < 0;\n    });\n    // Exit early if all given languages are already preloaded\n    if (!newLngs.length) return callback();\n\n    this.options.preload = preloaded.concat(newLngs);\n    this.loadResources(callback);\n  };\n\n  I18n.prototype.dir = function dir(lng) {\n    if (!lng) lng = this.languages && this.languages.length > 0 ? this.languages[0] : this.language;\n    if (!lng) return 'rtl';\n\n    var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam'];\n\n    return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) >= 0 ? 'rtl' : 'ltr';\n  };\n\n  /* eslint class-methods-use-this: 0 */\n\n\n  I18n.prototype.createInstance = function createInstance() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var callback = arguments[1];\n\n    return new I18n(options, callback);\n  };\n\n  I18n.prototype.cloneInstance = function cloneInstance() {\n    var _this7 = this;\n\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n\n    var mergedOptions = _extends({}, this.options, options, { isClone: true });\n    var clone = new I18n(mergedOptions, callback);\n    var membersToCopy = ['store', 'services', 'language'];\n    membersToCopy.forEach(function (m) {\n      clone[m] = _this7[m];\n    });\n    clone.translator = new Translator(clone.services, clone.options);\n    clone.translator.on('*', function (event) {\n      for (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n        args[_key4 - 1] = arguments[_key4];\n      }\n\n      clone.emit.apply(clone, [event].concat(args));\n    });\n    clone.init(mergedOptions, callback);\n\n    return clone;\n  };\n\n  return I18n;\n}(EventEmitter);\n\nexport default new I18n();","import i18next from './i18next';\n\nexport default i18next;\n\nexport var changeLanguage = i18next.changeLanguage.bind(i18next);\nexport var cloneInstance = i18next.cloneInstance.bind(i18next);\nexport var createInstance = i18next.createInstance.bind(i18next);\nexport var dir = i18next.dir.bind(i18next);\nexport var exists = i18next.exists.bind(i18next);\nexport var getFixedT = i18next.getFixedT.bind(i18next);\nexport var init = i18next.init.bind(i18next);\nexport var loadLanguages = i18next.loadLanguages.bind(i18next);\nexport var loadNamespaces = i18next.loadNamespaces.bind(i18next);\nexport var loadResources = i18next.loadResources.bind(i18next);\nexport var off = i18next.off.bind(i18next);\nexport var on = i18next.on.bind(i18next);\nexport var setDefaultNamespace = i18next.setDefaultNamespace.bind(i18next);\nexport var t = i18next.t.bind(i18next);\nexport var use = i18next.use.bind(i18next);","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target, parent) {\n  if (parent){\n    return parent.querySelector(target);\n  }\n  return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target, parent) {\n                // If passing function in options, then use it for resolve \"head\" element.\n                // Useful for Shadow Root style i.e\n                // {\n                //   insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n                // }\n                if (typeof target === 'function') {\n                        return target();\n                }\n                if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target, parent);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (!options.singleton && typeof options.singleton !== \"boolean\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the <head> element\n        if (!options.insertInto) options.insertInto = \"head\";\n\n\t// By default, add <style> tags to the bottom of the target\n\tif (!options.insertAt) options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list, options);\n\n\taddStylesToDom(styles, options);\n\n\treturn function update (newList) {\n\t\tvar mayRemove = [];\n\n\t\tfor (var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList, options);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\n\t\tfor (var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n};\n\nfunction addStylesToDom (styles, options) {\n\tfor (var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles (list, options) {\n\tvar styles = [];\n\tvar newStyles = {};\n\n\tfor (var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = options.base ? item[0] + options.base : item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\n\t\tif(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse newStyles[id].parts.push(part);\n\t}\n\n\treturn styles;\n}\n\nfunction insertStyleElement (options, style) {\n\tvar target = getElement(options.insertInto)\n\n\tif (!target) {\n\t\tthrow new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n\t}\n\n\tvar lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n\n\tif (options.insertAt === \"top\") {\n\t\tif (!lastStyleElementInsertedAtTop) {\n\t\t\ttarget.insertBefore(style, target.firstChild);\n\t\t} else if (lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\ttarget.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\ttarget.appendChild(style);\n\t\t}\n\t\tstylesInsertedAtTop.push(style);\n\t} else if (options.insertAt === \"bottom\") {\n\t\ttarget.appendChild(style);\n\t} else if (typeof options.insertAt === \"object\" && options.insertAt.before) {\n\t\tvar nextSibling = getElement(options.insertAt.before, target);\n\t\ttarget.insertBefore(style, nextSibling);\n\t} else {\n\t\tthrow new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");\n\t}\n}\n\nfunction removeStyleElement (style) {\n\tif (style.parentNode === null) return false;\n\tstyle.parentNode.removeChild(style);\n\n\tvar idx = stylesInsertedAtTop.indexOf(style);\n\tif(idx >= 0) {\n\t\tstylesInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement (options) {\n\tvar style = document.createElement(\"style\");\n\n\tif(options.attrs.type === undefined) {\n\t\toptions.attrs.type = \"text/css\";\n\t}\n\n\tif(options.attrs.nonce === undefined) {\n\t\tvar nonce = getNonce();\n\t\tif (nonce) {\n\t\t\toptions.attrs.nonce = nonce;\n\t\t}\n\t}\n\n\taddAttrs(style, options.attrs);\n\tinsertStyleElement(options, style);\n\n\treturn style;\n}\n\nfunction createLinkElement (options) {\n\tvar link = document.createElement(\"link\");\n\n\tif(options.attrs.type === undefined) {\n\t\toptions.attrs.type = \"text/css\";\n\t}\n\toptions.attrs.rel = \"stylesheet\";\n\n\taddAttrs(link, options.attrs);\n\tinsertStyleElement(options, link);\n\n\treturn link;\n}\n\nfunction addAttrs (el, attrs) {\n\tObject.keys(attrs).forEach(function (key) {\n\t\tel.setAttribute(key, attrs[key]);\n\t});\n}\n\nfunction getNonce() {\n\tif (typeof __webpack_nonce__ === 'undefined') {\n\t\treturn null;\n\t}\n\n\treturn __webpack_nonce__;\n}\n\nfunction addStyle (obj, options) {\n\tvar style, update, remove, result;\n\n\t// If a transform function was defined, run it on the css\n\tif (options.transform && obj.css) {\n\t    result = options.transform(obj.css);\n\n\t    if (result) {\n\t    \t// If transform returns a value, use that instead of the original css.\n\t    \t// This allows running runtime transformations on the css.\n\t    \tobj.css = result;\n\t    } else {\n\t    \t// If the transform function returns a falsy value, don't add this css.\n\t    \t// This allows conditional loading of css\n\t    \treturn function() {\n\t    \t\t// noop\n\t    \t};\n\t    }\n\t}\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\n\t\tstyle = singleton || (singleton = createStyleElement(options));\n\n\t\tupdate = applyToSingletonTag.bind(null, style, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, style, styleIndex, true);\n\n\t} else if (\n\t\tobj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\"\n\t) {\n\t\tstyle = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, style, options);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\n\t\t\tif(style.href) URL.revokeObjectURL(style.href);\n\t\t};\n\t} else {\n\t\tstyle = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, style);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle (newObj) {\n\t\tif (newObj) {\n\t\t\tif (\n\t\t\t\tnewObj.css === obj.css &&\n\t\t\t\tnewObj.media === obj.media &&\n\t\t\t\tnewObj.sourceMap === obj.sourceMap\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag (style, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (style.styleSheet) {\n\t\tstyle.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = style.childNodes;\n\n\t\tif (childNodes[index]) style.removeChild(childNodes[index]);\n\n\t\tif (childNodes.length) {\n\t\t\tstyle.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyle.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag (style, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyle.setAttribute(\"media\", media)\n\t}\n\n\tif(style.styleSheet) {\n\t\tstyle.styleSheet.cssText = css;\n\t} else {\n\t\twhile(style.firstChild) {\n\t\t\tstyle.removeChild(style.firstChild);\n\t\t}\n\n\t\tstyle.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink (link, options, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\t/*\n\t\tIf convertToAbsoluteUrls isn't defined, but sourcemaps are enabled\n\t\tand there is no publicPath defined then lets turn convertToAbsoluteUrls\n\t\ton by default.  Otherwise default to the convertToAbsoluteUrls option\n\t\tdirectly\n\t*/\n\tvar autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;\n\n\tif (options.convertToAbsoluteUrls || autoFixUrls) {\n\t\tcss = fixUrls(css);\n\t}\n\n\tif (sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = link.href;\n\n\tlink.href = URL.createObjectURL(blob);\n\n\tif(oldSrc) URL.revokeObjectURL(oldSrc);\n}\n","export default {\n  URLS_BACKEND: process.env.URLS_BACKEND || window.env.URLS_BACKEND,\n  URLS_FRONTEND: process.env.URLS_FRONTEND || window.env.URLS_FRONTEND,\n  URLS_MICROSITE: process.env.URLS_MICROSITE || window.env.URLS_MICROSITE,\n  URLS_REPORTS: process.env.URLS_REPORTS || window.env.URLS_REPORTS,\n  URLS_PDF_PRINTER: process.env.URLS_PDF_PRINTER || window.env.URLS_PDF_PRINTER,\n  URLS_PREDICTOR: process.env.URLS_PREDICTOR || window.env.URLS_PREDICTOR,\n  URLS_ROBOTHUNTER: process.env.URLS_ROBOTHUNTER || window.env.URLS_ROBOTHUNTER,\n  KEY_CRYPTO: process.env.KEY_CRYPTO || window.env.KEY_CRYPTO,\n  KEY_PLUS: process.env.KEY_PLUS || window.env.KEY_PLUS,\n  KEY_SLASH: process.env.KEY_SLASH || window.env.KEY_SLASH,\n  KEY_EQUAL: process.env.KEY_EQUAL || window.env.KEY_EQUAL,\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\ndefine([\"require\", \"exports\", \"aurelia-dependency-injection\", \"./permission-store\"], function (require, exports, aurelia_dependency_injection_1, permission_store_1) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    var AuthorizationService = (function () {\n        function AuthorizationService(permissionStore) {\n            this.permissionStore = permissionStore;\n        }\n        AuthorizationService.prototype.isAuthorized = function () {\n            var permissions = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                permissions[_i] = arguments[_i];\n            }\n            var permissionDefinitions = this.getPermissionDefinitions(permissions);\n            var noDefinitionsSet = permissionDefinitions.length === 0;\n            var anyPermissionDefinitionIsTrue = permissionDefinitions.includes(true);\n            if (noDefinitionsSet || anyPermissionDefinitionIsTrue) {\n                return true;\n            }\n            return false;\n        };\n        AuthorizationService.prototype.isAuthorizedByPermissionName = function (permissionNames) {\n            var _this = this;\n            var permissions = permissionNames.map(function (permission) { return _this.permissionStore.getPermissionName(permission); });\n            return this.isAuthorized.apply(this, permissions);\n        };\n        AuthorizationService.prototype.getPermissionDefinitions = function (onlyAuthorizePermissions) {\n            var _this = this;\n            var permissionDefinitions = [];\n            onlyAuthorizePermissions.forEach(function (permission) {\n                var permissionDefinition = _this.permissionStore.getDefinition(permission);\n                if (permissionDefinition) {\n                    permissionDefinitions.push(permissionDefinition());\n                }\n            });\n            return permissionDefinitions;\n        };\n        AuthorizationService = __decorate([\n            aurelia_dependency_injection_1.autoinject(),\n            __metadata(\"design:paramtypes\", [permission_store_1.default])\n        ], AuthorizationService);\n        return AuthorizationService;\n    }());\n    exports.default = AuthorizationService;\n});\n","import { Renderer } from './renderer';\nimport { invokeLifecycle } from './lifecycle';\nimport { createDialogCloseError } from './dialog-close-error';\nimport { createDialogCancelError } from './dialog-cancel-error';\n/**\n * A controller object for a Dialog instance.\n */\nvar DialogController = /** @class */ (function () {\n    /**\n     * Creates an instance of DialogController.\n     */\n    function DialogController(renderer, settings, resolve, reject) {\n        this.resolve = resolve;\n        this.reject = reject;\n        this.settings = settings;\n        this.renderer = renderer;\n    }\n    /**\n     * @internal\n     */\n    DialogController.prototype.releaseResources = function (result) {\n        var _this = this;\n        return invokeLifecycle(this.controller.viewModel || {}, 'deactivate', result)\n            .then(function () { return _this.renderer.hideDialog(_this); })\n            .then(function () { _this.controller.unbind(); });\n    };\n    /**\n     * @internal\n     */\n    DialogController.prototype.cancelOperation = function () {\n        if (!this.settings.rejectOnCancel) {\n            return { wasCancelled: true };\n        }\n        throw createDialogCancelError();\n    };\n    /**\n     * Closes the dialog with a successful output.\n     * @param output The returned success output.\n     */\n    DialogController.prototype.ok = function (output) {\n        return this.close(true, output);\n    };\n    /**\n     * Closes the dialog with a cancel output.\n     * @param output The returned cancel output.\n     */\n    DialogController.prototype.cancel = function (output) {\n        return this.close(false, output);\n    };\n    /**\n     * Closes the dialog with an error output.\n     * @param output A reason for closing with an error.\n     * @returns Promise An empty promise object.\n     */\n    DialogController.prototype.error = function (output) {\n        var _this = this;\n        var closeError = createDialogCloseError(output);\n        return this.releaseResources(closeError).then(function () { _this.reject(closeError); });\n    };\n    /**\n     * Closes the dialog.\n     * @param ok Whether or not the user input signified success.\n     * @param output The specified output.\n     * @returns Promise An empty promise object.\n     */\n    DialogController.prototype.close = function (ok, output) {\n        var _this = this;\n        if (this.closePromise) {\n            return this.closePromise;\n        }\n        var dialogResult = { wasCancelled: !ok, output: output };\n        return this.closePromise = invokeLifecycle(this.controller.viewModel || {}, 'canDeactivate', dialogResult)\n            .catch(function (reason) {\n            _this.closePromise = undefined;\n            return Promise.reject(reason);\n        }).then(function (canDeactivate) {\n            if (!canDeactivate) {\n                _this.closePromise = undefined; // we are done, do not block consecutive calls\n                return _this.cancelOperation();\n            }\n            return _this.releaseResources(dialogResult).then(function () {\n                if (!_this.settings.rejectOnCancel || ok) {\n                    _this.resolve(dialogResult);\n                }\n                else {\n                    _this.reject(createDialogCancelError(output));\n                }\n                return { wasCancelled: false };\n            }).catch(function (reason) {\n                _this.closePromise = undefined;\n                return Promise.reject(reason);\n            });\n        });\n    };\n    /**\n     * @internal\n     */\n    // tslint:disable-next-line:member-ordering\n    DialogController.inject = [Renderer];\n    return DialogController;\n}());\nexport { DialogController };\n","var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n\nfunction _initDefineProp(target, property, descriptor, context) {\n  if (!descriptor) return;\n  Object.defineProperty(target, property, {\n    enumerable: descriptor.enumerable,\n    configurable: descriptor.configurable,\n    writable: descriptor.writable,\n    value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n  });\n}\n\n\n\nfunction _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n  var desc = {};\n  Object['ke' + 'ys'](descriptor).forEach(function (key) {\n    desc[key] = descriptor[key];\n  });\n  desc.enumerable = !!desc.enumerable;\n  desc.configurable = !!desc.configurable;\n\n  if ('value' in desc || desc.initializer) {\n    desc.writable = true;\n  }\n\n  desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n    return decorator(target, property, desc) || desc;\n  }, desc);\n\n  if (context && desc.initializer !== void 0) {\n    desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n    desc.initializer = undefined;\n  }\n\n  if (desc.initializer === void 0) {\n    Object['define' + 'Property'](target, property, desc);\n    desc = null;\n  }\n\n  return desc;\n}\n\nfunction _initializerWarningHelper(descriptor, context) {\n  throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n}\n\nimport { Container } from 'aurelia-dependency-injection';\nimport { createOverrideContext } from 'aurelia-binding';\nimport { ViewSlot, ViewLocator, customElement, noView, BehaviorInstruction, bindable, CompositionTransaction, CompositionEngine, ShadowDOM, SwapStrategies } from 'aurelia-templating';\nimport { Router } from 'aurelia-router';\nimport { Origin } from 'aurelia-metadata';\nimport { DOM } from 'aurelia-pal';\n\nexport var RouterView = (_dec = customElement('router-view'), _dec(_class = noView(_class = (_class2 = function () {\n  RouterView.inject = function inject() {\n    return [DOM.Element, Container, ViewSlot, Router, ViewLocator, CompositionTransaction, CompositionEngine];\n  };\n\n  function RouterView(element, container, viewSlot, router, viewLocator, compositionTransaction, compositionEngine) {\n    \n\n    _initDefineProp(this, 'swapOrder', _descriptor, this);\n\n    _initDefineProp(this, 'layoutView', _descriptor2, this);\n\n    _initDefineProp(this, 'layoutViewModel', _descriptor3, this);\n\n    _initDefineProp(this, 'layoutModel', _descriptor4, this);\n\n    this.element = element;\n    this.container = container;\n    this.viewSlot = viewSlot;\n    this.router = router;\n    this.viewLocator = viewLocator;\n    this.compositionTransaction = compositionTransaction;\n    this.compositionEngine = compositionEngine;\n    this.router.registerViewPort(this, this.element.getAttribute('name'));\n\n    if (!('initialComposition' in compositionTransaction)) {\n      compositionTransaction.initialComposition = true;\n      this.compositionTransactionNotifier = compositionTransaction.enlist();\n    }\n  }\n\n  RouterView.prototype.created = function created(owningView) {\n    this.owningView = owningView;\n  };\n\n  RouterView.prototype.bind = function bind(bindingContext, overrideContext) {\n    this.container.viewModel = bindingContext;\n    this.overrideContext = overrideContext;\n  };\n\n  RouterView.prototype.process = function process(viewPortInstruction, waitToSwap) {\n    var _this = this;\n\n    var component = viewPortInstruction.component;\n    var childContainer = component.childContainer;\n    var viewModel = component.viewModel;\n    var viewModelResource = component.viewModelResource;\n    var metadata = viewModelResource.metadata;\n    var config = component.router.currentInstruction.config;\n    var viewPort = config.viewPorts ? config.viewPorts[viewPortInstruction.name] || {} : {};\n\n    childContainer.get(RouterViewLocator)._notify(this);\n\n    var layoutInstruction = {\n      viewModel: viewPort.layoutViewModel || config.layoutViewModel || this.layoutViewModel,\n      view: viewPort.layoutView || config.layoutView || this.layoutView,\n      model: viewPort.layoutModel || config.layoutModel || this.layoutModel,\n      router: viewPortInstruction.component.router,\n      childContainer: childContainer,\n      viewSlot: this.viewSlot\n    };\n\n    var viewStrategy = this.viewLocator.getViewStrategy(component.view || viewModel);\n    if (viewStrategy && component.view) {\n      viewStrategy.makeRelativeTo(Origin.get(component.router.container.viewModel.constructor).moduleId);\n    }\n\n    return metadata.load(childContainer, viewModelResource.value, null, viewStrategy, true).then(function (viewFactory) {\n      if (!_this.compositionTransactionNotifier) {\n        _this.compositionTransactionOwnershipToken = _this.compositionTransaction.tryCapture();\n      }\n\n      if (layoutInstruction.viewModel || layoutInstruction.view) {\n        viewPortInstruction.layoutInstruction = layoutInstruction;\n      }\n\n      viewPortInstruction.controller = metadata.create(childContainer, BehaviorInstruction.dynamic(_this.element, viewModel, viewFactory));\n\n      if (waitToSwap) {\n        return null;\n      }\n\n      _this.swap(viewPortInstruction);\n    });\n  };\n\n  RouterView.prototype.swap = function swap(viewPortInstruction) {\n    var _this2 = this;\n\n    var layoutInstruction = viewPortInstruction.layoutInstruction;\n    var previousView = this.view;\n\n    var work = function work() {\n      var swapStrategy = SwapStrategies[_this2.swapOrder] || SwapStrategies.after;\n      var viewSlot = _this2.viewSlot;\n\n      swapStrategy(viewSlot, previousView, function () {\n        return Promise.resolve(viewSlot.add(_this2.view));\n      }).then(function () {\n        _this2._notify();\n      });\n    };\n\n    var ready = function ready(owningView) {\n      viewPortInstruction.controller.automate(_this2.overrideContext, owningView);\n      if (_this2.compositionTransactionOwnershipToken) {\n        return _this2.compositionTransactionOwnershipToken.waitForCompositionComplete().then(function () {\n          _this2.compositionTransactionOwnershipToken = null;\n          return work();\n        });\n      }\n\n      return work();\n    };\n\n    if (layoutInstruction) {\n      if (!layoutInstruction.viewModel) {\n        layoutInstruction.viewModel = {};\n      }\n\n      return this.compositionEngine.createController(layoutInstruction).then(function (controller) {\n        ShadowDOM.distributeView(viewPortInstruction.controller.view, controller.slots || controller.view.slots);\n        controller.automate(createOverrideContext(layoutInstruction.viewModel), _this2.owningView);\n        controller.view.children.push(viewPortInstruction.controller.view);\n        return controller.view || controller;\n      }).then(function (newView) {\n        _this2.view = newView;\n        return ready(newView);\n      });\n    }\n\n    this.view = viewPortInstruction.controller.view;\n\n    return ready(this.owningView);\n  };\n\n  RouterView.prototype._notify = function _notify() {\n    if (this.compositionTransactionNotifier) {\n      this.compositionTransactionNotifier.done();\n      this.compositionTransactionNotifier = null;\n    }\n  };\n\n  return RouterView;\n}(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'swapOrder', [bindable], {\n  enumerable: true,\n  initializer: null\n}), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'layoutView', [bindable], {\n  enumerable: true,\n  initializer: null\n}), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'layoutViewModel', [bindable], {\n  enumerable: true,\n  initializer: null\n}), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'layoutModel', [bindable], {\n  enumerable: true,\n  initializer: null\n})), _class2)) || _class) || _class);\n\nexport var RouterViewLocator = function () {\n  function RouterViewLocator() {\n    var _this3 = this;\n\n    \n\n    this.promise = new Promise(function (resolve) {\n      return _this3.resolve = resolve;\n    });\n  }\n\n  RouterViewLocator.prototype.findNearest = function findNearest() {\n    return this.promise;\n  };\n\n  RouterViewLocator.prototype._notify = function _notify(routerView) {\n    this.resolve(routerView);\n  };\n\n  return RouterViewLocator;\n}();","\n\nfunction mi(name) {\n  throw new Error('History must implement ' + name + '().');\n}\n\nexport var History = function () {\n  function History() {\n    \n  }\n\n  History.prototype.activate = function activate(options) {\n    mi('activate');\n  };\n\n  History.prototype.deactivate = function deactivate() {\n    mi('deactivate');\n  };\n\n  History.prototype.getAbsoluteRoot = function getAbsoluteRoot() {\n    mi('getAbsoluteRoot');\n  };\n\n  History.prototype.navigate = function navigate(fragment, options) {\n    mi('navigate');\n  };\n\n  History.prototype.navigateBack = function navigateBack() {\n    mi('navigateBack');\n  };\n\n  History.prototype.setTitle = function setTitle(title) {\n    mi('setTitle');\n  };\n\n  History.prototype.setState = function setState(key, value) {\n    mi('setState');\n  };\n\n  History.prototype.getState = function getState(key) {\n    mi('getState');\n  };\n\n  return History;\n}();","\nexport class CompanyDeletedMessage {\n  constructor(\n    public companyId: number) { }\n}\n","import { Genre } from 'models/catalogs/genre';\nimport { EducationalLevel } from 'models/catalogs/educationalLevel';\nexport class DemographicData {\n  id: number;\n  personId: number;\n  firstName: string;\n  lastName: string;\n  genre: Genre;\n  birthday: Date;\n  age: number;\n  countryId: number;\n  countryName: string;\n  regionId: number;\n  regionName: string;\n  cityId: number;\n  cityName: string;\n  // educationalLevelCountryId: number;\n  educationalLevel: EducationalLevel;\n  professionId: number;\n  professionName: string;\n}\n","import { ObserverRole } from './observerRole';\nimport { Person } from './person';\nimport { ActivationQuestionaryStatus } from './activationQuestionaryStatus';\n\nexport class PersonObserver {\n  id: number;\n  observerRole: ObserverRole;\n  activationId: number;\n  observedId: number;\n  observer: Person = new Person();\n  weight: number;\n  createdOn: Date;\n  createdByName: string;\n  activationQuestionaryStatus: ActivationQuestionaryStatus;\n  applicationDate: Date;\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { ResponseQuestionary } from \"models/microsite/responseQuestionary\";\nimport { ResponseEvaluation } from \"models/videointerview/responseEvaluation\";\nimport { Result } from \"models/test-result/result\";\nimport { RequestQualificatoniVideoInterview } from \"models/test-person/requestQualificationVideoInterview\";\n\n@autoinject()\nexport class ResponseQuestionaryVideoInterviewService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"PersonTagService\");\n  }\n\n  public async getByActivationQuestionaryId(activationQuestionaryId: number): Promise<ResponseQuestionary> {\n    return await this.client.get(`responsequestionaryvideointerview/get-activation-questionaryId/${activationQuestionaryId}`)\n      .then((response: any) => {\n        return <ResponseQuestionary>response;\n      });\n  }\n\n  public async getResponsesToRateByQuestionaryId(responseQuestionary: ResponseQuestionary): Promise<ResponseEvaluation> {\n    return await this.client.post(\"responsequestionaryvideointerview/get-responses-toRate-questionaryId\", responseQuestionary)\n      .then((response: any) => {\n        return <ResponseEvaluation>response;\n      });\n  }\n\n  public async save(result: Result): Promise<Result> {\n    return await this.client.post(\"responsequestionaryvideointerview/save\", result)\n      .then((response: any) => {\n        return <Result>response;\n      });\n  }\n\n  public async requestQualificationVideoInterview(data: RequestQualificatoniVideoInterview): Promise<boolean> {\n    return await this.client.post(\"responsequestionaryvideointerview/send-request-qualification-video-interview/\", data)\n      .then((response: any) => {\n        return true;\n      });\n  }\n\n}\n","export enum Topic {\n  General = 16,\n  Question1 = 106,\n  Question2 = 107,\n  Question3 = 108,\n  Question4 = 273,\n  Question5 = 274,\n  Question6 = 275,\n  Question7 = 276,\n  Question8 = 277,\n  Question9 = 278,\n  Question10 = 279\n}\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));","module.exports = global[\"Promise\"] = require(\"-!./bluebird.js\");","import { RequestQualificatoniVideoInterview } from './../../../../models/test-person/requestQualificationVideoInterview';\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Person } from \"models/test-person/person\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { PersonLoginInfo } from \"models/test-person/person-login-info\";\nimport { TransactionType } from \"models/talents/transaction-type\";\n\n@autoinject()\nexport class PersonService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"PersonService\");\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"person/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  } \n  public async getAll(): Promise<Person[]> {\n    return await this.client.get(\"person\")\n      .then((response: any) => {\n        return <Person[]>response;\n      });\n  }\n  public async getById(id: number): Promise<Person> {\n    return await this.client.getById(\"person\", id)\n      .then((response: Person) => {\n        return response;\n      });\n  }\n\n  public async getLoginInfoById(id: number): Promise<PersonLoginInfo> {\n    return await this.client.get(`person/login-info/${id}`)\n      .then((response: PersonLoginInfo) => {\n        return response;\n      });\n  }\n\n  public async regeneratePassword(id: number): Promise<PersonLoginInfo> {\n    const response = await this.client.put(`person/regenerate-password/${id}`);\n    try {\n      if(!response.ok) {\n        const error = await response.json();\n        throw error;\n      }\n      const data = await response.json() as PersonLoginInfo;\n      return data;\n    } catch (error) {\n      throw error;\n    }\n  }\n\n\n  public async predictorConsumption(id: number,transactionType: TransactionType): Promise<boolean> {\n    return await this.client.post(`person/predictor-consumption/${id}/transaction-type/${transactionType}/process/0`)\n      .then((response: boolean) => {\n        return response;\n      });\n  }\n\n  public async getPredictorTalentsConsumption(id: number, transactionType: TransactionType): Promise<number> {\n    return await this.client.get(`person/get-predictor-talents-consumption/${id}/transaction-type/${transactionType}/process/0`)\n      .then((response: number) => {\n        return response;\n      });\n  }\n\n\n  //  public async getByObservatedId(parameters: UxDatatableParameters, id: number): Promise<UxDatatableResponse> {\n  //    return await this.client.post(\"person/get-by-observated/\" + id, parameters)\n  //      .then((response: any) => {\n  //        return <UxDatatableResponse>response;\n  //      });\n  //  }\n\n  public async create(model: Person): Promise<Person> {\n    return await this.client.create(\"person\", model)\n      .then((response: any) => {\n        return <Person>response;\n      });\n  }\n\n  public async update(model: Person): Promise<void> {\n    return await this.client.updateById(\"person\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(`person`, id)\n      .then(() => null);\n  }\n\n  public async sendRemindersByFilter(personList: Person[]): Promise<boolean> {\n    return await this.client.post(\"person/list-send-reminder/\", personList)\n      .then((response: any) => {\n        return true;\n      });\n  }\n\n  public async getListByFilter(parameters: UxDatatableParameters): Promise<Person[]> {\n    return await this.client.post(\"person/list-by-filter/\", parameters)\n      .then((response: Person[]) => {\n        return response;\n      });\n  }\n\n  public async requestQualificationVideoInterview(data: RequestQualificatoniVideoInterview): Promise<boolean> {\n    return await this.client.post(\"person/send-request-qualification-video-interview/\", data)\n      .then((response: any) => {\n        return true;\n      });\n  }\n\n  public async sendReminder(id: number): Promise<boolean> {\n    return await this.client.post(\"person/send-reminder/\" + id)\n      .then((response: any) => {\n        return true\n      });\n  }\n\n  public async updateTags(id: number, tags: string): Promise<boolean> {\n    return await this.client.post(\"person/update-tags/\" + id, { tags: tags })\n      .then((response: any) => {\n        return true\n      });\n  }\n\n  public async existsEmail(email: string): Promise<number> {\n    return await this.client.get(\"person/exists-email/\", email)\n      .then((response: number) => {\n        return response;\n      });\n  }\n\n}\n","export enum PositionExportStatus {\n    Pending = 0,\n    Processing = 1,\n    Ready = 2,\n    Error = 3\n}\n","var scope = (typeof global !== \"undefined\" && global) ||\n            (typeof self !== \"undefined\" && self) ||\n            window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n  return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n  return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n  if (timeout) {\n    timeout.close();\n  }\n};\n\nfunction Timeout(id, clearFn) {\n  this._id = id;\n  this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n  this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n  clearTimeout(item._idleTimeoutId);\n\n  var msecs = item._idleTimeout;\n  if (msecs >= 0) {\n    item._idleTimeoutId = setTimeout(function onTimeout() {\n      if (item._onTimeout)\n        item._onTimeout();\n    }, msecs);\n  }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto.  Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n                       (typeof global !== \"undefined\" && global.setImmediate) ||\n                       (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n                         (typeof global !== \"undefined\" && global.clearImmediate) ||\n                         (this && this.clearImmediate);\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var X32WordArray = C_lib.WordArray;\n\n\t    /**\n\t     * x64 namespace.\n\t     */\n\t    var C_x64 = C.x64 = {};\n\n\t    /**\n\t     * A 64-bit word.\n\t     */\n\t    var X64Word = C_x64.Word = Base.extend({\n\t        /**\n\t         * Initializes a newly created 64-bit word.\n\t         *\n\t         * @param {number} high The high 32 bits.\n\t         * @param {number} low The low 32 bits.\n\t         *\n\t         * @example\n\t         *\n\t         *     var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t         */\n\t        init: function (high, low) {\n\t            this.high = high;\n\t            this.low = low;\n\t        }\n\n\t        /**\n\t         * Bitwise NOTs this word.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after negating.\n\t         *\n\t         * @example\n\t         *\n\t         *     var negated = x64Word.not();\n\t         */\n\t        // not: function () {\n\t            // var high = ~this.high;\n\t            // var low = ~this.low;\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Bitwise ANDs this word with the passed word.\n\t         *\n\t         * @param {X64Word} word The x64-Word to AND with this word.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after ANDing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var anded = x64Word.and(anotherX64Word);\n\t         */\n\t        // and: function (word) {\n\t            // var high = this.high & word.high;\n\t            // var low = this.low & word.low;\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Bitwise ORs this word with the passed word.\n\t         *\n\t         * @param {X64Word} word The x64-Word to OR with this word.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after ORing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var ored = x64Word.or(anotherX64Word);\n\t         */\n\t        // or: function (word) {\n\t            // var high = this.high | word.high;\n\t            // var low = this.low | word.low;\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Bitwise XORs this word with the passed word.\n\t         *\n\t         * @param {X64Word} word The x64-Word to XOR with this word.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after XORing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var xored = x64Word.xor(anotherX64Word);\n\t         */\n\t        // xor: function (word) {\n\t            // var high = this.high ^ word.high;\n\t            // var low = this.low ^ word.low;\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Shifts this word n bits to the left.\n\t         *\n\t         * @param {number} n The number of bits to shift.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after shifting.\n\t         *\n\t         * @example\n\t         *\n\t         *     var shifted = x64Word.shiftL(25);\n\t         */\n\t        // shiftL: function (n) {\n\t            // if (n < 32) {\n\t                // var high = (this.high << n) | (this.low >>> (32 - n));\n\t                // var low = this.low << n;\n\t            // } else {\n\t                // var high = this.low << (n - 32);\n\t                // var low = 0;\n\t            // }\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Shifts this word n bits to the right.\n\t         *\n\t         * @param {number} n The number of bits to shift.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after shifting.\n\t         *\n\t         * @example\n\t         *\n\t         *     var shifted = x64Word.shiftR(7);\n\t         */\n\t        // shiftR: function (n) {\n\t            // if (n < 32) {\n\t                // var low = (this.low >>> n) | (this.high << (32 - n));\n\t                // var high = this.high >>> n;\n\t            // } else {\n\t                // var low = this.high >>> (n - 32);\n\t                // var high = 0;\n\t            // }\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Rotates this word n bits to the left.\n\t         *\n\t         * @param {number} n The number of bits to rotate.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after rotating.\n\t         *\n\t         * @example\n\t         *\n\t         *     var rotated = x64Word.rotL(25);\n\t         */\n\t        // rotL: function (n) {\n\t            // return this.shiftL(n).or(this.shiftR(64 - n));\n\t        // },\n\n\t        /**\n\t         * Rotates this word n bits to the right.\n\t         *\n\t         * @param {number} n The number of bits to rotate.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after rotating.\n\t         *\n\t         * @example\n\t         *\n\t         *     var rotated = x64Word.rotR(7);\n\t         */\n\t        // rotR: function (n) {\n\t            // return this.shiftR(n).or(this.shiftL(64 - n));\n\t        // },\n\n\t        /**\n\t         * Adds this word with the passed word.\n\t         *\n\t         * @param {X64Word} word The x64-Word to add with this word.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after adding.\n\t         *\n\t         * @example\n\t         *\n\t         *     var added = x64Word.add(anotherX64Word);\n\t         */\n\t        // add: function (word) {\n\t            // var low = (this.low + word.low) | 0;\n\t            // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t            // var high = (this.high + word.high + carry) | 0;\n\n\t            // return X64Word.create(high, low);\n\t        // }\n\t    });\n\n\t    /**\n\t     * An array of 64-bit words.\n\t     *\n\t     * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t     * @property {number} sigBytes The number of significant bytes in this word array.\n\t     */\n\t    var X64WordArray = C_x64.WordArray = Base.extend({\n\t        /**\n\t         * Initializes a newly created word array.\n\t         *\n\t         * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t         * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.x64.WordArray.create();\n\t         *\n\t         *     var wordArray = CryptoJS.x64.WordArray.create([\n\t         *         CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t         *         CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t         *     ]);\n\t         *\n\t         *     var wordArray = CryptoJS.x64.WordArray.create([\n\t         *         CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t         *         CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t         *     ], 10);\n\t         */\n\t        init: function (words, sigBytes) {\n\t            words = this.words = words || [];\n\n\t            if (sigBytes != undefined) {\n\t                this.sigBytes = sigBytes;\n\t            } else {\n\t                this.sigBytes = words.length * 8;\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts this 64-bit word array to a 32-bit word array.\n\t         *\n\t         * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     var x32WordArray = x64WordArray.toX32();\n\t         */\n\t        toX32: function () {\n\t            // Shortcuts\n\t            var x64Words = this.words;\n\t            var x64WordsLength = x64Words.length;\n\n\t            // Convert\n\t            var x32Words = [];\n\t            for (var i = 0; i < x64WordsLength; i++) {\n\t                var x64Word = x64Words[i];\n\t                x32Words.push(x64Word.high);\n\t                x32Words.push(x64Word.low);\n\t            }\n\n\t            return X32WordArray.create(x32Words, this.sigBytes);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this word array.\n\t         *\n\t         * @return {X64WordArray} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = x64WordArray.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\n\t            // Clone \"words\" array\n\t            var words = clone.words = this.words.slice(0);\n\n\t            // Clone each X64Word object\n\t            var wordsLength = words.length;\n\t            for (var i = 0; i < wordsLength; i++) {\n\t                words[i] = words[i].clone();\n\t            }\n\n\t            return clone;\n\t        }\n\t    });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));","module.exports = __webpack_public_path__ + \"0a455a6508fcd079b38ad2bbe1287765.svg\";","module.exports = __webpack_public_path__ + \"820e90653e890339993a7b8e4eb9023a.png\";","\n\nimport { createFullOverrideContext, updateOverrideContexts, updateOverrideContext, indexOf } from './repeat-utilities';\nimport { mergeSplice } from 'aurelia-binding';\n\nexport var ArrayRepeatStrategy = function () {\n  function ArrayRepeatStrategy() {\n    \n  }\n\n  ArrayRepeatStrategy.prototype.getCollectionObserver = function getCollectionObserver(observerLocator, items) {\n    return observerLocator.getArrayObserver(items);\n  };\n\n  ArrayRepeatStrategy.prototype.instanceChanged = function instanceChanged(repeat, items) {\n    var _this = this;\n\n    var itemsLength = items.length;\n\n    if (!items || itemsLength === 0) {\n      repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\n      return;\n    }\n\n    var children = repeat.views();\n    var viewsLength = children.length;\n\n    if (viewsLength === 0) {\n      this._standardProcessInstanceChanged(repeat, items);\n      return;\n    }\n\n    if (repeat.viewsRequireLifecycle) {\n      var childrenSnapshot = children.slice(0);\n      var itemNameInBindingContext = repeat.local;\n      var matcher = repeat.matcher();\n\n      var itemsPreviouslyInViews = [];\n      var viewsToRemove = [];\n\n      for (var index = 0; index < viewsLength; index++) {\n        var view = childrenSnapshot[index];\n        var oldItem = view.bindingContext[itemNameInBindingContext];\n\n        if (indexOf(items, oldItem, matcher) === -1) {\n          viewsToRemove.push(view);\n        } else {\n          itemsPreviouslyInViews.push(oldItem);\n        }\n      }\n\n      var updateViews = void 0;\n      var removePromise = void 0;\n\n      if (itemsPreviouslyInViews.length > 0) {\n        removePromise = repeat.removeViews(viewsToRemove, true, !repeat.viewsRequireLifecycle);\n        updateViews = function updateViews() {\n          for (var _index = 0; _index < itemsLength; _index++) {\n            var item = items[_index];\n            var indexOfView = indexOf(itemsPreviouslyInViews, item, matcher, _index);\n            var _view = void 0;\n\n            if (indexOfView === -1) {\n              var overrideContext = createFullOverrideContext(repeat, items[_index], _index, itemsLength);\n              repeat.insertView(_index, overrideContext.bindingContext, overrideContext);\n\n              itemsPreviouslyInViews.splice(_index, 0, undefined);\n            } else if (indexOfView === _index) {\n              _view = children[indexOfView];\n              itemsPreviouslyInViews[indexOfView] = undefined;\n            } else {\n              _view = children[indexOfView];\n              repeat.moveView(indexOfView, _index);\n              itemsPreviouslyInViews.splice(indexOfView, 1);\n              itemsPreviouslyInViews.splice(_index, 0, undefined);\n            }\n\n            if (_view) {\n              updateOverrideContext(_view.overrideContext, _index, itemsLength);\n            }\n          }\n\n          _this._inPlaceProcessItems(repeat, items);\n        };\n      } else {\n        removePromise = repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\n        updateViews = function updateViews() {\n          return _this._standardProcessInstanceChanged(repeat, items);\n        };\n      }\n\n      if (removePromise instanceof Promise) {\n        removePromise.then(updateViews);\n      } else {\n        updateViews();\n      }\n    } else {\n      this._inPlaceProcessItems(repeat, items);\n    }\n  };\n\n  ArrayRepeatStrategy.prototype._standardProcessInstanceChanged = function _standardProcessInstanceChanged(repeat, items) {\n    for (var i = 0, ii = items.length; i < ii; i++) {\n      var overrideContext = createFullOverrideContext(repeat, items[i], i, ii);\n      repeat.addView(overrideContext.bindingContext, overrideContext);\n    }\n  };\n\n  ArrayRepeatStrategy.prototype._inPlaceProcessItems = function _inPlaceProcessItems(repeat, items) {\n    var itemsLength = items.length;\n    var viewsLength = repeat.viewCount();\n\n    while (viewsLength > itemsLength) {\n      viewsLength--;\n      repeat.removeView(viewsLength, true, !repeat.viewsRequireLifecycle);\n    }\n\n    var local = repeat.local;\n\n    for (var i = 0; i < viewsLength; i++) {\n      var view = repeat.view(i);\n      var last = i === itemsLength - 1;\n      var middle = i !== 0 && !last;\n\n      if (view.bindingContext[local] === items[i] && view.overrideContext.$middle === middle && view.overrideContext.$last === last) {\n        continue;\n      }\n\n      view.bindingContext[local] = items[i];\n      view.overrideContext.$middle = middle;\n      view.overrideContext.$last = last;\n      repeat.updateBindings(view);\n    }\n\n    for (var _i = viewsLength; _i < itemsLength; _i++) {\n      var overrideContext = createFullOverrideContext(repeat, items[_i], _i, itemsLength);\n      repeat.addView(overrideContext.bindingContext, overrideContext);\n    }\n  };\n\n  ArrayRepeatStrategy.prototype.instanceMutated = function instanceMutated(repeat, array, splices) {\n    var _this2 = this;\n\n    if (repeat.__queuedSplices) {\n      for (var i = 0, ii = splices.length; i < ii; ++i) {\n        var _splices$i = splices[i],\n            index = _splices$i.index,\n            removed = _splices$i.removed,\n            addedCount = _splices$i.addedCount;\n\n        mergeSplice(repeat.__queuedSplices, index, removed, addedCount);\n      }\n\n      repeat.__array = array.slice(0);\n      return;\n    }\n\n    var maybePromise = this._runSplices(repeat, array.slice(0), splices);\n    if (maybePromise instanceof Promise) {\n      var queuedSplices = repeat.__queuedSplices = [];\n\n      var runQueuedSplices = function runQueuedSplices() {\n        if (!queuedSplices.length) {\n          repeat.__queuedSplices = undefined;\n          repeat.__array = undefined;\n          return;\n        }\n\n        var nextPromise = _this2._runSplices(repeat, repeat.__array, queuedSplices) || Promise.resolve();\n        queuedSplices = repeat.__queuedSplices = [];\n        nextPromise.then(runQueuedSplices);\n      };\n\n      maybePromise.then(runQueuedSplices);\n    }\n  };\n\n  ArrayRepeatStrategy.prototype._runSplices = function _runSplices(repeat, array, splices) {\n    var _this3 = this;\n\n    var removeDelta = 0;\n    var rmPromises = [];\n\n    for (var i = 0, ii = splices.length; i < ii; ++i) {\n      var splice = splices[i];\n      var removed = splice.removed;\n\n      for (var j = 0, jj = removed.length; j < jj; ++j) {\n        var viewOrPromise = repeat.removeView(splice.index + removeDelta + rmPromises.length, true);\n        if (viewOrPromise instanceof Promise) {\n          rmPromises.push(viewOrPromise);\n        }\n      }\n      removeDelta -= splice.addedCount;\n    }\n\n    if (rmPromises.length > 0) {\n      return Promise.all(rmPromises).then(function () {\n        var spliceIndexLow = _this3._handleAddedSplices(repeat, array, splices);\n        updateOverrideContexts(repeat.views(), spliceIndexLow);\n      });\n    }\n\n    var spliceIndexLow = this._handleAddedSplices(repeat, array, splices);\n    updateOverrideContexts(repeat.views(), spliceIndexLow);\n\n    return undefined;\n  };\n\n  ArrayRepeatStrategy.prototype._handleAddedSplices = function _handleAddedSplices(repeat, array, splices) {\n    var spliceIndex = void 0;\n    var spliceIndexLow = void 0;\n    var arrayLength = array.length;\n    for (var i = 0, ii = splices.length; i < ii; ++i) {\n      var splice = splices[i];\n      var addIndex = spliceIndex = splice.index;\n      var end = splice.index + splice.addedCount;\n\n      if (typeof spliceIndexLow === 'undefined' || spliceIndexLow === null || spliceIndexLow > splice.index) {\n        spliceIndexLow = spliceIndex;\n      }\n\n      for (; addIndex < end; ++addIndex) {\n        var overrideContext = createFullOverrideContext(repeat, array[addIndex], addIndex, arrayLength);\n        repeat.insertView(addIndex, overrideContext.bindingContext, overrideContext);\n      }\n    }\n\n    return spliceIndexLow;\n  };\n\n  return ArrayRepeatStrategy;\n}();","\n\nimport { createFullOverrideContext, updateOverrideContexts } from './repeat-utilities';\n\nexport var MapRepeatStrategy = function () {\n  function MapRepeatStrategy() {\n    \n  }\n\n  MapRepeatStrategy.prototype.getCollectionObserver = function getCollectionObserver(observerLocator, items) {\n    return observerLocator.getMapObserver(items);\n  };\n\n  MapRepeatStrategy.prototype.instanceChanged = function instanceChanged(repeat, items) {\n    var _this = this;\n\n    var removePromise = repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\n    if (removePromise instanceof Promise) {\n      removePromise.then(function () {\n        return _this._standardProcessItems(repeat, items);\n      });\n      return;\n    }\n    this._standardProcessItems(repeat, items);\n  };\n\n  MapRepeatStrategy.prototype._standardProcessItems = function _standardProcessItems(repeat, items) {\n    var index = 0;\n    var overrideContext = void 0;\n\n    items.forEach(function (value, key) {\n      overrideContext = createFullOverrideContext(repeat, value, index, items.size, key);\n      repeat.addView(overrideContext.bindingContext, overrideContext);\n      ++index;\n    });\n  };\n\n  MapRepeatStrategy.prototype.instanceMutated = function instanceMutated(repeat, map, records) {\n    var key = void 0;\n    var i = void 0;\n    var ii = void 0;\n    var overrideContext = void 0;\n    var removeIndex = void 0;\n    var addIndex = void 0;\n    var record = void 0;\n    var rmPromises = [];\n    var viewOrPromise = void 0;\n\n    for (i = 0, ii = records.length; i < ii; ++i) {\n      record = records[i];\n      key = record.key;\n      switch (record.type) {\n        case 'update':\n          removeIndex = this._getViewIndexByKey(repeat, key);\n          viewOrPromise = repeat.removeView(removeIndex, true, !repeat.viewsRequireLifecycle);\n          if (viewOrPromise instanceof Promise) {\n            rmPromises.push(viewOrPromise);\n          }\n          overrideContext = createFullOverrideContext(repeat, map.get(key), removeIndex, map.size, key);\n          repeat.insertView(removeIndex, overrideContext.bindingContext, overrideContext);\n          break;\n        case 'add':\n          addIndex = repeat.viewCount() <= map.size - 1 ? repeat.viewCount() : map.size - 1;\n          overrideContext = createFullOverrideContext(repeat, map.get(key), addIndex, map.size, key);\n          repeat.insertView(map.size - 1, overrideContext.bindingContext, overrideContext);\n          break;\n        case 'delete':\n          if (record.oldValue === undefined) {\n            return;\n          }\n          removeIndex = this._getViewIndexByKey(repeat, key);\n          viewOrPromise = repeat.removeView(removeIndex, true, !repeat.viewsRequireLifecycle);\n          if (viewOrPromise instanceof Promise) {\n            rmPromises.push(viewOrPromise);\n          }\n          break;\n        case 'clear':\n          repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\n          break;\n        default:\n          continue;\n      }\n    }\n\n    if (rmPromises.length > 0) {\n      Promise.all(rmPromises).then(function () {\n        updateOverrideContexts(repeat.views(), 0);\n      });\n    } else {\n      updateOverrideContexts(repeat.views(), 0);\n    }\n  };\n\n  MapRepeatStrategy.prototype._getViewIndexByKey = function _getViewIndexByKey(repeat, key) {\n    var i = void 0;\n    var ii = void 0;\n    var child = void 0;\n\n    for (i = 0, ii = repeat.viewCount(); i < ii; ++i) {\n      child = repeat.view(i);\n      if (child.bindingContext[repeat.key] === key) {\n        return i;\n      }\n    }\n\n    return undefined;\n  };\n\n  return MapRepeatStrategy;\n}();","\n\nimport { createFullOverrideContext, updateOverrideContexts } from './repeat-utilities';\n\nexport var SetRepeatStrategy = function () {\n  function SetRepeatStrategy() {\n    \n  }\n\n  SetRepeatStrategy.prototype.getCollectionObserver = function getCollectionObserver(observerLocator, items) {\n    return observerLocator.getSetObserver(items);\n  };\n\n  SetRepeatStrategy.prototype.instanceChanged = function instanceChanged(repeat, items) {\n    var _this = this;\n\n    var removePromise = repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\n    if (removePromise instanceof Promise) {\n      removePromise.then(function () {\n        return _this._standardProcessItems(repeat, items);\n      });\n      return;\n    }\n    this._standardProcessItems(repeat, items);\n  };\n\n  SetRepeatStrategy.prototype._standardProcessItems = function _standardProcessItems(repeat, items) {\n    var index = 0;\n    var overrideContext = void 0;\n\n    items.forEach(function (value) {\n      overrideContext = createFullOverrideContext(repeat, value, index, items.size);\n      repeat.addView(overrideContext.bindingContext, overrideContext);\n      ++index;\n    });\n  };\n\n  SetRepeatStrategy.prototype.instanceMutated = function instanceMutated(repeat, set, records) {\n    var value = void 0;\n    var i = void 0;\n    var ii = void 0;\n    var overrideContext = void 0;\n    var removeIndex = void 0;\n    var record = void 0;\n    var rmPromises = [];\n    var viewOrPromise = void 0;\n\n    for (i = 0, ii = records.length; i < ii; ++i) {\n      record = records[i];\n      value = record.value;\n      switch (record.type) {\n        case 'add':\n          var size = Math.max(set.size - 1, 0);\n          overrideContext = createFullOverrideContext(repeat, value, size, set.size);\n          repeat.insertView(size, overrideContext.bindingContext, overrideContext);\n          break;\n        case 'delete':\n          removeIndex = this._getViewIndexByValue(repeat, value);\n          viewOrPromise = repeat.removeView(removeIndex, true, !repeat.viewsRequireLifecycle);\n          if (viewOrPromise instanceof Promise) {\n            rmPromises.push(viewOrPromise);\n          }\n          break;\n        case 'clear':\n          repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\n          break;\n        default:\n          continue;\n      }\n    }\n\n    if (rmPromises.length > 0) {\n      Promise.all(rmPromises).then(function () {\n        updateOverrideContexts(repeat.views(), 0);\n      });\n    } else {\n      updateOverrideContexts(repeat.views(), 0);\n    }\n  };\n\n  SetRepeatStrategy.prototype._getViewIndexByValue = function _getViewIndexByValue(repeat, value) {\n    var i = void 0;\n    var ii = void 0;\n    var child = void 0;\n\n    for (i = 0, ii = repeat.viewCount(); i < ii; ++i) {\n      child = repeat.view(i);\n      if (child.bindingContext[repeat.local] === value) {\n        return i;\n      }\n    }\n\n    return undefined;\n  };\n\n  return SetRepeatStrategy;\n}();","\n\nimport { createFullOverrideContext, updateOverrideContexts } from './repeat-utilities';\n\nexport var NumberRepeatStrategy = function () {\n  function NumberRepeatStrategy() {\n    \n  }\n\n  NumberRepeatStrategy.prototype.getCollectionObserver = function getCollectionObserver() {\n    return null;\n  };\n\n  NumberRepeatStrategy.prototype.instanceChanged = function instanceChanged(repeat, value) {\n    var _this = this;\n\n    var removePromise = repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\n    if (removePromise instanceof Promise) {\n      removePromise.then(function () {\n        return _this._standardProcessItems(repeat, value);\n      });\n      return;\n    }\n    this._standardProcessItems(repeat, value);\n  };\n\n  NumberRepeatStrategy.prototype._standardProcessItems = function _standardProcessItems(repeat, value) {\n    var childrenLength = repeat.viewCount();\n    var i = void 0;\n    var ii = void 0;\n    var overrideContext = void 0;\n    var viewsToRemove = void 0;\n\n    value = Math.floor(value);\n    viewsToRemove = childrenLength - value;\n\n    if (viewsToRemove > 0) {\n      if (viewsToRemove > childrenLength) {\n        viewsToRemove = childrenLength;\n      }\n\n      for (i = 0, ii = viewsToRemove; i < ii; ++i) {\n        repeat.removeView(childrenLength - (i + 1), true, !repeat.viewsRequireLifecycle);\n      }\n\n      return;\n    }\n\n    for (i = childrenLength, ii = value; i < ii; ++i) {\n      overrideContext = createFullOverrideContext(repeat, i, i, ii);\n      repeat.addView(overrideContext.bindingContext, overrideContext);\n    }\n\n    updateOverrideContexts(repeat.views(), 0);\n  };\n\n  return NumberRepeatStrategy;\n}();","var __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { UserManager } from 'oidc-client';\r\nimport OpenIdConnectConfigurationManager from './open-id-connect-configuration-manager';\r\nimport { LoginRedirectKey } from './open-id-connect-constants';\r\nimport OpenIdConnectLogger from './open-id-connect-logger';\r\nimport OpenIdConnectRouting from './open-id-connect-routing';\r\nvar OpenIdConnect = (function () {\r\n    function OpenIdConnect(openIdConnectRouting, router, configuration, logger, userManager) {\r\n        this.openIdConnectRouting = openIdConnectRouting;\r\n        this.router = router;\r\n        this.configuration = configuration;\r\n        this.logger = logger;\r\n        this.userManager = userManager;\r\n    }\r\n    OpenIdConnect.prototype.configure = function (routerConfiguration) {\r\n        if (typeof routerConfiguration === 'undefined' || routerConfiguration === null) {\r\n            throw new Error('routerConfiguration parameter must not be undefined or null');\r\n        }\r\n        this.openIdConnectRouting.configureRouter(routerConfiguration);\r\n    };\r\n    OpenIdConnect.prototype.login = function (args) {\r\n        if (args === void 0) { args = {}; }\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var loginRedirectValue;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        if (this.router.currentInstruction) {\r\n                            loginRedirectValue = this.router.currentInstruction.queryParams[LoginRedirectKey];\r\n                            if (loginRedirectValue) {\r\n                                args.data = __assign({}, args.data);\r\n                                args.data[LoginRedirectKey] = loginRedirectValue;\r\n                            }\r\n                        }\r\n                        return [4, this.userManager.signinRedirect(args)];\r\n                    case 1:\r\n                        _a.sent();\r\n                        return [2];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    OpenIdConnect.prototype.logout = function (args) {\r\n        if (args === void 0) { args = {}; }\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var err_1;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        _a.trys.push([0, 2, , 3]);\r\n                        return [4, this.userManager.signoutRedirect(args)];\r\n                    case 1:\r\n                        _a.sent();\r\n                        return [3, 3];\r\n                    case 2:\r\n                        err_1 = _a.sent();\r\n                        if (err_1.message === 'no end session endpoint') {\r\n                            this.logger.debug(err_1);\r\n                            this.logger.debug('The user remains logged in at the authorization server.');\r\n                            this.router.navigate(this.configuration.logoutRedirectRoute);\r\n                        }\r\n                        else {\r\n                            throw err_1;\r\n                        }\r\n                        return [3, 3];\r\n                    case 3: return [2];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    OpenIdConnect.prototype.loginSilent = function (args) {\r\n        if (args === void 0) { args = {}; }\r\n        return this.userManager.signinSilent(args);\r\n    };\r\n    OpenIdConnect.prototype.getUser = function () {\r\n        return this.userManager.getUser();\r\n    };\r\n    OpenIdConnect.prototype.addOrRemoveHandler = function (key, handler) {\r\n        if (!key.startsWith('add') && !key.startsWith('remove')) {\r\n            var message = 'The \\'addOrRemoveHandlers\\' method expects a \\'key\\' argument ';\r\n            message += 'that starts with either \\'add\\' or \\'remove\\'. Instead we ';\r\n            message += 'recevied ' + key;\r\n            throw new TypeError(message);\r\n        }\r\n        var addOrRemove = this.userManager.events[key];\r\n        addOrRemove.call(this.userManager.events, handler);\r\n    };\r\n    OpenIdConnect.prototype.observeUser = function (callback) {\r\n        var _this = this;\r\n        this.addOrRemoveHandler('addUserLoaded', function () { return _this.getUser().then(callback); });\r\n        this.addOrRemoveHandler('addUserUnloaded', function () { return _this.getUser().then(callback); });\r\n        return this.getUser().then(callback);\r\n    };\r\n    OpenIdConnect = __decorate([\r\n        autoinject,\r\n        __metadata(\"design:paramtypes\", [OpenIdConnectRouting,\r\n            Router,\r\n            OpenIdConnectConfigurationManager,\r\n            OpenIdConnectLogger,\r\n            UserManager])\r\n    ], OpenIdConnect);\r\n    return OpenIdConnect;\r\n}());\r\nexport default OpenIdConnect;\r\n//# sourceMappingURL=open-id-connect.js.map","\nexport enum Parameter {\n  ReportTemplate = 1,\n  Sheets = 2,\n  Language = 3,\n  DiscType = 4,\n  Person = 5,\n  Position = 6,\n  Team = 7,\n  Organization = 8,\n  TwoPeople = 9,\n  Observers = 10,\n  Positions = 11,\n  CompareToPerson = 12,\n  CompareToPosition = 13,\n  CompareToTeam = 14,\n  CompareToOrganization = 15,\n  Questionary = 16,\n  Competences = 17,\n  People = 18,\n  Leader = 19,\n  ThreePeople = 20,\n  Adjustment = 21,\n  OneOrTwoPeople = 22,\n  ZeroOrOnePosition = 23,\n  Activation = 24,\n  QuestionaryTeam = 25,\n  TwoObservers = 26\n}\n","import { Renderer } from './renderer';\nimport { DefaultDialogSettings } from './dialog-settings';\nimport { DialogRenderer } from './dialog-renderer';\nimport { DOM } from 'aurelia-pal';\nvar defaultRenderer = DialogRenderer;\nvar resources = {\n    'ux-dialog': function () { return import('./resources/ux-dialog').then(function (m) { return m.UxDialog; }); },\n    'ux-dialog-header': function () { return import('./resources/ux-dialog-header').then(function (m) { return m.UxDialogHeader; }); },\n    'ux-dialog-body': function () { return import('./resources/ux-dialog-body').then(function (m) { return m.UxDialogBody; }); },\n    'ux-dialog-footer': function () { return import('./resources/ux-dialog-footer').then(function (m) { return m.UxDialogFooter; }); },\n    'attach-focus': function () { return import('./resources/attach-focus').then(function (m) { return m.AttachFocus; }); }\n};\n// tslint:disable-next-line:max-line-length\nvar defaultCSSText = \"ux-dialog-container,ux-dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0}ux-dialog-overlay{opacity:0}ux-dialog-overlay.active{opacity:1}ux-dialog-container{display:block;transition:opacity .2s linear;opacity:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}ux-dialog-container.active{opacity:1}ux-dialog-container>div{padding:30px}ux-dialog-container>div>div{display:block;min-width:300px;width:-moz-fit-content;width:-webkit-fit-content;width:fit-content;height:-moz-fit-content;height:-webkit-fit-content;height:fit-content;margin:auto}ux-dialog-container,ux-dialog-container>div,ux-dialog-container>div>div{outline:0}ux-dialog{display:table;box-shadow:0 5px 15px rgba(0,0,0,.5);border:1px solid rgba(0,0,0,.2);border-radius:5px;padding:3px;min-width:300px;width:-moz-fit-content;width:-webkit-fit-content;width:fit-content;height:-moz-fit-content;height:-webkit-fit-content;height:fit-content;margin:auto;border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;background:#fff}ux-dialog>ux-dialog-header{display:block;padding:16px;border-bottom:1px solid #e5e5e5}ux-dialog>ux-dialog-header>button{float:right;border:none;display:block;width:32px;height:32px;background:0 0;font-size:22px;line-height:16px;margin:-14px -16px 0 0;padding:0;cursor:pointer}ux-dialog>ux-dialog-body{display:block;padding:16px}ux-dialog>ux-dialog-footer{display:block;padding:6px;border-top:1px solid #e5e5e5;text-align:right}ux-dialog>ux-dialog-footer button{color:#333;background-color:#fff;padding:6px 12px;font-size:14px;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid #ccc;border-radius:4px;margin:5px 0 5px 5px}ux-dialog>ux-dialog-footer button:disabled{cursor:default;opacity:.45}ux-dialog>ux-dialog-footer button:hover:enabled{color:#333;background-color:#e6e6e6;border-color:#adadad}.ux-dialog-open{overflow:hidden}\";\n/**\n * A configuration builder for the dialog plugin.\n */\nvar DialogConfiguration = /** @class */ (function () {\n    function DialogConfiguration(frameworkConfiguration, applySetter) {\n        var _this = this;\n        this.renderer = defaultRenderer;\n        this.cssText = defaultCSSText;\n        this.resources = [];\n        this.fwConfig = frameworkConfiguration;\n        this.settings = this.fwConfig.container.get(DefaultDialogSettings);\n        applySetter(function () { return _this._apply(); });\n    }\n    DialogConfiguration.prototype._apply = function () {\n        var _this = this;\n        this.fwConfig.transient(Renderer, this.renderer);\n        if (this.cssText) {\n            DOM.injectStyles(this.cssText);\n        }\n        if (this.resources.length) {\n            return Promise.all(this.resources.map(function (name) { return resources[name](); }))\n                .then(function (modules) { _this.fwConfig.globalResources(modules); });\n        }\n    };\n    /**\n     * Selects the Aurelia conventional defaults for the dialog plugin.\n     * @return This instance.\n     */\n    DialogConfiguration.prototype.useDefaults = function () {\n        return this.useRenderer(defaultRenderer)\n            .useCSS(defaultCSSText)\n            .useStandardResources();\n    };\n    /**\n     * Exports the standard set of dialog behaviors to Aurelia's global resources.\n     * @return This instance.\n     */\n    DialogConfiguration.prototype.useStandardResources = function () {\n        return this.useResource('ux-dialog')\n            .useResource('ux-dialog-header')\n            .useResource('ux-dialog-body')\n            .useResource('ux-dialog-footer')\n            .useResource('attach-focus');\n    };\n    /**\n     * Exports the chosen dialog element or view to Aurelia's global resources.\n     * @param resourceName The name of the dialog resource to export.\n     * @return This instance.\n     */\n    DialogConfiguration.prototype.useResource = function (resourceName) {\n        this.resources.push(resourceName);\n        return this;\n    };\n    /**\n     * Configures the plugin to use a specific dialog renderer.\n     * @param renderer A type that implements the Renderer interface.\n     * @param settings Global settings for the renderer.\n     * @return This instance.\n     */\n    DialogConfiguration.prototype.useRenderer = function (renderer, settings) {\n        this.renderer = renderer;\n        if (settings) {\n            Object.assign(this.settings, settings);\n        }\n        return this;\n    };\n    /**\n     * Configures the plugin to use specific css. You can pass an empty string to clear any set css.\n     * @param cssText The css to use in place of the default styles.\n     * @return This instance.\n     */\n    DialogConfiguration.prototype.useCSS = function (cssText) {\n        this.cssText = cssText;\n        return this;\n    };\n    return DialogConfiguration;\n}());\nexport { DialogConfiguration };\n","\nexport var translations = {\n  ar: {\n    translation: {\n      'now': 'الآن',\n      'second_ago': 'منذ __count__ ثانية',\n      'second_ago_plural': 'منذ __count__ ثواني',\n      'second_in': 'في __count__ ثانية',\n      'second_in_plural': 'في __count__ ثواني',\n      'minute_ago': 'منذ __count__ دقيقة',\n      'minute_ago_plural': 'منذ __count__ دقائق',\n      'minute_in': 'في __count__ دقيقة',\n      'minute_in_plural': 'في __count__ دقائق',\n      'hour_ago': 'منذ __count__ ساعة',\n      'hour_ago_plural': 'منذ __count__ ساعات',\n      'hour_in': 'في __count__ ساعة',\n      'hour_in_plural': 'في __count__ ساعات',\n      'day_ago': 'منذ __count__ يوم',\n      'day_ago_plural': 'منذ __count__ أيام',\n      'day_in': 'في __count__ يوم',\n      'day_in_plural': 'في __count__ أيام',\n      'month_ago': 'منذ __count__ شهر',\n      'month_ago_plural': 'منذ __count__ أشهر',\n      'month_in': 'في __count__ شهر',\n      'month_in_plural': 'في __count__ أشهر',\n      'year_ago': 'منذ __count__ سنة',\n      'year_ago_plural': 'منذ __count__ سنوات',\n      'year_in': 'في __count__ سنة',\n      'year_in_plural': 'في __count__ سنوات'\n    }\n  },\n  en: {\n    translation: {\n      'now': 'just now',\n      'second_ago': '__count__ second ago',\n      'second_ago_plural': '__count__ seconds ago',\n      'second_in': 'in __count__ second',\n      'second_in_plural': 'in __count__ seconds',\n      'minute_ago': '__count__ minute ago',\n      'minute_ago_plural': '__count__ minutes ago',\n      'minute_in': 'in __count__ minute',\n      'minute_in_plural': 'in __count__ minutes',\n      'hour_ago': '__count__ hour ago',\n      'hour_ago_plural': '__count__ hours ago',\n      'hour_in': 'in __count__ hour',\n      'hour_in_plural': 'in __count__ hours',\n      'day_ago': '__count__ day ago',\n      'day_ago_plural': '__count__ days ago',\n      'day_in': 'in __count__ day',\n      'day_in_plural': 'in __count__ days',\n      'month_ago': '__count__ month ago',\n      'month_ago_plural': '__count__ months ago',\n      'month_in': 'in __count__ month',\n      'month_in_plural': 'in __count__ months',\n      'year_ago': '__count__ year ago',\n      'year_ago_plural': '__count__ years ago',\n      'year_in': 'in __count__ year',\n      'year_in_plural': 'in __count__ years'\n    }\n  },\n  es: {\n    translation: {\n      'now': 'ahora mismo',\n      'second_ago': 'hace __count__ segundo',\n      'second_ago_plural': 'hace __count__ segundos',\n      'second_in': 'en __count__ segundo',\n      'second_in_plural': 'en __count__ segundos',\n      'minute_ago': 'hace __count__ minuto',\n      'minute_ago_plural': 'hace __count__ minutos',\n      'minute_in': 'en __count__ minuto',\n      'minute_in_plural': 'en __count__ minutos',\n      'hour_ago': 'hace __count__ hora',\n      'hour_ago_plural': 'hace __count__ horas',\n      'hour_in': 'en __count__ hora',\n      'hour_in_plural': 'en __count__ horas',\n      'day_ago': 'hace __count__ día',\n      'day_ago_plural': 'hace __count__ días',\n      'day_in': 'en __count__ día',\n      'day_in_plural': 'en __count__ días',\n      'month_ago': 'hace __count__ mes',\n      'month_ago_plural': 'hace __count__ meses',\n      'month_in': 'en __count__ mes',\n      'month_in_plural': 'en __count__ meses',\n      'year_ago': 'hace __count__ año',\n      'year_ago_plural': 'hace __count__ años',\n      'year_in': 'en __count__ año',\n      'year_in_plural': 'en __count__ años'\n    }\n  },\n  it: {\n    translation: {\n      'now': 'adesso',\n      'second_ago': '__count__ secondo fa',\n      'second_ago_plural': '__count__ secondi fa',\n      'second_in': 'in __count__ secondo',\n      'second_in_plural': 'in __count__ secondi',\n      'minute_ago': '__count__ minuto fa',\n      'minute_ago_plural': '__count__ minuti fa',\n      'minute_in': 'in __count__ minuto',\n      'minute_in_plural': 'in __count__ minuti',\n      'hour_ago': '__count__ ora fa',\n      'hour_ago_plural': '__count__ ore fa',\n      'hour_in': 'in __count__ ora',\n      'hour_in_plural': 'in __count__ ore',\n      'day_ago': '__count__ giorno fa',\n      'day_ago_plural': '__count__ giorni fa',\n      'day_in': 'in __count__ giorno',\n      'day_in_plural': 'in __count__ giorni',\n      'month_ago': '__count__ mese fa',\n      'month_ago_plural': '__count__ mesi fa',\n      'month_in': 'in __count__ mese',\n      'month_in_plural': 'in __count__ mesi',\n      'year_ago': '__count__ anno fa',\n      'year_ago_plural': '__count__ anni fa',\n      'year_in': 'in __count__ anno',\n      'year_in_plural': 'in __count__ anni'\n    }\n  },\n  de: {\n    translation: {\n      'now': 'jetzt gerade',\n      'second_ago': 'vor __count__ Sekunde',\n      'second_ago_plural': 'vor __count__ Sekunden',\n      'second_in': 'in __count__ Sekunde',\n      'second_in_plural': 'in __count__ Sekunden',\n      'minute_ago': 'vor __count__ Minute',\n      'minute_ago_plural': 'vor __count__ Minuten',\n      'minute_in': 'in __count__ Minute',\n      'minute_in_plural': 'in __count__ Minuten',\n      'hour_ago': 'vor __count__ Stunde',\n      'hour_ago_plural': 'vor __count__ Stunden',\n      'hour_in': 'in __count__ Stunde',\n      'hour_in_plural': 'in __count__ Stunden',\n      'day_ago': 'vor __count__ Tag',\n      'day_ago_plural': 'vor __count__ Tagen',\n      'day_in': 'in __count__ Tag',\n      'day_in_plural': 'in __count__ Tagen',\n      'month_ago': 'vor __count__ Monat',\n      'month_ago_plural': 'vor __count__ Monaten',\n      'month_in': 'in __count__ Monat',\n      'month_in_plural': 'in __count__ Monaten',\n      'year_ago': 'vor __count__ Jahr',\n      'year_ago_plural': 'vor __count__ Jahren',\n      'year_in': 'in __count__ Jahr',\n      'year_in_plural': 'in __count__ Jahren'\n    }\n  },\n  nl: {\n    translation: {\n      'now': 'zonet',\n      'second_ago': '__count__ seconde geleden',\n      'second_ago_plural': '__count__ seconden geleden',\n      'second_in': 'in __count__ seconde',\n      'second_in_plural': 'in __count__ seconden',\n      'minute_ago': '__count__ minuut geleden',\n      'minute_ago_plural': '__count__ minuten geleden',\n      'minute_in': 'in __count__ minuut',\n      'minute_in_plural': 'in __count__ minuten',\n      'hour_ago': '__count__ uur geleden',\n      'hour_ago_plural': '__count__ uren geleden',\n      'hour_in': 'in __count__ uur',\n      'hour_in_plural': 'in __count__ uren',\n      'day_ago': '__count__ dag geleden',\n      'day_ago_plural': '__count__ dagen geleden',\n      'day_in': 'in __count__ dag',\n      'day_in_plural': 'in __count__ dagen',\n      'month_ago': '__count__ maand geleden',\n      'month_ago_plural': '__count__ maanden geleden',\n      'month_in': 'in __count__ maand',\n      'month_in_plural': 'in __count__ maanden',\n      'year_ago': '__count__ jaar geleden',\n      'year_ago_plural': '__count__ jaren geleden',\n      'year_in': 'in __count__ jaar',\n      'year_in_plural': 'in __count__ jaren'\n    }\n  },\n  fr: {\n    translation: {\n      'now': 'maintenant',\n      'second_ago': 'il y a __count__ seconde',\n      'second_ago_plural': 'il y a __count__ secondes',\n      'second_in': 'dans __count__ seconde',\n      'second_in_plural': 'dans __count__ secondes',\n      'minute_ago': 'il y a __count__ minute',\n      'minute_ago_plural': 'il y a __count__ minutes',\n      'minute_in': 'dans __count__ minute',\n      'minute_in_plural': 'dans __count__ minutes',\n      'hour_ago': 'il y a __count__ heure',\n      'hour_ago_plural': 'il y a __count__ heures',\n      'hour_in': 'dans __count__ heure',\n      'hour_in_plural': 'dans __count__ heures',\n      'day_ago': 'il y a __count__ jour',\n      'day_ago_plural': 'il y a __count__ jours',\n      'day_in': 'dans __count__ jour',\n      'day_in_plural': 'dans __count__ jours',\n      'month_ago': 'il y a __count__ mois',\n      'month_ago_plural': 'il y a __count__ mois',\n      'month_in': 'dans __count__ mois',\n      'month_in_plural': 'dans __count__ mois',\n      'year_ago': 'il y a __count__ an',\n      'year_ago_plural': 'il y a __count__ ans',\n      'year_in': 'dans __count__ an',\n      'year_in_plural': 'dans __count__ ans'\n    }\n  },\n  th: {\n    translation: {\n      'now': 'เมื่อกี้',\n      'second_ago': '__count__ วินาที ที่ผ่านมา',\n      'second_ago_plural': '__count__ วินาที ที่ผ่านมา',\n      'second_in': 'อีก __count__ วินาที',\n      'second_in_plural': 'อีก __count__ วินาที',\n      'minute_ago': '__count__ นาที ที่ผ่านมา',\n      'minute_ago_plural': '__count__ นาที ที่ผ่านมา',\n      'minute_in': 'อีก __count__ นาที',\n      'minute_in_plural': 'อีก __count__ นาที',\n      'hour_ago': '__count__ ชั่วโมง ที่ผ่านมา',\n      'hour_ago_plural': '__count__ ชั่วโมง ที่ผ่านมา',\n      'hour_in': 'อีก __count__ ชั่วโมง',\n      'hour_in_plural': 'อีก __count__ ชั่วโมง',\n      'day_ago': '__count__ วัน ที่ผ่านมา',\n      'day_ago_plural': '__count__ วัน ที่ผ่านมา',\n      'day_in': 'อีก __count__ วัน',\n      'day_in_plural': 'อีก __count__ วัน'\n    }\n  },\n  sv: {\n    translation: {\n      'now': 'just nu',\n      'second_ago': '__count__ sekund sedan',\n      'second_ago_plural': '__count__ sekunder sedan',\n      'second_in': 'om __count__ sekund',\n      'second_in_plural': 'om __count__ sekunder',\n      'minute_ago': '__count__ minut sedan',\n      'minute_ago_plural': '__count__ minuter sedan',\n      'minute_in': 'om __count__ minut',\n      'minute_in_plural': 'om __count__ minuter',\n      'hour_ago': '__count__ timme sedan',\n      'hour_ago_plural': '__count__ timmar sedan',\n      'hour_in': 'om __count__ timme',\n      'hour_in_plural': 'om __count__ timmar',\n      'day_ago': '__count__ dag sedan',\n      'day_ago_plural': '__count__ dagar sedan',\n      'day_in': 'om __count__ dag',\n      'day_in_plural': 'om __count__ dagar'\n    }\n  },\n  da: {\n    translation: {\n      'now': 'lige nu',\n      'second_ago': '__count__ sekunder siden',\n      'second_ago_plural': '__count__ sekunder siden',\n      'second_in': 'om __count__ sekund',\n      'second_in_plural': 'om __count__ sekunder',\n      'minute_ago': '__count__ minut siden',\n      'minute_ago_plural': '__count__ minutter siden',\n      'minute_in': 'om __count__ minut',\n      'minute_in_plural': 'om __count__ minutter',\n      'hour_ago': '__count__ time siden',\n      'hour_ago_plural': '__count__ timer siden',\n      'hour_in': 'om __count__ time',\n      'hour_in_plural': 'om __count__ timer',\n      'day_ago': '__count__ dag siden',\n      'day_ago_plural': '__count__ dage siden',\n      'day_in': 'om __count__ dag',\n      'day_in_plural': 'om __count__ dage'\n    }\n  },\n  no: {\n    translation: {\n      'now': 'akkurat nå',\n      'second_ago': '__count__ sekund siden',\n      'second_ago_plural': '__count__ sekunder siden',\n      'second_in': 'om __count__ sekund',\n      'second_in_plural': 'om __count__ sekunder',\n      'minute_ago': '__count__ minutt siden',\n      'minute_ago_plural': '__count__ minutter siden',\n      'minute_in': 'om __count__ minutt',\n      'minute_in_plural': 'om __count__ minutter',\n      'hour_ago': '__count__ time siden',\n      'hour_ago_plural': '__count__ timer siden',\n      'hour_in': 'om __count__ time',\n      'hour_in_plural': 'om __count__ timer',\n      'day_ago': '__count__ dag siden',\n      'day_ago_plural': '__count__ dager siden',\n      'day_in': 'om __count__ dag',\n      'day_in_plural': 'om __count__ dager'\n    }\n  },\n  ja: {\n    translation: {\n      'now': 'たった今',\n      'second_ago': '__count__ 秒前',\n      'second_ago_plural': '__count__ 秒前',\n      'second_in': 'あと __count__ 秒',\n      'second_in_plural': 'あと __count__ 秒',\n      'minute_ago': '__count__ 分前',\n      'minute_ago_plural': '__count__ 分前',\n      'minute_in': 'あと __count__ 分',\n      'minute_in_plural': 'あと __count__ 分',\n      'hour_ago': '__count__ 時間前',\n      'hour_ago_plural': '__count__ 時間前',\n      'hour_in': 'あと __count__ 時間',\n      'hour_in_plural': 'あと __count__ 時間',\n      'day_ago': '__count__ 日間前',\n      'day_ago_plural': '__count__ 日間前',\n      'day_in': 'あと __count__ 日間',\n      'day_in_plural': 'あと __count__ 日間',\n      'month_ago': '__count__ ヶ月前',\n      'month_ago_plural': '__count__ ヶ月前',\n      'month_in': 'あと __count__ ヶ月前',\n      'month_in_plural': 'あと __count__ ヶ月前',\n      'year_ago': '__count__ 年前',\n      'year_ago_plural': '__count__ 年前',\n      'year_in': 'あと __count__ 年',\n      'year_in_plural': 'あと __count__ 年'\n    }\n  },\n  jp: {\n    translation: {\n      'now': 'たった今',\n      'second_ago': '__count__ 秒前',\n      'second_ago_plural': '__count__ 秒前',\n      'second_in': 'あと __count__ 秒',\n      'second_in_plural': 'あと __count__ 秒',\n      'minute_ago': '__count__ 分前',\n      'minute_ago_plural': '__count__ 分前',\n      'minute_in': 'あと __count__ 分',\n      'minute_in_plural': 'あと __count__ 分',\n      'hour_ago': '__count__ 時間前',\n      'hour_ago_plural': '__count__ 時間前',\n      'hour_in': 'あと __count__ 時間',\n      'hour_in_plural': 'あと __count__ 時間',\n      'day_ago': '__count__ 日間前',\n      'day_ago_plural': '__count__ 日間前',\n      'day_in': 'あと __count__ 日間',\n      'day_in_plural': 'あと __count__ 日間',\n      'month_ago': '__count__ ヶ月前',\n      'month_ago_plural': '__count__ ヶ月前',\n      'month_in': 'あと __count__ ヶ月前',\n      'month_in_plural': 'あと __count__ ヶ月前',\n      'year_ago': '__count__ 年前',\n      'year_ago_plural': '__count__ 年前',\n      'year_in': 'あと __count__ 年',\n      'year_in_plural': 'あと __count__ 年'\n    }\n  },\n  pt: {\n    translation: {\n      'now': 'neste exato momento',\n      'second_ago': '__count__ segundo atrás',\n      'second_ago_plural': '__count__ segundos atrás',\n      'second_in': 'em __count__ segundo',\n      'second_in_plural': 'em __count__ segundos',\n      'minute_ago': '__count__ minuto atrás',\n      'minute_ago_plural': '__count__ minutos atrás',\n      'minute_in': 'em __count__ minuto',\n      'minute_in_plural': 'em __count__ minutos',\n      'hour_ago': '__count__ hora atrás',\n      'hour_ago_plural': '__count__ horas atrás',\n      'hour_in': 'em __count__ hora',\n      'hour_in_plural': 'em __count__ horas',\n      'day_ago': '__count__ dia atrás',\n      'day_ago_plural': '__count__ dias atrás',\n      'day_in': 'em __count__ dia',\n      'day_in_plural': 'em __count__ dias',\n      'month_ago': '__count__ mês atrás',\n      'month_ago_plural': '__count__ meses atrás',\n      'month_in': 'em __count__ mês',\n      'month_in_plural': 'em __count__ meses',\n      'year_ago': '__count__ ano atrás',\n      'year_ago_plural': '__count__ anos atrás',\n      'year_in': 'em __count__ ano',\n      'year_in_plural': 'em __count__ anos'\n    }\n  },\n  zh: {\n    translation: {\n      'now': '刚才',\n      'second_ago': '__count__ 秒钟前',\n      'second_ago_plural': '__count__ 秒钟前',\n      'second_in': '__count__ 秒内',\n      'second_in_plural': '__count__ 秒内',\n      'minute_ago': '__count__ 分钟前',\n      'minute_ago_plural': '__count__ 分钟前',\n      'minute_in': '__count__ 分钟内',\n      'minute_in_plural': '__count__ 分钟内',\n      'hour_ago': '__count__ 小时前',\n      'hour_ago_plural': '__count__ 小时前',\n      'hour_in': '__count__ 小时内',\n      'hour_in_plural': '__count__ 小时内',\n      'day_ago': '__count__ 天前',\n      'day_ago_plural': '__count__ 天前',\n      'day_in': '__count__ 天内',\n      'day_in_plural': '__count__ 天内',\n      'month_ago': '__count__ 月前',\n      'month_ago_plural': '__count__ 月前',\n      'month_in': '__count__ 月内',\n      'month_in_plural': '__count__ 月内',\n      'year_ago': '__count__ 年前',\n      'year_ago_plural': '__count__ 年前',\n      'year_in': '__count__ 年内',\n      'year_in_plural': '__count__ 年内'\n    }\n  },\n  'zh-CN': {\n    translation: {\n      'now': '刚才',\n      'second_ago': '__count__ 秒钟前',\n      'second_ago_plural': '__count__ 秒钟前',\n      'second_in': '__count__ 秒内',\n      'second_in_plural': '__count__ 秒内',\n      'minute_ago': '__count__ 分钟前',\n      'minute_ago_plural': '__count__ 分钟前',\n      'minute_in': '__count__ 分钟内',\n      'minute_in_plural': '__count__ 分钟内',\n      'hour_ago': '__count__ 小时前',\n      'hour_ago_plural': '__count__ 小时前',\n      'hour_in': '__count__ 小时内',\n      'hour_in_plural': '__count__ 小时内',\n      'day_ago': '__count__ 天前',\n      'day_ago_plural': '__count__ 天前',\n      'day_in': '__count__ 天内',\n      'day_in_plural': '__count__ 天内',\n      'month_ago': '__count__ 月前',\n      'month_ago_plural': '__count__ 月前',\n      'month_in': '__count__ 月内',\n      'month_in_plural': '__count__ 月内',\n      'year_ago': '__count__ 年前',\n      'year_ago_plural': '__count__ 年前',\n      'year_in': '__count__ 年内',\n      'year_in_plural': '__count__ 年内'\n    }\n  },\n  'zh-HK': {\n    translation: {\n      'now': '剛才',\n      'second_ago': '__count__ 秒鐘前',\n      'second_ago_plural': '__count__ 秒鐘前',\n      'second_in': '__count__ 秒內',\n      'second_in_plural': '__count__ 秒內',\n      'minute_ago': '__count__ 分鐘前',\n      'minute_ago_plural': '__count__ 分鐘前',\n      'minute_in': '__count__ 分鐘內',\n      'minute_in_plural': '__count__ 分鐘內',\n      'hour_ago': '__count__ 小時前',\n      'hour_ago_plural': '__count__ 小時前',\n      'hour_in': '__count__ 小時內',\n      'hour_in_plural': '__count__ 小時內',\n      'day_ago': '__count__ 天前',\n      'day_ago_plural': '__count__ 天前',\n      'day_in': '__count__ 天內',\n      'day_in_plural': '__count__ 天內',\n      'month_ago': '__count__ 月前',\n      'month_ago_plural': '__count__ 月前',\n      'month_in': '__count__ 月內',\n      'month_in_plural': '__count__ 月內',\n      'year_ago': '__count__ 年前',\n      'year_ago_plural': '__count__ 年前',\n      'year_in': '__count__ 年內',\n      'year_in_plural': '__count__ 年內'\n    }\n  },\n  'zh-TW': {\n    translation: {\n      'now': '剛才',\n      'second_ago': '__count__ 秒鐘前',\n      'second_ago_plural': '__count__ 秒鐘前',\n      'second_in': '__count__ 秒內',\n      'second_in_plural': '__count__ 秒內',\n      'minute_ago': '__count__ 分鐘前',\n      'minute_ago_plural': '__count__ 分鐘前',\n      'minute_in': '__count__ 分鐘內',\n      'minute_in_plural': '__count__ 分鐘內',\n      'hour_ago': '__count__ 小時前',\n      'hour_ago_plural': '__count__ 小時前',\n      'hour_in': '__count__ 小時內',\n      'hour_in_plural': '__count__ 小時內',\n      'day_ago': '__count__ 天前',\n      'day_ago_plural': '__count__ 天前',\n      'day_in': '__count__ 天內',\n      'day_in_plural': '__count__ 天內',\n      'month_ago': '__count__ 月前',\n      'month_ago_plural': '__count__ 月前',\n      'month_in': '__count__ 月內',\n      'month_in_plural': '__count__ 月內',\n      'year_ago': '__count__ 年前',\n      'year_ago_plural': '__count__ 年前',\n      'year_in': '__count__ 年內',\n      'year_in_plural': '__count__ 年內'\n    }\n  }\n};","\n\nimport { I18N } from './i18n';\nimport { translations } from './defaultTranslations/relative.time';\nimport { EventAggregator } from 'aurelia-event-aggregator';\n\nexport var RelativeTime = function () {\n  RelativeTime.inject = function inject() {\n    return [I18N, EventAggregator];\n  };\n\n  function RelativeTime(i18n, ea) {\n    var _this = this;\n\n    \n\n    this.service = i18n;\n    this.ea = ea;\n\n    this.service.i18nextReady().then(function () {\n      _this.setup();\n    });\n    this.ea.subscribe('i18n:locale:changed', function (locales) {\n      _this.setup(locales);\n    });\n  }\n\n  RelativeTime.prototype.setup = function setup(locales) {\n    var trans = translations.default || translations;\n    var fallbackLng = this.service.i18next.fallbackLng;\n\n    var alternateFb = fallbackLng || this.service.i18next.options.fallbackLng;\n    if (Array.isArray(alternateFb) && alternateFb.length > 0) {\n      alternateFb = alternateFb[0];\n    }\n\n    var key = (locales && locales.newValue ? locales.newValue : this.service.getLocale()) || alternateFb;\n\n    var index = 0;\n\n    if ((index = key.indexOf('-')) >= 0) {\n      var baseLocale = key.substring(0, index);\n\n      if (trans[baseLocale]) {\n        this.addTranslationResource(baseLocale, trans[baseLocale].translation);\n      }\n    }\n\n    if (trans[key]) {\n      this.addTranslationResource(key, trans[key].translation);\n    }\n    if (trans[fallbackLng]) {\n      this.addTranslationResource(key, trans[fallbackLng].translation);\n    }\n  };\n\n  RelativeTime.prototype.addTranslationResource = function addTranslationResource(key, translation) {\n    var options = this.service.i18next.options;\n\n    if (options.interpolation && options.interpolation.prefix !== '__' || options.interpolation.suffix !== '__') {\n      for (var subkey in translation) {\n        translation[subkey] = translation[subkey].replace('__count__', (options.interpolation.prefix || '{{') + 'count' + (options.interpolation.suffix || '}}'));\n      }\n    }\n\n    this.service.i18next.addResources(key, options.defaultNS, translation);\n  };\n\n  RelativeTime.prototype.getRelativeTime = function getRelativeTime(time) {\n    var now = new Date();\n    var diff = now.getTime() - time.getTime();\n\n    var timeDiff = this.getTimeDiffDescription(diff, 'year', 31104000000);\n    if (!timeDiff) {\n      timeDiff = this.getTimeDiffDescription(diff, 'month', 2592000000);\n      if (!timeDiff) {\n        timeDiff = this.getTimeDiffDescription(diff, 'day', 86400000);\n        if (!timeDiff) {\n          timeDiff = this.getTimeDiffDescription(diff, 'hour', 3600000);\n          if (!timeDiff) {\n            timeDiff = this.getTimeDiffDescription(diff, 'minute', 60000);\n            if (!timeDiff) {\n              timeDiff = this.getTimeDiffDescription(diff, 'second', 1000);\n              if (!timeDiff) {\n                timeDiff = this.service.tr('now');\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return timeDiff;\n  };\n\n  RelativeTime.prototype.getTimeDiffDescription = function getTimeDiffDescription(diff, unit, timeDivisor) {\n    var unitAmount = (diff / timeDivisor).toFixed(0);\n    if (unitAmount > 0) {\n      return this.service.tr(unit, { count: parseInt(unitAmount, 10), context: 'ago' });\n    } else if (unitAmount < 0) {\n      var abs = Math.abs(unitAmount);\n      return this.service.tr(unit, { count: abs, context: 'in' });\n    }\n\n    return null;\n  };\n\n  return RelativeTime;\n}();","\n\nexport var IfCore = function () {\n  function IfCore(viewFactory, viewSlot) {\n    \n\n    this.viewFactory = viewFactory;\n    this.viewSlot = viewSlot;\n    this.view = null;\n    this.bindingContext = null;\n    this.overrideContext = null;\n\n    this.showing = false;\n  }\n\n  IfCore.prototype.bind = function bind(bindingContext, overrideContext) {\n    this.bindingContext = bindingContext;\n    this.overrideContext = overrideContext;\n  };\n\n  IfCore.prototype.unbind = function unbind() {\n    if (this.view === null) {\n      return;\n    }\n\n    this.view.unbind();\n\n    if (!this.viewFactory.isCaching) {\n      return;\n    }\n\n    if (this.showing) {\n      this.showing = false;\n      this.viewSlot.remove(this.view, true, true);\n    } else {\n      this.view.returnToCache();\n    }\n\n    this.view = null;\n  };\n\n  IfCore.prototype._show = function _show() {\n    if (this.showing) {\n      if (!this.view.isBound) {\n        this.view.bind(this.bindingContext, this.overrideContext);\n      }\n      return;\n    }\n\n    if (this.view === null) {\n      this.view = this.viewFactory.create();\n    }\n\n    if (!this.view.isBound) {\n      this.view.bind(this.bindingContext, this.overrideContext);\n    }\n\n    this.showing = true;\n    return this.viewSlot.add(this.view);\n  };\n\n  IfCore.prototype._hide = function _hide() {\n    var _this = this;\n\n    if (!this.showing) {\n      return;\n    }\n\n    this.showing = false;\n    var removed = this.viewSlot.remove(this.view);\n\n    if (removed instanceof Promise) {\n      return removed.then(function () {\n        return _this.view.unbind();\n      });\n    }\n\n    this.view.unbind();\n  };\n\n  return IfCore;\n}();","var _dec, _class;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\nimport { resolver } from 'aurelia-dependency-injection';\n\nexport var extend = function extend(destination, source) {\n  for (var property in source) {\n    destination[property] = source[property];\n  }\n\n  return destination;\n};\n\nexport var isInteger = Number.isInteger || function (value) {\n  return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n};\n\nexport var assignObjectToKeys = function assignObjectToKeys(root, obj) {\n  if (obj === undefined || obj === null) {\n    return obj;\n  }\n\n  var opts = {};\n\n  Object.keys(obj).map(function (key) {\n    if (_typeof(obj[key]) === 'object') {\n      extend(opts, assignObjectToKeys(key, obj[key]));\n    } else {\n      opts[root !== '' ? root + '.' + key : key] = obj[key];\n    }\n  });\n\n  return opts;\n};\n\nexport var LazyOptional = (_dec = resolver(), _dec(_class = function () {\n  function LazyOptional(key) {\n    \n\n    this.key = key;\n  }\n\n  LazyOptional.prototype.get = function get(container) {\n    var _this = this;\n\n    return function () {\n      if (container.hasResolver(_this.key, false)) {\n        return container.get(_this.key);\n      }\n      return null;\n    };\n  };\n\n  LazyOptional.of = function of(key) {\n    return new LazyOptional(key);\n  };\n\n  return LazyOptional;\n}()) || _class);","export class CompanyDiscProfile {\n  d: string;\n  i: string;\n  s: string;\n  c: string;\n}\n","export class News {\nid: number;\nname: string;\nroleId:number;\nfranchiseMaster: number[] = [];\nfranchise : number[] = [];\nplanTest: number[]= [];\nplanSelection:number[] = [];\nisActive: boolean;\nurlRedirect:string;\nlogFileId:number; \n\nthumbnailImage: string;\nthumbnailImageUrl: string;\nfileName: string;\nisClassActivate: boolean;\n\n\nfranchisesMaster: string[] = [];\nfranchises : string[] = [];\nplansTest: string[] = [];\nplansSelection: string[] = []\n}\n","\nexport class QuestionaryGroupThematicAssociate {\n  questionaryGroupId : number;\n  thematicGroupId : number;\n  thematicVariableId : number;\n  questionaryId : number;\n}\n","export class PersonCommentEditMessage {\n\n}\n","export class Comment {\n  id: number;\n  personId: number;\n  commentText: string;\n\n  createdOn: Date;\n  createdByName: string;\n}\n","import { Person } from \"models/test-person/person\";\nimport { ActivationQuestionaryStatus } from \"models/test-person/activationQuestionaryStatus\";\n\nexport class PositionEvaluator {\n  id: number;\n  positionId: number;\n  personId: number;\n  evaluator: Person = new Person();\n  weight: number;\n\n  createdOn: Date;\n  createdByName: string;\n\n  activationQuestionaryStatus: ActivationQuestionaryStatus;\n  applicationDate: Date;\n}\n","\nexport enum ItemToQualify {\n  Person,\n  Position,\n  Team,\n  Organization,\n  Observed\n}\n","import { Team } from \"./team\";\nimport { Person } from \"../test-person/person\";\n\nexport class TeamPerson {\n  id : number;\n  teamId  :number;\n  team : Team;\n  personId : number;\n  person : Person;\n  activationId: number;\n}\n","import { Person } from \"models/test-person/person\";\nimport { ActivationQuestionaryStatus } from \"models/test-person/activationQuestionaryStatus\";\n\nexport class OrganizationEvaluator {\n  id: number;\n  organizationId: number;\n  personId: number;\n  evaluator: Person = new Person();\n  weight: number;\n\n  createdOn: Date;\n  createdByName: string;\n\n  activationQuestionaryStatus: ActivationQuestionaryStatus;\n  applicationDate: Date;\n}\n","export class Profile {\n  id: number;\n  name: string;\n  description: string;\n  shareWithPeers: boolean;\n  companyId: number;\n  parentId: number;\n  parentName: string;\n  isDefault: boolean;\n}\n","export enum ObservationType {\n  PublicNote,\n  InternalNote,\n  Addendum\n}\n","import { Notify } from './notify';\nimport { ActivityStatus } from './activityStatus';\n\nexport class Activity {\n  id:number;\n  name: string;\n  responsible: string;\n  date: Date;\n  hasAlarm: boolean;\n  agreementId: number;\n  activityStatus: ActivityStatus;\n  email: string;\n  notify: Notify;\n}\n","export class AgreementFile {\n  id: number;\n\n  file: any;\n  fileName: string;\n  agreementId: number;\n  fileUrl: string;\n\n  createdOn: Date;\n  createdByName: string;\n}\n","export class TalentAssignmentMessage {\n}\n","export class CompanyDiscStyle {\n  id: number;\n  discStyleId: number;\n  discStyleName: string;\n  discStyleDescription: string;\n  name: string;\n  languageId: number;\n}\n","import { ReviewerStatusType } from \"./reviewerStatusType\";\n\nexport class QuestionHistory {\n  id: number;\n  questionId: number;\n  observation: string;\n  createdOn: Date;\n  createdByName: string;\n  reviewerStatusType?: ReviewerStatusType;\n}\n","import { SpendMode } from './spendMode';\nimport { TestPlanItemType } from './testPlanItemType';\nimport { VisualizationType } from './visualizationType';\n\nexport class TestPlanItem {\n  id: number;\n  testPlanItemType: TestPlanItemType;\n  questionaryId: number;\n  questionaryName: string;\n  reportTemplateId: number;\n  reportTemplateName: string;\n  sheetName: string;\n  spendMode: SpendMode;\n  talentsPrice: number;\n  planId: number;\n  warning: boolean;\n  selectionPlanItemId:number;\n  visualizationType: VisualizationType;\n  talentsAdditionalPrice: number;\n  sheetId: number;\n}\n","import { Plan } from './../../../../models/plans/plan';\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { Agreement } from 'models/agreements/agreement';\nimport { AgreementExpirationWarning } from 'models/agreements/agreement-expiration-warning';\nimport config from 'config.js';\nimport { CompanySettings } from 'models/companies/company-settings';\n@autoinject()\nexport class AgreementService {\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tpublic client: CompanyAppHttpClient) {\n\t\tthis.logger = LogManager.getLogger(\"Agreement\");\n\t}\n\n\tpublic async getAll(companyId: number): Promise<Agreement[]> {\n\t\tlet backendUrl = config.URLS_BACKEND;\n\t\tthis.client.baseUrl = `${backendUrl}/api/v1/company/${companyId}/`;\n\t\treturn await this.client.get(\"agreement\")\n\t\t\t.then((response: any) => {\n\t\t\t\treturn <Agreement[]>response;\n\t\t\t});\n\t}\n\n\tpublic async getLastAgreementByCompany(companyId: number): Promise<Agreement> {\n\t\treturn await this.client.get(`agreement/get-last-agreement-by-company`)\n\t\t\t.then((response: any) => {\n\t\t\t\treturn <Agreement>response;\n\t\t\t});\n\t}\n\n\tpublic async getExpirationWarning(companyId: number): Promise<AgreementExpirationWarning> {\n\t\tlet backendUrl = config.URLS_BACKEND;\n\t\tthis.client.baseUrl = `${backendUrl}/api/v1/company/${companyId}/`;\n\t\treturn await this.client.get(\"agreement/expiration-warning\")\n\t\t\t.then((response: any) => {\n\t\t\t\treturn <AgreementExpirationWarning>response;\n\t\t\t});\n\t}\n\n\tpublic async hasSeenExpirationMessage(companyId: number): Promise<void> {\n\t\tlet backendUrl = config.URLS_BACKEND;\n\t\tthis.client.baseUrl = `${backendUrl}/api/v1/company/${companyId}/`;\n\t\treturn await this.client.update(\"agreement/has-seen-expiration-message\")\n\t\t\t.then(() => null);\n\t}\n\n\tpublic async listToApprove(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n\t\treturn await this.client.post(\"agreement/list-to-approve\", parameters)\n\t\t\t.then((response: any) => {\n\t\t\t\treturn <UxDatatableResponse>response;\n\t\t\t});\n\t}\n\n\tpublic async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n\t\treturn await this.client.post(\"agreement/list\", parameters)\n\t\t\t.then((response: any) => {\n\t\t\t\treturn <UxDatatableResponse>response;\n\t\t\t});\n\t}\n\n\tpublic async robothunterByCompany(companyId: number): Promise<Plan> {\n\t\treturn await this.client.get(\"agreement/robothunter-by-company\")\n\t\t\t.then((response: any) => {\n\t\t\t\treturn <Plan>response;\n\t\t\t});\n\t}\n\n\tpublic async getAgreementsByCompanyId(companyId: number, isRobotHunter: boolean): Promise<Plan[]> {\n\t\tlet backendUrl = config.URLS_BACKEND;\n\t\tthis.client.baseUrl = `${backendUrl}/api/v1/company/${companyId}/`;\n\t\treturn await this.client.get(`agreement/get-agreement-by-company/${isRobotHunter}`)\n\t\t\t.then((response: Plan[]) => {\n\t\t\t\treturn <Plan[]>response;\n\t\t\t})\n\t}\n\n\n\tpublic async getReadOnlyById(id: number): Promise<Agreement> {\n\t\treturn await this.client.get(`agreement/get-readonly-mode/${id}`)\n\t\t\t.then((response: any) => {\n\t\t\t\treturn <Agreement>response;\n\t\t\t});\n\t}\n\n\tpublic async getById(id: number): Promise<Agreement> {\n\t\treturn await this.client.getById(\"agreement\", id)\n\t\t\t.then((response: any) => {\n\t\t\t\treturn <Agreement>response;\n\t\t\t});\n\t}\n\n\tpublic async create(model: Agreement): Promise<Agreement> {\n\t\treturn await this.client.create(\"agreement\", model)\n\t\t\t.then((response: any) => {\n\t\t\t\treturn <Agreement>response;\n\t\t\t});\n\t}\n\n\tpublic async update(model: Agreement): Promise<void> {\n\t\treturn await this.client.updateById(\"agreement\", model.id, null, model)\n\t\t\t.then(() => null);\n\t}\n\n\tpublic async changeStatusToDraft(model: Agreement): Promise<void> {\n\t\treturn await this.client.updateById(\"agreement/change-status-to-draft\", model.id, null, model)\n\t\t\t.then(() => null);\n\t}\n\n\tpublic async changeStatusToReview(model: Agreement): Promise<void> {\n\t\treturn await this.client.updateById(\"agreement/change-status-to-review\", model.id, null, model)\n\t\t\t.then(() => null);\n\t}\n\n\tpublic async changeStatusToForwarded(model: Agreement): Promise<void> {\n\t\treturn await this.client.updateById(\"agreement/change-status-to-forwarded\", model.id, null, model)\n\t\t\t.then(() => null);\n\t}\n\n\tpublic async changeStatusToValid(model: Agreement): Promise<void> {\n\t\treturn await this.client.updateById(\"agreement/change-status-to-valid\", model.id, null, model)\n\t\t\t.then(() => null);\n\t}\n\n\tpublic async changeStatusToCancelled(model: Agreement): Promise<void> {\n\t\treturn await this.client.updateById(\"agreement/change-status-to-cancelled\", model.id, null, model)\n\t\t\t.then(() => null);\n\t}\n\n\tpublic async resendToApprove(model: Agreement): Promise<void> {\n\t\treturn await this.client.updateById(\"agreement/resend-to-approve\", model.id, null, model)\n\t\t\t.then(() => null);\n\t}\n\n\tpublic async delete(id: number): Promise<void> {\n\t\treturn await this.client.deleteById(\"agreement\", id)\n\t\t\t.then(() => null);\n\t}\n\n\tpublic async getTestControlCompanySettingsByCompanyId(companyId: number): Promise<CompanySettings> {\n\t\tlet backendUrl = config.URLS_BACKEND;\n\t\tthis.client.baseUrl = `${backendUrl}/api/v1/company/${companyId}/`;\n\t\treturn await this.client.get(`agreement/get-test-control-company-settings-by-company-id`)\n\t\t\t.then((response: CompanySettings) => {\n\t\t\t\treturn <CompanySettings>response;\n\t\t\t})\n\t}\n}\n","import { OtherPlanItemType } from \"./otherPlanItemType\";\n\nexport class OtherPlanItem{\n  id: number;\n  otherPlanItemType: OtherPlanItemType;\n  description: string;\n  planId: number;\n}\n","var moment = module.exports = require(\"./moment-timezone\");\r\nmoment.tz.load(require('./data/packed/latest.json'));\r\n","/*!\n * typeahead.js 1.2.0\n * https://github.com/twitter/typeahead.js\n * Copyright 2013-2017 Twitter, Inc. and other contributors; Licensed MIT\n */\n\n(function(root, factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define([ \"jquery\" ], function(a0) {\n            return root[\"Bloodhound\"] = factory(a0);\n        });\n    } else if (typeof exports === \"object\") {\n        module.exports = factory(require(\"jquery\"));\n    } else {\n        root[\"Bloodhound\"] = factory(root[\"jQuery\"]);\n    }\n})(this, function($) {\n    var _ = function() {\n        \"use strict\";\n        return {\n            isMsie: function() {\n                return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\n            },\n            isBlankString: function(str) {\n                return !str || /^\\s*$/.test(str);\n            },\n            escapeRegExChars: function(str) {\n                return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n            },\n            isString: function(obj) {\n                return typeof obj === \"string\";\n            },\n            isNumber: function(obj) {\n                return typeof obj === \"number\";\n            },\n            isArray: $.isArray,\n            isFunction: $.isFunction,\n            isObject: $.isPlainObject,\n            isUndefined: function(obj) {\n                return typeof obj === \"undefined\";\n            },\n            isElement: function(obj) {\n                return !!(obj && obj.nodeType === 1);\n            },\n            isJQuery: function(obj) {\n                return obj instanceof $;\n            },\n            toStr: function toStr(s) {\n                return _.isUndefined(s) || s === null ? \"\" : s + \"\";\n            },\n            bind: $.proxy,\n            each: function(collection, cb) {\n                $.each(collection, reverseArgs);\n                function reverseArgs(index, value) {\n                    return cb(value, index);\n                }\n            },\n            map: $.map,\n            filter: $.grep,\n            every: function(obj, test) {\n                var result = true;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (!(result = test.call(null, val, key, obj))) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            some: function(obj, test) {\n                var result = false;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (result = test.call(null, val, key, obj)) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            mixin: $.extend,\n            identity: function(x) {\n                return x;\n            },\n            clone: function(obj) {\n                return $.extend(true, {}, obj);\n            },\n            getIdGenerator: function() {\n                var counter = 0;\n                return function() {\n                    return counter++;\n                };\n            },\n            templatify: function templatify(obj) {\n                return $.isFunction(obj) ? obj : template;\n                function template() {\n                    return String(obj);\n                }\n            },\n            defer: function(fn) {\n                setTimeout(fn, 0);\n            },\n            debounce: function(func, wait, immediate) {\n                var timeout, result;\n                return function() {\n                    var context = this, args = arguments, later, callNow;\n                    later = function() {\n                        timeout = null;\n                        if (!immediate) {\n                            result = func.apply(context, args);\n                        }\n                    };\n                    callNow = immediate && !timeout;\n                    clearTimeout(timeout);\n                    timeout = setTimeout(later, wait);\n                    if (callNow) {\n                        result = func.apply(context, args);\n                    }\n                    return result;\n                };\n            },\n            throttle: function(func, wait) {\n                var context, args, timeout, result, previous, later;\n                previous = 0;\n                later = function() {\n                    previous = new Date();\n                    timeout = null;\n                    result = func.apply(context, args);\n                };\n                return function() {\n                    var now = new Date(), remaining = wait - (now - previous);\n                    context = this;\n                    args = arguments;\n                    if (remaining <= 0) {\n                        clearTimeout(timeout);\n                        timeout = null;\n                        previous = now;\n                        result = func.apply(context, args);\n                    } else if (!timeout) {\n                        timeout = setTimeout(later, remaining);\n                    }\n                    return result;\n                };\n            },\n            stringify: function(val) {\n                return _.isString(val) ? val : JSON.stringify(val);\n            },\n            guid: function() {\n                function _p8(s) {\n                    var p = (Math.random().toString(16) + \"000000000\").substr(2, 8);\n                    return s ? \"-\" + p.substr(0, 4) + \"-\" + p.substr(4, 4) : p;\n                }\n                return \"tt-\" + _p8() + _p8(true) + _p8(true) + _p8();\n            },\n            noop: function() {}\n        };\n    }();\n    var VERSION = \"1.2.0\";\n    var tokenizers = function() {\n        \"use strict\";\n        return {\n            nonword: nonword,\n            whitespace: whitespace,\n            ngram: ngram,\n            obj: {\n                nonword: getObjTokenizer(nonword),\n                whitespace: getObjTokenizer(whitespace),\n                ngram: getObjTokenizer(ngram)\n            }\n        };\n        function whitespace(str) {\n            str = _.toStr(str);\n            return str ? str.split(/\\s+/) : [];\n        }\n        function nonword(str) {\n            str = _.toStr(str);\n            return str ? str.split(/\\W+/) : [];\n        }\n        function ngram(str) {\n            str = _.toStr(str);\n            var tokens = [], word = \"\";\n            _.each(str.split(\"\"), function(char) {\n                if (char.match(/\\s+/)) {\n                    word = \"\";\n                } else {\n                    tokens.push(word + char);\n                    word += char;\n                }\n            });\n            return tokens;\n        }\n        function getObjTokenizer(tokenizer) {\n            return function setKey(keys) {\n                keys = _.isArray(keys) ? keys : [].slice.call(arguments, 0);\n                return function tokenize(o) {\n                    var tokens = [];\n                    _.each(keys, function(k) {\n                        tokens = tokens.concat(tokenizer(_.toStr(o[k])));\n                    });\n                    return tokens;\n                };\n            };\n        }\n    }();\n    var LruCache = function() {\n        \"use strict\";\n        function LruCache(maxSize) {\n            this.maxSize = _.isNumber(maxSize) ? maxSize : 100;\n            this.reset();\n            if (this.maxSize <= 0) {\n                this.set = this.get = $.noop;\n            }\n        }\n        _.mixin(LruCache.prototype, {\n            set: function set(key, val) {\n                var tailItem = this.list.tail, node;\n                if (this.size >= this.maxSize) {\n                    this.list.remove(tailItem);\n                    delete this.hash[tailItem.key];\n                    this.size--;\n                }\n                if (node = this.hash[key]) {\n                    node.val = val;\n                    this.list.moveToFront(node);\n                } else {\n                    node = new Node(key, val);\n                    this.list.add(node);\n                    this.hash[key] = node;\n                    this.size++;\n                }\n            },\n            get: function get(key) {\n                var node = this.hash[key];\n                if (node) {\n                    this.list.moveToFront(node);\n                    return node.val;\n                }\n            },\n            reset: function reset() {\n                this.size = 0;\n                this.hash = {};\n                this.list = new List();\n            }\n        });\n        function List() {\n            this.head = this.tail = null;\n        }\n        _.mixin(List.prototype, {\n            add: function add(node) {\n                if (this.head) {\n                    node.next = this.head;\n                    this.head.prev = node;\n                }\n                this.head = node;\n                this.tail = this.tail || node;\n            },\n            remove: function remove(node) {\n                node.prev ? node.prev.next = node.next : this.head = node.next;\n                node.next ? node.next.prev = node.prev : this.tail = node.prev;\n            },\n            moveToFront: function(node) {\n                this.remove(node);\n                this.add(node);\n            }\n        });\n        function Node(key, val) {\n            this.key = key;\n            this.val = val;\n            this.prev = this.next = null;\n        }\n        return LruCache;\n    }();\n    var PersistentStorage = function() {\n        \"use strict\";\n        var LOCAL_STORAGE;\n        try {\n            LOCAL_STORAGE = window.localStorage;\n            LOCAL_STORAGE.setItem(\"~~~\", \"!\");\n            LOCAL_STORAGE.removeItem(\"~~~\");\n        } catch (err) {\n            LOCAL_STORAGE = null;\n        }\n        function PersistentStorage(namespace, override) {\n            this.prefix = [ \"__\", namespace, \"__\" ].join(\"\");\n            this.ttlKey = \"__ttl__\";\n            this.keyMatcher = new RegExp(\"^\" + _.escapeRegExChars(this.prefix));\n            this.ls = override || LOCAL_STORAGE;\n            !this.ls && this._noop();\n        }\n        _.mixin(PersistentStorage.prototype, {\n            _prefix: function(key) {\n                return this.prefix + key;\n            },\n            _ttlKey: function(key) {\n                return this._prefix(key) + this.ttlKey;\n            },\n            _noop: function() {\n                this.get = this.set = this.remove = this.clear = this.isExpired = _.noop;\n            },\n            _safeSet: function(key, val) {\n                try {\n                    this.ls.setItem(key, val);\n                } catch (err) {\n                    if (err.name === \"QuotaExceededError\") {\n                        this.clear();\n                        this._noop();\n                    }\n                }\n            },\n            get: function(key) {\n                if (this.isExpired(key)) {\n                    this.remove(key);\n                }\n                return decode(this.ls.getItem(this._prefix(key)));\n            },\n            set: function(key, val, ttl) {\n                if (_.isNumber(ttl)) {\n                    this._safeSet(this._ttlKey(key), encode(now() + ttl));\n                } else {\n                    this.ls.removeItem(this._ttlKey(key));\n                }\n                return this._safeSet(this._prefix(key), encode(val));\n            },\n            remove: function(key) {\n                this.ls.removeItem(this._ttlKey(key));\n                this.ls.removeItem(this._prefix(key));\n                return this;\n            },\n            clear: function() {\n                var i, keys = gatherMatchingKeys(this.keyMatcher);\n                for (i = keys.length; i--; ) {\n                    this.remove(keys[i]);\n                }\n                return this;\n            },\n            isExpired: function(key) {\n                var ttl = decode(this.ls.getItem(this._ttlKey(key)));\n                return _.isNumber(ttl) && now() > ttl ? true : false;\n            }\n        });\n        return PersistentStorage;\n        function now() {\n            return new Date().getTime();\n        }\n        function encode(val) {\n            return JSON.stringify(_.isUndefined(val) ? null : val);\n        }\n        function decode(val) {\n            return $.parseJSON(val);\n        }\n        function gatherMatchingKeys(keyMatcher) {\n            var i, key, keys = [], len = LOCAL_STORAGE.length;\n            for (i = 0; i < len; i++) {\n                if ((key = LOCAL_STORAGE.key(i)).match(keyMatcher)) {\n                    keys.push(key.replace(keyMatcher, \"\"));\n                }\n            }\n            return keys;\n        }\n    }();\n    var Transport = function() {\n        \"use strict\";\n        var pendingRequestsCount = 0, pendingRequests = {}, sharedCache = new LruCache(10);\n        function Transport(o) {\n            o = o || {};\n            this.maxPendingRequests = o.maxPendingRequests || 6;\n            this.cancelled = false;\n            this.lastReq = null;\n            this._send = o.transport;\n            this._get = o.limiter ? o.limiter(this._get) : this._get;\n            this._cache = o.cache === false ? new LruCache(0) : sharedCache;\n        }\n        Transport.setMaxPendingRequests = function setMaxPendingRequests(num) {\n            this.maxPendingRequests = num;\n        };\n        Transport.resetCache = function resetCache() {\n            sharedCache.reset();\n        };\n        _.mixin(Transport.prototype, {\n            _fingerprint: function fingerprint(o) {\n                o = o || {};\n                return o.url + o.type + $.param(o.data || {});\n            },\n            _get: function(o, cb) {\n                var that = this, fingerprint, jqXhr;\n                fingerprint = this._fingerprint(o);\n                if (this.cancelled || fingerprint !== this.lastReq) {\n                    return;\n                }\n                if (jqXhr = pendingRequests[fingerprint]) {\n                    jqXhr.done(done).fail(fail);\n                } else if (pendingRequestsCount < this.maxPendingRequests) {\n                    pendingRequestsCount++;\n                    pendingRequests[fingerprint] = this._send(o).done(done).fail(fail).always(always);\n                } else {\n                    this.onDeckRequestArgs = [].slice.call(arguments, 0);\n                }\n                function done(resp) {\n                    cb(null, resp);\n                    that._cache.set(fingerprint, resp);\n                }\n                function fail() {\n                    cb(true);\n                }\n                function always() {\n                    pendingRequestsCount--;\n                    delete pendingRequests[fingerprint];\n                    if (that.onDeckRequestArgs) {\n                        that._get.apply(that, that.onDeckRequestArgs);\n                        that.onDeckRequestArgs = null;\n                    }\n                }\n            },\n            get: function(o, cb) {\n                var resp, fingerprint;\n                cb = cb || $.noop;\n                o = _.isString(o) ? {\n                    url: o\n                } : o || {};\n                fingerprint = this._fingerprint(o);\n                this.cancelled = false;\n                this.lastReq = fingerprint;\n                if (resp = this._cache.get(fingerprint)) {\n                    cb(null, resp);\n                } else {\n                    this._get(o, cb);\n                }\n            },\n            cancel: function() {\n                this.cancelled = true;\n            }\n        });\n        return Transport;\n    }();\n    var SearchIndex = window.SearchIndex = function() {\n        \"use strict\";\n        var CHILDREN = \"c\", IDS = \"i\";\n        function SearchIndex(o) {\n            o = o || {};\n            if (!o.datumTokenizer || !o.queryTokenizer) {\n                $.error(\"datumTokenizer and queryTokenizer are both required\");\n            }\n            this.identify = o.identify || _.stringify;\n            this.datumTokenizer = o.datumTokenizer;\n            this.queryTokenizer = o.queryTokenizer;\n            this.matchAnyQueryToken = o.matchAnyQueryToken;\n            this.reset();\n        }\n        _.mixin(SearchIndex.prototype, {\n            bootstrap: function bootstrap(o) {\n                this.datums = o.datums;\n                this.trie = o.trie;\n            },\n            add: function(data) {\n                var that = this;\n                data = _.isArray(data) ? data : [ data ];\n                _.each(data, function(datum) {\n                    var id, tokens;\n                    that.datums[id = that.identify(datum)] = datum;\n                    tokens = normalizeTokens(that.datumTokenizer(datum));\n                    _.each(tokens, function(token) {\n                        var node, chars, ch;\n                        node = that.trie;\n                        chars = token.split(\"\");\n                        while (ch = chars.shift()) {\n                            node = node[CHILDREN][ch] || (node[CHILDREN][ch] = newNode());\n                            node[IDS].push(id);\n                        }\n                    });\n                });\n            },\n            get: function get(ids) {\n                var that = this;\n                return _.map(ids, function(id) {\n                    return that.datums[id];\n                });\n            },\n            search: function search(query) {\n                var that = this, tokens, matches;\n                tokens = normalizeTokens(this.queryTokenizer(query));\n                _.each(tokens, function(token) {\n                    var node, chars, ch, ids;\n                    if (matches && matches.length === 0 && !that.matchAnyQueryToken) {\n                        return false;\n                    }\n                    node = that.trie;\n                    chars = token.split(\"\");\n                    while (node && (ch = chars.shift())) {\n                        node = node[CHILDREN][ch];\n                    }\n                    if (node && chars.length === 0) {\n                        ids = node[IDS].slice(0);\n                        matches = matches ? getIntersection(matches, ids) : ids;\n                    } else {\n                        if (!that.matchAnyQueryToken) {\n                            matches = [];\n                            return false;\n                        }\n                    }\n                });\n                return matches ? _.map(unique(matches), function(id) {\n                    return that.datums[id];\n                }) : [];\n            },\n            all: function all() {\n                var values = [];\n                for (var key in this.datums) {\n                    values.push(this.datums[key]);\n                }\n                return values;\n            },\n            reset: function reset() {\n                this.datums = {};\n                this.trie = newNode();\n            },\n            serialize: function serialize() {\n                return {\n                    datums: this.datums,\n                    trie: this.trie\n                };\n            }\n        });\n        return SearchIndex;\n        function normalizeTokens(tokens) {\n            tokens = _.filter(tokens, function(token) {\n                return !!token;\n            });\n            tokens = _.map(tokens, function(token) {\n                return token.toLowerCase();\n            });\n            return tokens;\n        }\n        function newNode() {\n            var node = {};\n            node[IDS] = [];\n            node[CHILDREN] = {};\n            return node;\n        }\n        function unique(array) {\n            var seen = {}, uniques = [];\n            for (var i = 0, len = array.length; i < len; i++) {\n                if (!seen[array[i]]) {\n                    seen[array[i]] = true;\n                    uniques.push(array[i]);\n                }\n            }\n            return uniques;\n        }\n        function getIntersection(arrayA, arrayB) {\n            var ai = 0, bi = 0, intersection = [];\n            arrayA = arrayA.sort();\n            arrayB = arrayB.sort();\n            var lenArrayA = arrayA.length, lenArrayB = arrayB.length;\n            while (ai < lenArrayA && bi < lenArrayB) {\n                if (arrayA[ai] < arrayB[bi]) {\n                    ai++;\n                } else if (arrayA[ai] > arrayB[bi]) {\n                    bi++;\n                } else {\n                    intersection.push(arrayA[ai]);\n                    ai++;\n                    bi++;\n                }\n            }\n            return intersection;\n        }\n    }();\n    var Prefetch = function() {\n        \"use strict\";\n        var keys;\n        keys = {\n            data: \"data\",\n            protocol: \"protocol\",\n            thumbprint: \"thumbprint\"\n        };\n        function Prefetch(o) {\n            this.url = o.url;\n            this.ttl = o.ttl;\n            this.cache = o.cache;\n            this.prepare = o.prepare;\n            this.transform = o.transform;\n            this.transport = o.transport;\n            this.thumbprint = o.thumbprint;\n            this.storage = new PersistentStorage(o.cacheKey);\n        }\n        _.mixin(Prefetch.prototype, {\n            _settings: function settings() {\n                return {\n                    url: this.url,\n                    type: \"GET\",\n                    dataType: \"json\"\n                };\n            },\n            store: function store(data) {\n                if (!this.cache) {\n                    return;\n                }\n                this.storage.set(keys.data, data, this.ttl);\n                this.storage.set(keys.protocol, location.protocol, this.ttl);\n                this.storage.set(keys.thumbprint, this.thumbprint, this.ttl);\n            },\n            fromCache: function fromCache() {\n                var stored = {}, isExpired;\n                if (!this.cache) {\n                    return null;\n                }\n                stored.data = this.storage.get(keys.data);\n                stored.protocol = this.storage.get(keys.protocol);\n                stored.thumbprint = this.storage.get(keys.thumbprint);\n                isExpired = stored.thumbprint !== this.thumbprint || stored.protocol !== location.protocol;\n                return stored.data && !isExpired ? stored.data : null;\n            },\n            fromNetwork: function(cb) {\n                var that = this, settings;\n                if (!cb) {\n                    return;\n                }\n                settings = this.prepare(this._settings());\n                this.transport(settings).fail(onError).done(onResponse);\n                function onError() {\n                    cb(true);\n                }\n                function onResponse(resp) {\n                    cb(null, that.transform(resp));\n                }\n            },\n            clear: function clear() {\n                this.storage.clear();\n                return this;\n            }\n        });\n        return Prefetch;\n    }();\n    var Remote = function() {\n        \"use strict\";\n        function Remote(o) {\n            this.url = o.url;\n            this.prepare = o.prepare;\n            this.transform = o.transform;\n            this.indexResponse = o.indexResponse;\n            this.transport = new Transport({\n                cache: o.cache,\n                limiter: o.limiter,\n                transport: o.transport,\n                maxPendingRequests: o.maxPendingRequests\n            });\n        }\n        _.mixin(Remote.prototype, {\n            _settings: function settings() {\n                return {\n                    url: this.url,\n                    type: \"GET\",\n                    dataType: \"json\"\n                };\n            },\n            get: function get(query, cb) {\n                var that = this, settings;\n                if (!cb) {\n                    return;\n                }\n                query = query || \"\";\n                settings = this.prepare(query, this._settings());\n                return this.transport.get(settings, onResponse);\n                function onResponse(err, resp) {\n                    err ? cb([]) : cb(that.transform(resp));\n                }\n            },\n            cancelLastRequest: function cancelLastRequest() {\n                this.transport.cancel();\n            }\n        });\n        return Remote;\n    }();\n    var oParser = function() {\n        \"use strict\";\n        return function parse(o) {\n            var defaults, sorter;\n            defaults = {\n                initialize: true,\n                identify: _.stringify,\n                datumTokenizer: null,\n                queryTokenizer: null,\n                matchAnyQueryToken: false,\n                sufficient: 5,\n                indexRemote: false,\n                sorter: null,\n                local: [],\n                prefetch: null,\n                remote: null\n            };\n            o = _.mixin(defaults, o || {});\n            !o.datumTokenizer && $.error(\"datumTokenizer is required\");\n            !o.queryTokenizer && $.error(\"queryTokenizer is required\");\n            sorter = o.sorter;\n            o.sorter = sorter ? function(x) {\n                return x.sort(sorter);\n            } : _.identity;\n            o.local = _.isFunction(o.local) ? o.local() : o.local;\n            o.prefetch = parsePrefetch(o.prefetch);\n            o.remote = parseRemote(o.remote);\n            return o;\n        };\n        function parsePrefetch(o) {\n            var defaults;\n            if (!o) {\n                return null;\n            }\n            defaults = {\n                url: null,\n                ttl: 24 * 60 * 60 * 1e3,\n                cache: true,\n                cacheKey: null,\n                thumbprint: \"\",\n                prepare: _.identity,\n                transform: _.identity,\n                transport: null\n            };\n            o = _.isString(o) ? {\n                url: o\n            } : o;\n            o = _.mixin(defaults, o);\n            !o.url && $.error(\"prefetch requires url to be set\");\n            o.transform = o.filter || o.transform;\n            o.cacheKey = o.cacheKey || o.url;\n            o.thumbprint = VERSION + o.thumbprint;\n            o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\n            return o;\n        }\n        function parseRemote(o) {\n            var defaults;\n            if (!o) {\n                return;\n            }\n            defaults = {\n                url: null,\n                cache: true,\n                prepare: null,\n                replace: null,\n                wildcard: null,\n                limiter: null,\n                rateLimitBy: \"debounce\",\n                rateLimitWait: 300,\n                transform: _.identity,\n                transport: null\n            };\n            o = _.isString(o) ? {\n                url: o\n            } : o;\n            o = _.mixin(defaults, o);\n            !o.url && $.error(\"remote requires url to be set\");\n            o.transform = o.filter || o.transform;\n            o.prepare = toRemotePrepare(o);\n            o.limiter = toLimiter(o);\n            o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\n            delete o.replace;\n            delete o.wildcard;\n            delete o.rateLimitBy;\n            delete o.rateLimitWait;\n            return o;\n        }\n        function toRemotePrepare(o) {\n            var prepare, replace, wildcard;\n            prepare = o.prepare;\n            replace = o.replace;\n            wildcard = o.wildcard;\n            if (prepare) {\n                return prepare;\n            }\n            if (replace) {\n                prepare = prepareByReplace;\n            } else if (o.wildcard) {\n                prepare = prepareByWildcard;\n            } else {\n                prepare = identityPrepare;\n            }\n            return prepare;\n            function prepareByReplace(query, settings) {\n                settings.url = replace(settings.url, query);\n                return settings;\n            }\n            function prepareByWildcard(query, settings) {\n                settings.url = settings.url.replace(wildcard, encodeURIComponent(query));\n                return settings;\n            }\n            function identityPrepare(query, settings) {\n                return settings;\n            }\n        }\n        function toLimiter(o) {\n            var limiter, method, wait;\n            limiter = o.limiter;\n            method = o.rateLimitBy;\n            wait = o.rateLimitWait;\n            if (!limiter) {\n                limiter = /^throttle$/i.test(method) ? throttle(wait) : debounce(wait);\n            }\n            return limiter;\n            function debounce(wait) {\n                return function debounce(fn) {\n                    return _.debounce(fn, wait);\n                };\n            }\n            function throttle(wait) {\n                return function throttle(fn) {\n                    return _.throttle(fn, wait);\n                };\n            }\n        }\n        function callbackToDeferred(fn) {\n            return function wrapper(o) {\n                var deferred = $.Deferred();\n                fn(o, onSuccess, onError);\n                return deferred;\n                function onSuccess(resp) {\n                    _.defer(function() {\n                        deferred.resolve(resp);\n                    });\n                }\n                function onError(err) {\n                    _.defer(function() {\n                        deferred.reject(err);\n                    });\n                }\n            };\n        }\n    }();\n    var Bloodhound = function() {\n        \"use strict\";\n        var old;\n        old = window && window.Bloodhound;\n        function Bloodhound(o) {\n            o = oParser(o);\n            this.sorter = o.sorter;\n            this.identify = o.identify;\n            this.sufficient = o.sufficient;\n            this.indexRemote = o.indexRemote;\n            this.local = o.local;\n            this.remote = o.remote ? new Remote(o.remote) : null;\n            this.prefetch = o.prefetch ? new Prefetch(o.prefetch) : null;\n            this.index = new SearchIndex({\n                identify: this.identify,\n                datumTokenizer: o.datumTokenizer,\n                queryTokenizer: o.queryTokenizer\n            });\n            o.initialize !== false && this.initialize();\n        }\n        Bloodhound.noConflict = function noConflict() {\n            window && (window.Bloodhound = old);\n            return Bloodhound;\n        };\n        Bloodhound.tokenizers = tokenizers;\n        _.mixin(Bloodhound.prototype, {\n            __ttAdapter: function ttAdapter() {\n                var that = this;\n                return this.remote ? withAsync : withoutAsync;\n                function withAsync(query, sync, async) {\n                    return that.search(query, sync, async);\n                }\n                function withoutAsync(query, sync) {\n                    return that.search(query, sync);\n                }\n            },\n            _loadPrefetch: function loadPrefetch() {\n                var that = this, deferred, serialized;\n                deferred = $.Deferred();\n                if (!this.prefetch) {\n                    deferred.resolve();\n                } else if (serialized = this.prefetch.fromCache()) {\n                    this.index.bootstrap(serialized);\n                    deferred.resolve();\n                } else {\n                    this.prefetch.fromNetwork(done);\n                }\n                return deferred.promise();\n                function done(err, data) {\n                    if (err) {\n                        return deferred.reject();\n                    }\n                    that.add(data);\n                    that.prefetch.store(that.index.serialize());\n                    deferred.resolve();\n                }\n            },\n            _initialize: function initialize() {\n                var that = this, deferred;\n                this.clear();\n                (this.initPromise = this._loadPrefetch()).done(addLocalToIndex);\n                return this.initPromise;\n                function addLocalToIndex() {\n                    that.add(that.local);\n                }\n            },\n            initialize: function initialize(force) {\n                return !this.initPromise || force ? this._initialize() : this.initPromise;\n            },\n            add: function add(data) {\n                this.index.add(data);\n                return this;\n            },\n            get: function get(ids) {\n                ids = _.isArray(ids) ? ids : [].slice.call(arguments);\n                return this.index.get(ids);\n            },\n            search: function search(query, sync, async) {\n                var that = this, local;\n                sync = sync || _.noop;\n                async = async || _.noop;\n                local = this.sorter(this.index.search(query));\n                sync(this.remote ? local.slice() : local);\n                if (this.remote && local.length < this.sufficient) {\n                    this.remote.get(query, processRemote);\n                } else if (this.remote) {\n                    this.remote.cancelLastRequest();\n                }\n                return this;\n                function processRemote(remote) {\n                    var nonDuplicates = [];\n                    _.each(remote, function(r) {\n                        !_.some(local, function(l) {\n                            return that.identify(r) === that.identify(l);\n                        }) && nonDuplicates.push(r);\n                    });\n                    that.indexRemote && that.add(nonDuplicates);\n                    async(nonDuplicates);\n                }\n            },\n            all: function all() {\n                return this.index.all();\n            },\n            clear: function clear() {\n                this.index.reset();\n                return this;\n            },\n            clearPrefetchCache: function clearPrefetchCache() {\n                this.prefetch && this.prefetch.clear();\n                return this;\n            },\n            clearRemoteCache: function clearRemoteCache() {\n                Transport.resetCache();\n                return this;\n            },\n            ttAdapter: function ttAdapter() {\n                return this.__ttAdapter();\n            }\n        });\n        return Bloodhound;\n    }();\n    return Bloodhound;\n});","/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress\n * @license MIT */\n\n;(function(root, factory) {\n\n  if (typeof define === 'function' && define.amd) {\n    define(factory);\n  } else if (typeof exports === 'object') {\n    module.exports = factory();\n  } else {\n    root.NProgress = factory();\n  }\n\n})(this, function() {\n  var NProgress = {};\n\n  NProgress.version = '0.2.0';\n\n  var Settings = NProgress.settings = {\n    minimum: 0.08,\n    easing: 'ease',\n    positionUsing: '',\n    speed: 200,\n    trickle: true,\n    trickleRate: 0.02,\n    trickleSpeed: 800,\n    showSpinner: true,\n    barSelector: '[role=\"bar\"]',\n    spinnerSelector: '[role=\"spinner\"]',\n    parent: 'body',\n    template: '<div class=\"bar\" role=\"bar\"><div class=\"peg\"></div></div><div class=\"spinner\" role=\"spinner\"><div class=\"spinner-icon\"></div></div>'\n  };\n\n  /**\n   * Updates configuration.\n   *\n   *     NProgress.configure({\n   *       minimum: 0.1\n   *     });\n   */\n  NProgress.configure = function(options) {\n    var key, value;\n    for (key in options) {\n      value = options[key];\n      if (value !== undefined && options.hasOwnProperty(key)) Settings[key] = value;\n    }\n\n    return this;\n  };\n\n  /**\n   * Last number.\n   */\n\n  NProgress.status = null;\n\n  /**\n   * Sets the progress bar status, where `n` is a number from `0.0` to `1.0`.\n   *\n   *     NProgress.set(0.4);\n   *     NProgress.set(1.0);\n   */\n\n  NProgress.set = function(n) {\n    var started = NProgress.isStarted();\n\n    n = clamp(n, Settings.minimum, 1);\n    NProgress.status = (n === 1 ? null : n);\n\n    var progress = NProgress.render(!started),\n        bar      = progress.querySelector(Settings.barSelector),\n        speed    = Settings.speed,\n        ease     = Settings.easing;\n\n    progress.offsetWidth; /* Repaint */\n\n    queue(function(next) {\n      // Set positionUsing if it hasn't already been set\n      if (Settings.positionUsing === '') Settings.positionUsing = NProgress.getPositioningCSS();\n\n      // Add transition\n      css(bar, barPositionCSS(n, speed, ease));\n\n      if (n === 1) {\n        // Fade out\n        css(progress, { \n          transition: 'none', \n          opacity: 1 \n        });\n        progress.offsetWidth; /* Repaint */\n\n        setTimeout(function() {\n          css(progress, { \n            transition: 'all ' + speed + 'ms linear', \n            opacity: 0 \n          });\n          setTimeout(function() {\n            NProgress.remove();\n            next();\n          }, speed);\n        }, speed);\n      } else {\n        setTimeout(next, speed);\n      }\n    });\n\n    return this;\n  };\n\n  NProgress.isStarted = function() {\n    return typeof NProgress.status === 'number';\n  };\n\n  /**\n   * Shows the progress bar.\n   * This is the same as setting the status to 0%, except that it doesn't go backwards.\n   *\n   *     NProgress.start();\n   *\n   */\n  NProgress.start = function() {\n    if (!NProgress.status) NProgress.set(0);\n\n    var work = function() {\n      setTimeout(function() {\n        if (!NProgress.status) return;\n        NProgress.trickle();\n        work();\n      }, Settings.trickleSpeed);\n    };\n\n    if (Settings.trickle) work();\n\n    return this;\n  };\n\n  /**\n   * Hides the progress bar.\n   * This is the *sort of* the same as setting the status to 100%, with the\n   * difference being `done()` makes some placebo effect of some realistic motion.\n   *\n   *     NProgress.done();\n   *\n   * If `true` is passed, it will show the progress bar even if its hidden.\n   *\n   *     NProgress.done(true);\n   */\n\n  NProgress.done = function(force) {\n    if (!force && !NProgress.status) return this;\n\n    return NProgress.inc(0.3 + 0.5 * Math.random()).set(1);\n  };\n\n  /**\n   * Increments by a random amount.\n   */\n\n  NProgress.inc = function(amount) {\n    var n = NProgress.status;\n\n    if (!n) {\n      return NProgress.start();\n    } else {\n      if (typeof amount !== 'number') {\n        amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95);\n      }\n\n      n = clamp(n + amount, 0, 0.994);\n      return NProgress.set(n);\n    }\n  };\n\n  NProgress.trickle = function() {\n    return NProgress.inc(Math.random() * Settings.trickleRate);\n  };\n\n  /**\n   * Waits for all supplied jQuery promises and\n   * increases the progress as the promises resolve.\n   *\n   * @param $promise jQUery Promise\n   */\n  (function() {\n    var initial = 0, current = 0;\n\n    NProgress.promise = function($promise) {\n      if (!$promise || $promise.state() === \"resolved\") {\n        return this;\n      }\n\n      if (current === 0) {\n        NProgress.start();\n      }\n\n      initial++;\n      current++;\n\n      $promise.always(function() {\n        current--;\n        if (current === 0) {\n            initial = 0;\n            NProgress.done();\n        } else {\n            NProgress.set((initial - current) / initial);\n        }\n      });\n\n      return this;\n    };\n\n  })();\n\n  /**\n   * (Internal) renders the progress bar markup based on the `template`\n   * setting.\n   */\n\n  NProgress.render = function(fromStart) {\n    if (NProgress.isRendered()) return document.getElementById('nprogress');\n\n    addClass(document.documentElement, 'nprogress-busy');\n    \n    var progress = document.createElement('div');\n    progress.id = 'nprogress';\n    progress.innerHTML = Settings.template;\n\n    var bar      = progress.querySelector(Settings.barSelector),\n        perc     = fromStart ? '-100' : toBarPerc(NProgress.status || 0),\n        parent   = document.querySelector(Settings.parent),\n        spinner;\n    \n    css(bar, {\n      transition: 'all 0 linear',\n      transform: 'translate3d(' + perc + '%,0,0)'\n    });\n\n    if (!Settings.showSpinner) {\n      spinner = progress.querySelector(Settings.spinnerSelector);\n      spinner && removeElement(spinner);\n    }\n\n    if (parent != document.body) {\n      addClass(parent, 'nprogress-custom-parent');\n    }\n\n    parent.appendChild(progress);\n    return progress;\n  };\n\n  /**\n   * Removes the element. Opposite of render().\n   */\n\n  NProgress.remove = function() {\n    removeClass(document.documentElement, 'nprogress-busy');\n    removeClass(document.querySelector(Settings.parent), 'nprogress-custom-parent');\n    var progress = document.getElementById('nprogress');\n    progress && removeElement(progress);\n  };\n\n  /**\n   * Checks if the progress bar is rendered.\n   */\n\n  NProgress.isRendered = function() {\n    return !!document.getElementById('nprogress');\n  };\n\n  /**\n   * Determine which positioning CSS rule to use.\n   */\n\n  NProgress.getPositioningCSS = function() {\n    // Sniff on document.body.style\n    var bodyStyle = document.body.style;\n\n    // Sniff prefixes\n    var vendorPrefix = ('WebkitTransform' in bodyStyle) ? 'Webkit' :\n                       ('MozTransform' in bodyStyle) ? 'Moz' :\n                       ('msTransform' in bodyStyle) ? 'ms' :\n                       ('OTransform' in bodyStyle) ? 'O' : '';\n\n    if (vendorPrefix + 'Perspective' in bodyStyle) {\n      // Modern browsers with 3D support, e.g. Webkit, IE10\n      return 'translate3d';\n    } else if (vendorPrefix + 'Transform' in bodyStyle) {\n      // Browsers without 3D support, e.g. IE9\n      return 'translate';\n    } else {\n      // Browsers without translate() support, e.g. IE7-8\n      return 'margin';\n    }\n  };\n\n  /**\n   * Helpers\n   */\n\n  function clamp(n, min, max) {\n    if (n < min) return min;\n    if (n > max) return max;\n    return n;\n  }\n\n  /**\n   * (Internal) converts a percentage (`0..1`) to a bar translateX\n   * percentage (`-100%..0%`).\n   */\n\n  function toBarPerc(n) {\n    return (-1 + n) * 100;\n  }\n\n\n  /**\n   * (Internal) returns the correct CSS for changing the bar's\n   * position given an n percentage, and speed and ease from Settings\n   */\n\n  function barPositionCSS(n, speed, ease) {\n    var barCSS;\n\n    if (Settings.positionUsing === 'translate3d') {\n      barCSS = { transform: 'translate3d('+toBarPerc(n)+'%,0,0)' };\n    } else if (Settings.positionUsing === 'translate') {\n      barCSS = { transform: 'translate('+toBarPerc(n)+'%,0)' };\n    } else {\n      barCSS = { 'margin-left': toBarPerc(n)+'%' };\n    }\n\n    barCSS.transition = 'all '+speed+'ms '+ease;\n\n    return barCSS;\n  }\n\n  /**\n   * (Internal) Queues a function to be executed.\n   */\n\n  var queue = (function() {\n    var pending = [];\n    \n    function next() {\n      var fn = pending.shift();\n      if (fn) {\n        fn(next);\n      }\n    }\n\n    return function(fn) {\n      pending.push(fn);\n      if (pending.length == 1) next();\n    };\n  })();\n\n  /**\n   * (Internal) Applies css properties to an element, similar to the jQuery \n   * css method.\n   *\n   * While this helper does assist with vendor prefixed property names, it \n   * does not perform any manipulation of values prior to setting styles.\n   */\n\n  var css = (function() {\n    var cssPrefixes = [ 'Webkit', 'O', 'Moz', 'ms' ],\n        cssProps    = {};\n\n    function camelCase(string) {\n      return string.replace(/^-ms-/, 'ms-').replace(/-([\\da-z])/gi, function(match, letter) {\n        return letter.toUpperCase();\n      });\n    }\n\n    function getVendorProp(name) {\n      var style = document.body.style;\n      if (name in style) return name;\n\n      var i = cssPrefixes.length,\n          capName = name.charAt(0).toUpperCase() + name.slice(1),\n          vendorName;\n      while (i--) {\n        vendorName = cssPrefixes[i] + capName;\n        if (vendorName in style) return vendorName;\n      }\n\n      return name;\n    }\n\n    function getStyleProp(name) {\n      name = camelCase(name);\n      return cssProps[name] || (cssProps[name] = getVendorProp(name));\n    }\n\n    function applyCss(element, prop, value) {\n      prop = getStyleProp(prop);\n      element.style[prop] = value;\n    }\n\n    return function(element, properties) {\n      var args = arguments,\n          prop, \n          value;\n\n      if (args.length == 2) {\n        for (prop in properties) {\n          value = properties[prop];\n          if (value !== undefined && properties.hasOwnProperty(prop)) applyCss(element, prop, value);\n        }\n      } else {\n        applyCss(element, args[1], args[2]);\n      }\n    }\n  })();\n\n  /**\n   * (Internal) Determines if an element or space separated list of class names contains a class name.\n   */\n\n  function hasClass(element, name) {\n    var list = typeof element == 'string' ? element : classList(element);\n    return list.indexOf(' ' + name + ' ') >= 0;\n  }\n\n  /**\n   * (Internal) Adds a class to an element.\n   */\n\n  function addClass(element, name) {\n    var oldList = classList(element),\n        newList = oldList + name;\n\n    if (hasClass(oldList, name)) return; \n\n    // Trim the opening space.\n    element.className = newList.substring(1);\n  }\n\n  /**\n   * (Internal) Removes a class from an element.\n   */\n\n  function removeClass(element, name) {\n    var oldList = classList(element),\n        newList;\n\n    if (!hasClass(element, name)) return;\n\n    // Replace the class name.\n    newList = oldList.replace(' ' + name + ' ', ' ');\n\n    // Trim the opening and closing spaces.\n    element.className = newList.substring(1, newList.length - 1);\n  }\n\n  /**\n   * (Internal) Gets a space separated list of the class names on the element. \n   * The list is wrapped with a single space on each end to facilitate finding \n   * matches within the list.\n   */\n\n  function classList(element) {\n    return (' ' + (element.className || '') + ' ').replace(/\\s+/gi, ' ');\n  }\n\n  /**\n   * (Internal) Removes an element from the DOM.\n   */\n\n  function removeElement(element) {\n    element && element.parentNode && element.parentNode.removeChild(element);\n  }\n\n  return NProgress;\n});\n\n","export enum CheckStatusCompanyCompetence {\n   Active,\n   Inactive,\n   Pending\n  }","/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2018 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n/**\n * bluebird build version 3.5.3\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_==\"function\"&&_dereq_;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar SomePromiseArray = Promise._SomePromiseArray;\nfunction any(promises) {\n    var ret = new SomePromiseArray(promises);\n    var promise = ret.promise();\n    ret.setHowMany(1);\n    ret.setUnwrap();\n    ret.init();\n    return promise;\n}\n\nPromise.any = function (promises) {\n    return any(promises);\n};\n\nPromise.prototype.any = function () {\n    return any(this);\n};\n\n};\n\n},{}],2:[function(_dereq_,module,exports){\n\"use strict\";\nvar firstLineError;\ntry {throw new Error(); } catch (e) {firstLineError = e;}\nvar schedule = _dereq_(\"./schedule\");\nvar Queue = _dereq_(\"./queue\");\nvar util = _dereq_(\"./util\");\n\nfunction Async() {\n    this._customScheduler = false;\n    this._isTickUsed = false;\n    this._lateQueue = new Queue(16);\n    this._normalQueue = new Queue(16);\n    this._haveDrainedQueues = false;\n    this._trampolineEnabled = true;\n    var self = this;\n    this.drainQueues = function () {\n        self._drainQueues();\n    };\n    this._schedule = schedule;\n}\n\nAsync.prototype.setScheduler = function(fn) {\n    var prev = this._schedule;\n    this._schedule = fn;\n    this._customScheduler = true;\n    return prev;\n};\n\nAsync.prototype.hasCustomScheduler = function() {\n    return this._customScheduler;\n};\n\nAsync.prototype.enableTrampoline = function() {\n    this._trampolineEnabled = true;\n};\n\nAsync.prototype.disableTrampolineIfNecessary = function() {\n    if (util.hasDevTools) {\n        this._trampolineEnabled = false;\n    }\n};\n\nAsync.prototype.haveItemsQueued = function () {\n    return this._isTickUsed || this._haveDrainedQueues;\n};\n\n\nAsync.prototype.fatalError = function(e, isNode) {\n    if (isNode) {\n        process.stderr.write(\"Fatal \" + (e instanceof Error ? e.stack : e) +\n            \"\\n\");\n        process.exit(2);\n    } else {\n        this.throwLater(e);\n    }\n};\n\nAsync.prototype.throwLater = function(fn, arg) {\n    if (arguments.length === 1) {\n        arg = fn;\n        fn = function () { throw arg; };\n    }\n    if (typeof setTimeout !== \"undefined\") {\n        setTimeout(function() {\n            fn(arg);\n        }, 0);\n    } else try {\n        this._schedule(function() {\n            fn(arg);\n        });\n    } catch (e) {\n        throw new Error(\"No async scheduler available\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n};\n\nfunction AsyncInvokeLater(fn, receiver, arg) {\n    this._lateQueue.push(fn, receiver, arg);\n    this._queueTick();\n}\n\nfunction AsyncInvoke(fn, receiver, arg) {\n    this._normalQueue.push(fn, receiver, arg);\n    this._queueTick();\n}\n\nfunction AsyncSettlePromises(promise) {\n    this._normalQueue._pushOne(promise);\n    this._queueTick();\n}\n\nif (!util.hasDevTools) {\n    Async.prototype.invokeLater = AsyncInvokeLater;\n    Async.prototype.invoke = AsyncInvoke;\n    Async.prototype.settlePromises = AsyncSettlePromises;\n} else {\n    Async.prototype.invokeLater = function (fn, receiver, arg) {\n        if (this._trampolineEnabled) {\n            AsyncInvokeLater.call(this, fn, receiver, arg);\n        } else {\n            this._schedule(function() {\n                setTimeout(function() {\n                    fn.call(receiver, arg);\n                }, 100);\n            });\n        }\n    };\n\n    Async.prototype.invoke = function (fn, receiver, arg) {\n        if (this._trampolineEnabled) {\n            AsyncInvoke.call(this, fn, receiver, arg);\n        } else {\n            this._schedule(function() {\n                fn.call(receiver, arg);\n            });\n        }\n    };\n\n    Async.prototype.settlePromises = function(promise) {\n        if (this._trampolineEnabled) {\n            AsyncSettlePromises.call(this, promise);\n        } else {\n            this._schedule(function() {\n                promise._settlePromises();\n            });\n        }\n    };\n}\n\nfunction _drainQueue(queue) {\n    while (queue.length() > 0) {\n        _drainQueueStep(queue);\n    }\n}\n\nfunction _drainQueueStep(queue) {\n    var fn = queue.shift();\n    if (typeof fn !== \"function\") {\n        fn._settlePromises();\n    } else {\n        var receiver = queue.shift();\n        var arg = queue.shift();\n        fn.call(receiver, arg);\n    }\n}\n\nAsync.prototype._drainQueues = function () {\n    _drainQueue(this._normalQueue);\n    this._reset();\n    this._haveDrainedQueues = true;\n    _drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n    if (!this._isTickUsed) {\n        this._isTickUsed = true;\n        this._schedule(this.drainQueues);\n    }\n};\n\nAsync.prototype._reset = function () {\n    this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":26,\"./schedule\":29,\"./util\":36}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n    this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n    context.promiseRejectionQueued = true;\n    context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n    if (((this._bitField & 50397184) === 0)) {\n        this._resolveCallback(context.target);\n    }\n};\n\nvar bindingRejected = function(e, context) {\n    if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n    if (!calledBind) {\n        calledBind = true;\n        Promise.prototype._propagateFrom = debug.propagateFromFunction();\n        Promise.prototype._boundValue = debug.boundValueFunction();\n    }\n    var maybePromise = tryConvertToPromise(thisArg);\n    var ret = new Promise(INTERNAL);\n    ret._propagateFrom(this, 1);\n    var target = this._target();\n    ret._setBoundTo(maybePromise);\n    if (maybePromise instanceof Promise) {\n        var context = {\n            promiseRejectionQueued: false,\n            promise: ret,\n            target: target,\n            bindingPromise: maybePromise\n        };\n        target._then(INTERNAL, targetRejected, undefined, ret, context);\n        maybePromise._then(\n            bindingResolved, bindingRejected, undefined, ret, context);\n        ret._setOnCancel(maybePromise);\n    } else {\n        ret._resolveCallback(target);\n    }\n    return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n    if (obj !== undefined) {\n        this._bitField = this._bitField | 2097152;\n        this._boundTo = obj;\n    } else {\n        this._bitField = this._bitField & (~2097152);\n    }\n};\n\nPromise.prototype._isBound = function () {\n    return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n    return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n    try { if (Promise === bluebird) Promise = old; }\n    catch (e) {}\n    return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":22}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar cr = Object.create;\nif (cr) {\n    var callerCache = cr(null);\n    var getterCache = cr(null);\n    callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (!true) {\nvar makeMethodCaller = function (methodName) {\n    return new Function(\"ensureMethod\", \"                                    \\n\\\n        return function(obj) {                                               \\n\\\n            'use strict'                                                     \\n\\\n            var len = this.length;                                           \\n\\\n            ensureMethod(obj, 'methodName');                                 \\n\\\n            switch(len) {                                                    \\n\\\n                case 1: return obj.methodName(this[0]);                      \\n\\\n                case 2: return obj.methodName(this[0], this[1]);             \\n\\\n                case 3: return obj.methodName(this[0], this[1], this[2]);    \\n\\\n                case 0: return obj.methodName();                             \\n\\\n                default:                                                     \\n\\\n                    return obj.methodName.apply(obj, this);                  \\n\\\n            }                                                                \\n\\\n        };                                                                   \\n\\\n        \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n    return new Function(\"obj\", \"                                             \\n\\\n        'use strict';                                                        \\n\\\n        return obj.propertyName;                                             \\n\\\n        \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n    var ret = cache[name];\n    if (typeof ret !== \"function\") {\n        if (!isIdentifier(name)) {\n            return null;\n        }\n        ret = compiler(name);\n        cache[name] = ret;\n        cache[\" size\"]++;\n        if (cache[\" size\"] > 512) {\n            var keys = Object.keys(cache);\n            for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n            cache[\" size\"] = keys.length - 256;\n        }\n    }\n    return ret;\n};\n\ngetMethodCaller = function(name) {\n    return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n    return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n    var fn;\n    if (obj != null) fn = obj[methodName];\n    if (typeof fn !== \"function\") {\n        var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n            util.toString(methodName) + \"'\";\n        throw new Promise.TypeError(message);\n    }\n    return fn;\n}\n\nfunction caller(obj) {\n    var methodName = this.pop();\n    var fn = ensureMethod(obj, methodName);\n    return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n    var args = [].slice.call(arguments, 1);;\n    if (!true) {\n        if (canEvaluate) {\n            var maybeCaller = getMethodCaller(methodName);\n            if (maybeCaller !== null) {\n                return this._then(\n                    maybeCaller, undefined, undefined, args, undefined);\n            }\n        }\n    }\n    args.push(methodName);\n    return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n    return obj[this];\n}\nfunction indexedGetter(obj) {\n    var index = +this;\n    if (index < 0) index = Math.max(0, index + obj.length);\n    return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n    var isIndex = (typeof propertyName === \"number\");\n    var getter;\n    if (!isIndex) {\n        if (canEvaluate) {\n            var maybeGetter = getGetter(propertyName);\n            getter = maybeGetter !== null ? maybeGetter : namedGetter;\n        } else {\n            getter = namedGetter;\n        }\n    } else {\n        getter = indexedGetter;\n    }\n    return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n},{\"./util\":36}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n    if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n    var promise = this;\n    var child = promise;\n    while (promise._isCancellable()) {\n        if (!promise._cancelBy(child)) {\n            if (child._isFollowing()) {\n                child._followee().cancel();\n            } else {\n                child._cancelBranched();\n            }\n            break;\n        }\n\n        var parent = promise._cancellationParent;\n        if (parent == null || !parent._isCancellable()) {\n            if (promise._isFollowing()) {\n                promise._followee().cancel();\n            } else {\n                promise._cancelBranched();\n            }\n            break;\n        } else {\n            if (promise._isFollowing()) promise._followee().cancel();\n            promise._setWillBeCancelled();\n            child = promise;\n            promise = parent;\n        }\n    }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n    this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n    return this._branchesRemainingToCancel === undefined ||\n           this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n    if (canceller === this) {\n        this._branchesRemainingToCancel = 0;\n        this._invokeOnCancel();\n        return true;\n    } else {\n        this._branchHasCancelled();\n        if (this._enoughBranchesHaveCancelled()) {\n            this._invokeOnCancel();\n            return true;\n        }\n    }\n    return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n    if (this._enoughBranchesHaveCancelled()) {\n        this._cancel();\n    }\n};\n\nPromise.prototype._cancel = function() {\n    if (!this._isCancellable()) return;\n    this._setCancelled();\n    async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n    if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n    this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n    return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n    return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n    if (util.isArray(onCancelCallback)) {\n        for (var i = 0; i < onCancelCallback.length; ++i) {\n            this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n        }\n    } else if (onCancelCallback !== undefined) {\n        if (typeof onCancelCallback === \"function\") {\n            if (!internalOnly) {\n                var e = tryCatch(onCancelCallback).call(this._boundValue());\n                if (e === errorObj) {\n                    this._attachExtraTrace(e.e);\n                    async.throwLater(e.e);\n                }\n            }\n        } else {\n            onCancelCallback._resultCancelled(this);\n        }\n    }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n    var onCancelCallback = this._onCancel();\n    this._unsetOnCancel();\n    async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n    if (this._isCancellable()) {\n        this._doInvokeOnCancel(this._onCancel(), true);\n        this._unsetOnCancel();\n    }\n};\n\nPromise.prototype._resultCancelled = function() {\n    this.cancel();\n};\n\n};\n\n},{\"./util\":36}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n    return function(e) {\n        var boundTo = promise._boundValue();\n        predicateLoop: for (var i = 0; i < instances.length; ++i) {\n            var item = instances[i];\n\n            if (item === Error ||\n                (item != null && item.prototype instanceof Error)) {\n                if (e instanceof item) {\n                    return tryCatch(cb).call(boundTo, e);\n                }\n            } else if (typeof item === \"function\") {\n                var matchesPredicate = tryCatch(item).call(boundTo, e);\n                if (matchesPredicate === errorObj) {\n                    return matchesPredicate;\n                } else if (matchesPredicate) {\n                    return tryCatch(cb).call(boundTo, e);\n                }\n            } else if (util.isObject(e)) {\n                var keys = getKeys(item);\n                for (var j = 0; j < keys.length; ++j) {\n                    var key = keys[j];\n                    if (item[key] != e[key]) {\n                        continue predicateLoop;\n                    }\n                }\n                return tryCatch(cb).call(boundTo, e);\n            }\n        }\n        return NEXT_FILTER;\n    };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":13,\"./util\":36}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n    this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n    if (this._trace !== undefined) {\n        this._trace._promiseCreated = null;\n        contextStack.push(this._trace);\n    }\n};\n\nContext.prototype._popContext = function () {\n    if (this._trace !== undefined) {\n        var trace = contextStack.pop();\n        var ret = trace._promiseCreated;\n        trace._promiseCreated = null;\n        return ret;\n    }\n    return null;\n};\n\nfunction createContext() {\n    if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n    var lastIndex = contextStack.length - 1;\n    if (lastIndex >= 0) {\n        return contextStack[lastIndex];\n    }\n    return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n    var Promise_pushContext = Promise.prototype._pushContext;\n    var Promise_popContext = Promise.prototype._popContext;\n    var Promise_PeekContext = Promise._peekContext;\n    var Promise_peekContext = Promise.prototype._peekContext;\n    var Promise_promiseCreated = Promise.prototype._promiseCreated;\n    Context.deactivateLongStackTraces = function() {\n        Promise.prototype._pushContext = Promise_pushContext;\n        Promise.prototype._popContext = Promise_popContext;\n        Promise._peekContext = Promise_PeekContext;\n        Promise.prototype._peekContext = Promise_peekContext;\n        Promise.prototype._promiseCreated = Promise_promiseCreated;\n        longStackTraces = false;\n    };\n    longStackTraces = true;\n    Promise.prototype._pushContext = Context.prototype._pushContext;\n    Promise.prototype._popContext = Context.prototype._popContext;\n    Promise._peekContext = Promise.prototype._peekContext = peekContext;\n    Promise.prototype._promiseCreated = function() {\n        var ctx = this._peekContext();\n        if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n    };\n};\nreturn Context;\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context) {\nvar getDomain = Promise._getDomain;\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar es5 = _dereq_(\"./es5\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n    /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n                        (true ||\n                         util.env(\"BLUEBIRD_DEBUG\") ||\n                         util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n    (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n    (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n    (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nPromise.prototype.suppressUnhandledRejections = function() {\n    var target = this._target();\n    target._bitField = ((target._bitField & (~1048576)) |\n                      524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n    if ((this._bitField & 524288) !== 0) return;\n    this._setRejectionIsUnhandled();\n    var self = this;\n    setTimeout(function() {\n        self._notifyUnhandledRejection();\n    }, 1);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n    fireRejectionEvent(\"rejectionHandled\",\n                                  unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n    this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n    return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n    if (this._isRejectionUnhandled()) {\n        var reason = this._settledValue();\n        this._setUnhandledRejectionIsNotified();\n        fireRejectionEvent(\"unhandledRejection\",\n                                      possiblyUnhandledRejection, reason, this);\n    }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n    this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n    this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n    return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n    this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n    this._bitField = this._bitField & (~1048576);\n    if (this._isUnhandledRejectionNotified()) {\n        this._unsetUnhandledRejectionIsNotified();\n        this._notifyUnhandledRejectionIsHandled();\n    }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n    return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n    return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n    var domain = getDomain();\n    possiblyUnhandledRejection =\n        typeof fn === \"function\" ? (domain === null ?\n                                            fn : util.domainBind(domain, fn))\n                                 : undefined;\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n    var domain = getDomain();\n    unhandledRejectionHandled =\n        typeof fn === \"function\" ? (domain === null ?\n                                            fn : util.domainBind(domain, fn))\n                                 : undefined;\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n    if (async.haveItemsQueued() && !config.longStackTraces) {\n        throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    if (!config.longStackTraces && longStackTracesIsSupported()) {\n        var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n        var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n        var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace;\n        config.longStackTraces = true;\n        disableLongStackTraces = function() {\n            if (async.haveItemsQueued() && !config.longStackTraces) {\n                throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n            }\n            Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n            Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n            Promise.prototype._dereferenceTrace = Promise_dereferenceTrace;\n            Context.deactivateLongStackTraces();\n            async.enableTrampoline();\n            config.longStackTraces = false;\n        };\n        Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n        Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n        Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;\n        Context.activateLongStackTraces();\n        async.disableTrampolineIfNecessary();\n    }\n};\n\nPromise.hasLongStackTraces = function () {\n    return config.longStackTraces && longStackTracesIsSupported();\n};\n\nvar fireDomEvent = (function() {\n    try {\n        if (typeof CustomEvent === \"function\") {\n            var event = new CustomEvent(\"CustomEvent\");\n            util.global.dispatchEvent(event);\n            return function(name, event) {\n                var eventData = {\n                    detail: event,\n                    cancelable: true\n                };\n                es5.defineProperty(\n                    eventData, \"promise\", {value: event.promise});\n                es5.defineProperty(eventData, \"reason\", {value: event.reason});\n                var domEvent = new CustomEvent(name.toLowerCase(), eventData);\n                return !util.global.dispatchEvent(domEvent);\n            };\n        } else if (typeof Event === \"function\") {\n            var event = new Event(\"CustomEvent\");\n            util.global.dispatchEvent(event);\n            return function(name, event) {\n                var domEvent = new Event(name.toLowerCase(), {\n                    cancelable: true\n                });\n                domEvent.detail = event;\n                es5.defineProperty(domEvent, \"promise\", {value: event.promise});\n                es5.defineProperty(domEvent, \"reason\", {value: event.reason});\n                return !util.global.dispatchEvent(domEvent);\n            };\n        } else {\n            var event = document.createEvent(\"CustomEvent\");\n            event.initCustomEvent(\"testingtheevent\", false, true, {});\n            util.global.dispatchEvent(event);\n            return function(name, event) {\n                var domEvent = document.createEvent(\"CustomEvent\");\n                domEvent.initCustomEvent(name.toLowerCase(), false, true,\n                    event);\n                return !util.global.dispatchEvent(domEvent);\n            };\n        }\n    } catch (e) {}\n    return function() {\n        return false;\n    };\n})();\n\nvar fireGlobalEvent = (function() {\n    if (util.isNode) {\n        return function() {\n            return process.emit.apply(process, arguments);\n        };\n    } else {\n        if (!util.global) {\n            return function() {\n                return false;\n            };\n        }\n        return function(name) {\n            var methodName = \"on\" + name.toLowerCase();\n            var method = util.global[methodName];\n            if (!method) return false;\n            method.apply(util.global, [].slice.call(arguments, 1));\n            return true;\n        };\n    }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n    return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n    promiseCreated: generatePromiseLifecycleEventObject,\n    promiseFulfilled: generatePromiseLifecycleEventObject,\n    promiseRejected: generatePromiseLifecycleEventObject,\n    promiseResolved: generatePromiseLifecycleEventObject,\n    promiseCancelled: generatePromiseLifecycleEventObject,\n    promiseChained: function(name, promise, child) {\n        return {promise: promise, child: child};\n    },\n    warning: function(name, warning) {\n        return {warning: warning};\n    },\n    unhandledRejection: function (name, reason, promise) {\n        return {reason: reason, promise: promise};\n    },\n    rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n    var globalEventFired = false;\n    try {\n        globalEventFired = fireGlobalEvent.apply(null, arguments);\n    } catch (e) {\n        async.throwLater(e);\n        globalEventFired = true;\n    }\n\n    var domEventFired = false;\n    try {\n        domEventFired = fireDomEvent(name,\n                    eventToObjectGenerator[name].apply(null, arguments));\n    } catch (e) {\n        async.throwLater(e);\n        domEventFired = true;\n    }\n\n    return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n    opts = Object(opts);\n    if (\"longStackTraces\" in opts) {\n        if (opts.longStackTraces) {\n            Promise.longStackTraces();\n        } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n            disableLongStackTraces();\n        }\n    }\n    if (\"warnings\" in opts) {\n        var warningsOption = opts.warnings;\n        config.warnings = !!warningsOption;\n        wForgottenReturn = config.warnings;\n\n        if (util.isObject(warningsOption)) {\n            if (\"wForgottenReturn\" in warningsOption) {\n                wForgottenReturn = !!warningsOption.wForgottenReturn;\n            }\n        }\n    }\n    if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n        if (async.haveItemsQueued()) {\n            throw new Error(\n                \"cannot enable cancellation after promises are in use\");\n        }\n        Promise.prototype._clearCancellationData =\n            cancellationClearCancellationData;\n        Promise.prototype._propagateFrom = cancellationPropagateFrom;\n        Promise.prototype._onCancel = cancellationOnCancel;\n        Promise.prototype._setOnCancel = cancellationSetOnCancel;\n        Promise.prototype._attachCancellationCallback =\n            cancellationAttachCancellationCallback;\n        Promise.prototype._execute = cancellationExecute;\n        propagateFromFunction = cancellationPropagateFrom;\n        config.cancellation = true;\n    }\n    if (\"monitoring\" in opts) {\n        if (opts.monitoring && !config.monitoring) {\n            config.monitoring = true;\n            Promise.prototype._fireEvent = activeFireEvent;\n        } else if (!opts.monitoring && config.monitoring) {\n            config.monitoring = false;\n            Promise.prototype._fireEvent = defaultFireEvent;\n        }\n    }\n    return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n    try {\n        executor(resolve, reject);\n    } catch (e) {\n        return e;\n    }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n    ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._dereferenceTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n    ;\n    ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n    var promise = this;\n    try {\n        executor(resolve, reject, function(onCancel) {\n            if (typeof onCancel !== \"function\") {\n                throw new TypeError(\"onCancel must be a function, got: \" +\n                                    util.toString(onCancel));\n            }\n            promise._attachCancellationCallback(onCancel);\n        });\n    } catch (e) {\n        return e;\n    }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n    if (!this._isCancellable()) return this;\n\n    var previousOnCancel = this._onCancel();\n    if (previousOnCancel !== undefined) {\n        if (util.isArray(previousOnCancel)) {\n            previousOnCancel.push(onCancel);\n        } else {\n            this._setOnCancel([previousOnCancel, onCancel]);\n        }\n    } else {\n        this._setOnCancel(onCancel);\n    }\n}\n\nfunction cancellationOnCancel() {\n    return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n    this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n    this._cancellationParent = undefined;\n    this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n    if ((flags & 1) !== 0) {\n        this._cancellationParent = parent;\n        var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n        if (branchesRemainingToCancel === undefined) {\n            branchesRemainingToCancel = 0;\n        }\n        parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n    }\n    if ((flags & 2) !== 0 && parent._isBound()) {\n        this._setBoundTo(parent._boundTo);\n    }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n    if ((flags & 2) !== 0 && parent._isBound()) {\n        this._setBoundTo(parent._boundTo);\n    }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n    var ret = this._boundTo;\n    if (ret !== undefined) {\n        if (ret instanceof Promise) {\n            if (ret.isFulfilled()) {\n                return ret.value();\n            } else {\n                return undefined;\n            }\n        }\n    }\n    return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n    this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n    if (canAttachTrace(error)) {\n        var trace = this._trace;\n        if (trace !== undefined) {\n            if (ignoreSelf) trace = trace._parent;\n        }\n        if (trace !== undefined) {\n            trace.attachExtraTrace(error);\n        } else if (!error.__stackCleaned__) {\n            var parsed = parseStackAndMessage(error);\n            util.notEnumerableProp(error, \"stack\",\n                parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n            util.notEnumerableProp(error, \"__stackCleaned__\", true);\n        }\n    }\n}\n\nfunction longStackTracesDereferenceTrace() {\n    this._trace = undefined;\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n                               parent) {\n    if (returnValue === undefined && promiseCreated !== null &&\n        wForgottenReturn) {\n        if (parent !== undefined && parent._returnedNonUndefined()) return;\n        if ((promise._bitField & 65535) === 0) return;\n\n        if (name) name = name + \" \";\n        var handlerLine = \"\";\n        var creatorLine = \"\";\n        if (promiseCreated._trace) {\n            var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n            var stack = cleanStack(traceLines);\n            for (var i = stack.length - 1; i >= 0; --i) {\n                var line = stack[i];\n                if (!nodeFramePattern.test(line)) {\n                    var lineMatches = line.match(parseLinePattern);\n                    if (lineMatches) {\n                        handlerLine  = \"at \" + lineMatches[1] +\n                            \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n                    }\n                    break;\n                }\n            }\n\n            if (stack.length > 0) {\n                var firstUserLine = stack[0];\n                for (var i = 0; i < traceLines.length; ++i) {\n\n                    if (traceLines[i] === firstUserLine) {\n                        if (i > 0) {\n                            creatorLine = \"\\n\" + traceLines[i - 1];\n                        }\n                        break;\n                    }\n                }\n\n            }\n        }\n        var msg = \"a promise was created in a \" + name +\n            \"handler \" + handlerLine + \"but was not returned from it, \" +\n            \"see http://goo.gl/rRqMUw\" +\n            creatorLine;\n        promise._warn(msg, true, promiseCreated);\n    }\n}\n\nfunction deprecated(name, replacement) {\n    var message = name +\n        \" is deprecated and will be removed in a future version.\";\n    if (replacement) message += \" Use \" + replacement + \" instead.\";\n    return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n    if (!config.warnings) return;\n    var warning = new Warning(message);\n    var ctx;\n    if (shouldUseOwnTrace) {\n        promise._attachExtraTrace(warning);\n    } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n        ctx.attachExtraTrace(warning);\n    } else {\n        var parsed = parseStackAndMessage(warning);\n        warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n    }\n\n    if (!activeFireEvent(\"warning\", warning)) {\n        formatAndLogError(warning, \"\", true);\n    }\n}\n\nfunction reconstructStack(message, stacks) {\n    for (var i = 0; i < stacks.length - 1; ++i) {\n        stacks[i].push(\"From previous event:\");\n        stacks[i] = stacks[i].join(\"\\n\");\n    }\n    if (i < stacks.length) {\n        stacks[i] = stacks[i].join(\"\\n\");\n    }\n    return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n    for (var i = 0; i < stacks.length; ++i) {\n        if (stacks[i].length === 0 ||\n            ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n            stacks.splice(i, 1);\n            i--;\n        }\n    }\n}\n\nfunction removeCommonRoots(stacks) {\n    var current = stacks[0];\n    for (var i = 1; i < stacks.length; ++i) {\n        var prev = stacks[i];\n        var currentLastIndex = current.length - 1;\n        var currentLastLine = current[currentLastIndex];\n        var commonRootMeetPoint = -1;\n\n        for (var j = prev.length - 1; j >= 0; --j) {\n            if (prev[j] === currentLastLine) {\n                commonRootMeetPoint = j;\n                break;\n            }\n        }\n\n        for (var j = commonRootMeetPoint; j >= 0; --j) {\n            var line = prev[j];\n            if (current[currentLastIndex] === line) {\n                current.pop();\n                currentLastIndex--;\n            } else {\n                break;\n            }\n        }\n        current = prev;\n    }\n}\n\nfunction cleanStack(stack) {\n    var ret = [];\n    for (var i = 0; i < stack.length; ++i) {\n        var line = stack[i];\n        var isTraceLine = \"    (No stack trace)\" === line ||\n            stackFramePattern.test(line);\n        var isInternalFrame = isTraceLine && shouldIgnore(line);\n        if (isTraceLine && !isInternalFrame) {\n            if (indentStackFrames && line.charAt(0) !== \" \") {\n                line = \"    \" + line;\n            }\n            ret.push(line);\n        }\n    }\n    return ret;\n}\n\nfunction stackFramesAsArray(error) {\n    var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n    for (var i = 0; i < stack.length; ++i) {\n        var line = stack[i];\n        if (\"    (No stack trace)\" === line || stackFramePattern.test(line)) {\n            break;\n        }\n    }\n    if (i > 0 && error.name != \"SyntaxError\") {\n        stack = stack.slice(i);\n    }\n    return stack;\n}\n\nfunction parseStackAndMessage(error) {\n    var stack = error.stack;\n    var message = error.toString();\n    stack = typeof stack === \"string\" && stack.length > 0\n                ? stackFramesAsArray(error) : [\"    (No stack trace)\"];\n    return {\n        message: message,\n        stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n    };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n    if (typeof console !== \"undefined\") {\n        var message;\n        if (util.isObject(error)) {\n            var stack = error.stack;\n            message = title + formatStack(stack, error);\n        } else {\n            message = title + String(error);\n        }\n        if (typeof printWarning === \"function\") {\n            printWarning(message, isSoft);\n        } else if (typeof console.log === \"function\" ||\n            typeof console.log === \"object\") {\n            console.log(message);\n        }\n    }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n    var localEventFired = false;\n    try {\n        if (typeof localHandler === \"function\") {\n            localEventFired = true;\n            if (name === \"rejectionHandled\") {\n                localHandler(promise);\n            } else {\n                localHandler(reason, promise);\n            }\n        }\n    } catch (e) {\n        async.throwLater(e);\n    }\n\n    if (name === \"unhandledRejection\") {\n        if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n            formatAndLogError(reason, \"Unhandled rejection \");\n        }\n    } else {\n        activeFireEvent(name, promise);\n    }\n}\n\nfunction formatNonError(obj) {\n    var str;\n    if (typeof obj === \"function\") {\n        str = \"[function \" +\n            (obj.name || \"anonymous\") +\n            \"]\";\n    } else {\n        str = obj && typeof obj.toString === \"function\"\n            ? obj.toString() : util.toString(obj);\n        var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n        if (ruselessToString.test(str)) {\n            try {\n                var newStr = JSON.stringify(obj);\n                str = newStr;\n            }\n            catch(e) {\n\n            }\n        }\n        if (str.length === 0) {\n            str = \"(empty array)\";\n        }\n    }\n    return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n    var maxChars = 41;\n    if (str.length < maxChars) {\n        return str;\n    }\n    return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n    return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n    var matches = line.match(parseLineInfoRegex);\n    if (matches) {\n        return {\n            fileName: matches[1],\n            line: parseInt(matches[2], 10)\n        };\n    }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n    if (!longStackTracesIsSupported()) return;\n    var firstStackLines = firstLineError.stack.split(\"\\n\");\n    var lastStackLines = lastLineError.stack.split(\"\\n\");\n    var firstIndex = -1;\n    var lastIndex = -1;\n    var firstFileName;\n    var lastFileName;\n    for (var i = 0; i < firstStackLines.length; ++i) {\n        var result = parseLineInfo(firstStackLines[i]);\n        if (result) {\n            firstFileName = result.fileName;\n            firstIndex = result.line;\n            break;\n        }\n    }\n    for (var i = 0; i < lastStackLines.length; ++i) {\n        var result = parseLineInfo(lastStackLines[i]);\n        if (result) {\n            lastFileName = result.fileName;\n            lastIndex = result.line;\n            break;\n        }\n    }\n    if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n        firstFileName !== lastFileName || firstIndex >= lastIndex) {\n        return;\n    }\n\n    shouldIgnore = function(line) {\n        if (bluebirdFramePattern.test(line)) return true;\n        var info = parseLineInfo(line);\n        if (info) {\n            if (info.fileName === firstFileName &&\n                (firstIndex <= info.line && info.line <= lastIndex)) {\n                return true;\n            }\n        }\n        return false;\n    };\n}\n\nfunction CapturedTrace(parent) {\n    this._parent = parent;\n    this._promisesCreated = 0;\n    var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n    captureStackTrace(this, CapturedTrace);\n    if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n    var length = this._length;\n    if (length < 2) return;\n    var nodes = [];\n    var stackToIndex = {};\n\n    for (var i = 0, node = this; node !== undefined; ++i) {\n        nodes.push(node);\n        node = node._parent;\n    }\n    length = this._length = i;\n    for (var i = length - 1; i >= 0; --i) {\n        var stack = nodes[i].stack;\n        if (stackToIndex[stack] === undefined) {\n            stackToIndex[stack] = i;\n        }\n    }\n    for (var i = 0; i < length; ++i) {\n        var currentStack = nodes[i].stack;\n        var index = stackToIndex[currentStack];\n        if (index !== undefined && index !== i) {\n            if (index > 0) {\n                nodes[index - 1]._parent = undefined;\n                nodes[index - 1]._length = 1;\n            }\n            nodes[i]._parent = undefined;\n            nodes[i]._length = 1;\n            var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n            if (index < length - 1) {\n                cycleEdgeNode._parent = nodes[index + 1];\n                cycleEdgeNode._parent.uncycle();\n                cycleEdgeNode._length =\n                    cycleEdgeNode._parent._length + 1;\n            } else {\n                cycleEdgeNode._parent = undefined;\n                cycleEdgeNode._length = 1;\n            }\n            var currentChildLength = cycleEdgeNode._length + 1;\n            for (var j = i - 2; j >= 0; --j) {\n                nodes[j]._length = currentChildLength;\n                currentChildLength++;\n            }\n            return;\n        }\n    }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n    if (error.__stackCleaned__) return;\n    this.uncycle();\n    var parsed = parseStackAndMessage(error);\n    var message = parsed.message;\n    var stacks = [parsed.stack];\n\n    var trace = this;\n    while (trace !== undefined) {\n        stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n        trace = trace._parent;\n    }\n    removeCommonRoots(stacks);\n    removeDuplicateOrEmptyJumps(stacks);\n    util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n    util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n    var v8stackFramePattern = /^\\s*at\\s*/;\n    var v8stackFormatter = function(stack, error) {\n        if (typeof stack === \"string\") return stack;\n\n        if (error.name !== undefined &&\n            error.message !== undefined) {\n            return error.toString();\n        }\n        return formatNonError(error);\n    };\n\n    if (typeof Error.stackTraceLimit === \"number\" &&\n        typeof Error.captureStackTrace === \"function\") {\n        Error.stackTraceLimit += 6;\n        stackFramePattern = v8stackFramePattern;\n        formatStack = v8stackFormatter;\n        var captureStackTrace = Error.captureStackTrace;\n\n        shouldIgnore = function(line) {\n            return bluebirdFramePattern.test(line);\n        };\n        return function(receiver, ignoreUntil) {\n            Error.stackTraceLimit += 6;\n            captureStackTrace(receiver, ignoreUntil);\n            Error.stackTraceLimit -= 6;\n        };\n    }\n    var err = new Error();\n\n    if (typeof err.stack === \"string\" &&\n        err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n        stackFramePattern = /@/;\n        formatStack = v8stackFormatter;\n        indentStackFrames = true;\n        return function captureStackTrace(o) {\n            o.stack = new Error().stack;\n        };\n    }\n\n    var hasStackAfterThrow;\n    try { throw new Error(); }\n    catch(e) {\n        hasStackAfterThrow = (\"stack\" in e);\n    }\n    if (!(\"stack\" in err) && hasStackAfterThrow &&\n        typeof Error.stackTraceLimit === \"number\") {\n        stackFramePattern = v8stackFramePattern;\n        formatStack = v8stackFormatter;\n        return function captureStackTrace(o) {\n            Error.stackTraceLimit += 6;\n            try { throw new Error(); }\n            catch(e) { o.stack = e.stack; }\n            Error.stackTraceLimit -= 6;\n        };\n    }\n\n    formatStack = function(stack, error) {\n        if (typeof stack === \"string\") return stack;\n\n        if ((typeof error === \"object\" ||\n            typeof error === \"function\") &&\n            error.name !== undefined &&\n            error.message !== undefined) {\n            return error.toString();\n        }\n        return formatNonError(error);\n    };\n\n    return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n    printWarning = function (message) {\n        console.warn(message);\n    };\n    if (util.isNode && process.stderr.isTTY) {\n        printWarning = function(message, isSoft) {\n            var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n            console.warn(color + message + \"\\u001b[0m\\n\");\n        };\n    } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n        printWarning = function(message, isSoft) {\n            console.warn(\"%c\" + message,\n                        isSoft ? \"color: darkorange\" : \"color: red\");\n        };\n    }\n}\n\nvar config = {\n    warnings: warnings,\n    longStackTraces: false,\n    cancellation: false,\n    monitoring: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n    longStackTraces: function() {\n        return config.longStackTraces;\n    },\n    warnings: function() {\n        return config.warnings;\n    },\n    cancellation: function() {\n        return config.cancellation;\n    },\n    monitoring: function() {\n        return config.monitoring;\n    },\n    propagateFromFunction: function() {\n        return propagateFromFunction;\n    },\n    boundValueFunction: function() {\n        return boundValueFunction;\n    },\n    checkForgottenReturns: checkForgottenReturns,\n    setBounds: setBounds,\n    warn: warn,\n    deprecated: deprecated,\n    CapturedTrace: CapturedTrace,\n    fireDomEvent: fireDomEvent,\n    fireGlobalEvent: fireGlobalEvent\n};\n};\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],10:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n    return this.value;\n}\nfunction thrower() {\n    throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n    if (value instanceof Promise) value.suppressUnhandledRejections();\n    return this._then(\n        returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n    return this._then(\n        thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n    if (arguments.length <= 1) {\n        return this._then(\n            undefined, thrower, undefined, {reason: reason}, undefined);\n    } else {\n        var _reason = arguments[1];\n        var handler = function() {throw _reason;};\n        return this.caught(reason, handler);\n    }\n};\n\nPromise.prototype.catchReturn = function (value) {\n    if (arguments.length <= 1) {\n        if (value instanceof Promise) value.suppressUnhandledRejections();\n        return this._then(\n            undefined, returner, undefined, {value: value}, undefined);\n    } else {\n        var _value = arguments[1];\n        if (_value instanceof Promise) _value.suppressUnhandledRejections();\n        var handler = function() {return _value;};\n        return this.caught(value, handler);\n    }\n};\n};\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n    return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n    return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n    return PromiseReduce(this, fn, INTERNAL, 0)\n              ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n    return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n    return PromiseReduce(promises, fn, INTERNAL, 0)\n              ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n},{}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n    function SubError(message) {\n        if (!(this instanceof SubError)) return new SubError(message);\n        notEnumerableProp(this, \"message\",\n            typeof message === \"string\" ? message : defaultMessage);\n        notEnumerableProp(this, \"name\", nameProperty);\n        if (Error.captureStackTrace) {\n            Error.captureStackTrace(this, this.constructor);\n        } else {\n            Error.call(this);\n        }\n    }\n    inherits(SubError, Error);\n    return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n    _TypeError = TypeError;\n    _RangeError = RangeError;\n} catch(e) {\n    _TypeError = subError(\"TypeError\", \"type error\");\n    _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n    \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n    if (typeof Array.prototype[methods[i]] === \"function\") {\n        AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n    }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n    value: 0,\n    configurable: false,\n    writable: true,\n    enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n    var indent = Array(level * 4 + 1).join(\" \");\n    var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n    level++;\n    indent = Array(level * 4 + 1).join(\" \");\n    for (var i = 0; i < this.length; ++i) {\n        var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n        var lines = str.split(\"\\n\");\n        for (var j = 0; j < lines.length; ++j) {\n            lines[j] = indent + lines[j];\n        }\n        str = lines.join(\"\\n\");\n        ret += str + \"\\n\";\n    }\n    level--;\n    return ret;\n};\n\nfunction OperationalError(message) {\n    if (!(this instanceof OperationalError))\n        return new OperationalError(message);\n    notEnumerableProp(this, \"name\", \"OperationalError\");\n    notEnumerableProp(this, \"message\", message);\n    this.cause = message;\n    this[\"isOperational\"] = true;\n\n    if (message instanceof Error) {\n        notEnumerableProp(this, \"message\", message.message);\n        notEnumerableProp(this, \"stack\", message.stack);\n    } else if (Error.captureStackTrace) {\n        Error.captureStackTrace(this, this.constructor);\n    }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n    errorTypes = Objectfreeze({\n        CancellationError: CancellationError,\n        TimeoutError: TimeoutError,\n        OperationalError: OperationalError,\n        RejectionError: OperationalError,\n        AggregateError: AggregateError\n    });\n    es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n        value: errorTypes,\n        writable: false,\n        enumerable: false,\n        configurable: false\n    });\n}\n\nmodule.exports = {\n    Error: Error,\n    TypeError: _TypeError,\n    RangeError: _RangeError,\n    CancellationError: errorTypes.CancellationError,\n    OperationalError: errorTypes.OperationalError,\n    TimeoutError: errorTypes.TimeoutError,\n    AggregateError: errorTypes.AggregateError,\n    Warning: Warning\n};\n\n},{\"./es5\":13,\"./util\":36}],13:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n    \"use strict\";\n    return this === undefined;\n})();\n\nif (isES5) {\n    module.exports = {\n        freeze: Object.freeze,\n        defineProperty: Object.defineProperty,\n        getDescriptor: Object.getOwnPropertyDescriptor,\n        keys: Object.keys,\n        names: Object.getOwnPropertyNames,\n        getPrototypeOf: Object.getPrototypeOf,\n        isArray: Array.isArray,\n        isES5: isES5,\n        propertyIsWritable: function(obj, prop) {\n            var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n            return !!(!descriptor || descriptor.writable || descriptor.set);\n        }\n    };\n} else {\n    var has = {}.hasOwnProperty;\n    var str = {}.toString;\n    var proto = {}.constructor.prototype;\n\n    var ObjectKeys = function (o) {\n        var ret = [];\n        for (var key in o) {\n            if (has.call(o, key)) {\n                ret.push(key);\n            }\n        }\n        return ret;\n    };\n\n    var ObjectGetDescriptor = function(o, key) {\n        return {value: o[key]};\n    };\n\n    var ObjectDefineProperty = function (o, key, desc) {\n        o[key] = desc.value;\n        return o;\n    };\n\n    var ObjectFreeze = function (obj) {\n        return obj;\n    };\n\n    var ObjectGetPrototypeOf = function (obj) {\n        try {\n            return Object(obj).constructor.prototype;\n        }\n        catch (e) {\n            return proto;\n        }\n    };\n\n    var ArrayIsArray = function (obj) {\n        try {\n            return str.call(obj) === \"[object Array]\";\n        }\n        catch(e) {\n            return false;\n        }\n    };\n\n    module.exports = {\n        isArray: ArrayIsArray,\n        keys: ObjectKeys,\n        names: ObjectKeys,\n        defineProperty: ObjectDefineProperty,\n        getDescriptor: ObjectGetDescriptor,\n        freeze: ObjectFreeze,\n        getPrototypeOf: ObjectGetPrototypeOf,\n        isES5: isES5,\n        propertyIsWritable: function() {\n            return true;\n        }\n    };\n}\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n    return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n    return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n    this.promise = promise;\n    this.type = type;\n    this.handler = handler;\n    this.called = false;\n    this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n    return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n    this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n    checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n    if (ctx.cancelPromise != null) {\n        if (arguments.length > 1) {\n            ctx.cancelPromise._reject(reason);\n        } else {\n            ctx.cancelPromise._cancel();\n        }\n        ctx.cancelPromise = null;\n        return true;\n    }\n    return false;\n}\n\nfunction succeed() {\n    return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n    if (checkCancel(this, reason)) return;\n    errorObj.e = reason;\n    return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n    var promise = this.promise;\n    var handler = this.handler;\n\n    if (!this.called) {\n        this.called = true;\n        var ret = this.isFinallyHandler()\n            ? handler.call(promise._boundValue())\n            : handler.call(promise._boundValue(), reasonOrValue);\n        if (ret === NEXT_FILTER) {\n            return ret;\n        } else if (ret !== undefined) {\n            promise._setReturnedNonUndefined();\n            var maybePromise = tryConvertToPromise(ret, promise);\n            if (maybePromise instanceof Promise) {\n                if (this.cancelPromise != null) {\n                    if (maybePromise._isCancelled()) {\n                        var reason =\n                            new CancellationError(\"late cancellation observer\");\n                        promise._attachExtraTrace(reason);\n                        errorObj.e = reason;\n                        return errorObj;\n                    } else if (maybePromise.isPending()) {\n                        maybePromise._attachCancellationCallback(\n                            new FinallyHandlerCancelReaction(this));\n                    }\n                }\n                return maybePromise._then(\n                    succeed, fail, undefined, this, undefined);\n            }\n        }\n    }\n\n    if (promise.isRejected()) {\n        checkCancel(this);\n        errorObj.e = reasonOrValue;\n        return errorObj;\n    } else {\n        checkCancel(this);\n        return reasonOrValue;\n    }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n    if (typeof handler !== \"function\") return this.then();\n    return this._then(success,\n                      fail,\n                      undefined,\n                      new PassThroughHandlerContext(this, type, handler),\n                      undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n    return this._passThrough(handler,\n                             0,\n                             finallyHandler,\n                             finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n    return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n    var len = arguments.length;\n    if(len === 1) {\n        return this._passThrough(handlerOrPredicate,\n                                 1,\n                                 undefined,\n                                 finallyHandler);\n    } else {\n         var catchInstances = new Array(len - 1),\n            j = 0, i;\n        for (i = 0; i < len - 1; ++i) {\n            var item = arguments[i];\n            if (util.isObject(item)) {\n                catchInstances[j++] = item;\n            } else {\n                return Promise.reject(new TypeError(\n                    \"tapCatch statement predicate: \"\n                    + \"expecting an object but got \" + util.classString(item)\n                ));\n            }\n        }\n        catchInstances.length = j;\n        var handler = arguments[i];\n        return this._passThrough(catchFilter(catchInstances, handler, this),\n                                 1,\n                                 undefined,\n                                 finallyHandler);\n    }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":7,\"./util\":36}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n                          apiRejection,\n                          INTERNAL,\n                          tryConvertToPromise,\n                          Proxyable,\n                          debug) {\nvar errors = _dereq_(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n    for (var i = 0; i < yieldHandlers.length; ++i) {\n        traceParent._pushContext();\n        var result = tryCatch(yieldHandlers[i])(value);\n        traceParent._popContext();\n        if (result === errorObj) {\n            traceParent._pushContext();\n            var ret = Promise.reject(errorObj.e);\n            traceParent._popContext();\n            return ret;\n        }\n        var maybePromise = tryConvertToPromise(result, traceParent);\n        if (maybePromise instanceof Promise) return maybePromise;\n    }\n    return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n    if (debug.cancellation()) {\n        var internal = new Promise(INTERNAL);\n        var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n        this._promise = internal.lastly(function() {\n            return _finallyPromise;\n        });\n        internal._captureStackTrace();\n        internal._setOnCancel(this);\n    } else {\n        var promise = this._promise = new Promise(INTERNAL);\n        promise._captureStackTrace();\n    }\n    this._stack = stack;\n    this._generatorFunction = generatorFunction;\n    this._receiver = receiver;\n    this._generator = undefined;\n    this._yieldHandlers = typeof yieldHandler === \"function\"\n        ? [yieldHandler].concat(yieldHandlers)\n        : yieldHandlers;\n    this._yieldedPromise = null;\n    this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n    return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n    this._promise = this._generator = null;\n    if (debug.cancellation() && this._finallyPromise !== null) {\n        this._finallyPromise._fulfill();\n        this._finallyPromise = null;\n    }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n    if (this._isResolved()) return;\n    var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n    var result;\n    if (!implementsReturn) {\n        var reason = new Promise.CancellationError(\n            \"generator .return() sentinel\");\n        Promise.coroutine.returnSentinel = reason;\n        this._promise._attachExtraTrace(reason);\n        this._promise._pushContext();\n        result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n                                                         reason);\n        this._promise._popContext();\n    } else {\n        this._promise._pushContext();\n        result = tryCatch(this._generator[\"return\"]).call(this._generator,\n                                                          undefined);\n        this._promise._popContext();\n    }\n    this._cancellationPhase = true;\n    this._yieldedPromise = null;\n    this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n    this._yieldedPromise = null;\n    this._promise._pushContext();\n    var result = tryCatch(this._generator.next).call(this._generator, value);\n    this._promise._popContext();\n    this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n    this._yieldedPromise = null;\n    this._promise._attachExtraTrace(reason);\n    this._promise._pushContext();\n    var result = tryCatch(this._generator[\"throw\"])\n        .call(this._generator, reason);\n    this._promise._popContext();\n    this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n    if (this._yieldedPromise instanceof Promise) {\n        var promise = this._yieldedPromise;\n        this._yieldedPromise = null;\n        promise.cancel();\n    }\n};\n\nPromiseSpawn.prototype.promise = function () {\n    return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n    this._generator = this._generatorFunction.call(this._receiver);\n    this._receiver =\n        this._generatorFunction = undefined;\n    this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n    var promise = this._promise;\n    if (result === errorObj) {\n        this._cleanup();\n        if (this._cancellationPhase) {\n            return promise.cancel();\n        } else {\n            return promise._rejectCallback(result.e, false);\n        }\n    }\n\n    var value = result.value;\n    if (result.done === true) {\n        this._cleanup();\n        if (this._cancellationPhase) {\n            return promise.cancel();\n        } else {\n            return promise._resolveCallback(value);\n        }\n    } else {\n        var maybePromise = tryConvertToPromise(value, this._promise);\n        if (!(maybePromise instanceof Promise)) {\n            maybePromise =\n                promiseFromYieldHandler(maybePromise,\n                                        this._yieldHandlers,\n                                        this._promise);\n            if (maybePromise === null) {\n                this._promiseRejected(\n                    new TypeError(\n                        \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n                        \"From coroutine:\\u000a\" +\n                        this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n                    )\n                );\n                return;\n            }\n        }\n        maybePromise = maybePromise._target();\n        var bitField = maybePromise._bitField;\n        ;\n        if (((bitField & 50397184) === 0)) {\n            this._yieldedPromise = maybePromise;\n            maybePromise._proxy(this, null);\n        } else if (((bitField & 33554432) !== 0)) {\n            Promise._async.invoke(\n                this._promiseFulfilled, this, maybePromise._value()\n            );\n        } else if (((bitField & 16777216) !== 0)) {\n            Promise._async.invoke(\n                this._promiseRejected, this, maybePromise._reason()\n            );\n        } else {\n            this._promiseCancelled();\n        }\n    }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n    if (typeof generatorFunction !== \"function\") {\n        throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    var yieldHandler = Object(options).yieldHandler;\n    var PromiseSpawn$ = PromiseSpawn;\n    var stack = new Error().stack;\n    return function () {\n        var generator = generatorFunction.apply(this, arguments);\n        var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n                                      stack);\n        var ret = spawn.promise();\n        spawn._generator = generator;\n        spawn._promiseFulfilled(undefined);\n        return ret;\n    };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n    if (typeof fn !== \"function\") {\n        throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n    }\n    yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n    debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n    if (typeof generatorFunction !== \"function\") {\n        return apiRejection(\"generatorFunction must be a function\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    var spawn = new PromiseSpawn(generatorFunction, this);\n    var ret = spawn.promise();\n    spawn._run(Promise.spawn);\n    return ret;\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async,\n         getDomain) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (!true) {\nif (canEvaluate) {\n    var thenCallback = function(i) {\n        return new Function(\"value\", \"holder\", \"                             \\n\\\n            'use strict';                                                    \\n\\\n            holder.pIndex = value;                                           \\n\\\n            holder.checkFulfillment(this);                                   \\n\\\n            \".replace(/Index/g, i));\n    };\n\n    var promiseSetter = function(i) {\n        return new Function(\"promise\", \"holder\", \"                           \\n\\\n            'use strict';                                                    \\n\\\n            holder.pIndex = promise;                                         \\n\\\n            \".replace(/Index/g, i));\n    };\n\n    var generateHolderClass = function(total) {\n        var props = new Array(total);\n        for (var i = 0; i < props.length; ++i) {\n            props[i] = \"this.p\" + (i+1);\n        }\n        var assignment = props.join(\" = \") + \" = null;\";\n        var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n            return \"                                                         \\n\\\n                promise = \" + prop + \";                                      \\n\\\n                if (promise instanceof Promise) {                            \\n\\\n                    promise.cancel();                                        \\n\\\n                }                                                            \\n\\\n            \";\n        }).join(\"\\n\");\n        var passedArguments = props.join(\", \");\n        var name = \"Holder$\" + total;\n\n\n        var code = \"return function(tryCatch, errorObj, Promise, async) {    \\n\\\n            'use strict';                                                    \\n\\\n            function [TheName](fn) {                                         \\n\\\n                [TheProperties]                                              \\n\\\n                this.fn = fn;                                                \\n\\\n                this.asyncNeeded = true;                                     \\n\\\n                this.now = 0;                                                \\n\\\n            }                                                                \\n\\\n                                                                             \\n\\\n            [TheName].prototype._callFunction = function(promise) {          \\n\\\n                promise._pushContext();                                      \\n\\\n                var ret = tryCatch(this.fn)([ThePassedArguments]);           \\n\\\n                promise._popContext();                                       \\n\\\n                if (ret === errorObj) {                                      \\n\\\n                    promise._rejectCallback(ret.e, false);                   \\n\\\n                } else {                                                     \\n\\\n                    promise._resolveCallback(ret);                           \\n\\\n                }                                                            \\n\\\n            };                                                               \\n\\\n                                                                             \\n\\\n            [TheName].prototype.checkFulfillment = function(promise) {       \\n\\\n                var now = ++this.now;                                        \\n\\\n                if (now === [TheTotal]) {                                    \\n\\\n                    if (this.asyncNeeded) {                                  \\n\\\n                        async.invoke(this._callFunction, this, promise);     \\n\\\n                    } else {                                                 \\n\\\n                        this._callFunction(promise);                         \\n\\\n                    }                                                        \\n\\\n                                                                             \\n\\\n                }                                                            \\n\\\n            };                                                               \\n\\\n                                                                             \\n\\\n            [TheName].prototype._resultCancelled = function() {              \\n\\\n                [CancellationCode]                                           \\n\\\n            };                                                               \\n\\\n                                                                             \\n\\\n            return [TheName];                                                \\n\\\n        }(tryCatch, errorObj, Promise, async);                               \\n\\\n        \";\n\n        code = code.replace(/\\[TheName\\]/g, name)\n            .replace(/\\[TheTotal\\]/g, total)\n            .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n            .replace(/\\[TheProperties\\]/g, assignment)\n            .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n        return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n                           (tryCatch, errorObj, Promise, async);\n    };\n\n    var holderClasses = [];\n    var thenCallbacks = [];\n    var promiseSetters = [];\n\n    for (var i = 0; i < 8; ++i) {\n        holderClasses.push(generateHolderClass(i + 1));\n        thenCallbacks.push(thenCallback(i + 1));\n        promiseSetters.push(promiseSetter(i + 1));\n    }\n\n    reject = function (reason) {\n        this._reject(reason);\n    };\n}}\n\nPromise.join = function () {\n    var last = arguments.length - 1;\n    var fn;\n    if (last > 0 && typeof arguments[last] === \"function\") {\n        fn = arguments[last];\n        if (!true) {\n            if (last <= 8 && canEvaluate) {\n                var ret = new Promise(INTERNAL);\n                ret._captureStackTrace();\n                var HolderClass = holderClasses[last - 1];\n                var holder = new HolderClass(fn);\n                var callbacks = thenCallbacks;\n\n                for (var i = 0; i < last; ++i) {\n                    var maybePromise = tryConvertToPromise(arguments[i], ret);\n                    if (maybePromise instanceof Promise) {\n                        maybePromise = maybePromise._target();\n                        var bitField = maybePromise._bitField;\n                        ;\n                        if (((bitField & 50397184) === 0)) {\n                            maybePromise._then(callbacks[i], reject,\n                                               undefined, ret, holder);\n                            promiseSetters[i](maybePromise, holder);\n                            holder.asyncNeeded = false;\n                        } else if (((bitField & 33554432) !== 0)) {\n                            callbacks[i].call(ret,\n                                              maybePromise._value(), holder);\n                        } else if (((bitField & 16777216) !== 0)) {\n                            ret._reject(maybePromise._reason());\n                        } else {\n                            ret._cancel();\n                        }\n                    } else {\n                        callbacks[i].call(ret, maybePromise, holder);\n                    }\n                }\n\n                if (!ret._isFateSealed()) {\n                    if (holder.asyncNeeded) {\n                        var domain = getDomain();\n                        if (domain !== null) {\n                            holder.fn = util.domainBind(domain, holder.fn);\n                        }\n                    }\n                    ret._setAsyncGuaranteed();\n                    ret._setOnCancel(holder);\n                }\n                return ret;\n            }\n        }\n    }\n    var args = [].slice.call(arguments);;\n    if (fn) args.pop();\n    var ret = new PromiseArray(args).promise();\n    return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":36}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n                          PromiseArray,\n                          apiRejection,\n                          tryConvertToPromise,\n                          INTERNAL,\n                          debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n    this.constructor$(promises);\n    this._promise._captureStackTrace();\n    var domain = getDomain();\n    this._callback = domain === null ? fn : util.domainBind(domain, fn);\n    this._preservedValues = _filter === INTERNAL\n        ? new Array(this.length())\n        : null;\n    this._limit = limit;\n    this._inFlight = 0;\n    this._queue = [];\n    async.invoke(this._asyncInit, this, undefined);\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n    this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n    var values = this._values;\n    var length = this.length();\n    var preservedValues = this._preservedValues;\n    var limit = this._limit;\n\n    if (index < 0) {\n        index = (index * -1) - 1;\n        values[index] = value;\n        if (limit >= 1) {\n            this._inFlight--;\n            this._drainQueue();\n            if (this._isResolved()) return true;\n        }\n    } else {\n        if (limit >= 1 && this._inFlight >= limit) {\n            values[index] = value;\n            this._queue.push(index);\n            return false;\n        }\n        if (preservedValues !== null) preservedValues[index] = value;\n\n        var promise = this._promise;\n        var callback = this._callback;\n        var receiver = promise._boundValue();\n        promise._pushContext();\n        var ret = tryCatch(callback).call(receiver, value, index, length);\n        var promiseCreated = promise._popContext();\n        debug.checkForgottenReturns(\n            ret,\n            promiseCreated,\n            preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n            promise\n        );\n        if (ret === errorObj) {\n            this._reject(ret.e);\n            return true;\n        }\n\n        var maybePromise = tryConvertToPromise(ret, this._promise);\n        if (maybePromise instanceof Promise) {\n            maybePromise = maybePromise._target();\n            var bitField = maybePromise._bitField;\n            ;\n            if (((bitField & 50397184) === 0)) {\n                if (limit >= 1) this._inFlight++;\n                values[index] = maybePromise;\n                maybePromise._proxy(this, (index + 1) * -1);\n                return false;\n            } else if (((bitField & 33554432) !== 0)) {\n                ret = maybePromise._value();\n            } else if (((bitField & 16777216) !== 0)) {\n                this._reject(maybePromise._reason());\n                return true;\n            } else {\n                this._cancel();\n                return true;\n            }\n        }\n        values[index] = ret;\n    }\n    var totalResolved = ++this._totalResolved;\n    if (totalResolved >= length) {\n        if (preservedValues !== null) {\n            this._filter(values, preservedValues);\n        } else {\n            this._resolve(values);\n        }\n        return true;\n    }\n    return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n    var queue = this._queue;\n    var limit = this._limit;\n    var values = this._values;\n    while (queue.length > 0 && this._inFlight < limit) {\n        if (this._isResolved()) return;\n        var index = queue.pop();\n        this._promiseFulfilled(values[index], index);\n    }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n    var len = values.length;\n    var ret = new Array(len);\n    var j = 0;\n    for (var i = 0; i < len; ++i) {\n        if (booleans[i]) ret[j++] = values[i];\n    }\n    ret.length = j;\n    this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n    return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n    if (typeof fn !== \"function\") {\n        return apiRejection(\"expecting a function but got \" + util.classString(fn));\n    }\n\n    var limit = 0;\n    if (options !== undefined) {\n        if (typeof options === \"object\" && options !== null) {\n            if (typeof options.concurrency !== \"number\") {\n                return Promise.reject(\n                    new TypeError(\"'concurrency' must be a number but it is \" +\n                                    util.classString(options.concurrency)));\n            }\n            limit = options.concurrency;\n        } else {\n            return Promise.reject(new TypeError(\n                            \"options argument must be an object but it is \" +\n                             util.classString(options)));\n        }\n    }\n    limit = typeof limit === \"number\" &&\n        isFinite(limit) && limit >= 1 ? limit : 0;\n    return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n    return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n    return map(promises, fn, options, _filter);\n};\n\n\n};\n\n},{\"./util\":36}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n    if (typeof fn !== \"function\") {\n        throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n    }\n    return function () {\n        var ret = new Promise(INTERNAL);\n        ret._captureStackTrace();\n        ret._pushContext();\n        var value = tryCatch(fn).apply(this, arguments);\n        var promiseCreated = ret._popContext();\n        debug.checkForgottenReturns(\n            value, promiseCreated, \"Promise.method\", ret);\n        ret._resolveFromSyncValue(value);\n        return ret;\n    };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n    if (typeof fn !== \"function\") {\n        return apiRejection(\"expecting a function but got \" + util.classString(fn));\n    }\n    var ret = new Promise(INTERNAL);\n    ret._captureStackTrace();\n    ret._pushContext();\n    var value;\n    if (arguments.length > 1) {\n        debug.deprecated(\"calling Promise.try with more than 1 argument\");\n        var arg = arguments[1];\n        var ctx = arguments[2];\n        value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n                                  : tryCatch(fn).call(ctx, arg);\n    } else {\n        value = tryCatch(fn)();\n    }\n    var promiseCreated = ret._popContext();\n    debug.checkForgottenReturns(\n        value, promiseCreated, \"Promise.try\", ret);\n    ret._resolveFromSyncValue(value);\n    return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n    if (value === util.errorObj) {\n        this._rejectCallback(value.e, false);\n    } else {\n        this._resolveCallback(value, true);\n    }\n};\n};\n\n},{\"./util\":36}],20:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n    return obj instanceof Error &&\n        es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n    var ret;\n    if (isUntypedError(obj)) {\n        ret = new OperationalError(obj);\n        ret.name = obj.name;\n        ret.message = obj.message;\n        ret.stack = obj.stack;\n        var keys = es5.keys(obj);\n        for (var i = 0; i < keys.length; ++i) {\n            var key = keys[i];\n            if (!rErrorKey.test(key)) {\n                ret[key] = obj[key];\n            }\n        }\n        return ret;\n    }\n    util.markAsOriginatingFromRejection(obj);\n    return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n    return function(err, value) {\n        if (promise === null) return;\n        if (err) {\n            var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n            promise._attachExtraTrace(wrapped);\n            promise._reject(wrapped);\n        } else if (!multiArgs) {\n            promise._fulfill(value);\n        } else {\n            var args = [].slice.call(arguments, 1);;\n            promise._fulfill(args);\n        }\n        promise = null;\n    };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n    var promise = this;\n    if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n    var ret =\n        tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n    if (ret === errorObj) {\n        async.throwLater(ret.e);\n    }\n}\n\nfunction successAdapter(val, nodeback) {\n    var promise = this;\n    var receiver = promise._boundValue();\n    var ret = val === undefined\n        ? tryCatch(nodeback).call(receiver, null)\n        : tryCatch(nodeback).call(receiver, null, val);\n    if (ret === errorObj) {\n        async.throwLater(ret.e);\n    }\n}\nfunction errorAdapter(reason, nodeback) {\n    var promise = this;\n    if (!reason) {\n        var newReason = new Error(reason + \"\");\n        newReason.cause = reason;\n        reason = newReason;\n    }\n    var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n    if (ret === errorObj) {\n        async.throwLater(ret.e);\n    }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n                                                                     options) {\n    if (typeof nodeback == \"function\") {\n        var adapter = successAdapter;\n        if (options !== undefined && Object(options).spread) {\n            adapter = spreadAdapter;\n        }\n        this._then(\n            adapter,\n            errorAdapter,\n            undefined,\n            this,\n            nodeback\n        );\n    }\n    return this;\n};\n};\n\n},{\"./util\":36}],22:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n    return new TypeError(\"circular promise resolution chain\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n    return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n    return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\n\nvar getDomain;\nif (util.isNode) {\n    getDomain = function() {\n        var ret = process.domain;\n        if (ret === undefined) ret = null;\n        return ret;\n    };\n} else {\n    getDomain = function() {\n        return null;\n    };\n}\nutil.notEnumerableProp(Promise, \"_getDomain\", getDomain);\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n    _dereq_(\"./promise_array\")(Promise, INTERNAL,\n                               tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\nvar debug = _dereq_(\"./debuggability\")(Promise, Context);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n    _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n    if (self == null || self.constructor !== Promise) {\n        throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    if (typeof executor !== \"function\") {\n        throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n    }\n\n}\n\nfunction Promise(executor) {\n    if (executor !== INTERNAL) {\n        check(this, executor);\n    }\n    this._bitField = 0;\n    this._fulfillmentHandler0 = undefined;\n    this._rejectionHandler0 = undefined;\n    this._promise0 = undefined;\n    this._receiver0 = undefined;\n    this._resolveFromExecutor(executor);\n    this._promiseCreated();\n    this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n    return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n    var len = arguments.length;\n    if (len > 1) {\n        var catchInstances = new Array(len - 1),\n            j = 0, i;\n        for (i = 0; i < len - 1; ++i) {\n            var item = arguments[i];\n            if (util.isObject(item)) {\n                catchInstances[j++] = item;\n            } else {\n                return apiRejection(\"Catch statement predicate: \" +\n                    \"expecting an object but got \" + util.classString(item));\n            }\n        }\n        catchInstances.length = j;\n        fn = arguments[i];\n        return this.then(undefined, catchFilter(catchInstances, fn, this));\n    }\n    return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n    return this._then(reflectHandler,\n        reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n    if (debug.warnings() && arguments.length > 0 &&\n        typeof didFulfill !== \"function\" &&\n        typeof didReject !== \"function\") {\n        var msg = \".then() only accepts functions but was passed: \" +\n                util.classString(didFulfill);\n        if (arguments.length > 1) {\n            msg += \", \" + util.classString(didReject);\n        }\n        this._warn(msg);\n    }\n    return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n    var promise =\n        this._then(didFulfill, didReject, undefined, undefined, undefined);\n    promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n    if (typeof fn !== \"function\") {\n        return apiRejection(\"expecting a function but got \" + util.classString(fn));\n    }\n    return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n    var ret = {\n        isFulfilled: false,\n        isRejected: false,\n        fulfillmentValue: undefined,\n        rejectionReason: undefined\n    };\n    if (this.isFulfilled()) {\n        ret.fulfillmentValue = this.value();\n        ret.isFulfilled = true;\n    } else if (this.isRejected()) {\n        ret.rejectionReason = this.reason();\n        ret.isRejected = true;\n    }\n    return ret;\n};\n\nPromise.prototype.all = function () {\n    if (arguments.length > 0) {\n        this._warn(\".all() was passed arguments but it does not take any\");\n    }\n    return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n    return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n    return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n    var ret = new Promise(INTERNAL);\n    ret._captureStackTrace();\n    var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n                                         : false;\n    var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n    if (result === errorObj) {\n        ret._rejectCallback(result.e, true);\n    }\n    if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n    return ret;\n};\n\nPromise.all = function (promises) {\n    return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n    var ret = tryConvertToPromise(obj);\n    if (!(ret instanceof Promise)) {\n        ret = new Promise(INTERNAL);\n        ret._captureStackTrace();\n        ret._setFulfilled();\n        ret._rejectionHandler0 = obj;\n    }\n    return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n    var ret = new Promise(INTERNAL);\n    ret._captureStackTrace();\n    ret._rejectCallback(reason, true);\n    return ret;\n};\n\nPromise.setScheduler = function(fn) {\n    if (typeof fn !== \"function\") {\n        throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n    }\n    return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n    didFulfill,\n    didReject,\n    _,    receiver,\n    internalData\n) {\n    var haveInternalData = internalData !== undefined;\n    var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n    var target = this._target();\n    var bitField = target._bitField;\n\n    if (!haveInternalData) {\n        promise._propagateFrom(this, 3);\n        promise._captureStackTrace();\n        if (receiver === undefined &&\n            ((this._bitField & 2097152) !== 0)) {\n            if (!((bitField & 50397184) === 0)) {\n                receiver = this._boundValue();\n            } else {\n                receiver = target === this ? undefined : this._boundTo;\n            }\n        }\n        this._fireEvent(\"promiseChained\", this, promise);\n    }\n\n    var domain = getDomain();\n    if (!((bitField & 50397184) === 0)) {\n        var handler, value, settler = target._settlePromiseCtx;\n        if (((bitField & 33554432) !== 0)) {\n            value = target._rejectionHandler0;\n            handler = didFulfill;\n        } else if (((bitField & 16777216) !== 0)) {\n            value = target._fulfillmentHandler0;\n            handler = didReject;\n            target._unsetRejectionIsUnhandled();\n        } else {\n            settler = target._settlePromiseLateCancellationObserver;\n            value = new CancellationError(\"late cancellation observer\");\n            target._attachExtraTrace(value);\n            handler = didReject;\n        }\n\n        async.invoke(settler, target, {\n            handler: domain === null ? handler\n                : (typeof handler === \"function\" &&\n                    util.domainBind(domain, handler)),\n            promise: promise,\n            receiver: receiver,\n            value: value\n        });\n    } else {\n        target._addCallbacks(didFulfill, didReject, promise, receiver, domain);\n    }\n\n    return promise;\n};\n\nPromise.prototype._length = function () {\n    return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n    return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n    return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n    this._bitField = (this._bitField & -65536) |\n        (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n    this._bitField = this._bitField | 33554432;\n    this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n    this._bitField = this._bitField | 16777216;\n    this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n    this._bitField = this._bitField | 67108864;\n    this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n    this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n    return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n    this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n    this._bitField = this._bitField | 65536;\n    this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n    this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n    if (async.hasCustomScheduler()) return;\n    this._bitField = this._bitField | 134217728;\n};\n\nPromise.prototype._receiverAt = function (index) {\n    var ret = index === 0 ? this._receiver0 : this[\n            index * 4 - 4 + 3];\n    if (ret === UNDEFINED_BINDING) {\n        return undefined;\n    } else if (ret === undefined && this._isBound()) {\n        return this._boundValue();\n    }\n    return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n    return this[\n            index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n    return this[\n            index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n    return this[\n            index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n    var bitField = follower._bitField;\n    var fulfill = follower._fulfillmentHandler0;\n    var reject = follower._rejectionHandler0;\n    var promise = follower._promise0;\n    var receiver = follower._receiverAt(0);\n    if (receiver === undefined) receiver = UNDEFINED_BINDING;\n    this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n    var fulfill = follower._fulfillmentHandlerAt(index);\n    var reject = follower._rejectionHandlerAt(index);\n    var promise = follower._promiseAt(index);\n    var receiver = follower._receiverAt(index);\n    if (receiver === undefined) receiver = UNDEFINED_BINDING;\n    this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n    fulfill,\n    reject,\n    promise,\n    receiver,\n    domain\n) {\n    var index = this._length();\n\n    if (index >= 65535 - 4) {\n        index = 0;\n        this._setLength(0);\n    }\n\n    if (index === 0) {\n        this._promise0 = promise;\n        this._receiver0 = receiver;\n        if (typeof fulfill === \"function\") {\n            this._fulfillmentHandler0 =\n                domain === null ? fulfill : util.domainBind(domain, fulfill);\n        }\n        if (typeof reject === \"function\") {\n            this._rejectionHandler0 =\n                domain === null ? reject : util.domainBind(domain, reject);\n        }\n    } else {\n        var base = index * 4 - 4;\n        this[base + 2] = promise;\n        this[base + 3] = receiver;\n        if (typeof fulfill === \"function\") {\n            this[base + 0] =\n                domain === null ? fulfill : util.domainBind(domain, fulfill);\n        }\n        if (typeof reject === \"function\") {\n            this[base + 1] =\n                domain === null ? reject : util.domainBind(domain, reject);\n        }\n    }\n    this._setLength(index + 1);\n    return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n    this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n    if (((this._bitField & 117506048) !== 0)) return;\n    if (value === this)\n        return this._rejectCallback(makeSelfResolutionError(), false);\n    var maybePromise = tryConvertToPromise(value, this);\n    if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n    if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n    var promise = maybePromise._target();\n\n    if (promise === this) {\n        this._reject(makeSelfResolutionError());\n        return;\n    }\n\n    var bitField = promise._bitField;\n    if (((bitField & 50397184) === 0)) {\n        var len = this._length();\n        if (len > 0) promise._migrateCallback0(this);\n        for (var i = 1; i < len; ++i) {\n            promise._migrateCallbackAt(this, i);\n        }\n        this._setFollowing();\n        this._setLength(0);\n        this._setFollowee(promise);\n    } else if (((bitField & 33554432) !== 0)) {\n        this._fulfill(promise._value());\n    } else if (((bitField & 16777216) !== 0)) {\n        this._reject(promise._reason());\n    } else {\n        var reason = new CancellationError(\"late cancellation observer\");\n        promise._attachExtraTrace(reason);\n        this._reject(reason);\n    }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n    var trace = util.ensureErrorObject(reason);\n    var hasStack = trace === reason;\n    if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n        var message = \"a promise was rejected with a non-error: \" +\n            util.classString(reason);\n        this._warn(message, true);\n    }\n    this._attachExtraTrace(trace, synchronous ? hasStack : false);\n    this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n    if (executor === INTERNAL) return;\n    var promise = this;\n    this._captureStackTrace();\n    this._pushContext();\n    var synchronous = true;\n    var r = this._execute(executor, function(value) {\n        promise._resolveCallback(value);\n    }, function (reason) {\n        promise._rejectCallback(reason, synchronous);\n    });\n    synchronous = false;\n    this._popContext();\n\n    if (r !== undefined) {\n        promise._rejectCallback(r, true);\n    }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n    handler, receiver, value, promise\n) {\n    var bitField = promise._bitField;\n    if (((bitField & 65536) !== 0)) return;\n    promise._pushContext();\n    var x;\n    if (receiver === APPLY) {\n        if (!value || typeof value.length !== \"number\") {\n            x = errorObj;\n            x.e = new TypeError(\"cannot .spread() a non-array: \" +\n                                    util.classString(value));\n        } else {\n            x = tryCatch(handler).apply(this._boundValue(), value);\n        }\n    } else {\n        x = tryCatch(handler).call(receiver, value);\n    }\n    var promiseCreated = promise._popContext();\n    bitField = promise._bitField;\n    if (((bitField & 65536) !== 0)) return;\n\n    if (x === NEXT_FILTER) {\n        promise._reject(value);\n    } else if (x === errorObj) {\n        promise._rejectCallback(x.e, false);\n    } else {\n        debug.checkForgottenReturns(x, promiseCreated, \"\",  promise, this);\n        promise._resolveCallback(x);\n    }\n};\n\nPromise.prototype._target = function() {\n    var ret = this;\n    while (ret._isFollowing()) ret = ret._followee();\n    return ret;\n};\n\nPromise.prototype._followee = function() {\n    return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n    this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n    var isPromise = promise instanceof Promise;\n    var bitField = this._bitField;\n    var asyncGuaranteed = ((bitField & 134217728) !== 0);\n    if (((bitField & 65536) !== 0)) {\n        if (isPromise) promise._invokeInternalOnCancel();\n\n        if (receiver instanceof PassThroughHandlerContext &&\n            receiver.isFinallyHandler()) {\n            receiver.cancelPromise = promise;\n            if (tryCatch(handler).call(receiver, value) === errorObj) {\n                promise._reject(errorObj.e);\n            }\n        } else if (handler === reflectHandler) {\n            promise._fulfill(reflectHandler.call(receiver));\n        } else if (receiver instanceof Proxyable) {\n            receiver._promiseCancelled(promise);\n        } else if (isPromise || promise instanceof PromiseArray) {\n            promise._cancel();\n        } else {\n            receiver.cancel();\n        }\n    } else if (typeof handler === \"function\") {\n        if (!isPromise) {\n            handler.call(receiver, value, promise);\n        } else {\n            if (asyncGuaranteed) promise._setAsyncGuaranteed();\n            this._settlePromiseFromHandler(handler, receiver, value, promise);\n        }\n    } else if (receiver instanceof Proxyable) {\n        if (!receiver._isResolved()) {\n            if (((bitField & 33554432) !== 0)) {\n                receiver._promiseFulfilled(value, promise);\n            } else {\n                receiver._promiseRejected(value, promise);\n            }\n        }\n    } else if (isPromise) {\n        if (asyncGuaranteed) promise._setAsyncGuaranteed();\n        if (((bitField & 33554432) !== 0)) {\n            promise._fulfill(value);\n        } else {\n            promise._reject(value);\n        }\n    }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n    var handler = ctx.handler;\n    var promise = ctx.promise;\n    var receiver = ctx.receiver;\n    var value = ctx.value;\n    if (typeof handler === \"function\") {\n        if (!(promise instanceof Promise)) {\n            handler.call(receiver, value, promise);\n        } else {\n            this._settlePromiseFromHandler(handler, receiver, value, promise);\n        }\n    } else if (promise instanceof Promise) {\n        promise._reject(value);\n    }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n    this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n    var promise = this._promise0;\n    var receiver = this._receiverAt(0);\n    this._promise0 = undefined;\n    this._receiver0 = undefined;\n    this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n    var base = index * 4 - 4;\n    this[base + 2] =\n    this[base + 3] =\n    this[base + 0] =\n    this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n    var bitField = this._bitField;\n    if (((bitField & 117506048) >>> 16)) return;\n    if (value === this) {\n        var err = makeSelfResolutionError();\n        this._attachExtraTrace(err);\n        return this._reject(err);\n    }\n    this._setFulfilled();\n    this._rejectionHandler0 = value;\n\n    if ((bitField & 65535) > 0) {\n        if (((bitField & 134217728) !== 0)) {\n            this._settlePromises();\n        } else {\n            async.settlePromises(this);\n        }\n        this._dereferenceTrace();\n    }\n};\n\nPromise.prototype._reject = function (reason) {\n    var bitField = this._bitField;\n    if (((bitField & 117506048) >>> 16)) return;\n    this._setRejected();\n    this._fulfillmentHandler0 = reason;\n\n    if (this._isFinal()) {\n        return async.fatalError(reason, util.isNode);\n    }\n\n    if ((bitField & 65535) > 0) {\n        async.settlePromises(this);\n    } else {\n        this._ensurePossibleRejectionHandled();\n    }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n    for (var i = 1; i < len; i++) {\n        var handler = this._fulfillmentHandlerAt(i);\n        var promise = this._promiseAt(i);\n        var receiver = this._receiverAt(i);\n        this._clearCallbackDataAtIndex(i);\n        this._settlePromise(promise, handler, receiver, value);\n    }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n    for (var i = 1; i < len; i++) {\n        var handler = this._rejectionHandlerAt(i);\n        var promise = this._promiseAt(i);\n        var receiver = this._receiverAt(i);\n        this._clearCallbackDataAtIndex(i);\n        this._settlePromise(promise, handler, receiver, reason);\n    }\n};\n\nPromise.prototype._settlePromises = function () {\n    var bitField = this._bitField;\n    var len = (bitField & 65535);\n\n    if (len > 0) {\n        if (((bitField & 16842752) !== 0)) {\n            var reason = this._fulfillmentHandler0;\n            this._settlePromise0(this._rejectionHandler0, reason, bitField);\n            this._rejectPromises(len, reason);\n        } else {\n            var value = this._rejectionHandler0;\n            this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n            this._fulfillPromises(len, value);\n        }\n        this._setLength(0);\n    }\n    this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n    var bitField = this._bitField;\n    if (((bitField & 33554432) !== 0)) {\n        return this._rejectionHandler0;\n    } else if (((bitField & 16777216) !== 0)) {\n        return this._fulfillmentHandler0;\n    }\n};\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n    debug.deprecated(\"Promise.defer\", \"new Promise\");\n    var promise = new Promise(INTERNAL);\n    return {\n        promise: promise,\n        resolve: deferResolve,\n        reject: deferReject\n    };\n};\n\nutil.notEnumerableProp(Promise,\n                       \"_makeSelfResolutionError\",\n                       makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n    debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n    Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain);\nPromise.Promise = Promise;\nPromise.version = \"3.5.3\";\n_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./call_get.js')(Promise);\n_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n_dereq_('./timers.js')(Promise, INTERNAL, debug);\n_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n_dereq_('./nodeify.js')(Promise);\n_dereq_('./promisify.js')(Promise, INTERNAL);\n_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./settle.js')(Promise, PromiseArray, debug);\n_dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n_dereq_('./filter.js')(Promise, INTERNAL);\n_dereq_('./each.js')(Promise, INTERNAL);\n_dereq_('./any.js')(Promise);\n                                                         \n    util.toFastProperties(Promise);                                          \n    util.toFastProperties(Promise.prototype);                                \n    function fillTypes(value) {                                              \n        var p = new Promise(INTERNAL);                                       \n        p._fulfillmentHandler0 = value;                                      \n        p._rejectionHandler0 = value;                                        \n        p._promise0 = value;                                                 \n        p._receiver0 = value;                                                \n    }                                                                        \n    // Complete slack tracking, opt out of field-type tracking and           \n    // stabilize map                                                         \n    fillTypes({a: 1});                                                       \n    fillTypes({b: 2});                                                       \n    fillTypes({c: 3});                                                       \n    fillTypes(1);                                                            \n    fillTypes(function(){});                                                 \n    fillTypes(undefined);                                                    \n    fillTypes(false);                                                        \n    fillTypes(new Promise(INTERNAL));                                        \n    debug.setBounds(Async.firstLineError, util.lastLineError);               \n    return Promise;                                                          \n\n};\n\n},{\"./any.js\":1,\"./async\":2,\"./bind\":3,\"./call_get.js\":5,\"./cancel\":6,\"./catch_filter\":7,\"./context\":8,\"./debuggability\":9,\"./direct_resolve\":10,\"./each.js\":11,\"./errors\":12,\"./es5\":13,\"./filter.js\":14,\"./finally\":15,\"./generators.js\":16,\"./join\":17,\"./map.js\":18,\"./method\":19,\"./nodeback\":20,\"./nodeify.js\":21,\"./promise_array\":23,\"./promisify.js\":24,\"./props.js\":25,\"./race.js\":27,\"./reduce.js\":28,\"./settle.js\":30,\"./some.js\":31,\"./synchronous_inspection\":32,\"./thenables\":33,\"./timers.js\":34,\"./using.js\":35,\"./util\":36}],23:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n    apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n    switch(val) {\n    case -2: return [];\n    case -3: return {};\n    case -6: return new Map();\n    }\n}\n\nfunction PromiseArray(values) {\n    var promise = this._promise = new Promise(INTERNAL);\n    if (values instanceof Promise) {\n        promise._propagateFrom(values, 3);\n    }\n    promise._setOnCancel(this);\n    this._values = values;\n    this._length = 0;\n    this._totalResolved = 0;\n    this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n    return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n    return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n    var values = tryConvertToPromise(this._values, this._promise);\n    if (values instanceof Promise) {\n        values = values._target();\n        var bitField = values._bitField;\n        ;\n        this._values = values;\n\n        if (((bitField & 50397184) === 0)) {\n            this._promise._setAsyncGuaranteed();\n            return values._then(\n                init,\n                this._reject,\n                undefined,\n                this,\n                resolveValueIfEmpty\n           );\n        } else if (((bitField & 33554432) !== 0)) {\n            values = values._value();\n        } else if (((bitField & 16777216) !== 0)) {\n            return this._reject(values._reason());\n        } else {\n            return this._cancel();\n        }\n    }\n    values = util.asArray(values);\n    if (values === null) {\n        var err = apiRejection(\n            \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n        this._promise._rejectCallback(err, false);\n        return;\n    }\n\n    if (values.length === 0) {\n        if (resolveValueIfEmpty === -5) {\n            this._resolveEmptyArray();\n        }\n        else {\n            this._resolve(toResolutionValue(resolveValueIfEmpty));\n        }\n        return;\n    }\n    this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n    var len = this.getActualLength(values.length);\n    this._length = len;\n    this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n    var result = this._promise;\n    var isResolved = false;\n    var bitField = null;\n    for (var i = 0; i < len; ++i) {\n        var maybePromise = tryConvertToPromise(values[i], result);\n\n        if (maybePromise instanceof Promise) {\n            maybePromise = maybePromise._target();\n            bitField = maybePromise._bitField;\n        } else {\n            bitField = null;\n        }\n\n        if (isResolved) {\n            if (bitField !== null) {\n                maybePromise.suppressUnhandledRejections();\n            }\n        } else if (bitField !== null) {\n            if (((bitField & 50397184) === 0)) {\n                maybePromise._proxy(this, i);\n                this._values[i] = maybePromise;\n            } else if (((bitField & 33554432) !== 0)) {\n                isResolved = this._promiseFulfilled(maybePromise._value(), i);\n            } else if (((bitField & 16777216) !== 0)) {\n                isResolved = this._promiseRejected(maybePromise._reason(), i);\n            } else {\n                isResolved = this._promiseCancelled(i);\n            }\n        } else {\n            isResolved = this._promiseFulfilled(maybePromise, i);\n        }\n    }\n    if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n    return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n    this._values = null;\n    this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n    if (this._isResolved() || !this._promise._isCancellable()) return;\n    this._values = null;\n    this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n    this._values = null;\n    this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n    this._values[index] = value;\n    var totalResolved = ++this._totalResolved;\n    if (totalResolved >= this._length) {\n        this._resolve(this._values);\n        return true;\n    }\n    return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n    this._cancel();\n    return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n    this._totalResolved++;\n    this._reject(reason);\n    return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n    if (this._isResolved()) return;\n    var values = this._values;\n    this._cancel();\n    if (values instanceof Promise) {\n        values.cancel();\n    } else {\n        for (var i = 0; i < values.length; ++i) {\n            if (values[i] instanceof Promise) {\n                values[i].cancel();\n            }\n        }\n    }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n    return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n    return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":36}],24:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = _dereq_(\"./util\");\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = _dereq_(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n    \"arity\",    \"length\",\n    \"name\",\n    \"arguments\",\n    \"caller\",\n    \"callee\",\n    \"prototype\",\n    \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n    return util.isIdentifier(name) &&\n        name.charAt(0) !== \"_\" &&\n        name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n    return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n    try {\n        return fn.__isPromisified__ === true;\n    }\n    catch (e) {\n        return false;\n    }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n    var val = util.getDataPropertyOrDefault(obj, key + suffix,\n                                            defaultPromisified);\n    return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n    for (var i = 0; i < ret.length; i += 2) {\n        var key = ret[i];\n        if (suffixRegexp.test(key)) {\n            var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n            for (var j = 0; j < ret.length; j += 2) {\n                if (ret[j] === keyWithoutAsyncSuffix) {\n                    throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\"\n                        .replace(\"%s\", suffix));\n                }\n            }\n        }\n    }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n    var keys = util.inheritedDataKeys(obj);\n    var ret = [];\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var value = obj[key];\n        var passesDefaultFilter = filter === defaultFilter\n            ? true : defaultFilter(key, value, obj);\n        if (typeof value === \"function\" &&\n            !isPromisified(value) &&\n            !hasPromisified(obj, key, suffix) &&\n            filter(key, value, obj, passesDefaultFilter)) {\n            ret.push(key, value);\n        }\n    }\n    checkValid(ret, suffix, suffixRegexp);\n    return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n    return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (!true) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n    var ret = [likelyArgumentCount];\n    var min = Math.max(0, likelyArgumentCount - 1 - 3);\n    for(var i = likelyArgumentCount - 1; i >= min; --i) {\n        ret.push(i);\n    }\n    for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n        ret.push(i);\n    }\n    return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n    return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n    return util.filledRange(\n        Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n    if (typeof fn.length === \"number\") {\n        return Math.max(Math.min(fn.length, 1023 + 1), 0);\n    }\n    return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n    var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n    var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n    var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n    function generateCallForArgumentCount(count) {\n        var args = argumentSequence(count).join(\", \");\n        var comma = count > 0 ? \", \" : \"\";\n        var ret;\n        if (shouldProxyThis) {\n            ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n        } else {\n            ret = receiver === undefined\n                ? \"ret = callback({{args}}, nodeback); break;\\n\"\n                : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n        }\n        return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n    }\n\n    function generateArgumentSwitchCase() {\n        var ret = \"\";\n        for (var i = 0; i < argumentOrder.length; ++i) {\n            ret += \"case \" + argumentOrder[i] +\":\" +\n                generateCallForArgumentCount(argumentOrder[i]);\n        }\n\n        ret += \"                                                             \\n\\\n        default:                                                             \\n\\\n            var args = new Array(len + 1);                                   \\n\\\n            var i = 0;                                                       \\n\\\n            for (var i = 0; i < len; ++i) {                                  \\n\\\n               args[i] = arguments[i];                                       \\n\\\n            }                                                                \\n\\\n            args[i] = nodeback;                                              \\n\\\n            [CodeForCall]                                                    \\n\\\n            break;                                                           \\n\\\n        \".replace(\"[CodeForCall]\", (shouldProxyThis\n                                ? \"ret = callback.apply(this, args);\\n\"\n                                : \"ret = callback.apply(receiver, args);\\n\"));\n        return ret;\n    }\n\n    var getFunctionCode = typeof callback === \"string\"\n                                ? (\"this != null ? this['\"+callback+\"'] : fn\")\n                                : \"fn\";\n    var body = \"'use strict';                                                \\n\\\n        var ret = function (Parameters) {                                    \\n\\\n            'use strict';                                                    \\n\\\n            var len = arguments.length;                                      \\n\\\n            var promise = new Promise(INTERNAL);                             \\n\\\n            promise._captureStackTrace();                                    \\n\\\n            var nodeback = nodebackForPromise(promise, \" + multiArgs + \");   \\n\\\n            var ret;                                                         \\n\\\n            var callback = tryCatch([GetFunctionCode]);                      \\n\\\n            switch(len) {                                                    \\n\\\n                [CodeForSwitchCase]                                          \\n\\\n            }                                                                \\n\\\n            if (ret === errorObj) {                                          \\n\\\n                promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n            }                                                                \\n\\\n            if (!promise._isFateSealed()) promise._setAsyncGuaranteed();     \\n\\\n            return promise;                                                  \\n\\\n        };                                                                   \\n\\\n        notEnumerableProp(ret, '__isPromisified__', true);                   \\n\\\n        return ret;                                                          \\n\\\n    \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n        .replace(\"[GetFunctionCode]\", getFunctionCode);\n    body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n    return new Function(\"Promise\",\n                        \"fn\",\n                        \"receiver\",\n                        \"withAppended\",\n                        \"maybeWrapAsError\",\n                        \"nodebackForPromise\",\n                        \"tryCatch\",\n                        \"errorObj\",\n                        \"notEnumerableProp\",\n                        \"INTERNAL\",\n                        body)(\n                    Promise,\n                    fn,\n                    receiver,\n                    withAppended,\n                    maybeWrapAsError,\n                    nodebackForPromise,\n                    util.tryCatch,\n                    util.errorObj,\n                    util.notEnumerableProp,\n                    INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n    var defaultThis = (function() {return this;})();\n    var method = callback;\n    if (typeof method === \"string\") {\n        callback = fn;\n    }\n    function promisified() {\n        var _receiver = receiver;\n        if (receiver === THIS) _receiver = this;\n        var promise = new Promise(INTERNAL);\n        promise._captureStackTrace();\n        var cb = typeof method === \"string\" && this !== defaultThis\n            ? this[method] : callback;\n        var fn = nodebackForPromise(promise, multiArgs);\n        try {\n            cb.apply(_receiver, withAppended(arguments, fn));\n        } catch(e) {\n            promise._rejectCallback(maybeWrapAsError(e), true, true);\n        }\n        if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n        return promise;\n    }\n    util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n    return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n    ? makeNodePromisifiedEval\n    : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n    var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n    var methods =\n        promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n    for (var i = 0, len = methods.length; i < len; i+= 2) {\n        var key = methods[i];\n        var fn = methods[i+1];\n        var promisifiedKey = key + suffix;\n        if (promisifier === makeNodePromisified) {\n            obj[promisifiedKey] =\n                makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n        } else {\n            var promisified = promisifier(fn, function() {\n                return makeNodePromisified(key, THIS, key,\n                                           fn, suffix, multiArgs);\n            });\n            util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n            obj[promisifiedKey] = promisified;\n        }\n    }\n    util.toFastProperties(obj);\n    return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n    return makeNodePromisified(callback, receiver, undefined,\n                                callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n    if (typeof fn !== \"function\") {\n        throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n    }\n    if (isPromisified(fn)) {\n        return fn;\n    }\n    options = Object(options);\n    var receiver = options.context === undefined ? THIS : options.context;\n    var multiArgs = !!options.multiArgs;\n    var ret = promisify(fn, receiver, multiArgs);\n    util.copyDescriptors(fn, ret, propsFilter);\n    return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n    if (typeof target !== \"function\" && typeof target !== \"object\") {\n        throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    options = Object(options);\n    var multiArgs = !!options.multiArgs;\n    var suffix = options.suffix;\n    if (typeof suffix !== \"string\") suffix = defaultSuffix;\n    var filter = options.filter;\n    if (typeof filter !== \"function\") filter = defaultFilter;\n    var promisifier = options.promisifier;\n    if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n    if (!util.isIdentifier(suffix)) {\n        throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n\n    var keys = util.inheritedDataKeys(target);\n    for (var i = 0; i < keys.length; ++i) {\n        var value = target[keys[i]];\n        if (keys[i] !== \"constructor\" &&\n            util.isClass(value)) {\n            promisifyAll(value.prototype, suffix, filter, promisifier,\n                multiArgs);\n            promisifyAll(value, suffix, filter, promisifier, multiArgs);\n        }\n    }\n\n    return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n    Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar isObject = util.isObject;\nvar es5 = _dereq_(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n    var index = 0;\n    var size = 0;\n\n    function extractEntry(value, key) {\n        this[index] = value;\n        this[index + size] = key;\n        index++;\n    }\n\n    return function mapToEntries(map) {\n        size = map.size;\n        index = 0;\n        var ret = new Array(map.size * 2);\n        map.forEach(extractEntry, ret);\n        return ret;\n    };\n})();\n\nvar entriesToMap = function(entries) {\n    var ret = new Es6Map();\n    var length = entries.length / 2 | 0;\n    for (var i = 0; i < length; ++i) {\n        var key = entries[length + i];\n        var value = entries[i];\n        ret.set(key, value);\n    }\n    return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n    var isMap = false;\n    var entries;\n    if (Es6Map !== undefined && obj instanceof Es6Map) {\n        entries = mapToEntries(obj);\n        isMap = true;\n    } else {\n        var keys = es5.keys(obj);\n        var len = keys.length;\n        entries = new Array(len * 2);\n        for (var i = 0; i < len; ++i) {\n            var key = keys[i];\n            entries[i] = obj[key];\n            entries[i + len] = key;\n        }\n    }\n    this.constructor$(entries);\n    this._isMap = isMap;\n    this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n    this._values[index] = value;\n    var totalResolved = ++this._totalResolved;\n    if (totalResolved >= this._length) {\n        var val;\n        if (this._isMap) {\n            val = entriesToMap(this._values);\n        } else {\n            val = {};\n            var keyOffset = this.length();\n            for (var i = 0, len = this.length(); i < len; ++i) {\n                val[this._values[i + keyOffset]] = this._values[i];\n            }\n        }\n        this._resolve(val);\n        return true;\n    }\n    return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n    return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n    return len >> 1;\n};\n\nfunction props(promises) {\n    var ret;\n    var castValue = tryConvertToPromise(promises);\n\n    if (!isObject(castValue)) {\n        return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    } else if (castValue instanceof Promise) {\n        ret = castValue._then(\n            Promise.props, undefined, undefined, undefined, undefined);\n    } else {\n        ret = new PropertiesPromiseArray(castValue).promise();\n    }\n\n    if (castValue instanceof Promise) {\n        ret._propagateFrom(castValue, 2);\n    }\n    return ret;\n}\n\nPromise.prototype.props = function () {\n    return props(this);\n};\n\nPromise.props = function (promises) {\n    return props(promises);\n};\n};\n\n},{\"./es5\":13,\"./util\":36}],26:[function(_dereq_,module,exports){\n\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n    for (var j = 0; j < len; ++j) {\n        dst[j + dstIndex] = src[j + srcIndex];\n        src[j + srcIndex] = void 0;\n    }\n}\n\nfunction Queue(capacity) {\n    this._capacity = capacity;\n    this._length = 0;\n    this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n    return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n    var length = this.length();\n    this._checkCapacity(length + 1);\n    var i = (this._front + length) & (this._capacity - 1);\n    this[i] = arg;\n    this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n    var length = this.length() + 3;\n    if (this._willBeOverCapacity(length)) {\n        this._pushOne(fn);\n        this._pushOne(receiver);\n        this._pushOne(arg);\n        return;\n    }\n    var j = this._front + length - 3;\n    this._checkCapacity(length);\n    var wrapMask = this._capacity - 1;\n    this[(j + 0) & wrapMask] = fn;\n    this[(j + 1) & wrapMask] = receiver;\n    this[(j + 2) & wrapMask] = arg;\n    this._length = length;\n};\n\nQueue.prototype.shift = function () {\n    var front = this._front,\n        ret = this[front];\n\n    this[front] = undefined;\n    this._front = (front + 1) & (this._capacity - 1);\n    this._length--;\n    return ret;\n};\n\nQueue.prototype.length = function () {\n    return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n    if (this._capacity < size) {\n        this._resizeTo(this._capacity << 1);\n    }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n    var oldCapacity = this._capacity;\n    this._capacity = capacity;\n    var front = this._front;\n    var length = this._length;\n    var moveItemsCount = (front + length) & (oldCapacity - 1);\n    arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n    Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\n\nvar raceLater = function (promise) {\n    return promise.then(function(array) {\n        return race(array, promise);\n    });\n};\n\nfunction race(promises, parent) {\n    var maybePromise = tryConvertToPromise(promises);\n\n    if (maybePromise instanceof Promise) {\n        return raceLater(maybePromise);\n    } else {\n        promises = util.asArray(promises);\n        if (promises === null)\n            return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n    }\n\n    var ret = new Promise(INTERNAL);\n    if (parent !== undefined) {\n        ret._propagateFrom(parent, 3);\n    }\n    var fulfill = ret._fulfill;\n    var reject = ret._reject;\n    for (var i = 0, len = promises.length; i < len; ++i) {\n        var val = promises[i];\n\n        if (val === undefined && !(i in promises)) {\n            continue;\n        }\n\n        Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n    }\n    return ret;\n}\n\nPromise.race = function (promises) {\n    return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n    return race(this, undefined);\n};\n\n};\n\n},{\"./util\":36}],28:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n                          PromiseArray,\n                          apiRejection,\n                          tryConvertToPromise,\n                          INTERNAL,\n                          debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n    this.constructor$(promises);\n    var domain = getDomain();\n    this._fn = domain === null ? fn : util.domainBind(domain, fn);\n    if (initialValue !== undefined) {\n        initialValue = Promise.resolve(initialValue);\n        initialValue._attachCancellationCallback(this);\n    }\n    this._initialValue = initialValue;\n    this._currentCancellable = null;\n    if(_each === INTERNAL) {\n        this._eachValues = Array(this._length);\n    } else if (_each === 0) {\n        this._eachValues = null;\n    } else {\n        this._eachValues = undefined;\n    }\n    this._promise._captureStackTrace();\n    this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n    if (this._eachValues !== undefined && \n        this._eachValues !== null && \n        accum !== INTERNAL) {\n        this._eachValues.push(accum);\n    }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n    if (this._eachValues !== null) {\n        this._eachValues.push(value);\n    }\n    return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n    this._resolve(this._eachValues !== undefined ? this._eachValues\n                                                 : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n    return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n    this._promise._resolveCallback(value);\n    this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n    if (sender === this._initialValue) return this._cancel();\n    if (this._isResolved()) return;\n    this._resultCancelled$();\n    if (this._currentCancellable instanceof Promise) {\n        this._currentCancellable.cancel();\n    }\n    if (this._initialValue instanceof Promise) {\n        this._initialValue.cancel();\n    }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n    this._values = values;\n    var value;\n    var i;\n    var length = values.length;\n    if (this._initialValue !== undefined) {\n        value = this._initialValue;\n        i = 0;\n    } else {\n        value = Promise.resolve(values[0]);\n        i = 1;\n    }\n\n    this._currentCancellable = value;\n\n    if (!value.isRejected()) {\n        for (; i < length; ++i) {\n            var ctx = {\n                accum: null,\n                value: values[i],\n                index: i,\n                length: length,\n                array: this\n            };\n            value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n        }\n    }\n\n    if (this._eachValues !== undefined) {\n        value = value\n            ._then(this._eachComplete, undefined, undefined, this, undefined);\n    }\n    value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n    return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n    return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n    if (this.isFulfilled()) {\n        array._resolve(valueOrReason);\n    } else {\n        array._reject(valueOrReason);\n    }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n    if (typeof fn !== \"function\") {\n        return apiRejection(\"expecting a function but got \" + util.classString(fn));\n    }\n    var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n    return array.promise();\n}\n\nfunction gotAccum(accum) {\n    this.accum = accum;\n    this.array._gotAccum(accum);\n    var value = tryConvertToPromise(this.value, this.array._promise);\n    if (value instanceof Promise) {\n        this.array._currentCancellable = value;\n        return value._then(gotValue, undefined, undefined, this, undefined);\n    } else {\n        return gotValue.call(this, value);\n    }\n}\n\nfunction gotValue(value) {\n    var array = this.array;\n    var promise = array._promise;\n    var fn = tryCatch(array._fn);\n    promise._pushContext();\n    var ret;\n    if (array._eachValues !== undefined) {\n        ret = fn.call(promise._boundValue(), value, this.index, this.length);\n    } else {\n        ret = fn.call(promise._boundValue(),\n                              this.accum, value, this.index, this.length);\n    }\n    if (ret instanceof Promise) {\n        array._currentCancellable = ret;\n    }\n    var promiseCreated = promise._popContext();\n    debug.checkForgottenReturns(\n        ret,\n        promiseCreated,\n        array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n        promise\n    );\n    return ret;\n}\n};\n\n},{\"./util\":36}],29:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n    throw new Error(\"No async scheduler available\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n    var GlobalSetImmediate = global.setImmediate;\n    var ProcessNextTick = process.nextTick;\n    schedule = util.isRecentNode\n                ? function(fn) { GlobalSetImmediate.call(global, fn); }\n                : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n           typeof NativePromise.resolve === \"function\") {\n    var nativePromise = NativePromise.resolve();\n    schedule = function(fn) {\n        nativePromise.then(fn);\n    };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n          !(typeof window !== \"undefined\" &&\n            window.navigator &&\n            (window.navigator.standalone || window.cordova))) {\n    schedule = (function() {\n        var div = document.createElement(\"div\");\n        var opts = {attributes: true};\n        var toggleScheduled = false;\n        var div2 = document.createElement(\"div\");\n        var o2 = new MutationObserver(function() {\n            div.classList.toggle(\"foo\");\n            toggleScheduled = false;\n        });\n        o2.observe(div2, opts);\n\n        var scheduleToggle = function() {\n            if (toggleScheduled) return;\n            toggleScheduled = true;\n            div2.classList.toggle(\"foo\");\n        };\n\n        return function schedule(fn) {\n            var o = new MutationObserver(function() {\n                o.disconnect();\n                fn();\n            });\n            o.observe(div, opts);\n            scheduleToggle();\n        };\n    })();\n} else if (typeof setImmediate !== \"undefined\") {\n    schedule = function (fn) {\n        setImmediate(fn);\n    };\n} else if (typeof setTimeout !== \"undefined\") {\n    schedule = function (fn) {\n        setTimeout(fn, 0);\n    };\n} else {\n    schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":36}],30:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\n    function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = _dereq_(\"./util\");\n\nfunction SettledPromiseArray(values) {\n    this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n    this._values[index] = inspection;\n    var totalResolved = ++this._totalResolved;\n    if (totalResolved >= this._length) {\n        this._resolve(this._values);\n        return true;\n    }\n    return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n    var ret = new PromiseInspection();\n    ret._bitField = 33554432;\n    ret._settledValueField = value;\n    return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n    var ret = new PromiseInspection();\n    ret._bitField = 16777216;\n    ret._settledValueField = reason;\n    return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n    debug.deprecated(\".settle()\", \".reflect()\");\n    return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n    return Promise.settle(this);\n};\n};\n\n},{\"./util\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar RangeError = _dereq_(\"./errors\").RangeError;\nvar AggregateError = _dereq_(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n    this.constructor$(values);\n    this._howMany = 0;\n    this._unwrap = false;\n    this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n    if (!this._initialized) {\n        return;\n    }\n    if (this._howMany === 0) {\n        this._resolve([]);\n        return;\n    }\n    this._init$(undefined, -5);\n    var isArrayResolved = isArray(this._values);\n    if (!this._isResolved() &&\n        isArrayResolved &&\n        this._howMany > this._canPossiblyFulfill()) {\n        this._reject(this._getRangeError(this.length()));\n    }\n};\n\nSomePromiseArray.prototype.init = function () {\n    this._initialized = true;\n    this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n    this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n    return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n    this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n    this._addFulfilled(value);\n    if (this._fulfilled() === this.howMany()) {\n        this._values.length = this.howMany();\n        if (this.howMany() === 1 && this._unwrap) {\n            this._resolve(this._values[0]);\n        } else {\n            this._resolve(this._values);\n        }\n        return true;\n    }\n    return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n    this._addRejected(reason);\n    return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n    if (this._values instanceof Promise || this._values == null) {\n        return this._cancel();\n    }\n    this._addRejected(CANCELLATION);\n    return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n    if (this.howMany() > this._canPossiblyFulfill()) {\n        var e = new AggregateError();\n        for (var i = this.length(); i < this._values.length; ++i) {\n            if (this._values[i] !== CANCELLATION) {\n                e.push(this._values[i]);\n            }\n        }\n        if (e.length > 0) {\n            this._reject(e);\n        } else {\n            this._cancel();\n        }\n        return true;\n    }\n    return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n    return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n    return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n    this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n    this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n    return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n    var message = \"Input array must contain at least \" +\n            this._howMany + \" items but contains only \" + count + \" items\";\n    return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n    this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n    if ((howMany | 0) !== howMany || howMany < 0) {\n        return apiRejection(\"expecting a positive integer\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    var ret = new SomePromiseArray(promises);\n    var promise = ret.promise();\n    ret.setHowMany(howMany);\n    ret.init();\n    return promise;\n}\n\nPromise.some = function (promises, howMany) {\n    return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n    return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n},{\"./errors\":12,\"./util\":36}],32:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n    if (promise !== undefined) {\n        promise = promise._target();\n        this._bitField = promise._bitField;\n        this._settledValueField = promise._isFateSealed()\n            ? promise._settledValue() : undefined;\n    }\n    else {\n        this._bitField = 0;\n        this._settledValueField = undefined;\n    }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n    return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n    if (!this.isFulfilled()) {\n        throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n    if (!this.isRejected()) {\n        throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n    return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n    return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n    return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n    return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n    return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n    return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n    return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n    return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n    return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n    return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n    return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n    return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n    return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n    var target = this._target();\n    target._unsetRejectionIsUnhandled();\n    return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n    return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n    this._unsetRejectionIsUnhandled();\n    return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],33:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n    if (isObject(obj)) {\n        if (obj instanceof Promise) return obj;\n        var then = getThen(obj);\n        if (then === errorObj) {\n            if (context) context._pushContext();\n            var ret = Promise.reject(then.e);\n            if (context) context._popContext();\n            return ret;\n        } else if (typeof then === \"function\") {\n            if (isAnyBluebirdPromise(obj)) {\n                var ret = new Promise(INTERNAL);\n                obj._then(\n                    ret._fulfill,\n                    ret._reject,\n                    undefined,\n                    ret,\n                    null\n                );\n                return ret;\n            }\n            return doThenable(obj, then, context);\n        }\n    }\n    return obj;\n}\n\nfunction doGetThen(obj) {\n    return obj.then;\n}\n\nfunction getThen(obj) {\n    try {\n        return doGetThen(obj);\n    } catch (e) {\n        errorObj.e = e;\n        return errorObj;\n    }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n    try {\n        return hasProp.call(obj, \"_promise0\");\n    } catch (e) {\n        return false;\n    }\n}\n\nfunction doThenable(x, then, context) {\n    var promise = new Promise(INTERNAL);\n    var ret = promise;\n    if (context) context._pushContext();\n    promise._captureStackTrace();\n    if (context) context._popContext();\n    var synchronous = true;\n    var result = util.tryCatch(then).call(x, resolve, reject);\n    synchronous = false;\n\n    if (promise && result === errorObj) {\n        promise._rejectCallback(result.e, true, true);\n        promise = null;\n    }\n\n    function resolve(value) {\n        if (!promise) return;\n        promise._resolveCallback(value);\n        promise = null;\n    }\n\n    function reject(reason) {\n        if (!promise) return;\n        promise._rejectCallback(reason, synchronous, true);\n        promise = null;\n    }\n    return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":36}],34:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = _dereq_(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle)  {\n    this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n    clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n    var ret;\n    var handle;\n    if (value !== undefined) {\n        ret = Promise.resolve(value)\n                ._then(afterValue, null, null, ms, undefined);\n        if (debug.cancellation() && value instanceof Promise) {\n            ret._setOnCancel(value);\n        }\n    } else {\n        ret = new Promise(INTERNAL);\n        handle = setTimeout(function() { ret._fulfill(); }, +ms);\n        if (debug.cancellation()) {\n            ret._setOnCancel(new HandleWrapper(handle));\n        }\n        ret._captureStackTrace();\n    }\n    ret._setAsyncGuaranteed();\n    return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n    return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n    var err;\n    if (typeof message !== \"string\") {\n        if (message instanceof Error) {\n            err = message;\n        } else {\n            err = new TimeoutError(\"operation timed out\");\n        }\n    } else {\n        err = new TimeoutError(message);\n    }\n    util.markAsOriginatingFromRejection(err);\n    promise._attachExtraTrace(err);\n    promise._reject(err);\n\n    if (parent != null) {\n        parent.cancel();\n    }\n};\n\nfunction successClear(value) {\n    clearTimeout(this.handle);\n    return value;\n}\n\nfunction failureClear(reason) {\n    clearTimeout(this.handle);\n    throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n    ms = +ms;\n    var ret, parent;\n\n    var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n        if (ret.isPending()) {\n            afterTimeout(ret, message, parent);\n        }\n    }, ms));\n\n    if (debug.cancellation()) {\n        parent = this.then();\n        ret = parent._then(successClear, failureClear,\n                            undefined, handleWrapper, undefined);\n        ret._setOnCancel(handleWrapper);\n    } else {\n        ret = this._then(successClear, failureClear,\n                            undefined, handleWrapper, undefined);\n    }\n\n    return ret;\n};\n\n};\n\n},{\"./util\":36}],35:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n    createContext, INTERNAL, debug) {\n    var util = _dereq_(\"./util\");\n    var TypeError = _dereq_(\"./errors\").TypeError;\n    var inherits = _dereq_(\"./util\").inherits;\n    var errorObj = util.errorObj;\n    var tryCatch = util.tryCatch;\n    var NULL = {};\n\n    function thrower(e) {\n        setTimeout(function(){throw e;}, 0);\n    }\n\n    function castPreservingDisposable(thenable) {\n        var maybePromise = tryConvertToPromise(thenable);\n        if (maybePromise !== thenable &&\n            typeof thenable._isDisposable === \"function\" &&\n            typeof thenable._getDisposer === \"function\" &&\n            thenable._isDisposable()) {\n            maybePromise._setDisposable(thenable._getDisposer());\n        }\n        return maybePromise;\n    }\n    function dispose(resources, inspection) {\n        var i = 0;\n        var len = resources.length;\n        var ret = new Promise(INTERNAL);\n        function iterator() {\n            if (i >= len) return ret._fulfill();\n            var maybePromise = castPreservingDisposable(resources[i++]);\n            if (maybePromise instanceof Promise &&\n                maybePromise._isDisposable()) {\n                try {\n                    maybePromise = tryConvertToPromise(\n                        maybePromise._getDisposer().tryDispose(inspection),\n                        resources.promise);\n                } catch (e) {\n                    return thrower(e);\n                }\n                if (maybePromise instanceof Promise) {\n                    return maybePromise._then(iterator, thrower,\n                                              null, null, null);\n                }\n            }\n            iterator();\n        }\n        iterator();\n        return ret;\n    }\n\n    function Disposer(data, promise, context) {\n        this._data = data;\n        this._promise = promise;\n        this._context = context;\n    }\n\n    Disposer.prototype.data = function () {\n        return this._data;\n    };\n\n    Disposer.prototype.promise = function () {\n        return this._promise;\n    };\n\n    Disposer.prototype.resource = function () {\n        if (this.promise().isFulfilled()) {\n            return this.promise().value();\n        }\n        return NULL;\n    };\n\n    Disposer.prototype.tryDispose = function(inspection) {\n        var resource = this.resource();\n        var context = this._context;\n        if (context !== undefined) context._pushContext();\n        var ret = resource !== NULL\n            ? this.doDispose(resource, inspection) : null;\n        if (context !== undefined) context._popContext();\n        this._promise._unsetDisposable();\n        this._data = null;\n        return ret;\n    };\n\n    Disposer.isDisposer = function (d) {\n        return (d != null &&\n                typeof d.resource === \"function\" &&\n                typeof d.tryDispose === \"function\");\n    };\n\n    function FunctionDisposer(fn, promise, context) {\n        this.constructor$(fn, promise, context);\n    }\n    inherits(FunctionDisposer, Disposer);\n\n    FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n        var fn = this.data();\n        return fn.call(resource, resource, inspection);\n    };\n\n    function maybeUnwrapDisposer(value) {\n        if (Disposer.isDisposer(value)) {\n            this.resources[this.index]._setDisposable(value);\n            return value.promise();\n        }\n        return value;\n    }\n\n    function ResourceList(length) {\n        this.length = length;\n        this.promise = null;\n        this[length-1] = null;\n    }\n\n    ResourceList.prototype._resultCancelled = function() {\n        var len = this.length;\n        for (var i = 0; i < len; ++i) {\n            var item = this[i];\n            if (item instanceof Promise) {\n                item.cancel();\n            }\n        }\n    };\n\n    Promise.using = function () {\n        var len = arguments.length;\n        if (len < 2) return apiRejection(\n                        \"you must pass at least 2 arguments to Promise.using\");\n        var fn = arguments[len - 1];\n        if (typeof fn !== \"function\") {\n            return apiRejection(\"expecting a function but got \" + util.classString(fn));\n        }\n        var input;\n        var spreadArgs = true;\n        if (len === 2 && Array.isArray(arguments[0])) {\n            input = arguments[0];\n            len = input.length;\n            spreadArgs = false;\n        } else {\n            input = arguments;\n            len--;\n        }\n        var resources = new ResourceList(len);\n        for (var i = 0; i < len; ++i) {\n            var resource = input[i];\n            if (Disposer.isDisposer(resource)) {\n                var disposer = resource;\n                resource = resource.promise();\n                resource._setDisposable(disposer);\n            } else {\n                var maybePromise = tryConvertToPromise(resource);\n                if (maybePromise instanceof Promise) {\n                    resource =\n                        maybePromise._then(maybeUnwrapDisposer, null, null, {\n                            resources: resources,\n                            index: i\n                    }, undefined);\n                }\n            }\n            resources[i] = resource;\n        }\n\n        var reflectedResources = new Array(resources.length);\n        for (var i = 0; i < reflectedResources.length; ++i) {\n            reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n        }\n\n        var resultPromise = Promise.all(reflectedResources)\n            .then(function(inspections) {\n                for (var i = 0; i < inspections.length; ++i) {\n                    var inspection = inspections[i];\n                    if (inspection.isRejected()) {\n                        errorObj.e = inspection.error();\n                        return errorObj;\n                    } else if (!inspection.isFulfilled()) {\n                        resultPromise.cancel();\n                        return;\n                    }\n                    inspections[i] = inspection.value();\n                }\n                promise._pushContext();\n\n                fn = tryCatch(fn);\n                var ret = spreadArgs\n                    ? fn.apply(undefined, inspections) : fn(inspections);\n                var promiseCreated = promise._popContext();\n                debug.checkForgottenReturns(\n                    ret, promiseCreated, \"Promise.using\", promise);\n                return ret;\n            });\n\n        var promise = resultPromise.lastly(function() {\n            var inspection = new Promise.PromiseInspection(resultPromise);\n            return dispose(resources, inspection);\n        });\n        resources.promise = promise;\n        promise._setOnCancel(resources);\n        return promise;\n    };\n\n    Promise.prototype._setDisposable = function (disposer) {\n        this._bitField = this._bitField | 131072;\n        this._disposer = disposer;\n    };\n\n    Promise.prototype._isDisposable = function () {\n        return (this._bitField & 131072) > 0;\n    };\n\n    Promise.prototype._getDisposer = function () {\n        return this._disposer;\n    };\n\n    Promise.prototype._unsetDisposable = function () {\n        this._bitField = this._bitField & (~131072);\n        this._disposer = undefined;\n    };\n\n    Promise.prototype.disposer = function (fn) {\n        if (typeof fn === \"function\") {\n            return new FunctionDisposer(fn, this, createContext());\n        }\n        throw new TypeError();\n    };\n\n};\n\n},{\"./errors\":12,\"./util\":36}],36:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n    typeof window !== \"undefined\" ? window :\n    typeof global !== \"undefined\" ? global :\n    this !== undefined ? this : null;\n\nfunction tryCatcher() {\n    try {\n        var target = tryCatchTarget;\n        tryCatchTarget = null;\n        return target.apply(this, arguments);\n    } catch (e) {\n        errorObj.e = e;\n        return errorObj;\n    }\n}\nfunction tryCatch(fn) {\n    tryCatchTarget = fn;\n    return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n    var hasProp = {}.hasOwnProperty;\n\n    function T() {\n        this.constructor = Child;\n        this.constructor$ = Parent;\n        for (var propertyName in Parent.prototype) {\n            if (hasProp.call(Parent.prototype, propertyName) &&\n                propertyName.charAt(propertyName.length-1) !== \"$\"\n           ) {\n                this[propertyName + \"$\"] = Parent.prototype[propertyName];\n            }\n        }\n    }\n    T.prototype = Parent.prototype;\n    Child.prototype = new T();\n    return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n    return val == null || val === true || val === false ||\n        typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n    return typeof value === \"function\" ||\n           typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n    if (!isPrimitive(maybeError)) return maybeError;\n\n    return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n    var len = target.length;\n    var ret = new Array(len + 1);\n    var i;\n    for (i = 0; i < len; ++i) {\n        ret[i] = target[i];\n    }\n    ret[i] = appendee;\n    return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n    if (es5.isES5) {\n        var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n        if (desc != null) {\n            return desc.get == null && desc.set == null\n                    ? desc.value\n                    : defaultValue;\n        }\n    } else {\n        return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n    }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n    if (isPrimitive(obj)) return obj;\n    var descriptor = {\n        value: value,\n        configurable: true,\n        enumerable: false,\n        writable: true\n    };\n    es5.defineProperty(obj, name, descriptor);\n    return obj;\n}\n\nfunction thrower(r) {\n    throw r;\n}\n\nvar inheritedDataKeys = (function() {\n    var excludedPrototypes = [\n        Array.prototype,\n        Object.prototype,\n        Function.prototype\n    ];\n\n    var isExcludedProto = function(val) {\n        for (var i = 0; i < excludedPrototypes.length; ++i) {\n            if (excludedPrototypes[i] === val) {\n                return true;\n            }\n        }\n        return false;\n    };\n\n    if (es5.isES5) {\n        var getKeys = Object.getOwnPropertyNames;\n        return function(obj) {\n            var ret = [];\n            var visitedKeys = Object.create(null);\n            while (obj != null && !isExcludedProto(obj)) {\n                var keys;\n                try {\n                    keys = getKeys(obj);\n                } catch (e) {\n                    return ret;\n                }\n                for (var i = 0; i < keys.length; ++i) {\n                    var key = keys[i];\n                    if (visitedKeys[key]) continue;\n                    visitedKeys[key] = true;\n                    var desc = Object.getOwnPropertyDescriptor(obj, key);\n                    if (desc != null && desc.get == null && desc.set == null) {\n                        ret.push(key);\n                    }\n                }\n                obj = es5.getPrototypeOf(obj);\n            }\n            return ret;\n        };\n    } else {\n        var hasProp = {}.hasOwnProperty;\n        return function(obj) {\n            if (isExcludedProto(obj)) return [];\n            var ret = [];\n\n            /*jshint forin:false */\n            enumeration: for (var key in obj) {\n                if (hasProp.call(obj, key)) {\n                    ret.push(key);\n                } else {\n                    for (var i = 0; i < excludedPrototypes.length; ++i) {\n                        if (hasProp.call(excludedPrototypes[i], key)) {\n                            continue enumeration;\n                        }\n                    }\n                    ret.push(key);\n                }\n            }\n            return ret;\n        };\n    }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n    try {\n        if (typeof fn === \"function\") {\n            var keys = es5.names(fn.prototype);\n\n            var hasMethods = es5.isES5 && keys.length > 1;\n            var hasMethodsOtherThanConstructor = keys.length > 0 &&\n                !(keys.length === 1 && keys[0] === \"constructor\");\n            var hasThisAssignmentAndStaticMethods =\n                thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n            if (hasMethods || hasMethodsOtherThanConstructor ||\n                hasThisAssignmentAndStaticMethods) {\n                return true;\n            }\n        }\n        return false;\n    } catch (e) {\n        return false;\n    }\n}\n\nfunction toFastProperties(obj) {\n    /*jshint -W027,-W055,-W031*/\n    function FakeConstructor() {}\n    FakeConstructor.prototype = obj;\n    var receiver = new FakeConstructor();\n    function ic() {\n        return typeof receiver.foo;\n    }\n    ic();\n    ic();\n    return obj;\n    eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n    return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n    var ret = new Array(count);\n    for(var i = 0; i < count; ++i) {\n        ret[i] = prefix + i + suffix;\n    }\n    return ret;\n}\n\nfunction safeToString(obj) {\n    try {\n        return obj + \"\";\n    } catch (e) {\n        return \"[no string representation]\";\n    }\n}\n\nfunction isError(obj) {\n    return obj instanceof Error ||\n        (obj !== null &&\n           typeof obj === \"object\" &&\n           typeof obj.message === \"string\" &&\n           typeof obj.name === \"string\");\n}\n\nfunction markAsOriginatingFromRejection(e) {\n    try {\n        notEnumerableProp(e, \"isOperational\", true);\n    }\n    catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n    if (e == null) return false;\n    return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n        e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n    return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n    if (!(\"stack\" in new Error())) {\n        return function(value) {\n            if (canAttachTrace(value)) return value;\n            try {throw new Error(safeToString(value));}\n            catch(err) {return err;}\n        };\n    } else {\n        return function(value) {\n            if (canAttachTrace(value)) return value;\n            return new Error(safeToString(value));\n        };\n    }\n})();\n\nfunction classString(obj) {\n    return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n    var keys = es5.names(from);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        if (filter(key)) {\n            try {\n                es5.defineProperty(to, key, es5.getDescriptor(from, key));\n            } catch (ignore) {}\n        }\n    }\n}\n\nvar asArray = function(v) {\n    if (es5.isArray(v)) {\n        return v;\n    }\n    return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n    var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n        return Array.from(v);\n    } : function(v) {\n        var ret = [];\n        var it = v[Symbol.iterator]();\n        var itResult;\n        while (!((itResult = it.next()).done)) {\n            ret.push(itResult.value);\n        }\n        return ret;\n    };\n\n    asArray = function(v) {\n        if (es5.isArray(v)) {\n            return v;\n        } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n            return ArrayFrom(v);\n        }\n        return null;\n    };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n        classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n    typeof process.env !== \"undefined\";\n\nfunction env(key) {\n    return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n    if (typeof Promise === \"function\") {\n        try {\n            var promise = new Promise(function(){});\n            if ({}.toString.call(promise) === \"[object Promise]\") {\n                return Promise;\n            }\n        } catch (e) {}\n    }\n}\n\nfunction domainBind(self, cb) {\n    return self.bind(cb);\n}\n\nvar ret = {\n    isClass: isClass,\n    isIdentifier: isIdentifier,\n    inheritedDataKeys: inheritedDataKeys,\n    getDataPropertyOrDefault: getDataPropertyOrDefault,\n    thrower: thrower,\n    isArray: es5.isArray,\n    asArray: asArray,\n    notEnumerableProp: notEnumerableProp,\n    isPrimitive: isPrimitive,\n    isObject: isObject,\n    isError: isError,\n    canEvaluate: canEvaluate,\n    errorObj: errorObj,\n    tryCatch: tryCatch,\n    inherits: inherits,\n    withAppended: withAppended,\n    maybeWrapAsError: maybeWrapAsError,\n    toFastProperties: toFastProperties,\n    filledRange: filledRange,\n    toString: safeToString,\n    canAttachTrace: canAttachTrace,\n    ensureErrorObject: ensureErrorObject,\n    originatesFromRejection: originatesFromRejection,\n    markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n    classString: classString,\n    copyDescriptors: copyDescriptors,\n    hasDevTools: typeof chrome !== \"undefined\" && chrome &&\n                 typeof chrome.loadTimes === \"function\",\n    isNode: isNode,\n    hasEnvVariables: hasEnvVariables,\n    env: env,\n    global: globalObject,\n    getNativePromise: getNativePromise,\n    domainBind: domainBind\n};\nret.isRecentNode = ret.isNode && (function() {\n    var version = process.versions.node.split(\".\").map(Number);\n    return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":13}]},{},[4])(4)\n});                    ;if (typeof window !== 'undefined' && window !== null) {                               window.P = window.Promise;                                                     } else if (typeof self !== 'undefined' && self !== null) {                             self.P = self.Promise;                                                         }","(function (global, undefined) {\n    \"use strict\";\n\n    if (global.setImmediate) {\n        return;\n    }\n\n    var nextHandle = 1; // Spec says greater than zero\n    var tasksByHandle = {};\n    var currentlyRunningATask = false;\n    var doc = global.document;\n    var registerImmediate;\n\n    function setImmediate(callback) {\n      // Callback can either be a function or a string\n      if (typeof callback !== \"function\") {\n        callback = new Function(\"\" + callback);\n      }\n      // Copy function arguments\n      var args = new Array(arguments.length - 1);\n      for (var i = 0; i < args.length; i++) {\n          args[i] = arguments[i + 1];\n      }\n      // Store and register the task\n      var task = { callback: callback, args: args };\n      tasksByHandle[nextHandle] = task;\n      registerImmediate(nextHandle);\n      return nextHandle++;\n    }\n\n    function clearImmediate(handle) {\n        delete tasksByHandle[handle];\n    }\n\n    function run(task) {\n        var callback = task.callback;\n        var args = task.args;\n        switch (args.length) {\n        case 0:\n            callback();\n            break;\n        case 1:\n            callback(args[0]);\n            break;\n        case 2:\n            callback(args[0], args[1]);\n            break;\n        case 3:\n            callback(args[0], args[1], args[2]);\n            break;\n        default:\n            callback.apply(undefined, args);\n            break;\n        }\n    }\n\n    function runIfPresent(handle) {\n        // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n        // So if we're currently running a task, we'll need to delay this invocation.\n        if (currentlyRunningATask) {\n            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n            // \"too much recursion\" error.\n            setTimeout(runIfPresent, 0, handle);\n        } else {\n            var task = tasksByHandle[handle];\n            if (task) {\n                currentlyRunningATask = true;\n                try {\n                    run(task);\n                } finally {\n                    clearImmediate(handle);\n                    currentlyRunningATask = false;\n                }\n            }\n        }\n    }\n\n    function installNextTickImplementation() {\n        registerImmediate = function(handle) {\n            process.nextTick(function () { runIfPresent(handle); });\n        };\n    }\n\n    function canUsePostMessage() {\n        // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n        // where `global.postMessage` means something completely different and can't be used for this purpose.\n        if (global.postMessage && !global.importScripts) {\n            var postMessageIsAsynchronous = true;\n            var oldOnMessage = global.onmessage;\n            global.onmessage = function() {\n                postMessageIsAsynchronous = false;\n            };\n            global.postMessage(\"\", \"*\");\n            global.onmessage = oldOnMessage;\n            return postMessageIsAsynchronous;\n        }\n    }\n\n    function installPostMessageImplementation() {\n        // Installs an event handler on `global` for the `message` event: see\n        // * https://developer.mozilla.org/en/DOM/window.postMessage\n        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n        var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n        var onGlobalMessage = function(event) {\n            if (event.source === global &&\n                typeof event.data === \"string\" &&\n                event.data.indexOf(messagePrefix) === 0) {\n                runIfPresent(+event.data.slice(messagePrefix.length));\n            }\n        };\n\n        if (global.addEventListener) {\n            global.addEventListener(\"message\", onGlobalMessage, false);\n        } else {\n            global.attachEvent(\"onmessage\", onGlobalMessage);\n        }\n\n        registerImmediate = function(handle) {\n            global.postMessage(messagePrefix + handle, \"*\");\n        };\n    }\n\n    function installMessageChannelImplementation() {\n        var channel = new MessageChannel();\n        channel.port1.onmessage = function(event) {\n            var handle = event.data;\n            runIfPresent(handle);\n        };\n\n        registerImmediate = function(handle) {\n            channel.port2.postMessage(handle);\n        };\n    }\n\n    function installReadyStateChangeImplementation() {\n        var html = doc.documentElement;\n        registerImmediate = function(handle) {\n            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n            var script = doc.createElement(\"script\");\n            script.onreadystatechange = function () {\n                runIfPresent(handle);\n                script.onreadystatechange = null;\n                html.removeChild(script);\n                script = null;\n            };\n            html.appendChild(script);\n        };\n    }\n\n    function installSetTimeoutImplementation() {\n        registerImmediate = function(handle) {\n            setTimeout(runIfPresent, 0, handle);\n        };\n    }\n\n    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n    // Don't get fooled by e.g. browserify environments.\n    if ({}.toString.call(global.process) === \"[object process]\") {\n        // For Node.js before 0.9\n        installNextTickImplementation();\n\n    } else if (canUsePostMessage()) {\n        // For non-IE10 modern browsers\n        installPostMessageImplementation();\n\n    } else if (global.MessageChannel) {\n        // For web workers, where supported\n        installMessageChannelImplementation();\n\n    } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n        // For IE 6–8\n        installReadyStateChangeImplementation();\n\n    } else {\n        // For older browsers\n        installSetTimeoutImplementation();\n    }\n\n    attachTo.setImmediate = setImmediate;\n    attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","module.exports = global[\"jQuery\"] = require(\"-!./jquery.js\");","/*!\n * jQuery JavaScript Library v3.3.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2018-01-20T17:24Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n      // Support: Chrome <=57, Firefox <=52\n      // In some browsers, typeof returns \"function\" for HTML <object> elements\n      // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n      // We don't want to classify *any* DOM node as a function.\n      return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n  };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, doc, node ) {\n\t\tdoc = doc || document;\n\n\t\tvar i,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\t\t\t\tif ( node[ i ] ) {\n\t\t\t\t\tscript[ i ] = node[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.3.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && Array.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\n\t\t/* eslint-disable no-unused-vars */\n\t\t// See https://github.com/eslint/eslint/issues/6125\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tDOMEval( code );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.3\n * https://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-08-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tdisabledAncestor = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && (\"form\" in elem || \"label\" in elem);\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tdisabledAncestor( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n  return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n        if ( nodeName( elem, \"iframe\" ) ) {\n            return elem.contentDocument;\n        }\n\n        // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n        // Treat the template element as a regular one in browsers that\n        // don't support it.\n        if ( nodeName( elem, \"template\" ) ) {\n            elem = elem.content || elem;\n        }\n\n        return jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tjQuery.contains( elem.ownerDocument, elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, contains, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\nvar documentElement = document.documentElement;\n\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 only\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase()  !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), doc, node );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = div.offsetWidth === 36 || \"absolute\";\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t//   .css('filter') (IE 9 only, #12537)\n\t//   .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style;\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a property mapped along what jQuery.cssProps suggests or to\n// a vendor prefixed property.\nfunction finalPropName( name ) {\n\tvar ret = jQuery.cssProps[ name ];\n\tif ( !ret ) {\n\t\tret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;\n\t}\n\treturn ret;\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\t\t) );\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\t\tval = curCSS( elem, dimension, styles ),\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox;\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\t// Check for style in case a browser which returns unreliable values\n\t// for getComputedStyle silently falls back to the reliable elem.style\n\tvalueIsBorderBox = valueIsBorderBox &&\n\t\t( support.boxSizingReliable() || val === elem.style[ dimension ] );\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\tif ( val === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) {\n\n\t\tval = elem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ];\n\n\t\t// offsetWidth/offsetHeight provide border-box values\n\t\tvalueIsBorderBox = true;\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\tif ( type === \"number\" ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\t\t\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra && boxModelAdjustment(\n\t\t\t\t\telem,\n\t\t\t\t\tdimension,\n\t\t\t\t\textra,\n\t\t\t\t\tisBorderBox,\n\t\t\t\t\tstyles\n\t\t\t\t);\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && support.scrollboxSize() === styles.position ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 &&\n\t\t\t\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\"  ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" ).prop( {\n\t\t\t\t\tcharset: s.scriptCharset,\n\t\t\t\t\tsrc: s.url\n\t\t\t\t} ).on(\n\t\t\t\t\t\"load error\",\n\t\t\t\t\tcallback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t}\n} );\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Reusable object\n\t    var W = [];\n\n\t    /**\n\t     * SHA-1 hash algorithm.\n\t     */\n\t    var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init([\n\t                0x67452301, 0xefcdab89,\n\t                0x98badcfe, 0x10325476,\n\t                0xc3d2e1f0\n\t            ]);\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var H = this._hash.words;\n\n\t            // Working variables\n\t            var a = H[0];\n\t            var b = H[1];\n\t            var c = H[2];\n\t            var d = H[3];\n\t            var e = H[4];\n\n\t            // Computation\n\t            for (var i = 0; i < 80; i++) {\n\t                if (i < 16) {\n\t                    W[i] = M[offset + i] | 0;\n\t                } else {\n\t                    var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t                    W[i] = (n << 1) | (n >>> 31);\n\t                }\n\n\t                var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t                if (i < 20) {\n\t                    t += ((b & c) | (~b & d)) + 0x5a827999;\n\t                } else if (i < 40) {\n\t                    t += (b ^ c ^ d) + 0x6ed9eba1;\n\t                } else if (i < 60) {\n\t                    t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t                } else /* if (i < 80) */ {\n\t                    t += (b ^ c ^ d) - 0x359d3e2a;\n\t                }\n\n\t                e = d;\n\t                d = c;\n\t                c = (b << 30) | (b >>> 2);\n\t                b = a;\n\t                a = t;\n\t            }\n\n\t            // Intermediate hash value\n\t            H[0] = (H[0] + a) | 0;\n\t            H[1] = (H[1] + b) | 0;\n\t            H[2] = (H[2] + c) | 0;\n\t            H[3] = (H[3] + d) | 0;\n\t            H[4] = (H[4] + e) | 0;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Return final computed hash\n\t            return this._hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA1('message');\n\t     *     var hash = CryptoJS.SHA1(wordArray);\n\t     */\n\t    C.SHA1 = Hasher._createHelper(SHA1);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA1(message, key);\n\t     */\n\t    C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));","var _dec, _class, _dec2, _class2, _dec3, _class3, _dec4, _class4, _dec5, _class5, _dec6, _class6, _dec7, _class7, _classInvokers;\n\n\n\nimport { protocol, metadata } from 'aurelia-metadata';\nimport { AggregateError } from 'aurelia-pal';\n\nexport var resolver = protocol.create('aurelia:resolver', function (target) {\n  if (!(typeof target.get === 'function')) {\n    return 'Resolvers must implement: get(container: Container, key: any): any';\n  }\n\n  return true;\n});\n\nexport var StrategyResolver = (_dec = resolver(), _dec(_class = function () {\n  function StrategyResolver(strategy, state) {\n    \n\n    this.strategy = strategy;\n    this.state = state;\n  }\n\n  StrategyResolver.prototype.get = function get(container, key) {\n    switch (this.strategy) {\n      case 0:\n        return this.state;\n      case 1:\n        var _singleton = container.invoke(this.state);\n        this.state = _singleton;\n        this.strategy = 0;\n        return _singleton;\n      case 2:\n        return container.invoke(this.state);\n      case 3:\n        return this.state(container, key, this);\n      case 4:\n        return this.state[0].get(container, key);\n      case 5:\n        return container.get(this.state);\n      default:\n        throw new Error('Invalid strategy: ' + this.strategy);\n    }\n  };\n\n  return StrategyResolver;\n}()) || _class);\n\nexport var Lazy = (_dec2 = resolver(), _dec2(_class2 = function () {\n  function Lazy(key) {\n    \n\n    this._key = key;\n  }\n\n  Lazy.prototype.get = function get(container) {\n    var _this = this;\n\n    return function () {\n      return container.get(_this._key);\n    };\n  };\n\n  Lazy.of = function of(key) {\n    return new Lazy(key);\n  };\n\n  return Lazy;\n}()) || _class2);\n\nexport var All = (_dec3 = resolver(), _dec3(_class3 = function () {\n  function All(key) {\n    \n\n    this._key = key;\n  }\n\n  All.prototype.get = function get(container) {\n    return container.getAll(this._key);\n  };\n\n  All.of = function of(key) {\n    return new All(key);\n  };\n\n  return All;\n}()) || _class3);\n\nexport var Optional = (_dec4 = resolver(), _dec4(_class4 = function () {\n  function Optional(key) {\n    var checkParent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n    \n\n    this._key = key;\n    this._checkParent = checkParent;\n  }\n\n  Optional.prototype.get = function get(container) {\n    if (container.hasResolver(this._key, this._checkParent)) {\n      return container.get(this._key);\n    }\n\n    return null;\n  };\n\n  Optional.of = function of(key) {\n    var checkParent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n    return new Optional(key, checkParent);\n  };\n\n  return Optional;\n}()) || _class4);\n\nexport var Parent = (_dec5 = resolver(), _dec5(_class5 = function () {\n  function Parent(key) {\n    \n\n    this._key = key;\n  }\n\n  Parent.prototype.get = function get(container) {\n    return container.parent ? container.parent.get(this._key) : null;\n  };\n\n  Parent.of = function of(key) {\n    return new Parent(key);\n  };\n\n  return Parent;\n}()) || _class5);\n\nexport var Factory = (_dec6 = resolver(), _dec6(_class6 = function () {\n  function Factory(key) {\n    \n\n    this._key = key;\n  }\n\n  Factory.prototype.get = function get(container) {\n    var fn = this._key;\n    var resolver = container.getResolver(fn);\n    if (resolver && resolver.strategy === 3) {\n      fn = resolver.state;\n    }\n\n    return function () {\n      for (var _len = arguments.length, rest = Array(_len), _key = 0; _key < _len; _key++) {\n        rest[_key] = arguments[_key];\n      }\n\n      return container.invoke(fn, rest);\n    };\n  };\n\n  Factory.of = function of(key) {\n    return new Factory(key);\n  };\n\n  return Factory;\n}()) || _class6);\n\nexport var NewInstance = (_dec7 = resolver(), _dec7(_class7 = function () {\n  function NewInstance(key) {\n    \n\n    this.key = key;\n    this.asKey = key;\n\n    for (var _len2 = arguments.length, dynamicDependencies = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n      dynamicDependencies[_key2 - 1] = arguments[_key2];\n    }\n\n    this.dynamicDependencies = dynamicDependencies;\n  }\n\n  NewInstance.prototype.get = function get(container) {\n    var dynamicDependencies = this.dynamicDependencies.length > 0 ? this.dynamicDependencies.map(function (dependency) {\n      return dependency['protocol:aurelia:resolver'] ? dependency.get(container) : container.get(dependency);\n    }) : undefined;\n\n    var fn = this.key;\n    var resolver = container.getResolver(fn);\n    if (resolver && resolver.strategy === 3) {\n      fn = resolver.state;\n    }\n\n    var instance = container.invoke(fn, dynamicDependencies);\n    container.registerInstance(this.asKey, instance);\n    return instance;\n  };\n\n  NewInstance.prototype.as = function as(key) {\n    this.asKey = key;\n    return this;\n  };\n\n  NewInstance.of = function of(key) {\n    for (var _len3 = arguments.length, dynamicDependencies = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n      dynamicDependencies[_key3 - 1] = arguments[_key3];\n    }\n\n    return new (Function.prototype.bind.apply(NewInstance, [null].concat([key], dynamicDependencies)))();\n  };\n\n  return NewInstance;\n}()) || _class7);\n\nexport function getDecoratorDependencies(target) {\n  autoinject(target);\n\n  return target.inject;\n}\n\nexport function lazy(keyValue) {\n  return function (target, key, index) {\n    var inject = getDecoratorDependencies(target);\n    inject[index] = Lazy.of(keyValue);\n  };\n}\n\nexport function all(keyValue) {\n  return function (target, key, index) {\n    var inject = getDecoratorDependencies(target);\n    inject[index] = All.of(keyValue);\n  };\n}\n\nexport function optional() {\n  var checkParentOrTarget = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n  var deco = function deco(checkParent) {\n    return function (target, key, index) {\n      var inject = getDecoratorDependencies(target);\n      inject[index] = Optional.of(inject[index], checkParent);\n    };\n  };\n  if (typeof checkParentOrTarget === 'boolean') {\n    return deco(checkParentOrTarget);\n  }\n  return deco(true);\n}\n\nexport function parent(target, key, index) {\n  var inject = getDecoratorDependencies(target);\n  inject[index] = Parent.of(inject[index]);\n}\n\nexport function factory(keyValue) {\n  return function (target, key, index) {\n    var inject = getDecoratorDependencies(target);\n    inject[index] = Factory.of(keyValue);\n  };\n}\n\nexport function newInstance(asKeyOrTarget) {\n  for (var _len4 = arguments.length, dynamicDependencies = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n    dynamicDependencies[_key4 - 1] = arguments[_key4];\n  }\n\n  var deco = function deco(asKey) {\n    return function (target, key, index) {\n      var inject = getDecoratorDependencies(target);\n      inject[index] = NewInstance.of.apply(NewInstance, [inject[index]].concat(dynamicDependencies));\n      if (!!asKey) {\n        inject[index].as(asKey);\n      }\n    };\n  };\n  if (arguments.length >= 1) {\n    return deco(asKeyOrTarget);\n  }\n  return deco();\n}\n\nexport function invoker(value) {\n  return function (target) {\n    metadata.define(metadata.invoker, value, target);\n  };\n}\n\nexport function invokeAsFactory(potentialTarget) {\n  var deco = function deco(target) {\n    metadata.define(metadata.invoker, FactoryInvoker.instance, target);\n  };\n\n  return potentialTarget ? deco(potentialTarget) : deco;\n}\n\nexport var FactoryInvoker = function () {\n  function FactoryInvoker() {\n    \n  }\n\n  FactoryInvoker.prototype.invoke = function invoke(container, fn, dependencies) {\n    var i = dependencies.length;\n    var args = new Array(i);\n\n    while (i--) {\n      args[i] = container.get(dependencies[i]);\n    }\n\n    return fn.apply(undefined, args);\n  };\n\n  FactoryInvoker.prototype.invokeWithDynamicDependencies = function invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {\n    var i = staticDependencies.length;\n    var args = new Array(i);\n\n    while (i--) {\n      args[i] = container.get(staticDependencies[i]);\n    }\n\n    if (dynamicDependencies !== undefined) {\n      args = args.concat(dynamicDependencies);\n    }\n\n    return fn.apply(undefined, args);\n  };\n\n  return FactoryInvoker;\n}();\n\nFactoryInvoker.instance = new FactoryInvoker();\n\nexport function registration(value) {\n  return function (target) {\n    metadata.define(metadata.registration, value, target);\n  };\n}\n\nexport function transient(key) {\n  return registration(new TransientRegistration(key));\n}\n\nexport function singleton(keyOrRegisterInChild) {\n  var registerInChild = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild));\n}\n\nexport var TransientRegistration = function () {\n  function TransientRegistration(key) {\n    \n\n    this._key = key;\n  }\n\n  TransientRegistration.prototype.registerResolver = function registerResolver(container, key, fn) {\n    var existingResolver = container.getResolver(this._key || key);\n    return existingResolver === undefined ? container.registerTransient(this._key || key, fn) : existingResolver;\n  };\n\n  return TransientRegistration;\n}();\n\nexport var SingletonRegistration = function () {\n  function SingletonRegistration(keyOrRegisterInChild) {\n    var registerInChild = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n    \n\n    if (typeof keyOrRegisterInChild === 'boolean') {\n      this._registerInChild = keyOrRegisterInChild;\n    } else {\n      this._key = keyOrRegisterInChild;\n      this._registerInChild = registerInChild;\n    }\n  }\n\n  SingletonRegistration.prototype.registerResolver = function registerResolver(container, key, fn) {\n    var targetContainer = this._registerInChild ? container : container.root;\n    var existingResolver = targetContainer.getResolver(this._key || key);\n    return existingResolver === undefined ? targetContainer.registerSingleton(this._key || key, fn) : existingResolver;\n  };\n\n  return SingletonRegistration;\n}();\n\nfunction validateKey(key) {\n  if (key === null || key === undefined) {\n    throw new Error('key/value cannot be null or undefined. Are you trying to inject/register something that doesn\\'t exist with DI?');\n  }\n}\nexport var _emptyParameters = Object.freeze([]);\n\nmetadata.registration = 'aurelia:registration';\nmetadata.invoker = 'aurelia:invoker';\n\nvar resolverDecorates = resolver.decorates;\n\nexport var InvocationHandler = function () {\n  function InvocationHandler(fn, invoker, dependencies) {\n    \n\n    this.fn = fn;\n    this.invoker = invoker;\n    this.dependencies = dependencies;\n  }\n\n  InvocationHandler.prototype.invoke = function invoke(container, dynamicDependencies) {\n    return dynamicDependencies !== undefined ? this.invoker.invokeWithDynamicDependencies(container, this.fn, this.dependencies, dynamicDependencies) : this.invoker.invoke(container, this.fn, this.dependencies);\n  };\n\n  return InvocationHandler;\n}();\n\nfunction invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {\n  var i = staticDependencies.length;\n  var args = new Array(i);\n  var lookup = void 0;\n\n  while (i--) {\n    lookup = staticDependencies[i];\n\n    if (lookup === null || lookup === undefined) {\n      throw new Error('Constructor Parameter with index ' + i + ' cannot be null or undefined. Are you trying to inject/register something that doesn\\'t exist with DI?');\n    } else {\n      args[i] = container.get(lookup);\n    }\n  }\n\n  if (dynamicDependencies !== undefined) {\n    args = args.concat(dynamicDependencies);\n  }\n\n  return Reflect.construct(fn, args);\n}\n\nvar classInvokers = (_classInvokers = {}, _classInvokers[0] = {\n  invoke: function invoke(container, Type) {\n    return new Type();\n  },\n\n  invokeWithDynamicDependencies: invokeWithDynamicDependencies\n}, _classInvokers[1] = {\n  invoke: function invoke(container, Type, deps) {\n    return new Type(container.get(deps[0]));\n  },\n\n  invokeWithDynamicDependencies: invokeWithDynamicDependencies\n}, _classInvokers[2] = {\n  invoke: function invoke(container, Type, deps) {\n    return new Type(container.get(deps[0]), container.get(deps[1]));\n  },\n\n  invokeWithDynamicDependencies: invokeWithDynamicDependencies\n}, _classInvokers[3] = {\n  invoke: function invoke(container, Type, deps) {\n    return new Type(container.get(deps[0]), container.get(deps[1]), container.get(deps[2]));\n  },\n\n  invokeWithDynamicDependencies: invokeWithDynamicDependencies\n}, _classInvokers[4] = {\n  invoke: function invoke(container, Type, deps) {\n    return new Type(container.get(deps[0]), container.get(deps[1]), container.get(deps[2]), container.get(deps[3]));\n  },\n\n  invokeWithDynamicDependencies: invokeWithDynamicDependencies\n}, _classInvokers[5] = {\n  invoke: function invoke(container, Type, deps) {\n    return new Type(container.get(deps[0]), container.get(deps[1]), container.get(deps[2]), container.get(deps[3]), container.get(deps[4]));\n  },\n\n  invokeWithDynamicDependencies: invokeWithDynamicDependencies\n}, _classInvokers.fallback = {\n  invoke: invokeWithDynamicDependencies,\n  invokeWithDynamicDependencies: invokeWithDynamicDependencies\n}, _classInvokers);\n\nfunction getDependencies(f) {\n  if (!f.hasOwnProperty('inject')) {\n    return [];\n  }\n\n  if (typeof f.inject === 'function') {\n    return f.inject();\n  }\n\n  return f.inject;\n}\n\nexport var Container = function () {\n  function Container(configuration) {\n    \n\n    if (configuration === undefined) {\n      configuration = {};\n    }\n\n    this._configuration = configuration;\n    this._onHandlerCreated = configuration.onHandlerCreated;\n    this._handlers = configuration.handlers || (configuration.handlers = new Map());\n    this._resolvers = new Map();\n    this.root = this;\n    this.parent = null;\n  }\n\n  Container.prototype.makeGlobal = function makeGlobal() {\n    Container.instance = this;\n    return this;\n  };\n\n  Container.prototype.setHandlerCreatedCallback = function setHandlerCreatedCallback(onHandlerCreated) {\n    this._onHandlerCreated = onHandlerCreated;\n    this._configuration.onHandlerCreated = onHandlerCreated;\n  };\n\n  Container.prototype.registerInstance = function registerInstance(key, instance) {\n    return this.registerResolver(key, new StrategyResolver(0, instance === undefined ? key : instance));\n  };\n\n  Container.prototype.registerSingleton = function registerSingleton(key, fn) {\n    return this.registerResolver(key, new StrategyResolver(1, fn === undefined ? key : fn));\n  };\n\n  Container.prototype.registerTransient = function registerTransient(key, fn) {\n    return this.registerResolver(key, new StrategyResolver(2, fn === undefined ? key : fn));\n  };\n\n  Container.prototype.registerHandler = function registerHandler(key, handler) {\n    return this.registerResolver(key, new StrategyResolver(3, handler));\n  };\n\n  Container.prototype.registerAlias = function registerAlias(originalKey, aliasKey) {\n    return this.registerResolver(aliasKey, new StrategyResolver(5, originalKey));\n  };\n\n  Container.prototype.registerResolver = function registerResolver(key, resolver) {\n    validateKey(key);\n\n    var allResolvers = this._resolvers;\n    var result = allResolvers.get(key);\n\n    if (result === undefined) {\n      allResolvers.set(key, resolver);\n    } else if (result.strategy === 4) {\n      result.state.push(resolver);\n    } else {\n      allResolvers.set(key, new StrategyResolver(4, [result, resolver]));\n    }\n\n    return resolver;\n  };\n\n  Container.prototype.autoRegister = function autoRegister(key, fn) {\n    fn = fn === undefined ? key : fn;\n\n    if (typeof fn === 'function') {\n      var _registration = metadata.get(metadata.registration, fn);\n\n      if (_registration === undefined) {\n        return this.registerResolver(key, new StrategyResolver(1, fn));\n      }\n\n      return _registration.registerResolver(this, key, fn);\n    }\n\n    return this.registerResolver(key, new StrategyResolver(0, fn));\n  };\n\n  Container.prototype.autoRegisterAll = function autoRegisterAll(fns) {\n    var i = fns.length;\n    while (i--) {\n      this.autoRegister(fns[i]);\n    }\n  };\n\n  Container.prototype.unregister = function unregister(key) {\n    this._resolvers.delete(key);\n  };\n\n  Container.prototype.hasResolver = function hasResolver(key) {\n    var checkParent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n    validateKey(key);\n\n    return this._resolvers.has(key) || checkParent && this.parent !== null && this.parent.hasResolver(key, checkParent);\n  };\n\n  Container.prototype.getResolver = function getResolver(key) {\n    return this._resolvers.get(key);\n  };\n\n  Container.prototype.get = function get(key) {\n    validateKey(key);\n\n    if (key === Container) {\n      return this;\n    }\n\n    if (resolverDecorates(key)) {\n      return key.get(this, key);\n    }\n\n    var resolver = this._resolvers.get(key);\n\n    if (resolver === undefined) {\n      if (this.parent === null) {\n        return this.autoRegister(key).get(this, key);\n      }\n\n      var _registration2 = metadata.get(metadata.registration, key);\n\n      if (_registration2 === undefined) {\n        return this.parent._get(key);\n      }\n\n      return _registration2.registerResolver(this, key, key).get(this, key);\n    }\n\n    return resolver.get(this, key);\n  };\n\n  Container.prototype._get = function _get(key) {\n    var resolver = this._resolvers.get(key);\n\n    if (resolver === undefined) {\n      if (this.parent === null) {\n        return this.autoRegister(key).get(this, key);\n      }\n\n      return this.parent._get(key);\n    }\n\n    return resolver.get(this, key);\n  };\n\n  Container.prototype.getAll = function getAll(key) {\n    validateKey(key);\n\n    var resolver = this._resolvers.get(key);\n\n    if (resolver === undefined) {\n      if (this.parent === null) {\n        return _emptyParameters;\n      }\n\n      return this.parent.getAll(key);\n    }\n\n    if (resolver.strategy === 4) {\n      var state = resolver.state;\n      var i = state.length;\n      var results = new Array(i);\n\n      while (i--) {\n        results[i] = state[i].get(this, key);\n      }\n\n      return results;\n    }\n\n    return [resolver.get(this, key)];\n  };\n\n  Container.prototype.createChild = function createChild() {\n    var child = new Container(this._configuration);\n    child.root = this.root;\n    child.parent = this;\n    return child;\n  };\n\n  Container.prototype.invoke = function invoke(fn, dynamicDependencies) {\n    try {\n      var _handler = this._handlers.get(fn);\n\n      if (_handler === undefined) {\n        _handler = this._createInvocationHandler(fn);\n        this._handlers.set(fn, _handler);\n      }\n\n      return _handler.invoke(this, dynamicDependencies);\n    } catch (e) {\n      throw new AggregateError('Error invoking ' + fn.name + '. Check the inner error for details.', e, true);\n    }\n  };\n\n  Container.prototype._createInvocationHandler = function _createInvocationHandler(fn) {\n    var dependencies = void 0;\n\n    if (fn.inject === undefined) {\n      dependencies = metadata.getOwn(metadata.paramTypes, fn) || _emptyParameters;\n    } else {\n      dependencies = [];\n      var ctor = fn;\n      while (typeof ctor === 'function') {\n        var _dependencies;\n\n        (_dependencies = dependencies).push.apply(_dependencies, getDependencies(ctor));\n        ctor = Object.getPrototypeOf(ctor);\n      }\n    }\n\n    var invoker = metadata.getOwn(metadata.invoker, fn) || classInvokers[dependencies.length] || classInvokers.fallback;\n\n    var handler = new InvocationHandler(fn, invoker, dependencies);\n    return this._onHandlerCreated !== undefined ? this._onHandlerCreated(handler) : handler;\n  };\n\n  return Container;\n}();\n\nexport function autoinject(potentialTarget) {\n  var deco = function deco(target) {\n    if (!target.hasOwnProperty('inject')) {\n      target.inject = (metadata.getOwn(metadata.paramTypes, target) || _emptyParameters).slice();\n\n      if (target.inject.length > 0 && target.inject[target.inject.length - 1] === Object) {\n        target.inject.pop();\n      }\n    }\n  };\n\n  return potentialTarget ? deco(potentialTarget) : deco;\n}\n\nexport function inject() {\n  for (var _len5 = arguments.length, rest = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n    rest[_key5] = arguments[_key5];\n  }\n\n  return function (target, key, descriptor) {\n    if (typeof descriptor === 'number') {\n      autoinject(target);\n      if (rest.length === 1) {\n        target.inject[descriptor] = rest[0];\n      }\n      return;\n    }\n\n    if (descriptor) {\n      var _fn = descriptor.value;\n      _fn.inject = rest;\n    } else {\n      target.inject = rest;\n    }\n  };\n}",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var C_enc = C.enc;\n\t    var Utf8 = C_enc.Utf8;\n\t    var C_algo = C.algo;\n\n\t    /**\n\t     * HMAC algorithm.\n\t     */\n\t    var HMAC = C_algo.HMAC = Base.extend({\n\t        /**\n\t         * Initializes a newly created HMAC.\n\t         *\n\t         * @param {Hasher} hasher The hash algorithm to use.\n\t         * @param {WordArray|string} key The secret key.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t         */\n\t        init: function (hasher, key) {\n\t            // Init hasher\n\t            hasher = this._hasher = new hasher.init();\n\n\t            // Convert string to WordArray, else assume WordArray already\n\t            if (typeof key == 'string') {\n\t                key = Utf8.parse(key);\n\t            }\n\n\t            // Shortcuts\n\t            var hasherBlockSize = hasher.blockSize;\n\t            var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t            // Allow arbitrary length keys\n\t            if (key.sigBytes > hasherBlockSizeBytes) {\n\t                key = hasher.finalize(key);\n\t            }\n\n\t            // Clamp excess bits\n\t            key.clamp();\n\n\t            // Clone key for inner and outer pads\n\t            var oKey = this._oKey = key.clone();\n\t            var iKey = this._iKey = key.clone();\n\n\t            // Shortcuts\n\t            var oKeyWords = oKey.words;\n\t            var iKeyWords = iKey.words;\n\n\t            // XOR keys with pad constants\n\t            for (var i = 0; i < hasherBlockSize; i++) {\n\t                oKeyWords[i] ^= 0x5c5c5c5c;\n\t                iKeyWords[i] ^= 0x36363636;\n\t            }\n\t            oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this HMAC to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     hmacHasher.reset();\n\t         */\n\t        reset: function () {\n\t            // Shortcut\n\t            var hasher = this._hasher;\n\n\t            // Reset\n\t            hasher.reset();\n\t            hasher.update(this._iKey);\n\t        },\n\n\t        /**\n\t         * Updates this HMAC with a message.\n\t         *\n\t         * @param {WordArray|string} messageUpdate The message to append.\n\t         *\n\t         * @return {HMAC} This HMAC instance.\n\t         *\n\t         * @example\n\t         *\n\t         *     hmacHasher.update('message');\n\t         *     hmacHasher.update(wordArray);\n\t         */\n\t        update: function (messageUpdate) {\n\t            this._hasher.update(messageUpdate);\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Finalizes the HMAC computation.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t         *\n\t         * @return {WordArray} The HMAC.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hmac = hmacHasher.finalize();\n\t         *     var hmac = hmacHasher.finalize('message');\n\t         *     var hmac = hmacHasher.finalize(wordArray);\n\t         */\n\t        finalize: function (messageUpdate) {\n\t            // Shortcut\n\t            var hasher = this._hasher;\n\n\t            // Compute HMAC\n\t            var innerHash = hasher.finalize(messageUpdate);\n\t            hasher.reset();\n\t            var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t            return hmac;\n\t        }\n\t    });\n\t}());\n\n\n}));","var _dec, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n\nfunction _initDefineProp(target, property, descriptor, context) {\n  if (!descriptor) return;\n  Object.defineProperty(target, property, {\n    enumerable: descriptor.enumerable,\n    configurable: descriptor.configurable,\n    writable: descriptor.writable,\n    value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n  });\n}\n\n\n\nfunction _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n  var desc = {};\n  Object['ke' + 'ys'](descriptor).forEach(function (key) {\n    desc[key] = descriptor[key];\n  });\n  desc.enumerable = !!desc.enumerable;\n  desc.configurable = !!desc.configurable;\n\n  if ('value' in desc || desc.initializer) {\n    desc.writable = true;\n  }\n\n  desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n    return decorator(target, property, desc) || desc;\n  }, desc);\n\n  if (context && desc.initializer !== void 0) {\n    desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n    desc.initializer = undefined;\n  }\n\n  if (desc.initializer === void 0) {\n    Object['define' + 'Property'](target, property, desc);\n    desc = null;\n  }\n\n  return desc;\n}\n\nfunction _initializerWarningHelper(descriptor, context) {\n  throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n}\n\nimport { Container } from 'aurelia-dependency-injection';\nimport { TaskQueue } from 'aurelia-task-queue';\nimport { CompositionEngine, CompositionContext, ViewSlot, ViewResources, customElement, bindable, noView, View } from 'aurelia-templating';\nimport { DOM } from 'aurelia-pal';\n\nexport var Compose = (_dec = customElement('compose'), _dec(_class = noView(_class = (_class2 = function () {\n  Compose.inject = function inject() {\n    return [DOM.Element, Container, CompositionEngine, ViewSlot, ViewResources, TaskQueue];\n  };\n\n  function Compose(element, container, compositionEngine, viewSlot, viewResources, taskQueue) {\n    \n\n    _initDefineProp(this, 'model', _descriptor, this);\n\n    _initDefineProp(this, 'view', _descriptor2, this);\n\n    _initDefineProp(this, 'viewModel', _descriptor3, this);\n\n    _initDefineProp(this, 'swapOrder', _descriptor4, this);\n\n    this.element = element;\n    this.container = container;\n    this.compositionEngine = compositionEngine;\n    this.viewSlot = viewSlot;\n    this.viewResources = viewResources;\n    this.taskQueue = taskQueue;\n    this.currentController = null;\n    this.currentViewModel = null;\n    this.changes = Object.create(null);\n  }\n\n  Compose.prototype.created = function created(owningView) {\n    this.owningView = owningView;\n  };\n\n  Compose.prototype.bind = function bind(bindingContext, overrideContext) {\n    this.bindingContext = bindingContext;\n    this.overrideContext = overrideContext;\n    this.changes.view = this.view;\n    this.changes.viewModel = this.viewModel;\n    this.changes.model = this.model;\n    if (!this.pendingTask) {\n      processChanges(this);\n    }\n  };\n\n  Compose.prototype.unbind = function unbind() {\n    this.changes = Object.create(null);\n    this.bindingContext = null;\n    this.overrideContext = null;\n    var returnToCache = true;\n    var skipAnimation = true;\n    this.viewSlot.removeAll(returnToCache, skipAnimation);\n  };\n\n  Compose.prototype.modelChanged = function modelChanged(newValue, oldValue) {\n    this.changes.model = newValue;\n    requestUpdate(this);\n  };\n\n  Compose.prototype.viewChanged = function viewChanged(newValue, oldValue) {\n    this.changes.view = newValue;\n    requestUpdate(this);\n  };\n\n  Compose.prototype.viewModelChanged = function viewModelChanged(newValue, oldValue) {\n    this.changes.viewModel = newValue;\n    requestUpdate(this);\n  };\n\n  return Compose;\n}(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'model', [bindable], {\n  enumerable: true,\n  initializer: null\n}), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'view', [bindable], {\n  enumerable: true,\n  initializer: null\n}), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'viewModel', [bindable], {\n  enumerable: true,\n  initializer: null\n}), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'swapOrder', [bindable], {\n  enumerable: true,\n  initializer: null\n})), _class2)) || _class) || _class);\n\nfunction isEmpty(obj) {\n  for (var key in obj) {\n    return false;\n  }\n  return true;\n}\n\nfunction tryActivateViewModel(vm, model) {\n  if (vm && typeof vm.activate === 'function') {\n    return Promise.resolve(vm.activate(model));\n  }\n}\n\nfunction createInstruction(composer, instruction) {\n  return Object.assign(instruction, {\n    bindingContext: composer.bindingContext,\n    overrideContext: composer.overrideContext,\n    owningView: composer.owningView,\n    container: composer.container,\n    viewSlot: composer.viewSlot,\n    viewResources: composer.viewResources,\n    currentController: composer.currentController,\n    host: composer.element,\n    swapOrder: composer.swapOrder\n  });\n}\n\nfunction processChanges(composer) {\n  var changes = composer.changes;\n  composer.changes = Object.create(null);\n\n  if (!('view' in changes) && !('viewModel' in changes) && 'model' in changes) {\n    composer.pendingTask = tryActivateViewModel(composer.currentViewModel, changes.model);\n    if (!composer.pendingTask) {\n      return;\n    }\n  } else {\n    var instruction = {\n      view: composer.view,\n      viewModel: composer.currentViewModel || composer.viewModel,\n      model: composer.model\n    };\n\n    instruction = Object.assign(instruction, changes);\n\n    instruction = createInstruction(composer, instruction);\n    composer.pendingTask = composer.compositionEngine.compose(instruction).then(function (controller) {\n      composer.currentController = controller;\n      composer.currentViewModel = controller ? controller.viewModel : null;\n    });\n  }\n\n  composer.pendingTask = composer.pendingTask.then(function () {\n    completeCompositionTask(composer);\n  }, function (reason) {\n    completeCompositionTask(composer);\n    throw reason;\n  });\n}\n\nfunction completeCompositionTask(composer) {\n  composer.pendingTask = null;\n  if (!isEmpty(composer.changes)) {\n    processChanges(composer);\n  }\n}\n\nfunction requestUpdate(composer) {\n  if (composer.pendingTask || composer.updateRequested) {\n    return;\n  }\n  composer.updateRequested = true;\n  composer.taskQueue.queueMicroTask(function () {\n    composer.updateRequested = false;\n    processChanges(composer);\n  });\n}","var _dec, _dec2, _dec3, _class, _desc, _value, _class2, _descriptor, _descriptor2;\n\nfunction _initDefineProp(target, property, descriptor, context) {\n  if (!descriptor) return;\n  Object.defineProperty(target, property, {\n    enumerable: descriptor.enumerable,\n    configurable: descriptor.configurable,\n    writable: descriptor.writable,\n    value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n  });\n}\n\n\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n  var desc = {};\n  Object['ke' + 'ys'](descriptor).forEach(function (key) {\n    desc[key] = descriptor[key];\n  });\n  desc.enumerable = !!desc.enumerable;\n  desc.configurable = !!desc.configurable;\n\n  if ('value' in desc || desc.initializer) {\n    desc.writable = true;\n  }\n\n  desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n    return decorator(target, property, desc) || desc;\n  }, desc);\n\n  if (context && desc.initializer !== void 0) {\n    desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n    desc.initializer = undefined;\n  }\n\n  if (desc.initializer === void 0) {\n    Object['define' + 'Property'](target, property, desc);\n    desc = null;\n  }\n\n  return desc;\n}\n\nfunction _initializerWarningHelper(descriptor, context) {\n  throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n}\n\nimport { BoundViewFactory, ViewSlot, bindable, customAttribute, templateController } from 'aurelia-templating';\nimport { inject } from 'aurelia-dependency-injection';\nimport { IfCore } from './if-core';\n\nexport var If = (_dec = customAttribute('if'), _dec2 = inject(BoundViewFactory, ViewSlot), _dec3 = bindable({ primaryProperty: true }), _dec(_class = templateController(_class = _dec2(_class = (_class2 = function (_IfCore) {\n  _inherits(If, _IfCore);\n\n  function If() {\n    var _temp, _this, _ret;\n\n    \n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _IfCore.call.apply(_IfCore, [this].concat(args))), _this), _initDefineProp(_this, 'condition', _descriptor, _this), _initDefineProp(_this, 'swapOrder', _descriptor2, _this), _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  If.prototype.bind = function bind(bindingContext, overrideContext) {\n    _IfCore.prototype.bind.call(this, bindingContext, overrideContext);\n    if (this.condition) {\n      this._show();\n    } else {\n      this._hide();\n    }\n  };\n\n  If.prototype.conditionChanged = function conditionChanged(newValue) {\n    this._update(newValue);\n  };\n\n  If.prototype._update = function _update(show) {\n    var _this2 = this;\n\n    if (this.animating) {\n      return;\n    }\n\n    var promise = void 0;\n    if (this.elseVm) {\n      promise = show ? this._swap(this.elseVm, this) : this._swap(this, this.elseVm);\n    } else {\n      promise = show ? this._show() : this._hide();\n    }\n\n    if (promise) {\n      this.animating = true;\n      promise.then(function () {\n        _this2.animating = false;\n        if (_this2.condition !== _this2.showing) {\n          _this2._update(_this2.condition);\n        }\n      });\n    }\n  };\n\n  If.prototype._swap = function _swap(remove, add) {\n    switch (this.swapOrder) {\n      case 'before':\n        return Promise.resolve(add._show()).then(function () {\n          return remove._hide();\n        });\n      case 'with':\n        return Promise.all([remove._hide(), add._show()]);\n      default:\n        var promise = remove._hide();\n        return promise ? promise.then(function () {\n          return add._show();\n        }) : add._show();\n    }\n  };\n\n  return If;\n}(IfCore), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'condition', [_dec3], {\n  enumerable: true,\n  initializer: null\n}), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'swapOrder', [bindable], {\n  enumerable: true,\n  initializer: null\n})), _class2)) || _class) || _class) || _class);","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/*! flatpickr v2.6.3, @license MIT */\nfunction Flatpickr(element, config) {\n\tvar self = this;\n\n\tself._ = {};\n\tself._.afterDayAnim = afterDayAnim;\n\tself.changeMonth = changeMonth;\n\tself.changeYear = changeYear;\n\tself.clear = clear;\n\tself.close = close;\n\tself._createElement = createElement;\n\tself.destroy = destroy;\n\tself.isEnabled = isEnabled;\n\tself.jumpToDate = jumpToDate;\n\tself.open = open;\n\tself.redraw = redraw;\n\tself.set = set;\n\tself.setDate = setDate;\n\tself.toggle = toggle;\n\n\tfunction init() {\n\t\tself.element = self.input = element;\n\t\tself.instanceConfig = config || {};\n\t\tself.parseDate = Flatpickr.prototype.parseDate.bind(self);\n\t\tself.formatDate = Flatpickr.prototype.formatDate.bind(self);\n\n\t\tsetupFormats();\n\t\tparseConfig();\n\t\tsetupLocale();\n\t\tsetupInputs();\n\t\tsetupDates();\n\t\tsetupHelperFunctions();\n\n\t\tself.isOpen = false;\n\n\t\tself.isMobile = !self.config.disableMobile && !self.config.inline && self.config.mode === \"single\" && !self.config.disable.length && !self.config.enable.length && !self.config.weekNumbers && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n\n\t\tif (!self.isMobile) build();\n\n\t\tbindEvents();\n\n\t\tif (self.selectedDates.length || self.config.noCalendar) {\n\t\t\tif (self.config.enableTime) {\n\t\t\t\tsetHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj || self.config.minDate : null);\n\t\t\t}\n\t\t\tupdateValue();\n\t\t}\n\n\t\tif (self.config.weekNumbers) {\n\t\t\tself.calendarContainer.style.width = self.daysContainer.offsetWidth + self.weekWrapper.offsetWidth + \"px\";\n\t\t}\n\n\t\tself.showTimeInput = self.selectedDates.length > 0 || self.config.noCalendar;\n\n\t\tif (!self.isMobile) positionCalendar();\n\n\t\ttriggerEvent(\"Ready\");\n\t}\n\n\t/**\n  * Binds a function to the current flatpickr instance\n  * @param {Function} fn the function\n  * @return {Function} the function bound to the instance\n  */\n\tfunction bindToInstance(fn) {\n\t\treturn fn.bind(self);\n\t}\n\n\t/**\n  * The handler for all events targeting the time inputs\n  * @param {Event} e the event - \"input\", \"wheel\", \"increment\", etc\n  */\n\tfunction updateTime(e) {\n\t\tif (self.config.noCalendar && !self.selectedDates.length)\n\t\t\t// picking time only\n\t\t\tself.selectedDates = [self.now];\n\n\t\ttimeWrapper(e);\n\n\t\tif (!self.selectedDates.length) return;\n\n\t\tif (!self.minDateHasTime || e.type !== \"input\" || e.target.value.length >= 2) {\n\t\t\tsetHoursFromInputs();\n\t\t\tupdateValue();\n\t\t} else {\n\t\t\tsetTimeout(function () {\n\t\t\t\tsetHoursFromInputs();\n\t\t\t\tupdateValue();\n\t\t\t}, 1000);\n\t\t}\n\t}\n\n\t/**\n  * Syncs the selected date object time with user's time input\n  */\n\tfunction setHoursFromInputs() {\n\t\tif (!self.config.enableTime) return;\n\n\t\tvar hours = (parseInt(self.hourElement.value, 10) || 0) % (self.amPM ? 12 : 24),\n\t\t    minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60,\n\t\t    seconds = self.config.enableSeconds ? (parseInt(self.secondElement.value, 10) || 0) % 60 : 0;\n\n\t\tif (self.amPM !== undefined) hours = hours % 12 + 12 * (self.amPM.textContent === \"PM\");\n\n\t\tif (self.minDateHasTime && compareDates(self.latestSelectedDateObj, self.config.minDate) === 0) {\n\n\t\t\thours = Math.max(hours, self.config.minDate.getHours());\n\t\t\tif (hours === self.config.minDate.getHours()) minutes = Math.max(minutes, self.config.minDate.getMinutes());\n\t\t}\n\n\t\tif (self.maxDateHasTime && compareDates(self.latestSelectedDateObj, self.config.maxDate) === 0) {\n\t\t\thours = Math.min(hours, self.config.maxDate.getHours());\n\t\t\tif (hours === self.config.maxDate.getHours()) minutes = Math.min(minutes, self.config.maxDate.getMinutes());\n\t\t}\n\n\t\tsetHours(hours, minutes, seconds);\n\t}\n\n\t/**\n  * Syncs time input values with a date\n  * @param {Date} dateObj the date to sync with\n  */\n\tfunction setHoursFromDate(dateObj) {\n\t\tvar date = dateObj || self.latestSelectedDateObj;\n\n\t\tif (date) setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n\t}\n\n\t/**\n  * Sets the hours, minutes, and optionally seconds\n  * of the latest selected date object and the\n  * corresponding time inputs\n  * @param {Number} hours the hour. whether its military\n  *                 or am-pm gets inferred from config\n  * @param {Number} minutes the minutes\n  * @param {Number} seconds the seconds (optional)\n  */\n\tfunction setHours(hours, minutes, seconds) {\n\t\tif (self.selectedDates.length) {\n\t\t\tself.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n\t\t}\n\n\t\tif (!self.config.enableTime || self.isMobile) return;\n\n\t\tself.hourElement.value = self.pad(!self.config.time_24hr ? (12 + hours) % 12 + 12 * (hours % 12 === 0) : hours);\n\n\t\tself.minuteElement.value = self.pad(minutes);\n\n\t\tif (!self.config.time_24hr) self.amPM.textContent = hours >= 12 ? \"PM\" : \"AM\";\n\n\t\tif (self.config.enableSeconds === true) self.secondElement.value = self.pad(seconds);\n\t}\n\n\t/**\n  * Handles the year input and incrementing events\n  * @param {Event} event the keyup or increment event\n  */\n\tfunction onYearInput(event) {\n\t\tvar year = event.target.value;\n\t\tif (event.delta) year = (parseInt(year) + event.delta).toString();\n\n\t\tif (year.length === 4 || event.key === \"Enter\") {\n\t\t\tself.currentYearElement.blur();\n\t\t\tif (!/[^\\d]/.test(year)) changeYear(year);\n\t\t}\n\t}\n\n\t/**\n  * Essentially addEventListener + tracking\n  * @param {Element} element the element to addEventListener to\n  * @param {String} event the event name\n  * @param {Function} handler the event handler\n  */\n\tfunction bind(element, event, handler) {\n\t\tif (event instanceof Array) return event.forEach(function (ev) {\n\t\t\treturn bind(element, ev, handler);\n\t\t});\n\n\t\tif (element instanceof Array) return element.forEach(function (el) {\n\t\t\treturn bind(el, event, handler);\n\t\t});\n\n\t\telement.addEventListener(event, handler);\n\t\tself._handlers.push({ element: element, event: event, handler: handler });\n\t}\n\n\t/**\n  * A mousedown handler which mimics click.\n  * Minimizes latency, since we don't need to wait for mouseup in most cases.\n  * Also, avoids handling right clicks.\n  *\n  * @param {Function} handler the event handler\n  */\n\tfunction onClick(handler) {\n\t\treturn function (evt) {\n\t\t\treturn evt.which === 1 && handler(evt);\n\t\t};\n\t}\n\n\t/**\n  * Adds all the necessary event listeners\n  */\n\tfunction bindEvents() {\n\t\tself._handlers = [];\n\t\tself._animationLoop = [];\n\t\tif (self.config.wrap) {\n\t\t\t[\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n\t\t\t\tArray.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n\t\t\t\t\treturn bind(el, \"mousedown\", onClick(self[evt]));\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tif (self.isMobile) return setupMobile();\n\n\t\tself.debouncedResize = debounce(onResize, 50);\n\t\tself.triggerChange = function () {\n\t\t\ttriggerEvent(\"Change\");\n\t\t};\n\t\tself.debouncedChange = debounce(self.triggerChange, 300);\n\n\t\tif (self.config.mode === \"range\" && self.daysContainer) bind(self.daysContainer, \"mouseover\", function (e) {\n\t\t\treturn onMouseOver(e.target);\n\t\t});\n\n\t\tbind(window.document.body, \"keydown\", onKeyDown);\n\n\t\tif (!self.config.static) bind(self._input, \"keydown\", onKeyDown);\n\n\t\tif (!self.config.inline && !self.config.static) bind(window, \"resize\", self.debouncedResize);\n\n\t\tif (window.ontouchstart !== undefined) bind(window.document, \"touchstart\", documentClick);\n\n\t\tbind(window.document, \"mousedown\", onClick(documentClick));\n\t\tbind(self._input, \"blur\", documentClick);\n\n\t\tif (self.config.clickOpens === true) bind(self._input, \"focus\", self.open);\n\n\t\tif (!self.config.noCalendar) {\n\t\t\tself.monthNav.addEventListener(\"wheel\", function (e) {\n\t\t\t\treturn e.preventDefault();\n\t\t\t});\n\t\t\tbind(self.monthNav, \"wheel\", debounce(onMonthNavScroll, 10));\n\t\t\tbind(self.monthNav, \"mousedown\", onClick(onMonthNavClick));\n\n\t\t\tbind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n\t\t\tbind(self.daysContainer, \"mousedown\", onClick(selectDate));\n\n\t\t\tif (self.config.animate) {\n\t\t\t\tbind(self.daysContainer, [\"webkitAnimationEnd\", \"animationend\"], animateDays);\n\t\t\t\tbind(self.monthNav, [\"webkitAnimationEnd\", \"animationend\"], animateMonths);\n\t\t\t}\n\t\t}\n\n\t\tif (self.config.enableTime) {\n\t\t\tvar selText = function selText(e) {\n\t\t\t\treturn e.target.select();\n\t\t\t};\n\t\t\tbind(self.timeContainer, [\"wheel\", \"input\", \"increment\"], updateTime);\n\t\t\tbind(self.timeContainer, \"mousedown\", onClick(timeIncrement));\n\n\t\t\tbind(self.timeContainer, [\"wheel\", \"increment\"], self.debouncedChange);\n\t\t\tbind(self.timeContainer, \"input\", self.triggerChange);\n\n\t\t\tbind([self.hourElement, self.minuteElement], \"focus\", selText);\n\n\t\t\tif (self.secondElement !== undefined) bind(self.secondElement, \"focus\", function () {\n\t\t\t\treturn self.secondElement.select();\n\t\t\t});\n\n\t\t\tif (self.amPM !== undefined) {\n\t\t\t\tbind(self.amPM, \"mousedown\", onClick(function (e) {\n\t\t\t\t\tupdateTime(e);\n\t\t\t\t\tself.triggerChange(e);\n\t\t\t\t}));\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction processPostDayAnimation() {\n\t\tfor (var i = self._animationLoop.length; i--;) {\n\t\t\tself._animationLoop[i]();\n\t\t\tself._animationLoop.splice(i, 1);\n\t\t}\n\t}\n\n\t/**\n  * Removes the day container that slided out of view\n  * @param {Event} e the animation event\n  */\n\tfunction animateDays(e) {\n\t\tif (self.daysContainer.childNodes.length > 1) {\n\t\t\tswitch (e.animationName) {\n\t\t\t\tcase \"fpSlideLeft\":\n\t\t\t\t\tself.daysContainer.lastChild.classList.remove(\"slideLeftNew\");\n\t\t\t\t\tself.daysContainer.removeChild(self.daysContainer.firstChild);\n\t\t\t\t\tself.days = self.daysContainer.firstChild;\n\t\t\t\t\tprocessPostDayAnimation();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"fpSlideRight\":\n\t\t\t\t\tself.daysContainer.firstChild.classList.remove(\"slideRightNew\");\n\t\t\t\t\tself.daysContainer.removeChild(self.daysContainer.lastChild);\n\t\t\t\t\tself.days = self.daysContainer.firstChild;\n\t\t\t\t\tprocessPostDayAnimation();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n  * Removes the month element that animated out of view\n  * @param {Event} e the animation event\n  */\n\tfunction animateMonths(e) {\n\t\tswitch (e.animationName) {\n\t\t\tcase \"fpSlideLeftNew\":\n\t\t\tcase \"fpSlideRightNew\":\n\t\t\t\tself.navigationCurrentMonth.classList.remove(\"slideLeftNew\");\n\t\t\t\tself.navigationCurrentMonth.classList.remove(\"slideRightNew\");\n\t\t\t\tvar nav = self.navigationCurrentMonth;\n\n\t\t\t\twhile (nav.nextSibling && /curr/.test(nav.nextSibling.className)) {\n\t\t\t\t\tself.monthNav.removeChild(nav.nextSibling);\n\t\t\t\t}while (nav.previousSibling && /curr/.test(nav.previousSibling.className)) {\n\t\t\t\t\tself.monthNav.removeChild(nav.previousSibling);\n\t\t\t\t}self.oldCurMonth = null;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/**\n  * Set the calendar view to a particular date.\n  * @param {Date} jumpDate the date to set the view to\n  */\n\tfunction jumpToDate(jumpDate) {\n\t\tjumpDate = jumpDate ? self.parseDate(jumpDate) : self.latestSelectedDateObj || (self.config.minDate > self.now ? self.config.minDate : self.config.maxDate && self.config.maxDate < self.now ? self.config.maxDate : self.now);\n\n\t\ttry {\n\t\t\tself.currentYear = jumpDate.getFullYear();\n\t\t\tself.currentMonth = jumpDate.getMonth();\n\t\t} catch (e) {\n\t\t\t/* istanbul ignore next */\n\t\t\tconsole.error(e.stack);\n\t\t\t/* istanbul ignore next */\n\t\t\tconsole.warn(\"Invalid date supplied: \" + jumpDate);\n\t\t}\n\n\t\tself.redraw();\n\t}\n\n\t/**\n  * The up/down arrow handler for time inputs\n  * @param {Event} e the click event\n  */\n\tfunction timeIncrement(e) {\n\t\tif (~e.target.className.indexOf(\"arrow\")) incrementNumInput(e, e.target.classList.contains(\"arrowUp\") ? 1 : -1);\n\t}\n\n\t/**\n  * Increments/decrements the value of input associ-\n  * ated with the up/down arrow by dispatching an\n  * \"increment\" event on the input.\n  *\n  * @param {Event} e the click event\n  * @param {Number} delta the diff (usually 1 or -1)\n  * @param {Element} inputElem the input element\n  */\n\tfunction incrementNumInput(e, delta, inputElem) {\n\t\tvar input = inputElem || e.target.parentNode.childNodes[0];\n\t\tvar event = createEvent(\"increment\");\n\t\tevent.delta = delta;\n\t\tinput.dispatchEvent(event);\n\t}\n\n\tfunction createNumberInput(inputClassName) {\n\t\tvar wrapper = createElement(\"div\", \"numInputWrapper\"),\n\t\t    numInput = createElement(\"input\", \"numInput \" + inputClassName),\n\t\t    arrowUp = createElement(\"span\", \"arrowUp\"),\n\t\t    arrowDown = createElement(\"span\", \"arrowDown\");\n\n\t\tnumInput.type = \"text\";\n\t\tnumInput.pattern = \"\\\\d*\";\n\n\t\twrapper.appendChild(numInput);\n\t\twrapper.appendChild(arrowUp);\n\t\twrapper.appendChild(arrowDown);\n\n\t\treturn wrapper;\n\t}\n\n\tfunction build() {\n\t\tvar fragment = window.document.createDocumentFragment();\n\t\tself.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n\t\tself.calendarContainer.tabIndex = -1;\n\n\t\tif (!self.config.noCalendar) {\n\t\t\tfragment.appendChild(buildMonthNav());\n\t\t\tself.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n\n\t\t\tif (self.config.weekNumbers) self.innerContainer.appendChild(buildWeeks());\n\n\t\t\tself.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n\t\t\tself.rContainer.appendChild(buildWeekdays());\n\n\t\t\tif (!self.daysContainer) {\n\t\t\t\tself.daysContainer = createElement(\"div\", \"flatpickr-days\");\n\t\t\t\tself.daysContainer.tabIndex = -1;\n\t\t\t}\n\n\t\t\tbuildDays();\n\t\t\tself.rContainer.appendChild(self.daysContainer);\n\n\t\t\tself.innerContainer.appendChild(self.rContainer);\n\t\t\tfragment.appendChild(self.innerContainer);\n\t\t}\n\n\t\tif (self.config.enableTime) fragment.appendChild(buildTime());\n\n\t\ttoggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n\t\ttoggleClass(self.calendarContainer, \"animate\", self.config.animate);\n\n\t\tself.calendarContainer.appendChild(fragment);\n\n\t\tvar customAppend = self.config.appendTo && self.config.appendTo.nodeType;\n\n\t\tif (self.config.inline || self.config.static) {\n\t\t\tself.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n\n\t\t\tif (self.config.inline && !customAppend) {\n\t\t\t\treturn self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n\t\t\t}\n\n\t\t\tif (self.config.static) {\n\t\t\t\tvar wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n\t\t\t\tself.element.parentNode.insertBefore(wrapper, self.element);\n\t\t\t\twrapper.appendChild(self.element);\n\n\t\t\t\tif (self.altInput) wrapper.appendChild(self.altInput);\n\n\t\t\t\twrapper.appendChild(self.calendarContainer);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t(customAppend ? self.config.appendTo : window.document.body).appendChild(self.calendarContainer);\n\t}\n\n\tfunction createDay(className, date, dayNumber, i) {\n\t\tvar dateIsEnabled = isEnabled(date, true),\n\t\t    dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate());\n\n\t\tdayElement.dateObj = date;\n\t\tdayElement.$i = i;\n\t\tdayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n\n\t\tif (compareDates(date, self.now) === 0) {\n\t\t\tself.todayDateElem = dayElement;\n\t\t\tdayElement.classList.add(\"today\");\n\t\t}\n\n\t\tif (dateIsEnabled) {\n\t\t\tdayElement.tabIndex = -1;\n\t\t\tif (isDateSelected(date)) {\n\t\t\t\tdayElement.classList.add(\"selected\");\n\t\t\t\tself.selectedDateElem = dayElement;\n\t\t\t\tif (self.config.mode === \"range\") {\n\t\t\t\t\ttoggleClass(dayElement, \"startRange\", compareDates(date, self.selectedDates[0]) === 0);\n\n\t\t\t\t\ttoggleClass(dayElement, \"endRange\", compareDates(date, self.selectedDates[1]) === 0);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tdayElement.classList.add(\"disabled\");\n\t\t\tif (self.selectedDates[0] && date > self.minRangeDate && date < self.selectedDates[0]) self.minRangeDate = date;else if (self.selectedDates[0] && date < self.maxRangeDate && date > self.selectedDates[0]) self.maxRangeDate = date;\n\t\t}\n\n\t\tif (self.config.mode === \"range\") {\n\t\t\tif (isDateInRange(date) && !isDateSelected(date)) dayElement.classList.add(\"inRange\");\n\n\t\t\tif (self.selectedDates.length === 1 && (date < self.minRangeDate || date > self.maxRangeDate)) dayElement.classList.add(\"notAllowed\");\n\t\t}\n\n\t\tif (self.config.weekNumbers && className !== \"prevMonthDay\" && dayNumber % 7 === 1) {\n\t\t\tself.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='disabled flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n\t\t}\n\n\t\ttriggerEvent(\"DayCreate\", dayElement);\n\n\t\treturn dayElement;\n\t}\n\n\tfunction focusOnDay(currentIndex, offset) {\n\t\tvar newIndex = currentIndex + offset || 0,\n\t\t    targetNode = currentIndex !== undefined ? self.days.childNodes[newIndex] : self.selectedDateElem || self.todayDateElem || self.days.childNodes[0],\n\t\t    focus = function focus() {\n\t\t\ttargetNode = targetNode || self.days.childNodes[newIndex];\n\t\t\ttargetNode.focus();\n\n\t\t\tif (self.config.mode === \"range\") onMouseOver(targetNode);\n\t\t};\n\n\t\tif (targetNode === undefined && offset !== 0) {\n\t\t\tif (offset > 0) {\n\t\t\t\tself.changeMonth(1);\n\t\t\t\tnewIndex = newIndex % 42;\n\t\t\t} else if (offset < 0) {\n\t\t\t\tself.changeMonth(-1);\n\t\t\t\tnewIndex += 42;\n\t\t\t}\n\n\t\t\treturn afterDayAnim(focus);\n\t\t}\n\n\t\tfocus();\n\t}\n\n\tfunction afterDayAnim(fn) {\n\t\tif (self.config.animate === true) return self._animationLoop.push(fn);\n\t\tfn();\n\t}\n\n\tfunction buildDays(delta) {\n\t\tvar firstOfMonth = (new Date(self.currentYear, self.currentMonth, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7,\n\t\t    isRangeMode = self.config.mode === \"range\";\n\n\t\tself.prevMonthDays = self.utils.getDaysinMonth((self.currentMonth - 1 + 12) % 12);\n\t\tself.selectedDateElem = undefined;\n\t\tself.todayDateElem = undefined;\n\n\t\tvar daysInMonth = self.utils.getDaysinMonth(),\n\t\t    days = window.document.createDocumentFragment();\n\n\t\tvar dayNumber = self.prevMonthDays + 1 - firstOfMonth,\n\t\t    dayIndex = 0;\n\n\t\tif (self.config.weekNumbers && self.weekNumbers.firstChild) self.weekNumbers.textContent = \"\";\n\n\t\tif (isRangeMode) {\n\t\t\t// const dateLimits = self.config.enable.length || self.config.disable.length || self.config.mixDate || self.config.maxDate;\n\t\t\tself.minRangeDate = new Date(self.currentYear, self.currentMonth - 1, dayNumber);\n\t\t\tself.maxRangeDate = new Date(self.currentYear, self.currentMonth + 1, (42 - firstOfMonth) % daysInMonth);\n\t\t}\n\n\t\t// prepend days from the ending of previous month\n\t\tfor (; dayNumber <= self.prevMonthDays; dayNumber++, dayIndex++) {\n\t\t\tdays.appendChild(createDay(\"prevMonthDay\", new Date(self.currentYear, self.currentMonth - 1, dayNumber), dayNumber, dayIndex));\n\t\t}\n\n\t\t// Start at 1 since there is no 0th day\n\t\tfor (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n\t\t\tdays.appendChild(createDay(\"\", new Date(self.currentYear, self.currentMonth, dayNumber), dayNumber, dayIndex));\n\t\t}\n\n\t\t// append days from the next month\n\t\tfor (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth; dayNum++, dayIndex++) {\n\t\t\tdays.appendChild(createDay(\"nextMonthDay\", new Date(self.currentYear, self.currentMonth + 1, dayNum % daysInMonth), dayNum, dayIndex));\n\t\t}\n\n\t\tif (isRangeMode && self.selectedDates.length === 1 && days.childNodes[0]) {\n\t\t\tself._hidePrevMonthArrow = self._hidePrevMonthArrow || self.minRangeDate > days.childNodes[0].dateObj;\n\n\t\t\tself._hideNextMonthArrow = self._hideNextMonthArrow || self.maxRangeDate < new Date(self.currentYear, self.currentMonth + 1, 1);\n\t\t} else updateNavigationCurrentMonth();\n\n\t\tvar dayContainer = createElement(\"div\", \"dayContainer\");\n\t\tdayContainer.appendChild(days);\n\n\t\tif (!self.config.animate || delta === undefined) clearNode(self.daysContainer);else {\n\t\t\twhile (self.daysContainer.childNodes.length > 1) {\n\t\t\t\tself.daysContainer.removeChild(self.daysContainer.firstChild);\n\t\t\t}\n\t\t}\n\n\t\tif (delta >= 0) self.daysContainer.appendChild(dayContainer);else self.daysContainer.insertBefore(dayContainer, self.daysContainer.firstChild);\n\n\t\tself.days = self.daysContainer.firstChild;\n\t\treturn self.daysContainer;\n\t}\n\n\tfunction clearNode(node) {\n\t\twhile (node.firstChild) {\n\t\t\tnode.removeChild(node.firstChild);\n\t\t}\n\t}\n\n\tfunction buildMonthNav() {\n\t\tvar monthNavFragment = window.document.createDocumentFragment();\n\t\tself.monthNav = createElement(\"div\", \"flatpickr-month\");\n\n\t\tself.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n\t\tself.prevMonthNav.innerHTML = self.config.prevArrow;\n\n\t\tself.currentMonthElement = createElement(\"span\", \"cur-month\");\n\t\tself.currentMonthElement.title = self.l10n.scrollTitle;\n\n\t\tvar yearInput = createNumberInput(\"cur-year\");\n\t\tself.currentYearElement = yearInput.childNodes[0];\n\t\tself.currentYearElement.title = self.l10n.scrollTitle;\n\n\t\tif (self.config.minDate) self.currentYearElement.min = self.config.minDate.getFullYear();\n\n\t\tif (self.config.maxDate) {\n\t\t\tself.currentYearElement.max = self.config.maxDate.getFullYear();\n\n\t\t\tself.currentYearElement.disabled = self.config.minDate && self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n\t\t}\n\n\t\tself.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n\t\tself.nextMonthNav.innerHTML = self.config.nextArrow;\n\n\t\tself.navigationCurrentMonth = createElement(\"span\", \"flatpickr-current-month\");\n\t\tself.navigationCurrentMonth.appendChild(self.currentMonthElement);\n\t\tself.navigationCurrentMonth.appendChild(yearInput);\n\n\t\tmonthNavFragment.appendChild(self.prevMonthNav);\n\t\tmonthNavFragment.appendChild(self.navigationCurrentMonth);\n\t\tmonthNavFragment.appendChild(self.nextMonthNav);\n\t\tself.monthNav.appendChild(monthNavFragment);\n\n\t\tObject.defineProperty(self, \"_hidePrevMonthArrow\", {\n\t\t\tget: function get() {\n\t\t\t\treturn this.__hidePrevMonthArrow;\n\t\t\t},\n\t\t\tset: function set(bool) {\n\t\t\t\tif (this.__hidePrevMonthArrow !== bool) self.prevMonthNav.style.display = bool ? \"none\" : \"block\";\n\t\t\t\tthis.__hidePrevMonthArrow = bool;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(self, \"_hideNextMonthArrow\", {\n\t\t\tget: function get() {\n\t\t\t\treturn this.__hideNextMonthArrow;\n\t\t\t},\n\t\t\tset: function set(bool) {\n\t\t\t\tif (this.__hideNextMonthArrow !== bool) self.nextMonthNav.style.display = bool ? \"none\" : \"block\";\n\t\t\t\tthis.__hideNextMonthArrow = bool;\n\t\t\t}\n\t\t});\n\n\t\tupdateNavigationCurrentMonth();\n\n\t\treturn self.monthNav;\n\t}\n\n\tfunction buildTime() {\n\t\tself.calendarContainer.classList.add(\"hasTime\");\n\t\tif (self.config.noCalendar) self.calendarContainer.classList.add(\"noCalendar\");\n\t\tself.timeContainer = createElement(\"div\", \"flatpickr-time\");\n\t\tself.timeContainer.tabIndex = -1;\n\t\tvar separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n\n\t\tvar hourInput = createNumberInput(\"flatpickr-hour\");\n\t\tself.hourElement = hourInput.childNodes[0];\n\n\t\tvar minuteInput = createNumberInput(\"flatpickr-minute\");\n\t\tself.minuteElement = minuteInput.childNodes[0];\n\n\t\tself.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n\n\t\tself.hourElement.value = self.pad(self.latestSelectedDateObj ? self.latestSelectedDateObj.getHours() : self.config.defaultHour);\n\n\t\tself.minuteElement.value = self.pad(self.latestSelectedDateObj ? self.latestSelectedDateObj.getMinutes() : self.config.defaultMinute);\n\n\t\tself.hourElement.step = self.config.hourIncrement;\n\t\tself.minuteElement.step = self.config.minuteIncrement;\n\n\t\tself.hourElement.min = self.config.time_24hr ? 0 : 1;\n\t\tself.hourElement.max = self.config.time_24hr ? 23 : 12;\n\n\t\tself.minuteElement.min = 0;\n\t\tself.minuteElement.max = 59;\n\n\t\tself.hourElement.title = self.minuteElement.title = self.l10n.scrollTitle;\n\n\t\tself.timeContainer.appendChild(hourInput);\n\t\tself.timeContainer.appendChild(separator);\n\t\tself.timeContainer.appendChild(minuteInput);\n\n\t\tif (self.config.time_24hr) self.timeContainer.classList.add(\"time24hr\");\n\n\t\tif (self.config.enableSeconds) {\n\t\t\tself.timeContainer.classList.add(\"hasSeconds\");\n\n\t\t\tvar secondInput = createNumberInput(\"flatpickr-second\");\n\t\t\tself.secondElement = secondInput.childNodes[0];\n\n\t\t\tself.secondElement.value = self.latestSelectedDateObj ? self.pad(self.latestSelectedDateObj.getSeconds()) : \"00\";\n\n\t\t\tself.secondElement.step = self.minuteElement.step;\n\t\t\tself.secondElement.min = self.minuteElement.min;\n\t\t\tself.secondElement.max = self.minuteElement.max;\n\n\t\t\tself.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n\t\t\tself.timeContainer.appendChild(secondInput);\n\t\t}\n\n\t\tif (!self.config.time_24hr) {\n\t\t\t// add self.amPM if appropriate\n\t\t\tself.amPM = createElement(\"span\", \"flatpickr-am-pm\", [\"AM\", \"PM\"][self.hourElement.value > 11 | 0]);\n\t\t\tself.amPM.title = self.l10n.toggleTitle;\n\t\t\tself.amPM.tabIndex = -1;\n\t\t\tself.timeContainer.appendChild(self.amPM);\n\t\t}\n\n\t\treturn self.timeContainer;\n\t}\n\n\tfunction buildWeekdays() {\n\t\tif (!self.weekdayContainer) self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n\n\t\tvar firstDayOfWeek = self.l10n.firstDayOfWeek;\n\t\tvar weekdays = self.l10n.weekdays.shorthand.slice();\n\n\t\tif (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n\t\t\tweekdays = [].concat(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n\t\t}\n\n\t\tself.weekdayContainer.innerHTML = \"\\n\\t\\t<span class=flatpickr-weekday>\\n\\t\\t\\t\" + weekdays.join(\"</span><span class=flatpickr-weekday>\") + \"\\n\\t\\t</span>\\n\\t\\t\";\n\n\t\treturn self.weekdayContainer;\n\t}\n\n\t/* istanbul ignore next */\n\tfunction buildWeeks() {\n\t\tself.calendarContainer.classList.add(\"hasWeeks\");\n\t\tself.weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n\t\tself.weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n\t\tself.weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n\t\tself.weekWrapper.appendChild(self.weekNumbers);\n\n\t\treturn self.weekWrapper;\n\t}\n\n\tfunction changeMonth(value, is_offset, animate) {\n\t\tis_offset = is_offset === undefined || is_offset;\n\t\tvar delta = is_offset ? value : value - self.currentMonth;\n\t\tvar skipAnimations = !self.config.animate || animate === false;\n\n\t\tif (delta < 0 && self._hidePrevMonthArrow || delta > 0 && self._hideNextMonthArrow) return;\n\n\t\tself.currentMonth += delta;\n\n\t\tif (self.currentMonth < 0 || self.currentMonth > 11) {\n\t\t\tself.currentYear += self.currentMonth > 11 ? 1 : -1;\n\t\t\tself.currentMonth = (self.currentMonth + 12) % 12;\n\n\t\t\ttriggerEvent(\"YearChange\");\n\t\t}\n\n\t\tbuildDays(!skipAnimations ? delta : undefined);\n\n\t\tif (skipAnimations) {\n\t\t\ttriggerEvent(\"MonthChange\");\n\t\t\treturn updateNavigationCurrentMonth();\n\t\t}\n\n\t\t// remove possible remnants from clicking too fast\n\t\tvar nav = self.navigationCurrentMonth;\n\t\tif (delta < 0) {\n\t\t\twhile (nav.nextSibling && /curr/.test(nav.nextSibling.className)) {\n\t\t\t\tself.monthNav.removeChild(nav.nextSibling);\n\t\t\t}\n\t\t} else if (delta > 0) {\n\t\t\twhile (nav.previousSibling && /curr/.test(nav.previousSibling.className)) {\n\t\t\t\tself.monthNav.removeChild(nav.previousSibling);\n\t\t\t}\n\t\t}\n\n\t\tself.oldCurMonth = self.navigationCurrentMonth;\n\n\t\tself.navigationCurrentMonth = self.monthNav.insertBefore(self.oldCurMonth.cloneNode(true), delta > 0 ? self.oldCurMonth.nextSibling : self.oldCurMonth);\n\n\t\tif (delta > 0) {\n\t\t\tself.daysContainer.firstChild.classList.add(\"slideLeft\");\n\t\t\tself.daysContainer.lastChild.classList.add(\"slideLeftNew\");\n\n\t\t\tself.oldCurMonth.classList.add(\"slideLeft\");\n\t\t\tself.navigationCurrentMonth.classList.add(\"slideLeftNew\");\n\t\t} else if (delta < 0) {\n\t\t\tself.daysContainer.firstChild.classList.add(\"slideRightNew\");\n\t\t\tself.daysContainer.lastChild.classList.add(\"slideRight\");\n\n\t\t\tself.oldCurMonth.classList.add(\"slideRight\");\n\t\t\tself.navigationCurrentMonth.classList.add(\"slideRightNew\");\n\t\t}\n\n\t\tself.currentMonthElement = self.navigationCurrentMonth.firstChild;\n\t\tself.currentYearElement = self.navigationCurrentMonth.lastChild.childNodes[0];\n\n\t\tupdateNavigationCurrentMonth();\n\t\tself.oldCurMonth.firstChild.textContent = self.utils.monthToStr(self.currentMonth - delta);\n\n\t\ttriggerEvent(\"MonthChange\");\n\n\t\tif (document.activeElement && document.activeElement.$i) {\n\t\t\tvar index = document.activeElement.$i;\n\t\t\tafterDayAnim(function () {\n\t\t\t\tfocusOnDay(index, 0);\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction clear(triggerChangeEvent) {\n\t\tself.input.value = \"\";\n\n\t\tif (self.altInput) self.altInput.value = \"\";\n\n\t\tif (self.mobileInput) self.mobileInput.value = \"\";\n\n\t\tself.selectedDates = [];\n\t\tself.latestSelectedDateObj = undefined;\n\t\tself.showTimeInput = false;\n\n\t\tself.redraw();\n\n\t\tif (triggerChangeEvent !== false)\n\t\t\t// triggerChangeEvent is true (default) or an Event\n\t\t\ttriggerEvent(\"Change\");\n\t}\n\n\tfunction close() {\n\t\tself.isOpen = false;\n\n\t\tif (!self.isMobile) {\n\t\t\tself.calendarContainer.classList.remove(\"open\");\n\t\t\tself._input.classList.remove(\"active\");\n\t\t}\n\n\t\ttriggerEvent(\"Close\");\n\t}\n\n\tfunction destroy() {\n\t\tfor (var i = self._handlers.length; i--;) {\n\t\t\tvar h = self._handlers[i];\n\t\t\th.element.removeEventListener(h.event, h.handler);\n\t\t}\n\n\t\tself._handlers = [];\n\n\t\tif (self.mobileInput) {\n\t\t\tif (self.mobileInput.parentNode) self.mobileInput.parentNode.removeChild(self.mobileInput);\n\t\t\tself.mobileInput = null;\n\t\t} else if (self.calendarContainer && self.calendarContainer.parentNode) self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n\n\t\tif (self.altInput) {\n\t\t\tself.input.type = \"text\";\n\t\t\tif (self.altInput.parentNode) self.altInput.parentNode.removeChild(self.altInput);\n\t\t\tdelete self.altInput;\n\t\t}\n\n\t\tif (self.input) {\n\t\t\tself.input.type = self.input._type;\n\t\t\tself.input.classList.remove(\"flatpickr-input\");\n\t\t\tself.input.removeAttribute(\"readonly\");\n\t\t\tself.input.value = \"\";\n\t\t}\n\n\t\t[\"_showTimeInput\", \"latestSelectedDateObj\", \"_hideNextMonthArrow\", \"_hidePrevMonthArrow\", \"__hideNextMonthArrow\", \"__hidePrevMonthArrow\", \"isMobile\", \"isOpen\", \"selectedDateElem\", \"minDateHasTime\", \"maxDateHasTime\", \"days\", \"daysContainer\", \"_input\", \"_positionElement\", \"innerContainer\", \"rContainer\", \"monthNav\", \"todayDateElem\", \"calendarContainer\", \"weekdayContainer\", \"prevMonthNav\", \"nextMonthNav\", \"currentMonthElement\", \"currentYearElement\", \"navigationCurrentMonth\", \"selectedDateElem\", \"config\"].forEach(function (k) {\n\t\t\treturn delete self[k];\n\t\t});\n\t}\n\n\tfunction isCalendarElem(elem) {\n\t\tif (self.config.appendTo && self.config.appendTo.contains(elem)) return true;\n\n\t\treturn self.calendarContainer.contains(elem);\n\t}\n\n\tfunction documentClick(e) {\n\t\tif (self.isOpen && !self.config.inline) {\n\t\t\tvar isCalendarElement = isCalendarElem(e.target);\n\t\t\tvar isInput = e.target === self.input || e.target === self.altInput || self.element.contains(e.target) ||\n\t\t\t// web components\n\t\t\te.path && e.path.indexOf && (~e.path.indexOf(self.input) || ~e.path.indexOf(self.altInput));\n\n\t\t\tvar lostFocus = e.type === \"blur\" ? isInput && e.relatedTarget && !isCalendarElem(e.relatedTarget) : !isInput && !isCalendarElement;\n\n\t\t\tif (lostFocus) {\n\t\t\t\te.preventDefault();\n\t\t\t\tself.close();\n\n\t\t\t\tif (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n\t\t\t\t\tself.clear(false);\n\t\t\t\t\tself.redraw();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction changeYear(newYear) {\n\t\tif (!newYear || self.currentYearElement.min && newYear < self.currentYearElement.min || self.currentYearElement.max && newYear > self.currentYearElement.max) return;\n\n\t\tvar newYearNum = parseInt(newYear, 10),\n\t\t    isNewYear = self.currentYear !== newYearNum;\n\n\t\tself.currentYear = newYearNum || self.currentYear;\n\n\t\tif (self.config.maxDate && self.currentYear === self.config.maxDate.getFullYear()) {\n\t\t\tself.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n\t\t} else if (self.config.minDate && self.currentYear === self.config.minDate.getFullYear()) {\n\t\t\tself.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n\t\t}\n\n\t\tif (isNewYear) {\n\t\t\tself.redraw();\n\t\t\ttriggerEvent(\"YearChange\");\n\t\t}\n\t}\n\n\tfunction isEnabled(date, timeless) {\n\t\tif (self.config.minDate && compareDates(date, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0 || self.config.maxDate && compareDates(date, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0) return false;\n\n\t\tif (!self.config.enable.length && !self.config.disable.length) return true;\n\n\t\tvar dateToCheck = self.parseDate(date, null, true); // timeless\n\n\t\tvar bool = self.config.enable.length > 0,\n\t\t    array = bool ? self.config.enable : self.config.disable;\n\n\t\tfor (var i = 0, d; i < array.length; i++) {\n\t\t\td = array[i];\n\n\t\t\tif (d instanceof Function && d(dateToCheck)) // disabled by function\n\t\t\t\treturn bool;else if (d instanceof Date && d.getTime() === dateToCheck.getTime())\n\t\t\t\t// disabled by date\n\t\t\t\treturn bool;else if (typeof d === \"string\" && self.parseDate(d, null, true).getTime() === dateToCheck.getTime())\n\t\t\t\t// disabled by date string\n\t\t\t\treturn bool;else if ( // disabled by range\n\t\t\t(typeof d === \"undefined\" ? \"undefined\" : _typeof(d)) === \"object\" && d.from && d.to && dateToCheck >= d.from && dateToCheck <= d.to) return bool;\n\t\t}\n\n\t\treturn !bool;\n\t}\n\n\tfunction onKeyDown(e) {\n\t\tvar isInput = e.target === self._input;\n\t\tvar calendarElem = isCalendarElem(e.target);\n\t\tvar allowInput = self.config.allowInput;\n\t\tvar allowKeydown = self.isOpen && (!allowInput || !isInput);\n\t\tvar allowInlineKeydown = self.config.inline && isInput && !allowInput;\n\n\t\tif (e.key === \"Enter\" && allowInput && isInput) {\n\t\t\tself.setDate(self._input.value, true, e.target === self.altInput ? self.config.altFormat : self.config.dateFormat);\n\t\t\treturn e.target.blur();\n\t\t} else if (calendarElem || allowKeydown || allowInlineKeydown) {\n\t\t\tvar isTimeObj = self.timeContainer && self.timeContainer.contains(e.target);\n\t\t\tswitch (e.key) {\n\t\t\t\tcase \"Enter\":\n\t\t\t\t\tif (isTimeObj) updateValue();else selectDate(e);\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"Escape\":\n\t\t\t\t\t// escape\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tself.close();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"ArrowLeft\":\n\t\t\t\tcase \"ArrowRight\":\n\t\t\t\t\tif (!isTimeObj) {\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tif (self.daysContainer) {\n\t\t\t\t\t\t\tvar _delta = e.key === \"ArrowRight\" ? 1 : -1;\n\n\t\t\t\t\t\t\tif (!e.ctrlKey) focusOnDay(e.target.$i, _delta);else changeMonth(_delta, true);\n\t\t\t\t\t\t} else if (self.config.enableTime && !isTimeObj) self.hourElement.focus();\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"ArrowUp\":\n\t\t\t\tcase \"ArrowDown\":\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tvar delta = e.key === \"ArrowDown\" ? 1 : -1;\n\n\t\t\t\t\tif (self.daysContainer) {\n\t\t\t\t\t\tif (e.ctrlKey) {\n\t\t\t\t\t\t\tchangeYear(self.currentYear - delta);\n\t\t\t\t\t\t\tfocusOnDay(e.target.$i, 0);\n\t\t\t\t\t\t} else if (!isTimeObj) focusOnDay(e.target.$i, delta * 7);\n\t\t\t\t\t} else if (self.config.enableTime) {\n\t\t\t\t\t\tif (!isTimeObj) self.hourElement.focus();\n\t\t\t\t\t\tupdateTime(e);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"Tab\":\n\t\t\t\t\tif (e.target === self.hourElement) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tself.minuteElement.select();\n\t\t\t\t\t} else if (e.target === self.minuteElement && (self.secondElement || self.amPM)) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t(self.secondElement || self.amPM).focus();\n\t\t\t\t\t} else if (e.target === self.secondElement) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tself.amPM.focus();\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"a\":\n\t\t\t\t\tif (e.target === self.amPM) {\n\t\t\t\t\t\tself.amPM.textContent = \"AM\";\n\t\t\t\t\t\tsetHoursFromInputs();\n\t\t\t\t\t\tupdateValue();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"p\":\n\t\t\t\t\tif (e.target === self.amPM) {\n\t\t\t\t\t\tself.amPM.textContent = \"PM\";\n\t\t\t\t\t\tsetHoursFromInputs();\n\t\t\t\t\t\tupdateValue();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\ttriggerEvent(\"KeyDown\", e);\n\t\t}\n\t}\n\n\tfunction onMouseOver(elem) {\n\t\tif (self.selectedDates.length !== 1 || !elem.classList.contains(\"flatpickr-day\")) return;\n\n\t\tvar hoverDate = elem.dateObj,\n\t\t    initialDate = self.parseDate(self.selectedDates[0], null, true),\n\t\t    rangeStartDate = Math.min(hoverDate.getTime(), self.selectedDates[0].getTime()),\n\t\t    rangeEndDate = Math.max(hoverDate.getTime(), self.selectedDates[0].getTime()),\n\t\t    containsDisabled = false;\n\n\t\tfor (var t = rangeStartDate; t < rangeEndDate; t += self.utils.duration.DAY) {\n\t\t\tif (!isEnabled(new Date(t))) {\n\t\t\t\tcontainsDisabled = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tvar _loop = function _loop(timestamp, i) {\n\t\t\tvar outOfRange = timestamp < self.minRangeDate.getTime() || timestamp > self.maxRangeDate.getTime(),\n\t\t\t    dayElem = self.days.childNodes[i];\n\n\t\t\tif (outOfRange) {\n\t\t\t\tself.days.childNodes[i].classList.add(\"notAllowed\");\n\t\t\t\t[\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n\t\t\t\t\tdayElem.classList.remove(c);\n\t\t\t\t});\n\t\t\t\treturn \"continue\";\n\t\t\t} else if (containsDisabled && !outOfRange) return \"continue\";\n\n\t\t\t[\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n\t\t\t\tdayElem.classList.remove(c);\n\t\t\t});\n\n\t\t\tvar minRangeDate = Math.max(self.minRangeDate.getTime(), rangeStartDate),\n\t\t\t    maxRangeDate = Math.min(self.maxRangeDate.getTime(), rangeEndDate);\n\n\t\t\telem.classList.add(hoverDate < self.selectedDates[0] ? \"startRange\" : \"endRange\");\n\n\t\t\tif (initialDate < hoverDate && timestamp === initialDate.getTime()) dayElem.classList.add(\"startRange\");else if (initialDate > hoverDate && timestamp === initialDate.getTime()) dayElem.classList.add(\"endRange\");\n\n\t\t\tif (timestamp >= minRangeDate && timestamp <= maxRangeDate) dayElem.classList.add(\"inRange\");\n\t\t};\n\n\t\tfor (var timestamp = self.days.childNodes[0].dateObj.getTime(), i = 0; i < 42; i++, timestamp += self.utils.duration.DAY) {\n\t\t\tvar _ret = _loop(timestamp, i);\n\n\t\t\tif (_ret === \"continue\") continue;\n\t\t}\n\t}\n\n\tfunction onResize() {\n\t\tif (self.isOpen && !self.config.static && !self.config.inline) positionCalendar();\n\t}\n\n\tfunction open(e) {\n\t\tif (self.isMobile) {\n\t\t\tif (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.target.blur();\n\t\t\t}\n\n\t\t\tsetTimeout(function () {\n\t\t\t\tself.mobileInput.click();\n\t\t\t}, 0);\n\n\t\t\ttriggerEvent(\"Open\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (self.isOpen || self._input.disabled || self.config.inline) return;\n\n\t\tself.isOpen = true;\n\t\tself.calendarContainer.classList.add(\"open\");\n\t\tpositionCalendar();\n\t\tself._input.classList.add(\"active\");\n\n\t\ttriggerEvent(\"Open\");\n\t}\n\n\tfunction minMaxDateSetter(type) {\n\t\treturn function (date) {\n\t\t\tvar dateObj = self.config[\"_\" + type + \"Date\"] = self.parseDate(date);\n\n\t\t\tvar inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n\t\t\tvar isValidDate = date && dateObj instanceof Date;\n\n\t\t\tif (isValidDate) {\n\t\t\t\tself[type + \"DateHasTime\"] = dateObj.getHours() || dateObj.getMinutes() || dateObj.getSeconds();\n\t\t\t}\n\n\t\t\tif (self.selectedDates) {\n\t\t\t\tself.selectedDates = self.selectedDates.filter(function (d) {\n\t\t\t\t\treturn isEnabled(d);\n\t\t\t\t});\n\t\t\t\tif (!self.selectedDates.length && type === \"min\") setHoursFromDate(dateObj);\n\t\t\t\tupdateValue();\n\t\t\t}\n\n\t\t\tif (self.daysContainer) {\n\t\t\t\tredraw();\n\n\t\t\t\tif (isValidDate) self.currentYearElement[type] = dateObj.getFullYear();else self.currentYearElement.removeAttribute(type);\n\n\t\t\t\tself.currentYearElement.disabled = inverseDateObj && dateObj && inverseDateObj.getFullYear() === dateObj.getFullYear();\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction parseConfig() {\n\t\tvar boolOpts = [\"utc\", \"wrap\", \"weekNumbers\", \"allowInput\", \"clickOpens\", \"time_24hr\", \"enableTime\", \"noCalendar\", \"altInput\", \"shorthandCurrentMonth\", \"inline\", \"static\", \"enableSeconds\", \"disableMobile\"];\n\n\t\tvar hooks = [\"onChange\", \"onClose\", \"onDayCreate\", \"onKeyDown\", \"onMonthChange\", \"onOpen\", \"onParseConfig\", \"onReady\", \"onValueUpdate\", \"onYearChange\"];\n\n\t\tself.config = Object.create(Flatpickr.defaultConfig);\n\n\t\tvar userConfig = _extends({}, self.instanceConfig, JSON.parse(JSON.stringify(self.element.dataset || {})));\n\n\t\tself.config.parseDate = userConfig.parseDate;\n\t\tself.config.formatDate = userConfig.formatDate;\n\n\t\t_extends(self.config, userConfig);\n\n\t\tif (!userConfig.dateFormat && userConfig.enableTime) {\n\t\t\tself.config.dateFormat = self.config.noCalendar ? \"H:i\" + (self.config.enableSeconds ? \":S\" : \"\") : Flatpickr.defaultConfig.dateFormat + \" H:i\" + (self.config.enableSeconds ? \":S\" : \"\");\n\t\t}\n\n\t\tif (userConfig.altInput && userConfig.enableTime && !userConfig.altFormat) {\n\t\t\tself.config.altFormat = self.config.noCalendar ? \"h:i\" + (self.config.enableSeconds ? \":S K\" : \" K\") : Flatpickr.defaultConfig.altFormat + (\" h:i\" + (self.config.enableSeconds ? \":S\" : \"\") + \" K\");\n\t\t}\n\n\t\tObject.defineProperty(self.config, \"minDate\", {\n\t\t\tget: function get() {\n\t\t\t\treturn this._minDate;\n\t\t\t},\n\t\t\tset: minMaxDateSetter(\"min\")\n\t\t});\n\n\t\tObject.defineProperty(self.config, \"maxDate\", {\n\t\t\tget: function get() {\n\t\t\t\treturn this._maxDate;\n\t\t\t},\n\t\t\tset: minMaxDateSetter(\"max\")\n\t\t});\n\n\t\tself.config.minDate = userConfig.minDate;\n\t\tself.config.maxDate = userConfig.maxDate;\n\n\t\tfor (var i = 0; i < boolOpts.length; i++) {\n\t\t\tself.config[boolOpts[i]] = self.config[boolOpts[i]] === true || self.config[boolOpts[i]] === \"true\";\n\t\t}for (var _i = hooks.length; _i--;) {\n\t\t\tif (self.config[hooks[_i]] !== undefined) {\n\t\t\t\tself.config[hooks[_i]] = arrayify(self.config[hooks[_i]] || []).map(bindToInstance);\n\t\t\t}\n\t\t}\n\n\t\tfor (var _i2 = 0; _i2 < self.config.plugins.length; _i2++) {\n\t\t\tvar pluginConf = self.config.plugins[_i2](self) || {};\n\t\t\tfor (var key in pluginConf) {\n\n\t\t\t\tif (self.config[key] instanceof Array || ~hooks.indexOf(key)) {\n\t\t\t\t\tself.config[key] = arrayify(pluginConf[key]).map(bindToInstance).concat(self.config[key]);\n\t\t\t\t} else if (typeof userConfig[key] === \"undefined\") self.config[key] = pluginConf[key];\n\t\t\t}\n\t\t}\n\n\t\ttriggerEvent(\"ParseConfig\");\n\t}\n\n\tfunction setupLocale() {\n\t\tif (_typeof(self.config.locale) !== \"object\" && typeof Flatpickr.l10ns[self.config.locale] === \"undefined\") console.warn(\"flatpickr: invalid locale \" + self.config.locale);\n\n\t\tself.l10n = _extends(Object.create(Flatpickr.l10ns.default), _typeof(self.config.locale) === \"object\" ? self.config.locale : self.config.locale !== \"default\" ? Flatpickr.l10ns[self.config.locale] || {} : {});\n\t}\n\n\tfunction positionCalendar() {\n\t\tif (self.calendarContainer === undefined) return;\n\n\t\tvar calendarHeight = self.calendarContainer.offsetHeight,\n\t\t    calendarWidth = self.calendarContainer.offsetWidth,\n\t\t    configPos = self.config.position,\n\t\t    inputBounds = self._positionElement.getBoundingClientRect(),\n\t\t    distanceFromBottom = window.innerHeight - inputBounds.bottom,\n\t\t    showOnTop = configPos === \"above\" || configPos !== \"below\" && distanceFromBottom < calendarHeight && inputBounds.top > calendarHeight;\n\n\t\tvar top = window.pageYOffset + inputBounds.top + (!showOnTop ? self._positionElement.offsetHeight + 2 : -calendarHeight - 2);\n\n\t\ttoggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n\t\ttoggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n\n\t\tif (self.config.inline) return;\n\n\t\tvar left = window.pageXOffset + inputBounds.left;\n\t\tvar right = window.document.body.offsetWidth - inputBounds.right;\n\t\tvar rightMost = left + calendarWidth > window.document.body.offsetWidth;\n\n\t\ttoggleClass(self.calendarContainer, \"rightMost\", rightMost);\n\n\t\tif (self.config.static) return;\n\n\t\tself.calendarContainer.style.top = top + \"px\";\n\n\t\tif (!rightMost) {\n\t\t\tself.calendarContainer.style.left = left + \"px\";\n\t\t\tself.calendarContainer.style.right = \"auto\";\n\t\t} else {\n\t\t\tself.calendarContainer.style.left = \"auto\";\n\t\t\tself.calendarContainer.style.right = right + \"px\";\n\t\t}\n\t}\n\n\tfunction redraw() {\n\t\tif (self.config.noCalendar || self.isMobile) return;\n\n\t\tbuildWeekdays();\n\t\tupdateNavigationCurrentMonth();\n\t\tbuildDays();\n\t}\n\n\tfunction selectDate(e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tif (!e.target.classList.contains(\"flatpickr-day\") || e.target.classList.contains(\"disabled\") || e.target.classList.contains(\"notAllowed\")) return;\n\n\t\tvar selectedDate = self.latestSelectedDateObj = new Date(e.target.dateObj.getTime());\n\n\t\tvar shouldChangeMonth = selectedDate.getMonth() !== self.currentMonth && self.config.mode !== \"range\";\n\n\t\tself.selectedDateElem = e.target;\n\n\t\tif (self.config.mode === \"single\") self.selectedDates = [selectedDate];else if (self.config.mode === \"multiple\") {\n\t\t\tvar selectedIndex = isDateSelected(selectedDate);\n\t\t\tif (selectedIndex) self.selectedDates.splice(selectedIndex, 1);else self.selectedDates.push(selectedDate);\n\t\t} else if (self.config.mode === \"range\") {\n\t\t\tif (self.selectedDates.length === 2) self.clear();\n\n\t\t\tself.selectedDates.push(selectedDate);\n\n\t\t\t// unless selecting same date twice, sort ascendingly\n\t\t\tif (compareDates(selectedDate, self.selectedDates[0], true) !== 0) self.selectedDates.sort(function (a, b) {\n\t\t\t\treturn a.getTime() - b.getTime();\n\t\t\t});\n\t\t}\n\n\t\tsetHoursFromInputs();\n\n\t\tif (shouldChangeMonth) {\n\t\t\tvar isNewYear = self.currentYear !== selectedDate.getFullYear();\n\t\t\tself.currentYear = selectedDate.getFullYear();\n\t\t\tself.currentMonth = selectedDate.getMonth();\n\n\t\t\tif (isNewYear) triggerEvent(\"YearChange\");\n\n\t\t\ttriggerEvent(\"MonthChange\");\n\t\t}\n\n\t\tbuildDays();\n\n\t\tif (self.minDateHasTime && self.config.enableTime && compareDates(selectedDate, self.config.minDate) === 0) setHoursFromDate(self.config.minDate);\n\n\t\tupdateValue();\n\n\t\tif (self.config.enableTime) setTimeout(function () {\n\t\t\treturn self.showTimeInput = true;\n\t\t}, 50);\n\n\t\tif (self.config.mode === \"range\") {\n\t\t\tif (self.selectedDates.length === 1) {\n\t\t\t\tonMouseOver(e.target);\n\n\t\t\t\tself._hidePrevMonthArrow = self._hidePrevMonthArrow || self.minRangeDate > self.days.childNodes[0].dateObj;\n\n\t\t\t\tself._hideNextMonthArrow = self._hideNextMonthArrow || self.maxRangeDate < new Date(self.currentYear, self.currentMonth + 1, 1);\n\t\t\t} else updateNavigationCurrentMonth();\n\t\t}\n\n\t\ttriggerEvent(\"Change\");\n\n\t\t// maintain focus\n\t\tif (!shouldChangeMonth) focusOnDay(e.target.$i, 0);else afterDayAnim(function () {\n\t\t\treturn self.selectedDateElem.focus();\n\t\t});\n\n\t\tif (self.config.enableTime) setTimeout(function () {\n\t\t\treturn self.hourElement.select();\n\t\t}, 451);\n\n\t\tif (self.config.closeOnSelect) {\n\t\t\tvar single = self.config.mode === \"single\" && !self.config.enableTime;\n\t\t\tvar range = self.config.mode === \"range\" && self.selectedDates.length === 2 && !self.config.enableTime;\n\n\t\t\tif (single || range) self.close();\n\t\t}\n\t}\n\n\tfunction set(option, value) {\n\t\tself.config[option] = value;\n\t\tself.redraw();\n\t\tjumpToDate();\n\t}\n\n\tfunction setSelectedDate(inputDate, format) {\n\t\tif (inputDate instanceof Array) self.selectedDates = inputDate.map(function (d) {\n\t\t\treturn self.parseDate(d, format);\n\t\t});else if (inputDate instanceof Date || !isNaN(inputDate)) self.selectedDates = [self.parseDate(inputDate, format)];else if (inputDate && inputDate.substring) {\n\t\t\tswitch (self.config.mode) {\n\t\t\t\tcase \"single\":\n\t\t\t\t\tself.selectedDates = [self.parseDate(inputDate, format)];\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"multiple\":\n\t\t\t\t\tself.selectedDates = inputDate.split(\"; \").map(function (date) {\n\t\t\t\t\t\treturn self.parseDate(date, format);\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"range\":\n\t\t\t\t\tself.selectedDates = inputDate.split(self.l10n.rangeSeparator).map(function (date) {\n\t\t\t\t\t\treturn self.parseDate(date, format);\n\t\t\t\t\t});\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tself.selectedDates = self.selectedDates.filter(function (d) {\n\t\t\treturn d instanceof Date && isEnabled(d, false);\n\t\t});\n\n\t\tself.selectedDates.sort(function (a, b) {\n\t\t\treturn a.getTime() - b.getTime();\n\t\t});\n\t}\n\n\tfunction setDate(date, triggerChange, format) {\n\t\tif (!date) return self.clear(triggerChange);\n\n\t\tsetSelectedDate(date, format);\n\n\t\tself.showTimeInput = self.selectedDates.length > 0;\n\t\tself.latestSelectedDateObj = self.selectedDates[0];\n\n\t\tself.redraw();\n\t\tjumpToDate();\n\n\t\tsetHoursFromDate();\n\t\tupdateValue(triggerChange);\n\n\t\tif (triggerChange) triggerEvent(\"Change\");\n\t}\n\n\tfunction setupDates() {\n\t\tfunction parseDateRules(arr) {\n\t\t\tfor (var i = arr.length; i--;) {\n\t\t\t\tif (typeof arr[i] === \"string\" || +arr[i]) arr[i] = self.parseDate(arr[i], null, true);else if (arr[i] && arr[i].from && arr[i].to) {\n\t\t\t\t\tarr[i].from = self.parseDate(arr[i].from);\n\t\t\t\t\tarr[i].to = self.parseDate(arr[i].to);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn arr.filter(function (x) {\n\t\t\t\treturn x;\n\t\t\t}); // remove falsy values\n\t\t}\n\n\t\tself.selectedDates = [];\n\t\tself.now = new Date();\n\n\t\tif (self.config.disable.length) self.config.disable = parseDateRules(self.config.disable);\n\n\t\tif (self.config.enable.length) self.config.enable = parseDateRules(self.config.enable);\n\n\t\tvar preloadedDate = self.config.defaultDate || self.input.value;\n\t\tif (preloadedDate) setSelectedDate(preloadedDate, self.config.dateFormat);\n\n\t\tvar initialDate = self.selectedDates.length ? self.selectedDates[0] : self.config.minDate && self.config.minDate.getTime() > self.now ? self.config.minDate : self.config.maxDate && self.config.maxDate.getTime() < self.now ? self.config.maxDate : self.now;\n\n\t\tself.currentYear = initialDate.getFullYear();\n\t\tself.currentMonth = initialDate.getMonth();\n\n\t\tif (self.selectedDates.length) self.latestSelectedDateObj = self.selectedDates[0];\n\n\t\tself.minDateHasTime = self.config.minDate && (self.config.minDate.getHours() || self.config.minDate.getMinutes() || self.config.minDate.getSeconds());\n\n\t\tself.maxDateHasTime = self.config.maxDate && (self.config.maxDate.getHours() || self.config.maxDate.getMinutes() || self.config.maxDate.getSeconds());\n\n\t\tObject.defineProperty(self, \"latestSelectedDateObj\", {\n\t\t\tget: function get() {\n\t\t\t\treturn self._selectedDateObj || self.selectedDates[self.selectedDates.length - 1];\n\t\t\t},\n\t\t\tset: function set(date) {\n\t\t\t\tself._selectedDateObj = date;\n\t\t\t}\n\t\t});\n\n\t\tif (!self.isMobile) {\n\t\t\tObject.defineProperty(self, \"showTimeInput\", {\n\t\t\t\tget: function get() {\n\t\t\t\t\treturn self._showTimeInput;\n\t\t\t\t},\n\t\t\t\tset: function set(bool) {\n\t\t\t\t\tself._showTimeInput = bool;\n\t\t\t\t\tif (self.calendarContainer) toggleClass(self.calendarContainer, \"showTimeInput\", bool);\n\t\t\t\t\tpositionCalendar();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction setupHelperFunctions() {\n\t\tself.utils = {\n\t\t\tduration: {\n\t\t\t\tDAY: 86400000\n\t\t\t},\n\t\t\tgetDaysinMonth: function getDaysinMonth(month, yr) {\n\t\t\t\tmonth = typeof month === \"undefined\" ? self.currentMonth : month;\n\n\t\t\t\tyr = typeof yr === \"undefined\" ? self.currentYear : yr;\n\n\t\t\t\tif (month === 1 && (yr % 4 === 0 && yr % 100 !== 0 || yr % 400 === 0)) return 29;\n\n\t\t\t\treturn self.l10n.daysInMonth[month];\n\t\t\t},\n\t\t\tmonthToStr: function monthToStr(monthNumber, shorthand) {\n\t\t\t\tshorthand = typeof shorthand === \"undefined\" ? self.config.shorthandCurrentMonth : shorthand;\n\n\t\t\t\treturn self.l10n.months[(shorthand ? \"short\" : \"long\") + \"hand\"][monthNumber];\n\t\t\t}\n\t\t};\n\t}\n\n\t/* istanbul ignore next */\n\tfunction setupFormats() {\n\t\t[\"D\", \"F\", \"J\", \"M\", \"W\", \"l\"].forEach(function (f) {\n\t\t\tself.formats[f] = Flatpickr.prototype.formats[f].bind(self);\n\t\t});\n\n\t\tself.revFormat.F = Flatpickr.prototype.revFormat.F.bind(self);\n\t\tself.revFormat.M = Flatpickr.prototype.revFormat.M.bind(self);\n\t}\n\n\tfunction setupInputs() {\n\t\tself.input = self.config.wrap ? self.element.querySelector(\"[data-input]\") : self.element;\n\n\t\t/* istanbul ignore next */\n\t\tif (!self.input) return console.warn(\"Error: invalid input element specified\", self.input);\n\n\t\tself.input._type = self.input.type;\n\t\tself.input.type = \"text\";\n\n\t\tself.input.classList.add(\"flatpickr-input\");\n\t\tself._input = self.input;\n\n\t\tif (self.config.altInput) {\n\t\t\t// replicate self.element\n\t\t\tself.altInput = createElement(self.input.nodeName, self.input.className + \" \" + self.config.altInputClass);\n\t\t\tself._input = self.altInput;\n\t\t\tself.altInput.placeholder = self.input.placeholder;\n\t\t\tself.altInput.disabled = self.input.disabled;\n\t\t\tself.altInput.type = \"text\";\n\t\t\tself.input.type = \"hidden\";\n\n\t\t\tif (!self.config.static && self.input.parentNode) self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n\t\t}\n\n\t\tif (!self.config.allowInput) self._input.setAttribute(\"readonly\", \"readonly\");\n\n\t\tself._positionElement = self.config.positionElement || self._input;\n\t}\n\n\tfunction setupMobile() {\n\t\tvar inputType = self.config.enableTime ? self.config.noCalendar ? \"time\" : \"datetime-local\" : \"date\";\n\n\t\tself.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n\t\tself.mobileInput.step = \"any\";\n\t\tself.mobileInput.tabIndex = 1;\n\t\tself.mobileInput.type = inputType;\n\t\tself.mobileInput.disabled = self.input.disabled;\n\t\tself.mobileInput.placeholder = self.input.placeholder;\n\n\t\tself.mobileFormatStr = inputType === \"datetime-local\" ? \"Y-m-d\\\\TH:i:S\" : inputType === \"date\" ? \"Y-m-d\" : \"H:i:S\";\n\n\t\tif (self.selectedDates.length) {\n\t\t\tself.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n\t\t}\n\n\t\tif (self.config.minDate) self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n\n\t\tif (self.config.maxDate) self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n\n\t\tself.input.type = \"hidden\";\n\t\tif (self.config.altInput) self.altInput.type = \"hidden\";\n\n\t\ttry {\n\t\t\tself.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n\t\t} catch (e) {\n\t\t\t//\n\t\t}\n\n\t\tself.mobileInput.addEventListener(\"change\", function (e) {\n\t\t\tself.setDate(e.target.value, false, self.mobileFormatStr);\n\t\t\ttriggerEvent(\"Change\");\n\t\t\ttriggerEvent(\"Close\");\n\t\t});\n\t}\n\n\tfunction toggle() {\n\t\tif (self.isOpen) return self.close();\n\t\tself.open();\n\t}\n\n\tfunction triggerEvent(event, data) {\n\t\tvar hooks = self.config[\"on\" + event];\n\n\t\tif (hooks !== undefined && hooks.length > 0) {\n\t\t\tfor (var i = 0; hooks[i] && i < hooks.length; i++) {\n\t\t\t\thooks[i](self.selectedDates, self.input.value, self, data);\n\t\t\t}\n\t\t}\n\n\t\tif (event === \"Change\") {\n\t\t\tself.input.dispatchEvent(createEvent(\"change\"));\n\n\t\t\t// many front-end frameworks bind to the input event\n\t\t\tself.input.dispatchEvent(createEvent(\"input\"));\n\t\t}\n\t}\n\n\t/**\n  * Creates an Event, normalized across browsers\n  * @param {String} name the event name, e.g. \"click\"\n  * @return {Event} the created event\n  */\n\tfunction createEvent(name) {\n\t\tif (self._supportsEvents) return new Event(name, { bubbles: true });\n\n\t\tself._[name + \"Event\"] = document.createEvent(\"Event\");\n\t\tself._[name + \"Event\"].initEvent(name, true, true);\n\t\treturn self._[name + \"Event\"];\n\t}\n\n\tfunction isDateSelected(date) {\n\t\tfor (var i = 0; i < self.selectedDates.length; i++) {\n\t\t\tif (compareDates(self.selectedDates[i], date) === 0) return \"\" + i;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tfunction isDateInRange(date) {\n\t\tif (self.config.mode !== \"range\" || self.selectedDates.length < 2) return false;\n\t\treturn compareDates(date, self.selectedDates[0]) >= 0 && compareDates(date, self.selectedDates[1]) <= 0;\n\t}\n\n\tfunction updateNavigationCurrentMonth() {\n\t\tif (self.config.noCalendar || self.isMobile || !self.monthNav) return;\n\n\t\tself.currentMonthElement.textContent = self.utils.monthToStr(self.currentMonth) + \" \";\n\t\tself.currentYearElement.value = self.currentYear;\n\n\t\tself._hidePrevMonthArrow = self.config.minDate && (self.currentYear === self.config.minDate.getFullYear() ? self.currentMonth <= self.config.minDate.getMonth() : self.currentYear < self.config.minDate.getFullYear());\n\n\t\tself._hideNextMonthArrow = self.config.maxDate && (self.currentYear === self.config.maxDate.getFullYear() ? self.currentMonth + 1 > self.config.maxDate.getMonth() : self.currentYear > self.config.maxDate.getFullYear());\n\t}\n\n\t/**\n  * Updates the values of inputs associated with the calendar\n  * @return {void}\n  */\n\tfunction updateValue(triggerChange) {\n\t\tif (!self.selectedDates.length) return self.clear(triggerChange);\n\n\t\tif (self.isMobile) {\n\t\t\tself.mobileInput.value = self.selectedDates.length ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr) : \"\";\n\t\t}\n\n\t\tvar joinChar = self.config.mode !== \"range\" ? \"; \" : self.l10n.rangeSeparator;\n\n\t\tself.input.value = self.selectedDates.map(function (dObj) {\n\t\t\treturn self.formatDate(dObj, self.config.dateFormat);\n\t\t}).join(joinChar);\n\n\t\tif (self.config.altInput) {\n\t\t\tself.altInput.value = self.selectedDates.map(function (dObj) {\n\t\t\t\treturn self.formatDate(dObj, self.config.altFormat);\n\t\t\t}).join(joinChar);\n\t\t}\n\t\ttriggerEvent(\"ValueUpdate\");\n\t}\n\n\tfunction mouseDelta(e) {\n\t\treturn Math.max(-1, Math.min(1, e.wheelDelta || -e.deltaY));\n\t}\n\n\tfunction onMonthNavScroll(e) {\n\t\te.preventDefault();\n\t\tvar isYear = self.currentYearElement.parentNode.contains(e.target);\n\n\t\tif (e.target === self.currentMonthElement || isYear) {\n\n\t\t\tvar delta = mouseDelta(e);\n\n\t\t\tif (isYear) {\n\t\t\t\tchangeYear(self.currentYear + delta);\n\t\t\t\te.target.value = self.currentYear;\n\t\t\t} else self.changeMonth(delta, true, false);\n\t\t}\n\t}\n\n\tfunction onMonthNavClick(e) {\n\t\tvar isPrevMonth = self.prevMonthNav.contains(e.target);\n\t\tvar isNextMonth = self.nextMonthNav.contains(e.target);\n\n\t\tif (isPrevMonth || isNextMonth) changeMonth(isPrevMonth ? -1 : 1);else if (e.target === self.currentYearElement) {\n\t\t\te.preventDefault();\n\t\t\tself.currentYearElement.select();\n\t\t} else if (e.target.className === \"arrowUp\") self.changeYear(self.currentYear + 1);else if (e.target.className === \"arrowDown\") self.changeYear(self.currentYear - 1);\n\t}\n\n\t/**\n  * Creates an HTMLElement with given tag, class, and textual content\n  * @param {String} tag the HTML tag\n  * @param {String} className the new element's class name\n  * @param {String} content The new element's text content\n  * @return {HTMLElement} the created HTML element\n  */\n\tfunction createElement(tag, className, content) {\n\t\tvar e = window.document.createElement(tag);\n\t\tclassName = className || \"\";\n\t\tcontent = content || \"\";\n\n\t\te.className = className;\n\n\t\tif (content !== undefined) e.textContent = content;\n\n\t\treturn e;\n\t}\n\n\tfunction arrayify(obj) {\n\t\tif (obj instanceof Array) return obj;\n\t\treturn [obj];\n\t}\n\n\tfunction toggleClass(elem, className, bool) {\n\t\tif (bool) return elem.classList.add(className);\n\t\telem.classList.remove(className);\n\t}\n\n\t/* istanbul ignore next */\n\tfunction debounce(func, wait, immediate) {\n\t\tvar timeout = void 0;\n\t\treturn function () {\n\t\t\tvar context = this,\n\t\t\t    args = arguments;\n\t\t\tclearTimeout(timeout);\n\t\t\ttimeout = setTimeout(function () {\n\t\t\t\ttimeout = null;\n\t\t\t\tif (!immediate) func.apply(context, args);\n\t\t\t}, wait);\n\t\t\tif (immediate && !timeout) func.apply(context, args);\n\t\t};\n\t}\n\n\t/**\n  * Compute the difference in dates, measured in ms\n  * @param {Date} date1\n  * @param {Date} date2\n  * @param {Boolean} timeless whether to reset times of both dates to 00:00\n  * @return {Number} the difference in ms\n  */\n\tfunction compareDates(date1, date2, timeless) {\n\t\tif (!(date1 instanceof Date) || !(date2 instanceof Date)) return false;\n\n\t\tif (timeless !== false) {\n\t\t\treturn new Date(date1.getTime()).setHours(0, 0, 0, 0) - new Date(date2.getTime()).setHours(0, 0, 0, 0);\n\t\t}\n\n\t\treturn date1.getTime() - date2.getTime();\n\t}\n\n\tfunction timeWrapper(e) {\n\t\te.preventDefault();\n\n\t\tvar isKeyDown = e.type === \"keydown\",\n\t\t    isWheel = e.type === \"wheel\",\n\t\t    isIncrement = e.type === \"increment\",\n\t\t    input = e.target;\n\n\t\tif (self.amPM && e.target === self.amPM) return e.target.textContent = [\"AM\", \"PM\"][e.target.textContent === \"AM\" | 0];\n\n\t\tvar min = Number(input.min),\n\t\t    max = Number(input.max),\n\t\t    step = Number(input.step),\n\t\t    curValue = parseInt(input.value, 10),\n\t\t    delta = e.delta || (!isKeyDown ? Math.max(-1, Math.min(1, e.wheelDelta || -e.deltaY)) || 0 : e.which === 38 ? 1 : -1);\n\n\t\tvar newValue = curValue + step * delta;\n\n\t\tif (typeof input.value !== \"undefined\" && input.value.length === 2) {\n\t\t\tvar isHourElem = input === self.hourElement,\n\t\t\t    isMinuteElem = input === self.minuteElement;\n\n\t\t\tif (newValue < min) {\n\t\t\t\tnewValue = max + newValue + !isHourElem + (isHourElem && !self.amPM);\n\n\t\t\t\tif (isMinuteElem) incrementNumInput(null, -1, self.hourElement);\n\t\t\t} else if (newValue > max) {\n\t\t\t\tnewValue = input === self.hourElement ? newValue - max - !self.amPM : min;\n\n\t\t\t\tif (isMinuteElem) incrementNumInput(null, 1, self.hourElement);\n\t\t\t}\n\n\t\t\tif (self.amPM && isHourElem && (step === 1 ? newValue + curValue === 23 : Math.abs(newValue - curValue) > step)) self.amPM.textContent = self.amPM.textContent === \"PM\" ? \"AM\" : \"PM\";\n\n\t\t\tinput.value = self.pad(newValue);\n\t\t}\n\t}\n\n\tinit();\n\treturn self;\n}\n\n/* istanbul ignore next */\nFlatpickr.defaultConfig = {\n\tmode: \"single\",\n\n\tposition: \"auto\",\n\n\tanimate: window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n\n\t/* if true, dates will be parsed, formatted, and displayed in UTC.\n preloading date strings w/ timezones is recommended but not necessary */\n\tutc: false,\n\n\t// wrap: see https://chmln.github.io/flatpickr/examples/#flatpickr-external-elements\n\twrap: false,\n\n\t// enables week numbers\n\tweekNumbers: false,\n\n\t// allow manual datetime input\n\tallowInput: false,\n\n\t/*\n \tclicking on input opens the date(time)picker.\n \tdisable if you wish to open the calendar manually with .open()\n */\n\tclickOpens: true,\n\n\t/*\n \tcloses calendar after date selection,\n \tunless 'mode' is 'multiple' or enableTime is true\n */\n\tcloseOnSelect: true,\n\n\t// display time picker in 24 hour mode\n\ttime_24hr: false,\n\n\t// enables the time picker functionality\n\tenableTime: false,\n\n\t// noCalendar: true will hide the calendar. use for a time picker along w/ enableTime\n\tnoCalendar: false,\n\n\t// more date format chars at https://chmln.github.io/flatpickr/#dateformat\n\tdateFormat: \"Y-m-d\",\n\n\t// date format used in aria-label for days\n\tariaDateFormat: \"F j, Y\",\n\n\t// altInput - see https://chmln.github.io/flatpickr/#altinput\n\taltInput: false,\n\n\t// the created altInput element will have this class.\n\taltInputClass: \"form-control input\",\n\n\t// same as dateFormat, but for altInput\n\taltFormat: \"F j, Y\", // defaults to e.g. June 10, 2016\n\n\t// defaultDate - either a datestring or a date object. used for datetimepicker\"s initial value\n\tdefaultDate: null,\n\n\t// the minimum date that user can pick (inclusive)\n\tminDate: null,\n\n\t// the maximum date that user can pick (inclusive)\n\tmaxDate: null,\n\n\t// dateparser that transforms a given string to a date object\n\tparseDate: null,\n\n\t// dateformatter that transforms a given date object to a string, according to passed format\n\tformatDate: null,\n\n\tgetWeek: function getWeek(givenDate) {\n\t\tvar date = new Date(givenDate.getTime());\n\t\tvar onejan = new Date(date.getFullYear(), 0, 1);\n\t\treturn Math.ceil(((date - onejan) / 86400000 + onejan.getDay() + 1) / 7);\n\t},\n\n\n\t// see https://chmln.github.io/flatpickr/#disable\n\tenable: [],\n\n\t// see https://chmln.github.io/flatpickr/#disable\n\tdisable: [],\n\n\t// display the short version of month names - e.g. Sep instead of September\n\tshorthandCurrentMonth: false,\n\n\t// displays calendar inline. see https://chmln.github.io/flatpickr/#inline-calendar\n\tinline: false,\n\n\t// position calendar inside wrapper and next to the input element\n\t// leave at false unless you know what you\"re doing\n\t\"static\": false,\n\n\t// DOM node to append the calendar to in *static* mode\n\tappendTo: null,\n\n\t// code for previous/next icons. this is where you put your custom icon code e.g. fontawesome\n\tprevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n\tnextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n\n\t// enables seconds in the time picker\n\tenableSeconds: false,\n\n\t// step size used when scrolling/incrementing the hour element\n\thourIncrement: 1,\n\n\t// step size used when scrolling/incrementing the minute element\n\tminuteIncrement: 5,\n\n\t// initial value in the hour element\n\tdefaultHour: 12,\n\n\t// initial value in the minute element\n\tdefaultMinute: 0,\n\n\t// disable native mobile datetime input support\n\tdisableMobile: false,\n\n\t// default locale\n\tlocale: \"default\",\n\n\tplugins: [],\n\n\t// called every time calendar is closed\n\tonClose: undefined, // function (dateObj, dateStr) {}\n\n\t// onChange callback when user selects a date or time\n\tonChange: undefined, // function (dateObj, dateStr) {}\n\n\t// called for every day element\n\tonDayCreate: undefined,\n\n\t// called every time the month is changed\n\tonMonthChange: undefined,\n\n\t// called every time calendar is opened\n\tonOpen: undefined, // function (dateObj, dateStr) {}\n\n\t// called after the configuration has been parsed\n\tonParseConfig: undefined,\n\n\t// called after calendar is ready\n\tonReady: undefined, // function (dateObj, dateStr) {}\n\n\t// called after input value updated\n\tonValueUpdate: undefined,\n\n\t// called every time the year is changed\n\tonYearChange: undefined,\n\n\tonKeyDown: undefined\n};\n\n/* istanbul ignore next */\nFlatpickr.l10ns = {\n\ten: {\n\t\tweekdays: {\n\t\t\tshorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t\t\tlonghand: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]\n\t\t},\n\t\tmonths: {\n\t\t\tshorthand: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\t\tlonghand: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\n\t\t},\n\t\tdaysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n\t\tfirstDayOfWeek: 0,\n\t\tordinal: function ordinal(nth) {\n\t\t\tvar s = nth % 100;\n\t\t\tif (s > 3 && s < 21) return \"th\";\n\t\t\tswitch (s % 10) {\n\t\t\t\tcase 1:\n\t\t\t\t\treturn \"st\";\n\t\t\t\tcase 2:\n\t\t\t\t\treturn \"nd\";\n\t\t\t\tcase 3:\n\t\t\t\t\treturn \"rd\";\n\t\t\t\tdefault:\n\t\t\t\t\treturn \"th\";\n\t\t\t}\n\t\t},\n\t\trangeSeparator: \" to \",\n\t\tweekAbbreviation: \"Wk\",\n\t\tscrollTitle: \"Scroll to increment\",\n\t\ttoggleTitle: \"Click to toggle\"\n\t}\n};\n\nFlatpickr.l10ns.default = Object.create(Flatpickr.l10ns.en);\nFlatpickr.localize = function (l10n) {\n\treturn _extends(Flatpickr.l10ns.default, l10n || {});\n};\nFlatpickr.setDefaults = function (config) {\n\treturn _extends(Flatpickr.defaultConfig, config || {});\n};\n\nFlatpickr.prototype = {\n\tformats: {\n\t\t// get the date in UTC\n\t\tZ: function Z(date) {\n\t\t\treturn date.toISOString();\n\t\t},\n\n\t\t// weekday name, short, e.g. Thu\n\t\tD: function D(date) {\n\t\t\treturn this.l10n.weekdays.shorthand[this.formats.w(date)];\n\t\t},\n\n\t\t// full month name e.g. January\n\t\tF: function F(date) {\n\t\t\treturn this.utils.monthToStr(this.formats.n(date) - 1, false);\n\t\t},\n\n\t\t// padded hour 1-12\n\t\tG: function G(date) {\n\t\t\treturn Flatpickr.prototype.pad(Flatpickr.prototype.formats.h(date));\n\t\t},\n\n\t\t// hours with leading zero e.g. 03\n\t\tH: function H(date) {\n\t\t\treturn Flatpickr.prototype.pad(date.getHours());\n\t\t},\n\n\t\t// day (1-30) with ordinal suffix e.g. 1st, 2nd\n\t\tJ: function J(date) {\n\t\t\treturn date.getDate() + this.l10n.ordinal(date.getDate());\n\t\t},\n\n\t\t// AM/PM\n\t\tK: function K(date) {\n\t\t\treturn date.getHours() > 11 ? \"PM\" : \"AM\";\n\t\t},\n\n\t\t// shorthand month e.g. Jan, Sep, Oct, etc\n\t\tM: function M(date) {\n\t\t\treturn this.utils.monthToStr(date.getMonth(), true);\n\t\t},\n\n\t\t// seconds 00-59\n\t\tS: function S(date) {\n\t\t\treturn Flatpickr.prototype.pad(date.getSeconds());\n\t\t},\n\n\t\t// unix timestamp\n\t\tU: function U(date) {\n\t\t\treturn date.getTime() / 1000;\n\t\t},\n\n\t\tW: function W(date) {\n\t\t\treturn this.config.getWeek(date);\n\t\t},\n\n\t\t// full year e.g. 2016\n\t\tY: function Y(date) {\n\t\t\treturn date.getFullYear();\n\t\t},\n\n\t\t// day in month, padded (01-30)\n\t\td: function d(date) {\n\t\t\treturn Flatpickr.prototype.pad(date.getDate());\n\t\t},\n\n\t\t// hour from 1-12 (am/pm)\n\t\th: function h(date) {\n\t\t\treturn date.getHours() % 12 ? date.getHours() % 12 : 12;\n\t\t},\n\n\t\t// minutes, padded with leading zero e.g. 09\n\t\ti: function i(date) {\n\t\t\treturn Flatpickr.prototype.pad(date.getMinutes());\n\t\t},\n\n\t\t// day in month (1-30)\n\t\tj: function j(date) {\n\t\t\treturn date.getDate();\n\t\t},\n\n\t\t// weekday name, full, e.g. Thursday\n\t\tl: function l(date) {\n\t\t\treturn this.l10n.weekdays.longhand[date.getDay()];\n\t\t},\n\n\t\t// padded month number (01-12)\n\t\tm: function m(date) {\n\t\t\treturn Flatpickr.prototype.pad(date.getMonth() + 1);\n\t\t},\n\n\t\t// the month number (1-12)\n\t\tn: function n(date) {\n\t\t\treturn date.getMonth() + 1;\n\t\t},\n\n\t\t// seconds 0-59\n\t\ts: function s(date) {\n\t\t\treturn date.getSeconds();\n\t\t},\n\n\t\t// number of the day of the week\n\t\tw: function w(date) {\n\t\t\treturn date.getDay();\n\t\t},\n\n\t\t// last two digits of year e.g. 16 for 2016\n\t\ty: function y(date) {\n\t\t\treturn String(date.getFullYear()).substring(2);\n\t\t}\n\t},\n\n\t/**\n  * Formats a given Date object into a string based on supplied format\n  * @param {Date} dateObj the date object\n  * @param {String} frmt a string composed of formatting tokens e.g. \"Y-m-d\"\n  * @return {String} The textual representation of the date e.g. 2017-02-03\n  */\n\tformatDate: function formatDate(dateObj, frmt) {\n\t\tvar _this = this;\n\n\t\tif (this.config !== undefined && this.config.formatDate !== undefined) return this.config.formatDate(dateObj, frmt);\n\n\t\treturn frmt.split(\"\").map(function (c, i, arr) {\n\t\t\treturn _this.formats[c] && arr[i - 1] !== \"\\\\\" ? _this.formats[c](dateObj) : c !== \"\\\\\" ? c : \"\";\n\t\t}).join(\"\");\n\t},\n\n\n\trevFormat: {\n\t\tD: function D() {},\n\t\tF: function F(dateObj, monthName) {\n\t\t\tdateObj.setMonth(this.l10n.months.longhand.indexOf(monthName));\n\t\t},\n\t\tG: function G(dateObj, hour) {\n\t\t\tdateObj.setHours(parseFloat(hour));\n\t\t},\n\t\tH: function H(dateObj, hour) {\n\t\t\tdateObj.setHours(parseFloat(hour));\n\t\t},\n\t\tJ: function J(dateObj, day) {\n\t\t\tdateObj.setDate(parseFloat(day));\n\t\t},\n\t\tK: function K(dateObj, amPM) {\n\t\t\tvar hours = dateObj.getHours();\n\n\t\t\tif (hours !== 12) dateObj.setHours(hours % 12 + 12 * /pm/i.test(amPM));\n\t\t},\n\t\tM: function M(dateObj, shortMonth) {\n\t\t\tdateObj.setMonth(this.l10n.months.shorthand.indexOf(shortMonth));\n\t\t},\n\t\tS: function S(dateObj, seconds) {\n\t\t\tdateObj.setSeconds(seconds);\n\t\t},\n\t\tU: function U(dateObj, unixSeconds) {\n\t\t\treturn new Date(parseFloat(unixSeconds) * 1000);\n\t\t},\n\n\t\tW: function W(dateObj, weekNumber) {\n\t\t\tweekNumber = parseInt(weekNumber);\n\t\t\treturn new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0, 0);\n\t\t},\n\t\tY: function Y(dateObj, year) {\n\t\t\tdateObj.setFullYear(year);\n\t\t},\n\t\tZ: function Z(dateObj, ISODate) {\n\t\t\treturn new Date(ISODate);\n\t\t},\n\n\t\td: function d(dateObj, day) {\n\t\t\tdateObj.setDate(parseFloat(day));\n\t\t},\n\t\th: function h(dateObj, hour) {\n\t\t\tdateObj.setHours(parseFloat(hour));\n\t\t},\n\t\ti: function i(dateObj, minutes) {\n\t\t\tdateObj.setMinutes(parseFloat(minutes));\n\t\t},\n\t\tj: function j(dateObj, day) {\n\t\t\tdateObj.setDate(parseFloat(day));\n\t\t},\n\t\tl: function l() {},\n\t\tm: function m(dateObj, month) {\n\t\t\tdateObj.setMonth(parseFloat(month) - 1);\n\t\t},\n\t\tn: function n(dateObj, month) {\n\t\t\tdateObj.setMonth(parseFloat(month) - 1);\n\t\t},\n\t\ts: function s(dateObj, seconds) {\n\t\t\tdateObj.setSeconds(parseFloat(seconds));\n\t\t},\n\t\tw: function w() {},\n\t\ty: function y(dateObj, year) {\n\t\t\tdateObj.setFullYear(2000 + parseFloat(year));\n\t\t}\n\t},\n\n\ttokenRegex: {\n\t\tD: \"(\\\\w+)\",\n\t\tF: \"(\\\\w+)\",\n\t\tG: \"(\\\\d\\\\d|\\\\d)\",\n\t\tH: \"(\\\\d\\\\d|\\\\d)\",\n\t\tJ: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n\t\tK: \"(\\\\w+)\",\n\t\tM: \"(\\\\w+)\",\n\t\tS: \"(\\\\d\\\\d|\\\\d)\",\n\t\tU: \"(.+)\",\n\t\tW: \"(\\\\d\\\\d|\\\\d)\",\n\t\tY: \"(\\\\d{4})\",\n\t\tZ: \"(.+)\",\n\t\td: \"(\\\\d\\\\d|\\\\d)\",\n\t\th: \"(\\\\d\\\\d|\\\\d)\",\n\t\ti: \"(\\\\d\\\\d|\\\\d)\",\n\t\tj: \"(\\\\d\\\\d|\\\\d)\",\n\t\tl: \"(\\\\w+)\",\n\t\tm: \"(\\\\d\\\\d|\\\\d)\",\n\t\tn: \"(\\\\d\\\\d|\\\\d)\",\n\t\ts: \"(\\\\d\\\\d|\\\\d)\",\n\t\tw: \"(\\\\d\\\\d|\\\\d)\",\n\t\ty: \"(\\\\d{2})\"\n\t},\n\n\tpad: function pad(number) {\n\t\treturn (\"0\" + number).slice(-2);\n\t},\n\n\t/**\n  * Parses a date(+time) string into a Date object\n  * @param {String} date the date string, e.g. 2017-02-03 14:45\n  * @param {String} givenFormat the date format, e.g. Y-m-d H:i\n  * @param {Boolean} timeless whether to reset the time of Date object\n  * @return {Date} the parsed Date object\n  */\n\tparseDate: function parseDate(date, givenFormat, timeless) {\n\t\tif (!date) return null;\n\n\t\tvar date_orig = date;\n\n\t\tif (date instanceof Date) {\n\t\t\tdate = new Date(date.getTime()); // create a copy\n\t\t\tdate.fp_isUTC = date_orig.fp_isUTC;\n\t\t} else if (date.toFixed !== undefined) // timestamp\n\t\t\tdate = new Date(date);else {\n\t\t\t// date string\n\t\t\tvar format = givenFormat || (this.config || Flatpickr.defaultConfig).dateFormat;\n\t\t\tdate = String(date).trim();\n\n\t\t\tif (date === \"today\") {\n\t\t\t\tdate = new Date();\n\t\t\t\ttimeless = true;\n\t\t\t} else if (/Z$/.test(date) || /GMT$/.test(date)) // datestrings w/ timezone\n\t\t\t\tdate = new Date(date);else if (this.config && this.config.parseDate) date = this.config.parseDate(date, format);else {\n\t\t\t\tvar parsedDate = !this.config || !this.config.noCalendar ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0) : new Date(new Date().setHours(0, 0, 0, 0));\n\n\t\t\t\tvar matched = void 0;\n\n\t\t\t\tfor (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n\t\t\t\t\tvar token = format[i];\n\t\t\t\t\tvar isBackSlash = token === \"\\\\\";\n\t\t\t\t\tvar escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n\n\t\t\t\t\tif (this.tokenRegex[token] && !escaped) {\n\t\t\t\t\t\tregexStr += this.tokenRegex[token];\n\t\t\t\t\t\tvar match = new RegExp(regexStr).exec(date);\n\t\t\t\t\t\tif (match && (matched = true)) {\n\t\t\t\t\t\t\tparsedDate = this.revFormat[token](parsedDate, match[++matchIndex]) || parsedDate;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (!isBackSlash) regexStr += \".\"; // don't really care\n\t\t\t\t}\n\n\t\t\t\tdate = matched ? parsedDate : null;\n\t\t\t}\n\t\t}\n\n\t\t/* istanbul ignore next */\n\t\tif (!(date instanceof Date)) {\n\t\t\tconsole.warn(\"flatpickr: invalid date \" + date_orig);\n\t\t\tconsole.info(this.element);\n\t\t\treturn null;\n\t\t}\n\n\t\tif (this.config && this.config.utc && !date.fp_isUTC) date = date.fp_toUTC();\n\n\t\tif (timeless === true) date.setHours(0, 0, 0, 0);\n\n\t\treturn date;\n\t}\n};\n\n/* istanbul ignore next */\nfunction _flatpickr(nodeList, config) {\n\tvar nodes = Array.prototype.slice.call(nodeList); // static list\n\tvar instances = [];\n\tfor (var i = 0; i < nodes.length; i++) {\n\t\ttry {\n\t\t\tnodes[i]._flatpickr = new Flatpickr(nodes[i], config || {});\n\t\t\tinstances.push(nodes[i]._flatpickr);\n\t\t} catch (e) {\n\t\t\tconsole.warn(e, e.stack);\n\t\t}\n\t}\n\n\treturn instances.length === 1 ? instances[0] : instances;\n}\n\n/* istanbul ignore next */\nif (typeof HTMLElement !== \"undefined\") {\n\t// browser env\n\tHTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n\t\treturn _flatpickr(this, config);\n\t};\n\n\tHTMLElement.prototype.flatpickr = function (config) {\n\t\treturn _flatpickr([this], config);\n\t};\n}\n\n/* istanbul ignore next */\nfunction flatpickr(selector, config) {\n\treturn _flatpickr(window.document.querySelectorAll(selector), config);\n}\n\n/* istanbul ignore next */\nif (typeof jQuery !== \"undefined\") {\n\tjQuery.fn.flatpickr = function (config) {\n\t\treturn _flatpickr(this, config);\n\t};\n}\n\nDate.prototype.fp_incr = function (days) {\n\treturn new Date(this.getFullYear(), this.getMonth(), this.getDate() + parseInt(days, 10));\n};\n\nDate.prototype.fp_isUTC = false;\nDate.prototype.fp_toUTC = function () {\n\tvar newDate = new Date(this.getUTCFullYear(), this.getUTCMonth(), this.getUTCDate(), this.getUTCHours(), this.getUTCMinutes(), this.getUTCSeconds());\n\n\tnewDate.fp_isUTC = true;\n\treturn newDate;\n};\n\nif (typeof module !== \"undefined\") module.exports = Flatpickr;","\n\nimport { buildQueryString, parseQueryString } from 'aurelia-path';\n\nexport var State = function () {\n  function State(charSpec) {\n    \n\n    this.charSpec = charSpec;\n    this.nextStates = [];\n  }\n\n  State.prototype.get = function get(charSpec) {\n    for (var _iterator = this.nextStates, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n      var _ref;\n\n      if (_isArray) {\n        if (_i >= _iterator.length) break;\n        _ref = _iterator[_i++];\n      } else {\n        _i = _iterator.next();\n        if (_i.done) break;\n        _ref = _i.value;\n      }\n\n      var child = _ref;\n\n      var isEqual = child.charSpec.validChars === charSpec.validChars && child.charSpec.invalidChars === charSpec.invalidChars;\n\n      if (isEqual) {\n        return child;\n      }\n    }\n\n    return undefined;\n  };\n\n  State.prototype.put = function put(charSpec) {\n    var state = this.get(charSpec);\n\n    if (state) {\n      return state;\n    }\n\n    state = new State(charSpec);\n\n    this.nextStates.push(state);\n\n    if (charSpec.repeat) {\n      state.nextStates.push(state);\n    }\n\n    return state;\n  };\n\n  State.prototype.match = function match(ch) {\n    var nextStates = this.nextStates;\n    var results = [];\n\n    for (var i = 0, l = nextStates.length; i < l; i++) {\n      var child = nextStates[i];\n      var charSpec = child.charSpec;\n\n      if (charSpec.validChars !== undefined) {\n        if (charSpec.validChars.indexOf(ch) !== -1) {\n          results.push(child);\n        }\n      } else if (charSpec.invalidChars !== undefined) {\n        if (charSpec.invalidChars.indexOf(ch) === -1) {\n          results.push(child);\n        }\n      }\n    }\n\n    return results;\n  };\n\n  return State;\n}();\n\nvar specials = ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\'];\n\nvar escapeRegex = new RegExp('(\\\\' + specials.join('|\\\\') + ')', 'g');\n\nexport var StaticSegment = function () {\n  function StaticSegment(string, caseSensitive) {\n    \n\n    this.string = string;\n    this.caseSensitive = caseSensitive;\n  }\n\n  StaticSegment.prototype.eachChar = function eachChar(callback) {\n    var s = this.string;\n    for (var i = 0, ii = s.length; i < ii; ++i) {\n      var ch = s[i];\n      callback({ validChars: this.caseSensitive ? ch : ch.toUpperCase() + ch.toLowerCase() });\n    }\n  };\n\n  StaticSegment.prototype.regex = function regex() {\n    return this.string.replace(escapeRegex, '\\\\$1');\n  };\n\n  StaticSegment.prototype.generate = function generate() {\n    return this.string;\n  };\n\n  return StaticSegment;\n}();\n\nexport var DynamicSegment = function () {\n  function DynamicSegment(name, optional) {\n    \n\n    this.name = name;\n    this.optional = optional;\n  }\n\n  DynamicSegment.prototype.eachChar = function eachChar(callback) {\n    callback({ invalidChars: '/', repeat: true });\n  };\n\n  DynamicSegment.prototype.regex = function regex() {\n    return '([^/]+)';\n  };\n\n  DynamicSegment.prototype.generate = function generate(params, consumed) {\n    consumed[this.name] = true;\n    return params[this.name];\n  };\n\n  return DynamicSegment;\n}();\n\nexport var StarSegment = function () {\n  function StarSegment(name) {\n    \n\n    this.name = name;\n  }\n\n  StarSegment.prototype.eachChar = function eachChar(callback) {\n    callback({ invalidChars: '', repeat: true });\n  };\n\n  StarSegment.prototype.regex = function regex() {\n    return '(.+)';\n  };\n\n  StarSegment.prototype.generate = function generate(params, consumed) {\n    consumed[this.name] = true;\n    return params[this.name];\n  };\n\n  return StarSegment;\n}();\n\nexport var EpsilonSegment = function () {\n  function EpsilonSegment() {\n    \n  }\n\n  EpsilonSegment.prototype.eachChar = function eachChar() {};\n\n  EpsilonSegment.prototype.regex = function regex() {\n    return '';\n  };\n\n  EpsilonSegment.prototype.generate = function generate() {\n    return '';\n  };\n\n  return EpsilonSegment;\n}();\n\nexport var RouteRecognizer = function () {\n  function RouteRecognizer() {\n    \n\n    this.rootState = new State();\n    this.names = {};\n    this.routes = new Map();\n  }\n\n  RouteRecognizer.prototype.add = function add(route) {\n    var _this = this;\n\n    if (Array.isArray(route)) {\n      route.forEach(function (r) {\n        return _this.add(r);\n      });\n      return undefined;\n    }\n\n    var currentState = this.rootState;\n    var skippableStates = [];\n    var regex = '^';\n    var types = { statics: 0, dynamics: 0, stars: 0 };\n    var names = [];\n    var routeName = route.handler.name;\n    var isEmpty = true;\n    var segments = parse(route.path, names, types, route.caseSensitive);\n\n    for (var i = 0, ii = segments.length; i < ii; i++) {\n      var segment = segments[i];\n      if (segment instanceof EpsilonSegment) {\n        continue;\n      }\n\n      var _addSegment = addSegment(currentState, segment),\n          firstState = _addSegment[0],\n          nextState = _addSegment[1];\n\n      for (var j = 0, jj = skippableStates.length; j < jj; j++) {\n        skippableStates[j].nextStates.push(firstState);\n      }\n\n      if (segment.optional) {\n        skippableStates.push(nextState);\n        regex += '(?:/' + segment.regex() + ')?';\n      } else {\n        currentState = nextState;\n        regex += '/' + segment.regex();\n        skippableStates.length = 0;\n        isEmpty = false;\n      }\n    }\n\n    if (isEmpty) {\n      currentState = currentState.put({ validChars: '/' });\n      regex += '/?';\n    }\n\n    var handlers = [{ handler: route.handler, names: names }];\n\n    this.routes.set(route.handler, { segments: segments, handlers: handlers });\n    if (routeName) {\n      var routeNames = Array.isArray(routeName) ? routeName : [routeName];\n      for (var _i2 = 0; _i2 < routeNames.length; _i2++) {\n        if (!(routeNames[_i2] in this.names)) {\n          this.names[routeNames[_i2]] = { segments: segments, handlers: handlers };\n        }\n      }\n    }\n\n    for (var _i3 = 0; _i3 < skippableStates.length; _i3++) {\n      var state = skippableStates[_i3];\n      state.handlers = handlers;\n      state.regex = new RegExp(regex + '$', route.caseSensitive ? '' : 'i');\n      state.types = types;\n    }\n\n    currentState.handlers = handlers;\n    currentState.regex = new RegExp(regex + '$', route.caseSensitive ? '' : 'i');\n    currentState.types = types;\n\n    return currentState;\n  };\n\n  RouteRecognizer.prototype.getRoute = function getRoute(nameOrRoute) {\n    return typeof nameOrRoute === 'string' ? this.names[nameOrRoute] : this.routes.get(nameOrRoute);\n  };\n\n  RouteRecognizer.prototype.handlersFor = function handlersFor(nameOrRoute) {\n    var route = this.getRoute(nameOrRoute);\n    if (!route) {\n      throw new Error('There is no route named ' + nameOrRoute);\n    }\n\n    return [].concat(route.handlers);\n  };\n\n  RouteRecognizer.prototype.hasRoute = function hasRoute(nameOrRoute) {\n    return !!this.getRoute(nameOrRoute);\n  };\n\n  RouteRecognizer.prototype.generate = function generate(nameOrRoute, params) {\n    var route = this.getRoute(nameOrRoute);\n    if (!route) {\n      throw new Error('There is no route named ' + nameOrRoute);\n    }\n\n    var handler = route.handlers[0].handler;\n    if (handler.generationUsesHref) {\n      return handler.href;\n    }\n\n    var routeParams = Object.assign({}, params);\n    var segments = route.segments;\n    var consumed = {};\n    var output = '';\n\n    for (var i = 0, l = segments.length; i < l; i++) {\n      var segment = segments[i];\n\n      if (segment instanceof EpsilonSegment) {\n        continue;\n      }\n\n      var segmentValue = segment.generate(routeParams, consumed);\n      if (segmentValue === null || segmentValue === undefined) {\n        if (!segment.optional) {\n          throw new Error('A value is required for route parameter \\'' + segment.name + '\\' in route \\'' + nameOrRoute + '\\'.');\n        }\n      } else {\n        output += '/';\n        output += segmentValue;\n      }\n    }\n\n    if (output.charAt(0) !== '/') {\n      output = '/' + output;\n    }\n\n    for (var param in consumed) {\n      delete routeParams[param];\n    }\n\n    var queryString = buildQueryString(routeParams);\n    output += queryString ? '?' + queryString : '';\n\n    return output;\n  };\n\n  RouteRecognizer.prototype.recognize = function recognize(path) {\n    var states = [this.rootState];\n    var queryParams = {};\n    var isSlashDropped = false;\n    var normalizedPath = path;\n\n    var queryStart = normalizedPath.indexOf('?');\n    if (queryStart !== -1) {\n      var queryString = normalizedPath.substr(queryStart + 1, normalizedPath.length);\n      normalizedPath = normalizedPath.substr(0, queryStart);\n      queryParams = parseQueryString(queryString);\n    }\n\n    normalizedPath = decodeURI(normalizedPath);\n\n    if (normalizedPath.charAt(0) !== '/') {\n      normalizedPath = '/' + normalizedPath;\n    }\n\n    var pathLen = normalizedPath.length;\n    if (pathLen > 1 && normalizedPath.charAt(pathLen - 1) === '/') {\n      normalizedPath = normalizedPath.substr(0, pathLen - 1);\n      isSlashDropped = true;\n    }\n\n    for (var i = 0, l = normalizedPath.length; i < l; i++) {\n      states = recognizeChar(states, normalizedPath.charAt(i));\n      if (!states.length) {\n        break;\n      }\n    }\n\n    var solutions = [];\n    for (var _i4 = 0, _l = states.length; _i4 < _l; _i4++) {\n      if (states[_i4].handlers) {\n        solutions.push(states[_i4]);\n      }\n    }\n\n    states = sortSolutions(solutions);\n\n    var state = solutions[0];\n    if (state && state.handlers) {\n      if (isSlashDropped && state.regex.source.slice(-5) === '(.+)$') {\n        normalizedPath = normalizedPath + '/';\n      }\n\n      return findHandler(state, normalizedPath, queryParams);\n    }\n  };\n\n  return RouteRecognizer;\n}();\n\nvar RecognizeResults = function RecognizeResults(queryParams) {\n  \n\n  this.splice = Array.prototype.splice;\n  this.slice = Array.prototype.slice;\n  this.push = Array.prototype.push;\n  this.length = 0;\n  this.queryParams = queryParams || {};\n};\n\nfunction parse(route, names, types, caseSensitive) {\n  var normalizedRoute = route;\n  if (route.charAt(0) === '/') {\n    normalizedRoute = route.substr(1);\n  }\n\n  var results = [];\n\n  var splitRoute = normalizedRoute.split('/');\n  for (var i = 0, ii = splitRoute.length; i < ii; ++i) {\n    var segment = splitRoute[i];\n\n    var match = segment.match(/^:([^?]+)(\\?)?$/);\n    if (match) {\n      var _match = match,\n          _name = _match[1],\n          optional = _match[2];\n\n      if (_name.indexOf('=') !== -1) {\n        throw new Error('Parameter ' + _name + ' in route ' + route + ' has a default value, which is not supported.');\n      }\n      results.push(new DynamicSegment(_name, !!optional));\n      names.push(_name);\n      types.dynamics++;\n      continue;\n    }\n\n    match = segment.match(/^\\*(.+)$/);\n    if (match) {\n      results.push(new StarSegment(match[1]));\n      names.push(match[1]);\n      types.stars++;\n    } else if (segment === '') {\n      results.push(new EpsilonSegment());\n    } else {\n      results.push(new StaticSegment(segment, caseSensitive));\n      types.statics++;\n    }\n  }\n\n  return results;\n}\n\nfunction sortSolutions(states) {\n  return states.sort(function (a, b) {\n    if (a.types.stars !== b.types.stars) {\n      return a.types.stars - b.types.stars;\n    }\n\n    if (a.types.stars) {\n      if (a.types.statics !== b.types.statics) {\n        return b.types.statics - a.types.statics;\n      }\n      if (a.types.dynamics !== b.types.dynamics) {\n        return b.types.dynamics - a.types.dynamics;\n      }\n    }\n\n    if (a.types.dynamics !== b.types.dynamics) {\n      return a.types.dynamics - b.types.dynamics;\n    }\n\n    if (a.types.statics !== b.types.statics) {\n      return b.types.statics - a.types.statics;\n    }\n\n    return 0;\n  });\n}\n\nfunction recognizeChar(states, ch) {\n  var nextStates = [];\n\n  for (var i = 0, l = states.length; i < l; i++) {\n    var state = states[i];\n    nextStates.push.apply(nextStates, state.match(ch));\n  }\n\n  return nextStates;\n}\n\nfunction findHandler(state, path, queryParams) {\n  var handlers = state.handlers;\n  var regex = state.regex;\n  var captures = path.match(regex);\n  var currentCapture = 1;\n  var result = new RecognizeResults(queryParams);\n\n  for (var i = 0, l = handlers.length; i < l; i++) {\n    var _handler = handlers[i];\n    var _names = _handler.names;\n    var _params = {};\n\n    for (var j = 0, m = _names.length; j < m; j++) {\n      _params[_names[j]] = captures[currentCapture++];\n    }\n\n    result.push({ handler: _handler.handler, params: _params, isDynamic: !!_names.length });\n  }\n\n  return result;\n}\n\nfunction addSegment(currentState, segment) {\n  var firstState = currentState.put({ validChars: '/' });\n  var nextState = firstState;\n  segment.eachChar(function (ch) {\n    nextState = nextState.put(ch);\n  });\n\n  return [firstState, nextState];\n}","import { autoinject, LogManager } from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { PublicHttpClient } from 'common/services/public-http-client';\nimport { Person } from 'models/test-person/person';\n\n@autoinject()\nexport class PublicPersonService {\n\n  private logger: Logger;\n\n  constructor(private publicHttpClient: PublicHttpClient) {\n    this.logger = LogManager.getLogger('PublicPersonService');\n  }\n\n  public async createPublicPerson(personData: Person, token: string, recaptchaToken?: string): Promise<any> {\n    try {\n      this.logger.info('Creating public person with activation token');\n      \n      if (!token || !token.trim()) {\n        throw new Error('Token is required for person creation');\n      }\n      \n      if (!personData || !personData.firstName || !personData.lastName || !personData.email) {\n        throw new Error('Required person data is missing');\n      }\n      \n      let payload: any = personData;\n      if (recaptchaToken) {\n        payload = {\n          ...personData,\n          recaptchaToken: recaptchaToken\n        };\n      }\n      \n      const response = await this.publicHttpClient.post(`publicperson/create-by-activation-url?token=${encodeURIComponent(token)}`, payload);\n      \n      this.logger.info('Person created successfully');\n      return response;\n      \n    } catch (error) {\n      this.logger.error('Failed to create public person:', error);\n      throw error;\n    }\n  }\n\n  public async getCountries(): Promise<any> {\n    try {\n      return await this.publicHttpClient.get('publicperson/country');\n    } catch (error) {\n      this.logger.error('Failed to load countries:', error);\n      throw new Error('Failed to load country list. Please try again.');\n    }\n  }\n\n  public async validateToken(token: string): Promise<any> {\n    try {\n      this.logger.info('Validating activation token');\n      \n      if (!token || !token.trim()) {\n        throw new Error('Token is required for validation');\n      }\n      \n      const response = await this.publicHttpClient.post(`publicperson/validate-token?token=${encodeURIComponent(token)}`, {});\n      \n      this.logger.info('Token validation completed:', response);\n      return response;\n      \n    } catch (error) {\n      this.logger.error('Failed to validate token:', error);\n      throw error;\n    }\n  }\n}","import { autoinject } from 'aurelia-framework';\nimport { HttpClient } from 'aurelia-fetch-client';\nimport config from 'config.js';\nimport { buildQueryString } from 'aurelia-path';\nimport extend from 'extend';\n\n@autoinject()\nexport class PublicHttpClient extends HttpClient {\n\n  constructor() {\n    super();\n    \n    // Configure client for public endpoints\n    const backendUrl = config.URLS_BACKEND;\n    this.baseUrl = `${backendUrl}/api/v1/`;\n    \n    this.configure(x => {\n      x.withDefaults({\n        credentials: 'same-origin',\n        headers: {\n          'Accept': 'application/json',\n          'Content-Type': 'application/json',\n          'X-Requested-With': 'Fetch'\n        }\n      });\n    });\n  }\n\n  public async get(path: string): Promise<any> {\n    try {\n      const response = await this.fetch(path);\n      \n      if (response.status >= 200 && response.status < 400) {\n        return await response.json().catch(() => null);\n      } else {\n        throw new Error(`HTTP Error ${response.status}: ${response.statusText}`);\n      }\n    } catch (error) {\n      console.error('PublicHttpClient GET error:', error);\n      throw error;\n    }\n  }\n\n  public async post(path: string, body: any): Promise<any> {\n    try {\n      const response = await this.fetch(path, {\n        method: 'POST',\n        body: JSON.stringify(body)\n      });\n      \n      if (response.status >= 200 && response.status < 400) {\n        return await response.json().catch(() => null);\n      } else {\n        throw new Error(`HTTP Error ${response.status}: ${response.statusText}`);\n      }\n    } catch (error) {\n      console.error('PublicHttpClient POST error:', error);\n      throw error;\n    }\n  }\n\n  public async create(path: string, body: any): Promise<any> {\n    return await this.post(path, body);\n  }\n}","import { autoinject } from \"aurelia-framework\";\n\n@autoinject\nexport class SalesIq {\n\n  private setupScript: HTMLScriptElement;\n  private beacon: HTMLScriptElement;\n\n  constructor() {\n  }\n\n  public async attached(src: string) {\n    this.setupScript = document.createElement('script');\n    this.setupScript.innerHTML = src;\n\n    document.body.appendChild(this.setupScript);\n\n    this.beacon = document.createElement('script');\n\n    this.beacon.onload = () => {\n    if (window['salesiq_modal_loaded']) {\n        window['salesiq_modal_loaded'] = false;\n        window['SalesiqChat'].stop();\n    }\n    window['SalesiqChat'].run();\n    };\n    document.body.appendChild(this.beacon);\n  }\n}\n\n","import { autoinject } from \"aurelia-framework\";\n\n@autoinject\nexport class SurveyZoho {\n\n\n  constructor() {\n  }\n\n  public async attached(src: string) {\n    if (src) {\n      const scriptId = 'zoho-survey-script';\n      if (!document.getElementById(scriptId)) {\n        const script = document.createElement('script');\n        script.id = scriptId;\n        script.type = 'text/javascript';\n        script.text = src;\n        document.body.appendChild(script);\n      }\n    }\n  }\n\n}\n\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\n\n@autoinject()\nexport class CompanyTestPlanService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"CompanyTestPlanService\");\n  }\n\n  public async isResultsExport(): Promise<boolean> {\n    return await this.client.get(\"companytestplan/is-results-export\")\n      .then((response: boolean) => {\n        return response;\n      });\n  }\n}\n","\nimport { DiscType } from \"../../questionaries/discType\";\nimport { Sheet } from \"../../test-core/sheets/sheet\";\nimport { Parameter } from \"./parameter\";\nimport { Adjustment } from \"models/adjustment/adjustment\";\nimport { ReportActivation } from \"./reportActivation\";\nimport { ReportQuestionaryTeam } from \"./reportQuestionaryTeam\";\nimport { ReportCompetence } from \"./reportCompetence\";\n\nexport class Report {\n\n  id: number;\n\n  companyId: number;\n\n  // requered parameters\n  reportTemplateId: number;\n\n  languageId?: number;\n\n  // optional parameters \n  discType?: DiscType;\n\n  // report generated to a person\n  personId?: number;\n\n  // report generated to a position\n  positionId?: number;\n\n  // report generated to a team\n  teamId?: number;\n\n  // report generated to an organization\n  organizationId?: number;\n\n  // compare to\n  compareToPersonId?: number;\n\n  compareToPositionId?: number;\n\n  compareToTeamId?: number;\n\n  compateToOrganizationId?: number;\n\n  activationId?: number;\n\n\n  // lists\n  sheetIds: number[] = [];\n\n  observerIds: number[] = [];\n\n  peopleIds: number[] = [];\n\n  oneOrTwoPeopleIds: number[] = [];\n\n  twoPeopleIds: number[] = [];\n\n  threePeopleIds: number[] = [];\n\n  positionIds: number[] = [];\n\n  activationQuestionaryIds: number[] = [];\n\n  adjustments: Adjustment[] = [];\n\n  competenceIds: number[] = [];\n\n  parameters: Parameter[] = [];\n\n  sheets: Sheet[] =[];\n\n  activations: ReportActivation[] = [];\n  \n  questionariesTeam: ReportQuestionaryTeam[] = [];\n\n  competences: ReportCompetence[] = [];\n  \n  // aux\n  reportTemplateName: string;\n\n  createdByName: string;\n\n  createdOn: number;\n}\n","'use strict';\n\nfunction isUndefined(value) {\n  return value === undefined;\n}\n\nfunction isNull(value) {\n  return value === null;\n}\n\nfunction isObject(value) {\n  return value === Object(value);\n}\n\nfunction isArray(value) {\n  return Array.isArray(value);\n}\n\nfunction isDate(value) {\n  return value instanceof Date;\n}\n\nfunction isBlob(value) {\n  return (\n    value &&\n    typeof value.size === 'number' &&\n    typeof value.type === 'string' &&\n    typeof value.slice === 'function'\n  );\n}\n\nfunction isFile(value) {\n  return (\n    isBlob(value) &&\n    (typeof value.lastModifiedDate === 'object' ||\n      typeof value.lastModified === 'number') &&\n    typeof value.name === 'string'\n  );\n}\n\nfunction isFormData(value) {\n  return value instanceof FormData;\n}\n\nfunction objectToFormData(obj, cfg, fd, pre) {\n  if (isFormData(cfg)) {\n    pre = fd;\n    fd = cfg;\n    cfg = null;\n  }\n\n  cfg = cfg || {};\n  cfg.indices = isUndefined(cfg.indices) ? false : cfg.indices;\n  cfg.nulls = isUndefined(cfg.nulls) ? true : cfg.nulls;\n  fd = fd || new FormData();\n\n  if (isUndefined(obj)) {\n    return fd;\n  } else if (isNull(obj)) {\n    if (cfg.nulls) {\n      fd.append(pre, '');\n    }\n  } else if (isArray(obj)) {\n    if (!obj.length) {\n      var key = pre + '[]';\n\n      fd.append(key, '');\n    } else {\n      obj.forEach(function(value, index) {\n        var key = pre + '[' + (cfg.indices ? index : '') + ']';\n\n        objectToFormData(value, cfg, fd, key);\n      });\n    }\n  } else if (isDate(obj)) {\n    fd.append(pre, obj.toISOString());\n  } else if (isObject(obj) && !isFile(obj) && !isBlob(obj)) {\n    Object.keys(obj).forEach(function(prop) {\n      var value = obj[prop];\n\n      if (isArray(value)) {\n        while (prop.length > 2 && prop.lastIndexOf('[]') === prop.length - 2) {\n          prop = prop.substring(0, prop.length - 2);\n        }\n      }\n\n      var key = pre ? pre + '[' + prop + ']' : prop;\n\n      objectToFormData(value, cfg, fd, key);\n    });\n  } else {\n    fd.append(pre, obj);\n  }\n\n  return fd;\n}\n\nmodule.exports = objectToFormData;\n","export class UrlParamService {\n  public getCompanyIdFromPath(): number | null {\n    const path = window.location.pathname;\n    const match = path.match(/\\/company\\/(\\d+)/);\n    return match ? Number(match[1]) : null;\n  }\n\n  public getPersonIdFromPath(): number | null {\n    const path = window.location.pathname;\n    const match = path.match(/\\/person\\/(\\d+)/);\n    return match ? Number(match[1]) : null;\n  }\n}\n","import { autoinject } from 'aurelia-framework';\nimport { CompanyAppHttpClient } from 'common/services/company-app-http-client';\nimport { QuestionaryTalentsPrice } from 'models/test-core/report-templates/questionary-talents-price';\nimport { ReportTemplate } from 'models/test-core/report-templates/report-template';\n\n@autoinject\nexport class DefaultColorsReportsService {\n\n  constructor(public client: CompanyAppHttpClient) {\n  }\n\n  public async getBySheet(companyId: number, sheetId: number): Promise<ReportTemplate> {\n    return await this.client.get(`defaultcolorsreports/sheet/${sheetId}`)\n      .then((response: any) => {\n        return <ReportTemplate>response;\n      });\n  }\n\n  public async getQuestionariesWithColors(): Promise<QuestionaryTalentsPrice[]> {\n    return await this.client.get('defaultcolorsreports/questionaries-with-colors')\n      .then((response: any) => {\n        return <QuestionaryTalentsPrice[]>response;\n      });\n  }\n}","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { QuestionarySheet } from \"models/test-management/questionary-groups/questionary-sheet\";\nimport { Sheet } from \"models/test-core/sheets/sheet\";\n\n@autoinject()\nexport class QuestionarySheetService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"QuestionarySheetService\");\n  }\n\n  public async list(search: string): Promise<QuestionarySheet[]> {\n    return await this.client.post(\"questionarysheet/list\", { search })\n      .then((response: any) => {\n        return <QuestionarySheet[]>response;\n      });\n  }\n\n  public async getSheetsByQuestionary(questionaryId: number): Promise<Sheet[]> {\n    return await this.client.getById(\"questionarysheet\", questionaryId)\n      .then((response: any) => {\n        return <Sheet[]>response;\n      });\n  }\n\n  public async getPrincipalSheetByQuestionary(companyId: number, questionaryId: number): Promise<Sheet> {\n    return await this.client.get(`questionarysheet/principal/${questionaryId}`)\n      .then((response: any) => {\n        return <Sheet>response;\n      });\n  }\n\n}\n","import { Person } from 'models/test-person/person';\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Activation } from \"models/test-person/activation\";\nimport { ActivationThematicAssociate } from 'models/test-person/activationThematicAssociate';\n\n@autoinject()\nexport class ActivationThematicAssociateService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"ActivationThematicAssociateService\");\n  }\n\n  \n  public async getByActivationId(id: number): Promise<ActivationThematicAssociate[]> {\n    return await this.client.getById(`activationThematicAssociate/activation`, id)\n      .then((response: ActivationThematicAssociate[]) => {\n        return response;\n      });\n  }\n\n \n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { PersonResume } from \"models/test-person/personResume\";\n\n@autoinject()\nexport class PersonResumeService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"PersonResumeService\");\n  }\n\n  // public async list ( parameters: UxDatatableParameters, personId : number ): Promise<UxDatatableResponse> {\n  //   return await this.client.post( `PersonResume/list/${personId}`, parameters )\n  //     .then( ( response: any ) => {\n  //       return <UxDatatableResponse> response;\n  //     } );\n  // }\n\n  // public async getAll ( personId : number ): Promise<ActivationQuestionary[]> {\n  //   return await this.client.get( `PersonResume/${personId}` )\n  //     .then( ( response: any ) => {\n  //       return <ActivationQuestionary[]> response;\n  //     } );\n  // }\n\n  public async getById(personId: number): Promise<PersonResume> {\n    return await this.client.getById(`personresume/`, personId)\n      .then((response: PersonResume) => {\n        return response;\n      });\n  }\n\n  public async create(model: PersonResume, personId: number): Promise<PersonResume> {\n    return await this.client.create(`personresume/${personId}`, model)\n      .then((response: any) => {\n        return <PersonResume>response;\n      });\n  }\n\n  public async update(model: PersonResume, personId: number): Promise<void> {\n    return await this.client.updateById(`personresume`, model.id, null, model)\n      .then(() => null);\n  }\n\n}\n","import { Question } from 'models/questions/question';\nimport { ResponseQuestion } from \"./responseQuestion\";\n\nexport class ResponseQuestionary {\n  id: number;\n  activationQuestionaryId: number;\n  currentQuestionId: number;\n  currentQuestion: Question;\n  questionaryName: string;\n  averageTime: number;\n  questionsAnswered: number;\n  questionsToAnswer: number;\n  responseQuestions: ResponseQuestion[];\n\n  personId: number;\n  activationId: number;\n}\n","import { Activation } from \"./activation\";\nimport { Person } from \"./person\";\nimport { Questionary } from \"../questionaries/questionary\";\nimport { ActivationQuestionaryStatus } from \"./activationQuestionaryStatus\";\nimport { TestControlStatus } from \"models/test-core/test-control/testControlStatus\";\nimport { TestControlActivationQuestionary } from \"models/test-core/test-control/testControlActivationQuestionary\";\n\nexport class ActivationQuestionary {\n  id: number;\n  activationId: number;\n  activation: Activation;\n  personId: number;\n  person: Person;\n  questionaryId: number;\n  questionary: Questionary;\n  questionaryName: string;\n  applicationDate: Date;\n  perfilticURL: string;\n  \n  createdOn: Date;\n  createdByName: string;\n  \n  activationQuestionaryStatus: ActivationQuestionaryStatus;\n  canRequalify: boolean;\n\n  questionaryHasTestControl: boolean;\n  testControlStatusId?: TestControlStatus;\n  allowTestControl?: boolean;\n  resultMessage?: string;\n  testControlActivationQuestionaries: TestControlActivationQuestionary[];\n}\n","import { Disc } from \"../questionaries/disc\";\nimport { DiscType } from \"models/questionaries/discType\";\n\nexport class Result {\n  positionId?: number;\n  organizationId?: number;\n  personId?: number;\n  activationId?: number;\n  disc: Disc;\n  discType?: DiscType;\n  // thematicVariableId\n  value: number;\n  stamp?: string;\n  // VideoInterview\n  observation? :string;\n  topic? : number;\n  questionaryId?: number;\n}\n","import { inject } from 'aurelia-dependency-injection';\nimport CryptoJS from 'crypto-js';\nimport { Notification } from \"common/services/notification\";\n\n\n@inject()\nexport class CryptoService {\n\n  constructor(\n    private notification: Notification,){\n  }\n  key = \"ssadwawdthsdfgndfg3453453df\";\n\n  asignarKey(key): Promise<void> {\n    return new Promise<void>((resolve) => {\n      this.key = key;\n      resolve();\n    });\n  }  \n\n  async encode(data: string, key: string) {\n    try{\n      const strData = JSON.stringify(data);\n      return CryptoJS.AES.encrypt(strData, key).toString();\n    }\n    catch(error){\n      this.notification.error(error.message);\n    }\n  }\n\n  decode(data) {\n    try {\n      var bytes = CryptoJS.AES.decrypt(data, this.key);\n      var str = bytes.toString(CryptoJS.enc.Utf8);\n      return JSON.parse(str);\n    } catch(error) {\n      this.notification.error(error.message);\n    }\n  }\n\n  encodeSHA256(data) {\n    const strData = JSON.stringify(data);\n    return CryptoJS.SHA256(strData).toString();\n  }\n\n}\n","import { Test } from './../test-perfiltic/test';\n\nimport { PersonMode } from \"./personMode\";\nimport { Disc } from '../questionaries/disc';\nimport { PersonActivationType } from \"./personActivationType\";\nimport { Activation } from \"./activation\";\nimport { TestControlPerson } from 'models/test-core/test-control/testControlPerson';\n\n\nexport class Person {\n  id: number;\n  companyId: number;\n  companyName: string;\n  pictureUrl: string;\n  firstName: string;\n  lastName: string;\n  fullName: string;\n  initials: string;\n  userName: string;\n  password: string;\n  email: string;\n  phone: string;\n  document: string;\n  personMode: PersonMode;\n  firstPersonActivationType: PersonActivationType;\n  tags: string;\n  areTermsAccepted: boolean;\n  hasMicroSite: boolean;\n  indicativeCountry: number;\n  \n\n  highestDisc: Disc;\n  stamp: string;\n  lastDiscApplicationDate: Date;\n\n  createdOn: Date;\n  createdByName: string;\n  createdByEmail: string;\n\n  activateIfExists?: boolean;\n\n  activation: Activation;\n\n  // isApplicant?: boolean;\n  // is migrated\n  hasResume?: boolean;\n  isTheTalentSystem?: boolean;\n\n  // VideoInterview\n  hasVideoInterview?: boolean;\n  engineersTests: Test[] = [];\n\n  testControlPerson?: TestControlPerson;\n  hasTestControlInfo: boolean;\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { PositionExportByCompany } from \"models/test-position/positionExportByCompany\";\n\n@autoinject()\nexport class PositionExportByCompanyService {\n\n    private logger: Logger;\n\n    constructor(\n        public client: CompanyAppHttpClient,\n    ) {\n        this.logger = LogManager.getLogger(\"PositionExportByCompanyService\");\n    }\n\n    public async create(): Promise<PositionExportByCompany> {\n        return await this.client.post(\"positionexportbycompany\")\n            .then((response: any) => {\n                return <PositionExportByCompany>response;\n            });\n    }\n\n    public async getStatus(): Promise<PositionExportByCompany> {\n        return await this.client.get(\"positionexportbycompany\")\n            .then((response: any) => {\n                return <PositionExportByCompany>response;\n            });\n    }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { PositionEvaluator } from \"../../../../models/test-position/positionEvaluator\";\nimport { BulkActivation } from \"models/test-person/bulkActivation\";\n\n@autoinject()\nexport class PositionEvaluatorService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"PositionEvaluatorService\");\n  }\n\n  public async list(parameters: UxDatatableParameters, positionId: number): Promise<UxDatatableResponse> {\n    return await this.client.post(`positionevaluator/list/${positionId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getAll(positionId: number): Promise<PositionEvaluator[]> {\n    return await this.client.get(`positionevaluator/get-all/${positionId}`)\n      .then((response: any) => {\n        return <PositionEvaluator[]>response;\n      });\n  }\n\n  public async getById(id: number): Promise<PositionEvaluator> {\n    return await this.client.getById(`positionevaluator`, id)\n      .then((response: PositionEvaluator) => {\n        return response;\n      });\n  }\n\n  public async create(model: PositionEvaluator): Promise<PositionEvaluator> {\n    return await this.client.create(`positionevaluator/${model.positionId}`, model)\n      .then((response: any) => {\n        return <PositionEvaluator>response;\n      });\n  }\n\n  public async update(model: PositionEvaluator): Promise<void> {\n    return await this.client.updateById(`positionevaluator`, model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(`positionevaluator`, id)\n      .then(() => null);\n  }\n\n  public async getWeightAllEvaluators(positionId: number): Promise<number> {\n    return await this.client.get(`positionevaluator/get-weight-all-evaluators/${positionId}`)\n      .then((response: any) => {\n        return <number>response;\n      });\n  }\n\n  public async createBulkActivation(model: BulkActivation): Promise<BulkActivation> {\n\n    let formData = new FormData();\n\n    let filedata = null;\n    if (model.filedata) {\n      filedata = model.filedata[0];\n    }\n\n    formData.append('filedata', filedata);\n    formData.append('filename', model.fileName);\n    formData.append('name', model.name);\n    return await this.client.requestFormData(\"PUT\", `positionevaluator/bulk-activation/${model.positionId}`, formData)\n      .then((response: any) => {\n        return <BulkActivation>response;\n      });\n  }\n\n}\n","import { Activation } from 'models/test-person/activation';\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\n\n\n@autoinject()\nexport class TeamPersonActivationService {\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n  }\n\n  public async getByPersonId(personId: number): Promise<Array<Activation>> {\n    return await this.client.get(`teampersonactivation/${personId}`)\n      .then((response: any) => {\n        return <Array<Activation>>response;\n      });\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { TeamEvaluator } from \"models/team/teamEvaluator\";\n\n\n@autoinject()\nexport class TeamEvaluatorService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"TeamEvaluatorService\");\n  }\n\n  public async list(parameters: UxDatatableParameters, activationId: number): Promise<UxDatatableResponse> {\n    return await this.client.post(`teamevaluator/list/${activationId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getAll(teamId: number): Promise<TeamEvaluator[]> {\n    return await this.client.get(`teamevaluator/get-all/${teamId}`)\n      .then((response: any) => {\n        return <TeamEvaluator[]>response;\n      });\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(`teamevaluator`, id)\n      .then(() => null);\n  }\n\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { OrganizationEvaluator } from \"models/test-organization/organizationEvaluator\";\nimport { BulkActivation } from \"models/test-person/bulkActivation\";\n\n@autoinject()\nexport class OrganizationEvaluatorService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"OrganizationEvaluatorService\");\n  }\n\n  public async list(parameters: UxDatatableParameters, organizationId: number): Promise<UxDatatableResponse> {\n    return await this.client.post(`organizationevaluator/list/${organizationId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getAll(organizationId: number): Promise<OrganizationEvaluator[]> {\n    return await this.client.get(`organizationevaluator/get-all/${organizationId}`)\n      .then((response: any) => {\n        return <OrganizationEvaluator[]>response;\n      });\n  }\n\n  public async getById(id: number): Promise<OrganizationEvaluator> {\n    return await this.client.getById(`organizationevaluator`, id)\n      .then((response: OrganizationEvaluator) => {\n        return response;\n      });\n  }\n\n  public async create(model: OrganizationEvaluator): Promise<OrganizationEvaluator> {\n    return await this.client.create(`organizationevaluator/${model.organizationId}`, model)\n      .then((response: any) => {\n        return <OrganizationEvaluator>response;\n      });\n  }\n\n  public async update(model: OrganizationEvaluator): Promise<void> {\n    return await this.client.updateById(`organizationevaluator`, model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(`organizationevaluator`, id)\n      .then(() => null);\n  }  \n\n  public async getWeightAllEvaluators(organizationId: number): Promise<number> {\n    return await this.client.get(`organizationevaluator/get-weight-all-evaluators/${organizationId}`)\n      .then((response: any) => {\n        return <number>response;\n      });\n  }\n\n    \n  public async createBulkActivation(model: BulkActivation): Promise<BulkActivation> {\n\n    let formData = new FormData();\n\n    let filedata = null;\n    if (model.filedata) {\n      filedata = model.filedata[0];\n    }\n\n    formData.append('filedata', filedata);\n    formData.append('filename', model.fileName);\n    formData.append('name', model.name);\n\n    return await this.client.requestFormData(\"PUT\", `organizationevaluator/bulk-activation/${model.organizationId}`, formData)\n      .then((response: any) => {\n        return <BulkActivation>response;\n      });\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { TagManagment } from \"models/tag/tag-managment\";\n\n@autoinject()\nexport class TagManagmentService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"TagManagmentService\");\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"tagmanagment/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getByTagName(itemTag: TagManagment): Promise<TagManagment> {\n    return await this.client.post(\"tagmanagment/get-by-name\", itemTag)\n      .then((response: TagManagment) => {\n        return response;\n      });\n  }\n\n  public async updateOrDelete(model: TagManagment): Promise<void> {\n    return await this.client.updateById(\"tagmanagment\", model.tagId, null, model)\n      .then(() => null);\n  }\n}\n","import { autoinject } from \"aurelia-framework\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { Archive } from \"models/test-archive/archive\";\n\n\n@autoinject()\nexport class ArchiveService {\n\n\n  constructor (\n    public client: CompanyAppHttpClient ) {\n  }\n\n  public async list ( parameters: UxDatatableParameters ): Promise<UxDatatableResponse> {\n    return await this.client.post( \"archive/list\", parameters )\n      .then( ( response: any ) => {\n        return <UxDatatableResponse> response;\n      } );\n  }\n  \n  public async changeState(model: Archive): Promise<void> {\n    return await this.client.updateById(\"archive\", model.id, null, model)\n      .then(() => null);\n  }\n  \n}\n","import { autoinject, LogManager } from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { Permission } from \"models/groups/permission\";\n\n@autoinject\nexport class PermissionService {\n\n  private logger: Logger;\n\n  constructor(\n    private client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger('PermissionService');\n  }\n\n  public async getAll(): Promise<Permission[]> {\n    return await this.client.get('permission')\n      .then((response: Permission[]) => {\n        return response;\n      });\n  }\n}\n","import { CompanyAppHttpClient } from 'common/services/company-app-http-client';\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { AgreementTermsOfPay } from 'models/agreements/agreementTermsOfPay';\n\n@autoinject()\nexport class AgreementTermsOfPayService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"AgreementTermsOfPay\");\n  }\n\n  public async getById(agreementId: number): Promise<AgreementTermsOfPay> {\n    return await this.client.getById(\"agreementTermsOfPay\", agreementId)\n      .then((response: any) => {\n        return <AgreementTermsOfPay>response;\n      });\n  }\n\n  public async create(model: AgreementTermsOfPay): Promise<AgreementTermsOfPay> {\n    return await this.client.create(\"agreementTermsOfPay\", model)\n      .then((response: any) => {\n        return <AgreementTermsOfPay>response;\n      });\n  }\n\n  public async update(model: AgreementTermsOfPay): Promise<void> {\n    return await this.client.updateById(\"agreementTermsOfPay\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(\"agreementTermsOfPay\", id)\n      .then(() => null);\n  }\n}\n","import { CompanyAppHttpClient } from 'common/services/company-app-http-client';\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { AgreementCustomerReq } from 'models/agreements/agreementCustomerReq';\n\n@autoinject()\nexport class AgreementCustomerReqService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"AgreementCustomerReq\");\n  }\n\n  public async getById(agreementId: number): Promise<AgreementCustomerReq> {\n    return await this.client.getById(\"agreementCustomerReq\", agreementId)\n      .then((response: any) => {\n        return <AgreementCustomerReq>response;\n      });\n  }\n\n  public async create(model: AgreementCustomerReq): Promise<AgreementCustomerReq> {\n    return await this.client.create(\"agreementCustomerReq\", model)\n      .then((response: any) => {\n        return <AgreementCustomerReq>response;\n      });\n  }\n\n  public async update(model: AgreementCustomerReq): Promise<void> {\n    return await this.client.updateById(\"agreementCustomerReq\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(\"agreementCustomerReq\", id)\n      .then(() => null);\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { Questionary } from \"models/questionaries/questionary\";\n\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { QuestionaryLocalization } from \"models/questionaries/questionaryLocalization\";\n\n@autoinject()\nexport class QuestionaryService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient,\n    public currentQuestionary: Questionary) {\n\n    this.logger = LogManager.getLogger(\"QuestionariesService\");\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"questionary/list\", parameters)\n      .then(response => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getAll(): Promise<Questionary[]> {\n    return await this.client.get(\"questionary\")\n      .then(response => {\n        return <Questionary[]>response;\n      });\n  }\n\n  public async getById(id: number): Promise<Questionary> {\n    // this.logger.info(\"id: \" +  id); \n    return await this.client.getById(\"questionary\",id)\n      .then(response => {\n        return <Questionary>response;\n      });\n  }\n\n  public async create(model: Questionary): Promise<Questionary> {\n    return await this.client.create(\"questionary\", model)\n      .then(response => {\n        return <Questionary>response;\n      });\n  }\n\n  public async getAllTranslationsByQuestionary(model: Questionary): Promise<Questionary[]> {\n    return await this.client.post(\"questionary/get-all-translations-by-questionary\", model)\n      .then((response: Questionary[]) => {\n        return response;\n      });\n  }\n\n  public async createLocalization(model: QuestionaryLocalization): Promise<QuestionaryLocalization> {\n    return await this.client.post(\"questionary/createLocalization\", model)\n      .then(() => null);\n  }\n\n  public async update(model: Questionary): Promise<Questionary> {\n    return await this.client.updateById(\"questionary\",model.id, null, model)\n      .then(response => {\n        return <Questionary>response;\n      });\n  }\n\n  public async updateLocalization(model: QuestionaryLocalization): Promise<QuestionaryLocalization> {\n    return await this.client.update(`questionary/update-localization`, null, model)\n      .then(response => {\n        return <QuestionaryLocalization>response;\n      });\n  }\n\n  public async delete(id: number): Promise<void> {\n    // this.logger.info(\"id to delete: \" +  id);\n    return await this.client.deleteById(\"questionary\",id)\n      .then(() => null);\n  }\n\n  public async deleteLocalization(id: string): Promise<void> {\n    \n    return await this.client.delete(`questionary/delete-localization/${id}`)\n      .then(() => null);\n  }\n\n  public async changeState(id: number): Promise<void> {\n    // this.logger.info(\"id to delete: \" +  id);\n    return await this.client.post(`questionary/change-state/${id}`)\n      .then(() => null);\n  }\n\n  public async getCompetencesQuestionaries(): Promise<Questionary[]> {\n    return await this.client.get(\"questionary/get-competences-questionaries\")\n      .then((response: Questionary[]) => {\n        return response;\n      });\n  }\n\n}\n","import { LogManager, autoinject } from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { BusinessCompany } from 'models/franchises/businessCompany';\n\n@autoinject()\nexport class BusinessCompanyService {\n  private logger: Logger;\n\n  constructor(\n    private client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger('BusinessCompanyService');\n  }\n\n  // public async list(companyId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n  //   return await this.client.post(`businesscompany/list/${companyId}`, parameters)\n  //     .then(response => {\n  //       return <UxDatatableResponse>response;\n  //     });\n  // }\n\n  public async getAll(franchiseId: number): Promise<BusinessCompany[]> {\n    return await this.client.get(`businesscompany/get-all/${franchiseId}`)\n      .then((response: BusinessCompany[]) => {\n        return response;\n      })\n  }\n\n  // public async getById(id: number): Promise<Contact> {\n  //   return await this.client.getById(\"contact\", id)\n  //     .then(response => {\n  //       return <Contact>response;\n  //     });\n  // }\n\n  // public async create(model: Contact): Promise<Contact> {\n  //   return await this.client.create(`contact/${model.companyId}`, model)\n  //     .then(response => {\n  //       return <Contact>response;\n  //     });\n  // }\n\n  // public async update(model: Contact): Promise<Contact> {\n  //   return await this.client.updateById('contact', model.id, null, model)\n  //     .then(response => {\n  //       return <Contact>response;\n  //     });\n  // }\n\n  // public async delete(id: number): Promise<void> {\n  //   return await this.client.deleteById('contact', id)\n  //     .then(() => null);\n  // }\n\n}\n","import { LogManager, autoinject } from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Contact } from 'models/contacts/contact';\nimport { BankInformation } from 'models/franchises/bankInformation';\n\n@autoinject()\nexport class BankInformationService {\n  private logger: Logger;\n\n  constructor(\n    private client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger('BankInformationService');\n  }\n\n  // public async list(companyId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n  //   return await this.client.post(`businesscompany/list/${companyId}`, parameters)\n  //     .then(response => {\n  //       return <UxDatatableResponse>response;\n  //     });\n  // }\n\n  public async getAll(businessCompanyId: number): Promise<BankInformation[]> {\n    return await this.client.get(`bankinformation/get-all/${businessCompanyId}`)\n      .then((response: BankInformation[]) => {\n        return response;\n      })\n  }\n\n  // public async getById(id: number): Promise<Contact> {\n  //   return await this.client.getById(\"contact\", id)\n  //     .then(response => {\n  //       return <Contact>response;\n  //     });\n  // }\n\n  // public async create(model: Contact): Promise<Contact> {\n  //   return await this.client.create(`contact/${model.companyId}`, model)\n  //     .then(response => {\n  //       return <Contact>response;\n  //     });\n  // }\n\n  // public async update(model: Contact): Promise<Contact> {\n  //   return await this.client.updateById('contact', model.id, null, model)\n  //     .then(response => {\n  //       return <Contact>response;\n  //     });\n  // }\n\n  // public async delete(id: number): Promise<void> {\n  //   return await this.client.deleteById('contact', id)\n  //     .then(() => null);\n  // }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { Activity } from 'models/agreements/activity';\n\n@autoinject()\nexport class ActivityService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"Activity\");\n  }\n\n  public async list(agreementId:number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`agreementactivity/list/${agreementId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  // public async getAll(agreementId:number): Promise<Activity[]> {\n  //   return await this.client.get(`activity/get-all/${agreementId}`)\n  //     .then((response: any) => {\n  //       return <Activity[]>response;\n  //     });\n  // }\n\n  public async getById(id: number): Promise<Activity> {\n    return await this.client.getById(\"agreementactivity\", id)\n      .then((response: any) => {\n        return <Activity>response;\n      });\n  }\n\n  public async create(model: Activity): Promise<Activity> {\n    return await this.client.create(\"agreementactivity\", model)\n      .then((response: any) => {\n        return <Activity>response;\n      });\n  }\n\n  public async update(model: Activity): Promise<void> {\n    return await this.client.updateById(\"agreementactivity\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(\"agreementactivity\", id)\n      .then(() => null);\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { AgreementFile } from 'models/agreements/agreementFile';\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\n\n@autoinject()\nexport class AgreementFileService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"AgreementFileService\");\n  }\n\n  public async getById(id: number): Promise<AgreementFile> {\n    return await this.client.getById(\"agreementfile\", id)\n      .then((response: AgreementFile) => {\n        return response;\n      });\n  }\n\n  public async list(agreementId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`agreementfile/list/${agreementId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async create(model: AgreementFile): Promise<AgreementFile> {\n\n    let formData = new FormData();\n\n    let file = null;\n    if(model.file){\n      file = model.file[0];\n    }\n\n    formData.append('file', file);\n    formData.append('fileName', model.fileName);\n    formData.append('agreementId', model.agreementId.toString());\n\n    return await this.client.requestFormData(\"POST\", `agreementfile`, formData)\n      .then((response) => { return <AgreementFile>response; });\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(\"agreementfile\", id)\n      .then(() => null);\n  }\n  public async getMediaByAgreementFileId(id: number): Promise<string> {\n    return await this.client.get(`agreementFile/get-media-by-agreementFileId/${id}`)\n    .then((response: any) => {\n      return <string>response;\n    });\n  }\n\n}\n\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { CompanyDetail } from \"models/companies/company-detail\";\nimport { CompanyDetailMaster } from \"models/companies/company-detail-master\";\n\n@autoinject()\nexport class CompanyDetailMasterService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"CompanyDetailMasterService\");\n  }\n\n  public async getById(id: number): Promise<CompanyDetailMaster> {\n    return await this.client.getById(\"companydetailmaster\", id)\n      .then((response: any) => {\n        return <CompanyDetailMaster>response;\n      });\n  }\n\n  public async update(model: CompanyDetailMaster): Promise<CompanyDetailMaster> {\n    return await this.client.updateById(\"companydetailmaster\", model.id, null, model)\n    .then((response: any) => {\n      return <CompanyDetailMaster>response;\n    });\n  }\n\n}\n","import { inject, newInstance, LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { PasswordPolicy } from \"models/companies/password-policy\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n@autoinject\nexport class PasswordPolicyService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"PasswordPolicyService\");\n  }\n\n\n  public async getById(id: number): Promise<PasswordPolicy> {\n    return await this.client.getById(\"passwordpolicy\", id)\n      .then((response: any) => {\n        return <PasswordPolicy>response;\n      });\n  }\n\n  public async create(model: PasswordPolicy): Promise<PasswordPolicy> {\n    return await this.client.create(\"passwordpolicy\", model)\n      .then((response: any) => {\n        return <PasswordPolicy>response;\n      });\n  }\n\n  public async update(model: PasswordPolicy): Promise<void> {\n    return await this.client.updateById(\"passwordpolicy\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(\"passwordpolicy\", id)\n      .then(() => null);\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\n\n@autoinject()\nexport class TalentPlanService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"TalentPlanService\");\n  }\n\n  public async getTestPlanItemsByPlanId(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`talentplan/items`, parameters)\n      .then(response => {\n        return <UxDatatableResponse>response;\n      });\n  }\n}\n","import { LogManager,autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { Activation } from \"models/test-person/activation\";\nimport { BukProcessInfo } from \"models/test-person/bukProcessInfo\";\n\n@autoinject()\nexport class BukService {\n\n  private logger: Logger;\nconstructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"ActivationService\");\n  }\n  public async getByProcessName(id: string): Promise<BukProcessInfo> {\n    return await this.client.get(`buk/get-process-by-id`, id)\n      .then((response: BukProcessInfo) => {\n        return response;\n      });\n  }\n  public async hasBukConnection(): Promise<boolean> {\n    return await this.client.get(`buk/has-buk-connection`)\n      .then((response: boolean) => {\n        return response;\n      });\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { CompanyDiscStyle } from \"models/test-management/disc-styles/company-disc-style\";\n\n@autoinject()\nexport class CompanyDiscStyleService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"CompanyDiscStyleService\");\n  }\n\n  public async list(languageId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`companydiscstyle/language/${languageId}/list`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async update( model: CompanyDiscStyle): Promise<CompanyDiscStyle> {\n    return await this.client.updateById(\"companydiscstyle\", model.id, null, model)\n      .then((response) => { return <CompanyDiscStyle>response; });\n  }\n\n}\n","export enum VideoInterviewConfigurationStatus {\n    NoEvaluationQuestions,\n    ValidConfiguration,\n    MaximumReached\n}\n","export enum Role {\n  Admin = 1,\n  Core = 2,\n  MasterFranchise = 3,\n  Franchise = 4,\n  Master = 5,\n  Customer = 6,\n  Applicant = 7,\n};\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { ReportTemplate } from \"models/test-core/report-templates/report-template\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n@autoinject()\nexport class ReportTemplatePredictorService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"ReportTemplatePredictorService\");\n  }\n\n  public async getAll(): Promise<ReportTemplate[]> {\n    return await this.client.get(\"reporttemplate\")\n      .then((response: ReportTemplate[]) => {\n        return response;\n      });\n  }\n\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"reporttemplatepredictor/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getById(id: number): Promise<ReportTemplate> {\n    //  this.client.post(`categorysheet/list/${reportTemplateId}/${languageId}`, { search })\n    return await this.client.getById(\"reporttemplatepredictor\", id)\n      .then((response: any) => {\n        return <ReportTemplate>response;\n      });\n  }\n\n  public async create(model: ReportTemplate): Promise<ReportTemplate> {\n    return await this.client.create(\"reporttemplatepredictor\", model)\n      .then((response: any) => {\n        return <ReportTemplate>response;\n      });\n  }\n\n  public async update(model: ReportTemplate): Promise<void> {\n    return await this.client.updateById(\"reporttemplatepredictor\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(\"reporttemplatepredictor\", id)\n      .then(() => null);\n    }\n  \n    public async changeState(languageId: number, hasPredictor: boolean): Promise<void> {\n      return await this.client.post(`reporttemplatepredictor/change-state/${languageId}/${hasPredictor}`)\n        .then(() => null);\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n@autoinject()\nexport class DefaultColorsReportsService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"DefaultColorsReportsService\");\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"defaultcolorsreports/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(\"defaultcolorsreports\", id)\n      .then(() => null);\n  }\n  \n  public async changeState(languageId: number, hasDefaultReports: boolean): Promise<void> {\n    return await this.client.post(`defaultcolorsreports/change-state/${languageId}/${hasDefaultReports}`)\n      .then(() => null);\n  }\n}","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { MessageSummaryReport } from \"models/messages/message-summary-report\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\n\n@autoinject\nexport class MessageSummaryService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"MessageSummaryService\");\n  }\n\n  public async get(): Promise<MessageSummaryReport> {\n    return await this.client.get(\"messagesummaryreport\")\n      .then((response: any) => {\n        return <MessageSummaryReport>response;\n      });\n  }\n\n  public async create(model: MessageSummaryReport): Promise<MessageSummaryReport> {\n    return await this.client.create(\"messagesummaryreport\", model)\n      .then((response: any) => {\n        return <MessageSummaryReport>response;\n      });\n  }\n\n  public async update(model: MessageSummaryReport): Promise<void> {\n    return await this.client.update(\"messagesummaryreport\", null, model)\n      .then(() => null);\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UserApiApplication } from \"models/security/userApiApplication\";\n\n@autoinject\nexport class UserApiApplicationService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"UserApiApplicationService\");\n  }\n\n  public async getById(id: number): Promise<UserApiApplication> {\n    return await this.client.getById(\"userapiapplication\", id)\n      .then((response: UserApiApplication) => {\n        return response;\n      });\n  }\n\n  public async generate(id: number): Promise<UserApiApplication> {\n    return await this.client.post(`userapiapplication/generate/${id}`)\n      .then((response: UserApiApplication) => {\n        return response;\n      });\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { CompanyCompetence } from \"models/test-core/competences/company-competence\";\nimport { DichotomousCouple } from \"models/test-core/competences/dichotomous-couple\";\nimport { CheckStatusCompanyCompetence } from \"models/test-core/competences/check-status-company-competence\";\n\n@autoinject()\nexport class CoreCompanyCompetenceService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"CompanyDiscStyleService\");\n  }\n\n  public async list(parameters: UxDatatableParameters, questionaryId: number,languageId: number): Promise<UxDatatableResponse> {\n    let a = this.client.baseUrl \n    return await this.client.post(`corecompanycompetence/list/${questionaryId}/${languageId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async update(model: CompanyCompetence): Promise<CompanyCompetence> {\n    return await this.client.updateById(\"corecompanycompetence\", model.id, null, model)\n      .then((response) => { return <CompanyCompetence>response; });\n  }\n\n  public async changeState(model: CompanyCompetence): Promise<CompanyCompetence> {\n    return await this.client.post(`corecompanycompetence/change-state/${model.id}`, model)\n      .then((response) => { return <CompanyCompetence>response; });\n  }\n\n  public async changeAllState(questionaryId: number): Promise<CompanyCompetence> {\n    return await this.client.post(`corecompanycompetence/change-all-state/${questionaryId}`)\n      .then((response) => { return <CompanyCompetence>response; });\n  }\n\n  public async getHasAllActivateCompanyCompetences(questionaryId: number): Promise<CheckStatusCompanyCompetence> {\n    return await this.client.get(`corecompanycompetence/get-has-all-activate-company-competences/${questionaryId}`)\n      .then((response) => { return <CheckStatusCompanyCompetence>response; });\n  }\n\n  public async getDichotomousCouples(competenceId: number, questionaryId: number): Promise<DichotomousCouple[]> {\n    return await this.client.get(`corecompanycompetence/dichotomous-couples/${competenceId}/${questionaryId}`)\n      .then((response) => { return <DichotomousCouple[]>response; });\n  }\n}\n","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { Sheet } from \"models/test-core/sheets/sheet\";\nimport { SheetLanguage } from \"models/test-core/sheets/sheetLanguage\";\n\n\n@autoinject()\nexport class CoreSheetLanguageService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"CoreSheetService\");\n  }\n\n  // public async getById(id: number): Promise<SheetLocalization> {\n  //   return await this.client.getById(\"coresheet\", id)\n  //     .then((response: Sheet) => {\n  //       return response;\n  //     });\n  // }\n\n\n  // public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n  //   return await this.client.post(`coresheet/list`, parameters)\n  //     .then((response: any) => {\n  //       return <UxDatatableResponse>response;\n  //     });\n  // }\n\n  public async update(model: Sheet, languageId: number): Promise<SheetLanguage> {\n    let formData = new FormData();\n\n    let thumbnailImage = null;\n    if (model.sheetLanguages[0].thumbnailImage) {\n      thumbnailImage = model.sheetLanguages[0].thumbnailImage[0];\n    }\n\n    let image = null;\n    if (model.sheetLanguages[0].image) {\n      image = model.sheetLanguages[0].image[0];\n    }\n\n    formData.append('thumbnailImage', thumbnailImage);\n    formData.append('image', image);\n    // formData.append('fullDescription', model.fullDescription);\n\n    return await this.client.requestFormData(\"PUT\", `coresheetlanguage/${model.id}/${languageId}`, formData) //.updateById(\"coresheetlanguage\", model.id, null, model)\n      .then((response) => { return <SheetLanguage>response; });\n  }\n\n  // public async changeState(id: number): Promise<void> {\n  //   return await this.client.post(`coresheet/change-state/${id}`)\n  //     .then(() => null);\n  // }\n}\n\n","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { Inbox } from \"models/test-core/inbox/inbox\";\nimport { InboxByUser } from \"models/test-core/inbox/inboxByUser\";\n\n@autoinject()\nexport class InboxByUserService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"InboxByUserService\");\n  }\n\n  public async create(model: InboxByUser): Promise<InboxByUser> {\n    return await this.client.create(\"inboxByUser\", model)\n      .then((response: InboxByUser) => {\n        return response;\n      });\n  }\n\n  \n\n}\n","import { autoinject, LogManager } from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { Permission } from \"models/groups/permission\";\n\n@autoinject\nexport class CorePermissionService {\n\n  private logger: Logger;\n\n  constructor(\n    private client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger('CorePermissionService');\n  }\n\n  public async getAll(): Promise<Array<Permission>> {\n    return await this.client.get('corepermission')\n      .then((response: Permission[]) => {\n        return response;\n      });\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { Questionary } from 'models/questionaries/questionary';\n\n@autoinject()\nexport class PlanQuestionaryService {\n  private logger: Logger;\n\n  constructor(\n    private client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"PlanQuestionaryService\");\n  }\n\n  public async getMissingByPlan(planId: number): Promise<Questionary[]> {\n    return await this.client.get(`planquestionary/get-missing-by-plan/${planId}`)\n      .then((response: Questionary[]) => {\n        return response;\n      })\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { ReportTemplate } from \"models/test-core/report-templates/report-template\";\n\n@autoinject()\nexport class PlanReportService {\n  private logger: Logger;\n\n  constructor(\n    private client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"PlanReportService\");\n  }\n\n  public async getMissingByPlan(planId: number): Promise<ReportTemplate[]> {\n    return await this.client.get(`planreport/get-missing-by-plan/${planId}`)\n      .then((response: ReportTemplate[]) => {\n        return response;\n      })\n  }\n}\n","module.exports = global[\"$\"] = require(\"-!/app/node_modules/expose-loader/index.js?jQuery!./jquery.js\");","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { Questionary } from 'models/questionaries/questionary';\nimport { Sheet } from \"models/test-core/sheets/sheet\";\n\n@autoinject()\nexport class PlanSheetService {\n  private logger: Logger;\n\n  constructor(\n    private client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"PlanSheetService\");\n  }\n\n  public async getMissingByPlan(planId: number): Promise<Sheet[]> {\n    return await this.client.get(`plansheet/get-missing-by-plan/${planId}`)\n      .then((response: Sheet[]) => {\n        return response;\n      })\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { TestPlanItem } from \"models/plans/test-plan-item\";\n\n@autoinject()\nexport class TestPlanItemsService {\n\n  private logger: Logger;\n\n  constructor(\n    private client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"PlanTestModuleService\");\n  }\n\n  public async list(planId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`testplanitem/list/${planId}`, parameters)\n      .then(response => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getById(id: number): Promise<TestPlanItem> {\n    return await this.client.getById('testplanitem', id)\n      .then(response => {\n        return <TestPlanItem>response;\n      });\n  }\n\n  public async create(model: TestPlanItem): Promise<TestPlanItem> {\n    return await this.client.post('testplanitem', model)\n      .then(response => {\n        return <TestPlanItem>response;\n      });\n  }\n\n  public async update(model: TestPlanItem): Promise<TestPlanItem> {\n    return await this.client.updateById('testplanitem', model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.delete('testplanitem', id)\n      .then(() => null);\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { OtherPlanItem } from \"models/plans/other-plan-item\";\n\n@autoinject()\nexport class OtherPlanItemsService {\n\n  private logger: Logger;\n\n  constructor(\n    private client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"OtherPlanItemsService\");\n  }\n\n  async list(planId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`otherplanitem/list/${planId}`, parameters)\n      .then(response => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  async getById(id: number): Promise<OtherPlanItem> {\n    return await this.client.getById('otherplanitem', id)\n      .then(response => {\n        return <OtherPlanItem>response;\n      });\n  }\n\n  async create(model: OtherPlanItem): Promise<OtherPlanItem> {\n    return await this.client.post('otherplanitem', model)\n      .then(response => {\n        return <OtherPlanItem>response;\n      });\n  }\n\n  async update(model: OtherPlanItem): Promise<OtherPlanItem> {\n    return await this.client.updateById('otherplanitem', model.id, null, model)\n      .then(() => null);\n  }\n\n  async delete(id: number): Promise<void> {\n    return await this.client.delete('otherplanitem', id)\n      .then(() => null);\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { MessageAgreement } from \"models/messages/message-agreement\";\n\n@autoinject\nexport class MessageAgreementService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"MessageAgreementService\");\n  }\n\n  public async getById(id: number): Promise<MessageAgreement> {\n    return await this.client.getById(\"messageagreement\", id)\n      .then((response: any) => {\n        return <MessageAgreement>response;\n      });\n  }\n\n  public async create(model: MessageAgreement): Promise<MessageAgreement> {\n    return await this.client.create(\"messageagreement\", model)\n      .then((response: any) => {\n        return <MessageAgreement>response;\n      });\n  }\n\n  public async update(model: MessageAgreement): Promise<void> {\n    return await this.client.updateById(\"messageagreement\", model.franchiseId, null, model)\n      .then(() => null);\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { MessageTalent } from \"models/messages/message-talent\";\n\n@autoinject\nexport class MessageTalentService {\n  private logger: Logger;\n\n  constructor(\n    private client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"MessageTalentService\");\n  }\n\n  public async getById(id: number): Promise<MessageTalent> {\n    return await this.client.getById(\"messagetalent\", id)\n      .then((response: any) => {\n        return <MessageTalent>response;\n      });\n  }\n\n  public async create(model: MessageTalent): Promise<MessageTalent> {\n    return await this.client.create(\"messagetalent\", model)\n      .then((response: any) => {\n        return <MessageTalent>response;\n      });\n  }\n\n  public async update(model: MessageTalent): Promise<void> {\n    return await this.client.updateById(\"messagetalent\", model.franchiseId, null, model)\n      .then(() => null);\n  }\n}\n","import { QuestionaryConfiguration } from 'models/test-management/questionaries-configuration/questionary-configuration';\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\n\n@autoinject()\nexport class QuestionaryConfigurationWithoutCompanyService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n    this.logger = LogManager.getLogger(\"QuestionaryConfigurationWithoutCompanyService\");\n  }\n\n   public async getConfigurationWithoutCompanyByQuestionaryId(questionaryId: number): Promise<QuestionaryConfiguration> {\n    return await this.client.get(\"questionaryconfigurationwithoutcompany/get-configuration-by-questionary-id\", questionaryId)\n      .then((response: any) => {\n        return <QuestionaryConfiguration>response;\n      });\n  }\n    public async updateWithoutCompany(model: QuestionaryConfiguration): Promise<QuestionaryConfiguration> {\n    return await this.client.updateById(\"questionaryconfigurationwithoutcompany\", model.id, null, model)\n      .then((response) => { return <QuestionaryConfiguration>response; });\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { ArchetypeLocalization } from \"models/archetypes/archetype-localization\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { CatalogBase } from \"models/catalogs/catalog-base\";\n\n@autoinject()\nexport class ArchetypeLocalizationService{\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"ArchetypeService\");\n  }\n\n  public async getAll(): Promise<ArchetypeLocalization[]> {\n    return await this.client.get(\"archetypelocalization\")\n      .then((response: any) => {\n        return <ArchetypeLocalization[]>response;\n      });\n  }\n\n  public async getById(id: number): Promise<ArchetypeLocalization> {\n    return await this.client.getById(\"archetypelocalization\", id)\n      .then((response: any) => {\n        return <ArchetypeLocalization>response;\n      });\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"archetypelocalization/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n \n  public async create(model: ArchetypeLocalization): Promise<ArchetypeLocalization> {\n    return await this.client.create(\"archetypelocalization\", model)\n      .then((response: ArchetypeLocalization) => {\n        return response;\n      });\n  }\n\n  public async update(model: ArchetypeLocalization): Promise<void> {\n    return await this.client.updateById(\"archetypelocalization\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(\"archetypelocalization\", id)\n      .then(() => null);\n  }\n   \n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Position } from \"models/test-position/position\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { PositionLocalization } from \"models/test-position/positionLocalization\";\n\n@autoinject()\nexport class PositionLocalizationService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"PositionLocalizationService\");\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"positionLocalization/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n  \n  public async create(model: PositionLocalization): Promise<PositionLocalization> {\n    return await this.client.create(\"positionLocalization\", model)\n      .then((response: any) => {\n        return <PositionLocalization>response;\n      });\n  }\n\n  public async update(model: PositionLocalization): Promise<void> {\n    return await this.client.updateById(\"positionLocalization\", model.id, null, model)\n      .then(() => null);\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { HabeasDataCountry } from \"models/habeas-data-by-country/habeas-data-country\";\n\n@autoinject()\nexport class HabeasDataCountryService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"HabeasDataCountryService\");\n  }\n\n  public async getAll(): Promise<HabeasDataCountry[]> {\n    return await this.client.get(\"habeasdatacountry\")\n      .then((response: any) => {\n        return <HabeasDataCountry[]>response;\n      });\n  }\n\n  public async getByCountryAndLanguage(model: HabeasDataCountry): Promise<HabeasDataCountry> {\n    return await this.client.post(`habeasdatacountry/country-and-language`, model)\n      .then((response: any) => {\n        return <HabeasDataCountry>response;\n      });\n  }\n\n  public async getById(id: number): Promise<HabeasDataCountry> {\n    return await this.client.get(`habeasdatacountry/${id}`)\n      .then((response: any) => {\n        return <HabeasDataCountry>response;\n      });\n  }\n\n  public async updateOrCreate(model: HabeasDataCountry): Promise<HabeasDataCountry> {\n    return await this.client.updateById('habeasdatacountry', model.id, null, model)\n      .then(response => {\n        return <HabeasDataCountry>response;\n      });\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { UxDatatableResponse, UxDatatableParameters } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Localization } from \"models/localizations/localization\";\n\n@autoinject()\nexport class LocalizationService {\n  private logger: Logger;\n\n  constructor(\n    private client: AppHttpClient) {\n    this.logger = LogManager.getLogger(\"LocalizationService\");\n  }\n  \n\n  public async list(languageId: number,parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`localization/list/${languageId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  } \n\n  public async create(model: Localization): Promise<Localization> {\n    return await this.client.create(\"localization\", model)\n      .then((response: any) => {\n        return <Localization>response;\n      });\n  }\n\n\n  public async update(model: Localization): Promise<Localization> {\n    return await this.client.updateById(\"localization\", model.id, null, model)\n      .then(() => null);\n  }\n\n\n  public async getLabelByIdLanguage(idLanguage: number): Promise<UxDatatableResponse> {\n    return await this.client.getById(\"localization/list\", idLanguage)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getAll(): Promise<Localization[]> {\n    return await this.client.get(\"localization\")\n      .then((response: any) => {\n        return <Localization[]>response;\n      });\n  }\n}\n","\nexport function AggregateError(message, innerError, skipIfAlreadyAggregate) {\n  if (innerError) {\n    if (innerError.innerError && skipIfAlreadyAggregate) {\n      return innerError;\n    }\n\n    var separator = '\\n------------------------------------------------\\n';\n\n    message += separator + 'Inner Error:\\n';\n\n    if (typeof innerError === 'string') {\n      message += 'Message: ' + innerError;\n    } else {\n      if (innerError.message) {\n        message += 'Message: ' + innerError.message;\n      } else {\n        message += 'Unknown Inner Error Type. Displaying Inner Error as JSON:\\n ' + JSON.stringify(innerError, null, '  ');\n      }\n\n      if (innerError.stack) {\n        message += '\\nInner Error Stack:\\n' + innerError.stack;\n        message += '\\nEnd Inner Error Stack';\n      }\n    }\n\n    message += separator;\n  }\n\n  var e = new Error(message);\n  if (innerError) {\n    e.innerError = innerError;\n  }\n\n  return e;\n}\n\nexport var FEATURE = {};\n\nexport var PLATFORM = {\n  noop: function noop() {},\n  eachModule: function eachModule() {},\n  moduleName: function (_moduleName) {\n    function moduleName(_x) {\n      return _moduleName.apply(this, arguments);\n    }\n\n    moduleName.toString = function () {\n      return _moduleName.toString();\n    };\n\n    return moduleName;\n  }(function (moduleName) {\n    return moduleName;\n  })\n};\n\nPLATFORM.global = function () {\n  if (typeof self !== 'undefined') {\n    return self;\n  }\n\n  if (typeof global !== 'undefined') {\n    return global;\n  }\n\n  return new Function('return this')();\n}();\n\nexport var DOM = {};\nexport var isInitialized = false;\n\nexport function initializePAL(callback) {\n  if (isInitialized) {\n    return;\n  }\n  isInitialized = true;\n  if (typeof Object.getPropertyDescriptor !== 'function') {\n    Object.getPropertyDescriptor = function (subject, name) {\n      var pd = Object.getOwnPropertyDescriptor(subject, name);\n      var proto = Object.getPrototypeOf(subject);\n      while (typeof pd === 'undefined' && proto !== null) {\n        pd = Object.getOwnPropertyDescriptor(proto, name);\n        proto = Object.getPrototypeOf(proto);\n      }\n      return pd;\n    };\n  }\n\n  callback(PLATFORM, FEATURE, DOM);\n}\nexport function reset() {\n  isInitialized = false;\n}","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { ReportTemplate } from \"models/test-core/report-templates/report-template\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { DiscSelectionOptions } from \"models/test-core/report-templates/disc-selection-options/disc-selection-options\";\nimport { DiscSelectionOptionsRequest } from \"models/test-core/report-templates/disc-selection-options/disc-selection-options-request\";\n\n@autoinject()\nexport class ReportTemplateService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"ReportTemplateService\");\n  }\n\n  public async getAll(): Promise<ReportTemplate[]> {\n    return await this.client.get(\"reporttemplate\")\n      .then((response: ReportTemplate[]) => {\n        return response;\n      });\n  }\n\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"reporttemplate/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getById(id: number): Promise<ReportTemplate> {\n    //  this.client.post(`categorysheet/list/${reportTemplateId}/${languageId}`, { search })\n    return await this.client.getById(\"reporttemplate\", id)\n      .then((response: any) => {\n        return <ReportTemplate>response;\n      });\n  }\n\n  public async create(model: ReportTemplate): Promise<ReportTemplate> {\n    return await this.client.create(\"reporttemplate\", model)\n      .then((response: any) => {\n        return <ReportTemplate>response;\n      });\n  }\n\n  public async update(model: ReportTemplate): Promise<void> {\n    return await this.client.updateById(\"reporttemplate\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(\"reporttemplate\", id)\n      .then(() => null);\n  }\n\n  public async duplicate(id: number): Promise<ReportTemplate> {\n    return await this.client.post(\"reporttemplate/duplicate/\" + id, {})\n      .then((response: any) => {\n        return <ReportTemplate>response;\n      });\n  }\n\n  public async getDiscSelectionOptions(request: DiscSelectionOptionsRequest): Promise<DiscSelectionOptions> {\n    return await this.client.post(\"reporttemplate/disc-selection/options\", request)\n      .then((response: any) => {\n        return <DiscSelectionOptions>response;\n      });\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\n\nimport { Label } from \"models/localizations/label\";\nimport { UxDatatableResponse, UxDatatableParameters } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n@autoinject()\nexport class LabelService {\n  private logger: Logger;\n\n  constructor(\n    private client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"LabelService\");\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"label/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getById(id: number): Promise<Label> {\n    return await this.client.getById(\"label\", id)\n      .then((response: any) => {\n        return <Label>response;\n      });\n  }\n\n  public async update(model: Label): Promise<void> {\n    return await this.client.updateById(\"label\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async getAll(): Promise<Label[]> {\n    return await this.client.get(\"label\")\n      .then((response: any) => {\n        return <Label[]>response;\n      });\n  }\n\n\n  public async create(model: Label): Promise<Label> {\n    return await this.client.create(\"label\", model)\n      .then((response: any) => {\n        return <Label>response;\n      });\n  }\n\n  public async delete(id: number): Promise<void> {    \n    return await this.client.deleteById(\"label\", id)\n      .then(() => null);\n  } \n}\n","\n\nimport { I18N } from './i18n';\nimport { DOM } from 'aurelia-pal';\nimport { EventAggregator } from 'aurelia-event-aggregator';\n\nexport var BaseI18N = function () {\n  BaseI18N.inject = function inject() {\n    return [I18N, DOM.Element, EventAggregator];\n  };\n\n  function BaseI18N(i18n, element, ea) {\n    var _this = this;\n\n    \n\n    this.i18n = i18n;\n    this.element = element;\n\n    this.__i18nDisposer = ea.subscribe('i18n:locale:changed', function () {\n      _this.i18n.updateTranslations(_this.element);\n    });\n  }\n\n  BaseI18N.prototype.attached = function attached() {\n    this.i18n.updateTranslations(this.element);\n  };\n\n  BaseI18N.prototype.detached = function detached() {\n    this.__i18nDisposer.dispose();\n  };\n\n  return BaseI18N;\n}();","var _class, _temp;\n\n\n\nexport var Backend = (_temp = _class = function () {\n  Backend.with = function _with(loader) {\n    this.loader = loader;\n    return this;\n  };\n\n  function Backend(services) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    \n\n    this.init(services, options);\n    this.type = 'backend';\n  }\n\n  Backend.prototype.init = function init(services) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    this.services = services;\n    this.options = defaults(options, this.options || {}, getDefaults());\n  };\n\n  Backend.prototype.readMulti = function readMulti(languages, namespaces, callback) {\n    var loadPath = this.options.loadPath;\n\n    if (typeof this.options.loadPath === 'function') {\n      loadPath = this.options.loadPath(languages, namespaces);\n    }\n\n    var url = this.services.interpolator.interpolate(loadPath, { lng: languages.join('+'), ns: namespaces.join('+') });\n\n    this.loadUrl(url, callback);\n  };\n\n  Backend.prototype.read = function read(language, namespace, callback) {\n    var loadPath = this.options.loadPath;\n\n    if (typeof this.options.loadPath === 'function') {\n      loadPath = this.options.loadPath([language], [namespace]);\n    }\n\n    var url = this.services.interpolator.interpolate(loadPath, { lng: language, ns: namespace });\n\n    this.loadUrl(url, callback);\n  };\n\n  Backend.prototype.loadUrl = function loadUrl(url, callback) {\n    var _this = this;\n\n    this.constructor.loader.loadText(url).then(function (response) {\n      var ret = void 0;\n      var err = void 0;\n      try {\n        ret = response instanceof Object ? response : _this.options.parse(response, url);\n      } catch (e) {\n        err = 'failed parsing ' + url + ' to json';\n      }\n      if (err) return callback(err, false);\n      callback(null, ret);\n    }, function (response) {\n      return callback('failed loading ' + url, false);\n    });\n  };\n\n  Backend.prototype.create = function create(languages, namespace, key, fallbackValue) {};\n\n  return Backend;\n}(), _class.loader = null, _temp);\n\nBackend.type = 'backend';\nexport default Backend;\n\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\n\nfunction getDefaults() {\n  return {\n    loadPath: '/locales/{{lng}}/{{ns}}.json',\n    addPath: 'locales/add/{{lng}}/{{ns}}',\n    allowMultiLoading: false,\n    parse: JSON.parse\n  };\n}\n\nfunction defaults(obj) {\n  each.call(slice.call(arguments, 1), function (source) {\n    if (source) {\n      for (var prop in source) {\n        if (obj[prop] === undefined) obj[prop] = source[prop];\n      }\n    }\n  });\n  return obj;\n}","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var af = moment.defineLocale('af', {\n        months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),\n        monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n        weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),\n        weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n        weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n        meridiemParse: /vm|nm/i,\n        isPM : function (input) {\n            return /^nm$/i.test(input);\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'vm' : 'VM';\n            } else {\n                return isLower ? 'nm' : 'NM';\n            }\n        },\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Vandag om] LT',\n            nextDay : '[Môre om] LT',\n            nextWeek : 'dddd [om] LT',\n            lastDay : '[Gister om] LT',\n            lastWeek : '[Laas] dddd [om] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'oor %s',\n            past : '%s gelede',\n            s : '\\'n paar sekondes',\n            ss : '%d sekondes',\n            m : '\\'n minuut',\n            mm : '%d minute',\n            h : '\\'n uur',\n            hh : '%d ure',\n            d : '\\'n dag',\n            dd : '%d dae',\n            M : '\\'n maand',\n            MM : '%d maande',\n            y : '\\'n jaar',\n            yy : '%d jaar'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal : function (number) {\n            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter\n        },\n        week : {\n            dow : 1, // Maandag is die eerste dag van die week.\n            doy : 4  // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n        }\n    });\n\n    return af;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '١',\n        '2': '٢',\n        '3': '٣',\n        '4': '٤',\n        '5': '٥',\n        '6': '٦',\n        '7': '٧',\n        '8': '٨',\n        '9': '٩',\n        '0': '٠'\n    }, numberMap = {\n        '١': '1',\n        '٢': '2',\n        '٣': '3',\n        '٤': '4',\n        '٥': '5',\n        '٦': '6',\n        '٧': '7',\n        '٨': '8',\n        '٩': '9',\n        '٠': '0'\n    }, pluralForm = function (n) {\n        return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n    }, plurals = {\n        s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n        m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n        h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n        d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n        M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n        y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n    }, pluralize = function (u) {\n        return function (number, withoutSuffix, string, isFuture) {\n            var f = pluralForm(number),\n                str = plurals[u][pluralForm(number)];\n            if (f === 2) {\n                str = str[withoutSuffix ? 0 : 1];\n            }\n            return str.replace(/%d/i, number);\n        };\n    }, months = [\n        'يناير',\n        'فبراير',\n        'مارس',\n        'أبريل',\n        'مايو',\n        'يونيو',\n        'يوليو',\n        'أغسطس',\n        'سبتمبر',\n        'أكتوبر',\n        'نوفمبر',\n        'ديسمبر'\n    ];\n\n    var ar = moment.defineLocale('ar', {\n        months : months,\n        monthsShort : months,\n        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'D/\\u200FM/\\u200FYYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ص|م/,\n        isPM : function (input) {\n            return 'م' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar : {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'بعد %s',\n            past : 'منذ %s',\n            s : pluralize('s'),\n            ss : pluralize('s'),\n            m : pluralize('m'),\n            mm : pluralize('m'),\n            h : pluralize('h'),\n            hh : pluralize('h'),\n            d : pluralize('d'),\n            dd : pluralize('d'),\n            M : pluralize('M'),\n            MM : pluralize('M'),\n            y : pluralize('y'),\n            yy : pluralize('y')\n        },\n        preparse: function (string) {\n            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                return numberMap[match];\n            }).replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            }).replace(/,/g, '،');\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return ar;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var arDz = moment.defineLocale('ar-dz', {\n        months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'في %s',\n            past : 'منذ %s',\n            s : 'ثوان',\n            ss : '%d ثانية',\n            m : 'دقيقة',\n            mm : '%d دقائق',\n            h : 'ساعة',\n            hh : '%d ساعات',\n            d : 'يوم',\n            dd : '%d أيام',\n            M : 'شهر',\n            MM : '%d أشهر',\n            y : 'سنة',\n            yy : '%d سنوات'\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 4  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return arDz;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var arKw = moment.defineLocale('ar-kw', {\n        months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n        monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n        weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'في %s',\n            past : 'منذ %s',\n            s : 'ثوان',\n            ss : '%d ثانية',\n            m : 'دقيقة',\n            mm : '%d دقائق',\n            h : 'ساعة',\n            hh : '%d ساعات',\n            d : 'يوم',\n            dd : '%d أيام',\n            M : 'شهر',\n            MM : '%d أشهر',\n            y : 'سنة',\n            yy : '%d سنوات'\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 12  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return arKw;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '1',\n        '2': '2',\n        '3': '3',\n        '4': '4',\n        '5': '5',\n        '6': '6',\n        '7': '7',\n        '8': '8',\n        '9': '9',\n        '0': '0'\n    }, pluralForm = function (n) {\n        return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n    }, plurals = {\n        s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n        m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n        h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n        d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n        M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n        y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n    }, pluralize = function (u) {\n        return function (number, withoutSuffix, string, isFuture) {\n            var f = pluralForm(number),\n                str = plurals[u][pluralForm(number)];\n            if (f === 2) {\n                str = str[withoutSuffix ? 0 : 1];\n            }\n            return str.replace(/%d/i, number);\n        };\n    }, months = [\n        'يناير',\n        'فبراير',\n        'مارس',\n        'أبريل',\n        'مايو',\n        'يونيو',\n        'يوليو',\n        'أغسطس',\n        'سبتمبر',\n        'أكتوبر',\n        'نوفمبر',\n        'ديسمبر'\n    ];\n\n    var arLy = moment.defineLocale('ar-ly', {\n        months : months,\n        monthsShort : months,\n        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'D/\\u200FM/\\u200FYYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ص|م/,\n        isPM : function (input) {\n            return 'م' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar : {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'بعد %s',\n            past : 'منذ %s',\n            s : pluralize('s'),\n            ss : pluralize('s'),\n            m : pluralize('m'),\n            mm : pluralize('m'),\n            h : pluralize('h'),\n            hh : pluralize('h'),\n            d : pluralize('d'),\n            dd : pluralize('d'),\n            M : pluralize('M'),\n            MM : pluralize('M'),\n            y : pluralize('y'),\n            yy : pluralize('y')\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            }).replace(/,/g, '،');\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return arLy;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var arMa = moment.defineLocale('ar-ma', {\n        months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n        monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n        weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'في %s',\n            past : 'منذ %s',\n            s : 'ثوان',\n            ss : '%d ثانية',\n            m : 'دقيقة',\n            mm : '%d دقائق',\n            h : 'ساعة',\n            hh : '%d ساعات',\n            d : 'يوم',\n            dd : '%d أيام',\n            M : 'شهر',\n            MM : '%d أشهر',\n            y : 'سنة',\n            yy : '%d سنوات'\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return arMa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '١',\n        '2': '٢',\n        '3': '٣',\n        '4': '٤',\n        '5': '٥',\n        '6': '٦',\n        '7': '٧',\n        '8': '٨',\n        '9': '٩',\n        '0': '٠'\n    }, numberMap = {\n        '١': '1',\n        '٢': '2',\n        '٣': '3',\n        '٤': '4',\n        '٥': '5',\n        '٦': '6',\n        '٧': '7',\n        '٨': '8',\n        '٩': '9',\n        '٠': '0'\n    };\n\n    var arSa = moment.defineLocale('ar-sa', {\n        months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ص|م/,\n        isPM : function (input) {\n            return 'م' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar : {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'في %s',\n            past : 'منذ %s',\n            s : 'ثوان',\n            ss : '%d ثانية',\n            m : 'دقيقة',\n            mm : '%d دقائق',\n            h : 'ساعة',\n            hh : '%d ساعات',\n            d : 'يوم',\n            dd : '%d أيام',\n            M : 'شهر',\n            MM : '%d أشهر',\n            y : 'سنة',\n            yy : '%d سنوات'\n        },\n        preparse: function (string) {\n            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                return numberMap[match];\n            }).replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            }).replace(/,/g, '،');\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return arSa;\n\n})));\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { TestQuestionary } from \"models/test-core/test-questionary\";\nimport { ThematicGroup } from \"models/thematic-groups/thematic-group\";\n\n@autoinject()\nexport class CompanyQuestionaryService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"CompanyQuestionaryService\");\n  }\n\n  public async list(search: string): Promise<TestQuestionary[]> {\n    return await this.client.post(\"companyquestionary/list\", { search })\n      .then((response: any) => {\n        return <TestQuestionary[]>response;\n      });\n  }\n\n  public async getAll(): Promise<TestQuestionary[]> {\n    return await this.client.get(\"companyquestionary\")\n      .then((response: TestQuestionary[]) => {\n        return response;\n      });\n  }\n\n  async getAvailableByQuestionaryId(questionaryId: number): Promise<ThematicGroup[]> {\n    return await this.client.get(`companyquestionary/get-available-by-questionary/${questionaryId}`)\n      .then(response => {\n        return <ThematicGroup[]>response;\n      });\n  }\n\n  async getAllByQuestionaryId(questionaryId: number): Promise<ThematicGroup[]> {\n    return await this.client.get(`companyquestionary/get-all-by-questionary/${questionaryId}`)\n      .then(response => {\n        return <ThematicGroup[]>response;\n      });\n  }\n}\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var arTn = moment.defineLocale('ar-tn', {\n        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss : '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات'\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4 // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return arTn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var suffixes = {\n        1: '-inci',\n        5: '-inci',\n        8: '-inci',\n        70: '-inci',\n        80: '-inci',\n        2: '-nci',\n        7: '-nci',\n        20: '-nci',\n        50: '-nci',\n        3: '-üncü',\n        4: '-üncü',\n        100: '-üncü',\n        6: '-ncı',\n        9: '-uncu',\n        10: '-uncu',\n        30: '-uncu',\n        60: '-ıncı',\n        90: '-ıncı'\n    };\n\n    var az = moment.defineLocale('az', {\n        months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),\n        monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n        weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),\n        weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n        weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[bugün saat] LT',\n            nextDay : '[sabah saat] LT',\n            nextWeek : '[gələn həftə] dddd [saat] LT',\n            lastDay : '[dünən] LT',\n            lastWeek : '[keçən həftə] dddd [saat] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s sonra',\n            past : '%s əvvəl',\n            s : 'birneçə saniyə',\n            ss : '%d saniyə',\n            m : 'bir dəqiqə',\n            mm : '%d dəqiqə',\n            h : 'bir saat',\n            hh : '%d saat',\n            d : 'bir gün',\n            dd : '%d gün',\n            M : 'bir ay',\n            MM : '%d ay',\n            y : 'bir il',\n            yy : '%d il'\n        },\n        meridiemParse: /gecə|səhər|gündüz|axşam/,\n        isPM : function (input) {\n            return /^(gündüz|axşam)$/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'gecə';\n            } else if (hour < 12) {\n                return 'səhər';\n            } else if (hour < 17) {\n                return 'gündüz';\n            } else {\n                return 'axşam';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n        ordinal : function (number) {\n            if (number === 0) {  // special case for zero\n                return number + '-ıncı';\n            }\n            var a = number % 10,\n                b = number % 100 - a,\n                c = number >= 100 ? 100 : null;\n            return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return az;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n            'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n            'dd': 'дзень_дні_дзён',\n            'MM': 'месяц_месяцы_месяцаў',\n            'yy': 'год_гады_гадоў'\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвіліна' : 'хвіліну';\n        }\n        else if (key === 'h') {\n            return withoutSuffix ? 'гадзіна' : 'гадзіну';\n        }\n        else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n\n    var be = moment.defineLocale('be', {\n        months : {\n            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),\n            standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')\n        },\n        monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n        weekdays : {\n            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),\n            standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),\n            isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/\n        },\n        weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY г.',\n            LLL : 'D MMMM YYYY г., HH:mm',\n            LLLL : 'dddd, D MMMM YYYY г., HH:mm'\n        },\n        calendar : {\n            sameDay: '[Сёння ў] LT',\n            nextDay: '[Заўтра ў] LT',\n            lastDay: '[Учора ў] LT',\n            nextWeek: function () {\n                return '[У] dddd [ў] LT';\n            },\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return '[У мінулую] dddd [ў] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                        return '[У мінулы] dddd [ў] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'праз %s',\n            past : '%s таму',\n            s : 'некалькі секунд',\n            m : relativeTimeWithPlural,\n            mm : relativeTimeWithPlural,\n            h : relativeTimeWithPlural,\n            hh : relativeTimeWithPlural,\n            d : 'дзень',\n            dd : relativeTimeWithPlural,\n            M : 'месяц',\n            MM : relativeTimeWithPlural,\n            y : 'год',\n            yy : relativeTimeWithPlural\n        },\n        meridiemParse: /ночы|раніцы|дня|вечара/,\n        isPM : function (input) {\n            return /^(дня|вечара)$/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночы';\n            } else if (hour < 12) {\n                return 'раніцы';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечара';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';\n                case 'D':\n                    return number + '-га';\n                default:\n                    return number;\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return be;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var bg = moment.defineLocale('bg', {\n        months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),\n        monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),\n        weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n        weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'D.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY H:mm',\n            LLLL : 'dddd, D MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay : '[Днес в] LT',\n            nextDay : '[Утре в] LT',\n            nextWeek : 'dddd [в] LT',\n            lastDay : '[Вчера в] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[В изминалата] dddd [в] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[В изминалия] dddd [в] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'след %s',\n            past : 'преди %s',\n            s : 'няколко секунди',\n            ss : '%d секунди',\n            m : 'минута',\n            mm : '%d минути',\n            h : 'час',\n            hh : '%d часа',\n            d : 'ден',\n            dd : '%d дни',\n            M : 'месец',\n            MM : '%d месеца',\n            y : 'година',\n            yy : '%d години'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal : function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return bg;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var bm = moment.defineLocale('bm', {\n        months : 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'),\n        monthsShort : 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n        weekdays : 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n        weekdaysShort : 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n        weekdaysMin : 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'MMMM [tile] D [san] YYYY',\n            LLL : 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n            LLLL : 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm'\n        },\n        calendar : {\n            sameDay : '[Bi lɛrɛ] LT',\n            nextDay : '[Sini lɛrɛ] LT',\n            nextWeek : 'dddd [don lɛrɛ] LT',\n            lastDay : '[Kunu lɛrɛ] LT',\n            lastWeek : 'dddd [tɛmɛnen lɛrɛ] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s kɔnɔ',\n            past : 'a bɛ %s bɔ',\n            s : 'sanga dama dama',\n            ss : 'sekondi %d',\n            m : 'miniti kelen',\n            mm : 'miniti %d',\n            h : 'lɛrɛ kelen',\n            hh : 'lɛrɛ %d',\n            d : 'tile kelen',\n            dd : 'tile %d',\n            M : 'kalo kelen',\n            MM : 'kalo %d',\n            y : 'san kelen',\n            yy : 'san %d'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return bm;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '১',\n        '2': '২',\n        '3': '৩',\n        '4': '৪',\n        '5': '৫',\n        '6': '৬',\n        '7': '৭',\n        '8': '৮',\n        '9': '৯',\n        '0': '০'\n    },\n    numberMap = {\n        '১': '1',\n        '২': '2',\n        '৩': '3',\n        '৪': '4',\n        '৫': '5',\n        '৬': '6',\n        '৭': '7',\n        '৮': '8',\n        '৯': '9',\n        '০': '0'\n    };\n\n    var bn = moment.defineLocale('bn', {\n        months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),\n        monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),\n        weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),\n        weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n        weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm সময়',\n            LTS : 'A h:mm:ss সময়',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm সময়',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'\n        },\n        calendar : {\n            sameDay : '[আজ] LT',\n            nextDay : '[আগামীকাল] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[গতকাল] LT',\n            lastWeek : '[গত] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s পরে',\n            past : '%s আগে',\n            s : 'কয়েক সেকেন্ড',\n            ss : '%d সেকেন্ড',\n            m : 'এক মিনিট',\n            mm : '%d মিনিট',\n            h : 'এক ঘন্টা',\n            hh : '%d ঘন্টা',\n            d : 'এক দিন',\n            dd : '%d দিন',\n            M : 'এক মাস',\n            MM : '%d মাস',\n            y : 'এক বছর',\n            yy : '%d বছর'\n        },\n        preparse: function (string) {\n            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if ((meridiem === 'রাত' && hour >= 4) ||\n                    (meridiem === 'দুপুর' && hour < 5) ||\n                    meridiem === 'বিকাল') {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'রাত';\n            } else if (hour < 10) {\n                return 'সকাল';\n            } else if (hour < 17) {\n                return 'দুপুর';\n            } else if (hour < 20) {\n                return 'বিকাল';\n            } else {\n                return 'রাত';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return bn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '༡',\n        '2': '༢',\n        '3': '༣',\n        '4': '༤',\n        '5': '༥',\n        '6': '༦',\n        '7': '༧',\n        '8': '༨',\n        '9': '༩',\n        '0': '༠'\n    },\n    numberMap = {\n        '༡': '1',\n        '༢': '2',\n        '༣': '3',\n        '༤': '4',\n        '༥': '5',\n        '༦': '6',\n        '༧': '7',\n        '༨': '8',\n        '༩': '9',\n        '༠': '0'\n    };\n\n    var bo = moment.defineLocale('bo', {\n        months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n        monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n        weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),\n        weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n        weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm',\n            LTS : 'A h:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm'\n        },\n        calendar : {\n            sameDay : '[དི་རིང] LT',\n            nextDay : '[སང་ཉིན] LT',\n            nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',\n            lastDay : '[ཁ་སང] LT',\n            lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s ལ་',\n            past : '%s སྔན་ལ',\n            s : 'ལམ་སང',\n            ss : '%d སྐར་ཆ།',\n            m : 'སྐར་མ་གཅིག',\n            mm : '%d སྐར་མ',\n            h : 'ཆུ་ཚོད་གཅིག',\n            hh : '%d ཆུ་ཚོད',\n            d : 'ཉིན་གཅིག',\n            dd : '%d ཉིན་',\n            M : 'ཟླ་བ་གཅིག',\n            MM : '%d ཟླ་བ',\n            y : 'ལོ་གཅིག',\n            yy : '%d ལོ'\n        },\n        preparse: function (string) {\n            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if ((meridiem === 'མཚན་མོ' && hour >= 4) ||\n                    (meridiem === 'ཉིན་གུང' && hour < 5) ||\n                    meridiem === 'དགོང་དག') {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'མཚན་མོ';\n            } else if (hour < 10) {\n                return 'ཞོགས་ཀས';\n            } else if (hour < 17) {\n                return 'ཉིན་གུང';\n            } else if (hour < 20) {\n                return 'དགོང་དག';\n            } else {\n                return 'མཚན་མོ';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return bo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function relativeTimeWithMutation(number, withoutSuffix, key) {\n        var format = {\n            'mm': 'munutenn',\n            'MM': 'miz',\n            'dd': 'devezh'\n        };\n        return number + ' ' + mutation(format[key], number);\n    }\n    function specialMutationForYears(number) {\n        switch (lastNumber(number)) {\n            case 1:\n            case 3:\n            case 4:\n            case 5:\n            case 9:\n                return number + ' bloaz';\n            default:\n                return number + ' vloaz';\n        }\n    }\n    function lastNumber(number) {\n        if (number > 9) {\n            return lastNumber(number % 10);\n        }\n        return number;\n    }\n    function mutation(text, number) {\n        if (number === 2) {\n            return softMutation(text);\n        }\n        return text;\n    }\n    function softMutation(text) {\n        var mutationTable = {\n            'm': 'v',\n            'b': 'v',\n            'd': 'z'\n        };\n        if (mutationTable[text.charAt(0)] === undefined) {\n            return text;\n        }\n        return mutationTable[text.charAt(0)] + text.substring(1);\n    }\n\n    var br = moment.defineLocale('br', {\n        months : 'Genver_C\\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),\n        monthsShort : 'Gen_C\\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n        weekdays : 'Sul_Lun_Meurzh_Merc\\'her_Yaou_Gwener_Sadorn'.split('_'),\n        weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n        weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'h[e]mm A',\n            LTS : 'h[e]mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D [a viz] MMMM YYYY',\n            LLL : 'D [a viz] MMMM YYYY h[e]mm A',\n            LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'\n        },\n        calendar : {\n            sameDay : '[Hiziv da] LT',\n            nextDay : '[Warc\\'hoazh da] LT',\n            nextWeek : 'dddd [da] LT',\n            lastDay : '[Dec\\'h da] LT',\n            lastWeek : 'dddd [paset da] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'a-benn %s',\n            past : '%s \\'zo',\n            s : 'un nebeud segondennoù',\n            ss : '%d eilenn',\n            m : 'ur vunutenn',\n            mm : relativeTimeWithMutation,\n            h : 'un eur',\n            hh : '%d eur',\n            d : 'un devezh',\n            dd : relativeTimeWithMutation,\n            M : 'ur miz',\n            MM : relativeTimeWithMutation,\n            y : 'ur bloaz',\n            yy : specialMutationForYears\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n        ordinal : function (number) {\n            var output = (number === 1) ? 'añ' : 'vet';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return br;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jednog sata';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var bs = moment.defineLocale('bs', {\n        months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),\n        monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n        weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay  : '[danas u] LT',\n            nextDay  : '[sutra u] LT',\n            nextWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay  : '[jučer u] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                        return '[prošlu] dddd [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past   : 'prije %s',\n            s      : 'par sekundi',\n            ss     : translate,\n            m      : translate,\n            mm     : translate,\n            h      : translate,\n            hh     : translate,\n            d      : 'dan',\n            dd     : translate,\n            M      : 'mjesec',\n            MM     : translate,\n            y      : 'godinu',\n            yy     : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return bs;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ca = moment.defineLocale('ca', {\n        months : {\n            standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\n            format: 'de gener_de febrer_de març_d\\'abril_de maig_de juny_de juliol_d\\'agost_de setembre_d\\'octubre_de novembre_de desembre'.split('_'),\n            isFormat: /D[oD]?(\\s)+MMMM/\n        },\n        monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\n        weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n        weekdaysMin : 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM [de] YYYY',\n            ll : 'D MMM YYYY',\n            LLL : 'D MMMM [de] YYYY [a les] H:mm',\n            lll : 'D MMM YYYY, H:mm',\n            LLLL : 'dddd D MMMM [de] YYYY [a les] H:mm',\n            llll : 'ddd D MMM YYYY, H:mm'\n        },\n        calendar : {\n            sameDay : function () {\n                return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n            },\n            nextDay : function () {\n                return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n            },\n            nextWeek : function () {\n                return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n            },\n            lastDay : function () {\n                return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n            },\n            lastWeek : function () {\n                return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'd\\'aquí %s',\n            past : 'fa %s',\n            s : 'uns segons',\n            ss : '%d segons',\n            m : 'un minut',\n            mm : '%d minuts',\n            h : 'una hora',\n            hh : '%d hores',\n            d : 'un dia',\n            dd : '%d dies',\n            M : 'un mes',\n            MM : '%d mesos',\n            y : 'un any',\n            yy : '%d anys'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n        ordinal : function (number, period) {\n            var output = (number === 1) ? 'r' :\n                (number === 2) ? 'n' :\n                (number === 3) ? 'r' :\n                (number === 4) ? 't' : 'è';\n            if (period === 'w' || period === 'W') {\n                output = 'a';\n            }\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return ca;\n\n})));\n","\n\nexport var logLevel = {\n  none: 0,\n  error: 10,\n  warn: 20,\n  info: 30,\n  debug: 40\n};\n\nvar loggers = {};\nvar appenders = [];\nvar globalDefaultLevel = logLevel.none;\n\nvar standardLevels = ['none', 'error', 'warn', 'info', 'debug'];\nfunction isStandardLevel(level) {\n  return standardLevels.filter(function (l) {\n    return l === level;\n  }).length > 0;\n}\n\nfunction appendArgs() {\n  return [this].concat(Array.prototype.slice.call(arguments));\n}\n\nfunction logFactory(level) {\n  var threshold = logLevel[level];\n  return function () {\n    if (this.level < threshold) {\n      return;\n    }\n\n    var args = appendArgs.apply(this, arguments);\n    var i = appenders.length;\n    while (i--) {\n      var _appenders$i;\n\n      (_appenders$i = appenders[i])[level].apply(_appenders$i, args);\n    }\n  };\n}\n\nfunction logFactoryCustom(level) {\n  var threshold = logLevel[level];\n  return function () {\n    if (this.level < threshold) {\n      return;\n    }\n\n    var args = appendArgs.apply(this, arguments);\n    var i = appenders.length;\n    while (i--) {\n      var appender = appenders[i];\n      if (appender[level] !== undefined) {\n        appender[level].apply(appender, args);\n      }\n    }\n  };\n}\n\nfunction connectLoggers() {\n  var proto = Logger.prototype;\n  for (var _level in logLevel) {\n    if (isStandardLevel(_level)) {\n      if (_level !== 'none') {\n        proto[_level] = logFactory(_level);\n      }\n    } else {\n      proto[_level] = logFactoryCustom(_level);\n    }\n  }\n}\n\nfunction disconnectLoggers() {\n  var proto = Logger.prototype;\n  for (var _level2 in logLevel) {\n    if (_level2 !== 'none') {\n      proto[_level2] = function () {};\n    }\n  }\n}\n\nexport function getLogger(id) {\n  return loggers[id] || new Logger(id);\n}\n\nexport function addAppender(appender) {\n  if (appenders.push(appender) === 1) {\n    connectLoggers();\n  }\n}\n\nexport function removeAppender(appender) {\n  appenders = appenders.filter(function (a) {\n    return a !== appender;\n  });\n}\n\nexport function getAppenders() {\n  return [].concat(appenders);\n}\n\nexport function clearAppenders() {\n  appenders = [];\n  disconnectLoggers();\n}\n\nexport function addCustomLevel(name, value) {\n  if (logLevel[name] !== undefined) {\n    throw Error('Log level \"' + name + '\" already exists.');\n  }\n\n  if (isNaN(value)) {\n    throw Error('Value must be a number.');\n  }\n\n  logLevel[name] = value;\n\n  if (appenders.length > 0) {\n    connectLoggers();\n  } else {\n    Logger.prototype[name] = function () {};\n  }\n}\n\nexport function removeCustomLevel(name) {\n  if (logLevel[name] === undefined) {\n    return;\n  }\n\n  if (isStandardLevel(name)) {\n    throw Error('Built-in log level \"' + name + '\" cannot be removed.');\n  }\n\n  delete logLevel[name];\n  delete Logger.prototype[name];\n}\n\nexport function setLevel(level) {\n  globalDefaultLevel = level;\n  for (var key in loggers) {\n    loggers[key].setLevel(level);\n  }\n}\n\nexport function getLevel() {\n  return globalDefaultLevel;\n}\n\nexport var Logger = function () {\n  function Logger(id) {\n    \n\n    var cached = loggers[id];\n    if (cached) {\n      return cached;\n    }\n\n    loggers[id] = this;\n    this.id = id;\n    this.level = globalDefaultLevel;\n  }\n\n  Logger.prototype.debug = function debug(message) {};\n\n  Logger.prototype.info = function info(message) {};\n\n  Logger.prototype.warn = function warn(message) {};\n\n  Logger.prototype.error = function error(message) {};\n\n  Logger.prototype.setLevel = function setLevel(level) {\n    this.level = level;\n  };\n\n  Logger.prototype.isDebugEnabled = function isDebugEnabled() {\n    return this.level === logLevel.debug;\n  };\n\n  return Logger;\n}();","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),\n        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');\n    function plural(n) {\n        return (n > 1) && (n < 5) && (~~(n / 10) !== 1);\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':  // a few seconds / in a few seconds / a few seconds ago\n                return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekund');\n                } else {\n                    return result + 'sekundami';\n                }\n                break;\n            case 'm':  // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minuty' : 'minut');\n                } else {\n                    return result + 'minutami';\n                }\n                break;\n            case 'h':  // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodin');\n                } else {\n                    return result + 'hodinami';\n                }\n                break;\n            case 'd':  // a day / in a day / a day ago\n                return (withoutSuffix || isFuture) ? 'den' : 'dnem';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dny' : 'dní');\n                } else {\n                    return result + 'dny';\n                }\n                break;\n            case 'M':  // a month / in a month / a month ago\n                return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'měsíce' : 'měsíců');\n                } else {\n                    return result + 'měsíci';\n                }\n                break;\n            case 'y':  // a year / in a year / a year ago\n                return (withoutSuffix || isFuture) ? 'rok' : 'rokem';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'let');\n                } else {\n                    return result + 'lety';\n                }\n                break;\n        }\n    }\n\n    var cs = moment.defineLocale('cs', {\n        months : months,\n        monthsShort : monthsShort,\n        monthsParse : (function (months, monthsShort) {\n            var i, _monthsParse = [];\n            for (i = 0; i < 12; i++) {\n                // use custom parser to solve problem with July (červenec)\n                _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');\n            }\n            return _monthsParse;\n        }(months, monthsShort)),\n        shortMonthsParse : (function (monthsShort) {\n            var i, _shortMonthsParse = [];\n            for (i = 0; i < 12; i++) {\n                _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');\n            }\n            return _shortMonthsParse;\n        }(monthsShort)),\n        longMonthsParse : (function (months) {\n            var i, _longMonthsParse = [];\n            for (i = 0; i < 12; i++) {\n                _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');\n            }\n            return _longMonthsParse;\n        }(months)),\n        weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n        weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),\n        weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),\n        longDateFormat : {\n            LT: 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd D. MMMM YYYY H:mm',\n            l : 'D. M. YYYY'\n        },\n        calendar : {\n            sameDay: '[dnes v] LT',\n            nextDay: '[zítra v] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [v] LT';\n                    case 3:\n                        return '[ve středu v] LT';\n                    case 4:\n                        return '[ve čtvrtek v] LT';\n                    case 5:\n                        return '[v pátek v] LT';\n                    case 6:\n                        return '[v sobotu v] LT';\n                }\n            },\n            lastDay: '[včera v] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulou neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[minulé] dddd [v] LT';\n                    case 3:\n                        return '[minulou středu v] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [v] LT';\n                    case 6:\n                        return '[minulou sobotu v] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past : 'před %s',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return cs;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var cv = moment.defineLocale('cv', {\n        months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),\n        monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n        weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),\n        weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n        weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD-MM-YYYY',\n            LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n            LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n            LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'\n        },\n        calendar : {\n            sameDay: '[Паян] LT [сехетре]',\n            nextDay: '[Ыран] LT [сехетре]',\n            lastDay: '[Ӗнер] LT [сехетре]',\n            nextWeek: '[Ҫитес] dddd LT [сехетре]',\n            lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : function (output) {\n                var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';\n                return output + affix;\n            },\n            past : '%s каялла',\n            s : 'пӗр-ик ҫеккунт',\n            ss : '%d ҫеккунт',\n            m : 'пӗр минут',\n            mm : '%d минут',\n            h : 'пӗр сехет',\n            hh : '%d сехет',\n            d : 'пӗр кун',\n            dd : '%d кун',\n            M : 'пӗр уйӑх',\n            MM : '%d уйӑх',\n            y : 'пӗр ҫул',\n            yy : '%d ҫул'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n        ordinal : '%d-мӗш',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return cv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var cy = moment.defineLocale('cy', {\n        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),\n        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),\n        weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),\n        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n        weekdaysParseExact : true,\n        // time formats are the same as en-gb\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar: {\n            sameDay: '[Heddiw am] LT',\n            nextDay: '[Yfory am] LT',\n            nextWeek: 'dddd [am] LT',\n            lastDay: '[Ddoe am] LT',\n            lastWeek: 'dddd [diwethaf am] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: 'mewn %s',\n            past: '%s yn ôl',\n            s: 'ychydig eiliadau',\n            ss: '%d eiliad',\n            m: 'munud',\n            mm: '%d munud',\n            h: 'awr',\n            hh: '%d awr',\n            d: 'diwrnod',\n            dd: '%d diwrnod',\n            M: 'mis',\n            MM: '%d mis',\n            y: 'blwyddyn',\n            yy: '%d flynedd'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n        ordinal: function (number) {\n            var b = number,\n                output = '',\n                lookup = [\n                    '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed\n                    'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed\n                ];\n            if (b > 20) {\n                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n                    output = 'fed'; // not 30ain, 70ain or 90ain\n                } else {\n                    output = 'ain';\n                }\n            } else if (b > 0) {\n                output = lookup[b];\n            }\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return cy;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var da = moment.defineLocale('da', {\n        months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n        weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY HH:mm',\n            LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'\n        },\n        calendar : {\n            sameDay : '[i dag kl.] LT',\n            nextDay : '[i morgen kl.] LT',\n            nextWeek : 'på dddd [kl.] LT',\n            lastDay : '[i går kl.] LT',\n            lastWeek : '[i] dddd[s kl.] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'om %s',\n            past : '%s siden',\n            s : 'få sekunder',\n            ss : '%d sekunder',\n            m : 'et minut',\n            mm : '%d minutter',\n            h : 'en time',\n            hh : '%d timer',\n            d : 'en dag',\n            dd : '%d dage',\n            M : 'en måned',\n            MM : '%d måneder',\n            y : 'et år',\n            yy : '%d år'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return da;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            'm': ['eine Minute', 'einer Minute'],\n            'h': ['eine Stunde', 'einer Stunde'],\n            'd': ['ein Tag', 'einem Tag'],\n            'dd': [number + ' Tage', number + ' Tagen'],\n            'M': ['ein Monat', 'einem Monat'],\n            'MM': [number + ' Monate', number + ' Monaten'],\n            'y': ['ein Jahr', 'einem Jahr'],\n            'yy': [number + ' Jahre', number + ' Jahren']\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var de = moment.defineLocale('de', {\n        months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n        monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n        weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY HH:mm',\n            LLLL : 'dddd, D. MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : 'vor %s',\n            s : 'ein paar Sekunden',\n            ss : '%d Sekunden',\n            m : processRelativeTime,\n            mm : '%d Minuten',\n            h : processRelativeTime,\n            hh : '%d Stunden',\n            d : processRelativeTime,\n            dd : processRelativeTime,\n            M : processRelativeTime,\n            MM : processRelativeTime,\n            y : processRelativeTime,\n            yy : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return de;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            'm': ['eine Minute', 'einer Minute'],\n            'h': ['eine Stunde', 'einer Stunde'],\n            'd': ['ein Tag', 'einem Tag'],\n            'dd': [number + ' Tage', number + ' Tagen'],\n            'M': ['ein Monat', 'einem Monat'],\n            'MM': [number + ' Monate', number + ' Monaten'],\n            'y': ['ein Jahr', 'einem Jahr'],\n            'yy': [number + ' Jahre', number + ' Jahren']\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deAt = moment.defineLocale('de-at', {\n        months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n        monthsShort : 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n        weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY HH:mm',\n            LLLL : 'dddd, D. MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : 'vor %s',\n            s : 'ein paar Sekunden',\n            ss : '%d Sekunden',\n            m : processRelativeTime,\n            mm : '%d Minuten',\n            h : processRelativeTime,\n            hh : '%d Stunden',\n            d : processRelativeTime,\n            dd : processRelativeTime,\n            M : processRelativeTime,\n            MM : processRelativeTime,\n            y : processRelativeTime,\n            yy : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return deAt;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            'm': ['eine Minute', 'einer Minute'],\n            'h': ['eine Stunde', 'einer Stunde'],\n            'd': ['ein Tag', 'einem Tag'],\n            'dd': [number + ' Tage', number + ' Tagen'],\n            'M': ['ein Monat', 'einem Monat'],\n            'MM': [number + ' Monate', number + ' Monaten'],\n            'y': ['ein Jahr', 'einem Jahr'],\n            'yy': [number + ' Jahre', number + ' Jahren']\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deCh = moment.defineLocale('de-ch', {\n        months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n        monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n        weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY HH:mm',\n            LLLL : 'dddd, D. MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : 'vor %s',\n            s : 'ein paar Sekunden',\n            ss : '%d Sekunden',\n            m : processRelativeTime,\n            mm : '%d Minuten',\n            h : processRelativeTime,\n            hh : '%d Stunden',\n            d : processRelativeTime,\n            dd : processRelativeTime,\n            M : processRelativeTime,\n            MM : processRelativeTime,\n            y : processRelativeTime,\n            yy : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return deCh;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var months = [\n        'ޖެނުއަރީ',\n        'ފެބްރުއަރީ',\n        'މާރިޗު',\n        'އޭޕްރީލު',\n        'މޭ',\n        'ޖޫން',\n        'ޖުލައި',\n        'އޯގަސްޓު',\n        'ސެޕްޓެމްބަރު',\n        'އޮކްޓޯބަރު',\n        'ނޮވެމްބަރު',\n        'ޑިސެމްބަރު'\n    ], weekdays = [\n        'އާދިއްތަ',\n        'ހޯމަ',\n        'އަންގާރަ',\n        'ބުދަ',\n        'ބުރާސްފަތި',\n        'ހުކުރު',\n        'ހޮނިހިރު'\n    ];\n\n    var dv = moment.defineLocale('dv', {\n        months : months,\n        monthsShort : months,\n        weekdays : weekdays,\n        weekdaysShort : weekdays,\n        weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n        longDateFormat : {\n\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'D/M/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /މކ|މފ/,\n        isPM : function (input) {\n            return 'މފ' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'މކ';\n            } else {\n                return 'މފ';\n            }\n        },\n        calendar : {\n            sameDay : '[މިއަދު] LT',\n            nextDay : '[މާދަމާ] LT',\n            nextWeek : 'dddd LT',\n            lastDay : '[އިއްޔެ] LT',\n            lastWeek : '[ފާއިތުވި] dddd LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'ތެރޭގައި %s',\n            past : 'ކުރިން %s',\n            s : 'ސިކުންތުކޮޅެއް',\n            ss : 'd% ސިކުންތު',\n            m : 'މިނިޓެއް',\n            mm : 'މިނިޓު %d',\n            h : 'ގަޑިއިރެއް',\n            hh : 'ގަޑިއިރު %d',\n            d : 'ދުވަހެއް',\n            dd : 'ދުވަސް %d',\n            M : 'މަހެއް',\n            MM : 'މަސް %d',\n            y : 'އަހަރެއް',\n            yy : 'އަހަރު %d'\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week : {\n            dow : 7,  // Sunday is the first day of the week.\n            doy : 12  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return dv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    function isFunction(input) {\n        return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n    }\n\n\n    var el = moment.defineLocale('el', {\n        monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),\n        monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),\n        months : function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return this._monthsNominativeEl;\n            } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'\n                return this._monthsGenitiveEl[momentToFormat.month()];\n            } else {\n                return this._monthsNominativeEl[momentToFormat.month()];\n            }\n        },\n        monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n        weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),\n        weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n        weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n        meridiem : function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'μμ' : 'ΜΜ';\n            } else {\n                return isLower ? 'πμ' : 'ΠΜ';\n            }\n        },\n        isPM : function (input) {\n            return ((input + '').toLowerCase()[0] === 'μ');\n        },\n        meridiemParse : /[ΠΜ]\\.?Μ?\\.?/i,\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendarEl : {\n            sameDay : '[Σήμερα {}] LT',\n            nextDay : '[Αύριο {}] LT',\n            nextWeek : 'dddd [{}] LT',\n            lastDay : '[Χθες {}] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 6:\n                        return '[το προηγούμενο] dddd [{}] LT';\n                    default:\n                        return '[την προηγούμενη] dddd [{}] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        calendar : function (key, mom) {\n            var output = this._calendarEl[key],\n                hours = mom && mom.hours();\n            if (isFunction(output)) {\n                output = output.apply(mom);\n            }\n            return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));\n        },\n        relativeTime : {\n            future : 'σε %s',\n            past : '%s πριν',\n            s : 'λίγα δευτερόλεπτα',\n            ss : '%d δευτερόλεπτα',\n            m : 'ένα λεπτό',\n            mm : '%d λεπτά',\n            h : 'μία ώρα',\n            hh : '%d ώρες',\n            d : 'μία μέρα',\n            dd : '%d μέρες',\n            M : 'ένας μήνας',\n            MM : '%d μήνες',\n            y : 'ένας χρόνος',\n            yy : '%d χρόνια'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}η/,\n        ordinal: '%dη',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4st is the first week of the year.\n        }\n    });\n\n    return el;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var enAu = moment.defineLocale('en-au', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return enAu;\n\n})));\n","\nimport { autoinject, LogManager } from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { HttpClient } from 'aurelia-fetch-client';\nimport { User } from \"oidc-client\";\nimport { OpenIdConnect } from \"aurelia-open-id-connect\";\nimport { OpenIdProfile } from 'models/security/open-id-profile';\nimport config from 'config.js';\n\n@autoinject()\nexport class SessionService {\n\n  private user: User;\n  private profile: OpenIdProfile;\n  private logger: Logger;\n  private backendUrl: string;\n\n  constructor(\n    private openIdConnect: OpenIdConnect,\n    private client: HttpClient) {\n\n    this.logger = LogManager.getLogger('SessionService');\n\n    this.backendUrl = config.URLS_BACKEND;\n\n  }\n\n  public async getUser(): Promise<any> {\n    if (this.user) {\n      if (this.user.expired) {\n        // if we have an EXPIRED user in storage,\n        // then we can do a silent login.\n        this.logger.debug(\"user expired. login Silently...\");\n        this.user = null;\n        return await this.loginSilent();\n        // this.logger.debug(\"user expired\");\n        //return await this.openIdConnect.login();\n      } else {\n        // if we have a non-expired user in storage, \n        // then our app can use it for access.\n        return this.user;\n      }\n    }\n    else {\n      return await this.openIdConnect.getUser()\n        .then(async (user: User) => {\n          // this.logger.debug(\"user\", user);\n          if (!user) {\n            // if we do not have a user in localStorage (or sessionStorage)\n            // then we do not have an id_token to use as an id_token_hint;\n            // as a result, we cannot do a silent login, so we return; \n            // alternatively, we could call `login` to \n            // automatically redirect to the authorization server:\n            this.logger.debug(\"no user found\");\n            return await this.openIdConnect.userManager.removeUser().then(async () => {\n              return await this.openIdConnect.login();\n            });\n          }\n          else {\n            if (user.expired) {\n              // if we have an EXPIRED user in storage,\n              // then we can do a silent login.\n              this.logger.debug(\"user expired. login Silently...\");\n              return await this.loginSilent();\n              // this.logger.debug(\"user expired\");\n              //return await this.openIdConnect.login();\n            } else {\n              // if we have a non-expired user in storage, \n              // then our app can use it for access.\n              // this.logger.debug(\"user loaded\");\n              this.user = user;\n              return this.user;\n            }\n          }\n        })\n        .catch(error => {\n          this.logger.error(\"Error getting user:\", error.message);\n          throw error;\n        });\n    }\n  }\n\n  public async getProfile(): Promise<any> {\n    // retrieve the user from storage\n    this.logger.debug(\"getting profile\");\n    // this.logger.debug(\"getProfile\", this.user);\n    if (this.profile) {\n      return this.profile;\n    }\n\n    return await this.getUser()\n      .then(async () => {\n        if (this.user) {\n          // configure client\n          this.client.configure(x => {\n            x.withBaseUrl(`${this.backendUrl}/api/v1/`);\n            x.withDefaults({\n              headers: {\n                'Authorization': `Bearer ${this.user.access_token}`\n              }\n            });\n          });\n\n          return await this.client.fetch('userinfo', { method: 'GET' });\n        }\n      })\n      .then(async (response: Response) => {\n        return await response.json();\n      })\n      .then((profile: OpenIdProfile) => {\n        this.profile = profile;\n        return this.profile;\n      })\n      .catch(error => this.logger.error(error));\n  }\n  \n  public async loginSilent(): Promise<any> {\n    return await this.openIdConnect.loginSilent()\n      .catch(async error => {\n        // if this is a timeout error,\n        // then use a text editor to increase the silentRequestTimeout value,\n        // that we configure in open-id-connect-configuration.ts\n        this.logger.error(\"Error getting user:\", error.message);\n        return await this.openIdConnect.userManager.removeUser().then(async () => {\n          return await this.openIdConnect.login();\n        });\n\n      });\n  }\n\n  public async logout(): Promise<any> {\n    this.logger.debug(\"logout by 401\");\n    return await this.openIdConnect.userManager.removeUser().then(async () => {\n      return await this.openIdConnect.logout();\n    });\n  }\n\n}\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var enCa = moment.defineLocale('en-ca', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'YYYY-MM-DD',\n            LL : 'MMMM D, YYYY',\n            LLL : 'MMMM D, YYYY h:mm A',\n            LLLL : 'dddd, MMMM D, YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        }\n    });\n\n    return enCa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var enGb = moment.defineLocale('en-gb', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return enGb;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var enIe = moment.defineLocale('en-ie', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD-MM-YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return enIe;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var enIl = moment.defineLocale('en-il', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        }\n    });\n\n    return enIl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var enNz = moment.defineLocale('en-nz', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return enNz;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var eo = moment.defineLocale('eo', {\n        months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),\n        weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n        weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n        weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'D[-a de] MMMM, YYYY',\n            LLL : 'D[-a de] MMMM, YYYY HH:mm',\n            LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm'\n        },\n        meridiemParse: /[ap]\\.t\\.m/i,\n        isPM: function (input) {\n            return input.charAt(0).toLowerCase() === 'p';\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'p.t.m.' : 'P.T.M.';\n            } else {\n                return isLower ? 'a.t.m.' : 'A.T.M.';\n            }\n        },\n        calendar : {\n            sameDay : '[Hodiaŭ je] LT',\n            nextDay : '[Morgaŭ je] LT',\n            nextWeek : 'dddd [je] LT',\n            lastDay : '[Hieraŭ je] LT',\n            lastWeek : '[pasinta] dddd [je] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'post %s',\n            past : 'antaŭ %s',\n            s : 'sekundoj',\n            ss : '%d sekundoj',\n            m : 'minuto',\n            mm : '%d minutoj',\n            h : 'horo',\n            hh : '%d horoj',\n            d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo\n            dd : '%d tagoj',\n            M : 'monato',\n            MM : '%d monatoj',\n            y : 'jaro',\n            yy : '%d jaroj'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}a/,\n        ordinal : '%da',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return eo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n    var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\n    var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var es = moment.defineLocale('es', {\n        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex : monthsRegex,\n        monthsShortRegex : monthsRegex,\n        monthsStrictRegex : /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex : /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse : monthsParse,\n        longMonthsParse : monthsParse,\n        shortMonthsParse : monthsParse,\n        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY H:mm',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n        },\n        calendar : {\n            sameDay : function () {\n                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextDay : function () {\n                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextWeek : function () {\n                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastDay : function () {\n                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastWeek : function () {\n                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'en %s',\n            past : 'hace %s',\n            s : 'unos segundos',\n            ss : '%d segundos',\n            m : 'un minuto',\n            mm : '%d minutos',\n            h : 'una hora',\n            hh : '%d horas',\n            d : 'un día',\n            dd : '%d días',\n            M : 'un mes',\n            MM : '%d meses',\n            y : 'un año',\n            yy : '%d años'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal : '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return es;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n    var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\n    var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esDo = moment.defineLocale('es-do', {\n        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : function () {\n                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextDay : function () {\n                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextWeek : function () {\n                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastDay : function () {\n                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastWeek : function () {\n                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'en %s',\n            past : 'hace %s',\n            s : 'unos segundos',\n            ss : '%d segundos',\n            m : 'un minuto',\n            mm : '%d minutos',\n            h : 'una hora',\n            hh : '%d horas',\n            d : 'un día',\n            dd : '%d días',\n            M : 'un mes',\n            MM : '%d meses',\n            y : 'un año',\n            yy : '%d años'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal : '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return esDo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n    var esUs = moment.defineLocale('es-us', {\n        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsParseExact : true,\n        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'MM/DD/YYYY',\n            LL : 'MMMM [de] D [de] YYYY',\n            LLL : 'MMMM [de] D [de] YYYY h:mm A',\n            LLLL : 'dddd, MMMM [de] D [de] YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : function () {\n                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextDay : function () {\n                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextWeek : function () {\n                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastDay : function () {\n                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastWeek : function () {\n                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'en %s',\n            past : 'hace %s',\n            s : 'unos segundos',\n            ss : '%d segundos',\n            m : 'un minuto',\n            mm : '%d minutos',\n            h : 'una hora',\n            hh : '%d horas',\n            d : 'un día',\n            dd : '%d días',\n            M : 'un mes',\n            MM : '%d meses',\n            y : 'un año',\n            yy : '%d años'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal : '%dº',\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return esUs;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n            'ss': [number + 'sekundi', number + 'sekundit'],\n            'm' : ['ühe minuti', 'üks minut'],\n            'mm': [number + ' minuti', number + ' minutit'],\n            'h' : ['ühe tunni', 'tund aega', 'üks tund'],\n            'hh': [number + ' tunni', number + ' tundi'],\n            'd' : ['ühe päeva', 'üks päev'],\n            'M' : ['kuu aja', 'kuu aega', 'üks kuu'],\n            'MM': [number + ' kuu', number + ' kuud'],\n            'y' : ['ühe aasta', 'aasta', 'üks aasta'],\n            'yy': [number + ' aasta', number + ' aastat']\n        };\n        if (withoutSuffix) {\n            return format[key][2] ? format[key][2] : format[key][1];\n        }\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var et = moment.defineLocale('et', {\n        months        : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\n        monthsShort   : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n        weekdays      : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\n        weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),\n        weekdaysMin   : 'P_E_T_K_N_R_L'.split('_'),\n        longDateFormat : {\n            LT   : 'H:mm',\n            LTS : 'H:mm:ss',\n            L    : 'DD.MM.YYYY',\n            LL   : 'D. MMMM YYYY',\n            LLL  : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay  : '[Täna,] LT',\n            nextDay  : '[Homme,] LT',\n            nextWeek : '[Järgmine] dddd LT',\n            lastDay  : '[Eile,] LT',\n            lastWeek : '[Eelmine] dddd LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s pärast',\n            past   : '%s tagasi',\n            s      : processRelativeTime,\n            ss     : processRelativeTime,\n            m      : processRelativeTime,\n            mm     : processRelativeTime,\n            h      : processRelativeTime,\n            hh     : processRelativeTime,\n            d      : processRelativeTime,\n            dd     : '%d päeva',\n            M      : processRelativeTime,\n            MM     : processRelativeTime,\n            y      : processRelativeTime,\n            yy     : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return et;\n\n})));\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { ThematicGroup } from \"models/thematic-groups/thematic-group\";\n\n@autoinject()\nexport class ThematicGroupService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient\n  ) {\n\n    this.logger = LogManager.getLogger(\"ThematicGroupsService\");\n  }\n\n  async list(questionaryId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`thematicgroup/list/${questionaryId}`, parameters)\n      .then(response => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  async getSelectedByQuestionId(questionId: number): Promise<ThematicGroup[]> {\n    return await this.client.get(`thematicgroup/get-selected-by-question/${questionId}`)\n      .then(response => {\n        return <ThematicGroup[]>response;\n      });\n  }\n  public async changeState(id: number): Promise<void> {\n    // this.logger.info(\"id to delete: \" +  id);\n    return await this.client.post(`thematicgroup/change-state/${id}`)\n      .then(() => null);\n  }\n\n\n  async getById(id: number): Promise<ThematicGroup> {\n    // this.logger.info(\"id: \" +  id); \n    return await this.client.getById(\"thematicgroup\", id)\n      .then(response => {\n        return <ThematicGroup>response;\n      });\n  }\n\n\n\n  async create(model: ThematicGroup): Promise<ThematicGroup> {\n    return await this.client.post('thematicgroup', model)\n      .then(response => {\n        return <ThematicGroup>response;\n      });\n  }\n\n  async update(model: ThematicGroup): Promise<ThematicGroup> {\n    return await this.client.updateById('thematicgroup', model.id, null, model)\n      .then(response => {\n        return <ThematicGroup>response;\n      });\n  }\n\n  async delete(id: number): Promise<void> {\n    // this.logger.info(\"id to delete: \" +  id);\n    return await this.client.delete('thematicgroup', id)\n      .then(() => null);\n  }\n\n  async listWithThematicVariable(questionaryId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`thematicgroup/list-with-thematic-variable/${questionaryId}`, parameters)\n      .then(response => {\n        return <UxDatatableResponse>response;\n      });\n  }\n  async getByIdWithThematicVariable(id: number): Promise<ThematicGroup> {\n    // this.logger.info(\"id: \" +  id); \n    return await this.client.getById(\"thematicgroup/get-with-thematic-variable\", id)\n      .then(response => {\n        return <ThematicGroup>response;\n      });\n  }\n\n  async deleteWithThematicVariable(id: number): Promise<void> {\n    // this.logger.info(\"id to delete: \" +  id);\n    return await this.client.delete(`thematicgroup/delete-with-thematic-variable/${id}`)\n      .then(() => null);\n  }\n\n  async createWithThematicVariable(model: ThematicGroup): Promise<ThematicGroup> {\n    return await this.client.post('thematicgroup/create-with-thematic-variable', model)\n      .then(response => {\n        return <ThematicGroup>response;\n      });\n  }\n\n  async updateWithThematicVariable(model: ThematicGroup): Promise<ThematicGroup> {\n    return await this.client.updateById('thematicgroup/update-with-thematic-variable', model.id, null, model)\n      .then(response => {\n        return <ThematicGroup>response;\n      });\n  }\n}\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var eu = moment.defineLocale('eu', {\n        months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),\n        monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),\n        weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),\n        weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'YYYY[ko] MMMM[ren] D[a]',\n            LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n            LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n            l : 'YYYY-M-D',\n            ll : 'YYYY[ko] MMM D[a]',\n            lll : 'YYYY[ko] MMM D[a] HH:mm',\n            llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'\n        },\n        calendar : {\n            sameDay : '[gaur] LT[etan]',\n            nextDay : '[bihar] LT[etan]',\n            nextWeek : 'dddd LT[etan]',\n            lastDay : '[atzo] LT[etan]',\n            lastWeek : '[aurreko] dddd LT[etan]',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s barru',\n            past : 'duela %s',\n            s : 'segundo batzuk',\n            ss : '%d segundo',\n            m : 'minutu bat',\n            mm : '%d minutu',\n            h : 'ordu bat',\n            hh : '%d ordu',\n            d : 'egun bat',\n            dd : '%d egun',\n            M : 'hilabete bat',\n            MM : '%d hilabete',\n            y : 'urte bat',\n            yy : '%d urte'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return eu;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '۱',\n        '2': '۲',\n        '3': '۳',\n        '4': '۴',\n        '5': '۵',\n        '6': '۶',\n        '7': '۷',\n        '8': '۸',\n        '9': '۹',\n        '0': '۰'\n    }, numberMap = {\n        '۱': '1',\n        '۲': '2',\n        '۳': '3',\n        '۴': '4',\n        '۵': '5',\n        '۶': '6',\n        '۷': '7',\n        '۸': '8',\n        '۹': '9',\n        '۰': '0'\n    };\n\n    var fa = moment.defineLocale('fa', {\n        months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n        monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n        weekdays : 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n        weekdaysShort : 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n        weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /قبل از ظهر|بعد از ظهر/,\n        isPM: function (input) {\n            return /بعد از ظهر/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'قبل از ظهر';\n            } else {\n                return 'بعد از ظهر';\n            }\n        },\n        calendar : {\n            sameDay : '[امروز ساعت] LT',\n            nextDay : '[فردا ساعت] LT',\n            nextWeek : 'dddd [ساعت] LT',\n            lastDay : '[دیروز ساعت] LT',\n            lastWeek : 'dddd [پیش] [ساعت] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'در %s',\n            past : '%s پیش',\n            s : 'چند ثانیه',\n            ss : 'ثانیه d%',\n            m : 'یک دقیقه',\n            mm : '%d دقیقه',\n            h : 'یک ساعت',\n            hh : '%d ساعت',\n            d : 'یک روز',\n            dd : '%d روز',\n            M : 'یک ماه',\n            MM : '%d ماه',\n            y : 'یک سال',\n            yy : '%d سال'\n        },\n        preparse: function (string) {\n            return string.replace(/[۰-۹]/g, function (match) {\n                return numberMap[match];\n            }).replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            }).replace(/,/g, '،');\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}م/,\n        ordinal : '%dم',\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12 // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return fa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),\n        numbersFuture = [\n            'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',\n            numbersPast[7], numbersPast[8], numbersPast[9]\n        ];\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = '';\n        switch (key) {\n            case 's':\n                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n            case 'ss':\n                return isFuture ? 'sekunnin' : 'sekuntia';\n            case 'm':\n                return isFuture ? 'minuutin' : 'minuutti';\n            case 'mm':\n                result = isFuture ? 'minuutin' : 'minuuttia';\n                break;\n            case 'h':\n                return isFuture ? 'tunnin' : 'tunti';\n            case 'hh':\n                result = isFuture ? 'tunnin' : 'tuntia';\n                break;\n            case 'd':\n                return isFuture ? 'päivän' : 'päivä';\n            case 'dd':\n                result = isFuture ? 'päivän' : 'päivää';\n                break;\n            case 'M':\n                return isFuture ? 'kuukauden' : 'kuukausi';\n            case 'MM':\n                result = isFuture ? 'kuukauden' : 'kuukautta';\n                break;\n            case 'y':\n                return isFuture ? 'vuoden' : 'vuosi';\n            case 'yy':\n                result = isFuture ? 'vuoden' : 'vuotta';\n                break;\n        }\n        result = verbalNumber(number, isFuture) + ' ' + result;\n        return result;\n    }\n    function verbalNumber(number, isFuture) {\n        return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;\n    }\n\n    var fi = moment.defineLocale('fi', {\n        months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\n        monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n        weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\n        weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),\n        weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD.MM.YYYY',\n            LL : 'Do MMMM[ta] YYYY',\n            LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',\n            LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n            l : 'D.M.YYYY',\n            ll : 'Do MMM YYYY',\n            lll : 'Do MMM YYYY, [klo] HH.mm',\n            llll : 'ddd, Do MMM YYYY, [klo] HH.mm'\n        },\n        calendar : {\n            sameDay : '[tänään] [klo] LT',\n            nextDay : '[huomenna] [klo] LT',\n            nextWeek : 'dddd [klo] LT',\n            lastDay : '[eilen] [klo] LT',\n            lastWeek : '[viime] dddd[na] [klo] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s päästä',\n            past : '%s sitten',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return fi;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var fo = moment.defineLocale('fo', {\n        months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n        weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),\n        weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n        weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D. MMMM, YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Í dag kl.] LT',\n            nextDay : '[Í morgin kl.] LT',\n            nextWeek : 'dddd [kl.] LT',\n            lastDay : '[Í gjár kl.] LT',\n            lastWeek : '[síðstu] dddd [kl] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'um %s',\n            past : '%s síðani',\n            s : 'fá sekund',\n            ss : '%d sekundir',\n            m : 'ein minutt',\n            mm : '%d minuttir',\n            h : 'ein tími',\n            hh : '%d tímar',\n            d : 'ein dagur',\n            dd : '%d dagar',\n            M : 'ein mánaði',\n            MM : '%d mánaðir',\n            y : 'eitt ár',\n            yy : '%d ár'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return fo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var fr = moment.defineLocale('fr', {\n        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Aujourd’hui à] LT',\n            nextDay : '[Demain à] LT',\n            nextWeek : 'dddd [à] LT',\n            lastDay : '[Hier à] LT',\n            lastWeek : 'dddd [dernier à] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dans %s',\n            past : 'il y a %s',\n            s : 'quelques secondes',\n            ss : '%d secondes',\n            m : 'une minute',\n            mm : '%d minutes',\n            h : 'une heure',\n            hh : '%d heures',\n            d : 'un jour',\n            dd : '%d jours',\n            M : 'un mois',\n            MM : '%d mois',\n            y : 'un an',\n            yy : '%d ans'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                // TODO: Return 'e' when day of month > 1. Move this case inside\n                // block for masculine words below.\n                // See https://github.com/moment/moment/issues/3375\n                case 'D':\n                    return number + (number === 1 ? 'er' : '');\n\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return fr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var frCa = moment.defineLocale('fr-ca', {\n        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Aujourd’hui à] LT',\n            nextDay : '[Demain à] LT',\n            nextWeek : 'dddd [à] LT',\n            lastDay : '[Hier à] LT',\n            lastWeek : 'dddd [dernier à] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dans %s',\n            past : 'il y a %s',\n            s : 'quelques secondes',\n            ss : '%d secondes',\n            m : 'une minute',\n            mm : '%d minutes',\n            h : 'une heure',\n            hh : '%d heures',\n            d : 'un jour',\n            dd : '%d jours',\n            M : 'un mois',\n            MM : '%d mois',\n            y : 'un an',\n            yy : '%d ans'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        }\n    });\n\n    return frCa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var frCh = moment.defineLocale('fr-ch', {\n        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Aujourd’hui à] LT',\n            nextDay : '[Demain à] LT',\n            nextWeek : 'dddd [à] LT',\n            lastDay : '[Hier à] LT',\n            lastWeek : 'dddd [dernier à] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dans %s',\n            past : 'il y a %s',\n            s : 'quelques secondes',\n            ss : '%d secondes',\n            m : 'une minute',\n            mm : '%d minutes',\n            h : 'une heure',\n            hh : '%d heures',\n            d : 'un jour',\n            dd : '%d jours',\n            M : 'un mois',\n            MM : '%d mois',\n            y : 'un an',\n            yy : '%d ans'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return frCh;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n    var fy = moment.defineLocale('fy', {\n        months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n        monthsParseExact : true,\n        weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),\n        weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),\n        weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD-MM-YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[hjoed om] LT',\n            nextDay: '[moarn om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[juster om] LT',\n            lastWeek: '[ôfrûne] dddd [om] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'oer %s',\n            past : '%s lyn',\n            s : 'in pear sekonden',\n            ss : '%d sekonden',\n            m : 'ien minút',\n            mm : '%d minuten',\n            h : 'ien oere',\n            hh : '%d oeren',\n            d : 'ien dei',\n            dd : '%d dagen',\n            M : 'ien moanne',\n            MM : '%d moannen',\n            y : 'ien jier',\n            yy : '%d jierren'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal : function (number) {\n            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return fy;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var months = [\n        'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'\n    ];\n\n    var monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];\n\n    var weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];\n\n    var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];\n\n    var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n    var gd = moment.defineLocale('gd', {\n        months : months,\n        monthsShort : monthsShort,\n        monthsParseExact : true,\n        weekdays : weekdays,\n        weekdaysShort : weekdaysShort,\n        weekdaysMin : weekdaysMin,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[An-diugh aig] LT',\n            nextDay : '[A-màireach aig] LT',\n            nextWeek : 'dddd [aig] LT',\n            lastDay : '[An-dè aig] LT',\n            lastWeek : 'dddd [seo chaidh] [aig] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'ann an %s',\n            past : 'bho chionn %s',\n            s : 'beagan diogan',\n            ss : '%d diogan',\n            m : 'mionaid',\n            mm : '%d mionaidean',\n            h : 'uair',\n            hh : '%d uairean',\n            d : 'latha',\n            dd : '%d latha',\n            M : 'mìos',\n            MM : '%d mìosan',\n            y : 'bliadhna',\n            yy : '%d bliadhna'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}(d|na|mh)/,\n        ordinal : function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return gd;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var gl = moment.defineLocale('gl', {\n        months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\n        monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n        weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n        weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY H:mm',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n        },\n        calendar : {\n            sameDay : function () {\n                return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\n            },\n            nextDay : function () {\n                return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\n            },\n            nextWeek : function () {\n                return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\n            },\n            lastDay : function () {\n                return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';\n            },\n            lastWeek : function () {\n                return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : function (str) {\n                if (str.indexOf('un') === 0) {\n                    return 'n' + str;\n                }\n                return 'en ' + str;\n            },\n            past : 'hai %s',\n            s : 'uns segundos',\n            ss : '%d segundos',\n            m : 'un minuto',\n            mm : '%d minutos',\n            h : 'unha hora',\n            hh : '%d horas',\n            d : 'un día',\n            dd : '%d días',\n            M : 'un mes',\n            MM : '%d meses',\n            y : 'un ano',\n            yy : '%d anos'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal : '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return gl;\n\n})));\n","import { SpendMode } from 'models/plans/spendMode';\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { Plan } from \"models/plans/plan\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n@autoinject\nexport class PlanService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"PlanService\");\n  }\n\n  public async list(franchiseId: number,isRobotHunter: boolean, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`plan/list/${franchiseId}/${isRobotHunter}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  // public async getAllDemoByCompany(companyId: number): Promise<Plan[]> {\n  //   return await this.client.get(`plan/get-all-demo/${companyId}`)\n  //     .then((response: Plan[]) => {\n  //       return response;\n  //     })\n  // }\n\n  public async getAllByCompany(companyId: number): Promise<Plan[]> {\n    return await this.client.get(`plan/get-all/${companyId}`)\n      .then((response: Plan[]) => {\n        return response;\n      })\n  }\n  \n  public async getAll(isRobotHunter: boolean): Promise<Plan[]> {\n    return await this.client.get(`plan/get-all-plan/${isRobotHunter}`)\n      .then((response: any) => {\n        return <Plan[]>response;\n      });\n  }\n\n  public async getById(id: number): Promise<Plan> {\n    return await this.client.getById(\"plan\", id)\n      .then((response: any) => {\n        return <Plan>response;\n      });\n  }\n\n  public async create(model: Plan): Promise<Plan> {\n    return await this.client.create(\"plan\", model)\n      .then((response: any) => {\n        return <Plan>response;\n      });\n  }\n\n  public async update(model: Plan): Promise<void> {\n    return await this.client.updateById(\"plan\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(\"plan\", id)\n      .then(() => null);\n  }\n\n  public async changeState(id: number): Promise<void> {\n    return await this.client.post(`plan/change-state/${id}`)\n      .then(() => null);\n  }\n\n  public async changeTestItemsState(id: number): Promise<void> {\n    return await this.client.post(`plan/change-test-items-state/${id}`)\n      .then(() => null);\n  }\n  public async changeResultsExport(id: number): Promise<void> {\n    return await this.client.post(`plan/change-results-export-state/${id}`)\n      .then(() => null);\n  }\n  \n  public async changeOtherItemsState(id: number): Promise<void> {\n    return await this.client.post(`plan/change-other-items-state/${id}`)\n      .then(() => null);\n  }\n\n  public async changeCrossItemsState(id: number): Promise<void> {\n    return await this.client.post(`plan/change-cross-items-state/${id}`)\n      .then(() => null);\n  }\n\n  public async changeCustomReportSpendMode(id: number, spendMode: SpendMode): Promise<void> {\n    return await this.client.post(`plan/change-custom-report-spend-mode/${id}`, spendMode)\n      .then(() => null);\n  }\n\n  public async changeCandidateReport(id: number): Promise<void> {\n    return await this.client.post(`plan/change-candidate-report-state/${id}`)\n      .then(() => null);\n  }\n  \n  public async changeVideoInterview(id: number, talents: number, state: boolean): Promise<void> {\n    return await this.client.post(`plan/change-videointerview-state/${id}/${talents}/${state}`)\n      .then(() => null);\n  }\n  \n  // public async changeRobotHunter(id: number, talents: number, state: boolean): Promise<void> {\n  //   return await this.client.post(`plan/change-robothunter-state/${id}/${talents}/${state}`)\n  //     .then(() => null);\n  // }\n  public async changeViewWallets(id: number): Promise<void> {\n    return await this.client.post(`plan/change-view-wallet-state/${id}`)\n      .then(() => null);\n  }\n\n  public async changeShowLowBalanceMessage(id: number): Promise<void> {\n    return await this.client.post(`plan/change-show-low-balance-message-state/${id}`)\n      .then(() => null);\n  }\n\n  public async changeTalentracker(id: number): Promise<void> {\n    return await this.client.post(`plan/change-talentracker-state/${id}`)\n      .then(() => null);\n  }\n\n  public async changeTalentrackerColorFeedback(id: number, talents: number, state: boolean): Promise<void> {\n    return await this.client.post(`plan/change-talentracker-colorfeedback-state/${id}/${talents}/${state}`)\n      .then(() => null);\n  }\n\n  public async changeTalentrackerCoaching(id: number, talents: number, state: boolean): Promise<void> {\n    return await this.client.post(`plan/change-talentracker-coaching-state/${id}/${talents}/${state}`)\n      .then(() => null);\n  }\n\n  public async changeTalentrackerDevelopmentPlan(id: number, talents: number, state: boolean): Promise<void> {\n    return await this.client.post(`plan/change-talentracker-developmentplan-state/${id}/${talents}/${state}`)\n      .then(() => null);\n  }\n\n  public async changeTalentrackerJobOpportunities(id: number, talents: number, state: boolean): Promise<void> {\n    return await this.client.post(`plan/change-talentracker-jobopportunities-state/${id}/${talents}/${state}`)\n      .then(() => null);\n  }\n}\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            's': ['thodde secondanim', 'thodde second'],\n            'ss': [number + ' secondanim', number + ' second'],\n            'm': ['eka mintan', 'ek minute'],\n            'mm': [number + ' mintanim', number + ' mintam'],\n            'h': ['eka horan', 'ek hor'],\n            'hh': [number + ' horanim', number + ' horam'],\n            'd': ['eka disan', 'ek dis'],\n            'dd': [number + ' disanim', number + ' dis'],\n            'M': ['eka mhoinean', 'ek mhoino'],\n            'MM': [number + ' mhoineanim', number + ' mhoine'],\n            'y': ['eka vorsan', 'ek voros'],\n            'yy': [number + ' vorsanim', number + ' vorsam']\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var gomLatn = moment.defineLocale('gom-latn', {\n        months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),\n        monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\\'var'.split('_'),\n        weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n        weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'A h:mm [vazta]',\n            LTS : 'A h:mm:ss [vazta]',\n            L : 'DD-MM-YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY A h:mm [vazta]',\n            LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]',\n            llll: 'ddd, D MMM YYYY, A h:mm [vazta]'\n        },\n        calendar : {\n            sameDay: '[Aiz] LT',\n            nextDay: '[Faleam] LT',\n            nextWeek: '[Ieta to] dddd[,] LT',\n            lastDay: '[Kal] LT',\n            lastWeek: '[Fatlo] dddd[,] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : '%s',\n            past : '%s adim',\n            s : processRelativeTime,\n            ss : processRelativeTime,\n            m : processRelativeTime,\n            mm : processRelativeTime,\n            h : processRelativeTime,\n            hh : processRelativeTime,\n            d : processRelativeTime,\n            dd : processRelativeTime,\n            M : processRelativeTime,\n            MM : processRelativeTime,\n            y : processRelativeTime,\n            yy : processRelativeTime\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}(er)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                // the ordinal 'er' only applies to day of the month\n                case 'D':\n                    return number + 'er';\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                case 'w':\n                case 'W':\n                    return number;\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        },\n        meridiemParse: /rati|sokalli|donparam|sanje/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'rati') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'sokalli') {\n                return hour;\n            } else if (meridiem === 'donparam') {\n                return hour > 12 ? hour : hour + 12;\n            } else if (meridiem === 'sanje') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'rati';\n            } else if (hour < 12) {\n                return 'sokalli';\n            } else if (hour < 16) {\n                return 'donparam';\n            } else if (hour < 20) {\n                return 'sanje';\n            } else {\n                return 'rati';\n            }\n        }\n    });\n\n    return gomLatn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n            '1': '૧',\n            '2': '૨',\n            '3': '૩',\n            '4': '૪',\n            '5': '૫',\n            '6': '૬',\n            '7': '૭',\n            '8': '૮',\n            '9': '૯',\n            '0': '૦'\n        },\n        numberMap = {\n            '૧': '1',\n            '૨': '2',\n            '૩': '3',\n            '૪': '4',\n            '૫': '5',\n            '૬': '6',\n            '૭': '7',\n            '૮': '8',\n            '૯': '9',\n            '૦': '0'\n        };\n\n    var gu = moment.defineLocale('gu', {\n        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'),\n        monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'),\n        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm વાગ્યે',\n            LTS: 'A h:mm:ss વાગ્યે',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે'\n        },\n        calendar: {\n            sameDay: '[આજ] LT',\n            nextDay: '[કાલે] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ગઇકાલે] LT',\n            lastWeek: '[પાછલા] dddd, LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: '%s મા',\n            past: '%s પેહલા',\n            s: 'અમુક પળો',\n            ss: '%d સેકંડ',\n            m: 'એક મિનિટ',\n            mm: '%d મિનિટ',\n            h: 'એક કલાક',\n            hh: '%d કલાક',\n            d: 'એક દિવસ',\n            dd: '%d દિવસ',\n            M: 'એક મહિનો',\n            MM: '%d મહિનો',\n            y: 'એક વર્ષ',\n            yy: '%d વર્ષ'\n        },\n        preparse: function (string) {\n            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'રાત') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'સવાર') {\n                return hour;\n            } else if (meridiem === 'બપોર') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'સાંજ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'રાત';\n            } else if (hour < 10) {\n                return 'સવાર';\n            } else if (hour < 17) {\n                return 'બપોર';\n            } else if (hour < 20) {\n                return 'સાંજ';\n            } else {\n                return 'રાત';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6 // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return gu;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var he = moment.defineLocale('he', {\n        months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),\n        monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n        weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n        weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n        weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D [ב]MMMM YYYY',\n            LLL : 'D [ב]MMMM YYYY HH:mm',\n            LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',\n            l : 'D/M/YYYY',\n            ll : 'D MMM YYYY',\n            lll : 'D MMM YYYY HH:mm',\n            llll : 'ddd, D MMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[היום ב־]LT',\n            nextDay : '[מחר ב־]LT',\n            nextWeek : 'dddd [בשעה] LT',\n            lastDay : '[אתמול ב־]LT',\n            lastWeek : '[ביום] dddd [האחרון בשעה] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'בעוד %s',\n            past : 'לפני %s',\n            s : 'מספר שניות',\n            ss : '%d שניות',\n            m : 'דקה',\n            mm : '%d דקות',\n            h : 'שעה',\n            hh : function (number) {\n                if (number === 2) {\n                    return 'שעתיים';\n                }\n                return number + ' שעות';\n            },\n            d : 'יום',\n            dd : function (number) {\n                if (number === 2) {\n                    return 'יומיים';\n                }\n                return number + ' ימים';\n            },\n            M : 'חודש',\n            MM : function (number) {\n                if (number === 2) {\n                    return 'חודשיים';\n                }\n                return number + ' חודשים';\n            },\n            y : 'שנה',\n            yy : function (number) {\n                if (number === 2) {\n                    return 'שנתיים';\n                } else if (number % 10 === 0 && number !== 10) {\n                    return number + ' שנה';\n                }\n                return number + ' שנים';\n            }\n        },\n        meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n        isPM : function (input) {\n            return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 5) {\n                return 'לפנות בוקר';\n            } else if (hour < 10) {\n                return 'בבוקר';\n            } else if (hour < 12) {\n                return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n            } else if (hour < 18) {\n                return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n            } else {\n                return 'בערב';\n            }\n        }\n    });\n\n    return he;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '१',\n        '2': '२',\n        '3': '३',\n        '4': '४',\n        '5': '५',\n        '6': '६',\n        '7': '७',\n        '8': '८',\n        '9': '९',\n        '0': '०'\n    },\n    numberMap = {\n        '१': '1',\n        '२': '2',\n        '३': '3',\n        '४': '4',\n        '५': '5',\n        '६': '6',\n        '७': '7',\n        '८': '8',\n        '९': '9',\n        '०': '0'\n    };\n\n    var hi = moment.defineLocale('hi', {\n        months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),\n        monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm बजे',\n            LTS : 'A h:mm:ss बजे',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm बजे',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'\n        },\n        calendar : {\n            sameDay : '[आज] LT',\n            nextDay : '[कल] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[कल] LT',\n            lastWeek : '[पिछले] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s में',\n            past : '%s पहले',\n            s : 'कुछ ही क्षण',\n            ss : '%d सेकंड',\n            m : 'एक मिनट',\n            mm : '%d मिनट',\n            h : 'एक घंटा',\n            hh : '%d घंटे',\n            d : 'एक दिन',\n            dd : '%d दिन',\n            M : 'एक महीने',\n            MM : '%d महीने',\n            y : 'एक वर्ष',\n            yy : '%d वर्ष'\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n        meridiemParse: /रात|सुबह|दोपहर|शाम/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'रात') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सुबह') {\n                return hour;\n            } else if (meridiem === 'दोपहर') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'शाम') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'रात';\n            } else if (hour < 10) {\n                return 'सुबह';\n            } else if (hour < 17) {\n                return 'दोपहर';\n            } else if (hour < 20) {\n                return 'शाम';\n            } else {\n                return 'रात';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return hi;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jednog sata';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var hr = moment.defineLocale('hr', {\n        months : {\n            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),\n            standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')\n        },\n        monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n        weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay  : '[danas u] LT',\n            nextDay  : '[sutra u] LT',\n            nextWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay  : '[jučer u] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                        return '[prošlu] dddd [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past   : 'prije %s',\n            s      : 'par sekundi',\n            ss     : translate,\n            m      : translate,\n            mm     : translate,\n            h      : translate,\n            hh     : translate,\n            d      : 'dan',\n            dd     : translate,\n            M      : 'mjesec',\n            MM     : translate,\n            y      : 'godinu',\n            yy     : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return hr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n    function translate(number, withoutSuffix, key, isFuture) {\n        var num = number;\n        switch (key) {\n            case 's':\n                return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';\n            case 'ss':\n                return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce';\n            case 'm':\n                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'mm':\n                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'h':\n                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'hh':\n                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'd':\n                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'dd':\n                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'M':\n                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'MM':\n                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'y':\n                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n            case 'yy':\n                return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n        }\n        return '';\n    }\n    function week(isFuture) {\n        return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';\n    }\n\n    var hu = moment.defineLocale('hu', {\n        months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\n        monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),\n        weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n        weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n        weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'YYYY.MM.DD.',\n            LL : 'YYYY. MMMM D.',\n            LLL : 'YYYY. MMMM D. H:mm',\n            LLLL : 'YYYY. MMMM D., dddd H:mm'\n        },\n        meridiemParse: /de|du/i,\n        isPM: function (input) {\n            return input.charAt(1).toLowerCase() === 'u';\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower === true ? 'de' : 'DE';\n            } else {\n                return isLower === true ? 'du' : 'DU';\n            }\n        },\n        calendar : {\n            sameDay : '[ma] LT[-kor]',\n            nextDay : '[holnap] LT[-kor]',\n            nextWeek : function () {\n                return week.call(this, true);\n            },\n            lastDay : '[tegnap] LT[-kor]',\n            lastWeek : function () {\n                return week.call(this, false);\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s múlva',\n            past : '%s',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return hu;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var hyAm = moment.defineLocale('hy-am', {\n        months : {\n            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),\n            standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')\n        },\n        monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n        weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),\n        weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY թ.',\n            LLL : 'D MMMM YYYY թ., HH:mm',\n            LLLL : 'dddd, D MMMM YYYY թ., HH:mm'\n        },\n        calendar : {\n            sameDay: '[այսօր] LT',\n            nextDay: '[վաղը] LT',\n            lastDay: '[երեկ] LT',\n            nextWeek: function () {\n                return 'dddd [օրը ժամը] LT';\n            },\n            lastWeek: function () {\n                return '[անցած] dddd [օրը ժամը] LT';\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : '%s հետո',\n            past : '%s առաջ',\n            s : 'մի քանի վայրկյան',\n            ss : '%d վայրկյան',\n            m : 'րոպե',\n            mm : '%d րոպե',\n            h : 'ժամ',\n            hh : '%d ժամ',\n            d : 'օր',\n            dd : '%d օր',\n            M : 'ամիս',\n            MM : '%d ամիս',\n            y : 'տարի',\n            yy : '%d տարի'\n        },\n        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n        isPM: function (input) {\n            return /^(ցերեկվա|երեկոյան)$/.test(input);\n        },\n        meridiem : function (hour) {\n            if (hour < 4) {\n                return 'գիշերվա';\n            } else if (hour < 12) {\n                return 'առավոտվա';\n            } else if (hour < 17) {\n                return 'ցերեկվա';\n            } else {\n                return 'երեկոյան';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'DDD':\n                case 'w':\n                case 'W':\n                case 'DDDo':\n                    if (number === 1) {\n                        return number + '-ին';\n                    }\n                    return number + '-րդ';\n                default:\n                    return number;\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return hyAm;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var id = moment.defineLocale('id', {\n        months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n        weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n        weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n        weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY [pukul] HH.mm',\n            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n        },\n        meridiemParse: /pagi|siang|sore|malam/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'siang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sore' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'siang';\n            } else if (hours < 19) {\n                return 'sore';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar : {\n            sameDay : '[Hari ini pukul] LT',\n            nextDay : '[Besok pukul] LT',\n            nextWeek : 'dddd [pukul] LT',\n            lastDay : '[Kemarin pukul] LT',\n            lastWeek : 'dddd [lalu pukul] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dalam %s',\n            past : '%s yang lalu',\n            s : 'beberapa detik',\n            ss : '%d detik',\n            m : 'semenit',\n            mm : '%d menit',\n            h : 'sejam',\n            hh : '%d jam',\n            d : 'sehari',\n            dd : '%d hari',\n            M : 'sebulan',\n            MM : '%d bulan',\n            y : 'setahun',\n            yy : '%d tahun'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return id;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function plural(n) {\n        if (n % 100 === 11) {\n            return true;\n        } else if (n % 10 === 1) {\n            return false;\n        }\n        return true;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';\n            case 'ss':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum');\n                }\n                return result + 'sekúnda';\n            case 'm':\n                return withoutSuffix ? 'mínúta' : 'mínútu';\n            case 'mm':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');\n                } else if (withoutSuffix) {\n                    return result + 'mínúta';\n                }\n                return result + 'mínútu';\n            case 'hh':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');\n                }\n                return result + 'klukkustund';\n            case 'd':\n                if (withoutSuffix) {\n                    return 'dagur';\n                }\n                return isFuture ? 'dag' : 'degi';\n            case 'dd':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'dagar';\n                    }\n                    return result + (isFuture ? 'daga' : 'dögum');\n                } else if (withoutSuffix) {\n                    return result + 'dagur';\n                }\n                return result + (isFuture ? 'dag' : 'degi');\n            case 'M':\n                if (withoutSuffix) {\n                    return 'mánuður';\n                }\n                return isFuture ? 'mánuð' : 'mánuði';\n            case 'MM':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'mánuðir';\n                    }\n                    return result + (isFuture ? 'mánuði' : 'mánuðum');\n                } else if (withoutSuffix) {\n                    return result + 'mánuður';\n                }\n                return result + (isFuture ? 'mánuð' : 'mánuði');\n            case 'y':\n                return withoutSuffix || isFuture ? 'ár' : 'ári';\n            case 'yy':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n                }\n                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n        }\n    }\n\n    var is = moment.defineLocale('is', {\n        months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n        weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),\n        weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n        weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY [kl.] H:mm',\n            LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'\n        },\n        calendar : {\n            sameDay : '[í dag kl.] LT',\n            nextDay : '[á morgun kl.] LT',\n            nextWeek : 'dddd [kl.] LT',\n            lastDay : '[í gær kl.] LT',\n            lastWeek : '[síðasta] dddd [kl.] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'eftir %s',\n            past : 'fyrir %s síðan',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : 'klukkustund',\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return is;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var it = moment.defineLocale('it', {\n        months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n        monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n        weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Oggi alle] LT',\n            nextDay: '[Domani alle] LT',\n            nextWeek: 'dddd [alle] LT',\n            lastDay: '[Ieri alle] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[la scorsa] dddd [alle] LT';\n                    default:\n                        return '[lo scorso] dddd [alle] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : function (s) {\n                return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;\n            },\n            past : '%s fa',\n            s : 'alcuni secondi',\n            ss : '%d secondi',\n            m : 'un minuto',\n            mm : '%d minuti',\n            h : 'un\\'ora',\n            hh : '%d ore',\n            d : 'un giorno',\n            dd : '%d giorni',\n            M : 'un mese',\n            MM : '%d mesi',\n            y : 'un anno',\n            yy : '%d anni'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal: '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return it;\n\n})));\n","import { createOverrideContext, BindingBehavior, ValueConverter, sourceContext, bindingMode } from 'aurelia-binding';\n\nvar oneTime = bindingMode.oneTime;\n\nexport function updateOverrideContexts(views, startIndex) {\n  var length = views.length;\n\n  if (startIndex > 0) {\n    startIndex = startIndex - 1;\n  }\n\n  for (; startIndex < length; ++startIndex) {\n    updateOverrideContext(views[startIndex].overrideContext, startIndex, length);\n  }\n}\n\nexport function createFullOverrideContext(repeat, data, index, length, key) {\n  var bindingContext = {};\n  var overrideContext = createOverrideContext(bindingContext, repeat.scope.overrideContext);\n\n  if (typeof key !== 'undefined') {\n    bindingContext[repeat.key] = key;\n    bindingContext[repeat.value] = data;\n  } else {\n    bindingContext[repeat.local] = data;\n  }\n  updateOverrideContext(overrideContext, index, length);\n  return overrideContext;\n}\n\nexport function updateOverrideContext(overrideContext, index, length) {\n  var first = index === 0;\n  var last = index === length - 1;\n  var even = index % 2 === 0;\n\n  overrideContext.$index = index;\n  overrideContext.$first = first;\n  overrideContext.$last = last;\n  overrideContext.$middle = !(first || last);\n  overrideContext.$odd = !even;\n  overrideContext.$even = even;\n}\n\nexport function getItemsSourceExpression(instruction, attrName) {\n  return instruction.behaviorInstructions.filter(function (bi) {\n    return bi.originalAttrName === attrName;\n  })[0].attributes.items.sourceExpression;\n}\n\nexport function unwrapExpression(expression) {\n  var unwrapped = false;\n  while (expression instanceof BindingBehavior) {\n    expression = expression.expression;\n  }\n  while (expression instanceof ValueConverter) {\n    expression = expression.expression;\n    unwrapped = true;\n  }\n  return unwrapped ? expression : null;\n}\n\nexport function isOneTime(expression) {\n  while (expression instanceof BindingBehavior) {\n    if (expression.name === 'oneTime') {\n      return true;\n    }\n    expression = expression.expression;\n  }\n  return false;\n}\n\nexport function updateOneTimeBinding(binding) {\n  if (binding.call && binding.mode === oneTime) {\n    binding.call(sourceContext);\n  } else if (binding.updateOneTimeBindings) {\n    binding.updateOneTimeBindings();\n  }\n}\n\nexport function indexOf(array, item, matcher, startIndex) {\n  if (!matcher) {\n    return array.indexOf(item);\n  }\n  var length = array.length;\n  for (var index = startIndex || 0; index < length; index++) {\n    if (matcher(array[index], item)) {\n      return index;\n    }\n  }\n  return -1;\n}","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ja = moment.defineLocale('ja', {\n        months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n        weekdaysShort : '日_月_火_水_木_金_土'.split('_'),\n        weekdaysMin : '日_月_火_水_木_金_土'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY/MM/DD',\n            LL : 'YYYY年M月D日',\n            LLL : 'YYYY年M月D日 HH:mm',\n            LLLL : 'YYYY年M月D日 dddd HH:mm',\n            l : 'YYYY/MM/DD',\n            ll : 'YYYY年M月D日',\n            lll : 'YYYY年M月D日 HH:mm',\n            llll : 'YYYY年M月D日(ddd) HH:mm'\n        },\n        meridiemParse: /午前|午後/i,\n        isPM : function (input) {\n            return input === '午後';\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return '午前';\n            } else {\n                return '午後';\n            }\n        },\n        calendar : {\n            sameDay : '[今日] LT',\n            nextDay : '[明日] LT',\n            nextWeek : function (now) {\n                if (now.week() < this.week()) {\n                    return '[来週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            lastDay : '[昨日] LT',\n            lastWeek : function (now) {\n                if (this.week() < now.week()) {\n                    return '[先週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}日/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                default:\n                    return number;\n            }\n        },\n        relativeTime : {\n            future : '%s後',\n            past : '%s前',\n            s : '数秒',\n            ss : '%d秒',\n            m : '1分',\n            mm : '%d分',\n            h : '1時間',\n            hh : '%d時間',\n            d : '1日',\n            dd : '%d日',\n            M : '1ヶ月',\n            MM : '%dヶ月',\n            y : '1年',\n            yy : '%d年'\n        }\n    });\n\n    return ja;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var jv = moment.defineLocale('jv', {\n        months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n        weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n        weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n        weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY [pukul] HH.mm',\n            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n        },\n        meridiemParse: /enjing|siyang|sonten|ndalu/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'enjing') {\n                return hour;\n            } else if (meridiem === 'siyang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'enjing';\n            } else if (hours < 15) {\n                return 'siyang';\n            } else if (hours < 19) {\n                return 'sonten';\n            } else {\n                return 'ndalu';\n            }\n        },\n        calendar : {\n            sameDay : '[Dinten puniko pukul] LT',\n            nextDay : '[Mbenjang pukul] LT',\n            nextWeek : 'dddd [pukul] LT',\n            lastDay : '[Kala wingi pukul] LT',\n            lastWeek : 'dddd [kepengker pukul] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'wonten ing %s',\n            past : '%s ingkang kepengker',\n            s : 'sawetawis detik',\n            ss : '%d detik',\n            m : 'setunggal menit',\n            mm : '%d menit',\n            h : 'setunggal jam',\n            hh : '%d jam',\n            d : 'sedinten',\n            dd : '%d dinten',\n            M : 'sewulan',\n            MM : '%d wulan',\n            y : 'setaun',\n            yy : '%d taun'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return jv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ka = moment.defineLocale('ka', {\n        months : {\n            standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),\n            format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')\n        },\n        monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n        weekdays : {\n            standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),\n            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),\n            isFormat: /(წინა|შემდეგ)/\n        },\n        weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n        weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[დღეს] LT[-ზე]',\n            nextDay : '[ხვალ] LT[-ზე]',\n            lastDay : '[გუშინ] LT[-ზე]',\n            nextWeek : '[შემდეგ] dddd LT[-ზე]',\n            lastWeek : '[წინა] dddd LT-ზე',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : function (s) {\n                return (/(წამი|წუთი|საათი|წელი)/).test(s) ?\n                    s.replace(/ი$/, 'ში') :\n                    s + 'ში';\n            },\n            past : function (s) {\n                if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {\n                    return s.replace(/(ი|ე)$/, 'ის წინ');\n                }\n                if ((/წელი/).test(s)) {\n                    return s.replace(/წელი$/, 'წლის წინ');\n                }\n            },\n            s : 'რამდენიმე წამი',\n            ss : '%d წამი',\n            m : 'წუთი',\n            mm : '%d წუთი',\n            h : 'საათი',\n            hh : '%d საათი',\n            d : 'დღე',\n            dd : '%d დღე',\n            M : 'თვე',\n            MM : '%d თვე',\n            y : 'წელი',\n            yy : '%d წელი'\n        },\n        dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n        ordinal : function (number) {\n            if (number === 0) {\n                return number;\n            }\n            if (number === 1) {\n                return number + '-ლი';\n            }\n            if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {\n                return 'მე-' + number;\n            }\n            return number + '-ე';\n        },\n        week : {\n            dow : 1,\n            doy : 7\n        }\n    });\n\n    return ka;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var suffixes = {\n        0: '-ші',\n        1: '-ші',\n        2: '-ші',\n        3: '-ші',\n        4: '-ші',\n        5: '-ші',\n        6: '-шы',\n        7: '-ші',\n        8: '-ші',\n        9: '-шы',\n        10: '-шы',\n        20: '-шы',\n        30: '-шы',\n        40: '-шы',\n        50: '-ші',\n        60: '-шы',\n        70: '-ші',\n        80: '-ші',\n        90: '-шы',\n        100: '-ші'\n    };\n\n    var kk = moment.defineLocale('kk', {\n        months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),\n        monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n        weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),\n        weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n        weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Бүгін сағат] LT',\n            nextDay : '[Ертең сағат] LT',\n            nextWeek : 'dddd [сағат] LT',\n            lastDay : '[Кеше сағат] LT',\n            lastWeek : '[Өткен аптаның] dddd [сағат] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s ішінде',\n            past : '%s бұрын',\n            s : 'бірнеше секунд',\n            ss : '%d секунд',\n            m : 'бір минут',\n            mm : '%d минут',\n            h : 'бір сағат',\n            hh : '%d сағат',\n            d : 'бір күн',\n            dd : '%d күн',\n            M : 'бір ай',\n            MM : '%d ай',\n            y : 'бір жыл',\n            yy : '%d жыл'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n        ordinal : function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return kk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '១',\n        '2': '២',\n        '3': '៣',\n        '4': '៤',\n        '5': '៥',\n        '6': '៦',\n        '7': '៧',\n        '8': '៨',\n        '9': '៩',\n        '0': '០'\n    }, numberMap = {\n        '១': '1',\n        '២': '2',\n        '៣': '3',\n        '៤': '4',\n        '៥': '5',\n        '៦': '6',\n        '៧': '7',\n        '៨': '8',\n        '៩': '9',\n        '០': '0'\n    };\n\n    var km = moment.defineLocale('km', {\n        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n            '_'\n        ),\n        monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n            '_'\n        ),\n        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ព្រឹក|ល្ងាច/,\n        isPM: function (input) {\n            return input === 'ល្ងាច';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ព្រឹក';\n            } else {\n                return 'ល្ងាច';\n            }\n        },\n        calendar: {\n            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n            nextDay: '[ស្អែក ម៉ោង] LT',\n            nextWeek: 'dddd [ម៉ោង] LT',\n            lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: '%sទៀត',\n            past: '%sមុន',\n            s: 'ប៉ុន្មានវិនាទី',\n            ss: '%d វិនាទី',\n            m: 'មួយនាទី',\n            mm: '%d នាទី',\n            h: 'មួយម៉ោង',\n            hh: '%d ម៉ោង',\n            d: 'មួយថ្ងៃ',\n            dd: '%d ថ្ងៃ',\n            M: 'មួយខែ',\n            MM: '%d ខែ',\n            y: 'មួយឆ្នាំ',\n            yy: '%d ឆ្នាំ'\n        },\n        dayOfMonthOrdinalParse : /ទី\\d{1,2}/,\n        ordinal : 'ទី%d',\n        preparse: function (string) {\n            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4 // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return km;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '೧',\n        '2': '೨',\n        '3': '೩',\n        '4': '೪',\n        '5': '೫',\n        '6': '೬',\n        '7': '೭',\n        '8': '೮',\n        '9': '೯',\n        '0': '೦'\n    },\n    numberMap = {\n        '೧': '1',\n        '೨': '2',\n        '೩': '3',\n        '೪': '4',\n        '೫': '5',\n        '೬': '6',\n        '೭': '7',\n        '೮': '8',\n        '೯': '9',\n        '೦': '0'\n    };\n\n    var kn = moment.defineLocale('kn', {\n        months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'),\n        monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'),\n        weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n        weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm',\n            LTS : 'A h:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm'\n        },\n        calendar : {\n            sameDay : '[ಇಂದು] LT',\n            nextDay : '[ನಾಳೆ] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[ನಿನ್ನೆ] LT',\n            lastWeek : '[ಕೊನೆಯ] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s ನಂತರ',\n            past : '%s ಹಿಂದೆ',\n            s : 'ಕೆಲವು ಕ್ಷಣಗಳು',\n            ss : '%d ಸೆಕೆಂಡುಗಳು',\n            m : 'ಒಂದು ನಿಮಿಷ',\n            mm : '%d ನಿಮಿಷ',\n            h : 'ಒಂದು ಗಂಟೆ',\n            hh : '%d ಗಂಟೆ',\n            d : 'ಒಂದು ದಿನ',\n            dd : '%d ದಿನ',\n            M : 'ಒಂದು ತಿಂಗಳು',\n            MM : '%d ತಿಂಗಳು',\n            y : 'ಒಂದು ವರ್ಷ',\n            yy : '%d ವರ್ಷ'\n        },\n        preparse: function (string) {\n            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ರಾತ್ರಿ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n                return hour;\n            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ಸಂಜೆ') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ರಾತ್ರಿ';\n            } else if (hour < 10) {\n                return 'ಬೆಳಿಗ್ಗೆ';\n            } else if (hour < 17) {\n                return 'ಮಧ್ಯಾಹ್ನ';\n            } else if (hour < 20) {\n                return 'ಸಂಜೆ';\n            } else {\n                return 'ರಾತ್ರಿ';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n        ordinal : function (number) {\n            return number + 'ನೇ';\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return kn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ko = moment.defineLocale('ko', {\n        months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n        monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n        weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n        weekdaysShort : '일_월_화_수_목_금_토'.split('_'),\n        weekdaysMin : '일_월_화_수_목_금_토'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm',\n            LTS : 'A h:mm:ss',\n            L : 'YYYY.MM.DD.',\n            LL : 'YYYY년 MMMM D일',\n            LLL : 'YYYY년 MMMM D일 A h:mm',\n            LLLL : 'YYYY년 MMMM D일 dddd A h:mm',\n            l : 'YYYY.MM.DD.',\n            ll : 'YYYY년 MMMM D일',\n            lll : 'YYYY년 MMMM D일 A h:mm',\n            llll : 'YYYY년 MMMM D일 dddd A h:mm'\n        },\n        calendar : {\n            sameDay : '오늘 LT',\n            nextDay : '내일 LT',\n            nextWeek : 'dddd LT',\n            lastDay : '어제 LT',\n            lastWeek : '지난주 dddd LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s 후',\n            past : '%s 전',\n            s : '몇 초',\n            ss : '%d초',\n            m : '1분',\n            mm : '%d분',\n            h : '한 시간',\n            hh : '%d시간',\n            d : '하루',\n            dd : '%d일',\n            M : '한 달',\n            MM : '%d달',\n            y : '일 년',\n            yy : '%d년'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}(일|월|주)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '일';\n                case 'M':\n                    return number + '월';\n                case 'w':\n                case 'W':\n                    return number + '주';\n                default:\n                    return number;\n            }\n        },\n        meridiemParse : /오전|오후/,\n        isPM : function (token) {\n            return token === '오후';\n        },\n        meridiem : function (hour, minute, isUpper) {\n            return hour < 12 ? '오전' : '오후';\n        }\n    });\n\n    return ko;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var suffixes = {\n        0: '-чү',\n        1: '-чи',\n        2: '-чи',\n        3: '-чү',\n        4: '-чү',\n        5: '-чи',\n        6: '-чы',\n        7: '-чи',\n        8: '-чи',\n        9: '-чу',\n        10: '-чу',\n        20: '-чы',\n        30: '-чу',\n        40: '-чы',\n        50: '-чү',\n        60: '-чы',\n        70: '-чи',\n        80: '-чи',\n        90: '-чу',\n        100: '-чү'\n    };\n\n    var ky = moment.defineLocale('ky', {\n        months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),\n        monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),\n        weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n        weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Бүгүн саат] LT',\n            nextDay : '[Эртең саат] LT',\n            nextWeek : 'dddd [саат] LT',\n            lastDay : '[Кече саат] LT',\n            lastWeek : '[Өткен аптанын] dddd [күнү] [саат] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s ичинде',\n            past : '%s мурун',\n            s : 'бирнече секунд',\n            ss : '%d секунд',\n            m : 'бир мүнөт',\n            mm : '%d мүнөт',\n            h : 'бир саат',\n            hh : '%d саат',\n            d : 'бир күн',\n            dd : '%d күн',\n            M : 'бир ай',\n            MM : '%d ай',\n            y : 'бир жыл',\n            yy : '%d жыл'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n        ordinal : function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return ky;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            'm': ['eng Minutt', 'enger Minutt'],\n            'h': ['eng Stonn', 'enger Stonn'],\n            'd': ['een Dag', 'engem Dag'],\n            'M': ['ee Mount', 'engem Mount'],\n            'y': ['ee Joer', 'engem Joer']\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n    function processFutureTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'a ' + string;\n        }\n        return 'an ' + string;\n    }\n    function processPastTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'viru ' + string;\n        }\n        return 'virun ' + string;\n    }\n    /**\n     * Returns true if the word before the given number loses the '-n' ending.\n     * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n     *\n     * @param number {integer}\n     * @returns {boolean}\n     */\n    function eifelerRegelAppliesToNumber(number) {\n        number = parseInt(number, 10);\n        if (isNaN(number)) {\n            return false;\n        }\n        if (number < 0) {\n            // Negative Number --> always true\n            return true;\n        } else if (number < 10) {\n            // Only 1 digit\n            if (4 <= number && number <= 7) {\n                return true;\n            }\n            return false;\n        } else if (number < 100) {\n            // 2 digits\n            var lastDigit = number % 10, firstDigit = number / 10;\n            if (lastDigit === 0) {\n                return eifelerRegelAppliesToNumber(firstDigit);\n            }\n            return eifelerRegelAppliesToNumber(lastDigit);\n        } else if (number < 10000) {\n            // 3 or 4 digits --> recursively check first digit\n            while (number >= 10) {\n                number = number / 10;\n            }\n            return eifelerRegelAppliesToNumber(number);\n        } else {\n            // Anything larger than 4 digits: recursively check first n-3 digits\n            number = number / 1000;\n            return eifelerRegelAppliesToNumber(number);\n        }\n    }\n\n    var lb = moment.defineLocale('lb', {\n        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n        monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact : true,\n        weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),\n        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat: {\n            LT: 'H:mm [Auer]',\n            LTS: 'H:mm:ss [Auer]',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm [Auer]',\n            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'\n        },\n        calendar: {\n            sameDay: '[Haut um] LT',\n            sameElse: 'L',\n            nextDay: '[Muer um] LT',\n            nextWeek: 'dddd [um] LT',\n            lastDay: '[Gëschter um] LT',\n            lastWeek: function () {\n                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n                switch (this.day()) {\n                    case 2:\n                    case 4:\n                        return '[Leschten] dddd [um] LT';\n                    default:\n                        return '[Leschte] dddd [um] LT';\n                }\n            }\n        },\n        relativeTime : {\n            future : processFutureTime,\n            past : processPastTime,\n            s : 'e puer Sekonnen',\n            ss : '%d Sekonnen',\n            m : processRelativeTime,\n            mm : '%d Minutten',\n            h : processRelativeTime,\n            hh : '%d Stonnen',\n            d : processRelativeTime,\n            dd : '%d Deeg',\n            M : processRelativeTime,\n            MM : '%d Méint',\n            y : processRelativeTime,\n            yy : '%d Joer'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return lb;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var lo = moment.defineLocale('lo', {\n        months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n        monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n        weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'ວັນdddd D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n        isPM: function (input) {\n            return input === 'ຕອນແລງ';\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ຕອນເຊົ້າ';\n            } else {\n                return 'ຕອນແລງ';\n            }\n        },\n        calendar : {\n            sameDay : '[ມື້ນີ້ເວລາ] LT',\n            nextDay : '[ມື້ອື່ນເວລາ] LT',\n            nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',\n            lastDay : '[ມື້ວານນີ້ເວລາ] LT',\n            lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'ອີກ %s',\n            past : '%sຜ່ານມາ',\n            s : 'ບໍ່ເທົ່າໃດວິນາທີ',\n            ss : '%d ວິນາທີ' ,\n            m : '1 ນາທີ',\n            mm : '%d ນາທີ',\n            h : '1 ຊົ່ວໂມງ',\n            hh : '%d ຊົ່ວໂມງ',\n            d : '1 ມື້',\n            dd : '%d ມື້',\n            M : '1 ເດືອນ',\n            MM : '%d ເດືອນ',\n            y : '1 ປີ',\n            yy : '%d ປີ'\n        },\n        dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n        ordinal : function (number) {\n            return 'ທີ່' + number;\n        }\n    });\n\n    return lo;\n\n})));\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Position } from \"models/test-position/position\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport config from 'config.js';\n\n@autoinject()\nexport class PositionService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"PositionService\");\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"position/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n  public async listPositionReference(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    \n    let backendUrl = config.URLS_BACKEND;\n    let a = this.client.baseUrl \n    // `${backendUrl}/api/v1/company/${companyId}/`;\n    return await this.client.post(\"position/list-position-reference\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n  public async getAll(): Promise<Position[]> {\n    return await this.client.get(\"position\")\n      .then((response: any) => {\n        return <Position[]>response;\n      });\n  }\n\n  public async getById(id: number): Promise<Position> {\n    return await this.client.getById(\"position\", id)\n      .then((response: Position) => {\n        return response;\n      });\n  }\n\n  public async create(model: Position): Promise<Position> {\n    return await this.client.create(\"position\", model)\n      .then((response: any) => {\n        return <Position>response;\n      });\n  }\n\n  public async update(model: Position): Promise<void> {\n    return await this.client.updateById(\"position\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(`position`, id)\n      .then(() => null);\n  }\n\n  public async sendRemindersByFilter(parameters: UxDatatableParameters): Promise<boolean> {\n    return await this.client.post(\"position/list-send-reminder/\", parameters)\n      .then((response: any) => {\n        return true;\n      });\n  }\n\n  public async sendReminder(id: number): Promise<boolean> {\n    return await this.client.post(`position/send-reminder/${id}`)\n      .then((response: any) => {\n        return true;\n      });\n  }\n\n}\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var units = {\n        'ss' : 'sekundė_sekundžių_sekundes',\n        'm' : 'minutė_minutės_minutę',\n        'mm': 'minutės_minučių_minutes',\n        'h' : 'valanda_valandos_valandą',\n        'hh': 'valandos_valandų_valandas',\n        'd' : 'diena_dienos_dieną',\n        'dd': 'dienos_dienų_dienas',\n        'M' : 'mėnuo_mėnesio_mėnesį',\n        'MM': 'mėnesiai_mėnesių_mėnesius',\n        'y' : 'metai_metų_metus',\n        'yy': 'metai_metų_metus'\n    };\n    function translateSeconds(number, withoutSuffix, key, isFuture) {\n        if (withoutSuffix) {\n            return 'kelios sekundės';\n        } else {\n            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n        }\n    }\n    function translateSingular(number, withoutSuffix, key, isFuture) {\n        return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);\n    }\n    function special(number) {\n        return number % 10 === 0 || (number > 10 && number < 20);\n    }\n    function forms(key) {\n        return units[key].split('_');\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        if (number === 1) {\n            return result + translateSingular(number, withoutSuffix, key[0], isFuture);\n        } else if (withoutSuffix) {\n            return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n        } else {\n            if (isFuture) {\n                return result + forms(key)[1];\n            } else {\n                return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n            }\n        }\n    }\n    var lt = moment.defineLocale('lt', {\n        months : {\n            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),\n            standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),\n            isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/\n        },\n        monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n        weekdays : {\n            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),\n            standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),\n            isFormat: /dddd HH:mm/\n        },\n        weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n        weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'YYYY [m.] MMMM D [d.]',\n            LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n            l : 'YYYY-MM-DD',\n            ll : 'YYYY [m.] MMMM D [d.]',\n            lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\n        },\n        calendar : {\n            sameDay : '[Šiandien] LT',\n            nextDay : '[Rytoj] LT',\n            nextWeek : 'dddd LT',\n            lastDay : '[Vakar] LT',\n            lastWeek : '[Praėjusį] dddd LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'po %s',\n            past : 'prieš %s',\n            s : translateSeconds,\n            ss : translate,\n            m : translateSingular,\n            mm : translate,\n            h : translateSingular,\n            hh : translate,\n            d : translateSingular,\n            dd : translate,\n            M : translateSingular,\n            MM : translate,\n            y : translateSingular,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n        ordinal : function (number) {\n            return number + '-oji';\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return lt;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var units = {\n        'ss': 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n        'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        'h': 'stundas_stundām_stunda_stundas'.split('_'),\n        'hh': 'stundas_stundām_stunda_stundas'.split('_'),\n        'd': 'dienas_dienām_diena_dienas'.split('_'),\n        'dd': 'dienas_dienām_diena_dienas'.split('_'),\n        'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        'y': 'gada_gadiem_gads_gadi'.split('_'),\n        'yy': 'gada_gadiem_gads_gadi'.split('_')\n    };\n    /**\n     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n     */\n    function format(forms, number, withoutSuffix) {\n        if (withoutSuffix) {\n            // E.g. \"21 minūte\", \"3 minūtes\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n        } else {\n            // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n            // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n        }\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        return number + ' ' + format(units[key], number, withoutSuffix);\n    }\n    function relativeTimeWithSingular(number, withoutSuffix, key) {\n        return format(units[key], number, withoutSuffix);\n    }\n    function relativeSeconds(number, withoutSuffix) {\n        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n    }\n\n    var lv = moment.defineLocale('lv', {\n        months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n        weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),\n        weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY.',\n            LL : 'YYYY. [gada] D. MMMM',\n            LLL : 'YYYY. [gada] D. MMMM, HH:mm',\n            LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'\n        },\n        calendar : {\n            sameDay : '[Šodien pulksten] LT',\n            nextDay : '[Rīt pulksten] LT',\n            nextWeek : 'dddd [pulksten] LT',\n            lastDay : '[Vakar pulksten] LT',\n            lastWeek : '[Pagājušā] dddd [pulksten] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'pēc %s',\n            past : 'pirms %s',\n            s : relativeSeconds,\n            ss : relativeTimeWithPlural,\n            m : relativeTimeWithSingular,\n            mm : relativeTimeWithPlural,\n            h : relativeTimeWithSingular,\n            hh : relativeTimeWithPlural,\n            d : relativeTimeWithSingular,\n            dd : relativeTimeWithPlural,\n            M : relativeTimeWithSingular,\n            MM : relativeTimeWithPlural,\n            y : relativeTimeWithSingular,\n            yy : relativeTimeWithPlural\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return lv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var translator = {\n        words: { //Different grammatical cases\n            ss: ['sekund', 'sekunda', 'sekundi'],\n            m: ['jedan minut', 'jednog minuta'],\n            mm: ['minut', 'minuta', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            dd: ['dan', 'dana', 'dana'],\n            MM: ['mjesec', 'mjeseca', 'mjeseci'],\n            yy: ['godina', 'godine', 'godina']\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n            }\n        }\n    };\n\n    var me = moment.defineLocale('me', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact : true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS : 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sjutra u] LT',\n\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay  : '[juče u] LT',\n            lastWeek : function () {\n                var lastWeekDays = [\n                    '[prošle] [nedjelje] [u] LT',\n                    '[prošlog] [ponedjeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srijede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT'\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past   : 'prije %s',\n            s      : 'nekoliko sekundi',\n            ss     : translator.translate,\n            m      : translator.translate,\n            mm     : translator.translate,\n            h      : translator.translate,\n            hh     : translator.translate,\n            d      : 'dan',\n            dd     : translator.translate,\n            M      : 'mjesec',\n            MM     : translator.translate,\n            y      : 'godinu',\n            yy     : translator.translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return me;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var mi = moment.defineLocale('mi', {\n        months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'),\n        monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),\n        monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [i] HH:mm',\n            LLLL: 'dddd, D MMMM YYYY [i] HH:mm'\n        },\n        calendar: {\n            sameDay: '[i teie mahana, i] LT',\n            nextDay: '[apopo i] LT',\n            nextWeek: 'dddd [i] LT',\n            lastDay: '[inanahi i] LT',\n            lastWeek: 'dddd [whakamutunga i] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: 'i roto i %s',\n            past: '%s i mua',\n            s: 'te hēkona ruarua',\n            ss: '%d hēkona',\n            m: 'he meneti',\n            mm: '%d meneti',\n            h: 'te haora',\n            hh: '%d haora',\n            d: 'he ra',\n            dd: '%d ra',\n            M: 'he marama',\n            MM: '%d marama',\n            y: 'he tau',\n            yy: '%d tau'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return mi;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var mk = moment.defineLocale('mk', {\n        months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),\n        monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),\n        weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n        weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'D.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY H:mm',\n            LLLL : 'dddd, D MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay : '[Денес во] LT',\n            nextDay : '[Утре во] LT',\n            nextWeek : '[Во] dddd [во] LT',\n            lastDay : '[Вчера во] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[Изминатата] dddd [во] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[Изминатиот] dddd [во] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'после %s',\n            past : 'пред %s',\n            s : 'неколку секунди',\n            ss : '%d секунди',\n            m : 'минута',\n            mm : '%d минути',\n            h : 'час',\n            hh : '%d часа',\n            d : 'ден',\n            dd : '%d дена',\n            M : 'месец',\n            MM : '%d месеци',\n            y : 'година',\n            yy : '%d години'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal : function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return mk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ml = moment.defineLocale('ml', {\n        months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),\n        monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),\n        weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n        weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm -നു',\n            LTS : 'A h:mm:ss -നു',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm -നു',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'\n        },\n        calendar : {\n            sameDay : '[ഇന്ന്] LT',\n            nextDay : '[നാളെ] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[ഇന്നലെ] LT',\n            lastWeek : '[കഴിഞ്ഞ] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s കഴിഞ്ഞ്',\n            past : '%s മുൻപ്',\n            s : 'അൽപ നിമിഷങ്ങൾ',\n            ss : '%d സെക്കൻഡ്',\n            m : 'ഒരു മിനിറ്റ്',\n            mm : '%d മിനിറ്റ്',\n            h : 'ഒരു മണിക്കൂർ',\n            hh : '%d മണിക്കൂർ',\n            d : 'ഒരു ദിവസം',\n            dd : '%d ദിവസം',\n            M : 'ഒരു മാസം',\n            MM : '%d മാസം',\n            y : 'ഒരു വർഷം',\n            yy : '%d വർഷം'\n        },\n        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if ((meridiem === 'രാത്രി' && hour >= 4) ||\n                    meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n                    meridiem === 'വൈകുന്നേരം') {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'രാത്രി';\n            } else if (hour < 12) {\n                return 'രാവിലെ';\n            } else if (hour < 17) {\n                return 'ഉച്ച കഴിഞ്ഞ്';\n            } else if (hour < 20) {\n                return 'വൈകുന്നേരം';\n            } else {\n                return 'രാത്രി';\n            }\n        }\n    });\n\n    return ml;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function translate(number, withoutSuffix, key, isFuture) {\n        switch (key) {\n            case 's':\n                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n            case 'ss':\n                return number + (withoutSuffix ? ' секунд' : ' секундын');\n            case 'm':\n            case 'mm':\n                return number + (withoutSuffix ? ' минут' : ' минутын');\n            case 'h':\n            case 'hh':\n                return number + (withoutSuffix ? ' цаг' : ' цагийн');\n            case 'd':\n            case 'dd':\n                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n            case 'M':\n            case 'MM':\n                return number + (withoutSuffix ? ' сар' : ' сарын');\n            case 'y':\n            case 'yy':\n                return number + (withoutSuffix ? ' жил' : ' жилийн');\n            default:\n                return number;\n        }\n    }\n\n    var mn = moment.defineLocale('mn', {\n        months : 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'),\n        monthsShort : '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n        weekdaysShort : 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n        weekdaysMin : 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'YYYY оны MMMMын D',\n            LLL : 'YYYY оны MMMMын D HH:mm',\n            LLLL : 'dddd, YYYY оны MMMMын D HH:mm'\n        },\n        meridiemParse: /ҮӨ|ҮХ/i,\n        isPM : function (input) {\n            return input === 'ҮХ';\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ҮӨ';\n            } else {\n                return 'ҮХ';\n            }\n        },\n        calendar : {\n            sameDay : '[Өнөөдөр] LT',\n            nextDay : '[Маргааш] LT',\n            nextWeek : '[Ирэх] dddd LT',\n            lastDay : '[Өчигдөр] LT',\n            lastWeek : '[Өнгөрсөн] dddd LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s дараа',\n            past : '%s өмнө',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + ' өдөр';\n                default:\n                    return number;\n            }\n        }\n    });\n\n    return mn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '१',\n        '2': '२',\n        '3': '३',\n        '4': '४',\n        '5': '५',\n        '6': '६',\n        '7': '७',\n        '8': '८',\n        '9': '९',\n        '0': '०'\n    },\n    numberMap = {\n        '१': '1',\n        '२': '2',\n        '३': '3',\n        '४': '4',\n        '५': '5',\n        '६': '6',\n        '७': '7',\n        '८': '8',\n        '९': '9',\n        '०': '0'\n    };\n\n    function relativeTimeMr(number, withoutSuffix, string, isFuture)\n    {\n        var output = '';\n        if (withoutSuffix) {\n            switch (string) {\n                case 's': output = 'काही सेकंद'; break;\n                case 'ss': output = '%d सेकंद'; break;\n                case 'm': output = 'एक मिनिट'; break;\n                case 'mm': output = '%d मिनिटे'; break;\n                case 'h': output = 'एक तास'; break;\n                case 'hh': output = '%d तास'; break;\n                case 'd': output = 'एक दिवस'; break;\n                case 'dd': output = '%d दिवस'; break;\n                case 'M': output = 'एक महिना'; break;\n                case 'MM': output = '%d महिने'; break;\n                case 'y': output = 'एक वर्ष'; break;\n                case 'yy': output = '%d वर्षे'; break;\n            }\n        }\n        else {\n            switch (string) {\n                case 's': output = 'काही सेकंदां'; break;\n                case 'ss': output = '%d सेकंदां'; break;\n                case 'm': output = 'एका मिनिटा'; break;\n                case 'mm': output = '%d मिनिटां'; break;\n                case 'h': output = 'एका तासा'; break;\n                case 'hh': output = '%d तासां'; break;\n                case 'd': output = 'एका दिवसा'; break;\n                case 'dd': output = '%d दिवसां'; break;\n                case 'M': output = 'एका महिन्या'; break;\n                case 'MM': output = '%d महिन्यां'; break;\n                case 'y': output = 'एका वर्षा'; break;\n                case 'yy': output = '%d वर्षां'; break;\n            }\n        }\n        return output.replace(/%d/i, number);\n    }\n\n    var mr = moment.defineLocale('mr', {\n        months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),\n        monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm वाजता',\n            LTS : 'A h:mm:ss वाजता',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm वाजता',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'\n        },\n        calendar : {\n            sameDay : '[आज] LT',\n            nextDay : '[उद्या] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[काल] LT',\n            lastWeek: '[मागील] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future: '%sमध्ये',\n            past: '%sपूर्वी',\n            s: relativeTimeMr,\n            ss: relativeTimeMr,\n            m: relativeTimeMr,\n            mm: relativeTimeMr,\n            h: relativeTimeMr,\n            hh: relativeTimeMr,\n            d: relativeTimeMr,\n            dd: relativeTimeMr,\n            M: relativeTimeMr,\n            MM: relativeTimeMr,\n            y: relativeTimeMr,\n            yy: relativeTimeMr\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'रात्री') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सकाळी') {\n                return hour;\n            } else if (meridiem === 'दुपारी') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'सायंकाळी') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'रात्री';\n            } else if (hour < 10) {\n                return 'सकाळी';\n            } else if (hour < 17) {\n                return 'दुपारी';\n            } else if (hour < 20) {\n                return 'सायंकाळी';\n            } else {\n                return 'रात्री';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return mr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ms = moment.defineLocale('ms', {\n        months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY [pukul] HH.mm',\n            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar : {\n            sameDay : '[Hari ini pukul] LT',\n            nextDay : '[Esok pukul] LT',\n            nextWeek : 'dddd [pukul] LT',\n            lastDay : '[Kelmarin pukul] LT',\n            lastWeek : 'dddd [lepas pukul] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dalam %s',\n            past : '%s yang lepas',\n            s : 'beberapa saat',\n            ss : '%d saat',\n            m : 'seminit',\n            mm : '%d minit',\n            h : 'sejam',\n            hh : '%d jam',\n            d : 'sehari',\n            dd : '%d hari',\n            M : 'sebulan',\n            MM : '%d bulan',\n            y : 'setahun',\n            yy : '%d tahun'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return ms;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var msMy = moment.defineLocale('ms-my', {\n        months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY [pukul] HH.mm',\n            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar : {\n            sameDay : '[Hari ini pukul] LT',\n            nextDay : '[Esok pukul] LT',\n            nextWeek : 'dddd [pukul] LT',\n            lastDay : '[Kelmarin pukul] LT',\n            lastWeek : 'dddd [lepas pukul] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dalam %s',\n            past : '%s yang lepas',\n            s : 'beberapa saat',\n            ss : '%d saat',\n            m : 'seminit',\n            mm : '%d minit',\n            h : 'sejam',\n            hh : '%d jam',\n            d : 'sehari',\n            dd : '%d hari',\n            M : 'sebulan',\n            MM : '%d bulan',\n            y : 'setahun',\n            yy : '%d tahun'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return msMy;\n\n})));\n","import { Person } from 'models/test-person/person';\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Activation } from \"models/test-person/activation\";\nimport { ActivationRequest } from 'models/test-person/activationRequest';\nimport { TypeActivationUrl } from 'models/test-person/typeActivationUrl';\n\n@autoinject()\nexport class ActivationService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"ActivationService\");\n  }\n\n  public async list(parameters: UxDatatableParameters, personId: number): Promise<UxDatatableResponse> {\n    return await this.client.post(`activation/list/${personId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async listObserved(parameters: UxDatatableParameters, personId: number): Promise<UxDatatableResponse> {\n    return await this.client.post(`activation/list-observed/${personId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getAllByPersonId(personId: number): Promise<Activation[]> {\n    return await this.client.get(`activation/person/${personId}`)\n      .then((response: any) => {\n        return <Activation[]>response;\n      });\n  }\n\n  public async getById(id: number): Promise<Activation> {\n    return await this.client.getById(`activation`, id)\n      .then((response: Activation) => {\n        return response;\n      });\n  }\n\n  public async create(model: Activation, personId: number): Promise<Activation> {\n    return await this.client.create(`activation/${personId}`, model)\n      .then((response: any) => {\n        return <Activation>response;\n      });\n  }\n\n  public async update(model: Activation): Promise<void> {\n    return await this.client.updateById(`activation`, model.id, null, model)\n      .then(() => null);\n  }\n\n  public async getActivationLink(model: ActivationRequest): Promise<string> {\n  try {\n    let url = '';\n\n    if (model.type == TypeActivationUrl.IdQuestionaryGroup) {\n      url = `activation/questionarygroup/generate-activation-url`;\n    } else if (model.type == TypeActivationUrl.ReportTemplate) {\n      url = `activation/reporttemplate/generate-activation-url`;\n    }\n\n    const response = await this.client.post(url, model);\n\n    return response as string;\n\n  } catch (error) {\n    if (error) {\n      throw error; \n    }\n\n    throw 'error.unexpected';\n  }\n}\n\n  // public async delete(id: number, personId: number): Promise<void> {\n  //   return await this.client.deleteById(`activation/${personId}`, id)\n  //     .then(() => null);\n  // }\n\n}\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var mt = moment.defineLocale('mt', {\n        months : 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split('_'),\n        monthsShort : 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n        weekdays : 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split('_'),\n        weekdaysShort : 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n        weekdaysMin : 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Illum fil-]LT',\n            nextDay : '[Għada fil-]LT',\n            nextWeek : 'dddd [fil-]LT',\n            lastDay : '[Il-bieraħ fil-]LT',\n            lastWeek : 'dddd [li għadda] [fil-]LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'f’ %s',\n            past : '%s ilu',\n            s : 'ftit sekondi',\n            ss : '%d sekondi',\n            m : 'minuta',\n            mm : '%d minuti',\n            h : 'siegħa',\n            hh : '%d siegħat',\n            d : 'ġurnata',\n            dd : '%d ġranet',\n            M : 'xahar',\n            MM : '%d xhur',\n            y : 'sena',\n            yy : '%d sni'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal: '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return mt;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '၁',\n        '2': '၂',\n        '3': '၃',\n        '4': '၄',\n        '5': '၅',\n        '6': '၆',\n        '7': '၇',\n        '8': '၈',\n        '9': '၉',\n        '0': '၀'\n    }, numberMap = {\n        '၁': '1',\n        '၂': '2',\n        '၃': '3',\n        '၄': '4',\n        '၅': '5',\n        '၆': '6',\n        '၇': '7',\n        '၈': '8',\n        '၉': '9',\n        '၀': '0'\n    };\n\n    var my = moment.defineLocale('my', {\n        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),\n        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),\n        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar: {\n            sameDay: '[ယနေ.] LT [မှာ]',\n            nextDay: '[မနက်ဖြန်] LT [မှာ]',\n            nextWeek: 'dddd LT [မှာ]',\n            lastDay: '[မနေ.က] LT [မှာ]',\n            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: 'လာမည့် %s မှာ',\n            past: 'လွန်ခဲ့သော %s က',\n            s: 'စက္ကန်.အနည်းငယ်',\n            ss : '%d စက္ကန့်',\n            m: 'တစ်မိနစ်',\n            mm: '%d မိနစ်',\n            h: 'တစ်နာရီ',\n            hh: '%d နာရီ',\n            d: 'တစ်ရက်',\n            dd: '%d ရက်',\n            M: 'တစ်လ',\n            MM: '%d လ',\n            y: 'တစ်နှစ်',\n            yy: '%d နှစ်'\n        },\n        preparse: function (string) {\n            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4 // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return my;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var nb = moment.defineLocale('nb', {\n        months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n        monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n        weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY [kl.] HH:mm',\n            LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n        },\n        calendar : {\n            sameDay: '[i dag kl.] LT',\n            nextDay: '[i morgen kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[i går kl.] LT',\n            lastWeek: '[forrige] dddd [kl.] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'om %s',\n            past : '%s siden',\n            s : 'noen sekunder',\n            ss : '%d sekunder',\n            m : 'ett minutt',\n            mm : '%d minutter',\n            h : 'en time',\n            hh : '%d timer',\n            d : 'en dag',\n            dd : '%d dager',\n            M : 'en måned',\n            MM : '%d måneder',\n            y : 'ett år',\n            yy : '%d år'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return nb;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '१',\n        '2': '२',\n        '3': '३',\n        '4': '४',\n        '5': '५',\n        '6': '६',\n        '7': '७',\n        '8': '८',\n        '9': '९',\n        '0': '०'\n    },\n    numberMap = {\n        '१': '1',\n        '२': '2',\n        '३': '3',\n        '४': '4',\n        '५': '5',\n        '६': '6',\n        '७': '7',\n        '८': '8',\n        '९': '9',\n        '०': '0'\n    };\n\n    var ne = moment.defineLocale('ne', {\n        months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),\n        monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),\n        weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n        weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'Aको h:mm बजे',\n            LTS : 'Aको h:mm:ss बजे',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, Aको h:mm बजे',\n            LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'राति') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'बिहान') {\n                return hour;\n            } else if (meridiem === 'दिउँसो') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'साँझ') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 3) {\n                return 'राति';\n            } else if (hour < 12) {\n                return 'बिहान';\n            } else if (hour < 16) {\n                return 'दिउँसो';\n            } else if (hour < 20) {\n                return 'साँझ';\n            } else {\n                return 'राति';\n            }\n        },\n        calendar : {\n            sameDay : '[आज] LT',\n            nextDay : '[भोलि] LT',\n            nextWeek : '[आउँदो] dddd[,] LT',\n            lastDay : '[हिजो] LT',\n            lastWeek : '[गएको] dddd[,] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%sमा',\n            past : '%s अगाडि',\n            s : 'केही क्षण',\n            ss : '%d सेकेण्ड',\n            m : 'एक मिनेट',\n            mm : '%d मिनेट',\n            h : 'एक घण्टा',\n            hh : '%d घण्टा',\n            d : 'एक दिन',\n            dd : '%d दिन',\n            M : 'एक महिना',\n            MM : '%d महिना',\n            y : 'एक बर्ष',\n            yy : '%d बर्ष'\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return ne;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\n    var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\n    var monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nl = moment.defineLocale('nl', {\n        months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse : monthsParse,\n        longMonthsParse : monthsParse,\n        shortMonthsParse : monthsParse,\n\n        weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n        weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD-MM-YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'over %s',\n            past : '%s geleden',\n            s : 'een paar seconden',\n            ss : '%d seconden',\n            m : 'één minuut',\n            mm : '%d minuten',\n            h : 'één uur',\n            hh : '%d uur',\n            d : 'één dag',\n            dd : '%d dagen',\n            M : 'één maand',\n            MM : '%d maanden',\n            y : 'één jaar',\n            yy : '%d jaar'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal : function (number) {\n            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return nl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\n    var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\n    var monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nlBe = moment.defineLocale('nl-be', {\n        months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse : monthsParse,\n        longMonthsParse : monthsParse,\n        shortMonthsParse : monthsParse,\n\n        weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n        weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'over %s',\n            past : '%s geleden',\n            s : 'een paar seconden',\n            ss : '%d seconden',\n            m : 'één minuut',\n            mm : '%d minuten',\n            h : 'één uur',\n            hh : '%d uur',\n            d : 'één dag',\n            dd : '%d dagen',\n            M : 'één maand',\n            MM : '%d maanden',\n            y : 'één jaar',\n            yy : '%d jaar'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal : function (number) {\n            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return nlBe;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var nn = moment.defineLocale('nn', {\n        months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n        weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n        weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),\n        weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY [kl.] H:mm',\n            LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n        },\n        calendar : {\n            sameDay: '[I dag klokka] LT',\n            nextDay: '[I morgon klokka] LT',\n            nextWeek: 'dddd [klokka] LT',\n            lastDay: '[I går klokka] LT',\n            lastWeek: '[Føregåande] dddd [klokka] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'om %s',\n            past : '%s sidan',\n            s : 'nokre sekund',\n            ss : '%d sekund',\n            m : 'eit minutt',\n            mm : '%d minutt',\n            h : 'ein time',\n            hh : '%d timar',\n            d : 'ein dag',\n            dd : '%d dagar',\n            M : 'ein månad',\n            MM : '%d månader',\n            y : 'eit år',\n            yy : '%d år'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return nn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '੧',\n        '2': '੨',\n        '3': '੩',\n        '4': '੪',\n        '5': '੫',\n        '6': '੬',\n        '7': '੭',\n        '8': '੮',\n        '9': '੯',\n        '0': '੦'\n    },\n    numberMap = {\n        '੧': '1',\n        '੨': '2',\n        '੩': '3',\n        '੪': '4',\n        '੫': '5',\n        '੬': '6',\n        '੭': '7',\n        '੮': '8',\n        '੯': '9',\n        '੦': '0'\n    };\n\n    var paIn = moment.defineLocale('pa-in', {\n        // There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi.\n        months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n        monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n        weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),\n        weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm ਵਜੇ',\n            LTS : 'A h:mm:ss ਵਜੇ',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm ਵਜੇ',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'\n        },\n        calendar : {\n            sameDay : '[ਅਜ] LT',\n            nextDay : '[ਕਲ] LT',\n            nextWeek : '[ਅਗਲਾ] dddd, LT',\n            lastDay : '[ਕਲ] LT',\n            lastWeek : '[ਪਿਛਲੇ] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s ਵਿੱਚ',\n            past : '%s ਪਿਛਲੇ',\n            s : 'ਕੁਝ ਸਕਿੰਟ',\n            ss : '%d ਸਕਿੰਟ',\n            m : 'ਇਕ ਮਿੰਟ',\n            mm : '%d ਮਿੰਟ',\n            h : 'ਇੱਕ ਘੰਟਾ',\n            hh : '%d ਘੰਟੇ',\n            d : 'ਇੱਕ ਦਿਨ',\n            dd : '%d ਦਿਨ',\n            M : 'ਇੱਕ ਮਹੀਨਾ',\n            MM : '%d ਮਹੀਨੇ',\n            y : 'ਇੱਕ ਸਾਲ',\n            yy : '%d ਸਾਲ'\n        },\n        preparse: function (string) {\n            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ਰਾਤ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ਸਵੇਰ') {\n                return hour;\n            } else if (meridiem === 'ਦੁਪਹਿਰ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ਸ਼ਾਮ') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ਰਾਤ';\n            } else if (hour < 10) {\n                return 'ਸਵੇਰ';\n            } else if (hour < 17) {\n                return 'ਦੁਪਹਿਰ';\n            } else if (hour < 20) {\n                return 'ਸ਼ਾਮ';\n            } else {\n                return 'ਰਾਤ';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return paIn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'),\n        monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');\n    function plural(n) {\n        return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);\n    }\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                return result + (plural(number) ? 'sekundy' : 'sekund');\n            case 'm':\n                return withoutSuffix ? 'minuta' : 'minutę';\n            case 'mm':\n                return result + (plural(number) ? 'minuty' : 'minut');\n            case 'h':\n                return withoutSuffix  ? 'godzina'  : 'godzinę';\n            case 'hh':\n                return result + (plural(number) ? 'godziny' : 'godzin');\n            case 'MM':\n                return result + (plural(number) ? 'miesiące' : 'miesięcy');\n            case 'yy':\n                return result + (plural(number) ? 'lata' : 'lat');\n        }\n    }\n\n    var pl = moment.defineLocale('pl', {\n        months : function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return monthsNominative;\n            } else if (format === '') {\n                // Hack: if format empty we know this is used to generate\n                // RegExp by moment. Give then back both valid forms of months\n                // in RegExp ready format.\n                return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';\n            } else if (/D MMMM/.test(format)) {\n                return monthsSubjective[momentToFormat.month()];\n            } else {\n                return monthsNominative[momentToFormat.month()];\n            }\n        },\n        monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n        weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n        weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n        weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Dziś o] LT',\n            nextDay: '[Jutro o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W niedzielę o] LT';\n\n                    case 2:\n                        return '[We wtorek o] LT';\n\n                    case 3:\n                        return '[W środę o] LT';\n\n                    case 6:\n                        return '[W sobotę o] LT';\n\n                    default:\n                        return '[W] dddd [o] LT';\n                }\n            },\n            lastDay: '[Wczoraj o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W zeszłą niedzielę o] LT';\n                    case 3:\n                        return '[W zeszłą środę o] LT';\n                    case 6:\n                        return '[W zeszłą sobotę o] LT';\n                    default:\n                        return '[W zeszły] dddd [o] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past : '%s temu',\n            s : 'kilka sekund',\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : '1 dzień',\n            dd : '%d dni',\n            M : 'miesiąc',\n            MM : translate,\n            y : 'rok',\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return pl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var pt = moment.defineLocale('pt', {\n        months : 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),\n        monthsShort : 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n        weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n        weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n        weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY HH:mm',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return (this.day() === 0 || this.day() === 6) ?\n                    '[Último] dddd [às] LT' : // Saturday + Sunday\n                    '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'em %s',\n            past : 'há %s',\n            s : 'segundos',\n            ss : '%d segundos',\n            m : 'um minuto',\n            mm : '%d minutos',\n            h : 'uma hora',\n            hh : '%d horas',\n            d : 'um dia',\n            dd : '%d dias',\n            M : 'um mês',\n            MM : '%d meses',\n            y : 'um ano',\n            yy : '%d anos'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal : '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return pt;\n\n})));\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t    var crypto;\n\n\t    // Native crypto from window (Browser)\n\t    if (typeof window !== 'undefined' && window.crypto) {\n\t        crypto = window.crypto;\n\t    }\n\n\t    // Native crypto in web worker (Browser)\n\t    if (typeof self !== 'undefined' && self.crypto) {\n\t        crypto = self.crypto;\n\t    }\n\n\t    // Native crypto from worker\n\t    if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t        crypto = globalThis.crypto;\n\t    }\n\n\t    // Native (experimental IE 11) crypto from window (Browser)\n\t    if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t        crypto = window.msCrypto;\n\t    }\n\n\t    // Native crypto from global (NodeJS)\n\t    if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t        crypto = global.crypto;\n\t    }\n\n\t    // Native crypto import via require (NodeJS)\n\t    if (!crypto && typeof require === 'function') {\n\t        try {\n\t            crypto = require('crypto');\n\t        } catch (err) {}\n\t    }\n\n\t    /*\n\t     * Cryptographically secure pseudorandom number generator\n\t     *\n\t     * As Math.random() is cryptographically not safe to use\n\t     */\n\t    var cryptoSecureRandomInt = function () {\n\t        if (crypto) {\n\t            // Use getRandomValues method (Browser)\n\t            if (typeof crypto.getRandomValues === 'function') {\n\t                try {\n\t                    return crypto.getRandomValues(new Uint32Array(1))[0];\n\t                } catch (err) {}\n\t            }\n\n\t            // Use randomBytes method (NodeJS)\n\t            if (typeof crypto.randomBytes === 'function') {\n\t                try {\n\t                    return crypto.randomBytes(4).readInt32LE();\n\t                } catch (err) {}\n\t            }\n\t        }\n\n\t        throw new Error('Native crypto module could not be used to get secure random number.');\n\t    };\n\n\t    /*\n\t     * Local polyfill of Object.create\n\n\t     */\n\t    var create = Object.create || (function () {\n\t        function F() {}\n\n\t        return function (obj) {\n\t            var subtype;\n\n\t            F.prototype = obj;\n\n\t            subtype = new F();\n\n\t            F.prototype = null;\n\n\t            return subtype;\n\t        };\n\t    }());\n\n\t    /**\n\t     * CryptoJS namespace.\n\t     */\n\t    var C = {};\n\n\t    /**\n\t     * Library namespace.\n\t     */\n\t    var C_lib = C.lib = {};\n\n\t    /**\n\t     * Base object for prototypal inheritance.\n\t     */\n\t    var Base = C_lib.Base = (function () {\n\n\n\t        return {\n\t            /**\n\t             * Creates a new object that inherits from this object.\n\t             *\n\t             * @param {Object} overrides Properties to copy into the new object.\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         field: 'value',\n\t             *\n\t             *         method: function () {\n\t             *         }\n\t             *     });\n\t             */\n\t            extend: function (overrides) {\n\t                // Spawn\n\t                var subtype = create(this);\n\n\t                // Augment\n\t                if (overrides) {\n\t                    subtype.mixIn(overrides);\n\t                }\n\n\t                // Create default initializer\n\t                if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t                    subtype.init = function () {\n\t                        subtype.$super.init.apply(this, arguments);\n\t                    };\n\t                }\n\n\t                // Initializer's prototype is the subtype object\n\t                subtype.init.prototype = subtype;\n\n\t                // Reference supertype\n\t                subtype.$super = this;\n\n\t                return subtype;\n\t            },\n\n\t            /**\n\t             * Extends this object and runs the init method.\n\t             * Arguments to create() will be passed to init().\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var instance = MyType.create();\n\t             */\n\t            create: function () {\n\t                var instance = this.extend();\n\t                instance.init.apply(instance, arguments);\n\n\t                return instance;\n\t            },\n\n\t            /**\n\t             * Initializes a newly created object.\n\t             * Override this method to add some logic when your objects are created.\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         init: function () {\n\t             *             // ...\n\t             *         }\n\t             *     });\n\t             */\n\t            init: function () {\n\t            },\n\n\t            /**\n\t             * Copies properties into this object.\n\t             *\n\t             * @param {Object} properties The properties to mix in.\n\t             *\n\t             * @example\n\t             *\n\t             *     MyType.mixIn({\n\t             *         field: 'value'\n\t             *     });\n\t             */\n\t            mixIn: function (properties) {\n\t                for (var propertyName in properties) {\n\t                    if (properties.hasOwnProperty(propertyName)) {\n\t                        this[propertyName] = properties[propertyName];\n\t                    }\n\t                }\n\n\t                // IE won't copy toString using the loop above\n\t                if (properties.hasOwnProperty('toString')) {\n\t                    this.toString = properties.toString;\n\t                }\n\t            },\n\n\t            /**\n\t             * Creates a copy of this object.\n\t             *\n\t             * @return {Object} The clone.\n\t             *\n\t             * @example\n\t             *\n\t             *     var clone = instance.clone();\n\t             */\n\t            clone: function () {\n\t                return this.init.prototype.extend(this);\n\t            }\n\t        };\n\t    }());\n\n\t    /**\n\t     * An array of 32-bit words.\n\t     *\n\t     * @property {Array} words The array of 32-bit words.\n\t     * @property {number} sigBytes The number of significant bytes in this word array.\n\t     */\n\t    var WordArray = C_lib.WordArray = Base.extend({\n\t        /**\n\t         * Initializes a newly created word array.\n\t         *\n\t         * @param {Array} words (Optional) An array of 32-bit words.\n\t         * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.create();\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t         */\n\t        init: function (words, sigBytes) {\n\t            words = this.words = words || [];\n\n\t            if (sigBytes != undefined) {\n\t                this.sigBytes = sigBytes;\n\t            } else {\n\t                this.sigBytes = words.length * 4;\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts this word array to a string.\n\t         *\n\t         * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t         *\n\t         * @return {string} The stringified word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     var string = wordArray + '';\n\t         *     var string = wordArray.toString();\n\t         *     var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t         */\n\t        toString: function (encoder) {\n\t            return (encoder || Hex).stringify(this);\n\t        },\n\n\t        /**\n\t         * Concatenates a word array to this word array.\n\t         *\n\t         * @param {WordArray} wordArray The word array to append.\n\t         *\n\t         * @return {WordArray} This word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray1.concat(wordArray2);\n\t         */\n\t        concat: function (wordArray) {\n\t            // Shortcuts\n\t            var thisWords = this.words;\n\t            var thatWords = wordArray.words;\n\t            var thisSigBytes = this.sigBytes;\n\t            var thatSigBytes = wordArray.sigBytes;\n\n\t            // Clamp excess bits\n\t            this.clamp();\n\n\t            // Concat\n\t            if (thisSigBytes % 4) {\n\t                // Copy one byte at a time\n\t                for (var i = 0; i < thatSigBytes; i++) {\n\t                    var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                    thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t                }\n\t            } else {\n\t                // Copy one word at a time\n\t                for (var j = 0; j < thatSigBytes; j += 4) {\n\t                    thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t                }\n\t            }\n\t            this.sigBytes += thatSigBytes;\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Removes insignificant bits.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray.clamp();\n\t         */\n\t        clamp: function () {\n\t            // Shortcuts\n\t            var words = this.words;\n\t            var sigBytes = this.sigBytes;\n\n\t            // Clamp\n\t            words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t            words.length = Math.ceil(sigBytes / 4);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this word array.\n\t         *\n\t         * @return {WordArray} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = wordArray.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone.words = this.words.slice(0);\n\n\t            return clone;\n\t        },\n\n\t        /**\n\t         * Creates a word array filled with random bytes.\n\t         *\n\t         * @param {number} nBytes The number of random bytes to generate.\n\t         *\n\t         * @return {WordArray} The random word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.random(16);\n\t         */\n\t        random: function (nBytes) {\n\t            var words = [];\n\n\t            for (var i = 0; i < nBytes; i += 4) {\n\t                words.push(cryptoSecureRandomInt());\n\t            }\n\n\t            return new WordArray.init(words, nBytes);\n\t        }\n\t    });\n\n\t    /**\n\t     * Encoder namespace.\n\t     */\n\t    var C_enc = C.enc = {};\n\n\t    /**\n\t     * Hex encoding strategy.\n\t     */\n\t    var Hex = C_enc.Hex = {\n\t        /**\n\t         * Converts a word array to a hex string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The hex string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var hexChars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                hexChars.push((bite >>> 4).toString(16));\n\t                hexChars.push((bite & 0x0f).toString(16));\n\t            }\n\n\t            return hexChars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a hex string to a word array.\n\t         *\n\t         * @param {string} hexStr The hex string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t         */\n\t        parse: function (hexStr) {\n\t            // Shortcut\n\t            var hexStrLength = hexStr.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < hexStrLength; i += 2) {\n\t                words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t            }\n\n\t            return new WordArray.init(words, hexStrLength / 2);\n\t        }\n\t    };\n\n\t    /**\n\t     * Latin1 encoding strategy.\n\t     */\n\t    var Latin1 = C_enc.Latin1 = {\n\t        /**\n\t         * Converts a word array to a Latin1 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The Latin1 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var latin1Chars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                latin1Chars.push(String.fromCharCode(bite));\n\t            }\n\n\t            return latin1Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Latin1 string to a word array.\n\t         *\n\t         * @param {string} latin1Str The Latin1 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t         */\n\t        parse: function (latin1Str) {\n\t            // Shortcut\n\t            var latin1StrLength = latin1Str.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < latin1StrLength; i++) {\n\t                words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t            }\n\n\t            return new WordArray.init(words, latin1StrLength);\n\t        }\n\t    };\n\n\t    /**\n\t     * UTF-8 encoding strategy.\n\t     */\n\t    var Utf8 = C_enc.Utf8 = {\n\t        /**\n\t         * Converts a word array to a UTF-8 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The UTF-8 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            try {\n\t                return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t            } catch (e) {\n\t                throw new Error('Malformed UTF-8 data');\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts a UTF-8 string to a word array.\n\t         *\n\t         * @param {string} utf8Str The UTF-8 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t         */\n\t        parse: function (utf8Str) {\n\t            return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t        }\n\t    };\n\n\t    /**\n\t     * Abstract buffered block algorithm template.\n\t     *\n\t     * The property blockSize must be implemented in a concrete subtype.\n\t     *\n\t     * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t     */\n\t    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t        /**\n\t         * Resets this block algorithm's data buffer to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm.reset();\n\t         */\n\t        reset: function () {\n\t            // Initial values\n\t            this._data = new WordArray.init();\n\t            this._nDataBytes = 0;\n\t        },\n\n\t        /**\n\t         * Adds new data to this block algorithm's buffer.\n\t         *\n\t         * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm._append('data');\n\t         *     bufferedBlockAlgorithm._append(wordArray);\n\t         */\n\t        _append: function (data) {\n\t            // Convert string to WordArray, else assume WordArray already\n\t            if (typeof data == 'string') {\n\t                data = Utf8.parse(data);\n\t            }\n\n\t            // Append\n\t            this._data.concat(data);\n\t            this._nDataBytes += data.sigBytes;\n\t        },\n\n\t        /**\n\t         * Processes available data blocks.\n\t         *\n\t         * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t         *\n\t         * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t         *\n\t         * @return {WordArray} The processed data.\n\t         *\n\t         * @example\n\t         *\n\t         *     var processedData = bufferedBlockAlgorithm._process();\n\t         *     var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t         */\n\t        _process: function (doFlush) {\n\t            var processedWords;\n\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\t            var dataSigBytes = data.sigBytes;\n\t            var blockSize = this.blockSize;\n\t            var blockSizeBytes = blockSize * 4;\n\n\t            // Count blocks ready\n\t            var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t            if (doFlush) {\n\t                // Round up to include partial blocks\n\t                nBlocksReady = Math.ceil(nBlocksReady);\n\t            } else {\n\t                // Round down to include only full blocks,\n\t                // less the number of blocks that must remain in the buffer\n\t                nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t            }\n\n\t            // Count words ready\n\t            var nWordsReady = nBlocksReady * blockSize;\n\n\t            // Count bytes ready\n\t            var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t            // Process blocks\n\t            if (nWordsReady) {\n\t                for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t                    // Perform concrete-algorithm logic\n\t                    this._doProcessBlock(dataWords, offset);\n\t                }\n\n\t                // Remove processed words\n\t                processedWords = dataWords.splice(0, nWordsReady);\n\t                data.sigBytes -= nBytesReady;\n\t            }\n\n\t            // Return processed words\n\t            return new WordArray.init(processedWords, nBytesReady);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this object.\n\t         *\n\t         * @return {Object} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = bufferedBlockAlgorithm.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone._data = this._data.clone();\n\n\t            return clone;\n\t        },\n\n\t        _minBufferSize: 0\n\t    });\n\n\t    /**\n\t     * Abstract hasher template.\n\t     *\n\t     * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t     */\n\t    var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t        /**\n\t         * Configuration options.\n\t         */\n\t        cfg: Base.extend(),\n\n\t        /**\n\t         * Initializes a newly created hasher.\n\t         *\n\t         * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hasher = CryptoJS.algo.SHA256.create();\n\t         */\n\t        init: function (cfg) {\n\t            // Apply config defaults\n\t            this.cfg = this.cfg.extend(cfg);\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this hasher to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.reset();\n\t         */\n\t        reset: function () {\n\t            // Reset data buffer\n\t            BufferedBlockAlgorithm.reset.call(this);\n\n\t            // Perform concrete-hasher logic\n\t            this._doReset();\n\t        },\n\n\t        /**\n\t         * Updates this hasher with a message.\n\t         *\n\t         * @param {WordArray|string} messageUpdate The message to append.\n\t         *\n\t         * @return {Hasher} This hasher.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.update('message');\n\t         *     hasher.update(wordArray);\n\t         */\n\t        update: function (messageUpdate) {\n\t            // Append\n\t            this._append(messageUpdate);\n\n\t            // Update the hash\n\t            this._process();\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Finalizes the hash computation.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t         *\n\t         * @return {WordArray} The hash.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hash = hasher.finalize();\n\t         *     var hash = hasher.finalize('message');\n\t         *     var hash = hasher.finalize(wordArray);\n\t         */\n\t        finalize: function (messageUpdate) {\n\t            // Final message update\n\t            if (messageUpdate) {\n\t                this._append(messageUpdate);\n\t            }\n\n\t            // Perform concrete-hasher logic\n\t            var hash = this._doFinalize();\n\n\t            return hash;\n\t        },\n\n\t        blockSize: 512/32,\n\n\t        /**\n\t         * Creates a shortcut function to a hasher's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to create a helper for.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHelper: function (hasher) {\n\t            return function (message, cfg) {\n\t                return new hasher.init(cfg).finalize(message);\n\t            };\n\t        },\n\n\t        /**\n\t         * Creates a shortcut function to the HMAC's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHmacHelper: function (hasher) {\n\t            return function (message, key) {\n\t                return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t            };\n\t        }\n\t    });\n\n\t    /**\n\t     * Algorithm namespace.\n\t     */\n\t    var C_algo = C.algo = {};\n\n\t    return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ptBr = moment.defineLocale('pt-br', {\n        months : 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),\n        monthsShort : 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n        weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n        weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n        weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\n        },\n        calendar : {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return (this.day() === 0 || this.day() === 6) ?\n                    '[Último] dddd [às] LT' : // Saturday + Sunday\n                    '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'em %s',\n            past : 'há %s',\n            s : 'poucos segundos',\n            ss : '%d segundos',\n            m : 'um minuto',\n            mm : '%d minutos',\n            h : 'uma hora',\n            hh : '%d horas',\n            d : 'um dia',\n            dd : '%d dias',\n            M : 'um mês',\n            MM : '%d meses',\n            y : 'um ano',\n            yy : '%d anos'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal : '%dº'\n    });\n\n    return ptBr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n                'ss': 'secunde',\n                'mm': 'minute',\n                'hh': 'ore',\n                'dd': 'zile',\n                'MM': 'luni',\n                'yy': 'ani'\n            },\n            separator = ' ';\n        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n            separator = ' de ';\n        }\n        return number + separator + format[key];\n    }\n\n    var ro = moment.defineLocale('ro', {\n        months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\n        monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n        weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n        weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY H:mm',\n            LLLL : 'dddd, D MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay: '[azi la] LT',\n            nextDay: '[mâine la] LT',\n            nextWeek: 'dddd [la] LT',\n            lastDay: '[ieri la] LT',\n            lastWeek: '[fosta] dddd [la] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'peste %s',\n            past : '%s în urmă',\n            s : 'câteva secunde',\n            ss : relativeTimeWithPlural,\n            m : 'un minut',\n            mm : relativeTimeWithPlural,\n            h : 'o oră',\n            hh : relativeTimeWithPlural,\n            d : 'o zi',\n            dd : relativeTimeWithPlural,\n            M : 'o lună',\n            MM : relativeTimeWithPlural,\n            y : 'un an',\n            yy : relativeTimeWithPlural\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return ro;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n            'hh': 'час_часа_часов',\n            'dd': 'день_дня_дней',\n            'MM': 'месяц_месяца_месяцев',\n            'yy': 'год_года_лет'\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'минута' : 'минуту';\n        }\n        else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];\n\n    // http://new.gramota.ru/spravka/rules/139-prop : § 103\n    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n    var ru = moment.defineLocale('ru', {\n        months : {\n            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),\n            standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')\n        },\n        monthsShort : {\n            // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку ?\n            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),\n            standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')\n        },\n        weekdays : {\n            standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),\n            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),\n            isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/\n        },\n        weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        monthsParse : monthsParse,\n        longMonthsParse : monthsParse,\n        shortMonthsParse : monthsParse,\n\n        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n        monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // копия предыдущего\n        monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // полные названия с падежами\n        monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n        // Выражение, которое соотвествует только сокращённым формам\n        monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY г.',\n            LLL : 'D MMMM YYYY г., H:mm',\n            LLLL : 'dddd, D MMMM YYYY г., H:mm'\n        },\n        calendar : {\n            sameDay: '[Сегодня, в] LT',\n            nextDay: '[Завтра, в] LT',\n            lastDay: '[Вчера, в] LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В следующее] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В следующий] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В следующую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            lastWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В прошлое] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В прошлый] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В прошлую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'через %s',\n            past : '%s назад',\n            s : 'несколько секунд',\n            ss : relativeTimeWithPlural,\n            m : relativeTimeWithPlural,\n            mm : relativeTimeWithPlural,\n            h : 'час',\n            hh : relativeTimeWithPlural,\n            d : 'день',\n            dd : relativeTimeWithPlural,\n            M : 'месяц',\n            MM : relativeTimeWithPlural,\n            y : 'год',\n            yy : relativeTimeWithPlural\n        },\n        meridiemParse: /ночи|утра|дня|вечера/i,\n        isPM : function (input) {\n            return /^(дня|вечера)$/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночи';\n            } else if (hour < 12) {\n                return 'утра';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечера';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                case 'w':\n                case 'W':\n                    return number + '-я';\n                default:\n                    return number;\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return ru;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var months = [\n        'جنوري',\n        'فيبروري',\n        'مارچ',\n        'اپريل',\n        'مئي',\n        'جون',\n        'جولاءِ',\n        'آگسٽ',\n        'سيپٽمبر',\n        'آڪٽوبر',\n        'نومبر',\n        'ڊسمبر'\n    ];\n    var days = [\n        'آچر',\n        'سومر',\n        'اڱارو',\n        'اربع',\n        'خميس',\n        'جمع',\n        'ڇنڇر'\n    ];\n\n    var sd = moment.defineLocale('sd', {\n        months : months,\n        monthsShort : months,\n        weekdays : days,\n        weekdaysShort : days,\n        weekdaysMin : days,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd، D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /صبح|شام/,\n        isPM : function (input) {\n            return 'شام' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar : {\n            sameDay : '[اڄ] LT',\n            nextDay : '[سڀاڻي] LT',\n            nextWeek : 'dddd [اڳين هفتي تي] LT',\n            lastDay : '[ڪالهه] LT',\n            lastWeek : '[گزريل هفتي] dddd [تي] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s پوء',\n            past : '%s اڳ',\n            s : 'چند سيڪنڊ',\n            ss : '%d سيڪنڊ',\n            m : 'هڪ منٽ',\n            mm : '%d منٽ',\n            h : 'هڪ ڪلاڪ',\n            hh : '%d ڪلاڪ',\n            d : 'هڪ ڏينهن',\n            dd : '%d ڏينهن',\n            M : 'هڪ مهينو',\n            MM : '%d مهينا',\n            y : 'هڪ سال',\n            yy : '%d سال'\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return sd;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var se = moment.defineLocale('se', {\n        months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),\n        monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n        weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),\n        weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n        weekdaysMin : 's_v_m_g_d_b_L'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'MMMM D. [b.] YYYY',\n            LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',\n            LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'\n        },\n        calendar : {\n            sameDay: '[otne ti] LT',\n            nextDay: '[ihttin ti] LT',\n            nextWeek: 'dddd [ti] LT',\n            lastDay: '[ikte ti] LT',\n            lastWeek: '[ovddit] dddd [ti] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : '%s geažes',\n            past : 'maŋit %s',\n            s : 'moadde sekunddat',\n            ss: '%d sekunddat',\n            m : 'okta minuhta',\n            mm : '%d minuhtat',\n            h : 'okta diimmu',\n            hh : '%d diimmut',\n            d : 'okta beaivi',\n            dd : '%d beaivvit',\n            M : 'okta mánnu',\n            MM : '%d mánut',\n            y : 'okta jahki',\n            yy : '%d jagit'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return se;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    /*jshint -W100*/\n    var si = moment.defineLocale('si', {\n        months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),\n        monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),\n        weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),\n        weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n        weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'a h:mm',\n            LTS : 'a h:mm:ss',\n            L : 'YYYY/MM/DD',\n            LL : 'YYYY MMMM D',\n            LLL : 'YYYY MMMM D, a h:mm',\n            LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'\n        },\n        calendar : {\n            sameDay : '[අද] LT[ට]',\n            nextDay : '[හෙට] LT[ට]',\n            nextWeek : 'dddd LT[ට]',\n            lastDay : '[ඊයේ] LT[ට]',\n            lastWeek : '[පසුගිය] dddd LT[ට]',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%sකින්',\n            past : '%sකට පෙර',\n            s : 'තත්පර කිහිපය',\n            ss : 'තත්පර %d',\n            m : 'මිනිත්තුව',\n            mm : 'මිනිත්තු %d',\n            h : 'පැය',\n            hh : 'පැය %d',\n            d : 'දිනය',\n            dd : 'දින %d',\n            M : 'මාසය',\n            MM : 'මාස %d',\n            y : 'වසර',\n            yy : 'වසර %d'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n        ordinal : function (number) {\n            return number + ' වැනි';\n        },\n        meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n        isPM : function (input) {\n            return input === 'ප.ව.' || input === 'පස් වරු';\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'ප.ව.' : 'පස් වරු';\n            } else {\n                return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n            }\n        }\n    });\n\n    return si;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),\n        monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n    function plural(n) {\n        return (n > 1) && (n < 5);\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':  // a few seconds / in a few seconds / a few seconds ago\n                return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekúnd');\n                } else {\n                    return result + 'sekundami';\n                }\n                break;\n            case 'm':  // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minúty' : 'minút');\n                } else {\n                    return result + 'minútami';\n                }\n                break;\n            case 'h':  // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodín');\n                } else {\n                    return result + 'hodinami';\n                }\n                break;\n            case 'd':  // a day / in a day / a day ago\n                return (withoutSuffix || isFuture) ? 'deň' : 'dňom';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dni' : 'dní');\n                } else {\n                    return result + 'dňami';\n                }\n                break;\n            case 'M':  // a month / in a month / a month ago\n                return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'mesiace' : 'mesiacov');\n                } else {\n                    return result + 'mesiacmi';\n                }\n                break;\n            case 'y':  // a year / in a year / a year ago\n                return (withoutSuffix || isFuture) ? 'rok' : 'rokom';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'rokov');\n                } else {\n                    return result + 'rokmi';\n                }\n                break;\n        }\n    }\n\n    var sk = moment.defineLocale('sk', {\n        months : months,\n        monthsShort : monthsShort,\n        weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n        weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),\n        weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),\n        longDateFormat : {\n            LT: 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd D. MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay: '[dnes o] LT',\n            nextDay: '[zajtra o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [o] LT';\n                    case 3:\n                        return '[v stredu o] LT';\n                    case 4:\n                        return '[vo štvrtok o] LT';\n                    case 5:\n                        return '[v piatok o] LT';\n                    case 6:\n                        return '[v sobotu o] LT';\n                }\n            },\n            lastDay: '[včera o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulú nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[minulý] dddd [o] LT';\n                    case 3:\n                        return '[minulú stredu o] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [o] LT';\n                    case 6:\n                        return '[minulú sobotu o] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past : 'pred %s',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return sk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\n            case 'ss':\n                if (number === 1) {\n                    result += withoutSuffix ? 'sekundo' : 'sekundi';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n                } else {\n                    result += withoutSuffix || isFuture ? 'sekund' : 'sekund';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'ena minuta' : 'eno minuto';\n            case 'mm':\n                if (number === 1) {\n                    result += withoutSuffix ? 'minuta' : 'minuto';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'ena ura' : 'eno uro';\n            case 'hh':\n                if (number === 1) {\n                    result += withoutSuffix ? 'ura' : 'uro';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'uri' : 'urama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'ure' : 'urami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'ur' : 'urami';\n                }\n                return result;\n            case 'd':\n                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n            case 'dd':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n                } else {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n                }\n                return result;\n            case 'M':\n                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n            case 'MM':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n                } else {\n                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n                }\n                return result;\n            case 'y':\n                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n            case 'yy':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'leto' : 'letom';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'leta' : 'leti';\n                } else {\n                    result += withoutSuffix || isFuture ? 'let' : 'leti';\n                }\n                return result;\n        }\n    }\n\n    var sl = moment.defineLocale('sl', {\n        months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n        monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n        weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n        weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay  : '[danes ob] LT',\n            nextDay  : '[jutri ob] LT',\n\n            nextWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[v] [sredo] [ob] LT';\n                    case 6:\n                        return '[v] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[v] dddd [ob] LT';\n                }\n            },\n            lastDay  : '[včeraj ob] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[prejšnjo] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[prejšnjo] [sredo] [ob] LT';\n                    case 6:\n                        return '[prejšnjo] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prejšnji] dddd [ob] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'čez %s',\n            past   : 'pred %s',\n            s      : processRelativeTime,\n            ss     : processRelativeTime,\n            m      : processRelativeTime,\n            mm     : processRelativeTime,\n            h      : processRelativeTime,\n            hh     : processRelativeTime,\n            d      : processRelativeTime,\n            dd     : processRelativeTime,\n            M      : processRelativeTime,\n            MM     : processRelativeTime,\n            y      : processRelativeTime,\n            yy     : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return sl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var sq = moment.defineLocale('sq', {\n        months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\n        monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n        weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\n        weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n        weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),\n        weekdaysParseExact : true,\n        meridiemParse: /PD|MD/,\n        isPM: function (input) {\n            return input.charAt(0) === 'M';\n        },\n        meridiem : function (hours, minutes, isLower) {\n            return hours < 12 ? 'PD' : 'MD';\n        },\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Sot në] LT',\n            nextDay : '[Nesër në] LT',\n            nextWeek : 'dddd [në] LT',\n            lastDay : '[Dje në] LT',\n            lastWeek : 'dddd [e kaluar në] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'në %s',\n            past : '%s më parë',\n            s : 'disa sekonda',\n            ss : '%d sekonda',\n            m : 'një minutë',\n            mm : '%d minuta',\n            h : 'një orë',\n            hh : '%d orë',\n            d : 'një ditë',\n            dd : '%d ditë',\n            M : 'një muaj',\n            MM : '%d muaj',\n            y : 'një vit',\n            yy : '%d vite'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return sq;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var translator = {\n        words: { //Different grammatical cases\n            ss: ['sekunda', 'sekunde', 'sekundi'],\n            m: ['jedan minut', 'jedne minute'],\n            mm: ['minut', 'minute', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            dd: ['dan', 'dana', 'dana'],\n            MM: ['mesec', 'meseca', 'meseci'],\n            yy: ['godina', 'godine', 'godina']\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n            }\n        }\n    };\n\n    var sr = moment.defineLocale('sr', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),\n        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS : 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedelju] [u] LT';\n                    case 3:\n                        return '[u] [sredu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay  : '[juče u] LT',\n            lastWeek : function () {\n                var lastWeekDays = [\n                    '[prošle] [nedelje] [u] LT',\n                    '[prošlog] [ponedeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT'\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past   : 'pre %s',\n            s      : 'nekoliko sekundi',\n            ss     : translator.translate,\n            m      : translator.translate,\n            mm     : translator.translate,\n            h      : translator.translate,\n            hh     : translator.translate,\n            d      : 'dan',\n            dd     : translator.translate,\n            M      : 'mesec',\n            MM     : translator.translate,\n            y      : 'godinu',\n            yy     : translator.translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return sr;\n\n})));\n","import { EventAggregator } from 'aurelia-event-aggregator';\nimport { LogManager, autoinject, Disposable } from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\n\nimport { State } from './store-model';\nimport { initialState } from './store-initial-state';\nimport { Company } from 'models/companies/company';\nimport { UserBasicInfo } from 'models/security/user-basic-info';\nimport { CompanyEditedMessage } from 'messages/companyEditedMessage';\nimport { CompanyDeletedMessage } from 'messages/companyDeletedMessage';\nimport { CompaniesLoadedMessage } from 'messages/companiesLoadedMessage';\nimport { UserInfoLoadedMessage } from 'messages/userInfoLoadedMessage';\nimport { Person } from 'models/test-person/person';\nimport { PeopleLoadedMessage } from 'messages/peopleLoadedMessage';\nimport { CurrentCompanyChangeMessage } from 'messages/currentCompanyChangeMessage';\n\n@autoinject()\nexport class StoreService {\n\n  private logger: Logger;\n\n  public state: State;\n\n  private subscriptions: Disposable[] = [];\n\n  constructor(private ea: EventAggregator) {\n    this.logger = LogManager.getLogger('StoreService');\n    this.state = initialState;\n\n    // edited company\n    this.subscriptions.push(this.ea.subscribe(CompanyEditedMessage, (msg: CompanyEditedMessage) => this.editCompanyState(msg)));\n\n    // deleted company\n    this.subscriptions.push(this.ea.subscribe(CompanyDeletedMessage, (msg: CompanyDeletedMessage) => this.deleteCompanyState(msg)));\n  }\n\n  public unbind() {\n    this.subscriptions.forEach(x => x.dispose());\n  }\n\n  public setCompaniesState(companies: Company[]): Promise<State> {\n    return new Promise((resolve) => {\n      try {\n\n        this.state.companies = companies;\n\n        // this.logger.debug('setCompaniesState', this.state.companies);\n\n        this.ea.publish(new CompaniesLoadedMessage());\n\n        resolve(this.state);\n\n      } catch (error) {\n        this.logger.error(`Error setting companies state: ${error}`);\n        resolve(this.state);\n      }\n    });\n  }\n\n  public setPeopleState(people: Person[]): Promise<State> {\n    return new Promise((resolve) => {\n      try {\n\n        this.state.people = people;\n\n        this.ea.publish(new PeopleLoadedMessage());\n\n        resolve(this.state);\n\n      } catch (error) {\n        this.logger.error(`Error setting people state: ${error}`);\n        resolve(this.state);\n      }\n    });\n  }\n\n  public editCompany(company: Company): Promise<State> {\n    return new Promise((resolve) => {\n      try {\n\n        this.logger.debug(\"editing company\", company);\n\n        //this.logger.debug(\"editing company\", this.state.companies);\n\n        let index = this.state.companies.map(x => x.id.toString()).indexOf(company.id.toString());\n\n        this.logger.debug(\"editing company index\", index);\n        if (index >= 0) {\n          this.state.companies.splice(index, 1);\n        }\n\n        Array.prototype.push.apply(this.state.companies, [company]);\n\n        // update current company\n        if (company.id === this.state.currentCompany.id) {\n          this.state.currentCompany = company;\n        }\n\n        resolve(this.state);\n\n      } catch (error) {\n        this.logger.error(`Error setting company: ${error}`);\n        resolve(this.state);\n      }\n    });\n  }\n\n  public deleteCompany(companyId: number): Promise<State> {\n    return new Promise((resolve) => {\n      try {\n\n        const index = this.state.companies.map(x => x.id.toString()).indexOf(companyId.toString());\n        if (index >= 0) {\n          this.state.companies.splice(index, 1);\n        }\n\n        resolve(this.state);\n\n      } catch (error) {\n        this.logger.error(`Error setting company: ${error}`);\n        resolve(this.state);\n      }\n    });\n  }\n\n  public setUserBasicInfoState(userBasicInfo: UserBasicInfo): Promise<State> {\n    return new Promise((resolve) => {\n      try {\n\n        this.state.userBasicInfo = userBasicInfo;\n\n        this.ea.publish(new UserInfoLoadedMessage());\n\n        resolve(this.state);\n\n      } catch (error) {\n        this.logger.error(`Error setting user basic info state: ${error}`);\n        resolve(this.state);\n      }\n    });\n  }\n\n  public setCurrentCompanyState(company: Company): Promise<State> {\n    return new Promise((resolve) => {\n      try {\n\n        this.state.currentCompany = company;\n\n        // this.logger.debug(\"current\", this.state.currentCompany);\n\n        // company id event\n        if (company) {\n          this.ea.publish(new CurrentCompanyChangeMessage(this.state.currentCompany.id));\n        } else {\n          this.ea.publish(new CurrentCompanyChangeMessage(null));\n        }\n\n        resolve(this.state);\n\n      } catch (error) {\n        this.logger.error(`Error setting current company state: ${error}`);\n        resolve(this.state);\n      }\n    });\n  }\n\n  public setCurrentPersonState(person: Person): Promise<State> {\n    return new Promise((resolve) => {\n      try {\n\n        this.state.currentPerson = person;\n\n        resolve(this.state);\n\n      } catch (error) {\n        this.logger.error(`Error setting current person state: ${error}`);\n        resolve(this.state);\n      }\n    });\n  }\n  \n  public async editCompanyState(msg: CompanyEditedMessage) {\n    return await this.editCompany(msg.company);\n  }\n\n  public async deleteCompanyState(msg: CompanyDeletedMessage) {\n    return await this.deleteCompany(msg.companyId);\n  }\n\n\n}\n","const matchAll = '.*';\n\nfunction escapeForPattern(s: string) {\n  return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nfunction assemblePattern(parts: string[]) {\n  if (parts.length === 0) {\n    return null;\n  }\n\n  const pattern = parts.join('|') || matchAll;\n  return new RegExp(`^(${pattern})$`);\n}\n\nexport class FileAcceptValidator {\n\n  static parse(accept: string, size: number = null) {\n    const parts = (accept || '')\n      .split(',')\n      .map(p => p.trim());\n    const nameParts = parts\n      .filter(p => p.startsWith('.'))\n      .map(p => matchAll + escapeForPattern(p));\n    const typeParts = parts\n      .filter(p => !p.startsWith('.'))\n      .map(part => {\n        const [type, subType] = part.split('/', 2);\n        return subType === '*'\n          ? escapeForPattern(`${type}/`) + matchAll\n          : escapeForPattern(part);\n      });\n\n    const namePattern = assemblePattern(nameParts);\n    const typePattern = assemblePattern(typeParts);\n\n    return new FileAcceptValidator(namePattern, typePattern, size);\n  }\n\n  constructor(private namePattern: RegExp = null, private typePattern: RegExp = null, private size: number = null) { }\n\n  isValid(file: File) {\n    if (this.namePattern === null && this.typePattern === null && this.size === null) {\n      return true;\n    }\n\n    let result: boolean = true;\n    result = (this.namePattern && this.namePattern.test(file.name)) || (this.typePattern && this.typePattern.test(file.type));\n\n    if (this.size) {\n      result = file.size <= this.size;\n    }\n    return result;\n  }\n}\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var translator = {\n        words: { //Different grammatical cases\n            ss: ['секунда', 'секунде', 'секунди'],\n            m: ['један минут', 'једне минуте'],\n            mm: ['минут', 'минуте', 'минута'],\n            h: ['један сат', 'једног сата'],\n            hh: ['сат', 'сата', 'сати'],\n            dd: ['дан', 'дана', 'дана'],\n            MM: ['месец', 'месеца', 'месеци'],\n            yy: ['година', 'године', 'година']\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n            }\n        }\n    };\n\n    var srCyrl = moment.defineLocale('sr-cyrl', {\n        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),\n        monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS : 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar: {\n            sameDay: '[данас у] LT',\n            nextDay: '[сутра у] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[у] [недељу] [у] LT';\n                    case 3:\n                        return '[у] [среду] [у] LT';\n                    case 6:\n                        return '[у] [суботу] [у] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[у] dddd [у] LT';\n                }\n            },\n            lastDay  : '[јуче у] LT',\n            lastWeek : function () {\n                var lastWeekDays = [\n                    '[прошле] [недеље] [у] LT',\n                    '[прошлог] [понедељка] [у] LT',\n                    '[прошлог] [уторка] [у] LT',\n                    '[прошле] [среде] [у] LT',\n                    '[прошлог] [четвртка] [у] LT',\n                    '[прошлог] [петка] [у] LT',\n                    '[прошле] [суботе] [у] LT'\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'за %s',\n            past   : 'пре %s',\n            s      : 'неколико секунди',\n            ss     : translator.translate,\n            m      : translator.translate,\n            mm     : translator.translate,\n            h      : translator.translate,\n            hh     : translator.translate,\n            d      : 'дан',\n            dd     : translator.translate,\n            M      : 'месец',\n            MM     : translator.translate,\n            y      : 'годину',\n            yy     : translator.translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return srCyrl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ss = moment.defineLocale('ss', {\n        months : \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split('_'),\n        monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n        weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),\n        weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n        weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[Namuhla nga] LT',\n            nextDay : '[Kusasa nga] LT',\n            nextWeek : 'dddd [nga] LT',\n            lastDay : '[Itolo nga] LT',\n            lastWeek : 'dddd [leliphelile] [nga] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'nga %s',\n            past : 'wenteka nga %s',\n            s : 'emizuzwana lomcane',\n            ss : '%d mzuzwana',\n            m : 'umzuzu',\n            mm : '%d emizuzu',\n            h : 'lihora',\n            hh : '%d emahora',\n            d : 'lilanga',\n            dd : '%d emalanga',\n            M : 'inyanga',\n            MM : '%d tinyanga',\n            y : 'umnyaka',\n            yy : '%d iminyaka'\n        },\n        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'ekuseni';\n            } else if (hours < 15) {\n                return 'emini';\n            } else if (hours < 19) {\n                return 'entsambama';\n            } else {\n                return 'ebusuku';\n            }\n        },\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ekuseni') {\n                return hour;\n            } else if (meridiem === 'emini') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n                if (hour === 0) {\n                    return 0;\n                }\n                return hour + 12;\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal : '%d',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return ss;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var sv = moment.defineLocale('sv', {\n        months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n        weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n        weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY [kl.] HH:mm',\n            LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',\n            lll : 'D MMM YYYY HH:mm',\n            llll : 'ddd D MMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Idag] LT',\n            nextDay: '[Imorgon] LT',\n            lastDay: '[Igår] LT',\n            nextWeek: '[På] dddd LT',\n            lastWeek: '[I] dddd[s] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'om %s',\n            past : 'för %s sedan',\n            s : 'några sekunder',\n            ss : '%d sekunder',\n            m : 'en minut',\n            mm : '%d minuter',\n            h : 'en timme',\n            hh : '%d timmar',\n            d : 'en dag',\n            dd : '%d dagar',\n            M : 'en månad',\n            MM : '%d månader',\n            y : 'ett år',\n            yy : '%d år'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(e|a)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'e' :\n                (b === 1) ? 'a' :\n                (b === 2) ? 'a' :\n                (b === 3) ? 'e' : 'e';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return sv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var sw = moment.defineLocale('sw', {\n        months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),\n        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n        weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),\n        weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n        weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[leo saa] LT',\n            nextDay : '[kesho saa] LT',\n            nextWeek : '[wiki ijayo] dddd [saat] LT',\n            lastDay : '[jana] LT',\n            lastWeek : '[wiki iliyopita] dddd [saat] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s baadaye',\n            past : 'tokea %s',\n            s : 'hivi punde',\n            ss : 'sekunde %d',\n            m : 'dakika moja',\n            mm : 'dakika %d',\n            h : 'saa limoja',\n            hh : 'masaa %d',\n            d : 'siku moja',\n            dd : 'masiku %d',\n            M : 'mwezi mmoja',\n            MM : 'miezi %d',\n            y : 'mwaka mmoja',\n            yy : 'miaka %d'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return sw;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '௧',\n        '2': '௨',\n        '3': '௩',\n        '4': '௪',\n        '5': '௫',\n        '6': '௬',\n        '7': '௭',\n        '8': '௮',\n        '9': '௯',\n        '0': '௦'\n    }, numberMap = {\n        '௧': '1',\n        '௨': '2',\n        '௩': '3',\n        '௪': '4',\n        '௫': '5',\n        '௬': '6',\n        '௭': '7',\n        '௮': '8',\n        '௯': '9',\n        '௦': '0'\n    };\n\n    var ta = moment.defineLocale('ta', {\n        months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n        monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n        weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),\n        weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),\n        weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, HH:mm',\n            LLLL : 'dddd, D MMMM YYYY, HH:mm'\n        },\n        calendar : {\n            sameDay : '[இன்று] LT',\n            nextDay : '[நாளை] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[நேற்று] LT',\n            lastWeek : '[கடந்த வாரம்] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s இல்',\n            past : '%s முன்',\n            s : 'ஒரு சில விநாடிகள்',\n            ss : '%d விநாடிகள்',\n            m : 'ஒரு நிமிடம்',\n            mm : '%d நிமிடங்கள்',\n            h : 'ஒரு மணி நேரம்',\n            hh : '%d மணி நேரம்',\n            d : 'ஒரு நாள்',\n            dd : '%d நாட்கள்',\n            M : 'ஒரு மாதம்',\n            MM : '%d மாதங்கள்',\n            y : 'ஒரு வருடம்',\n            yy : '%d ஆண்டுகள்'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n        ordinal : function (number) {\n            return number + 'வது';\n        },\n        preparse: function (string) {\n            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // refer http://ta.wikipedia.org/s/1er1\n        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 2) {\n                return ' யாமம்';\n            } else if (hour < 6) {\n                return ' வைகறை';  // வைகறை\n            } else if (hour < 10) {\n                return ' காலை'; // காலை\n            } else if (hour < 14) {\n                return ' நண்பகல்'; // நண்பகல்\n            } else if (hour < 18) {\n                return ' எற்பாடு'; // எற்பாடு\n            } else if (hour < 22) {\n                return ' மாலை'; // மாலை\n            } else {\n                return ' யாமம்';\n            }\n        },\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'யாமம்') {\n                return hour < 2 ? hour : hour + 12;\n            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n                return hour;\n            } else if (meridiem === 'நண்பகல்') {\n                return hour >= 10 ? hour : hour + 12;\n            } else {\n                return hour + 12;\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return ta;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var te = moment.defineLocale('te', {\n        months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),\n        monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),\n        weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n        weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm',\n            LTS : 'A h:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm'\n        },\n        calendar : {\n            sameDay : '[నేడు] LT',\n            nextDay : '[రేపు] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[నిన్న] LT',\n            lastWeek : '[గత] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s లో',\n            past : '%s క్రితం',\n            s : 'కొన్ని క్షణాలు',\n            ss : '%d సెకన్లు',\n            m : 'ఒక నిమిషం',\n            mm : '%d నిమిషాలు',\n            h : 'ఒక గంట',\n            hh : '%d గంటలు',\n            d : 'ఒక రోజు',\n            dd : '%d రోజులు',\n            M : 'ఒక నెల',\n            MM : '%d నెలలు',\n            y : 'ఒక సంవత్సరం',\n            yy : '%d సంవత్సరాలు'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}వ/,\n        ordinal : '%dవ',\n        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'రాత్రి') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ఉదయం') {\n                return hour;\n            } else if (meridiem === 'మధ్యాహ్నం') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'సాయంత్రం') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'రాత్రి';\n            } else if (hour < 10) {\n                return 'ఉదయం';\n            } else if (hour < 17) {\n                return 'మధ్యాహ్నం';\n            } else if (hour < 20) {\n                return 'సాయంత్రం';\n            } else {\n                return 'రాత్రి';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return te;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var tet = moment.defineLocale('tet', {\n        months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),\n        monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n        weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n        weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n        weekdaysMin : 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Ohin iha] LT',\n            nextDay: '[Aban iha] LT',\n            nextWeek: 'dddd [iha] LT',\n            lastDay: '[Horiseik iha] LT',\n            lastWeek: 'dddd [semana kotuk] [iha] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'iha %s',\n            past : '%s liuba',\n            s : 'minutu balun',\n            ss : 'minutu %d',\n            m : 'minutu ida',\n            mm : 'minutu %d',\n            h : 'oras ida',\n            hh : 'oras %d',\n            d : 'loron ida',\n            dd : 'loron %d',\n            M : 'fulan ida',\n            MM : 'fulan %d',\n            y : 'tinan ida',\n            yy : 'tinan %d'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return tet;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var suffixes = {\n        0: '-ум',\n        1: '-ум',\n        2: '-юм',\n        3: '-юм',\n        4: '-ум',\n        5: '-ум',\n        6: '-ум',\n        7: '-ум',\n        8: '-ум',\n        9: '-ум',\n        10: '-ум',\n        12: '-ум',\n        13: '-ум',\n        20: '-ум',\n        30: '-юм',\n        40: '-ум',\n        50: '-ум',\n        60: '-ум',\n        70: '-ум',\n        80: '-ум',\n        90: '-ум',\n        100: '-ум'\n    };\n\n    var tg = moment.defineLocale('tg', {\n        months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n        monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays : 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'),\n        weekdaysShort : 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n        weekdaysMin : 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Имрӯз соати] LT',\n            nextDay : '[Пагоҳ соати] LT',\n            lastDay : '[Дирӯз соати] LT',\n            nextWeek : 'dddd[и] [ҳафтаи оянда соати] LT',\n            lastWeek : 'dddd[и] [ҳафтаи гузашта соати] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'баъди %s',\n            past : '%s пеш',\n            s : 'якчанд сония',\n            m : 'як дақиқа',\n            mm : '%d дақиқа',\n            h : 'як соат',\n            hh : '%d соат',\n            d : 'як рӯз',\n            dd : '%d рӯз',\n            M : 'як моҳ',\n            MM : '%d моҳ',\n            y : 'як сол',\n            yy : '%d сол'\n        },\n        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'шаб') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'субҳ') {\n                return hour;\n            } else if (meridiem === 'рӯз') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'бегоҳ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'шаб';\n            } else if (hour < 11) {\n                return 'субҳ';\n            } else if (hour < 16) {\n                return 'рӯз';\n            } else if (hour < 19) {\n                return 'бегоҳ';\n            } else {\n                return 'шаб';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1th is the first week of the year.\n        }\n    });\n\n    return tg;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var th = moment.defineLocale('th', {\n        months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n        monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n        weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n        weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY เวลา H:mm',\n            LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm'\n        },\n        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n        isPM: function (input) {\n            return input === 'หลังเที่ยง';\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ก่อนเที่ยง';\n            } else {\n                return 'หลังเที่ยง';\n            }\n        },\n        calendar : {\n            sameDay : '[วันนี้ เวลา] LT',\n            nextDay : '[พรุ่งนี้ เวลา] LT',\n            nextWeek : 'dddd[หน้า เวลา] LT',\n            lastDay : '[เมื่อวานนี้ เวลา] LT',\n            lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'อีก %s',\n            past : '%sที่แล้ว',\n            s : 'ไม่กี่วินาที',\n            ss : '%d วินาที',\n            m : '1 นาที',\n            mm : '%d นาที',\n            h : '1 ชั่วโมง',\n            hh : '%d ชั่วโมง',\n            d : '1 วัน',\n            dd : '%d วัน',\n            M : '1 เดือน',\n            MM : '%d เดือน',\n            y : '1 ปี',\n            yy : '%d ปี'\n        }\n    });\n\n    return th;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var tlPh = moment.defineLocale('tl-ph', {\n        months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n        monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n        weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n        weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n        weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'MM/D/YYYY',\n            LL : 'MMMM D, YYYY',\n            LLL : 'MMMM D, YYYY HH:mm',\n            LLLL : 'dddd, MMMM DD, YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: 'LT [ngayong araw]',\n            nextDay: '[Bukas ng] LT',\n            nextWeek: 'LT [sa susunod na] dddd',\n            lastDay: 'LT [kahapon]',\n            lastWeek: 'LT [noong nakaraang] dddd',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'sa loob ng %s',\n            past : '%s ang nakalipas',\n            s : 'ilang segundo',\n            ss : '%d segundo',\n            m : 'isang minuto',\n            mm : '%d minuto',\n            h : 'isang oras',\n            hh : '%d oras',\n            d : 'isang araw',\n            dd : '%d araw',\n            M : 'isang buwan',\n            MM : '%d buwan',\n            y : 'isang taon',\n            yy : '%d taon'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal : function (number) {\n            return number;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return tlPh;\n\n})));\n","import { ActivationQuestionary } from 'models/test-person/activationQuestionary';\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n@autoinject()\nexport class ActivationQuestionaryService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"ActivationQuestionaryService\");\n  }\n\n  public async list(parameters: UxDatatableParameters, personId: number): Promise<UxDatatableResponse> {\n    return await this.client.post(`activationquestionary/list/${personId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async listWithTestControl(parameters: UxDatatableParameters, personId: number): Promise<UxDatatableResponse> {\n    return await this.client.post(`activationquestionary/list-with-test-control/${personId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getquestionnaires(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`activationquestionary/getquestionnaires`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n  \n\n  public async getAll(personId: number): Promise<ActivationQuestionary[]> {\n    return await this.client.get(`activationquestionary/get-all/${personId}`)\n      .then((response: any) => {\n        return <ActivationQuestionary[]>response;\n      });\n  }\n\n  public async getObserved(personId: number): Promise<ActivationQuestionary[]> {\n    return await this.client.get(`activationquestionary/get-observed/${personId}`)\n      .then((response: any) => {\n        return <ActivationQuestionary[]>response;\n      });\n  }\n\n  public async getById(id: number): Promise<ActivationQuestionary> {\n    return await this.client.get(`activationquestionary/${id}`)\n      .then((response: ActivationQuestionary) => {\n        return response;\n      });\n  }\n\n  public async create(model: ActivationQuestionary, personId: number): Promise<ActivationQuestionary> {\n    return await this.client.create(`activationquestionary/${personId}`, model)\n      .then((response: any) => {\n        return <ActivationQuestionary>response;\n      });\n  }\n\n  // public async update(model: ActivationQuestionary, personId: number): Promise<void> {\n  //   return await this.client.updateById(`activationquestionary/${personId}`, model.id, null, model)\n  //     .then(() => null);\n  // }\n\n  public async getCompanyCompetenceById(id: number): Promise<ActivationQuestionary> {\n    return await this.client.get(`activationquestionary/company-competence-by-id/${id}`)\n      .then((response: ActivationQuestionary) => {\n        return <ActivationQuestionary>response\n      });\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(`activationquestionary`, id)\n      .then(() => null);\n  }\n  public async listpreviewresults(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"activationquestionary/listpreviewresults\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n  public async getLastActivationVideoInterview(personId: number): Promise<ActivationQuestionary> {\n    return await this.client.get(`activationquestionary/get-last-activation-videointerview/${personId}`)\n      .then((response: ActivationQuestionary) => {\n        return response;\n      });\n  }\n\n  public async listActivationVideoInterview(personId: number): Promise<ActivationQuestionary[]> {\n    return await this.client.post(`activationquestionary/list-activation-videointerview/${personId}`)\n      .then((response: any) => {\n        return <ActivationQuestionary[]>response;\n      });\n  }\n  public async getByActivationQuestionaryId(id: number): Promise<ActivationQuestionary> {\n    return await this.client.get(`activationquestionary/${id}`)\n      .then((response: ActivationQuestionary) => {\n        return response;\n      });\n  }\n  public async requalifyById(id: number): Promise<void> {\n    return await this.client.post(`activationquestionary/requalify/${id}`)\n      .then(() => null);\n  }\n\n}\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n    function translateFuture(output) {\n        var time = output;\n        time = (output.indexOf('jaj') !== -1) ?\n        time.slice(0, -3) + 'leS' :\n        (output.indexOf('jar') !== -1) ?\n        time.slice(0, -3) + 'waQ' :\n        (output.indexOf('DIS') !== -1) ?\n        time.slice(0, -3) + 'nem' :\n        time + ' pIq';\n        return time;\n    }\n\n    function translatePast(output) {\n        var time = output;\n        time = (output.indexOf('jaj') !== -1) ?\n        time.slice(0, -3) + 'Hu’' :\n        (output.indexOf('jar') !== -1) ?\n        time.slice(0, -3) + 'wen' :\n        (output.indexOf('DIS') !== -1) ?\n        time.slice(0, -3) + 'ben' :\n        time + ' ret';\n        return time;\n    }\n\n    function translate(number, withoutSuffix, string, isFuture) {\n        var numberNoun = numberAsNoun(number);\n        switch (string) {\n            case 'ss':\n                return numberNoun + ' lup';\n            case 'mm':\n                return numberNoun + ' tup';\n            case 'hh':\n                return numberNoun + ' rep';\n            case 'dd':\n                return numberNoun + ' jaj';\n            case 'MM':\n                return numberNoun + ' jar';\n            case 'yy':\n                return numberNoun + ' DIS';\n        }\n    }\n\n    function numberAsNoun(number) {\n        var hundred = Math.floor((number % 1000) / 100),\n        ten = Math.floor((number % 100) / 10),\n        one = number % 10,\n        word = '';\n        if (hundred > 0) {\n            word += numbersNouns[hundred] + 'vatlh';\n        }\n        if (ten > 0) {\n            word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';\n        }\n        if (one > 0) {\n            word += ((word !== '') ? ' ' : '') + numbersNouns[one];\n        }\n        return (word === '') ? 'pagh' : word;\n    }\n\n    var tlh = moment.defineLocale('tlh', {\n        months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),\n        monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n        weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n        weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[DaHjaj] LT',\n            nextDay: '[wa’leS] LT',\n            nextWeek: 'LLL',\n            lastDay: '[wa’Hu’] LT',\n            lastWeek: 'LLL',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : translateFuture,\n            past : translatePast,\n            s : 'puS lup',\n            ss : translate,\n            m : 'wa’ tup',\n            mm : translate,\n            h : 'wa’ rep',\n            hh : translate,\n            d : 'wa’ jaj',\n            dd : translate,\n            M : 'wa’ jar',\n            MM : translate,\n            y : 'wa’ DIS',\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return tlh;\n\n})));\n","\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    var suffixes = {\n        1: '\\'inci',\n        5: '\\'inci',\n        8: '\\'inci',\n        70: '\\'inci',\n        80: '\\'inci',\n        2: '\\'nci',\n        7: '\\'nci',\n        20: '\\'nci',\n        50: '\\'nci',\n        3: '\\'üncü',\n        4: '\\'üncü',\n        100: '\\'üncü',\n        6: '\\'ncı',\n        9: '\\'uncu',\n        10: '\\'uncu',\n        30: '\\'uncu',\n        60: '\\'ıncı',\n        90: '\\'ıncı'\n    };\n\n    var tr = moment.defineLocale('tr', {\n        months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\n        monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n        weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),\n        weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n        weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[bugün saat] LT',\n            nextDay : '[yarın saat] LT',\n            nextWeek : '[gelecek] dddd [saat] LT',\n            lastDay : '[dün] LT',\n            lastWeek : '[geçen] dddd [saat] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s sonra',\n            past : '%s önce',\n            s : 'birkaç saniye',\n            ss : '%d saniye',\n            m : 'bir dakika',\n            mm : '%d dakika',\n            h : 'bir saat',\n            hh : '%d saat',\n            d : 'bir gün',\n            dd : '%d gün',\n            M : 'bir ay',\n            MM : '%d ay',\n            y : 'bir yıl',\n            yy : '%d yıl'\n        },\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'Do':\n                case 'DD':\n                    return number;\n                default:\n                    if (number === 0) {  // special case for zero\n                        return number + '\\'ıncı';\n                    }\n                    var a = number % 10,\n                        b = number % 100 - a,\n                        c = number >= 100 ? 100 : null;\n                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return tr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n    // This is currently too difficult (maybe even impossible) to add.\n    var tzl = moment.defineLocale('tzl', {\n        months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),\n        monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n        weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n        weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n        weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM [dallas] YYYY',\n            LLL : 'D. MMMM [dallas] YYYY HH.mm',\n            LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'\n        },\n        meridiemParse: /d\\'o|d\\'a/i,\n        isPM : function (input) {\n            return 'd\\'o' === input.toLowerCase();\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'd\\'o' : 'D\\'O';\n            } else {\n                return isLower ? 'd\\'a' : 'D\\'A';\n            }\n        },\n        calendar : {\n            sameDay : '[oxhi à] LT',\n            nextDay : '[demà à] LT',\n            nextWeek : 'dddd [à] LT',\n            lastDay : '[ieiri à] LT',\n            lastWeek : '[sür el] dddd [lasteu à] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'osprei %s',\n            past : 'ja%s',\n            s : processRelativeTime,\n            ss : processRelativeTime,\n            m : processRelativeTime,\n            mm : processRelativeTime,\n            h : processRelativeTime,\n            hh : processRelativeTime,\n            d : processRelativeTime,\n            dd : processRelativeTime,\n            M : processRelativeTime,\n            MM : processRelativeTime,\n            y : processRelativeTime,\n            yy : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            's': ['viensas secunds', '\\'iensas secunds'],\n            'ss': [number + ' secunds', '' + number + ' secunds'],\n            'm': ['\\'n míut', '\\'iens míut'],\n            'mm': [number + ' míuts', '' + number + ' míuts'],\n            'h': ['\\'n þora', '\\'iensa þora'],\n            'hh': [number + ' þoras', '' + number + ' þoras'],\n            'd': ['\\'n ziua', '\\'iensa ziua'],\n            'dd': [number + ' ziuas', '' + number + ' ziuas'],\n            'M': ['\\'n mes', '\\'iens mes'],\n            'MM': [number + ' mesen', '' + number + ' mesen'],\n            'y': ['\\'n ar', '\\'iens ar'],\n            'yy': [number + ' ars', '' + number + ' ars']\n        };\n        return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);\n    }\n\n    return tzl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var tzm = moment.defineLocale('tzm', {\n        months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n        monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n        weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n            nextWeek: 'dddd [ⴴ] LT',\n            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n            lastWeek: 'dddd [ⴴ] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n            past : 'ⵢⴰⵏ %s',\n            s : 'ⵉⵎⵉⴽ',\n            ss : '%d ⵉⵎⵉⴽ',\n            m : 'ⵎⵉⵏⵓⴺ',\n            mm : '%d ⵎⵉⵏⵓⴺ',\n            h : 'ⵙⴰⵄⴰ',\n            hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n            d : 'ⴰⵙⵙ',\n            dd : '%d oⵙⵙⴰⵏ',\n            M : 'ⴰⵢoⵓⵔ',\n            MM : '%d ⵉⵢⵢⵉⵔⵏ',\n            y : 'ⴰⵙⴳⴰⵙ',\n            yy : '%d ⵉⵙⴳⴰⵙⵏ'\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return tzm;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var tzmLatn = moment.defineLocale('tzm-latn', {\n        months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n        monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n        weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[asdkh g] LT',\n            nextDay: '[aska g] LT',\n            nextWeek: 'dddd [g] LT',\n            lastDay: '[assant g] LT',\n            lastWeek: 'dddd [g] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'dadkh s yan %s',\n            past : 'yan %s',\n            s : 'imik',\n            ss : '%d imik',\n            m : 'minuḍ',\n            mm : '%d minuḍ',\n            h : 'saɛa',\n            hh : '%d tassaɛin',\n            d : 'ass',\n            dd : '%d ossan',\n            M : 'ayowr',\n            MM : '%d iyyirn',\n            y : 'asgas',\n            yy : '%d isgasn'\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return tzmLatn;\n\n})));\n","//! moment.js language configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ugCn = moment.defineLocale('ug-cn', {\n        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n            '_'\n        ),\n        monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n            '_'\n        ),\n        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n            '_'\n        ),\n        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm'\n        },\n        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                meridiem === 'يېرىم كېچە' ||\n                meridiem === 'سەھەر' ||\n                meridiem === 'چۈشتىن بۇرۇن'\n            ) {\n                return hour;\n            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n                return hour + 12;\n            } else {\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return 'يېرىم كېچە';\n            } else if (hm < 900) {\n                return 'سەھەر';\n            } else if (hm < 1130) {\n                return 'چۈشتىن بۇرۇن';\n            } else if (hm < 1230) {\n                return 'چۈش';\n            } else if (hm < 1800) {\n                return 'چۈشتىن كېيىن';\n            } else {\n                return 'كەچ';\n            }\n        },\n        calendar: {\n            sameDay: '[بۈگۈن سائەت] LT',\n            nextDay: '[ئەتە سائەت] LT',\n            nextWeek: '[كېلەركى] dddd [سائەت] LT',\n            lastDay: '[تۆنۈگۈن] LT',\n            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: '%s كېيىن',\n            past: '%s بۇرۇن',\n            s: 'نەچچە سېكونت',\n            ss: '%d سېكونت',\n            m: 'بىر مىنۇت',\n            mm: '%d مىنۇت',\n            h: 'بىر سائەت',\n            hh: '%d سائەت',\n            d: 'بىر كۈن',\n            dd: '%d كۈن',\n            M: 'بىر ئاي',\n            MM: '%d ئاي',\n            y: 'بىر يىل',\n            yy: '%d يىل'\n        },\n\n        dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '-كۈنى';\n                case 'w':\n                case 'W':\n                    return number + '-ھەپتە';\n                default:\n                    return number;\n            }\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow: 1, // Monday is the first day of the week.\n            doy: 7 // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return ugCn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            'ss': withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n            'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n            'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n            'dd': 'день_дні_днів',\n            'MM': 'місяць_місяці_місяців',\n            'yy': 'рік_роки_років'\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвилина' : 'хвилину';\n        }\n        else if (key === 'h') {\n            return withoutSuffix ? 'година' : 'годину';\n        }\n        else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    function weekdaysCaseReplace(m, format) {\n        var weekdays = {\n            'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),\n            'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),\n            'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')\n        };\n\n        if (!m) {\n            return weekdays['nominative'];\n        }\n\n        var nounCase = (/(\\[[ВвУу]\\]) ?dddd/).test(format) ?\n            'accusative' :\n            ((/\\[?(?:минулої|наступної)? ?\\] ?dddd/).test(format) ?\n                'genitive' :\n                'nominative');\n        return weekdays[nounCase][m.day()];\n    }\n    function processHoursFunction(str) {\n        return function () {\n            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n        };\n    }\n\n    var uk = moment.defineLocale('uk', {\n        months : {\n            'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),\n            'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')\n        },\n        monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),\n        weekdays : weekdaysCaseReplace,\n        weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY р.',\n            LLL : 'D MMMM YYYY р., HH:mm',\n            LLLL : 'dddd, D MMMM YYYY р., HH:mm'\n        },\n        calendar : {\n            sameDay: processHoursFunction('[Сьогодні '),\n            nextDay: processHoursFunction('[Завтра '),\n            lastDay: processHoursFunction('[Вчора '),\n            nextWeek: processHoursFunction('[У] dddd ['),\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return processHoursFunction('[Минулої] dddd [').call(this);\n                    case 1:\n                    case 2:\n                    case 4:\n                        return processHoursFunction('[Минулого] dddd [').call(this);\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'за %s',\n            past : '%s тому',\n            s : 'декілька секунд',\n            ss : relativeTimeWithPlural,\n            m : relativeTimeWithPlural,\n            mm : relativeTimeWithPlural,\n            h : 'годину',\n            hh : relativeTimeWithPlural,\n            d : 'день',\n            dd : relativeTimeWithPlural,\n            M : 'місяць',\n            MM : relativeTimeWithPlural,\n            y : 'рік',\n            yy : relativeTimeWithPlural\n        },\n        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n        meridiemParse: /ночі|ранку|дня|вечора/,\n        isPM: function (input) {\n            return /^(дня|вечора)$/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночі';\n            } else if (hour < 12) {\n                return 'ранку';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечора';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                default:\n                    return number;\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return uk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var months = [\n        'جنوری',\n        'فروری',\n        'مارچ',\n        'اپریل',\n        'مئی',\n        'جون',\n        'جولائی',\n        'اگست',\n        'ستمبر',\n        'اکتوبر',\n        'نومبر',\n        'دسمبر'\n    ];\n    var days = [\n        'اتوار',\n        'پیر',\n        'منگل',\n        'بدھ',\n        'جمعرات',\n        'جمعہ',\n        'ہفتہ'\n    ];\n\n    var ur = moment.defineLocale('ur', {\n        months : months,\n        monthsShort : months,\n        weekdays : days,\n        weekdaysShort : days,\n        weekdaysMin : days,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd، D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /صبح|شام/,\n        isPM : function (input) {\n            return 'شام' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar : {\n            sameDay : '[آج بوقت] LT',\n            nextDay : '[کل بوقت] LT',\n            nextWeek : 'dddd [بوقت] LT',\n            lastDay : '[گذشتہ روز بوقت] LT',\n            lastWeek : '[گذشتہ] dddd [بوقت] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s بعد',\n            past : '%s قبل',\n            s : 'چند سیکنڈ',\n            ss : '%d سیکنڈ',\n            m : 'ایک منٹ',\n            mm : '%d منٹ',\n            h : 'ایک گھنٹہ',\n            hh : '%d گھنٹے',\n            d : 'ایک دن',\n            dd : '%d دن',\n            M : 'ایک ماہ',\n            MM : '%d ماہ',\n            y : 'ایک سال',\n            yy : '%d سال'\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return ur;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var uz = moment.defineLocale('uz', {\n        months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n        monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n        weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n        weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'D MMMM YYYY, dddd HH:mm'\n        },\n        calendar : {\n            sameDay : '[Бугун соат] LT [да]',\n            nextDay : '[Эртага] LT [да]',\n            nextWeek : 'dddd [куни соат] LT [да]',\n            lastDay : '[Кеча соат] LT [да]',\n            lastWeek : '[Утган] dddd [куни соат] LT [да]',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'Якин %s ичида',\n            past : 'Бир неча %s олдин',\n            s : 'фурсат',\n            ss : '%d фурсат',\n            m : 'бир дакика',\n            mm : '%d дакика',\n            h : 'бир соат',\n            hh : '%d соат',\n            d : 'бир кун',\n            dd : '%d кун',\n            M : 'бир ой',\n            MM : '%d ой',\n            y : 'бир йил',\n            yy : '%d йил'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return uz;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var uzLatn = moment.defineLocale('uz-latn', {\n        months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),\n        monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n        weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),\n        weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n        weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'D MMMM YYYY, dddd HH:mm'\n        },\n        calendar : {\n            sameDay : '[Bugun soat] LT [da]',\n            nextDay : '[Ertaga] LT [da]',\n            nextWeek : 'dddd [kuni soat] LT [da]',\n            lastDay : '[Kecha soat] LT [da]',\n            lastWeek : '[O\\'tgan] dddd [kuni soat] LT [da]',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'Yaqin %s ichida',\n            past : 'Bir necha %s oldin',\n            s : 'soniya',\n            ss : '%d soniya',\n            m : 'bir daqiqa',\n            mm : '%d daqiqa',\n            h : 'bir soat',\n            hh : '%d soat',\n            d : 'bir kun',\n            dd : '%d kun',\n            M : 'bir oy',\n            MM : '%d oy',\n            y : 'bir yil',\n            yy : '%d yil'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return uzLatn;\n\n})));\n","import { Wallet } from 'models/talents/wallet';\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { User } from \"models/security/user\";\n\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Transaction } from \"models/talents/transaction\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\n\n\n@autoinject\nexport class TransactionService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"TalentTransactionService\");\n  }\n\n  public async recordList(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"transaction/record-list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async transferList(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"transaction/transfer-list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async balancesList(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"transaction/balances-list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async consolidatedList(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"transaction/consolidated-list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async remove(parameters: Wallet[]): Promise<UxDatatableResponse> {\n    return await this.client.post(\"transaction/remove\", parameters)\n    .then(() => null);\n  }\n  \n  public async transfer(parameters: Transaction[]): Promise<UxDatatableResponse> {\n    return await this.client.post(\"transaction/transfer\", parameters)\n    .then(() => null);\n  }\n  \n\n  public async getById(id: number): Promise<Transaction> {\n    return await this.client.getById(\"transaction\", id)\n      .then((response: Transaction) => {\n        return response;\n      });\n  }\n\n  public async create(model: Transaction): Promise<Transaction> {\n    return await this.client.create(\"transaction\", model)\n      .then((response: Transaction) => {\n        return response;\n      });\n  }\n\n  public async assign(model: Transaction): Promise<Transaction> {\n    return await this.client.create(\"transaction/assign\", model)\n      .then((response: Transaction) => {\n        return response;\n      });\n  }\n\n  public async getUserByCompany(): Promise<User[]> {\n    return await this.client.get(\"transaction/get-users-by-company\")\n      .then((response: User[]) => {\n        return response;\n      });\n  }\n\n  public async hasPredictorByPerson(personId: number): Promise<boolean> {\n    return await this.client.get(`transaction/has-predictor-by-person/${personId}`)\n      .then((response: boolean) => {\n        return response;\n      });\n  }\n}","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var vi = moment.defineLocale('vi', {\n        months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),\n        monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),\n        weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysParseExact : true,\n        meridiemParse: /sa|ch/i,\n        isPM : function (input) {\n            return /^ch$/i.test(input);\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'sa' : 'SA';\n            } else {\n                return isLower ? 'ch' : 'CH';\n            }\n        },\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM [năm] YYYY',\n            LLL : 'D MMMM [năm] YYYY HH:mm',\n            LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',\n            l : 'DD/M/YYYY',\n            ll : 'D MMM YYYY',\n            lll : 'D MMM YYYY HH:mm',\n            llll : 'ddd, D MMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Hôm nay lúc] LT',\n            nextDay: '[Ngày mai lúc] LT',\n            nextWeek: 'dddd [tuần tới lúc] LT',\n            lastDay: '[Hôm qua lúc] LT',\n            lastWeek: 'dddd [tuần rồi lúc] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : '%s tới',\n            past : '%s trước',\n            s : 'vài giây',\n            ss : '%d giây' ,\n            m : 'một phút',\n            mm : '%d phút',\n            h : 'một giờ',\n            hh : '%d giờ',\n            d : 'một ngày',\n            dd : '%d ngày',\n            M : 'một tháng',\n            MM : '%d tháng',\n            y : 'một năm',\n            yy : '%d năm'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal : function (number) {\n            return number;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return vi;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var xPseudo = moment.defineLocale('x-pseudo', {\n        months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),\n        monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),\n        weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n        weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[T~ódá~ý át] LT',\n            nextDay : '[T~ómó~rró~w át] LT',\n            nextWeek : 'dddd [át] LT',\n            lastDay : '[Ý~ést~érdá~ý át] LT',\n            lastWeek : '[L~ást] dddd [át] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'í~ñ %s',\n            past : '%s á~gó',\n            s : 'á ~féw ~sécó~ñds',\n            ss : '%d s~écóñ~ds',\n            m : 'á ~míñ~úté',\n            mm : '%d m~íñú~tés',\n            h : 'á~ñ hó~úr',\n            hh : '%d h~óúrs',\n            d : 'á ~dáý',\n            dd : '%d d~áýs',\n            M : 'á ~móñ~th',\n            MM : '%d m~óñt~hs',\n            y : 'á ~ýéár',\n            yy : '%d ý~éárs'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return xPseudo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var yo = moment.defineLocale('yo', {\n        months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),\n        monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n        weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n        weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n        weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[Ònì ni] LT',\n            nextDay : '[Ọ̀la ni] LT',\n            nextWeek : 'dddd [Ọsẹ̀ tón\\'bọ] [ni] LT',\n            lastDay : '[Àna ni] LT',\n            lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'ní %s',\n            past : '%s kọjá',\n            s : 'ìsẹjú aayá die',\n            ss :'aayá %d',\n            m : 'ìsẹjú kan',\n            mm : 'ìsẹjú %d',\n            h : 'wákati kan',\n            hh : 'wákati %d',\n            d : 'ọjọ́ kan',\n            dd : 'ọjọ́ %d',\n            M : 'osù kan',\n            MM : 'osù %d',\n            y : 'ọdún kan',\n            yy : 'ọdún %d'\n        },\n        dayOfMonthOrdinalParse : /ọjọ́\\s\\d{1,2}/,\n        ordinal : 'ọjọ́ %d',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4 // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return yo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var zhCn = moment.defineLocale('zh-cn', {\n        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY/MM/DD',\n            LL : 'YYYY年M月D日',\n            LLL : 'YYYY年M月D日Ah点mm分',\n            LLLL : 'YYYY年M月D日ddddAh点mm分',\n            l : 'YYYY/M/D',\n            ll : 'YYYY年M月D日',\n            lll : 'YYYY年M月D日 HH:mm',\n            llll : 'YYYY年M月D日dddd HH:mm'\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' ||\n                    meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            } else {\n                // '中午'\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar : {\n            sameDay : '[今天]LT',\n            nextDay : '[明天]LT',\n            nextWeek : '[下]ddddLT',\n            lastDay : '[昨天]LT',\n            lastWeek : '[上]ddddLT',\n            sameElse : 'L'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '周';\n                default:\n                    return number;\n            }\n        },\n        relativeTime : {\n            future : '%s内',\n            past : '%s前',\n            s : '几秒',\n            ss : '%d 秒',\n            m : '1 分钟',\n            mm : '%d 分钟',\n            h : '1 小时',\n            hh : '%d 小时',\n            d : '1 天',\n            dd : '%d 天',\n            M : '1 个月',\n            MM : '%d 个月',\n            y : '1 年',\n            yy : '%d 年'\n        },\n        week : {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return zhCn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var zhHk = moment.defineLocale('zh-hk', {\n        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY/MM/DD',\n            LL : 'YYYY年M月D日',\n            LLL : 'YYYY年M月D日 HH:mm',\n            LLLL : 'YYYY年M月D日dddd HH:mm',\n            l : 'YYYY/M/D',\n            ll : 'YYYY年M月D日',\n            lll : 'YYYY年M月D日 HH:mm',\n            llll : 'YYYY年M月D日dddd HH:mm'\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar : {\n            sameDay : '[今天]LT',\n            nextDay : '[明天]LT',\n            nextWeek : '[下]ddddLT',\n            lastDay : '[昨天]LT',\n            lastWeek : '[上]ddddLT',\n            sameElse : 'L'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd' :\n                case 'D' :\n                case 'DDD' :\n                    return number + '日';\n                case 'M' :\n                    return number + '月';\n                case 'w' :\n                case 'W' :\n                    return number + '週';\n                default :\n                    return number;\n            }\n        },\n        relativeTime : {\n            future : '%s內',\n            past : '%s前',\n            s : '幾秒',\n            ss : '%d 秒',\n            m : '1 分鐘',\n            mm : '%d 分鐘',\n            h : '1 小時',\n            hh : '%d 小時',\n            d : '1 天',\n            dd : '%d 天',\n            M : '1 個月',\n            MM : '%d 個月',\n            y : '1 年',\n            yy : '%d 年'\n        }\n    });\n\n    return zhHk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var zhTw = moment.defineLocale('zh-tw', {\n        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY/MM/DD',\n            LL : 'YYYY年M月D日',\n            LLL : 'YYYY年M月D日 HH:mm',\n            LLLL : 'YYYY年M月D日dddd HH:mm',\n            l : 'YYYY/M/D',\n            ll : 'YYYY年M月D日',\n            lll : 'YYYY年M月D日 HH:mm',\n            llll : 'YYYY年M月D日dddd HH:mm'\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar : {\n            sameDay : '[今天] LT',\n            nextDay : '[明天] LT',\n            nextWeek : '[下]dddd LT',\n            lastDay : '[昨天] LT',\n            lastWeek : '[上]dddd LT',\n            sameElse : 'L'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd' :\n                case 'D' :\n                case 'DDD' :\n                    return number + '日';\n                case 'M' :\n                    return number + '月';\n                case 'w' :\n                case 'W' :\n                    return number + '週';\n                default :\n                    return number;\n            }\n        },\n        relativeTime : {\n            future : '%s內',\n            past : '%s前',\n            s : '幾秒',\n            ss : '%d 秒',\n            m : '1 分鐘',\n            mm : '%d 分鐘',\n            h : '1 小時',\n            hh : '%d 小時',\n            d : '1 天',\n            dd : '%d 天',\n            M : '1 個月',\n            MM : '%d 個月',\n            y : '1 年',\n            yy : '%d 年'\n        }\n    });\n\n    return zhTw;\n\n})));\n","define([\"require\", \"exports\"], function (require, exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    var PermissionStore = (function () {\n        function PermissionStore() {\n            this.permissionDefinitions = [];\n        }\n        PermissionStore.prototype.useDefaultDefinition = function (permissions) {\n            this.defaultDefinition = PermissionStore.DefaultDefinition(permissions);\n        };\n        PermissionStore.prototype.definePermission = function (permission, definition) {\n            var _this = this;\n            var definitions = this.permissionDefinitions.filter(function (pd) { return pd.permission === permission; });\n            if (definitions.length > 0) {\n                throw Error(\"Cannot provide multiple definitions for the same permission: \" + permission + \"!\");\n            }\n            var defaultPermissionDefinition = this.defaultDefinition ? function () { return _this.defaultDefinition(permission); } : null;\n            definition = definition || defaultPermissionDefinition;\n            if (!definition) {\n                throw Error(\"Configure store to use default definition function or provide it as parameter!\");\n            }\n            this.permissionDefinitions.push({\n                permission: permission,\n                definition: definition\n            });\n        };\n        PermissionStore.prototype.definePermissions = function (permissions, definition) {\n            var _this = this;\n            permissions.forEach(function (permission) {\n                var permissionDefinition = definition ? function () { return definition(permission); } : null;\n                _this.definePermission(permission, permissionDefinition);\n            });\n        };\n        PermissionStore.prototype.definePermissionObject = function (permissionObject, definition) {\n            this.permissionObject = permissionObject;\n            var permissions = Object.getOwnPropertyNames(permissionObject).map(function (permission) { return permissionObject[permission]; });\n            this.definePermissions(permissions, definition);\n        };\n        PermissionStore.prototype.getDefinition = function (permission) {\n            var permissionDefinition = this.permissionDefinitions.find(function (rd) { return rd.permission === permission; });\n            return permissionDefinition ? permissionDefinition.definition : null;\n        };\n        PermissionStore.prototype.getPermissionName = function (permission) {\n            return this.permissionObject ?\n                this.permissionObject[permission] :\n                permission;\n        };\n        PermissionStore.DefaultDefinition = function (permissions) {\n            return function (permission) { return permissions.includes(permission); };\n        };\n        return PermissionStore;\n    }());\n    exports.default = PermissionStore;\n});\n","import { Container } from 'aurelia-dependency-injection';\nimport { CompositionEngine, ViewSlot } from 'aurelia-templating';\nimport { DefaultDialogSettings } from './dialog-settings';\nimport { createDialogCancelError } from './dialog-cancel-error';\nimport { invokeLifecycle } from './lifecycle';\nimport { DialogController } from './dialog-controller';\n/* tslint:enable:max-line-length */\nfunction whenClosed(onfulfilled, onrejected) {\n    return this.then(function (r) { return r.wasCancelled ? r : r.closeResult; }).then(onfulfilled, onrejected);\n}\nfunction asDialogOpenPromise(promise) {\n    promise.whenClosed = whenClosed;\n    return promise;\n}\n/**\n * A service allowing for the creation of dialogs.\n */\nvar DialogService = /** @class */ (function () {\n    function DialogService(container, compositionEngine, defaultSettings) {\n        /**\n         * The current dialog controllers\n         */\n        this.controllers = [];\n        /**\n         * Is there an open dialog\n         */\n        this.hasOpenDialog = false;\n        this.hasActiveDialog = false;\n        this.container = container;\n        this.compositionEngine = compositionEngine;\n        this.defaultSettings = defaultSettings;\n    }\n    DialogService.prototype.validateSettings = function (settings) {\n        if (!settings.viewModel && !settings.view) {\n            throw new Error('Invalid Dialog Settings. You must provide \"viewModel\", \"view\" or both.');\n        }\n    };\n    // tslint:disable-next-line:max-line-length\n    DialogService.prototype.createCompositionContext = function (childContainer, host, settings) {\n        return {\n            container: childContainer.parent,\n            childContainer: childContainer,\n            bindingContext: null,\n            viewResources: null,\n            model: settings.model,\n            view: settings.view,\n            viewModel: settings.viewModel,\n            viewSlot: new ViewSlot(host, true),\n            host: host\n        };\n    };\n    DialogService.prototype.ensureViewModel = function (compositionContext) {\n        if (typeof compositionContext.viewModel === 'object') {\n            return Promise.resolve(compositionContext);\n        }\n        return this.compositionEngine.ensureViewModel(compositionContext);\n    };\n    DialogService.prototype._cancelOperation = function (rejectOnCancel) {\n        if (!rejectOnCancel) {\n            return { wasCancelled: true };\n        }\n        throw createDialogCancelError();\n    };\n    // tslint:disable-next-line:max-line-length\n    DialogService.prototype.composeAndShowDialog = function (compositionContext, dialogController) {\n        var _this = this;\n        if (!compositionContext.viewModel) {\n            // provide access to the dialog controller for view only dialogs\n            compositionContext.bindingContext = { controller: dialogController };\n        }\n        return this.compositionEngine.compose(compositionContext).then(function (controller) {\n            dialogController.controller = controller;\n            return dialogController.renderer.showDialog(dialogController).then(function () {\n                _this.controllers.push(dialogController);\n                _this.hasActiveDialog = _this.hasOpenDialog = !!_this.controllers.length;\n            }, function (reason) {\n                if (controller.viewModel) {\n                    invokeLifecycle(controller.viewModel, 'deactivate');\n                }\n                return Promise.reject(reason);\n            });\n        });\n    };\n    /**\n     * @internal\n     */\n    DialogService.prototype.createSettings = function (settings) {\n        settings = Object.assign({}, this.defaultSettings, settings);\n        if (typeof settings.keyboard !== 'boolean' && !settings.keyboard) {\n            settings.keyboard = !settings.lock;\n        }\n        if (typeof settings.overlayDismiss !== 'boolean') {\n            settings.overlayDismiss = !settings.lock;\n        }\n        Object.defineProperty(settings, 'rejectOnCancel', {\n            writable: false,\n            configurable: true,\n            enumerable: true\n        });\n        this.validateSettings(settings);\n        return settings;\n    };\n    DialogService.prototype.open = function (settings) {\n        var _this = this;\n        if (settings === void 0) { settings = {}; }\n        // tslint:enable:max-line-length\n        settings = this.createSettings(settings);\n        var childContainer = settings.childContainer || this.container.createChild();\n        var resolveCloseResult;\n        var rejectCloseResult;\n        var closeResult = new Promise(function (resolve, reject) {\n            resolveCloseResult = resolve;\n            rejectCloseResult = reject;\n        });\n        var dialogController = childContainer.invoke(DialogController, [settings, resolveCloseResult, rejectCloseResult]);\n        childContainer.registerInstance(DialogController, dialogController);\n        closeResult.then(function () {\n            removeController(_this, dialogController);\n        }, function () {\n            removeController(_this, dialogController);\n        });\n        var compositionContext = this.createCompositionContext(childContainer, dialogController.renderer.getDialogContainer(), dialogController.settings);\n        var openResult = this.ensureViewModel(compositionContext).then(function (compositionContext) {\n            if (!compositionContext.viewModel) {\n                return true;\n            }\n            return invokeLifecycle(compositionContext.viewModel, 'canActivate', dialogController.settings.model);\n        }).then(function (canActivate) {\n            if (!canActivate) {\n                return _this._cancelOperation(dialogController.settings.rejectOnCancel);\n            }\n            // if activation granted, compose and show\n            return _this.composeAndShowDialog(compositionContext, dialogController)\n                .then(function () { return ({ controller: dialogController, closeResult: closeResult, wasCancelled: false }); });\n        });\n        return asDialogOpenPromise(openResult);\n    };\n    /**\n     * Closes all open dialogs at the time of invocation.\n     * @return Promise<DialogController[]> All controllers whose close operation was cancelled.\n     */\n    DialogService.prototype.closeAll = function () {\n        return Promise.all(this.controllers.slice(0).map(function (controller) {\n            if (!controller.settings.rejectOnCancel) {\n                return controller.cancel().then(function (result) {\n                    if (result.wasCancelled) {\n                        return controller;\n                    }\n                    return null;\n                });\n            }\n            return controller.cancel().then(function () { return null; }).catch(function (reason) {\n                if (reason.wasCancelled) {\n                    return controller;\n                }\n                throw reason;\n            });\n        })).then(function (unclosedControllers) { return unclosedControllers.filter(function (unclosed) { return !!unclosed; }); });\n    };\n    /**\n     * @internal\n     */\n    // tslint:disable-next-line:member-ordering\n    DialogService.inject = [Container, CompositionEngine, DefaultDialogSettings];\n    return DialogService;\n}());\nexport { DialogService };\nfunction removeController(service, dialogController) {\n    var i = service.controllers.indexOf(dialogController);\n    if (i !== -1) {\n        service.controllers.splice(i, 1);\n        service.hasActiveDialog = service.hasOpenDialog = !!service.controllers.length;\n    }\n}\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});var aureliaEventAggregator=require(\"aurelia-event-aggregator\"),_global=\"undefined\"!=typeof self?self:\"undefined\"!=typeof global?global:new Function(\"return this\")();function trPreview(e){if(\"TR\"===e.tagName&&e.parentNode&&e.parentNode.parentNode&&\"TABLE\"===e.parentNode.parentNode.tagName){for(var t=e.cloneNode(!0),n=e.childElementCount,i=0;i<n-1;i++){var r=_global.getComputedStyle(e.children[i]);t.children[i].style.width=r.width,t.children[i].style.height=r.height}var s=e.parentNode,o=s.cloneNode();o.appendChild(t);var d=s.parentNode,a=d.cloneNode();a.appendChild(o);var l=_global.getComputedStyle(d);return a.style.width=l.width,a}}function liPreview(e){if(\"LI\"===e.tagName&&e.parentNode&&(\"UL\"===e.parentNode.tagName||\"OL\"===e.parentNode.tagName)){var t=e.cloneNode(!0),n=_global.getComputedStyle(e);t.style.width=n.width,t.style.height=n.height,t.style.flex=\"0 0 auto\";var i=e.parentNode.cloneNode();return i.appendChild(t),i.style.width=\"auto\",i.style.height=\"auto\",i.style.listStyleType=\"none\",i}}function unknownTagPreview(e){var t=_global.getComputedStyle(e);if(\"inline\"===t.display&&\"auto\"===t.width&&\"auto\"===t.height&&\"\"===e.style.width&&\"\"===e.style.height){for(var n=e.cloneNode(!0),i=e.childElementCount,r=0;r<i;r++){var s=_global.getComputedStyle(e.children[r]);n.children[r].style.width=s.width,n.children[r].style.height=s.height}return n}}function defaultPreview(e){var t=e.cloneNode(!0),n=_global.getComputedStyle(e);return t.style.width=n.width,t.style.height=n.height,t}var doc=_global.document,documentElement=doc&&doc.documentElement,css=\"\\n/* bcx-aurelia-dnd styles */\\n\\n/*\\nbcx-aurelia-dnd relies on html/body margin 0.\\nYour css stack should have done this.\\nAdded here as safe guard.\\n*/\\nhtml, body {\\n  margin: 0;\\n}\\n\\n.bcx-dnd-preview {\\n  position: absolute !important;\\n  margin: 0 !important;\\n  z-index: 9999 !important;\\n  opacity: 0.8;\\n  box-shadow: 0 0 16px gray;\\n}\\n\\n.bcx-dnd-preview .bcx-dnd-preview-hide {\\n  visibility: hidden !important;\\n}\\n\\n.bcx-dnd-hide {\\n  display: none !important;\\n}\\n\\n.bcx-dnd-hide-cursor .bcx-dnd-preview {\\n  cursor: none !important;\\n}\\n\\n.bcx-dnd-unselectable {\\n  -webkit-user-select: none !important;\\n  -moz-user-select: none !important;\\n  -ms-user-select: none !important;\\n  user-select: none !important;\\n}\\n\",_stylesInjected=!1;function injectStyles(){if(!_stylesInjected){_stylesInjected=!0;var e=doc.createElement(\"style\");e.innerHTML=css,e.type=\"text/css\",doc.head.childNodes.length>0?doc.head.insertBefore(e,doc.head.childNodes[0]):doc.head.appendChild(e)}}var classes=function(){var e={},t=\"(?:^|\\\\s)\",n=\"(?:\\\\s|$)\";function i(i){var r=e[i];return r?r.lastIndex=0:e[i]=r=new RegExp(t+i+n,\"g\"),r}return{add:function(e,t){var n=e.className;n.length?i(t).test(n)||(e.className+=\" \"+t):e.className=t},rm:function(e,t){e.className=e.className.replace(i(t),\" \").trim()}}}();function whichMouseButton(e){if(void 0!==e.touches)return e.touches.length;if(void 0!==e.which&&0!==e.which)return e.which;if(void 0!==e.buttons)return e.buttons;var t=e.button;return void 0!==t?1&t?1:2&t?3:4&t?2:0:void 0}function getPageRect(e){var t=e.getBoundingClientRect();return{x:t.left+getScroll(\"scrollLeft\",\"pageXOffset\"),y:t.top+getScroll(\"scrollTop\",\"pageYOffset\"),width:getRectWidth(t),height:getRectHeight(t)}}function getScroll(e,t){return void 0!==window[t]?window[t]:documentElement.clientHeight?documentElement[e]:doc.body[e]}function getElementBehindPreview(e,t,n){var i,r=e||{},s=r.className;return r.className+=\" bcx-dnd-hide\",i=doc.elementFromPoint(t,n),r.className=s,i}function getRectWidth(e){return e.width||e.right-e.left}function getRectHeight(e){return e.height||e.bottom-e.top}function getParent(e){return e.parentNode===doc?null:e.parentNode}function isInput(e){return\"INPUT\"===e.tagName||\"TEXTAREA\"===e.tagName||\"SELECT\"===e.tagName||isEditable(e)}function isEditable(e){return!!e&&(\"false\"!==e.contentEditable&&(\"true\"===e.contentEditable||isEditable(getParent(e))))}function getEventHost(e){return e.targetTouches&&e.targetTouches.length?e.targetTouches[0]:e.changedTouches&&e.changedTouches.length?e.changedTouches[0]:e}function getCoord(e,t){var n=getEventHost(t),i={pageX:\"clientX\",pageY:\"clientY\"};return e in i&&!(e in n)&&i[e]in n&&(e=i[e]),n[e]}var DndSource=function(e,t){if(void 0===t&&(t={}),!e)throw new Error(\"Missing delegate for dnd source.\");if(\"function\"!=typeof e.dndModel)throw new Error(\"Missing dndModel() method on dnd source delegate.\");if(this.delegate=e,t.element?this.element=t.element:this.element=e.dndElement,t.handler){if(!(t.handler instanceof _global.Element))throw new Error(\"specified handler is not a DOM element\");this.handler=t.handler}else this.handler=this.element;if(!(this.element instanceof _global.Element))throw new Error(\"Missing dndElement or options.element on dnd source delegate.\");t.noPreview&&(this.noPreview=!0),t.hideCursor&&(this.hideCursor=!0),t.centerPreviewToMousePosition&&(this.centerPreviewToMousePosition=!0)},DndTarget=function(e,t){if(void 0===t&&(t={}),!e)throw new Error(\"Missing delegate for dnd target.\");if(\"function\"!=typeof e.dndCanDrop)throw new Error(\"Missing dndCanDrop() method on delegate.\");if(\"function\"!=typeof e.dndDrop)throw new Error(\"Missing dndDrop() method on dnd target delegate.\");if(this.delegate=e,t.element?this.element=t.element:this.element=e.dndElement,!(this.element instanceof _global.Element))throw new Error(\"Missing dndElement or options.element on dnd target delegate.\");\"function\"==typeof e.dndHover&&(this.dndHover=e.dndHover.bind(e))};function indexOfElementOrDelegate(e,t){for(var n=t instanceof _global.Element?function(e){return e.element===t}:function(e){return e.delegate===t},i=e.length,r=0;r<i;r+=1)if(n(e[r]))return r;return-1}function indexOfHandler(e,t){for(var n=e.length,i=0;i<n;i+=1)if(e[i].handler===t)return i;return-1}var DndService=function(){function e(e){this.ea=e,this.dndSources=[],this.dndTargets=[],this.previewDrawers=[],injectStyles(),this.addPreviewDrawer(defaultPreview),this.addPreviewDrawer(unknownTagPreview),this.addPreviewDrawer(liPreview),this.addPreviewDrawer(trPreview),this._grab=this._grab.bind(this),this._release=this._release.bind(this),this._startBecauseMouseMoved=this._startBecauseMouseMoved.bind(this),this._preventGrabbed=this._preventGrabbed.bind(this),this._drag=this._drag.bind(this),documentElement.addEventListener(\"mousedown\",this._grab),documentElement.addEventListener(\"touchstart\",this._grab,{passive:!1}),documentElement.addEventListener(\"mouseup\",this._release)}var t=e.prototype;return t.addPreviewDrawer=function(e){this.previewDrawers.unshift(e)},t.addSource=function(e,t){this.dndSources.push(new DndSource(e,t))},t.removeSource=function(e){var t=indexOfElementOrDelegate(this.dndSources,e);t>=0&&this.dndSources.splice(t,1)},t.addTarget=function(e,t){e.dnd={};var n=new DndTarget(e,t);if(this.isProcessing){var i=n.delegate.dndCanDrop(this.model),r=n.delegate.dnd;r.canDrop=i,r.isProcessing=!0,r.model=this.model}this.dndTargets.push(n)},t.removeTarget=function(e){var t=indexOfElementOrDelegate(this.dndTargets,e);t>=0&&(this.dndTargets[t].delegate.dnd=null,this.dndTargets.splice(t,1))},t._sourceOf=function(e){var t=indexOfHandler(this.dndSources,e);return t>=0?this.dndSources[t]:void 0},t._startListeningEventualMovements=function(){documentElement.addEventListener(\"mousemove\",this._startBecauseMouseMoved),this._element&&this._element.addEventListener(\"touchmove\",this._startBecauseMouseMoved,{passive:!1}),this._element&&this._element.addEventListener(\"touchend\",this._release,{passive:!1})},t._stopListeningEventualMovements=function(){documentElement.removeEventListener(\"mousemove\",this._startBecauseMouseMoved),this._element&&this._element.removeEventListener(\"touchmove\",this._startBecauseMouseMoved,{passive:!1})},t._startListeningMovements=function(){documentElement.addEventListener(\"selectstart\",this._preventGrabbed),documentElement.addEventListener(\"click\",this._preventGrabbed),documentElement.addEventListener(\"mousemove\",this._drag),this._element&&this._element.addEventListener(\"touchmove\",this._drag,{passive:!1})},t._stopListeningMovements=function(){documentElement.removeEventListener(\"selectstart\",this._preventGrabbed),documentElement.removeEventListener(\"click\",this._preventGrabbed),documentElement.removeEventListener(\"mousemove\",this._drag),this._element&&this._element.removeEventListener(\"touchmove\",this._drag,{passive:!1}),this._element&&this._element.removeEventListener(\"touchend\",this._release,{passive:!1})},t._preventGrabbed=function(e){this._grabbed&&e.preventDefault()},t._grab=function(e){if(this._moveX=e.clientX,this._moveY=e.clientY,!(1!==whichMouseButton(e)||e.metaKey||e.ctrlKey)){var t=e.target;this._element=t;var n=this._startingSource(t);n&&(this._grabbed=n,this._startListeningEventualMovements(),\"mousedown\"===e.type&&isInput(t)?t.focus():e.preventDefault())}},t._ungrab=function(){this._grabbed=void 0,this._stopListeningEventualMovements(),this._stopListeningMovements(),this._element=void 0},t._release=function(e){if(this._ungrab(),this.isProcessing){this.ea&&this.ea.publish(\"dnd:willEnd\");var t=this._landingTargets(e).shallowTarget;t&&t.delegate.dndDrop(this._locationInfo(t.element,e)),this._cleanup(),this.ea&&this.ea.publish(\"dnd:didEnd\")}},t._startingSource=function(e){if(!this.isProcessing){for(var t=this._sourceOf(e);!t&&e&&(e=getParent(e));)t=this._sourceOf(e);return t}},t._startBecauseMouseMoved=function(e){if(this._grabbed)if(0!==whichMouseButton(e)){if(void 0===e.clientX||e.clientX!==this._moveX||void 0===e.clientY||e.clientY!==this._moveY){var t=getCoord(\"clientX\",e),n=getCoord(\"clientY\",e);if(!isInput(doc.elementFromPoint(t,n))){var i=this._grabbed;this._stopListeningEventualMovements(),this._startListeningMovements(),this.isProcessing&&this._cleanup(),this._start(i),this._sourceElementRect=getPageRect(this._sourceElement),this._offsetX=getCoord(\"pageX\",e)-this._sourceElementRect.x,this._offsetY=getCoord(\"pageY\",e)-this._sourceElementRect.y,this._renderPreviewImage(),this._drag(e)}}}else this._cleanup()},t._start=function(e){var t=this;this.ea&&this.ea.publish(\"dnd:willStart\"),this.isProcessing=!0,this.model=e.delegate.dndModel(),this._sourceElement=e.element,e.noPreview?this._noPreview=!0:e.delegate.dndPreview&&(this._sourcePreview=e.delegate.dndPreview(this.model)),this._noPreview||(e.hideCursor&&(this._hideCursor=!0),e.centerPreviewToMousePosition&&(this._centerPreviewToMousePosition=!0)),this.dndTargets.forEach(function(e){var n=e.delegate.dndCanDrop(t.model),i=e.delegate.dnd;i.canDrop=n,i.isProcessing=!0,i.model=t.model}),this.ea&&this.ea.publish(\"dnd:didStart\")},t._cleanup=function(){this._ungrab(),this._removePreviewImage(),this.isProcessing=void 0,this.model=void 0,this._sourceElement=void 0,this._noPreview=void 0,this._hideCursor=void 0,this._centerPreviewToMousePosition=void 0,this._sourcePreview=void 0,this._sourceElementRect=void 0,this._offsetX=0,this._offsetY=0,this.dndTargets.forEach(function(e){var t=e.delegate.dnd;t.canDrop=void 0,t.isProcessing=void 0,t.isHoveringShallowly=void 0,t.isHovering=void 0,t.model=void 0})},t._landingTargets=function(e){if(!this.isProcessing)return{shallowTarget:null,possibleTargets:[]};for(var t,n=getCoord(\"clientX\",e),i=getCoord(\"clientY\",e),r=this.dndTargets.filter(function(e){if(e.delegate.dnd.canDrop){var t=e.element.getBoundingClientRect();return t.left<=n&&t.right>=n&&t.top<=i&&t.bottom>=i}}),s=getElementBehindPreview(this._preview,n,i);!t&&s;){var o=indexOfElementOrDelegate(r,s);o>=0?t=r[o]:s=getParent(s)}if(t)r.splice(r.indexOf(t),1);else if(r.length>0){var d=r;t=d[0],r=d.slice(1)}return{shallowTarget:t,possibleTargets:r}},t._drag=function(e){var t=this;if(this.isProcessing){e.preventDefault(),this._updatePreviewLocation(e);var n=this._landingTargets(e),i=n.shallowTarget,r=n.possibleTargets;this.dndTargets.forEach(function(n){var s=n.delegate.dnd;s.isProcessing&&(n===i?(s.isHoveringShallowly=!0,s.isHovering=!0,n.dndHover&&n.dndHover(t._locationInfo(n.element,e))):r.indexOf(n)>=0?(s.isHoveringShallowly=!1,s.isHovering=!0,n.dndHover&&n.dndHover(t._locationInfo(n.element,e))):(s.isHoveringShallowly=!1,s.isHovering=!1))})}},t._updatePreviewLocation=function(e){if(this._preview){var t=getCoord(\"pageX\",e),n=getCoord(\"pageY\",e);if(this._centerPreviewToMousePosition){var i=this._preview.getBoundingClientRect(),r=getRectWidth(i),s=getRectHeight(i);this._preview.style.left=t-Math.floor(r/2)+\"px\",this._preview.style.top=n-Math.floor(s/2)+\"px\"}else this._preview.style.left=t-this._offsetX+\"px\",this._preview.style.top=n-this._offsetY+\"px\"}},t._locationInfo=function(e,t){var n,i={x:this._sourceElementRect.x+this._offsetX,y:this._sourceElementRect.y+this._offsetY},r=getCoord(\"pageX\",t),s=getCoord(\"pageY\",t),o={x:r,y:s},d=getPageRect(e);return n=this._preview?getPageRect(this._preview):{x:r-this._offsetX,y:s-this._offsetY,width:this._sourceElementRect.width,height:this._sourceElementRect.height},{mouseStartAt:i,mouseEndAt:o,sourceElementRect:this._sourceElementRect,targetElementRect:d,previewElementRect:n}},t._renderPreviewImage=function(){if(!this._preview&&!this._noPreview){var e=!!this._sourcePreview;if(e)this._preview=this._sourcePreview,this._sourcePreview=void 0;else{var t=this._sourceElement;if(!t)return;for(var n=0;n<this.previewDrawers.length&&(this._preview=this.previewDrawers[n](t),!this._preview);n++);if(!this._preview)return}classes.add(this._preview,\"bcx-dnd-preview\"),doc.body.appendChild(this._preview),classes.add(doc.body,\"bcx-dnd-unselectable\"),e||\"rgba(0, 0, 0, 0)\"!==_global.getComputedStyle(this._preview).backgroundColor||(this._preview.style.backgroundColor=\"white\"),this._hideCursor&&classes.add(doc.body,\"bcx-dnd-hide-cursor\")}},t._removePreviewImage=function(){this._preview&&(classes.rm(doc.body,\"bcx-dnd-unselectable\"),classes.rm(doc.body,\"bcx-dnd-hide-cursor\"),getParent(this._preview).removeChild(this._preview),this._preview=null)},e}();DndService.inject=[aureliaEventAggregator.EventAggregator],exports.DndService=DndService;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.ReorderableGroupMap = void 0;\n\nvar ReorderableGroupMap =\n/*#__PURE__*/\nfunction () {\n  function ReorderableGroupMap() {\n    this._map = new WeakMap();\n  }\n\n  var _proto = ReorderableGroupMap.prototype;\n\n  _proto.add = function add(repeater) {\n    var type = repeater.type,\n        repeaterId = repeater.repeaterId,\n        items = repeater.items;\n    if (type === repeaterId) return;\n\n    this._map.set(items, {\n      group: type,\n      repeaterId: repeaterId\n    });\n  };\n\n  _proto.remove = function remove(repeater) {\n    var type = repeater.type,\n        repeaterId = repeater.repeaterId,\n        items = repeater.items;\n    if (type === repeaterId) return;\n\n    this._map.delete(items);\n  };\n\n  _proto.get = function get(items) {\n    return this._map.get(items);\n  };\n\n  return ReorderableGroupMap;\n}();\n\nexports.ReorderableGroupMap = ReorderableGroupMap;","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { CatalogBase } from \"models/catalogs/catalog-base\";\nimport { CatalogChild } from \"models/catalogs/catalog-child\";\n\n\n@autoinject()\nexport class CatalogService {\n  private logger: Logger;\n\n  constructor(\n    private client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"CatalogService\");\n  }\n\n\n  public async getEconomicSectorAll(): Promise<CatalogBase[]> {\n    return await this.client.get(\"catalog/economicsector\")\n      .then((response: any) => {\n        return <CatalogBase[]>response;\n      });\n  }\n\n  public async getCountryAll(): Promise<CatalogBase[]> {\n    return await this.client.get(\"catalog/country\")\n      .then((response: any) => {\n        return <CatalogBase[]>response;\n      });\n  }\n  public async getRegionsByCountryId(parentId: number): Promise<CatalogChild[]> {\n    return await this.client.get(`catalog/region/${parentId}`)\n      .then((response: any) => {\n        return <CatalogChild[]>response;\n      });\n  }\n\n  public async getCitiesByRegionId(parentId: number): Promise<CatalogChild[]> {\n    return await this.client.get(`catalog/city/${parentId}`)\n      .then((response: any) => {\n        return <CatalogChild[]>response;\n      });\n  }\n\n  public async getCurrencyAll(): Promise<CatalogBase[]> {\n    return await this.client.get(\"catalog/currency\")\n      .then((response: any) => {\n        return <CatalogBase[]>response;\n      });\n  }\n\n  public async getProfessionAll(): Promise<CatalogBase[]> {\n    return await this.client.get(\"catalog/profession\")\n      .then((response: any) => {\n        return <CatalogBase[]>response;\n      });\n  }\n\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar globalExtraOptions = exports.globalExtraOptions = {\n  bootstrapVersion: 3\n};\n\nvar globalPickerOptions = exports.globalPickerOptions = {\n  tagClass: 'badge badge-info'\n};","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","module.exports = __webpack_public_path__ + \"6623e412e0267543b50a1af635c5ec41.png\";",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Initialization and round constants tables\n\t    var H = [];\n\t    var K = [];\n\n\t    // Compute constants\n\t    (function () {\n\t        function isPrime(n) {\n\t            var sqrtN = Math.sqrt(n);\n\t            for (var factor = 2; factor <= sqrtN; factor++) {\n\t                if (!(n % factor)) {\n\t                    return false;\n\t                }\n\t            }\n\n\t            return true;\n\t        }\n\n\t        function getFractionalBits(n) {\n\t            return ((n - (n | 0)) * 0x100000000) | 0;\n\t        }\n\n\t        var n = 2;\n\t        var nPrime = 0;\n\t        while (nPrime < 64) {\n\t            if (isPrime(n)) {\n\t                if (nPrime < 8) {\n\t                    H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t                }\n\t                K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t                nPrime++;\n\t            }\n\n\t            n++;\n\t        }\n\t    }());\n\n\t    // Reusable object\n\t    var W = [];\n\n\t    /**\n\t     * SHA-256 hash algorithm.\n\t     */\n\t    var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init(H.slice(0));\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var H = this._hash.words;\n\n\t            // Working variables\n\t            var a = H[0];\n\t            var b = H[1];\n\t            var c = H[2];\n\t            var d = H[3];\n\t            var e = H[4];\n\t            var f = H[5];\n\t            var g = H[6];\n\t            var h = H[7];\n\n\t            // Computation\n\t            for (var i = 0; i < 64; i++) {\n\t                if (i < 16) {\n\t                    W[i] = M[offset + i] | 0;\n\t                } else {\n\t                    var gamma0x = W[i - 15];\n\t                    var gamma0  = ((gamma0x << 25) | (gamma0x >>> 7))  ^\n\t                                  ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t                                   (gamma0x >>> 3);\n\n\t                    var gamma1x = W[i - 2];\n\t                    var gamma1  = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t                                  ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t                                   (gamma1x >>> 10);\n\n\t                    W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t                }\n\n\t                var ch  = (e & f) ^ (~e & g);\n\t                var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t                var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t                var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7)  | (e >>> 25));\n\n\t                var t1 = h + sigma1 + ch + K[i] + W[i];\n\t                var t2 = sigma0 + maj;\n\n\t                h = g;\n\t                g = f;\n\t                f = e;\n\t                e = (d + t1) | 0;\n\t                d = c;\n\t                c = b;\n\t                b = a;\n\t                a = (t1 + t2) | 0;\n\t            }\n\n\t            // Intermediate hash value\n\t            H[0] = (H[0] + a) | 0;\n\t            H[1] = (H[1] + b) | 0;\n\t            H[2] = (H[2] + c) | 0;\n\t            H[3] = (H[3] + d) | 0;\n\t            H[4] = (H[4] + e) | 0;\n\t            H[5] = (H[5] + f) | 0;\n\t            H[6] = (H[6] + g) | 0;\n\t            H[7] = (H[7] + h) | 0;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Return final computed hash\n\t            return this._hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA256('message');\n\t     *     var hash = CryptoJS.SHA256(wordArray);\n\t     */\n\t    C.SHA256 = Hasher._createHelper(SHA256);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA256(message, key);\n\t     */\n\t    C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_x64 = C.x64;\n\t    var X64Word = C_x64.Word;\n\t    var X64WordArray = C_x64.WordArray;\n\t    var C_algo = C.algo;\n\n\t    function X64Word_create() {\n\t        return X64Word.create.apply(X64Word, arguments);\n\t    }\n\n\t    // Constants\n\t    var K = [\n\t        X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t        X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t        X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t        X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t        X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t        X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t        X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t        X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t        X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t        X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t        X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t        X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t        X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t        X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t        X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t        X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t        X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t        X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t        X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t        X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t        X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t        X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t        X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t        X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t        X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t        X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t        X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t        X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t        X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t        X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t        X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t        X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t        X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t        X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t        X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t        X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t        X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t        X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t        X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t        X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t    ];\n\n\t    // Reusable objects\n\t    var W = [];\n\t    (function () {\n\t        for (var i = 0; i < 80; i++) {\n\t            W[i] = X64Word_create();\n\t        }\n\t    }());\n\n\t    /**\n\t     * SHA-512 hash algorithm.\n\t     */\n\t    var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new X64WordArray.init([\n\t                new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t                new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t                new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t                new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t            ]);\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcuts\n\t            var H = this._hash.words;\n\n\t            var H0 = H[0];\n\t            var H1 = H[1];\n\t            var H2 = H[2];\n\t            var H3 = H[3];\n\t            var H4 = H[4];\n\t            var H5 = H[5];\n\t            var H6 = H[6];\n\t            var H7 = H[7];\n\n\t            var H0h = H0.high;\n\t            var H0l = H0.low;\n\t            var H1h = H1.high;\n\t            var H1l = H1.low;\n\t            var H2h = H2.high;\n\t            var H2l = H2.low;\n\t            var H3h = H3.high;\n\t            var H3l = H3.low;\n\t            var H4h = H4.high;\n\t            var H4l = H4.low;\n\t            var H5h = H5.high;\n\t            var H5l = H5.low;\n\t            var H6h = H6.high;\n\t            var H6l = H6.low;\n\t            var H7h = H7.high;\n\t            var H7l = H7.low;\n\n\t            // Working variables\n\t            var ah = H0h;\n\t            var al = H0l;\n\t            var bh = H1h;\n\t            var bl = H1l;\n\t            var ch = H2h;\n\t            var cl = H2l;\n\t            var dh = H3h;\n\t            var dl = H3l;\n\t            var eh = H4h;\n\t            var el = H4l;\n\t            var fh = H5h;\n\t            var fl = H5l;\n\t            var gh = H6h;\n\t            var gl = H6l;\n\t            var hh = H7h;\n\t            var hl = H7l;\n\n\t            // Rounds\n\t            for (var i = 0; i < 80; i++) {\n\t                var Wil;\n\t                var Wih;\n\n\t                // Shortcut\n\t                var Wi = W[i];\n\n\t                // Extend message\n\t                if (i < 16) {\n\t                    Wih = Wi.high = M[offset + i * 2]     | 0;\n\t                    Wil = Wi.low  = M[offset + i * 2 + 1] | 0;\n\t                } else {\n\t                    // Gamma0\n\t                    var gamma0x  = W[i - 15];\n\t                    var gamma0xh = gamma0x.high;\n\t                    var gamma0xl = gamma0x.low;\n\t                    var gamma0h  = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t                    var gamma0l  = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t                    // Gamma1\n\t                    var gamma1x  = W[i - 2];\n\t                    var gamma1xh = gamma1x.high;\n\t                    var gamma1xl = gamma1x.low;\n\t                    var gamma1h  = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t                    var gamma1l  = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t                    // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t                    var Wi7  = W[i - 7];\n\t                    var Wi7h = Wi7.high;\n\t                    var Wi7l = Wi7.low;\n\n\t                    var Wi16  = W[i - 16];\n\t                    var Wi16h = Wi16.high;\n\t                    var Wi16l = Wi16.low;\n\n\t                    Wil = gamma0l + Wi7l;\n\t                    Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t                    Wil = Wil + gamma1l;\n\t                    Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t                    Wil = Wil + Wi16l;\n\t                    Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t                    Wi.high = Wih;\n\t                    Wi.low  = Wil;\n\t                }\n\n\t                var chh  = (eh & fh) ^ (~eh & gh);\n\t                var chl  = (el & fl) ^ (~el & gl);\n\t                var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t                var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t                var sigma0h = ((ah >>> 28) | (al << 4))  ^ ((ah << 30)  | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t                var sigma0l = ((al >>> 28) | (ah << 4))  ^ ((al << 30)  | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t                var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t                var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t                // t1 = h + sigma1 + ch + K[i] + W[i]\n\t                var Ki  = K[i];\n\t                var Kih = Ki.high;\n\t                var Kil = Ki.low;\n\n\t                var t1l = hl + sigma1l;\n\t                var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t                var t1l = t1l + chl;\n\t                var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t                var t1l = t1l + Kil;\n\t                var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t                var t1l = t1l + Wil;\n\t                var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t                // t2 = sigma0 + maj\n\t                var t2l = sigma0l + majl;\n\t                var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t                // Update working variables\n\t                hh = gh;\n\t                hl = gl;\n\t                gh = fh;\n\t                gl = fl;\n\t                fh = eh;\n\t                fl = el;\n\t                el = (dl + t1l) | 0;\n\t                eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t                dh = ch;\n\t                dl = cl;\n\t                ch = bh;\n\t                cl = bl;\n\t                bh = ah;\n\t                bl = al;\n\t                al = (t1l + t2l) | 0;\n\t                ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t            }\n\n\t            // Intermediate hash value\n\t            H0l = H0.low  = (H0l + al);\n\t            H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t            H1l = H1.low  = (H1l + bl);\n\t            H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t            H2l = H2.low  = (H2l + cl);\n\t            H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t            H3l = H3.low  = (H3l + dl);\n\t            H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t            H4l = H4.low  = (H4l + el);\n\t            H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t            H5l = H5.low  = (H5l + fl);\n\t            H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t            H6l = H6.low  = (H6l + gl);\n\t            H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t            H7l = H7.low  = (H7l + hl);\n\t            H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t            dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Convert hash to 32-bit word array before returning\n\t            var hash = this._hash.toX32();\n\n\t            // Return final computed hash\n\t            return hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        },\n\n\t        blockSize: 1024/32\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA512('message');\n\t     *     var hash = CryptoJS.SHA512(wordArray);\n\t     */\n\t    C.SHA512 = Hasher._createHelper(SHA512);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA512(message, key);\n\t     */\n\t    C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));","import { Aurelia } from 'aurelia-framework';\nimport { I18N, TCustomAttribute } from 'aurelia-i18n';\nimport * as XHR from 'i18next-xhr-backend';\nimport { ValidationMessageProvider } from 'aurelia-validation';\nimport { Expression } from 'aurelia-binding';\n\nimport { HttpClient } from 'aurelia-fetch-client';\n// import environment from './environment';\n\nconst i18nConfig = async (aurelia: Aurelia, instance: I18N, backendUrl: string, production?: boolean): Promise<any> => {\n\n  const setup = async (instance: I18N): Promise<any> => {\n    let aliases: Array<string> = [\"t\", \"i18n\"];\n    let namespaces: Array<string> = [\"translation\"];\n\n    // add aliases for 't' attribute\n    TCustomAttribute.configureAliases(aliases);\n\n    // register backend plugin\n    // instance.i18next.use(Backend.with(aurelia.loader));\n    instance.i18next.use(XHR);\n\n    // adapt options to your needs (see http://i18next.com/docs/options/)\n    // make sure to return the promise of the setup method, in order to guarantee proper loading\n    return instance.setup({\n      backend: { // <-- configure backend settings\n        // path where resources get loaded from, or a function\n        // returning a path:\n        // function(lngs, namespaces) { return customPath; }\n        // the returned path will interpolate lng, ns if provided like giving a static path\n        loadPath: '{{lng}}', // <-- XHR settings for where to get the files from\n        // parse data after it has been fetched\n        // in example use https://www.npmjs.com/package/json5\n        // here it removes the letter a from the json (bad idea)\n        parse: (data) => data,\n        // define a custom xhr function\n        // can be used to support XDomainRequest in IE 8 and 9\n        ajax: (culture, options, callback, data)  => {\n          try {\n            // let waitForLocale = require('bundle-loader!../locales/' + url + '.json');\n            // waitForLocale((locale) => {\n            //   callback(locale, {\n            //     status: '200'\n            //   });\n            // })\n        \n            let client = new HttpClient();\n            // configure client\n            client.configure(x => {\n              x.withBaseUrl(`${backendUrl}/api/v1/`);\n            });\n        \n            return client.fetch(`localization/get-resources/${culture}/1`, { method: 'GET' })\n              .then((response: Response) => {\n                return response.json()\n              })\n              .then((locale) => {\n                callback(locale, { status: '200' });\n              });\n            ;\n        \n          } catch (e) {\n            callback(null, {\n              status: '404'\n            });\n          }\n        }\n        \n      },\n      attributes: aliases,\n      ns: namespaces,\n      fallbackNS: namespaces,\n      defaultNS: 'translation',\n      lng: 'es-CO',\n      fallbackLng: 'es-CO',\n      debug: !production\n    });\n  };\n\n  //validation configuration for i18n\n  ValidationMessageProvider.prototype.getMessage = function (key: string): Expression {\n    const i18n: I18N = aurelia.container.get(I18N);\n    const translation: string = i18n.tr(`errorMessages.${key}`);\n    return this.parser.parse(translation);\n  };\n\n  ValidationMessageProvider.prototype.getDisplayName = function (propertyName: string, displayName: string): string {\n    const i18n: I18N = aurelia.container.get(I18N);\n    return i18n.tr(displayName);\n  };\n\n  return setup(instance);\n};\n\n\nexport default i18nConfig;\n","module.exports = require('./dist/commonjs/index.js').default;\n","import { UserManagerSettings, WebStorageStateStore, Log } from \"oidc-client\";\n\nconst openIdConfig = (authorityUrl: string, hostUrl: string) => {\n\n  const setup = {\n    logLevel: Log.INFO,\n    // loginRedirectRoute: \"/\",\n    // logoutRedirectRoute: \"/\",\n    // unauthorizedRedirectRoute: \"/login\",\n    \n      publicRoutes: ['manual-activation'],\n    \n    userManagerSettings: {\n      // The number of seconds in advance of access token expiry\n      // to raise the access token expiring event.\n      accessTokenExpiringNotificationTime: 300,\n      // Your own OpenID Provider or a certified authority\n      // from the official list http://openid.net/certification/\n      authority: `${authorityUrl}`,//environment.urls.backend,\n      automaticSilentRenew: true,\n\n      // interval in milliseconds to check the user's session\n      checkSessionInterval: 10000,\n      // The client or application ID that the authority issues.\n      client_id: \"tht-frontend\",\n      filterProtocolClaims: false,\n      loadUserInfo: false,\n\n      post_logout_redirect_uri: `${hostUrl}/signout-oidc`,\n      redirect_uri: `${hostUrl}/signin-oidc`,\n      response_type: \"code\",\n      // scope: \"openid email roles profile permissions company language timezone\",\n      scope: \"openid email basic_info permissions offline_access\",\n\n      silentRequestTimeout: 10000,\n      silent_redirect_uri: `${hostUrl}/signin-oidc`,\n      includeIdTokenInSilentRenew: true,\n\n      userStore: new WebStorageStateStore({\n        prefix: \"oidc\",\n        store: window.localStorage,\n      }),\n    } as UserManagerSettings,\n  };\n\n  return setup;\n}\n\nexport default openIdConfig;\n","\n// quill\nimport Quill from 'quill';\n// import { ImageDrop } from 'quill-image-drop-module';\n\n// Quill.register('modules/imageDrop', ImageDrop);\n\nconst quillOptions = {\n  // debug: 'info',\n  modules: {\n    toolbar: [\n      [{ 'font': [] }, { 'size': [] }],\n      ['bold', 'italic', 'underline', 'strike'],\n      [{ 'color': [] }, { 'background': [] }],\n      [{ 'script': 'super' }, { 'script': 'sub' }],\n      [{ 'header': '1' }, { 'header': '2' }, 'blockquote'],\n      [{ 'list': 'ordered' }, { 'list': 'bullet' }, { 'indent': '-1' }, { 'indent': '+1' }],\n      ['direction', { 'align': [] }],\n      ['link', 'image', 'video'],\n      ['clean']\n    ],\n    // imageDrop: true,\n  },\n  theme: 'snow'\n};\n\nexport default quillOptions;\n","import { State } from './store-model'\n\nexport const initialState: State = {\n  userBasicInfo: null,\n  companies: [],\n  currentCompany: null,\n  people: [],\n  currentPerson: null,\n}","!function t(e,r){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=r();else if(\"function\"==typeof define&&define.amd)define([],r);else{var n=r();for(var i in n)(\"object\"==typeof exports?exports:e)[i]=n[i]}}(this,(function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function e(){return t.default}:function e(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=22)}([function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}();var i={debug:function t(){},info:function t(){},warn:function t(){},error:function t(){}},o=void 0,s=void 0;(e.Log=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.reset=function t(){s=3,o=i},t.debug=function t(){if(s>=4){for(var e=arguments.length,r=Array(e),n=0;n<e;n++)r[n]=arguments[n];o.debug.apply(o,Array.from(r))}},t.info=function t(){if(s>=3){for(var e=arguments.length,r=Array(e),n=0;n<e;n++)r[n]=arguments[n];o.info.apply(o,Array.from(r))}},t.warn=function t(){if(s>=2){for(var e=arguments.length,r=Array(e),n=0;n<e;n++)r[n]=arguments[n];o.warn.apply(o,Array.from(r))}},t.error=function t(){if(s>=1){for(var e=arguments.length,r=Array(e),n=0;n<e;n++)r[n]=arguments[n];o.error.apply(o,Array.from(r))}},n(t,null,[{key:\"NONE\",get:function t(){return 0}},{key:\"ERROR\",get:function t(){return 1}},{key:\"WARN\",get:function t(){return 2}},{key:\"INFO\",get:function t(){return 3}},{key:\"DEBUG\",get:function t(){return 4}},{key:\"level\",get:function t(){return s},set:function t(e){if(!(0<=e&&e<=4))throw new Error(\"Invalid log level\");s=e}},{key:\"logger\",get:function t(){return o},set:function t(e){if(!e.debug&&e.info&&(e.debug=e.info),!(e.debug&&e.info&&e.warn&&e.error))throw new Error(\"Invalid logger\");o=e}}]),t}()).reset()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}();var i={setInterval:function(t){function e(e,r){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t,e){return setInterval(t,e)})),clearInterval:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t){return clearInterval(t)}))},o=!1,s=null;e.Global=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t._testing=function t(){o=!0},t.setXMLHttpRequest=function t(e){s=e},n(t,null,[{key:\"location\",get:function t(){if(!o)return location}},{key:\"localStorage\",get:function t(){if(!o&&\"undefined\"!=typeof window)return localStorage}},{key:\"sessionStorage\",get:function t(){if(!o&&\"undefined\"!=typeof window)return sessionStorage}},{key:\"XMLHttpRequest\",get:function t(){if(!o&&\"undefined\"!=typeof window)return s||XMLHttpRequest}},{key:\"timer\",get:function t(){if(!o)return i}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MetadataService=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=r(7);function s(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var a=\".well-known/openid-configuration\";e.MetadataService=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.JsonService;if(s(this,t),!e)throw i.Log.error(\"MetadataService: No settings passed to MetadataService\"),new Error(\"settings\");this._settings=e,this._jsonService=new r([\"application/jwk-set+json\"])}return t.prototype.resetSigningKeys=function t(){this._settings=this._settings||{},this._settings.signingKeys=void 0},t.prototype.getMetadata=function t(){var e=this;return this._settings.metadata?(i.Log.debug(\"MetadataService.getMetadata: Returning metadata from settings\"),Promise.resolve(this._settings.metadata)):this.metadataUrl?(i.Log.debug(\"MetadataService.getMetadata: getting metadata from\",this.metadataUrl),this._jsonService.getJson(this.metadataUrl).then((function(t){i.Log.debug(\"MetadataService.getMetadata: json received\");var r=e._settings.metadataSeed||{};return e._settings.metadata=Object.assign({},r,t),e._settings.metadata}))):(i.Log.error(\"MetadataService.getMetadata: No authority or metadataUrl configured on settings\"),Promise.reject(new Error(\"No authority or metadataUrl configured on settings\")))},t.prototype.getIssuer=function t(){return this._getMetadataProperty(\"issuer\")},t.prototype.getAuthorizationEndpoint=function t(){return this._getMetadataProperty(\"authorization_endpoint\")},t.prototype.getUserInfoEndpoint=function t(){return this._getMetadataProperty(\"userinfo_endpoint\")},t.prototype.getTokenEndpoint=function t(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._getMetadataProperty(\"token_endpoint\",e)},t.prototype.getCheckSessionIframe=function t(){return this._getMetadataProperty(\"check_session_iframe\",!0)},t.prototype.getEndSessionEndpoint=function t(){return this._getMetadataProperty(\"end_session_endpoint\",!0)},t.prototype.getRevocationEndpoint=function t(){return this._getMetadataProperty(\"revocation_endpoint\",!0)},t.prototype.getKeysEndpoint=function t(){return this._getMetadataProperty(\"jwks_uri\",!0)},t.prototype._getMetadataProperty=function t(e){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return i.Log.debug(\"MetadataService.getMetadataProperty for: \"+e),this.getMetadata().then((function(t){if(i.Log.debug(\"MetadataService.getMetadataProperty: metadata recieved\"),void 0===t[e]){if(!0===r)return void i.Log.warn(\"MetadataService.getMetadataProperty: Metadata does not contain optional property \"+e);throw i.Log.error(\"MetadataService.getMetadataProperty: Metadata does not contain property \"+e),new Error(\"Metadata does not contain property \"+e)}return t[e]}))},t.prototype.getSigningKeys=function t(){var e=this;return this._settings.signingKeys?(i.Log.debug(\"MetadataService.getSigningKeys: Returning signingKeys from settings\"),Promise.resolve(this._settings.signingKeys)):this._getMetadataProperty(\"jwks_uri\").then((function(t){return i.Log.debug(\"MetadataService.getSigningKeys: jwks_uri received\",t),e._jsonService.getJson(t).then((function(t){if(i.Log.debug(\"MetadataService.getSigningKeys: key set received\",t),!t.keys)throw i.Log.error(\"MetadataService.getSigningKeys: Missing keys on keyset\"),new Error(\"Missing keys on keyset\");return e._settings.signingKeys=t.keys,e._settings.signingKeys}))}))},n(t,[{key:\"metadataUrl\",get:function t(){return this._metadataUrl||(this._settings.metadataUrl?this._metadataUrl=this._settings.metadataUrl:(this._metadataUrl=this._settings.authority,this._metadataUrl&&this._metadataUrl.indexOf(a)<0&&(\"/\"!==this._metadataUrl[this._metadataUrl.length-1]&&(this._metadataUrl+=\"/\"),this._metadataUrl+=a))),this._metadataUrl}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UrlUtility=void 0;var n=r(0),i=r(1);e.UrlUtility=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.addQueryParam=function t(e,r,n){return e.indexOf(\"?\")<0&&(e+=\"?\"),\"?\"!==e[e.length-1]&&(e+=\"&\"),e+=encodeURIComponent(r),e+=\"=\",e+=encodeURIComponent(n)},t.parseUrlFragment=function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"#\",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.Global;\"string\"!=typeof e&&(e=o.location.href);var s=e.lastIndexOf(r);s>=0&&(e=e.substr(s+1)),\"?\"===r&&(s=e.indexOf(\"#\"))>=0&&(e=e.substr(0,s));for(var a,u={},c=/([^&=]+)=([^&]*)/g,h=0;a=c.exec(e);)if(u[decodeURIComponent(a[1])]=decodeURIComponent(a[2].replace(/\\+/g,\" \")),h++>50)return n.Log.error(\"UrlUtility.parseUrlFragment: response exceeded expected number of parameters\",e),{error:\"Response exceeded expected number of parameters\"};for(var l in u)return u;return{}},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.JoseUtil=void 0;var n=r(26),i=function o(t){return t&&t.__esModule?t:{default:t}}(r(33));e.JoseUtil=(0,i.default)({jws:n.jws,KeyUtil:n.KeyUtil,X509:n.X509,crypto:n.crypto,hextob64u:n.hextob64u,b64tohex:n.b64tohex,AllowedSigningAlgs:n.AllowedSigningAlgs})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.OidcClientSettings=void 0;var n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},i=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),o=r(0),s=r(23),a=r(6),u=r(24),c=r(2);function h(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var l=\".well-known/openid-configuration\",f=\"id_token\",g=\"openid\",d=\"client_secret_post\";e.OidcClientSettings=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.authority,i=e.metadataUrl,o=e.metadata,l=e.signingKeys,p=e.metadataSeed,v=e.client_id,y=e.client_secret,m=e.response_type,_=void 0===m?f:m,S=e.scope,b=void 0===S?g:S,w=e.redirect_uri,F=e.post_logout_redirect_uri,E=e.client_authentication,x=void 0===E?d:E,A=e.prompt,k=e.display,P=e.max_age,C=e.ui_locales,T=e.acr_values,R=e.resource,I=e.response_mode,D=e.filterProtocolClaims,L=void 0===D||D,N=e.loadUserInfo,U=void 0===N||N,B=e.staleStateAge,O=void 0===B?900:B,j=e.clockSkew,M=void 0===j?300:j,H=e.clockService,V=void 0===H?new s.ClockService:H,K=e.userInfoJwtIssuer,q=void 0===K?\"OP\":K,J=e.mergeClaims,W=void 0!==J&&J,z=e.stateStore,Y=void 0===z?new a.WebStorageStateStore:z,G=e.ResponseValidatorCtor,X=void 0===G?u.ResponseValidator:G,$=e.MetadataServiceCtor,Q=void 0===$?c.MetadataService:$,Z=e.extraQueryParams,tt=void 0===Z?{}:Z,et=e.extraTokenParams,rt=void 0===et?{}:et;h(this,t),this._authority=r,this._metadataUrl=i,this._metadata=o,this._metadataSeed=p,this._signingKeys=l,this._client_id=v,this._client_secret=y,this._response_type=_,this._scope=b,this._redirect_uri=w,this._post_logout_redirect_uri=F,this._client_authentication=x,this._prompt=A,this._display=k,this._max_age=P,this._ui_locales=C,this._acr_values=T,this._resource=R,this._response_mode=I,this._filterProtocolClaims=!!L,this._loadUserInfo=!!U,this._staleStateAge=O,this._clockSkew=M,this._clockService=V,this._userInfoJwtIssuer=q,this._mergeClaims=!!W,this._stateStore=Y,this._validator=new X(this),this._metadataService=new Q(this),this._extraQueryParams=\"object\"===(void 0===tt?\"undefined\":n(tt))?tt:{},this._extraTokenParams=\"object\"===(void 0===rt?\"undefined\":n(rt))?rt:{}}return t.prototype.getEpochTime=function t(){return this._clockService.getEpochTime()},i(t,[{key:\"client_id\",get:function t(){return this._client_id},set:function t(e){if(this._client_id)throw o.Log.error(\"OidcClientSettings.set_client_id: client_id has already been assigned.\"),new Error(\"client_id has already been assigned.\");this._client_id=e}},{key:\"client_secret\",get:function t(){return this._client_secret}},{key:\"response_type\",get:function t(){return this._response_type}},{key:\"scope\",get:function t(){return this._scope}},{key:\"redirect_uri\",get:function t(){return this._redirect_uri}},{key:\"post_logout_redirect_uri\",get:function t(){return this._post_logout_redirect_uri}},{key:\"client_authentication\",get:function t(){return this._client_authentication}},{key:\"prompt\",get:function t(){return this._prompt}},{key:\"display\",get:function t(){return this._display}},{key:\"max_age\",get:function t(){return this._max_age}},{key:\"ui_locales\",get:function t(){return this._ui_locales}},{key:\"acr_values\",get:function t(){return this._acr_values}},{key:\"resource\",get:function t(){return this._resource}},{key:\"response_mode\",get:function t(){return this._response_mode}},{key:\"authority\",get:function t(){return this._authority},set:function t(e){if(this._authority)throw o.Log.error(\"OidcClientSettings.set_authority: authority has already been assigned.\"),new Error(\"authority has already been assigned.\");this._authority=e}},{key:\"metadataUrl\",get:function t(){return this._metadataUrl||(this._metadataUrl=this.authority,this._metadataUrl&&this._metadataUrl.indexOf(l)<0&&(\"/\"!==this._metadataUrl[this._metadataUrl.length-1]&&(this._metadataUrl+=\"/\"),this._metadataUrl+=l)),this._metadataUrl}},{key:\"metadata\",get:function t(){return this._metadata},set:function t(e){this._metadata=e}},{key:\"metadataSeed\",get:function t(){return this._metadataSeed},set:function t(e){this._metadataSeed=e}},{key:\"signingKeys\",get:function t(){return this._signingKeys},set:function t(e){this._signingKeys=e}},{key:\"filterProtocolClaims\",get:function t(){return this._filterProtocolClaims}},{key:\"loadUserInfo\",get:function t(){return this._loadUserInfo}},{key:\"staleStateAge\",get:function t(){return this._staleStateAge}},{key:\"clockSkew\",get:function t(){return this._clockSkew}},{key:\"userInfoJwtIssuer\",get:function t(){return this._userInfoJwtIssuer}},{key:\"mergeClaims\",get:function t(){return this._mergeClaims}},{key:\"stateStore\",get:function t(){return this._stateStore}},{key:\"validator\",get:function t(){return this._validator}},{key:\"metadataService\",get:function t(){return this._metadataService}},{key:\"extraQueryParams\",get:function t(){return this._extraQueryParams},set:function t(e){\"object\"===(void 0===e?\"undefined\":n(e))?this._extraQueryParams=e:this._extraQueryParams={}}},{key:\"extraTokenParams\",get:function t(){return this._extraTokenParams},set:function t(e){\"object\"===(void 0===e?\"undefined\":n(e))?this._extraTokenParams=e:this._extraTokenParams={}}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.WebStorageStateStore=void 0;var n=r(0),i=r(1);function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.WebStorageStateStore=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.prefix,n=void 0===r?\"oidc.\":r,s=e.store,a=void 0===s?i.Global.localStorage:s;o(this,t),this._store=a,this._prefix=n}return t.prototype.set=function t(e,r){return n.Log.debug(\"WebStorageStateStore.set\",e),e=this._prefix+e,this._store.setItem(e,r),Promise.resolve()},t.prototype.get=function t(e){n.Log.debug(\"WebStorageStateStore.get\",e),e=this._prefix+e;var r=this._store.getItem(e);return Promise.resolve(r)},t.prototype.remove=function t(e){n.Log.debug(\"WebStorageStateStore.remove\",e),e=this._prefix+e;var r=this._store.getItem(e);return this._store.removeItem(e),Promise.resolve(r)},t.prototype.getAllKeys=function t(){n.Log.debug(\"WebStorageStateStore.getAllKeys\");for(var e=[],r=0;r<this._store.length;r++){var i=this._store.key(r);0===i.indexOf(this._prefix)&&e.push(i.substr(this._prefix.length))}return Promise.resolve(e)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.JsonService=void 0;var n=r(0),i=r(1);function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.JsonService=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i.Global.XMLHttpRequest,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;o(this,t),e&&Array.isArray(e)?this._contentTypes=e.slice():this._contentTypes=[],this._contentTypes.push(\"application/json\"),n&&this._contentTypes.push(\"application/jwt\"),this._XMLHttpRequest=r,this._jwtHandler=n}return t.prototype.getJson=function t(e,r){var i=this;if(!e)throw n.Log.error(\"JsonService.getJson: No url passed\"),new Error(\"url\");return n.Log.debug(\"JsonService.getJson, url: \",e),new Promise((function(t,o){var s=new i._XMLHttpRequest;s.open(\"GET\",e);var a=i._contentTypes,u=i._jwtHandler;s.onload=function(){if(n.Log.debug(\"JsonService.getJson: HTTP response received, status\",s.status),200===s.status){var r=s.getResponseHeader(\"Content-Type\");if(r){var i=a.find((function(t){if(r.startsWith(t))return!0}));if(\"application/jwt\"==i)return void u(s).then(t,o);if(i)try{return void t(JSON.parse(s.responseText))}catch(t){return n.Log.error(\"JsonService.getJson: Error parsing JSON response\",t.message),void o(t)}}o(Error(\"Invalid response Content-Type: \"+r+\", from URL: \"+e))}else o(Error(s.statusText+\" (\"+s.status+\")\"))},s.onerror=function(){n.Log.error(\"JsonService.getJson: network error\"),o(Error(\"Network Error\"))},r&&(n.Log.debug(\"JsonService.getJson: token passed, setting Authorization header\"),s.setRequestHeader(\"Authorization\",\"Bearer \"+r)),s.send()}))},t.prototype.postForm=function t(e,r,i){var o=this;if(!e)throw n.Log.error(\"JsonService.postForm: No url passed\"),new Error(\"url\");return n.Log.debug(\"JsonService.postForm, url: \",e),new Promise((function(t,s){var a=new o._XMLHttpRequest;a.open(\"POST\",e);var u=o._contentTypes;a.onload=function(){if(n.Log.debug(\"JsonService.postForm: HTTP response received, status\",a.status),200!==a.status){if(400===a.status)if(i=a.getResponseHeader(\"Content-Type\"))if(u.find((function(t){if(i.startsWith(t))return!0})))try{var r=JSON.parse(a.responseText);if(r&&r.error)return n.Log.error(\"JsonService.postForm: Error from server: \",r.error),void s(new Error(r.error))}catch(t){return n.Log.error(\"JsonService.postForm: Error parsing JSON response\",t.message),void s(t)}s(Error(a.statusText+\" (\"+a.status+\")\"))}else{var i;if((i=a.getResponseHeader(\"Content-Type\"))&&u.find((function(t){if(i.startsWith(t))return!0})))try{return void t(JSON.parse(a.responseText))}catch(t){return n.Log.error(\"JsonService.postForm: Error parsing JSON response\",t.message),void s(t)}s(Error(\"Invalid response Content-Type: \"+i+\", from URL: \"+e))}},a.onerror=function(){n.Log.error(\"JsonService.postForm: network error\"),s(Error(\"Network Error\"))};var c=\"\";for(var h in r){var l=r[h];l&&(c.length>0&&(c+=\"&\"),c+=encodeURIComponent(h),c+=\"=\",c+=encodeURIComponent(l))}a.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\"),void 0!==i&&a.setRequestHeader(\"Authorization\",\"Basic \"+btoa(i)),a.send(c)}))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SigninRequest=void 0;var n=r(0),i=r(3),o=r(13);e.SigninRequest=function(){function t(e){var r=e.url,s=e.client_id,a=e.redirect_uri,u=e.response_type,c=e.scope,h=e.authority,l=e.data,f=e.prompt,g=e.display,d=e.max_age,p=e.ui_locales,v=e.id_token_hint,y=e.login_hint,m=e.acr_values,_=e.resource,S=e.response_mode,b=e.request,w=e.request_uri,F=e.extraQueryParams,E=e.request_type,x=e.client_secret,A=e.extraTokenParams,k=e.skipUserInfo;if(function P(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),!r)throw n.Log.error(\"SigninRequest.ctor: No url passed\"),new Error(\"url\");if(!s)throw n.Log.error(\"SigninRequest.ctor: No client_id passed\"),new Error(\"client_id\");if(!a)throw n.Log.error(\"SigninRequest.ctor: No redirect_uri passed\"),new Error(\"redirect_uri\");if(!u)throw n.Log.error(\"SigninRequest.ctor: No response_type passed\"),new Error(\"response_type\");if(!c)throw n.Log.error(\"SigninRequest.ctor: No scope passed\"),new Error(\"scope\");if(!h)throw n.Log.error(\"SigninRequest.ctor: No authority passed\"),new Error(\"authority\");var C=t.isOidc(u),T=t.isCode(u);S||(S=t.isCode(u)?\"query\":null),this.state=new o.SigninState({nonce:C,data:l,client_id:s,authority:h,redirect_uri:a,code_verifier:T,request_type:E,response_mode:S,client_secret:x,scope:c,extraTokenParams:A,skipUserInfo:k}),r=i.UrlUtility.addQueryParam(r,\"client_id\",s),r=i.UrlUtility.addQueryParam(r,\"redirect_uri\",a),r=i.UrlUtility.addQueryParam(r,\"response_type\",u),r=i.UrlUtility.addQueryParam(r,\"scope\",c),r=i.UrlUtility.addQueryParam(r,\"state\",this.state.id),C&&(r=i.UrlUtility.addQueryParam(r,\"nonce\",this.state.nonce)),T&&(r=i.UrlUtility.addQueryParam(r,\"code_challenge\",this.state.code_challenge),r=i.UrlUtility.addQueryParam(r,\"code_challenge_method\",\"S256\"));var R={prompt:f,display:g,max_age:d,ui_locales:p,id_token_hint:v,login_hint:y,acr_values:m,resource:_,request:b,request_uri:w,response_mode:S};for(var I in R)R[I]&&(r=i.UrlUtility.addQueryParam(r,I,R[I]));for(var D in F)r=i.UrlUtility.addQueryParam(r,D,F[D]);this.url=r}return t.isOidc=function t(e){return!!e.split(/\\s+/g).filter((function(t){return\"id_token\"===t}))[0]},t.isOAuth=function t(e){return!!e.split(/\\s+/g).filter((function(t){return\"token\"===t}))[0]},t.isCode=function t(e){return!!e.split(/\\s+/g).filter((function(t){return\"code\"===t}))[0]},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.State=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=function s(t){return t&&t.__esModule?t:{default:t}}(r(14));function a(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.State=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.id,n=e.data,i=e.created,s=e.request_type;a(this,t),this._id=r||(0,o.default)(),this._data=n,this._created=\"number\"==typeof i&&i>0?i:parseInt(Date.now()/1e3),this._request_type=s}return t.prototype.toStorageString=function t(){return i.Log.debug(\"State.toStorageString\"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type})},t.fromStorageString=function e(r){return i.Log.debug(\"State.fromStorageString\"),new t(JSON.parse(r))},t.clearStaleState=function e(r,n){var o=Date.now()/1e3-n;return r.getAllKeys().then((function(e){i.Log.debug(\"State.clearStaleState: got keys\",e);for(var n=[],s=function s(a){var c=e[a];u=r.get(c).then((function(e){var n=!1;if(e)try{var s=t.fromStorageString(e);i.Log.debug(\"State.clearStaleState: got item from key: \",c,s.created),s.created<=o&&(n=!0)}catch(t){i.Log.error(\"State.clearStaleState: Error parsing state for key\",c,t.message),n=!0}else i.Log.debug(\"State.clearStaleState: no item in storage for key: \",c),n=!0;if(n)return i.Log.debug(\"State.clearStaleState: removed item for key: \",c),r.remove(c)})),n.push(u)},a=0;a<e.length;a++){var u;s(a)}return i.Log.debug(\"State.clearStaleState: waiting on promise count:\",n.length),Promise.all(n)}))},n(t,[{key:\"id\",get:function t(){return this._id}},{key:\"data\",get:function t(){return this._data}},{key:\"created\",get:function t(){return this._created}},{key:\"request_type\",get:function t(){return this._request_type}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.OidcClient=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=r(5),s=r(12),a=r(8),u=r(34),c=r(35),h=r(36),l=r(13),f=r(9);function g(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.OidcClient=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};g(this,t),e instanceof o.OidcClientSettings?this._settings=e:this._settings=new o.OidcClientSettings(e)}return t.prototype.createSigninRequest=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=r.response_type,o=r.scope,s=r.redirect_uri,u=r.data,c=r.state,h=r.prompt,l=r.display,f=r.max_age,g=r.ui_locales,d=r.id_token_hint,p=r.login_hint,v=r.acr_values,y=r.resource,m=r.request,_=r.request_uri,S=r.response_mode,b=r.extraQueryParams,w=r.extraTokenParams,F=r.request_type,E=r.skipUserInfo,x=arguments[1];i.Log.debug(\"OidcClient.createSigninRequest\");var A=this._settings.client_id;n=n||this._settings.response_type,o=o||this._settings.scope,s=s||this._settings.redirect_uri,h=h||this._settings.prompt,l=l||this._settings.display,f=f||this._settings.max_age,g=g||this._settings.ui_locales,v=v||this._settings.acr_values,y=y||this._settings.resource,S=S||this._settings.response_mode,b=b||this._settings.extraQueryParams,w=w||this._settings.extraTokenParams;var k=this._settings.authority;return a.SigninRequest.isCode(n)&&\"code\"!==n?Promise.reject(new Error(\"OpenID Connect hybrid flow is not supported\")):this._metadataService.getAuthorizationEndpoint().then((function(t){i.Log.debug(\"OidcClient.createSigninRequest: Received authorization endpoint\",t);var r=new a.SigninRequest({url:t,client_id:A,redirect_uri:s,response_type:n,scope:o,data:u||c,authority:k,prompt:h,display:l,max_age:f,ui_locales:g,id_token_hint:d,login_hint:p,acr_values:v,resource:y,request:m,request_uri:_,extraQueryParams:b,extraTokenParams:w,request_type:F,response_mode:S,client_secret:e._settings.client_secret,skipUserInfo:E}),P=r.state;return(x=x||e._stateStore).set(P.id,P.toStorageString()).then((function(){return r}))}))},t.prototype.readSigninResponseState=function t(e,r){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];i.Log.debug(\"OidcClient.readSigninResponseState\");var o=\"query\"===this._settings.response_mode||!this._settings.response_mode&&a.SigninRequest.isCode(this._settings.response_type),s=o?\"?\":\"#\",c=new u.SigninResponse(e,s);if(!c.state)return i.Log.error(\"OidcClient.readSigninResponseState: No state in response\"),Promise.reject(new Error(\"No state in response\"));r=r||this._stateStore;var h=n?r.remove.bind(r):r.get.bind(r);return h(c.state).then((function(t){if(!t)throw i.Log.error(\"OidcClient.readSigninResponseState: No matching state found in storage\"),new Error(\"No matching state found in storage\");return{state:l.SigninState.fromStorageString(t),response:c}}))},t.prototype.processSigninResponse=function t(e,r){var n=this;return i.Log.debug(\"OidcClient.processSigninResponse\"),this.readSigninResponseState(e,r,!0).then((function(t){var e=t.state,r=t.response;return i.Log.debug(\"OidcClient.processSigninResponse: Received state from storage; validating response\"),n._validator.validateSigninResponse(e,r)}))},t.prototype.createSignoutRequest=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=r.id_token_hint,o=r.data,s=r.state,a=r.post_logout_redirect_uri,u=r.extraQueryParams,h=r.request_type,l=arguments[1];return i.Log.debug(\"OidcClient.createSignoutRequest\"),a=a||this._settings.post_logout_redirect_uri,u=u||this._settings.extraQueryParams,this._metadataService.getEndSessionEndpoint().then((function(t){if(!t)throw i.Log.error(\"OidcClient.createSignoutRequest: No end session endpoint url returned\"),new Error(\"no end session endpoint\");i.Log.debug(\"OidcClient.createSignoutRequest: Received end session endpoint\",t);var r=new c.SignoutRequest({url:t,id_token_hint:n,post_logout_redirect_uri:a,data:o||s,extraQueryParams:u,request_type:h}),f=r.state;return f&&(i.Log.debug(\"OidcClient.createSignoutRequest: Signout request has state to persist\"),(l=l||e._stateStore).set(f.id,f.toStorageString())),r}))},t.prototype.readSignoutResponseState=function t(e,r){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];i.Log.debug(\"OidcClient.readSignoutResponseState\");var o=new h.SignoutResponse(e);if(!o.state)return i.Log.debug(\"OidcClient.readSignoutResponseState: No state in response\"),o.error?(i.Log.warn(\"OidcClient.readSignoutResponseState: Response was error: \",o.error),Promise.reject(new s.ErrorResponse(o))):Promise.resolve({state:void 0,response:o});var a=o.state;r=r||this._stateStore;var u=n?r.remove.bind(r):r.get.bind(r);return u(a).then((function(t){if(!t)throw i.Log.error(\"OidcClient.readSignoutResponseState: No matching state found in storage\"),new Error(\"No matching state found in storage\");return{state:f.State.fromStorageString(t),response:o}}))},t.prototype.processSignoutResponse=function t(e,r){var n=this;return i.Log.debug(\"OidcClient.processSignoutResponse\"),this.readSignoutResponseState(e,r,!0).then((function(t){var e=t.state,r=t.response;return e?(i.Log.debug(\"OidcClient.processSignoutResponse: Received state from storage; validating response\"),n._validator.validateSignoutResponse(e,r)):(i.Log.debug(\"OidcClient.processSignoutResponse: No state from storage; skipping validating response\"),r)}))},t.prototype.clearStaleState=function t(e){return i.Log.debug(\"OidcClient.clearStaleState\"),e=e||this._stateStore,f.State.clearStaleState(e,this.settings.staleStateAge)},n(t,[{key:\"_stateStore\",get:function t(){return this.settings.stateStore}},{key:\"_validator\",get:function t(){return this.settings.validator}},{key:\"_metadataService\",get:function t(){return this.settings.metadataService}},{key:\"settings\",get:function t(){return this._settings}},{key:\"metadataService\",get:function t(){return this._metadataService}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TokenClient=void 0;var n=r(7),i=r(2),o=r(0);function s(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.TokenClient=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.JsonService,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.MetadataService;if(s(this,t),!e)throw o.Log.error(\"TokenClient.ctor: No settings passed\"),new Error(\"settings\");this._settings=e,this._jsonService=new r,this._metadataService=new a(this._settings)}return t.prototype.exchangeCode=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(r=Object.assign({},r)).grant_type=r.grant_type||\"authorization_code\",r.client_id=r.client_id||this._settings.client_id,r.client_secret=r.client_secret||this._settings.client_secret,r.redirect_uri=r.redirect_uri||this._settings.redirect_uri;var n=void 0,i=r._client_authentication||this._settings._client_authentication;return delete r._client_authentication,r.code?r.redirect_uri?r.code_verifier?r.client_id?r.client_secret||\"client_secret_basic\"!=i?(\"client_secret_basic\"==i&&(n=r.client_id+\":\"+r.client_secret,delete r.client_id,delete r.client_secret),this._metadataService.getTokenEndpoint(!1).then((function(t){return o.Log.debug(\"TokenClient.exchangeCode: Received token endpoint\"),e._jsonService.postForm(t,r,n).then((function(t){return o.Log.debug(\"TokenClient.exchangeCode: response received\"),t}))}))):(o.Log.error(\"TokenClient.exchangeCode: No client_secret passed\"),Promise.reject(new Error(\"A client_secret is required\"))):(o.Log.error(\"TokenClient.exchangeCode: No client_id passed\"),Promise.reject(new Error(\"A client_id is required\"))):(o.Log.error(\"TokenClient.exchangeCode: No code_verifier passed\"),Promise.reject(new Error(\"A code_verifier is required\"))):(o.Log.error(\"TokenClient.exchangeCode: No redirect_uri passed\"),Promise.reject(new Error(\"A redirect_uri is required\"))):(o.Log.error(\"TokenClient.exchangeCode: No code passed\"),Promise.reject(new Error(\"A code is required\")))},t.prototype.exchangeRefreshToken=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(r=Object.assign({},r)).grant_type=r.grant_type||\"refresh_token\",r.client_id=r.client_id||this._settings.client_id,r.client_secret=r.client_secret||this._settings.client_secret;var n=void 0,i=r._client_authentication||this._settings._client_authentication;return delete r._client_authentication,r.refresh_token?r.client_id?(\"client_secret_basic\"==i&&(n=r.client_id+\":\"+r.client_secret,delete r.client_id,delete r.client_secret),this._metadataService.getTokenEndpoint(!1).then((function(t){return o.Log.debug(\"TokenClient.exchangeRefreshToken: Received token endpoint\"),e._jsonService.postForm(t,r,n).then((function(t){return o.Log.debug(\"TokenClient.exchangeRefreshToken: response received\"),t}))}))):(o.Log.error(\"TokenClient.exchangeRefreshToken: No client_id passed\"),Promise.reject(new Error(\"A client_id is required\"))):(o.Log.error(\"TokenClient.exchangeRefreshToken: No refresh_token passed\"),Promise.reject(new Error(\"A refresh_token is required\")))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ErrorResponse=void 0;var n=r(0);function i(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}e.ErrorResponse=function(t){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=r.error,a=r.error_description,u=r.error_uri,c=r.state,h=r.session_state;if(i(this,e),!s)throw n.Log.error(\"No error passed to ErrorResponse\"),new Error(\"error\");var l=o(this,t.call(this,a||s));return l.name=\"ErrorResponse\",l.error=s,l.error_description=a,l.error_uri=u,l.state=c,l.session_state=h,l}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e}(Error)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SigninState=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=r(9),s=r(4),a=function u(t){return t&&t.__esModule?t:{default:t}}(r(14));function c(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function h(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}e.SigninState=function(t){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=r.nonce,i=r.authority,o=r.client_id,u=r.redirect_uri,l=r.code_verifier,f=r.response_mode,g=r.client_secret,d=r.scope,p=r.extraTokenParams,v=r.skipUserInfo;c(this,e);var y=h(this,t.call(this,arguments[0]));if(!0===n?y._nonce=(0,a.default)():n&&(y._nonce=n),!0===l?y._code_verifier=(0,a.default)()+(0,a.default)()+(0,a.default)():l&&(y._code_verifier=l),y.code_verifier){var m=s.JoseUtil.hashString(y.code_verifier,\"SHA256\");y._code_challenge=s.JoseUtil.hexToBase64Url(m)}return y._redirect_uri=u,y._authority=i,y._client_id=o,y._response_mode=f,y._client_secret=g,y._scope=d,y._extraTokenParams=p,y._skipUserInfo=v,y}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.toStorageString=function t(){return i.Log.debug(\"SigninState.toStorageString\"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type,nonce:this.nonce,code_verifier:this.code_verifier,redirect_uri:this.redirect_uri,authority:this.authority,client_id:this.client_id,response_mode:this.response_mode,client_secret:this.client_secret,scope:this.scope,extraTokenParams:this.extraTokenParams,skipUserInfo:this.skipUserInfo})},e.fromStorageString=function t(r){return i.Log.debug(\"SigninState.fromStorageString\"),new e(JSON.parse(r))},n(e,[{key:\"nonce\",get:function t(){return this._nonce}},{key:\"authority\",get:function t(){return this._authority}},{key:\"client_id\",get:function t(){return this._client_id}},{key:\"redirect_uri\",get:function t(){return this._redirect_uri}},{key:\"code_verifier\",get:function t(){return this._code_verifier}},{key:\"code_challenge\",get:function t(){return this._code_challenge}},{key:\"response_mode\",get:function t(){return this._response_mode}},{key:\"client_secret\",get:function t(){return this._client_secret}},{key:\"scope\",get:function t(){return this._scope}},{key:\"extraTokenParams\",get:function t(){return this._extraTokenParams}},{key:\"skipUserInfo\",get:function t(){return this._skipUserInfo}}]),e}(o.State)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=function n(){return(\"undefined\"!=i&&null!==i&&void 0!==i.getRandomValues?o:s)().replace(/-/g,\"\")};var i=\"undefined\"!=typeof window?window.crypto||window.msCrypto:null;function o(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^i.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)}))}function s(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^16*Math.random()>>t/4).toString(16)}))}t.exports=e.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.User=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0);e.User=function(){function t(e){var r=e.id_token,n=e.session_state,i=e.access_token,o=e.refresh_token,s=e.token_type,a=e.scope,u=e.profile,c=e.expires_at,h=e.state;!function l(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.id_token=r,this.session_state=n,this.access_token=i,this.refresh_token=o,this.token_type=s,this.scope=a,this.profile=u,this.expires_at=c,this.state=h}return t.prototype.toStorageString=function t(){return i.Log.debug(\"User.toStorageString\"),JSON.stringify({id_token:this.id_token,session_state:this.session_state,access_token:this.access_token,refresh_token:this.refresh_token,token_type:this.token_type,scope:this.scope,profile:this.profile,expires_at:this.expires_at})},t.fromStorageString=function e(r){return i.Log.debug(\"User.fromStorageString\"),new t(JSON.parse(r))},n(t,[{key:\"expires_in\",get:function t(){if(this.expires_at){var e=parseInt(Date.now()/1e3);return this.expires_at-e}},set:function t(e){var r=parseInt(e);if(\"number\"==typeof r&&r>0){var n=parseInt(Date.now()/1e3);this.expires_at=n+r}}},{key:\"expired\",get:function t(){var e=this.expires_in;if(void 0!==e)return e<=0}},{key:\"scopes\",get:function t(){return(this.scope||\"\").split(\" \")}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AccessTokenEvents=void 0;var n=r(0),i=r(46);function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.AccessTokenEvents=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.accessTokenExpiringNotificationTime,n=void 0===r?60:r,s=e.accessTokenExpiringTimer,a=void 0===s?new i.Timer(\"Access token expiring\"):s,u=e.accessTokenExpiredTimer,c=void 0===u?new i.Timer(\"Access token expired\"):u;o(this,t),this._accessTokenExpiringNotificationTime=n,this._accessTokenExpiring=a,this._accessTokenExpired=c}return t.prototype.load=function t(e){if(e.access_token&&void 0!==e.expires_in){var r=e.expires_in;if(n.Log.debug(\"AccessTokenEvents.load: access token present, remaining duration:\",r),r>0){var i=r-this._accessTokenExpiringNotificationTime;i<=0&&(i=1),n.Log.debug(\"AccessTokenEvents.load: registering expiring timer in:\",i),this._accessTokenExpiring.init(i)}else n.Log.debug(\"AccessTokenEvents.load: canceling existing expiring timer becase we're past expiration.\"),this._accessTokenExpiring.cancel();var o=r+1;n.Log.debug(\"AccessTokenEvents.load: registering expired timer in:\",o),this._accessTokenExpired.init(o)}else this._accessTokenExpiring.cancel(),this._accessTokenExpired.cancel()},t.prototype.unload=function t(){n.Log.debug(\"AccessTokenEvents.unload: canceling existing access token timers\"),this._accessTokenExpiring.cancel(),this._accessTokenExpired.cancel()},t.prototype.addAccessTokenExpiring=function t(e){this._accessTokenExpiring.addHandler(e)},t.prototype.removeAccessTokenExpiring=function t(e){this._accessTokenExpiring.removeHandler(e)},t.prototype.addAccessTokenExpired=function t(e){this._accessTokenExpired.addHandler(e)},t.prototype.removeAccessTokenExpired=function t(e){this._accessTokenExpired.removeHandler(e)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Event=void 0;var n=r(0);e.Event=function(){function t(e){!function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._name=e,this._callbacks=[]}return t.prototype.addHandler=function t(e){this._callbacks.push(e)},t.prototype.removeHandler=function t(e){var r=this._callbacks.findIndex((function(t){return t===e}));r>=0&&this._callbacks.splice(r,1)},t.prototype.raise=function t(){n.Log.debug(\"Event: Raising event: \"+this._name);for(var e=0;e<this._callbacks.length;e++){var r;(r=this._callbacks)[e].apply(r,arguments)}},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SessionMonitor=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=r(19),s=r(1);function a(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.SessionMonitor=function(){function t(e){var r=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.CheckSessionIFrame,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:s.Global.timer;if(a(this,t),!e)throw i.Log.error(\"SessionMonitor.ctor: No user manager passed to SessionMonitor\"),new Error(\"userManager\");this._userManager=e,this._CheckSessionIFrameCtor=n,this._timer=u,this._userManager.events.addUserLoaded(this._start.bind(this)),this._userManager.events.addUserUnloaded(this._stop.bind(this)),Promise.resolve(this._userManager.getUser().then((function(t){t?r._start(t):r._settings.monitorAnonymousSession&&r._userManager.querySessionStatus().then((function(t){var e={session_state:t.session_state};t.sub&&t.sid&&(e.profile={sub:t.sub,sid:t.sid}),r._start(e)})).catch((function(t){i.Log.error(\"SessionMonitor ctor: error from querySessionStatus:\",t.message)}))})).catch((function(t){i.Log.error(\"SessionMonitor ctor: error from getUser:\",t.message)})))}return t.prototype._start=function t(e){var r=this,n=e.session_state;n&&(e.profile?(this._sub=e.profile.sub,this._sid=e.profile.sid,i.Log.debug(\"SessionMonitor._start: session_state:\",n,\", sub:\",this._sub)):(this._sub=void 0,this._sid=void 0,i.Log.debug(\"SessionMonitor._start: session_state:\",n,\", anonymous user\")),this._checkSessionIFrame?this._checkSessionIFrame.start(n):this._metadataService.getCheckSessionIframe().then((function(t){if(t){i.Log.debug(\"SessionMonitor._start: Initializing check session iframe\");var e=r._client_id,o=r._checkSessionInterval,s=r._stopCheckSessionOnError;r._checkSessionIFrame=new r._CheckSessionIFrameCtor(r._callback.bind(r),e,t,o,s),r._checkSessionIFrame.load().then((function(){r._checkSessionIFrame.start(n)}))}else i.Log.warn(\"SessionMonitor._start: No check session iframe found in the metadata\")})).catch((function(t){i.Log.error(\"SessionMonitor._start: Error from getCheckSessionIframe:\",t.message)})))},t.prototype._stop=function t(){var e=this;if(this._sub=void 0,this._sid=void 0,this._checkSessionIFrame&&(i.Log.debug(\"SessionMonitor._stop\"),this._checkSessionIFrame.stop()),this._settings.monitorAnonymousSession)var r=this._timer.setInterval((function(){e._timer.clearInterval(r),e._userManager.querySessionStatus().then((function(t){var r={session_state:t.session_state};t.sub&&t.sid&&(r.profile={sub:t.sub,sid:t.sid}),e._start(r)})).catch((function(t){i.Log.error(\"SessionMonitor: error from querySessionStatus:\",t.message)}))}),1e3)},t.prototype._callback=function t(){var e=this;this._userManager.querySessionStatus().then((function(t){var r=!0;t?t.sub===e._sub?(r=!1,e._checkSessionIFrame.start(t.session_state),t.sid===e._sid?i.Log.debug(\"SessionMonitor._callback: Same sub still logged in at OP, restarting check session iframe; session_state:\",t.session_state):(i.Log.debug(\"SessionMonitor._callback: Same sub still logged in at OP, session state has changed, restarting check session iframe; session_state:\",t.session_state),e._userManager.events._raiseUserSessionChanged())):i.Log.debug(\"SessionMonitor._callback: Different subject signed into OP:\",t.sub):i.Log.debug(\"SessionMonitor._callback: Subject no longer signed into OP\"),r&&(e._sub?(i.Log.debug(\"SessionMonitor._callback: SessionMonitor._callback; raising signed out event\"),e._userManager.events._raiseUserSignedOut()):(i.Log.debug(\"SessionMonitor._callback: SessionMonitor._callback; raising signed in event\"),e._userManager.events._raiseUserSignedIn()))})).catch((function(t){e._sub&&(i.Log.debug(\"SessionMonitor._callback: Error calling queryCurrentSigninSession; raising signed out event\",t.message),e._userManager.events._raiseUserSignedOut())}))},n(t,[{key:\"_settings\",get:function t(){return this._userManager.settings}},{key:\"_metadataService\",get:function t(){return this._userManager.metadataService}},{key:\"_client_id\",get:function t(){return this._settings.client_id}},{key:\"_checkSessionInterval\",get:function t(){return this._settings.checkSessionInterval}},{key:\"_stopCheckSessionOnError\",get:function t(){return this._settings.stopCheckSessionOnError}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CheckSessionIFrame=void 0;var n=r(0);function i(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.CheckSessionIFrame=function(){function t(e,r,n,o){var s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];i(this,t),this._callback=e,this._client_id=r,this._url=n,this._interval=o||2e3,this._stopOnError=s;var a=n.indexOf(\"/\",n.indexOf(\"//\")+2);this._frame_origin=n.substr(0,a),this._frame=window.document.createElement(\"iframe\"),this._frame.style.visibility=\"hidden\",this._frame.style.position=\"absolute\",this._frame.style.display=\"none\",this._frame.width=0,this._frame.height=0,this._frame.src=n}return t.prototype.load=function t(){var e=this;return new Promise((function(t){e._frame.onload=function(){t()},window.document.body.appendChild(e._frame),e._boundMessageEvent=e._message.bind(e),window.addEventListener(\"message\",e._boundMessageEvent,!1)}))},t.prototype._message=function t(e){e.origin===this._frame_origin&&e.source===this._frame.contentWindow&&(\"error\"===e.data?(n.Log.error(\"CheckSessionIFrame: error message from check session op iframe\"),this._stopOnError&&this.stop()):\"changed\"===e.data?(n.Log.debug(\"CheckSessionIFrame: changed message from check session op iframe\"),this.stop(),this._callback()):n.Log.debug(\"CheckSessionIFrame: \"+e.data+\" message from check session op iframe\"))},t.prototype.start=function t(e){var r=this;if(this._session_state!==e){n.Log.debug(\"CheckSessionIFrame.start\"),this.stop(),this._session_state=e;var i=function t(){r._frame.contentWindow.postMessage(r._client_id+\" \"+r._session_state,r._frame_origin)};i(),this._timer=window.setInterval(i,this._interval)}},t.prototype.stop=function t(){this._session_state=null,this._timer&&(n.Log.debug(\"CheckSessionIFrame.stop\"),window.clearInterval(this._timer),this._timer=null)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TokenRevocationClient=void 0;var n=r(0),i=r(2),o=r(1);function s(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var a=\"access_token\",u=\"refresh_token\";e.TokenRevocationClient=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.Global.XMLHttpRequest,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.MetadataService;if(s(this,t),!e)throw n.Log.error(\"TokenRevocationClient.ctor: No settings provided\"),new Error(\"No settings provided.\");this._settings=e,this._XMLHttpRequestCtor=r,this._metadataService=new a(this._settings)}return t.prototype.revoke=function t(e,r){var i=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"access_token\";if(!e)throw n.Log.error(\"TokenRevocationClient.revoke: No token provided\"),new Error(\"No token provided.\");if(o!==a&&o!=u)throw n.Log.error(\"TokenRevocationClient.revoke: Invalid token type\"),new Error(\"Invalid token type.\");return this._metadataService.getRevocationEndpoint().then((function(t){if(t){n.Log.debug(\"TokenRevocationClient.revoke: Revoking \"+o);var s=i._settings.client_id,a=i._settings.client_secret;return i._revoke(t,s,a,e,o)}if(r)throw n.Log.error(\"TokenRevocationClient.revoke: Revocation not supported\"),new Error(\"Revocation not supported\")}))},t.prototype._revoke=function t(e,r,i,o,s){var a=this;return new Promise((function(t,u){var c=new a._XMLHttpRequestCtor;c.open(\"POST\",e),c.onload=function(){n.Log.debug(\"TokenRevocationClient.revoke: HTTP response received, status\",c.status),200===c.status?t():u(Error(c.statusText+\" (\"+c.status+\")\"))},c.onerror=function(){n.Log.debug(\"TokenRevocationClient.revoke: Network Error.\"),u(\"Network Error\")};var h=\"client_id=\"+encodeURIComponent(r);i&&(h+=\"&client_secret=\"+encodeURIComponent(i)),h+=\"&token_type_hint=\"+encodeURIComponent(s),h+=\"&token=\"+encodeURIComponent(o),c.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\"),c.send(h)}))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CordovaPopupWindow=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0);e.CordovaPopupWindow=function(){function t(e){var r=this;!function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._promise=new Promise((function(t,e){r._resolve=t,r._reject=e})),this.features=e.popupWindowFeatures||\"location=no,toolbar=no,zoom=no\",this.target=e.popupWindowTarget||\"_blank\",this.redirect_uri=e.startUrl,i.Log.debug(\"CordovaPopupWindow.ctor: redirect_uri: \"+this.redirect_uri)}return t.prototype._isInAppBrowserInstalled=function t(e){return[\"cordova-plugin-inappbrowser\",\"cordova-plugin-inappbrowser.inappbrowser\",\"org.apache.cordova.inappbrowser\"].some((function(t){return e.hasOwnProperty(t)}))},t.prototype.navigate=function t(e){if(e&&e.url){if(!window.cordova)return this._error(\"cordova is undefined\");var r=window.cordova.require(\"cordova/plugin_list\").metadata;if(!1===this._isInAppBrowserInstalled(r))return this._error(\"InAppBrowser plugin not found\");this._popup=cordova.InAppBrowser.open(e.url,this.target,this.features),this._popup?(i.Log.debug(\"CordovaPopupWindow.navigate: popup successfully created\"),this._exitCallbackEvent=this._exitCallback.bind(this),this._loadStartCallbackEvent=this._loadStartCallback.bind(this),this._popup.addEventListener(\"exit\",this._exitCallbackEvent,!1),this._popup.addEventListener(\"loadstart\",this._loadStartCallbackEvent,!1)):this._error(\"Error opening popup window\")}else this._error(\"No url provided\");return this.promise},t.prototype._loadStartCallback=function t(e){0===e.url.indexOf(this.redirect_uri)&&this._success({url:e.url})},t.prototype._exitCallback=function t(e){this._error(e)},t.prototype._success=function t(e){this._cleanup(),i.Log.debug(\"CordovaPopupWindow: Successful response from cordova popup window\"),this._resolve(e)},t.prototype._error=function t(e){this._cleanup(),i.Log.error(e),this._reject(new Error(e))},t.prototype.close=function t(){this._cleanup()},t.prototype._cleanup=function t(){this._popup&&(i.Log.debug(\"CordovaPopupWindow: cleaning up popup\"),this._popup.removeEventListener(\"exit\",this._exitCallbackEvent,!1),this._popup.removeEventListener(\"loadstart\",this._loadStartCallbackEvent,!1),this._popup.close()),this._popup=null},n(t,[{key:\"promise\",get:function t(){return this._promise}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(0),i=r(10),o=r(5),s=r(6),a=r(37),u=r(38),c=r(16),h=r(2),l=r(48),f=r(49),g=r(19),d=r(20),p=r(18),v=r(1),y=r(15),m=r(50);e.default={Version:m.Version,Log:n.Log,OidcClient:i.OidcClient,OidcClientSettings:o.OidcClientSettings,WebStorageStateStore:s.WebStorageStateStore,InMemoryWebStorage:a.InMemoryWebStorage,UserManager:u.UserManager,AccessTokenEvents:c.AccessTokenEvents,MetadataService:h.MetadataService,CordovaPopupNavigator:l.CordovaPopupNavigator,CordovaIFrameNavigator:f.CordovaIFrameNavigator,CheckSessionIFrame:g.CheckSessionIFrame,TokenRevocationClient:d.TokenRevocationClient,SessionMonitor:p.SessionMonitor,Global:v.Global,User:y.User},t.exports=e.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});e.ClockService=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.prototype.getEpochTime=function t(){return Promise.resolve(Date.now()/1e3|0)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ResponseValidator=void 0;var n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},i=r(0),o=r(2),s=r(25),a=r(11),u=r(12),c=r(4);function h(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var l=[\"nonce\",\"at_hash\",\"iat\",\"nbf\",\"exp\",\"aud\",\"iss\",\"c_hash\"];e.ResponseValidator=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.MetadataService,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:s.UserInfoService,u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:c.JoseUtil,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:a.TokenClient;if(h(this,t),!e)throw i.Log.error(\"ResponseValidator.ctor: No settings passed to ResponseValidator\"),new Error(\"settings\");this._settings=e,this._metadataService=new r(this._settings),this._userInfoService=new n(this._settings),this._joseUtil=u,this._tokenClient=new l(this._settings)}return t.prototype.validateSigninResponse=function t(e,r){var n=this;return i.Log.debug(\"ResponseValidator.validateSigninResponse\"),this._processSigninParams(e,r).then((function(t){return i.Log.debug(\"ResponseValidator.validateSigninResponse: state processed\"),n._validateTokens(e,t).then((function(t){return i.Log.debug(\"ResponseValidator.validateSigninResponse: tokens validated\"),n._processClaims(e,t).then((function(t){return i.Log.debug(\"ResponseValidator.validateSigninResponse: claims processed\"),t}))}))}))},t.prototype.validateSignoutResponse=function t(e,r){return e.id!==r.state?(i.Log.error(\"ResponseValidator.validateSignoutResponse: State does not match\"),Promise.reject(new Error(\"State does not match\"))):(i.Log.debug(\"ResponseValidator.validateSignoutResponse: state validated\"),r.state=e.data,r.error?(i.Log.warn(\"ResponseValidator.validateSignoutResponse: Response was error\",r.error),Promise.reject(new u.ErrorResponse(r))):Promise.resolve(r))},t.prototype._processSigninParams=function t(e,r){if(e.id!==r.state)return i.Log.error(\"ResponseValidator._processSigninParams: State does not match\"),Promise.reject(new Error(\"State does not match\"));if(!e.client_id)return i.Log.error(\"ResponseValidator._processSigninParams: No client_id on state\"),Promise.reject(new Error(\"No client_id on state\"));if(!e.authority)return i.Log.error(\"ResponseValidator._processSigninParams: No authority on state\"),Promise.reject(new Error(\"No authority on state\"));if(this._settings.authority){if(this._settings.authority&&this._settings.authority!==e.authority)return i.Log.error(\"ResponseValidator._processSigninParams: authority mismatch on settings vs. signin state\"),Promise.reject(new Error(\"authority mismatch on settings vs. signin state\"))}else this._settings.authority=e.authority;if(this._settings.client_id){if(this._settings.client_id&&this._settings.client_id!==e.client_id)return i.Log.error(\"ResponseValidator._processSigninParams: client_id mismatch on settings vs. signin state\"),Promise.reject(new Error(\"client_id mismatch on settings vs. signin state\"))}else this._settings.client_id=e.client_id;return i.Log.debug(\"ResponseValidator._processSigninParams: state validated\"),r.state=e.data,r.error?(i.Log.warn(\"ResponseValidator._processSigninParams: Response was error\",r.error),Promise.reject(new u.ErrorResponse(r))):e.nonce&&!r.id_token?(i.Log.error(\"ResponseValidator._processSigninParams: Expecting id_token in response\"),Promise.reject(new Error(\"No id_token in response\"))):!e.nonce&&r.id_token?(i.Log.error(\"ResponseValidator._processSigninParams: Not expecting id_token in response\"),Promise.reject(new Error(\"Unexpected id_token in response\"))):e.code_verifier&&!r.code?(i.Log.error(\"ResponseValidator._processSigninParams: Expecting code in response\"),Promise.reject(new Error(\"No code in response\"))):!e.code_verifier&&r.code?(i.Log.error(\"ResponseValidator._processSigninParams: Not expecting code in response\"),Promise.reject(new Error(\"Unexpected code in response\"))):(r.scope||(r.scope=e.scope),Promise.resolve(r))},t.prototype._processClaims=function t(e,r){var n=this;if(r.isOpenIdConnect){if(i.Log.debug(\"ResponseValidator._processClaims: response is OIDC, processing claims\"),r.profile=this._filterProtocolClaims(r.profile),!0!==e.skipUserInfo&&this._settings.loadUserInfo&&r.access_token)return i.Log.debug(\"ResponseValidator._processClaims: loading user info\"),this._userInfoService.getClaims(r.access_token).then((function(t){return i.Log.debug(\"ResponseValidator._processClaims: user info claims received from user info endpoint\"),t.sub!==r.profile.sub?(i.Log.error(\"ResponseValidator._processClaims: sub from user info endpoint does not match sub in id_token\"),Promise.reject(new Error(\"sub from user info endpoint does not match sub in id_token\"))):(r.profile=n._mergeClaims(r.profile,t),i.Log.debug(\"ResponseValidator._processClaims: user info claims received, updated profile:\",r.profile),r)}));i.Log.debug(\"ResponseValidator._processClaims: not loading user info\")}else i.Log.debug(\"ResponseValidator._processClaims: response is not OIDC, not processing claims\");return Promise.resolve(r)},t.prototype._mergeClaims=function t(e,r){var i=Object.assign({},e);for(var o in r){var s=r[o];Array.isArray(s)||(s=[s]);for(var a=0;a<s.length;a++){var u=s[a];i[o]?Array.isArray(i[o])?i[o].indexOf(u)<0&&i[o].push(u):i[o]!==u&&(\"object\"===(void 0===u?\"undefined\":n(u))&&this._settings.mergeClaims?i[o]=this._mergeClaims(i[o],u):i[o]=[i[o],u]):i[o]=u}}return i},t.prototype._filterProtocolClaims=function t(e){i.Log.debug(\"ResponseValidator._filterProtocolClaims, incoming claims:\",e);var r=Object.assign({},e);return this._settings._filterProtocolClaims?(l.forEach((function(t){delete r[t]})),i.Log.debug(\"ResponseValidator._filterProtocolClaims: protocol claims filtered\",r)):i.Log.debug(\"ResponseValidator._filterProtocolClaims: protocol claims not filtered\"),r},t.prototype._validateTokens=function t(e,r){return r.code?(i.Log.debug(\"ResponseValidator._validateTokens: Validating code\"),this._processCode(e,r)):r.id_token?r.access_token?(i.Log.debug(\"ResponseValidator._validateTokens: Validating id_token and access_token\"),this._validateIdTokenAndAccessToken(e,r)):(i.Log.debug(\"ResponseValidator._validateTokens: Validating id_token\"),this._validateIdToken(e,r)):(i.Log.debug(\"ResponseValidator._validateTokens: No code to process or id_token to validate\"),Promise.resolve(r))},t.prototype._processCode=function t(e,r){var o=this,s={client_id:e.client_id,client_secret:e.client_secret,code:r.code,redirect_uri:e.redirect_uri,code_verifier:e.code_verifier};return e.extraTokenParams&&\"object\"===n(e.extraTokenParams)&&Object.assign(s,e.extraTokenParams),this._tokenClient.exchangeCode(s).then((function(t){for(var n in t)r[n]=t[n];return r.id_token?(i.Log.debug(\"ResponseValidator._processCode: token response successful, processing id_token\"),o._validateIdTokenAttributes(e,r)):(i.Log.debug(\"ResponseValidator._processCode: token response successful, returning response\"),r)}))},t.prototype._validateIdTokenAttributes=function t(e,r){var n=this;return this._metadataService.getIssuer().then((function(t){var o=e.client_id,s=n._settings.clockSkew;return i.Log.debug(\"ResponseValidator._validateIdTokenAttributes: Validaing JWT attributes; using clock skew (in seconds) of: \",s),n._settings.getEpochTime().then((function(a){return n._joseUtil.validateJwtAttributes(r.id_token,t,o,s,a).then((function(t){return e.nonce&&e.nonce!==t.nonce?(i.Log.error(\"ResponseValidator._validateIdTokenAttributes: Invalid nonce in id_token\"),Promise.reject(new Error(\"Invalid nonce in id_token\"))):t.sub?(r.profile=t,r):(i.Log.error(\"ResponseValidator._validateIdTokenAttributes: No sub present in id_token\"),Promise.reject(new Error(\"No sub present in id_token\")))}))}))}))},t.prototype._validateIdTokenAndAccessToken=function t(e,r){var n=this;return this._validateIdToken(e,r).then((function(t){return n._validateAccessToken(t)}))},t.prototype._getSigningKeyForJwt=function t(e){var r=this;return this._metadataService.getSigningKeys().then((function(t){var n=e.header.kid;if(!t)return i.Log.error(\"ResponseValidator._validateIdToken: No signing keys from metadata\"),Promise.reject(new Error(\"No signing keys from metadata\"));i.Log.debug(\"ResponseValidator._validateIdToken: Received signing keys\");var o=void 0;if(n)o=t.filter((function(t){return t.kid===n}))[0];else{if((t=r._filterByAlg(t,e.header.alg)).length>1)return i.Log.error(\"ResponseValidator._validateIdToken: No kid found in id_token and more than one key found in metadata\"),Promise.reject(new Error(\"No kid found in id_token and more than one key found in metadata\"));o=t[0]}return Promise.resolve(o)}))},t.prototype._getSigningKeyForJwtWithSingleRetry=function t(e){var r=this;return this._getSigningKeyForJwt(e).then((function(t){return t?Promise.resolve(t):(r._metadataService.resetSigningKeys(),r._getSigningKeyForJwt(e))}))},t.prototype._validateIdToken=function t(e,r){var n=this;if(!e.nonce)return i.Log.error(\"ResponseValidator._validateIdToken: No nonce on state\"),Promise.reject(new Error(\"No nonce on state\"));var o=this._joseUtil.parseJwt(r.id_token);return o&&o.header&&o.payload?e.nonce!==o.payload.nonce?(i.Log.error(\"ResponseValidator._validateIdToken: Invalid nonce in id_token\"),Promise.reject(new Error(\"Invalid nonce in id_token\"))):this._metadataService.getIssuer().then((function(t){return i.Log.debug(\"ResponseValidator._validateIdToken: Received issuer\"),n._getSigningKeyForJwtWithSingleRetry(o).then((function(s){if(!s)return i.Log.error(\"ResponseValidator._validateIdToken: No key matching kid or alg found in signing keys\"),Promise.reject(new Error(\"No key matching kid or alg found in signing keys\"));var a=e.client_id,u=n._settings.clockSkew;return i.Log.debug(\"ResponseValidator._validateIdToken: Validaing JWT; using clock skew (in seconds) of: \",u),n._joseUtil.validateJwt(r.id_token,s,t,a,u).then((function(){return i.Log.debug(\"ResponseValidator._validateIdToken: JWT validation successful\"),o.payload.sub?(r.profile=o.payload,r):(i.Log.error(\"ResponseValidator._validateIdToken: No sub present in id_token\"),Promise.reject(new Error(\"No sub present in id_token\")))}))}))})):(i.Log.error(\"ResponseValidator._validateIdToken: Failed to parse id_token\",o),Promise.reject(new Error(\"Failed to parse id_token\")))},t.prototype._filterByAlg=function t(e,r){var n=null;if(r.startsWith(\"RS\"))n=\"RSA\";else if(r.startsWith(\"PS\"))n=\"PS\";else{if(!r.startsWith(\"ES\"))return i.Log.debug(\"ResponseValidator._filterByAlg: alg not supported: \",r),[];n=\"EC\"}return i.Log.debug(\"ResponseValidator._filterByAlg: Looking for keys that match kty: \",n),e=e.filter((function(t){return t.kty===n})),i.Log.debug(\"ResponseValidator._filterByAlg: Number of keys that match kty: \",n,e.length),e},t.prototype._validateAccessToken=function t(e){if(!e.profile)return i.Log.error(\"ResponseValidator._validateAccessToken: No profile loaded from id_token\"),Promise.reject(new Error(\"No profile loaded from id_token\"));if(!e.profile.at_hash)return i.Log.error(\"ResponseValidator._validateAccessToken: No at_hash in id_token\"),Promise.reject(new Error(\"No at_hash in id_token\"));if(!e.id_token)return i.Log.error(\"ResponseValidator._validateAccessToken: No id_token\"),Promise.reject(new Error(\"No id_token\"));var r=this._joseUtil.parseJwt(e.id_token);if(!r||!r.header)return i.Log.error(\"ResponseValidator._validateAccessToken: Failed to parse id_token\",r),Promise.reject(new Error(\"Failed to parse id_token\"));var n=r.header.alg;if(!n||5!==n.length)return i.Log.error(\"ResponseValidator._validateAccessToken: Unsupported alg:\",n),Promise.reject(new Error(\"Unsupported alg: \"+n));var o=n.substr(2,3);if(!o)return i.Log.error(\"ResponseValidator._validateAccessToken: Unsupported alg:\",n,o),Promise.reject(new Error(\"Unsupported alg: \"+n));if(256!==(o=parseInt(o))&&384!==o&&512!==o)return i.Log.error(\"ResponseValidator._validateAccessToken: Unsupported alg:\",n,o),Promise.reject(new Error(\"Unsupported alg: \"+n));var s=\"sha\"+o,a=this._joseUtil.hashString(e.access_token,s);if(!a)return i.Log.error(\"ResponseValidator._validateAccessToken: access_token hash failed:\",s),Promise.reject(new Error(\"Failed to validate at_hash\"));var u=a.substr(0,a.length/2),c=this._joseUtil.hexToBase64Url(u);return c!==e.profile.at_hash?(i.Log.error(\"ResponseValidator._validateAccessToken: Failed to validate at_hash\",c,e.profile.at_hash),Promise.reject(new Error(\"Failed to validate at_hash\"))):(i.Log.debug(\"ResponseValidator._validateAccessToken: success\"),Promise.resolve(e))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UserInfoService=void 0;var n=r(7),i=r(2),o=r(0),s=r(4);function a(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.UserInfoService=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.JsonService,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.MetadataService,c=arguments.length>3&&void 0!==arguments[3]?arguments[3]:s.JoseUtil;if(a(this,t),!e)throw o.Log.error(\"UserInfoService.ctor: No settings passed\"),new Error(\"settings\");this._settings=e,this._jsonService=new r(void 0,void 0,this._getClaimsFromJwt.bind(this)),this._metadataService=new u(this._settings),this._joseUtil=c}return t.prototype.getClaims=function t(e){var r=this;return e?this._metadataService.getUserInfoEndpoint().then((function(t){return o.Log.debug(\"UserInfoService.getClaims: received userinfo url\",t),r._jsonService.getJson(t,e).then((function(t){return o.Log.debug(\"UserInfoService.getClaims: claims received\",t),t}))})):(o.Log.error(\"UserInfoService.getClaims: No token passed\"),Promise.reject(new Error(\"A token is required\")))},t.prototype._getClaimsFromJwt=function t(e){var r=this;try{var n=this._joseUtil.parseJwt(e.responseText);if(!n||!n.header||!n.payload)return o.Log.error(\"UserInfoService._getClaimsFromJwt: Failed to parse JWT\",n),Promise.reject(new Error(\"Failed to parse id_token\"));var i=n.header.kid,s=void 0;switch(this._settings.userInfoJwtIssuer){case\"OP\":s=this._metadataService.getIssuer();break;case\"ANY\":s=Promise.resolve(n.payload.iss);break;default:s=Promise.resolve(this._settings.userInfoJwtIssuer)}return s.then((function(t){return o.Log.debug(\"UserInfoService._getClaimsFromJwt: Received issuer:\"+t),r._metadataService.getSigningKeys().then((function(s){if(!s)return o.Log.error(\"UserInfoService._getClaimsFromJwt: No signing keys from metadata\"),Promise.reject(new Error(\"No signing keys from metadata\"));o.Log.debug(\"UserInfoService._getClaimsFromJwt: Received signing keys\");var a=void 0;if(i)a=s.filter((function(t){return t.kid===i}))[0];else{if((s=r._filterByAlg(s,n.header.alg)).length>1)return o.Log.error(\"UserInfoService._getClaimsFromJwt: No kid found in id_token and more than one key found in metadata\"),Promise.reject(new Error(\"No kid found in id_token and more than one key found in metadata\"));a=s[0]}if(!a)return o.Log.error(\"UserInfoService._getClaimsFromJwt: No key matching kid or alg found in signing keys\"),Promise.reject(new Error(\"No key matching kid or alg found in signing keys\"));var u=r._settings.client_id,c=r._settings.clockSkew;return o.Log.debug(\"UserInfoService._getClaimsFromJwt: Validaing JWT; using clock skew (in seconds) of: \",c),r._joseUtil.validateJwt(e.responseText,a,t,u,c,void 0,!0).then((function(){return o.Log.debug(\"UserInfoService._getClaimsFromJwt: JWT validation successful\"),n.payload}))}))}))}catch(t){return o.Log.error(\"UserInfoService._getClaimsFromJwt: Error parsing JWT response\",t.message),void reject(t)}},t.prototype._filterByAlg=function t(e,r){var n=null;if(r.startsWith(\"RS\"))n=\"RSA\";else if(r.startsWith(\"PS\"))n=\"PS\";else{if(!r.startsWith(\"ES\"))return o.Log.debug(\"UserInfoService._filterByAlg: alg not supported: \",r),[];n=\"EC\"}return o.Log.debug(\"UserInfoService._filterByAlg: Looking for keys that match kty: \",n),e=e.filter((function(t){return t.kty===n})),o.Log.debug(\"UserInfoService._filterByAlg: Number of keys that match kty: \",n,e.length),e},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AllowedSigningAlgs=e.b64tohex=e.hextob64u=e.crypto=e.X509=e.KeyUtil=e.jws=void 0;var n=r(27);e.jws=n.jws,e.KeyUtil=n.KEYUTIL,e.X509=n.X509,e.crypto=n.crypto,e.hextob64u=n.hextob64u,e.b64tohex=n.b64tohex,e.AllowedSigningAlgs=[\"RS256\",\"RS384\",\"RS512\",\"PS256\",\"PS384\",\"PS512\",\"ES256\",\"ES384\",\"ES512\"]},function(t,e,r){\"use strict\";(function(t){Object.defineProperty(e,\"__esModule\",{value:!0});var r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},n={userAgent:!1},i={};\n/*!\nCopyright (c) 2011, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.com/yui/license.html\nversion: 2.9.0\n*/\nif(void 0===o)var o={};o.lang={extend:function t(e,r,i){if(!r||!e)throw new Error(\"YAHOO.lang.extend failed, please check that all dependencies are included.\");var o=function t(){};if(o.prototype=r.prototype,e.prototype=new o,e.prototype.constructor=e,e.superclass=r.prototype,r.prototype.constructor==Object.prototype.constructor&&(r.prototype.constructor=r),i){var s;for(s in i)e.prototype[s]=i[s];var a=function t(){},u=[\"toString\",\"valueOf\"];try{/MSIE/.test(n.userAgent)&&(a=function t(e,r){for(s=0;s<u.length;s+=1){var n=u[s],i=r[n];\"function\"==typeof i&&i!=Object.prototype[n]&&(e[n]=i)}})}catch(t){}a(e.prototype,i)}}};\n/*! CryptoJS v3.1.2 core-fix.js\n * code.google.com/p/crypto-js\n * (c) 2009-2013 by Jeff Mott. All rights reserved.\n * code.google.com/p/crypto-js/wiki/License\n * THIS IS FIX of 'core.js' to fix Hmac issue.\n * https://code.google.com/p/crypto-js/issues/detail?id=84\n * https://crypto-js.googlecode.com/svn-history/r667/branches/3.x/src/core.js\n */\nvar s,a,u,c,h,l,f,g,d,p,v,y=y||(s=Math,u=(a={}).lib={},c=u.Base=function(){function t(){}return{extend:function e(r){t.prototype=this;var n=new t;return r&&n.mixIn(r),n.hasOwnProperty(\"init\")||(n.init=function(){n.$super.init.apply(this,arguments)}),n.init.prototype=n,n.$super=this,n},create:function t(){var e=this.extend();return e.init.apply(e,arguments),e},init:function t(){},mixIn:function t(e){for(var r in e)e.hasOwnProperty(r)&&(this[r]=e[r]);e.hasOwnProperty(\"toString\")&&(this.toString=e.toString)},clone:function t(){return this.init.prototype.extend(this)}}}(),h=u.WordArray=c.extend({init:function t(e,r){e=this.words=e||[],this.sigBytes=null!=r?r:4*e.length},toString:function t(e){return(e||f).stringify(this)},concat:function t(e){var r=this.words,n=e.words,i=this.sigBytes,o=e.sigBytes;if(this.clamp(),i%4)for(var s=0;s<o;s++){var a=n[s>>>2]>>>24-s%4*8&255;r[i+s>>>2]|=a<<24-(i+s)%4*8}else for(s=0;s<o;s+=4)r[i+s>>>2]=n[s>>>2];return this.sigBytes+=o,this},clamp:function t(){var e=this.words,r=this.sigBytes;e[r>>>2]&=4294967295<<32-r%4*8,e.length=s.ceil(r/4)},clone:function t(){var e=c.clone.call(this);return e.words=this.words.slice(0),e},random:function t(e){for(var r=[],n=0;n<e;n+=4)r.push(4294967296*s.random()|0);return new h.init(r,e)}}),l=a.enc={},f=l.Hex={stringify:function t(e){for(var r=e.words,n=e.sigBytes,i=[],o=0;o<n;o++){var s=r[o>>>2]>>>24-o%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join(\"\")},parse:function t(e){for(var r=e.length,n=[],i=0;i<r;i+=2)n[i>>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new h.init(n,r/2)}},g=l.Latin1={stringify:function t(e){for(var r=e.words,n=e.sigBytes,i=[],o=0;o<n;o++){var s=r[o>>>2]>>>24-o%4*8&255;i.push(String.fromCharCode(s))}return i.join(\"\")},parse:function t(e){for(var r=e.length,n=[],i=0;i<r;i++)n[i>>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new h.init(n,r)}},d=l.Utf8={stringify:function t(e){try{return decodeURIComponent(escape(g.stringify(e)))}catch(t){throw new Error(\"Malformed UTF-8 data\")}},parse:function t(e){return g.parse(unescape(encodeURIComponent(e)))}},p=u.BufferedBlockAlgorithm=c.extend({reset:function t(){this._data=new h.init,this._nDataBytes=0},_append:function t(e){\"string\"==typeof e&&(e=d.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function t(e){var r=this._data,n=r.words,i=r.sigBytes,o=this.blockSize,a=i/(4*o),u=(a=e?s.ceil(a):s.max((0|a)-this._minBufferSize,0))*o,c=s.min(4*u,i);if(u){for(var l=0;l<u;l+=o)this._doProcessBlock(n,l);var f=n.splice(0,u);r.sigBytes-=c}return new h.init(f,c)},clone:function t(){var e=c.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0}),u.Hasher=p.extend({cfg:c.extend(),init:function t(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function t(){p.reset.call(this),this._doReset()},update:function t(e){return this._append(e),this._process(),this},finalize:function t(e){return e&&this._append(e),this._doFinalize()},blockSize:16,_createHelper:function t(e){return function(t,r){return new e.init(r).finalize(t)}},_createHmacHelper:function t(e){return function(t,r){return new v.HMAC.init(e,r).finalize(t)}}}),v=a.algo={},a);!function(t){var e,r=(e=y).lib,n=r.Base,i=r.WordArray;(e=e.x64={}).Word=n.extend({init:function t(e,r){this.high=e,this.low=r}}),e.WordArray=n.extend({init:function t(e,r){e=this.words=e||[],this.sigBytes=null!=r?r:8*e.length},toX32:function t(){for(var e=this.words,r=e.length,n=[],o=0;o<r;o++){var s=e[o];n.push(s.high),n.push(s.low)}return i.create(n,this.sigBytes)},clone:function t(){for(var e=n.clone.call(this),r=e.words=this.words.slice(0),i=r.length,o=0;o<i;o++)r[o]=r[o].clone();return e}})}(),function(){var t=y,e=t.lib.WordArray;t.enc.Base64={stringify:function t(e){var r=e.words,n=e.sigBytes,i=this._map;e.clamp(),e=[];for(var o=0;o<n;o+=3)for(var s=(r[o>>>2]>>>24-o%4*8&255)<<16|(r[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|r[o+2>>>2]>>>24-(o+2)%4*8&255,a=0;4>a&&o+.75*a<n;a++)e.push(i.charAt(s>>>6*(3-a)&63));if(r=i.charAt(64))for(;e.length%4;)e.push(r);return e.join(\"\")},parse:function t(r){var n=r.length,i=this._map;(o=i.charAt(64))&&(-1!=(o=r.indexOf(o))&&(n=o));for(var o=[],s=0,a=0;a<n;a++)if(a%4){var u=i.indexOf(r.charAt(a-1))<<a%4*2,c=i.indexOf(r.charAt(a))>>>6-a%4*2;o[s>>>2]|=(u|c)<<24-s%4*8,s++}return e.create(o,s)},_map:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"}}(),function(t){for(var e=y,r=(i=e.lib).WordArray,n=i.Hasher,i=e.algo,o=[],s=[],a=function t(e){return 4294967296*(e-(0|e))|0},u=2,c=0;64>c;){var h;t:{h=u;for(var l=t.sqrt(h),f=2;f<=l;f++)if(!(h%f)){h=!1;break t}h=!0}h&&(8>c&&(o[c]=a(t.pow(u,.5))),s[c]=a(t.pow(u,1/3)),c++),u++}var g=[];i=i.SHA256=n.extend({_doReset:function t(){this._hash=new r.init(o.slice(0))},_doProcessBlock:function t(e,r){for(var n=this._hash.words,i=n[0],o=n[1],a=n[2],u=n[3],c=n[4],h=n[5],l=n[6],f=n[7],d=0;64>d;d++){if(16>d)g[d]=0|e[r+d];else{var p=g[d-15],v=g[d-2];g[d]=((p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3)+g[d-7]+((v<<15|v>>>17)^(v<<13|v>>>19)^v>>>10)+g[d-16]}p=f+((c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25))+(c&h^~c&l)+s[d]+g[d],v=((i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22))+(i&o^i&a^o&a),f=l,l=h,h=c,c=u+p|0,u=a,a=o,o=i,i=p+v|0}n[0]=n[0]+i|0,n[1]=n[1]+o|0,n[2]=n[2]+a|0,n[3]=n[3]+u|0,n[4]=n[4]+c|0,n[5]=n[5]+h|0,n[6]=n[6]+l|0,n[7]=n[7]+f|0},_doFinalize:function e(){var r=this._data,n=r.words,i=8*this._nDataBytes,o=8*r.sigBytes;return n[o>>>5]|=128<<24-o%32,n[14+(o+64>>>9<<4)]=t.floor(i/4294967296),n[15+(o+64>>>9<<4)]=i,r.sigBytes=4*n.length,this._process(),this._hash},clone:function t(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});e.SHA256=n._createHelper(i),e.HmacSHA256=n._createHmacHelper(i)}(Math),function(){function t(){return n.create.apply(n,arguments)}for(var e=y,r=e.lib.Hasher,n=(o=e.x64).Word,i=o.WordArray,o=e.algo,s=[t(1116352408,3609767458),t(1899447441,602891725),t(3049323471,3964484399),t(3921009573,2173295548),t(961987163,4081628472),t(1508970993,3053834265),t(2453635748,2937671579),t(2870763221,3664609560),t(3624381080,2734883394),t(310598401,1164996542),t(607225278,1323610764),t(1426881987,3590304994),t(1925078388,4068182383),t(2162078206,991336113),t(2614888103,633803317),t(3248222580,3479774868),t(3835390401,2666613458),t(4022224774,944711139),t(264347078,2341262773),t(604807628,2007800933),t(770255983,1495990901),t(1249150122,1856431235),t(1555081692,3175218132),t(1996064986,2198950837),t(2554220882,3999719339),t(2821834349,766784016),t(2952996808,2566594879),t(3210313671,3203337956),t(3336571891,1034457026),t(3584528711,2466948901),t(113926993,3758326383),t(338241895,168717936),t(666307205,1188179964),t(773529912,1546045734),t(1294757372,1522805485),t(1396182291,2643833823),t(1695183700,2343527390),t(1986661051,1014477480),t(2177026350,1206759142),t(2456956037,344077627),t(2730485921,1290863460),t(2820302411,3158454273),t(3259730800,3505952657),t(3345764771,106217008),t(3516065817,3606008344),t(3600352804,1432725776),t(4094571909,1467031594),t(275423344,851169720),t(430227734,3100823752),t(506948616,1363258195),t(659060556,3750685593),t(883997877,3785050280),t(958139571,3318307427),t(1322822218,3812723403),t(1537002063,2003034995),t(1747873779,3602036899),t(1955562222,1575990012),t(2024104815,1125592928),t(2227730452,2716904306),t(2361852424,442776044),t(2428436474,593698344),t(2756734187,3733110249),t(3204031479,2999351573),t(3329325298,3815920427),t(3391569614,3928383900),t(3515267271,566280711),t(3940187606,3454069534),t(4118630271,4000239992),t(116418474,1914138554),t(174292421,2731055270),t(289380356,3203993006),t(460393269,320620315),t(685471733,587496836),t(852142971,1086792851),t(1017036298,365543100),t(1126000580,2618297676),t(1288033470,3409855158),t(1501505948,4234509866),t(1607167915,987167468),t(1816402316,1246189591)],a=[],u=0;80>u;u++)a[u]=t();o=o.SHA512=r.extend({_doReset:function t(){this._hash=new i.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function t(e,r){for(var n=(f=this._hash.words)[0],i=f[1],o=f[2],u=f[3],c=f[4],h=f[5],l=f[6],f=f[7],g=n.high,d=n.low,p=i.high,v=i.low,y=o.high,m=o.low,_=u.high,S=u.low,b=c.high,w=c.low,F=h.high,E=h.low,x=l.high,A=l.low,k=f.high,P=f.low,C=g,T=d,R=p,I=v,D=y,L=m,N=_,U=S,B=b,O=w,j=F,M=E,H=x,V=A,K=k,q=P,J=0;80>J;J++){var W=a[J];if(16>J)var z=W.high=0|e[r+2*J],Y=W.low=0|e[r+2*J+1];else{z=((Y=(z=a[J-15]).high)>>>1|(G=z.low)<<31)^(Y>>>8|G<<24)^Y>>>7;var G=(G>>>1|Y<<31)^(G>>>8|Y<<24)^(G>>>7|Y<<25),X=((Y=(X=a[J-2]).high)>>>19|($=X.low)<<13)^(Y<<3|$>>>29)^Y>>>6,$=($>>>19|Y<<13)^($<<3|Y>>>29)^($>>>6|Y<<26),Q=(Y=a[J-7]).high,Z=(tt=a[J-16]).high,tt=tt.low;z=(z=(z=z+Q+((Y=G+Y.low)>>>0<G>>>0?1:0))+X+((Y=Y+$)>>>0<$>>>0?1:0))+Z+((Y=Y+tt)>>>0<tt>>>0?1:0);W.high=z,W.low=Y}Q=B&j^~B&H,tt=O&M^~O&V,W=C&R^C&D^R&D;var et=T&I^T&L^I&L,rt=(G=(C>>>28|T<<4)^(C<<30|T>>>2)^(C<<25|T>>>7),X=(T>>>28|C<<4)^(T<<30|C>>>2)^(T<<25|C>>>7),($=s[J]).high),nt=$.low;Z=K+((B>>>14|O<<18)^(B>>>18|O<<14)^(B<<23|O>>>9))+(($=q+((O>>>14|B<<18)^(O>>>18|B<<14)^(O<<23|B>>>9)))>>>0<q>>>0?1:0),K=H,q=V,H=j,V=M,j=B,M=O,B=N+(Z=(Z=(Z=Z+Q+(($=$+tt)>>>0<tt>>>0?1:0))+rt+(($=$+nt)>>>0<nt>>>0?1:0))+z+(($=$+Y)>>>0<Y>>>0?1:0))+((O=U+$|0)>>>0<U>>>0?1:0)|0,N=D,U=L,D=R,L=I,R=C,I=T,C=Z+(W=G+W+((Y=X+et)>>>0<X>>>0?1:0))+((T=$+Y|0)>>>0<$>>>0?1:0)|0}d=n.low=d+T,n.high=g+C+(d>>>0<T>>>0?1:0),v=i.low=v+I,i.high=p+R+(v>>>0<I>>>0?1:0),m=o.low=m+L,o.high=y+D+(m>>>0<L>>>0?1:0),S=u.low=S+U,u.high=_+N+(S>>>0<U>>>0?1:0),w=c.low=w+O,c.high=b+B+(w>>>0<O>>>0?1:0),E=h.low=E+M,h.high=F+j+(E>>>0<M>>>0?1:0),A=l.low=A+V,l.high=x+H+(A>>>0<V>>>0?1:0),P=f.low=P+q,f.high=k+K+(P>>>0<q>>>0?1:0)},_doFinalize:function t(){var e=this._data,r=e.words,n=8*this._nDataBytes,i=8*e.sigBytes;return r[i>>>5]|=128<<24-i%32,r[30+(i+128>>>10<<5)]=Math.floor(n/4294967296),r[31+(i+128>>>10<<5)]=n,e.sigBytes=4*r.length,this._process(),this._hash.toX32()},clone:function t(){var e=r.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32}),e.SHA512=r._createHelper(o),e.HmacSHA512=r._createHmacHelper(o)}(),function(){var t=y,e=(i=t.x64).Word,r=i.WordArray,n=(i=t.algo).SHA512,i=i.SHA384=n.extend({_doReset:function t(){this._hash=new r.init([new e.init(3418070365,3238371032),new e.init(1654270250,914150663),new e.init(2438529370,812702999),new e.init(355462360,4144912697),new e.init(1731405415,4290775857),new e.init(2394180231,1750603025),new e.init(3675008525,1694076839),new e.init(1203062813,3204075428)])},_doFinalize:function t(){var e=n._doFinalize.call(this);return e.sigBytes-=16,e}});t.SHA384=n._createHelper(i),t.HmacSHA384=n._createHmacHelper(i)}();\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nvar m,_=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";function S(t){var e,r,n=\"\";for(e=0;e+3<=t.length;e+=3)r=parseInt(t.substring(e,e+3),16),n+=_.charAt(r>>6)+_.charAt(63&r);for(e+1==t.length?(r=parseInt(t.substring(e,e+1),16),n+=_.charAt(r<<2)):e+2==t.length&&(r=parseInt(t.substring(e,e+2),16),n+=_.charAt(r>>2)+_.charAt((3&r)<<4)),\"=\";(3&n.length)>0;)n+=\"=\";return n}function b(t){var e,r,n,i=\"\",o=0;for(e=0;e<t.length&&\"=\"!=t.charAt(e);++e)(n=_.indexOf(t.charAt(e)))<0||(0==o?(i+=R(n>>2),r=3&n,o=1):1==o?(i+=R(r<<2|n>>4),r=15&n,o=2):2==o?(i+=R(r),i+=R(n>>2),r=3&n,o=3):(i+=R(r<<2|n>>4),i+=R(15&n),o=0));return 1==o&&(i+=R(r<<2)),i}function w(t){var e,r=b(t),n=new Array;for(e=0;2*e<r.length;++e)n[e]=parseInt(r.substring(2*e,2*e+2),16);return n}function F(t,e,r){null!=t&&(\"number\"==typeof t?this.fromNumber(t,e,r):null==e&&\"string\"!=typeof t?this.fromString(t,256):this.fromString(t,e))}function E(){return new F(null)}\"Microsoft Internet Explorer\"==n.appName?(F.prototype.am=function x(t,e,r,n,i,o){for(var s=32767&e,a=e>>15;--o>=0;){var u=32767&this[t],c=this[t++]>>15,h=a*u+c*s;i=((u=s*u+((32767&h)<<15)+r[n]+(1073741823&i))>>>30)+(h>>>15)+a*c+(i>>>30),r[n++]=1073741823&u}return i},m=30):\"Netscape\"!=n.appName?(F.prototype.am=function A(t,e,r,n,i,o){for(;--o>=0;){var s=e*this[t++]+r[n]+i;i=Math.floor(s/67108864),r[n++]=67108863&s}return i},m=26):(F.prototype.am=function k(t,e,r,n,i,o){for(var s=16383&e,a=e>>14;--o>=0;){var u=16383&this[t],c=this[t++]>>14,h=a*u+c*s;i=((u=s*u+((16383&h)<<14)+r[n]+i)>>28)+(h>>14)+a*c,r[n++]=268435455&u}return i},m=28),F.prototype.DB=m,F.prototype.DM=(1<<m)-1,F.prototype.DV=1<<m;F.prototype.FV=Math.pow(2,52),F.prototype.F1=52-m,F.prototype.F2=2*m-52;var P,C,T=new Array;for(P=\"0\".charCodeAt(0),C=0;C<=9;++C)T[P++]=C;for(P=\"a\".charCodeAt(0),C=10;C<36;++C)T[P++]=C;for(P=\"A\".charCodeAt(0),C=10;C<36;++C)T[P++]=C;function R(t){return\"0123456789abcdefghijklmnopqrstuvwxyz\".charAt(t)}function I(t,e){var r=T[t.charCodeAt(e)];return null==r?-1:r}function D(t){var e=E();return e.fromInt(t),e}function L(t){var e,r=1;return 0!=(e=t>>>16)&&(t=e,r+=16),0!=(e=t>>8)&&(t=e,r+=8),0!=(e=t>>4)&&(t=e,r+=4),0!=(e=t>>2)&&(t=e,r+=2),0!=(e=t>>1)&&(t=e,r+=1),r}function N(t){this.m=t}function U(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<<t.DB-15)-1,this.mt2=2*t.t}function B(t,e){return t&e}function O(t,e){return t|e}function j(t,e){return t^e}function M(t,e){return t&~e}function H(t){if(0==t)return-1;var e=0;return 0==(65535&t)&&(t>>=16,e+=16),0==(255&t)&&(t>>=8,e+=8),0==(15&t)&&(t>>=4,e+=4),0==(3&t)&&(t>>=2,e+=2),0==(1&t)&&++e,e}function V(t){for(var e=0;0!=t;)t&=t-1,++e;return e}function K(){}function q(t){return t}function J(t){this.r2=E(),this.q3=E(),F.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t),this.m=t}N.prototype.convert=function W(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t},N.prototype.revert=function z(t){return t},N.prototype.reduce=function Y(t){t.divRemTo(this.m,null,t)},N.prototype.mulTo=function G(t,e,r){t.multiplyTo(e,r),this.reduce(r)},N.prototype.sqrTo=function X(t,e){t.squareTo(e),this.reduce(e)},U.prototype.convert=function $(t){var e=E();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(F.ZERO)>0&&this.m.subTo(e,e),e},U.prototype.revert=function Q(t){var e=E();return t.copyTo(e),this.reduce(e),e},U.prototype.reduce=function Z(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e<this.m.t;++e){var r=32767&t[e],n=r*this.mpl+((r*this.mph+(t[e]>>15)*this.mpl&this.um)<<15)&t.DM;for(t[r=e+this.m.t]+=this.m.am(0,n,t,e,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)},U.prototype.mulTo=function tt(t,e,r){t.multiplyTo(e,r),this.reduce(r)},U.prototype.sqrTo=function et(t,e){t.squareTo(e),this.reduce(e)},F.prototype.copyTo=function rt(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s},F.prototype.fromInt=function nt(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0},F.prototype.fromString=function it(t,e){var r;if(16==e)r=4;else if(8==e)r=3;else if(256==e)r=8;else if(2==e)r=1;else if(32==e)r=5;else{if(4!=e)return void this.fromRadix(t,e);r=2}this.t=0,this.s=0;for(var n=t.length,i=!1,o=0;--n>=0;){var s=8==r?255&t[n]:I(t,n);s<0?\"-\"==t.charAt(n)&&(i=!0):(i=!1,0==o?this[this.t++]=s:o+r>this.DB?(this[this.t-1]|=(s&(1<<this.DB-o)-1)<<o,this[this.t++]=s>>this.DB-o):this[this.t-1]|=s<<o,(o+=r)>=this.DB&&(o-=this.DB))}8==r&&0!=(128&t[0])&&(this.s=-1,o>0&&(this[this.t-1]|=(1<<this.DB-o)-1<<o)),this.clamp(),i&&F.ZERO.subTo(this,this)},F.prototype.clamp=function ot(){for(var t=this.s&this.DM;this.t>0&&this[this.t-1]==t;)--this.t},F.prototype.dlShiftTo=function st(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s},F.prototype.drShiftTo=function at(t,e){for(var r=t;r<this.t;++r)e[r-t]=this[r];e.t=Math.max(this.t-t,0),e.s=this.s},F.prototype.lShiftTo=function ut(t,e){var r,n=t%this.DB,i=this.DB-n,o=(1<<i)-1,s=Math.floor(t/this.DB),a=this.s<<n&this.DM;for(r=this.t-1;r>=0;--r)e[r+s+1]=this[r]>>i|a,a=(this[r]&o)<<n;for(r=s-1;r>=0;--r)e[r]=0;e[s]=a,e.t=this.t+s+1,e.s=this.s,e.clamp()},F.prototype.rShiftTo=function ct(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t)e.t=0;else{var n=t%this.DB,i=this.DB-n,o=(1<<n)-1;e[0]=this[r]>>n;for(var s=r+1;s<this.t;++s)e[s-r-1]|=(this[s]&o)<<i,e[s-r]=this[s]>>n;n>0&&(e[this.t-r-1]|=(this.s&o)<<i),e.t=this.t-r,e.clamp()}},F.prototype.subTo=function ht(t,e){for(var r=0,n=0,i=Math.min(t.t,this.t);r<i;)n+=this[r]-t[r],e[r++]=n&this.DM,n>>=this.DB;if(t.t<this.t){for(n-=t.s;r<this.t;)n+=this[r],e[r++]=n&this.DM,n>>=this.DB;n+=this.s}else{for(n+=this.s;r<t.t;)n-=t[r],e[r++]=n&this.DM,n>>=this.DB;n-=t.s}e.s=n<0?-1:0,n<-1?e[r++]=this.DV+n:n>0&&(e[r++]=n),e.t=r,e.clamp()},F.prototype.multiplyTo=function lt(t,e){var r=this.abs(),n=t.abs(),i=r.t;for(e.t=i+n.t;--i>=0;)e[i]=0;for(i=0;i<n.t;++i)e[i+r.t]=r.am(0,n[i],e,i,0,r.t);e.s=0,e.clamp(),this.s!=t.s&&F.ZERO.subTo(e,e)},F.prototype.squareTo=function ft(t){for(var e=this.abs(),r=t.t=2*e.t;--r>=0;)t[r]=0;for(r=0;r<e.t-1;++r){var n=e.am(r,e[r],t,2*r,0,1);(t[r+e.t]+=e.am(r+1,2*e[r],t,2*r+1,n,e.t-r-1))>=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp()},F.prototype.divRemTo=function gt(t,e,r){var n=t.abs();if(!(n.t<=0)){var i=this.abs();if(i.t<n.t)return null!=e&&e.fromInt(0),void(null!=r&&this.copyTo(r));null==r&&(r=E());var o=E(),s=this.s,a=t.s,u=this.DB-L(n[n.t-1]);u>0?(n.lShiftTo(u,o),i.lShiftTo(u,r)):(n.copyTo(o),i.copyTo(r));var c=o.t,h=o[c-1];if(0!=h){var l=h*(1<<this.F1)+(c>1?o[c-2]>>this.F2:0),f=this.FV/l,g=(1<<this.F1)/l,d=1<<this.F2,p=r.t,v=p-c,y=null==e?E():e;for(o.dlShiftTo(v,y),r.compareTo(y)>=0&&(r[r.t++]=1,r.subTo(y,r)),F.ONE.dlShiftTo(c,y),y.subTo(o,o);o.t<c;)o[o.t++]=0;for(;--v>=0;){var m=r[--p]==h?this.DM:Math.floor(r[p]*f+(r[p-1]+d)*g);if((r[p]+=o.am(0,m,r,v,0,c))<m)for(o.dlShiftTo(v,y),r.subTo(y,r);r[p]<--m;)r.subTo(y,r)}null!=e&&(r.drShiftTo(c,e),s!=a&&F.ZERO.subTo(e,e)),r.t=c,r.clamp(),u>0&&r.rShiftTo(u,r),s<0&&F.ZERO.subTo(r,r)}}},F.prototype.invDigit=function dt(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return(e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)>0?this.DV-e:-e},F.prototype.isEven=function pt(){return 0==(this.t>0?1&this[0]:this.s)},F.prototype.exp=function vt(t,e){if(t>4294967295||t<1)return F.ONE;var r=E(),n=E(),i=e.convert(this),o=L(t)-1;for(i.copyTo(r);--o>=0;)if(e.sqrTo(r,n),(t&1<<o)>0)e.mulTo(n,i,r);else{var s=r;r=n,n=s}return e.revert(r)},F.prototype.toString=function yt(t){if(this.s<0)return\"-\"+this.negate().toString(t);var e;if(16==t)e=4;else if(8==t)e=3;else if(2==t)e=1;else if(32==t)e=5;else{if(4!=t)return this.toRadix(t);e=2}var r,n=(1<<e)-1,i=!1,o=\"\",s=this.t,a=this.DB-s*this.DB%e;if(s-- >0)for(a<this.DB&&(r=this[s]>>a)>0&&(i=!0,o=R(r));s>=0;)a<e?(r=(this[s]&(1<<a)-1)<<e-a,r|=this[--s]>>(a+=this.DB-e)):(r=this[s]>>(a-=e)&n,a<=0&&(a+=this.DB,--s)),r>0&&(i=!0),i&&(o+=R(r));return i?o:\"0\"},F.prototype.negate=function mt(){var t=E();return F.ZERO.subTo(this,t),t},F.prototype.abs=function _t(){return this.s<0?this.negate():this},F.prototype.compareTo=function St(t){var e=this.s-t.s;if(0!=e)return e;var r=this.t;if(0!=(e=r-t.t))return this.s<0?-e:e;for(;--r>=0;)if(0!=(e=this[r]-t[r]))return e;return 0},F.prototype.bitLength=function bt(){return this.t<=0?0:this.DB*(this.t-1)+L(this[this.t-1]^this.s&this.DM)},F.prototype.mod=function wt(t){var e=E();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(F.ZERO)>0&&t.subTo(e,e),e},F.prototype.modPowInt=function Ft(t,e){var r;return r=t<256||e.isEven()?new N(e):new U(e),this.exp(t,r)},F.ZERO=D(0),F.ONE=D(1),K.prototype.convert=q,K.prototype.revert=q,K.prototype.mulTo=function Et(t,e,r){t.multiplyTo(e,r)},K.prototype.sqrTo=function xt(t,e){t.squareTo(e)},J.prototype.convert=function At(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e=E();return t.copyTo(e),this.reduce(e),e},J.prototype.revert=function kt(t){return t},J.prototype.reduce=function Pt(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)},J.prototype.mulTo=function Ct(t,e,r){t.multiplyTo(e,r),this.reduce(r)},J.prototype.sqrTo=function Tt(t,e){t.squareTo(e),this.reduce(e)};var Rt=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],It=(1<<26)/Rt[Rt.length-1];\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction Dt(){this.i=0,this.j=0,this.S=new Array}F.prototype.chunkSize=function Lt(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},F.prototype.toRadix=function Nt(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return\"0\";var e=this.chunkSize(t),r=Math.pow(t,e),n=D(r),i=E(),o=E(),s=\"\";for(this.divRemTo(n,i,o);i.signum()>0;)s=(r+o.intValue()).toString(t).substr(1)+s,i.divRemTo(n,i,o);return o.intValue().toString(t)+s},F.prototype.fromRadix=function Ut(t,e){this.fromInt(0),null==e&&(e=10);for(var r=this.chunkSize(e),n=Math.pow(e,r),i=!1,o=0,s=0,a=0;a<t.length;++a){var u=I(t,a);u<0?\"-\"==t.charAt(a)&&0==this.signum()&&(i=!0):(s=e*s+u,++o>=r&&(this.dMultiply(n),this.dAddOffset(s,0),o=0,s=0))}o>0&&(this.dMultiply(Math.pow(e,o)),this.dAddOffset(s,0)),i&&F.ZERO.subTo(this,this)},F.prototype.fromNumber=function Bt(t,e,r){if(\"number\"==typeof e)if(t<2)this.fromInt(1);else for(this.fromNumber(t,r),this.testBit(t-1)||this.bitwiseTo(F.ONE.shiftLeft(t-1),O,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(e);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(F.ONE.shiftLeft(t-1),this);else{var n=new Array,i=7&t;n.length=1+(t>>3),e.nextBytes(n),i>0?n[0]&=(1<<i)-1:n[0]=0,this.fromString(n,256)}},F.prototype.bitwiseTo=function Ot(t,e,r){var n,i,o=Math.min(t.t,this.t);for(n=0;n<o;++n)r[n]=e(this[n],t[n]);if(t.t<this.t){for(i=t.s&this.DM,n=o;n<this.t;++n)r[n]=e(this[n],i);r.t=this.t}else{for(i=this.s&this.DM,n=o;n<t.t;++n)r[n]=e(i,t[n]);r.t=t.t}r.s=e(this.s,t.s),r.clamp()},F.prototype.changeBit=function jt(t,e){var r=F.ONE.shiftLeft(t);return this.bitwiseTo(r,e,r),r},F.prototype.addTo=function Mt(t,e){for(var r=0,n=0,i=Math.min(t.t,this.t);r<i;)n+=this[r]+t[r],e[r++]=n&this.DM,n>>=this.DB;if(t.t<this.t){for(n+=t.s;r<this.t;)n+=this[r],e[r++]=n&this.DM,n>>=this.DB;n+=this.s}else{for(n+=this.s;r<t.t;)n+=t[r],e[r++]=n&this.DM,n>>=this.DB;n+=t.s}e.s=n<0?-1:0,n>0?e[r++]=n:n<-1&&(e[r++]=this.DV+n),e.t=r,e.clamp()},F.prototype.dMultiply=function Ht(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},F.prototype.dAddOffset=function Vt(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},F.prototype.multiplyLowerTo=function Kt(t,e,r){var n,i=Math.min(this.t+t.t,e);for(r.s=0,r.t=i;i>0;)r[--i]=0;for(n=r.t-this.t;i<n;++i)r[i+this.t]=this.am(0,t[i],r,i,0,this.t);for(n=Math.min(t.t,e);i<n;++i)this.am(0,t[i],r,i,0,e-i);r.clamp()},F.prototype.multiplyUpperTo=function qt(t,e,r){--e;var n=r.t=this.t+t.t-e;for(r.s=0;--n>=0;)r[n]=0;for(n=Math.max(e-this.t,0);n<t.t;++n)r[this.t+n-e]=this.am(e-n,t[n],r,0,0,this.t+n-e);r.clamp(),r.drShiftTo(1,r)},F.prototype.modInt=function Jt(t){if(t<=0)return 0;var e=this.DV%t,r=this.s<0?t-1:0;if(this.t>0)if(0==e)r=this[0]%t;else for(var n=this.t-1;n>=0;--n)r=(e*r+this[n])%t;return r},F.prototype.millerRabin=function Wt(t){var e=this.subtract(F.ONE),r=e.getLowestSetBit();if(r<=0)return!1;var n=e.shiftRight(r);(t=t+1>>1)>Rt.length&&(t=Rt.length);for(var i=E(),o=0;o<t;++o){i.fromInt(Rt[Math.floor(Math.random()*Rt.length)]);var s=i.modPow(n,this);if(0!=s.compareTo(F.ONE)&&0!=s.compareTo(e)){for(var a=1;a++<r&&0!=s.compareTo(e);)if(0==(s=s.modPowInt(2,this)).compareTo(F.ONE))return!1;if(0!=s.compareTo(e))return!1}}return!0},F.prototype.clone=\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction zt(){var t=E();return this.copyTo(t),t},F.prototype.intValue=function Yt(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]},F.prototype.byteValue=function Gt(){return 0==this.t?this.s:this[0]<<24>>24},F.prototype.shortValue=function Xt(){return 0==this.t?this.s:this[0]<<16>>16},F.prototype.signum=function $t(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},F.prototype.toByteArray=function Qt(){var t=this.t,e=new Array;e[0]=this.s;var r,n=this.DB-t*this.DB%8,i=0;if(t-- >0)for(n<this.DB&&(r=this[t]>>n)!=(this.s&this.DM)>>n&&(e[i++]=r|this.s<<this.DB-n);t>=0;)n<8?(r=(this[t]&(1<<n)-1)<<8-n,r|=this[--t]>>(n+=this.DB-8)):(r=this[t]>>(n-=8)&255,n<=0&&(n+=this.DB,--t)),0!=(128&r)&&(r|=-256),0==i&&(128&this.s)!=(128&r)&&++i,(i>0||r!=this.s)&&(e[i++]=r);return e},F.prototype.equals=function Zt(t){return 0==this.compareTo(t)},F.prototype.min=function te(t){return this.compareTo(t)<0?this:t},F.prototype.max=function ee(t){return this.compareTo(t)>0?this:t},F.prototype.and=function re(t){var e=E();return this.bitwiseTo(t,B,e),e},F.prototype.or=function ne(t){var e=E();return this.bitwiseTo(t,O,e),e},F.prototype.xor=function ie(t){var e=E();return this.bitwiseTo(t,j,e),e},F.prototype.andNot=function oe(t){var e=E();return this.bitwiseTo(t,M,e),e},F.prototype.not=function se(){for(var t=E(),e=0;e<this.t;++e)t[e]=this.DM&~this[e];return t.t=this.t,t.s=~this.s,t},F.prototype.shiftLeft=function ae(t){var e=E();return t<0?this.rShiftTo(-t,e):this.lShiftTo(t,e),e},F.prototype.shiftRight=function ue(t){var e=E();return t<0?this.lShiftTo(-t,e):this.rShiftTo(t,e),e},F.prototype.getLowestSetBit=function ce(){for(var t=0;t<this.t;++t)if(0!=this[t])return t*this.DB+H(this[t]);return this.s<0?this.t*this.DB:-1},F.prototype.bitCount=function he(){for(var t=0,e=this.s&this.DM,r=0;r<this.t;++r)t+=V(this[r]^e);return t},F.prototype.testBit=function le(t){var e=Math.floor(t/this.DB);return e>=this.t?0!=this.s:0!=(this[e]&1<<t%this.DB)},F.prototype.setBit=function fe(t){return this.changeBit(t,O)},F.prototype.clearBit=function ge(t){return this.changeBit(t,M)},F.prototype.flipBit=function de(t){return this.changeBit(t,j)},F.prototype.add=function pe(t){var e=E();return this.addTo(t,e),e},F.prototype.subtract=function ve(t){var e=E();return this.subTo(t,e),e},F.prototype.multiply=function ye(t){var e=E();return this.multiplyTo(t,e),e},F.prototype.divide=function me(t){var e=E();return this.divRemTo(t,e,null),e},F.prototype.remainder=function _e(t){var e=E();return this.divRemTo(t,null,e),e},F.prototype.divideAndRemainder=function Se(t){var e=E(),r=E();return this.divRemTo(t,e,r),new Array(e,r)},F.prototype.modPow=function be(t,e){var r,n,i=t.bitLength(),o=D(1);if(i<=0)return o;r=i<18?1:i<48?3:i<144?4:i<768?5:6,n=i<8?new N(e):e.isEven()?new J(e):new U(e);var s=new Array,a=3,u=r-1,c=(1<<r)-1;if(s[1]=n.convert(this),r>1){var h=E();for(n.sqrTo(s[1],h);a<=c;)s[a]=E(),n.mulTo(h,s[a-2],s[a]),a+=2}var l,f,g=t.t-1,d=!0,p=E();for(i=L(t[g])-1;g>=0;){for(i>=u?l=t[g]>>i-u&c:(l=(t[g]&(1<<i+1)-1)<<u-i,g>0&&(l|=t[g-1]>>this.DB+i-u)),a=r;0==(1&l);)l>>=1,--a;if((i-=a)<0&&(i+=this.DB,--g),d)s[l].copyTo(o),d=!1;else{for(;a>1;)n.sqrTo(o,p),n.sqrTo(p,o),a-=2;a>0?n.sqrTo(o,p):(f=o,o=p,p=f),n.mulTo(p,s[l],o)}for(;g>=0&&0==(t[g]&1<<i);)n.sqrTo(o,p),f=o,o=p,p=f,--i<0&&(i=this.DB-1,--g)}return n.revert(o)},F.prototype.modInverse=function we(t){var e=t.isEven();if(this.isEven()&&e||0==t.signum())return F.ZERO;for(var r=t.clone(),n=this.clone(),i=D(1),o=D(0),s=D(0),a=D(1);0!=r.signum();){for(;r.isEven();)r.rShiftTo(1,r),e?(i.isEven()&&o.isEven()||(i.addTo(this,i),o.subTo(t,o)),i.rShiftTo(1,i)):o.isEven()||o.subTo(t,o),o.rShiftTo(1,o);for(;n.isEven();)n.rShiftTo(1,n),e?(s.isEven()&&a.isEven()||(s.addTo(this,s),a.subTo(t,a)),s.rShiftTo(1,s)):a.isEven()||a.subTo(t,a),a.rShiftTo(1,a);r.compareTo(n)>=0?(r.subTo(n,r),e&&i.subTo(s,i),o.subTo(a,o)):(n.subTo(r,n),e&&s.subTo(i,s),a.subTo(o,a))}return 0!=n.compareTo(F.ONE)?F.ZERO:a.compareTo(t)>=0?a.subtract(t):a.signum()<0?(a.addTo(t,a),a.signum()<0?a.add(t):a):a},F.prototype.pow=function Fe(t){return this.exp(t,new K)},F.prototype.gcd=function Ee(t){var e=this.s<0?this.negate():this.clone(),r=t.s<0?t.negate():t.clone();if(e.compareTo(r)<0){var n=e;e=r,r=n}var i=e.getLowestSetBit(),o=r.getLowestSetBit();if(o<0)return e;for(i<o&&(o=i),o>0&&(e.rShiftTo(o,e),r.rShiftTo(o,r));e.signum()>0;)(i=e.getLowestSetBit())>0&&e.rShiftTo(i,e),(i=r.getLowestSetBit())>0&&r.rShiftTo(i,r),e.compareTo(r)>=0?(e.subTo(r,e),e.rShiftTo(1,e)):(r.subTo(e,r),r.rShiftTo(1,r));return o>0&&r.lShiftTo(o,r),r},F.prototype.isProbablePrime=function xe(t){var e,r=this.abs();if(1==r.t&&r[0]<=Rt[Rt.length-1]){for(e=0;e<Rt.length;++e)if(r[0]==Rt[e])return!0;return!1}if(r.isEven())return!1;for(e=1;e<Rt.length;){for(var n=Rt[e],i=e+1;i<Rt.length&&n<It;)n*=Rt[i++];for(n=r.modInt(n);e<i;)if(n%Rt[e++]==0)return!1}return r.millerRabin(t)},F.prototype.square=function Ae(){var t=E();return this.squareTo(t),t},Dt.prototype.init=function ke(t){var e,r,n;for(e=0;e<256;++e)this.S[e]=e;for(r=0,e=0;e<256;++e)r=r+this.S[e]+t[e%t.length]&255,n=this.S[e],this.S[e]=this.S[r],this.S[r]=n;this.i=0,this.j=0},Dt.prototype.next=function Pe(){var t;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,t=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=t,this.S[t+this.S[this.i]&255]};var Ce,Te,Re;\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */function Ie(){!function t(e){Te[Re++]^=255&e,Te[Re++]^=e>>8&255,Te[Re++]^=e>>16&255,Te[Re++]^=e>>24&255,Re>=256&&(Re-=256)}((new Date).getTime())}if(null==Te){var De;if(Te=new Array,Re=0,void 0!==i&&(void 0!==i.crypto||void 0!==i.msCrypto)){var Le=i.crypto||i.msCrypto;if(Le.getRandomValues){var Ne=new Uint8Array(32);for(Le.getRandomValues(Ne),De=0;De<32;++De)Te[Re++]=Ne[De]}else if(\"Netscape\"==n.appName&&n.appVersion<\"5\"){var Ue=i.crypto.random(32);for(De=0;De<Ue.length;++De)Te[Re++]=255&Ue.charCodeAt(De)}}for(;Re<256;)De=Math.floor(65536*Math.random()),Te[Re++]=De>>>8,Te[Re++]=255&De;Re=0,Ie()}function Be(){if(null==Ce){for(Ie(),(Ce=function t(){return new Dt}()).init(Te),Re=0;Re<Te.length;++Re)Te[Re]=0;Re=0}return Ce.next()}function Oe(){}\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction je(t,e){return new F(t,e)}function Me(t,e,r){for(var n=\"\",i=0;n.length<e;)n+=r(String.fromCharCode.apply(String,t.concat([(4278190080&i)>>24,(16711680&i)>>16,(65280&i)>>8,255&i]))),i+=1;return n}function He(){this.n=null,this.e=0,this.d=null,this.p=null,this.q=null,this.dmp1=null,this.dmq1=null,this.coeff=null}\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction Ve(t,e){this.x=e,this.q=t}function Ke(t,e,r,n){this.curve=t,this.x=e,this.y=r,this.z=null==n?F.ONE:n,this.zinv=null}function qe(t,e,r){this.q=t,this.a=this.fromBigInteger(e),this.b=this.fromBigInteger(r),this.infinity=new Ke(this,null,null)}Oe.prototype.nextBytes=function Je(t){var e;for(e=0;e<t.length;++e)t[e]=Be()},He.prototype.doPublic=function We(t){return t.modPowInt(this.e,this.n)},He.prototype.setPublic=function ze(t,e){if(this.isPublic=!0,this.isPrivate=!1,\"string\"!=typeof t)this.n=t,this.e=e;else{if(!(null!=t&&null!=e&&t.length>0&&e.length>0))throw\"Invalid RSA public key\";this.n=je(t,16),this.e=parseInt(e,16)}},He.prototype.encrypt=function Ye(t){var e=function r(t,e){if(e<t.length+11)throw\"Message too long for RSA\";for(var r=new Array,n=t.length-1;n>=0&&e>0;){var i=t.charCodeAt(n--);i<128?r[--e]=i:i>127&&i<2048?(r[--e]=63&i|128,r[--e]=i>>6|192):(r[--e]=63&i|128,r[--e]=i>>6&63|128,r[--e]=i>>12|224)}r[--e]=0;for(var o=new Oe,s=new Array;e>2;){for(s[0]=0;0==s[0];)o.nextBytes(s);r[--e]=s[0]}return r[--e]=2,r[--e]=0,new F(r)}(t,this.n.bitLength()+7>>3);if(null==e)return null;var n=this.doPublic(e);if(null==n)return null;var i=n.toString(16);return 0==(1&i.length)?i:\"0\"+i},He.prototype.encryptOAEP=function Ge(t,e,r){var n=function i(t,e,r,n){var i=br.crypto.MessageDigest,o=br.crypto.Util,s=null;if(r||(r=\"sha1\"),\"string\"==typeof r&&(s=i.getCanonicalAlgName(r),n=i.getHashLength(s),r=function t(e){return Nr(o.hashHex(Ur(e),s))}),t.length+2*n+2>e)throw\"Message too long for RSA\";var a,u=\"\";for(a=0;a<e-t.length-2*n-2;a+=1)u+=\"\\0\";var c=r(\"\")+u+\"\u0001\"+t,h=new Array(n);(new Oe).nextBytes(h);var l=Me(h,c.length,r),f=[];for(a=0;a<c.length;a+=1)f[a]=c.charCodeAt(a)^l.charCodeAt(a);var g=Me(f,h.length,r),d=[0];for(a=0;a<h.length;a+=1)d[a+1]=h[a]^g.charCodeAt(a);return new F(d.concat(f))}(t,this.n.bitLength()+7>>3,e,r);if(null==n)return null;var o=this.doPublic(n);if(null==o)return null;var s=o.toString(16);return 0==(1&s.length)?s:\"0\"+s},He.prototype.type=\"RSA\",Ve.prototype.equals=function Xe(t){return t==this||this.q.equals(t.q)&&this.x.equals(t.x)},Ve.prototype.toBigInteger=function $e(){return this.x},Ve.prototype.negate=function Qe(){return new Ve(this.q,this.x.negate().mod(this.q))},Ve.prototype.add=function Ze(t){return new Ve(this.q,this.x.add(t.toBigInteger()).mod(this.q))},Ve.prototype.subtract=function tr(t){return new Ve(this.q,this.x.subtract(t.toBigInteger()).mod(this.q))},Ve.prototype.multiply=function er(t){return new Ve(this.q,this.x.multiply(t.toBigInteger()).mod(this.q))},Ve.prototype.square=function rr(){return new Ve(this.q,this.x.square().mod(this.q))},Ve.prototype.divide=function nr(t){return new Ve(this.q,this.x.multiply(t.toBigInteger().modInverse(this.q)).mod(this.q))},Ke.prototype.getX=function ir(){return null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))},Ke.prototype.getY=function or(){return null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))},Ke.prototype.equals=function sr(t){return t==this||(this.isInfinity()?t.isInfinity():t.isInfinity()?this.isInfinity():!!t.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(F.ZERO)&&t.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(F.ZERO))},Ke.prototype.isInfinity=function ar(){return null==this.x&&null==this.y||this.z.equals(F.ZERO)&&!this.y.toBigInteger().equals(F.ZERO)},Ke.prototype.negate=function ur(){return new Ke(this.curve,this.x,this.y.negate(),this.z)},Ke.prototype.add=function cr(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(t.z)).mod(this.curve.q),r=t.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(t.z)).mod(this.curve.q);if(F.ZERO.equals(r))return F.ZERO.equals(e)?this.twice():this.curve.getInfinity();var n=new F(\"3\"),i=this.x.toBigInteger(),o=this.y.toBigInteger(),s=(t.x.toBigInteger(),t.y.toBigInteger(),r.square()),a=s.multiply(r),u=i.multiply(s),c=e.square().multiply(this.z),h=c.subtract(u.shiftLeft(1)).multiply(t.z).subtract(a).multiply(r).mod(this.curve.q),l=u.multiply(n).multiply(e).subtract(o.multiply(a)).subtract(c.multiply(e)).multiply(t.z).add(e.multiply(a)).mod(this.curve.q),f=a.multiply(this.z).multiply(t.z).mod(this.curve.q);return new Ke(this.curve,this.curve.fromBigInteger(h),this.curve.fromBigInteger(l),f)},Ke.prototype.twice=function hr(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var t=new F(\"3\"),e=this.x.toBigInteger(),r=this.y.toBigInteger(),n=r.multiply(this.z),i=n.multiply(r).mod(this.curve.q),o=this.curve.a.toBigInteger(),s=e.square().multiply(t);F.ZERO.equals(o)||(s=s.add(this.z.square().multiply(o)));var a=(s=s.mod(this.curve.q)).square().subtract(e.shiftLeft(3).multiply(i)).shiftLeft(1).multiply(n).mod(this.curve.q),u=s.multiply(t).multiply(e).subtract(i.shiftLeft(1)).shiftLeft(2).multiply(i).subtract(s.square().multiply(s)).mod(this.curve.q),c=n.square().multiply(n).shiftLeft(3).mod(this.curve.q);return new Ke(this.curve,this.curve.fromBigInteger(a),this.curve.fromBigInteger(u),c)},Ke.prototype.multiply=function lr(t){if(this.isInfinity())return this;if(0==t.signum())return this.curve.getInfinity();var e,r=t,n=r.multiply(new F(\"3\")),i=this.negate(),o=this,s=this.curve.q.subtract(t),a=s.multiply(new F(\"3\")),u=new Ke(this.curve,this.x,this.y),c=u.negate();for(e=n.bitLength()-2;e>0;--e){o=o.twice();var h=n.testBit(e);h!=r.testBit(e)&&(o=o.add(h?this:i))}for(e=a.bitLength()-2;e>0;--e){u=u.twice();var l=a.testBit(e);l!=s.testBit(e)&&(u=u.add(l?u:c))}return o},Ke.prototype.multiplyTwo=function fr(t,e,r){var n;n=t.bitLength()>r.bitLength()?t.bitLength()-1:r.bitLength()-1;for(var i=this.curve.getInfinity(),o=this.add(e);n>=0;)i=i.twice(),t.testBit(n)?i=r.testBit(n)?i.add(o):i.add(this):r.testBit(n)&&(i=i.add(e)),--n;return i},qe.prototype.getQ=function gr(){return this.q},qe.prototype.getA=function dr(){return this.a},qe.prototype.getB=function pr(){return this.b},qe.prototype.equals=function vr(t){return t==this||this.q.equals(t.q)&&this.a.equals(t.a)&&this.b.equals(t.b)},qe.prototype.getInfinity=function yr(){return this.infinity},qe.prototype.fromBigInteger=function mr(t){return new Ve(this.q,t)},qe.prototype.decodePointHex=function _r(t){switch(parseInt(t.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:return null;case 4:case 6:case 7:var e=(t.length-2)/2,r=t.substr(2,e),n=t.substr(e+2,e);return new Ke(this,this.fromBigInteger(new F(r,16)),this.fromBigInteger(new F(n,16)));default:return null}},\n/*! (c) Stefan Thomas | https://github.com/bitcoinjs/bitcoinjs-lib\n */\nVe.prototype.getByteLength=function(){return Math.floor((this.toBigInteger().bitLength()+7)/8)},Ke.prototype.getEncoded=function(t){var e=function t(e,r){var n=e.toByteArrayUnsigned();if(r<n.length)n=n.slice(n.length-r);else for(;r>n.length;)n.unshift(0);return n},r=this.getX().toBigInteger(),n=this.getY().toBigInteger(),i=e(r,32);return t?n.isEven()?i.unshift(2):i.unshift(3):(i.unshift(4),i=i.concat(e(n,32))),i},Ke.decodeFrom=function(t,e){e[0];var r=e.length-1,n=e.slice(1,1+r/2),i=e.slice(1+r/2,1+r);n.unshift(0),i.unshift(0);var o=new F(n),s=new F(i);return new Ke(t,t.fromBigInteger(o),t.fromBigInteger(s))},Ke.decodeFromHex=function(t,e){e.substr(0,2);var r=e.length-2,n=e.substr(2,r/2),i=e.substr(2+r/2,r/2),o=new F(n,16),s=new F(i,16);return new Ke(t,t.fromBigInteger(o),t.fromBigInteger(s))},Ke.prototype.add2D=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;if(this.x.equals(t.x))return this.y.equals(t.y)?this.twice():this.curve.getInfinity();var e=t.x.subtract(this.x),r=t.y.subtract(this.y).divide(e),n=r.square().subtract(this.x).subtract(t.x),i=r.multiply(this.x.subtract(n)).subtract(this.y);return new Ke(this.curve,n,i)},Ke.prototype.twice2D=function(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var t=this.curve.fromBigInteger(F.valueOf(2)),e=this.curve.fromBigInteger(F.valueOf(3)),r=this.x.square().multiply(e).add(this.curve.a).divide(this.y.multiply(t)),n=r.square().subtract(this.x.multiply(t)),i=r.multiply(this.x.subtract(n)).subtract(this.y);return new Ke(this.curve,n,i)},Ke.prototype.multiply2D=function(t){if(this.isInfinity())return this;if(0==t.signum())return this.curve.getInfinity();var e,r=t,n=r.multiply(new F(\"3\")),i=this.negate(),o=this;for(e=n.bitLength()-2;e>0;--e){o=o.twice();var s=n.testBit(e);s!=r.testBit(e)&&(o=o.add2D(s?this:i))}return o},Ke.prototype.isOnCurve=function(){var t=this.getX().toBigInteger(),e=this.getY().toBigInteger(),r=this.curve.getA().toBigInteger(),n=this.curve.getB().toBigInteger(),i=this.curve.getQ(),o=e.multiply(e).mod(i),s=t.multiply(t).multiply(t).add(r.multiply(t)).add(n).mod(i);return o.equals(s)},Ke.prototype.toString=function(){return\"(\"+this.getX().toBigInteger().toString()+\",\"+this.getY().toBigInteger().toString()+\")\"},Ke.prototype.validate=function(){var t=this.curve.getQ();if(this.isInfinity())throw new Error(\"Point is at infinity.\");var e=this.getX().toBigInteger(),r=this.getY().toBigInteger();if(e.compareTo(F.ONE)<0||e.compareTo(t.subtract(F.ONE))>0)throw new Error(\"x coordinate out of bounds\");if(r.compareTo(F.ONE)<0||r.compareTo(t.subtract(F.ONE))>0)throw new Error(\"y coordinate out of bounds\");if(!this.isOnCurve())throw new Error(\"Point is not on the curve.\");if(this.multiply(t).isInfinity())throw new Error(\"Point is not a scalar multiple of G.\");return!0};\n/*! Mike Samuel (c) 2009 | code.google.com/p/json-sans-eval\n */\nvar Sr=function(){var t=new RegExp('(?:false|true|null|[\\\\{\\\\}\\\\[\\\\]]|(?:-?\\\\b(?:0|[1-9][0-9]*)(?:\\\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\\\b)|(?:\"(?:[^\\\\0-\\\\x08\\\\x0a-\\\\x1f\"\\\\\\\\]|\\\\\\\\(?:[\"/\\\\\\\\bfnrt]|u[0-9A-Fa-f]{4}))*\"))',\"g\"),e=new RegExp(\"\\\\\\\\(?:([^u])|u(.{4}))\",\"g\"),n={'\"':'\"',\"/\":\"/\",\"\\\\\":\"\\\\\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\\t\"};function i(t,e,r){return e?n[e]:String.fromCharCode(parseInt(r,16))}var o=new String(\"\"),s=Object.hasOwnProperty;return function(n,a){var u,c,h=n.match(t),l=h[0],f=!1;\"{\"===l?u={}:\"[\"===l?u=[]:(u=[],f=!0);for(var g=[u],d=1-f,p=h.length;d<p;++d){var v;switch((l=h[d]).charCodeAt(0)){default:(v=g[0])[c||v.length]=+l,c=void 0;break;case 34:if(-1!==(l=l.substring(1,l.length-1)).indexOf(\"\\\\\")&&(l=l.replace(e,i)),v=g[0],!c){if(!(v instanceof Array)){c=l||o;break}c=v.length}v[c]=l,c=void 0;break;case 91:v=g[0],g.unshift(v[c||v.length]=[]),c=void 0;break;case 93:g.shift();break;case 102:(v=g[0])[c||v.length]=!1,c=void 0;break;case 110:(v=g[0])[c||v.length]=null,c=void 0;break;case 116:(v=g[0])[c||v.length]=!0,c=void 0;break;case 123:v=g[0],g.unshift(v[c||v.length]={}),c=void 0;break;case 125:g.shift()}}if(f){if(1!==g.length)throw new Error;u=u[0]}else if(g.length)throw new Error;if(a){u=function t(e,n){var i=e[n];if(i&&\"object\"===(void 0===i?\"undefined\":r(i))){var o=null;for(var u in i)if(s.call(i,u)&&i!==e){var c=t(i,u);void 0!==c?i[u]=c:(o||(o=[]),o.push(u))}if(o)for(var h=o.length;--h>=0;)delete i[o[h]]}return a.call(e,n,i)}({\"\":u},\"\")}return u}}();void 0!==br&&br||(e.KJUR=br={}),void 0!==br.asn1&&br.asn1||(br.asn1={}),br.asn1.ASN1Util=new function(){this.integerToByteHex=function(t){var e=t.toString(16);return e.length%2==1&&(e=\"0\"+e),e},this.bigIntToMinTwosComplementsHex=function(t){var e=t.toString(16);if(\"-\"!=e.substr(0,1))e.length%2==1?e=\"0\"+e:e.match(/^[0-7]/)||(e=\"00\"+e);else{var r=e.substr(1).length;r%2==1?r+=1:e.match(/^[0-7]/)||(r+=2);for(var n=\"\",i=0;i<r;i++)n+=\"f\";e=new F(n,16).xor(t).add(F.ONE).toString(16).replace(/^-/,\"\")}return e},this.getPEMStringFromHex=function(t,e){return Mr(t,e)},this.newObject=function(t){var e=br.asn1,r=e.ASN1Object,n=e.DERBoolean,i=e.DERInteger,o=e.DERBitString,s=e.DEROctetString,a=e.DERNull,u=e.DERObjectIdentifier,c=e.DEREnumerated,h=e.DERUTF8String,l=e.DERNumericString,f=e.DERPrintableString,g=e.DERTeletexString,d=e.DERIA5String,p=e.DERUTCTime,v=e.DERGeneralizedTime,y=e.DERVisibleString,m=e.DERBMPString,_=e.DERSequence,S=e.DERSet,b=e.DERTaggedObject,w=e.ASN1Util.newObject;if(t instanceof e.ASN1Object)return t;var F=Object.keys(t);if(1!=F.length)throw new Error(\"key of param shall be only one.\");var E=F[0];if(-1==\":asn1:bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:visstr:bmpstr:seq:set:tag:\".indexOf(\":\"+E+\":\"))throw new Error(\"undefined key: \"+E);if(\"bool\"==E)return new n(t[E]);if(\"int\"==E)return new i(t[E]);if(\"bitstr\"==E)return new o(t[E]);if(\"octstr\"==E)return new s(t[E]);if(\"null\"==E)return new a(t[E]);if(\"oid\"==E)return new u(t[E]);if(\"enum\"==E)return new c(t[E]);if(\"utf8str\"==E)return new h(t[E]);if(\"numstr\"==E)return new l(t[E]);if(\"prnstr\"==E)return new f(t[E]);if(\"telstr\"==E)return new g(t[E]);if(\"ia5str\"==E)return new d(t[E]);if(\"utctime\"==E)return new p(t[E]);if(\"gentime\"==E)return new v(t[E]);if(\"visstr\"==E)return new y(t[E]);if(\"bmpstr\"==E)return new m(t[E]);if(\"asn1\"==E)return new r(t[E]);if(\"seq\"==E){for(var x=t[E],A=[],k=0;k<x.length;k++){var P=w(x[k]);A.push(P)}return new _({array:A})}if(\"set\"==E){for(x=t[E],A=[],k=0;k<x.length;k++){P=w(x[k]);A.push(P)}return new S({array:A})}if(\"tag\"==E){var C=t[E];if(\"[object Array]\"===Object.prototype.toString.call(C)&&3==C.length){var T=w(C[2]);return new b({tag:C[0],explicit:C[1],obj:T})}return new b(C)}},this.jsonToASN1HEX=function(t){return this.newObject(t).getEncodedHex()}},br.asn1.ASN1Util.oidHexToInt=function(t){for(var e=\"\",r=parseInt(t.substr(0,2),16),n=(e=Math.floor(r/40)+\".\"+r%40,\"\"),i=2;i<t.length;i+=2){var o=(\"00000000\"+parseInt(t.substr(i,2),16).toString(2)).slice(-8);if(n+=o.substr(1,7),\"0\"==o.substr(0,1))e=e+\".\"+new F(n,2).toString(10),n=\"\"}return e},br.asn1.ASN1Util.oidIntToHex=function(t){var e=function t(e){var r=e.toString(16);return 1==r.length&&(r=\"0\"+r),r},r=function t(r){var n=\"\",i=new F(r,10).toString(2),o=7-i.length%7;7==o&&(o=0);for(var s=\"\",a=0;a<o;a++)s+=\"0\";i=s+i;for(a=0;a<i.length-1;a+=7){var u=i.substr(a,7);a!=i.length-7&&(u=\"1\"+u),n+=e(parseInt(u,2))}return n};if(!t.match(/^[0-9.]+$/))throw\"malformed oid string: \"+t;var n=\"\",i=t.split(\".\"),o=40*parseInt(i[0])+parseInt(i[1]);n+=e(o),i.splice(0,2);for(var s=0;s<i.length;s++)n+=r(i[s]);return n},br.asn1.ASN1Object=function(t){this.params=null,this.getLengthHexFromValue=function(){if(void 0===this.hV||null==this.hV)throw new Error(\"this.hV is null or undefined\");if(this.hV.length%2==1)throw new Error(\"value hex must be even length: n=\"+\"\".length+\",v=\"+this.hV);var t=this.hV.length/2,e=t.toString(16);if(e.length%2==1&&(e=\"0\"+e),t<128)return e;var r=e.length/2;if(r>15)throw\"ASN.1 length too long to represent by 8x: n = \"+t.toString(16);return(128+r).toString(16)+e},this.getEncodedHex=function(){return(null==this.hTLV||this.isModified)&&(this.hV=this.getFreshValueHex(),this.hL=this.getLengthHexFromValue(),this.hTLV=this.hT+this.hL+this.hV,this.isModified=!1),this.hTLV},this.getValueHex=function(){return this.getEncodedHex(),this.hV},this.getFreshValueHex=function(){return\"\"},this.setByParam=function(t){this.params=t},null!=t&&null!=t.tlv&&(this.hTLV=t.tlv,this.isModified=!1)},br.asn1.DERAbstractString=function(t){br.asn1.DERAbstractString.superclass.constructor.call(this);this.getString=function(){return this.s},this.setString=function(t){this.hTLV=null,this.isModified=!0,this.s=t,this.hV=Dr(this.s).toLowerCase()},this.setStringHex=function(t){this.hTLV=null,this.isModified=!0,this.s=null,this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(\"string\"==typeof t?this.setString(t):void 0!==t.str?this.setString(t.str):void 0!==t.hex&&this.setStringHex(t.hex))},o.lang.extend(br.asn1.DERAbstractString,br.asn1.ASN1Object),br.asn1.DERAbstractTime=function(t){br.asn1.DERAbstractTime.superclass.constructor.call(this);this.localDateToUTC=function(t){var e=t.getTime()+6e4*t.getTimezoneOffset();return new Date(e)},this.formatDate=function(t,e,r){var n=this.zeroPadding,i=this.localDateToUTC(t),o=String(i.getFullYear());\"utc\"==e&&(o=o.substr(2,2));var s=o+n(String(i.getMonth()+1),2)+n(String(i.getDate()),2)+n(String(i.getHours()),2)+n(String(i.getMinutes()),2)+n(String(i.getSeconds()),2);if(!0===r){var a=i.getMilliseconds();if(0!=a){var u=n(String(a),3);s=s+\".\"+(u=u.replace(/[0]+$/,\"\"))}}return s+\"Z\"},this.zeroPadding=function(t,e){return t.length>=e?t:new Array(e-t.length+1).join(\"0\")+t},this.getString=function(){return this.s},this.setString=function(t){this.hTLV=null,this.isModified=!0,this.s=t,this.hV=Pr(t)},this.setByDateValue=function(t,e,r,n,i,o){var s=new Date(Date.UTC(t,e-1,r,n,i,o,0));this.setByDate(s)},this.getFreshValueHex=function(){return this.hV}},o.lang.extend(br.asn1.DERAbstractTime,br.asn1.ASN1Object),br.asn1.DERAbstractStructured=function(t){br.asn1.DERAbstractString.superclass.constructor.call(this);this.setByASN1ObjectArray=function(t){this.hTLV=null,this.isModified=!0,this.asn1Array=t},this.appendASN1Object=function(t){this.hTLV=null,this.isModified=!0,this.asn1Array.push(t)},this.asn1Array=new Array,void 0!==t&&void 0!==t.array&&(this.asn1Array=t.array)},o.lang.extend(br.asn1.DERAbstractStructured,br.asn1.ASN1Object),br.asn1.DERBoolean=function(t){br.asn1.DERBoolean.superclass.constructor.call(this),this.hT=\"01\",this.hTLV=0==t?\"010100\":\"0101ff\"},o.lang.extend(br.asn1.DERBoolean,br.asn1.ASN1Object),br.asn1.DERInteger=function(t){br.asn1.DERInteger.superclass.constructor.call(this),this.hT=\"02\",this.setByBigInteger=function(t){this.hTLV=null,this.isModified=!0,this.hV=br.asn1.ASN1Util.bigIntToMinTwosComplementsHex(t)},this.setByInteger=function(t){var e=new F(String(t),10);this.setByBigInteger(e)},this.setValueHex=function(t){this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(void 0!==t.bigint?this.setByBigInteger(t.bigint):void 0!==t.int?this.setByInteger(t.int):\"number\"==typeof t?this.setByInteger(t):void 0!==t.hex&&this.setValueHex(t.hex))},o.lang.extend(br.asn1.DERInteger,br.asn1.ASN1Object),br.asn1.DERBitString=function(t){if(void 0!==t&&void 0!==t.obj){var e=br.asn1.ASN1Util.newObject(t.obj);t.hex=\"00\"+e.getEncodedHex()}br.asn1.DERBitString.superclass.constructor.call(this),this.hT=\"03\",this.setHexValueIncludingUnusedBits=function(t){this.hTLV=null,this.isModified=!0,this.hV=t},this.setUnusedBitsAndHexValue=function(t,e){if(t<0||7<t)throw\"unused bits shall be from 0 to 7: u = \"+t;var r=\"0\"+t;this.hTLV=null,this.isModified=!0,this.hV=r+e},this.setByBinaryString=function(t){var e=8-(t=t.replace(/0+$/,\"\")).length%8;8==e&&(e=0);for(var r=0;r<=e;r++)t+=\"0\";var n=\"\";for(r=0;r<t.length-1;r+=8){var i=t.substr(r,8),o=parseInt(i,2).toString(16);1==o.length&&(o=\"0\"+o),n+=o}this.hTLV=null,this.isModified=!0,this.hV=\"0\"+e+n},this.setByBooleanArray=function(t){for(var e=\"\",r=0;r<t.length;r++)1==t[r]?e+=\"1\":e+=\"0\";this.setByBinaryString(e)},this.newFalseArray=function(t){for(var e=new Array(t),r=0;r<t;r++)e[r]=!1;return e},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(\"string\"==typeof t&&t.toLowerCase().match(/^[0-9a-f]+$/)?this.setHexValueIncludingUnusedBits(t):void 0!==t.hex?this.setHexValueIncludingUnusedBits(t.hex):void 0!==t.bin?this.setByBinaryString(t.bin):void 0!==t.array&&this.setByBooleanArray(t.array))},o.lang.extend(br.asn1.DERBitString,br.asn1.ASN1Object),br.asn1.DEROctetString=function(t){if(void 0!==t&&void 0!==t.obj){var e=br.asn1.ASN1Util.newObject(t.obj);t.hex=e.getEncodedHex()}br.asn1.DEROctetString.superclass.constructor.call(this,t),this.hT=\"04\"},o.lang.extend(br.asn1.DEROctetString,br.asn1.DERAbstractString),br.asn1.DERNull=function(){br.asn1.DERNull.superclass.constructor.call(this),this.hT=\"05\",this.hTLV=\"0500\"},o.lang.extend(br.asn1.DERNull,br.asn1.ASN1Object),br.asn1.DERObjectIdentifier=function(t){br.asn1.DERObjectIdentifier.superclass.constructor.call(this),this.hT=\"06\",this.setValueHex=function(t){this.hTLV=null,this.isModified=!0,this.s=null,this.hV=t},this.setValueOidString=function(t){var e=function r(t){var e=function t(e){var r=e.toString(16);return 1==r.length&&(r=\"0\"+r),r},r=function t(r){var n=\"\",i=parseInt(r,10).toString(2),o=7-i.length%7;7==o&&(o=0);for(var s=\"\",a=0;a<o;a++)s+=\"0\";i=s+i;for(a=0;a<i.length-1;a+=7){var u=i.substr(a,7);a!=i.length-7&&(u=\"1\"+u),n+=e(parseInt(u,2))}return n};try{if(!t.match(/^[0-9.]+$/))return null;var n=\"\",i=t.split(\".\"),o=40*parseInt(i[0],10)+parseInt(i[1],10);n+=e(o),i.splice(0,2);for(var s=0;s<i.length;s++)n+=r(i[s]);return n}catch(t){return null}}(t);if(null==e)throw new Error(\"malformed oid string: \"+t);this.hTLV=null,this.isModified=!0,this.s=null,this.hV=e},this.setValueName=function(t){var e=br.asn1.x509.OID.name2oid(t);if(\"\"===e)throw new Error(\"DERObjectIdentifier oidName undefined: \"+t);this.setValueOidString(e)},this.setValueNameOrOid=function(t){t.match(/^[0-2].[0-9.]+$/)?this.setValueOidString(t):this.setValueName(t)},this.getFreshValueHex=function(){return this.hV},this.setByParam=function(t){\"string\"==typeof t?this.setValueNameOrOid(t):void 0!==t.oid?this.setValueNameOrOid(t.oid):void 0!==t.name?this.setValueNameOrOid(t.name):void 0!==t.hex&&this.setValueHex(t.hex)},void 0!==t&&this.setByParam(t)},o.lang.extend(br.asn1.DERObjectIdentifier,br.asn1.ASN1Object),br.asn1.DEREnumerated=function(t){br.asn1.DEREnumerated.superclass.constructor.call(this),this.hT=\"0a\",this.setByBigInteger=function(t){this.hTLV=null,this.isModified=!0,this.hV=br.asn1.ASN1Util.bigIntToMinTwosComplementsHex(t)},this.setByInteger=function(t){var e=new F(String(t),10);this.setByBigInteger(e)},this.setValueHex=function(t){this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(void 0!==t.int?this.setByInteger(t.int):\"number\"==typeof t?this.setByInteger(t):void 0!==t.hex&&this.setValueHex(t.hex))},o.lang.extend(br.asn1.DEREnumerated,br.asn1.ASN1Object),br.asn1.DERUTF8String=function(t){br.asn1.DERUTF8String.superclass.constructor.call(this,t),this.hT=\"0c\"},o.lang.extend(br.asn1.DERUTF8String,br.asn1.DERAbstractString),br.asn1.DERNumericString=function(t){br.asn1.DERNumericString.superclass.constructor.call(this,t),this.hT=\"12\"},o.lang.extend(br.asn1.DERNumericString,br.asn1.DERAbstractString),br.asn1.DERPrintableString=function(t){br.asn1.DERPrintableString.superclass.constructor.call(this,t),this.hT=\"13\"},o.lang.extend(br.asn1.DERPrintableString,br.asn1.DERAbstractString),br.asn1.DERTeletexString=function(t){br.asn1.DERTeletexString.superclass.constructor.call(this,t),this.hT=\"14\"},o.lang.extend(br.asn1.DERTeletexString,br.asn1.DERAbstractString),br.asn1.DERIA5String=function(t){br.asn1.DERIA5String.superclass.constructor.call(this,t),this.hT=\"16\"},o.lang.extend(br.asn1.DERIA5String,br.asn1.DERAbstractString),br.asn1.DERVisibleString=function(t){br.asn1.DERIA5String.superclass.constructor.call(this,t),this.hT=\"1a\"},o.lang.extend(br.asn1.DERVisibleString,br.asn1.DERAbstractString),br.asn1.DERBMPString=function(t){br.asn1.DERBMPString.superclass.constructor.call(this,t),this.hT=\"1e\"},o.lang.extend(br.asn1.DERBMPString,br.asn1.DERAbstractString),br.asn1.DERUTCTime=function(t){br.asn1.DERUTCTime.superclass.constructor.call(this,t),this.hT=\"17\",this.setByDate=function(t){this.hTLV=null,this.isModified=!0,this.date=t,this.s=this.formatDate(this.date,\"utc\"),this.hV=Pr(this.s)},this.getFreshValueHex=function(){return void 0===this.date&&void 0===this.s&&(this.date=new Date,this.s=this.formatDate(this.date,\"utc\"),this.hV=Pr(this.s)),this.hV},void 0!==t&&(void 0!==t.str?this.setString(t.str):\"string\"==typeof t&&t.match(/^[0-9]{12}Z$/)?this.setString(t):void 0!==t.hex?this.setStringHex(t.hex):void 0!==t.date&&this.setByDate(t.date))},o.lang.extend(br.asn1.DERUTCTime,br.asn1.DERAbstractTime),br.asn1.DERGeneralizedTime=function(t){br.asn1.DERGeneralizedTime.superclass.constructor.call(this,t),this.hT=\"18\",this.withMillis=!1,this.setByDate=function(t){this.hTLV=null,this.isModified=!0,this.date=t,this.s=this.formatDate(this.date,\"gen\",this.withMillis),this.hV=Pr(this.s)},this.getFreshValueHex=function(){return void 0===this.date&&void 0===this.s&&(this.date=new Date,this.s=this.formatDate(this.date,\"gen\",this.withMillis),this.hV=Pr(this.s)),this.hV},void 0!==t&&(void 0!==t.str?this.setString(t.str):\"string\"==typeof t&&t.match(/^[0-9]{14}Z$/)?this.setString(t):void 0!==t.hex?this.setStringHex(t.hex):void 0!==t.date&&this.setByDate(t.date),!0===t.millis&&(this.withMillis=!0))},o.lang.extend(br.asn1.DERGeneralizedTime,br.asn1.DERAbstractTime),br.asn1.DERSequence=function(t){br.asn1.DERSequence.superclass.constructor.call(this,t),this.hT=\"30\",this.getFreshValueHex=function(){for(var t=\"\",e=0;e<this.asn1Array.length;e++){t+=this.asn1Array[e].getEncodedHex()}return this.hV=t,this.hV}},o.lang.extend(br.asn1.DERSequence,br.asn1.DERAbstractStructured),br.asn1.DERSet=function(t){br.asn1.DERSet.superclass.constructor.call(this,t),this.hT=\"31\",this.sortFlag=!0,this.getFreshValueHex=function(){for(var t=new Array,e=0;e<this.asn1Array.length;e++){var r=this.asn1Array[e];t.push(r.getEncodedHex())}return 1==this.sortFlag&&t.sort(),this.hV=t.join(\"\"),this.hV},void 0!==t&&void 0!==t.sortflag&&0==t.sortflag&&(this.sortFlag=!1)},o.lang.extend(br.asn1.DERSet,br.asn1.DERAbstractStructured),br.asn1.DERTaggedObject=function(t){br.asn1.DERTaggedObject.superclass.constructor.call(this);var e=br.asn1;this.hT=\"a0\",this.hV=\"\",this.isExplicit=!0,this.asn1Object=null,this.setASN1Object=function(t,e,r){this.hT=e,this.isExplicit=t,this.asn1Object=r,this.isExplicit?(this.hV=this.asn1Object.getEncodedHex(),this.hTLV=null,this.isModified=!0):(this.hV=null,this.hTLV=r.getEncodedHex(),this.hTLV=this.hTLV.replace(/^../,e),this.isModified=!1)},this.getFreshValueHex=function(){return this.hV},this.setByParam=function(t){null!=t.tag&&(this.hT=t.tag),null!=t.explicit&&(this.isExplicit=t.explicit),null!=t.tage&&(this.hT=t.tage,this.isExplicit=!0),null!=t.tagi&&(this.hT=t.tagi,this.isExplicit=!1),null!=t.obj&&(t.obj instanceof e.ASN1Object?(this.asn1Object=t.obj,this.setASN1Object(this.isExplicit,this.hT,this.asn1Object)):\"object\"==r(t.obj)&&(this.asn1Object=e.ASN1Util.newObject(t.obj),this.setASN1Object(this.isExplicit,this.hT,this.asn1Object)))},null!=t&&this.setByParam(t)},o.lang.extend(br.asn1.DERTaggedObject,br.asn1.ASN1Object);var br,wr,Fr,Er=new function(){};function xr(t){for(var e=new Array,r=0;r<t.length;r++)e[r]=t.charCodeAt(r);return e}function Ar(t){for(var e=\"\",r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return e}function kr(t){for(var e=\"\",r=0;r<t.length;r++){var n=t[r].toString(16);1==n.length&&(n=\"0\"+n),e+=n}return e}function Pr(t){return kr(xr(t))}function Cr(t){return t=(t=(t=t.replace(/\\=/g,\"\")).replace(/\\+/g,\"-\")).replace(/\\//g,\"_\")}function Tr(t){return t.length%4==2?t+=\"==\":t.length%4==3&&(t+=\"=\"),t=(t=t.replace(/-/g,\"+\")).replace(/_/g,\"/\")}function Rr(t){return t.length%2==1&&(t=\"0\"+t),Cr(S(t))}function Ir(t){return b(Tr(t))}function Dr(t){return qr(Gr(t))}function Lr(t){return decodeURIComponent(Jr(t))}function Nr(t){for(var e=\"\",r=0;r<t.length-1;r+=2)e+=String.fromCharCode(parseInt(t.substr(r,2),16));return e}function Ur(t){for(var e=\"\",r=0;r<t.length;r++)e+=(\"0\"+t.charCodeAt(r).toString(16)).slice(-2);return e}function Br(t){return S(t)}function Or(t){var e=Br(t).replace(/(.{64})/g,\"$1\\r\\n\");return e=e.replace(/\\r\\n$/,\"\")}function jr(t){return b(t.replace(/[^0-9A-Za-z\\/+=]*/g,\"\"))}function Mr(t,e){return\"-----BEGIN \"+e+\"-----\\r\\n\"+Or(t)+\"\\r\\n-----END \"+e+\"-----\\r\\n\"}function Hr(t,e){if(-1==t.indexOf(\"-----BEGIN \"))throw\"can't find PEM header: \"+e;return jr(t=void 0!==e?(t=t.replace(new RegExp(\"^[^]*-----BEGIN \"+e+\"-----\"),\"\")).replace(new RegExp(\"-----END \"+e+\"-----[^]*$\"),\"\"):(t=t.replace(/^[^]*-----BEGIN [^-]+-----/,\"\")).replace(/-----END [^-]+-----[^]*$/,\"\"))}function Vr(t){var e,r,n,i,o,s,a,u,c,h,l;if(l=t.match(/^(\\d{2}|\\d{4})(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(|\\.\\d+)Z$/))return u=l[1],e=parseInt(u),2===u.length&&(50<=e&&e<100?e=1900+e:0<=e&&e<50&&(e=2e3+e)),r=parseInt(l[2])-1,n=parseInt(l[3]),i=parseInt(l[4]),o=parseInt(l[5]),s=parseInt(l[6]),a=0,\"\"!==(c=l[7])&&(h=(c.substr(1)+\"00\").substr(0,3),a=parseInt(h)),Date.UTC(e,r,n,i,o,s,a);throw\"unsupported zulu format: \"+t}function Kr(t){return~~(Vr(t)/1e3)}function qr(t){return t.replace(/%/g,\"\")}function Jr(t){return t.replace(/(..)/g,\"%$1\")}function Wr(t){var e=\"malformed IPv6 address\";if(!t.match(/^[0-9A-Fa-f:]+$/))throw e;var r=(t=t.toLowerCase()).split(\":\").length-1;if(r<2)throw e;var n=\":\".repeat(7-r+2),i=(t=t.replace(\"::\",n)).split(\":\");if(8!=i.length)throw e;for(var o=0;o<8;o++)i[o]=(\"0000\"+i[o]).slice(-4);return i.join(\"\")}function zr(t){if(!t.match(/^[0-9A-Fa-f]{32}$/))throw\"malformed IPv6 address octet\";for(var e=(t=t.toLowerCase()).match(/.{1,4}/g),r=0;r<8;r++)e[r]=e[r].replace(/^0+/,\"\"),\"\"==e[r]&&(e[r]=\"0\");var n=(t=\":\"+e.join(\":\")+\":\").match(/:(0:){2,}/g);if(null===n)return t.slice(1,-1);var i=\"\";for(r=0;r<n.length;r++)n[r].length>i.length&&(i=n[r]);return(t=t.replace(i,\"::\")).slice(1,-1)}function Yr(t){var e=\"malformed hex value\";if(!t.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/))throw e;if(8!=t.length)return 32==t.length?zr(t):t;try{return parseInt(t.substr(0,2),16)+\".\"+parseInt(t.substr(2,2),16)+\".\"+parseInt(t.substr(4,2),16)+\".\"+parseInt(t.substr(6,2),16)}catch(t){throw e}}function Gr(t){for(var e=encodeURIComponent(t),r=\"\",n=0;n<e.length;n++)\"%\"==e[n]?(r+=e.substr(n,3),n+=2):r=r+\"%\"+Pr(e[n]);return r}function Xr(t){return!(t.length%2!=0||!t.match(/^[0-9a-f]+$/)&&!t.match(/^[0-9A-F]+$/))}function $r(t){return t.length%2==1?\"0\"+t:t.substr(0,1)>\"7\"?\"00\"+t:t}Er.getLblen=function(t,e){if(\"8\"!=t.substr(e+2,1))return 1;var r=parseInt(t.substr(e+3,1));return 0==r?-1:0<r&&r<10?r+1:-2},Er.getL=function(t,e){var r=Er.getLblen(t,e);return r<1?\"\":t.substr(e+2,2*r)},Er.getVblen=function(t,e){var r;return\"\"==(r=Er.getL(t,e))?-1:(\"8\"===r.substr(0,1)?new F(r.substr(2),16):new F(r,16)).intValue()},Er.getVidx=function(t,e){var r=Er.getLblen(t,e);return r<0?r:e+2*(r+1)},Er.getV=function(t,e){var r=Er.getVidx(t,e),n=Er.getVblen(t,e);return t.substr(r,2*n)},Er.getTLV=function(t,e){return t.substr(e,2)+Er.getL(t,e)+Er.getV(t,e)},Er.getTLVblen=function(t,e){return 2+2*Er.getLblen(t,e)+2*Er.getVblen(t,e)},Er.getNextSiblingIdx=function(t,e){return Er.getVidx(t,e)+2*Er.getVblen(t,e)},Er.getChildIdx=function(t,e){var r,n,i,o=Er,s=[];r=o.getVidx(t,e),n=2*o.getVblen(t,e),\"03\"==t.substr(e,2)&&(r+=2,n-=2),i=0;for(var a=r;i<=n;){var u=o.getTLVblen(t,a);if((i+=u)<=n&&s.push(a),a+=u,i>=n)break}return s},Er.getNthChildIdx=function(t,e,r){return Er.getChildIdx(t,e)[r]},Er.getIdxbyList=function(t,e,r,n){var i,o,s=Er;return 0==r.length?void 0!==n&&t.substr(e,2)!==n?-1:e:(i=r.shift())>=(o=s.getChildIdx(t,e)).length?-1:s.getIdxbyList(t,o[i],r,n)},Er.getIdxbyListEx=function(t,e,r,n){var i,o,s=Er;if(0==r.length)return void 0!==n&&t.substr(e,2)!==n?-1:e;i=r.shift(),o=s.getChildIdx(t,e);for(var a=0,u=0;u<o.length;u++){var c=t.substr(o[u],2);if(\"number\"==typeof i&&!s.isContextTag(c)&&a==i||\"string\"==typeof i&&s.isContextTag(c,i))return s.getIdxbyListEx(t,o[u],r,n);s.isContextTag(c)||a++}return-1},Er.getTLVbyList=function(t,e,r,n){var i=Er,o=i.getIdxbyList(t,e,r,n);return-1==o||o>=t.length?null:i.getTLV(t,o)},Er.getTLVbyListEx=function(t,e,r,n){var i=Er,o=i.getIdxbyListEx(t,e,r,n);return-1==o?null:i.getTLV(t,o)},Er.getVbyList=function(t,e,r,n,i){var o,s,a=Er;return-1==(o=a.getIdxbyList(t,e,r,n))||o>=t.length?null:(s=a.getV(t,o),!0===i&&(s=s.substr(2)),s)},Er.getVbyListEx=function(t,e,r,n,i){var o,s,a=Er;return-1==(o=a.getIdxbyListEx(t,e,r,n))?null:(s=a.getV(t,o),\"03\"==t.substr(o,2)&&!1!==i&&(s=s.substr(2)),s)},Er.getInt=function(t,e,r){null==r&&(r=-1);try{var n=t.substr(e,2);if(\"02\"!=n&&\"03\"!=n)return r;var i=Er.getV(t,e);return\"02\"==n?parseInt(i,16):function o(t){try{var e=t.substr(0,2);if(\"00\"==e)return parseInt(t.substr(2),16);var r=parseInt(e,16),n=t.substr(2),i=parseInt(n,16).toString(2);return\"0\"==i&&(i=\"00000000\"),i=i.slice(0,0-r),parseInt(i,2)}catch(t){return-1}}(i)}catch(t){return r}},Er.getOID=function(t,e,r){null==r&&(r=null);try{return\"06\"!=t.substr(e,2)?r:function n(t){if(!Xr(t))return null;try{var e=[],r=t.substr(0,2),n=parseInt(r,16);e[0]=new String(Math.floor(n/40)),e[1]=new String(n%40);for(var i=t.substr(2),o=[],s=0;s<i.length/2;s++)o.push(parseInt(i.substr(2*s,2),16));var a=[],u=\"\";for(s=0;s<o.length;s++)128&o[s]?u+=Qr((127&o[s]).toString(2),7):(u+=Qr((127&o[s]).toString(2),7),a.push(new String(parseInt(u,2))),u=\"\");var c=e.join(\".\");return a.length>0&&(c=c+\".\"+a.join(\".\")),c}catch(t){return null}}(Er.getV(t,e))}catch(t){return r}},Er.getOIDName=function(t,e,r){null==r&&(r=null);try{var n=Er.getOID(t,e,r);if(n==r)return r;var i=br.asn1.x509.OID.oid2name(n);return\"\"==i?n:i}catch(t){return r}},Er.getString=function(t,e,r){null==r&&(r=null);try{return Nr(Er.getV(t,e))}catch(t){return r}},Er.hextooidstr=function(t){var e=function t(e,r){return e.length>=r?e:new Array(r-e.length+1).join(\"0\")+e},r=[],n=t.substr(0,2),i=parseInt(n,16);r[0]=new String(Math.floor(i/40)),r[1]=new String(i%40);for(var o=t.substr(2),s=[],a=0;a<o.length/2;a++)s.push(parseInt(o.substr(2*a,2),16));var u=[],c=\"\";for(a=0;a<s.length;a++)128&s[a]?c+=e((127&s[a]).toString(2),7):(c+=e((127&s[a]).toString(2),7),u.push(new String(parseInt(c,2))),c=\"\");var h=r.join(\".\");return u.length>0&&(h=h+\".\"+u.join(\".\")),h},Er.dump=function(t,e,r,n){var i=Er,o=i.getV,s=i.dump,a=i.getChildIdx,u=t;t instanceof br.asn1.ASN1Object&&(u=t.getEncodedHex());var c=function t(e,r){return e.length<=2*r?e:e.substr(0,r)+\"..(total \"+e.length/2+\"bytes)..\"+e.substr(e.length-r,r)};void 0===e&&(e={ommit_long_octet:32}),void 0===r&&(r=0),void 0===n&&(n=\"\");var h,l=e.ommit_long_octet;if(\"01\"==(h=u.substr(r,2)))return\"00\"==(f=o(u,r))?n+\"BOOLEAN FALSE\\n\":n+\"BOOLEAN TRUE\\n\";if(\"02\"==h)return n+\"INTEGER \"+c(f=o(u,r),l)+\"\\n\";if(\"03\"==h){var f=o(u,r);if(i.isASN1HEX(f.substr(2))){var g=n+\"BITSTRING, encapsulates\\n\";return g+=s(f.substr(2),e,0,n+\"  \")}return n+\"BITSTRING \"+c(f,l)+\"\\n\"}if(\"04\"==h){f=o(u,r);if(i.isASN1HEX(f)){g=n+\"OCTETSTRING, encapsulates\\n\";return g+=s(f,e,0,n+\"  \")}return n+\"OCTETSTRING \"+c(f,l)+\"\\n\"}if(\"05\"==h)return n+\"NULL\\n\";if(\"06\"==h){var d=o(u,r),p=br.asn1.ASN1Util.oidHexToInt(d),v=br.asn1.x509.OID.oid2name(p),y=p.replace(/\\./g,\" \");return\"\"!=v?n+\"ObjectIdentifier \"+v+\" (\"+y+\")\\n\":n+\"ObjectIdentifier (\"+y+\")\\n\"}if(\"0a\"==h)return n+\"ENUMERATED \"+parseInt(o(u,r))+\"\\n\";if(\"0c\"==h)return n+\"UTF8String '\"+Lr(o(u,r))+\"'\\n\";if(\"13\"==h)return n+\"PrintableString '\"+Lr(o(u,r))+\"'\\n\";if(\"14\"==h)return n+\"TeletexString '\"+Lr(o(u,r))+\"'\\n\";if(\"16\"==h)return n+\"IA5String '\"+Lr(o(u,r))+\"'\\n\";if(\"17\"==h)return n+\"UTCTime \"+Lr(o(u,r))+\"\\n\";if(\"18\"==h)return n+\"GeneralizedTime \"+Lr(o(u,r))+\"\\n\";if(\"1a\"==h)return n+\"VisualString '\"+Lr(o(u,r))+\"'\\n\";if(\"1e\"==h)return n+\"BMPString '\"+Lr(o(u,r))+\"'\\n\";if(\"30\"==h){if(\"3000\"==u.substr(r,4))return n+\"SEQUENCE {}\\n\";g=n+\"SEQUENCE\\n\";var m=e;if((2==(b=a(u,r)).length||3==b.length)&&\"06\"==u.substr(b[0],2)&&\"04\"==u.substr(b[b.length-1],2)){v=i.oidname(o(u,b[0]));var _=JSON.parse(JSON.stringify(e));_.x509ExtName=v,m=_}for(var S=0;S<b.length;S++)g+=s(u,m,b[S],n+\"  \");return g}if(\"31\"==h){g=n+\"SET\\n\";var b=a(u,r);for(S=0;S<b.length;S++)g+=s(u,e,b[S],n+\"  \");return g}if(0!=(128&(h=parseInt(h,16)))){var w=31&h;if(0!=(32&h)){for(g=n+\"[\"+w+\"]\\n\",b=a(u,r),S=0;S<b.length;S++)g+=s(u,e,b[S],n+\"  \");return g}f=o(u,r);if(Er.isASN1HEX(f)){var g=n+\"[\"+w+\"]\\n\";return g+=s(f,e,0,n+\"  \")}return(\"68747470\"==f.substr(0,8)||\"subjectAltName\"===e.x509ExtName&&2==w)&&(f=Lr(f)),g=n+\"[\"+w+\"] \"+f+\"\\n\"}return n+\"UNKNOWN(\"+h+\") \"+o(u,r)+\"\\n\"},Er.isContextTag=function(t,e){var r,n;t=t.toLowerCase();try{r=parseInt(t,16)}catch(t){return-1}if(void 0===e)return 128==(192&r);try{return null!=e.match(/^\\[[0-9]+\\]$/)&&(!((n=parseInt(e.substr(1,e.length-1),10))>31)&&(128==(192&r)&&(31&r)==n))}catch(t){return!1}},Er.isASN1HEX=function(t){var e=Er;if(t.length%2==1)return!1;var r=e.getVblen(t,0),n=t.substr(0,2),i=e.getL(t,0);return t.length-n.length-i.length==2*r},Er.checkStrictDER=function(t,e,r,n,i){var o=Er;if(void 0===r){if(\"string\"!=typeof t)throw new Error(\"not hex string\");if(t=t.toLowerCase(),!br.lang.String.isHex(t))throw new Error(\"not hex string\");r=t.length,i=(n=t.length/2)<128?1:Math.ceil(n.toString(16))+1}if(o.getL(t,e).length>2*i)throw new Error(\"L of TLV too long: idx=\"+e);var s=o.getVblen(t,e);if(s>n)throw new Error(\"value of L too long than hex: idx=\"+e);var a=o.getTLV(t,e),u=a.length-2-o.getL(t,e).length;if(u!==2*s)throw new Error(\"V string length and L's value not the same:\"+u+\"/\"+2*s);if(0===e&&t.length!=a.length)throw new Error(\"total length and TLV length unmatch:\"+t.length+\"!=\"+a.length);var c=t.substr(e,2);if(\"02\"===c){var h=o.getVidx(t,e);if(\"00\"==t.substr(h,2)&&t.charCodeAt(h+2)<56)throw new Error(\"not least zeros for DER INTEGER\")}if(32&parseInt(c,16)){for(var l=o.getVblen(t,e),f=0,g=o.getChildIdx(t,e),d=0;d<g.length;d++){f+=o.getTLV(t,g[d]).length,o.checkStrictDER(t,g[d],r,n,i)}if(2*l!=f)throw new Error(\"sum of children's TLV length and L unmatch: \"+2*l+\"!=\"+f)}},Er.oidname=function(t){var e=br.asn1;br.lang.String.isHex(t)&&(t=e.ASN1Util.oidHexToInt(t));var r=e.x509.OID.oid2name(t);return\"\"===r&&(r=t),r},void 0!==br&&br||(e.KJUR=br={}),void 0!==br.lang&&br.lang||(br.lang={}),br.lang.String=function(){},\"function\"==typeof t?(e.utf8tob64u=wr=function e(r){return Cr(t.from(r,\"utf8\").toString(\"base64\"))},e.b64utoutf8=Fr=function e(r){return t.from(Tr(r),\"base64\").toString(\"utf8\")}):(e.utf8tob64u=wr=function t(e){return Rr(qr(Gr(e)))},e.b64utoutf8=Fr=function t(e){return decodeURIComponent(Jr(Ir(e)))}),br.lang.String.isInteger=function(t){return!!t.match(/^[0-9]+$/)||!!t.match(/^-[0-9]+$/)},br.lang.String.isHex=function(t){return Xr(t)},br.lang.String.isBase64=function(t){return!(!(t=t.replace(/\\s+/g,\"\")).match(/^[0-9A-Za-z+\\/]+={0,3}$/)||t.length%4!=0)},br.lang.String.isBase64URL=function(t){return!t.match(/[+/=]/)&&(t=Tr(t),br.lang.String.isBase64(t))},br.lang.String.isIntegerArray=function(t){return!!(t=t.replace(/\\s+/g,\"\")).match(/^\\[[0-9,]+\\]$/)},br.lang.String.isPrintable=function(t){return null!==t.match(/^[0-9A-Za-z '()+,-./:=?]*$/)},br.lang.String.isIA5=function(t){return null!==t.match(/^[\\x20-\\x21\\x23-\\x7f]*$/)},br.lang.String.isMail=function(t){return null!==t.match(/^[A-Za-z0-9]{1}[A-Za-z0-9_.-]*@{1}[A-Za-z0-9_.-]{1,}\\.[A-Za-z0-9]{1,}$/)};var Qr=function t(e,r,n){return null==n&&(n=\"0\"),e.length>=r?e:new Array(r-e.length+1).join(n)+e};void 0!==br&&br||(e.KJUR=br={}),void 0!==br.crypto&&br.crypto||(br.crypto={}),br.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:\"3021300906052b0e03021a05000414\",sha224:\"302d300d06096086480165030402040500041c\",sha256:\"3031300d060960864801650304020105000420\",sha384:\"3041300d060960864801650304020205000430\",sha512:\"3051300d060960864801650304020305000440\",md2:\"3020300c06082a864886f70d020205000410\",md5:\"3020300c06082a864886f70d020505000410\",ripemd160:\"3021300906052b2403020105000414\"},this.DEFAULTPROVIDER={md5:\"cryptojs\",sha1:\"cryptojs\",sha224:\"cryptojs\",sha256:\"cryptojs\",sha384:\"cryptojs\",sha512:\"cryptojs\",ripemd160:\"cryptojs\",hmacmd5:\"cryptojs\",hmacsha1:\"cryptojs\",hmacsha224:\"cryptojs\",hmacsha256:\"cryptojs\",hmacsha384:\"cryptojs\",hmacsha512:\"cryptojs\",hmacripemd160:\"cryptojs\",MD5withRSA:\"cryptojs/jsrsa\",SHA1withRSA:\"cryptojs/jsrsa\",SHA224withRSA:\"cryptojs/jsrsa\",SHA256withRSA:\"cryptojs/jsrsa\",SHA384withRSA:\"cryptojs/jsrsa\",SHA512withRSA:\"cryptojs/jsrsa\",RIPEMD160withRSA:\"cryptojs/jsrsa\",MD5withECDSA:\"cryptojs/jsrsa\",SHA1withECDSA:\"cryptojs/jsrsa\",SHA224withECDSA:\"cryptojs/jsrsa\",SHA256withECDSA:\"cryptojs/jsrsa\",SHA384withECDSA:\"cryptojs/jsrsa\",SHA512withECDSA:\"cryptojs/jsrsa\",RIPEMD160withECDSA:\"cryptojs/jsrsa\",SHA1withDSA:\"cryptojs/jsrsa\",SHA224withDSA:\"cryptojs/jsrsa\",SHA256withDSA:\"cryptojs/jsrsa\",MD5withRSAandMGF1:\"cryptojs/jsrsa\",SHAwithRSAandMGF1:\"cryptojs/jsrsa\",SHA1withRSAandMGF1:\"cryptojs/jsrsa\",SHA224withRSAandMGF1:\"cryptojs/jsrsa\",SHA256withRSAandMGF1:\"cryptojs/jsrsa\",SHA384withRSAandMGF1:\"cryptojs/jsrsa\",SHA512withRSAandMGF1:\"cryptojs/jsrsa\",RIPEMD160withRSAandMGF1:\"cryptojs/jsrsa\"},this.CRYPTOJSMESSAGEDIGESTNAME={md5:y.algo.MD5,sha1:y.algo.SHA1,sha224:y.algo.SHA224,sha256:y.algo.SHA256,sha384:y.algo.SHA384,sha512:y.algo.SHA512,ripemd160:y.algo.RIPEMD160},this.getDigestInfoHex=function(t,e){if(void 0===this.DIGESTINFOHEAD[e])throw\"alg not supported in Util.DIGESTINFOHEAD: \"+e;return this.DIGESTINFOHEAD[e]+t},this.getPaddedDigestInfoHex=function(t,e,r){var n=this.getDigestInfoHex(t,e),i=r/4;if(n.length+22>i)throw\"key is too short for SigAlg: keylen=\"+r+\",\"+e;for(var o=\"0001\",s=\"00\"+n,a=\"\",u=i-o.length-s.length,c=0;c<u;c+=2)a+=\"ff\";return o+a+s},this.hashString=function(t,e){return new br.crypto.MessageDigest({alg:e}).digestString(t)},this.hashHex=function(t,e){return new br.crypto.MessageDigest({alg:e}).digestHex(t)},this.sha1=function(t){return this.hashString(t,\"sha1\")},this.sha256=function(t){return this.hashString(t,\"sha256\")},this.sha256Hex=function(t){return this.hashHex(t,\"sha256\")},this.sha512=function(t){return this.hashString(t,\"sha512\")},this.sha512Hex=function(t){return this.hashHex(t,\"sha512\")},this.isKey=function(t){return t instanceof He||t instanceof br.crypto.DSA||t instanceof br.crypto.ECDSA}},br.crypto.Util.md5=function(t){return new br.crypto.MessageDigest({alg:\"md5\",prov:\"cryptojs\"}).digestString(t)},br.crypto.Util.ripemd160=function(t){return new br.crypto.MessageDigest({alg:\"ripemd160\",prov:\"cryptojs\"}).digestString(t)},br.crypto.Util.SECURERANDOMGEN=new Oe,br.crypto.Util.getRandomHexOfNbytes=function(t){var e=new Array(t);return br.crypto.Util.SECURERANDOMGEN.nextBytes(e),kr(e)},br.crypto.Util.getRandomBigIntegerOfNbytes=function(t){return new F(br.crypto.Util.getRandomHexOfNbytes(t),16)},br.crypto.Util.getRandomHexOfNbits=function(t){var e=t%8,r=new Array((t-e)/8+1);return br.crypto.Util.SECURERANDOMGEN.nextBytes(r),r[0]=(255<<e&255^255)&r[0],kr(r)},br.crypto.Util.getRandomBigIntegerOfNbits=function(t){return new F(br.crypto.Util.getRandomHexOfNbits(t),16)},br.crypto.Util.getRandomBigIntegerZeroToMax=function(t){for(var e=t.bitLength();;){var r=br.crypto.Util.getRandomBigIntegerOfNbits(e);if(-1!=t.compareTo(r))return r}},br.crypto.Util.getRandomBigIntegerMinToMax=function(t,e){var r=t.compareTo(e);if(1==r)throw\"biMin is greater than biMax\";if(0==r)return t;var n=e.subtract(t);return br.crypto.Util.getRandomBigIntegerZeroToMax(n).add(t)},br.crypto.MessageDigest=function(t){this.setAlgAndProvider=function(t,e){if(null!==(t=br.crypto.MessageDigest.getCanonicalAlgName(t))&&void 0===e&&(e=br.crypto.Util.DEFAULTPROVIDER[t]),-1!=\":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(t)&&\"cryptojs\"==e){try{this.md=br.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[t].create()}catch(e){throw\"setAlgAndProvider hash alg set fail alg=\"+t+\"/\"+e}this.updateString=function(t){this.md.update(t)},this.updateHex=function(t){var e=y.enc.Hex.parse(t);this.md.update(e)},this.digest=function(){return this.md.finalize().toString(y.enc.Hex)},this.digestString=function(t){return this.updateString(t),this.digest()},this.digestHex=function(t){return this.updateHex(t),this.digest()}}if(-1!=\":sha256:\".indexOf(t)&&\"sjcl\"==e){try{this.md=new sjcl.hash.sha256}catch(e){throw\"setAlgAndProvider hash alg set fail alg=\"+t+\"/\"+e}this.updateString=function(t){this.md.update(t)},this.updateHex=function(t){var e=sjcl.codec.hex.toBits(t);this.md.update(e)},this.digest=function(){var t=this.md.finalize();return sjcl.codec.hex.fromBits(t)},this.digestString=function(t){return this.updateString(t),this.digest()},this.digestHex=function(t){return this.updateHex(t),this.digest()}}},this.updateString=function(t){throw\"updateString(str) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName},this.updateHex=function(t){throw\"updateHex(hex) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName},this.digest=function(){throw\"digest() not supported for this alg/prov: \"+this.algName+\"/\"+this.provName},this.digestString=function(t){throw\"digestString(str) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName},this.digestHex=function(t){throw\"digestHex(hex) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName},void 0!==t&&void 0!==t.alg&&(this.algName=t.alg,void 0===t.prov&&(this.provName=br.crypto.Util.DEFAULTPROVIDER[this.algName]),this.setAlgAndProvider(this.algName,this.provName))},br.crypto.MessageDigest.getCanonicalAlgName=function(t){return\"string\"==typeof t&&(t=(t=t.toLowerCase()).replace(/-/,\"\")),t},br.crypto.MessageDigest.getHashLength=function(t){var e=br.crypto.MessageDigest,r=e.getCanonicalAlgName(t);if(void 0===e.HASHLENGTH[r])throw\"not supported algorithm: \"+t;return e.HASHLENGTH[r]},br.crypto.MessageDigest.HASHLENGTH={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,ripemd160:20},br.crypto.Mac=function(t){this.setAlgAndProvider=function(t,e){if(null==(t=t.toLowerCase())&&(t=\"hmacsha1\"),\"hmac\"!=(t=t.toLowerCase()).substr(0,4))throw\"setAlgAndProvider unsupported HMAC alg: \"+t;void 0===e&&(e=br.crypto.Util.DEFAULTPROVIDER[t]),this.algProv=t+\"/\"+e;var r=t.substr(4);if(-1!=\":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(r)&&\"cryptojs\"==e){try{var n=br.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[r];this.mac=y.algo.HMAC.create(n,this.pass)}catch(t){throw\"setAlgAndProvider hash alg set fail hashAlg=\"+r+\"/\"+t}this.updateString=function(t){this.mac.update(t)},this.updateHex=function(t){var e=y.enc.Hex.parse(t);this.mac.update(e)},this.doFinal=function(){return this.mac.finalize().toString(y.enc.Hex)},this.doFinalString=function(t){return this.updateString(t),this.doFinal()},this.doFinalHex=function(t){return this.updateHex(t),this.doFinal()}}},this.updateString=function(t){throw\"updateString(str) not supported for this alg/prov: \"+this.algProv},this.updateHex=function(t){throw\"updateHex(hex) not supported for this alg/prov: \"+this.algProv},this.doFinal=function(){throw\"digest() not supported for this alg/prov: \"+this.algProv},this.doFinalString=function(t){throw\"digestString(str) not supported for this alg/prov: \"+this.algProv},this.doFinalHex=function(t){throw\"digestHex(hex) not supported for this alg/prov: \"+this.algProv},this.setPassword=function(t){if(\"string\"==typeof t){var e=t;return t.length%2!=1&&t.match(/^[0-9A-Fa-f]+$/)||(e=Ur(t)),void(this.pass=y.enc.Hex.parse(e))}if(\"object\"!=(void 0===t?\"undefined\":r(t)))throw\"KJUR.crypto.Mac unsupported password type: \"+t;e=null;if(void 0!==t.hex){if(t.hex.length%2!=0||!t.hex.match(/^[0-9A-Fa-f]+$/))throw\"Mac: wrong hex password: \"+t.hex;e=t.hex}if(void 0!==t.utf8&&(e=Dr(t.utf8)),void 0!==t.rstr&&(e=Ur(t.rstr)),void 0!==t.b64&&(e=b(t.b64)),void 0!==t.b64u&&(e=Ir(t.b64u)),null==e)throw\"KJUR.crypto.Mac unsupported password type: \"+t;this.pass=y.enc.Hex.parse(e)},void 0!==t&&(void 0!==t.pass&&this.setPassword(t.pass),void 0!==t.alg&&(this.algName=t.alg,void 0===t.prov&&(this.provName=br.crypto.Util.DEFAULTPROVIDER[this.algName]),this.setAlgAndProvider(this.algName,this.provName)))},br.crypto.Signature=function(t){var e=null;if(this._setAlgNames=function(){var t=this.algName.match(/^(.+)with(.+)$/);t&&(this.mdAlgName=t[1].toLowerCase(),this.pubkeyAlgName=t[2].toLowerCase(),\"rsaandmgf1\"==this.pubkeyAlgName&&\"sha\"==this.mdAlgName&&(this.mdAlgName=\"sha1\"))},this._zeroPaddingOfSignature=function(t,e){for(var r=\"\",n=e/4-t.length,i=0;i<n;i++)r+=\"0\";return r+t},this.setAlgAndProvider=function(t,e){if(this._setAlgNames(),\"cryptojs/jsrsa\"!=e)throw new Error(\"provider not supported: \"+e);if(-1!=\":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(this.mdAlgName)){try{this.md=new br.crypto.MessageDigest({alg:this.mdAlgName})}catch(t){throw new Error(\"setAlgAndProvider hash alg set fail alg=\"+this.mdAlgName+\"/\"+t)}this.init=function(t,e){var r=null;try{r=void 0===e?Zr.getKey(t):Zr.getKey(t,e)}catch(t){throw\"init failed:\"+t}if(!0===r.isPrivate)this.prvKey=r,this.state=\"SIGN\";else{if(!0!==r.isPublic)throw\"init failed.:\"+r;this.pubKey=r,this.state=\"VERIFY\"}},this.updateString=function(t){this.md.updateString(t)},this.updateHex=function(t){this.md.updateHex(t)},this.sign=function(){if(this.sHashHex=this.md.digest(),void 0===this.prvKey&&void 0!==this.ecprvhex&&void 0!==this.eccurvename&&void 0!==br.crypto.ECDSA&&(this.prvKey=new br.crypto.ECDSA({curve:this.eccurvename,prv:this.ecprvhex})),this.prvKey instanceof He&&\"rsaandmgf1\"===this.pubkeyAlgName)this.hSign=this.prvKey.signWithMessageHashPSS(this.sHashHex,this.mdAlgName,this.pssSaltLen);else if(this.prvKey instanceof He&&\"rsa\"===this.pubkeyAlgName)this.hSign=this.prvKey.signWithMessageHash(this.sHashHex,this.mdAlgName);else if(this.prvKey instanceof br.crypto.ECDSA)this.hSign=this.prvKey.signWithMessageHash(this.sHashHex);else{if(!(this.prvKey instanceof br.crypto.DSA))throw\"Signature: unsupported private key alg: \"+this.pubkeyAlgName;this.hSign=this.prvKey.signWithMessageHash(this.sHashHex)}return this.hSign},this.signString=function(t){return this.updateString(t),this.sign()},this.signHex=function(t){return this.updateHex(t),this.sign()},this.verify=function(t){if(this.sHashHex=this.md.digest(),void 0===this.pubKey&&void 0!==this.ecpubhex&&void 0!==this.eccurvename&&void 0!==br.crypto.ECDSA&&(this.pubKey=new br.crypto.ECDSA({curve:this.eccurvename,pub:this.ecpubhex})),this.pubKey instanceof He&&\"rsaandmgf1\"===this.pubkeyAlgName)return this.pubKey.verifyWithMessageHashPSS(this.sHashHex,t,this.mdAlgName,this.pssSaltLen);if(this.pubKey instanceof He&&\"rsa\"===this.pubkeyAlgName)return this.pubKey.verifyWithMessageHash(this.sHashHex,t);if(void 0!==br.crypto.ECDSA&&this.pubKey instanceof br.crypto.ECDSA)return this.pubKey.verifyWithMessageHash(this.sHashHex,t);if(void 0!==br.crypto.DSA&&this.pubKey instanceof br.crypto.DSA)return this.pubKey.verifyWithMessageHash(this.sHashHex,t);throw\"Signature: unsupported public key alg: \"+this.pubkeyAlgName}}},this.init=function(t,e){throw\"init(key, pass) not supported for this alg:prov=\"+this.algProvName},this.updateString=function(t){throw\"updateString(str) not supported for this alg:prov=\"+this.algProvName},this.updateHex=function(t){throw\"updateHex(hex) not supported for this alg:prov=\"+this.algProvName},this.sign=function(){throw\"sign() not supported for this alg:prov=\"+this.algProvName},this.signString=function(t){throw\"digestString(str) not supported for this alg:prov=\"+this.algProvName},this.signHex=function(t){throw\"digestHex(hex) not supported for this alg:prov=\"+this.algProvName},this.verify=function(t){throw\"verify(hSigVal) not supported for this alg:prov=\"+this.algProvName},this.initParams=t,void 0!==t&&(void 0!==t.alg&&(this.algName=t.alg,void 0===t.prov?this.provName=br.crypto.Util.DEFAULTPROVIDER[this.algName]:this.provName=t.prov,this.algProvName=this.algName+\":\"+this.provName,this.setAlgAndProvider(this.algName,this.provName),this._setAlgNames()),void 0!==t.psssaltlen&&(this.pssSaltLen=t.psssaltlen),void 0!==t.prvkeypem)){if(void 0!==t.prvkeypas)throw\"both prvkeypem and prvkeypas parameters not supported\";try{e=Zr.getKey(t.prvkeypem);this.init(e)}catch(t){throw\"fatal error to load pem private key: \"+t}}},br.crypto.Cipher=function(t){},br.crypto.Cipher.encrypt=function(t,e,r){if(e instanceof He&&e.isPublic){var n=br.crypto.Cipher.getAlgByKeyAndName(e,r);if(\"RSA\"===n)return e.encrypt(t);if(\"RSAOAEP\"===n)return e.encryptOAEP(t,\"sha1\");var i=n.match(/^RSAOAEP(\\d+)$/);if(null!==i)return e.encryptOAEP(t,\"sha\"+i[1]);throw\"Cipher.encrypt: unsupported algorithm for RSAKey: \"+r}throw\"Cipher.encrypt: unsupported key or algorithm\"},br.crypto.Cipher.decrypt=function(t,e,r){if(e instanceof He&&e.isPrivate){var n=br.crypto.Cipher.getAlgByKeyAndName(e,r);if(\"RSA\"===n)return e.decrypt(t);if(\"RSAOAEP\"===n)return e.decryptOAEP(t,\"sha1\");var i=n.match(/^RSAOAEP(\\d+)$/);if(null!==i)return e.decryptOAEP(t,\"sha\"+i[1]);throw\"Cipher.decrypt: unsupported algorithm for RSAKey: \"+r}throw\"Cipher.decrypt: unsupported key or algorithm\"},br.crypto.Cipher.getAlgByKeyAndName=function(t,e){if(t instanceof He){if(-1!=\":RSA:RSAOAEP:RSAOAEP224:RSAOAEP256:RSAOAEP384:RSAOAEP512:\".indexOf(e))return e;if(null==e)return\"RSA\";throw\"getAlgByKeyAndName: not supported algorithm name for RSAKey: \"+e}throw\"getAlgByKeyAndName: not supported algorithm name: \"+e},br.crypto.OID=new function(){this.oidhex2name={\"2a864886f70d010101\":\"rsaEncryption\",\"2a8648ce3d0201\":\"ecPublicKey\",\"2a8648ce380401\":\"dsa\",\"2a8648ce3d030107\":\"secp256r1\",\"2b8104001f\":\"secp192k1\",\"2b81040021\":\"secp224r1\",\"2b8104000a\":\"secp256k1\",\"2b81040023\":\"secp521r1\",\"2b81040022\":\"secp384r1\",\"2a8648ce380403\":\"SHA1withDSA\",\"608648016503040301\":\"SHA224withDSA\",\"608648016503040302\":\"SHA256withDSA\"}},void 0!==br&&br||(e.KJUR=br={}),void 0!==br.crypto&&br.crypto||(br.crypto={}),br.crypto.ECDSA=function(t){var e=Error,n=F,i=Ke,o=br.crypto.ECDSA,s=br.crypto.ECParameterDB,a=o.getName,u=Er,c=u.getVbyListEx,h=u.isASN1HEX,l=new Oe;this.type=\"EC\",this.isPrivate=!1,this.isPublic=!1,this.getBigRandom=function(t){return new n(t.bitLength(),l).mod(t.subtract(n.ONE)).add(n.ONE)},this.setNamedCurve=function(t){this.ecparams=s.getByName(t),this.prvKeyHex=null,this.pubKeyHex=null,this.curveName=t},this.setPrivateKeyHex=function(t){this.isPrivate=!0,this.prvKeyHex=t},this.setPublicKeyHex=function(t){this.isPublic=!0,this.pubKeyHex=t},this.getPublicKeyXYHex=function(){var t=this.pubKeyHex;if(\"04\"!==t.substr(0,2))throw\"this method supports uncompressed format(04) only\";var e=this.ecparams.keylen/4;if(t.length!==2+2*e)throw\"malformed public key hex length\";var r={};return r.x=t.substr(2,e),r.y=t.substr(2+e),r},this.getShortNISTPCurveName=function(){var t=this.curveName;return\"secp256r1\"===t||\"NIST P-256\"===t||\"P-256\"===t||\"prime256v1\"===t?\"P-256\":\"secp384r1\"===t||\"NIST P-384\"===t||\"P-384\"===t?\"P-384\":null},this.generateKeyPairHex=function(){var t=this.ecparams.n,e=this.getBigRandom(t),r=this.ecparams.G.multiply(e),n=r.getX().toBigInteger(),i=r.getY().toBigInteger(),o=this.ecparams.keylen/4,s=(\"0000000000\"+e.toString(16)).slice(-o),a=\"04\"+(\"0000000000\"+n.toString(16)).slice(-o)+(\"0000000000\"+i.toString(16)).slice(-o);return this.setPrivateKeyHex(s),this.setPublicKeyHex(a),{ecprvhex:s,ecpubhex:a}},this.signWithMessageHash=function(t){return this.signHex(t,this.prvKeyHex)},this.signHex=function(t,e){var r=new n(e,16),i=this.ecparams.n,s=new n(t.substring(0,this.ecparams.keylen/4),16);do{var a=this.getBigRandom(i),u=this.ecparams.G.multiply(a).getX().toBigInteger().mod(i)}while(u.compareTo(n.ZERO)<=0);var c=a.modInverse(i).multiply(s.add(r.multiply(u))).mod(i);return o.biRSSigToASN1Sig(u,c)},this.sign=function(t,e){var r=e,i=this.ecparams.n,o=n.fromByteArrayUnsigned(t);do{var s=this.getBigRandom(i),a=this.ecparams.G.multiply(s).getX().toBigInteger().mod(i)}while(a.compareTo(F.ZERO)<=0);var u=s.modInverse(i).multiply(o.add(r.multiply(a))).mod(i);return this.serializeSig(a,u)},this.verifyWithMessageHash=function(t,e){return this.verifyHex(t,e,this.pubKeyHex)},this.verifyHex=function(t,e,r){try{var s,a,u=o.parseSigHex(e);s=u.r,a=u.s;var c=i.decodeFromHex(this.ecparams.curve,r),h=new n(t.substring(0,this.ecparams.keylen/4),16);return this.verifyRaw(h,s,a,c)}catch(t){return!1}},this.verify=function(t,e,o){var s,a,u;if(Bitcoin.Util.isArray(e)){var c=this.parseSig(e);s=c.r,a=c.s}else{if(\"object\"!==(void 0===e?\"undefined\":r(e))||!e.r||!e.s)throw\"Invalid value for signature\";s=e.r,a=e.s}if(o instanceof Ke)u=o;else{if(!Bitcoin.Util.isArray(o))throw\"Invalid format for pubkey value, must be byte array or ECPointFp\";u=i.decodeFrom(this.ecparams.curve,o)}var h=n.fromByteArrayUnsigned(t);return this.verifyRaw(h,s,a,u)},this.verifyRaw=function(t,e,r,i){var o=this.ecparams.n,s=this.ecparams.G;if(e.compareTo(n.ONE)<0||e.compareTo(o)>=0)return!1;if(r.compareTo(n.ONE)<0||r.compareTo(o)>=0)return!1;var a=r.modInverse(o),u=t.multiply(a).mod(o),c=e.multiply(a).mod(o);return s.multiply(u).add(i.multiply(c)).getX().toBigInteger().mod(o).equals(e)},this.serializeSig=function(t,e){var r=t.toByteArraySigned(),n=e.toByteArraySigned(),i=[];return i.push(2),i.push(r.length),(i=i.concat(r)).push(2),i.push(n.length),(i=i.concat(n)).unshift(i.length),i.unshift(48),i},this.parseSig=function(t){var e;if(48!=t[0])throw new Error(\"Signature not a valid DERSequence\");if(2!=t[e=2])throw new Error(\"First element in signature must be a DERInteger\");var r=t.slice(e+2,e+2+t[e+1]);if(2!=t[e+=2+t[e+1]])throw new Error(\"Second element in signature must be a DERInteger\");var i=t.slice(e+2,e+2+t[e+1]);return e+=2+t[e+1],{r:n.fromByteArrayUnsigned(r),s:n.fromByteArrayUnsigned(i)}},this.parseSigCompact=function(t){if(65!==t.length)throw\"Signature has the wrong length\";var e=t[0]-27;if(e<0||e>7)throw\"Invalid signature type\";var r=this.ecparams.n;return{r:n.fromByteArrayUnsigned(t.slice(1,33)).mod(r),s:n.fromByteArrayUnsigned(t.slice(33,65)).mod(r),i:e}},this.readPKCS5PrvKeyHex=function(t){if(!1===h(t))throw new Error(\"not ASN.1 hex string\");var e,r,n;try{e=c(t,0,[\"[0]\",0],\"06\"),r=c(t,0,[1],\"04\");try{n=c(t,0,[\"[1]\",0],\"03\")}catch(t){}}catch(t){throw new Error(\"malformed PKCS#1/5 plain ECC private key\")}if(this.curveName=a(e),void 0===this.curveName)throw\"unsupported curve name\";this.setNamedCurve(this.curveName),this.setPublicKeyHex(n),this.setPrivateKeyHex(r),this.isPublic=!1},this.readPKCS8PrvKeyHex=function(t){if(!1===h(t))throw new e(\"not ASN.1 hex string\");var r,n,i;try{c(t,0,[1,0],\"06\"),r=c(t,0,[1,1],\"06\"),n=c(t,0,[2,0,1],\"04\");try{i=c(t,0,[2,0,\"[1]\",0],\"03\")}catch(t){}}catch(t){throw new e(\"malformed PKCS#8 plain ECC private key\")}if(this.curveName=a(r),void 0===this.curveName)throw new e(\"unsupported curve name\");this.setNamedCurve(this.curveName),this.setPublicKeyHex(i),this.setPrivateKeyHex(n),this.isPublic=!1},this.readPKCS8PubKeyHex=function(t){if(!1===h(t))throw new e(\"not ASN.1 hex string\");var r,n;try{c(t,0,[0,0],\"06\"),r=c(t,0,[0,1],\"06\"),n=c(t,0,[1],\"03\")}catch(t){throw new e(\"malformed PKCS#8 ECC public key\")}if(this.curveName=a(r),null===this.curveName)throw new e(\"unsupported curve name\");this.setNamedCurve(this.curveName),this.setPublicKeyHex(n)},this.readCertPubKeyHex=function(t,r){if(!1===h(t))throw new e(\"not ASN.1 hex string\");var n,i;try{n=c(t,0,[0,5,0,1],\"06\"),i=c(t,0,[0,5,1],\"03\")}catch(t){throw new e(\"malformed X.509 certificate ECC public key\")}if(this.curveName=a(n),null===this.curveName)throw new e(\"unsupported curve name\");this.setNamedCurve(this.curveName),this.setPublicKeyHex(i)},void 0!==t&&void 0!==t.curve&&(this.curveName=t.curve),void 0===this.curveName&&(this.curveName=\"secp256r1\"),this.setNamedCurve(this.curveName),void 0!==t&&(void 0!==t.prv&&this.setPrivateKeyHex(t.prv),void 0!==t.pub&&this.setPublicKeyHex(t.pub))},br.crypto.ECDSA.parseSigHex=function(t){var e=br.crypto.ECDSA.parseSigHexInHexRS(t);return{r:new F(e.r,16),s:new F(e.s,16)}},br.crypto.ECDSA.parseSigHexInHexRS=function(t){var e=Er,r=e.getChildIdx,n=e.getV;if(e.checkStrictDER(t,0),\"30\"!=t.substr(0,2))throw new Error(\"signature is not a ASN.1 sequence\");var i=r(t,0);if(2!=i.length)throw new Error(\"signature shall have two elements\");var o=i[0],s=i[1];if(\"02\"!=t.substr(o,2))throw new Error(\"1st item not ASN.1 integer\");if(\"02\"!=t.substr(s,2))throw new Error(\"2nd item not ASN.1 integer\");return{r:n(t,o),s:n(t,s)}},br.crypto.ECDSA.asn1SigToConcatSig=function(t){var e=br.crypto.ECDSA.parseSigHexInHexRS(t),r=e.r,n=e.s;if(\"00\"==r.substr(0,2)&&r.length%32==2&&(r=r.substr(2)),\"00\"==n.substr(0,2)&&n.length%32==2&&(n=n.substr(2)),r.length%32==30&&(r=\"00\"+r),n.length%32==30&&(n=\"00\"+n),r.length%32!=0)throw\"unknown ECDSA sig r length error\";if(n.length%32!=0)throw\"unknown ECDSA sig s length error\";return r+n},br.crypto.ECDSA.concatSigToASN1Sig=function(t){if(t.length/2*8%128!=0)throw\"unknown ECDSA concatinated r-s sig  length error\";var e=t.substr(0,t.length/2),r=t.substr(t.length/2);return br.crypto.ECDSA.hexRSSigToASN1Sig(e,r)},br.crypto.ECDSA.hexRSSigToASN1Sig=function(t,e){var r=new F(t,16),n=new F(e,16);return br.crypto.ECDSA.biRSSigToASN1Sig(r,n)},br.crypto.ECDSA.biRSSigToASN1Sig=function(t,e){var r=br.asn1,n=new r.DERInteger({bigint:t}),i=new r.DERInteger({bigint:e});return new r.DERSequence({array:[n,i]}).getEncodedHex()},br.crypto.ECDSA.getName=function(t){return\"2b8104001f\"===t?\"secp192k1\":\"2a8648ce3d030107\"===t?\"secp256r1\":\"2b8104000a\"===t?\"secp256k1\":\"2b81040021\"===t?\"secp224r1\":\"2b81040022\"===t?\"secp384r1\":-1!==\"|secp256r1|NIST P-256|P-256|prime256v1|\".indexOf(t)?\"secp256r1\":-1!==\"|secp256k1|\".indexOf(t)?\"secp256k1\":-1!==\"|secp224r1|NIST P-224|P-224|\".indexOf(t)?\"secp224r1\":-1!==\"|secp384r1|NIST P-384|P-384|\".indexOf(t)?\"secp384r1\":null},void 0!==br&&br||(e.KJUR=br={}),void 0!==br.crypto&&br.crypto||(br.crypto={}),br.crypto.ECParameterDB=new function(){var t={},e={};function r(t){return new F(t,16)}this.getByName=function(r){var n=r;if(void 0!==e[n]&&(n=e[r]),void 0!==t[n])return t[n];throw\"unregistered EC curve name: \"+n},this.regist=function(n,i,o,s,a,u,c,h,l,f,g,d){t[n]={};var p=r(o),v=r(s),y=r(a),m=r(u),_=r(c),S=new qe(p,v,y),b=S.decodePointHex(\"04\"+h+l);t[n].name=n,t[n].keylen=i,t[n].curve=S,t[n].G=b,t[n].n=m,t[n].h=_,t[n].oid=g,t[n].info=d;for(var w=0;w<f.length;w++)e[f[w]]=n}},br.crypto.ECParameterDB.regist(\"secp128r1\",128,\"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF\",\"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC\",\"E87579C11079F43DD824993C2CEE5ED3\",\"FFFFFFFE0000000075A30D1B9038A115\",\"1\",\"161FF7528B899B2D0C28607CA52C5B86\",\"CF5AC8395BAFEB13C02DA292DDED7A83\",[],\"\",\"secp128r1 : SECG curve over a 128 bit prime field\"),br.crypto.ECParameterDB.regist(\"secp160k1\",160,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73\",\"0\",\"7\",\"0100000000000000000001B8FA16DFAB9ACA16B6B3\",\"1\",\"3B4C382CE37AA192A4019E763036F4F5DD4D7EBB\",\"938CF935318FDCED6BC28286531733C3F03C4FEE\",[],\"\",\"secp160k1 : SECG curve over a 160 bit prime field\"),br.crypto.ECParameterDB.regist(\"secp160r1\",160,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC\",\"1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45\",\"0100000000000000000001F4C8F927AED3CA752257\",\"1\",\"4A96B5688EF573284664698968C38BB913CBFC82\",\"23A628553168947D59DCC912042351377AC5FB32\",[],\"\",\"secp160r1 : SECG curve over a 160 bit prime field\"),br.crypto.ECParameterDB.regist(\"secp192k1\",192,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37\",\"0\",\"3\",\"FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D\",\"1\",\"DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D\",\"9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D\",[]),br.crypto.ECParameterDB.regist(\"secp192r1\",192,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC\",\"64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1\",\"FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831\",\"1\",\"188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012\",\"07192B95FFC8DA78631011ED6B24CDD573F977A11E794811\",[]),br.crypto.ECParameterDB.regist(\"secp224r1\",224,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE\",\"B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D\",\"1\",\"B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21\",\"BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34\",[]),br.crypto.ECParameterDB.regist(\"secp256k1\",256,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F\",\"0\",\"7\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141\",\"1\",\"79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798\",\"483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8\",[]),br.crypto.ECParameterDB.regist(\"secp256r1\",256,\"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF\",\"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC\",\"5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B\",\"FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551\",\"1\",\"6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296\",\"4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5\",[\"NIST P-256\",\"P-256\",\"prime256v1\"]),br.crypto.ECParameterDB.regist(\"secp384r1\",384,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC\",\"B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973\",\"1\",\"AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7\",\"3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f\",[\"NIST P-384\",\"P-384\"]),br.crypto.ECParameterDB.regist(\"secp521r1\",521,\"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC\",\"051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00\",\"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409\",\"1\",\"C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66\",\"011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650\",[\"NIST P-521\",\"P-521\"]);var Zr=function(){var t=function t(r,n,i){return e(y.AES,r,n,i)},e=function t(e,r,n,i){var o=y.enc.Hex.parse(r),s=y.enc.Hex.parse(n),a=y.enc.Hex.parse(i),u={};u.key=s,u.iv=a,u.ciphertext=o;var c=e.decrypt(u,s,{iv:a});return y.enc.Hex.stringify(c)},r=function t(e,r,i){return n(y.AES,e,r,i)},n=function t(e,r,n,i){var o=y.enc.Hex.parse(r),s=y.enc.Hex.parse(n),a=y.enc.Hex.parse(i),u=e.encrypt(o,s,{iv:a}),c=y.enc.Hex.parse(u.toString());return y.enc.Base64.stringify(c)},i={\"AES-256-CBC\":{proc:t,eproc:r,keylen:32,ivlen:16},\"AES-192-CBC\":{proc:t,eproc:r,keylen:24,ivlen:16},\"AES-128-CBC\":{proc:t,eproc:r,keylen:16,ivlen:16},\"DES-EDE3-CBC\":{proc:function t(r,n,i){return e(y.TripleDES,r,n,i)},eproc:function t(e,r,i){return n(y.TripleDES,e,r,i)},keylen:24,ivlen:8},\"DES-CBC\":{proc:function t(r,n,i){return e(y.DES,r,n,i)},eproc:function t(e,r,i){return n(y.DES,e,r,i)},keylen:8,ivlen:8}},o=function t(e){var r={},n=e.match(new RegExp(\"DEK-Info: ([^,]+),([0-9A-Fa-f]+)\",\"m\"));n&&(r.cipher=n[1],r.ivsalt=n[2]);var i=e.match(new RegExp(\"-----BEGIN ([A-Z]+) PRIVATE KEY-----\"));i&&(r.type=i[1]);var o=-1,s=0;-1!=e.indexOf(\"\\r\\n\\r\\n\")&&(o=e.indexOf(\"\\r\\n\\r\\n\"),s=2),-1!=e.indexOf(\"\\n\\n\")&&(o=e.indexOf(\"\\n\\n\"),s=1);var a=e.indexOf(\"-----END\");if(-1!=o&&-1!=a){var u=e.substring(o+2*s,a-s);u=u.replace(/\\s+/g,\"\"),r.data=u}return r},s=function t(e,r,n){for(var o=n.substring(0,16),s=y.enc.Hex.parse(o),a=y.enc.Utf8.parse(r),u=i[e].keylen+i[e].ivlen,c=\"\",h=null;;){var l=y.algo.MD5.create();if(null!=h&&l.update(h),l.update(a),l.update(s),h=l.finalize(),(c+=y.enc.Hex.stringify(h)).length>=2*u)break}var f={};return f.keyhex=c.substr(0,2*i[e].keylen),f.ivhex=c.substr(2*i[e].keylen,2*i[e].ivlen),f},a=function t(e,r,n,o){var s=y.enc.Base64.parse(e),a=y.enc.Hex.stringify(s);return(0,i[r].proc)(a,n,o)};return{version:\"1.0.0\",parsePKCS5PEM:function t(e){return o(e)},getKeyAndUnusedIvByPasscodeAndIvsalt:function t(e,r,n){return s(e,r,n)},decryptKeyB64:function t(e,r,n,i){return a(e,r,n,i)},getDecryptedKeyHex:function t(e,r){var n=o(e),i=(n.type,n.cipher),u=n.ivsalt,c=n.data,h=s(i,r,u).keyhex;return a(c,i,h,u)},getEncryptedPKCS5PEMFromPrvKeyHex:function t(e,r,n,o,a){var u=\"\";if(void 0!==o&&null!=o||(o=\"AES-256-CBC\"),void 0===i[o])throw\"KEYUTIL unsupported algorithm: \"+o;void 0!==a&&null!=a||(a=function t(e){var r=y.lib.WordArray.random(e);return y.enc.Hex.stringify(r)}(i[o].ivlen).toUpperCase());var c=function t(e,r,n,o){return(0,i[r].eproc)(e,n,o)}(r,o,s(o,n,a).keyhex,a);u=\"-----BEGIN \"+e+\" PRIVATE KEY-----\\r\\n\";return u+=\"Proc-Type: 4,ENCRYPTED\\r\\n\",u+=\"DEK-Info: \"+o+\",\"+a+\"\\r\\n\",u+=\"\\r\\n\",u+=c.replace(/(.{64})/g,\"$1\\r\\n\"),u+=\"\\r\\n-----END \"+e+\" PRIVATE KEY-----\\r\\n\"},parseHexOfEncryptedPKCS8:function t(e){var r=Er,n=r.getChildIdx,i=r.getV,o={},s=n(e,0);if(2!=s.length)throw\"malformed format: SEQUENCE(0).items != 2: \"+s.length;o.ciphertext=i(e,s[1]);var a=n(e,s[0]);if(2!=a.length)throw\"malformed format: SEQUENCE(0.0).items != 2: \"+a.length;if(\"2a864886f70d01050d\"!=i(e,a[0]))throw\"this only supports pkcs5PBES2\";var u=n(e,a[1]);if(2!=a.length)throw\"malformed format: SEQUENCE(0.0.1).items != 2: \"+u.length;var c=n(e,u[1]);if(2!=c.length)throw\"malformed format: SEQUENCE(0.0.1.1).items != 2: \"+c.length;if(\"2a864886f70d0307\"!=i(e,c[0]))throw\"this only supports TripleDES\";o.encryptionSchemeAlg=\"TripleDES\",o.encryptionSchemeIV=i(e,c[1]);var h=n(e,u[0]);if(2!=h.length)throw\"malformed format: SEQUENCE(0.0.1.0).items != 2: \"+h.length;if(\"2a864886f70d01050c\"!=i(e,h[0]))throw\"this only supports pkcs5PBKDF2\";var l=n(e,h[1]);if(l.length<2)throw\"malformed format: SEQUENCE(0.0.1.0.1).items < 2: \"+l.length;o.pbkdf2Salt=i(e,l[0]);var f=i(e,l[1]);try{o.pbkdf2Iter=parseInt(f,16)}catch(t){throw\"malformed format pbkdf2Iter: \"+f}return o},getPBKDF2KeyHexFromParam:function t(e,r){var n=y.enc.Hex.parse(e.pbkdf2Salt),i=e.pbkdf2Iter,o=y.PBKDF2(r,n,{keySize:6,iterations:i});return y.enc.Hex.stringify(o)},_getPlainPKCS8HexFromEncryptedPKCS8PEM:function t(e,r){var n=Hr(e,\"ENCRYPTED PRIVATE KEY\"),i=this.parseHexOfEncryptedPKCS8(n),o=Zr.getPBKDF2KeyHexFromParam(i,r),s={};s.ciphertext=y.enc.Hex.parse(i.ciphertext);var a=y.enc.Hex.parse(o),u=y.enc.Hex.parse(i.encryptionSchemeIV),c=y.TripleDES.decrypt(s,a,{iv:u});return y.enc.Hex.stringify(c)},getKeyFromEncryptedPKCS8PEM:function t(e,r){var n=this._getPlainPKCS8HexFromEncryptedPKCS8PEM(e,r);return this.getKeyFromPlainPrivatePKCS8Hex(n)},parsePlainPrivatePKCS8Hex:function t(e){var r=Er,n=r.getChildIdx,i=r.getV,o={algparam:null};if(\"30\"!=e.substr(0,2))throw\"malformed plain PKCS8 private key(code:001)\";var s=n(e,0);if(3!=s.length)throw\"malformed plain PKCS8 private key(code:002)\";if(\"30\"!=e.substr(s[1],2))throw\"malformed PKCS8 private key(code:003)\";var a=n(e,s[1]);if(2!=a.length)throw\"malformed PKCS8 private key(code:004)\";if(\"06\"!=e.substr(a[0],2))throw\"malformed PKCS8 private key(code:005)\";if(o.algoid=i(e,a[0]),\"06\"==e.substr(a[1],2)&&(o.algparam=i(e,a[1])),\"04\"!=e.substr(s[2],2))throw\"malformed PKCS8 private key(code:006)\";return o.keyidx=r.getVidx(e,s[2]),o},getKeyFromPlainPrivatePKCS8PEM:function t(e){var r=Hr(e,\"PRIVATE KEY\");return this.getKeyFromPlainPrivatePKCS8Hex(r)},getKeyFromPlainPrivatePKCS8Hex:function t(e){var r,n=this.parsePlainPrivatePKCS8Hex(e);if(\"2a864886f70d010101\"==n.algoid)r=new He;else if(\"2a8648ce380401\"==n.algoid)r=new br.crypto.DSA;else{if(\"2a8648ce3d0201\"!=n.algoid)throw\"unsupported private key algorithm\";r=new br.crypto.ECDSA}return r.readPKCS8PrvKeyHex(e),r},_getKeyFromPublicPKCS8Hex:function t(e){var r,n=Er.getVbyList(e,0,[0,0],\"06\");if(\"2a864886f70d010101\"===n)r=new He;else if(\"2a8648ce380401\"===n)r=new br.crypto.DSA;else{if(\"2a8648ce3d0201\"!==n)throw\"unsupported PKCS#8 public key hex\";r=new br.crypto.ECDSA}return r.readPKCS8PubKeyHex(e),r},parsePublicRawRSAKeyHex:function t(e){var r=Er,n=r.getChildIdx,i=r.getV,o={};if(\"30\"!=e.substr(0,2))throw\"malformed RSA key(code:001)\";var s=n(e,0);if(2!=s.length)throw\"malformed RSA key(code:002)\";if(\"02\"!=e.substr(s[0],2))throw\"malformed RSA key(code:003)\";if(o.n=i(e,s[0]),\"02\"!=e.substr(s[1],2))throw\"malformed RSA key(code:004)\";return o.e=i(e,s[1]),o},parsePublicPKCS8Hex:function t(e){var r=Er,n=r.getChildIdx,i=r.getV,o={algparam:null},s=n(e,0);if(2!=s.length)throw\"outer DERSequence shall have 2 elements: \"+s.length;var a=s[0];if(\"30\"!=e.substr(a,2))throw\"malformed PKCS8 public key(code:001)\";var u=n(e,a);if(2!=u.length)throw\"malformed PKCS8 public key(code:002)\";if(\"06\"!=e.substr(u[0],2))throw\"malformed PKCS8 public key(code:003)\";if(o.algoid=i(e,u[0]),\"06\"==e.substr(u[1],2)?o.algparam=i(e,u[1]):\"30\"==e.substr(u[1],2)&&(o.algparam={},o.algparam.p=r.getVbyList(e,u[1],[0],\"02\"),o.algparam.q=r.getVbyList(e,u[1],[1],\"02\"),o.algparam.g=r.getVbyList(e,u[1],[2],\"02\")),\"03\"!=e.substr(s[1],2))throw\"malformed PKCS8 public key(code:004)\";return o.key=i(e,s[1]).substr(2),o}}}();Zr.getKey=function(t,e,r){var n=(v=Er).getChildIdx,i=(v.getV,v.getVbyList),o=br.crypto,s=o.ECDSA,a=o.DSA,u=He,c=Hr,h=Zr;if(void 0!==u&&t instanceof u)return t;if(void 0!==s&&t instanceof s)return t;if(void 0!==a&&t instanceof a)return t;if(void 0!==t.curve&&void 0!==t.xy&&void 0===t.d)return new s({pub:t.xy,curve:t.curve});if(void 0!==t.curve&&void 0!==t.d)return new s({prv:t.d,curve:t.curve});if(void 0===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0===t.d)return(P=new u).setPublic(t.n,t.e),P;if(void 0===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d&&void 0!==t.p&&void 0!==t.q&&void 0!==t.dp&&void 0!==t.dq&&void 0!==t.co&&void 0===t.qi)return(P=new u).setPrivateEx(t.n,t.e,t.d,t.p,t.q,t.dp,t.dq,t.co),P;if(void 0===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d&&void 0===t.p)return(P=new u).setPrivate(t.n,t.e,t.d),P;if(void 0!==t.p&&void 0!==t.q&&void 0!==t.g&&void 0!==t.y&&void 0===t.x)return(P=new a).setPublic(t.p,t.q,t.g,t.y),P;if(void 0!==t.p&&void 0!==t.q&&void 0!==t.g&&void 0!==t.y&&void 0!==t.x)return(P=new a).setPrivate(t.p,t.q,t.g,t.y,t.x),P;if(\"RSA\"===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0===t.d)return(P=new u).setPublic(Ir(t.n),Ir(t.e)),P;if(\"RSA\"===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d&&void 0!==t.p&&void 0!==t.q&&void 0!==t.dp&&void 0!==t.dq&&void 0!==t.qi)return(P=new u).setPrivateEx(Ir(t.n),Ir(t.e),Ir(t.d),Ir(t.p),Ir(t.q),Ir(t.dp),Ir(t.dq),Ir(t.qi)),P;if(\"RSA\"===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d)return(P=new u).setPrivate(Ir(t.n),Ir(t.e),Ir(t.d)),P;if(\"EC\"===t.kty&&void 0!==t.crv&&void 0!==t.x&&void 0!==t.y&&void 0===t.d){var l=(k=new s({curve:t.crv})).ecparams.keylen/4,f=\"04\"+(\"0000000000\"+Ir(t.x)).slice(-l)+(\"0000000000\"+Ir(t.y)).slice(-l);return k.setPublicKeyHex(f),k}if(\"EC\"===t.kty&&void 0!==t.crv&&void 0!==t.x&&void 0!==t.y&&void 0!==t.d){l=(k=new s({curve:t.crv})).ecparams.keylen/4,f=\"04\"+(\"0000000000\"+Ir(t.x)).slice(-l)+(\"0000000000\"+Ir(t.y)).slice(-l);var g=(\"0000000000\"+Ir(t.d)).slice(-l);return k.setPublicKeyHex(f),k.setPrivateKeyHex(g),k}if(\"pkcs5prv\"===r){var d,p=t,v=Er;if(9===(d=n(p,0)).length)(P=new u).readPKCS5PrvKeyHex(p);else if(6===d.length)(P=new a).readPKCS5PrvKeyHex(p);else{if(!(d.length>2&&\"04\"===p.substr(d[1],2)))throw\"unsupported PKCS#1/5 hexadecimal key\";(P=new s).readPKCS5PrvKeyHex(p)}return P}if(\"pkcs8prv\"===r)return P=h.getKeyFromPlainPrivatePKCS8Hex(t);if(\"pkcs8pub\"===r)return h._getKeyFromPublicPKCS8Hex(t);if(\"x509pub\"===r)return on.getPublicKeyFromCertHex(t);if(-1!=t.indexOf(\"-END CERTIFICATE-\",0)||-1!=t.indexOf(\"-END X509 CERTIFICATE-\",0)||-1!=t.indexOf(\"-END TRUSTED CERTIFICATE-\",0))return on.getPublicKeyFromCertPEM(t);if(-1!=t.indexOf(\"-END PUBLIC KEY-\")){var y=Hr(t,\"PUBLIC KEY\");return h._getKeyFromPublicPKCS8Hex(y)}if(-1!=t.indexOf(\"-END RSA PRIVATE KEY-\")&&-1==t.indexOf(\"4,ENCRYPTED\")){var m=c(t,\"RSA PRIVATE KEY\");return h.getKey(m,null,\"pkcs5prv\")}if(-1!=t.indexOf(\"-END DSA PRIVATE KEY-\")&&-1==t.indexOf(\"4,ENCRYPTED\")){var _=i(R=c(t,\"DSA PRIVATE KEY\"),0,[1],\"02\"),S=i(R,0,[2],\"02\"),b=i(R,0,[3],\"02\"),w=i(R,0,[4],\"02\"),E=i(R,0,[5],\"02\");return(P=new a).setPrivate(new F(_,16),new F(S,16),new F(b,16),new F(w,16),new F(E,16)),P}if(-1!=t.indexOf(\"-END EC PRIVATE KEY-\")&&-1==t.indexOf(\"4,ENCRYPTED\")){m=c(t,\"EC PRIVATE KEY\");return h.getKey(m,null,\"pkcs5prv\")}if(-1!=t.indexOf(\"-END PRIVATE KEY-\"))return h.getKeyFromPlainPrivatePKCS8PEM(t);if(-1!=t.indexOf(\"-END RSA PRIVATE KEY-\")&&-1!=t.indexOf(\"4,ENCRYPTED\")){var x=h.getDecryptedKeyHex(t,e),A=new He;return A.readPKCS5PrvKeyHex(x),A}if(-1!=t.indexOf(\"-END EC PRIVATE KEY-\")&&-1!=t.indexOf(\"4,ENCRYPTED\")){var k,P=i(R=h.getDecryptedKeyHex(t,e),0,[1],\"04\"),C=i(R,0,[2,0],\"06\"),T=i(R,0,[3,0],\"03\").substr(2);if(void 0===br.crypto.OID.oidhex2name[C])throw\"undefined OID(hex) in KJUR.crypto.OID: \"+C;return(k=new s({curve:br.crypto.OID.oidhex2name[C]})).setPublicKeyHex(T),k.setPrivateKeyHex(P),k.isPublic=!1,k}if(-1!=t.indexOf(\"-END DSA PRIVATE KEY-\")&&-1!=t.indexOf(\"4,ENCRYPTED\")){var R;_=i(R=h.getDecryptedKeyHex(t,e),0,[1],\"02\"),S=i(R,0,[2],\"02\"),b=i(R,0,[3],\"02\"),w=i(R,0,[4],\"02\"),E=i(R,0,[5],\"02\");return(P=new a).setPrivate(new F(_,16),new F(S,16),new F(b,16),new F(w,16),new F(E,16)),P}if(-1!=t.indexOf(\"-END ENCRYPTED PRIVATE KEY-\"))return h.getKeyFromEncryptedPKCS8PEM(t,e);throw new Error(\"not supported argument\")},Zr.generateKeypair=function(t,e){if(\"RSA\"==t){var r=e;(s=new He).generate(r,\"10001\"),s.isPrivate=!0,s.isPublic=!0;var n=new He,i=s.n.toString(16),o=s.e.toString(16);return n.setPublic(i,o),n.isPrivate=!1,n.isPublic=!0,(a={}).prvKeyObj=s,a.pubKeyObj=n,a}if(\"EC\"==t){var s,a,u=e,c=new br.crypto.ECDSA({curve:u}).generateKeyPairHex();return(s=new br.crypto.ECDSA({curve:u})).setPublicKeyHex(c.ecpubhex),s.setPrivateKeyHex(c.ecprvhex),s.isPrivate=!0,s.isPublic=!1,(n=new br.crypto.ECDSA({curve:u})).setPublicKeyHex(c.ecpubhex),n.isPrivate=!1,n.isPublic=!0,(a={}).prvKeyObj=s,a.pubKeyObj=n,a}throw\"unknown algorithm: \"+t},Zr.getPEM=function(t,e,r,n,i,o){var s=br,a=s.asn1,u=a.DERObjectIdentifier,c=a.DERInteger,h=a.ASN1Util.newObject,l=a.x509.SubjectPublicKeyInfo,f=s.crypto,g=f.DSA,d=f.ECDSA,p=He;function v(t){return h({seq:[{int:0},{int:{bigint:t.n}},{int:t.e},{int:{bigint:t.d}},{int:{bigint:t.p}},{int:{bigint:t.q}},{int:{bigint:t.dmp1}},{int:{bigint:t.dmq1}},{int:{bigint:t.coeff}}]})}function m(t){return h({seq:[{int:1},{octstr:{hex:t.prvKeyHex}},{tag:[\"a0\",!0,{oid:{name:t.curveName}}]},{tag:[\"a1\",!0,{bitstr:{hex:\"00\"+t.pubKeyHex}}]}]})}function _(t){return h({seq:[{int:0},{int:{bigint:t.p}},{int:{bigint:t.q}},{int:{bigint:t.g}},{int:{bigint:t.y}},{int:{bigint:t.x}}]})}if((void 0!==p&&t instanceof p||void 0!==g&&t instanceof g||void 0!==d&&t instanceof d)&&1==t.isPublic&&(void 0===e||\"PKCS8PUB\"==e))return Mr(F=new l(t).getEncodedHex(),\"PUBLIC KEY\");if(\"PKCS1PRV\"==e&&void 0!==p&&t instanceof p&&(void 0===r||null==r)&&1==t.isPrivate)return Mr(F=v(t).getEncodedHex(),\"RSA PRIVATE KEY\");if(\"PKCS1PRV\"==e&&void 0!==d&&t instanceof d&&(void 0===r||null==r)&&1==t.isPrivate){var S=new u({name:t.curveName}).getEncodedHex(),b=m(t).getEncodedHex(),w=\"\";return w+=Mr(S,\"EC PARAMETERS\"),w+=Mr(b,\"EC PRIVATE KEY\")}if(\"PKCS1PRV\"==e&&void 0!==g&&t instanceof g&&(void 0===r||null==r)&&1==t.isPrivate)return Mr(F=_(t).getEncodedHex(),\"DSA PRIVATE KEY\");if(\"PKCS5PRV\"==e&&void 0!==p&&t instanceof p&&void 0!==r&&null!=r&&1==t.isPrivate){var F=v(t).getEncodedHex();return void 0===n&&(n=\"DES-EDE3-CBC\"),this.getEncryptedPKCS5PEMFromPrvKeyHex(\"RSA\",F,r,n,o)}if(\"PKCS5PRV\"==e&&void 0!==d&&t instanceof d&&void 0!==r&&null!=r&&1==t.isPrivate){F=m(t).getEncodedHex();return void 0===n&&(n=\"DES-EDE3-CBC\"),this.getEncryptedPKCS5PEMFromPrvKeyHex(\"EC\",F,r,n,o)}if(\"PKCS5PRV\"==e&&void 0!==g&&t instanceof g&&void 0!==r&&null!=r&&1==t.isPrivate){F=_(t).getEncodedHex();return void 0===n&&(n=\"DES-EDE3-CBC\"),this.getEncryptedPKCS5PEMFromPrvKeyHex(\"DSA\",F,r,n,o)}var E=function t(e,r){var n=x(e,r);return new h({seq:[{seq:[{oid:{name:\"pkcs5PBES2\"}},{seq:[{seq:[{oid:{name:\"pkcs5PBKDF2\"}},{seq:[{octstr:{hex:n.pbkdf2Salt}},{int:n.pbkdf2Iter}]}]},{seq:[{oid:{name:\"des-EDE3-CBC\"}},{octstr:{hex:n.encryptionSchemeIV}}]}]}]},{octstr:{hex:n.ciphertext}}]}).getEncodedHex()},x=function t(e,r){var n=y.lib.WordArray.random(8),i=y.lib.WordArray.random(8),o=y.PBKDF2(r,n,{keySize:6,iterations:100}),s=y.enc.Hex.parse(e),a=y.TripleDES.encrypt(s,o,{iv:i})+\"\",u={};return u.ciphertext=a,u.pbkdf2Salt=y.enc.Hex.stringify(n),u.pbkdf2Iter=100,u.encryptionSchemeAlg=\"DES-EDE3-CBC\",u.encryptionSchemeIV=y.enc.Hex.stringify(i),u};if(\"PKCS8PRV\"==e&&null!=p&&t instanceof p&&1==t.isPrivate){var A=v(t).getEncodedHex();F=h({seq:[{int:0},{seq:[{oid:{name:\"rsaEncryption\"}},{null:!0}]},{octstr:{hex:A}}]}).getEncodedHex();return void 0===r||null==r?Mr(F,\"PRIVATE KEY\"):Mr(b=E(F,r),\"ENCRYPTED PRIVATE KEY\")}if(\"PKCS8PRV\"==e&&void 0!==d&&t instanceof d&&1==t.isPrivate){A=new h({seq:[{int:1},{octstr:{hex:t.prvKeyHex}},{tag:[\"a1\",!0,{bitstr:{hex:\"00\"+t.pubKeyHex}}]}]}).getEncodedHex(),F=h({seq:[{int:0},{seq:[{oid:{name:\"ecPublicKey\"}},{oid:{name:t.curveName}}]},{octstr:{hex:A}}]}).getEncodedHex();return void 0===r||null==r?Mr(F,\"PRIVATE KEY\"):Mr(b=E(F,r),\"ENCRYPTED PRIVATE KEY\")}if(\"PKCS8PRV\"==e&&void 0!==g&&t instanceof g&&1==t.isPrivate){A=new c({bigint:t.x}).getEncodedHex(),F=h({seq:[{int:0},{seq:[{oid:{name:\"dsa\"}},{seq:[{int:{bigint:t.p}},{int:{bigint:t.q}},{int:{bigint:t.g}}]}]},{octstr:{hex:A}}]}).getEncodedHex();return void 0===r||null==r?Mr(F,\"PRIVATE KEY\"):Mr(b=E(F,r),\"ENCRYPTED PRIVATE KEY\")}throw new Error(\"unsupported object nor format\")},Zr.getKeyFromCSRPEM=function(t){var e=Hr(t,\"CERTIFICATE REQUEST\");return Zr.getKeyFromCSRHex(e)},Zr.getKeyFromCSRHex=function(t){var e=Zr.parseCSRHex(t);return Zr.getKey(e.p8pubkeyhex,null,\"pkcs8pub\")},Zr.parseCSRHex=function(t){var e=Er,r=e.getChildIdx,n=e.getTLV,i={},o=t;if(\"30\"!=o.substr(0,2))throw\"malformed CSR(code:001)\";var s=r(o,0);if(s.length<1)throw\"malformed CSR(code:002)\";if(\"30\"!=o.substr(s[0],2))throw\"malformed CSR(code:003)\";var a=r(o,s[0]);if(a.length<3)throw\"malformed CSR(code:004)\";return i.p8pubkeyhex=n(o,a[2]),i},Zr.getKeyID=function(t){var e=Zr,r=Er;\"string\"==typeof t&&-1!=t.indexOf(\"BEGIN \")&&(t=e.getKey(t));var n=Hr(e.getPEM(t)),i=r.getIdxbyList(n,0,[1]),o=r.getV(n,i).substring(2);return br.crypto.Util.hashHex(o,\"sha1\")},Zr.getJWKFromKey=function(t){var e={};if(t instanceof He&&t.isPrivate)return e.kty=\"RSA\",e.n=Rr(t.n.toString(16)),e.e=Rr(t.e.toString(16)),e.d=Rr(t.d.toString(16)),e.p=Rr(t.p.toString(16)),e.q=Rr(t.q.toString(16)),e.dp=Rr(t.dmp1.toString(16)),e.dq=Rr(t.dmq1.toString(16)),e.qi=Rr(t.coeff.toString(16)),e;if(t instanceof He&&t.isPublic)return e.kty=\"RSA\",e.n=Rr(t.n.toString(16)),e.e=Rr(t.e.toString(16)),e;if(t instanceof br.crypto.ECDSA&&t.isPrivate){if(\"P-256\"!==(n=t.getShortNISTPCurveName())&&\"P-384\"!==n)throw\"unsupported curve name for JWT: \"+n;var r=t.getPublicKeyXYHex();return e.kty=\"EC\",e.crv=n,e.x=Rr(r.x),e.y=Rr(r.y),e.d=Rr(t.prvKeyHex),e}if(t instanceof br.crypto.ECDSA&&t.isPublic){var n;if(\"P-256\"!==(n=t.getShortNISTPCurveName())&&\"P-384\"!==n)throw\"unsupported curve name for JWT: \"+n;r=t.getPublicKeyXYHex();return e.kty=\"EC\",e.crv=n,e.x=Rr(r.x),e.y=Rr(r.y),e}throw\"not supported key object\"},He.getPosArrayOfChildrenFromHex=function(t){return Er.getChildIdx(t,0)},He.getHexValueArrayOfChildrenFromHex=function(t){var e,r=Er.getV,n=r(t,(e=He.getPosArrayOfChildrenFromHex(t))[0]),i=r(t,e[1]),o=r(t,e[2]),s=r(t,e[3]),a=r(t,e[4]),u=r(t,e[5]),c=r(t,e[6]),h=r(t,e[7]),l=r(t,e[8]);return(e=new Array).push(n,i,o,s,a,u,c,h,l),e},He.prototype.readPrivateKeyFromPEMString=function(t){var e=Hr(t),r=He.getHexValueArrayOfChildrenFromHex(e);this.setPrivateEx(r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8])},He.prototype.readPKCS5PrvKeyHex=function(t){var e=He.getHexValueArrayOfChildrenFromHex(t);this.setPrivateEx(e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},He.prototype.readPKCS8PrvKeyHex=function(t){var e,r,n,i,o,s,a,u,c=Er,h=c.getVbyListEx;if(!1===c.isASN1HEX(t))throw new Error(\"not ASN.1 hex string\");try{e=h(t,0,[2,0,1],\"02\"),r=h(t,0,[2,0,2],\"02\"),n=h(t,0,[2,0,3],\"02\"),i=h(t,0,[2,0,4],\"02\"),o=h(t,0,[2,0,5],\"02\"),s=h(t,0,[2,0,6],\"02\"),a=h(t,0,[2,0,7],\"02\"),u=h(t,0,[2,0,8],\"02\")}catch(t){throw new Error(\"malformed PKCS#8 plain RSA private key\")}this.setPrivateEx(e,r,n,i,o,s,a,u)},He.prototype.readPKCS5PubKeyHex=function(t){var e=Er,r=e.getV;if(!1===e.isASN1HEX(t))throw new Error(\"keyHex is not ASN.1 hex string\");var n=e.getChildIdx(t,0);if(2!==n.length||\"02\"!==t.substr(n[0],2)||\"02\"!==t.substr(n[1],2))throw new Error(\"wrong hex for PKCS#5 public key\");var i=r(t,n[0]),o=r(t,n[1]);this.setPublic(i,o)},He.prototype.readPKCS8PubKeyHex=function(t){var e=Er;if(!1===e.isASN1HEX(t))throw new Error(\"not ASN.1 hex string\");if(\"06092a864886f70d010101\"!==e.getTLVbyListEx(t,0,[0,0]))throw new Error(\"not PKCS8 RSA public key\");var r=e.getTLVbyListEx(t,0,[1,0]);this.readPKCS5PubKeyHex(r)},He.prototype.readCertPubKeyHex=function(t,e){var r,n;(r=new on).readCertHex(t),n=r.getPublicKeyHex(),this.readPKCS8PubKeyHex(n)};var tn=new RegExp(\"[^0-9a-f]\",\"gi\");function en(t,e){for(var r=\"\",n=e/4-t.length,i=0;i<n;i++)r+=\"0\";return r+t}function rn(t,e,r){for(var n=\"\",i=0;n.length<e;)n+=Nr(r(Ur(t+String.fromCharCode.apply(String,[(4278190080&i)>>24,(16711680&i)>>16,(65280&i)>>8,255&i])))),i+=1;return n}function nn(t){for(var e in br.crypto.Util.DIGESTINFOHEAD){var r=br.crypto.Util.DIGESTINFOHEAD[e],n=r.length;if(t.substring(0,n)==r)return[e,t.substring(n)]}return[]}function on(t){var e,r=Er,n=r.getChildIdx,i=r.getV,o=r.getTLV,s=r.getVbyList,a=r.getVbyListEx,u=r.getTLVbyList,c=r.getTLVbyListEx,h=r.getIdxbyList,l=r.getIdxbyListEx,f=r.getVidx,g=r.oidname,d=r.hextooidstr,p=on,v=Hr;try{e=br.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV}catch(t){}this.HEX2STAG={\"0c\":\"utf8\",13:\"prn\",16:\"ia5\",\"1a\":\"vis\",\"1e\":\"bmp\"},this.hex=null,this.version=0,this.foffset=0,this.aExtInfo=null,this.getVersion=function(){return null===this.hex||0!==this.version?this.version:\"a003020102\"!==u(this.hex,0,[0,0])?(this.version=1,this.foffset=-1,1):(this.version=3,3)},this.getSerialNumberHex=function(){return a(this.hex,0,[0,0],\"02\")},this.getSignatureAlgorithmField=function(){var t=c(this.hex,0,[0,1]);return this.getAlgorithmIdentifierName(t)},this.getAlgorithmIdentifierName=function(t){for(var r in e)if(t===e[r])return r;return g(a(t,0,[0],\"06\"))},this.getIssuer=function(){return this.getX500Name(this.getIssuerHex())},this.getIssuerHex=function(){return u(this.hex,0,[0,3+this.foffset],\"30\")},this.getIssuerString=function(){return p.hex2dn(this.getIssuerHex())},this.getSubject=function(){return this.getX500Name(this.getSubjectHex())},this.getSubjectHex=function(){return u(this.hex,0,[0,5+this.foffset],\"30\")},this.getSubjectString=function(){return p.hex2dn(this.getSubjectHex())},this.getNotBefore=function(){var t=s(this.hex,0,[0,4+this.foffset,0]);return t=t.replace(/(..)/g,\"%$1\"),t=decodeURIComponent(t)},this.getNotAfter=function(){var t=s(this.hex,0,[0,4+this.foffset,1]);return t=t.replace(/(..)/g,\"%$1\"),t=decodeURIComponent(t)},this.getPublicKeyHex=function(){return r.getTLVbyList(this.hex,0,[0,6+this.foffset],\"30\")},this.getPublicKeyIdx=function(){return h(this.hex,0,[0,6+this.foffset],\"30\")},this.getPublicKeyContentIdx=function(){var t=this.getPublicKeyIdx();return h(this.hex,t,[1,0],\"30\")},this.getPublicKey=function(){return Zr.getKey(this.getPublicKeyHex(),null,\"pkcs8pub\")},this.getSignatureAlgorithmName=function(){var t=u(this.hex,0,[1],\"30\");return this.getAlgorithmIdentifierName(t)},this.getSignatureValueHex=function(){return s(this.hex,0,[2],\"03\",!0)},this.verifySignature=function(t){var e=this.getSignatureAlgorithmField(),r=this.getSignatureValueHex(),n=u(this.hex,0,[0],\"30\"),i=new br.crypto.Signature({alg:e});return i.init(t),i.updateHex(n),i.verify(r)},this.parseExt=function(t){var e,o,a;if(void 0===t){if(a=this.hex,3!==this.version)return-1;e=h(a,0,[0,7,0],\"30\"),o=n(a,e)}else{a=Hr(t);var u=h(a,0,[0,3,0,0],\"06\");if(\"2a864886f70d01090e\"!=i(a,u))return void(this.aExtInfo=new Array);e=h(a,0,[0,3,0,1,0],\"30\"),o=n(a,e),this.hex=a}this.aExtInfo=new Array;for(var c=0;c<o.length;c++){var l={critical:!1},g=0;3===n(a,o[c]).length&&(l.critical=!0,g=1),l.oid=r.hextooidstr(s(a,o[c],[0],\"06\"));var d=h(a,o[c],[1+g]);l.vidx=f(a,d),this.aExtInfo.push(l)}},this.getExtInfo=function(t){var e=this.aExtInfo,r=t;if(t.match(/^[0-9.]+$/)||(r=br.asn1.x509.OID.name2oid(t)),\"\"!==r)for(var n=0;n<e.length;n++)if(e[n].oid===r)return e[n]},this.getExtBasicConstraints=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"basicConstraints\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var n={extname:\"basicConstraints\"};if(e&&(n.critical=!0),\"3000\"===t)return n;if(\"30030101ff\"===t)return n.cA=!0,n;if(\"30060101ff02\"===t.substr(0,12)){var s=i(t,10),a=parseInt(s,16);return n.cA=!0,n.pathLen=a,n}throw new Error(\"hExtV parse error: \"+t)},this.getExtKeyUsage=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"keyUsage\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var n={extname:\"keyUsage\"};return e&&(n.critical=!0),n.names=this.getExtKeyUsageString(t).split(\",\"),n},this.getExtKeyUsageBin=function(t){if(void 0===t){var e=this.getExtInfo(\"keyUsage\");if(void 0===e)return\"\";t=o(this.hex,e.vidx)}if(8!=t.length&&10!=t.length)throw new Error(\"malformed key usage value: \"+t);var r=\"000000000000000\"+parseInt(t.substr(6),16).toString(2);return 8==t.length&&(r=r.slice(-8)),10==t.length&&(r=r.slice(-16)),\"\"==(r=r.replace(/0+$/,\"\"))&&(r=\"0\"),r},this.getExtKeyUsageString=function(t){for(var e=this.getExtKeyUsageBin(t),r=new Array,n=0;n<e.length;n++)\"1\"==e.substr(n,1)&&r.push(on.KEYUSAGE_NAME[n]);return r.join(\",\")},this.getExtSubjectKeyIdentifier=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"subjectKeyIdentifier\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var n={extname:\"subjectKeyIdentifier\"};e&&(n.critical=!0);var s=i(t,0);return n.kid={hex:s},n},this.getExtAuthorityKeyIdentifier=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"authorityKeyIdentifier\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var s={extname:\"authorityKeyIdentifier\"};e&&(s.critical=!0);for(var a=n(t,0),u=0;u<a.length;u++){var c=t.substr(a[u],2);if(\"80\"===c&&(s.kid={hex:i(t,a[u])}),\"a1\"===c){var h=o(t,a[u]),l=this.getGeneralNames(h);s.issuer=l[0].dn}\"82\"===c&&(s.sn={hex:i(t,a[u])})}return s},this.getExtExtKeyUsage=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"extKeyUsage\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var s={extname:\"extKeyUsage\",array:[]};e&&(s.critical=!0);for(var a=n(t,0),u=0;u<a.length;u++)s.array.push(g(i(t,a[u])));return s},this.getExtExtKeyUsageName=function(){var t=this.getExtInfo(\"extKeyUsage\");if(void 0===t)return t;var e=new Array,r=o(this.hex,t.vidx);if(\"\"===r)return e;for(var s=n(r,0),a=0;a<s.length;a++)e.push(g(i(r,s[a])));return e},this.getExtSubjectAltName=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"subjectAltName\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var n={extname:\"subjectAltName\",array:[]};return e&&(n.critical=!0),n.array=this.getGeneralNames(t),n},this.getExtIssuerAltName=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"issuerAltName\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var n={extname:\"issuerAltName\",array:[]};return e&&(n.critical=!0),n.array=this.getGeneralNames(t),n},this.getGeneralNames=function(t){for(var e=n(t,0),r=[],i=0;i<e.length;i++){var s=this.getGeneralName(o(t,e[i]));void 0!==s&&r.push(s)}return r},this.getGeneralName=function(t){var e=t.substr(0,2),r=i(t,0),n=Nr(r);return\"81\"==e?{rfc822:n}:\"82\"==e?{dns:n}:\"86\"==e?{uri:n}:\"87\"==e?{ip:Yr(r)}:\"a4\"==e?{dn:this.getX500Name(r)}:void 0},this.getExtSubjectAltName2=function(){var t,e,r,s=this.getExtInfo(\"subjectAltName\");if(void 0===s)return s;for(var a=new Array,u=o(this.hex,s.vidx),c=n(u,0),h=0;h<c.length;h++)r=u.substr(c[h],2),t=i(u,c[h]),\"81\"===r&&(e=Lr(t),a.push([\"MAIL\",e])),\"82\"===r&&(e=Lr(t),a.push([\"DNS\",e])),\"84\"===r&&(e=on.hex2dn(t,0),a.push([\"DN\",e])),\"86\"===r&&(e=Lr(t),a.push([\"URI\",e])),\"87\"===r&&(e=Yr(t),a.push([\"IP\",e]));return a},this.getExtCRLDistributionPoints=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"cRLDistributionPoints\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var i={extname:\"cRLDistributionPoints\",array:[]};e&&(i.critical=!0);for(var s=n(t,0),a=0;a<s.length;a++){var u=o(t,s[a]);i.array.push(this.getDistributionPoint(u))}return i},this.getDistributionPoint=function(t){for(var e={},r=n(t,0),i=0;i<r.length;i++){var s=t.substr(r[i],2),a=o(t,r[i]);\"a0\"==s&&(e.dpname=this.getDistributionPointName(a))}return e},this.getDistributionPointName=function(t){for(var e={},r=n(t,0),i=0;i<r.length;i++){var s=t.substr(r[i],2),a=o(t,r[i]);\"a0\"==s&&(e.full=this.getGeneralNames(a))}return e},this.getExtCRLDistributionPointsURI=function(){var t=this.getExtInfo(\"cRLDistributionPoints\");if(void 0===t)return t;for(var e=new Array,r=n(this.hex,t.vidx),i=0;i<r.length;i++)try{var o=Lr(s(this.hex,r[i],[0,0,0],\"86\"));e.push(o)}catch(t){}return e},this.getExtAIAInfo=function(){var t=this.getExtInfo(\"authorityInfoAccess\");if(void 0===t)return t;for(var e={ocsp:[],caissuer:[]},r=n(this.hex,t.vidx),i=0;i<r.length;i++){var o=s(this.hex,r[i],[0],\"06\"),a=s(this.hex,r[i],[1],\"86\");\"2b06010505073001\"===o&&e.ocsp.push(Lr(a)),\"2b06010505073002\"===o&&e.caissuer.push(Lr(a))}return e},this.getExtAuthorityInfoAccess=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"authorityInfoAccess\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var i={extname:\"authorityInfoAccess\",array:[]};e&&(i.critical=!0);for(var u=n(t,0),c=0;c<u.length;c++){var h=a(t,u[c],[0],\"06\"),l=Lr(s(t,u[c],[1],\"86\"));if(\"2b06010505073001\"==h)i.array.push({ocsp:l});else{if(\"2b06010505073002\"!=h)throw new Error(\"unknown method: \"+h);i.array.push({caissuer:l})}}return i},this.getExtCertificatePolicies=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"certificatePolicies\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var i={extname:\"certificatePolicies\",array:[]};e&&(i.critical=!0);for(var s=n(t,0),a=0;a<s.length;a++){var u=o(t,s[a]),c=this.getPolicyInformation(u);i.array.push(c)}return i},this.getPolicyInformation=function(t){var e={},r=s(t,0,[0],\"06\");e.policyoid=g(r);var i=l(t,0,[1],\"30\");if(-1!=i){e.array=[];for(var a=n(t,i),u=0;u<a.length;u++){var c=o(t,a[u]),h=this.getPolicyQualifierInfo(c);e.array.push(h)}}return e},this.getPolicyQualifierInfo=function(t){var e={},r=s(t,0,[0],\"06\");if(\"2b06010505070201\"===r){var n=a(t,0,[1],\"16\");e.cps=Nr(n)}else if(\"2b06010505070202\"===r){var i=u(t,0,[1],\"30\");e.unotice=this.getUserNotice(i)}return e},this.getUserNotice=function(t){for(var e={},r=n(t,0),i=0;i<r.length;i++){var s=o(t,r[i]);\"30\"!=s.substr(0,2)&&(e.exptext=this.getDisplayText(s))}return e},this.getDisplayText=function(t){var e={};return e.type={\"0c\":\"utf8\",16:\"ia5\",\"1a\":\"vis\",\"1e\":\"bmp\"}[t.substr(0,2)],e.str=Nr(i(t,0)),e},this.getExtCRLNumber=function(t,e){var r={extname:\"cRLNumber\"};if(e&&(r.critical=!0),\"02\"==t.substr(0,2))return r.num={hex:i(t,0)},r;throw new Error(\"hExtV parse error: \"+t)},this.getExtCRLReason=function(t,e){var r={extname:\"cRLReason\"};if(e&&(r.critical=!0),\"0a\"==t.substr(0,2))return r.code=parseInt(i(t,0),16),r;throw new Error(\"hExtV parse error: \"+t)},this.getExtOcspNonce=function(t,e){var r={extname:\"ocspNonce\"};e&&(r.critical=!0);var n=i(t,0);return r.hex=n,r},this.getExtOcspNoCheck=function(t,e){var r={extname:\"ocspNoCheck\"};return e&&(r.critical=!0),r},this.getExtAdobeTimeStamp=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"adobeTimeStamp\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var i={extname:\"adobeTimeStamp\"};e&&(i.critical=!0);var s=n(t,0);if(s.length>1){var a=o(t,s[1]),u=this.getGeneralName(a);null!=u.uri&&(i.uri=u.uri)}if(s.length>2){var c=o(t,s[2]);\"0101ff\"==c&&(i.reqauth=!0),\"010100\"==c&&(i.reqauth=!1)}return i},this.getX500NameRule=function(t){for(var e=null,r=[],n=0;n<t.length;n++)for(var i=t[n],o=0;o<i.length;o++)r.push(i[o]);for(n=0;n<r.length;n++){var s=r[n],a=s.ds,u=s.value,c=s.type;if(\":\"+a,\"prn\"!=a&&\"utf8\"!=a&&\"ia5\"!=a)return\"mixed\";if(\"ia5\"==a){if(\"CN\"!=c)return\"mixed\";if(br.lang.String.isMail(u))continue;return\"mixed\"}if(\"C\"==c){if(\"prn\"==a)continue;return\"mixed\"}if(\":\"+a,null==e)e=a;else if(e!==a)return\"mixed\"}return null==e?\"prn\":e},this.getX500Name=function(t){var e=this.getX500NameArray(t);return{array:e,str:this.dnarraytostr(e)}},this.getX500NameArray=function(t){for(var e=[],r=n(t,0),i=0;i<r.length;i++)e.push(this.getRDN(o(t,r[i])));return e},this.getRDN=function(t){for(var e=[],r=n(t,0),i=0;i<r.length;i++)e.push(this.getAttrTypeAndValue(o(t,r[i])));return e},this.getAttrTypeAndValue=function(t){var e={type:null,value:null,ds:null},r=n(t,0),i=s(t,r[0],[],\"06\"),o=s(t,r[1],[]),a=br.asn1.ASN1Util.oidHexToInt(i);return e.type=br.asn1.x509.OID.oid2atype(a),e.value=Nr(o),e.ds=this.HEX2STAG[t.substr(r[1],2)],e},this.readCertPEM=function(t){this.readCertHex(v(t))},this.readCertHex=function(t){this.hex=t,this.getVersion();try{h(this.hex,0,[0,7],\"a3\"),this.parseExt()}catch(t){}},this.getParam=function(){var t={};return t.version=this.getVersion(),t.serial={hex:this.getSerialNumberHex()},t.sigalg=this.getSignatureAlgorithmField(),t.issuer=this.getIssuer(),t.notbefore=this.getNotBefore(),t.notafter=this.getNotAfter(),t.subject=this.getSubject(),t.sbjpubkey=Mr(this.getPublicKeyHex(),\"PUBLIC KEY\"),this.aExtInfo.length>0&&(t.ext=this.getExtParamArray()),t.sighex=this.getSignatureValueHex(),t},this.getExtParamArray=function(t){null==t&&(-1!=l(this.hex,0,[0,\"[3]\"])&&(t=c(this.hex,0,[0,\"[3]\",0],\"30\")));for(var e=[],r=n(t,0),i=0;i<r.length;i++){var s=o(t,r[i]),a=this.getExtParam(s);null!=a&&e.push(a)}return e},this.getExtParam=function(t){var e=n(t,0).length;if(2!=e&&3!=e)throw new Error(\"wrong number elements in Extension: \"+e+\" \"+t);var r=d(s(t,0,[0],\"06\")),i=!1;3==e&&\"0101ff\"==u(t,0,[1])&&(i=!0);var o=u(t,0,[e-1,0]),a=void 0;if(\"2.5.29.14\"==r?a=this.getExtSubjectKeyIdentifier(o,i):\"2.5.29.15\"==r?a=this.getExtKeyUsage(o,i):\"2.5.29.17\"==r?a=this.getExtSubjectAltName(o,i):\"2.5.29.18\"==r?a=this.getExtIssuerAltName(o,i):\"2.5.29.19\"==r?a=this.getExtBasicConstraints(o,i):\"2.5.29.31\"==r?a=this.getExtCRLDistributionPoints(o,i):\"2.5.29.32\"==r?a=this.getExtCertificatePolicies(o,i):\"2.5.29.35\"==r?a=this.getExtAuthorityKeyIdentifier(o,i):\"2.5.29.37\"==r?a=this.getExtExtKeyUsage(o,i):\"1.3.6.1.5.5.7.1.1\"==r?a=this.getExtAuthorityInfoAccess(o,i):\"2.5.29.20\"==r?a=this.getExtCRLNumber(o,i):\"2.5.29.21\"==r?a=this.getExtCRLReason(o,i):\"1.3.6.1.5.5.7.48.1.2\"==r?a=this.getExtOcspNonce(o,i):\"1.3.6.1.5.5.7.48.1.5\"==r?a=this.getExtOcspNoCheck(o,i):\"1.2.840.113583.1.1.9.1\"==r&&(a=this.getExtAdobeTimeStamp(o,i)),null!=a)return a;var c={extname:r,extn:o};return i&&(c.critical=!0),c},this.findExt=function(t,e){for(var r=0;r<t.length;r++)if(t[r].extname==e)return t[r];return null},this.updateExtCDPFullURI=function(t,e){var r=this.findExt(t,\"cRLDistributionPoints\");if(null!=r&&null!=r.array)for(var n=r.array,i=0;i<n.length;i++)if(null!=n[i].dpname&&null!=n[i].dpname.full)for(var o=n[i].dpname.full,s=0;s<o.length;s++){var a=o[i];null!=a.uri&&(a.uri=e)}},this.updateExtAIAOCSP=function(t,e){var r=this.findExt(t,\"authorityInfoAccess\");if(null!=r&&null!=r.array)for(var n=r.array,i=0;i<n.length;i++)null!=n[i].ocsp&&(n[i].ocsp=e)},this.updateExtAIACAIssuer=function(t,e){var r=this.findExt(t,\"authorityInfoAccess\");if(null!=r&&null!=r.array)for(var n=r.array,i=0;i<n.length;i++)null!=n[i].caissuer&&(n[i].caissuer=e)},this.dnarraytostr=function(t){return\"/\"+t.map((function(t){return function e(t){return t.map((function(t){return function e(t){return t.type+\"=\"+t.value}(t)})).join(\"+\")}(t)})).join(\"/\")},this.getInfo=function(){var t,e,r,n=function t(e){return JSON.stringify(e.array).replace(/[\\[\\]\\{\\}\\\"]/g,\"\")},i=function t(e){for(var r=\"\",n=e.array,i=0;i<n.length;i++){var o=n[i];if(r+=\"    policy oid: \"+o.policyoid+\"\\n\",void 0!==o.array)for(var s=0;s<o.array.length;s++){var a=o.array[s];void 0!==a.cps&&(r+=\"    cps: \"+a.cps+\"\\n\")}}return r},o=function t(e){for(var r=\"\",n=e.array,i=0;i<n.length;i++){var o=n[i];try{void 0!==o.dpname.full[0].uri&&(r+=\"    \"+o.dpname.full[0].uri+\"\\n\")}catch(t){}try{void 0!==o.dname.full[0].dn.hex&&(r+=\"    \"+on.hex2dn(o.dpname.full[0].dn.hex)+\"\\n\")}catch(t){}}return r},s=function t(e){for(var r=\"\",n=e.array,i=0;i<n.length;i++){var o=n[i];void 0!==o.caissuer&&(r+=\"    caissuer: \"+o.caissuer+\"\\n\"),void 0!==o.ocsp&&(r+=\"    ocsp: \"+o.ocsp+\"\\n\")}return r};if(t=\"Basic Fields\\n\",t+=\"  serial number: \"+this.getSerialNumberHex()+\"\\n\",t+=\"  signature algorithm: \"+this.getSignatureAlgorithmField()+\"\\n\",t+=\"  issuer: \"+this.getIssuerString()+\"\\n\",t+=\"  notBefore: \"+this.getNotBefore()+\"\\n\",t+=\"  notAfter: \"+this.getNotAfter()+\"\\n\",t+=\"  subject: \"+this.getSubjectString()+\"\\n\",t+=\"  subject public key info: \\n\",t+=\"    key algorithm: \"+(e=this.getPublicKey()).type+\"\\n\",\"RSA\"===e.type&&(t+=\"    n=\"+$r(e.n.toString(16)).substr(0,16)+\"...\\n\",t+=\"    e=\"+$r(e.e.toString(16))+\"\\n\"),null!=(r=this.aExtInfo)){t+=\"X509v3 Extensions:\\n\";for(var a=0;a<r.length;a++){var u=r[a],c=br.asn1.x509.OID.oid2name(u.oid);\"\"===c&&(c=u.oid);var h=\"\";if(!0===u.critical&&(h=\"CRITICAL\"),t+=\"  \"+c+\" \"+h+\":\\n\",\"basicConstraints\"===c){var l=this.getExtBasicConstraints();void 0===l.cA?t+=\"    {}\\n\":(t+=\"    cA=true\",void 0!==l.pathLen&&(t+=\", pathLen=\"+l.pathLen),t+=\"\\n\")}else if(\"keyUsage\"===c)t+=\"    \"+this.getExtKeyUsageString()+\"\\n\";else if(\"subjectKeyIdentifier\"===c)t+=\"    \"+this.getExtSubjectKeyIdentifier().kid.hex+\"\\n\";else if(\"authorityKeyIdentifier\"===c){var f=this.getExtAuthorityKeyIdentifier();void 0!==f.kid&&(t+=\"    kid=\"+f.kid.hex+\"\\n\")}else{if(\"extKeyUsage\"===c)t+=\"    \"+this.getExtExtKeyUsage().array.join(\", \")+\"\\n\";else if(\"subjectAltName\"===c)t+=\"    \"+n(this.getExtSubjectAltName())+\"\\n\";else if(\"cRLDistributionPoints\"===c)t+=o(this.getExtCRLDistributionPoints());else if(\"authorityInfoAccess\"===c)t+=s(this.getExtAuthorityInfoAccess());else\"certificatePolicies\"===c&&(t+=i(this.getExtCertificatePolicies()))}}}return t+=\"signature algorithm: \"+this.getSignatureAlgorithmName()+\"\\n\",t+=\"signature: \"+this.getSignatureValueHex().substr(0,16)+\"...\\n\"},\"string\"==typeof t&&(-1!=t.indexOf(\"-----BEGIN\")?this.readCertPEM(t):br.lang.String.isHex(t)&&this.readCertHex(t))}He.prototype.sign=function(t,e){var r=function t(r){return br.crypto.Util.hashString(r,e)}(t);return this.signWithMessageHash(r,e)},He.prototype.signWithMessageHash=function(t,e){var r=je(br.crypto.Util.getPaddedDigestInfoHex(t,e,this.n.bitLength()),16);return en(this.doPrivate(r).toString(16),this.n.bitLength())},He.prototype.signPSS=function(t,e,r){var n=function t(r){return br.crypto.Util.hashHex(r,e)}(Ur(t));return void 0===r&&(r=-1),this.signWithMessageHashPSS(n,e,r)},He.prototype.signWithMessageHashPSS=function(t,e,r){var n,i=Nr(t),o=i.length,s=this.n.bitLength()-1,a=Math.ceil(s/8),u=function t(r){return br.crypto.Util.hashHex(r,e)};if(-1===r||void 0===r)r=o;else if(-2===r)r=a-o-2;else if(r<-2)throw new Error(\"invalid salt length\");if(a<o+r+2)throw new Error(\"data too long\");var c=\"\";r>0&&(c=new Array(r),(new Oe).nextBytes(c),c=String.fromCharCode.apply(String,c));var h=Nr(u(Ur(\"\\0\\0\\0\\0\\0\\0\\0\\0\"+i+c))),l=[];for(n=0;n<a-r-o-2;n+=1)l[n]=0;var f=String.fromCharCode.apply(String,l)+\"\u0001\"+c,g=rn(h,f.length,u),d=[];for(n=0;n<f.length;n+=1)d[n]=f.charCodeAt(n)^g.charCodeAt(n);var p=65280>>8*a-s&255;for(d[0]&=~p,n=0;n<o;n++)d.push(h.charCodeAt(n));return d.push(188),en(this.doPrivate(new F(d)).toString(16),this.n.bitLength())},He.prototype.verify=function(t,e){var r=je(e=(e=e.replace(tn,\"\")).replace(/[ \\n]+/g,\"\"),16);if(r.bitLength()>this.n.bitLength())return 0;var n=nn(this.doPublic(r).toString(16).replace(/^1f+00/,\"\"));if(0==n.length)return!1;var i=n[0];return n[1]==function t(e){return br.crypto.Util.hashString(e,i)}(t)},He.prototype.verifyWithMessageHash=function(t,e){if(e.length!=Math.ceil(this.n.bitLength()/4))return!1;var r=je(e,16);if(r.bitLength()>this.n.bitLength())return 0;var n=nn(this.doPublic(r).toString(16).replace(/^1f+00/,\"\"));if(0==n.length)return!1;n[0];return n[1]==t},He.prototype.verifyPSS=function(t,e,r,n){var i=function t(e){return br.crypto.Util.hashHex(e,r)}(Ur(t));return void 0===n&&(n=-1),this.verifyWithMessageHashPSS(i,e,r,n)},He.prototype.verifyWithMessageHashPSS=function(t,e,r,n){if(e.length!=Math.ceil(this.n.bitLength()/4))return!1;var i,o=new F(e,16),s=function t(e){return br.crypto.Util.hashHex(e,r)},a=Nr(t),u=a.length,c=this.n.bitLength()-1,h=Math.ceil(c/8);if(-1===n||void 0===n)n=u;else if(-2===n)n=h-u-2;else if(n<-2)throw new Error(\"invalid salt length\");if(h<u+n+2)throw new Error(\"data too long\");var l=this.doPublic(o).toByteArray();for(i=0;i<l.length;i+=1)l[i]&=255;for(;l.length<h;)l.unshift(0);if(188!==l[h-1])throw new Error(\"encoded message does not end in 0xbc\");var f=(l=String.fromCharCode.apply(String,l)).substr(0,h-u-1),g=l.substr(f.length,u),d=65280>>8*h-c&255;if(0!=(f.charCodeAt(0)&d))throw new Error(\"bits beyond keysize not zero\");var p=rn(g,f.length,s),v=[];for(i=0;i<f.length;i+=1)v[i]=f.charCodeAt(i)^p.charCodeAt(i);v[0]&=~d;var y=h-u-n-2;for(i=0;i<y;i+=1)if(0!==v[i])throw new Error(\"leftmost octets not zero\");if(1!==v[y])throw new Error(\"0x01 marker not found\");return g===Nr(s(Ur(\"\\0\\0\\0\\0\\0\\0\\0\\0\"+a+String.fromCharCode.apply(String,v.slice(-n)))))},He.SALT_LEN_HLEN=-1,He.SALT_LEN_MAX=-2,He.SALT_LEN_RECOVER=-2,on.hex2dn=function(t,e){if(void 0===e&&(e=0),\"30\"!==t.substr(e,2))throw new Error(\"malformed DN\");for(var r=new Array,n=Er.getChildIdx(t,e),i=0;i<n.length;i++)r.push(on.hex2rdn(t,n[i]));return\"/\"+(r=r.map((function(t){return t.replace(\"/\",\"\\\\/\")}))).join(\"/\")},on.hex2rdn=function(t,e){if(void 0===e&&(e=0),\"31\"!==t.substr(e,2))throw new Error(\"malformed RDN\");for(var r=new Array,n=Er.getChildIdx(t,e),i=0;i<n.length;i++)r.push(on.hex2attrTypeValue(t,n[i]));return(r=r.map((function(t){return t.replace(\"+\",\"\\\\+\")}))).join(\"+\")},on.hex2attrTypeValue=function(t,e){var r=Er,n=r.getV;if(void 0===e&&(e=0),\"30\"!==t.substr(e,2))throw new Error(\"malformed attribute type and value\");var i=r.getChildIdx(t,e);2!==i.length||t.substr(i[0],2);var o=n(t,i[0]),s=br.asn1.ASN1Util.oidHexToInt(o);return br.asn1.x509.OID.oid2atype(s)+\"=\"+Nr(n(t,i[1]))},on.getPublicKeyFromCertHex=function(t){var e=new on;return e.readCertHex(t),e.getPublicKey()},on.getPublicKeyFromCertPEM=function(t){var e=new on;return e.readCertPEM(t),e.getPublicKey()},on.getPublicKeyInfoPropOfCertPEM=function(t){var e,r,n=Er.getVbyList,i={};return i.algparam=null,(e=new on).readCertPEM(t),r=e.getPublicKeyHex(),i.keyhex=n(r,0,[1],\"03\").substr(2),i.algoid=n(r,0,[0,0],\"06\"),\"2a8648ce3d0201\"===i.algoid&&(i.algparam=n(r,0,[0,1],\"06\")),i},on.KEYUSAGE_NAME=[\"digitalSignature\",\"nonRepudiation\",\"keyEncipherment\",\"dataEncipherment\",\"keyAgreement\",\"keyCertSign\",\"cRLSign\",\"encipherOnly\",\"decipherOnly\"],void 0!==br&&br||(e.KJUR=br={}),void 0!==br.jws&&br.jws||(br.jws={}),br.jws.JWS=function(){var t=br.jws.JWS.isSafeJSONString;this.parseJWS=function(e,r){if(void 0===this.parsedJWS||!r&&void 0===this.parsedJWS.sigvalH){var n=e.match(/^([^.]+)\\.([^.]+)\\.([^.]+)$/);if(null==n)throw\"JWS signature is not a form of 'Head.Payload.SigValue'.\";var i=n[1],o=n[2],s=n[3],a=i+\".\"+o;if(this.parsedJWS={},this.parsedJWS.headB64U=i,this.parsedJWS.payloadB64U=o,this.parsedJWS.sigvalB64U=s,this.parsedJWS.si=a,!r){var u=Ir(s),c=je(u,16);this.parsedJWS.sigvalH=u,this.parsedJWS.sigvalBI=c}var h=Fr(i),l=Fr(o);if(this.parsedJWS.headS=h,this.parsedJWS.payloadS=l,!t(h,this.parsedJWS,\"headP\"))throw\"malformed JSON string for JWS Head: \"+h}}},br.jws.JWS.sign=function(t,e,n,i,o){var s,a,u,c=br,h=c.jws.JWS,l=h.readSafeJSONString,f=h.isSafeJSONString,g=c.crypto,d=(g.ECDSA,g.Mac),p=g.Signature,v=JSON;if(\"string\"!=typeof e&&\"object\"!=(void 0===e?\"undefined\":r(e)))throw\"spHeader must be JSON string or object: \"+e;if(\"object\"==(void 0===e?\"undefined\":r(e))&&(a=e,s=v.stringify(a)),\"string\"==typeof e){if(!f(s=e))throw\"JWS Head is not safe JSON string: \"+s;a=l(s)}if(u=n,\"object\"==(void 0===n?\"undefined\":r(n))&&(u=v.stringify(n)),\"\"!=t&&null!=t||void 0===a.alg||(t=a.alg),\"\"!=t&&null!=t&&void 0===a.alg&&(a.alg=t,s=v.stringify(a)),t!==a.alg)throw\"alg and sHeader.alg doesn't match: \"+t+\"!=\"+a.alg;var y=null;if(void 0===h.jwsalg2sigalg[t])throw\"unsupported alg name: \"+t;y=h.jwsalg2sigalg[t];var m=wr(s)+\".\"+wr(u),_=\"\";if(\"Hmac\"==y.substr(0,4)){if(void 0===i)throw\"mac key shall be specified for HS* alg\";var S=new d({alg:y,prov:\"cryptojs\",pass:i});S.updateString(m),_=S.doFinal()}else if(-1!=y.indexOf(\"withECDSA\")){(w=new p({alg:y})).init(i,o),w.updateString(m);var b=w.sign();_=br.crypto.ECDSA.asn1SigToConcatSig(b)}else{var w;if(\"none\"!=y)(w=new p({alg:y})).init(i,o),w.updateString(m),_=w.sign()}return m+\".\"+Rr(_)},br.jws.JWS.verify=function(t,e,n){var i,o=br,s=o.jws.JWS,a=s.readSafeJSONString,u=o.crypto,c=u.ECDSA,h=u.Mac,l=u.Signature;void 0!==r(He)&&(i=He);var f=t.split(\".\");if(3!==f.length)return!1;var g=f[0]+\".\"+f[1],d=Ir(f[2]),p=a(Fr(f[0])),v=null,y=null;if(void 0===p.alg)throw\"algorithm not specified in header\";if((y=(v=p.alg).substr(0,2),null!=n&&\"[object Array]\"===Object.prototype.toString.call(n)&&n.length>0)&&-1==(\":\"+n.join(\":\")+\":\").indexOf(\":\"+v+\":\"))throw\"algorithm '\"+v+\"' not accepted in the list\";if(\"none\"!=v&&null===e)throw\"key shall be specified to verify.\";if(\"string\"==typeof e&&-1!=e.indexOf(\"-----BEGIN \")&&(e=Zr.getKey(e)),!(\"RS\"!=y&&\"PS\"!=y||e instanceof i))throw\"key shall be a RSAKey obj for RS* and PS* algs\";if(\"ES\"==y&&!(e instanceof c))throw\"key shall be a ECDSA obj for ES* algs\";var m=null;if(void 0===s.jwsalg2sigalg[p.alg])throw\"unsupported alg name: \"+v;if(\"none\"==(m=s.jwsalg2sigalg[v]))throw\"not supported\";if(\"Hmac\"==m.substr(0,4)){if(void 0===e)throw\"hexadecimal key shall be specified for HMAC\";var _=new h({alg:m,pass:e});return _.updateString(g),d==_.doFinal()}if(-1!=m.indexOf(\"withECDSA\")){var S,b=null;try{b=c.concatSigToASN1Sig(d)}catch(t){return!1}return(S=new l({alg:m})).init(e),S.updateString(g),S.verify(b)}return(S=new l({alg:m})).init(e),S.updateString(g),S.verify(d)},br.jws.JWS.parse=function(t){var e,r,n,i=t.split(\".\"),o={};if(2!=i.length&&3!=i.length)throw\"malformed sJWS: wrong number of '.' splitted elements\";return e=i[0],r=i[1],3==i.length&&(n=i[2]),o.headerObj=br.jws.JWS.readSafeJSONString(Fr(e)),o.payloadObj=br.jws.JWS.readSafeJSONString(Fr(r)),o.headerPP=JSON.stringify(o.headerObj,null,\"  \"),null==o.payloadObj?o.payloadPP=Fr(r):o.payloadPP=JSON.stringify(o.payloadObj,null,\"  \"),void 0!==n&&(o.sigHex=Ir(n)),o},br.jws.JWS.verifyJWT=function(t,e,n){var i=br.jws,o=i.JWS,s=o.readSafeJSONString,a=o.inArray,u=o.includedArray,c=t.split(\".\"),h=c[0],l=c[1],f=(Ir(c[2]),s(Fr(h))),g=s(Fr(l));if(void 0===f.alg)return!1;if(void 0===n.alg)throw\"acceptField.alg shall be specified\";if(!a(f.alg,n.alg))return!1;if(void 0!==g.iss&&\"object\"===r(n.iss)&&!a(g.iss,n.iss))return!1;if(void 0!==g.sub&&\"object\"===r(n.sub)&&!a(g.sub,n.sub))return!1;if(void 0!==g.aud&&\"object\"===r(n.aud))if(\"string\"==typeof g.aud){if(!a(g.aud,n.aud))return!1}else if(\"object\"==r(g.aud)&&!u(g.aud,n.aud))return!1;var d=i.IntDate.getNow();return void 0!==n.verifyAt&&\"number\"==typeof n.verifyAt&&(d=n.verifyAt),void 0!==n.gracePeriod&&\"number\"==typeof n.gracePeriod||(n.gracePeriod=0),!(void 0!==g.exp&&\"number\"==typeof g.exp&&g.exp+n.gracePeriod<d)&&(!(void 0!==g.nbf&&\"number\"==typeof g.nbf&&d<g.nbf-n.gracePeriod)&&(!(void 0!==g.iat&&\"number\"==typeof g.iat&&d<g.iat-n.gracePeriod)&&((void 0===g.jti||void 0===n.jti||g.jti===n.jti)&&!!o.verify(t,e,n.alg))))},br.jws.JWS.includedArray=function(t,e){var n=br.jws.JWS.inArray;if(null===t)return!1;if(\"object\"!==(void 0===t?\"undefined\":r(t)))return!1;if(\"number\"!=typeof t.length)return!1;for(var i=0;i<t.length;i++)if(!n(t[i],e))return!1;return!0},br.jws.JWS.inArray=function(t,e){if(null===e)return!1;if(\"object\"!==(void 0===e?\"undefined\":r(e)))return!1;if(\"number\"!=typeof e.length)return!1;for(var n=0;n<e.length;n++)if(e[n]==t)return!0;return!1},br.jws.JWS.jwsalg2sigalg={HS256:\"HmacSHA256\",HS384:\"HmacSHA384\",HS512:\"HmacSHA512\",RS256:\"SHA256withRSA\",RS384:\"SHA384withRSA\",RS512:\"SHA512withRSA\",ES256:\"SHA256withECDSA\",ES384:\"SHA384withECDSA\",PS256:\"SHA256withRSAandMGF1\",PS384:\"SHA384withRSAandMGF1\",PS512:\"SHA512withRSAandMGF1\",none:\"none\"},br.jws.JWS.isSafeJSONString=function(t,e,n){var i=null;try{return\"object\"!=(void 0===(i=Sr(t))?\"undefined\":r(i))||i.constructor===Array?0:(e&&(e[n]=i),1)}catch(t){return 0}},br.jws.JWS.readSafeJSONString=function(t){var e=null;try{return\"object\"!=(void 0===(e=Sr(t))?\"undefined\":r(e))||e.constructor===Array?null:e}catch(t){return null}},br.jws.JWS.getEncodedSignatureValueFromJWS=function(t){var e=t.match(/^[^.]+\\.[^.]+\\.([^.]+)$/);if(null==e)throw\"JWS signature is not a form of 'Head.Payload.SigValue'.\";return e[1]},br.jws.JWS.getJWKthumbprint=function(t){if(\"RSA\"!==t.kty&&\"EC\"!==t.kty&&\"oct\"!==t.kty)throw\"unsupported algorithm for JWK Thumprint\";var e=\"{\";if(\"RSA\"===t.kty){if(\"string\"!=typeof t.n||\"string\"!=typeof t.e)throw\"wrong n and e value for RSA key\";e+='\"e\":\"'+t.e+'\",',e+='\"kty\":\"'+t.kty+'\",',e+='\"n\":\"'+t.n+'\"}'}else if(\"EC\"===t.kty){if(\"string\"!=typeof t.crv||\"string\"!=typeof t.x||\"string\"!=typeof t.y)throw\"wrong crv, x and y value for EC key\";e+='\"crv\":\"'+t.crv+'\",',e+='\"kty\":\"'+t.kty+'\",',e+='\"x\":\"'+t.x+'\",',e+='\"y\":\"'+t.y+'\"}'}else if(\"oct\"===t.kty){if(\"string\"!=typeof t.k)throw\"wrong k value for oct(symmetric) key\";e+='\"kty\":\"'+t.kty+'\",',e+='\"k\":\"'+t.k+'\"}'}var r=Ur(e);return Rr(br.crypto.Util.hashHex(r,\"sha256\"))},br.jws.IntDate={},br.jws.IntDate.get=function(t){var e=br.jws.IntDate,r=e.getNow,n=e.getZulu;if(\"now\"==t)return r();if(\"now + 1hour\"==t)return r()+3600;if(\"now + 1day\"==t)return r()+86400;if(\"now + 1month\"==t)return r()+2592e3;if(\"now + 1year\"==t)return r()+31536e3;if(t.match(/Z$/))return n(t);if(t.match(/^[0-9]+$/))return parseInt(t);throw\"unsupported format: \"+t},br.jws.IntDate.getZulu=function(t){return Kr(t)},br.jws.IntDate.getNow=function(){return~~(new Date/1e3)},br.jws.IntDate.intDate2UTCString=function(t){return new Date(1e3*t).toUTCString()},br.jws.IntDate.intDate2Zulu=function(t){var e=new Date(1e3*t);return(\"0000\"+e.getUTCFullYear()).slice(-4)+(\"00\"+(e.getUTCMonth()+1)).slice(-2)+(\"00\"+e.getUTCDate()).slice(-2)+(\"00\"+e.getUTCHours()).slice(-2)+(\"00\"+e.getUTCMinutes()).slice(-2)+(\"00\"+e.getUTCSeconds()).slice(-2)+\"Z\"},e.SecureRandom=Oe,e.rng_seed_time=Ie,e.BigInteger=F,e.RSAKey=He;var sn=br.crypto.EDSA;e.EDSA=sn;var an=br.crypto.DSA;e.DSA=an;var un=br.crypto.Signature;e.Signature=un;var cn=br.crypto.MessageDigest;e.MessageDigest=cn;var hn=br.crypto.Mac;e.Mac=hn;var ln=br.crypto.Cipher;e.Cipher=ln,e.KEYUTIL=Zr,e.ASN1HEX=Er,e.X509=on,e.CryptoJS=y,e.b64tohex=b,e.b64toBA=w,e.stoBA=xr,e.BAtos=Ar,e.BAtohex=kr,e.stohex=Pr,e.stob64=function fn(t){return S(Pr(t))},e.stob64u=function gn(t){return Cr(S(Pr(t)))},e.b64utos=function dn(t){return Ar(w(Tr(t)))},e.b64tob64u=Cr,e.b64utob64=Tr,e.hex2b64=S,e.hextob64u=Rr,e.b64utohex=Ir,e.utf8tob64u=wr,e.b64utoutf8=Fr,e.utf8tob64=function pn(t){return S(qr(Gr(t)))},e.b64toutf8=function vn(t){return decodeURIComponent(Jr(b(t)))},e.utf8tohex=Dr,e.hextoutf8=Lr,e.hextorstr=Nr,e.rstrtohex=Ur,e.hextob64=Br,e.hextob64nl=Or,e.b64nltohex=jr,e.hextopem=Mr,e.pemtohex=Hr,e.hextoArrayBuffer=function yn(t){if(t.length%2!=0)throw\"input is not even length\";if(null==t.match(/^[0-9A-Fa-f]+$/))throw\"input is not hexadecimal\";for(var e=new ArrayBuffer(t.length/2),r=new DataView(e),n=0;n<t.length/2;n++)r.setUint8(n,parseInt(t.substr(2*n,2),16));return e},e.ArrayBuffertohex=function mn(t){for(var e=\"\",r=new DataView(t),n=0;n<t.byteLength;n++)e+=(\"00\"+r.getUint8(n).toString(16)).slice(-2);return e},e.zulutomsec=Vr,e.zulutosec=Kr,e.zulutodate=function _n(t){return new Date(Vr(t))},e.datetozulu=function Sn(t,e,r){var n,i=t.getUTCFullYear();if(e){if(i<1950||2049<i)throw\"not proper year for UTCTime: \"+i;n=(\"\"+i).slice(-2)}else n=(\"000\"+i).slice(-4);if(n+=(\"0\"+(t.getUTCMonth()+1)).slice(-2),n+=(\"0\"+t.getUTCDate()).slice(-2),n+=(\"0\"+t.getUTCHours()).slice(-2),n+=(\"0\"+t.getUTCMinutes()).slice(-2),n+=(\"0\"+t.getUTCSeconds()).slice(-2),r){var o=t.getUTCMilliseconds();0!==o&&(n+=\".\"+(o=(o=(\"00\"+o).slice(-3)).replace(/0+$/g,\"\")))}return n+=\"Z\"},e.uricmptohex=qr,e.hextouricmp=Jr,e.ipv6tohex=Wr,e.hextoipv6=zr,e.hextoip=Yr,e.iptohex=function bn(t){var e=\"malformed IP address\";if(!(t=t.toLowerCase(t)).match(/^[0-9.]+$/)){if(t.match(/^[0-9a-f:]+$/)&&-1!==t.indexOf(\":\"))return Wr(t);throw e}var r=t.split(\".\");if(4!==r.length)throw e;var n=\"\";try{for(var i=0;i<4;i++){n+=(\"0\"+parseInt(r[i]).toString(16)).slice(-2)}return n}catch(t){throw e}},e.encodeURIComponentAll=Gr,e.newline_toUnix=function wn(t){return t=t.replace(/\\r\\n/gm,\"\\n\")},e.newline_toDos=function Fn(t){return t=(t=t.replace(/\\r\\n/gm,\"\\n\")).replace(/\\n/gm,\"\\r\\n\")},e.hextoposhex=$r,e.intarystrtohex=function En(t){t=(t=(t=t.replace(/^\\s*\\[\\s*/,\"\")).replace(/\\s*\\]\\s*$/,\"\")).replace(/\\s*/g,\"\");try{return t.split(/,/).map((function(t,e,r){var n=parseInt(t);if(n<0||255<n)throw\"integer not in range 0-255\";return(\"00\"+n.toString(16)).slice(-2)})).join(\"\")}catch(t){throw\"malformed integer array string: \"+t}},e.strdiffidx=function t(e,r){var n=e.length;e.length>r.length&&(n=r.length);for(var i=0;i<n;i++)if(e.charCodeAt(i)!=r.charCodeAt(i))return i;return e.length!=r.length?n:-1},e.KJUR=br;var xn=br.crypto;e.crypto=xn;var An=br.asn1;e.asn1=An;var kn=br.jws;e.jws=kn;var Pn=br.lang;e.lang=Pn}).call(this,r(28).Buffer)},function(t,e,r){\"use strict\";(function(t){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <http://feross.org>\n * @license  MIT\n */\nvar n=r(30),i=r(31),o=r(32);function s(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(t,e){if(s()<e)throw new RangeError(\"Invalid typed array length\");return u.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=u.prototype:(null===t&&(t=new u(e)),t.length=e),t}function u(t,e,r){if(!(u.TYPED_ARRAY_SUPPORT||this instanceof u))return new u(t,e,r);if(\"number\"==typeof t){if(\"string\"==typeof e)throw new Error(\"If encoding is specified then the first argument must be a string\");return l(this,t)}return c(this,t,e,r)}function c(t,e,r,n){if(\"number\"==typeof e)throw new TypeError('\"value\" argument must not be a number');return\"undefined\"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function i(t,e,r,n){if(e.byteLength,r<0||e.byteLength<r)throw new RangeError(\"'offset' is out of bounds\");if(e.byteLength<r+(n||0))throw new RangeError(\"'length' is out of bounds\");e=void 0===r&&void 0===n?new Uint8Array(e):void 0===n?new Uint8Array(e,r):new Uint8Array(e,r,n);u.TYPED_ARRAY_SUPPORT?(t=e).__proto__=u.prototype:t=f(t,e);return t}(t,e,r,n):\"string\"==typeof e?function s(t,e,r){\"string\"==typeof r&&\"\"!==r||(r=\"utf8\");if(!u.isEncoding(r))throw new TypeError('\"encoding\" must be a valid string encoding');var n=0|d(e,r),i=(t=a(t,n)).write(e,r);i!==n&&(t=t.slice(0,i));return t}(t,e,r):function c(t,e){if(u.isBuffer(e)){var r=0|g(e.length);return 0===(t=a(t,r)).length||e.copy(t,0,0,r),t}if(e){if(\"undefined\"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||\"length\"in e)return\"number\"!=typeof e.length||function n(t){return t!=t}(e.length)?a(t,0):f(t,e);if(\"Buffer\"===e.type&&o(e.data))return f(t,e.data)}throw new TypeError(\"First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.\")}(t,e)}function h(t){if(\"number\"!=typeof t)throw new TypeError('\"size\" argument must be a number');if(t<0)throw new RangeError('\"size\" argument must not be negative')}function l(t,e){if(h(e),t=a(t,e<0?0:0|g(e)),!u.TYPED_ARRAY_SUPPORT)for(var r=0;r<e;++r)t[r]=0;return t}function f(t,e){var r=e.length<0?0:0|g(e.length);t=a(t,r);for(var n=0;n<r;n+=1)t[n]=255&e[n];return t}function g(t){if(t>=s())throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+s().toString(16)+\" bytes\");return 0|t}function d(t,e){if(u.isBuffer(t))return t.length;if(\"undefined\"!=typeof ArrayBuffer&&\"function\"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;\"string\"!=typeof t&&(t=\"\"+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":case void 0:return K(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return q(t).length;default:if(n)return K(t).length;e=(\"\"+e).toLowerCase(),n=!0}}function p(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(e>>>=0))return\"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return I(this,e,r);case\"utf8\":case\"utf-8\":return A(this,e,r);case\"ascii\":return T(this,e,r);case\"latin1\":case\"binary\":return R(this,e,r);case\"base64\":return x(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return D(this,e,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0}}function v(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function y(t,e,r,n,i){if(0===t.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof e&&(e=u.from(e,n)),u.isBuffer(e))return 0===e.length?-1:m(t,e,r,n,i);if(\"number\"==typeof e)return e&=255,u.TYPED_ARRAY_SUPPORT&&\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):m(t,[e],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function m(t,e,r,n,i){var o,s=1,a=t.length,u=e.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(t.length<2||e.length<2)return-1;s=2,a/=2,u/=2,r/=2}function c(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(i){var h=-1;for(o=r;o<a;o++)if(c(t,o)===c(e,-1===h?0:o-h)){if(-1===h&&(h=o),o-h+1===u)return h*s}else-1!==h&&(o-=o-h),h=-1}else for(r+u>a&&(r=a-u),o=r;o>=0;o--){for(var l=!0,f=0;f<u;f++)if(c(t,o+f)!==c(e,f)){l=!1;break}if(l)return o}return-1}function _(t,e,r,n){r=Number(r)||0;var i=t.length-r;n?(n=Number(n))>i&&(n=i):n=i;var o=e.length;if(o%2!=0)throw new TypeError(\"Invalid hex string\");n>o/2&&(n=o/2);for(var s=0;s<n;++s){var a=parseInt(e.substr(2*s,2),16);if(isNaN(a))return s;t[r+s]=a}return s}function S(t,e,r,n){return J(K(e,t.length-r),t,r,n)}function b(t,e,r,n){return J(function i(t){for(var e=[],r=0;r<t.length;++r)e.push(255&t.charCodeAt(r));return e}(e),t,r,n)}function w(t,e,r,n){return b(t,e,r,n)}function F(t,e,r,n){return J(q(e),t,r,n)}function E(t,e,r,n){return J(function i(t,e){for(var r,n,i,o=[],s=0;s<t.length&&!((e-=2)<0);++s)n=(r=t.charCodeAt(s))>>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function x(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function A(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i<r;){var o,s,a,u,c=t[i],h=null,l=c>239?4:c>223?3:c>191?2:1;if(i+l<=r)switch(l){case 1:c<128&&(h=c);break;case 2:128==(192&(o=t[i+1]))&&(u=(31&c)<<6|63&o)>127&&(h=u);break;case 3:o=t[i+1],s=t[i+2],128==(192&o)&&128==(192&s)&&(u=(15&c)<<12|(63&o)<<6|63&s)>2047&&(u<55296||u>57343)&&(h=u);break;case 4:o=t[i+1],s=t[i+2],a=t[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(u=(15&c)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(h=u)}null===h?(h=65533,l=1):h>65535&&(h-=65536,n.push(h>>>10&1023|55296),h=56320|1023&h),n.push(h),i+=l}return function f(t){var e=t.length;if(e<=C)return String.fromCharCode.apply(String,t);var r=\"\",n=0;for(;n<e;)r+=String.fromCharCode.apply(String,t.slice(n,n+=C));return r}(n)}e.Buffer=u,e.SlowBuffer=function k(t){+t!=t&&(t=0);return u.alloc(+t)},e.INSPECT_MAX_BYTES=50,u.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function P(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&\"function\"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}(),e.kMaxLength=s(),u.poolSize=8192,u._augment=function(t){return t.__proto__=u.prototype,t},u.from=function(t,e,r){return c(null,t,e,r)},u.TYPED_ARRAY_SUPPORT&&(u.prototype.__proto__=Uint8Array.prototype,u.__proto__=Uint8Array,\"undefined\"!=typeof Symbol&&Symbol.species&&u[Symbol.species]===u&&Object.defineProperty(u,Symbol.species,{value:null,configurable:!0})),u.alloc=function(t,e,r){return function n(t,e,r,i){return h(e),e<=0?a(t,e):void 0!==r?\"string\"==typeof i?a(t,e).fill(r,i):a(t,e).fill(r):a(t,e)}(null,t,e,r)},u.allocUnsafe=function(t){return l(null,t)},u.allocUnsafeSlow=function(t){return l(null,t)},u.isBuffer=function t(e){return!(null==e||!e._isBuffer)},u.compare=function t(e,r){if(!u.isBuffer(e)||!u.isBuffer(r))throw new TypeError(\"Arguments must be Buffers\");if(e===r)return 0;for(var n=e.length,i=r.length,o=0,s=Math.min(n,i);o<s;++o)if(e[o]!==r[o]){n=e[o],i=r[o];break}return n<i?-1:i<n?1:0},u.isEncoding=function t(e){switch(String(e).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}},u.concat=function t(e,r){if(!o(e))throw new TypeError('\"list\" argument must be an Array of Buffers');if(0===e.length)return u.alloc(0);var n;if(void 0===r)for(r=0,n=0;n<e.length;++n)r+=e[n].length;var i=u.allocUnsafe(r),s=0;for(n=0;n<e.length;++n){var a=e[n];if(!u.isBuffer(a))throw new TypeError('\"list\" argument must be an Array of Buffers');a.copy(i,s),s+=a.length}return i},u.byteLength=d,u.prototype._isBuffer=!0,u.prototype.swap16=function t(){var e=this.length;if(e%2!=0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(var r=0;r<e;r+=2)v(this,r,r+1);return this},u.prototype.swap32=function t(){var e=this.length;if(e%4!=0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(var r=0;r<e;r+=4)v(this,r,r+3),v(this,r+1,r+2);return this},u.prototype.swap64=function t(){var e=this.length;if(e%8!=0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(var r=0;r<e;r+=8)v(this,r,r+7),v(this,r+1,r+6),v(this,r+2,r+5),v(this,r+3,r+4);return this},u.prototype.toString=function t(){var e=0|this.length;return 0===e?\"\":0===arguments.length?A(this,0,e):p.apply(this,arguments)},u.prototype.equals=function t(e){if(!u.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");return this===e||0===u.compare(this,e)},u.prototype.inspect=function t(){var r=\"\",n=e.INSPECT_MAX_BYTES;return this.length>0&&(r=this.toString(\"hex\",0,n).match(/.{2}/g).join(\" \"),this.length>n&&(r+=\" ... \")),\"<Buffer \"+r+\">\"},u.prototype.compare=function t(e,r,n,i,o){if(!u.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");if(void 0===r&&(r=0),void 0===n&&(n=e?e.length:0),void 0===i&&(i=0),void 0===o&&(o=this.length),r<0||n>e.length||i<0||o>this.length)throw new RangeError(\"out of range index\");if(i>=o&&r>=n)return 0;if(i>=o)return-1;if(r>=n)return 1;if(this===e)return 0;for(var s=(o>>>=0)-(i>>>=0),a=(n>>>=0)-(r>>>=0),c=Math.min(s,a),h=this.slice(i,o),l=e.slice(r,n),f=0;f<c;++f)if(h[f]!==l[f]){s=h[f],a=l[f];break}return s<a?-1:a<s?1:0},u.prototype.includes=function t(e,r,n){return-1!==this.indexOf(e,r,n)},u.prototype.indexOf=function t(e,r,n){return y(this,e,r,n,!0)},u.prototype.lastIndexOf=function t(e,r,n){return y(this,e,r,n,!1)},u.prototype.write=function t(e,r,n,i){if(void 0===r)i=\"utf8\",n=this.length,r=0;else if(void 0===n&&\"string\"==typeof r)i=r,n=this.length,r=0;else{if(!isFinite(r))throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");r|=0,isFinite(n)?(n|=0,void 0===i&&(i=\"utf8\")):(i=n,n=void 0)}var o=this.length-r;if((void 0===n||n>o)&&(n=o),e.length>0&&(n<0||r<0)||r>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");i||(i=\"utf8\");for(var s=!1;;)switch(i){case\"hex\":return _(this,e,r,n);case\"utf8\":case\"utf-8\":return S(this,e,r,n);case\"ascii\":return b(this,e,r,n);case\"latin1\":case\"binary\":return w(this,e,r,n);case\"base64\":return F(this,e,r,n);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return E(this,e,r,n);default:if(s)throw new TypeError(\"Unknown encoding: \"+i);i=(\"\"+i).toLowerCase(),s=!0}},u.prototype.toJSON=function t(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var C=4096;function T(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(127&t[i]);return n}function R(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(t[i]);return n}function I(t,e,r){var n=t.length;(!e||e<0)&&(e=0),(!r||r<0||r>n)&&(r=n);for(var i=\"\",o=e;o<r;++o)i+=V(t[o]);return i}function D(t,e,r){for(var n=t.slice(e,r),i=\"\",o=0;o<n.length;o+=2)i+=String.fromCharCode(n[o]+256*n[o+1]);return i}function L(t,e,r){if(t%1!=0||t<0)throw new RangeError(\"offset is not uint\");if(t+e>r)throw new RangeError(\"Trying to access beyond buffer length\")}function N(t,e,r,n,i,o){if(!u.isBuffer(t))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(e>i||e<o)throw new RangeError('\"value\" argument is out of bounds');if(r+n>t.length)throw new RangeError(\"Index out of range\")}function U(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i<o;++i)t[r+i]=(e&255<<8*(n?i:1-i))>>>8*(n?i:1-i)}function B(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i<o;++i)t[r+i]=e>>>8*(n?i:3-i)&255}function O(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function j(t,e,r,n,o){return o||O(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function M(t,e,r,n,o){return o||O(t,0,r,8),i.write(t,e,r,n,52,8),r+8}u.prototype.slice=function t(e,r){var n,i=this.length;if((e=~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),(r=void 0===r?i:~~r)<0?(r+=i)<0&&(r=0):r>i&&(r=i),r<e&&(r=e),u.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,r)).__proto__=u.prototype;else{var o=r-e;n=new u(o,void 0);for(var s=0;s<o;++s)n[s]=this[s+e]}return n},u.prototype.readUIntLE=function t(e,r,n){e|=0,r|=0,n||L(e,r,this.length);for(var i=this[e],o=1,s=0;++s<r&&(o*=256);)i+=this[e+s]*o;return i},u.prototype.readUIntBE=function t(e,r,n){e|=0,r|=0,n||L(e,r,this.length);for(var i=this[e+--r],o=1;r>0&&(o*=256);)i+=this[e+--r]*o;return i},u.prototype.readUInt8=function t(e,r){return r||L(e,1,this.length),this[e]},u.prototype.readUInt16LE=function t(e,r){return r||L(e,2,this.length),this[e]|this[e+1]<<8},u.prototype.readUInt16BE=function t(e,r){return r||L(e,2,this.length),this[e]<<8|this[e+1]},u.prototype.readUInt32LE=function t(e,r){return r||L(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},u.prototype.readUInt32BE=function t(e,r){return r||L(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},u.prototype.readIntLE=function t(e,r,n){e|=0,r|=0,n||L(e,r,this.length);for(var i=this[e],o=1,s=0;++s<r&&(o*=256);)i+=this[e+s]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*r)),i},u.prototype.readIntBE=function t(e,r,n){e|=0,r|=0,n||L(e,r,this.length);for(var i=r,o=1,s=this[e+--i];i>0&&(o*=256);)s+=this[e+--i]*o;return s>=(o*=128)&&(s-=Math.pow(2,8*r)),s},u.prototype.readInt8=function t(e,r){return r||L(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},u.prototype.readInt16LE=function t(e,r){r||L(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt16BE=function t(e,r){r||L(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt32LE=function t(e,r){return r||L(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},u.prototype.readInt32BE=function t(e,r){return r||L(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},u.prototype.readFloatLE=function t(e,r){return r||L(e,4,this.length),i.read(this,e,!0,23,4)},u.prototype.readFloatBE=function t(e,r){return r||L(e,4,this.length),i.read(this,e,!1,23,4)},u.prototype.readDoubleLE=function t(e,r){return r||L(e,8,this.length),i.read(this,e,!0,52,8)},u.prototype.readDoubleBE=function t(e,r){return r||L(e,8,this.length),i.read(this,e,!1,52,8)},u.prototype.writeUIntLE=function t(e,r,n,i){(e=+e,r|=0,n|=0,i)||N(this,e,r,n,Math.pow(2,8*n)-1,0);var o=1,s=0;for(this[r]=255&e;++s<n&&(o*=256);)this[r+s]=e/o&255;return r+n},u.prototype.writeUIntBE=function t(e,r,n,i){(e=+e,r|=0,n|=0,i)||N(this,e,r,n,Math.pow(2,8*n)-1,0);var o=n-1,s=1;for(this[r+o]=255&e;--o>=0&&(s*=256);)this[r+o]=e/s&255;return r+n},u.prototype.writeUInt8=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,1,255,0),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[r]=255&e,r+1},u.prototype.writeUInt16LE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8):U(this,e,r,!0),r+2},u.prototype.writeUInt16BE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=255&e):U(this,e,r,!1),r+2},u.prototype.writeUInt32LE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[r+3]=e>>>24,this[r+2]=e>>>16,this[r+1]=e>>>8,this[r]=255&e):B(this,e,r,!0),r+4},u.prototype.writeUInt32BE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e):B(this,e,r,!1),r+4},u.prototype.writeIntLE=function t(e,r,n,i){if(e=+e,r|=0,!i){var o=Math.pow(2,8*n-1);N(this,e,r,n,o-1,-o)}var s=0,a=1,u=0;for(this[r]=255&e;++s<n&&(a*=256);)e<0&&0===u&&0!==this[r+s-1]&&(u=1),this[r+s]=(e/a>>0)-u&255;return r+n},u.prototype.writeIntBE=function t(e,r,n,i){if(e=+e,r|=0,!i){var o=Math.pow(2,8*n-1);N(this,e,r,n,o-1,-o)}var s=n-1,a=1,u=0;for(this[r+s]=255&e;--s>=0&&(a*=256);)e<0&&0===u&&0!==this[r+s+1]&&(u=1),this[r+s]=(e/a>>0)-u&255;return r+n},u.prototype.writeInt8=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,1,127,-128),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[r]=255&e,r+1},u.prototype.writeInt16LE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8):U(this,e,r,!0),r+2},u.prototype.writeInt16BE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=255&e):U(this,e,r,!1),r+2},u.prototype.writeInt32LE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8,this[r+2]=e>>>16,this[r+3]=e>>>24):B(this,e,r,!0),r+4},u.prototype.writeInt32BE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),u.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e):B(this,e,r,!1),r+4},u.prototype.writeFloatLE=function t(e,r,n){return j(this,e,r,!0,n)},u.prototype.writeFloatBE=function t(e,r,n){return j(this,e,r,!1,n)},u.prototype.writeDoubleLE=function t(e,r,n){return M(this,e,r,!0,n)},u.prototype.writeDoubleBE=function t(e,r,n){return M(this,e,r,!1,n)},u.prototype.copy=function t(e,r,n,i){if(n||(n=0),i||0===i||(i=this.length),r>=e.length&&(r=e.length),r||(r=0),i>0&&i<n&&(i=n),i===n)return 0;if(0===e.length||0===this.length)return 0;if(r<0)throw new RangeError(\"targetStart out of bounds\");if(n<0||n>=this.length)throw new RangeError(\"sourceStart out of bounds\");if(i<0)throw new RangeError(\"sourceEnd out of bounds\");i>this.length&&(i=this.length),e.length-r<i-n&&(i=e.length-r+n);var o,s=i-n;if(this===e&&n<r&&r<i)for(o=s-1;o>=0;--o)e[o+r]=this[o+n];else if(s<1e3||!u.TYPED_ARRAY_SUPPORT)for(o=0;o<s;++o)e[o+r]=this[o+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+s),r);return s},u.prototype.fill=function t(e,r,n,i){if(\"string\"==typeof e){if(\"string\"==typeof r?(i=r,r=0,n=this.length):\"string\"==typeof n&&(i=n,n=this.length),1===e.length){var o=e.charCodeAt(0);o<256&&(e=o)}if(void 0!==i&&\"string\"!=typeof i)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof i&&!u.isEncoding(i))throw new TypeError(\"Unknown encoding: \"+i)}else\"number\"==typeof e&&(e&=255);if(r<0||this.length<r||this.length<n)throw new RangeError(\"Out of range index\");if(n<=r)return this;var s;if(r>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),\"number\"==typeof e)for(s=r;s<n;++s)this[s]=e;else{var a=u.isBuffer(e)?e:K(new u(e,i).toString()),c=a.length;for(s=0;s<n-r;++s)this[s+r]=a[s%c]}return this};var H=/[^+\\/0-9A-Za-z-_]/g;function V(t){return t<16?\"0\"+t.toString(16):t.toString(16)}function K(t,e){var r;e=e||1/0;for(var n=t.length,i=null,o=[],s=0;s<n;++s){if((r=t.charCodeAt(s))>55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function q(t){return n.toByteArray(function e(t){if((t=function e(t){return t.trim?t.trim():t.replace(/^\\s+|\\s+$/g,\"\")}(t).replace(H,\"\")).length<2)return\"\";for(;t.length%4!=0;)t+=\"=\";return t}(t))}function J(t,e,r,n){for(var i=0;i<n&&!(i+r>=e.length||i>=t.length);++i)e[i+r]=t[i];return i}}).call(this,r(29))},function(t,e){var r;r=function(){return this}();try{r=r||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(r=window)}t.exports=r},function(t,e,r){\"use strict\";e.byteLength=function n(t){var e=f(t),r=e[0],n=e[1];return 3*(r+n)/4-n},e.toByteArray=function i(t){var e,r,n=f(t),i=n[0],o=n[1],s=new u(function c(t,e,r){return 3*(e+r)/4-r}(0,i,o)),h=0,l=o>0?i-4:i;for(r=0;r<l;r+=4)e=a[t.charCodeAt(r)]<<18|a[t.charCodeAt(r+1)]<<12|a[t.charCodeAt(r+2)]<<6|a[t.charCodeAt(r+3)],s[h++]=e>>16&255,s[h++]=e>>8&255,s[h++]=255&e;2===o&&(e=a[t.charCodeAt(r)]<<2|a[t.charCodeAt(r+1)]>>4,s[h++]=255&e);1===o&&(e=a[t.charCodeAt(r)]<<10|a[t.charCodeAt(r+1)]<<4|a[t.charCodeAt(r+2)]>>2,s[h++]=e>>8&255,s[h++]=255&e);return s},e.fromByteArray=function o(t){for(var e,r=t.length,n=r%3,i=[],o=16383,a=0,u=r-n;a<u;a+=o)i.push(g(t,a,a+o>u?u:a+o));1===n?(e=t[r-1],i.push(s[e>>2]+s[e<<4&63]+\"==\")):2===n&&(e=(t[r-2]<<8)+t[r-1],i.push(s[e>>10]+s[e>>4&63]+s[e<<2&63]+\"=\"));return i.join(\"\")};for(var s=[],a=[],u=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,c=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",h=0,l=c.length;h<l;++h)s[h]=c[h],a[c.charCodeAt(h)]=h;function f(t){var e=t.length;if(e%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function g(t,e,r){for(var n,i,o=[],a=e;a<r;a+=3)n=(t[a]<<16&16711680)+(t[a+1]<<8&65280)+(255&t[a+2]),o.push(s[(i=n)>>18&63]+s[i>>12&63]+s[i>>6&63]+s[63&i]);return o.join(\"\")}a[\"-\".charCodeAt(0)]=62,a[\"_\".charCodeAt(0)]=63},function(t,e){\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\ne.read=function(t,e,r,n,i){var o,s,a=8*i-n-1,u=(1<<a)-1,c=u>>1,h=-7,l=r?i-1:0,f=r?-1:1,g=t[e+l];for(l+=f,o=g&(1<<-h)-1,g>>=-h,h+=a;h>0;o=256*o+t[e+l],l+=f,h-=8);for(s=o&(1<<-h)-1,o>>=-h,h+=n;h>0;s=256*s+t[e+l],l+=f,h-=8);if(0===o)o=1-c;else{if(o===u)return s?NaN:1/0*(g?-1:1);s+=Math.pow(2,n),o-=c}return(g?-1:1)*s*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var s,a,u,c=8*o-i-1,h=(1<<c)-1,l=h>>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,g=n?0:o-1,d=n?1:-1,p=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=h):(s=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-s))<1&&(s--,u*=2),(e+=s+l>=1?f/u:f*Math.pow(2,1-l))*u>=2&&(s++,u/=2),s+l>=h?(a=0,s=h):s+l>=1?(a=(e*u-1)*Math.pow(2,i),s+=l):(a=e*Math.pow(2,l-1)*Math.pow(2,i),s=0));i>=8;t[r+g]=255&a,g+=d,a/=256,i-=8);for(s=s<<i|a,c+=i;c>0;t[r+g]=255&s,g+=d,s/=256,c-=8);t[r+g-d]|=128*p}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return\"[object Array]\"==r.call(t)}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=function n(t){var e=t.jws,r=t.KeyUtil,n=t.X509,o=t.crypto,s=t.hextob64u,a=t.b64tohex,u=t.AllowedSigningAlgs;return function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.parseJwt=function t(r){i.Log.debug(\"JoseUtil.parseJwt\");try{var n=e.JWS.parse(r);return{header:n.headerObj,payload:n.payloadObj}}catch(t){i.Log.error(t)}},t.validateJwt=function e(o,s,u,c,h,l,f){i.Log.debug(\"JoseUtil.validateJwt\");try{if(\"RSA\"===s.kty)if(s.e&&s.n)s=r.getKey(s);else{if(!s.x5c||!s.x5c.length)return i.Log.error(\"JoseUtil.validateJwt: RSA key missing key material\",s),Promise.reject(new Error(\"RSA key missing key material\"));var g=a(s.x5c[0]);s=n.getPublicKeyFromCertHex(g)}else{if(\"EC\"!==s.kty)return i.Log.error(\"JoseUtil.validateJwt: Unsupported key type\",s&&s.kty),Promise.reject(new Error(s.kty));if(!(s.crv&&s.x&&s.y))return i.Log.error(\"JoseUtil.validateJwt: EC key missing key material\",s),Promise.reject(new Error(\"EC key missing key material\"));s=r.getKey(s)}return t._validateJwt(o,s,u,c,h,l,f)}catch(t){return i.Log.error(t&&t.message||t),Promise.reject(\"JWT validation failed\")}},t.validateJwtAttributes=function e(r,n,o,s,a,u){s||(s=0),a||(a=parseInt(Date.now()/1e3));var c=t.parseJwt(r).payload;if(!c.iss)return i.Log.error(\"JoseUtil._validateJwt: issuer was not provided\"),Promise.reject(new Error(\"issuer was not provided\"));if(c.iss!==n)return i.Log.error(\"JoseUtil._validateJwt: Invalid issuer in token\",c.iss),Promise.reject(new Error(\"Invalid issuer in token: \"+c.iss));if(!c.aud)return i.Log.error(\"JoseUtil._validateJwt: aud was not provided\"),Promise.reject(new Error(\"aud was not provided\"));if(!(c.aud===o||Array.isArray(c.aud)&&c.aud.indexOf(o)>=0))return i.Log.error(\"JoseUtil._validateJwt: Invalid audience in token\",c.aud),Promise.reject(new Error(\"Invalid audience in token: \"+c.aud));if(c.azp&&c.azp!==o)return i.Log.error(\"JoseUtil._validateJwt: Invalid azp in token\",c.azp),Promise.reject(new Error(\"Invalid azp in token: \"+c.azp));if(!u){var h=a+s,l=a-s;if(!c.iat)return i.Log.error(\"JoseUtil._validateJwt: iat was not provided\"),Promise.reject(new Error(\"iat was not provided\"));if(h<c.iat)return i.Log.error(\"JoseUtil._validateJwt: iat is in the future\",c.iat),Promise.reject(new Error(\"iat is in the future: \"+c.iat));if(c.nbf&&h<c.nbf)return i.Log.error(\"JoseUtil._validateJwt: nbf is in the future\",c.nbf),Promise.reject(new Error(\"nbf is in the future: \"+c.nbf));if(!c.exp)return i.Log.error(\"JoseUtil._validateJwt: exp was not provided\"),Promise.reject(new Error(\"exp was not provided\"));if(c.exp<l)return i.Log.error(\"JoseUtil._validateJwt: exp is in the past\",c.exp),Promise.reject(new Error(\"exp is in the past:\"+c.exp))}return Promise.resolve(c)},t._validateJwt=function r(n,o,s,a,c,h,l){return t.validateJwtAttributes(n,s,a,c,h,l).then((function(t){try{return e.JWS.verify(n,o,u)?t:(i.Log.error(\"JoseUtil._validateJwt: signature validation failed\"),Promise.reject(new Error(\"signature validation failed\")))}catch(t){return i.Log.error(t&&t.message||t),Promise.reject(new Error(\"signature validation failed\"))}}))},t.hashString=function t(e,r){try{return o.Util.hashString(e,r)}catch(t){i.Log.error(t)}},t.hexToBase64Url=function t(e){try{return s(e)}catch(t){i.Log.error(t)}},t}()};var i=r(0);t.exports=e.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SigninResponse=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(3);function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.SigninResponse=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"#\";o(this,t);var n=i.UrlUtility.parseUrlFragment(e,r);this.error=n.error,this.error_description=n.error_description,this.error_uri=n.error_uri,this.code=n.code,this.state=n.state,this.id_token=n.id_token,this.session_state=n.session_state,this.access_token=n.access_token,this.token_type=n.token_type,this.scope=n.scope,this.profile=void 0,this.expires_in=n.expires_in}return n(t,[{key:\"expires_in\",get:function t(){if(this.expires_at){var e=parseInt(Date.now()/1e3);return this.expires_at-e}},set:function t(e){var r=parseInt(e);if(\"number\"==typeof r&&r>0){var n=parseInt(Date.now()/1e3);this.expires_at=n+r}}},{key:\"expired\",get:function t(){var e=this.expires_in;if(void 0!==e)return e<=0}},{key:\"scopes\",get:function t(){return(this.scope||\"\").split(\" \")}},{key:\"isOpenIdConnect\",get:function t(){return this.scopes.indexOf(\"openid\")>=0||!!this.id_token}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SignoutRequest=void 0;var n=r(0),i=r(3),o=r(9);e.SignoutRequest=function t(e){var r=e.url,s=e.id_token_hint,a=e.post_logout_redirect_uri,u=e.data,c=e.extraQueryParams,h=e.request_type;if(function l(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),!r)throw n.Log.error(\"SignoutRequest.ctor: No url passed\"),new Error(\"url\");for(var f in s&&(r=i.UrlUtility.addQueryParam(r,\"id_token_hint\",s)),a&&(r=i.UrlUtility.addQueryParam(r,\"post_logout_redirect_uri\",a),u&&(this.state=new o.State({data:u,request_type:h}),r=i.UrlUtility.addQueryParam(r,\"state\",this.state.id))),c)r=i.UrlUtility.addQueryParam(r,f,c[f]);this.url=r}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SignoutResponse=void 0;var n=r(3);e.SignoutResponse=function t(e){!function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t);var i=n.UrlUtility.parseUrlFragment(e,\"?\");this.error=i.error,this.error_description=i.error_description,this.error_uri=i.error_uri,this.state=i.state}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InMemoryWebStorage=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0);e.InMemoryWebStorage=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._data={}}return t.prototype.getItem=function t(e){return i.Log.debug(\"InMemoryWebStorage.getItem\",e),this._data[e]},t.prototype.setItem=function t(e,r){i.Log.debug(\"InMemoryWebStorage.setItem\",e),this._data[e]=r},t.prototype.removeItem=function t(e){i.Log.debug(\"InMemoryWebStorage.removeItem\",e),delete this._data[e]},t.prototype.key=function t(e){return Object.getOwnPropertyNames(this._data)[e]},n(t,[{key:\"length\",get:function t(){return Object.getOwnPropertyNames(this._data).length}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UserManager=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=r(10),s=r(39),a=r(15),u=r(45),c=r(47),h=r(18),l=r(8),f=r(20),g=r(11),d=r(4);function p(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function v(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}e.UserManager=function(t){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c.SilentRenewService,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:h.SessionMonitor,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:f.TokenRevocationClient,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:g.TokenClient,y=arguments.length>5&&void 0!==arguments[5]?arguments[5]:d.JoseUtil;p(this,e),r instanceof s.UserManagerSettings||(r=new s.UserManagerSettings(r));var m=v(this,t.call(this,r));return m._events=new u.UserManagerEvents(r),m._silentRenewService=new n(m),m.settings.automaticSilentRenew&&(i.Log.debug(\"UserManager.ctor: automaticSilentRenew is configured, setting up silent renew\"),m.startSilentRenew()),m.settings.monitorSession&&(i.Log.debug(\"UserManager.ctor: monitorSession is configured, setting up session monitor\"),m._sessionMonitor=new o(m)),m._tokenRevocationClient=new a(m._settings),m._tokenClient=new l(m._settings),m._joseUtil=y,m}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.getUser=function t(){var e=this;return this._loadUser().then((function(t){return t?(i.Log.info(\"UserManager.getUser: user loaded\"),e._events.load(t,!1),t):(i.Log.info(\"UserManager.getUser: user not found in storage\"),null)}))},e.prototype.removeUser=function t(){var e=this;return this.storeUser(null).then((function(){i.Log.info(\"UserManager.removeUser: user removed from storage\"),e._events.unload()}))},e.prototype.signinRedirect=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type=\"si:r\";var r={useReplaceToNavigate:e.useReplaceToNavigate};return this._signinStart(e,this._redirectNavigator,r).then((function(){i.Log.info(\"UserManager.signinRedirect: successful\")}))},e.prototype.signinRedirectCallback=function t(e){return this._signinEnd(e||this._redirectNavigator.url).then((function(t){return t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinRedirectCallback: successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinRedirectCallback: no sub\"),t}))},e.prototype.signinPopup=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type=\"si:p\";var r=e.redirect_uri||this.settings.popup_redirect_uri||this.settings.redirect_uri;return r?(e.redirect_uri=r,e.display=\"popup\",this._signin(e,this._popupNavigator,{startUrl:r,popupWindowFeatures:e.popupWindowFeatures||this.settings.popupWindowFeatures,popupWindowTarget:e.popupWindowTarget||this.settings.popupWindowTarget}).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinPopup: signinPopup successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinPopup: no sub\")),t}))):(i.Log.error(\"UserManager.signinPopup: No popup_redirect_uri or redirect_uri configured\"),Promise.reject(new Error(\"No popup_redirect_uri or redirect_uri configured\")))},e.prototype.signinPopupCallback=function t(e){return this._signinCallback(e,this._popupNavigator).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinPopupCallback: successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinPopupCallback: no sub\")),t})).catch((function(t){i.Log.error(t.message)}))},e.prototype.signinSilent=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r=Object.assign({},r),this._loadUser().then((function(t){return t&&t.refresh_token?(r.refresh_token=t.refresh_token,e._useRefreshToken(r)):(r.request_type=\"si:s\",r.id_token_hint=r.id_token_hint||e.settings.includeIdTokenInSilentRenew&&t&&t.id_token,t&&e._settings.validateSubOnSilentRenew&&(i.Log.debug(\"UserManager.signinSilent, subject prior to silent renew: \",t.profile.sub),r.current_sub=t.profile.sub),e._signinSilentIframe(r))}))},e.prototype._useRefreshToken=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this._tokenClient.exchangeRefreshToken(r).then((function(t){return t?t.access_token?e._loadUser().then((function(r){if(r){var n=Promise.resolve();return t.id_token&&(n=e._validateIdTokenFromTokenRefreshToken(r.profile,t.id_token)),n.then((function(){return i.Log.debug(\"UserManager._useRefreshToken: refresh token response success\"),r.id_token=t.id_token||r.id_token,r.access_token=t.access_token,r.refresh_token=t.refresh_token||r.refresh_token,r.expires_in=t.expires_in,e.storeUser(r).then((function(){return e._events.load(r),r}))}))}return null})):(i.Log.error(\"UserManager._useRefreshToken: No access token returned from token endpoint\"),Promise.reject(\"No access token returned from token endpoint\")):(i.Log.error(\"UserManager._useRefreshToken: No response returned from token endpoint\"),Promise.reject(\"No response returned from token endpoint\"))}))},e.prototype._validateIdTokenFromTokenRefreshToken=function t(e,r){var n=this;return this._metadataService.getIssuer().then((function(t){return n.settings.getEpochTime().then((function(o){return n._joseUtil.validateJwtAttributes(r,t,n._settings.client_id,n._settings.clockSkew,o).then((function(t){return t?t.sub!==e.sub?(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: sub in id_token does not match current sub\"),Promise.reject(new Error(\"sub in id_token does not match current sub\"))):t.auth_time&&t.auth_time!==e.auth_time?(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: auth_time in id_token does not match original auth_time\"),Promise.reject(new Error(\"auth_time in id_token does not match original auth_time\"))):t.azp&&t.azp!==e.azp?(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: azp in id_token does not match original azp\"),Promise.reject(new Error(\"azp in id_token does not match original azp\"))):!t.azp&&e.azp?(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: azp not in id_token, but present in original id_token\"),Promise.reject(new Error(\"azp not in id_token, but present in original id_token\"))):void 0:(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: Failed to validate id_token\"),Promise.reject(new Error(\"Failed to validate id_token\")))}))}))}))},e.prototype._signinSilentIframe=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.redirect_uri||this.settings.silent_redirect_uri||this.settings.redirect_uri;return r?(e.redirect_uri=r,e.prompt=e.prompt||\"none\",this._signin(e,this._iframeNavigator,{startUrl:r,silentRequestTimeout:e.silentRequestTimeout||this.settings.silentRequestTimeout}).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinSilent: successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinSilent: no sub\")),t}))):(i.Log.error(\"UserManager.signinSilent: No silent_redirect_uri configured\"),Promise.reject(new Error(\"No silent_redirect_uri configured\")))},e.prototype.signinSilentCallback=function t(e){return this._signinCallback(e,this._iframeNavigator).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinSilentCallback: successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinSilentCallback: no sub\")),t}))},e.prototype.signinCallback=function t(e){var r=this;return this.readSigninResponseState(e).then((function(t){var n=t.state;t.response;return\"si:r\"===n.request_type?r.signinRedirectCallback(e):\"si:p\"===n.request_type?r.signinPopupCallback(e):\"si:s\"===n.request_type?r.signinSilentCallback(e):Promise.reject(new Error(\"invalid response_type in state\"))}))},e.prototype.signoutCallback=function t(e,r){var n=this;return this.readSignoutResponseState(e).then((function(t){var i=t.state,o=t.response;return i?\"so:r\"===i.request_type?n.signoutRedirectCallback(e):\"so:p\"===i.request_type?n.signoutPopupCallback(e,r):Promise.reject(new Error(\"invalid response_type in state\")):o}))},e.prototype.querySessionStatus=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(r=Object.assign({},r)).request_type=\"si:s\";var n=r.redirect_uri||this.settings.silent_redirect_uri||this.settings.redirect_uri;return n?(r.redirect_uri=n,r.prompt=\"none\",r.response_type=r.response_type||this.settings.query_status_response_type,r.scope=r.scope||\"openid\",r.skipUserInfo=!0,this._signinStart(r,this._iframeNavigator,{startUrl:n,silentRequestTimeout:r.silentRequestTimeout||this.settings.silentRequestTimeout}).then((function(t){return e.processSigninResponse(t.url).then((function(t){if(i.Log.debug(\"UserManager.querySessionStatus: got signin response\"),t.session_state&&t.profile.sub)return i.Log.info(\"UserManager.querySessionStatus: querySessionStatus success for sub: \",t.profile.sub),{session_state:t.session_state,sub:t.profile.sub,sid:t.profile.sid};i.Log.info(\"querySessionStatus successful, user not authenticated\")})).catch((function(t){if(t.session_state&&e.settings.monitorAnonymousSession&&(\"login_required\"==t.message||\"consent_required\"==t.message||\"interaction_required\"==t.message||\"account_selection_required\"==t.message))return i.Log.info(\"UserManager.querySessionStatus: querySessionStatus success for anonymous user\"),{session_state:t.session_state};throw t}))}))):(i.Log.error(\"UserManager.querySessionStatus: No silent_redirect_uri configured\"),Promise.reject(new Error(\"No silent_redirect_uri configured\")))},e.prototype._signin=function t(e,r){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._signinStart(e,r,i).then((function(t){return n._signinEnd(t.url,e)}))},e.prototype._signinStart=function t(e,r){var n=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r.prepare(o).then((function(t){return i.Log.debug(\"UserManager._signinStart: got navigator window handle\"),n.createSigninRequest(e).then((function(e){return i.Log.debug(\"UserManager._signinStart: got signin request\"),o.url=e.url,o.id=e.state.id,t.navigate(o)})).catch((function(e){throw t.close&&(i.Log.debug(\"UserManager._signinStart: Error after preparing navigator, closing navigator window\"),t.close()),e}))}))},e.prototype._signinEnd=function t(e){var r=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.processSigninResponse(e).then((function(t){i.Log.debug(\"UserManager._signinEnd: got signin response\");var e=new a.User(t);if(n.current_sub){if(n.current_sub!==e.profile.sub)return i.Log.debug(\"UserManager._signinEnd: current user does not match user returned from signin. sub from signin: \",e.profile.sub),Promise.reject(new Error(\"login_required\"));i.Log.debug(\"UserManager._signinEnd: current user matches user returned from signin\")}return r.storeUser(e).then((function(){return i.Log.debug(\"UserManager._signinEnd: user stored\"),r._events.load(e),e}))}))},e.prototype._signinCallback=function t(e,r){i.Log.debug(\"UserManager._signinCallback\");var n=\"query\"===this._settings.response_mode||!this._settings.response_mode&&l.SigninRequest.isCode(this._settings.response_type)?\"?\":\"#\";return r.callback(e,void 0,n)},e.prototype.signoutRedirect=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type=\"so:r\";var r=e.post_logout_redirect_uri||this.settings.post_logout_redirect_uri;r&&(e.post_logout_redirect_uri=r);var n={useReplaceToNavigate:e.useReplaceToNavigate};return this._signoutStart(e,this._redirectNavigator,n).then((function(){i.Log.info(\"UserManager.signoutRedirect: successful\")}))},e.prototype.signoutRedirectCallback=function t(e){return this._signoutEnd(e||this._redirectNavigator.url).then((function(t){return i.Log.info(\"UserManager.signoutRedirectCallback: successful\"),t}))},e.prototype.signoutPopup=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type=\"so:p\";var r=e.post_logout_redirect_uri||this.settings.popup_post_logout_redirect_uri||this.settings.post_logout_redirect_uri;return e.post_logout_redirect_uri=r,e.display=\"popup\",e.post_logout_redirect_uri&&(e.state=e.state||{}),this._signout(e,this._popupNavigator,{startUrl:r,popupWindowFeatures:e.popupWindowFeatures||this.settings.popupWindowFeatures,popupWindowTarget:e.popupWindowTarget||this.settings.popupWindowTarget}).then((function(){i.Log.info(\"UserManager.signoutPopup: successful\")}))},e.prototype.signoutPopupCallback=function t(e,r){void 0===r&&\"boolean\"==typeof e&&(r=e,e=null);return this._popupNavigator.callback(e,r,\"?\").then((function(){i.Log.info(\"UserManager.signoutPopupCallback: successful\")}))},e.prototype._signout=function t(e,r){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._signoutStart(e,r,i).then((function(t){return n._signoutEnd(t.url)}))},e.prototype._signoutStart=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=this,n=arguments[1],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return n.prepare(o).then((function(t){return i.Log.debug(\"UserManager._signoutStart: got navigator window handle\"),r._loadUser().then((function(n){return i.Log.debug(\"UserManager._signoutStart: loaded current user from storage\"),(r._settings.revokeAccessTokenOnSignout?r._revokeInternal(n):Promise.resolve()).then((function(){var s=e.id_token_hint||n&&n.id_token;return s&&(i.Log.debug(\"UserManager._signoutStart: Setting id_token into signout request\"),e.id_token_hint=s),r.removeUser().then((function(){return i.Log.debug(\"UserManager._signoutStart: user removed, creating signout request\"),r.createSignoutRequest(e).then((function(e){return i.Log.debug(\"UserManager._signoutStart: got signout request\"),o.url=e.url,e.state&&(o.id=e.state.id),t.navigate(o)}))}))}))})).catch((function(e){throw t.close&&(i.Log.debug(\"UserManager._signoutStart: Error after preparing navigator, closing navigator window\"),t.close()),e}))}))},e.prototype._signoutEnd=function t(e){return this.processSignoutResponse(e).then((function(t){return i.Log.debug(\"UserManager._signoutEnd: got signout response\"),t}))},e.prototype.revokeAccessToken=function t(){var e=this;return this._loadUser().then((function(t){return e._revokeInternal(t,!0).then((function(r){if(r)return i.Log.debug(\"UserManager.revokeAccessToken: removing token properties from user and re-storing\"),t.access_token=null,t.refresh_token=null,t.expires_at=null,t.token_type=null,e.storeUser(t).then((function(){i.Log.debug(\"UserManager.revokeAccessToken: user stored\"),e._events.load(t)}))}))})).then((function(){i.Log.info(\"UserManager.revokeAccessToken: access token revoked successfully\")}))},e.prototype._revokeInternal=function t(e,r){var n=this;if(e){var o=e.access_token,s=e.refresh_token;return this._revokeAccessTokenInternal(o,r).then((function(t){return n._revokeRefreshTokenInternal(s,r).then((function(e){return t||e||i.Log.debug(\"UserManager.revokeAccessToken: no need to revoke due to no token(s), or JWT format\"),t||e}))}))}return Promise.resolve(!1)},e.prototype._revokeAccessTokenInternal=function t(e,r){return!e||e.indexOf(\".\")>=0?Promise.resolve(!1):this._tokenRevocationClient.revoke(e,r).then((function(){return!0}))},e.prototype._revokeRefreshTokenInternal=function t(e,r){return e?this._tokenRevocationClient.revoke(e,r,\"refresh_token\").then((function(){return!0})):Promise.resolve(!1)},e.prototype.startSilentRenew=function t(){this._silentRenewService.start()},e.prototype.stopSilentRenew=function t(){this._silentRenewService.stop()},e.prototype._loadUser=function t(){return this._userStore.get(this._userStoreKey).then((function(t){return t?(i.Log.debug(\"UserManager._loadUser: user storageString loaded\"),a.User.fromStorageString(t)):(i.Log.debug(\"UserManager._loadUser: no user storageString\"),null)}))},e.prototype.storeUser=function t(e){if(e){i.Log.debug(\"UserManager.storeUser: storing user\");var r=e.toStorageString();return this._userStore.set(this._userStoreKey,r)}return i.Log.debug(\"storeUser.storeUser: removing user\"),this._userStore.remove(this._userStoreKey)},n(e,[{key:\"_redirectNavigator\",get:function t(){return this.settings.redirectNavigator}},{key:\"_popupNavigator\",get:function t(){return this.settings.popupNavigator}},{key:\"_iframeNavigator\",get:function t(){return this.settings.iframeNavigator}},{key:\"_userStore\",get:function t(){return this.settings.userStore}},{key:\"events\",get:function t(){return this._events}},{key:\"_userStoreKey\",get:function t(){return\"user:\"+this.settings.authority+\":\"+this.settings.client_id}}]),e}(o.OidcClient)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UserManagerSettings=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=(r(0),r(5)),o=r(40),s=r(41),a=r(43),u=r(6),c=r(1),h=r(8);function l(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function f(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}e.UserManagerSettings=function(t){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=r.popup_redirect_uri,i=r.popup_post_logout_redirect_uri,g=r.popupWindowFeatures,d=r.popupWindowTarget,p=r.silent_redirect_uri,v=r.silentRequestTimeout,y=r.automaticSilentRenew,m=void 0!==y&&y,_=r.validateSubOnSilentRenew,S=void 0!==_&&_,b=r.includeIdTokenInSilentRenew,w=void 0===b||b,F=r.monitorSession,E=void 0===F||F,x=r.monitorAnonymousSession,A=void 0!==x&&x,k=r.checkSessionInterval,P=void 0===k?2e3:k,C=r.stopCheckSessionOnError,T=void 0===C||C,R=r.query_status_response_type,I=r.revokeAccessTokenOnSignout,D=void 0!==I&&I,L=r.accessTokenExpiringNotificationTime,N=void 0===L?60:L,U=r.redirectNavigator,B=void 0===U?new o.RedirectNavigator:U,O=r.popupNavigator,j=void 0===O?new s.PopupNavigator:O,M=r.iframeNavigator,H=void 0===M?new a.IFrameNavigator:M,V=r.userStore,K=void 0===V?new u.WebStorageStateStore({store:c.Global.sessionStorage}):V;l(this,e);var q=f(this,t.call(this,arguments[0]));return q._popup_redirect_uri=n,q._popup_post_logout_redirect_uri=i,q._popupWindowFeatures=g,q._popupWindowTarget=d,q._silent_redirect_uri=p,q._silentRequestTimeout=v,q._automaticSilentRenew=m,q._validateSubOnSilentRenew=S,q._includeIdTokenInSilentRenew=w,q._accessTokenExpiringNotificationTime=N,q._monitorSession=E,q._monitorAnonymousSession=A,q._checkSessionInterval=P,q._stopCheckSessionOnError=T,R?q._query_status_response_type=R:arguments[0]&&arguments[0].response_type?q._query_status_response_type=h.SigninRequest.isOidc(arguments[0].response_type)?\"id_token\":\"code\":q._query_status_response_type=\"id_token\",q._revokeAccessTokenOnSignout=D,q._redirectNavigator=B,q._popupNavigator=j,q._iframeNavigator=H,q._userStore=K,q}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),n(e,[{key:\"popup_redirect_uri\",get:function t(){return this._popup_redirect_uri}},{key:\"popup_post_logout_redirect_uri\",get:function t(){return this._popup_post_logout_redirect_uri}},{key:\"popupWindowFeatures\",get:function t(){return this._popupWindowFeatures}},{key:\"popupWindowTarget\",get:function t(){return this._popupWindowTarget}},{key:\"silent_redirect_uri\",get:function t(){return this._silent_redirect_uri}},{key:\"silentRequestTimeout\",get:function t(){return this._silentRequestTimeout}},{key:\"automaticSilentRenew\",get:function t(){return this._automaticSilentRenew}},{key:\"validateSubOnSilentRenew\",get:function t(){return this._validateSubOnSilentRenew}},{key:\"includeIdTokenInSilentRenew\",get:function t(){return this._includeIdTokenInSilentRenew}},{key:\"accessTokenExpiringNotificationTime\",get:function t(){return this._accessTokenExpiringNotificationTime}},{key:\"monitorSession\",get:function t(){return this._monitorSession}},{key:\"monitorAnonymousSession\",get:function t(){return this._monitorAnonymousSession}},{key:\"checkSessionInterval\",get:function t(){return this._checkSessionInterval}},{key:\"stopCheckSessionOnError\",get:function t(){return this._stopCheckSessionOnError}},{key:\"query_status_response_type\",get:function t(){return this._query_status_response_type}},{key:\"revokeAccessTokenOnSignout\",get:function t(){return this._revokeAccessTokenOnSignout}},{key:\"redirectNavigator\",get:function t(){return this._redirectNavigator}},{key:\"popupNavigator\",get:function t(){return this._popupNavigator}},{key:\"iframeNavigator\",get:function t(){return this._iframeNavigator}},{key:\"userStore\",get:function t(){return this._userStore}}]),e}(i.OidcClientSettings)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.RedirectNavigator=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0);e.RedirectNavigator=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.prototype.prepare=function t(){return Promise.resolve(this)},t.prototype.navigate=function t(e){return e&&e.url?(e.useReplaceToNavigate?window.location.replace(e.url):window.location=e.url,Promise.resolve()):(i.Log.error(\"RedirectNavigator.navigate: No url provided\"),Promise.reject(new Error(\"No url provided\")))},n(t,[{key:\"url\",get:function t(){return window.location.href}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PopupNavigator=void 0;var n=r(0),i=r(42);e.PopupNavigator=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.prototype.prepare=function t(e){var r=new i.PopupWindow(e);return Promise.resolve(r)},t.prototype.callback=function t(e,r,o){n.Log.debug(\"PopupNavigator.callback\");try{return i.PopupWindow.notifyOpener(e,r,o),Promise.resolve()}catch(t){return Promise.reject(t)}},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PopupWindow=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=r(3);e.PopupWindow=function(){function t(e){var r=this;!function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._promise=new Promise((function(t,e){r._resolve=t,r._reject=e}));var o=e.popupWindowTarget||\"_blank\",s=e.popupWindowFeatures||\"location=no,toolbar=no,width=500,height=500,left=100,top=100;\";this._popup=window.open(\"\",o,s),this._popup&&(i.Log.debug(\"PopupWindow.ctor: popup successfully created\"),this._checkForPopupClosedTimer=window.setInterval(this._checkForPopupClosed.bind(this),500))}return t.prototype.navigate=function t(e){return this._popup?e&&e.url?(i.Log.debug(\"PopupWindow.navigate: Setting URL in popup\"),this._id=e.id,this._id&&(window[\"popupCallback_\"+e.id]=this._callback.bind(this)),this._popup.focus(),this._popup.window.location=e.url):(this._error(\"PopupWindow.navigate: no url provided\"),this._error(\"No url provided\")):this._error(\"PopupWindow.navigate: Error opening popup window\"),this.promise},t.prototype._success=function t(e){i.Log.debug(\"PopupWindow.callback: Successful response from popup window\"),this._cleanup(),this._resolve(e)},t.prototype._error=function t(e){i.Log.error(\"PopupWindow.error: \",e),this._cleanup(),this._reject(new Error(e))},t.prototype.close=function t(){this._cleanup(!1)},t.prototype._cleanup=function t(e){i.Log.debug(\"PopupWindow.cleanup\"),window.clearInterval(this._checkForPopupClosedTimer),this._checkForPopupClosedTimer=null,delete window[\"popupCallback_\"+this._id],this._popup&&!e&&this._popup.close(),this._popup=null},t.prototype._checkForPopupClosed=function t(){this._popup&&!this._popup.closed||this._error(\"Popup window closed\")},t.prototype._callback=function t(e,r){this._cleanup(r),e?(i.Log.debug(\"PopupWindow.callback success\"),this._success({url:e})):(i.Log.debug(\"PopupWindow.callback: Invalid response from popup\"),this._error(\"Invalid response from popup\"))},t.notifyOpener=function t(e,r,n){if(window.opener){if(e=e||window.location.href){var s=o.UrlUtility.parseUrlFragment(e,n);if(s.state){var a=\"popupCallback_\"+s.state,u=window.opener[a];u?(i.Log.debug(\"PopupWindow.notifyOpener: passing url message to opener\"),u(e,r)):i.Log.warn(\"PopupWindow.notifyOpener: no matching callback found on opener\")}else i.Log.warn(\"PopupWindow.notifyOpener: no state found in response url\")}}else i.Log.warn(\"PopupWindow.notifyOpener: no window.opener. Can't complete notification.\")},n(t,[{key:\"promise\",get:function t(){return this._promise}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IFrameNavigator=void 0;var n=r(0),i=r(44);e.IFrameNavigator=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.prototype.prepare=function t(e){var r=new i.IFrameWindow(e);return Promise.resolve(r)},t.prototype.callback=function t(e){n.Log.debug(\"IFrameNavigator.callback\");try{return i.IFrameWindow.notifyParent(e),Promise.resolve()}catch(t){return Promise.reject(t)}},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IFrameWindow=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0);e.IFrameWindow=function(){function t(e){var r=this;!function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._promise=new Promise((function(t,e){r._resolve=t,r._reject=e})),this._boundMessageEvent=this._message.bind(this),window.addEventListener(\"message\",this._boundMessageEvent,!1),this._frame=window.document.createElement(\"iframe\"),this._frame.style.visibility=\"hidden\",this._frame.style.position=\"absolute\",this._frame.width=0,this._frame.height=0,window.document.body.appendChild(this._frame)}return t.prototype.navigate=function t(e){if(e&&e.url){var r=e.silentRequestTimeout||1e4;i.Log.debug(\"IFrameWindow.navigate: Using timeout of:\",r),this._timer=window.setTimeout(this._timeout.bind(this),r),this._frame.src=e.url}else this._error(\"No url provided\");return this.promise},t.prototype._success=function t(e){this._cleanup(),i.Log.debug(\"IFrameWindow: Successful response from frame window\"),this._resolve(e)},t.prototype._error=function t(e){this._cleanup(),i.Log.error(e),this._reject(new Error(e))},t.prototype.close=function t(){this._cleanup()},t.prototype._cleanup=function t(){this._frame&&(i.Log.debug(\"IFrameWindow: cleanup\"),window.removeEventListener(\"message\",this._boundMessageEvent,!1),window.clearTimeout(this._timer),window.document.body.removeChild(this._frame),this._timer=null,this._frame=null,this._boundMessageEvent=null)},t.prototype._timeout=function t(){i.Log.debug(\"IFrameWindow.timeout\"),this._error(\"Frame window timed out\")},t.prototype._message=function t(e){if(i.Log.debug(\"IFrameWindow.message\"),this._timer&&e.origin===this._origin&&e.source===this._frame.contentWindow&&\"string\"==typeof e.data&&(e.data.startsWith(\"http://\")||e.data.startsWith(\"https://\"))){var r=e.data;r?this._success({url:r}):this._error(\"Invalid response from frame\")}},t.notifyParent=function t(e){i.Log.debug(\"IFrameWindow.notifyParent\"),(e=e||window.location.href)&&(i.Log.debug(\"IFrameWindow.notifyParent: posting url message to parent\"),window.parent.postMessage(e,location.protocol+\"//\"+location.host))},n(t,[{key:\"promise\",get:function t(){return this._promise}},{key:\"_origin\",get:function t(){return location.protocol+\"//\"+location.host}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UserManagerEvents=void 0;var n=r(0),i=r(16),o=r(17);e.UserManagerEvents=function(t){function e(r){!function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e);var i=function s(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}(this,t.call(this,r));return i._userLoaded=new o.Event(\"User loaded\"),i._userUnloaded=new o.Event(\"User unloaded\"),i._silentRenewError=new o.Event(\"Silent renew error\"),i._userSignedIn=new o.Event(\"User signed in\"),i._userSignedOut=new o.Event(\"User signed out\"),i._userSessionChanged=new o.Event(\"User session changed\"),i}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.load=function e(r){var i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];n.Log.debug(\"UserManagerEvents.load\"),t.prototype.load.call(this,r),i&&this._userLoaded.raise(r)},e.prototype.unload=function e(){n.Log.debug(\"UserManagerEvents.unload\"),t.prototype.unload.call(this),this._userUnloaded.raise()},e.prototype.addUserLoaded=function t(e){this._userLoaded.addHandler(e)},e.prototype.removeUserLoaded=function t(e){this._userLoaded.removeHandler(e)},e.prototype.addUserUnloaded=function t(e){this._userUnloaded.addHandler(e)},e.prototype.removeUserUnloaded=function t(e){this._userUnloaded.removeHandler(e)},e.prototype.addSilentRenewError=function t(e){this._silentRenewError.addHandler(e)},e.prototype.removeSilentRenewError=function t(e){this._silentRenewError.removeHandler(e)},e.prototype._raiseSilentRenewError=function t(e){n.Log.debug(\"UserManagerEvents._raiseSilentRenewError\",e.message),this._silentRenewError.raise(e)},e.prototype.addUserSignedIn=function t(e){this._userSignedIn.addHandler(e)},e.prototype.removeUserSignedIn=function t(e){this._userSignedIn.removeHandler(e)},e.prototype._raiseUserSignedIn=function t(){n.Log.debug(\"UserManagerEvents._raiseUserSignedIn\"),this._userSignedIn.raise()},e.prototype.addUserSignedOut=function t(e){this._userSignedOut.addHandler(e)},e.prototype.removeUserSignedOut=function t(e){this._userSignedOut.removeHandler(e)},e.prototype._raiseUserSignedOut=function t(){n.Log.debug(\"UserManagerEvents._raiseUserSignedOut\"),this._userSignedOut.raise()},e.prototype.addUserSessionChanged=function t(e){this._userSessionChanged.addHandler(e)},e.prototype.removeUserSessionChanged=function t(e){this._userSessionChanged.removeHandler(e)},e.prototype._raiseUserSessionChanged=function t(){n.Log.debug(\"UserManagerEvents._raiseUserSessionChanged\"),this._userSessionChanged.raise()},e}(i.AccessTokenEvents)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Timer=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=r(1),s=r(17);function a(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function u(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}e.Timer=function(t){function e(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.Global.timer,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;a(this,e);var s=u(this,t.call(this,r));return s._timer=n,s._nowFunc=i||function(){return Date.now()/1e3},s}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.init=function t(e){e<=0&&(e=1),e=parseInt(e);var r=this.now+e;if(this.expiration===r&&this._timerHandle)i.Log.debug(\"Timer.init timer \"+this._name+\" skipping initialization since already initialized for expiration:\",this.expiration);else{this.cancel(),i.Log.debug(\"Timer.init timer \"+this._name+\" for duration:\",e),this._expiration=r;var n=5;e<n&&(n=e),this._timerHandle=this._timer.setInterval(this._callback.bind(this),1e3*n)}},e.prototype.cancel=function t(){this._timerHandle&&(i.Log.debug(\"Timer.cancel: \",this._name),this._timer.clearInterval(this._timerHandle),this._timerHandle=null)},e.prototype._callback=function e(){var r=this._expiration-this.now;i.Log.debug(\"Timer.callback; \"+this._name+\" timer expires in:\",r),this._expiration<=this.now&&(this.cancel(),t.prototype.raise.call(this))},n(e,[{key:\"now\",get:function t(){return parseInt(this._nowFunc())}},{key:\"expiration\",get:function t(){return this._expiration}}]),e}(s.Event)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SilentRenewService=void 0;var n=r(0);e.SilentRenewService=function(){function t(e){!function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._userManager=e}return t.prototype.start=function t(){this._callback||(this._callback=this._tokenExpiring.bind(this),this._userManager.events.addAccessTokenExpiring(this._callback),this._userManager.getUser().then((function(t){})).catch((function(t){n.Log.error(\"SilentRenewService.start: Error from getUser:\",t.message)})))},t.prototype.stop=function t(){this._callback&&(this._userManager.events.removeAccessTokenExpiring(this._callback),delete this._callback)},t.prototype._tokenExpiring=function t(){var e=this;this._userManager.signinSilent().then((function(t){n.Log.debug(\"SilentRenewService._tokenExpiring: Silent token renewal successful\")}),(function(t){n.Log.error(\"SilentRenewService._tokenExpiring: Error from signinSilent:\",t.message),e._userManager.events._raiseSilentRenewError(t)}))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CordovaPopupNavigator=void 0;var n=r(21);e.CordovaPopupNavigator=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.prototype.prepare=function t(e){var r=new n.CordovaPopupWindow(e);return Promise.resolve(r)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CordovaIFrameNavigator=void 0;var n=r(21);e.CordovaIFrameNavigator=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.prototype.prepare=function t(e){e.popupWindowFeatures=\"hidden=yes\";var r=new n.CordovaPopupWindow(e);return Promise.resolve(r)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});e.Version=\"1.11.5\"}])}));","export class PeopleLoadedMessage {\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nimport { autoinject } from 'aurelia-framework';\r\nimport OpenIdConnectAuthorizeStep from './open-id-connect-authorize-step';\r\nimport OpenIdConnectConfigurationManager from './open-id-connect-configuration-manager';\r\nimport OpenIdConnectLogger from './open-id-connect-logger';\r\nimport OpenIdConnectNavigationStrategies from './open-id-connect-navigation-strategies';\r\nvar OpenIdConnectRouting = (function () {\r\n    function OpenIdConnectRouting(openIdConnectConfiguration, openIdConnectNavigationStrategies, $window, logger) {\r\n        this.openIdConnectConfiguration = openIdConnectConfiguration;\r\n        this.openIdConnectNavigationStrategies = openIdConnectNavigationStrategies;\r\n        this.$window = $window;\r\n        this.logger = logger;\r\n    }\r\n    OpenIdConnectRouting.prototype.configureRouter = function (routerConfiguration) {\r\n        this.addLoginRedirectRoute(routerConfiguration);\r\n        this.addLogoutRedirectRoute(routerConfiguration);\r\n        routerConfiguration.addPipelineStep('authorize', OpenIdConnectAuthorizeStep);\r\n    };\r\n    OpenIdConnectRouting.prototype.addLoginRedirectRoute = function (routerConfiguration) {\r\n        var _this = this;\r\n        routerConfiguration.mapRoute({\r\n            name: 'logInRedirectCallback',\r\n            navigationStrategy: function (instruction) {\r\n                if (_this.isSilentLogin()) {\r\n                    return _this.openIdConnectNavigationStrategies.silentSignInCallback(instruction);\r\n                }\r\n                else {\r\n                    return _this.openIdConnectNavigationStrategies.signInRedirectCallback(instruction);\r\n                }\r\n            },\r\n            route: this.getPath(this.openIdConnectConfiguration.redirectUri)\r\n                .replace(routerConfiguration.options.root || '/', '/'),\r\n        });\r\n    };\r\n    OpenIdConnectRouting.prototype.addLogoutRedirectRoute = function (routerConfiguration) {\r\n        var _this = this;\r\n        routerConfiguration.mapRoute({\r\n            name: 'logOutRedirectCallback',\r\n            navigationStrategy: function (instruction) {\r\n                return _this.openIdConnectNavigationStrategies.signOutRedirectCallback(instruction);\r\n            },\r\n            route: this.getPath(this.openIdConnectConfiguration.postLogoutRedirectUri)\r\n                .replace(routerConfiguration.options.root || '/', '/'),\r\n        });\r\n    };\r\n    OpenIdConnectRouting.prototype.isSilentLogin = function () {\r\n        try {\r\n            return this.$window.self !== this.$window.top;\r\n        }\r\n        catch (e) {\r\n            return true;\r\n        }\r\n    };\r\n    OpenIdConnectRouting.prototype.getPath = function (uri) {\r\n        return this.convertUriToAnchor(uri).pathname;\r\n    };\r\n    OpenIdConnectRouting.prototype.convertUriToAnchor = function (uri) {\r\n        var anchor = document.createElement('a');\r\n        anchor.href = uri;\r\n        return anchor;\r\n    };\r\n    OpenIdConnectRouting = __decorate([\r\n        autoinject,\r\n        __metadata(\"design:paramtypes\", [OpenIdConnectConfigurationManager,\r\n            OpenIdConnectNavigationStrategies,\r\n            Window,\r\n            OpenIdConnectLogger])\r\n    ], OpenIdConnectRouting);\r\n    return OpenIdConnectRouting;\r\n}());\r\nexport default OpenIdConnectRouting;\r\n//# sourceMappingURL=open-id-connect-routing.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { Redirect, } from 'aurelia-router';\r\nimport { UserManager } from 'oidc-client';\r\nimport OpenIdConnectConfigurationManager from './open-id-connect-configuration-manager';\r\nimport { LoginRedirectKey } from './open-id-connect-constants';\r\nimport OpenIdConnectLogger from './open-id-connect-logger';\r\nimport OpenIdConnectRoles from './open-id-connect-roles';\r\nvar OpenIdConnectAuthorizeStep = (function () {\r\n    function OpenIdConnectAuthorizeStep(userManager, configuration, logger) {\r\n        this.userManager = userManager;\r\n        this.configuration = configuration;\r\n        this.logger = logger;\r\n    }\r\n    OpenIdConnectAuthorizeStep.prototype.run = function (navigationInstruction, next) {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var user, loginRedirect, loginRedirectValue, queryString, redirect;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0: return [4, this.userManager.getUser()];\r\n                    case 1:\r\n                        user = _a.sent();\r\n                        if (this.requiresRole(navigationInstruction, OpenIdConnectRoles.Authenticated)) {\r\n                            if (user === null || user.expired) {\r\n                                this.logger.debug('Requires authenticated role.');\r\n                                loginRedirect = navigationInstruction.fragment;\r\n                                if (navigationInstruction.queryString && navigationInstruction.queryString.length) {\r\n                                    loginRedirect += \"?\" + navigationInstruction.queryString;\r\n                                }\r\n                                loginRedirectValue = encodeURIComponent(loginRedirect);\r\n                                queryString = \"?\" + LoginRedirectKey + \"=\" + loginRedirectValue;\r\n                                redirect = new Redirect(this.configuration.unauthorizedRedirectRoute + queryString);\r\n                                return [2, next.cancel(redirect)];\r\n                            }\r\n                        }\r\n                        return [2, next()];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    OpenIdConnectAuthorizeStep.prototype.requiresRole = function (navigationInstruction, role) {\r\n        var instructions = navigationInstruction.getAllInstructions();\r\n        return instructions.some(function (instruction) {\r\n            return instruction !== undefined &&\r\n                instruction.config !== undefined &&\r\n                instruction.config.settings !== undefined &&\r\n                instruction.config.settings.roles !== undefined &&\r\n                instruction.config.settings.roles.includes(role);\r\n        });\r\n    };\r\n    OpenIdConnectAuthorizeStep = __decorate([\r\n        autoinject,\r\n        __metadata(\"design:paramtypes\", [UserManager,\r\n            OpenIdConnectConfigurationManager,\r\n            OpenIdConnectLogger])\r\n    ], OpenIdConnectAuthorizeStep);\r\n    return OpenIdConnectAuthorizeStep;\r\n}());\r\nexport default OpenIdConnectAuthorizeStep;\r\n//# sourceMappingURL=open-id-connect-authorize-step.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { UserManager } from 'oidc-client';\r\nimport OpenIdConnectConfigurationManager from './open-id-connect-configuration-manager';\r\nimport { LoginRedirectKey } from './open-id-connect-constants';\r\nimport OpenIdConnectLogger from './open-id-connect-logger';\r\nvar OpenIdConnectNavigationStrategies = (function () {\r\n    function OpenIdConnectNavigationStrategies(logger, openIdConnectConfiguration, userManager, $window) {\r\n        this.logger = logger;\r\n        this.openIdConnectConfiguration = openIdConnectConfiguration;\r\n        this.userManager = userManager;\r\n        this.$window = $window;\r\n    }\r\n    OpenIdConnectNavigationStrategies.prototype.signInRedirectCallback = function (instruction) {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var _this = this;\r\n            var redirectRoute, callbackHandler, navigationInstruction;\r\n            return __generator(this, function (_a) {\r\n                redirectRoute = this.openIdConnectConfiguration.loginRedirectRoute;\r\n                callbackHandler = function () { return __awaiter(_this, void 0, void 0, function () {\r\n                    var args, user;\r\n                    return __generator(this, function (_a) {\r\n                        switch (_a.label) {\r\n                            case 0:\r\n                                args = {};\r\n                                return [4, this.userManager.signinRedirectCallback(args)];\r\n                            case 1:\r\n                                user = _a.sent();\r\n                                if (user.state && user.state[LoginRedirectKey]) {\r\n                                    redirectRoute = user.state[LoginRedirectKey];\r\n                                }\r\n                                return [2];\r\n                        }\r\n                    });\r\n                }); };\r\n                navigationInstruction = function () {\r\n                    return _this.redirectAfterCallback(instruction, redirectRoute);\r\n                };\r\n                return [2, this.runHandlerAndCompleteNavigationInstruction(callbackHandler, navigationInstruction)];\r\n            });\r\n        });\r\n    };\r\n    OpenIdConnectNavigationStrategies.prototype.silentSignInCallback = function (instruction) {\r\n        var _this = this;\r\n        var callbackHandler = function () { return __awaiter(_this, void 0, void 0, function () {\r\n            return __generator(this, function (_a) {\r\n                return [2, this.userManager.signinSilentCallback()];\r\n            });\r\n        }); };\r\n        var navigationInstruction = function () {\r\n            instruction.config.redirect = _this.openIdConnectConfiguration.loginRedirectRoute;\r\n        };\r\n        return this.runHandlerAndCompleteNavigationInstruction(callbackHandler, navigationInstruction);\r\n    };\r\n    OpenIdConnectNavigationStrategies.prototype.signOutRedirectCallback = function (instruction) {\r\n        var _this = this;\r\n        var callbackHandler = function () { return __awaiter(_this, void 0, void 0, function () {\r\n            var args;\r\n            return __generator(this, function (_a) {\r\n                args = {};\r\n                return [2, this.userManager.signoutRedirectCallback(args)];\r\n            });\r\n        }); };\r\n        var navigationInstruction = function () {\r\n            return _this.redirectAfterCallback(instruction, _this.openIdConnectConfiguration.logoutRedirectRoute);\r\n        };\r\n        return this.runHandlerAndCompleteNavigationInstruction(callbackHandler, navigationInstruction);\r\n    };\r\n    OpenIdConnectNavigationStrategies.prototype.redirectAfterCallback = function (instruction, route) {\r\n        this.$window.history.pushState({}, '', route);\r\n        instruction.config.redirect = route;\r\n    };\r\n    OpenIdConnectNavigationStrategies.prototype.runHandlerAndCompleteNavigationInstruction = function (callbackHandler, navigationInstruction) {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var err_1;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        _a.trys.push([0, 2, , 3]);\r\n                        this.logger.debug('Handling the response from the Identity Provider');\r\n                        return [4, callbackHandler()];\r\n                    case 1:\r\n                        _a.sent();\r\n                        this.logger.debug('Redirecting on authorization success');\r\n                        navigationInstruction();\r\n                        return [3, 3];\r\n                    case 2:\r\n                        err_1 = _a.sent();\r\n                        this.logger.debug('Redirecting on authorization error');\r\n                        navigationInstruction();\r\n                        throw err_1;\r\n                    case 3: return [2];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    OpenIdConnectNavigationStrategies = __decorate([\r\n        autoinject,\r\n        __metadata(\"design:paramtypes\", [OpenIdConnectLogger,\r\n            OpenIdConnectConfigurationManager,\r\n            UserManager,\r\n            Window])\r\n    ], OpenIdConnectNavigationStrategies);\r\n    return OpenIdConnectNavigationStrategies;\r\n}());\r\nexport default OpenIdConnectNavigationStrategies;\r\n//# sourceMappingURL=open-id-connect-navigation-strategies.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { DOM } from 'aurelia-pal';\nimport { transient } from 'aurelia-dependency-injection';\nvar containerTagName = 'ux-dialog-container';\nvar overlayTagName = 'ux-dialog-overlay';\nexport var transitionEvent = (function () {\n    var transition;\n    return function () {\n        if (transition) {\n            return transition;\n        }\n        var el = DOM.createElement('fakeelement');\n        var transitions = {\n            transition: 'transitionend',\n            OTransition: 'oTransitionEnd',\n            MozTransition: 'transitionend',\n            WebkitTransition: 'webkitTransitionEnd'\n        };\n        for (var t in transitions) { // tslint:disable-line:prefer-const\n            if (el.style[t] !== undefined) {\n                transition = transitions[t];\n                return transition;\n            }\n        }\n        return '';\n    };\n})();\nexport var hasTransition = (function () {\n    var unprefixedName = 'transitionDuration';\n    var prefixedNames = ['webkitTransitionDuration', 'oTransitionDuration'];\n    var el;\n    var transitionDurationName;\n    return function (element) {\n        if (!el) {\n            el = DOM.createElement('fakeelement');\n            if (unprefixedName in el.style) {\n                transitionDurationName = unprefixedName;\n            }\n            else {\n                transitionDurationName = prefixedNames.find(function (prefixed) { return (prefixed in el.style); });\n            }\n        }\n        return !!transitionDurationName && !!(DOM.getComputedStyle(element)[transitionDurationName]\n            .split(',')\n            .find(function (duration) { return !!parseFloat(duration); }));\n    };\n})();\nvar body;\nfunction getActionKey(e) {\n    if ((e.code || e.key) === 'Escape' || e.keyCode === 27) {\n        return 'Escape';\n    }\n    if ((e.code || e.key) === 'Enter' || e.keyCode === 13) {\n        return 'Enter';\n    }\n    return undefined;\n}\nvar DialogRenderer = /** @class */ (function () {\n    function DialogRenderer() {\n    }\n    DialogRenderer_1 = DialogRenderer;\n    DialogRenderer.keyboardEventHandler = function (e) {\n        var key = getActionKey(e);\n        if (!key) {\n            return;\n        }\n        var top = DialogRenderer_1.dialogControllers[DialogRenderer_1.dialogControllers.length - 1];\n        if (!top || !top.settings.keyboard) {\n            return;\n        }\n        var keyboard = top.settings.keyboard;\n        if (key === 'Escape'\n            && (keyboard === true || keyboard === key || (Array.isArray(keyboard) && keyboard.indexOf(key) > -1))) {\n            top.cancel();\n        }\n        else if (key === 'Enter' && (keyboard === key || (Array.isArray(keyboard) && keyboard.indexOf(key) > -1))) {\n            top.ok();\n        }\n    };\n    DialogRenderer.trackController = function (dialogController) {\n        if (!DialogRenderer_1.dialogControllers.length) {\n            DOM.addEventListener('keyup', DialogRenderer_1.keyboardEventHandler, false);\n        }\n        DialogRenderer_1.dialogControllers.push(dialogController);\n    };\n    DialogRenderer.untrackController = function (dialogController) {\n        var i = DialogRenderer_1.dialogControllers.indexOf(dialogController);\n        if (i !== -1) {\n            DialogRenderer_1.dialogControllers.splice(i, 1);\n        }\n        if (!DialogRenderer_1.dialogControllers.length) {\n            DOM.removeEventListener('keyup', DialogRenderer_1.keyboardEventHandler, false);\n        }\n    };\n    DialogRenderer.prototype.getOwnElements = function (parent, selector) {\n        var elements = parent.querySelectorAll(selector);\n        var own = [];\n        for (var i = 0; i < elements.length; i++) {\n            if (elements[i].parentElement === parent) {\n                own.push(elements[i]);\n            }\n        }\n        return own;\n    };\n    DialogRenderer.prototype.attach = function (dialogController) {\n        var spacingWrapper = DOM.createElement('div'); // TODO: check if redundant\n        spacingWrapper.appendChild(this.anchor);\n        this.dialogContainer = DOM.createElement(containerTagName);\n        this.dialogContainer.appendChild(spacingWrapper);\n        this.dialogOverlay = DOM.createElement(overlayTagName);\n        var zIndex = typeof dialogController.settings.startingZIndex === 'number'\n            ? dialogController.settings.startingZIndex + ''\n            : null;\n        this.dialogOverlay.style.zIndex = zIndex;\n        this.dialogContainer.style.zIndex = zIndex;\n        var lastContainer = this.getOwnElements(this.host, containerTagName).pop();\n        if (lastContainer && lastContainer.parentElement) {\n            this.host.insertBefore(this.dialogContainer, lastContainer.nextSibling);\n            this.host.insertBefore(this.dialogOverlay, lastContainer.nextSibling);\n        }\n        else {\n            this.host.insertBefore(this.dialogContainer, this.host.firstChild);\n            this.host.insertBefore(this.dialogOverlay, this.host.firstChild);\n        }\n        dialogController.controller.attached();\n        this.host.classList.add('ux-dialog-open');\n    };\n    DialogRenderer.prototype.detach = function (dialogController) {\n        this.host.removeChild(this.dialogOverlay);\n        this.host.removeChild(this.dialogContainer);\n        dialogController.controller.detached();\n        if (!DialogRenderer_1.dialogControllers.length) {\n            this.host.classList.remove('ux-dialog-open');\n        }\n    };\n    DialogRenderer.prototype.setAsActive = function () {\n        this.dialogOverlay.classList.add('active');\n        this.dialogContainer.classList.add('active');\n    };\n    DialogRenderer.prototype.setAsInactive = function () {\n        this.dialogOverlay.classList.remove('active');\n        this.dialogContainer.classList.remove('active');\n    };\n    DialogRenderer.prototype.setupClickHandling = function (dialogController) {\n        this.stopPropagation = function (e) { e._aureliaDialogHostClicked = true; };\n        this.closeDialogClick = function (e) {\n            if (dialogController.settings.overlayDismiss && !e._aureliaDialogHostClicked) {\n                dialogController.cancel();\n            }\n        };\n        this.dialogContainer.addEventListener('click', this.closeDialogClick);\n        this.anchor.addEventListener('click', this.stopPropagation);\n    };\n    DialogRenderer.prototype.clearClickHandling = function () {\n        this.dialogContainer.removeEventListener('click', this.closeDialogClick);\n        this.anchor.removeEventListener('click', this.stopPropagation);\n    };\n    DialogRenderer.prototype.centerDialog = function () {\n        var child = this.dialogContainer.children[0];\n        var vh = Math.max(DOM.querySelectorAll('html')[0].clientHeight, window.innerHeight || 0);\n        child.style.marginTop = Math.max((vh - child.offsetHeight) / 2, 30) + 'px';\n        child.style.marginBottom = Math.max((vh - child.offsetHeight) / 2, 30) + 'px';\n    };\n    DialogRenderer.prototype.awaitTransition = function (setActiveInactive, ignore) {\n        var _this = this;\n        return new Promise(function (resolve) {\n            // tslint:disable-next-line:no-this-assignment\n            var renderer = _this;\n            var eventName = transitionEvent();\n            function onTransitionEnd(e) {\n                if (e.target !== renderer.dialogContainer) {\n                    return;\n                }\n                renderer.dialogContainer.removeEventListener(eventName, onTransitionEnd);\n                resolve();\n            }\n            if (ignore || !hasTransition(_this.dialogContainer)) {\n                resolve();\n            }\n            else {\n                _this.dialogContainer.addEventListener(eventName, onTransitionEnd);\n            }\n            setActiveInactive();\n        });\n    };\n    DialogRenderer.prototype.getDialogContainer = function () {\n        return this.anchor || (this.anchor = DOM.createElement('div'));\n    };\n    DialogRenderer.prototype.showDialog = function (dialogController) {\n        var _this = this;\n        if (!body) {\n            body = DOM.querySelectorAll('body')[0];\n        }\n        if (dialogController.settings.host) {\n            this.host = dialogController.settings.host;\n        }\n        else {\n            this.host = body;\n        }\n        var settings = dialogController.settings;\n        this.attach(dialogController);\n        if (typeof settings.position === 'function') {\n            settings.position(this.dialogContainer, this.dialogOverlay);\n        }\n        else if (!settings.centerHorizontalOnly) {\n            this.centerDialog();\n        }\n        DialogRenderer_1.trackController(dialogController);\n        this.setupClickHandling(dialogController);\n        return this.awaitTransition(function () { return _this.setAsActive(); }, dialogController.settings.ignoreTransitions);\n    };\n    DialogRenderer.prototype.hideDialog = function (dialogController) {\n        var _this = this;\n        this.clearClickHandling();\n        DialogRenderer_1.untrackController(dialogController);\n        return this.awaitTransition(function () { return _this.setAsInactive(); }, dialogController.settings.ignoreTransitions)\n            .then(function () { _this.detach(dialogController); });\n    };\n    var DialogRenderer_1;\n    DialogRenderer.dialogControllers = [];\n    DialogRenderer = DialogRenderer_1 = __decorate([\n        transient()\n    ], DialogRenderer);\n    return DialogRenderer;\n}());\nexport { DialogRenderer };\n","/**\n * @internal\n */\nexport function createDialogCloseError(output) {\n    var error = new Error();\n    error.wasCancelled = false;\n    error.output = output;\n    return error;\n}\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = target[name];\n\t\t\t\tcopy = options[name];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\ttarget[name] = extend(deep, clone, copy);\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","/* Spanish locals for flatpickr */\nvar Flatpickr = Flatpickr || { l10ns: {} };\nFlatpickr.l10ns.es = {};\n\nFlatpickr.l10ns.es.weekdays = {\n\tshorthand: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"],\n\tlonghand: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\"]\n};\n\nFlatpickr.l10ns.es.months = {\n\tshorthand: [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"],\n\tlonghand: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"]\n};\n\nFlatpickr.l10ns.es.ordinal = function () {\n\treturn \"º\";\n};\n\nFlatpickr.l10ns.es.firstDayOfWeek = 1;\nif (typeof module !== \"undefined\") module.exports = Flatpickr.l10ns;","import { ActivationQuestionary } from './../../test-person/activationQuestionary';\nimport { Activation } from './../../test-person/activation';\nexport class ReportActivation {\n  reportId?: number\n  activationId: number;\n  activation: Activation;  \n  activationQuestionaryId?: number;\n  activationQuestionary?: ActivationQuestionary;\n  weight: number;\n  isAvailable: boolean;\n}\n","import { Report } from '../test-reports/reports/report';\nexport class BulkDownload {\n  id: number;\n  companyId: number;\n  name: string;\n  tags: string;\n  languageId: number;\n  logFileUrl: string;\n  isLoaded: boolean;\n  hasExpired: boolean;\n  createdOn: Date;\n  createdByName: string;\n  peopleWithReportIds: number[] = [];\n  report: Report;  \n}\n","export enum Tests {\n  Performance = -1,\n  QuestionaryByCompany = 0,\n  DISC = 1,\n  Competences = 8,\n  Intelligence = 9,\n  ValuesV2 = 10,\n  EnglishV2 = 23,\n  PurposeLife = 27,\n  SalesCapacity = 43,\n  Leadership = 44,\n  EmotionalIntelligence = 63,\n  DigitalSkills = 341,\n  ValuesV3 = 345,\n  ProfessionalIntelligence = 358,\n  HealthcareIntelligence = 405,\n  CompetencesV2 = 1302,\n  LeadershipV3 = 1405,\n  SalesCapacityV2 = 1412,\n  StyleLearning = 2597,\n  Motivation = 2389,\n  Vocational = 3070,\n  Neurogame = 3614,\n  Potential = 3749,\n  DISCV2 = 5356,\n  Integrity = 6782,\n  LeadershipV4 = 7156\n}\n","import { Person } from \"./person\";\n\nexport class PersonResume {\n  id: number;\n  personId: number;\n  // person: Person;\n\n  summary: string;\n  headline: string;\n  location: string;\n  positions: string;\n  educations: string;\n  skills: string;\n  honors: string;\n  languages: string;\n  observations: string;\n  linkedInProfileUrl: string;\n}\n","import { ActivationQuestionaryStatus } from \"models/test-person/activationQuestionaryStatus\";\n\nexport class EmailHistory {\n  fromEmail: string; \n  msgId: string;\n  subject: string;\n  toEmail: string;\n  status: string;\n  activationQuestionaryStatus: ActivationQuestionaryStatus;\n  opensCount: number;\n  clicksCount: number;\n  lastEventTime: Date;\n}\n","import { Tests } from './tests';\n\nexport class BulkResultsExport {\n resultsExportQuestionary: Tests;\n questionaryByCompanyName: string;\n questionaryByCompanyId: number;\n totalResults:number;\n logFileId:number; \n tags: string;  \n startDate?: Date;\n endDate?: Date;\n companyId: number;  \n usersIds : number[];\n}\n","import { PositionExportStatus } from './positionExportStatus';\n\nexport class PositionExportByCompany {\n    id: number;\n    status: PositionExportStatus;\n    logFileUrl: string;\n    generatedOn: Date;\n    totalPositions: number;\n}\n","import { DichotomousCouple } from \"../test-core/competences/dichotomous-couple\";\n\nexport class PositionCompetence {\n  id: number;\n  companyId: number;\n  positionId: number;\n  companyCompetenceId: number;\n  complementaryName: string;\n  isToAllPositions: boolean;\n  dichotomousCouples: DichotomousCouple[] = [];\n  directCompetenceValue: number;\n}\n","/**\n * Discards out-of-order async responses (\"latest request wins\").\n */\nexport class RequestSequencer {\n  private current: number = 0;\n\n  /** Starts a new request and returns its sequence token. */\n  public next(): number {\n    this.current = this.current + 1;\n    return this.current;\n  }\n\n  /** Returns whether the token matches the latest started request. */\n  public isLatest(token: number): boolean {\n    return token === this.current;\n  }\n}\n","export class CompanyChange {\n    masterFranchiseId: number = 0;\n    franchiseId : number = 0;\n    masterCompanyId: number = 0;\n    companyId : number = 0;\n    groupId : number = 0;\n    }\n    ","import { Company } from './company';\n\nexport class CompanyGroupMaster {\n  id: number;\n  franchiseName: string;\n  company: Company = new Company();\n  companyId: number;\n  economicSectorName: string;\n  countryName: string;\n  regionName: string;\n  cityName: string;  \n}\n","import { observable, computedFrom } from 'aurelia-framework';\n//import { computedFrom } from \"aurelia-binding\";\n\nexport class Quota {\n  id: number;\n  AgreementTermsOfPayId: number;\n  payMode: string;\n  paymentDate: Date;\n\n  percentage: number = 0;\n  subtotal: number = 0;\n  tax: number = 0;\n  // _total: number = 0;\n\n\n\n\n\n  // @observable\n  // osubtotal: number;\n\n  // @observable\n  // otax: number;\n\n  // constructor() {\n  //   this.subtotal = 0;\n  //   this.tax = 0;\n  //   this._total = 0;\n  // }\n\n  // private osubtotalChanged(newValue: number, oldValue: number): void {\n  //   //console.log(newValue, oldValue);\n  //   this.subtotal = +newValue;\n  //   //this.osubtotal = newValue;\n  //   this.total = +newValue + +this.otax;\n  // }\n\n  // private otaxChanged(newValue: number, oldValue: number): void {\n  //   //console.log(newValue, oldValue);\n  //   this.tax = +newValue;\n  //   //this.otax = newValue;\n  //   this.total = +newValue + +this.osubtotal;\n  // }\n\n\n  // @computedFrom('subtotal', 'tax')\n  // get total(): number {\n  //   // console.log(\"subtotal: \" + this.subtotal);\n  //   // console.log(\"tax: \"+this.tax);\n  //   this._total = +this.subtotal + +this.tax;\n  //   return this._total;\n  // }\n\n  // set total(n: number) {\n  //   console.log(\"set: \" + n);\n  //   this._total = +n;\n  // }\n}\n","import { Quota } from './quota';\nimport { Agreement } from \"./agreement\";\n\nexport class AgreementTermsOfPay {\n  id: number;\n  agreementId: number;\n  agreement: Agreement = new Agreement();\n  purchaseValue: number;\n  currencyTypeId: number;\n  hasAutomaticRenewal: boolean;\n  invoicePersonId: number;\n  invoicePerson: string;\n  \n  quotas: Quota[] = [];\n}\n","import { autoinject } from \"aurelia-framework\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Team } from \"models/team/team\";\n\n@autoinject()\nexport class TeamService {\n\n\n  constructor (\n    public client: CompanyAppHttpClient ) {\n  }\n\n  public async list ( parameters: UxDatatableParameters ): Promise<UxDatatableResponse> {\n    return await this.client.post( \"team/list\", parameters )\n      .then( ( response: any ) => {\n        return <UxDatatableResponse> response;\n      } );\n  }\n\n  public async getAll (): Promise<Team[]> {\n    return await this.client.get( \"team\" )\n      .then( ( response: any ) => {\n        return <Team[]> response;\n      } );\n  }\n\n  public async getById ( id: number ): Promise<Team> {\n    return await this.client.getById( \"team\", id )\n      .then( ( response: Team ) => {\n        return response;\n      } );\n  }\n\n  public async create ( model: Team ): Promise<Team> {\n    return await this.client.create( \"team\", model )\n      .then( ( response: any ) => {\n        return <Team> response;\n      } );\n  }\n\n  public async update ( model: Team ): Promise<void> {\n    return await this.client.updateById( \"team\", model.id, null, model )\n      .then( () => null );\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(`team`, id)\n      .then(() => null);\n  }\n\n  public async sendRemindersByFilter(parameters: UxDatatableParameters): Promise<boolean> {\n    return await this.client.post(\"team/list-send-reminder/\", parameters)\n      .then((response: any) => {\n        return true;\n      });\n  }\n\n  public async sendReminder(id: number): Promise<boolean> {\n    return await this.client.post(`team/send-reminder/${id}`)\n      .then((response: any) => {\n        return true;\n      });\n  }\n}\n","import { Agreement } from './agreement';\n\nexport class AgreementCustomerReq {\n  id:number;\n  agreementId: number;\n  agreement: Agreement = new Agreement();\n  purchaseOrder: string;\n  billingClosingDate: Date = new Date();\n  nameToInvoice: string;\n  hasSupplierRegistration: boolean\n  isRequiresContract: boolean\n  documentsToRegisterAsProvider: string;\n\n  businessCompanyId: number;\n  businessCompanyName: string;\n  \n  bankInformationId: number;\n  bankInformation: string;\n}\n","import { Company } from './company';\n\nexport class CompanyDetailMaster {\n  id: number;\n  company: Company = new Company();\n  companyId: number;\n  economicSectorName: string;\n  countryName: string;\n  regionName: string;\n  cityName: string;\n  logoUrl: string;\n  logo: string;\n  logoFileName: string;\n  userNumber: number;\n  isDemo: boolean;\n  planName: string;\n}\n","export class PasswordPolicy{\n  id: number;\n  requiredLength: number;\n  requireNonAlphanumeric: boolean ;\n  requireDigit: boolean ;\n  requireLowercase: boolean ;\n  requireUppercase: boolean ;\n  validateLastFivePasswords: boolean ;\n  requirePasswordChanging: boolean ;\n  passwordChangingPeriod: number ;\n  lockoutEnabled: boolean ;\n  lockoutMaxFailedAccessAttempts: number ;\n  companyId: number ;    \n}\n","export class BulkTalentsExport {\n    totalResults:number;\n    logFileId:number; \n    startDate?: Date;\n    endDate?: Date;\n    companyId: number;  \n    userId?: number;\n    transactionTypeId?: number;\n    exportTransactionTypeId: number;\n   }","\nexport class ReportTemplateThematicAssociate {\n  reportTemplateId: number;\n  thematicGroupId: number;\n  thematicVariableId: number;\n  questionaryId: number;\n}\n","export enum DiscSelectionReasonCode {\n    NotEvaluated = 0,\n    InvalidRequest = 1,\n    NotApplicableItem = 2,\n    DefaultLanguageFallback = 3,\n    NoSheets = 4,\n    NoEligibleDisc = 5,\n    SelectionReused = 6,\n    SingleDisc = 7,\n    MultipleDiscEs = 8\n}\n","import { QuestionaryLanguage } from \"models/questionaries/questionaryLanguage\";\nimport { Questionary } from \"../../questionaries/questionary\";\nimport { QuestionaryGroupThematicAssociate } from \"./questionary-group-thematic-associate\";\n\nexport class QuestionaryGroup {\n  id : number;\n  name: string;\n  description: string;\n  questionaries : Questionary[] = [];\n  questionaryIds: QuestionaryLanguage[] = [];\n  questionariesLanguageId: number;\n  isActive: boolean;\n  createdOn: Date;\n  createdBy: string;\n  companyCompetenceIds: number[] = [];\n  talentsPrice: number; \n  processBukId: number;\n  processBukIds: string;\n  processBukNames: string;\n  isExternalBukActivationTest: boolean;\n  processStageBukIds: string;\n  questionaryGroupThematicAssociates: QuestionaryGroupThematicAssociate[] = [];\n\n}\n","import { MessagePeriod } from './message-period';\n\nexport class MessageSummaryReport {  \n  companyId: number;\n  isConsumption: boolean;\n  consumptionPeriod:  MessagePeriod;\n  isPending:  boolean;\n  pendingPeriod:  MessagePeriod;\n  isActiveUser: boolean;\n  activeUserPeriod:  MessagePeriod;\n  isActivityDelivery: boolean;\n  activityDeliveryPeriod: MessagePeriod;\n\n}\n","\nexport class UserApiApplication {\n  id: number;\n  userId: number;\n  userName: string;\n  clientId : string;\n  clientSecret: string;\n}\n","export class PasswordValidation {\n  password: string;\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Group } from \"models/groups/group\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n@autoinject()\nexport class GroupService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"GroupsService\");\n  }\n  \n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"group/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getAll(): Promise<Group[]> {\n    return await this.client.get(\"group\")\n      .then((response: any) => {\n        return <Group[]>response;\n      });\n  }\n\n  public async getByCompanyId(customerCompanyId: number): Promise<Group[]> {\n    return await this.client.get(`group/${customerCompanyId}/get-by-company`)\n      .then((response: any) => {\n        return <Group[]>response;\n      });\n  }\n\n  public async getById(id: number): Promise<Group> {\n    return await this.client.getById(\"group\", id)\n      .then((response: any) => {\n        return <Group>response;\n      });\n  }\n\n  public async create(model: Group): Promise<Group> {\n    return await this.client.create(\"group\", model)\n      .then((response: any) => {\n        return <Group>response;\n      });\n  }\n\n  public async update(model: Group): Promise<void> {\n    return await this.client.updateById(\"group\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number, groupIdToTransferUsers: number): Promise<void> {\n    return await this.client.deleteById(\"group\", id, { groupIdToTransferUser: groupIdToTransferUsers} )\n      .then(() => null);\n  }\n\n  public async getPermissionNamesById(id: number): Promise<Array<string>> {\n    return await this.client.get(`group/${id}/permission-name`)\n      .then((response: any) => {\n        return <Array<string>>response;\n      });\n  }\n\n  public async updatePermissionsNamesById(id: number, permissions: Array<string>): Promise<void> {\n    return await this.client.update(`group/${id}/permission-name`, null, permissions)\n      .then(() => null);\n  }\n}\n","export class SheetLanguage {\n  id: number;\n  thumbnailImageUrl: string;\n  imageUrl: string;\n  image: any;\n  thumbnailImage: any;\n  imageFileName: string;\n  thumbnailImageFileName: string;\n}\n","import { InboxByUserStatus } from \"./inboxByUserStatus\";\n\nexport class InboxByUser {\n  inboxId: number;\n  userId: number;\n  inboxByUserStatus : InboxByUserStatus;\n  }\n  ","export class ResetSecondPassword {\n  currentPassword: string;\n  newPassword: string;\n  confirmNewPassword: string;\n}\n","export class SecondPassword {\n  password: string;\n}\n","import { Company } from './company';\n\nexport class CompanyGroup {\n  id: number;\n  companyId: number;\n  company: Company = new Company();\n  economicSectorId: number;\n  countryId: number;\n  regionId: number;\n  cityId: number;\n  companies: Company[] = [];\n}\n","import { Company } from './company';\nimport { CompanyOrganizationType } from './companyOrganizationType';\n\nexport class CompanyDetail {\n  id: number;\n  company: Company = new Company();\n  companyId: number;\n  economicSectorId: number;\n  organizationType: CompanyOrganizationType;\n  countryId: number;\n  regionId: number;\n  cityId: number;\n  logoUrl: string;\n  logo: string;\n  logoFileName: string;\n  userNumber: number;\n  isDemo: boolean;\n  planId: number;\n\n  isSelectionDemo: boolean;\n  selectionPlanId: number;\n}\n","import { ItemToQualify } from './itemToQualify';\nimport { QuestionaryType } from './questionaryType';\nimport { OrganizationType } from './organizationType';\nimport { NoDiscType } from './noDiscType';\n\nexport class QuestionaryLocalization {\n  labelId: number;\n  languageId: number;\n  localizationTypeId: number;\n  translation: string;\n}\n","export enum LocalizationType {\n  Questionary,\n  Question,\n  ResponseOption\n}\n","import { archetypeType } from './archetypeType';\n\nexport class Archetype {\n  id: number;\n  name: string;\n  d : number;\n  i : number;\n  s : number;\n  c : number;\n  archetypeType: archetypeType;\n  isActive: boolean = true;\n  description: string;\n}\n","import { EducationalLevel } from '../catalogs/educationalLevel';\n\nexport class EducationalLevelCountry {\n  id: number;\n  name: string;\n  description: string;\n  isActive: boolean;\n  countryId: number;\n  educationalLevel: EducationalLevel;\n}\n\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\n\nimport { Language } from \"models/localizations/language\";\nimport { Culture } from \"models/localizations/culture\";\nimport { Flag } from \"models/localizations/flag\";\n\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n@autoinject()\nexport class LanguageService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"LanguageService\");\n  }\n\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"language/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getAll(): Promise<Language[]> {\n    return await this.client.get(\"language\")\n      .then((response: any) => {\n        return <Language[]>response;\n      });\n  }\n\n  async changeState(id: number): Promise<void> {    \n    return await this.client.post(`language/change-state/${id}`)\n      .then(() => null);\n  }\n  \n  public async getLanguageName(id: number): Promise<string> {\n    return await this.client.get(`language/getLanguageName/${id}`)\n      .then((response: any) => {\n        return <string>response;\n      });\n  }\n  public async cultures(): Promise<Array<Culture>> {\n    return await this.client.get(\"language/cultures\", null)\n      .then(response => {\n        return <Array<Culture>>response;\n      })\n      .catch(error => {\n        this.logger.error(error.message);\n        throw error;\n      });\n  }\n\n  public async flags(): Promise<Array<Flag>> {\n    return await this.client.get(\"language/flags\", null)\n      .then(response => {\n        return <Array<Flag>>response;\n      })\n      .catch(error => {\n        this.logger.error(error.message);\n        throw error;\n      });\n  }\n\n  public async getById(id: number): Promise<Language> {\n    return await this.client.getById(\"language\", id)\n      .then((response: any) => {\n        return <Language>response;\n      })\n      .catch(error => {\n        this.logger.error(error.message);\n        throw error;\n      });\n  }\n\n  public async create(model: Language): Promise<Language> {\n    return await this.client.create(\"language\", model)\n      .then((response: any) => {\n        return <Language>response;\n      });\n  }  \n\n  public async update(model: Language): Promise<Language> {\n    return await this.client.updateById(\"language\", model.id, null, model)\n      .then(() => null);\n  }  \n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(\"language\", id)\n      .then(() => null);\n  }\n}\n","export class HabeasDataCountry {\n  id: number;\n  habeasData: string;\n  countryId: number;\n  languageId: number;\n}","export class Language {\n  id: number;\n  name: string;\n  culture: string;\n  flag: string;\n  isActive: boolean;\n}\n","export class Localization {\n  id: number;\n  languageId: number;\n  labelId: number;\n  label:  string;\n  referenceLanguage: string;\n  maxSize: number;\n  translation: string; \n  comments: string;\n}\n","import { LabelModule } from \"./labelModule\";\n\nexport class Label {\n  id: number;\n  name:  string;\n  referenceLanguage: string;\n  maxSize: number;\n  labelModule?: LabelModule;\n}\n","\nvar content = require(\"!!../css-loader/index.js!../postcss-loader/lib/index.js??ref--4-2!./nprogress.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../css-loader/index.js!../postcss-loader/lib/index.js??ref--4-2!./nprogress.css\", function() {\n\t\tvar newContent = require(\"!!../css-loader/index.js!../postcss-loader/lib/index.js??ref--4-2!./nprogress.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"/* Make clicks pass-through */\\n#nprogress {\\n  pointer-events: none;\\n}\\n\\n#nprogress .bar {\\n  background: #29d;\\n\\n  position: fixed;\\n  z-index: 1031;\\n  top: 0;\\n  left: 0;\\n\\n  width: 100%;\\n  height: 2px;\\n}\\n\\n/* Fancy blur effect */\\n#nprogress .peg {\\n  display: block;\\n  position: absolute;\\n  right: 0px;\\n  width: 100px;\\n  height: 100%;\\n  -webkit-box-shadow: 0 0 10px #29d, 0 0 5px #29d;\\n          box-shadow: 0 0 10px #29d, 0 0 5px #29d;\\n  opacity: 1.0;\\n\\n  -webkit-transform: rotate(3deg) translate(0px, -4px);\\n          transform: rotate(3deg) translate(0px, -4px);\\n}\\n\\n/* Remove these to get rid of the spinner */\\n#nprogress .spinner {\\n  display: block;\\n  position: fixed;\\n  z-index: 1031;\\n  top: 15px;\\n  right: 15px;\\n}\\n\\n#nprogress .spinner-icon {\\n  width: 18px;\\n  height: 18px;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n\\n  border: solid 2px transparent;\\n  border-top-color: #29d;\\n  border-left-color: #29d;\\n  border-radius: 50%;\\n\\n  -webkit-animation: nprogress-spinner 400ms linear infinite;\\n          animation: nprogress-spinner 400ms linear infinite;\\n}\\n\\n.nprogress-custom-parent {\\n  overflow: hidden;\\n  position: relative;\\n}\\n\\n.nprogress-custom-parent #nprogress .spinner,\\n.nprogress-custom-parent #nprogress .bar {\\n  position: absolute;\\n}\\n\\n@-webkit-keyframes nprogress-spinner {\\n  0%   { -webkit-transform: rotate(0deg); }\\n  100% { -webkit-transform: rotate(360deg); }\\n}\\n@keyframes nprogress-spinner {\\n  0%   { -webkit-transform: rotate(0deg); transform: rotate(0deg); }\\n  100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); }\\n}\\n\\n\", \"\"]);\n\n// exports\n","\n/**\n * When source maps are enabled, `style-loader` uses a link element with a data-uri to\n * embed the css on the page. This breaks all relative urls because now they are relative to a\n * bundle instead of the current page.\n *\n * One solution is to only use full urls, but that may be impossible.\n *\n * Instead, this function \"fixes\" the relative urls to be absolute according to the current page location.\n *\n * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.\n *\n */\n\nmodule.exports = function (css) {\n  // get current location\n  var location = typeof window !== \"undefined\" && window.location;\n\n  if (!location) {\n    throw new Error(\"fixUrls requires window.location\");\n  }\n\n\t// blank or null?\n\tif (!css || typeof css !== \"string\") {\n\t  return css;\n  }\n\n  var baseUrl = location.protocol + \"//\" + location.host;\n  var currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n\n\t// convert each url(...)\n\t/*\n\tThis regular expression is just a way to recursively match brackets within\n\ta string.\n\n\t /url\\s*\\(  = Match on the word \"url\" with any whitespace after it and then a parens\n\t   (  = Start a capturing group\n\t     (?:  = Start a non-capturing group\n\t         [^)(]  = Match anything that isn't a parentheses\n\t         |  = OR\n\t         \\(  = Match a start parentheses\n\t             (?:  = Start another non-capturing groups\n\t                 [^)(]+  = Match anything that isn't a parentheses\n\t                 |  = OR\n\t                 \\(  = Match a start parentheses\n\t                     [^)(]*  = Match anything that isn't a parentheses\n\t                 \\)  = Match a end parentheses\n\t             )  = End Group\n              *\\) = Match anything and then a close parens\n          )  = Close non-capturing group\n          *  = Match anything\n       )  = Close capturing group\n\t \\)  = Match a close parens\n\n\t /gi  = Get all matches, not the first.  Be case insensitive.\n\t */\n\tvar fixedCss = css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n\t\t// strip quotes (if they exist)\n\t\tvar unquotedOrigUrl = origUrl\n\t\t\t.trim()\n\t\t\t.replace(/^\"(.*)\"$/, function(o, $1){ return $1; })\n\t\t\t.replace(/^'(.*)'$/, function(o, $1){ return $1; });\n\n\t\t// already a full url? no change\n\t\tif (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(unquotedOrigUrl)) {\n\t\t  return fullMatch;\n\t\t}\n\n\t\t// convert the url to a full url\n\t\tvar newUrl;\n\n\t\tif (unquotedOrigUrl.indexOf(\"//\") === 0) {\n\t\t  \t//TODO: should we add protocol?\n\t\t\tnewUrl = unquotedOrigUrl;\n\t\t} else if (unquotedOrigUrl.indexOf(\"/\") === 0) {\n\t\t\t// path should be relative to the base url\n\t\t\tnewUrl = baseUrl + unquotedOrigUrl; // already starts with '/'\n\t\t} else {\n\t\t\t// path should be relative to current directory\n\t\t\tnewUrl = currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"); // Strip leading './'\n\t\t}\n\n\t\t// send back the fixed url(...)\n\t\treturn \"url(\" + JSON.stringify(newUrl) + \")\";\n\t});\n\n\t// send back the fixed css\n\treturn fixedCss;\n};\n","\nvar content = require(\"!!../../css-loader/index.js!../../postcss-loader/lib/index.js??ref--4-2!./toastr.min.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../css-loader/index.js!../../postcss-loader/lib/index.js??ref--4-2!./toastr.min.css\", function() {\n\t\tvar newContent = require(\"!!../../css-loader/index.js!../../postcss-loader/lib/index.js??ref--4-2!./toastr.min.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction trimDots(ary) {\n  for (var i = 0; i < ary.length; ++i) {\n    var part = ary[i];\n    if (part === '.') {\n      ary.splice(i, 1);\n      i -= 1;\n    } else if (part === '..') {\n      if (i === 0 || i === 1 && ary[2] === '..' || ary[i - 1] === '..') {\n        continue;\n      } else if (i > 0) {\n        ary.splice(i - 1, 2);\n        i -= 2;\n      }\n    }\n  }\n}\n\nexport function relativeToFile(name, file) {\n  var fileParts = file && file.split('/');\n  var nameParts = name.trim().split('/');\n\n  if (nameParts[0].charAt(0) === '.' && fileParts) {\n    var normalizedBaseParts = fileParts.slice(0, fileParts.length - 1);\n    nameParts.unshift.apply(nameParts, normalizedBaseParts);\n  }\n\n  trimDots(nameParts);\n\n  return nameParts.join('/');\n}\n\nexport function join(path1, path2) {\n  if (!path1) {\n    return path2;\n  }\n\n  if (!path2) {\n    return path1;\n  }\n\n  var schemeMatch = path1.match(/^([^/]*?:)\\//);\n  var scheme = schemeMatch && schemeMatch.length > 0 ? schemeMatch[1] : '';\n  path1 = path1.substr(scheme.length);\n\n  var urlPrefix = void 0;\n  if (path1.indexOf('///') === 0 && scheme === 'file:') {\n    urlPrefix = '///';\n  } else if (path1.indexOf('//') === 0) {\n    urlPrefix = '//';\n  } else if (path1.indexOf('/') === 0) {\n    urlPrefix = '/';\n  } else {\n    urlPrefix = '';\n  }\n\n  var trailingSlash = path2.slice(-1) === '/' ? '/' : '';\n\n  var url1 = path1.split('/');\n  var url2 = path2.split('/');\n  var url3 = [];\n\n  for (var i = 0, ii = url1.length; i < ii; ++i) {\n    if (url1[i] === '..') {\n      url3.pop();\n    } else if (url1[i] === '.' || url1[i] === '') {\n      continue;\n    } else {\n      url3.push(url1[i]);\n    }\n  }\n\n  for (var _i = 0, _ii = url2.length; _i < _ii; ++_i) {\n    if (url2[_i] === '..') {\n      url3.pop();\n    } else if (url2[_i] === '.' || url2[_i] === '') {\n      continue;\n    } else {\n      url3.push(url2[_i]);\n    }\n  }\n\n  return scheme + urlPrefix + url3.join('/') + trailingSlash;\n}\n\nvar encode = encodeURIComponent;\nvar encodeKey = function encodeKey(k) {\n  return encode(k).replace('%24', '$');\n};\n\nfunction buildParam(key, value, traditional) {\n  var result = [];\n  if (value === null || value === undefined) {\n    return result;\n  }\n  if (Array.isArray(value)) {\n    for (var i = 0, l = value.length; i < l; i++) {\n      if (traditional) {\n        result.push(encodeKey(key) + '=' + encode(value[i]));\n      } else {\n        var arrayKey = key + '[' + (_typeof(value[i]) === 'object' && value[i] !== null ? i : '') + ']';\n        result = result.concat(buildParam(arrayKey, value[i]));\n      }\n    }\n  } else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && !traditional) {\n    for (var propertyName in value) {\n      result = result.concat(buildParam(key + '[' + propertyName + ']', value[propertyName]));\n    }\n  } else {\n    result.push(encodeKey(key) + '=' + encode(value));\n  }\n  return result;\n}\n\nexport function buildQueryString(params, traditional) {\n  var pairs = [];\n  var keys = Object.keys(params || {}).sort();\n  for (var i = 0, len = keys.length; i < len; i++) {\n    var key = keys[i];\n    pairs = pairs.concat(buildParam(key, params[key], traditional));\n  }\n\n  if (pairs.length === 0) {\n    return '';\n  }\n\n  return pairs.join('&');\n}\n\nfunction processScalarParam(existedParam, value) {\n  if (Array.isArray(existedParam)) {\n    existedParam.push(value);\n    return existedParam;\n  }\n  if (existedParam !== undefined) {\n    return [existedParam, value];\n  }\n\n  return value;\n}\n\nfunction parseComplexParam(queryParams, keys, value) {\n  var currentParams = queryParams;\n  var keysLastIndex = keys.length - 1;\n  for (var j = 0; j <= keysLastIndex; j++) {\n    var key = keys[j] === '' ? currentParams.length : keys[j];\n    if (j < keysLastIndex) {\n      var prevValue = !currentParams[key] || _typeof(currentParams[key]) === 'object' ? currentParams[key] : [currentParams[key]];\n      currentParams = currentParams[key] = prevValue || (isNaN(keys[j + 1]) ? {} : []);\n    } else {\n      currentParams = currentParams[key] = value;\n    }\n  }\n}\n\nexport function parseQueryString(queryString) {\n  var queryParams = {};\n  if (!queryString || typeof queryString !== 'string') {\n    return queryParams;\n  }\n\n  var query = queryString;\n  if (query.charAt(0) === '?') {\n    query = query.substr(1);\n  }\n\n  var pairs = query.replace(/\\+/g, ' ').split('&');\n  for (var i = 0; i < pairs.length; i++) {\n    var pair = pairs[i].split('=');\n    var key = decodeURIComponent(pair[0]);\n    if (!key) {\n      continue;\n    }\n\n    var keys = key.split('][');\n    var keysLastIndex = keys.length - 1;\n\n    if (/\\[/.test(keys[0]) && /\\]$/.test(keys[keysLastIndex])) {\n      keys[keysLastIndex] = keys[keysLastIndex].replace(/\\]$/, '');\n      keys = keys.shift().split('[').concat(keys);\n      keysLastIndex = keys.length - 1;\n    } else {\n      keysLastIndex = 0;\n    }\n\n    if (pair.length >= 2) {\n      var value = pair[1] ? decodeURIComponent(pair[1]) : '';\n      if (keysLastIndex) {\n        parseComplexParam(queryParams, keys, value);\n      } else {\n        queryParams[key] = processScalarParam(queryParams[key], value);\n      }\n    } else {\n      queryParams[key] = true;\n    }\n  }\n  return queryParams;\n}","exports = module.exports = require(\"../../css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".toast-title{font-weight:700}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#FFF}.toast-message a:hover{color:#CCC;text-decoration:none}.toast-close-button{position:relative;right:-.3em;top:-.3em;float:right;font-size:20px;font-weight:700;color:#FFF;-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80);line-height:1}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}.rtl .toast-close-button{left:-.3em;float:left;right:.3em}button.toast-close-button{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}#toast-container{position:fixed;z-index:999999;pointer-events:none}#toast-container *{-webkit-box-sizing:border-box;box-sizing:border-box}#toast-container>div{position:relative;pointer-events:auto;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;border-radius:3px;background-position:15px center;background-repeat:no-repeat;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#FFF;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}#toast-container>div.rtl{direction:rtl;padding:15px 50px 15px 15px;background-position:right 15px center}#toast-container>div:hover{-webkit-box-shadow:0 0 12px #000;box-shadow:0 0 12px #000;opacity:1;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);filter:alpha(opacity=100);cursor:pointer}#toast-container>.toast-info{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=)!important}#toast-container>.toast-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=)!important}#toast-container>.toast-success{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==)!important}#toast-container>.toast-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=)!important}#toast-container.toast-bottom-center>div,#toast-container.toast-top-center>div{width:300px;margin-left:auto;margin-right:auto}#toast-container.toast-bottom-full-width>div,#toast-container.toast-top-full-width>div{width:96%;margin-left:auto;margin-right:auto}.toast{background-color:#030303}.toast-success{background-color:#51A351}.toast-error{background-color:#BD362F}.toast-info{background-color:#2F96B4}.toast-warning{background-color:#F89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}@media all and (max-width:240px){#toast-container>div{padding:8px 8px 8px 50px;width:11em}#toast-container>div.rtl{padding:8px 50px 8px 8px}#toast-container .toast-close-button{right:-.2em;top:-.2em}#toast-container .rtl .toast-close-button{left:-.2em;right:.2em}}@media all and (min-width:241px) and (max-width:480px){#toast-container>div{padding:8px 8px 8px 50px;width:18em}#toast-container>div.rtl{padding:8px 50px 8px 8px}#toast-container .toast-close-button{right:-.2em;top:-.2em}#toast-container .rtl .toast-close-button{left:-.2em;right:.2em}}@media all and (min-width:481px) and (max-width:768px){#toast-container>div{padding:15px 15px 15px 50px;width:25em}#toast-container>div.rtl{padding:15px 50px 15px 15px}}\", \"\"]);\n\n// exports\n","\nvar content = require(\"!!../../css-loader/index.js!../../postcss-loader/lib/index.js??ref--4-2!./quill.snow.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../css-loader/index.js!../../postcss-loader/lib/index.js??ref--4-2!./quill.snow.css\", function() {\n\t\tvar newContent = require(\"!!../../css-loader/index.js!../../postcss-loader/lib/index.js??ref--4-2!./quill.snow.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"/*!\\n * Quill Editor v1.3.6\\n * https://quilljs.com/\\n * Copyright (c) 2014, Jason Chen\\n * Copyright (c) 2013, salesforce.com\\n */\\n.ql-container {\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n  font-family: Helvetica, Arial, sans-serif;\\n  font-size: 13px;\\n  height: 100%;\\n  margin: 0px;\\n  position: relative;\\n}\\n.ql-container.ql-disabled .ql-tooltip {\\n  visibility: hidden;\\n}\\n.ql-container.ql-disabled .ql-editor ul[data-checked] > li::before {\\n  pointer-events: none;\\n}\\n.ql-clipboard {\\n  left: -100000px;\\n  height: 1px;\\n  overflow-y: hidden;\\n  position: absolute;\\n  top: 50%;\\n}\\n.ql-clipboard p {\\n  margin: 0;\\n  padding: 0;\\n}\\n.ql-editor {\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n  line-height: 1.42;\\n  height: 100%;\\n  outline: none;\\n  overflow-y: auto;\\n  padding: 12px 15px;\\n  -o-tab-size: 4;\\n     tab-size: 4;\\n  -moz-tab-size: 4;\\n  text-align: left;\\n  white-space: pre-wrap;\\n  word-wrap: break-word;\\n}\\n.ql-editor > * {\\n  cursor: text;\\n}\\n.ql-editor p,\\n.ql-editor ol,\\n.ql-editor ul,\\n.ql-editor pre,\\n.ql-editor blockquote,\\n.ql-editor h1,\\n.ql-editor h2,\\n.ql-editor h3,\\n.ql-editor h4,\\n.ql-editor h5,\\n.ql-editor h6 {\\n  margin: 0;\\n  padding: 0;\\n  counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;\\n}\\n.ql-editor ol,\\n.ql-editor ul {\\n  padding-left: 1.5em;\\n}\\n.ql-editor ol > li,\\n.ql-editor ul > li {\\n  list-style-type: none;\\n}\\n.ql-editor ul > li::before {\\n  content: '\\\\2022';\\n}\\n.ql-editor ul[data-checked=true],\\n.ql-editor ul[data-checked=false] {\\n  pointer-events: none;\\n}\\n.ql-editor ul[data-checked=true] > li *,\\n.ql-editor ul[data-checked=false] > li * {\\n  pointer-events: all;\\n}\\n.ql-editor ul[data-checked=true] > li::before,\\n.ql-editor ul[data-checked=false] > li::before {\\n  color: #777;\\n  cursor: pointer;\\n  pointer-events: all;\\n}\\n.ql-editor ul[data-checked=true] > li::before {\\n  content: '\\\\2611';\\n}\\n.ql-editor ul[data-checked=false] > li::before {\\n  content: '\\\\2610';\\n}\\n.ql-editor li::before {\\n  display: inline-block;\\n  white-space: nowrap;\\n  width: 1.2em;\\n}\\n.ql-editor li:not(.ql-direction-rtl)::before {\\n  margin-left: -1.5em;\\n  margin-right: 0.3em;\\n  text-align: right;\\n}\\n.ql-editor li.ql-direction-rtl::before {\\n  margin-left: 0.3em;\\n  margin-right: -1.5em;\\n}\\n.ql-editor ol li:not(.ql-direction-rtl),\\n.ql-editor ul li:not(.ql-direction-rtl) {\\n  padding-left: 1.5em;\\n}\\n.ql-editor ol li.ql-direction-rtl,\\n.ql-editor ul li.ql-direction-rtl {\\n  padding-right: 1.5em;\\n}\\n.ql-editor ol li {\\n  counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;\\n  counter-increment: list-0;\\n}\\n.ql-editor ol li:before {\\n  content: counter(list-0, decimal) '. ';\\n}\\n.ql-editor ol li.ql-indent-1 {\\n  counter-increment: list-1;\\n}\\n.ql-editor ol li.ql-indent-1:before {\\n  content: counter(list-1, lower-alpha) '. ';\\n}\\n.ql-editor ol li.ql-indent-1 {\\n  counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;\\n}\\n.ql-editor ol li.ql-indent-2 {\\n  counter-increment: list-2;\\n}\\n.ql-editor ol li.ql-indent-2:before {\\n  content: counter(list-2, lower-roman) '. ';\\n}\\n.ql-editor ol li.ql-indent-2 {\\n  counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9;\\n}\\n.ql-editor ol li.ql-indent-3 {\\n  counter-increment: list-3;\\n}\\n.ql-editor ol li.ql-indent-3:before {\\n  content: counter(list-3, decimal) '. ';\\n}\\n.ql-editor ol li.ql-indent-3 {\\n  counter-reset: list-4 list-5 list-6 list-7 list-8 list-9;\\n}\\n.ql-editor ol li.ql-indent-4 {\\n  counter-increment: list-4;\\n}\\n.ql-editor ol li.ql-indent-4:before {\\n  content: counter(list-4, lower-alpha) '. ';\\n}\\n.ql-editor ol li.ql-indent-4 {\\n  counter-reset: list-5 list-6 list-7 list-8 list-9;\\n}\\n.ql-editor ol li.ql-indent-5 {\\n  counter-increment: list-5;\\n}\\n.ql-editor ol li.ql-indent-5:before {\\n  content: counter(list-5, lower-roman) '. ';\\n}\\n.ql-editor ol li.ql-indent-5 {\\n  counter-reset: list-6 list-7 list-8 list-9;\\n}\\n.ql-editor ol li.ql-indent-6 {\\n  counter-increment: list-6;\\n}\\n.ql-editor ol li.ql-indent-6:before {\\n  content: counter(list-6, decimal) '. ';\\n}\\n.ql-editor ol li.ql-indent-6 {\\n  counter-reset: list-7 list-8 list-9;\\n}\\n.ql-editor ol li.ql-indent-7 {\\n  counter-increment: list-7;\\n}\\n.ql-editor ol li.ql-indent-7:before {\\n  content: counter(list-7, lower-alpha) '. ';\\n}\\n.ql-editor ol li.ql-indent-7 {\\n  counter-reset: list-8 list-9;\\n}\\n.ql-editor ol li.ql-indent-8 {\\n  counter-increment: list-8;\\n}\\n.ql-editor ol li.ql-indent-8:before {\\n  content: counter(list-8, lower-roman) '. ';\\n}\\n.ql-editor ol li.ql-indent-8 {\\n  counter-reset: list-9;\\n}\\n.ql-editor ol li.ql-indent-9 {\\n  counter-increment: list-9;\\n}\\n.ql-editor ol li.ql-indent-9:before {\\n  content: counter(list-9, decimal) '. ';\\n}\\n.ql-editor .ql-indent-1:not(.ql-direction-rtl) {\\n  padding-left: 3em;\\n}\\n.ql-editor li.ql-indent-1:not(.ql-direction-rtl) {\\n  padding-left: 4.5em;\\n}\\n.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right {\\n  padding-right: 3em;\\n}\\n.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right {\\n  padding-right: 4.5em;\\n}\\n.ql-editor .ql-indent-2:not(.ql-direction-rtl) {\\n  padding-left: 6em;\\n}\\n.ql-editor li.ql-indent-2:not(.ql-direction-rtl) {\\n  padding-left: 7.5em;\\n}\\n.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right {\\n  padding-right: 6em;\\n}\\n.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right {\\n  padding-right: 7.5em;\\n}\\n.ql-editor .ql-indent-3:not(.ql-direction-rtl) {\\n  padding-left: 9em;\\n}\\n.ql-editor li.ql-indent-3:not(.ql-direction-rtl) {\\n  padding-left: 10.5em;\\n}\\n.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right {\\n  padding-right: 9em;\\n}\\n.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right {\\n  padding-right: 10.5em;\\n}\\n.ql-editor .ql-indent-4:not(.ql-direction-rtl) {\\n  padding-left: 12em;\\n}\\n.ql-editor li.ql-indent-4:not(.ql-direction-rtl) {\\n  padding-left: 13.5em;\\n}\\n.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right {\\n  padding-right: 12em;\\n}\\n.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right {\\n  padding-right: 13.5em;\\n}\\n.ql-editor .ql-indent-5:not(.ql-direction-rtl) {\\n  padding-left: 15em;\\n}\\n.ql-editor li.ql-indent-5:not(.ql-direction-rtl) {\\n  padding-left: 16.5em;\\n}\\n.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right {\\n  padding-right: 15em;\\n}\\n.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right {\\n  padding-right: 16.5em;\\n}\\n.ql-editor .ql-indent-6:not(.ql-direction-rtl) {\\n  padding-left: 18em;\\n}\\n.ql-editor li.ql-indent-6:not(.ql-direction-rtl) {\\n  padding-left: 19.5em;\\n}\\n.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right {\\n  padding-right: 18em;\\n}\\n.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right {\\n  padding-right: 19.5em;\\n}\\n.ql-editor .ql-indent-7:not(.ql-direction-rtl) {\\n  padding-left: 21em;\\n}\\n.ql-editor li.ql-indent-7:not(.ql-direction-rtl) {\\n  padding-left: 22.5em;\\n}\\n.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right {\\n  padding-right: 21em;\\n}\\n.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right {\\n  padding-right: 22.5em;\\n}\\n.ql-editor .ql-indent-8:not(.ql-direction-rtl) {\\n  padding-left: 24em;\\n}\\n.ql-editor li.ql-indent-8:not(.ql-direction-rtl) {\\n  padding-left: 25.5em;\\n}\\n.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right {\\n  padding-right: 24em;\\n}\\n.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right {\\n  padding-right: 25.5em;\\n}\\n.ql-editor .ql-indent-9:not(.ql-direction-rtl) {\\n  padding-left: 27em;\\n}\\n.ql-editor li.ql-indent-9:not(.ql-direction-rtl) {\\n  padding-left: 28.5em;\\n}\\n.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right {\\n  padding-right: 27em;\\n}\\n.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right {\\n  padding-right: 28.5em;\\n}\\n.ql-editor .ql-video {\\n  display: block;\\n  max-width: 100%;\\n}\\n.ql-editor .ql-video.ql-align-center {\\n  margin: 0 auto;\\n}\\n.ql-editor .ql-video.ql-align-right {\\n  margin: 0 0 0 auto;\\n}\\n.ql-editor .ql-bg-black {\\n  background-color: #000;\\n}\\n.ql-editor .ql-bg-red {\\n  background-color: #e60000;\\n}\\n.ql-editor .ql-bg-orange {\\n  background-color: #f90;\\n}\\n.ql-editor .ql-bg-yellow {\\n  background-color: #ff0;\\n}\\n.ql-editor .ql-bg-green {\\n  background-color: #008a00;\\n}\\n.ql-editor .ql-bg-blue {\\n  background-color: #06c;\\n}\\n.ql-editor .ql-bg-purple {\\n  background-color: #93f;\\n}\\n.ql-editor .ql-color-white {\\n  color: #fff;\\n}\\n.ql-editor .ql-color-red {\\n  color: #e60000;\\n}\\n.ql-editor .ql-color-orange {\\n  color: #f90;\\n}\\n.ql-editor .ql-color-yellow {\\n  color: #ff0;\\n}\\n.ql-editor .ql-color-green {\\n  color: #008a00;\\n}\\n.ql-editor .ql-color-blue {\\n  color: #06c;\\n}\\n.ql-editor .ql-color-purple {\\n  color: #93f;\\n}\\n.ql-editor .ql-font-serif {\\n  font-family: Georgia, Times New Roman, serif;\\n}\\n.ql-editor .ql-font-monospace {\\n  font-family: Monaco, Courier New, monospace;\\n}\\n.ql-editor .ql-size-small {\\n  font-size: 0.75em;\\n}\\n.ql-editor .ql-size-large {\\n  font-size: 1.5em;\\n}\\n.ql-editor .ql-size-huge {\\n  font-size: 2.5em;\\n}\\n.ql-editor .ql-direction-rtl {\\n  direction: rtl;\\n  text-align: inherit;\\n}\\n.ql-editor .ql-align-center {\\n  text-align: center;\\n}\\n.ql-editor .ql-align-justify {\\n  text-align: justify;\\n}\\n.ql-editor .ql-align-right {\\n  text-align: right;\\n}\\n.ql-editor.ql-blank::before {\\n  color: rgba(0,0,0,0.6);\\n  content: attr(data-placeholder);\\n  font-style: italic;\\n  left: 15px;\\n  pointer-events: none;\\n  position: absolute;\\n  right: 15px;\\n}\\n.ql-snow.ql-toolbar:after,\\n.ql-snow .ql-toolbar:after {\\n  clear: both;\\n  content: '';\\n  display: table;\\n}\\n.ql-snow.ql-toolbar button,\\n.ql-snow .ql-toolbar button {\\n  background: none;\\n  border: none;\\n  cursor: pointer;\\n  display: inline-block;\\n  float: left;\\n  height: 24px;\\n  padding: 3px 5px;\\n  width: 28px;\\n}\\n.ql-snow.ql-toolbar button svg,\\n.ql-snow .ql-toolbar button svg {\\n  float: left;\\n  height: 100%;\\n}\\n.ql-snow.ql-toolbar button:active:hover,\\n.ql-snow .ql-toolbar button:active:hover {\\n  outline: none;\\n}\\n.ql-snow.ql-toolbar input.ql-image[type=file],\\n.ql-snow .ql-toolbar input.ql-image[type=file] {\\n  display: none;\\n}\\n.ql-snow.ql-toolbar button:hover,\\n.ql-snow .ql-toolbar button:hover,\\n.ql-snow.ql-toolbar button:focus,\\n.ql-snow .ql-toolbar button:focus,\\n.ql-snow.ql-toolbar button.ql-active,\\n.ql-snow .ql-toolbar button.ql-active,\\n.ql-snow.ql-toolbar .ql-picker-label:hover,\\n.ql-snow .ql-toolbar .ql-picker-label:hover,\\n.ql-snow.ql-toolbar .ql-picker-label.ql-active,\\n.ql-snow .ql-toolbar .ql-picker-label.ql-active,\\n.ql-snow.ql-toolbar .ql-picker-item:hover,\\n.ql-snow .ql-toolbar .ql-picker-item:hover,\\n.ql-snow.ql-toolbar .ql-picker-item.ql-selected,\\n.ql-snow .ql-toolbar .ql-picker-item.ql-selected {\\n  color: #06c;\\n}\\n.ql-snow.ql-toolbar button:hover .ql-fill,\\n.ql-snow .ql-toolbar button:hover .ql-fill,\\n.ql-snow.ql-toolbar button:focus .ql-fill,\\n.ql-snow .ql-toolbar button:focus .ql-fill,\\n.ql-snow.ql-toolbar button.ql-active .ql-fill,\\n.ql-snow .ql-toolbar button.ql-active .ql-fill,\\n.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,\\n.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,\\n.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,\\n.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,\\n.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,\\n.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,\\n.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,\\n.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,\\n.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,\\n.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,\\n.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,\\n.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,\\n.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,\\n.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,\\n.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,\\n.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,\\n.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,\\n.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,\\n.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,\\n.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,\\n.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,\\n.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill {\\n  fill: #06c;\\n}\\n.ql-snow.ql-toolbar button:hover .ql-stroke,\\n.ql-snow .ql-toolbar button:hover .ql-stroke,\\n.ql-snow.ql-toolbar button:focus .ql-stroke,\\n.ql-snow .ql-toolbar button:focus .ql-stroke,\\n.ql-snow.ql-toolbar button.ql-active .ql-stroke,\\n.ql-snow .ql-toolbar button.ql-active .ql-stroke,\\n.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,\\n.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,\\n.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,\\n.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,\\n.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,\\n.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,\\n.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,\\n.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,\\n.ql-snow.ql-toolbar button:hover .ql-stroke-miter,\\n.ql-snow .ql-toolbar button:hover .ql-stroke-miter,\\n.ql-snow.ql-toolbar button:focus .ql-stroke-miter,\\n.ql-snow .ql-toolbar button:focus .ql-stroke-miter,\\n.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,\\n.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,\\n.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,\\n.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,\\n.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,\\n.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,\\n.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,\\n.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,\\n.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,\\n.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter {\\n  stroke: #06c;\\n}\\n@media (pointer: coarse) {\\n  .ql-snow.ql-toolbar button:hover:not(.ql-active),\\n  .ql-snow .ql-toolbar button:hover:not(.ql-active) {\\n    color: #444;\\n  }\\n  .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,\\n  .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,\\n  .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,\\n  .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill {\\n    fill: #444;\\n  }\\n  .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,\\n  .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,\\n  .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,\\n  .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter {\\n    stroke: #444;\\n  }\\n}\\n.ql-snow {\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n}\\n.ql-snow * {\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n}\\n.ql-snow .ql-hidden {\\n  display: none;\\n}\\n.ql-snow .ql-out-bottom,\\n.ql-snow .ql-out-top {\\n  visibility: hidden;\\n}\\n.ql-snow .ql-tooltip {\\n  position: absolute;\\n  -webkit-transform: translateY(10px);\\n          transform: translateY(10px);\\n}\\n.ql-snow .ql-tooltip a {\\n  cursor: pointer;\\n  text-decoration: none;\\n}\\n.ql-snow .ql-tooltip.ql-flip {\\n  -webkit-transform: translateY(-10px);\\n          transform: translateY(-10px);\\n}\\n.ql-snow .ql-formats {\\n  display: inline-block;\\n  vertical-align: middle;\\n}\\n.ql-snow .ql-formats:after {\\n  clear: both;\\n  content: '';\\n  display: table;\\n}\\n.ql-snow .ql-stroke {\\n  fill: none;\\n  stroke: #444;\\n  stroke-linecap: round;\\n  stroke-linejoin: round;\\n  stroke-width: 2;\\n}\\n.ql-snow .ql-stroke-miter {\\n  fill: none;\\n  stroke: #444;\\n  stroke-miterlimit: 10;\\n  stroke-width: 2;\\n}\\n.ql-snow .ql-fill,\\n.ql-snow .ql-stroke.ql-fill {\\n  fill: #444;\\n}\\n.ql-snow .ql-empty {\\n  fill: none;\\n}\\n.ql-snow .ql-even {\\n  fill-rule: evenodd;\\n}\\n.ql-snow .ql-thin,\\n.ql-snow .ql-stroke.ql-thin {\\n  stroke-width: 1;\\n}\\n.ql-snow .ql-transparent {\\n  opacity: 0.4;\\n}\\n.ql-snow .ql-direction svg:last-child {\\n  display: none;\\n}\\n.ql-snow .ql-direction.ql-active svg:last-child {\\n  display: inline;\\n}\\n.ql-snow .ql-direction.ql-active svg:first-child {\\n  display: none;\\n}\\n.ql-snow .ql-editor h1 {\\n  font-size: 2em;\\n}\\n.ql-snow .ql-editor h2 {\\n  font-size: 1.5em;\\n}\\n.ql-snow .ql-editor h3 {\\n  font-size: 1.17em;\\n}\\n.ql-snow .ql-editor h4 {\\n  font-size: 1em;\\n}\\n.ql-snow .ql-editor h5 {\\n  font-size: 0.83em;\\n}\\n.ql-snow .ql-editor h6 {\\n  font-size: 0.67em;\\n}\\n.ql-snow .ql-editor a {\\n  text-decoration: underline;\\n}\\n.ql-snow .ql-editor blockquote {\\n  border-left: 4px solid #ccc;\\n  margin-bottom: 5px;\\n  margin-top: 5px;\\n  padding-left: 16px;\\n}\\n.ql-snow .ql-editor code,\\n.ql-snow .ql-editor pre {\\n  background-color: #f0f0f0;\\n  border-radius: 3px;\\n}\\n.ql-snow .ql-editor pre {\\n  white-space: pre-wrap;\\n  margin-bottom: 5px;\\n  margin-top: 5px;\\n  padding: 5px 10px;\\n}\\n.ql-snow .ql-editor code {\\n  font-size: 85%;\\n  padding: 2px 4px;\\n}\\n.ql-snow .ql-editor pre.ql-syntax {\\n  background-color: #23241f;\\n  color: #f8f8f2;\\n  overflow: visible;\\n}\\n.ql-snow .ql-editor img {\\n  max-width: 100%;\\n}\\n.ql-snow .ql-picker {\\n  color: #444;\\n  display: inline-block;\\n  float: left;\\n  font-size: 14px;\\n  font-weight: 500;\\n  height: 24px;\\n  position: relative;\\n  vertical-align: middle;\\n}\\n.ql-snow .ql-picker-label {\\n  cursor: pointer;\\n  display: inline-block;\\n  height: 100%;\\n  padding-left: 8px;\\n  padding-right: 2px;\\n  position: relative;\\n  width: 100%;\\n}\\n.ql-snow .ql-picker-label::before {\\n  display: inline-block;\\n  line-height: 22px;\\n}\\n.ql-snow .ql-picker-options {\\n  background-color: #fff;\\n  display: none;\\n  min-width: 100%;\\n  padding: 4px 8px;\\n  position: absolute;\\n  white-space: nowrap;\\n}\\n.ql-snow .ql-picker-options .ql-picker-item {\\n  cursor: pointer;\\n  display: block;\\n  padding-bottom: 5px;\\n  padding-top: 5px;\\n}\\n.ql-snow .ql-picker.ql-expanded .ql-picker-label {\\n  color: #ccc;\\n  z-index: 2;\\n}\\n.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill {\\n  fill: #ccc;\\n}\\n.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke {\\n  stroke: #ccc;\\n}\\n.ql-snow .ql-picker.ql-expanded .ql-picker-options {\\n  display: block;\\n  margin-top: -1px;\\n  top: 100%;\\n  z-index: 1;\\n}\\n.ql-snow .ql-color-picker,\\n.ql-snow .ql-icon-picker {\\n  width: 28px;\\n}\\n.ql-snow .ql-color-picker .ql-picker-label,\\n.ql-snow .ql-icon-picker .ql-picker-label {\\n  padding: 2px 4px;\\n}\\n.ql-snow .ql-color-picker .ql-picker-label svg,\\n.ql-snow .ql-icon-picker .ql-picker-label svg {\\n  right: 4px;\\n}\\n.ql-snow .ql-icon-picker .ql-picker-options {\\n  padding: 4px 0px;\\n}\\n.ql-snow .ql-icon-picker .ql-picker-item {\\n  height: 24px;\\n  width: 24px;\\n  padding: 2px 4px;\\n}\\n.ql-snow .ql-color-picker .ql-picker-options {\\n  padding: 3px 5px;\\n  width: 152px;\\n}\\n.ql-snow .ql-color-picker .ql-picker-item {\\n  border: 1px solid transparent;\\n  float: left;\\n  height: 16px;\\n  margin: 2px;\\n  padding: 0px;\\n  width: 16px;\\n}\\n.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg {\\n  position: absolute;\\n  margin-top: -9px;\\n  right: 0;\\n  top: 50%;\\n  width: 18px;\\n}\\n.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=''])::before,\\n.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=''])::before,\\n.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=''])::before,\\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=''])::before,\\n.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=''])::before,\\n.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=''])::before {\\n  content: attr(data-label);\\n}\\n.ql-snow .ql-picker.ql-header {\\n  width: 98px;\\n}\\n.ql-snow .ql-picker.ql-header .ql-picker-label::before,\\n.ql-snow .ql-picker.ql-header .ql-picker-item::before {\\n  content: 'Normal';\\n}\\n.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\\\"1\\\"]::before,\\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"1\\\"]::before {\\n  content: 'Heading 1';\\n}\\n.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\\\"2\\\"]::before,\\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"2\\\"]::before {\\n  content: 'Heading 2';\\n}\\n.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\\\"3\\\"]::before,\\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"3\\\"]::before {\\n  content: 'Heading 3';\\n}\\n.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\\\"4\\\"]::before,\\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"4\\\"]::before {\\n  content: 'Heading 4';\\n}\\n.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\\\"5\\\"]::before,\\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"5\\\"]::before {\\n  content: 'Heading 5';\\n}\\n.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\\\"6\\\"]::before,\\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"6\\\"]::before {\\n  content: 'Heading 6';\\n}\\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"1\\\"]::before {\\n  font-size: 2em;\\n}\\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"2\\\"]::before {\\n  font-size: 1.5em;\\n}\\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"3\\\"]::before {\\n  font-size: 1.17em;\\n}\\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"4\\\"]::before {\\n  font-size: 1em;\\n}\\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"5\\\"]::before {\\n  font-size: 0.83em;\\n}\\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"6\\\"]::before {\\n  font-size: 0.67em;\\n}\\n.ql-snow .ql-picker.ql-font {\\n  width: 108px;\\n}\\n.ql-snow .ql-picker.ql-font .ql-picker-label::before,\\n.ql-snow .ql-picker.ql-font .ql-picker-item::before {\\n  content: 'Sans Serif';\\n}\\n.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]::before,\\n.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {\\n  content: 'Serif';\\n}\\n.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]::before,\\n.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {\\n  content: 'Monospace';\\n}\\n.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {\\n  font-family: Georgia, Times New Roman, serif;\\n}\\n.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {\\n  font-family: Monaco, Courier New, monospace;\\n}\\n.ql-snow .ql-picker.ql-size {\\n  width: 98px;\\n}\\n.ql-snow .ql-picker.ql-size .ql-picker-label::before,\\n.ql-snow .ql-picker.ql-size .ql-picker-item::before {\\n  content: 'Normal';\\n}\\n.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]::before,\\n.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before {\\n  content: 'Small';\\n}\\n.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]::before,\\n.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before {\\n  content: 'Large';\\n}\\n.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]::before,\\n.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {\\n  content: 'Huge';\\n}\\n.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before {\\n  font-size: 10px;\\n}\\n.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before {\\n  font-size: 18px;\\n}\\n.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {\\n  font-size: 32px;\\n}\\n.ql-snow .ql-color-picker.ql-background .ql-picker-item {\\n  background-color: #fff;\\n}\\n.ql-snow .ql-color-picker.ql-color .ql-picker-item {\\n  background-color: #000;\\n}\\n.ql-toolbar.ql-snow {\\n  border: 1px solid #ccc;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n  font-family: 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;\\n  padding: 8px;\\n}\\n.ql-toolbar.ql-snow .ql-formats {\\n  margin-right: 15px;\\n}\\n.ql-toolbar.ql-snow .ql-picker-label {\\n  border: 1px solid transparent;\\n}\\n.ql-toolbar.ql-snow .ql-picker-options {\\n  border: 1px solid transparent;\\n  -webkit-box-shadow: rgba(0,0,0,0.2) 0 2px 8px;\\n          box-shadow: rgba(0,0,0,0.2) 0 2px 8px;\\n}\\n.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label {\\n  border-color: #ccc;\\n}\\n.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {\\n  border-color: #ccc;\\n}\\n.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,\\n.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover {\\n  border-color: #000;\\n}\\n.ql-toolbar.ql-snow + .ql-container.ql-snow {\\n  border-top: 0px;\\n}\\n.ql-snow .ql-tooltip {\\n  background-color: #fff;\\n  border: 1px solid #ccc;\\n  -webkit-box-shadow: 0px 0px 5px #ddd;\\n          box-shadow: 0px 0px 5px #ddd;\\n  color: #444;\\n  padding: 5px 12px;\\n  white-space: nowrap;\\n}\\n.ql-snow .ql-tooltip::before {\\n  content: \\\"Visit URL:\\\";\\n  line-height: 26px;\\n  margin-right: 8px;\\n}\\n.ql-snow .ql-tooltip input[type=text] {\\n  display: none;\\n  border: 1px solid #ccc;\\n  font-size: 13px;\\n  height: 26px;\\n  margin: 0px;\\n  padding: 3px 5px;\\n  width: 170px;\\n}\\n.ql-snow .ql-tooltip a.ql-preview {\\n  display: inline-block;\\n  max-width: 200px;\\n  overflow-x: hidden;\\n  text-overflow: ellipsis;\\n  vertical-align: top;\\n}\\n.ql-snow .ql-tooltip a.ql-action::after {\\n  border-right: 1px solid #ccc;\\n  content: 'Edit';\\n  margin-left: 16px;\\n  padding-right: 8px;\\n}\\n.ql-snow .ql-tooltip a.ql-remove::before {\\n  content: 'Remove';\\n  margin-left: 8px;\\n}\\n.ql-snow .ql-tooltip a {\\n  line-height: 26px;\\n}\\n.ql-snow .ql-tooltip.ql-editing a.ql-preview,\\n.ql-snow .ql-tooltip.ql-editing a.ql-remove {\\n  display: none;\\n}\\n.ql-snow .ql-tooltip.ql-editing input[type=text] {\\n  display: inline-block;\\n}\\n.ql-snow .ql-tooltip.ql-editing a.ql-action::after {\\n  border-right: 0px;\\n  content: 'Save';\\n  padding-right: 0px;\\n}\\n.ql-snow .ql-tooltip[data-mode=link]::before {\\n  content: \\\"Enter link:\\\";\\n}\\n.ql-snow .ql-tooltip[data-mode=formula]::before {\\n  content: \\\"Enter formula:\\\";\\n}\\n.ql-snow .ql-tooltip[data-mode=video]::before {\\n  content: \\\"Enter video:\\\";\\n}\\n.ql-snow a {\\n  color: #06c;\\n}\\n.ql-container.ql-snow {\\n  border: 1px solid #ccc;\\n}\\n\", \"\"]);\n\n// exports\n","\nvar content = require(\"!!../../css-loader/index.js!../../postcss-loader/lib/index.js??ref--4-2!./bootstrap-tagsinput.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../css-loader/index.js!../../postcss-loader/lib/index.js??ref--4-2!./bootstrap-tagsinput.css\", function() {\n\t\tvar newContent = require(\"!!../../css-loader/index.js!../../postcss-loader/lib/index.js??ref--4-2!./bootstrap-tagsinput.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".bootstrap-tagsinput {\\n  background-color: #fff;\\n  border: 1px solid #ccc;\\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\\n  display: inline-block;\\n  padding: 4px 6px;\\n  color: #555;\\n  vertical-align: middle;\\n  border-radius: 4px;\\n  max-width: 100%;\\n  line-height: 22px;\\n  cursor: text;\\n}\\n.bootstrap-tagsinput input {\\n  border: none;\\n  -webkit-box-shadow: none;\\n          box-shadow: none;\\n  outline: none;\\n  background-color: transparent;\\n  padding: 0 6px;\\n  margin: 0;\\n  width: auto;\\n  max-width: inherit;\\n}\\n.bootstrap-tagsinput.form-control input::-moz-placeholder {\\n  color: #777;\\n  opacity: 1;\\n}\\n.bootstrap-tagsinput.form-control input:-ms-input-placeholder {\\n  color: #777;\\n}\\n.bootstrap-tagsinput.form-control input::-webkit-input-placeholder {\\n  color: #777;\\n}\\n.bootstrap-tagsinput input:focus {\\n  border: none;\\n  -webkit-box-shadow: none;\\n          box-shadow: none;\\n}\\n.bootstrap-tagsinput .tag {\\n  margin-right: 2px;\\n  color: white;\\n}\\n.bootstrap-tagsinput .tag [data-role=\\\"remove\\\"] {\\n  margin-left: 8px;\\n  cursor: pointer;\\n}\\n.bootstrap-tagsinput .tag [data-role=\\\"remove\\\"]:after {\\n  content: \\\"x\\\";\\n  padding: 0px 2px;\\n}\\n.bootstrap-tagsinput .tag [data-role=\\\"remove\\\"]:hover {\\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);\\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);\\n}\\n.bootstrap-tagsinput .tag [data-role=\\\"remove\\\"]:hover:active {\\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\\n}\\n\", \"\"]);\n\n// exports\n","\nvar content = require(\"!!../../node_modules/css-loader/index.js!../../node_modules/postcss-loader/lib/index.js??ref--5-2!../../node_modules/sass-loader/lib/loader.js??ref--5-3!./main.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../node_modules/css-loader/index.js!../../node_modules/postcss-loader/lib/index.js??ref--5-2!../../node_modules/sass-loader/lib/loader.js??ref--5-3!./main.scss\", function() {\n\t\tvar newContent = require(\"!!../../node_modules/css-loader/index.js!../../node_modules/postcss-loader/lib/index.js??ref--5-2!../../node_modules/sass-loader/lib/loader.js??ref--5-3!./main.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _utils = require('./utils.js');\n\nvar utils = _interopRequireWildcard(_utils);\n\nvar _ajax = require('./ajax.js');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction getDefaults() {\n  return {\n    loadPath: '/locales/{{lng}}/{{ns}}.json',\n    addPath: '/locales/add/{{lng}}/{{ns}}',\n    allowMultiLoading: false,\n    parse: JSON.parse,\n    crossDomain: false,\n    ajax: _ajax2.default\n  };\n}\n\nvar Backend = function () {\n  function Backend(services) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Backend);\n\n    this.init(services, options);\n\n    this.type = 'backend';\n  }\n\n  _createClass(Backend, [{\n    key: 'init',\n    value: function init(services) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      this.services = services;\n      this.options = utils.defaults(options, this.options || {}, getDefaults());\n    }\n  }, {\n    key: 'readMulti',\n    value: function readMulti(languages, namespaces, callback) {\n      var loadPath = this.options.loadPath;\n      if (typeof this.options.loadPath === 'function') {\n        loadPath = this.options.loadPath(languages, namespaces);\n      }\n\n      var url = this.services.interpolator.interpolate(loadPath, { lng: languages.join('+'), ns: namespaces.join('+') });\n\n      this.loadUrl(url, callback);\n    }\n  }, {\n    key: 'read',\n    value: function read(language, namespace, callback) {\n      var loadPath = this.options.loadPath;\n      if (typeof this.options.loadPath === 'function') {\n        loadPath = this.options.loadPath([language], [namespace]);\n      }\n\n      var url = this.services.interpolator.interpolate(loadPath, { lng: language, ns: namespace });\n\n      this.loadUrl(url, callback);\n    }\n  }, {\n    key: 'loadUrl',\n    value: function loadUrl(url, callback) {\n      var _this = this;\n\n      this.options.ajax(url, this.options, function (data, xhr) {\n        if (xhr.status >= 500 && xhr.status < 600) return callback('failed loading ' + url, true /* retry */);\n        if (xhr.status >= 400 && xhr.status < 500) return callback('failed loading ' + url, false /* no retry */);\n\n        var ret = void 0,\n            err = void 0;\n        try {\n          ret = _this.options.parse(data, url);\n        } catch (e) {\n          err = 'failed parsing ' + url + ' to json';\n        }\n        if (err) return callback(err, false);\n        callback(null, ret);\n      });\n    }\n  }, {\n    key: 'create',\n    value: function create(languages, namespace, key, fallbackValue) {\n      var _this2 = this;\n\n      if (typeof languages === 'string') languages = [languages];\n\n      var payload = {};\n      payload[key] = fallbackValue || '';\n\n      languages.forEach(function (lng) {\n        var url = _this2.services.interpolator.interpolate(_this2.options.addPath, { lng: lng, ns: namespace });\n\n        _this2.options.ajax(url, _this2.options, function (data, xhr) {\n          //const statusCode = xhr.status.toString();\n          // TODO: if statusCode === 4xx do log\n        }, payload);\n      });\n    }\n  }]);\n\n  return Backend;\n}();\n\nBackend.type = 'backend';\n\nexports.default = Backend;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.defaults = defaults;\nexports.extend = extend;\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\n\nfunction defaults(obj) {\n  each.call(slice.call(arguments, 1), function (source) {\n    if (source) {\n      for (var prop in source) {\n        if (obj[prop] === undefined) obj[prop] = source[prop];\n      }\n    }\n  });\n  return obj;\n}\n\nfunction extend(obj) {\n  each.call(slice.call(arguments, 1), function (source) {\n    if (source) {\n      for (var prop in source) {\n        obj[prop] = source[prop];\n      }\n    }\n  });\n  return obj;\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction addQueryString(url, params) {\n  if (params && (typeof params === 'undefined' ? 'undefined' : _typeof(params)) === 'object') {\n    var queryString = '',\n        e = encodeURIComponent;\n\n    // Must encode data\n    for (var paramName in params) {\n      queryString += '&' + e(paramName) + '=' + e(params[paramName]);\n    }\n\n    if (!queryString) {\n      return url;\n    }\n\n    url = url + (url.indexOf('?') !== -1 ? '&' : '?') + queryString.slice(1);\n  }\n\n  return url;\n}\n\n// https://gist.github.com/Xeoncross/7663273\nfunction ajax(url, options, callback, data, cache) {\n\n  if (data && (typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') {\n    if (!cache) {\n      data['_t'] = new Date();\n    }\n    // URL encoded form data must be in querystring format\n    data = addQueryString('', data).slice(1);\n  }\n\n  if (options.queryStringParams) {\n    url = addQueryString(url, options.queryStringParams);\n  }\n\n  try {\n    var x;\n    if (XMLHttpRequest) {\n      x = new XMLHttpRequest();\n    } else {\n      x = new ActiveXObject('MSXML2.XMLHTTP.3.0');\n    }\n    x.open(data ? 'POST' : 'GET', url, 1);\n    if (!options.crossDomain) {\n      x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n    }\n    x.withCredentials = !!options.withCredentials;\n    if (data) {\n      x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n    }\n    if (x.overrideMimeType) {\n      x.overrideMimeType(\"application/json\");\n    }\n    var h = options.customHeaders;\n    if (h) {\n      for (var i in h) {\n        x.setRequestHeader(i, h[i]);\n      }\n    }\n    x.onreadystatechange = function () {\n      x.readyState > 3 && callback && callback(x.responseText, x);\n    };\n    x.send(data);\n  } catch (e) {\n    console && console.log(e);\n  }\n}\n\nexports.default = ajax;","\nexport class BootstrapFormRenderer {\n  render(instruction) {\n    for (let {\n        result,\n        elements\n      } of instruction.unrender) {\n      for (let element of elements) {\n        this.remove(element, result);\n      }\n    }\n\n    for (let {\n        result,\n        elements\n      } of instruction.render) {\n      for (let element of elements) {\n        this.add(element, result);\n      }\n    }\n  }\n\n  public add(element, result) {\n    if (result.valid) {\n      return;\n    }\n\n    const formGroup = element.closest('.form-group');\n    if (!formGroup) {\n      return;\n    }\n\n    // add the has-error class to the enclosing form-group div\n    //formGroup.classList.add('has-danger');\n\n    // add help-block\n    const message = document.createElement('div');\n    //message.className = 'form-control-feedback mb-2 mr-sm-2 mb-sm-0';\n    message.className = 'invalid-feedback';\n    message.textContent = result.message;\n    message.id = `validation-message-${result.id}`;\n\n    //element.classList.add('form-control-danger');\n    element.classList.add('is-invalid');\n\n    formGroup.appendChild(message);\n  }\n\n  public remove(element, result) {\n    if (result.valid) {\n      return;\n    }\n\n    const formGroup = element.closest('.form-group');\n    if (!formGroup) {\n      return;\n    }\n\n    // remove help-block\n    const message = formGroup.querySelector(`#validation-message-${result.id}`);\n    if (message) {\n      formGroup.removeChild(message);\n\n      // remove the has-error class from the enclosing form-group div\n      //   if (formGroup.querySelectorAll('.help-block.validation-message').length === 0) {\n      //     formGroup.classList.remove('has-danger');\n      //     formGroup.classList.add('has-success');\n      //     element.classList.add('form-control-success');\n\n      //   }\n\n      // remove the has-error class from the enclosing form-group div\n      if (formGroup.querySelectorAll('.invalid-feedback.validation-message').length === 0) {\n        // formGroup.classList.remove('has-danger');\n        // formGroup.classList.add('has-success');\n        element.classList.remove('is-invalid');\n        element.classList.add('is-valid');\n\n      }\n    }\n  }\n}\n","import { CompanySettings } from \"./company-settings\";\n\nexport class Company {\n  id: number;\n  name: string;\n  businessName: string;\n  roleId: number;\n  parentId: number;\n  slug: string;\n  isValid: boolean;\n  isActive: boolean;\n  createdOn: Date;\n\n  companySettings: CompanySettings;\n  value?: string;\n}\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var map = {\n\t\"./af\": 303,\n\t\"./af.js\": 303,\n\t\"./ar\": 304,\n\t\"./ar-dz\": 305,\n\t\"./ar-dz.js\": 305,\n\t\"./ar-kw\": 306,\n\t\"./ar-kw.js\": 306,\n\t\"./ar-ly\": 307,\n\t\"./ar-ly.js\": 307,\n\t\"./ar-ma\": 308,\n\t\"./ar-ma.js\": 308,\n\t\"./ar-sa\": 309,\n\t\"./ar-sa.js\": 309,\n\t\"./ar-tn\": 310,\n\t\"./ar-tn.js\": 310,\n\t\"./ar.js\": 304,\n\t\"./az\": 311,\n\t\"./az.js\": 311,\n\t\"./be\": 312,\n\t\"./be.js\": 312,\n\t\"./bg\": 313,\n\t\"./bg.js\": 313,\n\t\"./bm\": 314,\n\t\"./bm.js\": 314,\n\t\"./bn\": 315,\n\t\"./bn.js\": 315,\n\t\"./bo\": 316,\n\t\"./bo.js\": 316,\n\t\"./br\": 317,\n\t\"./br.js\": 317,\n\t\"./bs\": 318,\n\t\"./bs.js\": 318,\n\t\"./ca\": 319,\n\t\"./ca.js\": 319,\n\t\"./cs\": 320,\n\t\"./cs.js\": 320,\n\t\"./cv\": 321,\n\t\"./cv.js\": 321,\n\t\"./cy\": 322,\n\t\"./cy.js\": 322,\n\t\"./da\": 323,\n\t\"./da.js\": 323,\n\t\"./de\": 324,\n\t\"./de-at\": 325,\n\t\"./de-at.js\": 325,\n\t\"./de-ch\": 326,\n\t\"./de-ch.js\": 326,\n\t\"./de.js\": 324,\n\t\"./dv\": 327,\n\t\"./dv.js\": 327,\n\t\"./el\": 328,\n\t\"./el.js\": 328,\n\t\"./en-au\": 329,\n\t\"./en-au.js\": 329,\n\t\"./en-ca\": 330,\n\t\"./en-ca.js\": 330,\n\t\"./en-gb\": 331,\n\t\"./en-gb.js\": 331,\n\t\"./en-ie\": 332,\n\t\"./en-ie.js\": 332,\n\t\"./en-il\": 333,\n\t\"./en-il.js\": 333,\n\t\"./en-nz\": 334,\n\t\"./en-nz.js\": 334,\n\t\"./eo\": 335,\n\t\"./eo.js\": 335,\n\t\"./es\": 336,\n\t\"./es-do\": 337,\n\t\"./es-do.js\": 337,\n\t\"./es-us\": 338,\n\t\"./es-us.js\": 338,\n\t\"./es.js\": 336,\n\t\"./et\": 339,\n\t\"./et.js\": 339,\n\t\"./eu\": 340,\n\t\"./eu.js\": 340,\n\t\"./fa\": 341,\n\t\"./fa.js\": 341,\n\t\"./fi\": 342,\n\t\"./fi.js\": 342,\n\t\"./fo\": 343,\n\t\"./fo.js\": 343,\n\t\"./fr\": 344,\n\t\"./fr-ca\": 345,\n\t\"./fr-ca.js\": 345,\n\t\"./fr-ch\": 346,\n\t\"./fr-ch.js\": 346,\n\t\"./fr.js\": 344,\n\t\"./fy\": 347,\n\t\"./fy.js\": 347,\n\t\"./gd\": 348,\n\t\"./gd.js\": 348,\n\t\"./gl\": 349,\n\t\"./gl.js\": 349,\n\t\"./gom-latn\": 350,\n\t\"./gom-latn.js\": 350,\n\t\"./gu\": 351,\n\t\"./gu.js\": 351,\n\t\"./he\": 352,\n\t\"./he.js\": 352,\n\t\"./hi\": 353,\n\t\"./hi.js\": 353,\n\t\"./hr\": 354,\n\t\"./hr.js\": 354,\n\t\"./hu\": 355,\n\t\"./hu.js\": 355,\n\t\"./hy-am\": 356,\n\t\"./hy-am.js\": 356,\n\t\"./id\": 357,\n\t\"./id.js\": 357,\n\t\"./is\": 358,\n\t\"./is.js\": 358,\n\t\"./it\": 359,\n\t\"./it.js\": 359,\n\t\"./ja\": 360,\n\t\"./ja.js\": 360,\n\t\"./jv\": 361,\n\t\"./jv.js\": 361,\n\t\"./ka\": 362,\n\t\"./ka.js\": 362,\n\t\"./kk\": 363,\n\t\"./kk.js\": 363,\n\t\"./km\": 364,\n\t\"./km.js\": 364,\n\t\"./kn\": 365,\n\t\"./kn.js\": 365,\n\t\"./ko\": 366,\n\t\"./ko.js\": 366,\n\t\"./ky\": 367,\n\t\"./ky.js\": 367,\n\t\"./lb\": 368,\n\t\"./lb.js\": 368,\n\t\"./lo\": 369,\n\t\"./lo.js\": 369,\n\t\"./lt\": 370,\n\t\"./lt.js\": 370,\n\t\"./lv\": 371,\n\t\"./lv.js\": 371,\n\t\"./me\": 372,\n\t\"./me.js\": 372,\n\t\"./mi\": 373,\n\t\"./mi.js\": 373,\n\t\"./mk\": 374,\n\t\"./mk.js\": 374,\n\t\"./ml\": 375,\n\t\"./ml.js\": 375,\n\t\"./mn\": 376,\n\t\"./mn.js\": 376,\n\t\"./mr\": 377,\n\t\"./mr.js\": 377,\n\t\"./ms\": 378,\n\t\"./ms-my\": 379,\n\t\"./ms-my.js\": 379,\n\t\"./ms.js\": 378,\n\t\"./mt\": 380,\n\t\"./mt.js\": 380,\n\t\"./my\": 381,\n\t\"./my.js\": 381,\n\t\"./nb\": 382,\n\t\"./nb.js\": 382,\n\t\"./ne\": 383,\n\t\"./ne.js\": 383,\n\t\"./nl\": 384,\n\t\"./nl-be\": 385,\n\t\"./nl-be.js\": 385,\n\t\"./nl.js\": 384,\n\t\"./nn\": 386,\n\t\"./nn.js\": 386,\n\t\"./pa-in\": 387,\n\t\"./pa-in.js\": 387,\n\t\"./pl\": 388,\n\t\"./pl.js\": 388,\n\t\"./pt\": 389,\n\t\"./pt-br\": 390,\n\t\"./pt-br.js\": 390,\n\t\"./pt.js\": 389,\n\t\"./ro\": 391,\n\t\"./ro.js\": 391,\n\t\"./ru\": 392,\n\t\"./ru.js\": 392,\n\t\"./sd\": 393,\n\t\"./sd.js\": 393,\n\t\"./se\": 394,\n\t\"./se.js\": 394,\n\t\"./si\": 395,\n\t\"./si.js\": 395,\n\t\"./sk\": 396,\n\t\"./sk.js\": 396,\n\t\"./sl\": 397,\n\t\"./sl.js\": 397,\n\t\"./sq\": 398,\n\t\"./sq.js\": 398,\n\t\"./sr\": 399,\n\t\"./sr-cyrl\": 400,\n\t\"./sr-cyrl.js\": 400,\n\t\"./sr.js\": 399,\n\t\"./ss\": 401,\n\t\"./ss.js\": 401,\n\t\"./sv\": 402,\n\t\"./sv.js\": 402,\n\t\"./sw\": 403,\n\t\"./sw.js\": 403,\n\t\"./ta\": 404,\n\t\"./ta.js\": 404,\n\t\"./te\": 405,\n\t\"./te.js\": 405,\n\t\"./tet\": 406,\n\t\"./tet.js\": 406,\n\t\"./tg\": 407,\n\t\"./tg.js\": 407,\n\t\"./th\": 408,\n\t\"./th.js\": 408,\n\t\"./tl-ph\": 409,\n\t\"./tl-ph.js\": 409,\n\t\"./tlh\": 410,\n\t\"./tlh.js\": 410,\n\t\"./tr\": 411,\n\t\"./tr.js\": 411,\n\t\"./tzl\": 412,\n\t\"./tzl.js\": 412,\n\t\"./tzm\": 413,\n\t\"./tzm-latn\": 414,\n\t\"./tzm-latn.js\": 414,\n\t\"./tzm.js\": 413,\n\t\"./ug-cn\": 415,\n\t\"./ug-cn.js\": 415,\n\t\"./uk\": 416,\n\t\"./uk.js\": 416,\n\t\"./ur\": 417,\n\t\"./ur.js\": 417,\n\t\"./uz\": 418,\n\t\"./uz-latn\": 419,\n\t\"./uz-latn.js\": 419,\n\t\"./uz.js\": 418,\n\t\"./vi\": 420,\n\t\"./vi.js\": 420,\n\t\"./x-pseudo\": 421,\n\t\"./x-pseudo.js\": 421,\n\t\"./yo\": 422,\n\t\"./yo.js\": 422,\n\t\"./zh-cn\": 423,\n\t\"./zh-cn.js\": 423,\n\t\"./zh-hk\": 424,\n\t\"./zh-hk.js\": 424,\n\t\"./zh-tw\": 425,\n\t\"./zh-tw.js\": 425\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 501;","//! moment-timezone.js\r\n//! version : 0.5.23\r\n//! Copyright (c) JS Foundation and other contributors\r\n//! license : MIT\r\n//! github.com/moment/moment-timezone\r\n\r\n(function (root, factory) {\r\n\t\"use strict\";\r\n\r\n\t/*global define*/\r\n\tif (typeof module === 'object' && module.exports) {\r\n\t\tmodule.exports = factory(require('moment')); // Node\r\n\t} else if (typeof define === 'function' && define.amd) {\r\n\t\tdefine(['moment'], factory);                 // AMD\r\n\t} else {\r\n\t\tfactory(root.moment);                        // Browser\r\n\t}\r\n}(this, function (moment) {\r\n\t\"use strict\";\r\n\r\n\t// Do not load moment-timezone a second time.\r\n\t// if (moment.tz !== undefined) {\r\n\t// \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\r\n\t// \treturn moment;\r\n\t// }\r\n\r\n\tvar VERSION = \"0.5.23\",\r\n\t\tzones = {},\r\n\t\tlinks = {},\r\n\t\tnames = {},\r\n\t\tguesses = {},\r\n\t\tcachedGuess;\r\n\r\n\tif (!moment || typeof moment.version !== 'string') {\r\n\t\tlogError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');\r\n\t}\r\n\r\n\tvar momentVersion = moment.version.split('.'),\r\n\t\tmajor = +momentVersion[0],\r\n\t\tminor = +momentVersion[1];\r\n\r\n\t// Moment.js version check\r\n\tif (major < 2 || (major === 2 && minor < 6)) {\r\n\t\tlogError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\r\n\t}\r\n\r\n\t/************************************\r\n\t\tUnpacking\r\n\t************************************/\r\n\r\n\tfunction charCodeToInt(charCode) {\r\n\t\tif (charCode > 96) {\r\n\t\t\treturn charCode - 87;\r\n\t\t} else if (charCode > 64) {\r\n\t\t\treturn charCode - 29;\r\n\t\t}\r\n\t\treturn charCode - 48;\r\n\t}\r\n\r\n\tfunction unpackBase60(string) {\r\n\t\tvar i = 0,\r\n\t\t\tparts = string.split('.'),\r\n\t\t\twhole = parts[0],\r\n\t\t\tfractional = parts[1] || '',\r\n\t\t\tmultiplier = 1,\r\n\t\t\tnum,\r\n\t\t\tout = 0,\r\n\t\t\tsign = 1;\r\n\r\n\t\t// handle negative numbers\r\n\t\tif (string.charCodeAt(0) === 45) {\r\n\t\t\ti = 1;\r\n\t\t\tsign = -1;\r\n\t\t}\r\n\r\n\t\t// handle digits before the decimal\r\n\t\tfor (i; i < whole.length; i++) {\r\n\t\t\tnum = charCodeToInt(whole.charCodeAt(i));\r\n\t\t\tout = 60 * out + num;\r\n\t\t}\r\n\r\n\t\t// handle digits after the decimal\r\n\t\tfor (i = 0; i < fractional.length; i++) {\r\n\t\t\tmultiplier = multiplier / 60;\r\n\t\t\tnum = charCodeToInt(fractional.charCodeAt(i));\r\n\t\t\tout += num * multiplier;\r\n\t\t}\r\n\r\n\t\treturn out * sign;\r\n\t}\r\n\r\n\tfunction arrayToInt (array) {\r\n\t\tfor (var i = 0; i < array.length; i++) {\r\n\t\t\tarray[i] = unpackBase60(array[i]);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction intToUntil (array, length) {\r\n\t\tfor (var i = 0; i < length; i++) {\r\n\t\t\tarray[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\r\n\t\t}\r\n\r\n\t\tarray[length - 1] = Infinity;\r\n\t}\r\n\r\n\tfunction mapIndices (source, indices) {\r\n\t\tvar out = [], i;\r\n\r\n\t\tfor (i = 0; i < indices.length; i++) {\r\n\t\t\tout[i] = source[indices[i]];\r\n\t\t}\r\n\r\n\t\treturn out;\r\n\t}\r\n\r\n\tfunction unpack (string) {\r\n\t\tvar data = string.split('|'),\r\n\t\t\toffsets = data[2].split(' '),\r\n\t\t\tindices = data[3].split(''),\r\n\t\t\tuntils  = data[4].split(' ');\r\n\r\n\t\tarrayToInt(offsets);\r\n\t\tarrayToInt(indices);\r\n\t\tarrayToInt(untils);\r\n\r\n\t\tintToUntil(untils, indices.length);\r\n\r\n\t\treturn {\r\n\t\t\tname       : data[0],\r\n\t\t\tabbrs      : mapIndices(data[1].split(' '), indices),\r\n\t\t\toffsets    : mapIndices(offsets, indices),\r\n\t\t\tuntils     : untils,\r\n\t\t\tpopulation : data[5] | 0\r\n\t\t};\r\n\t}\r\n\r\n\t/************************************\r\n\t\tZone object\r\n\t************************************/\r\n\r\n\tfunction Zone (packedString) {\r\n\t\tif (packedString) {\r\n\t\t\tthis._set(unpack(packedString));\r\n\t\t}\r\n\t}\r\n\r\n\tZone.prototype = {\r\n\t\t_set : function (unpacked) {\r\n\t\t\tthis.name       = unpacked.name;\r\n\t\t\tthis.abbrs      = unpacked.abbrs;\r\n\t\t\tthis.untils     = unpacked.untils;\r\n\t\t\tthis.offsets    = unpacked.offsets;\r\n\t\t\tthis.population = unpacked.population;\r\n\t\t},\r\n\r\n\t\t_index : function (timestamp) {\r\n\t\t\tvar target = +timestamp,\r\n\t\t\t\tuntils = this.untils,\r\n\t\t\t\ti;\r\n\r\n\t\t\tfor (i = 0; i < untils.length; i++) {\r\n\t\t\t\tif (target < untils[i]) {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tparse : function (timestamp) {\r\n\t\t\tvar target  = +timestamp,\r\n\t\t\t\toffsets = this.offsets,\r\n\t\t\t\tuntils  = this.untils,\r\n\t\t\t\tmax     = untils.length - 1,\r\n\t\t\t\toffset, offsetNext, offsetPrev, i;\r\n\r\n\t\t\tfor (i = 0; i < max; i++) {\r\n\t\t\t\toffset     = offsets[i];\r\n\t\t\t\toffsetNext = offsets[i + 1];\r\n\t\t\t\toffsetPrev = offsets[i ? i - 1 : i];\r\n\r\n\t\t\t\tif (offset < offsetNext && tz.moveAmbiguousForward) {\r\n\t\t\t\t\toffset = offsetNext;\r\n\t\t\t\t} else if (offset > offsetPrev && tz.moveInvalidForward) {\r\n\t\t\t\t\toffset = offsetPrev;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (target < untils[i] - (offset * 60000)) {\r\n\t\t\t\t\treturn offsets[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn offsets[max];\r\n\t\t},\r\n\r\n\t\tabbr : function (mom) {\r\n\t\t\treturn this.abbrs[this._index(mom)];\r\n\t\t},\r\n\r\n\t\toffset : function (mom) {\r\n\t\t\tlogError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\r\n\t\t\treturn this.offsets[this._index(mom)];\r\n\t\t},\r\n\r\n\t\tutcOffset : function (mom) {\r\n\t\t\treturn this.offsets[this._index(mom)];\r\n\t\t}\r\n\t};\r\n\r\n\t/************************************\r\n\t\tCurrent Timezone\r\n\t************************************/\r\n\r\n\tfunction OffsetAt(at) {\r\n\t\tvar timeString = at.toTimeString();\r\n\t\tvar abbr = timeString.match(/\\([a-z ]+\\)/i);\r\n\t\tif (abbr && abbr[0]) {\r\n\t\t\t// 17:56:31 GMT-0600 (CST)\r\n\t\t\t// 17:56:31 GMT-0600 (Central Standard Time)\r\n\t\t\tabbr = abbr[0].match(/[A-Z]/g);\r\n\t\t\tabbr = abbr ? abbr.join('') : undefined;\r\n\t\t} else {\r\n\t\t\t// 17:56:31 CST\r\n\t\t\t// 17:56:31 GMT+0800 (台北標準時間)\r\n\t\t\tabbr = timeString.match(/[A-Z]{3,5}/g);\r\n\t\t\tabbr = abbr ? abbr[0] : undefined;\r\n\t\t}\r\n\r\n\t\tif (abbr === 'GMT') {\r\n\t\t\tabbr = undefined;\r\n\t\t}\r\n\r\n\t\tthis.at = +at;\r\n\t\tthis.abbr = abbr;\r\n\t\tthis.offset = at.getTimezoneOffset();\r\n\t}\r\n\r\n\tfunction ZoneScore(zone) {\r\n\t\tthis.zone = zone;\r\n\t\tthis.offsetScore = 0;\r\n\t\tthis.abbrScore = 0;\r\n\t}\r\n\r\n\tZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\r\n\t\tthis.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\r\n\t\tif (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\r\n\t\t\tthis.abbrScore++;\r\n\t\t}\r\n\t};\r\n\r\n\tfunction findChange(low, high) {\r\n\t\tvar mid, diff;\r\n\r\n\t\twhile ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {\r\n\t\t\tmid = new OffsetAt(new Date(low.at + diff));\r\n\t\t\tif (mid.offset === low.offset) {\r\n\t\t\t\tlow = mid;\r\n\t\t\t} else {\r\n\t\t\t\thigh = mid;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn low;\r\n\t}\r\n\r\n\tfunction userOffsets() {\r\n\t\tvar startYear = new Date().getFullYear() - 2,\r\n\t\t\tlast = new OffsetAt(new Date(startYear, 0, 1)),\r\n\t\t\toffsets = [last],\r\n\t\t\tchange, next, i;\r\n\r\n\t\tfor (i = 1; i < 48; i++) {\r\n\t\t\tnext = new OffsetAt(new Date(startYear, i, 1));\r\n\t\t\tif (next.offset !== last.offset) {\r\n\t\t\t\tchange = findChange(last, next);\r\n\t\t\t\toffsets.push(change);\r\n\t\t\t\toffsets.push(new OffsetAt(new Date(change.at + 6e4)));\r\n\t\t\t}\r\n\t\t\tlast = next;\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < 4; i++) {\r\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\r\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\r\n\t\t}\r\n\r\n\t\treturn offsets;\r\n\t}\r\n\r\n\tfunction sortZoneScores (a, b) {\r\n\t\tif (a.offsetScore !== b.offsetScore) {\r\n\t\t\treturn a.offsetScore - b.offsetScore;\r\n\t\t}\r\n\t\tif (a.abbrScore !== b.abbrScore) {\r\n\t\t\treturn a.abbrScore - b.abbrScore;\r\n\t\t}\r\n\t\treturn b.zone.population - a.zone.population;\r\n\t}\r\n\r\n\tfunction addToGuesses (name, offsets) {\r\n\t\tvar i, offset;\r\n\t\tarrayToInt(offsets);\r\n\t\tfor (i = 0; i < offsets.length; i++) {\r\n\t\t\toffset = offsets[i];\r\n\t\t\tguesses[offset] = guesses[offset] || {};\r\n\t\t\tguesses[offset][name] = true;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction guessesForUserOffsets (offsets) {\r\n\t\tvar offsetsLength = offsets.length,\r\n\t\t\tfilteredGuesses = {},\r\n\t\t\tout = [],\r\n\t\t\ti, j, guessesOffset;\r\n\r\n\t\tfor (i = 0; i < offsetsLength; i++) {\r\n\t\t\tguessesOffset = guesses[offsets[i].offset] || {};\r\n\t\t\tfor (j in guessesOffset) {\r\n\t\t\t\tif (guessesOffset.hasOwnProperty(j)) {\r\n\t\t\t\t\tfilteredGuesses[j] = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (i in filteredGuesses) {\r\n\t\t\tif (filteredGuesses.hasOwnProperty(i)) {\r\n\t\t\t\tout.push(names[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn out;\r\n\t}\r\n\r\n\tfunction rebuildGuess () {\r\n\r\n\t\t// use Intl API when available and returning valid time zone\r\n\t\ttry {\r\n\t\t\tvar intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n\t\t\tif (intlName && intlName.length > 3) {\r\n\t\t\t\tvar name = names[normalizeName(intlName)];\r\n\t\t\t\tif (name) {\r\n\t\t\t\t\treturn name;\r\n\t\t\t\t}\r\n\t\t\t\tlogError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\t// Intl unavailable, fall back to manual guessing.\r\n\t\t}\r\n\r\n\t\tvar offsets = userOffsets(),\r\n\t\t\toffsetsLength = offsets.length,\r\n\t\t\tguesses = guessesForUserOffsets(offsets),\r\n\t\t\tzoneScores = [],\r\n\t\t\tzoneScore, i, j;\r\n\r\n\t\tfor (i = 0; i < guesses.length; i++) {\r\n\t\t\tzoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\r\n\t\t\tfor (j = 0; j < offsetsLength; j++) {\r\n\t\t\t\tzoneScore.scoreOffsetAt(offsets[j]);\r\n\t\t\t}\r\n\t\t\tzoneScores.push(zoneScore);\r\n\t\t}\r\n\r\n\t\tzoneScores.sort(sortZoneScores);\r\n\r\n\t\treturn zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\r\n\t}\r\n\r\n\tfunction guess (ignoreCache) {\r\n\t\tif (!cachedGuess || ignoreCache) {\r\n\t\t\tcachedGuess = rebuildGuess();\r\n\t\t}\r\n\t\treturn cachedGuess;\r\n\t}\r\n\r\n\t/************************************\r\n\t\tGlobal Methods\r\n\t************************************/\r\n\r\n\tfunction normalizeName (name) {\r\n\t\treturn (name || '').toLowerCase().replace(/\\//g, '_');\r\n\t}\r\n\r\n\tfunction addZone (packed) {\r\n\t\tvar i, name, split, normalized;\r\n\r\n\t\tif (typeof packed === \"string\") {\r\n\t\t\tpacked = [packed];\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < packed.length; i++) {\r\n\t\t\tsplit = packed[i].split('|');\r\n\t\t\tname = split[0];\r\n\t\t\tnormalized = normalizeName(name);\r\n\t\t\tzones[normalized] = packed[i];\r\n\t\t\tnames[normalized] = name;\r\n\t\t\taddToGuesses(normalized, split[2].split(' '));\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getZone (name, caller) {\r\n\t\t\r\n\t\tname = normalizeName(name);\r\n\r\n\t\tvar zone = zones[name];\r\n\t\tvar link;\r\n\r\n\t\tif (zone instanceof Zone) {\r\n\t\t\treturn zone;\r\n\t\t}\r\n\r\n\t\tif (typeof zone === 'string') {\r\n\t\t\tzone = new Zone(zone);\r\n\t\t\tzones[name] = zone;\r\n\t\t\treturn zone;\r\n\t\t}\r\n\r\n\t\t// Pass getZone to prevent recursion more than 1 level deep\r\n\t\tif (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\r\n\t\t\tzone = zones[name] = new Zone();\r\n\t\t\tzone._set(link);\r\n\t\t\tzone.name = names[name];\r\n\t\t\treturn zone;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction getNames () {\r\n\t\tvar i, out = [];\r\n\r\n\t\tfor (i in names) {\r\n\t\t\tif (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\r\n\t\t\t\tout.push(names[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn out.sort();\r\n\t}\r\n\r\n\tfunction addLink (aliases) {\r\n\t\tvar i, alias, normal0, normal1;\r\n\r\n\t\tif (typeof aliases === \"string\") {\r\n\t\t\taliases = [aliases];\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < aliases.length; i++) {\r\n\t\t\talias = aliases[i].split('|');\r\n\r\n\t\t\tnormal0 = normalizeName(alias[0]);\r\n\t\t\tnormal1 = normalizeName(alias[1]);\r\n\r\n\t\t\tlinks[normal0] = normal1;\r\n\t\t\tnames[normal0] = alias[0];\r\n\r\n\t\t\tlinks[normal1] = normal0;\r\n\t\t\tnames[normal1] = alias[1];\r\n\t\t}\r\n\t}\r\n\r\n\tfunction loadData (data) {\r\n\t\taddZone(data.zones);\r\n\t\taddLink(data.links);\r\n\t\ttz.dataVersion = data.version;\r\n\t}\r\n\r\n\tfunction zoneExists (name) {\r\n\t\tif (!zoneExists.didShowError) {\r\n\t\t\tzoneExists.didShowError = true;\r\n\t\t\t\tlogError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\r\n\t\t}\r\n\t\treturn !!getZone(name);\r\n\t}\r\n\r\n\tfunction needsOffset (m) {\r\n\t\tvar isUnixTimestamp = (m._f === 'X' || m._f === 'x');\r\n\t\treturn !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);\r\n\t}\r\n\r\n\tfunction logError (message) {\r\n\t\tif (typeof console !== 'undefined' && typeof console.error === 'function') {\r\n\t\t\tconsole.error(message);\r\n\t\t}\r\n\t}\r\n\r\n\t/************************************\r\n\t\tmoment.tz namespace\r\n\t************************************/\r\n\r\n\tfunction tz (input) {\r\n\t\tvar args = Array.prototype.slice.call(arguments, 0, -1),\r\n\t\t\tname = arguments[arguments.length - 1],\r\n\t\t\tzone = getZone(name),\r\n\t\t\tout  = moment.utc.apply(null, args);\r\n\r\n\t\tif (zone && !moment.isMoment(input) && needsOffset(out)) {\r\n\t\t\tout.add(zone.parse(out), 'minutes');\r\n\t\t}\r\n\r\n\t\tout.tz(name);\r\n\r\n\t\treturn out;\r\n\t}\r\n\r\n\ttz.version      = VERSION;\r\n\ttz.dataVersion  = '';\r\n\ttz._zones       = zones;\r\n\ttz._links       = links;\r\n\ttz._names       = names;\r\n\ttz.add          = addZone;\r\n\ttz.link         = addLink;\r\n\ttz.load         = loadData;\r\n\ttz.zone         = getZone;\r\n\ttz.zoneExists   = zoneExists; // deprecated in 0.1.0\r\n\ttz.guess        = guess;\r\n\ttz.names        = getNames;\r\n\ttz.Zone         = Zone;\r\n\ttz.unpack       = unpack;\r\n\ttz.unpackBase60 = unpackBase60;\r\n\ttz.needsOffset  = needsOffset;\r\n\ttz.moveInvalidForward   = true;\r\n\ttz.moveAmbiguousForward = false;\r\n\r\n\t/************************************\r\n\t\tInterface with Moment.js\r\n\t************************************/\r\n\r\n\tvar fn = moment.fn;\r\n\r\n\tmoment.tz = tz;\r\n\r\n\tmoment.defaultZone = null;\r\n\r\n\tmoment.updateOffset = function (mom, keepTime) {\r\n\t\tvar zone = moment.defaultZone,\r\n\t\t\toffset;\r\n\r\n\t\tif (mom._z === undefined) {\r\n\t\t\tif (zone && needsOffset(mom) && !mom._isUTC) {\r\n\t\t\t\tmom._d = moment.utc(mom._a)._d;\r\n\t\t\t\tmom.utc().add(zone.parse(mom), 'minutes');\r\n\t\t\t}\r\n\t\t\tmom._z = zone;\r\n\t\t}\r\n\t\tif (mom._z) {\r\n\t\t\toffset = mom._z.utcOffset(mom);\r\n\t\t\tif (Math.abs(offset) < 16) {\r\n\t\t\t\toffset = offset / 60;\r\n\t\t\t}\r\n\t\t\tif (mom.utcOffset !== undefined) {\r\n\t\t\t\tmom.utcOffset(-offset, keepTime);\r\n\t\t\t} else {\r\n\t\t\t\tmom.zone(offset, keepTime);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tfn.tz = function (name, keepTime) {\r\n\t\tif (name) {\r\n\t\t\tif (typeof name !== 'string') {\r\n\t\t\t\tthrow new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');\r\n\t\t\t}\r\n\t\t\tthis._z = getZone(name);\r\n\t\t\tif (this._z) {\r\n\t\t\t\tmoment.updateOffset(this, keepTime);\r\n\t\t\t} else {\r\n\t\t\t\tlogError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tif (this._z) { return this._z.name; }\r\n\t};\r\n\r\n\tfunction abbrWrap (old) {\r\n\t\treturn function () {\r\n\t\t\tif (this._z) { return this._z.abbr(this); }\r\n\t\t\treturn old.call(this);\r\n\t\t};\r\n\t}\r\n\r\n\tfunction resetZoneWrap (old) {\r\n\t\treturn function () {\r\n\t\t\tthis._z = null;\r\n\t\t\treturn old.apply(this, arguments);\r\n\t\t};\r\n\t}\r\n\r\n\tfn.zoneName = abbrWrap(fn.zoneName);\r\n\tfn.zoneAbbr = abbrWrap(fn.zoneAbbr);\r\n\tfn.utc      = resetZoneWrap(fn.utc);\r\n\r\n\tmoment.tz.setDefault = function(name) {\r\n\t\tif (major < 2 || (major === 2 && minor < 9)) {\r\n\t\t\tlogError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\r\n\t\t}\r\n\t\tmoment.defaultZone = name ? getZone(name) : null;\r\n\t\treturn moment;\r\n\t};\r\n\r\n\t// Cloning a moment should include the _z property.\r\n\tvar momentProperties = moment.momentProperties;\r\n\tif (Object.prototype.toString.call(momentProperties) === '[object Array]') {\r\n\t\t// moment 2.8.1+\r\n\t\tmomentProperties.push('_z');\r\n\t\tmomentProperties.push('_a');\r\n\t} else if (momentProperties) {\r\n\t\t// moment 2.7.0\r\n\t\tmomentProperties._z = null;\r\n\t}\r\n\r\n\t// INJECT DATA\r\n\r\n\treturn moment;\r\n}));\r\n","/*! @preserve\n * numeral.js\n * locales : 2.0.6\n * license : MIT\n * http://adamwdraper.github.com/Numeral-js/\n */\n\n(function (global, factory) {\n    if (typeof define === 'function' && define.amd) {\n        define(['numeral'], factory);\n    } else if (typeof module === 'object' && module.exports) {\n        factory(require('./numeral'));\n    } else {\n        factory(global.numeral);\n    }\n}(this, function (numeral) {\n    \n(function() {\n        numeral.register('locale', 'bg', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: { // I found these here http://www.unicode.org/cldr/charts/28/verify/numbers/bg.html\n            thousand: 'хил',\n            million: 'млн',\n            billion: 'млрд',\n            trillion: 'трлн'\n        },\n        ordinal: function (number) {\n            // google translate suggests:\n            // 1st=1-ви; 2nd=2-ри; 7th=7-ми;\n            // 8th=8-ми and many others end with -ти\n            // for example 3rd=3-ти\n            // However since I've seen suggestions that in\n            // Bulgarian the ordinal can be taken in\n            // different forms (masculine, feminine, neuter)\n            // I've opted to wimp out on commiting that to code\n            return '';\n        },\n        currency: {\n            symbol: 'лв'\n        }\n    });\n})();\n\n\n(function() {\n    \n    numeral.register('locale', 'chs', {\n        delimiters: {\n            thousands: ',',\n            decimal: '.'\n        },\n        abbreviations: {\n            thousand: '千',\n            million: '百万',\n            billion: '十亿',\n            trillion: '兆'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: '¥'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'cs', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'tis.',\n            million: 'mil.',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function () {\n            return '.';\n        },\n        currency: {\n            symbol: 'Kč'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'da-dk', {\n        delimiters: {\n            thousands: '.',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'mio',\n            billion: 'mia',\n            trillion: 'b'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: 'DKK'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'de-ch', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: 'CHF'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'de', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: '€'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'en-au', {\n        delimiters: {\n            thousands: ',',\n            decimal: '.'\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function (number) {\n            var b = number % 10;\n            return (~~ (number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n        },\n        currency: {\n            symbol: '$'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'en-gb', {\n        delimiters: {\n            thousands: ',',\n            decimal: '.'\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function (number) {\n            var b = number % 10;\n            return (~~ (number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n        },\n        currency: {\n            symbol: '£'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'en-za', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function (number) {\n            var b = number % 10;\n            return (~~ (number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                    (b === 2) ? 'nd' :\n                        (b === 3) ? 'rd' : 'th';\n        },\n        currency: {\n            symbol: 'R'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'es-es', {\n        delimiters: {\n            thousands: '.',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'mm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function (number) {\n            var b = number % 10;\n            return (b === 1 || b === 3) ? 'er' :\n                (b === 2) ? 'do' :\n                    (b === 7 || b === 0) ? 'mo' :\n                        (b === 8) ? 'vo' :\n                            (b === 9) ? 'no' : 'to';\n        },\n        currency: {\n            symbol: '€'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'es', {\n        delimiters: {\n            thousands: '.',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'mm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function (number) {\n            var b = number % 10;\n            return (b === 1 || b === 3) ? 'er' :\n                (b === 2) ? 'do' :\n                (b === 7 || b === 0) ? 'mo' :\n\t\t(b === 8) ? 'vo' :\n\t\t(b === 9) ? 'no' : 'to';\n        },\n        currency: {\n            symbol: '$'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'et', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: ' tuh',\n            million: ' mln',\n            billion: ' mld',\n            trillion: ' trl'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: '€'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'fi', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'M',\n            billion: 'G',\n            trillion: 'T'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: '€'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'fr-ca', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'M',\n            billion: 'G',\n            trillion: 'T'\n        },\n        ordinal : function (number) {\n            return number === 1 ? 'er' : 'e';\n        },\n        currency: {\n            symbol: '$'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'fr-ch', {\n        delimiters: {\n            thousands: '\\'',\n            decimal: '.'\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal : function (number) {\n            return number === 1 ? 'er' : 'e';\n        },\n        currency: {\n            symbol: 'CHF'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'fr', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal : function (number) {\n            return number === 1 ? 'er' : 'e';\n        },\n        currency: {\n            symbol: '€'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'hu', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'E',  // ezer\n            million: 'M',   // millió\n            billion: 'Mrd', // milliárd\n            trillion: 'T'   // trillió\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: ' Ft'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'it', {\n        delimiters: {\n            thousands: '.',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'mila',\n            million: 'mil',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function (number) {\n            return 'º';\n        },\n        currency: {\n            symbol: '€'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'ja', {\n        delimiters: {\n            thousands: ',',\n            decimal: '.'\n        },\n        abbreviations: {\n            thousand: '千',\n            million: '百万',\n            billion: '十億',\n            trillion: '兆'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: '¥'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'lv', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: ' tūkst.',\n            million: ' milj.',\n            billion: ' mljrd.',\n            trillion: ' trilj.'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: '€'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'nl-be', {\n        delimiters: {\n            thousands: ' ',\n            decimal  : ','\n        },\n        abbreviations: {\n            thousand : 'k',\n            million  : ' mln',\n            billion  : ' mld',\n            trillion : ' bln'\n        },\n        ordinal : function (number) {\n            var remainder = number % 100;\n\n            return (number !== 0 && remainder <= 1 || remainder === 8 || remainder >= 20) ? 'ste' : 'de';\n        },\n        currency: {\n            symbol: '€ '\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'nl-nl', {\n        delimiters: {\n            thousands: '.',\n            decimal  : ','\n        },\n        abbreviations: {\n            thousand : 'k',\n            million  : 'mln',\n            billion  : 'mrd',\n            trillion : 'bln'\n        },\n        ordinal : function (number) {\n            var remainder = number % 100;\n            return (number !== 0 && remainder <= 1 || remainder === 8 || remainder >= 20) ? 'ste' : 'de';\n        },\n        currency: {\n            symbol: '€ '\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'no', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: 'kr'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'pl', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'tys.',\n            million: 'mln',\n            billion: 'mld',\n            trillion: 'bln'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: 'PLN'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'pt-br', {\n        delimiters: {\n            thousands: '.',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'mil',\n            million: 'milhões',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function (number) {\n            return 'º';\n        },\n        currency: {\n            symbol: 'R$'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'pt-pt', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal : function (number) {\n            return 'º';\n        },\n        currency: {\n            symbol: '€'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'ru-ua', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'тыс.',\n            million: 'млн',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function () {\n            // not ideal, but since in Russian it can taken on\n            // different forms (masculine, feminine, neuter)\n            // this is all we can do\n            return '.';\n        },\n        currency: {\n            symbol: '\\u20B4'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'ru', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'тыс.',\n            million: 'млн.',\n            billion: 'млрд.',\n            trillion: 'трлн.'\n        },\n        ordinal: function () {\n            // not ideal, but since in Russian it can taken on\n            // different forms (masculine, feminine, neuter)\n            // this is all we can do\n            return '.';\n        },\n        currency: {\n            symbol: 'руб.'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'sk', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'tis.',\n            million: 'mil.',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function () {\n            return '.';\n        },\n        currency: {\n            symbol: '€'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'sl', {\n        delimiters: {\n            thousands: '.',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'mio',\n            billion: 'mrd',\n            trillion: 'trilijon'\n        },\n        ordinal: function () {\n            return '.';\n        },\n        currency: {\n            symbol: '€'\n        }\n    });\n})();\n\n\n(function() {\n    \n\n    numeral.register('locale', 'th', {\n        delimiters: {\n            thousands: ',',\n            decimal: '.'\n        },\n        abbreviations: {\n            thousand: 'พัน',\n            million: 'ล้าน',\n            billion: 'พันล้าน',\n            trillion: 'ล้านล้าน'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: '฿'\n        }\n    });\n})();\n\n\n(function() {\n        var suffixes = {\n            1: '\\'inci',\n            5: '\\'inci',\n            8: '\\'inci',\n            70: '\\'inci',\n            80: '\\'inci',\n\n            2: '\\'nci',\n            7: '\\'nci',\n            20: '\\'nci',\n            50: '\\'nci',\n\n            3: '\\'üncü',\n            4: '\\'üncü',\n            100: '\\'üncü',\n\n            6: '\\'ncı',\n\n            9: '\\'uncu',\n            10: '\\'uncu',\n            30: '\\'uncu',\n\n            60: '\\'ıncı',\n            90: '\\'ıncı'\n        };\n\n    numeral.register('locale', 'tr', {\n        delimiters: {\n            thousands: '.',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'bin',\n            million: 'milyon',\n            billion: 'milyar',\n            trillion: 'trilyon'\n        },\n        ordinal: function (number) {\n            if (number === 0) {  // special case for zero\n                return '\\'ıncı';\n            }\n\n            var a = number % 10,\n                b = number % 100 - a,\n                c = number >= 100 ? 100 : null;\n\n          return suffixes[a] || suffixes[b] || suffixes[c];\n        },\n        currency: {\n            symbol: '\\u20BA'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'uk-ua', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'тис.',\n            million: 'млн',\n            billion: 'млрд',\n            trillion: 'блн'\n        },\n        ordinal: function () {\n            // not ideal, but since in Ukrainian it can taken on\n            // different forms (masculine, feminine, neuter)\n            // this is all we can do\n            return '';\n        },\n        currency: {\n            symbol: '\\u20B4'\n        }\n    });\n})();\n\n\n(function() {\n    \n    numeral.register('locale', 'vi', {\n        delimiters: {\n            thousands: '.',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: ' nghìn',\n            million: ' triệu',\n            billion: ' tỷ',\n            trillion: ' nghìn tỷ'\n        },\n        ordinal: function () {\n            return '.';\n        },\n        currency: {\n            symbol: '₫'\n        }\n    });\n})();\n\n\n}));\n","/*!\n * typeahead.js 1.2.0\n * https://github.com/twitter/typeahead.js\n * Copyright 2013-2017 Twitter, Inc. and other contributors; Licensed MIT\n */\n\n(function(root, factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define([ \"jquery\" ], function(a0) {\n            return root[\"Bloodhound\"] = factory(a0);\n        });\n    } else if (typeof exports === \"object\") {\n        module.exports = factory(require(\"jquery\"));\n    } else {\n        root[\"Bloodhound\"] = factory(root[\"jQuery\"]);\n    }\n})(this, function($) {\n    var _ = function() {\n        \"use strict\";\n        return {\n            isMsie: function() {\n                return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\n            },\n            isBlankString: function(str) {\n                return !str || /^\\s*$/.test(str);\n            },\n            escapeRegExChars: function(str) {\n                return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n            },\n            isString: function(obj) {\n                return typeof obj === \"string\";\n            },\n            isNumber: function(obj) {\n                return typeof obj === \"number\";\n            },\n            isArray: $.isArray,\n            isFunction: $.isFunction,\n            isObject: $.isPlainObject,\n            isUndefined: function(obj) {\n                return typeof obj === \"undefined\";\n            },\n            isElement: function(obj) {\n                return !!(obj && obj.nodeType === 1);\n            },\n            isJQuery: function(obj) {\n                return obj instanceof $;\n            },\n            toStr: function toStr(s) {\n                return _.isUndefined(s) || s === null ? \"\" : s + \"\";\n            },\n            bind: $.proxy,\n            each: function(collection, cb) {\n                $.each(collection, reverseArgs);\n                function reverseArgs(index, value) {\n                    return cb(value, index);\n                }\n            },\n            map: $.map,\n            filter: $.grep,\n            every: function(obj, test) {\n                var result = true;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (!(result = test.call(null, val, key, obj))) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            some: function(obj, test) {\n                var result = false;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (result = test.call(null, val, key, obj)) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            mixin: $.extend,\n            identity: function(x) {\n                return x;\n            },\n            clone: function(obj) {\n                return $.extend(true, {}, obj);\n            },\n            getIdGenerator: function() {\n                var counter = 0;\n                return function() {\n                    return counter++;\n                };\n            },\n            templatify: function templatify(obj) {\n                return $.isFunction(obj) ? obj : template;\n                function template() {\n                    return String(obj);\n                }\n            },\n            defer: function(fn) {\n                setTimeout(fn, 0);\n            },\n            debounce: function(func, wait, immediate) {\n                var timeout, result;\n                return function() {\n                    var context = this, args = arguments, later, callNow;\n                    later = function() {\n                        timeout = null;\n                        if (!immediate) {\n                            result = func.apply(context, args);\n                        }\n                    };\n                    callNow = immediate && !timeout;\n                    clearTimeout(timeout);\n                    timeout = setTimeout(later, wait);\n                    if (callNow) {\n                        result = func.apply(context, args);\n                    }\n                    return result;\n                };\n            },\n            throttle: function(func, wait) {\n                var context, args, timeout, result, previous, later;\n                previous = 0;\n                later = function() {\n                    previous = new Date();\n                    timeout = null;\n                    result = func.apply(context, args);\n                };\n                return function() {\n                    var now = new Date(), remaining = wait - (now - previous);\n                    context = this;\n                    args = arguments;\n                    if (remaining <= 0) {\n                        clearTimeout(timeout);\n                        timeout = null;\n                        previous = now;\n                        result = func.apply(context, args);\n                    } else if (!timeout) {\n                        timeout = setTimeout(later, remaining);\n                    }\n                    return result;\n                };\n            },\n            stringify: function(val) {\n                return _.isString(val) ? val : JSON.stringify(val);\n            },\n            guid: function() {\n                function _p8(s) {\n                    var p = (Math.random().toString(16) + \"000000000\").substr(2, 8);\n                    return s ? \"-\" + p.substr(0, 4) + \"-\" + p.substr(4, 4) : p;\n                }\n                return \"tt-\" + _p8() + _p8(true) + _p8(true) + _p8();\n            },\n            noop: function() {}\n        };\n    }();\n    var VERSION = \"1.2.0\";\n    var tokenizers = function() {\n        \"use strict\";\n        return {\n            nonword: nonword,\n            whitespace: whitespace,\n            ngram: ngram,\n            obj: {\n                nonword: getObjTokenizer(nonword),\n                whitespace: getObjTokenizer(whitespace),\n                ngram: getObjTokenizer(ngram)\n            }\n        };\n        function whitespace(str) {\n            str = _.toStr(str);\n            return str ? str.split(/\\s+/) : [];\n        }\n        function nonword(str) {\n            str = _.toStr(str);\n            return str ? str.split(/\\W+/) : [];\n        }\n        function ngram(str) {\n            str = _.toStr(str);\n            var tokens = [], word = \"\";\n            _.each(str.split(\"\"), function(char) {\n                if (char.match(/\\s+/)) {\n                    word = \"\";\n                } else {\n                    tokens.push(word + char);\n                    word += char;\n                }\n            });\n            return tokens;\n        }\n        function getObjTokenizer(tokenizer) {\n            return function setKey(keys) {\n                keys = _.isArray(keys) ? keys : [].slice.call(arguments, 0);\n                return function tokenize(o) {\n                    var tokens = [];\n                    _.each(keys, function(k) {\n                        tokens = tokens.concat(tokenizer(_.toStr(o[k])));\n                    });\n                    return tokens;\n                };\n            };\n        }\n    }();\n    var LruCache = function() {\n        \"use strict\";\n        function LruCache(maxSize) {\n            this.maxSize = _.isNumber(maxSize) ? maxSize : 100;\n            this.reset();\n            if (this.maxSize <= 0) {\n                this.set = this.get = $.noop;\n            }\n        }\n        _.mixin(LruCache.prototype, {\n            set: function set(key, val) {\n                var tailItem = this.list.tail, node;\n                if (this.size >= this.maxSize) {\n                    this.list.remove(tailItem);\n                    delete this.hash[tailItem.key];\n                    this.size--;\n                }\n                if (node = this.hash[key]) {\n                    node.val = val;\n                    this.list.moveToFront(node);\n                } else {\n                    node = new Node(key, val);\n                    this.list.add(node);\n                    this.hash[key] = node;\n                    this.size++;\n                }\n            },\n            get: function get(key) {\n                var node = this.hash[key];\n                if (node) {\n                    this.list.moveToFront(node);\n                    return node.val;\n                }\n            },\n            reset: function reset() {\n                this.size = 0;\n                this.hash = {};\n                this.list = new List();\n            }\n        });\n        function List() {\n            this.head = this.tail = null;\n        }\n        _.mixin(List.prototype, {\n            add: function add(node) {\n                if (this.head) {\n                    node.next = this.head;\n                    this.head.prev = node;\n                }\n                this.head = node;\n                this.tail = this.tail || node;\n            },\n            remove: function remove(node) {\n                node.prev ? node.prev.next = node.next : this.head = node.next;\n                node.next ? node.next.prev = node.prev : this.tail = node.prev;\n            },\n            moveToFront: function(node) {\n                this.remove(node);\n                this.add(node);\n            }\n        });\n        function Node(key, val) {\n            this.key = key;\n            this.val = val;\n            this.prev = this.next = null;\n        }\n        return LruCache;\n    }();\n    var PersistentStorage = function() {\n        \"use strict\";\n        var LOCAL_STORAGE;\n        try {\n            LOCAL_STORAGE = window.localStorage;\n            LOCAL_STORAGE.setItem(\"~~~\", \"!\");\n            LOCAL_STORAGE.removeItem(\"~~~\");\n        } catch (err) {\n            LOCAL_STORAGE = null;\n        }\n        function PersistentStorage(namespace, override) {\n            this.prefix = [ \"__\", namespace, \"__\" ].join(\"\");\n            this.ttlKey = \"__ttl__\";\n            this.keyMatcher = new RegExp(\"^\" + _.escapeRegExChars(this.prefix));\n            this.ls = override || LOCAL_STORAGE;\n            !this.ls && this._noop();\n        }\n        _.mixin(PersistentStorage.prototype, {\n            _prefix: function(key) {\n                return this.prefix + key;\n            },\n            _ttlKey: function(key) {\n                return this._prefix(key) + this.ttlKey;\n            },\n            _noop: function() {\n                this.get = this.set = this.remove = this.clear = this.isExpired = _.noop;\n            },\n            _safeSet: function(key, val) {\n                try {\n                    this.ls.setItem(key, val);\n                } catch (err) {\n                    if (err.name === \"QuotaExceededError\") {\n                        this.clear();\n                        this._noop();\n                    }\n                }\n            },\n            get: function(key) {\n                if (this.isExpired(key)) {\n                    this.remove(key);\n                }\n                return decode(this.ls.getItem(this._prefix(key)));\n            },\n            set: function(key, val, ttl) {\n                if (_.isNumber(ttl)) {\n                    this._safeSet(this._ttlKey(key), encode(now() + ttl));\n                } else {\n                    this.ls.removeItem(this._ttlKey(key));\n                }\n                return this._safeSet(this._prefix(key), encode(val));\n            },\n            remove: function(key) {\n                this.ls.removeItem(this._ttlKey(key));\n                this.ls.removeItem(this._prefix(key));\n                return this;\n            },\n            clear: function() {\n                var i, keys = gatherMatchingKeys(this.keyMatcher);\n                for (i = keys.length; i--; ) {\n                    this.remove(keys[i]);\n                }\n                return this;\n            },\n            isExpired: function(key) {\n                var ttl = decode(this.ls.getItem(this._ttlKey(key)));\n                return _.isNumber(ttl) && now() > ttl ? true : false;\n            }\n        });\n        return PersistentStorage;\n        function now() {\n            return new Date().getTime();\n        }\n        function encode(val) {\n            return JSON.stringify(_.isUndefined(val) ? null : val);\n        }\n        function decode(val) {\n            return $.parseJSON(val);\n        }\n        function gatherMatchingKeys(keyMatcher) {\n            var i, key, keys = [], len = LOCAL_STORAGE.length;\n            for (i = 0; i < len; i++) {\n                if ((key = LOCAL_STORAGE.key(i)).match(keyMatcher)) {\n                    keys.push(key.replace(keyMatcher, \"\"));\n                }\n            }\n            return keys;\n        }\n    }();\n    var Transport = function() {\n        \"use strict\";\n        var pendingRequestsCount = 0, pendingRequests = {}, sharedCache = new LruCache(10);\n        function Transport(o) {\n            o = o || {};\n            this.maxPendingRequests = o.maxPendingRequests || 6;\n            this.cancelled = false;\n            this.lastReq = null;\n            this._send = o.transport;\n            this._get = o.limiter ? o.limiter(this._get) : this._get;\n            this._cache = o.cache === false ? new LruCache(0) : sharedCache;\n        }\n        Transport.setMaxPendingRequests = function setMaxPendingRequests(num) {\n            this.maxPendingRequests = num;\n        };\n        Transport.resetCache = function resetCache() {\n            sharedCache.reset();\n        };\n        _.mixin(Transport.prototype, {\n            _fingerprint: function fingerprint(o) {\n                o = o || {};\n                return o.url + o.type + $.param(o.data || {});\n            },\n            _get: function(o, cb) {\n                var that = this, fingerprint, jqXhr;\n                fingerprint = this._fingerprint(o);\n                if (this.cancelled || fingerprint !== this.lastReq) {\n                    return;\n                }\n                if (jqXhr = pendingRequests[fingerprint]) {\n                    jqXhr.done(done).fail(fail);\n                } else if (pendingRequestsCount < this.maxPendingRequests) {\n                    pendingRequestsCount++;\n                    pendingRequests[fingerprint] = this._send(o).done(done).fail(fail).always(always);\n                } else {\n                    this.onDeckRequestArgs = [].slice.call(arguments, 0);\n                }\n                function done(resp) {\n                    cb(null, resp);\n                    that._cache.set(fingerprint, resp);\n                }\n                function fail() {\n                    cb(true);\n                }\n                function always() {\n                    pendingRequestsCount--;\n                    delete pendingRequests[fingerprint];\n                    if (that.onDeckRequestArgs) {\n                        that._get.apply(that, that.onDeckRequestArgs);\n                        that.onDeckRequestArgs = null;\n                    }\n                }\n            },\n            get: function(o, cb) {\n                var resp, fingerprint;\n                cb = cb || $.noop;\n                o = _.isString(o) ? {\n                    url: o\n                } : o || {};\n                fingerprint = this._fingerprint(o);\n                this.cancelled = false;\n                this.lastReq = fingerprint;\n                if (resp = this._cache.get(fingerprint)) {\n                    cb(null, resp);\n                } else {\n                    this._get(o, cb);\n                }\n            },\n            cancel: function() {\n                this.cancelled = true;\n            }\n        });\n        return Transport;\n    }();\n    var SearchIndex = window.SearchIndex = function() {\n        \"use strict\";\n        var CHILDREN = \"c\", IDS = \"i\";\n        function SearchIndex(o) {\n            o = o || {};\n            if (!o.datumTokenizer || !o.queryTokenizer) {\n                $.error(\"datumTokenizer and queryTokenizer are both required\");\n            }\n            this.identify = o.identify || _.stringify;\n            this.datumTokenizer = o.datumTokenizer;\n            this.queryTokenizer = o.queryTokenizer;\n            this.matchAnyQueryToken = o.matchAnyQueryToken;\n            this.reset();\n        }\n        _.mixin(SearchIndex.prototype, {\n            bootstrap: function bootstrap(o) {\n                this.datums = o.datums;\n                this.trie = o.trie;\n            },\n            add: function(data) {\n                var that = this;\n                data = _.isArray(data) ? data : [ data ];\n                _.each(data, function(datum) {\n                    var id, tokens;\n                    that.datums[id = that.identify(datum)] = datum;\n                    tokens = normalizeTokens(that.datumTokenizer(datum));\n                    _.each(tokens, function(token) {\n                        var node, chars, ch;\n                        node = that.trie;\n                        chars = token.split(\"\");\n                        while (ch = chars.shift()) {\n                            node = node[CHILDREN][ch] || (node[CHILDREN][ch] = newNode());\n                            node[IDS].push(id);\n                        }\n                    });\n                });\n            },\n            get: function get(ids) {\n                var that = this;\n                return _.map(ids, function(id) {\n                    return that.datums[id];\n                });\n            },\n            search: function search(query) {\n                var that = this, tokens, matches;\n                tokens = normalizeTokens(this.queryTokenizer(query));\n                _.each(tokens, function(token) {\n                    var node, chars, ch, ids;\n                    if (matches && matches.length === 0 && !that.matchAnyQueryToken) {\n                        return false;\n                    }\n                    node = that.trie;\n                    chars = token.split(\"\");\n                    while (node && (ch = chars.shift())) {\n                        node = node[CHILDREN][ch];\n                    }\n                    if (node && chars.length === 0) {\n                        ids = node[IDS].slice(0);\n                        matches = matches ? getIntersection(matches, ids) : ids;\n                    } else {\n                        if (!that.matchAnyQueryToken) {\n                            matches = [];\n                            return false;\n                        }\n                    }\n                });\n                return matches ? _.map(unique(matches), function(id) {\n                    return that.datums[id];\n                }) : [];\n            },\n            all: function all() {\n                var values = [];\n                for (var key in this.datums) {\n                    values.push(this.datums[key]);\n                }\n                return values;\n            },\n            reset: function reset() {\n                this.datums = {};\n                this.trie = newNode();\n            },\n            serialize: function serialize() {\n                return {\n                    datums: this.datums,\n                    trie: this.trie\n                };\n            }\n        });\n        return SearchIndex;\n        function normalizeTokens(tokens) {\n            tokens = _.filter(tokens, function(token) {\n                return !!token;\n            });\n            tokens = _.map(tokens, function(token) {\n                return token.toLowerCase();\n            });\n            return tokens;\n        }\n        function newNode() {\n            var node = {};\n            node[IDS] = [];\n            node[CHILDREN] = {};\n            return node;\n        }\n        function unique(array) {\n            var seen = {}, uniques = [];\n            for (var i = 0, len = array.length; i < len; i++) {\n                if (!seen[array[i]]) {\n                    seen[array[i]] = true;\n                    uniques.push(array[i]);\n                }\n            }\n            return uniques;\n        }\n        function getIntersection(arrayA, arrayB) {\n            var ai = 0, bi = 0, intersection = [];\n            arrayA = arrayA.sort();\n            arrayB = arrayB.sort();\n            var lenArrayA = arrayA.length, lenArrayB = arrayB.length;\n            while (ai < lenArrayA && bi < lenArrayB) {\n                if (arrayA[ai] < arrayB[bi]) {\n                    ai++;\n                } else if (arrayA[ai] > arrayB[bi]) {\n                    bi++;\n                } else {\n                    intersection.push(arrayA[ai]);\n                    ai++;\n                    bi++;\n                }\n            }\n            return intersection;\n        }\n    }();\n    var Prefetch = function() {\n        \"use strict\";\n        var keys;\n        keys = {\n            data: \"data\",\n            protocol: \"protocol\",\n            thumbprint: \"thumbprint\"\n        };\n        function Prefetch(o) {\n            this.url = o.url;\n            this.ttl = o.ttl;\n            this.cache = o.cache;\n            this.prepare = o.prepare;\n            this.transform = o.transform;\n            this.transport = o.transport;\n            this.thumbprint = o.thumbprint;\n            this.storage = new PersistentStorage(o.cacheKey);\n        }\n        _.mixin(Prefetch.prototype, {\n            _settings: function settings() {\n                return {\n                    url: this.url,\n                    type: \"GET\",\n                    dataType: \"json\"\n                };\n            },\n            store: function store(data) {\n                if (!this.cache) {\n                    return;\n                }\n                this.storage.set(keys.data, data, this.ttl);\n                this.storage.set(keys.protocol, location.protocol, this.ttl);\n                this.storage.set(keys.thumbprint, this.thumbprint, this.ttl);\n            },\n            fromCache: function fromCache() {\n                var stored = {}, isExpired;\n                if (!this.cache) {\n                    return null;\n                }\n                stored.data = this.storage.get(keys.data);\n                stored.protocol = this.storage.get(keys.protocol);\n                stored.thumbprint = this.storage.get(keys.thumbprint);\n                isExpired = stored.thumbprint !== this.thumbprint || stored.protocol !== location.protocol;\n                return stored.data && !isExpired ? stored.data : null;\n            },\n            fromNetwork: function(cb) {\n                var that = this, settings;\n                if (!cb) {\n                    return;\n                }\n                settings = this.prepare(this._settings());\n                this.transport(settings).fail(onError).done(onResponse);\n                function onError() {\n                    cb(true);\n                }\n                function onResponse(resp) {\n                    cb(null, that.transform(resp));\n                }\n            },\n            clear: function clear() {\n                this.storage.clear();\n                return this;\n            }\n        });\n        return Prefetch;\n    }();\n    var Remote = function() {\n        \"use strict\";\n        function Remote(o) {\n            this.url = o.url;\n            this.prepare = o.prepare;\n            this.transform = o.transform;\n            this.indexResponse = o.indexResponse;\n            this.transport = new Transport({\n                cache: o.cache,\n                limiter: o.limiter,\n                transport: o.transport,\n                maxPendingRequests: o.maxPendingRequests\n            });\n        }\n        _.mixin(Remote.prototype, {\n            _settings: function settings() {\n                return {\n                    url: this.url,\n                    type: \"GET\",\n                    dataType: \"json\"\n                };\n            },\n            get: function get(query, cb) {\n                var that = this, settings;\n                if (!cb) {\n                    return;\n                }\n                query = query || \"\";\n                settings = this.prepare(query, this._settings());\n                return this.transport.get(settings, onResponse);\n                function onResponse(err, resp) {\n                    err ? cb([]) : cb(that.transform(resp));\n                }\n            },\n            cancelLastRequest: function cancelLastRequest() {\n                this.transport.cancel();\n            }\n        });\n        return Remote;\n    }();\n    var oParser = function() {\n        \"use strict\";\n        return function parse(o) {\n            var defaults, sorter;\n            defaults = {\n                initialize: true,\n                identify: _.stringify,\n                datumTokenizer: null,\n                queryTokenizer: null,\n                matchAnyQueryToken: false,\n                sufficient: 5,\n                indexRemote: false,\n                sorter: null,\n                local: [],\n                prefetch: null,\n                remote: null\n            };\n            o = _.mixin(defaults, o || {});\n            !o.datumTokenizer && $.error(\"datumTokenizer is required\");\n            !o.queryTokenizer && $.error(\"queryTokenizer is required\");\n            sorter = o.sorter;\n            o.sorter = sorter ? function(x) {\n                return x.sort(sorter);\n            } : _.identity;\n            o.local = _.isFunction(o.local) ? o.local() : o.local;\n            o.prefetch = parsePrefetch(o.prefetch);\n            o.remote = parseRemote(o.remote);\n            return o;\n        };\n        function parsePrefetch(o) {\n            var defaults;\n            if (!o) {\n                return null;\n            }\n            defaults = {\n                url: null,\n                ttl: 24 * 60 * 60 * 1e3,\n                cache: true,\n                cacheKey: null,\n                thumbprint: \"\",\n                prepare: _.identity,\n                transform: _.identity,\n                transport: null\n            };\n            o = _.isString(o) ? {\n                url: o\n            } : o;\n            o = _.mixin(defaults, o);\n            !o.url && $.error(\"prefetch requires url to be set\");\n            o.transform = o.filter || o.transform;\n            o.cacheKey = o.cacheKey || o.url;\n            o.thumbprint = VERSION + o.thumbprint;\n            o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\n            return o;\n        }\n        function parseRemote(o) {\n            var defaults;\n            if (!o) {\n                return;\n            }\n            defaults = {\n                url: null,\n                cache: true,\n                prepare: null,\n                replace: null,\n                wildcard: null,\n                limiter: null,\n                rateLimitBy: \"debounce\",\n                rateLimitWait: 300,\n                transform: _.identity,\n                transport: null\n            };\n            o = _.isString(o) ? {\n                url: o\n            } : o;\n            o = _.mixin(defaults, o);\n            !o.url && $.error(\"remote requires url to be set\");\n            o.transform = o.filter || o.transform;\n            o.prepare = toRemotePrepare(o);\n            o.limiter = toLimiter(o);\n            o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\n            delete o.replace;\n            delete o.wildcard;\n            delete o.rateLimitBy;\n            delete o.rateLimitWait;\n            return o;\n        }\n        function toRemotePrepare(o) {\n            var prepare, replace, wildcard;\n            prepare = o.prepare;\n            replace = o.replace;\n            wildcard = o.wildcard;\n            if (prepare) {\n                return prepare;\n            }\n            if (replace) {\n                prepare = prepareByReplace;\n            } else if (o.wildcard) {\n                prepare = prepareByWildcard;\n            } else {\n                prepare = identityPrepare;\n            }\n            return prepare;\n            function prepareByReplace(query, settings) {\n                settings.url = replace(settings.url, query);\n                return settings;\n            }\n            function prepareByWildcard(query, settings) {\n                settings.url = settings.url.replace(wildcard, encodeURIComponent(query));\n                return settings;\n            }\n            function identityPrepare(query, settings) {\n                return settings;\n            }\n        }\n        function toLimiter(o) {\n            var limiter, method, wait;\n            limiter = o.limiter;\n            method = o.rateLimitBy;\n            wait = o.rateLimitWait;\n            if (!limiter) {\n                limiter = /^throttle$/i.test(method) ? throttle(wait) : debounce(wait);\n            }\n            return limiter;\n            function debounce(wait) {\n                return function debounce(fn) {\n                    return _.debounce(fn, wait);\n                };\n            }\n            function throttle(wait) {\n                return function throttle(fn) {\n                    return _.throttle(fn, wait);\n                };\n            }\n        }\n        function callbackToDeferred(fn) {\n            return function wrapper(o) {\n                var deferred = $.Deferred();\n                fn(o, onSuccess, onError);\n                return deferred;\n                function onSuccess(resp) {\n                    _.defer(function() {\n                        deferred.resolve(resp);\n                    });\n                }\n                function onError(err) {\n                    _.defer(function() {\n                        deferred.reject(err);\n                    });\n                }\n            };\n        }\n    }();\n    var Bloodhound = function() {\n        \"use strict\";\n        var old;\n        old = window && window.Bloodhound;\n        function Bloodhound(o) {\n            o = oParser(o);\n            this.sorter = o.sorter;\n            this.identify = o.identify;\n            this.sufficient = o.sufficient;\n            this.indexRemote = o.indexRemote;\n            this.local = o.local;\n            this.remote = o.remote ? new Remote(o.remote) : null;\n            this.prefetch = o.prefetch ? new Prefetch(o.prefetch) : null;\n            this.index = new SearchIndex({\n                identify: this.identify,\n                datumTokenizer: o.datumTokenizer,\n                queryTokenizer: o.queryTokenizer\n            });\n            o.initialize !== false && this.initialize();\n        }\n        Bloodhound.noConflict = function noConflict() {\n            window && (window.Bloodhound = old);\n            return Bloodhound;\n        };\n        Bloodhound.tokenizers = tokenizers;\n        _.mixin(Bloodhound.prototype, {\n            __ttAdapter: function ttAdapter() {\n                var that = this;\n                return this.remote ? withAsync : withoutAsync;\n                function withAsync(query, sync, async) {\n                    return that.search(query, sync, async);\n                }\n                function withoutAsync(query, sync) {\n                    return that.search(query, sync);\n                }\n            },\n            _loadPrefetch: function loadPrefetch() {\n                var that = this, deferred, serialized;\n                deferred = $.Deferred();\n                if (!this.prefetch) {\n                    deferred.resolve();\n                } else if (serialized = this.prefetch.fromCache()) {\n                    this.index.bootstrap(serialized);\n                    deferred.resolve();\n                } else {\n                    this.prefetch.fromNetwork(done);\n                }\n                return deferred.promise();\n                function done(err, data) {\n                    if (err) {\n                        return deferred.reject();\n                    }\n                    that.add(data);\n                    that.prefetch.store(that.index.serialize());\n                    deferred.resolve();\n                }\n            },\n            _initialize: function initialize() {\n                var that = this, deferred;\n                this.clear();\n                (this.initPromise = this._loadPrefetch()).done(addLocalToIndex);\n                return this.initPromise;\n                function addLocalToIndex() {\n                    that.add(that.local);\n                }\n            },\n            initialize: function initialize(force) {\n                return !this.initPromise || force ? this._initialize() : this.initPromise;\n            },\n            add: function add(data) {\n                this.index.add(data);\n                return this;\n            },\n            get: function get(ids) {\n                ids = _.isArray(ids) ? ids : [].slice.call(arguments);\n                return this.index.get(ids);\n            },\n            search: function search(query, sync, async) {\n                var that = this, local;\n                sync = sync || _.noop;\n                async = async || _.noop;\n                local = this.sorter(this.index.search(query));\n                sync(this.remote ? local.slice() : local);\n                if (this.remote && local.length < this.sufficient) {\n                    this.remote.get(query, processRemote);\n                } else if (this.remote) {\n                    this.remote.cancelLastRequest();\n                }\n                return this;\n                function processRemote(remote) {\n                    var nonDuplicates = [];\n                    _.each(remote, function(r) {\n                        !_.some(local, function(l) {\n                            return that.identify(r) === that.identify(l);\n                        }) && nonDuplicates.push(r);\n                    });\n                    that.indexRemote && that.add(nonDuplicates);\n                    async(nonDuplicates);\n                }\n            },\n            all: function all() {\n                return this.index.all();\n            },\n            clear: function clear() {\n                this.index.reset();\n                return this;\n            },\n            clearPrefetchCache: function clearPrefetchCache() {\n                this.prefetch && this.prefetch.clear();\n                return this;\n            },\n            clearRemoteCache: function clearRemoteCache() {\n                Transport.resetCache();\n                return this;\n            },\n            ttAdapter: function ttAdapter() {\n                return this.__ttAdapter();\n            }\n        });\n        return Bloodhound;\n    }();\n    return Bloodhound;\n});\n\n(function(root, factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define([ \"jquery\" ], function(a0) {\n            return factory(a0);\n        });\n    } else if (typeof exports === \"object\") {\n        module.exports = factory(require(\"jquery\"));\n    } else {\n        factory(root[\"jQuery\"]);\n    }\n})(this, function($) {\n    var _ = function() {\n        \"use strict\";\n        return {\n            isMsie: function() {\n                return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\n            },\n            isBlankString: function(str) {\n                return !str || /^\\s*$/.test(str);\n            },\n            escapeRegExChars: function(str) {\n                return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n            },\n            isString: function(obj) {\n                return typeof obj === \"string\";\n            },\n            isNumber: function(obj) {\n                return typeof obj === \"number\";\n            },\n            isArray: $.isArray,\n            isFunction: $.isFunction,\n            isObject: $.isPlainObject,\n            isUndefined: function(obj) {\n                return typeof obj === \"undefined\";\n            },\n            isElement: function(obj) {\n                return !!(obj && obj.nodeType === 1);\n            },\n            isJQuery: function(obj) {\n                return obj instanceof $;\n            },\n            toStr: function toStr(s) {\n                return _.isUndefined(s) || s === null ? \"\" : s + \"\";\n            },\n            bind: $.proxy,\n            each: function(collection, cb) {\n                $.each(collection, reverseArgs);\n                function reverseArgs(index, value) {\n                    return cb(value, index);\n                }\n            },\n            map: $.map,\n            filter: $.grep,\n            every: function(obj, test) {\n                var result = true;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (!(result = test.call(null, val, key, obj))) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            some: function(obj, test) {\n                var result = false;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (result = test.call(null, val, key, obj)) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            mixin: $.extend,\n            identity: function(x) {\n                return x;\n            },\n            clone: function(obj) {\n                return $.extend(true, {}, obj);\n            },\n            getIdGenerator: function() {\n                var counter = 0;\n                return function() {\n                    return counter++;\n                };\n            },\n            templatify: function templatify(obj) {\n                return $.isFunction(obj) ? obj : template;\n                function template() {\n                    return String(obj);\n                }\n            },\n            defer: function(fn) {\n                setTimeout(fn, 0);\n            },\n            debounce: function(func, wait, immediate) {\n                var timeout, result;\n                return function() {\n                    var context = this, args = arguments, later, callNow;\n                    later = function() {\n                        timeout = null;\n                        if (!immediate) {\n                            result = func.apply(context, args);\n                        }\n                    };\n                    callNow = immediate && !timeout;\n                    clearTimeout(timeout);\n                    timeout = setTimeout(later, wait);\n                    if (callNow) {\n                        result = func.apply(context, args);\n                    }\n                    return result;\n                };\n            },\n            throttle: function(func, wait) {\n                var context, args, timeout, result, previous, later;\n                previous = 0;\n                later = function() {\n                    previous = new Date();\n                    timeout = null;\n                    result = func.apply(context, args);\n                };\n                return function() {\n                    var now = new Date(), remaining = wait - (now - previous);\n                    context = this;\n                    args = arguments;\n                    if (remaining <= 0) {\n                        clearTimeout(timeout);\n                        timeout = null;\n                        previous = now;\n                        result = func.apply(context, args);\n                    } else if (!timeout) {\n                        timeout = setTimeout(later, remaining);\n                    }\n                    return result;\n                };\n            },\n            stringify: function(val) {\n                return _.isString(val) ? val : JSON.stringify(val);\n            },\n            guid: function() {\n                function _p8(s) {\n                    var p = (Math.random().toString(16) + \"000000000\").substr(2, 8);\n                    return s ? \"-\" + p.substr(0, 4) + \"-\" + p.substr(4, 4) : p;\n                }\n                return \"tt-\" + _p8() + _p8(true) + _p8(true) + _p8();\n            },\n            noop: function() {}\n        };\n    }();\n    var WWW = function() {\n        \"use strict\";\n        var defaultClassNames = {\n            wrapper: \"twitter-typeahead\",\n            input: \"tt-input\",\n            hint: \"tt-hint\",\n            menu: \"tt-menu\",\n            dataset: \"tt-dataset\",\n            suggestion: \"tt-suggestion\",\n            selectable: \"tt-selectable\",\n            empty: \"tt-empty\",\n            open: \"tt-open\",\n            cursor: \"tt-cursor\",\n            highlight: \"tt-highlight\"\n        };\n        return build;\n        function build(o) {\n            var www, classes;\n            classes = _.mixin({}, defaultClassNames, o);\n            www = {\n                css: buildCss(),\n                classes: classes,\n                html: buildHtml(classes),\n                selectors: buildSelectors(classes)\n            };\n            return {\n                css: www.css,\n                html: www.html,\n                classes: www.classes,\n                selectors: www.selectors,\n                mixin: function(o) {\n                    _.mixin(o, www);\n                }\n            };\n        }\n        function buildHtml(c) {\n            return {\n                wrapper: '<span class=\"' + c.wrapper + '\"></span>',\n                menu: '<div role=\"listbox\" class=\"' + c.menu + '\"></div>'\n            };\n        }\n        function buildSelectors(classes) {\n            var selectors = {};\n            _.each(classes, function(v, k) {\n                selectors[k] = \".\" + v;\n            });\n            return selectors;\n        }\n        function buildCss() {\n            var css = {\n                wrapper: {\n                    position: \"relative\",\n                    display: \"inline-block\"\n                },\n                hint: {\n                    position: \"absolute\",\n                    top: \"0\",\n                    left: \"0\",\n                    borderColor: \"transparent\",\n                    boxShadow: \"none\",\n                    opacity: \"1\"\n                },\n                input: {\n                    position: \"relative\",\n                    verticalAlign: \"top\",\n                    backgroundColor: \"transparent\"\n                },\n                inputWithNoHint: {\n                    position: \"relative\",\n                    verticalAlign: \"top\"\n                },\n                menu: {\n                    position: \"absolute\",\n                    top: \"100%\",\n                    left: \"0\",\n                    zIndex: \"100\",\n                    display: \"none\"\n                },\n                ltr: {\n                    left: \"0\",\n                    right: \"auto\"\n                },\n                rtl: {\n                    left: \"auto\",\n                    right: \" 0\"\n                }\n            };\n            if (_.isMsie()) {\n                _.mixin(css.input, {\n                    backgroundImage: \"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)\"\n                });\n            }\n            return css;\n        }\n    }();\n    var EventBus = function() {\n        \"use strict\";\n        var namespace, deprecationMap;\n        namespace = \"typeahead:\";\n        deprecationMap = {\n            render: \"rendered\",\n            cursorchange: \"cursorchanged\",\n            select: \"selected\",\n            autocomplete: \"autocompleted\"\n        };\n        function EventBus(o) {\n            if (!o || !o.el) {\n                $.error(\"EventBus initialized without el\");\n            }\n            this.$el = $(o.el);\n        }\n        _.mixin(EventBus.prototype, {\n            _trigger: function(type, args) {\n                var $e = $.Event(namespace + type);\n                this.$el.trigger.call(this.$el, $e, args || []);\n                return $e;\n            },\n            before: function(type) {\n                var args, $e;\n                args = [].slice.call(arguments, 1);\n                $e = this._trigger(\"before\" + type, args);\n                return $e.isDefaultPrevented();\n            },\n            trigger: function(type) {\n                var deprecatedType;\n                this._trigger(type, [].slice.call(arguments, 1));\n                if (deprecatedType = deprecationMap[type]) {\n                    this._trigger(deprecatedType, [].slice.call(arguments, 1));\n                }\n            }\n        });\n        return EventBus;\n    }();\n    var EventEmitter = function() {\n        \"use strict\";\n        var splitter = /\\s+/, nextTick = getNextTick();\n        return {\n            onSync: onSync,\n            onAsync: onAsync,\n            off: off,\n            trigger: trigger\n        };\n        function on(method, types, cb, context) {\n            var type;\n            if (!cb) {\n                return this;\n            }\n            types = types.split(splitter);\n            cb = context ? bindContext(cb, context) : cb;\n            this._callbacks = this._callbacks || {};\n            while (type = types.shift()) {\n                this._callbacks[type] = this._callbacks[type] || {\n                    sync: [],\n                    async: []\n                };\n                this._callbacks[type][method].push(cb);\n            }\n            return this;\n        }\n        function onAsync(types, cb, context) {\n            return on.call(this, \"async\", types, cb, context);\n        }\n        function onSync(types, cb, context) {\n            return on.call(this, \"sync\", types, cb, context);\n        }\n        function off(types) {\n            var type;\n            if (!this._callbacks) {\n                return this;\n            }\n            types = types.split(splitter);\n            while (type = types.shift()) {\n                delete this._callbacks[type];\n            }\n            return this;\n        }\n        function trigger(types) {\n            var type, callbacks, args, syncFlush, asyncFlush;\n            if (!this._callbacks) {\n                return this;\n            }\n            types = types.split(splitter);\n            args = [].slice.call(arguments, 1);\n            while ((type = types.shift()) && (callbacks = this._callbacks[type])) {\n                syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args));\n                asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args));\n                syncFlush() && nextTick(asyncFlush);\n            }\n            return this;\n        }\n        function getFlush(callbacks, context, args) {\n            return flush;\n            function flush() {\n                var cancelled;\n                for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) {\n                    cancelled = callbacks[i].apply(context, args) === false;\n                }\n                return !cancelled;\n            }\n        }\n        function getNextTick() {\n            var nextTickFn;\n            if (window.setImmediate) {\n                nextTickFn = function nextTickSetImmediate(fn) {\n                    setImmediate(function() {\n                        fn();\n                    });\n                };\n            } else {\n                nextTickFn = function nextTickSetTimeout(fn) {\n                    setTimeout(function() {\n                        fn();\n                    }, 0);\n                };\n            }\n            return nextTickFn;\n        }\n        function bindContext(fn, context) {\n            return fn.bind ? fn.bind(context) : function() {\n                fn.apply(context, [].slice.call(arguments, 0));\n            };\n        }\n    }();\n    var highlight = function(doc) {\n        \"use strict\";\n        var defaults = {\n            node: null,\n            pattern: null,\n            tagName: \"strong\",\n            className: null,\n            wordsOnly: false,\n            caseSensitive: false,\n            diacriticInsensitive: false\n        };\n        var accented = {\n            A: \"[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Ａａ]\",\n            B: \"[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Ｂｂ]\",\n            C: \"[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Ｃｃ]\",\n            D: \"[DdĎďǄ-ǆǱ-ǳᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Ｄｄ]\",\n            E: \"[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ｅｅ]\",\n            F: \"[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ﬀ-ﬄＦｆ]\",\n            G: \"[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Ｇｇ]\",\n            H: \"[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Ｈｈ]\",\n            I: \"[IiÌ-Ïì-ïĨ-İĲĳǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕ﬁﬃＩｉ]\",\n            J: \"[JjĲ-ĵǇ-ǌǰʲᴶⅉ⒥ⒿⓙⱼＪｊ]\",\n            K: \"[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Ｋｋ]\",\n            L: \"[LlĹ-ŀǇ-ǉˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿ﬂﬄＬｌ]\",\n            M: \"[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Ｍｍ]\",\n            N: \"[NnÑñŃ-ŉǊ-ǌǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Ｎｎ]\",\n            O: \"[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Ｏｏ]\",\n            P: \"[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Ｐｐ]\",\n            Q: \"[Qqℚ⒬Ⓠⓠ㏃Ｑｑ]\",\n            R: \"[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Ｒｒ]\",\n            S: \"[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜ﬆＳｓ]\",\n            T: \"[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ﬅﬆＴｔ]\",\n            U: \"[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Ｕｕ]\",\n            V: \"[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Ｖｖ]\",\n            W: \"[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ｗｗ]\",\n            X: \"[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Ｘｘ]\",\n            Y: \"[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Ｙｙ]\",\n            Z: \"[ZzŹ-žǱ-ǳᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Ｚｚ]\"\n        };\n        return function hightlight(o) {\n            var regex;\n            o = _.mixin({}, defaults, o);\n            if (!o.node || !o.pattern) {\n                return;\n            }\n            o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ];\n            regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive);\n            traverse(o.node, hightlightTextNode);\n            function hightlightTextNode(textNode) {\n                var match, patternNode, wrapperNode;\n                if (match = regex.exec(textNode.data)) {\n                    wrapperNode = doc.createElement(o.tagName);\n                    o.className && (wrapperNode.className = o.className);\n                    patternNode = textNode.splitText(match.index);\n                    patternNode.splitText(match[0].length);\n                    wrapperNode.appendChild(patternNode.cloneNode(true));\n                    textNode.parentNode.replaceChild(wrapperNode, patternNode);\n                }\n                return !!match;\n            }\n            function traverse(el, hightlightTextNode) {\n                var childNode, TEXT_NODE_TYPE = 3;\n                for (var i = 0; i < el.childNodes.length; i++) {\n                    childNode = el.childNodes[i];\n                    if (childNode.nodeType === TEXT_NODE_TYPE) {\n                        i += hightlightTextNode(childNode) ? 1 : 0;\n                    } else {\n                        traverse(childNode, hightlightTextNode);\n                    }\n                }\n            }\n        };\n        function accent_replacer(chr) {\n            return accented[chr.toUpperCase()] || chr;\n        }\n        function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) {\n            var escapedPatterns = [], regexStr;\n            for (var i = 0, len = patterns.length; i < len; i++) {\n                var escapedWord = _.escapeRegExChars(patterns[i]);\n                if (diacriticInsensitive) {\n                    escapedWord = escapedWord.replace(/\\S/g, accent_replacer);\n                }\n                escapedPatterns.push(escapedWord);\n            }\n            regexStr = wordsOnly ? \"\\\\b(\" + escapedPatterns.join(\"|\") + \")\\\\b\" : \"(\" + escapedPatterns.join(\"|\") + \")\";\n            return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, \"i\");\n        }\n    }(window.document);\n    var Input = function() {\n        \"use strict\";\n        var specialKeyCodeMap;\n        specialKeyCodeMap = {\n            9: \"tab\",\n            27: \"esc\",\n            37: \"left\",\n            39: \"right\",\n            13: \"enter\",\n            38: \"up\",\n            40: \"down\"\n        };\n        function Input(o, www) {\n            o = o || {};\n            if (!o.input) {\n                $.error(\"input is missing\");\n            }\n            www.mixin(this);\n            this.$hint = $(o.hint);\n            this.$input = $(o.input);\n            this.$input.attr({\n                \"aria-activedescendant\": \"\",\n                \"aria-owns\": this.$input.attr(\"id\") + \"_listbox\",\n                role: \"combobox\",\n                \"aria-readonly\": \"true\",\n                \"aria-autocomplete\": \"list\"\n            });\n            $(www.menu).attr(\"id\", this.$input.attr(\"id\") + \"_listbox\");\n            this.query = this.$input.val();\n            this.queryWhenFocused = this.hasFocus() ? this.query : null;\n            this.$overflowHelper = buildOverflowHelper(this.$input);\n            this._checkLanguageDirection();\n            if (this.$hint.length === 0) {\n                this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop;\n            }\n            this.onSync(\"cursorchange\", this._updateDescendent);\n        }\n        Input.normalizeQuery = function(str) {\n            return _.toStr(str).replace(/^\\s*/g, \"\").replace(/\\s{2,}/g, \" \");\n        };\n        _.mixin(Input.prototype, EventEmitter, {\n            _onBlur: function onBlur() {\n                this.resetInputValue();\n                this.trigger(\"blurred\");\n            },\n            _onFocus: function onFocus() {\n                this.queryWhenFocused = this.query;\n                this.trigger(\"focused\");\n            },\n            _onKeydown: function onKeydown($e) {\n                var keyName = specialKeyCodeMap[$e.which || $e.keyCode];\n                this._managePreventDefault(keyName, $e);\n                if (keyName && this._shouldTrigger(keyName, $e)) {\n                    this.trigger(keyName + \"Keyed\", $e);\n                }\n            },\n            _onInput: function onInput() {\n                this._setQuery(this.getInputValue());\n                this.clearHintIfInvalid();\n                this._checkLanguageDirection();\n            },\n            _managePreventDefault: function managePreventDefault(keyName, $e) {\n                var preventDefault;\n                switch (keyName) {\n                  case \"up\":\n                  case \"down\":\n                    preventDefault = !withModifier($e);\n                    break;\n\n                  default:\n                    preventDefault = false;\n                }\n                preventDefault && $e.preventDefault();\n            },\n            _shouldTrigger: function shouldTrigger(keyName, $e) {\n                var trigger;\n                switch (keyName) {\n                  case \"tab\":\n                    trigger = !withModifier($e);\n                    break;\n\n                  default:\n                    trigger = true;\n                }\n                return trigger;\n            },\n            _checkLanguageDirection: function checkLanguageDirection() {\n                var dir = (this.$input.css(\"direction\") || \"ltr\").toLowerCase();\n                if (this.dir !== dir) {\n                    this.dir = dir;\n                    this.$hint.attr(\"dir\", dir);\n                    this.trigger(\"langDirChanged\", dir);\n                }\n            },\n            _setQuery: function setQuery(val, silent) {\n                var areEquivalent, hasDifferentWhitespace;\n                areEquivalent = areQueriesEquivalent(val, this.query);\n                hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false;\n                this.query = val;\n                if (!silent && !areEquivalent) {\n                    this.trigger(\"queryChanged\", this.query);\n                } else if (!silent && hasDifferentWhitespace) {\n                    this.trigger(\"whitespaceChanged\", this.query);\n                }\n            },\n            _updateDescendent: function updateDescendent(event, id) {\n                this.$input.attr(\"aria-activedescendant\", id);\n            },\n            bind: function() {\n                var that = this, onBlur, onFocus, onKeydown, onInput;\n                onBlur = _.bind(this._onBlur, this);\n                onFocus = _.bind(this._onFocus, this);\n                onKeydown = _.bind(this._onKeydown, this);\n                onInput = _.bind(this._onInput, this);\n                this.$input.on(\"blur.tt\", onBlur).on(\"focus.tt\", onFocus).on(\"keydown.tt\", onKeydown);\n                if (!_.isMsie() || _.isMsie() > 9) {\n                    this.$input.on(\"input.tt\", onInput);\n                } else {\n                    this.$input.on(\"keydown.tt keypress.tt cut.tt paste.tt\", function($e) {\n                        if (specialKeyCodeMap[$e.which || $e.keyCode]) {\n                            return;\n                        }\n                        _.defer(_.bind(that._onInput, that, $e));\n                    });\n                }\n                return this;\n            },\n            focus: function focus() {\n                this.$input.focus();\n            },\n            blur: function blur() {\n                this.$input.blur();\n            },\n            getLangDir: function getLangDir() {\n                return this.dir;\n            },\n            getQuery: function getQuery() {\n                return this.query || \"\";\n            },\n            setQuery: function setQuery(val, silent) {\n                this.setInputValue(val);\n                this._setQuery(val, silent);\n            },\n            hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() {\n                return this.query !== this.queryWhenFocused;\n            },\n            getInputValue: function getInputValue() {\n                return this.$input.val();\n            },\n            setInputValue: function setInputValue(value) {\n                this.$input.val(value);\n                this.clearHintIfInvalid();\n                this._checkLanguageDirection();\n            },\n            resetInputValue: function resetInputValue() {\n                this.setInputValue(this.query);\n            },\n            getHint: function getHint() {\n                return this.$hint.val();\n            },\n            setHint: function setHint(value) {\n                this.$hint.val(value);\n            },\n            clearHint: function clearHint() {\n                this.setHint(\"\");\n            },\n            clearHintIfInvalid: function clearHintIfInvalid() {\n                var val, hint, valIsPrefixOfHint, isValid;\n                val = this.getInputValue();\n                hint = this.getHint();\n                valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0;\n                isValid = val !== \"\" && valIsPrefixOfHint && !this.hasOverflow();\n                !isValid && this.clearHint();\n            },\n            hasFocus: function hasFocus() {\n                return this.$input.is(\":focus\");\n            },\n            hasOverflow: function hasOverflow() {\n                var constraint = this.$input.width() - 2;\n                this.$overflowHelper.text(this.getInputValue());\n                return this.$overflowHelper.width() >= constraint;\n            },\n            isCursorAtEnd: function() {\n                var valueLength, selectionStart, range;\n                valueLength = this.$input.val().length;\n                selectionStart = this.$input[0].selectionStart;\n                if (_.isNumber(selectionStart)) {\n                    return selectionStart === valueLength;\n                } else if (document.selection) {\n                    range = document.selection.createRange();\n                    range.moveStart(\"character\", -valueLength);\n                    return valueLength === range.text.length;\n                }\n                return true;\n            },\n            destroy: function destroy() {\n                this.$hint.off(\".tt\");\n                this.$input.off(\".tt\");\n                this.$overflowHelper.remove();\n                this.$hint = this.$input = this.$overflowHelper = $(\"<div>\");\n            }\n        });\n        return Input;\n        function buildOverflowHelper($input) {\n            return $('<pre aria-hidden=\"true\"></pre>').css({\n                position: \"absolute\",\n                visibility: \"hidden\",\n                whiteSpace: \"pre\",\n                fontFamily: $input.css(\"font-family\"),\n                fontSize: $input.css(\"font-size\"),\n                fontStyle: $input.css(\"font-style\"),\n                fontVariant: $input.css(\"font-variant\"),\n                fontWeight: $input.css(\"font-weight\"),\n                wordSpacing: $input.css(\"word-spacing\"),\n                letterSpacing: $input.css(\"letter-spacing\"),\n                textIndent: $input.css(\"text-indent\"),\n                textRendering: $input.css(\"text-rendering\"),\n                textTransform: $input.css(\"text-transform\")\n            }).insertAfter($input);\n        }\n        function areQueriesEquivalent(a, b) {\n            return Input.normalizeQuery(a) === Input.normalizeQuery(b);\n        }\n        function withModifier($e) {\n            return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey;\n        }\n    }();\n    var Dataset = function() {\n        \"use strict\";\n        var keys, nameGenerator;\n        keys = {\n            dataset: \"tt-selectable-dataset\",\n            val: \"tt-selectable-display\",\n            obj: \"tt-selectable-object\"\n        };\n        nameGenerator = _.getIdGenerator();\n        function Dataset(o, www) {\n            o = o || {};\n            o.templates = o.templates || {};\n            o.templates.notFound = o.templates.notFound || o.templates.empty;\n            if (!o.source) {\n                $.error(\"missing source\");\n            }\n            if (!o.node) {\n                $.error(\"missing node\");\n            }\n            if (o.name && !isValidName(o.name)) {\n                $.error(\"invalid dataset name: \" + o.name);\n            }\n            www.mixin(this);\n            this.highlight = !!o.highlight;\n            this.name = _.toStr(o.name || nameGenerator());\n            this.limit = o.limit || 5;\n            this.displayFn = getDisplayFn(o.display || o.displayKey);\n            this.templates = getTemplates(o.templates, this.displayFn);\n            this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source;\n            this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async;\n            this._resetLastSuggestion();\n            this.$el = $(o.node).attr(\"role\", \"presentation\").addClass(this.classes.dataset).addClass(this.classes.dataset + \"-\" + this.name);\n        }\n        Dataset.extractData = function extractData(el) {\n            var $el = $(el);\n            if ($el.data(keys.obj)) {\n                return {\n                    dataset: $el.data(keys.dataset) || \"\",\n                    val: $el.data(keys.val) || \"\",\n                    obj: $el.data(keys.obj) || null\n                };\n            }\n            return null;\n        };\n        _.mixin(Dataset.prototype, EventEmitter, {\n            _overwrite: function overwrite(query, suggestions) {\n                suggestions = suggestions || [];\n                if (suggestions.length) {\n                    this._renderSuggestions(query, suggestions);\n                } else if (this.async && this.templates.pending) {\n                    this._renderPending(query);\n                } else if (!this.async && this.templates.notFound) {\n                    this._renderNotFound(query);\n                } else {\n                    this._empty();\n                }\n                this.trigger(\"rendered\", suggestions, false, this.name);\n            },\n            _append: function append(query, suggestions) {\n                suggestions = suggestions || [];\n                if (suggestions.length && this.$lastSuggestion.length) {\n                    this._appendSuggestions(query, suggestions);\n                } else if (suggestions.length) {\n                    this._renderSuggestions(query, suggestions);\n                } else if (!this.$lastSuggestion.length && this.templates.notFound) {\n                    this._renderNotFound(query);\n                }\n                this.trigger(\"rendered\", suggestions, true, this.name);\n            },\n            _renderSuggestions: function renderSuggestions(query, suggestions) {\n                var $fragment;\n                $fragment = this._getSuggestionsFragment(query, suggestions);\n                this.$lastSuggestion = $fragment.children().last();\n                this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions));\n            },\n            _appendSuggestions: function appendSuggestions(query, suggestions) {\n                var $fragment, $lastSuggestion;\n                $fragment = this._getSuggestionsFragment(query, suggestions);\n                $lastSuggestion = $fragment.children().last();\n                this.$lastSuggestion.after($fragment);\n                this.$lastSuggestion = $lastSuggestion;\n            },\n            _renderPending: function renderPending(query) {\n                var template = this.templates.pending;\n                this._resetLastSuggestion();\n                template && this.$el.html(template({\n                    query: query,\n                    dataset: this.name\n                }));\n            },\n            _renderNotFound: function renderNotFound(query) {\n                var template = this.templates.notFound;\n                this._resetLastSuggestion();\n                template && this.$el.html(template({\n                    query: query,\n                    dataset: this.name\n                }));\n            },\n            _empty: function empty() {\n                this.$el.empty();\n                this._resetLastSuggestion();\n            },\n            _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) {\n                var that = this, fragment;\n                fragment = document.createDocumentFragment();\n                _.each(suggestions, function getSuggestionNode(suggestion) {\n                    var $el, context;\n                    context = that._injectQuery(query, suggestion);\n                    $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + \" \" + that.classes.selectable);\n                    fragment.appendChild($el[0]);\n                });\n                this.highlight && highlight({\n                    className: this.classes.highlight,\n                    node: fragment,\n                    pattern: query\n                });\n                return $(fragment);\n            },\n            _getFooter: function getFooter(query, suggestions) {\n                return this.templates.footer ? this.templates.footer({\n                    query: query,\n                    suggestions: suggestions,\n                    dataset: this.name\n                }) : null;\n            },\n            _getHeader: function getHeader(query, suggestions) {\n                return this.templates.header ? this.templates.header({\n                    query: query,\n                    suggestions: suggestions,\n                    dataset: this.name\n                }) : null;\n            },\n            _resetLastSuggestion: function resetLastSuggestion() {\n                this.$lastSuggestion = $();\n            },\n            _injectQuery: function injectQuery(query, obj) {\n                return _.isObject(obj) ? _.mixin({\n                    _query: query\n                }, obj) : obj;\n            },\n            update: function update(query) {\n                var that = this, canceled = false, syncCalled = false, rendered = 0;\n                this.cancel();\n                this.cancel = function cancel() {\n                    canceled = true;\n                    that.cancel = $.noop;\n                    that.async && that.trigger(\"asyncCanceled\", query, that.name);\n                };\n                this.source(query, sync, async);\n                !syncCalled && sync([]);\n                function sync(suggestions) {\n                    if (syncCalled) {\n                        return;\n                    }\n                    syncCalled = true;\n                    suggestions = (suggestions || []).slice(0, that.limit);\n                    rendered = suggestions.length;\n                    that._overwrite(query, suggestions);\n                    if (rendered < that.limit && that.async) {\n                        that.trigger(\"asyncRequested\", query, that.name);\n                    }\n                }\n                function async(suggestions) {\n                    suggestions = suggestions || [];\n                    if (!canceled && rendered < that.limit) {\n                        that.cancel = $.noop;\n                        var idx = Math.abs(rendered - that.limit);\n                        rendered += idx;\n                        that._append(query, suggestions.slice(0, idx));\n                        that.async && that.trigger(\"asyncReceived\", query, that.name);\n                    }\n                }\n            },\n            cancel: $.noop,\n            clear: function clear() {\n                this._empty();\n                this.cancel();\n                this.trigger(\"cleared\");\n            },\n            isEmpty: function isEmpty() {\n                return this.$el.is(\":empty\");\n            },\n            destroy: function destroy() {\n                this.$el = $(\"<div>\");\n            }\n        });\n        return Dataset;\n        function getDisplayFn(display) {\n            display = display || _.stringify;\n            return _.isFunction(display) ? display : displayFn;\n            function displayFn(obj) {\n                return obj[display];\n            }\n        }\n        function getTemplates(templates, displayFn) {\n            return {\n                notFound: templates.notFound && _.templatify(templates.notFound),\n                pending: templates.pending && _.templatify(templates.pending),\n                header: templates.header && _.templatify(templates.header),\n                footer: templates.footer && _.templatify(templates.footer),\n                suggestion: templates.suggestion || suggestionTemplate\n            };\n            function suggestionTemplate(context) {\n                return $('<div role=\"option\">').attr(\"id\", _.guid()).text(displayFn(context));\n            }\n        }\n        function isValidName(str) {\n            return /^[_a-zA-Z0-9-]+$/.test(str);\n        }\n    }();\n    var Menu = function() {\n        \"use strict\";\n        function Menu(o, www) {\n            var that = this;\n            o = o || {};\n            if (!o.node) {\n                $.error(\"node is required\");\n            }\n            www.mixin(this);\n            this.$node = $(o.node);\n            this.query = null;\n            this.datasets = _.map(o.datasets, initializeDataset);\n            function initializeDataset(oDataset) {\n                var node = that.$node.find(oDataset.node).first();\n                oDataset.node = node.length ? node : $(\"<div>\").appendTo(that.$node);\n                return new Dataset(oDataset, www);\n            }\n        }\n        _.mixin(Menu.prototype, EventEmitter, {\n            _onSelectableClick: function onSelectableClick($e) {\n                this.trigger(\"selectableClicked\", $($e.currentTarget));\n            },\n            _onRendered: function onRendered(type, dataset, suggestions, async) {\n                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n                this.trigger(\"datasetRendered\", dataset, suggestions, async);\n            },\n            _onCleared: function onCleared() {\n                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n                this.trigger(\"datasetCleared\");\n            },\n            _propagate: function propagate() {\n                this.trigger.apply(this, arguments);\n            },\n            _allDatasetsEmpty: function allDatasetsEmpty() {\n                return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) {\n                    var isEmpty = dataset.isEmpty();\n                    this.$node.attr(\"aria-expanded\", !isEmpty);\n                    return isEmpty;\n                }, this));\n            },\n            _getSelectables: function getSelectables() {\n                return this.$node.find(this.selectors.selectable);\n            },\n            _removeCursor: function _removeCursor() {\n                var $selectable = this.getActiveSelectable();\n                $selectable && $selectable.removeClass(this.classes.cursor);\n            },\n            _ensureVisible: function ensureVisible($el) {\n                var elTop, elBottom, nodeScrollTop, nodeHeight;\n                elTop = $el.position().top;\n                elBottom = elTop + $el.outerHeight(true);\n                nodeScrollTop = this.$node.scrollTop();\n                nodeHeight = this.$node.height() + parseInt(this.$node.css(\"paddingTop\"), 10) + parseInt(this.$node.css(\"paddingBottom\"), 10);\n                if (elTop < 0) {\n                    this.$node.scrollTop(nodeScrollTop + elTop);\n                } else if (nodeHeight < elBottom) {\n                    this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight));\n                }\n            },\n            bind: function() {\n                var that = this, onSelectableClick;\n                onSelectableClick = _.bind(this._onSelectableClick, this);\n                this.$node.on(\"click.tt\", this.selectors.selectable, onSelectableClick);\n                this.$node.on(\"mouseover\", this.selectors.selectable, function() {\n                    that.setCursor($(this));\n                });\n                this.$node.on(\"mouseleave\", function() {\n                    that._removeCursor();\n                });\n                _.each(this.datasets, function(dataset) {\n                    dataset.onSync(\"asyncRequested\", that._propagate, that).onSync(\"asyncCanceled\", that._propagate, that).onSync(\"asyncReceived\", that._propagate, that).onSync(\"rendered\", that._onRendered, that).onSync(\"cleared\", that._onCleared, that);\n                });\n                return this;\n            },\n            isOpen: function isOpen() {\n                return this.$node.hasClass(this.classes.open);\n            },\n            open: function open() {\n                this.$node.scrollTop(0);\n                this.$node.addClass(this.classes.open);\n            },\n            close: function close() {\n                this.$node.attr(\"aria-expanded\", false);\n                this.$node.removeClass(this.classes.open);\n                this._removeCursor();\n            },\n            setLanguageDirection: function setLanguageDirection(dir) {\n                this.$node.attr(\"dir\", dir);\n            },\n            selectableRelativeToCursor: function selectableRelativeToCursor(delta) {\n                var $selectables, $oldCursor, oldIndex, newIndex;\n                $oldCursor = this.getActiveSelectable();\n                $selectables = this._getSelectables();\n                oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1;\n                newIndex = oldIndex + delta;\n                newIndex = (newIndex + 1) % ($selectables.length + 1) - 1;\n                newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex;\n                return newIndex === -1 ? null : $selectables.eq(newIndex);\n            },\n            setCursor: function setCursor($selectable) {\n                this._removeCursor();\n                if ($selectable = $selectable && $selectable.first()) {\n                    $selectable.addClass(this.classes.cursor);\n                    this._ensureVisible($selectable);\n                }\n            },\n            getSelectableData: function getSelectableData($el) {\n                return $el && $el.length ? Dataset.extractData($el) : null;\n            },\n            getActiveSelectable: function getActiveSelectable() {\n                var $selectable = this._getSelectables().filter(this.selectors.cursor).first();\n                return $selectable.length ? $selectable : null;\n            },\n            getTopSelectable: function getTopSelectable() {\n                var $selectable = this._getSelectables().first();\n                return $selectable.length ? $selectable : null;\n            },\n            update: function update(query) {\n                var isValidUpdate = query !== this.query;\n                if (isValidUpdate) {\n                    this.query = query;\n                    _.each(this.datasets, updateDataset);\n                }\n                return isValidUpdate;\n                function updateDataset(dataset) {\n                    dataset.update(query);\n                }\n            },\n            empty: function empty() {\n                _.each(this.datasets, clearDataset);\n                this.query = null;\n                this.$node.addClass(this.classes.empty);\n                function clearDataset(dataset) {\n                    dataset.clear();\n                }\n            },\n            destroy: function destroy() {\n                this.$node.off(\".tt\");\n                this.$node = $(\"<div>\");\n                _.each(this.datasets, destroyDataset);\n                function destroyDataset(dataset) {\n                    dataset.destroy();\n                }\n            }\n        });\n        return Menu;\n    }();\n    var Status = function() {\n        \"use strict\";\n        function Status(options) {\n            this.$el = $(\"<span></span>\", {\n                role: \"status\",\n                \"aria-live\": \"polite\"\n            }).css({\n                position: \"absolute\",\n                padding: \"0\",\n                border: \"0\",\n                height: \"1px\",\n                width: \"1px\",\n                \"margin-bottom\": \"-1px\",\n                \"margin-right\": \"-1px\",\n                overflow: \"hidden\",\n                clip: \"rect(0 0 0 0)\",\n                \"white-space\": \"nowrap\"\n            });\n            options.$input.after(this.$el);\n            _.each(options.menu.datasets, _.bind(function(dataset) {\n                if (dataset.onSync) {\n                    dataset.onSync(\"rendered\", _.bind(this.update, this));\n                    dataset.onSync(\"cleared\", _.bind(this.cleared, this));\n                }\n            }, this));\n        }\n        _.mixin(Status.prototype, {\n            update: function update(event, suggestions) {\n                var length = suggestions.length;\n                var words;\n                if (length === 1) {\n                    words = {\n                        result: \"result\",\n                        is: \"is\"\n                    };\n                } else {\n                    words = {\n                        result: \"results\",\n                        is: \"are\"\n                    };\n                }\n                this.$el.text(length + \" \" + words.result + \" \" + words.is + \" available, use up and down arrow keys to navigate.\");\n            },\n            cleared: function() {\n                this.$el.text(\"\");\n            }\n        });\n        return Status;\n    }();\n    var DefaultMenu = function() {\n        \"use strict\";\n        var s = Menu.prototype;\n        function DefaultMenu() {\n            Menu.apply(this, [].slice.call(arguments, 0));\n        }\n        _.mixin(DefaultMenu.prototype, Menu.prototype, {\n            open: function open() {\n                !this._allDatasetsEmpty() && this._show();\n                return s.open.apply(this, [].slice.call(arguments, 0));\n            },\n            close: function close() {\n                this._hide();\n                return s.close.apply(this, [].slice.call(arguments, 0));\n            },\n            _onRendered: function onRendered() {\n                if (this._allDatasetsEmpty()) {\n                    this._hide();\n                } else {\n                    this.isOpen() && this._show();\n                }\n                return s._onRendered.apply(this, [].slice.call(arguments, 0));\n            },\n            _onCleared: function onCleared() {\n                if (this._allDatasetsEmpty()) {\n                    this._hide();\n                } else {\n                    this.isOpen() && this._show();\n                }\n                return s._onCleared.apply(this, [].slice.call(arguments, 0));\n            },\n            setLanguageDirection: function setLanguageDirection(dir) {\n                this.$node.css(dir === \"ltr\" ? this.css.ltr : this.css.rtl);\n                return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0));\n            },\n            _hide: function hide() {\n                this.$node.hide();\n            },\n            _show: function show() {\n                this.$node.css(\"display\", \"block\");\n            }\n        });\n        return DefaultMenu;\n    }();\n    var Typeahead = function() {\n        \"use strict\";\n        function Typeahead(o, www) {\n            var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged;\n            o = o || {};\n            if (!o.input) {\n                $.error(\"missing input\");\n            }\n            if (!o.menu) {\n                $.error(\"missing menu\");\n            }\n            if (!o.eventBus) {\n                $.error(\"missing event bus\");\n            }\n            www.mixin(this);\n            this.eventBus = o.eventBus;\n            this.minLength = _.isNumber(o.minLength) ? o.minLength : 1;\n            this.input = o.input;\n            this.menu = o.menu;\n            this.enabled = true;\n            this.autoselect = !!o.autoselect;\n            this.active = false;\n            this.input.hasFocus() && this.activate();\n            this.dir = this.input.getLangDir();\n            this._hacks();\n            this.menu.bind().onSync(\"selectableClicked\", this._onSelectableClicked, this).onSync(\"asyncRequested\", this._onAsyncRequested, this).onSync(\"asyncCanceled\", this._onAsyncCanceled, this).onSync(\"asyncReceived\", this._onAsyncReceived, this).onSync(\"datasetRendered\", this._onDatasetRendered, this).onSync(\"datasetCleared\", this._onDatasetCleared, this);\n            onFocused = c(this, \"activate\", \"open\", \"_onFocused\");\n            onBlurred = c(this, \"deactivate\", \"_onBlurred\");\n            onEnterKeyed = c(this, \"isActive\", \"isOpen\", \"_onEnterKeyed\");\n            onTabKeyed = c(this, \"isActive\", \"isOpen\", \"_onTabKeyed\");\n            onEscKeyed = c(this, \"isActive\", \"_onEscKeyed\");\n            onUpKeyed = c(this, \"isActive\", \"open\", \"_onUpKeyed\");\n            onDownKeyed = c(this, \"isActive\", \"open\", \"_onDownKeyed\");\n            onLeftKeyed = c(this, \"isActive\", \"isOpen\", \"_onLeftKeyed\");\n            onRightKeyed = c(this, \"isActive\", \"isOpen\", \"_onRightKeyed\");\n            onQueryChanged = c(this, \"_openIfActive\", \"_onQueryChanged\");\n            onWhitespaceChanged = c(this, \"_openIfActive\", \"_onWhitespaceChanged\");\n            this.input.bind().onSync(\"focused\", onFocused, this).onSync(\"blurred\", onBlurred, this).onSync(\"enterKeyed\", onEnterKeyed, this).onSync(\"tabKeyed\", onTabKeyed, this).onSync(\"escKeyed\", onEscKeyed, this).onSync(\"upKeyed\", onUpKeyed, this).onSync(\"downKeyed\", onDownKeyed, this).onSync(\"leftKeyed\", onLeftKeyed, this).onSync(\"rightKeyed\", onRightKeyed, this).onSync(\"queryChanged\", onQueryChanged, this).onSync(\"whitespaceChanged\", onWhitespaceChanged, this).onSync(\"langDirChanged\", this._onLangDirChanged, this);\n        }\n        _.mixin(Typeahead.prototype, {\n            _hacks: function hacks() {\n                var $input, $menu;\n                $input = this.input.$input || $(\"<div>\");\n                $menu = this.menu.$node || $(\"<div>\");\n                $input.on(\"blur.tt\", function($e) {\n                    var active, isActive, hasActive;\n                    active = document.activeElement;\n                    isActive = $menu.is(active);\n                    hasActive = $menu.has(active).length > 0;\n                    if (_.isMsie() && (isActive || hasActive)) {\n                        $e.preventDefault();\n                        $e.stopImmediatePropagation();\n                        _.defer(function() {\n                            $input.focus();\n                        });\n                    }\n                });\n                $menu.on(\"mousedown.tt\", function($e) {\n                    $e.preventDefault();\n                });\n            },\n            _onSelectableClicked: function onSelectableClicked(type, $el) {\n                this.select($el);\n            },\n            _onDatasetCleared: function onDatasetCleared() {\n                this._updateHint();\n            },\n            _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) {\n                this._updateHint();\n                if (this.autoselect) {\n                    var cursorClass = this.selectors.cursor.substr(1);\n                    this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass);\n                }\n                this.eventBus.trigger(\"render\", suggestions, async, dataset);\n            },\n            _onAsyncRequested: function onAsyncRequested(type, dataset, query) {\n                this.eventBus.trigger(\"asyncrequest\", query, dataset);\n            },\n            _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) {\n                this.eventBus.trigger(\"asynccancel\", query, dataset);\n            },\n            _onAsyncReceived: function onAsyncReceived(type, dataset, query) {\n                this.eventBus.trigger(\"asyncreceive\", query, dataset);\n            },\n            _onFocused: function onFocused() {\n                this._minLengthMet() && this.menu.update(this.input.getQuery());\n            },\n            _onBlurred: function onBlurred() {\n                if (this.input.hasQueryChangedSinceLastFocus()) {\n                    this.eventBus.trigger(\"change\", this.input.getQuery());\n                }\n            },\n            _onEnterKeyed: function onEnterKeyed(type, $e) {\n                var $selectable;\n                if ($selectable = this.menu.getActiveSelectable()) {\n                    if (this.select($selectable)) {\n                        $e.preventDefault();\n                        $e.stopPropagation();\n                    }\n                } else if (this.autoselect) {\n                    if (this.select(this.menu.getTopSelectable())) {\n                        $e.preventDefault();\n                        $e.stopPropagation();\n                    }\n                }\n            },\n            _onTabKeyed: function onTabKeyed(type, $e) {\n                var $selectable;\n                if ($selectable = this.menu.getActiveSelectable()) {\n                    this.select($selectable) && $e.preventDefault();\n                } else if ($selectable = this.menu.getTopSelectable()) {\n                    this.autocomplete($selectable) && $e.preventDefault();\n                }\n            },\n            _onEscKeyed: function onEscKeyed() {\n                this.close();\n            },\n            _onUpKeyed: function onUpKeyed() {\n                this.moveCursor(-1);\n            },\n            _onDownKeyed: function onDownKeyed() {\n                this.moveCursor(+1);\n            },\n            _onLeftKeyed: function onLeftKeyed() {\n                if (this.dir === \"rtl\" && this.input.isCursorAtEnd()) {\n                    this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable());\n                }\n            },\n            _onRightKeyed: function onRightKeyed() {\n                if (this.dir === \"ltr\" && this.input.isCursorAtEnd()) {\n                    this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable());\n                }\n            },\n            _onQueryChanged: function onQueryChanged(e, query) {\n                this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty();\n            },\n            _onWhitespaceChanged: function onWhitespaceChanged() {\n                this._updateHint();\n            },\n            _onLangDirChanged: function onLangDirChanged(e, dir) {\n                if (this.dir !== dir) {\n                    this.dir = dir;\n                    this.menu.setLanguageDirection(dir);\n                }\n            },\n            _openIfActive: function openIfActive() {\n                this.isActive() && this.open();\n            },\n            _minLengthMet: function minLengthMet(query) {\n                query = _.isString(query) ? query : this.input.getQuery() || \"\";\n                return query.length >= this.minLength;\n            },\n            _updateHint: function updateHint() {\n                var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match;\n                $selectable = this.menu.getTopSelectable();\n                data = this.menu.getSelectableData($selectable);\n                val = this.input.getInputValue();\n                if (data && !_.isBlankString(val) && !this.input.hasOverflow()) {\n                    query = Input.normalizeQuery(val);\n                    escapedQuery = _.escapeRegExChars(query);\n                    frontMatchRegEx = new RegExp(\"^(?:\" + escapedQuery + \")(.+$)\", \"i\");\n                    match = frontMatchRegEx.exec(data.val);\n                    match && this.input.setHint(val + match[1]);\n                } else {\n                    this.input.clearHint();\n                }\n            },\n            isEnabled: function isEnabled() {\n                return this.enabled;\n            },\n            enable: function enable() {\n                this.enabled = true;\n            },\n            disable: function disable() {\n                this.enabled = false;\n            },\n            isActive: function isActive() {\n                return this.active;\n            },\n            activate: function activate() {\n                if (this.isActive()) {\n                    return true;\n                } else if (!this.isEnabled() || this.eventBus.before(\"active\")) {\n                    return false;\n                } else {\n                    this.active = true;\n                    this.eventBus.trigger(\"active\");\n                    return true;\n                }\n            },\n            deactivate: function deactivate() {\n                if (!this.isActive()) {\n                    return true;\n                } else if (this.eventBus.before(\"idle\")) {\n                    return false;\n                } else {\n                    this.active = false;\n                    this.close();\n                    this.eventBus.trigger(\"idle\");\n                    return true;\n                }\n            },\n            isOpen: function isOpen() {\n                return this.menu.isOpen();\n            },\n            open: function open() {\n                if (!this.isOpen() && !this.eventBus.before(\"open\")) {\n                    this.menu.open();\n                    this._updateHint();\n                    this.eventBus.trigger(\"open\");\n                }\n                return this.isOpen();\n            },\n            close: function close() {\n                if (this.isOpen() && !this.eventBus.before(\"close\")) {\n                    this.menu.close();\n                    this.input.clearHint();\n                    this.input.resetInputValue();\n                    this.eventBus.trigger(\"close\");\n                }\n                return !this.isOpen();\n            },\n            setVal: function setVal(val) {\n                this.input.setQuery(_.toStr(val));\n            },\n            getVal: function getVal() {\n                return this.input.getQuery();\n            },\n            select: function select($selectable) {\n                var data = this.menu.getSelectableData($selectable);\n                if (data && !this.eventBus.before(\"select\", data.obj, data.dataset)) {\n                    this.input.setQuery(data.val, true);\n                    this.eventBus.trigger(\"select\", data.obj, data.dataset);\n                    this.close();\n                    return true;\n                }\n                return false;\n            },\n            autocomplete: function autocomplete($selectable) {\n                var query, data, isValid;\n                query = this.input.getQuery();\n                data = this.menu.getSelectableData($selectable);\n                isValid = data && query !== data.val;\n                if (isValid && !this.eventBus.before(\"autocomplete\", data.obj, data.dataset)) {\n                    this.input.setQuery(data.val);\n                    this.eventBus.trigger(\"autocomplete\", data.obj, data.dataset);\n                    return true;\n                }\n                return false;\n            },\n            moveCursor: function moveCursor(delta) {\n                var query, $candidate, data, suggestion, datasetName, cancelMove, id;\n                query = this.input.getQuery();\n                $candidate = this.menu.selectableRelativeToCursor(delta);\n                data = this.menu.getSelectableData($candidate);\n                suggestion = data ? data.obj : null;\n                datasetName = data ? data.dataset : null;\n                id = $candidate ? $candidate.attr(\"id\") : null;\n                this.input.trigger(\"cursorchange\", id);\n                cancelMove = this._minLengthMet() && this.menu.update(query);\n                if (!cancelMove && !this.eventBus.before(\"cursorchange\", suggestion, datasetName)) {\n                    this.menu.setCursor($candidate);\n                    if (data) {\n                        this.input.setInputValue(data.val);\n                    } else {\n                        this.input.resetInputValue();\n                        this._updateHint();\n                    }\n                    this.eventBus.trigger(\"cursorchange\", suggestion, datasetName);\n                    return true;\n                }\n                return false;\n            },\n            destroy: function destroy() {\n                this.input.destroy();\n                this.menu.destroy();\n            }\n        });\n        return Typeahead;\n        function c(ctx) {\n            var methods = [].slice.call(arguments, 1);\n            return function() {\n                var args = [].slice.call(arguments);\n                _.each(methods, function(method) {\n                    return ctx[method].apply(ctx, args);\n                });\n            };\n        }\n    }();\n    (function() {\n        \"use strict\";\n        var old, keys, methods;\n        old = $.fn.typeahead;\n        keys = {\n            www: \"tt-www\",\n            attrs: \"tt-attrs\",\n            typeahead: \"tt-typeahead\"\n        };\n        methods = {\n            initialize: function initialize(o, datasets) {\n                var www;\n                datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1);\n                o = o || {};\n                www = WWW(o.classNames);\n                return this.each(attach);\n                function attach() {\n                    var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor;\n                    _.each(datasets, function(d) {\n                        d.highlight = !!o.highlight;\n                    });\n                    $input = $(this);\n                    $wrapper = $(www.html.wrapper);\n                    $hint = $elOrNull(o.hint);\n                    $menu = $elOrNull(o.menu);\n                    defaultHint = o.hint !== false && !$hint;\n                    defaultMenu = o.menu !== false && !$menu;\n                    defaultHint && ($hint = buildHintFromInput($input, www));\n                    defaultMenu && ($menu = $(www.html.menu).css(www.css.menu));\n                    $hint && $hint.val(\"\");\n                    $input = prepInput($input, www);\n                    if (defaultHint || defaultMenu) {\n                        $wrapper.css(www.css.wrapper);\n                        $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint);\n                        $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null);\n                    }\n                    MenuConstructor = defaultMenu ? DefaultMenu : Menu;\n                    eventBus = new EventBus({\n                        el: $input\n                    });\n                    input = new Input({\n                        hint: $hint,\n                        input: $input\n                    }, www);\n                    menu = new MenuConstructor({\n                        node: $menu,\n                        datasets: datasets\n                    }, www);\n                    status = new Status({\n                        $input: $input,\n                        menu: menu\n                    });\n                    typeahead = new Typeahead({\n                        input: input,\n                        menu: menu,\n                        eventBus: eventBus,\n                        minLength: o.minLength,\n                        autoselect: o.autoselect\n                    }, www);\n                    $input.data(keys.www, www);\n                    $input.data(keys.typeahead, typeahead);\n                }\n            },\n            isEnabled: function isEnabled() {\n                var enabled;\n                ttEach(this.first(), function(t) {\n                    enabled = t.isEnabled();\n                });\n                return enabled;\n            },\n            enable: function enable() {\n                ttEach(this, function(t) {\n                    t.enable();\n                });\n                return this;\n            },\n            disable: function disable() {\n                ttEach(this, function(t) {\n                    t.disable();\n                });\n                return this;\n            },\n            isActive: function isActive() {\n                var active;\n                ttEach(this.first(), function(t) {\n                    active = t.isActive();\n                });\n                return active;\n            },\n            activate: function activate() {\n                ttEach(this, function(t) {\n                    t.activate();\n                });\n                return this;\n            },\n            deactivate: function deactivate() {\n                ttEach(this, function(t) {\n                    t.deactivate();\n                });\n                return this;\n            },\n            isOpen: function isOpen() {\n                var open;\n                ttEach(this.first(), function(t) {\n                    open = t.isOpen();\n                });\n                return open;\n            },\n            open: function open() {\n                ttEach(this, function(t) {\n                    t.open();\n                });\n                return this;\n            },\n            close: function close() {\n                ttEach(this, function(t) {\n                    t.close();\n                });\n                return this;\n            },\n            select: function select(el) {\n                var success = false, $el = $(el);\n                ttEach(this.first(), function(t) {\n                    success = t.select($el);\n                });\n                return success;\n            },\n            autocomplete: function autocomplete(el) {\n                var success = false, $el = $(el);\n                ttEach(this.first(), function(t) {\n                    success = t.autocomplete($el);\n                });\n                return success;\n            },\n            moveCursor: function moveCursoe(delta) {\n                var success = false;\n                ttEach(this.first(), function(t) {\n                    success = t.moveCursor(delta);\n                });\n                return success;\n            },\n            val: function val(newVal) {\n                var query;\n                if (!arguments.length) {\n                    ttEach(this.first(), function(t) {\n                        query = t.getVal();\n                    });\n                    return query;\n                } else {\n                    ttEach(this, function(t) {\n                        t.setVal(_.toStr(newVal));\n                    });\n                    return this;\n                }\n            },\n            destroy: function destroy() {\n                ttEach(this, function(typeahead, $input) {\n                    revert($input);\n                    typeahead.destroy();\n                });\n                return this;\n            }\n        };\n        $.fn.typeahead = function(method) {\n            if (methods[method]) {\n                return methods[method].apply(this, [].slice.call(arguments, 1));\n            } else {\n                return methods.initialize.apply(this, arguments);\n            }\n        };\n        $.fn.typeahead.noConflict = function noConflict() {\n            $.fn.typeahead = old;\n            return this;\n        };\n        function ttEach($els, fn) {\n            $els.each(function() {\n                var $input = $(this), typeahead;\n                (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input);\n            });\n        }\n        function buildHintFromInput($input, www) {\n            return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({\n                readonly: true,\n                required: false\n            }).removeAttr(\"id name placeholder\").removeClass(\"required\").attr({\n                spellcheck: \"false\",\n                tabindex: -1\n            });\n        }\n        function prepInput($input, www) {\n            $input.data(keys.attrs, {\n                dir: $input.attr(\"dir\"),\n                autocomplete: $input.attr(\"autocomplete\"),\n                spellcheck: $input.attr(\"spellcheck\"),\n                style: $input.attr(\"style\")\n            });\n            $input.addClass(www.classes.input).attr({\n                spellcheck: false\n            });\n            try {\n                !$input.attr(\"dir\") && $input.attr(\"dir\", \"auto\");\n            } catch (e) {}\n            return $input;\n        }\n        function getBackgroundStyles($el) {\n            return {\n                backgroundAttachment: $el.css(\"background-attachment\"),\n                backgroundClip: $el.css(\"background-clip\"),\n                backgroundColor: $el.css(\"background-color\"),\n                backgroundImage: $el.css(\"background-image\"),\n                backgroundOrigin: $el.css(\"background-origin\"),\n                backgroundPosition: $el.css(\"background-position\"),\n                backgroundRepeat: $el.css(\"background-repeat\"),\n                backgroundSize: $el.css(\"background-size\")\n            };\n        }\n        function revert($input) {\n            var www, $wrapper;\n            www = $input.data(keys.www);\n            $wrapper = $input.parent().filter(www.selectors.wrapper);\n            _.each($input.data(keys.attrs), function(val, key) {\n                _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val);\n            });\n            $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input);\n            if ($wrapper.length) {\n                $input.detach().insertAfter($wrapper);\n                $wrapper.remove();\n            }\n        }\n        function $elOrNull(obj) {\n            var isValid, $el;\n            isValid = _.isJQuery(obj) || _.isElement(obj);\n            $el = isValid ? $(obj).first() : [];\n            return $el.length ? $el : null;\n        }\n    })();\n});","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\ndefine([\"require\", \"exports\", \"aurelia-dependency-injection\", \"aurelia-router\", \"./authorization-service\"], function (require, exports, aurelia_dependency_injection_1, aurelia_router_1, authorization_service_1) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    var AuthorizeRouteStep = (function () {\n        function AuthorizeRouteStep(authorizationService) {\n            this.authorizationService = authorizationService;\n            this.defaultRedirectRoute = '';\n        }\n        AuthorizeRouteStep.prototype.run = function (navigationInstruction, next) {\n            var _this = this;\n            var allInstructions = navigationInstruction.getAllInstructions().reverse();\n            var permissionInstruction = allInstructions.find(function (instruction) { return _this.hasPermissionSettings(instruction.config); });\n            var permissionSettings = permissionInstruction ? permissionInstruction.config.settings.permission : null;\n            var noRoutePermissionsSet = !permissionInstruction;\n            var isAuthorized = permissionSettings === null || (_a = this.authorizationService).isAuthorized.apply(_a, permissionSettings.only);\n            if (noRoutePermissionsSet || isAuthorized) {\n                return next();\n            }\n            return next.cancel(new aurelia_router_1.Redirect(permissionSettings.redirectTo || this.defaultRedirectRoute));\n            var _a;\n        };\n        AuthorizeRouteStep.prototype.hasPermissionSettings = function (instructionConfig) {\n            return instructionConfig.settings && instructionConfig.settings.permission;\n        };\n        AuthorizeRouteStep.prototype.useDefaultRedirectRoute = function (route) {\n            this.defaultRedirectRoute = route;\n        };\n        AuthorizeRouteStep = __decorate([\n            aurelia_dependency_injection_1.autoinject(),\n            __metadata(\"design:paramtypes\", [authorization_service_1.default])\n        ], AuthorizeRouteStep);\n        return AuthorizeRouteStep;\n    }());\n    exports.default = AuthorizeRouteStep;\n});\n","/*!\n * Quill Editor v1.3.6\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quill\"] = factory();\n\telse\n\t\troot[\"Quill\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 109);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar format_1 = __webpack_require__(18);\nvar leaf_1 = __webpack_require__(19);\nvar scroll_1 = __webpack_require__(45);\nvar inline_1 = __webpack_require__(46);\nvar block_1 = __webpack_require__(47);\nvar embed_1 = __webpack_require__(48);\nvar text_1 = __webpack_require__(49);\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar store_1 = __webpack_require__(31);\nvar Registry = __webpack_require__(1);\nvar Parchment = {\n    Scope: Registry.Scope,\n    create: Registry.create,\n    find: Registry.find,\n    query: Registry.query,\n    register: Registry.register,\n    Container: container_1.default,\n    Format: format_1.default,\n    Leaf: leaf_1.default,\n    Embed: embed_1.default,\n    Scroll: scroll_1.default,\n    Block: block_1.default,\n    Inline: inline_1.default,\n    Text: text_1.default,\n    Attributor: {\n        Attribute: attributor_1.default,\n        Class: class_1.default,\n        Style: style_1.default,\n        Store: store_1.default,\n    },\n};\nexports.default = Parchment;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ParchmentError = /** @class */ (function (_super) {\n    __extends(ParchmentError, _super);\n    function ParchmentError(message) {\n        var _this = this;\n        message = '[Parchment] ' + message;\n        _this = _super.call(this, message) || this;\n        _this.message = message;\n        _this.name = _this.constructor.name;\n        return _this;\n    }\n    return ParchmentError;\n}(Error));\nexports.ParchmentError = ParchmentError;\nvar attributes = {};\nvar classes = {};\nvar tags = {};\nvar types = {};\nexports.DATA_KEY = '__blot';\nvar Scope;\n(function (Scope) {\n    Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n    Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n    Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n    Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n    Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n    Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n    Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n    Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n    Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n    Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n    Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n})(Scope = exports.Scope || (exports.Scope = {}));\nfunction create(input, value) {\n    var match = query(input);\n    if (match == null) {\n        throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n    }\n    var BlotClass = match;\n    var node = \n    // @ts-ignore\n    input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value);\n    return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n    if (bubble === void 0) { bubble = false; }\n    if (node == null)\n        return null;\n    // @ts-ignore\n    if (node[exports.DATA_KEY] != null)\n        return node[exports.DATA_KEY].blot;\n    if (bubble)\n        return find(node.parentNode, bubble);\n    return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n    if (scope === void 0) { scope = Scope.ANY; }\n    var match;\n    if (typeof query === 'string') {\n        match = types[query] || attributes[query];\n        // @ts-ignore\n    }\n    else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {\n        match = types['text'];\n    }\n    else if (typeof query === 'number') {\n        if (query & Scope.LEVEL & Scope.BLOCK) {\n            match = types['block'];\n        }\n        else if (query & Scope.LEVEL & Scope.INLINE) {\n            match = types['inline'];\n        }\n    }\n    else if (query instanceof HTMLElement) {\n        var names = (query.getAttribute('class') || '').split(/\\s+/);\n        for (var i in names) {\n            match = classes[names[i]];\n            if (match)\n                break;\n        }\n        match = match || tags[query.tagName];\n    }\n    if (match == null)\n        return null;\n    // @ts-ignore\n    if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope)\n        return match;\n    return null;\n}\nexports.query = query;\nfunction register() {\n    var Definitions = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        Definitions[_i] = arguments[_i];\n    }\n    if (Definitions.length > 1) {\n        return Definitions.map(function (d) {\n            return register(d);\n        });\n    }\n    var Definition = Definitions[0];\n    if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n        throw new ParchmentError('Invalid definition');\n    }\n    else if (Definition.blotName === 'abstract') {\n        throw new ParchmentError('Cannot register abstract class');\n    }\n    types[Definition.blotName || Definition.attrName] = Definition;\n    if (typeof Definition.keyName === 'string') {\n        attributes[Definition.keyName] = Definition;\n    }\n    else {\n        if (Definition.className != null) {\n            classes[Definition.className] = Definition;\n        }\n        if (Definition.tagName != null) {\n            if (Array.isArray(Definition.tagName)) {\n                Definition.tagName = Definition.tagName.map(function (tagName) {\n                    return tagName.toUpperCase();\n                });\n            }\n            else {\n                Definition.tagName = Definition.tagName.toUpperCase();\n            }\n            var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n            tagNames.forEach(function (tag) {\n                if (tags[tag] == null || Definition.className == null) {\n                    tags[tag] = Definition;\n                }\n            });\n        }\n    }\n    return Definition;\n}\nexports.register = register;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar diff = __webpack_require__(51);\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\nvar op = __webpack_require__(20);\n\n\nvar NULL_CHARACTER = String.fromCharCode(0);  // Placeholder char for embed in diff()\n\n\nvar Delta = function (ops) {\n  // Assume we are given a well formed ops\n  if (Array.isArray(ops)) {\n    this.ops = ops;\n  } else if (ops != null && Array.isArray(ops.ops)) {\n    this.ops = ops.ops;\n  } else {\n    this.ops = [];\n  }\n};\n\n\nDelta.prototype.insert = function (text, attributes) {\n  var newOp = {};\n  if (text.length === 0) return this;\n  newOp.insert = text;\n  if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n    newOp.attributes = attributes;\n  }\n  return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n  if (length <= 0) return this;\n  return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n  if (length <= 0) return this;\n  var newOp = { retain: length };\n  if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n    newOp.attributes = attributes;\n  }\n  return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n  var index = this.ops.length;\n  var lastOp = this.ops[index - 1];\n  newOp = extend(true, {}, newOp);\n  if (typeof lastOp === 'object') {\n    if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n      this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n      return this;\n    }\n    // Since it does not matter if we insert before or after deleting at the same index,\n    // always prefer to insert first\n    if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n      index -= 1;\n      lastOp = this.ops[index - 1];\n      if (typeof lastOp !== 'object') {\n        this.ops.unshift(newOp);\n        return this;\n      }\n    }\n    if (equal(newOp.attributes, lastOp.attributes)) {\n      if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n        this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n        if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n        return this;\n      } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n        this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n        if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n        return this;\n      }\n    }\n  }\n  if (index === this.ops.length) {\n    this.ops.push(newOp);\n  } else {\n    this.ops.splice(index, 0, newOp);\n  }\n  return this;\n};\n\nDelta.prototype.chop = function () {\n  var lastOp = this.ops[this.ops.length - 1];\n  if (lastOp && lastOp.retain && !lastOp.attributes) {\n    this.ops.pop();\n  }\n  return this;\n};\n\nDelta.prototype.filter = function (predicate) {\n  return this.ops.filter(predicate);\n};\n\nDelta.prototype.forEach = function (predicate) {\n  this.ops.forEach(predicate);\n};\n\nDelta.prototype.map = function (predicate) {\n  return this.ops.map(predicate);\n};\n\nDelta.prototype.partition = function (predicate) {\n  var passed = [], failed = [];\n  this.forEach(function(op) {\n    var target = predicate(op) ? passed : failed;\n    target.push(op);\n  });\n  return [passed, failed];\n};\n\nDelta.prototype.reduce = function (predicate, initial) {\n  return this.ops.reduce(predicate, initial);\n};\n\nDelta.prototype.changeLength = function () {\n  return this.reduce(function (length, elem) {\n    if (elem.insert) {\n      return length + op.length(elem);\n    } else if (elem.delete) {\n      return length - elem.delete;\n    }\n    return length;\n  }, 0);\n};\n\nDelta.prototype.length = function () {\n  return this.reduce(function (length, elem) {\n    return length + op.length(elem);\n  }, 0);\n};\n\nDelta.prototype.slice = function (start, end) {\n  start = start || 0;\n  if (typeof end !== 'number') end = Infinity;\n  var ops = [];\n  var iter = op.iterator(this.ops);\n  var index = 0;\n  while (index < end && iter.hasNext()) {\n    var nextOp;\n    if (index < start) {\n      nextOp = iter.next(start - index);\n    } else {\n      nextOp = iter.next(end - index);\n      ops.push(nextOp);\n    }\n    index += op.length(nextOp);\n  }\n  return new Delta(ops);\n};\n\n\nDelta.prototype.compose = function (other) {\n  var thisIter = op.iterator(this.ops);\n  var otherIter = op.iterator(other.ops);\n  var delta = new Delta();\n  while (thisIter.hasNext() || otherIter.hasNext()) {\n    if (otherIter.peekType() === 'insert') {\n      delta.push(otherIter.next());\n    } else if (thisIter.peekType() === 'delete') {\n      delta.push(thisIter.next());\n    } else {\n      var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n      var thisOp = thisIter.next(length);\n      var otherOp = otherIter.next(length);\n      if (typeof otherOp.retain === 'number') {\n        var newOp = {};\n        if (typeof thisOp.retain === 'number') {\n          newOp.retain = length;\n        } else {\n          newOp.insert = thisOp.insert;\n        }\n        // Preserve null when composing with a retain, otherwise remove it for inserts\n        var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n        if (attributes) newOp.attributes = attributes;\n        delta.push(newOp);\n      // Other op should be delete, we could be an insert or retain\n      // Insert + delete cancels out\n      } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n        delta.push(otherOp);\n      }\n    }\n  }\n  return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n  var delta = new Delta(this.ops.slice());\n  if (other.ops.length > 0) {\n    delta.push(other.ops[0]);\n    delta.ops = delta.ops.concat(other.ops.slice(1));\n  }\n  return delta;\n};\n\nDelta.prototype.diff = function (other, index) {\n  if (this.ops === other.ops) {\n    return new Delta();\n  }\n  var strings = [this, other].map(function (delta) {\n    return delta.map(function (op) {\n      if (op.insert != null) {\n        return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n      }\n      var prep = (delta === other) ? 'on' : 'with';\n      throw new Error('diff() called ' + prep + ' non-document');\n    }).join('');\n  });\n  var delta = new Delta();\n  var diffResult = diff(strings[0], strings[1], index);\n  var thisIter = op.iterator(this.ops);\n  var otherIter = op.iterator(other.ops);\n  diffResult.forEach(function (component) {\n    var length = component[1].length;\n    while (length > 0) {\n      var opLength = 0;\n      switch (component[0]) {\n        case diff.INSERT:\n          opLength = Math.min(otherIter.peekLength(), length);\n          delta.push(otherIter.next(opLength));\n          break;\n        case diff.DELETE:\n          opLength = Math.min(length, thisIter.peekLength());\n          thisIter.next(opLength);\n          delta['delete'](opLength);\n          break;\n        case diff.EQUAL:\n          opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n          var thisOp = thisIter.next(opLength);\n          var otherOp = otherIter.next(opLength);\n          if (equal(thisOp.insert, otherOp.insert)) {\n            delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n          } else {\n            delta.push(otherOp)['delete'](opLength);\n          }\n          break;\n      }\n      length -= opLength;\n    }\n  });\n  return delta.chop();\n};\n\nDelta.prototype.eachLine = function (predicate, newline) {\n  newline = newline || '\\n';\n  var iter = op.iterator(this.ops);\n  var line = new Delta();\n  var i = 0;\n  while (iter.hasNext()) {\n    if (iter.peekType() !== 'insert') return;\n    var thisOp = iter.peek();\n    var start = op.length(thisOp) - iter.peekLength();\n    var index = typeof thisOp.insert === 'string' ?\n      thisOp.insert.indexOf(newline, start) - start : -1;\n    if (index < 0) {\n      line.push(iter.next());\n    } else if (index > 0) {\n      line.push(iter.next(index));\n    } else {\n      if (predicate(line, iter.next(1).attributes || {}, i) === false) {\n        return;\n      }\n      i += 1;\n      line = new Delta();\n    }\n  }\n  if (line.length() > 0) {\n    predicate(line, {}, i);\n  }\n};\n\nDelta.prototype.transform = function (other, priority) {\n  priority = !!priority;\n  if (typeof other === 'number') {\n    return this.transformPosition(other, priority);\n  }\n  var thisIter = op.iterator(this.ops);\n  var otherIter = op.iterator(other.ops);\n  var delta = new Delta();\n  while (thisIter.hasNext() || otherIter.hasNext()) {\n    if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n      delta.retain(op.length(thisIter.next()));\n    } else if (otherIter.peekType() === 'insert') {\n      delta.push(otherIter.next());\n    } else {\n      var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n      var thisOp = thisIter.next(length);\n      var otherOp = otherIter.next(length);\n      if (thisOp['delete']) {\n        // Our delete either makes their delete redundant or removes their retain\n        continue;\n      } else if (otherOp['delete']) {\n        delta.push(otherOp);\n      } else {\n        // We retain either their retain or insert\n        delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n      }\n    }\n  }\n  return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n  priority = !!priority;\n  var thisIter = op.iterator(this.ops);\n  var offset = 0;\n  while (thisIter.hasNext() && offset <= index) {\n    var length = thisIter.peekLength();\n    var nextType = thisIter.peekType();\n    thisIter.next();\n    if (nextType === 'delete') {\n      index -= Math.min(length, index - offset);\n      continue;\n    } else if (nextType === 'insert' && (offset < index || !priority)) {\n      index += length;\n    }\n    offset += length;\n  }\n  return index;\n};\n\n\nmodule.exports = Delta;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = target[name];\n\t\t\t\tcopy = options[name];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\ttarget[name] = extend(deep, clone, copy);\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar NEWLINE_LENGTH = 1;\n\nvar BlockEmbed = function (_Parchment$Embed) {\n  _inherits(BlockEmbed, _Parchment$Embed);\n\n  function BlockEmbed() {\n    _classCallCheck(this, BlockEmbed);\n\n    return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));\n  }\n\n  _createClass(BlockEmbed, [{\n    key: 'attach',\n    value: function attach() {\n      _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);\n      this.attributes = new _parchment2.default.Attributor.Store(this.domNode);\n    }\n  }, {\n    key: 'delta',\n    value: function delta() {\n      return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);\n      if (attribute != null) {\n        this.attributes.attribute(attribute, value);\n      }\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      this.format(name, value);\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (typeof value === 'string' && value.endsWith('\\n')) {\n        var block = _parchment2.default.create(Block.blotName);\n        this.parent.insertBefore(block, index === 0 ? this : this.next);\n        block.insertAt(0, value.slice(0, -1));\n      } else {\n        _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);\n      }\n    }\n  }]);\n\n  return BlockEmbed;\n}(_parchment2.default.Embed);\n\nBlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nvar Block = function (_Parchment$Block) {\n  _inherits(Block, _Parchment$Block);\n\n  function Block(domNode) {\n    _classCallCheck(this, Block);\n\n    var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));\n\n    _this2.cache = {};\n    return _this2;\n  }\n\n  _createClass(Block, [{\n    key: 'delta',\n    value: function delta() {\n      if (this.cache.delta == null) {\n        this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {\n          if (leaf.length() === 0) {\n            return delta;\n          } else {\n            return delta.insert(leaf.value(), bubbleFormats(leaf));\n          }\n        }, new _quillDelta2.default()).insert('\\n', bubbleFormats(this));\n      }\n      return this.cache.delta;\n    }\n  }, {\n    key: 'deleteAt',\n    value: function deleteAt(index, length) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);\n      this.cache = {};\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      if (length <= 0) return;\n      if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n        if (index + length === this.length()) {\n          this.format(name, value);\n        }\n      } else {\n        _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n      }\n      this.cache = {};\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);\n      if (value.length === 0) return;\n      var lines = value.split('\\n');\n      var text = lines.shift();\n      if (text.length > 0) {\n        if (index < this.length() - 1 || this.children.tail == null) {\n          _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);\n        } else {\n          this.children.tail.insertAt(this.children.tail.length(), text);\n        }\n        this.cache = {};\n      }\n      var block = this;\n      lines.reduce(function (index, line) {\n        block = block.split(index, true);\n        block.insertAt(0, line);\n        return line.length;\n      }, index + text.length);\n    }\n  }, {\n    key: 'insertBefore',\n    value: function insertBefore(blot, ref) {\n      var head = this.children.head;\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n      if (head instanceof _break2.default) {\n        head.remove();\n      }\n      this.cache = {};\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      if (this.cache.length == null) {\n        this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;\n      }\n      return this.cache.length;\n    }\n  }, {\n    key: 'moveChildren',\n    value: function moveChildren(target, ref) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);\n      this.cache = {};\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this, context);\n      this.cache = {};\n    }\n  }, {\n    key: 'path',\n    value: function path(index) {\n      return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);\n    }\n  }, {\n    key: 'removeChild',\n    value: function removeChild(child) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);\n      this.cache = {};\n    }\n  }, {\n    key: 'split',\n    value: function split(index) {\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n        var clone = this.clone();\n        if (index === 0) {\n          this.parent.insertBefore(clone, this);\n          return this;\n        } else {\n          this.parent.insertBefore(clone, this.next);\n          return clone;\n        }\n      } else {\n        var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);\n        this.cache = {};\n        return next;\n      }\n    }\n  }]);\n\n  return Block;\n}(_parchment2.default.Block);\n\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [_inline2.default, _parchment2.default.Embed, _text2.default];\n\nfunction bubbleFormats(blot) {\n  var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (blot == null) return formats;\n  if (typeof blot.formats === 'function') {\n    formats = (0, _extend2.default)(formats, blot.formats());\n  }\n  if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n    return formats;\n  }\n  return bubbleFormats(blot.parent, formats);\n}\n\nexports.bubbleFormats = bubbleFormats;\nexports.BlockEmbed = BlockEmbed;\nexports.default = Block;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.overload = exports.expandConfig = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n__webpack_require__(50);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _editor = __webpack_require__(14);\n\nvar _editor2 = _interopRequireDefault(_editor);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _selection = __webpack_require__(15);\n\nvar _selection2 = _interopRequireDefault(_selection);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill');\n\nvar Quill = function () {\n  _createClass(Quill, null, [{\n    key: 'debug',\n    value: function debug(limit) {\n      if (limit === true) {\n        limit = 'log';\n      }\n      _logger2.default.level(limit);\n    }\n  }, {\n    key: 'find',\n    value: function find(node) {\n      return node.__quill || _parchment2.default.find(node);\n    }\n  }, {\n    key: 'import',\n    value: function _import(name) {\n      if (this.imports[name] == null) {\n        debug.error('Cannot import ' + name + '. Are you sure it was registered?');\n      }\n      return this.imports[name];\n    }\n  }, {\n    key: 'register',\n    value: function register(path, target) {\n      var _this = this;\n\n      var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n      if (typeof path !== 'string') {\n        var name = path.attrName || path.blotName;\n        if (typeof name === 'string') {\n          // register(Blot | Attributor, overwrite)\n          this.register('formats/' + name, path, target);\n        } else {\n          Object.keys(path).forEach(function (key) {\n            _this.register(key, path[key], target);\n          });\n        }\n      } else {\n        if (this.imports[path] != null && !overwrite) {\n          debug.warn('Overwriting ' + path + ' with', target);\n        }\n        this.imports[path] = target;\n        if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\n          _parchment2.default.register(target);\n        } else if (path.startsWith('modules') && typeof target.register === 'function') {\n          target.register();\n        }\n      }\n    }\n  }]);\n\n  function Quill(container) {\n    var _this2 = this;\n\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Quill);\n\n    this.options = expandConfig(container, options);\n    this.container = this.options.container;\n    if (this.container == null) {\n      return debug.error('Invalid Quill container', container);\n    }\n    if (this.options.debug) {\n      Quill.debug(this.options.debug);\n    }\n    var html = this.container.innerHTML.trim();\n    this.container.classList.add('ql-container');\n    this.container.innerHTML = '';\n    this.container.__quill = this;\n    this.root = this.addContainer('ql-editor');\n    this.root.classList.add('ql-blank');\n    this.root.setAttribute('data-gramm', false);\n    this.scrollingContainer = this.options.scrollingContainer || this.root;\n    this.emitter = new _emitter4.default();\n    this.scroll = _parchment2.default.create(this.root, {\n      emitter: this.emitter,\n      whitelist: this.options.formats\n    });\n    this.editor = new _editor2.default(this.scroll);\n    this.selection = new _selection2.default(this.scroll, this.emitter);\n    this.theme = new this.options.theme(this, this.options);\n    this.keyboard = this.theme.addModule('keyboard');\n    this.clipboard = this.theme.addModule('clipboard');\n    this.history = this.theme.addModule('history');\n    this.theme.init();\n    this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {\n      if (type === _emitter4.default.events.TEXT_CHANGE) {\n        _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n      }\n    });\n    this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {\n      var range = _this2.selection.lastRange;\n      var index = range && range.length === 0 ? range.index : undefined;\n      modify.call(_this2, function () {\n        return _this2.editor.update(null, mutations, index);\n      }, source);\n    });\n    var contents = this.clipboard.convert('<div class=\\'ql-editor\\' style=\"white-space: normal;\">' + html + '<p><br></p></div>');\n    this.setContents(contents);\n    this.history.clear();\n    if (this.options.placeholder) {\n      this.root.setAttribute('data-placeholder', this.options.placeholder);\n    }\n    if (this.options.readOnly) {\n      this.disable();\n    }\n  }\n\n  _createClass(Quill, [{\n    key: 'addContainer',\n    value: function addContainer(container) {\n      var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      if (typeof container === 'string') {\n        var className = container;\n        container = document.createElement('div');\n        container.classList.add(className);\n      }\n      this.container.insertBefore(container, refNode);\n      return container;\n    }\n  }, {\n    key: 'blur',\n    value: function blur() {\n      this.selection.setRange(null);\n    }\n  }, {\n    key: 'deleteText',\n    value: function deleteText(index, length, source) {\n      var _this3 = this;\n\n      var _overload = overload(index, length, source);\n\n      var _overload2 = _slicedToArray(_overload, 4);\n\n      index = _overload2[0];\n      length = _overload2[1];\n      source = _overload2[3];\n\n      return modify.call(this, function () {\n        return _this3.editor.deleteText(index, length);\n      }, source, index, -1 * length);\n    }\n  }, {\n    key: 'disable',\n    value: function disable() {\n      this.enable(false);\n    }\n  }, {\n    key: 'enable',\n    value: function enable() {\n      var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n      this.scroll.enable(enabled);\n      this.container.classList.toggle('ql-disabled', !enabled);\n    }\n  }, {\n    key: 'focus',\n    value: function focus() {\n      var scrollTop = this.scrollingContainer.scrollTop;\n      this.selection.focus();\n      this.scrollingContainer.scrollTop = scrollTop;\n      this.scrollIntoView();\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      var _this4 = this;\n\n      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n      return modify.call(this, function () {\n        var range = _this4.getSelection(true);\n        var change = new _quillDelta2.default();\n        if (range == null) {\n          return change;\n        } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n          change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n        } else if (range.length === 0) {\n          _this4.selection.format(name, value);\n          return change;\n        } else {\n          change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n        }\n        _this4.setSelection(range, _emitter4.default.sources.SILENT);\n        return change;\n      }, source);\n    }\n  }, {\n    key: 'formatLine',\n    value: function formatLine(index, length, name, value, source) {\n      var _this5 = this;\n\n      var formats = void 0;\n\n      var _overload3 = overload(index, length, name, value, source);\n\n      var _overload4 = _slicedToArray(_overload3, 4);\n\n      index = _overload4[0];\n      length = _overload4[1];\n      formats = _overload4[2];\n      source = _overload4[3];\n\n      return modify.call(this, function () {\n        return _this5.editor.formatLine(index, length, formats);\n      }, source, index, 0);\n    }\n  }, {\n    key: 'formatText',\n    value: function formatText(index, length, name, value, source) {\n      var _this6 = this;\n\n      var formats = void 0;\n\n      var _overload5 = overload(index, length, name, value, source);\n\n      var _overload6 = _slicedToArray(_overload5, 4);\n\n      index = _overload6[0];\n      length = _overload6[1];\n      formats = _overload6[2];\n      source = _overload6[3];\n\n      return modify.call(this, function () {\n        return _this6.editor.formatText(index, length, formats);\n      }, source, index, 0);\n    }\n  }, {\n    key: 'getBounds',\n    value: function getBounds(index) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var bounds = void 0;\n      if (typeof index === 'number') {\n        bounds = this.selection.getBounds(index, length);\n      } else {\n        bounds = this.selection.getBounds(index.index, index.length);\n      }\n      var containerBounds = this.container.getBoundingClientRect();\n      return {\n        bottom: bounds.bottom - containerBounds.top,\n        height: bounds.height,\n        left: bounds.left - containerBounds.left,\n        right: bounds.right - containerBounds.left,\n        top: bounds.top - containerBounds.top,\n        width: bounds.width\n      };\n    }\n  }, {\n    key: 'getContents',\n    value: function getContents() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n      var _overload7 = overload(index, length);\n\n      var _overload8 = _slicedToArray(_overload7, 2);\n\n      index = _overload8[0];\n      length = _overload8[1];\n\n      return this.editor.getContents(index, length);\n    }\n  }, {\n    key: 'getFormat',\n    value: function getFormat() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection(true);\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      if (typeof index === 'number') {\n        return this.editor.getFormat(index, length);\n      } else {\n        return this.editor.getFormat(index.index, index.length);\n      }\n    }\n  }, {\n    key: 'getIndex',\n    value: function getIndex(blot) {\n      return blot.offset(this.scroll);\n    }\n  }, {\n    key: 'getLength',\n    value: function getLength() {\n      return this.scroll.length();\n    }\n  }, {\n    key: 'getLeaf',\n    value: function getLeaf(index) {\n      return this.scroll.leaf(index);\n    }\n  }, {\n    key: 'getLine',\n    value: function getLine(index) {\n      return this.scroll.line(index);\n    }\n  }, {\n    key: 'getLines',\n    value: function getLines() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n      if (typeof index !== 'number') {\n        return this.scroll.lines(index.index, index.length);\n      } else {\n        return this.scroll.lines(index, length);\n      }\n    }\n  }, {\n    key: 'getModule',\n    value: function getModule(name) {\n      return this.theme.modules[name];\n    }\n  }, {\n    key: 'getSelection',\n    value: function getSelection() {\n      var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      if (focus) this.focus();\n      this.update(); // Make sure we access getRange with editor in consistent state\n      return this.selection.getRange()[0];\n    }\n  }, {\n    key: 'getText',\n    value: function getText() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n      var _overload9 = overload(index, length);\n\n      var _overload10 = _slicedToArray(_overload9, 2);\n\n      index = _overload10[0];\n      length = _overload10[1];\n\n      return this.editor.getText(index, length);\n    }\n  }, {\n    key: 'hasFocus',\n    value: function hasFocus() {\n      return this.selection.hasFocus();\n    }\n  }, {\n    key: 'insertEmbed',\n    value: function insertEmbed(index, embed, value) {\n      var _this7 = this;\n\n      var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n\n      return modify.call(this, function () {\n        return _this7.editor.insertEmbed(index, embed, value);\n      }, source, index);\n    }\n  }, {\n    key: 'insertText',\n    value: function insertText(index, text, name, value, source) {\n      var _this8 = this;\n\n      var formats = void 0;\n\n      var _overload11 = overload(index, 0, name, value, source);\n\n      var _overload12 = _slicedToArray(_overload11, 4);\n\n      index = _overload12[0];\n      formats = _overload12[2];\n      source = _overload12[3];\n\n      return modify.call(this, function () {\n        return _this8.editor.insertText(index, text, formats);\n      }, source, index, text.length);\n    }\n  }, {\n    key: 'isEnabled',\n    value: function isEnabled() {\n      return !this.container.classList.contains('ql-disabled');\n    }\n  }, {\n    key: 'off',\n    value: function off() {\n      return this.emitter.off.apply(this.emitter, arguments);\n    }\n  }, {\n    key: 'on',\n    value: function on() {\n      return this.emitter.on.apply(this.emitter, arguments);\n    }\n  }, {\n    key: 'once',\n    value: function once() {\n      return this.emitter.once.apply(this.emitter, arguments);\n    }\n  }, {\n    key: 'pasteHTML',\n    value: function pasteHTML(index, html, source) {\n      this.clipboard.dangerouslyPasteHTML(index, html, source);\n    }\n  }, {\n    key: 'removeFormat',\n    value: function removeFormat(index, length, source) {\n      var _this9 = this;\n\n      var _overload13 = overload(index, length, source);\n\n      var _overload14 = _slicedToArray(_overload13, 4);\n\n      index = _overload14[0];\n      length = _overload14[1];\n      source = _overload14[3];\n\n      return modify.call(this, function () {\n        return _this9.editor.removeFormat(index, length);\n      }, source, index);\n    }\n  }, {\n    key: 'scrollIntoView',\n    value: function scrollIntoView() {\n      this.selection.scrollIntoView(this.scrollingContainer);\n    }\n  }, {\n    key: 'setContents',\n    value: function setContents(delta) {\n      var _this10 = this;\n\n      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n      return modify.call(this, function () {\n        delta = new _quillDelta2.default(delta);\n        var length = _this10.getLength();\n        var deleted = _this10.editor.deleteText(0, length);\n        var applied = _this10.editor.applyDelta(delta);\n        var lastOp = applied.ops[applied.ops.length - 1];\n        if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n          _this10.editor.deleteText(_this10.getLength() - 1, 1);\n          applied.delete(1);\n        }\n        var ret = deleted.compose(applied);\n        return ret;\n      }, source);\n    }\n  }, {\n    key: 'setSelection',\n    value: function setSelection(index, length, source) {\n      if (index == null) {\n        this.selection.setRange(null, length || Quill.sources.API);\n      } else {\n        var _overload15 = overload(index, length, source);\n\n        var _overload16 = _slicedToArray(_overload15, 4);\n\n        index = _overload16[0];\n        length = _overload16[1];\n        source = _overload16[3];\n\n        this.selection.setRange(new _selection.Range(index, length), source);\n        if (source !== _emitter4.default.sources.SILENT) {\n          this.selection.scrollIntoView(this.scrollingContainer);\n        }\n      }\n    }\n  }, {\n    key: 'setText',\n    value: function setText(text) {\n      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n      var delta = new _quillDelta2.default().insert(text);\n      return this.setContents(delta, source);\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n      var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n      this.selection.update(source);\n      return change;\n    }\n  }, {\n    key: 'updateContents',\n    value: function updateContents(delta) {\n      var _this11 = this;\n\n      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n      return modify.call(this, function () {\n        delta = new _quillDelta2.default(delta);\n        return _this11.editor.applyDelta(delta, source);\n      }, source, true);\n    }\n  }]);\n\n  return Quill;\n}();\n\nQuill.DEFAULTS = {\n  bounds: null,\n  formats: null,\n  modules: {},\n  placeholder: '',\n  readOnly: false,\n  scrollingContainer: null,\n  strict: true,\n  theme: 'default'\n};\nQuill.events = _emitter4.default.events;\nQuill.sources = _emitter4.default.sources;\n// eslint-disable-next-line no-undef\nQuill.version =  false ? 'dev' : \"1.3.6\";\n\nQuill.imports = {\n  'delta': _quillDelta2.default,\n  'parchment': _parchment2.default,\n  'core/module': _module2.default,\n  'core/theme': _theme2.default\n};\n\nfunction expandConfig(container, userConfig) {\n  userConfig = (0, _extend2.default)(true, {\n    container: container,\n    modules: {\n      clipboard: true,\n      keyboard: true,\n      history: true\n    }\n  }, userConfig);\n  if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n    userConfig.theme = _theme2.default;\n  } else {\n    userConfig.theme = Quill.import('themes/' + userConfig.theme);\n    if (userConfig.theme == null) {\n      throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n    }\n  }\n  var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\n  [themeConfig, userConfig].forEach(function (config) {\n    config.modules = config.modules || {};\n    Object.keys(config.modules).forEach(function (module) {\n      if (config.modules[module] === true) {\n        config.modules[module] = {};\n      }\n    });\n  });\n  var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n  var moduleConfig = moduleNames.reduce(function (config, name) {\n    var moduleClass = Quill.import('modules/' + name);\n    if (moduleClass == null) {\n      debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');\n    } else {\n      config[name] = moduleClass.DEFAULTS || {};\n    }\n    return config;\n  }, {});\n  // Special case toolbar shorthand\n  if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n    userConfig.modules.toolbar = {\n      container: userConfig.modules.toolbar\n    };\n  }\n  userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n  ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n    if (typeof userConfig[key] === 'string') {\n      userConfig[key] = document.querySelector(userConfig[key]);\n    }\n  });\n  userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n    if (userConfig.modules[name]) {\n      config[name] = userConfig.modules[name];\n    }\n    return config;\n  }, {});\n  return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n  if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n    return new _quillDelta2.default();\n  }\n  var range = index == null ? null : this.getSelection();\n  var oldDelta = this.editor.delta;\n  var change = modifier();\n  if (range != null) {\n    if (index === true) index = range.index;\n    if (shift == null) {\n      range = shiftRange(range, change, source);\n    } else if (shift !== 0) {\n      range = shiftRange(range, index, shift, source);\n    }\n    this.setSelection(range, _emitter4.default.sources.SILENT);\n  }\n  if (change.length() > 0) {\n    var _emitter;\n\n    var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n    (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n    if (source !== _emitter4.default.sources.SILENT) {\n      var _emitter2;\n\n      (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n    }\n  }\n  return change;\n}\n\nfunction overload(index, length, name, value, source) {\n  var formats = {};\n  if (typeof index.index === 'number' && typeof index.length === 'number') {\n    // Allow for throwaway end (used by insertText/insertEmbed)\n    if (typeof length !== 'number') {\n      source = value, value = name, name = length, length = index.length, index = index.index;\n    } else {\n      length = index.length, index = index.index;\n    }\n  } else if (typeof length !== 'number') {\n    source = value, value = name, name = length, length = 0;\n  }\n  // Handle format being object, two format name/value strings or excluded\n  if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n    formats = name;\n    source = value;\n  } else if (typeof name === 'string') {\n    if (value != null) {\n      formats[name] = value;\n    } else {\n      source = name;\n    }\n  }\n  // Handle optional source\n  source = source || _emitter4.default.sources.API;\n  return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n  if (range == null) return null;\n  var start = void 0,\n      end = void 0;\n  if (index instanceof _quillDelta2.default) {\n    var _map = [range.index, range.index + range.length].map(function (pos) {\n      return index.transformPosition(pos, source !== _emitter4.default.sources.USER);\n    });\n\n    var _map2 = _slicedToArray(_map, 2);\n\n    start = _map2[0];\n    end = _map2[1];\n  } else {\n    var _map3 = [range.index, range.index + range.length].map(function (pos) {\n      if (pos < index || pos === index && source === _emitter4.default.sources.USER) return pos;\n      if (length >= 0) {\n        return pos + length;\n      } else {\n        return Math.max(index, pos + length);\n      }\n    });\n\n    var _map4 = _slicedToArray(_map3, 2);\n\n    start = _map4[0];\n    end = _map4[1];\n  }\n  return new _selection.Range(start, end - start);\n}\n\nexports.expandConfig = expandConfig;\nexports.overload = overload;\nexports.default = Quill;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Inline = function (_Parchment$Inline) {\n  _inherits(Inline, _Parchment$Inline);\n\n  function Inline() {\n    _classCallCheck(this, Inline);\n\n    return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n  }\n\n  _createClass(Inline, [{\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {\n        var blot = this.isolate(index, length);\n        if (value) {\n          blot.wrap(name, value);\n        }\n      } else {\n        _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);\n      }\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this, context);\n      if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n        var parent = this.parent.isolate(this.offset(), this.length());\n        this.moveChildren(parent);\n        parent.wrap(this);\n      }\n    }\n  }], [{\n    key: 'compare',\n    value: function compare(self, other) {\n      var selfIndex = Inline.order.indexOf(self);\n      var otherIndex = Inline.order.indexOf(other);\n      if (selfIndex >= 0 || otherIndex >= 0) {\n        return selfIndex - otherIndex;\n      } else if (self === other) {\n        return 0;\n      } else if (self < other) {\n        return -1;\n      } else {\n        return 1;\n      }\n    }\n  }]);\n\n  return Inline;\n}(_parchment2.default.Inline);\n\nInline.allowedChildren = [Inline, _parchment2.default.Embed, _text2.default];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = ['cursor', 'inline', // Must be lower\n'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code' // Must be higher\n];\n\nexports.default = Inline;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TextBlot = function (_Parchment$Text) {\n  _inherits(TextBlot, _Parchment$Text);\n\n  function TextBlot() {\n    _classCallCheck(this, TextBlot);\n\n    return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));\n  }\n\n  return TextBlot;\n}(_parchment2.default.Text);\n\nexports.default = TextBlot;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _eventemitter = __webpack_require__(54);\n\nvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:events');\n\nvar EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n\nEVENTS.forEach(function (eventName) {\n  document.addEventListener(eventName, function () {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    [].slice.call(document.querySelectorAll('.ql-container')).forEach(function (node) {\n      // TODO use WeakMap\n      if (node.__quill && node.__quill.emitter) {\n        var _node$__quill$emitter;\n\n        (_node$__quill$emitter = node.__quill.emitter).handleDOM.apply(_node$__quill$emitter, args);\n      }\n    });\n  });\n});\n\nvar Emitter = function (_EventEmitter) {\n  _inherits(Emitter, _EventEmitter);\n\n  function Emitter() {\n    _classCallCheck(this, Emitter);\n\n    var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));\n\n    _this.listeners = {};\n    _this.on('error', debug.error);\n    return _this;\n  }\n\n  _createClass(Emitter, [{\n    key: 'emit',\n    value: function emit() {\n      debug.log.apply(debug, arguments);\n      _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n    }\n  }, {\n    key: 'handleDOM',\n    value: function handleDOM(event) {\n      for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      (this.listeners[event.type] || []).forEach(function (_ref) {\n        var node = _ref.node,\n            handler = _ref.handler;\n\n        if (event.target === node || node.contains(event.target)) {\n          handler.apply(undefined, [event].concat(args));\n        }\n      });\n    }\n  }, {\n    key: 'listenDOM',\n    value: function listenDOM(eventName, node, handler) {\n      if (!this.listeners[eventName]) {\n        this.listeners[eventName] = [];\n      }\n      this.listeners[eventName].push({ node: node, handler: handler });\n    }\n  }]);\n\n  return Emitter;\n}(_eventemitter2.default);\n\nEmitter.events = {\n  EDITOR_CHANGE: 'editor-change',\n  SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n  SCROLL_OPTIMIZE: 'scroll-optimize',\n  SCROLL_UPDATE: 'scroll-update',\n  SELECTION_CHANGE: 'selection-change',\n  TEXT_CHANGE: 'text-change'\n};\nEmitter.sources = {\n  API: 'api',\n  SILENT: 'silent',\n  USER: 'user'\n};\n\nexports.default = Emitter;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Module = function Module(quill) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  _classCallCheck(this, Module);\n\n  this.quill = quill;\n  this.options = options;\n};\n\nModule.DEFAULTS = {};\n\nexports.default = Module;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar levels = ['error', 'warn', 'log', 'info'];\nvar level = 'warn';\n\nfunction debug(method) {\n  if (levels.indexOf(method) <= levels.indexOf(level)) {\n    var _console;\n\n    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    (_console = console)[method].apply(_console, args); // eslint-disable-line no-console\n  }\n}\n\nfunction namespace(ns) {\n  return levels.reduce(function (logger, method) {\n    logger[method] = debug.bind(console, method, ns);\n    return logger;\n  }, {});\n}\n\ndebug.level = namespace.level = function (newLevel) {\n  level = newLevel;\n};\n\nexports.default = namespace;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pSlice = Array.prototype.slice;\nvar objectKeys = __webpack_require__(52);\nvar isArguments = __webpack_require__(53);\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n  if (!opts) opts = {};\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (actual === expected) {\n    return true;\n\n  } else if (actual instanceof Date && expected instanceof Date) {\n    return actual.getTime() === expected.getTime();\n\n  // 7.3. Other pairs that do not both pass typeof value == 'object',\n  // equivalence is determined by ==.\n  } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n    return opts.strict ? actual === expected : actual == expected;\n\n  // 7.4. For all other Object pairs, including Array objects, equivalence is\n  // determined by having the same number of owned properties (as verified\n  // with Object.prototype.hasOwnProperty.call), the same set of keys\n  // (although not necessarily the same order), equivalent values for every\n  // corresponding key, and an identical 'prototype' property. Note: this\n  // accounts for both named and indexed properties on Arrays.\n  } else {\n    return objEquiv(actual, expected, opts);\n  }\n}\n\nfunction isUndefinedOrNull(value) {\n  return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n  if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n    return false;\n  }\n  if (x.length > 0 && typeof x[0] !== 'number') return false;\n  return true;\n}\n\nfunction objEquiv(a, b, opts) {\n  var i, key;\n  if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n    return false;\n  // an identical 'prototype' property.\n  if (a.prototype !== b.prototype) return false;\n  //~~~I've managed to break Object.keys through screwy arguments passing.\n  //   Converting to array solves the problem.\n  if (isArguments(a)) {\n    if (!isArguments(b)) {\n      return false;\n    }\n    a = pSlice.call(a);\n    b = pSlice.call(b);\n    return deepEqual(a, b, opts);\n  }\n  if (isBuffer(a)) {\n    if (!isBuffer(b)) {\n      return false;\n    }\n    if (a.length !== b.length) return false;\n    for (i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) return false;\n    }\n    return true;\n  }\n  try {\n    var ka = objectKeys(a),\n        kb = objectKeys(b);\n  } catch (e) {//happens when one is a string literal and the other isn't\n    return false;\n  }\n  // having the same number of owned properties (keys incorporates\n  // hasOwnProperty)\n  if (ka.length != kb.length)\n    return false;\n  //the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  //~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i])\n      return false;\n  }\n  //equivalent values for every corresponding key, and\n  //~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!deepEqual(a[key], b[key], opts)) return false;\n  }\n  return typeof a === typeof b;\n}\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar Attributor = /** @class */ (function () {\n    function Attributor(attrName, keyName, options) {\n        if (options === void 0) { options = {}; }\n        this.attrName = attrName;\n        this.keyName = keyName;\n        var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n        if (options.scope != null) {\n            // Ignore type bits, force attribute bit\n            this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n        }\n        else {\n            this.scope = Registry.Scope.ATTRIBUTE;\n        }\n        if (options.whitelist != null)\n            this.whitelist = options.whitelist;\n    }\n    Attributor.keys = function (node) {\n        return [].map.call(node.attributes, function (item) {\n            return item.name;\n        });\n    };\n    Attributor.prototype.add = function (node, value) {\n        if (!this.canAdd(node, value))\n            return false;\n        node.setAttribute(this.keyName, value);\n        return true;\n    };\n    Attributor.prototype.canAdd = function (node, value) {\n        var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n        if (match == null)\n            return false;\n        if (this.whitelist == null)\n            return true;\n        if (typeof value === 'string') {\n            return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n        }\n        else {\n            return this.whitelist.indexOf(value) > -1;\n        }\n    };\n    Attributor.prototype.remove = function (node) {\n        node.removeAttribute(this.keyName);\n    };\n    Attributor.prototype.value = function (node) {\n        var value = node.getAttribute(this.keyName);\n        if (this.canAdd(node, value) && value) {\n            return value;\n        }\n        return '';\n    };\n    return Attributor;\n}());\nexports.default = Attributor;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.Code = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Code = function (_Inline) {\n  _inherits(Code, _Inline);\n\n  function Code() {\n    _classCallCheck(this, Code);\n\n    return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));\n  }\n\n  return Code;\n}(_inline2.default);\n\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\nvar CodeBlock = function (_Block) {\n  _inherits(CodeBlock, _Block);\n\n  function CodeBlock() {\n    _classCallCheck(this, CodeBlock);\n\n    return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));\n  }\n\n  _createClass(CodeBlock, [{\n    key: 'delta',\n    value: function delta() {\n      var _this3 = this;\n\n      var text = this.domNode.textContent;\n      if (text.endsWith('\\n')) {\n        // Should always be true\n        text = text.slice(0, -1);\n      }\n      return text.split('\\n').reduce(function (delta, frag) {\n        return delta.insert(frag).insert('\\n', _this3.formats());\n      }, new _quillDelta2.default());\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      if (name === this.statics.blotName && value) return;\n\n      var _descendant = this.descendant(_text2.default, this.length() - 1),\n          _descendant2 = _slicedToArray(_descendant, 1),\n          text = _descendant2[0];\n\n      if (text != null) {\n        text.deleteAt(text.length() - 1, 1);\n      }\n      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      if (length === 0) return;\n      if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n        return;\n      }\n      var nextNewline = this.newlineIndex(index);\n      if (nextNewline < 0 || nextNewline >= index + length) return;\n      var prevNewline = this.newlineIndex(index, true) + 1;\n      var isolateLength = nextNewline - prevNewline + 1;\n      var blot = this.isolate(prevNewline, isolateLength);\n      var next = blot.next;\n      blot.format(name, value);\n      if (next instanceof CodeBlock) {\n        next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n      }\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (def != null) return;\n\n      var _descendant3 = this.descendant(_text2.default, index),\n          _descendant4 = _slicedToArray(_descendant3, 2),\n          text = _descendant4[0],\n          offset = _descendant4[1];\n\n      text.insertAt(offset, value);\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      var length = this.domNode.textContent.length;\n      if (!this.domNode.textContent.endsWith('\\n')) {\n        return length + 1;\n      }\n      return length;\n    }\n  }, {\n    key: 'newlineIndex',\n    value: function newlineIndex(searchIndex) {\n      var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (!reverse) {\n        var offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n        return offset > -1 ? searchIndex + offset : -1;\n      } else {\n        return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n      }\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      if (!this.domNode.textContent.endsWith('\\n')) {\n        this.appendChild(_parchment2.default.create('text', '\\n'));\n      }\n      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this, context);\n      var next = this.next;\n      if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n        next.optimize(context);\n        next.moveChildren(this);\n        next.remove();\n      }\n    }\n  }, {\n    key: 'replace',\n    value: function replace(target) {\n      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);\n      [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n        var blot = _parchment2.default.find(node);\n        if (blot == null) {\n          node.parentNode.removeChild(node);\n        } else if (blot instanceof _parchment2.default.Embed) {\n          blot.remove();\n        } else {\n          blot.unwrap();\n        }\n      });\n    }\n  }], [{\n    key: 'create',\n    value: function create(value) {\n      var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);\n      domNode.setAttribute('spellcheck', false);\n      return domNode;\n    }\n  }, {\n    key: 'formats',\n    value: function formats() {\n      return true;\n    }\n  }]);\n\n  return CodeBlock;\n}(_block2.default);\n\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = '  ';\n\nexports.Code = Code;\nexports.default = CodeBlock;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ASCII = /^[ -~]*$/;\n\nvar Editor = function () {\n  function Editor(scroll) {\n    _classCallCheck(this, Editor);\n\n    this.scroll = scroll;\n    this.delta = this.getDelta();\n  }\n\n  _createClass(Editor, [{\n    key: 'applyDelta',\n    value: function applyDelta(delta) {\n      var _this = this;\n\n      var consumeNextNewline = false;\n      this.scroll.update();\n      var scrollLength = this.scroll.length();\n      this.scroll.batchStart();\n      delta = normalizeDelta(delta);\n      delta.reduce(function (index, op) {\n        var length = op.retain || op.delete || op.insert.length || 1;\n        var attributes = op.attributes || {};\n        if (op.insert != null) {\n          if (typeof op.insert === 'string') {\n            var text = op.insert;\n            if (text.endsWith('\\n') && consumeNextNewline) {\n              consumeNextNewline = false;\n              text = text.slice(0, -1);\n            }\n            if (index >= scrollLength && !text.endsWith('\\n')) {\n              consumeNextNewline = true;\n            }\n            _this.scroll.insertAt(index, text);\n\n            var _scroll$line = _this.scroll.line(index),\n                _scroll$line2 = _slicedToArray(_scroll$line, 2),\n                line = _scroll$line2[0],\n                offset = _scroll$line2[1];\n\n            var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\n            if (line instanceof _block2.default) {\n              var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),\n                  _line$descendant2 = _slicedToArray(_line$descendant, 1),\n                  leaf = _line$descendant2[0];\n\n              formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\n            }\n            attributes = _op2.default.attributes.diff(formats, attributes) || {};\n          } else if (_typeof(op.insert) === 'object') {\n            var key = Object.keys(op.insert)[0]; // There should only be one key\n            if (key == null) return index;\n            _this.scroll.insertAt(index, key, op.insert[key]);\n          }\n          scrollLength += length;\n        }\n        Object.keys(attributes).forEach(function (name) {\n          _this.scroll.formatAt(index, length, name, attributes[name]);\n        });\n        return index + length;\n      }, 0);\n      delta.reduce(function (index, op) {\n        if (typeof op.delete === 'number') {\n          _this.scroll.deleteAt(index, op.delete);\n          return index;\n        }\n        return index + (op.retain || op.insert.length || 1);\n      }, 0);\n      this.scroll.batchEnd();\n      return this.update(delta);\n    }\n  }, {\n    key: 'deleteText',\n    value: function deleteText(index, length) {\n      this.scroll.deleteAt(index, length);\n      return this.update(new _quillDelta2.default().retain(index).delete(length));\n    }\n  }, {\n    key: 'formatLine',\n    value: function formatLine(index, length) {\n      var _this2 = this;\n\n      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      this.scroll.update();\n      Object.keys(formats).forEach(function (format) {\n        if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;\n        var lines = _this2.scroll.lines(index, Math.max(length, 1));\n        var lengthRemaining = length;\n        lines.forEach(function (line) {\n          var lineLength = line.length();\n          if (!(line instanceof _code2.default)) {\n            line.format(format, formats[format]);\n          } else {\n            var codeIndex = index - line.offset(_this2.scroll);\n            var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n            line.formatAt(codeIndex, codeLength, format, formats[format]);\n          }\n          lengthRemaining -= lineLength;\n        });\n      });\n      this.scroll.optimize();\n      return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n    }\n  }, {\n    key: 'formatText',\n    value: function formatText(index, length) {\n      var _this3 = this;\n\n      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      Object.keys(formats).forEach(function (format) {\n        _this3.scroll.formatAt(index, length, format, formats[format]);\n      });\n      return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n    }\n  }, {\n    key: 'getContents',\n    value: function getContents(index, length) {\n      return this.delta.slice(index, index + length);\n    }\n  }, {\n    key: 'getDelta',\n    value: function getDelta() {\n      return this.scroll.lines().reduce(function (delta, line) {\n        return delta.concat(line.delta());\n      }, new _quillDelta2.default());\n    }\n  }, {\n    key: 'getFormat',\n    value: function getFormat(index) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var lines = [],\n          leaves = [];\n      if (length === 0) {\n        this.scroll.path(index).forEach(function (path) {\n          var _path = _slicedToArray(path, 1),\n              blot = _path[0];\n\n          if (blot instanceof _block2.default) {\n            lines.push(blot);\n          } else if (blot instanceof _parchment2.default.Leaf) {\n            leaves.push(blot);\n          }\n        });\n      } else {\n        lines = this.scroll.lines(index, length);\n        leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);\n      }\n      var formatsArr = [lines, leaves].map(function (blots) {\n        if (blots.length === 0) return {};\n        var formats = (0, _block.bubbleFormats)(blots.shift());\n        while (Object.keys(formats).length > 0) {\n          var blot = blots.shift();\n          if (blot == null) return formats;\n          formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n        }\n        return formats;\n      });\n      return _extend2.default.apply(_extend2.default, formatsArr);\n    }\n  }, {\n    key: 'getText',\n    value: function getText(index, length) {\n      return this.getContents(index, length).filter(function (op) {\n        return typeof op.insert === 'string';\n      }).map(function (op) {\n        return op.insert;\n      }).join('');\n    }\n  }, {\n    key: 'insertEmbed',\n    value: function insertEmbed(index, embed, value) {\n      this.scroll.insertAt(index, embed, value);\n      return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));\n    }\n  }, {\n    key: 'insertText',\n    value: function insertText(index, text) {\n      var _this4 = this;\n\n      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n      this.scroll.insertAt(index, text);\n      Object.keys(formats).forEach(function (format) {\n        _this4.scroll.formatAt(index, text.length, format, formats[format]);\n      });\n      return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\n    }\n  }, {\n    key: 'isBlank',\n    value: function isBlank() {\n      if (this.scroll.children.length == 0) return true;\n      if (this.scroll.children.length > 1) return false;\n      var block = this.scroll.children.head;\n      if (block.statics.blotName !== _block2.default.blotName) return false;\n      if (block.children.length > 1) return false;\n      return block.children.head instanceof _break2.default;\n    }\n  }, {\n    key: 'removeFormat',\n    value: function removeFormat(index, length) {\n      var text = this.getText(index, length);\n\n      var _scroll$line3 = this.scroll.line(index + length),\n          _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n          line = _scroll$line4[0],\n          offset = _scroll$line4[1];\n\n      var suffixLength = 0,\n          suffix = new _quillDelta2.default();\n      if (line != null) {\n        if (!(line instanceof _code2.default)) {\n          suffixLength = line.length() - offset;\n        } else {\n          suffixLength = line.newlineIndex(offset) - offset + 1;\n        }\n        suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n      }\n      var contents = this.getContents(index, length + suffixLength);\n      var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\n      var delta = new _quillDelta2.default().retain(index).concat(diff);\n      return this.applyDelta(delta);\n    }\n  }, {\n    key: 'update',\n    value: function update(change) {\n      var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n      var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\n      var oldDelta = this.delta;\n      if (mutations.length === 1 && mutations[0].type === 'characterData' && mutations[0].target.data.match(ASCII) && _parchment2.default.find(mutations[0].target)) {\n        // Optimization for character changes\n        var textBlot = _parchment2.default.find(mutations[0].target);\n        var formats = (0, _block.bubbleFormats)(textBlot);\n        var index = textBlot.offset(this.scroll);\n        var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\n        var oldText = new _quillDelta2.default().insert(oldValue);\n        var newText = new _quillDelta2.default().insert(textBlot.value());\n        var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\n        change = diffDelta.reduce(function (delta, op) {\n          if (op.insert) {\n            return delta.insert(op.insert, formats);\n          } else {\n            return delta.push(op);\n          }\n        }, new _quillDelta2.default());\n        this.delta = oldDelta.compose(change);\n      } else {\n        this.delta = this.getDelta();\n        if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n          change = oldDelta.diff(this.delta, cursorIndex);\n        }\n      }\n      return change;\n    }\n  }]);\n\n  return Editor;\n}();\n\nfunction combineFormats(formats, combined) {\n  return Object.keys(combined).reduce(function (merged, name) {\n    if (formats[name] == null) return merged;\n    if (combined[name] === formats[name]) {\n      merged[name] = combined[name];\n    } else if (Array.isArray(combined[name])) {\n      if (combined[name].indexOf(formats[name]) < 0) {\n        merged[name] = combined[name].concat([formats[name]]);\n      }\n    } else {\n      merged[name] = [combined[name], formats[name]];\n    }\n    return merged;\n  }, {});\n}\n\nfunction normalizeDelta(delta) {\n  return delta.reduce(function (delta, op) {\n    if (op.insert === 1) {\n      var attributes = (0, _clone2.default)(op.attributes);\n      delete attributes['image'];\n      return delta.insert({ image: op.attributes.image }, attributes);\n    }\n    if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n      op = (0, _clone2.default)(op);\n      if (op.attributes.list) {\n        op.attributes.list = 'ordered';\n      } else {\n        op.attributes.list = 'bullet';\n        delete op.attributes.bullet;\n      }\n    }\n    if (typeof op.insert === 'string') {\n      var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n      return delta.insert(text, op.attributes);\n    }\n    return delta.push(op);\n  }, new _quillDelta2.default());\n}\n\nexports.default = Editor;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.Range = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill:selection');\n\nvar Range = function Range(index) {\n  var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n  _classCallCheck(this, Range);\n\n  this.index = index;\n  this.length = length;\n};\n\nvar Selection = function () {\n  function Selection(scroll, emitter) {\n    var _this = this;\n\n    _classCallCheck(this, Selection);\n\n    this.emitter = emitter;\n    this.scroll = scroll;\n    this.composing = false;\n    this.mouseDown = false;\n    this.root = this.scroll.domNode;\n    this.cursor = _parchment2.default.create('cursor', this);\n    // savedRange is last non-null range\n    this.lastRange = this.savedRange = new Range(0, 0);\n    this.handleComposition();\n    this.handleDragging();\n    this.emitter.listenDOM('selectionchange', document, function () {\n      if (!_this.mouseDown) {\n        setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 1);\n      }\n    });\n    this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {\n      if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {\n        _this.update(_emitter4.default.sources.SILENT);\n      }\n    });\n    this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {\n      if (!_this.hasFocus()) return;\n      var native = _this.getNativeRange();\n      if (native == null) return;\n      if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle\n      // TODO unclear if this has negative side effects\n      _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {\n        try {\n          _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n        } catch (ignored) {}\n      });\n    });\n    this.emitter.on(_emitter4.default.events.SCROLL_OPTIMIZE, function (mutations, context) {\n      if (context.range) {\n        var _context$range = context.range,\n            startNode = _context$range.startNode,\n            startOffset = _context$range.startOffset,\n            endNode = _context$range.endNode,\n            endOffset = _context$range.endOffset;\n\n        _this.setNativeRange(startNode, startOffset, endNode, endOffset);\n      }\n    });\n    this.update(_emitter4.default.sources.SILENT);\n  }\n\n  _createClass(Selection, [{\n    key: 'handleComposition',\n    value: function handleComposition() {\n      var _this2 = this;\n\n      this.root.addEventListener('compositionstart', function () {\n        _this2.composing = true;\n      });\n      this.root.addEventListener('compositionend', function () {\n        _this2.composing = false;\n        if (_this2.cursor.parent) {\n          var range = _this2.cursor.restore();\n          if (!range) return;\n          setTimeout(function () {\n            _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n          }, 1);\n        }\n      });\n    }\n  }, {\n    key: 'handleDragging',\n    value: function handleDragging() {\n      var _this3 = this;\n\n      this.emitter.listenDOM('mousedown', document.body, function () {\n        _this3.mouseDown = true;\n      });\n      this.emitter.listenDOM('mouseup', document.body, function () {\n        _this3.mouseDown = false;\n        _this3.update(_emitter4.default.sources.USER);\n      });\n    }\n  }, {\n    key: 'focus',\n    value: function focus() {\n      if (this.hasFocus()) return;\n      this.root.focus();\n      this.setRange(this.savedRange);\n    }\n  }, {\n    key: 'format',\n    value: function format(_format, value) {\n      if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;\n      this.scroll.update();\n      var nativeRange = this.getNativeRange();\n      if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;\n      if (nativeRange.start.node !== this.cursor.textNode) {\n        var blot = _parchment2.default.find(nativeRange.start.node, false);\n        if (blot == null) return;\n        // TODO Give blot ability to not split\n        if (blot instanceof _parchment2.default.Leaf) {\n          var after = blot.split(nativeRange.start.offset);\n          blot.parent.insertBefore(this.cursor, after);\n        } else {\n          blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n        }\n        this.cursor.attach();\n      }\n      this.cursor.format(_format, value);\n      this.scroll.optimize();\n      this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n      this.update();\n    }\n  }, {\n    key: 'getBounds',\n    value: function getBounds(index) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var scrollLength = this.scroll.length();\n      index = Math.min(index, scrollLength - 1);\n      length = Math.min(index + length, scrollLength - 1) - index;\n      var node = void 0,\n          _scroll$leaf = this.scroll.leaf(index),\n          _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),\n          leaf = _scroll$leaf2[0],\n          offset = _scroll$leaf2[1];\n      if (leaf == null) return null;\n\n      var _leaf$position = leaf.position(offset, true);\n\n      var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\n      node = _leaf$position2[0];\n      offset = _leaf$position2[1];\n\n      var range = document.createRange();\n      if (length > 0) {\n        range.setStart(node, offset);\n\n        var _scroll$leaf3 = this.scroll.leaf(index + length);\n\n        var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\n\n        leaf = _scroll$leaf4[0];\n        offset = _scroll$leaf4[1];\n\n        if (leaf == null) return null;\n\n        var _leaf$position3 = leaf.position(offset, true);\n\n        var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\n        node = _leaf$position4[0];\n        offset = _leaf$position4[1];\n\n        range.setEnd(node, offset);\n        return range.getBoundingClientRect();\n      } else {\n        var side = 'left';\n        var rect = void 0;\n        if (node instanceof Text) {\n          if (offset < node.data.length) {\n            range.setStart(node, offset);\n            range.setEnd(node, offset + 1);\n          } else {\n            range.setStart(node, offset - 1);\n            range.setEnd(node, offset);\n            side = 'right';\n          }\n          rect = range.getBoundingClientRect();\n        } else {\n          rect = leaf.domNode.getBoundingClientRect();\n          if (offset > 0) side = 'right';\n        }\n        return {\n          bottom: rect.top + rect.height,\n          height: rect.height,\n          left: rect[side],\n          right: rect[side],\n          top: rect.top,\n          width: 0\n        };\n      }\n    }\n  }, {\n    key: 'getNativeRange',\n    value: function getNativeRange() {\n      var selection = document.getSelection();\n      if (selection == null || selection.rangeCount <= 0) return null;\n      var nativeRange = selection.getRangeAt(0);\n      if (nativeRange == null) return null;\n      var range = this.normalizeNative(nativeRange);\n      debug.info('getNativeRange', range);\n      return range;\n    }\n  }, {\n    key: 'getRange',\n    value: function getRange() {\n      var normalized = this.getNativeRange();\n      if (normalized == null) return [null, null];\n      var range = this.normalizedToRange(normalized);\n      return [range, normalized];\n    }\n  }, {\n    key: 'hasFocus',\n    value: function hasFocus() {\n      return document.activeElement === this.root;\n    }\n  }, {\n    key: 'normalizedToRange',\n    value: function normalizedToRange(range) {\n      var _this4 = this;\n\n      var positions = [[range.start.node, range.start.offset]];\n      if (!range.native.collapsed) {\n        positions.push([range.end.node, range.end.offset]);\n      }\n      var indexes = positions.map(function (position) {\n        var _position = _slicedToArray(position, 2),\n            node = _position[0],\n            offset = _position[1];\n\n        var blot = _parchment2.default.find(node, true);\n        var index = blot.offset(_this4.scroll);\n        if (offset === 0) {\n          return index;\n        } else if (blot instanceof _parchment2.default.Container) {\n          return index + blot.length();\n        } else {\n          return index + blot.index(node, offset);\n        }\n      });\n      var end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1);\n      var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes)));\n      return new Range(start, end - start);\n    }\n  }, {\n    key: 'normalizeNative',\n    value: function normalizeNative(nativeRange) {\n      if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n        return null;\n      }\n      var range = {\n        start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n        end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n        native: nativeRange\n      };\n      [range.start, range.end].forEach(function (position) {\n        var node = position.node,\n            offset = position.offset;\n        while (!(node instanceof Text) && node.childNodes.length > 0) {\n          if (node.childNodes.length > offset) {\n            node = node.childNodes[offset];\n            offset = 0;\n          } else if (node.childNodes.length === offset) {\n            node = node.lastChild;\n            offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n          } else {\n            break;\n          }\n        }\n        position.node = node, position.offset = offset;\n      });\n      return range;\n    }\n  }, {\n    key: 'rangeToNative',\n    value: function rangeToNative(range) {\n      var _this5 = this;\n\n      var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n      var args = [];\n      var scrollLength = this.scroll.length();\n      indexes.forEach(function (index, i) {\n        index = Math.min(scrollLength - 1, index);\n        var node = void 0,\n            _scroll$leaf5 = _this5.scroll.leaf(index),\n            _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n            leaf = _scroll$leaf6[0],\n            offset = _scroll$leaf6[1];\n        var _leaf$position5 = leaf.position(offset, i !== 0);\n\n        var _leaf$position6 = _slicedToArray(_leaf$position5, 2);\n\n        node = _leaf$position6[0];\n        offset = _leaf$position6[1];\n\n        args.push(node, offset);\n      });\n      if (args.length < 2) {\n        args = args.concat(args);\n      }\n      return args;\n    }\n  }, {\n    key: 'scrollIntoView',\n    value: function scrollIntoView(scrollingContainer) {\n      var range = this.lastRange;\n      if (range == null) return;\n      var bounds = this.getBounds(range.index, range.length);\n      if (bounds == null) return;\n      var limit = this.scroll.length() - 1;\n\n      var _scroll$line = this.scroll.line(Math.min(range.index, limit)),\n          _scroll$line2 = _slicedToArray(_scroll$line, 1),\n          first = _scroll$line2[0];\n\n      var last = first;\n      if (range.length > 0) {\n        var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit));\n\n        var _scroll$line4 = _slicedToArray(_scroll$line3, 1);\n\n        last = _scroll$line4[0];\n      }\n      if (first == null || last == null) return;\n      var scrollBounds = scrollingContainer.getBoundingClientRect();\n      if (bounds.top < scrollBounds.top) {\n        scrollingContainer.scrollTop -= scrollBounds.top - bounds.top;\n      } else if (bounds.bottom > scrollBounds.bottom) {\n        scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom;\n      }\n    }\n  }, {\n    key: 'setNativeRange',\n    value: function setNativeRange(startNode, startOffset) {\n      var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n      var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n      var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n      debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n      if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n        return;\n      }\n      var selection = document.getSelection();\n      if (selection == null) return;\n      if (startNode != null) {\n        if (!this.hasFocus()) this.root.focus();\n        var native = (this.getNativeRange() || {}).native;\n        if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n\n          if (startNode.tagName == \"BR\") {\n            startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n            startNode = startNode.parentNode;\n          }\n          if (endNode.tagName == \"BR\") {\n            endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n            endNode = endNode.parentNode;\n          }\n          var range = document.createRange();\n          range.setStart(startNode, startOffset);\n          range.setEnd(endNode, endOffset);\n          selection.removeAllRanges();\n          selection.addRange(range);\n        }\n      } else {\n        selection.removeAllRanges();\n        this.root.blur();\n        document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n      }\n    }\n  }, {\n    key: 'setRange',\n    value: function setRange(range) {\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n      if (typeof force === 'string') {\n        source = force;\n        force = false;\n      }\n      debug.info('setRange', range);\n      if (range != null) {\n        var args = this.rangeToNative(range);\n        this.setNativeRange.apply(this, _toConsumableArray(args).concat([force]));\n      } else {\n        this.setNativeRange(null);\n      }\n      this.update(source);\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n      var oldRange = this.lastRange;\n\n      var _getRange = this.getRange(),\n          _getRange2 = _slicedToArray(_getRange, 2),\n          lastRange = _getRange2[0],\n          nativeRange = _getRange2[1];\n\n      this.lastRange = lastRange;\n      if (this.lastRange != null) {\n        this.savedRange = this.lastRange;\n      }\n      if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {\n        var _emitter;\n\n        if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n          this.cursor.restore();\n        }\n        var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\n        (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n        if (source !== _emitter4.default.sources.SILENT) {\n          var _emitter2;\n\n          (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n        }\n      }\n    }\n  }]);\n\n  return Selection;\n}();\n\nfunction contains(parent, descendant) {\n  try {\n    // Firefox inserts inaccessible nodes around video elements\n    descendant.parentNode;\n  } catch (e) {\n    return false;\n  }\n  // IE11 has bug with Text nodes\n  // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n  if (descendant instanceof Text) {\n    descendant = descendant.parentNode;\n  }\n  return parent.contains(descendant);\n}\n\nexports.Range = Range;\nexports.default = Selection;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Break = function (_Parchment$Embed) {\n  _inherits(Break, _Parchment$Embed);\n\n  function Break() {\n    _classCallCheck(this, Break);\n\n    return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));\n  }\n\n  _createClass(Break, [{\n    key: 'insertInto',\n    value: function insertInto(parent, ref) {\n      if (parent.children.length === 0) {\n        _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);\n      } else {\n        this.remove();\n      }\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      return 0;\n    }\n  }, {\n    key: 'value',\n    value: function value() {\n      return '';\n    }\n  }], [{\n    key: 'value',\n    value: function value() {\n      return undefined;\n    }\n  }]);\n\n  return Break;\n}(_parchment2.default.Embed);\n\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\nexports.default = Break;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar linked_list_1 = __webpack_require__(44);\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar ContainerBlot = /** @class */ (function (_super) {\n    __extends(ContainerBlot, _super);\n    function ContainerBlot(domNode) {\n        var _this = _super.call(this, domNode) || this;\n        _this.build();\n        return _this;\n    }\n    ContainerBlot.prototype.appendChild = function (other) {\n        this.insertBefore(other);\n    };\n    ContainerBlot.prototype.attach = function () {\n        _super.prototype.attach.call(this);\n        this.children.forEach(function (child) {\n            child.attach();\n        });\n    };\n    ContainerBlot.prototype.build = function () {\n        var _this = this;\n        this.children = new linked_list_1.default();\n        // Need to be reversed for if DOM nodes already in order\n        [].slice\n            .call(this.domNode.childNodes)\n            .reverse()\n            .forEach(function (node) {\n            try {\n                var child = makeBlot(node);\n                _this.insertBefore(child, _this.children.head || undefined);\n            }\n            catch (err) {\n                if (err instanceof Registry.ParchmentError)\n                    return;\n                else\n                    throw err;\n            }\n        });\n    };\n    ContainerBlot.prototype.deleteAt = function (index, length) {\n        if (index === 0 && length === this.length()) {\n            return this.remove();\n        }\n        this.children.forEachAt(index, length, function (child, offset, length) {\n            child.deleteAt(offset, length);\n        });\n    };\n    ContainerBlot.prototype.descendant = function (criteria, index) {\n        var _a = this.children.find(index), child = _a[0], offset = _a[1];\n        if ((criteria.blotName == null && criteria(child)) ||\n            (criteria.blotName != null && child instanceof criteria)) {\n            return [child, offset];\n        }\n        else if (child instanceof ContainerBlot) {\n            return child.descendant(criteria, offset);\n        }\n        else {\n            return [null, -1];\n        }\n    };\n    ContainerBlot.prototype.descendants = function (criteria, index, length) {\n        if (index === void 0) { index = 0; }\n        if (length === void 0) { length = Number.MAX_VALUE; }\n        var descendants = [];\n        var lengthLeft = length;\n        this.children.forEachAt(index, length, function (child, index, length) {\n            if ((criteria.blotName == null && criteria(child)) ||\n                (criteria.blotName != null && child instanceof criteria)) {\n                descendants.push(child);\n            }\n            if (child instanceof ContainerBlot) {\n                descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n            }\n            lengthLeft -= length;\n        });\n        return descendants;\n    };\n    ContainerBlot.prototype.detach = function () {\n        this.children.forEach(function (child) {\n            child.detach();\n        });\n        _super.prototype.detach.call(this);\n    };\n    ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n        this.children.forEachAt(index, length, function (child, offset, length) {\n            child.formatAt(offset, length, name, value);\n        });\n    };\n    ContainerBlot.prototype.insertAt = function (index, value, def) {\n        var _a = this.children.find(index), child = _a[0], offset = _a[1];\n        if (child) {\n            child.insertAt(offset, value, def);\n        }\n        else {\n            var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n            this.appendChild(blot);\n        }\n    };\n    ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n        if (this.statics.allowedChildren != null &&\n            !this.statics.allowedChildren.some(function (child) {\n                return childBlot instanceof child;\n            })) {\n            throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n        }\n        childBlot.insertInto(this, refBlot);\n    };\n    ContainerBlot.prototype.length = function () {\n        return this.children.reduce(function (memo, child) {\n            return memo + child.length();\n        }, 0);\n    };\n    ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n        this.children.forEach(function (child) {\n            targetParent.insertBefore(child, refNode);\n        });\n    };\n    ContainerBlot.prototype.optimize = function (context) {\n        _super.prototype.optimize.call(this, context);\n        if (this.children.length === 0) {\n            if (this.statics.defaultChild != null) {\n                var child = Registry.create(this.statics.defaultChild);\n                this.appendChild(child);\n                child.optimize(context);\n            }\n            else {\n                this.remove();\n            }\n        }\n    };\n    ContainerBlot.prototype.path = function (index, inclusive) {\n        if (inclusive === void 0) { inclusive = false; }\n        var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n        var position = [[this, index]];\n        if (child instanceof ContainerBlot) {\n            return position.concat(child.path(offset, inclusive));\n        }\n        else if (child != null) {\n            position.push([child, offset]);\n        }\n        return position;\n    };\n    ContainerBlot.prototype.removeChild = function (child) {\n        this.children.remove(child);\n    };\n    ContainerBlot.prototype.replace = function (target) {\n        if (target instanceof ContainerBlot) {\n            target.moveChildren(this);\n        }\n        _super.prototype.replace.call(this, target);\n    };\n    ContainerBlot.prototype.split = function (index, force) {\n        if (force === void 0) { force = false; }\n        if (!force) {\n            if (index === 0)\n                return this;\n            if (index === this.length())\n                return this.next;\n        }\n        var after = this.clone();\n        this.parent.insertBefore(after, this.next);\n        this.children.forEachAt(index, this.length(), function (child, offset, length) {\n            child = child.split(offset, force);\n            after.appendChild(child);\n        });\n        return after;\n    };\n    ContainerBlot.prototype.unwrap = function () {\n        this.moveChildren(this.parent, this.next);\n        this.remove();\n    };\n    ContainerBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        var addedNodes = [];\n        var removedNodes = [];\n        mutations.forEach(function (mutation) {\n            if (mutation.target === _this.domNode && mutation.type === 'childList') {\n                addedNodes.push.apply(addedNodes, mutation.addedNodes);\n                removedNodes.push.apply(removedNodes, mutation.removedNodes);\n            }\n        });\n        removedNodes.forEach(function (node) {\n            // Check node has actually been removed\n            // One exception is Chrome does not immediately remove IFRAMEs\n            // from DOM but MutationRecord is correct in its reported removal\n            if (node.parentNode != null &&\n                // @ts-ignore\n                node.tagName !== 'IFRAME' &&\n                document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n                return;\n            }\n            var blot = Registry.find(node);\n            if (blot == null)\n                return;\n            if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n                blot.detach();\n            }\n        });\n        addedNodes\n            .filter(function (node) {\n            return node.parentNode == _this.domNode;\n        })\n            .sort(function (a, b) {\n            if (a === b)\n                return 0;\n            if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n                return 1;\n            }\n            return -1;\n        })\n            .forEach(function (node) {\n            var refBlot = null;\n            if (node.nextSibling != null) {\n                refBlot = Registry.find(node.nextSibling);\n            }\n            var blot = makeBlot(node);\n            if (blot.next != refBlot || blot.next == null) {\n                if (blot.parent != null) {\n                    blot.parent.removeChild(_this);\n                }\n                _this.insertBefore(blot, refBlot || undefined);\n            }\n        });\n    };\n    return ContainerBlot;\n}(shadow_1.default));\nfunction makeBlot(node) {\n    var blot = Registry.find(node);\n    if (blot == null) {\n        try {\n            blot = Registry.create(node);\n        }\n        catch (e) {\n            blot = Registry.create(Registry.Scope.INLINE);\n            [].slice.call(node.childNodes).forEach(function (child) {\n                // @ts-ignore\n                blot.domNode.appendChild(child);\n            });\n            if (node.parentNode) {\n                node.parentNode.replaceChild(blot.domNode, node);\n            }\n            blot.attach();\n        }\n    }\n    return blot;\n}\nexports.default = ContainerBlot;\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar store_1 = __webpack_require__(31);\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar FormatBlot = /** @class */ (function (_super) {\n    __extends(FormatBlot, _super);\n    function FormatBlot(domNode) {\n        var _this = _super.call(this, domNode) || this;\n        _this.attributes = new store_1.default(_this.domNode);\n        return _this;\n    }\n    FormatBlot.formats = function (domNode) {\n        if (typeof this.tagName === 'string') {\n            return true;\n        }\n        else if (Array.isArray(this.tagName)) {\n            return domNode.tagName.toLowerCase();\n        }\n        return undefined;\n    };\n    FormatBlot.prototype.format = function (name, value) {\n        var format = Registry.query(name);\n        if (format instanceof attributor_1.default) {\n            this.attributes.attribute(format, value);\n        }\n        else if (value) {\n            if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n                this.replaceWith(name, value);\n            }\n        }\n    };\n    FormatBlot.prototype.formats = function () {\n        var formats = this.attributes.values();\n        var format = this.statics.formats(this.domNode);\n        if (format != null) {\n            formats[this.statics.blotName] = format;\n        }\n        return formats;\n    };\n    FormatBlot.prototype.replaceWith = function (name, value) {\n        var replacement = _super.prototype.replaceWith.call(this, name, value);\n        this.attributes.copy(replacement);\n        return replacement;\n    };\n    FormatBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        _super.prototype.update.call(this, mutations, context);\n        if (mutations.some(function (mutation) {\n            return mutation.target === _this.domNode && mutation.type === 'attributes';\n        })) {\n            this.attributes.build();\n        }\n    };\n    FormatBlot.prototype.wrap = function (name, value) {\n        var wrapper = _super.prototype.wrap.call(this, name, value);\n        if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n            this.attributes.move(wrapper);\n        }\n        return wrapper;\n    };\n    return FormatBlot;\n}(container_1.default));\nexports.default = FormatBlot;\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar LeafBlot = /** @class */ (function (_super) {\n    __extends(LeafBlot, _super);\n    function LeafBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    LeafBlot.value = function (domNode) {\n        return true;\n    };\n    LeafBlot.prototype.index = function (node, offset) {\n        if (this.domNode === node ||\n            this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n            return Math.min(offset, 1);\n        }\n        return -1;\n    };\n    LeafBlot.prototype.position = function (index, inclusive) {\n        var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n        if (index > 0)\n            offset += 1;\n        return [this.parent.domNode, offset];\n    };\n    LeafBlot.prototype.value = function () {\n        return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n        var _a;\n    };\n    LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n    return LeafBlot;\n}(shadow_1.default));\nexports.default = LeafBlot;\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\n\n\nvar lib = {\n  attributes: {\n    compose: function (a, b, keepNull) {\n      if (typeof a !== 'object') a = {};\n      if (typeof b !== 'object') b = {};\n      var attributes = extend(true, {}, b);\n      if (!keepNull) {\n        attributes = Object.keys(attributes).reduce(function (copy, key) {\n          if (attributes[key] != null) {\n            copy[key] = attributes[key];\n          }\n          return copy;\n        }, {});\n      }\n      for (var key in a) {\n        if (a[key] !== undefined && b[key] === undefined) {\n          attributes[key] = a[key];\n        }\n      }\n      return Object.keys(attributes).length > 0 ? attributes : undefined;\n    },\n\n    diff: function(a, b) {\n      if (typeof a !== 'object') a = {};\n      if (typeof b !== 'object') b = {};\n      var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n        if (!equal(a[key], b[key])) {\n          attributes[key] = b[key] === undefined ? null : b[key];\n        }\n        return attributes;\n      }, {});\n      return Object.keys(attributes).length > 0 ? attributes : undefined;\n    },\n\n    transform: function (a, b, priority) {\n      if (typeof a !== 'object') return b;\n      if (typeof b !== 'object') return undefined;\n      if (!priority) return b;  // b simply overwrites us without priority\n      var attributes = Object.keys(b).reduce(function (attributes, key) {\n        if (a[key] === undefined) attributes[key] = b[key];  // null is a valid value\n        return attributes;\n      }, {});\n      return Object.keys(attributes).length > 0 ? attributes : undefined;\n    }\n  },\n\n  iterator: function (ops) {\n    return new Iterator(ops);\n  },\n\n  length: function (op) {\n    if (typeof op['delete'] === 'number') {\n      return op['delete'];\n    } else if (typeof op.retain === 'number') {\n      return op.retain;\n    } else {\n      return typeof op.insert === 'string' ? op.insert.length : 1;\n    }\n  }\n};\n\n\nfunction Iterator(ops) {\n  this.ops = ops;\n  this.index = 0;\n  this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n  return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n  if (!length) length = Infinity;\n  var nextOp = this.ops[this.index];\n  if (nextOp) {\n    var offset = this.offset;\n    var opLength = lib.length(nextOp)\n    if (length >= opLength - offset) {\n      length = opLength - offset;\n      this.index += 1;\n      this.offset = 0;\n    } else {\n      this.offset += length;\n    }\n    if (typeof nextOp['delete'] === 'number') {\n      return { 'delete': length };\n    } else {\n      var retOp = {};\n      if (nextOp.attributes) {\n        retOp.attributes = nextOp.attributes;\n      }\n      if (typeof nextOp.retain === 'number') {\n        retOp.retain = length;\n      } else if (typeof nextOp.insert === 'string') {\n        retOp.insert = nextOp.insert.substr(offset, length);\n      } else {\n        // offset should === 0, length should === 1\n        retOp.insert = nextOp.insert;\n      }\n      return retOp;\n    }\n  } else {\n    return { retain: Infinity };\n  }\n};\n\nIterator.prototype.peek = function () {\n  return this.ops[this.index];\n};\n\nIterator.prototype.peekLength = function () {\n  if (this.ops[this.index]) {\n    // Should never return 0 if our index is being managed correctly\n    return lib.length(this.ops[this.index]) - this.offset;\n  } else {\n    return Infinity;\n  }\n};\n\nIterator.prototype.peekType = function () {\n  if (this.ops[this.index]) {\n    if (typeof this.ops[this.index]['delete'] === 'number') {\n      return 'delete';\n    } else if (typeof this.ops[this.index].retain === 'number') {\n      return 'retain';\n    } else {\n      return 'insert';\n    }\n  }\n  return 'retain';\n};\n\n\nmodule.exports = lib;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\nvar clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n  return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n  nativeMap = Map;\n} catch(_) {\n  // maybe a reference error because no `Map`. Give it a dummy value that no\n  // value will ever be an instanceof.\n  nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n  nativeSet = Set;\n} catch(_) {\n  nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n  nativePromise = Promise;\n} catch(_) {\n  nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n *    circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n *    a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n *    (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n *    should be cloned as well. Non-enumerable properties on the prototype\n *    chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n  if (typeof circular === 'object') {\n    depth = circular.depth;\n    prototype = circular.prototype;\n    includeNonEnumerable = circular.includeNonEnumerable;\n    circular = circular.circular;\n  }\n  // maintain two arrays for circular references, where corresponding parents\n  // and children have the same index\n  var allParents = [];\n  var allChildren = [];\n\n  var useBuffer = typeof Buffer != 'undefined';\n\n  if (typeof circular == 'undefined')\n    circular = true;\n\n  if (typeof depth == 'undefined')\n    depth = Infinity;\n\n  // recurse this function so we don't reset allParents and allChildren\n  function _clone(parent, depth) {\n    // cloning null always returns null\n    if (parent === null)\n      return null;\n\n    if (depth === 0)\n      return parent;\n\n    var child;\n    var proto;\n    if (typeof parent != 'object') {\n      return parent;\n    }\n\n    if (_instanceof(parent, nativeMap)) {\n      child = new nativeMap();\n    } else if (_instanceof(parent, nativeSet)) {\n      child = new nativeSet();\n    } else if (_instanceof(parent, nativePromise)) {\n      child = new nativePromise(function (resolve, reject) {\n        parent.then(function(value) {\n          resolve(_clone(value, depth - 1));\n        }, function(err) {\n          reject(_clone(err, depth - 1));\n        });\n      });\n    } else if (clone.__isArray(parent)) {\n      child = [];\n    } else if (clone.__isRegExp(parent)) {\n      child = new RegExp(parent.source, __getRegExpFlags(parent));\n      if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n    } else if (clone.__isDate(parent)) {\n      child = new Date(parent.getTime());\n    } else if (useBuffer && Buffer.isBuffer(parent)) {\n      child = new Buffer(parent.length);\n      parent.copy(child);\n      return child;\n    } else if (_instanceof(parent, Error)) {\n      child = Object.create(parent);\n    } else {\n      if (typeof prototype == 'undefined') {\n        proto = Object.getPrototypeOf(parent);\n        child = Object.create(proto);\n      }\n      else {\n        child = Object.create(prototype);\n        proto = prototype;\n      }\n    }\n\n    if (circular) {\n      var index = allParents.indexOf(parent);\n\n      if (index != -1) {\n        return allChildren[index];\n      }\n      allParents.push(parent);\n      allChildren.push(child);\n    }\n\n    if (_instanceof(parent, nativeMap)) {\n      parent.forEach(function(value, key) {\n        var keyChild = _clone(key, depth - 1);\n        var valueChild = _clone(value, depth - 1);\n        child.set(keyChild, valueChild);\n      });\n    }\n    if (_instanceof(parent, nativeSet)) {\n      parent.forEach(function(value) {\n        var entryChild = _clone(value, depth - 1);\n        child.add(entryChild);\n      });\n    }\n\n    for (var i in parent) {\n      var attrs;\n      if (proto) {\n        attrs = Object.getOwnPropertyDescriptor(proto, i);\n      }\n\n      if (attrs && attrs.set == null) {\n        continue;\n      }\n      child[i] = _clone(parent[i], depth - 1);\n    }\n\n    if (Object.getOwnPropertySymbols) {\n      var symbols = Object.getOwnPropertySymbols(parent);\n      for (var i = 0; i < symbols.length; i++) {\n        // Don't need to worry about cloning a symbol because it is a primitive,\n        // like a number or string.\n        var symbol = symbols[i];\n        var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n        if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n          continue;\n        }\n        child[symbol] = _clone(parent[symbol], depth - 1);\n        if (!descriptor.enumerable) {\n          Object.defineProperty(child, symbol, {\n            enumerable: false\n          });\n        }\n      }\n    }\n\n    if (includeNonEnumerable) {\n      var allPropertyNames = Object.getOwnPropertyNames(parent);\n      for (var i = 0; i < allPropertyNames.length; i++) {\n        var propertyName = allPropertyNames[i];\n        var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n        if (descriptor && descriptor.enumerable) {\n          continue;\n        }\n        child[propertyName] = _clone(parent[propertyName], depth - 1);\n        Object.defineProperty(child, propertyName, {\n          enumerable: false\n        });\n      }\n    }\n\n    return child;\n  }\n\n  return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n  if (parent === null)\n    return null;\n\n  var c = function () {};\n  c.prototype = parent;\n  return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n  return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n  var flags = '';\n  if (re.global) flags += 'g';\n  if (re.ignoreCase) flags += 'i';\n  if (re.multiline) flags += 'm';\n  return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n  module.exports = clone;\n}\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction isLine(blot) {\n  return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\n}\n\nvar Scroll = function (_Parchment$Scroll) {\n  _inherits(Scroll, _Parchment$Scroll);\n\n  function Scroll(domNode, config) {\n    _classCallCheck(this, Scroll);\n\n    var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));\n\n    _this.emitter = config.emitter;\n    if (Array.isArray(config.whitelist)) {\n      _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n        whitelist[format] = true;\n        return whitelist;\n      }, {});\n    }\n    // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\n    _this.domNode.addEventListener('DOMNodeInserted', function () {});\n    _this.optimize();\n    _this.enable();\n    return _this;\n  }\n\n  _createClass(Scroll, [{\n    key: 'batchStart',\n    value: function batchStart() {\n      this.batch = true;\n    }\n  }, {\n    key: 'batchEnd',\n    value: function batchEnd() {\n      this.batch = false;\n      this.optimize();\n    }\n  }, {\n    key: 'deleteAt',\n    value: function deleteAt(index, length) {\n      var _line = this.line(index),\n          _line2 = _slicedToArray(_line, 2),\n          first = _line2[0],\n          offset = _line2[1];\n\n      var _line3 = this.line(index + length),\n          _line4 = _slicedToArray(_line3, 1),\n          last = _line4[0];\n\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);\n      if (last != null && first !== last && offset > 0) {\n        if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) {\n          this.optimize();\n          return;\n        }\n        if (first instanceof _code2.default) {\n          var newlineIndex = first.newlineIndex(first.length(), true);\n          if (newlineIndex > -1) {\n            first = first.split(newlineIndex + 1);\n            if (first === last) {\n              this.optimize();\n              return;\n            }\n          }\n        } else if (last instanceof _code2.default) {\n          var _newlineIndex = last.newlineIndex(0);\n          if (_newlineIndex > -1) {\n            last.split(_newlineIndex + 1);\n          }\n        }\n        var ref = last.children.head instanceof _break2.default ? null : last.children.head;\n        first.moveChildren(last, ref);\n        first.remove();\n      }\n      this.optimize();\n    }\n  }, {\n    key: 'enable',\n    value: function enable() {\n      var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n      this.domNode.setAttribute('contenteditable', enabled);\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, format, value) {\n      if (this.whitelist != null && !this.whitelist[format]) return;\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\n      this.optimize();\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n      if (index >= this.length()) {\n        if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {\n          var blot = _parchment2.default.create(this.statics.defaultChild);\n          this.appendChild(blot);\n          if (def == null && value.endsWith('\\n')) {\n            value = value.slice(0, -1);\n          }\n          blot.insertAt(0, value, def);\n        } else {\n          var embed = _parchment2.default.create(value, def);\n          this.appendChild(embed);\n        }\n      } else {\n        _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);\n      }\n      this.optimize();\n    }\n  }, {\n    key: 'insertBefore',\n    value: function insertBefore(blot, ref) {\n      if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {\n        var wrapper = _parchment2.default.create(this.statics.defaultChild);\n        wrapper.appendChild(blot);\n        blot = wrapper;\n      }\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);\n    }\n  }, {\n    key: 'leaf',\n    value: function leaf(index) {\n      return this.path(index).pop() || [null, -1];\n    }\n  }, {\n    key: 'line',\n    value: function line(index) {\n      if (index === this.length()) {\n        return this.line(index - 1);\n      }\n      return this.descendant(isLine, index);\n    }\n  }, {\n    key: 'lines',\n    value: function lines() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n      var getLines = function getLines(blot, index, length) {\n        var lines = [],\n            lengthLeft = length;\n        blot.children.forEachAt(index, length, function (child, index, length) {\n          if (isLine(child)) {\n            lines.push(child);\n          } else if (child instanceof _parchment2.default.Container) {\n            lines = lines.concat(getLines(child, index, lengthLeft));\n          }\n          lengthLeft -= length;\n        });\n        return lines;\n      };\n      return getLines(this, index, length);\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize() {\n      var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      if (this.batch === true) return;\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations, context);\n      if (mutations.length > 0) {\n        this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations, context);\n      }\n    }\n  }, {\n    key: 'path',\n    value: function path(index) {\n      return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self\n    }\n  }, {\n    key: 'update',\n    value: function update(mutations) {\n      if (this.batch === true) return;\n      var source = _emitter2.default.sources.USER;\n      if (typeof mutations === 'string') {\n        source = mutations;\n      }\n      if (!Array.isArray(mutations)) {\n        mutations = this.observer.takeRecords();\n      }\n      if (mutations.length > 0) {\n        this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\n      }\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\n      if (mutations.length > 0) {\n        this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);\n      }\n    }\n  }]);\n\n  return Scroll;\n}(_parchment2.default.Scroll);\n\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\n\nexports.default = Scroll;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SHORTKEY = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:keyboard');\n\nvar SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\nvar Keyboard = function (_Module) {\n  _inherits(Keyboard, _Module);\n\n  _createClass(Keyboard, null, [{\n    key: 'match',\n    value: function match(evt, binding) {\n      binding = normalize(binding);\n      if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n        return !!binding[key] !== evt[key] && binding[key] !== null;\n      })) {\n        return false;\n      }\n      return binding.key === (evt.which || evt.keyCode);\n    }\n  }]);\n\n  function Keyboard(quill, options) {\n    _classCallCheck(this, Keyboard);\n\n    var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));\n\n    _this.bindings = {};\n    Object.keys(_this.options.bindings).forEach(function (name) {\n      if (name === 'list autofill' && quill.scroll.whitelist != null && !quill.scroll.whitelist['list']) {\n        return;\n      }\n      if (_this.options.bindings[name]) {\n        _this.addBinding(_this.options.bindings[name]);\n      }\n    });\n    _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n    _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});\n    if (/Firefox/i.test(navigator.userAgent)) {\n      // Need to handle delete and backspace for Firefox in the general case #1171\n      _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n      _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n    } else {\n      _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n      _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n    }\n    _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n    _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n    _this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null }, { collapsed: true, offset: 0 }, handleBackspace);\n    _this.listen();\n    return _this;\n  }\n\n  _createClass(Keyboard, [{\n    key: 'addBinding',\n    value: function addBinding(key) {\n      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      var binding = normalize(key);\n      if (binding == null || binding.key == null) {\n        return debug.warn('Attempted to add invalid keyboard binding', binding);\n      }\n      if (typeof context === 'function') {\n        context = { handler: context };\n      }\n      if (typeof handler === 'function') {\n        handler = { handler: handler };\n      }\n      binding = (0, _extend2.default)(binding, context, handler);\n      this.bindings[binding.key] = this.bindings[binding.key] || [];\n      this.bindings[binding.key].push(binding);\n    }\n  }, {\n    key: 'listen',\n    value: function listen() {\n      var _this2 = this;\n\n      this.quill.root.addEventListener('keydown', function (evt) {\n        if (evt.defaultPrevented) return;\n        var which = evt.which || evt.keyCode;\n        var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n          return Keyboard.match(evt, binding);\n        });\n        if (bindings.length === 0) return;\n        var range = _this2.quill.getSelection();\n        if (range == null || !_this2.quill.hasFocus()) return;\n\n        var _quill$getLine = _this2.quill.getLine(range.index),\n            _quill$getLine2 = _slicedToArray(_quill$getLine, 2),\n            line = _quill$getLine2[0],\n            offset = _quill$getLine2[1];\n\n        var _quill$getLeaf = _this2.quill.getLeaf(range.index),\n            _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),\n            leafStart = _quill$getLeaf2[0],\n            offsetStart = _quill$getLeaf2[1];\n\n        var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),\n            _ref2 = _slicedToArray(_ref, 2),\n            leafEnd = _ref2[0],\n            offsetEnd = _ref2[1];\n\n        var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';\n        var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';\n        var curContext = {\n          collapsed: range.length === 0,\n          empty: range.length === 0 && line.length() <= 1,\n          format: _this2.quill.getFormat(range),\n          offset: offset,\n          prefix: prefixText,\n          suffix: suffixText\n        };\n        var prevented = bindings.some(function (binding) {\n          if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n          if (binding.empty != null && binding.empty !== curContext.empty) return false;\n          if (binding.offset != null && binding.offset !== curContext.offset) return false;\n          if (Array.isArray(binding.format)) {\n            // any format is present\n            if (binding.format.every(function (name) {\n              return curContext.format[name] == null;\n            })) {\n              return false;\n            }\n          } else if (_typeof(binding.format) === 'object') {\n            // all formats must match\n            if (!Object.keys(binding.format).every(function (name) {\n              if (binding.format[name] === true) return curContext.format[name] != null;\n              if (binding.format[name] === false) return curContext.format[name] == null;\n              return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\n            })) {\n              return false;\n            }\n          }\n          if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n          if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n          return binding.handler.call(_this2, range, curContext) !== true;\n        });\n        if (prevented) {\n          evt.preventDefault();\n        }\n      });\n    }\n  }]);\n\n  return Keyboard;\n}(_module2.default);\n\nKeyboard.keys = {\n  BACKSPACE: 8,\n  TAB: 9,\n  ENTER: 13,\n  ESCAPE: 27,\n  LEFT: 37,\n  UP: 38,\n  RIGHT: 39,\n  DOWN: 40,\n  DELETE: 46\n};\n\nKeyboard.DEFAULTS = {\n  bindings: {\n    'bold': makeFormatHandler('bold'),\n    'italic': makeFormatHandler('italic'),\n    'underline': makeFormatHandler('underline'),\n    'indent': {\n      // highlight tab or tab at beginning of list, indent or blockquote\n      key: Keyboard.keys.TAB,\n      format: ['blockquote', 'indent', 'list'],\n      handler: function handler(range, context) {\n        if (context.collapsed && context.offset !== 0) return true;\n        this.quill.format('indent', '+1', _quill2.default.sources.USER);\n      }\n    },\n    'outdent': {\n      key: Keyboard.keys.TAB,\n      shiftKey: true,\n      format: ['blockquote', 'indent', 'list'],\n      // highlight tab or tab at beginning of list, indent or blockquote\n      handler: function handler(range, context) {\n        if (context.collapsed && context.offset !== 0) return true;\n        this.quill.format('indent', '-1', _quill2.default.sources.USER);\n      }\n    },\n    'outdent backspace': {\n      key: Keyboard.keys.BACKSPACE,\n      collapsed: true,\n      shiftKey: null,\n      metaKey: null,\n      ctrlKey: null,\n      altKey: null,\n      format: ['indent', 'list'],\n      offset: 0,\n      handler: function handler(range, context) {\n        if (context.format.indent != null) {\n          this.quill.format('indent', '-1', _quill2.default.sources.USER);\n        } else if (context.format.list != null) {\n          this.quill.format('list', false, _quill2.default.sources.USER);\n        }\n      }\n    },\n    'indent code-block': makeCodeBlockHandler(true),\n    'outdent code-block': makeCodeBlockHandler(false),\n    'remove tab': {\n      key: Keyboard.keys.TAB,\n      shiftKey: true,\n      collapsed: true,\n      prefix: /\\t$/,\n      handler: function handler(range) {\n        this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n      }\n    },\n    'tab': {\n      key: Keyboard.keys.TAB,\n      handler: function handler(range) {\n        this.quill.history.cutoff();\n        var delta = new _quillDelta2.default().retain(range.index).delete(range.length).insert('\\t');\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.history.cutoff();\n        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n      }\n    },\n    'list empty enter': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: ['list'],\n      empty: true,\n      handler: function handler(range, context) {\n        this.quill.format('list', false, _quill2.default.sources.USER);\n        if (context.format.indent) {\n          this.quill.format('indent', false, _quill2.default.sources.USER);\n        }\n      }\n    },\n    'checklist enter': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: { list: 'checked' },\n      handler: function handler(range) {\n        var _quill$getLine3 = this.quill.getLine(range.index),\n            _quill$getLine4 = _slicedToArray(_quill$getLine3, 2),\n            line = _quill$getLine4[0],\n            offset = _quill$getLine4[1];\n\n        var formats = (0, _extend2.default)({}, line.formats(), { list: 'checked' });\n        var delta = new _quillDelta2.default().retain(range.index).insert('\\n', formats).retain(line.length() - offset - 1).retain(1, { list: 'unchecked' });\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n        this.quill.scrollIntoView();\n      }\n    },\n    'header enter': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: ['header'],\n      suffix: /^$/,\n      handler: function handler(range, context) {\n        var _quill$getLine5 = this.quill.getLine(range.index),\n            _quill$getLine6 = _slicedToArray(_quill$getLine5, 2),\n            line = _quill$getLine6[0],\n            offset = _quill$getLine6[1];\n\n        var delta = new _quillDelta2.default().retain(range.index).insert('\\n', context.format).retain(line.length() - offset - 1).retain(1, { header: null });\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n        this.quill.scrollIntoView();\n      }\n    },\n    'list autofill': {\n      key: ' ',\n      collapsed: true,\n      format: { list: false },\n      prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n      handler: function handler(range, context) {\n        var length = context.prefix.length;\n\n        var _quill$getLine7 = this.quill.getLine(range.index),\n            _quill$getLine8 = _slicedToArray(_quill$getLine7, 2),\n            line = _quill$getLine8[0],\n            offset = _quill$getLine8[1];\n\n        if (offset > length) return true;\n        var value = void 0;\n        switch (context.prefix.trim()) {\n          case '[]':case '[ ]':\n            value = 'unchecked';\n            break;\n          case '[x]':\n            value = 'checked';\n            break;\n          case '-':case '*':\n            value = 'bullet';\n            break;\n          default:\n            value = 'ordered';\n        }\n        this.quill.insertText(range.index, ' ', _quill2.default.sources.USER);\n        this.quill.history.cutoff();\n        var delta = new _quillDelta2.default().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, { list: value });\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.history.cutoff();\n        this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\n      }\n    },\n    'code exit': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: ['code-block'],\n      prefix: /\\n\\n$/,\n      suffix: /^\\s+$/,\n      handler: function handler(range) {\n        var _quill$getLine9 = this.quill.getLine(range.index),\n            _quill$getLine10 = _slicedToArray(_quill$getLine9, 2),\n            line = _quill$getLine10[0],\n            offset = _quill$getLine10[1];\n\n        var delta = new _quillDelta2.default().retain(range.index + line.length() - offset - 2).retain(1, { 'code-block': null }).delete(1);\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n      }\n    },\n    'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),\n    'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),\n    'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),\n    'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)\n  }\n};\n\nfunction makeEmbedArrowHandler(key, shiftKey) {\n  var _ref3;\n\n  var where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';\n  return _ref3 = {\n    key: key,\n    shiftKey: shiftKey,\n    altKey: null\n  }, _defineProperty(_ref3, where, /^$/), _defineProperty(_ref3, 'handler', function handler(range) {\n    var index = range.index;\n    if (key === Keyboard.keys.RIGHT) {\n      index += range.length + 1;\n    }\n\n    var _quill$getLeaf3 = this.quill.getLeaf(index),\n        _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1),\n        leaf = _quill$getLeaf4[0];\n\n    if (!(leaf instanceof _parchment2.default.Embed)) return true;\n    if (key === Keyboard.keys.LEFT) {\n      if (shiftKey) {\n        this.quill.setSelection(range.index - 1, range.length + 1, _quill2.default.sources.USER);\n      } else {\n        this.quill.setSelection(range.index - 1, _quill2.default.sources.USER);\n      }\n    } else {\n      if (shiftKey) {\n        this.quill.setSelection(range.index, range.length + 1, _quill2.default.sources.USER);\n      } else {\n        this.quill.setSelection(range.index + range.length + 1, _quill2.default.sources.USER);\n      }\n    }\n    return false;\n  }), _ref3;\n}\n\nfunction handleBackspace(range, context) {\n  if (range.index === 0 || this.quill.getLength() <= 1) return;\n\n  var _quill$getLine11 = this.quill.getLine(range.index),\n      _quill$getLine12 = _slicedToArray(_quill$getLine11, 1),\n      line = _quill$getLine12[0];\n\n  var formats = {};\n  if (context.offset === 0) {\n    var _quill$getLine13 = this.quill.getLine(range.index - 1),\n        _quill$getLine14 = _slicedToArray(_quill$getLine13, 1),\n        prev = _quill$getLine14[0];\n\n    if (prev != null && prev.length() > 1) {\n      var curFormats = line.formats();\n      var prevFormats = this.quill.getFormat(range.index - 1, 1);\n      formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n    }\n  }\n  // Check for astral symbols\n  var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n  this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);\n  if (Object.keys(formats).length > 0) {\n    this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);\n  }\n  this.quill.focus();\n}\n\nfunction handleDelete(range, context) {\n  // Check for astral symbols\n  var length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n  if (range.index >= this.quill.getLength() - length) return;\n  var formats = {},\n      nextLength = 0;\n\n  var _quill$getLine15 = this.quill.getLine(range.index),\n      _quill$getLine16 = _slicedToArray(_quill$getLine15, 1),\n      line = _quill$getLine16[0];\n\n  if (context.offset >= line.length() - 1) {\n    var _quill$getLine17 = this.quill.getLine(range.index + 1),\n        _quill$getLine18 = _slicedToArray(_quill$getLine17, 1),\n        next = _quill$getLine18[0];\n\n    if (next) {\n      var curFormats = line.formats();\n      var nextFormats = this.quill.getFormat(range.index, 1);\n      formats = _op2.default.attributes.diff(curFormats, nextFormats) || {};\n      nextLength = next.length();\n    }\n  }\n  this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\n  if (Object.keys(formats).length > 0) {\n    this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER);\n  }\n}\n\nfunction handleDeleteRange(range) {\n  var lines = this.quill.getLines(range);\n  var formats = {};\n  if (lines.length > 1) {\n    var firstFormats = lines[0].formats();\n    var lastFormats = lines[lines.length - 1].formats();\n    formats = _op2.default.attributes.diff(lastFormats, firstFormats) || {};\n  }\n  this.quill.deleteText(range, _quill2.default.sources.USER);\n  if (Object.keys(formats).length > 0) {\n    this.quill.formatLine(range.index, 1, formats, _quill2.default.sources.USER);\n  }\n  this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n  this.quill.focus();\n}\n\nfunction handleEnter(range, context) {\n  var _this3 = this;\n\n  if (range.length > 0) {\n    this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n  }\n  var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n    if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n      lineFormats[format] = context.format[format];\n    }\n    return lineFormats;\n  }, {});\n  this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER);\n  // Earlier scroll.deleteAt might have messed up our selection,\n  // so insertText's built in selection preservation is not reliable\n  this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n  this.quill.focus();\n  Object.keys(context.format).forEach(function (name) {\n    if (lineFormats[name] != null) return;\n    if (Array.isArray(context.format[name])) return;\n    if (name === 'link') return;\n    _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n  });\n}\n\nfunction makeCodeBlockHandler(indent) {\n  return {\n    key: Keyboard.keys.TAB,\n    shiftKey: !indent,\n    format: { 'code-block': true },\n    handler: function handler(range) {\n      var CodeBlock = _parchment2.default.query('code-block');\n      var index = range.index,\n          length = range.length;\n\n      var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n          _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n          block = _quill$scroll$descend2[0],\n          offset = _quill$scroll$descend2[1];\n\n      if (block == null) return;\n      var scrollIndex = this.quill.getIndex(block);\n      var start = block.newlineIndex(offset, true) + 1;\n      var end = block.newlineIndex(scrollIndex + offset + length);\n      var lines = block.domNode.textContent.slice(start, end).split('\\n');\n      offset = 0;\n      lines.forEach(function (line, i) {\n        if (indent) {\n          block.insertAt(start + offset, CodeBlock.TAB);\n          offset += CodeBlock.TAB.length;\n          if (i === 0) {\n            index += CodeBlock.TAB.length;\n          } else {\n            length += CodeBlock.TAB.length;\n          }\n        } else if (line.startsWith(CodeBlock.TAB)) {\n          block.deleteAt(start + offset, CodeBlock.TAB.length);\n          offset -= CodeBlock.TAB.length;\n          if (i === 0) {\n            index -= CodeBlock.TAB.length;\n          } else {\n            length -= CodeBlock.TAB.length;\n          }\n        }\n        offset += line.length + 1;\n      });\n      this.quill.update(_quill2.default.sources.USER);\n      this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\n    }\n  };\n}\n\nfunction makeFormatHandler(format) {\n  return {\n    key: format[0].toUpperCase(),\n    shortKey: true,\n    handler: function handler(range, context) {\n      this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\n    }\n  };\n}\n\nfunction normalize(binding) {\n  if (typeof binding === 'string' || typeof binding === 'number') {\n    return normalize({ key: binding });\n  }\n  if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n    binding = (0, _clone2.default)(binding, false);\n  }\n  if (typeof binding.key === 'string') {\n    if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n      binding.key = Keyboard.keys[binding.key.toUpperCase()];\n    } else if (binding.key.length === 1) {\n      binding.key = binding.key.toUpperCase().charCodeAt(0);\n    } else {\n      return null;\n    }\n  }\n  if (binding.shortKey) {\n    binding[SHORTKEY] = binding.shortKey;\n    delete binding.shortKey;\n  }\n  return binding;\n}\n\nexports.default = Keyboard;\nexports.SHORTKEY = SHORTKEY;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Cursor = function (_Parchment$Embed) {\n  _inherits(Cursor, _Parchment$Embed);\n\n  _createClass(Cursor, null, [{\n    key: 'value',\n    value: function value() {\n      return undefined;\n    }\n  }]);\n\n  function Cursor(domNode, selection) {\n    _classCallCheck(this, Cursor);\n\n    var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));\n\n    _this.selection = selection;\n    _this.textNode = document.createTextNode(Cursor.CONTENTS);\n    _this.domNode.appendChild(_this.textNode);\n    _this._length = 0;\n    return _this;\n  }\n\n  _createClass(Cursor, [{\n    key: 'detach',\n    value: function detach() {\n      // super.detach() will also clear domNode.__blot\n      if (this.parent != null) this.parent.removeChild(this);\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      if (this._length !== 0) {\n        return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);\n      }\n      var target = this,\n          index = 0;\n      while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {\n        index += target.offset(target.parent);\n        target = target.parent;\n      }\n      if (target != null) {\n        this._length = Cursor.CONTENTS.length;\n        target.optimize();\n        target.formatAt(index, Cursor.CONTENTS.length, name, value);\n        this._length = 0;\n      }\n    }\n  }, {\n    key: 'index',\n    value: function index(node, offset) {\n      if (node === this.textNode) return 0;\n      return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      return this._length;\n    }\n  }, {\n    key: 'position',\n    value: function position() {\n      return [this.textNode, this.textNode.data.length];\n    }\n  }, {\n    key: 'remove',\n    value: function remove() {\n      _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);\n      this.parent = null;\n    }\n  }, {\n    key: 'restore',\n    value: function restore() {\n      if (this.selection.composing || this.parent == null) return;\n      var textNode = this.textNode;\n      var range = this.selection.getNativeRange();\n      var restoreText = void 0,\n          start = void 0,\n          end = void 0;\n      if (range != null && range.start.node === textNode && range.end.node === textNode) {\n        var _ref = [textNode, range.start.offset, range.end.offset];\n        restoreText = _ref[0];\n        start = _ref[1];\n        end = _ref[2];\n      }\n      // Link format will insert text outside of anchor tag\n      while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n        this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n      }\n      if (this.textNode.data !== Cursor.CONTENTS) {\n        var text = this.textNode.data.split(Cursor.CONTENTS).join('');\n        if (this.next instanceof _text2.default) {\n          restoreText = this.next.domNode;\n          this.next.insertAt(0, text);\n          this.textNode.data = Cursor.CONTENTS;\n        } else {\n          this.textNode.data = text;\n          this.parent.insertBefore(_parchment2.default.create(this.textNode), this);\n          this.textNode = document.createTextNode(Cursor.CONTENTS);\n          this.domNode.appendChild(this.textNode);\n        }\n      }\n      this.remove();\n      if (start != null) {\n        var _map = [start, end].map(function (offset) {\n          return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n        });\n\n        var _map2 = _slicedToArray(_map, 2);\n\n        start = _map2[0];\n        end = _map2[1];\n\n        return {\n          startNode: restoreText,\n          startOffset: start,\n          endNode: restoreText,\n          endOffset: end\n        };\n      }\n    }\n  }, {\n    key: 'update',\n    value: function update(mutations, context) {\n      var _this2 = this;\n\n      if (mutations.some(function (mutation) {\n        return mutation.type === 'characterData' && mutation.target === _this2.textNode;\n      })) {\n        var range = this.restore();\n        if (range) context.range = range;\n      }\n    }\n  }, {\n    key: 'value',\n    value: function value() {\n      return '';\n    }\n  }]);\n\n  return Cursor;\n}(_parchment2.default.Embed);\n\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = '\\uFEFF'; // Zero width no break space\n\n\nexports.default = Cursor;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Container = function (_Parchment$Container) {\n  _inherits(Container, _Parchment$Container);\n\n  function Container() {\n    _classCallCheck(this, Container);\n\n    return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));\n  }\n\n  return Container;\n}(_parchment2.default.Container);\n\nContainer.allowedChildren = [_block2.default, _block.BlockEmbed, Container];\n\nexports.default = Container;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorAttributor = function (_Parchment$Attributor) {\n  _inherits(ColorAttributor, _Parchment$Attributor);\n\n  function ColorAttributor() {\n    _classCallCheck(this, ColorAttributor);\n\n    return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));\n  }\n\n  _createClass(ColorAttributor, [{\n    key: 'value',\n    value: function value(domNode) {\n      var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);\n      if (!value.startsWith('rgb(')) return value;\n      value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n      return '#' + value.split(',').map(function (component) {\n        return ('00' + parseInt(component).toString(16)).slice(-2);\n      }).join('');\n    }\n  }]);\n\n  return ColorAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {\n  scope: _parchment2.default.Scope.INLINE\n});\nvar ColorStyle = new ColorAttributor('color', 'color', {\n  scope: _parchment2.default.Scope.INLINE\n});\n\nexports.ColorAttributor = ColorAttributor;\nexports.ColorClass = ColorClass;\nexports.ColorStyle = ColorStyle;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.sanitize = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Link = function (_Inline) {\n  _inherits(Link, _Inline);\n\n  function Link() {\n    _classCallCheck(this, Link);\n\n    return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments));\n  }\n\n  _createClass(Link, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value);\n      value = this.constructor.sanitize(value);\n      this.domNode.setAttribute('href', value);\n    }\n  }], [{\n    key: 'create',\n    value: function create(value) {\n      var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value);\n      value = this.sanitize(value);\n      node.setAttribute('href', value);\n      node.setAttribute('target', '_blank');\n      return node;\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      return domNode.getAttribute('href');\n    }\n  }, {\n    key: 'sanitize',\n    value: function sanitize(url) {\n      return _sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n    }\n  }]);\n\n  return Link;\n}(_inline2.default);\n\nLink.blotName = 'link';\nLink.tagName = 'A';\nLink.SANITIZED_URL = 'about:blank';\nLink.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];\n\nfunction _sanitize(url, protocols) {\n  var anchor = document.createElement('a');\n  anchor.href = url;\n  var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n  return protocols.indexOf(protocol) > -1;\n}\n\nexports.default = Link;\nexports.sanitize = _sanitize;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _dropdown = __webpack_require__(107);\n\nvar _dropdown2 = _interopRequireDefault(_dropdown);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar optionsCounter = 0;\n\nfunction toggleAriaAttribute(element, attribute) {\n  element.setAttribute(attribute, !(element.getAttribute(attribute) === 'true'));\n}\n\nvar Picker = function () {\n  function Picker(select) {\n    var _this = this;\n\n    _classCallCheck(this, Picker);\n\n    this.select = select;\n    this.container = document.createElement('span');\n    this.buildPicker();\n    this.select.style.display = 'none';\n    this.select.parentNode.insertBefore(this.container, this.select);\n\n    this.label.addEventListener('mousedown', function () {\n      _this.togglePicker();\n    });\n    this.label.addEventListener('keydown', function (event) {\n      switch (event.keyCode) {\n        // Allows the \"Enter\" key to open the picker\n        case _keyboard2.default.keys.ENTER:\n          _this.togglePicker();\n          break;\n\n        // Allows the \"Escape\" key to close the picker\n        case _keyboard2.default.keys.ESCAPE:\n          _this.escape();\n          event.preventDefault();\n          break;\n        default:\n      }\n    });\n    this.select.addEventListener('change', this.update.bind(this));\n  }\n\n  _createClass(Picker, [{\n    key: 'togglePicker',\n    value: function togglePicker() {\n      this.container.classList.toggle('ql-expanded');\n      // Toggle aria-expanded and aria-hidden to make the picker accessible\n      toggleAriaAttribute(this.label, 'aria-expanded');\n      toggleAriaAttribute(this.options, 'aria-hidden');\n    }\n  }, {\n    key: 'buildItem',\n    value: function buildItem(option) {\n      var _this2 = this;\n\n      var item = document.createElement('span');\n      item.tabIndex = '0';\n      item.setAttribute('role', 'button');\n\n      item.classList.add('ql-picker-item');\n      if (option.hasAttribute('value')) {\n        item.setAttribute('data-value', option.getAttribute('value'));\n      }\n      if (option.textContent) {\n        item.setAttribute('data-label', option.textContent);\n      }\n      item.addEventListener('click', function () {\n        _this2.selectItem(item, true);\n      });\n      item.addEventListener('keydown', function (event) {\n        switch (event.keyCode) {\n          // Allows the \"Enter\" key to select an item\n          case _keyboard2.default.keys.ENTER:\n            _this2.selectItem(item, true);\n            event.preventDefault();\n            break;\n\n          // Allows the \"Escape\" key to close the picker\n          case _keyboard2.default.keys.ESCAPE:\n            _this2.escape();\n            event.preventDefault();\n            break;\n          default:\n        }\n      });\n\n      return item;\n    }\n  }, {\n    key: 'buildLabel',\n    value: function buildLabel() {\n      var label = document.createElement('span');\n      label.classList.add('ql-picker-label');\n      label.innerHTML = _dropdown2.default;\n      label.tabIndex = '0';\n      label.setAttribute('role', 'button');\n      label.setAttribute('aria-expanded', 'false');\n      this.container.appendChild(label);\n      return label;\n    }\n  }, {\n    key: 'buildOptions',\n    value: function buildOptions() {\n      var _this3 = this;\n\n      var options = document.createElement('span');\n      options.classList.add('ql-picker-options');\n\n      // Don't want screen readers to read this until options are visible\n      options.setAttribute('aria-hidden', 'true');\n      options.tabIndex = '-1';\n\n      // Need a unique id for aria-controls\n      options.id = 'ql-picker-options-' + optionsCounter;\n      optionsCounter += 1;\n      this.label.setAttribute('aria-controls', options.id);\n\n      this.options = options;\n\n      [].slice.call(this.select.options).forEach(function (option) {\n        var item = _this3.buildItem(option);\n        options.appendChild(item);\n        if (option.selected === true) {\n          _this3.selectItem(item);\n        }\n      });\n      this.container.appendChild(options);\n    }\n  }, {\n    key: 'buildPicker',\n    value: function buildPicker() {\n      var _this4 = this;\n\n      [].slice.call(this.select.attributes).forEach(function (item) {\n        _this4.container.setAttribute(item.name, item.value);\n      });\n      this.container.classList.add('ql-picker');\n      this.label = this.buildLabel();\n      this.buildOptions();\n    }\n  }, {\n    key: 'escape',\n    value: function escape() {\n      var _this5 = this;\n\n      // Close menu and return focus to trigger label\n      this.close();\n      // Need setTimeout for accessibility to ensure that the browser executes\n      // focus on the next process thread and after any DOM content changes\n      setTimeout(function () {\n        return _this5.label.focus();\n      }, 1);\n    }\n  }, {\n    key: 'close',\n    value: function close() {\n      this.container.classList.remove('ql-expanded');\n      this.label.setAttribute('aria-expanded', 'false');\n      this.options.setAttribute('aria-hidden', 'true');\n    }\n  }, {\n    key: 'selectItem',\n    value: function selectItem(item) {\n      var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      var selected = this.container.querySelector('.ql-selected');\n      if (item === selected) return;\n      if (selected != null) {\n        selected.classList.remove('ql-selected');\n      }\n      if (item == null) return;\n      item.classList.add('ql-selected');\n      this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n      if (item.hasAttribute('data-value')) {\n        this.label.setAttribute('data-value', item.getAttribute('data-value'));\n      } else {\n        this.label.removeAttribute('data-value');\n      }\n      if (item.hasAttribute('data-label')) {\n        this.label.setAttribute('data-label', item.getAttribute('data-label'));\n      } else {\n        this.label.removeAttribute('data-label');\n      }\n      if (trigger) {\n        if (typeof Event === 'function') {\n          this.select.dispatchEvent(new Event('change'));\n        } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') {\n          // IE11\n          var event = document.createEvent('Event');\n          event.initEvent('change', true, true);\n          this.select.dispatchEvent(event);\n        }\n        this.close();\n      }\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      var option = void 0;\n      if (this.select.selectedIndex > -1) {\n        var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n        option = this.select.options[this.select.selectedIndex];\n        this.selectItem(item);\n      } else {\n        this.selectItem(null);\n      }\n      var isActive = option != null && option !== this.select.querySelector('option[selected]');\n      this.label.classList.toggle('ql-active', isActive);\n    }\n  }]);\n\n  return Picker;\n}();\n\nexports.default = Picker;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _scroll = __webpack_require__(22);\n\nvar _scroll2 = _interopRequireDefault(_scroll);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _clipboard = __webpack_require__(55);\n\nvar _clipboard2 = _interopRequireDefault(_clipboard);\n\nvar _history = __webpack_require__(42);\n\nvar _history2 = _interopRequireDefault(_history);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_quill2.default.register({\n  'blots/block': _block2.default,\n  'blots/block/embed': _block.BlockEmbed,\n  'blots/break': _break2.default,\n  'blots/container': _container2.default,\n  'blots/cursor': _cursor2.default,\n  'blots/embed': _embed2.default,\n  'blots/inline': _inline2.default,\n  'blots/scroll': _scroll2.default,\n  'blots/text': _text2.default,\n\n  'modules/clipboard': _clipboard2.default,\n  'modules/history': _history2.default,\n  'modules/keyboard': _keyboard2.default\n});\n\n_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);\n\nexports.default = _quill2.default;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar ShadowBlot = /** @class */ (function () {\n    function ShadowBlot(domNode) {\n        this.domNode = domNode;\n        // @ts-ignore\n        this.domNode[Registry.DATA_KEY] = { blot: this };\n    }\n    Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n        // Hack for accessing inherited static methods\n        get: function () {\n            return this.constructor;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    ShadowBlot.create = function (value) {\n        if (this.tagName == null) {\n            throw new Registry.ParchmentError('Blot definition missing tagName');\n        }\n        var node;\n        if (Array.isArray(this.tagName)) {\n            if (typeof value === 'string') {\n                value = value.toUpperCase();\n                if (parseInt(value).toString() === value) {\n                    value = parseInt(value);\n                }\n            }\n            if (typeof value === 'number') {\n                node = document.createElement(this.tagName[value - 1]);\n            }\n            else if (this.tagName.indexOf(value) > -1) {\n                node = document.createElement(value);\n            }\n            else {\n                node = document.createElement(this.tagName[0]);\n            }\n        }\n        else {\n            node = document.createElement(this.tagName);\n        }\n        if (this.className) {\n            node.classList.add(this.className);\n        }\n        return node;\n    };\n    ShadowBlot.prototype.attach = function () {\n        if (this.parent != null) {\n            this.scroll = this.parent.scroll;\n        }\n    };\n    ShadowBlot.prototype.clone = function () {\n        var domNode = this.domNode.cloneNode(false);\n        return Registry.create(domNode);\n    };\n    ShadowBlot.prototype.detach = function () {\n        if (this.parent != null)\n            this.parent.removeChild(this);\n        // @ts-ignore\n        delete this.domNode[Registry.DATA_KEY];\n    };\n    ShadowBlot.prototype.deleteAt = function (index, length) {\n        var blot = this.isolate(index, length);\n        blot.remove();\n    };\n    ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n        var blot = this.isolate(index, length);\n        if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n            blot.wrap(name, value);\n        }\n        else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n            var parent = Registry.create(this.statics.scope);\n            blot.wrap(parent);\n            parent.format(name, value);\n        }\n    };\n    ShadowBlot.prototype.insertAt = function (index, value, def) {\n        var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n        var ref = this.split(index);\n        this.parent.insertBefore(blot, ref);\n    };\n    ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n        if (refBlot === void 0) { refBlot = null; }\n        if (this.parent != null) {\n            this.parent.children.remove(this);\n        }\n        var refDomNode = null;\n        parentBlot.children.insertBefore(this, refBlot);\n        if (refBlot != null) {\n            refDomNode = refBlot.domNode;\n        }\n        if (this.domNode.parentNode != parentBlot.domNode ||\n            this.domNode.nextSibling != refDomNode) {\n            parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n        }\n        this.parent = parentBlot;\n        this.attach();\n    };\n    ShadowBlot.prototype.isolate = function (index, length) {\n        var target = this.split(index);\n        target.split(length);\n        return target;\n    };\n    ShadowBlot.prototype.length = function () {\n        return 1;\n    };\n    ShadowBlot.prototype.offset = function (root) {\n        if (root === void 0) { root = this.parent; }\n        if (this.parent == null || this == root)\n            return 0;\n        return this.parent.children.offset(this) + this.parent.offset(root);\n    };\n    ShadowBlot.prototype.optimize = function (context) {\n        // TODO clean up once we use WeakMap\n        // @ts-ignore\n        if (this.domNode[Registry.DATA_KEY] != null) {\n            // @ts-ignore\n            delete this.domNode[Registry.DATA_KEY].mutations;\n        }\n    };\n    ShadowBlot.prototype.remove = function () {\n        if (this.domNode.parentNode != null) {\n            this.domNode.parentNode.removeChild(this.domNode);\n        }\n        this.detach();\n    };\n    ShadowBlot.prototype.replace = function (target) {\n        if (target.parent == null)\n            return;\n        target.parent.insertBefore(this, target.next);\n        target.remove();\n    };\n    ShadowBlot.prototype.replaceWith = function (name, value) {\n        var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n        replacement.replace(this);\n        return replacement;\n    };\n    ShadowBlot.prototype.split = function (index, force) {\n        return index === 0 ? this : this.next;\n    };\n    ShadowBlot.prototype.update = function (mutations, context) {\n        // Nothing to do by default\n    };\n    ShadowBlot.prototype.wrap = function (name, value) {\n        var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n        if (this.parent != null) {\n            this.parent.insertBefore(wrapper, this.next);\n        }\n        wrapper.appendChild(this);\n        return wrapper;\n    };\n    ShadowBlot.blotName = 'abstract';\n    return ShadowBlot;\n}());\nexports.default = ShadowBlot;\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar Registry = __webpack_require__(1);\nvar AttributorStore = /** @class */ (function () {\n    function AttributorStore(domNode) {\n        this.attributes = {};\n        this.domNode = domNode;\n        this.build();\n    }\n    AttributorStore.prototype.attribute = function (attribute, value) {\n        // verb\n        if (value) {\n            if (attribute.add(this.domNode, value)) {\n                if (attribute.value(this.domNode) != null) {\n                    this.attributes[attribute.attrName] = attribute;\n                }\n                else {\n                    delete this.attributes[attribute.attrName];\n                }\n            }\n        }\n        else {\n            attribute.remove(this.domNode);\n            delete this.attributes[attribute.attrName];\n        }\n    };\n    AttributorStore.prototype.build = function () {\n        var _this = this;\n        this.attributes = {};\n        var attributes = attributor_1.default.keys(this.domNode);\n        var classes = class_1.default.keys(this.domNode);\n        var styles = style_1.default.keys(this.domNode);\n        attributes\n            .concat(classes)\n            .concat(styles)\n            .forEach(function (name) {\n            var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n            if (attr instanceof attributor_1.default) {\n                _this.attributes[attr.attrName] = attr;\n            }\n        });\n    };\n    AttributorStore.prototype.copy = function (target) {\n        var _this = this;\n        Object.keys(this.attributes).forEach(function (key) {\n            var value = _this.attributes[key].value(_this.domNode);\n            target.format(key, value);\n        });\n    };\n    AttributorStore.prototype.move = function (target) {\n        var _this = this;\n        this.copy(target);\n        Object.keys(this.attributes).forEach(function (key) {\n            _this.attributes[key].remove(_this.domNode);\n        });\n        this.attributes = {};\n    };\n    AttributorStore.prototype.values = function () {\n        var _this = this;\n        return Object.keys(this.attributes).reduce(function (attributes, name) {\n            attributes[name] = _this.attributes[name].value(_this.domNode);\n            return attributes;\n        }, {});\n    };\n    return AttributorStore;\n}());\nexports.default = AttributorStore;\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction match(node, prefix) {\n    var className = node.getAttribute('class') || '';\n    return className.split(/\\s+/).filter(function (name) {\n        return name.indexOf(prefix + \"-\") === 0;\n    });\n}\nvar ClassAttributor = /** @class */ (function (_super) {\n    __extends(ClassAttributor, _super);\n    function ClassAttributor() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ClassAttributor.keys = function (node) {\n        return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n            return name\n                .split('-')\n                .slice(0, -1)\n                .join('-');\n        });\n    };\n    ClassAttributor.prototype.add = function (node, value) {\n        if (!this.canAdd(node, value))\n            return false;\n        this.remove(node);\n        node.classList.add(this.keyName + \"-\" + value);\n        return true;\n    };\n    ClassAttributor.prototype.remove = function (node) {\n        var matches = match(node, this.keyName);\n        matches.forEach(function (name) {\n            node.classList.remove(name);\n        });\n        if (node.classList.length === 0) {\n            node.removeAttribute('class');\n        }\n    };\n    ClassAttributor.prototype.value = function (node) {\n        var result = match(node, this.keyName)[0] || '';\n        var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n        return this.canAdd(node, value) ? value : '';\n    };\n    return ClassAttributor;\n}(attributor_1.default));\nexports.default = ClassAttributor;\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction camelize(name) {\n    var parts = name.split('-');\n    var rest = parts\n        .slice(1)\n        .map(function (part) {\n        return part[0].toUpperCase() + part.slice(1);\n    })\n        .join('');\n    return parts[0] + rest;\n}\nvar StyleAttributor = /** @class */ (function (_super) {\n    __extends(StyleAttributor, _super);\n    function StyleAttributor() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    StyleAttributor.keys = function (node) {\n        return (node.getAttribute('style') || '').split(';').map(function (value) {\n            var arr = value.split(':');\n            return arr[0].trim();\n        });\n    };\n    StyleAttributor.prototype.add = function (node, value) {\n        if (!this.canAdd(node, value))\n            return false;\n        // @ts-ignore\n        node.style[camelize(this.keyName)] = value;\n        return true;\n    };\n    StyleAttributor.prototype.remove = function (node) {\n        // @ts-ignore\n        node.style[camelize(this.keyName)] = '';\n        if (!node.getAttribute('style')) {\n            node.removeAttribute('style');\n        }\n    };\n    StyleAttributor.prototype.value = function (node) {\n        // @ts-ignore\n        var value = node.style[camelize(this.keyName)];\n        return this.canAdd(node, value) ? value : '';\n    };\n    return StyleAttributor;\n}(attributor_1.default));\nexports.default = StyleAttributor;\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Theme = function () {\n  function Theme(quill, options) {\n    _classCallCheck(this, Theme);\n\n    this.quill = quill;\n    this.options = options;\n    this.modules = {};\n  }\n\n  _createClass(Theme, [{\n    key: 'init',\n    value: function init() {\n      var _this = this;\n\n      Object.keys(this.options.modules).forEach(function (name) {\n        if (_this.modules[name] == null) {\n          _this.addModule(name);\n        }\n      });\n    }\n  }, {\n    key: 'addModule',\n    value: function addModule(name) {\n      var moduleClass = this.quill.constructor.import('modules/' + name);\n      this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n      return this.modules[name];\n    }\n  }]);\n\n  return Theme;\n}();\n\nTheme.DEFAULTS = {\n  modules: {}\n};\nTheme.themes = {\n  'default': Theme\n};\n\nexports.default = Theme;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar GUARD_TEXT = '\\uFEFF';\n\nvar Embed = function (_Parchment$Embed) {\n  _inherits(Embed, _Parchment$Embed);\n\n  function Embed(node) {\n    _classCallCheck(this, Embed);\n\n    var _this = _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).call(this, node));\n\n    _this.contentNode = document.createElement('span');\n    _this.contentNode.setAttribute('contenteditable', false);\n    [].slice.call(_this.domNode.childNodes).forEach(function (childNode) {\n      _this.contentNode.appendChild(childNode);\n    });\n    _this.leftGuard = document.createTextNode(GUARD_TEXT);\n    _this.rightGuard = document.createTextNode(GUARD_TEXT);\n    _this.domNode.appendChild(_this.leftGuard);\n    _this.domNode.appendChild(_this.contentNode);\n    _this.domNode.appendChild(_this.rightGuard);\n    return _this;\n  }\n\n  _createClass(Embed, [{\n    key: 'index',\n    value: function index(node, offset) {\n      if (node === this.leftGuard) return 0;\n      if (node === this.rightGuard) return 1;\n      return _get(Embed.prototype.__proto__ || Object.getPrototypeOf(Embed.prototype), 'index', this).call(this, node, offset);\n    }\n  }, {\n    key: 'restore',\n    value: function restore(node) {\n      var range = void 0,\n          textNode = void 0;\n      var text = node.data.split(GUARD_TEXT).join('');\n      if (node === this.leftGuard) {\n        if (this.prev instanceof _text2.default) {\n          var prevLength = this.prev.length();\n          this.prev.insertAt(prevLength, text);\n          range = {\n            startNode: this.prev.domNode,\n            startOffset: prevLength + text.length\n          };\n        } else {\n          textNode = document.createTextNode(text);\n          this.parent.insertBefore(_parchment2.default.create(textNode), this);\n          range = {\n            startNode: textNode,\n            startOffset: text.length\n          };\n        }\n      } else if (node === this.rightGuard) {\n        if (this.next instanceof _text2.default) {\n          this.next.insertAt(0, text);\n          range = {\n            startNode: this.next.domNode,\n            startOffset: text.length\n          };\n        } else {\n          textNode = document.createTextNode(text);\n          this.parent.insertBefore(_parchment2.default.create(textNode), this.next);\n          range = {\n            startNode: textNode,\n            startOffset: text.length\n          };\n        }\n      }\n      node.data = GUARD_TEXT;\n      return range;\n    }\n  }, {\n    key: 'update',\n    value: function update(mutations, context) {\n      var _this2 = this;\n\n      mutations.forEach(function (mutation) {\n        if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) {\n          var range = _this2.restore(mutation.target);\n          if (range) context.range = range;\n        }\n      });\n    }\n  }]);\n\n  return Embed;\n}(_parchment2.default.Embed);\n\nexports.default = Embed;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n  scope: _parchment2.default.Scope.BLOCK,\n  whitelist: ['right', 'center', 'justify']\n};\n\nvar AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);\nvar AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);\nvar AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);\n\nexports.AlignAttribute = AlignAttribute;\nexports.AlignClass = AlignClass;\nexports.AlignStyle = AlignStyle;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.BackgroundStyle = exports.BackgroundClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _color = __webpack_require__(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {\n  scope: _parchment2.default.Scope.INLINE\n});\nvar BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n  scope: _parchment2.default.Scope.INLINE\n});\n\nexports.BackgroundClass = BackgroundClass;\nexports.BackgroundStyle = BackgroundStyle;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n  scope: _parchment2.default.Scope.BLOCK,\n  whitelist: ['rtl']\n};\n\nvar DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);\nvar DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);\nvar DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);\n\nexports.DirectionAttribute = DirectionAttribute;\nexports.DirectionClass = DirectionClass;\nexports.DirectionStyle = DirectionStyle;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.FontClass = exports.FontStyle = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar config = {\n  scope: _parchment2.default.Scope.INLINE,\n  whitelist: ['serif', 'monospace']\n};\n\nvar FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\nvar FontStyleAttributor = function (_Parchment$Attributor) {\n  _inherits(FontStyleAttributor, _Parchment$Attributor);\n\n  function FontStyleAttributor() {\n    _classCallCheck(this, FontStyleAttributor);\n\n    return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));\n  }\n\n  _createClass(FontStyleAttributor, [{\n    key: 'value',\n    value: function value(node) {\n      return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/[\"']/g, '');\n    }\n  }]);\n\n  return FontStyleAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexports.FontStyle = FontStyle;\nexports.FontClass = FontClass;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SizeStyle = exports.SizeClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {\n  scope: _parchment2.default.Scope.INLINE,\n  whitelist: ['small', 'large', 'huge']\n});\nvar SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {\n  scope: _parchment2.default.Scope.INLINE,\n  whitelist: ['10px', '18px', '32px']\n});\n\nexports.SizeClass = SizeClass;\nexports.SizeStyle = SizeStyle;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  'align': {\n    '': __webpack_require__(76),\n    'center': __webpack_require__(77),\n    'right': __webpack_require__(78),\n    'justify': __webpack_require__(79)\n  },\n  'background': __webpack_require__(80),\n  'blockquote': __webpack_require__(81),\n  'bold': __webpack_require__(82),\n  'clean': __webpack_require__(83),\n  'code': __webpack_require__(58),\n  'code-block': __webpack_require__(58),\n  'color': __webpack_require__(84),\n  'direction': {\n    '': __webpack_require__(85),\n    'rtl': __webpack_require__(86)\n  },\n  'float': {\n    'center': __webpack_require__(87),\n    'full': __webpack_require__(88),\n    'left': __webpack_require__(89),\n    'right': __webpack_require__(90)\n  },\n  'formula': __webpack_require__(91),\n  'header': {\n    '1': __webpack_require__(92),\n    '2': __webpack_require__(93)\n  },\n  'italic': __webpack_require__(94),\n  'image': __webpack_require__(95),\n  'indent': {\n    '+1': __webpack_require__(96),\n    '-1': __webpack_require__(97)\n  },\n  'link': __webpack_require__(98),\n  'list': {\n    'ordered': __webpack_require__(99),\n    'bullet': __webpack_require__(100),\n    'check': __webpack_require__(101)\n  },\n  'script': {\n    'sub': __webpack_require__(102),\n    'super': __webpack_require__(103)\n  },\n  'strike': __webpack_require__(104),\n  'underline': __webpack_require__(105),\n  'video': __webpack_require__(106)\n};\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getLastChangeIndex = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar History = function (_Module) {\n  _inherits(History, _Module);\n\n  function History(quill, options) {\n    _classCallCheck(this, History);\n\n    var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));\n\n    _this.lastRecorded = 0;\n    _this.ignoreChange = false;\n    _this.clear();\n    _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n      if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;\n      if (!_this.options.userOnly || source === _quill2.default.sources.USER) {\n        _this.record(delta, oldDelta);\n      } else {\n        _this.transform(delta);\n      }\n    });\n    _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));\n    _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));\n    if (/Win/i.test(navigator.platform)) {\n      _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));\n    }\n    return _this;\n  }\n\n  _createClass(History, [{\n    key: 'change',\n    value: function change(source, dest) {\n      if (this.stack[source].length === 0) return;\n      var delta = this.stack[source].pop();\n      this.stack[dest].push(delta);\n      this.lastRecorded = 0;\n      this.ignoreChange = true;\n      this.quill.updateContents(delta[source], _quill2.default.sources.USER);\n      this.ignoreChange = false;\n      var index = getLastChangeIndex(delta[source]);\n      this.quill.setSelection(index);\n    }\n  }, {\n    key: 'clear',\n    value: function clear() {\n      this.stack = { undo: [], redo: [] };\n    }\n  }, {\n    key: 'cutoff',\n    value: function cutoff() {\n      this.lastRecorded = 0;\n    }\n  }, {\n    key: 'record',\n    value: function record(changeDelta, oldDelta) {\n      if (changeDelta.ops.length === 0) return;\n      this.stack.redo = [];\n      var undoDelta = this.quill.getContents().diff(oldDelta);\n      var timestamp = Date.now();\n      if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n        var delta = this.stack.undo.pop();\n        undoDelta = undoDelta.compose(delta.undo);\n        changeDelta = delta.redo.compose(changeDelta);\n      } else {\n        this.lastRecorded = timestamp;\n      }\n      this.stack.undo.push({\n        redo: changeDelta,\n        undo: undoDelta\n      });\n      if (this.stack.undo.length > this.options.maxStack) {\n        this.stack.undo.shift();\n      }\n    }\n  }, {\n    key: 'redo',\n    value: function redo() {\n      this.change('redo', 'undo');\n    }\n  }, {\n    key: 'transform',\n    value: function transform(delta) {\n      this.stack.undo.forEach(function (change) {\n        change.undo = delta.transform(change.undo, true);\n        change.redo = delta.transform(change.redo, true);\n      });\n      this.stack.redo.forEach(function (change) {\n        change.undo = delta.transform(change.undo, true);\n        change.redo = delta.transform(change.redo, true);\n      });\n    }\n  }, {\n    key: 'undo',\n    value: function undo() {\n      this.change('undo', 'redo');\n    }\n  }]);\n\n  return History;\n}(_module2.default);\n\nHistory.DEFAULTS = {\n  delay: 1000,\n  maxStack: 100,\n  userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n  var lastOp = delta.ops[delta.ops.length - 1];\n  if (lastOp == null) return false;\n  if (lastOp.insert != null) {\n    return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n  }\n  if (lastOp.attributes != null) {\n    return Object.keys(lastOp.attributes).some(function (attr) {\n      return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;\n    });\n  }\n  return false;\n}\n\nfunction getLastChangeIndex(delta) {\n  var deleteLength = delta.reduce(function (length, op) {\n    length += op.delete || 0;\n    return length;\n  }, 0);\n  var changeIndex = delta.length() - deleteLength;\n  if (endsWithNewlineChange(delta)) {\n    changeIndex -= 1;\n  }\n  return changeIndex;\n}\n\nexports.default = History;\nexports.getLastChangeIndex = getLastChangeIndex;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.BaseTooltip = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nvar _colorPicker = __webpack_require__(59);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(60);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _tooltip = __webpack_require__(61);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ALIGNS = [false, 'center', 'right', 'justify'];\n\nvar COLORS = [\"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\", \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\", \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\", \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\", \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"];\n\nvar FONTS = [false, 'serif', 'monospace'];\n\nvar HEADERS = ['1', '2', '3', false];\n\nvar SIZES = ['small', false, 'large', 'huge'];\n\nvar BaseTheme = function (_Theme) {\n  _inherits(BaseTheme, _Theme);\n\n  function BaseTheme(quill, options) {\n    _classCallCheck(this, BaseTheme);\n\n    var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options));\n\n    var listener = function listener(e) {\n      if (!document.body.contains(quill.root)) {\n        return document.body.removeEventListener('click', listener);\n      }\n      if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {\n        _this.tooltip.hide();\n      }\n      if (_this.pickers != null) {\n        _this.pickers.forEach(function (picker) {\n          if (!picker.container.contains(e.target)) {\n            picker.close();\n          }\n        });\n      }\n    };\n    quill.emitter.listenDOM('click', document.body, listener);\n    return _this;\n  }\n\n  _createClass(BaseTheme, [{\n    key: 'addModule',\n    value: function addModule(name) {\n      var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name);\n      if (name === 'toolbar') {\n        this.extendToolbar(module);\n      }\n      return module;\n    }\n  }, {\n    key: 'buildButtons',\n    value: function buildButtons(buttons, icons) {\n      buttons.forEach(function (button) {\n        var className = button.getAttribute('class') || '';\n        className.split(/\\s+/).forEach(function (name) {\n          if (!name.startsWith('ql-')) return;\n          name = name.slice('ql-'.length);\n          if (icons[name] == null) return;\n          if (name === 'direction') {\n            button.innerHTML = icons[name][''] + icons[name]['rtl'];\n          } else if (typeof icons[name] === 'string') {\n            button.innerHTML = icons[name];\n          } else {\n            var value = button.value || '';\n            if (value != null && icons[name][value]) {\n              button.innerHTML = icons[name][value];\n            }\n          }\n        });\n      });\n    }\n  }, {\n    key: 'buildPickers',\n    value: function buildPickers(selects, icons) {\n      var _this2 = this;\n\n      this.pickers = selects.map(function (select) {\n        if (select.classList.contains('ql-align')) {\n          if (select.querySelector('option') == null) {\n            fillSelect(select, ALIGNS);\n          }\n          return new _iconPicker2.default(select, icons.align);\n        } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n          var format = select.classList.contains('ql-background') ? 'background' : 'color';\n          if (select.querySelector('option') == null) {\n            fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n          }\n          return new _colorPicker2.default(select, icons[format]);\n        } else {\n          if (select.querySelector('option') == null) {\n            if (select.classList.contains('ql-font')) {\n              fillSelect(select, FONTS);\n            } else if (select.classList.contains('ql-header')) {\n              fillSelect(select, HEADERS);\n            } else if (select.classList.contains('ql-size')) {\n              fillSelect(select, SIZES);\n            }\n          }\n          return new _picker2.default(select);\n        }\n      });\n      var update = function update() {\n        _this2.pickers.forEach(function (picker) {\n          picker.update();\n        });\n      };\n      this.quill.on(_emitter2.default.events.EDITOR_CHANGE, update);\n    }\n  }]);\n\n  return BaseTheme;\n}(_theme2.default);\n\nBaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        formula: function formula() {\n          this.quill.theme.tooltip.edit('formula');\n        },\n        image: function image() {\n          var _this3 = this;\n\n          var fileInput = this.container.querySelector('input.ql-image[type=file]');\n          if (fileInput == null) {\n            fileInput = document.createElement('input');\n            fileInput.setAttribute('type', 'file');\n            fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\n            fileInput.classList.add('ql-image');\n            fileInput.addEventListener('change', function () {\n              if (fileInput.files != null && fileInput.files[0] != null) {\n                var reader = new FileReader();\n                reader.onload = function (e) {\n                  var range = _this3.quill.getSelection(true);\n                  _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER);\n                  _this3.quill.setSelection(range.index + 1, _emitter2.default.sources.SILENT);\n                  fileInput.value = \"\";\n                };\n                reader.readAsDataURL(fileInput.files[0]);\n              }\n            });\n            this.container.appendChild(fileInput);\n          }\n          fileInput.click();\n        },\n        video: function video() {\n          this.quill.theme.tooltip.edit('video');\n        }\n      }\n    }\n  }\n});\n\nvar BaseTooltip = function (_Tooltip) {\n  _inherits(BaseTooltip, _Tooltip);\n\n  function BaseTooltip(quill, boundsContainer) {\n    _classCallCheck(this, BaseTooltip);\n\n    var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));\n\n    _this4.textbox = _this4.root.querySelector('input[type=\"text\"]');\n    _this4.listen();\n    return _this4;\n  }\n\n  _createClass(BaseTooltip, [{\n    key: 'listen',\n    value: function listen() {\n      var _this5 = this;\n\n      this.textbox.addEventListener('keydown', function (event) {\n        if (_keyboard2.default.match(event, 'enter')) {\n          _this5.save();\n          event.preventDefault();\n        } else if (_keyboard2.default.match(event, 'escape')) {\n          _this5.cancel();\n          event.preventDefault();\n        }\n      });\n    }\n  }, {\n    key: 'cancel',\n    value: function cancel() {\n      this.hide();\n    }\n  }, {\n    key: 'edit',\n    value: function edit() {\n      var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';\n      var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      this.root.classList.remove('ql-hidden');\n      this.root.classList.add('ql-editing');\n      if (preview != null) {\n        this.textbox.value = preview;\n      } else if (mode !== this.root.getAttribute('data-mode')) {\n        this.textbox.value = '';\n      }\n      this.position(this.quill.getBounds(this.quill.selection.savedRange));\n      this.textbox.select();\n      this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');\n      this.root.setAttribute('data-mode', mode);\n    }\n  }, {\n    key: 'restoreFocus',\n    value: function restoreFocus() {\n      var scrollTop = this.quill.scrollingContainer.scrollTop;\n      this.quill.focus();\n      this.quill.scrollingContainer.scrollTop = scrollTop;\n    }\n  }, {\n    key: 'save',\n    value: function save() {\n      var value = this.textbox.value;\n      switch (this.root.getAttribute('data-mode')) {\n        case 'link':\n          {\n            var scrollTop = this.quill.root.scrollTop;\n            if (this.linkRange) {\n              this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);\n              delete this.linkRange;\n            } else {\n              this.restoreFocus();\n              this.quill.format('link', value, _emitter2.default.sources.USER);\n            }\n            this.quill.root.scrollTop = scrollTop;\n            break;\n          }\n        case 'video':\n          {\n            value = extractVideoUrl(value);\n          } // eslint-disable-next-line no-fallthrough\n        case 'formula':\n          {\n            if (!value) break;\n            var range = this.quill.getSelection(true);\n            if (range != null) {\n              var index = range.index + range.length;\n              this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);\n              if (this.root.getAttribute('data-mode') === 'formula') {\n                this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);\n              }\n              this.quill.setSelection(index + 2, _emitter2.default.sources.USER);\n            }\n            break;\n          }\n        default:\n      }\n      this.textbox.value = '';\n      this.hide();\n    }\n  }]);\n\n  return BaseTooltip;\n}(_tooltip2.default);\n\nfunction extractVideoUrl(url) {\n  var match = url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n  if (match) {\n    return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0';\n  }\n  if (match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) {\n    // eslint-disable-line no-cond-assign\n    return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/';\n  }\n  return url;\n}\n\nfunction fillSelect(select, values) {\n  var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  values.forEach(function (value) {\n    var option = document.createElement('option');\n    if (value === defaultValue) {\n      option.setAttribute('selected', 'selected');\n    } else {\n      option.setAttribute('value', value);\n    }\n    select.appendChild(option);\n  });\n}\n\nexports.BaseTooltip = BaseTooltip;\nexports.default = BaseTheme;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedList = /** @class */ (function () {\n    function LinkedList() {\n        this.head = this.tail = null;\n        this.length = 0;\n    }\n    LinkedList.prototype.append = function () {\n        var nodes = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            nodes[_i] = arguments[_i];\n        }\n        this.insertBefore(nodes[0], null);\n        if (nodes.length > 1) {\n            this.append.apply(this, nodes.slice(1));\n        }\n    };\n    LinkedList.prototype.contains = function (node) {\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            if (cur === node)\n                return true;\n        }\n        return false;\n    };\n    LinkedList.prototype.insertBefore = function (node, refNode) {\n        if (!node)\n            return;\n        node.next = refNode;\n        if (refNode != null) {\n            node.prev = refNode.prev;\n            if (refNode.prev != null) {\n                refNode.prev.next = node;\n            }\n            refNode.prev = node;\n            if (refNode === this.head) {\n                this.head = node;\n            }\n        }\n        else if (this.tail != null) {\n            this.tail.next = node;\n            node.prev = this.tail;\n            this.tail = node;\n        }\n        else {\n            node.prev = null;\n            this.head = this.tail = node;\n        }\n        this.length += 1;\n    };\n    LinkedList.prototype.offset = function (target) {\n        var index = 0, cur = this.head;\n        while (cur != null) {\n            if (cur === target)\n                return index;\n            index += cur.length();\n            cur = cur.next;\n        }\n        return -1;\n    };\n    LinkedList.prototype.remove = function (node) {\n        if (!this.contains(node))\n            return;\n        if (node.prev != null)\n            node.prev.next = node.next;\n        if (node.next != null)\n            node.next.prev = node.prev;\n        if (node === this.head)\n            this.head = node.next;\n        if (node === this.tail)\n            this.tail = node.prev;\n        this.length -= 1;\n    };\n    LinkedList.prototype.iterator = function (curNode) {\n        if (curNode === void 0) { curNode = this.head; }\n        // TODO use yield when we can\n        return function () {\n            var ret = curNode;\n            if (curNode != null)\n                curNode = curNode.next;\n            return ret;\n        };\n    };\n    LinkedList.prototype.find = function (index, inclusive) {\n        if (inclusive === void 0) { inclusive = false; }\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            var length = cur.length();\n            if (index < length ||\n                (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) {\n                return [cur, index];\n            }\n            index -= length;\n        }\n        return [null, 0];\n    };\n    LinkedList.prototype.forEach = function (callback) {\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            callback(cur);\n        }\n    };\n    LinkedList.prototype.forEachAt = function (index, length, callback) {\n        if (length <= 0)\n            return;\n        var _a = this.find(index), startNode = _a[0], offset = _a[1];\n        var cur, curIndex = index - offset, next = this.iterator(startNode);\n        while ((cur = next()) && curIndex < index + length) {\n            var curLength = cur.length();\n            if (index > curIndex) {\n                callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n            }\n            else {\n                callback(cur, 0, Math.min(curLength, index + length - curIndex));\n            }\n            curIndex += curLength;\n        }\n    };\n    LinkedList.prototype.map = function (callback) {\n        return this.reduce(function (memo, cur) {\n            memo.push(callback(cur));\n            return memo;\n        }, []);\n    };\n    LinkedList.prototype.reduce = function (callback, memo) {\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            memo = callback(memo, cur);\n        }\n        return memo;\n    };\n    return LinkedList;\n}());\nexports.default = LinkedList;\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar OBSERVER_CONFIG = {\n    attributes: true,\n    characterData: true,\n    characterDataOldValue: true,\n    childList: true,\n    subtree: true,\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\nvar ScrollBlot = /** @class */ (function (_super) {\n    __extends(ScrollBlot, _super);\n    function ScrollBlot(node) {\n        var _this = _super.call(this, node) || this;\n        _this.scroll = _this;\n        _this.observer = new MutationObserver(function (mutations) {\n            _this.update(mutations);\n        });\n        _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n        _this.attach();\n        return _this;\n    }\n    ScrollBlot.prototype.detach = function () {\n        _super.prototype.detach.call(this);\n        this.observer.disconnect();\n    };\n    ScrollBlot.prototype.deleteAt = function (index, length) {\n        this.update();\n        if (index === 0 && length === this.length()) {\n            this.children.forEach(function (child) {\n                child.remove();\n            });\n        }\n        else {\n            _super.prototype.deleteAt.call(this, index, length);\n        }\n    };\n    ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n        this.update();\n        _super.prototype.formatAt.call(this, index, length, name, value);\n    };\n    ScrollBlot.prototype.insertAt = function (index, value, def) {\n        this.update();\n        _super.prototype.insertAt.call(this, index, value, def);\n    };\n    ScrollBlot.prototype.optimize = function (mutations, context) {\n        var _this = this;\n        if (mutations === void 0) { mutations = []; }\n        if (context === void 0) { context = {}; }\n        _super.prototype.optimize.call(this, context);\n        // We must modify mutations directly, cannot make copy and then modify\n        var records = [].slice.call(this.observer.takeRecords());\n        // Array.push currently seems to be implemented by a non-tail recursive function\n        // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n        while (records.length > 0)\n            mutations.push(records.pop());\n        // TODO use WeakMap\n        var mark = function (blot, markParent) {\n            if (markParent === void 0) { markParent = true; }\n            if (blot == null || blot === _this)\n                return;\n            if (blot.domNode.parentNode == null)\n                return;\n            // @ts-ignore\n            if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations = [];\n            }\n            if (markParent)\n                mark(blot.parent);\n        };\n        var optimize = function (blot) {\n            // Post-order traversal\n            if (\n            // @ts-ignore\n            blot.domNode[Registry.DATA_KEY] == null ||\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations == null) {\n                return;\n            }\n            if (blot instanceof container_1.default) {\n                blot.children.forEach(optimize);\n            }\n            blot.optimize(context);\n        };\n        var remaining = mutations;\n        for (var i = 0; remaining.length > 0; i += 1) {\n            if (i >= MAX_OPTIMIZE_ITERATIONS) {\n                throw new Error('[Parchment] Maximum optimize iterations reached');\n            }\n            remaining.forEach(function (mutation) {\n                var blot = Registry.find(mutation.target, true);\n                if (blot == null)\n                    return;\n                if (blot.domNode === mutation.target) {\n                    if (mutation.type === 'childList') {\n                        mark(Registry.find(mutation.previousSibling, false));\n                        [].forEach.call(mutation.addedNodes, function (node) {\n                            var child = Registry.find(node, false);\n                            mark(child, false);\n                            if (child instanceof container_1.default) {\n                                child.children.forEach(function (grandChild) {\n                                    mark(grandChild, false);\n                                });\n                            }\n                        });\n                    }\n                    else if (mutation.type === 'attributes') {\n                        mark(blot.prev);\n                    }\n                }\n                mark(blot);\n            });\n            this.children.forEach(optimize);\n            remaining = [].slice.call(this.observer.takeRecords());\n            records = remaining.slice();\n            while (records.length > 0)\n                mutations.push(records.pop());\n        }\n    };\n    ScrollBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        if (context === void 0) { context = {}; }\n        mutations = mutations || this.observer.takeRecords();\n        // TODO use WeakMap\n        mutations\n            .map(function (mutation) {\n            var blot = Registry.find(mutation.target, true);\n            if (blot == null)\n                return null;\n            // @ts-ignore\n            if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n                return blot;\n            }\n            else {\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n                return null;\n            }\n        })\n            .forEach(function (blot) {\n            if (blot == null ||\n                blot === _this ||\n                //@ts-ignore\n                blot.domNode[Registry.DATA_KEY] == null)\n                return;\n            // @ts-ignore\n            blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);\n        });\n        // @ts-ignore\n        if (this.domNode[Registry.DATA_KEY].mutations != null) {\n            // @ts-ignore\n            _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);\n        }\n        this.optimize(mutations, context);\n    };\n    ScrollBlot.blotName = 'scroll';\n    ScrollBlot.defaultChild = 'block';\n    ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n    ScrollBlot.tagName = 'DIV';\n    return ScrollBlot;\n}(container_1.default));\nexports.default = ScrollBlot;\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\n// Shallow object comparison\nfunction isEqual(obj1, obj2) {\n    if (Object.keys(obj1).length !== Object.keys(obj2).length)\n        return false;\n    // @ts-ignore\n    for (var prop in obj1) {\n        // @ts-ignore\n        if (obj1[prop] !== obj2[prop])\n            return false;\n    }\n    return true;\n}\nvar InlineBlot = /** @class */ (function (_super) {\n    __extends(InlineBlot, _super);\n    function InlineBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    InlineBlot.formats = function (domNode) {\n        if (domNode.tagName === InlineBlot.tagName)\n            return undefined;\n        return _super.formats.call(this, domNode);\n    };\n    InlineBlot.prototype.format = function (name, value) {\n        var _this = this;\n        if (name === this.statics.blotName && !value) {\n            this.children.forEach(function (child) {\n                if (!(child instanceof format_1.default)) {\n                    child = child.wrap(InlineBlot.blotName, true);\n                }\n                _this.attributes.copy(child);\n            });\n            this.unwrap();\n        }\n        else {\n            _super.prototype.format.call(this, name, value);\n        }\n    };\n    InlineBlot.prototype.formatAt = function (index, length, name, value) {\n        if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n            var blot = this.isolate(index, length);\n            blot.format(name, value);\n        }\n        else {\n            _super.prototype.formatAt.call(this, index, length, name, value);\n        }\n    };\n    InlineBlot.prototype.optimize = function (context) {\n        _super.prototype.optimize.call(this, context);\n        var formats = this.formats();\n        if (Object.keys(formats).length === 0) {\n            return this.unwrap(); // unformatted span\n        }\n        var next = this.next;\n        if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n            next.moveChildren(this);\n            next.remove();\n        }\n    };\n    InlineBlot.blotName = 'inline';\n    InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n    InlineBlot.tagName = 'SPAN';\n    return InlineBlot;\n}(format_1.default));\nexports.default = InlineBlot;\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\nvar BlockBlot = /** @class */ (function (_super) {\n    __extends(BlockBlot, _super);\n    function BlockBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    BlockBlot.formats = function (domNode) {\n        var tagName = Registry.query(BlockBlot.blotName).tagName;\n        if (domNode.tagName === tagName)\n            return undefined;\n        return _super.formats.call(this, domNode);\n    };\n    BlockBlot.prototype.format = function (name, value) {\n        if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n            return;\n        }\n        else if (name === this.statics.blotName && !value) {\n            this.replaceWith(BlockBlot.blotName);\n        }\n        else {\n            _super.prototype.format.call(this, name, value);\n        }\n    };\n    BlockBlot.prototype.formatAt = function (index, length, name, value) {\n        if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n            this.format(name, value);\n        }\n        else {\n            _super.prototype.formatAt.call(this, index, length, name, value);\n        }\n    };\n    BlockBlot.prototype.insertAt = function (index, value, def) {\n        if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n            // Insert text or inline\n            _super.prototype.insertAt.call(this, index, value, def);\n        }\n        else {\n            var after = this.split(index);\n            var blot = Registry.create(value, def);\n            after.parent.insertBefore(blot, after);\n        }\n    };\n    BlockBlot.prototype.update = function (mutations, context) {\n        if (navigator.userAgent.match(/Trident/)) {\n            this.build();\n        }\n        else {\n            _super.prototype.update.call(this, mutations, context);\n        }\n    };\n    BlockBlot.blotName = 'block';\n    BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n    BlockBlot.tagName = 'P';\n    return BlockBlot;\n}(format_1.default));\nexports.default = BlockBlot;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar EmbedBlot = /** @class */ (function (_super) {\n    __extends(EmbedBlot, _super);\n    function EmbedBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    EmbedBlot.formats = function (domNode) {\n        return undefined;\n    };\n    EmbedBlot.prototype.format = function (name, value) {\n        // super.formatAt wraps, which is what we want in general,\n        // but this allows subclasses to overwrite for formats\n        // that just apply to particular embeds\n        _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n    };\n    EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n        if (index === 0 && length === this.length()) {\n            this.format(name, value);\n        }\n        else {\n            _super.prototype.formatAt.call(this, index, length, name, value);\n        }\n    };\n    EmbedBlot.prototype.formats = function () {\n        return this.statics.formats(this.domNode);\n    };\n    return EmbedBlot;\n}(leaf_1.default));\nexports.default = EmbedBlot;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar Registry = __webpack_require__(1);\nvar TextBlot = /** @class */ (function (_super) {\n    __extends(TextBlot, _super);\n    function TextBlot(node) {\n        var _this = _super.call(this, node) || this;\n        _this.text = _this.statics.value(_this.domNode);\n        return _this;\n    }\n    TextBlot.create = function (value) {\n        return document.createTextNode(value);\n    };\n    TextBlot.value = function (domNode) {\n        var text = domNode.data;\n        // @ts-ignore\n        if (text['normalize'])\n            text = text['normalize']();\n        return text;\n    };\n    TextBlot.prototype.deleteAt = function (index, length) {\n        this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n    };\n    TextBlot.prototype.index = function (node, offset) {\n        if (this.domNode === node) {\n            return offset;\n        }\n        return -1;\n    };\n    TextBlot.prototype.insertAt = function (index, value, def) {\n        if (def == null) {\n            this.text = this.text.slice(0, index) + value + this.text.slice(index);\n            this.domNode.data = this.text;\n        }\n        else {\n            _super.prototype.insertAt.call(this, index, value, def);\n        }\n    };\n    TextBlot.prototype.length = function () {\n        return this.text.length;\n    };\n    TextBlot.prototype.optimize = function (context) {\n        _super.prototype.optimize.call(this, context);\n        this.text = this.statics.value(this.domNode);\n        if (this.text.length === 0) {\n            this.remove();\n        }\n        else if (this.next instanceof TextBlot && this.next.prev === this) {\n            this.insertAt(this.length(), this.next.value());\n            this.next.remove();\n        }\n    };\n    TextBlot.prototype.position = function (index, inclusive) {\n        if (inclusive === void 0) { inclusive = false; }\n        return [this.domNode, index];\n    };\n    TextBlot.prototype.split = function (index, force) {\n        if (force === void 0) { force = false; }\n        if (!force) {\n            if (index === 0)\n                return this;\n            if (index === this.length())\n                return this.next;\n        }\n        var after = Registry.create(this.domNode.splitText(index));\n        this.parent.insertBefore(after, this.next);\n        this.text = this.statics.value(this.domNode);\n        return after;\n    };\n    TextBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        if (mutations.some(function (mutation) {\n            return mutation.type === 'characterData' && mutation.target === _this.domNode;\n        })) {\n            this.text = this.statics.value(this.domNode);\n        }\n    };\n    TextBlot.prototype.value = function () {\n        return this.text;\n    };\n    TextBlot.blotName = 'text';\n    TextBlot.scope = Registry.Scope.INLINE_BLOT;\n    return TextBlot;\n}(leaf_1.default));\nexports.default = TextBlot;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n  var _toggle = DOMTokenList.prototype.toggle;\n  DOMTokenList.prototype.toggle = function (token, force) {\n    if (arguments.length > 1 && !this.contains(token) === !force) {\n      return force;\n    } else {\n      return _toggle.call(this, token);\n    }\n  };\n}\n\nif (!String.prototype.startsWith) {\n  String.prototype.startsWith = function (searchString, position) {\n    position = position || 0;\n    return this.substr(position, searchString.length) === searchString;\n  };\n}\n\nif (!String.prototype.endsWith) {\n  String.prototype.endsWith = function (searchString, position) {\n    var subjectString = this.toString();\n    if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n      position = subjectString.length;\n    }\n    position -= searchString.length;\n    var lastIndex = subjectString.indexOf(searchString, position);\n    return lastIndex !== -1 && lastIndex === position;\n  };\n}\n\nif (!Array.prototype.find) {\n  Object.defineProperty(Array.prototype, \"find\", {\n    value: function value(predicate) {\n      if (this === null) {\n        throw new TypeError('Array.prototype.find called on null or undefined');\n      }\n      if (typeof predicate !== 'function') {\n        throw new TypeError('predicate must be a function');\n      }\n      var list = Object(this);\n      var length = list.length >>> 0;\n      var thisArg = arguments[1];\n      var value;\n\n      for (var i = 0; i < length; i++) {\n        value = list[i];\n        if (predicate.call(thisArg, value, i, list)) {\n          return value;\n        }\n      }\n      return undefined;\n    }\n  });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  // Disable resizing in Firefox\n  document.execCommand(\"enableObjectResizing\", false, false);\n  // Disable automatic linkifying in IE11\n  document.execCommand(\"autoUrlDetect\", false, false);\n});\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\n/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts.  Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos) {\n  // Check for equality (speedup).\n  if (text1 == text2) {\n    if (text1) {\n      return [[DIFF_EQUAL, text1]];\n    }\n    return [];\n  }\n\n  // Check cursor_pos within bounds\n  if (cursor_pos < 0 || text1.length < cursor_pos) {\n    cursor_pos = null;\n  }\n\n  // Trim off common prefix (speedup).\n  var commonlength = diff_commonPrefix(text1, text2);\n  var commonprefix = text1.substring(0, commonlength);\n  text1 = text1.substring(commonlength);\n  text2 = text2.substring(commonlength);\n\n  // Trim off common suffix (speedup).\n  commonlength = diff_commonSuffix(text1, text2);\n  var commonsuffix = text1.substring(text1.length - commonlength);\n  text1 = text1.substring(0, text1.length - commonlength);\n  text2 = text2.substring(0, text2.length - commonlength);\n\n  // Compute the diff on the middle block.\n  var diffs = diff_compute_(text1, text2);\n\n  // Restore the prefix and suffix.\n  if (commonprefix) {\n    diffs.unshift([DIFF_EQUAL, commonprefix]);\n  }\n  if (commonsuffix) {\n    diffs.push([DIFF_EQUAL, commonsuffix]);\n  }\n  diff_cleanupMerge(diffs);\n  if (cursor_pos != null) {\n    diffs = fix_cursor(diffs, cursor_pos);\n  }\n  diffs = fix_emoji(diffs);\n  return diffs;\n};\n\n\n/**\n * Find the differences between two texts.  Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n  var diffs;\n\n  if (!text1) {\n    // Just add some text (speedup).\n    return [[DIFF_INSERT, text2]];\n  }\n\n  if (!text2) {\n    // Just delete some text (speedup).\n    return [[DIFF_DELETE, text1]];\n  }\n\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  var i = longtext.indexOf(shorttext);\n  if (i != -1) {\n    // Shorter text is inside the longer text (speedup).\n    diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n             [DIFF_EQUAL, shorttext],\n             [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n    // Swap insertions for deletions if diff is reversed.\n    if (text1.length > text2.length) {\n      diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n    }\n    return diffs;\n  }\n\n  if (shorttext.length == 1) {\n    // Single character string.\n    // After the previous speedup, the character can't be an equality.\n    return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n  }\n\n  // Check to see if the problem can be split in two.\n  var hm = diff_halfMatch_(text1, text2);\n  if (hm) {\n    // A half-match was found, sort out the return data.\n    var text1_a = hm[0];\n    var text1_b = hm[1];\n    var text2_a = hm[2];\n    var text2_b = hm[3];\n    var mid_common = hm[4];\n    // Send both pairs off for separate processing.\n    var diffs_a = diff_main(text1_a, text2_a);\n    var diffs_b = diff_main(text1_b, text2_b);\n    // Merge the results.\n    return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n  }\n\n  return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n  // Cache the text lengths to prevent multiple calls.\n  var text1_length = text1.length;\n  var text2_length = text2.length;\n  var max_d = Math.ceil((text1_length + text2_length) / 2);\n  var v_offset = max_d;\n  var v_length = 2 * max_d;\n  var v1 = new Array(v_length);\n  var v2 = new Array(v_length);\n  // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n  // integers and undefined.\n  for (var x = 0; x < v_length; x++) {\n    v1[x] = -1;\n    v2[x] = -1;\n  }\n  v1[v_offset + 1] = 0;\n  v2[v_offset + 1] = 0;\n  var delta = text1_length - text2_length;\n  // If the total number of characters is odd, then the front path will collide\n  // with the reverse path.\n  var front = (delta % 2 != 0);\n  // Offsets for start and end of k loop.\n  // Prevents mapping of space beyond the grid.\n  var k1start = 0;\n  var k1end = 0;\n  var k2start = 0;\n  var k2end = 0;\n  for (var d = 0; d < max_d; d++) {\n    // Walk the front path one step.\n    for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n      var k1_offset = v_offset + k1;\n      var x1;\n      if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n        x1 = v1[k1_offset + 1];\n      } else {\n        x1 = v1[k1_offset - 1] + 1;\n      }\n      var y1 = x1 - k1;\n      while (x1 < text1_length && y1 < text2_length &&\n             text1.charAt(x1) == text2.charAt(y1)) {\n        x1++;\n        y1++;\n      }\n      v1[k1_offset] = x1;\n      if (x1 > text1_length) {\n        // Ran off the right of the graph.\n        k1end += 2;\n      } else if (y1 > text2_length) {\n        // Ran off the bottom of the graph.\n        k1start += 2;\n      } else if (front) {\n        var k2_offset = v_offset + delta - k1;\n        if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n          // Mirror x2 onto top-left coordinate system.\n          var x2 = text1_length - v2[k2_offset];\n          if (x1 >= x2) {\n            // Overlap detected.\n            return diff_bisectSplit_(text1, text2, x1, y1);\n          }\n        }\n      }\n    }\n\n    // Walk the reverse path one step.\n    for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n      var k2_offset = v_offset + k2;\n      var x2;\n      if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n        x2 = v2[k2_offset + 1];\n      } else {\n        x2 = v2[k2_offset - 1] + 1;\n      }\n      var y2 = x2 - k2;\n      while (x2 < text1_length && y2 < text2_length &&\n             text1.charAt(text1_length - x2 - 1) ==\n             text2.charAt(text2_length - y2 - 1)) {\n        x2++;\n        y2++;\n      }\n      v2[k2_offset] = x2;\n      if (x2 > text1_length) {\n        // Ran off the left of the graph.\n        k2end += 2;\n      } else if (y2 > text2_length) {\n        // Ran off the top of the graph.\n        k2start += 2;\n      } else if (!front) {\n        var k1_offset = v_offset + delta - k2;\n        if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n          var x1 = v1[k1_offset];\n          var y1 = v_offset + x1 - k1_offset;\n          // Mirror x2 onto top-left coordinate system.\n          x2 = text1_length - x2;\n          if (x1 >= x2) {\n            // Overlap detected.\n            return diff_bisectSplit_(text1, text2, x1, y1);\n          }\n        }\n      }\n    }\n  }\n  // Diff took too long and hit the deadline or\n  // number of diffs equals number of characters, no commonality at all.\n  return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n  var text1a = text1.substring(0, x);\n  var text2a = text2.substring(0, y);\n  var text1b = text1.substring(x);\n  var text2b = text2.substring(y);\n\n  // Compute both diffs serially.\n  var diffs = diff_main(text1a, text2a);\n  var diffsb = diff_main(text1b, text2b);\n\n  return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n *     string.\n */\nfunction diff_commonPrefix(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerstart = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(pointerstart, pointermid) ==\n        text2.substring(pointerstart, pointermid)) {\n      pointermin = pointermid;\n      pointerstart = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 ||\n      text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerend = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n        text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n      pointermin = pointermid;\n      pointerend = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.<string>} Five element Array, containing the prefix of\n *     text1, the suffix of text1, the prefix of text2, the suffix of\n *     text2 and the common middle.  Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n    return null;  // Pointless.\n  }\n\n  /**\n   * Does a substring of shorttext exist within longtext such that the substring\n   * is at least half the length of longtext?\n   * Closure, but does not reference any external variables.\n   * @param {string} longtext Longer string.\n   * @param {string} shorttext Shorter string.\n   * @param {number} i Start index of quarter length substring within longtext.\n   * @return {Array.<string>} Five element Array, containing the prefix of\n   *     longtext, the suffix of longtext, the prefix of shorttext, the suffix\n   *     of shorttext and the common middle.  Or null if there was no match.\n   * @private\n   */\n  function diff_halfMatchI_(longtext, shorttext, i) {\n    // Start with a 1/4 length substring at position i as a seed.\n    var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n    var j = -1;\n    var best_common = '';\n    var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n    while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n      var prefixLength = diff_commonPrefix(longtext.substring(i),\n                                           shorttext.substring(j));\n      var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n                                           shorttext.substring(0, j));\n      if (best_common.length < suffixLength + prefixLength) {\n        best_common = shorttext.substring(j - suffixLength, j) +\n            shorttext.substring(j, j + prefixLength);\n        best_longtext_a = longtext.substring(0, i - suffixLength);\n        best_longtext_b = longtext.substring(i + prefixLength);\n        best_shorttext_a = shorttext.substring(0, j - suffixLength);\n        best_shorttext_b = shorttext.substring(j + prefixLength);\n      }\n    }\n    if (best_common.length * 2 >= longtext.length) {\n      return [best_longtext_a, best_longtext_b,\n              best_shorttext_a, best_shorttext_b, best_common];\n    } else {\n      return null;\n    }\n  }\n\n  // First check if the second quarter is the seed for a half-match.\n  var hm1 = diff_halfMatchI_(longtext, shorttext,\n                             Math.ceil(longtext.length / 4));\n  // Check again based on the third quarter.\n  var hm2 = diff_halfMatchI_(longtext, shorttext,\n                             Math.ceil(longtext.length / 2));\n  var hm;\n  if (!hm1 && !hm2) {\n    return null;\n  } else if (!hm2) {\n    hm = hm1;\n  } else if (!hm1) {\n    hm = hm2;\n  } else {\n    // Both matched.  Select the longest.\n    hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n  }\n\n  // A half-match was found, sort out the return data.\n  var text1_a, text1_b, text2_a, text2_b;\n  if (text1.length > text2.length) {\n    text1_a = hm[0];\n    text1_b = hm[1];\n    text2_a = hm[2];\n    text2_b = hm[3];\n  } else {\n    text2_a = hm[0];\n    text2_b = hm[1];\n    text1_a = hm[2];\n    text1_b = hm[3];\n  }\n  var mid_common = hm[4];\n  return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections.  Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n  diffs.push([DIFF_EQUAL, '']);  // Add a dummy entry at the end.\n  var pointer = 0;\n  var count_delete = 0;\n  var count_insert = 0;\n  var text_delete = '';\n  var text_insert = '';\n  var commonlength;\n  while (pointer < diffs.length) {\n    switch (diffs[pointer][0]) {\n      case DIFF_INSERT:\n        count_insert++;\n        text_insert += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_DELETE:\n        count_delete++;\n        text_delete += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_EQUAL:\n        // Upon reaching an equality, check for prior redundancies.\n        if (count_delete + count_insert > 1) {\n          if (count_delete !== 0 && count_insert !== 0) {\n            // Factor out any common prefixies.\n            commonlength = diff_commonPrefix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              if ((pointer - count_delete - count_insert) > 0 &&\n                  diffs[pointer - count_delete - count_insert - 1][0] ==\n                  DIFF_EQUAL) {\n                diffs[pointer - count_delete - count_insert - 1][1] +=\n                    text_insert.substring(0, commonlength);\n              } else {\n                diffs.splice(0, 0, [DIFF_EQUAL,\n                                    text_insert.substring(0, commonlength)]);\n                pointer++;\n              }\n              text_insert = text_insert.substring(commonlength);\n              text_delete = text_delete.substring(commonlength);\n            }\n            // Factor out any common suffixies.\n            commonlength = diff_commonSuffix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              diffs[pointer][1] = text_insert.substring(text_insert.length -\n                  commonlength) + diffs[pointer][1];\n              text_insert = text_insert.substring(0, text_insert.length -\n                  commonlength);\n              text_delete = text_delete.substring(0, text_delete.length -\n                  commonlength);\n            }\n          }\n          // Delete the offending records and add the merged ones.\n          if (count_delete === 0) {\n            diffs.splice(pointer - count_insert,\n                count_delete + count_insert, [DIFF_INSERT, text_insert]);\n          } else if (count_insert === 0) {\n            diffs.splice(pointer - count_delete,\n                count_delete + count_insert, [DIFF_DELETE, text_delete]);\n          } else {\n            diffs.splice(pointer - count_delete - count_insert,\n                count_delete + count_insert, [DIFF_DELETE, text_delete],\n                [DIFF_INSERT, text_insert]);\n          }\n          pointer = pointer - count_delete - count_insert +\n                    (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n        } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n          // Merge this equality with the previous one.\n          diffs[pointer - 1][1] += diffs[pointer][1];\n          diffs.splice(pointer, 1);\n        } else {\n          pointer++;\n        }\n        count_insert = 0;\n        count_delete = 0;\n        text_delete = '';\n        text_insert = '';\n        break;\n    }\n  }\n  if (diffs[diffs.length - 1][1] === '') {\n    diffs.pop();  // Remove the dummy entry at the end.\n  }\n\n  // Second pass: look for single edits surrounded on both sides by equalities\n  // which can be shifted sideways to eliminate an equality.\n  // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n  var changes = false;\n  pointer = 1;\n  // Intentionally ignore the first and last element (don't need checking).\n  while (pointer < diffs.length - 1) {\n    if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n        diffs[pointer + 1][0] == DIFF_EQUAL) {\n      // This is a single edit surrounded by equalities.\n      if (diffs[pointer][1].substring(diffs[pointer][1].length -\n          diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n        // Shift the edit over the previous equality.\n        diffs[pointer][1] = diffs[pointer - 1][1] +\n            diffs[pointer][1].substring(0, diffs[pointer][1].length -\n                                        diffs[pointer - 1][1].length);\n        diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n        diffs.splice(pointer - 1, 1);\n        changes = true;\n      } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n          diffs[pointer + 1][1]) {\n        // Shift the edit over the next equality.\n        diffs[pointer - 1][1] += diffs[pointer + 1][1];\n        diffs[pointer][1] =\n            diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n            diffs[pointer + 1][1];\n        diffs.splice(pointer + 1, 1);\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n  // If shifts were made, the diff needs reordering and another shift sweep.\n  if (changes) {\n    diff_cleanupMerge(diffs);\n  }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n/*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n *   cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n *     => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n *   cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n *     => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\nfunction cursor_normalize_diff (diffs, cursor_pos) {\n  if (cursor_pos === 0) {\n    return [DIFF_EQUAL, diffs];\n  }\n  for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n    var d = diffs[i];\n    if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n      var next_pos = current_pos + d[1].length;\n      if (cursor_pos === next_pos) {\n        return [i + 1, diffs];\n      } else if (cursor_pos < next_pos) {\n        // copy to prevent side effects\n        diffs = diffs.slice();\n        // split d into two diff changes\n        var split_pos = cursor_pos - current_pos;\n        var d_left = [d[0], d[1].slice(0, split_pos)];\n        var d_right = [d[0], d[1].slice(split_pos)];\n        diffs.splice(i, 1, d_left, d_right);\n        return [i + 1, diffs];\n      } else {\n        current_pos = next_pos;\n      }\n    }\n  }\n  throw new Error('cursor_pos is out of bounds!')\n}\n\n/*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n *   Check if a naive shift is possible:\n *     [0, X], [ 1, Y] -> [ 1, Y], [0, X]    (if X + Y === Y + X)\n *     [0, X], [-1, Y] -> [-1, Y], [0, X]    (if X + Y === Y + X) - holds same result\n * Case 2)\n *   Check if the following shifts are possible:\n *     [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n *     [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n *         ^            ^\n *         d          d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\nfunction fix_cursor (diffs, cursor_pos) {\n  var norm = cursor_normalize_diff(diffs, cursor_pos);\n  var ndiffs = norm[1];\n  var cursor_pointer = norm[0];\n  var d = ndiffs[cursor_pointer];\n  var d_next = ndiffs[cursor_pointer + 1];\n\n  if (d == null) {\n    // Text was deleted from end of original string,\n    // cursor is now out of bounds in new string\n    return diffs;\n  } else if (d[0] !== DIFF_EQUAL) {\n    // A modification happened at the cursor location.\n    // This is the expected outcome, so we can return the original diff.\n    return diffs;\n  } else {\n    if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n      // Case 1)\n      // It is possible to perform a naive shift\n      ndiffs.splice(cursor_pointer, 2, d_next, d)\n      return merge_tuples(ndiffs, cursor_pointer, 2)\n    } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n      // Case 2)\n      // d[1] is a prefix of d_next[1]\n      // We can assume that d_next[0] !== 0, since d[0] === 0\n      // Shift edit locations..\n      ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n      var suffix = d_next[1].slice(d[1].length);\n      if (suffix.length > 0) {\n        ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n      }\n      return merge_tuples(ndiffs, cursor_pointer, 3)\n    } else {\n      // Not possible to perform any modification\n      return diffs;\n    }\n  }\n}\n\n/*\n * Check diff did not split surrogate pairs.\n * Ex. [0, '\\uD83D'], [-1, '\\uDC36'], [1, '\\uDC2F'] -> [-1, '\\uD83D\\uDC36'], [1, '\\uD83D\\uDC2F']\n *     '\\uD83D\\uDC36' === '🐶', '\\uD83D\\uDC2F' === '🐯'\n *\n * @param {Array} diffs Array of diff tuples\n * @return {Array} Array of diff tuples\n */\nfunction fix_emoji (diffs) {\n  var compact = false;\n  var starts_with_pair_end = function(str) {\n    return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\n  }\n  var ends_with_pair_start = function(str) {\n    return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF;\n  }\n  for (var i = 2; i < diffs.length; i += 1) {\n    if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) &&\n        diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) &&\n        diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\n      compact = true;\n\n      diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1];\n      diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1];\n\n      diffs[i-2][1] = diffs[i-2][1].slice(0, -1);\n    }\n  }\n  if (!compact) {\n    return diffs;\n  }\n  var fixed_diffs = [];\n  for (var i = 0; i < diffs.length; i += 1) {\n    if (diffs[i][1].length > 0) {\n      fixed_diffs.push(diffs[i]);\n    }\n  }\n  return fixed_diffs;\n}\n\n/*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\nfunction merge_tuples (diffs, start, length) {\n  // Check from (start-1) to (start+length).\n  for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n    if (i + 1 < diffs.length) {\n      var left_d = diffs[i];\n      var right_d = diffs[i+1];\n      if (left_d[0] === right_d[1]) {\n        diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n      }\n    }\n  }\n  return diffs;\n}\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports) {\n\nexports = module.exports = typeof Object.keys === 'function'\n  ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n}\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\nvar supportsArgumentsClass = (function(){\n  return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n  return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n  return object &&\n    typeof object == 'object' &&\n    typeof object.length == 'number' &&\n    Object.prototype.hasOwnProperty.call(object, 'callee') &&\n    !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n    false;\n};\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n  var evt = prefix ? prefix + event : event\n    , available = this._events[evt];\n\n  if (exists) return !!available;\n  if (!available) return [];\n  if (available.fn) return [available.fn];\n\n  for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n    ee[i] = available[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  var listener = new EE(fn, context || this)\n    , evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n  else if (!this._events[evt].fn) this._events[evt].push(listener);\n  else this._events[evt] = [this._events[evt], listener];\n\n  return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  var listener = new EE(fn, context || this, true)\n    , evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n  else if (!this._events[evt].fn) this._events[evt].push(listener);\n  else this._events[evt] = [this._events[evt], listener];\n\n  return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    if (--this._eventsCount === 0) this._events = new Events();\n    else delete this._events[evt];\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n         listeners.fn === fn\n      && (!once || listeners.once)\n      && (!context || listeners.context === context)\n    ) {\n      if (--this._eventsCount === 0) this._events = new Events();\n      else delete this._events[evt];\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n           listeners[i].fn !== fn\n        || (once && !listeners[i].once)\n        || (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else if (--this._eventsCount === 0) this._events = new Events();\n    else delete this._events[evt];\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) {\n      if (--this._eventsCount === 0) this._events = new Events();\n      else delete this._events[evt];\n    }\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n  return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend2 = __webpack_require__(3);\n\nvar _extend3 = _interopRequireDefault(_extend2);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _align = __webpack_require__(36);\n\nvar _background = __webpack_require__(37);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _color = __webpack_require__(26);\n\nvar _direction = __webpack_require__(38);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:clipboard');\n\nvar DOM_KEY = '__ql-matcher';\n\nvar CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n\nvar ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n  memo[attr.keyName] = attr;\n  return memo;\n}, {});\n\nvar STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n  memo[attr.keyName] = attr;\n  return memo;\n}, {});\n\nvar Clipboard = function (_Module) {\n  _inherits(Clipboard, _Module);\n\n  function Clipboard(quill, options) {\n    _classCallCheck(this, Clipboard);\n\n    var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\n    _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n    _this.container = _this.quill.addContainer('ql-clipboard');\n    _this.container.setAttribute('contenteditable', true);\n    _this.container.setAttribute('tabindex', -1);\n    _this.matchers = [];\n    CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (_ref) {\n      var _ref2 = _slicedToArray(_ref, 2),\n          selector = _ref2[0],\n          matcher = _ref2[1];\n\n      if (!options.matchVisual && matcher === matchSpacing) return;\n      _this.addMatcher(selector, matcher);\n    });\n    return _this;\n  }\n\n  _createClass(Clipboard, [{\n    key: 'addMatcher',\n    value: function addMatcher(selector, matcher) {\n      this.matchers.push([selector, matcher]);\n    }\n  }, {\n    key: 'convert',\n    value: function convert(html) {\n      if (typeof html === 'string') {\n        this.container.innerHTML = html.replace(/\\>\\r?\\n +\\</g, '><'); // Remove spaces between tags\n        return this.convert();\n      }\n      var formats = this.quill.getFormat(this.quill.selection.savedRange.index);\n      if (formats[_code2.default.blotName]) {\n        var text = this.container.innerText;\n        this.container.innerHTML = '';\n        return new _quillDelta2.default().insert(text, _defineProperty({}, _code2.default.blotName, formats[_code2.default.blotName]));\n      }\n\n      var _prepareMatching = this.prepareMatching(),\n          _prepareMatching2 = _slicedToArray(_prepareMatching, 2),\n          elementMatchers = _prepareMatching2[0],\n          textMatchers = _prepareMatching2[1];\n\n      var delta = traverse(this.container, elementMatchers, textMatchers);\n      // Remove trailing newline\n      if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n        delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\n      }\n      debug.log('convert', this.container.innerHTML, delta);\n      this.container.innerHTML = '';\n      return delta;\n    }\n  }, {\n    key: 'dangerouslyPasteHTML',\n    value: function dangerouslyPasteHTML(index, html) {\n      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;\n\n      if (typeof index === 'string') {\n        this.quill.setContents(this.convert(index), html);\n        this.quill.setSelection(0, _quill2.default.sources.SILENT);\n      } else {\n        var paste = this.convert(html);\n        this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\n        this.quill.setSelection(index + paste.length(), _quill2.default.sources.SILENT);\n      }\n    }\n  }, {\n    key: 'onPaste',\n    value: function onPaste(e) {\n      var _this2 = this;\n\n      if (e.defaultPrevented || !this.quill.isEnabled()) return;\n      var range = this.quill.getSelection();\n      var delta = new _quillDelta2.default().retain(range.index);\n      var scrollTop = this.quill.scrollingContainer.scrollTop;\n      this.container.focus();\n      this.quill.selection.update(_quill2.default.sources.SILENT);\n      setTimeout(function () {\n        delta = delta.concat(_this2.convert()).delete(range.length);\n        _this2.quill.updateContents(delta, _quill2.default.sources.USER);\n        // range.length contributes to delta.length()\n        _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n        _this2.quill.scrollingContainer.scrollTop = scrollTop;\n        _this2.quill.focus();\n      }, 1);\n    }\n  }, {\n    key: 'prepareMatching',\n    value: function prepareMatching() {\n      var _this3 = this;\n\n      var elementMatchers = [],\n          textMatchers = [];\n      this.matchers.forEach(function (pair) {\n        var _pair = _slicedToArray(pair, 2),\n            selector = _pair[0],\n            matcher = _pair[1];\n\n        switch (selector) {\n          case Node.TEXT_NODE:\n            textMatchers.push(matcher);\n            break;\n          case Node.ELEMENT_NODE:\n            elementMatchers.push(matcher);\n            break;\n          default:\n            [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {\n              // TODO use weakmap\n              node[DOM_KEY] = node[DOM_KEY] || [];\n              node[DOM_KEY].push(matcher);\n            });\n            break;\n        }\n      });\n      return [elementMatchers, textMatchers];\n    }\n  }]);\n\n  return Clipboard;\n}(_module2.default);\n\nClipboard.DEFAULTS = {\n  matchers: [],\n  matchVisual: true\n};\n\nfunction applyFormat(delta, format, value) {\n  if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') {\n    return Object.keys(format).reduce(function (delta, key) {\n      return applyFormat(delta, key, format[key]);\n    }, delta);\n  } else {\n    return delta.reduce(function (delta, op) {\n      if (op.attributes && op.attributes[format]) {\n        return delta.push(op);\n      } else {\n        return delta.insert(op.insert, (0, _extend3.default)({}, _defineProperty({}, format, value), op.attributes));\n      }\n    }, new _quillDelta2.default());\n  }\n}\n\nfunction computeStyle(node) {\n  if (node.nodeType !== Node.ELEMENT_NODE) return {};\n  var DOM_KEY = '__ql-computed-style';\n  return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n  var endText = \"\";\n  for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n    var op = delta.ops[i];\n    if (typeof op.insert !== 'string') break;\n    endText = op.insert + endText;\n  }\n  return endText.slice(-1 * text.length) === text;\n}\n\nfunction isLine(node) {\n  if (node.childNodes.length === 0) return false; // Exclude embed blocks\n  var style = computeStyle(node);\n  return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction traverse(node, elementMatchers, textMatchers) {\n  // Post-order\n  if (node.nodeType === node.TEXT_NODE) {\n    return textMatchers.reduce(function (delta, matcher) {\n      return matcher(node, delta);\n    }, new _quillDelta2.default());\n  } else if (node.nodeType === node.ELEMENT_NODE) {\n    return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n      var childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n      if (childNode.nodeType === node.ELEMENT_NODE) {\n        childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {\n          return matcher(childNode, childrenDelta);\n        }, childrenDelta);\n        childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {\n          return matcher(childNode, childrenDelta);\n        }, childrenDelta);\n      }\n      return delta.concat(childrenDelta);\n    }, new _quillDelta2.default());\n  } else {\n    return new _quillDelta2.default();\n  }\n}\n\nfunction matchAlias(format, node, delta) {\n  return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta) {\n  var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n  var classes = _parchment2.default.Attributor.Class.keys(node);\n  var styles = _parchment2.default.Attributor.Style.keys(node);\n  var formats = {};\n  attributes.concat(classes).concat(styles).forEach(function (name) {\n    var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n    if (attr != null) {\n      formats[attr.attrName] = attr.value(node);\n      if (formats[attr.attrName]) return;\n    }\n    attr = ATTRIBUTE_ATTRIBUTORS[name];\n    if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n      formats[attr.attrName] = attr.value(node) || undefined;\n    }\n    attr = STYLE_ATTRIBUTORS[name];\n    if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n      attr = STYLE_ATTRIBUTORS[name];\n      formats[attr.attrName] = attr.value(node) || undefined;\n    }\n  });\n  if (Object.keys(formats).length > 0) {\n    delta = applyFormat(delta, formats);\n  }\n  return delta;\n}\n\nfunction matchBlot(node, delta) {\n  var match = _parchment2.default.query(node);\n  if (match == null) return delta;\n  if (match.prototype instanceof _parchment2.default.Embed) {\n    var embed = {};\n    var value = match.value(node);\n    if (value != null) {\n      embed[match.blotName] = value;\n      delta = new _quillDelta2.default().insert(embed, match.formats(node));\n    }\n  } else if (typeof match.formats === 'function') {\n    delta = applyFormat(delta, match.blotName, match.formats(node));\n  }\n  return delta;\n}\n\nfunction matchBreak(node, delta) {\n  if (!deltaEndsWith(delta, '\\n')) {\n    delta.insert('\\n');\n  }\n  return delta;\n}\n\nfunction matchIgnore() {\n  return new _quillDelta2.default();\n}\n\nfunction matchIndent(node, delta) {\n  var match = _parchment2.default.query(node);\n  if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n    return delta;\n  }\n  var indent = -1,\n      parent = node.parentNode;\n  while (!parent.classList.contains('ql-clipboard')) {\n    if ((_parchment2.default.query(parent) || {}).blotName === 'list') {\n      indent += 1;\n    }\n    parent = parent.parentNode;\n  }\n  if (indent <= 0) return delta;\n  return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, { indent: indent }));\n}\n\nfunction matchNewline(node, delta) {\n  if (!deltaEndsWith(delta, '\\n')) {\n    if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) {\n      delta.insert('\\n');\n    }\n  }\n  return delta;\n}\n\nfunction matchSpacing(node, delta) {\n  if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n    var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n    if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n      delta.insert('\\n');\n    }\n  }\n  return delta;\n}\n\nfunction matchStyles(node, delta) {\n  var formats = {};\n  var style = node.style || {};\n  if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n    formats.italic = true;\n  }\n  if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') || parseInt(computeStyle(node).fontWeight) >= 700)) {\n    formats.bold = true;\n  }\n  if (Object.keys(formats).length > 0) {\n    delta = applyFormat(delta, formats);\n  }\n  if (parseFloat(style.textIndent || 0) > 0) {\n    // Could be 0.5in\n    delta = new _quillDelta2.default().insert('\\t').concat(delta);\n  }\n  return delta;\n}\n\nfunction matchText(node, delta) {\n  var text = node.data;\n  // Word represents empty line with <o:p>&nbsp;</o:p>\n  if (node.parentNode.tagName === 'O:P') {\n    return delta.insert(text.trim());\n  }\n  if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n    return delta;\n  }\n  if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n    // eslint-disable-next-line func-style\n    var replacer = function replacer(collapse, match) {\n      match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n      return match.length < 1 && collapse ? ' ' : match;\n    };\n    text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n    text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n    if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n      text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n    }\n    if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n      text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n    }\n  }\n  return delta.insert(text);\n}\n\nexports.default = Clipboard;\nexports.matchAttributor = matchAttributor;\nexports.matchBlot = matchBlot;\nexports.matchNewline = matchNewline;\nexports.matchSpacing = matchSpacing;\nexports.matchText = matchText;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Bold = function (_Inline) {\n  _inherits(Bold, _Inline);\n\n  function Bold() {\n    _classCallCheck(this, Bold);\n\n    return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments));\n  }\n\n  _createClass(Bold, [{\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this, context);\n      if (this.domNode.tagName !== this.statics.tagName[0]) {\n        this.replaceWith(this.statics.blotName);\n      }\n    }\n  }], [{\n    key: 'create',\n    value: function create() {\n      return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this);\n    }\n  }, {\n    key: 'formats',\n    value: function formats() {\n      return true;\n    }\n  }]);\n\n  return Bold;\n}(_inline2.default);\n\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n\nexports.default = Bold;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.addControls = exports.default = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:toolbar');\n\nvar Toolbar = function (_Module) {\n  _inherits(Toolbar, _Module);\n\n  function Toolbar(quill, options) {\n    _classCallCheck(this, Toolbar);\n\n    var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options));\n\n    if (Array.isArray(_this.options.container)) {\n      var container = document.createElement('div');\n      addControls(container, _this.options.container);\n      quill.container.parentNode.insertBefore(container, quill.container);\n      _this.container = container;\n    } else if (typeof _this.options.container === 'string') {\n      _this.container = document.querySelector(_this.options.container);\n    } else {\n      _this.container = _this.options.container;\n    }\n    if (!(_this.container instanceof HTMLElement)) {\n      var _ret;\n\n      return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret);\n    }\n    _this.container.classList.add('ql-toolbar');\n    _this.controls = [];\n    _this.handlers = {};\n    Object.keys(_this.options.handlers).forEach(function (format) {\n      _this.addHandler(format, _this.options.handlers[format]);\n    });\n    [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) {\n      _this.attach(input);\n    });\n    _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (type, range) {\n      if (type === _quill2.default.events.SELECTION_CHANGE) {\n        _this.update(range);\n      }\n    });\n    _this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n      var _this$quill$selection = _this.quill.selection.getRange(),\n          _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),\n          range = _this$quill$selection2[0]; // quill.getSelection triggers update\n\n\n      _this.update(range);\n    });\n    return _this;\n  }\n\n  _createClass(Toolbar, [{\n    key: 'addHandler',\n    value: function addHandler(format, handler) {\n      this.handlers[format] = handler;\n    }\n  }, {\n    key: 'attach',\n    value: function attach(input) {\n      var _this2 = this;\n\n      var format = [].find.call(input.classList, function (className) {\n        return className.indexOf('ql-') === 0;\n      });\n      if (!format) return;\n      format = format.slice('ql-'.length);\n      if (input.tagName === 'BUTTON') {\n        input.setAttribute('type', 'button');\n      }\n      if (this.handlers[format] == null) {\n        if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n          debug.warn('ignoring attaching to disabled format', format, input);\n          return;\n        }\n        if (_parchment2.default.query(format) == null) {\n          debug.warn('ignoring attaching to nonexistent format', format, input);\n          return;\n        }\n      }\n      var eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n      input.addEventListener(eventName, function (e) {\n        var value = void 0;\n        if (input.tagName === 'SELECT') {\n          if (input.selectedIndex < 0) return;\n          var selected = input.options[input.selectedIndex];\n          if (selected.hasAttribute('selected')) {\n            value = false;\n          } else {\n            value = selected.value || false;\n          }\n        } else {\n          if (input.classList.contains('ql-active')) {\n            value = false;\n          } else {\n            value = input.value || !input.hasAttribute('value');\n          }\n          e.preventDefault();\n        }\n        _this2.quill.focus();\n\n        var _quill$selection$getR = _this2.quill.selection.getRange(),\n            _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1),\n            range = _quill$selection$getR2[0];\n\n        if (_this2.handlers[format] != null) {\n          _this2.handlers[format].call(_this2, value);\n        } else if (_parchment2.default.query(format).prototype instanceof _parchment2.default.Embed) {\n          value = prompt('Enter ' + format);\n          if (!value) return;\n          _this2.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert(_defineProperty({}, format, value)), _quill2.default.sources.USER);\n        } else {\n          _this2.quill.format(format, value, _quill2.default.sources.USER);\n        }\n        _this2.update(range);\n      });\n      // TODO use weakmap\n      this.controls.push([format, input]);\n    }\n  }, {\n    key: 'update',\n    value: function update(range) {\n      var formats = range == null ? {} : this.quill.getFormat(range);\n      this.controls.forEach(function (pair) {\n        var _pair = _slicedToArray(pair, 2),\n            format = _pair[0],\n            input = _pair[1];\n\n        if (input.tagName === 'SELECT') {\n          var option = void 0;\n          if (range == null) {\n            option = null;\n          } else if (formats[format] == null) {\n            option = input.querySelector('option[selected]');\n          } else if (!Array.isArray(formats[format])) {\n            var value = formats[format];\n            if (typeof value === 'string') {\n              value = value.replace(/\\\"/g, '\\\\\"');\n            }\n            option = input.querySelector('option[value=\"' + value + '\"]');\n          }\n          if (option == null) {\n            input.value = ''; // TODO make configurable?\n            input.selectedIndex = -1;\n          } else {\n            option.selected = true;\n          }\n        } else {\n          if (range == null) {\n            input.classList.remove('ql-active');\n          } else if (input.hasAttribute('value')) {\n            // both being null should match (default values)\n            // '1' should match with 1 (headers)\n            var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');\n            input.classList.toggle('ql-active', isActive);\n          } else {\n            input.classList.toggle('ql-active', formats[format] != null);\n          }\n        }\n      });\n    }\n  }]);\n\n  return Toolbar;\n}(_module2.default);\n\nToolbar.DEFAULTS = {};\n\nfunction addButton(container, format, value) {\n  var input = document.createElement('button');\n  input.setAttribute('type', 'button');\n  input.classList.add('ql-' + format);\n  if (value != null) {\n    input.value = value;\n  }\n  container.appendChild(input);\n}\n\nfunction addControls(container, groups) {\n  if (!Array.isArray(groups[0])) {\n    groups = [groups];\n  }\n  groups.forEach(function (controls) {\n    var group = document.createElement('span');\n    group.classList.add('ql-formats');\n    controls.forEach(function (control) {\n      if (typeof control === 'string') {\n        addButton(group, control);\n      } else {\n        var format = Object.keys(control)[0];\n        var value = control[format];\n        if (Array.isArray(value)) {\n          addSelect(group, format, value);\n        } else {\n          addButton(group, format, value);\n        }\n      }\n    });\n    container.appendChild(group);\n  });\n}\n\nfunction addSelect(container, format, values) {\n  var input = document.createElement('select');\n  input.classList.add('ql-' + format);\n  values.forEach(function (value) {\n    var option = document.createElement('option');\n    if (value !== false) {\n      option.setAttribute('value', value);\n    } else {\n      option.setAttribute('selected', 'selected');\n    }\n    input.appendChild(option);\n  });\n  container.appendChild(input);\n}\n\nToolbar.DEFAULTS = {\n  container: null,\n  handlers: {\n    clean: function clean() {\n      var _this3 = this;\n\n      var range = this.quill.getSelection();\n      if (range == null) return;\n      if (range.length == 0) {\n        var formats = this.quill.getFormat();\n        Object.keys(formats).forEach(function (name) {\n          // Clean functionality in existing apps only clean inline formats\n          if (_parchment2.default.query(name, _parchment2.default.Scope.INLINE) != null) {\n            _this3.quill.format(name, false);\n          }\n        });\n      } else {\n        this.quill.removeFormat(range, _quill2.default.sources.USER);\n      }\n    },\n    direction: function direction(value) {\n      var align = this.quill.getFormat()['align'];\n      if (value === 'rtl' && align == null) {\n        this.quill.format('align', 'right', _quill2.default.sources.USER);\n      } else if (!value && align === 'right') {\n        this.quill.format('align', false, _quill2.default.sources.USER);\n      }\n      this.quill.format('direction', value, _quill2.default.sources.USER);\n    },\n    indent: function indent(value) {\n      var range = this.quill.getSelection();\n      var formats = this.quill.getFormat(range);\n      var indent = parseInt(formats.indent || 0);\n      if (value === '+1' || value === '-1') {\n        var modifier = value === '+1' ? 1 : -1;\n        if (formats.direction === 'rtl') modifier *= -1;\n        this.quill.format('indent', indent + modifier, _quill2.default.sources.USER);\n      }\n    },\n    link: function link(value) {\n      if (value === true) {\n        value = prompt('Enter link URL:');\n      }\n      this.quill.format('link', value, _quill2.default.sources.USER);\n    },\n    list: function list(value) {\n      var range = this.quill.getSelection();\n      var formats = this.quill.getFormat(range);\n      if (value === 'check') {\n        if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n          this.quill.format('list', false, _quill2.default.sources.USER);\n        } else {\n          this.quill.format('list', 'unchecked', _quill2.default.sources.USER);\n        }\n      } else {\n        this.quill.format('list', value, _quill2.default.sources.USER);\n      }\n    }\n  }\n};\n\nexports.default = Toolbar;\nexports.addControls = addControls;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polyline class=\\\"ql-even ql-stroke\\\" points=\\\"5 7 3 9 5 11\\\"></polyline> <polyline class=\\\"ql-even ql-stroke\\\" points=\\\"13 7 15 9 13 11\\\"></polyline> <line class=ql-stroke x1=10 x2=8 y1=5 y2=13></line> </svg>\";\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorPicker = function (_Picker) {\n  _inherits(ColorPicker, _Picker);\n\n  function ColorPicker(select, label) {\n    _classCallCheck(this, ColorPicker);\n\n    var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select));\n\n    _this.label.innerHTML = label;\n    _this.container.classList.add('ql-color-picker');\n    [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) {\n      item.classList.add('ql-primary');\n    });\n    return _this;\n  }\n\n  _createClass(ColorPicker, [{\n    key: 'buildItem',\n    value: function buildItem(option) {\n      var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option);\n      item.style.backgroundColor = option.getAttribute('value') || '';\n      return item;\n    }\n  }, {\n    key: 'selectItem',\n    value: function selectItem(item, trigger) {\n      _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger);\n      var colorLabel = this.label.querySelector('.ql-color-label');\n      var value = item ? item.getAttribute('data-value') || '' : '';\n      if (colorLabel) {\n        if (colorLabel.tagName === 'line') {\n          colorLabel.style.stroke = value;\n        } else {\n          colorLabel.style.fill = value;\n        }\n      }\n    }\n  }]);\n\n  return ColorPicker;\n}(_picker2.default);\n\nexports.default = ColorPicker;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IconPicker = function (_Picker) {\n  _inherits(IconPicker, _Picker);\n\n  function IconPicker(select, icons) {\n    _classCallCheck(this, IconPicker);\n\n    var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select));\n\n    _this.container.classList.add('ql-icon-picker');\n    [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) {\n      item.innerHTML = icons[item.getAttribute('data-value') || ''];\n    });\n    _this.defaultItem = _this.container.querySelector('.ql-selected');\n    _this.selectItem(_this.defaultItem);\n    return _this;\n  }\n\n  _createClass(IconPicker, [{\n    key: 'selectItem',\n    value: function selectItem(item, trigger) {\n      _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger);\n      item = item || this.defaultItem;\n      this.label.innerHTML = item.innerHTML;\n    }\n  }]);\n\n  return IconPicker;\n}(_picker2.default);\n\nexports.default = IconPicker;\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Tooltip = function () {\n  function Tooltip(quill, boundsContainer) {\n    var _this = this;\n\n    _classCallCheck(this, Tooltip);\n\n    this.quill = quill;\n    this.boundsContainer = boundsContainer || document.body;\n    this.root = quill.addContainer('ql-tooltip');\n    this.root.innerHTML = this.constructor.TEMPLATE;\n    if (this.quill.root === this.quill.scrollingContainer) {\n      this.quill.root.addEventListener('scroll', function () {\n        _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + 'px';\n      });\n    }\n    this.hide();\n  }\n\n  _createClass(Tooltip, [{\n    key: 'hide',\n    value: function hide() {\n      this.root.classList.add('ql-hidden');\n    }\n  }, {\n    key: 'position',\n    value: function position(reference) {\n      var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2;\n      // root.scrollTop should be 0 if scrollContainer !== root\n      var top = reference.bottom + this.quill.root.scrollTop;\n      this.root.style.left = left + 'px';\n      this.root.style.top = top + 'px';\n      this.root.classList.remove('ql-flip');\n      var containerBounds = this.boundsContainer.getBoundingClientRect();\n      var rootBounds = this.root.getBoundingClientRect();\n      var shift = 0;\n      if (rootBounds.right > containerBounds.right) {\n        shift = containerBounds.right - rootBounds.right;\n        this.root.style.left = left + shift + 'px';\n      }\n      if (rootBounds.left < containerBounds.left) {\n        shift = containerBounds.left - rootBounds.left;\n        this.root.style.left = left + shift + 'px';\n      }\n      if (rootBounds.bottom > containerBounds.bottom) {\n        var height = rootBounds.bottom - rootBounds.top;\n        var verticalShift = reference.bottom - reference.top + height;\n        this.root.style.top = top - verticalShift + 'px';\n        this.root.classList.add('ql-flip');\n      }\n      return shift;\n    }\n  }, {\n    key: 'show',\n    value: function show() {\n      this.root.classList.remove('ql-editing');\n      this.root.classList.remove('ql-hidden');\n    }\n  }]);\n\n  return Tooltip;\n}();\n\nexports.default = Tooltip;\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(43);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];\n\nvar SnowTheme = function (_BaseTheme) {\n  _inherits(SnowTheme, _BaseTheme);\n\n  function SnowTheme(quill, options) {\n    _classCallCheck(this, SnowTheme);\n\n    if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n      options.modules.toolbar.container = TOOLBAR_CONFIG;\n    }\n\n    var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options));\n\n    _this.quill.container.classList.add('ql-snow');\n    return _this;\n  }\n\n  _createClass(SnowTheme, [{\n    key: 'extendToolbar',\n    value: function extendToolbar(toolbar) {\n      toolbar.container.classList.add('ql-snow');\n      this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n      this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n      this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n      if (toolbar.container.querySelector('.ql-link')) {\n        this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function (range, context) {\n          toolbar.handlers['link'].call(toolbar, !context.format.link);\n        });\n      }\n    }\n  }]);\n\n  return SnowTheme;\n}(_base2.default);\n\nSnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        link: function link(value) {\n          if (value) {\n            var range = this.quill.getSelection();\n            if (range == null || range.length == 0) return;\n            var preview = this.quill.getText(range);\n            if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n              preview = 'mailto:' + preview;\n            }\n            var tooltip = this.quill.theme.tooltip;\n            tooltip.edit('link', preview);\n          } else {\n            this.quill.format('link', false);\n          }\n        }\n      }\n    }\n  }\n});\n\nvar SnowTooltip = function (_BaseTooltip) {\n  _inherits(SnowTooltip, _BaseTooltip);\n\n  function SnowTooltip(quill, bounds) {\n    _classCallCheck(this, SnowTooltip);\n\n    var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds));\n\n    _this2.preview = _this2.root.querySelector('a.ql-preview');\n    return _this2;\n  }\n\n  _createClass(SnowTooltip, [{\n    key: 'listen',\n    value: function listen() {\n      var _this3 = this;\n\n      _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this);\n      this.root.querySelector('a.ql-action').addEventListener('click', function (event) {\n        if (_this3.root.classList.contains('ql-editing')) {\n          _this3.save();\n        } else {\n          _this3.edit('link', _this3.preview.textContent);\n        }\n        event.preventDefault();\n      });\n      this.root.querySelector('a.ql-remove').addEventListener('click', function (event) {\n        if (_this3.linkRange != null) {\n          var range = _this3.linkRange;\n          _this3.restoreFocus();\n          _this3.quill.formatText(range, 'link', false, _emitter2.default.sources.USER);\n          delete _this3.linkRange;\n        }\n        event.preventDefault();\n        _this3.hide();\n      });\n      this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range, oldRange, source) {\n        if (range == null) return;\n        if (range.length === 0 && source === _emitter2.default.sources.USER) {\n          var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2.default, range.index),\n              _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n              link = _quill$scroll$descend2[0],\n              offset = _quill$scroll$descend2[1];\n\n          if (link != null) {\n            _this3.linkRange = new _selection.Range(range.index - offset, link.length());\n            var preview = _link2.default.formats(link.domNode);\n            _this3.preview.textContent = preview;\n            _this3.preview.setAttribute('href', preview);\n            _this3.show();\n            _this3.position(_this3.quill.getBounds(_this3.linkRange));\n            return;\n          }\n        } else {\n          delete _this3.linkRange;\n        }\n        _this3.hide();\n      });\n    }\n  }, {\n    key: 'show',\n    value: function show() {\n      _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this);\n      this.root.removeAttribute('data-mode');\n    }\n  }]);\n\n  return SnowTooltip;\n}(_base.BaseTooltip);\n\nSnowTooltip.TEMPLATE = ['<a class=\"ql-preview\" target=\"_blank\" href=\"about:blank\"></a>', '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"https://quilljs.com\" data-video=\"Embed URL\">', '<a class=\"ql-action\"></a>', '<a class=\"ql-remove\"></a>'].join('');\n\nexports.default = SnowTheme;\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _core = __webpack_require__(29);\n\nvar _core2 = _interopRequireDefault(_core);\n\nvar _align = __webpack_require__(36);\n\nvar _direction = __webpack_require__(38);\n\nvar _indent = __webpack_require__(64);\n\nvar _blockquote = __webpack_require__(65);\n\nvar _blockquote2 = _interopRequireDefault(_blockquote);\n\nvar _header = __webpack_require__(66);\n\nvar _header2 = _interopRequireDefault(_header);\n\nvar _list = __webpack_require__(67);\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _background = __webpack_require__(37);\n\nvar _color = __webpack_require__(26);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nvar _bold = __webpack_require__(56);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nvar _italic = __webpack_require__(68);\n\nvar _italic2 = _interopRequireDefault(_italic);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _script = __webpack_require__(69);\n\nvar _script2 = _interopRequireDefault(_script);\n\nvar _strike = __webpack_require__(70);\n\nvar _strike2 = _interopRequireDefault(_strike);\n\nvar _underline = __webpack_require__(71);\n\nvar _underline2 = _interopRequireDefault(_underline);\n\nvar _image = __webpack_require__(72);\n\nvar _image2 = _interopRequireDefault(_image);\n\nvar _video = __webpack_require__(73);\n\nvar _video2 = _interopRequireDefault(_video);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _formula = __webpack_require__(74);\n\nvar _formula2 = _interopRequireDefault(_formula);\n\nvar _syntax = __webpack_require__(75);\n\nvar _syntax2 = _interopRequireDefault(_syntax);\n\nvar _toolbar = __webpack_require__(57);\n\nvar _toolbar2 = _interopRequireDefault(_toolbar);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _colorPicker = __webpack_require__(59);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(60);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _tooltip = __webpack_require__(61);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nvar _bubble = __webpack_require__(108);\n\nvar _bubble2 = _interopRequireDefault(_bubble);\n\nvar _snow = __webpack_require__(62);\n\nvar _snow2 = _interopRequireDefault(_snow);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_core2.default.register({\n  'attributors/attribute/direction': _direction.DirectionAttribute,\n\n  'attributors/class/align': _align.AlignClass,\n  'attributors/class/background': _background.BackgroundClass,\n  'attributors/class/color': _color.ColorClass,\n  'attributors/class/direction': _direction.DirectionClass,\n  'attributors/class/font': _font.FontClass,\n  'attributors/class/size': _size.SizeClass,\n\n  'attributors/style/align': _align.AlignStyle,\n  'attributors/style/background': _background.BackgroundStyle,\n  'attributors/style/color': _color.ColorStyle,\n  'attributors/style/direction': _direction.DirectionStyle,\n  'attributors/style/font': _font.FontStyle,\n  'attributors/style/size': _size.SizeStyle\n}, true);\n\n_core2.default.register({\n  'formats/align': _align.AlignClass,\n  'formats/direction': _direction.DirectionClass,\n  'formats/indent': _indent.IndentClass,\n\n  'formats/background': _background.BackgroundStyle,\n  'formats/color': _color.ColorStyle,\n  'formats/font': _font.FontClass,\n  'formats/size': _size.SizeClass,\n\n  'formats/blockquote': _blockquote2.default,\n  'formats/code-block': _code2.default,\n  'formats/header': _header2.default,\n  'formats/list': _list2.default,\n\n  'formats/bold': _bold2.default,\n  'formats/code': _code.Code,\n  'formats/italic': _italic2.default,\n  'formats/link': _link2.default,\n  'formats/script': _script2.default,\n  'formats/strike': _strike2.default,\n  'formats/underline': _underline2.default,\n\n  'formats/image': _image2.default,\n  'formats/video': _video2.default,\n\n  'formats/list/item': _list.ListItem,\n\n  'modules/formula': _formula2.default,\n  'modules/syntax': _syntax2.default,\n  'modules/toolbar': _toolbar2.default,\n\n  'themes/bubble': _bubble2.default,\n  'themes/snow': _snow2.default,\n\n  'ui/icons': _icons2.default,\n  'ui/picker': _picker2.default,\n  'ui/icon-picker': _iconPicker2.default,\n  'ui/color-picker': _colorPicker2.default,\n  'ui/tooltip': _tooltip2.default\n}, true);\n\nexports.default = _core2.default;\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.IndentClass = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IdentAttributor = function (_Parchment$Attributor) {\n  _inherits(IdentAttributor, _Parchment$Attributor);\n\n  function IdentAttributor() {\n    _classCallCheck(this, IdentAttributor);\n\n    return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments));\n  }\n\n  _createClass(IdentAttributor, [{\n    key: 'add',\n    value: function add(node, value) {\n      if (value === '+1' || value === '-1') {\n        var indent = this.value(node) || 0;\n        value = value === '+1' ? indent + 1 : indent - 1;\n      }\n      if (value === 0) {\n        this.remove(node);\n        return true;\n      } else {\n        return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value);\n      }\n    }\n  }, {\n    key: 'canAdd',\n    value: function canAdd(node, value) {\n      return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, value) || _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, parseInt(value));\n    }\n  }, {\n    key: 'value',\n    value: function value(node) {\n      return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN\n    }\n  }]);\n\n  return IdentAttributor;\n}(_parchment2.default.Attributor.Class);\n\nvar IndentClass = new IdentAttributor('indent', 'ql-indent', {\n  scope: _parchment2.default.Scope.BLOCK,\n  whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\n\nexports.IndentClass = IndentClass;\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Blockquote = function (_Block) {\n  _inherits(Blockquote, _Block);\n\n  function Blockquote() {\n    _classCallCheck(this, Blockquote);\n\n    return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments));\n  }\n\n  return Blockquote;\n}(_block2.default);\n\nBlockquote.blotName = 'blockquote';\nBlockquote.tagName = 'blockquote';\n\nexports.default = Blockquote;\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Header = function (_Block) {\n  _inherits(Header, _Block);\n\n  function Header() {\n    _classCallCheck(this, Header);\n\n    return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n  }\n\n  _createClass(Header, null, [{\n    key: 'formats',\n    value: function formats(domNode) {\n      return this.tagName.indexOf(domNode.tagName) + 1;\n    }\n  }]);\n\n  return Header;\n}(_block2.default);\n\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\nexports.default = Header;\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.ListItem = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ListItem = function (_Block) {\n  _inherits(ListItem, _Block);\n\n  function ListItem() {\n    _classCallCheck(this, ListItem);\n\n    return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));\n  }\n\n  _createClass(ListItem, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (name === List.blotName && !value) {\n        this.replaceWith(_parchment2.default.create(this.statics.scope));\n      } else {\n        _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value);\n      }\n    }\n  }, {\n    key: 'remove',\n    value: function remove() {\n      if (this.prev == null && this.next == null) {\n        this.parent.remove();\n      } else {\n        _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this);\n      }\n    }\n  }, {\n    key: 'replaceWith',\n    value: function replaceWith(name, value) {\n      this.parent.isolate(this.offset(this.parent), this.length());\n      if (name === this.parent.statics.blotName) {\n        this.parent.replaceWith(name, value);\n        return this;\n      } else {\n        this.parent.unwrap();\n        return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value);\n      }\n    }\n  }], [{\n    key: 'formats',\n    value: function formats(domNode) {\n      return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode);\n    }\n  }]);\n\n  return ListItem;\n}(_block2.default);\n\nListItem.blotName = 'list-item';\nListItem.tagName = 'LI';\n\nvar List = function (_Container) {\n  _inherits(List, _Container);\n\n  _createClass(List, null, [{\n    key: 'create',\n    value: function create(value) {\n      var tagName = value === 'ordered' ? 'OL' : 'UL';\n      var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName);\n      if (value === 'checked' || value === 'unchecked') {\n        node.setAttribute('data-checked', value === 'checked');\n      }\n      return node;\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      if (domNode.tagName === 'OL') return 'ordered';\n      if (domNode.tagName === 'UL') {\n        if (domNode.hasAttribute('data-checked')) {\n          return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n        } else {\n          return 'bullet';\n        }\n      }\n      return undefined;\n    }\n  }]);\n\n  function List(domNode) {\n    _classCallCheck(this, List);\n\n    var _this2 = _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).call(this, domNode));\n\n    var listEventHandler = function listEventHandler(e) {\n      if (e.target.parentNode !== domNode) return;\n      var format = _this2.statics.formats(domNode);\n      var blot = _parchment2.default.find(e.target);\n      if (format === 'checked') {\n        blot.format('list', 'unchecked');\n      } else if (format === 'unchecked') {\n        blot.format('list', 'checked');\n      }\n    };\n\n    domNode.addEventListener('touchstart', listEventHandler);\n    domNode.addEventListener('mousedown', listEventHandler);\n    return _this2;\n  }\n\n  _createClass(List, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (this.children.length > 0) {\n        this.children.tail.format(name, value);\n      }\n    }\n  }, {\n    key: 'formats',\n    value: function formats() {\n      // We don't inherit from FormatBlot\n      return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode));\n    }\n  }, {\n    key: 'insertBefore',\n    value: function insertBefore(blot, ref) {\n      if (blot instanceof ListItem) {\n        _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref);\n      } else {\n        var index = ref == null ? this.length() : ref.offset(this);\n        var after = this.split(index);\n        after.parent.insertBefore(blot, after);\n      }\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this, context);\n      var next = this.next;\n      if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && next.domNode.tagName === this.domNode.tagName && next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {\n        next.moveChildren(this);\n        next.remove();\n      }\n    }\n  }, {\n    key: 'replace',\n    value: function replace(target) {\n      if (target.statics.blotName !== this.statics.blotName) {\n        var item = _parchment2.default.create(this.statics.defaultChild);\n        target.moveChildren(item);\n        this.appendChild(item);\n      }\n      _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target);\n    }\n  }]);\n\n  return List;\n}(_container2.default);\n\nList.blotName = 'list';\nList.scope = _parchment2.default.Scope.BLOCK_BLOT;\nList.tagName = ['OL', 'UL'];\nList.defaultChild = 'list-item';\nList.allowedChildren = [ListItem];\n\nexports.ListItem = ListItem;\nexports.default = List;\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _bold = __webpack_require__(56);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Italic = function (_Bold) {\n  _inherits(Italic, _Bold);\n\n  function Italic() {\n    _classCallCheck(this, Italic);\n\n    return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments));\n  }\n\n  return Italic;\n}(_bold2.default);\n\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n\nexports.default = Italic;\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Script = function (_Inline) {\n  _inherits(Script, _Inline);\n\n  function Script() {\n    _classCallCheck(this, Script);\n\n    return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments));\n  }\n\n  _createClass(Script, null, [{\n    key: 'create',\n    value: function create(value) {\n      if (value === 'super') {\n        return document.createElement('sup');\n      } else if (value === 'sub') {\n        return document.createElement('sub');\n      } else {\n        return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value);\n      }\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      if (domNode.tagName === 'SUB') return 'sub';\n      if (domNode.tagName === 'SUP') return 'super';\n      return undefined;\n    }\n  }]);\n\n  return Script;\n}(_inline2.default);\n\nScript.blotName = 'script';\nScript.tagName = ['SUB', 'SUP'];\n\nexports.default = Script;\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Strike = function (_Inline) {\n  _inherits(Strike, _Inline);\n\n  function Strike() {\n    _classCallCheck(this, Strike);\n\n    return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments));\n  }\n\n  return Strike;\n}(_inline2.default);\n\nStrike.blotName = 'strike';\nStrike.tagName = 'S';\n\nexports.default = Strike;\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Underline = function (_Inline) {\n  _inherits(Underline, _Inline);\n\n  function Underline() {\n    _classCallCheck(this, Underline);\n\n    return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments));\n  }\n\n  return Underline;\n}(_inline2.default);\n\nUnderline.blotName = 'underline';\nUnderline.tagName = 'U';\n\nexports.default = Underline;\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _link = __webpack_require__(27);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['alt', 'height', 'width'];\n\nvar Image = function (_Parchment$Embed) {\n  _inherits(Image, _Parchment$Embed);\n\n  function Image() {\n    _classCallCheck(this, Image);\n\n    return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments));\n  }\n\n  _createClass(Image, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (ATTRIBUTES.indexOf(name) > -1) {\n        if (value) {\n          this.domNode.setAttribute(name, value);\n        } else {\n          this.domNode.removeAttribute(name);\n        }\n      } else {\n        _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value);\n      }\n    }\n  }], [{\n    key: 'create',\n    value: function create(value) {\n      var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value);\n      if (typeof value === 'string') {\n        node.setAttribute('src', this.sanitize(value));\n      }\n      return node;\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      return ATTRIBUTES.reduce(function (formats, attribute) {\n        if (domNode.hasAttribute(attribute)) {\n          formats[attribute] = domNode.getAttribute(attribute);\n        }\n        return formats;\n      }, {});\n    }\n  }, {\n    key: 'match',\n    value: function match(url) {\n      return (/\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\n      );\n    }\n  }, {\n    key: 'sanitize',\n    value: function sanitize(url) {\n      return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';\n    }\n  }, {\n    key: 'value',\n    value: function value(domNode) {\n      return domNode.getAttribute('src');\n    }\n  }]);\n\n  return Image;\n}(_parchment2.default.Embed);\n\nImage.blotName = 'image';\nImage.tagName = 'IMG';\n\nexports.default = Image;\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _block = __webpack_require__(4);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['height', 'width'];\n\nvar Video = function (_BlockEmbed) {\n  _inherits(Video, _BlockEmbed);\n\n  function Video() {\n    _classCallCheck(this, Video);\n\n    return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments));\n  }\n\n  _createClass(Video, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (ATTRIBUTES.indexOf(name) > -1) {\n        if (value) {\n          this.domNode.setAttribute(name, value);\n        } else {\n          this.domNode.removeAttribute(name);\n        }\n      } else {\n        _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value);\n      }\n    }\n  }], [{\n    key: 'create',\n    value: function create(value) {\n      var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value);\n      node.setAttribute('frameborder', '0');\n      node.setAttribute('allowfullscreen', true);\n      node.setAttribute('src', this.sanitize(value));\n      return node;\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      return ATTRIBUTES.reduce(function (formats, attribute) {\n        if (domNode.hasAttribute(attribute)) {\n          formats[attribute] = domNode.getAttribute(attribute);\n        }\n        return formats;\n      }, {});\n    }\n  }, {\n    key: 'sanitize',\n    value: function sanitize(url) {\n      return _link2.default.sanitize(url);\n    }\n  }, {\n    key: 'value',\n    value: function value(domNode) {\n      return domNode.getAttribute('src');\n    }\n  }]);\n\n  return Video;\n}(_block.BlockEmbed);\n\nVideo.blotName = 'video';\nVideo.className = 'ql-video';\nVideo.tagName = 'IFRAME';\n\nexports.default = Video;\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.FormulaBlot = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FormulaBlot = function (_Embed) {\n  _inherits(FormulaBlot, _Embed);\n\n  function FormulaBlot() {\n    _classCallCheck(this, FormulaBlot);\n\n    return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments));\n  }\n\n  _createClass(FormulaBlot, null, [{\n    key: 'create',\n    value: function create(value) {\n      var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);\n      if (typeof value === 'string') {\n        window.katex.render(value, node, {\n          throwOnError: false,\n          errorColor: '#f00'\n        });\n        node.setAttribute('data-value', value);\n      }\n      return node;\n    }\n  }, {\n    key: 'value',\n    value: function value(domNode) {\n      return domNode.getAttribute('data-value');\n    }\n  }]);\n\n  return FormulaBlot;\n}(_embed2.default);\n\nFormulaBlot.blotName = 'formula';\nFormulaBlot.className = 'ql-formula';\nFormulaBlot.tagName = 'SPAN';\n\nvar Formula = function (_Module) {\n  _inherits(Formula, _Module);\n\n  _createClass(Formula, null, [{\n    key: 'register',\n    value: function register() {\n      _quill2.default.register(FormulaBlot, true);\n    }\n  }]);\n\n  function Formula() {\n    _classCallCheck(this, Formula);\n\n    var _this2 = _possibleConstructorReturn(this, (Formula.__proto__ || Object.getPrototypeOf(Formula)).call(this));\n\n    if (window.katex == null) {\n      throw new Error('Formula module requires KaTeX.');\n    }\n    return _this2;\n  }\n\n  return Formula;\n}(_module2.default);\n\nexports.FormulaBlot = FormulaBlot;\nexports.default = Formula;\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.CodeToken = exports.CodeBlock = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SyntaxCodeBlock = function (_CodeBlock) {\n  _inherits(SyntaxCodeBlock, _CodeBlock);\n\n  function SyntaxCodeBlock() {\n    _classCallCheck(this, SyntaxCodeBlock);\n\n    return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments));\n  }\n\n  _createClass(SyntaxCodeBlock, [{\n    key: 'replaceWith',\n    value: function replaceWith(block) {\n      this.domNode.textContent = this.domNode.textContent;\n      this.attach();\n      _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);\n    }\n  }, {\n    key: 'highlight',\n    value: function highlight(_highlight) {\n      var text = this.domNode.textContent;\n      if (this.cachedText !== text) {\n        if (text.trim().length > 0 || this.cachedText == null) {\n          this.domNode.innerHTML = _highlight(text);\n          this.domNode.normalize();\n          this.attach();\n        }\n        this.cachedText = text;\n      }\n    }\n  }]);\n\n  return SyntaxCodeBlock;\n}(_code2.default);\n\nSyntaxCodeBlock.className = 'ql-syntax';\n\nvar CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', {\n  scope: _parchment2.default.Scope.INLINE\n});\n\nvar Syntax = function (_Module) {\n  _inherits(Syntax, _Module);\n\n  _createClass(Syntax, null, [{\n    key: 'register',\n    value: function register() {\n      _quill2.default.register(CodeToken, true);\n      _quill2.default.register(SyntaxCodeBlock, true);\n    }\n  }]);\n\n  function Syntax(quill, options) {\n    _classCallCheck(this, Syntax);\n\n    var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options));\n\n    if (typeof _this2.options.highlight !== 'function') {\n      throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n    }\n    var timer = null;\n    _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n      clearTimeout(timer);\n      timer = setTimeout(function () {\n        _this2.highlight();\n        timer = null;\n      }, _this2.options.interval);\n    });\n    _this2.highlight();\n    return _this2;\n  }\n\n  _createClass(Syntax, [{\n    key: 'highlight',\n    value: function highlight() {\n      var _this3 = this;\n\n      if (this.quill.selection.composing) return;\n      this.quill.update(_quill2.default.sources.USER);\n      var range = this.quill.getSelection();\n      this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) {\n        code.highlight(_this3.options.highlight);\n      });\n      this.quill.update(_quill2.default.sources.SILENT);\n      if (range != null) {\n        this.quill.setSelection(range, _quill2.default.sources.SILENT);\n      }\n    }\n  }]);\n\n  return Syntax;\n}(_module2.default);\n\nSyntax.DEFAULTS = {\n  highlight: function () {\n    if (window.hljs == null) return null;\n    return function (text) {\n      var result = window.hljs.highlightAuto(text);\n      return result.value;\n    };\n  }(),\n  interval: 1000\n};\n\nexports.CodeBlock = SyntaxCodeBlock;\nexports.CodeToken = CodeToken;\nexports.default = Syntax;\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=13 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=9 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=14 x2=4 y1=14 y2=14></line> <line class=ql-stroke x1=12 x2=6 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=5 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=9 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=3 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=3 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <g class=\\\"ql-fill ql-color-label\\\"> <polygon points=\\\"6 6.868 6 6 5 6 5 7 5.942 7 6 6.868\\\"></polygon> <rect height=1 width=1 x=4 y=4></rect> <polygon points=\\\"6.817 5 6 5 6 6 6.38 6 6.817 5\\\"></polygon> <rect height=1 width=1 x=2 y=6></rect> <rect height=1 width=1 x=3 y=5></rect> <rect height=1 width=1 x=4 y=7></rect> <polygon points=\\\"4 11.439 4 11 3 11 3 12 3.755 12 4 11.439\\\"></polygon> <rect height=1 width=1 x=2 y=12></rect> <rect height=1 width=1 x=2 y=9></rect> <rect height=1 width=1 x=2 y=15></rect> <polygon points=\\\"4.63 10 4 10 4 11 4.192 11 4.63 10\\\"></polygon> <rect height=1 width=1 x=3 y=8></rect> <path d=M10.832,4.2L11,4.582V4H10.708A1.948,1.948,0,0,1,10.832,4.2Z></path> <path d=M7,4.582L7.168,4.2A1.929,1.929,0,0,1,7.292,4H7V4.582Z></path> <path d=M8,13H7.683l-0.351.8a1.933,1.933,0,0,1-.124.2H8V13Z></path> <rect height=1 width=1 x=12 y=2></rect> <rect height=1 width=1 x=11 y=3></rect> <path d=M9,3H8V3.282A1.985,1.985,0,0,1,9,3Z></path> <rect height=1 width=1 x=2 y=3></rect> <rect height=1 width=1 x=6 y=2></rect> <rect height=1 width=1 x=3 y=2></rect> <rect height=1 width=1 x=5 y=3></rect> <rect height=1 width=1 x=9 y=2></rect> <rect height=1 width=1 x=15 y=14></rect> <polygon points=\\\"13.447 10.174 13.469 10.225 13.472 10.232 13.808 11 14 11 14 10 13.37 10 13.447 10.174\\\"></polygon> <rect height=1 width=1 x=13 y=7></rect> <rect height=1 width=1 x=15 y=5></rect> <rect height=1 width=1 x=14 y=6></rect> <rect height=1 width=1 x=15 y=8></rect> <rect height=1 width=1 x=14 y=9></rect> <path d=M3.775,14H3v1H4V14.314A1.97,1.97,0,0,1,3.775,14Z></path> <rect height=1 width=1 x=14 y=3></rect> <polygon points=\\\"12 6.868 12 6 11.62 6 12 6.868\\\"></polygon> <rect height=1 width=1 x=15 y=2></rect> <rect height=1 width=1 x=12 y=5></rect> <rect height=1 width=1 x=13 y=4></rect> <polygon points=\\\"12.933 9 13 9 13 8 12.495 8 12.933 9\\\"></polygon> <rect height=1 width=1 x=9 y=14></rect> <rect height=1 width=1 x=8 y=15></rect> <path d=M6,14.926V15H7V14.316A1.993,1.993,0,0,1,6,14.926Z></path> <rect height=1 width=1 x=5 y=15></rect> <path d=M10.668,13.8L10.317,13H10v1h0.792A1.947,1.947,0,0,1,10.668,13.8Z></path> <rect height=1 width=1 x=11 y=15></rect> <path d=M14.332,12.2a1.99,1.99,0,0,1,.166.8H15V12H14.245Z></path> <rect height=1 width=1 x=14 y=15></rect> <rect height=1 width=1 x=15 y=11></rect> </g> <polyline class=ql-stroke points=\\\"5.5 13 9 5 12.5 13\\\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=11 y2=11></line> </svg>\";\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=\\\"ql-fill ql-stroke\\\" height=3 width=3 x=4 y=5></rect> <rect class=\\\"ql-fill ql-stroke\\\" height=3 width=3 x=11 y=5></rect> <path class=\\\"ql-even ql-fill ql-stroke\\\" d=M7,8c0,4.031-3,5-3,5></path> <path class=\\\"ql-even ql-fill ql-stroke\\\" d=M14,8c0,4.031-3,5-3,5></path> </svg>\";\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-stroke d=M5,4H9.5A2.5,2.5,0,0,1,12,6.5v0A2.5,2.5,0,0,1,9.5,9H5A0,0,0,0,1,5,9V4A0,0,0,0,1,5,4Z></path> <path class=ql-stroke d=M5,9h5.5A2.5,2.5,0,0,1,13,11.5v0A2.5,2.5,0,0,1,10.5,14H5a0,0,0,0,1,0,0V9A0,0,0,0,1,5,9Z></path> </svg>\";\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg class=\\\"\\\" viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=5 x2=13 y1=3 y2=3></line> <line class=ql-stroke x1=6 x2=9.35 y1=12 y2=3></line> <line class=ql-stroke x1=11 x2=15 y1=11 y2=15></line> <line class=ql-stroke x1=15 x2=11 y1=11 y2=15></line> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=7 x=2 y=14></rect> </svg>\";\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=\\\"ql-color-label ql-stroke ql-transparent\\\" x1=3 x2=15 y1=15 y2=15></line> <polyline class=ql-stroke points=\\\"5.5 11 9 3 12.5 11\\\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=9 y2=9></line> </svg>\";\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=\\\"ql-stroke ql-fill\\\" points=\\\"3 11 5 9 3 7 3 11\\\"></polygon> <line class=\\\"ql-stroke ql-fill\\\" x1=15 x2=11 y1=4 y2=4></line> <path class=ql-fill d=M11,3a3,3,0,0,0,0,6h1V3H11Z></path> <rect class=ql-fill height=11 width=1 x=11 y=4></rect> <rect class=ql-fill height=11 width=1 x=13 y=4></rect> </svg>\";\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=\\\"ql-stroke ql-fill\\\" points=\\\"15 12 13 10 15 8 15 12\\\"></polygon> <line class=\\\"ql-stroke ql-fill\\\" x1=9 x2=5 y1=4 y2=4></line> <path class=ql-fill d=M5,3A3,3,0,0,0,5,9H6V3H5Z></path> <rect class=ql-fill height=11 width=1 x=5 y=4></rect> <rect class=ql-fill height=11 width=1 x=7 y=4></rect> </svg>\";\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M14,16H4a1,1,0,0,1,0-2H14A1,1,0,0,1,14,16Z /> <path class=ql-fill d=M14,4H4A1,1,0,0,1,4,2H14A1,1,0,0,1,14,4Z /> <rect class=ql-fill x=3 y=6 width=12 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M13,16H5a1,1,0,0,1,0-2h8A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H5A1,1,0,0,1,5,2h8A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=2 y=6 width=14 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15,8H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,8Z /> <path class=ql-fill d=M15,12H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,12Z /> <path class=ql-fill d=M15,16H5a1,1,0,0,1,0-2H15A1,1,0,0,1,15,16Z /> <path class=ql-fill d=M15,4H5A1,1,0,0,1,5,2H15A1,1,0,0,1,15,4Z /> <rect class=ql-fill x=2 y=6 width=8 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M5,8H3A1,1,0,0,1,3,6H5A1,1,0,0,1,5,8Z /> <path class=ql-fill d=M5,12H3a1,1,0,0,1,0-2H5A1,1,0,0,1,5,12Z /> <path class=ql-fill d=M13,16H3a1,1,0,0,1,0-2H13A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H3A1,1,0,0,1,3,2H13A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=8 y=6 width=8 height=6 rx=1 ry=1 transform=\\\"translate(24 18) rotate(-180)\\\"/> </svg>\";\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M11.759,2.482a2.561,2.561,0,0,0-3.53.607A7.656,7.656,0,0,0,6.8,6.2C6.109,9.188,5.275,14.677,4.15,14.927a1.545,1.545,0,0,0-1.3-.933A0.922,0.922,0,0,0,2,15.036S1.954,16,4.119,16s3.091-2.691,3.7-5.553c0.177-.826.36-1.726,0.554-2.6L8.775,6.2c0.381-1.421.807-2.521,1.306-2.676a1.014,1.014,0,0,0,1.02.56A0.966,0.966,0,0,0,11.759,2.482Z></path> <rect class=ql-fill height=1.6 rx=0.8 ry=0.8 width=5 x=5.15 y=6.2></rect> <path class=ql-fill d=M13.663,12.027a1.662,1.662,0,0,1,.266-0.276q0.193,0.069.456,0.138a2.1,2.1,0,0,0,.535.069,1.075,1.075,0,0,0,.767-0.3,1.044,1.044,0,0,0,.314-0.8,0.84,0.84,0,0,0-.238-0.619,0.8,0.8,0,0,0-.594-0.239,1.154,1.154,0,0,0-.781.3,4.607,4.607,0,0,0-.781,1q-0.091.15-.218,0.346l-0.246.38c-0.068-.288-0.137-0.582-0.212-0.885-0.459-1.847-2.494-.984-2.941-0.8-0.482.2-.353,0.647-0.094,0.529a0.869,0.869,0,0,1,1.281.585c0.217,0.751.377,1.436,0.527,2.038a5.688,5.688,0,0,1-.362.467,2.69,2.69,0,0,1-.264.271q-0.221-.08-0.471-0.147a2.029,2.029,0,0,0-.522-0.066,1.079,1.079,0,0,0-.768.3A1.058,1.058,0,0,0,9,15.131a0.82,0.82,0,0,0,.832.852,1.134,1.134,0,0,0,.787-0.3,5.11,5.11,0,0,0,.776-0.993q0.141-.219.215-0.34c0.046-.076.122-0.194,0.223-0.346a2.786,2.786,0,0,0,.918,1.726,2.582,2.582,0,0,0,2.376-.185c0.317-.181.212-0.565,0-0.494A0.807,0.807,0,0,1,14.176,15a5.159,5.159,0,0,1-.913-2.446l0,0Q13.487,12.24,13.663,12.027Z></path> </svg>\";\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewBox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M10,4V14a1,1,0,0,1-2,0V10H3v4a1,1,0,0,1-2,0V4A1,1,0,0,1,3,4V8H8V4a1,1,0,0,1,2,0Zm6.06787,9.209H14.98975V7.59863a.54085.54085,0,0,0-.605-.60547h-.62744a1.01119,1.01119,0,0,0-.748.29688L11.645,8.56641a.5435.5435,0,0,0-.022.8584l.28613.30762a.53861.53861,0,0,0,.84717.0332l.09912-.08789a1.2137,1.2137,0,0,0,.2417-.35254h.02246s-.01123.30859-.01123.60547V13.209H12.041a.54085.54085,0,0,0-.605.60547v.43945a.54085.54085,0,0,0,.605.60547h4.02686a.54085.54085,0,0,0,.605-.60547v-.43945A.54085.54085,0,0,0,16.06787,13.209Z /> </svg>\";\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewBox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M16.73975,13.81445v.43945a.54085.54085,0,0,1-.605.60547H11.855a.58392.58392,0,0,1-.64893-.60547V14.0127c0-2.90527,3.39941-3.42187,3.39941-4.55469a.77675.77675,0,0,0-.84717-.78125,1.17684,1.17684,0,0,0-.83594.38477c-.2749.26367-.561.374-.85791.13184l-.4292-.34082c-.30811-.24219-.38525-.51758-.1543-.81445a2.97155,2.97155,0,0,1,2.45361-1.17676,2.45393,2.45393,0,0,1,2.68408,2.40918c0,2.45312-3.1792,2.92676-3.27832,3.93848h2.79443A.54085.54085,0,0,1,16.73975,13.81445ZM9,3A.99974.99974,0,0,0,8,4V8H3V4A1,1,0,0,0,1,4V14a1,1,0,0,0,2,0V10H8v4a1,1,0,0,0,2,0V4A.99974.99974,0,0,0,9,3Z /> </svg>\";\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=13 y1=4 y2=4></line> <line class=ql-stroke x1=5 x2=11 y1=14 y2=14></line> <line class=ql-stroke x1=8 x2=10 y1=14 y2=4></line> </svg>\";\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=ql-stroke height=10 width=12 x=3 y=4></rect> <circle class=ql-fill cx=6 cy=7 r=1></circle> <polyline class=\\\"ql-even ql-fill\\\" points=\\\"5 12 5 11 7 9 8 10 11 7 13 9 13 12 5 12\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=\\\"ql-fill ql-stroke\\\" points=\\\"3 7 3 11 5 9 3 7\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points=\\\"5 7 5 11 3 9 5 7\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=11 y1=7 y2=11></line> <path class=\\\"ql-even ql-stroke\\\" d=M8.9,4.577a3.476,3.476,0,0,1,.36,4.679A3.476,3.476,0,0,1,4.577,8.9C3.185,7.5,2.035,6.4,4.217,4.217S7.5,3.185,8.9,4.577Z></path> <path class=\\\"ql-even ql-stroke\\\" d=M13.423,9.1a3.476,3.476,0,0,0-4.679-.36,3.476,3.476,0,0,0,.36,4.679c1.392,1.392,2.5,2.542,4.679.36S14.815,10.5,13.423,9.1Z></path> </svg>\";\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=7 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=7 x2=15 y1=14 y2=14></line> <line class=\\\"ql-stroke ql-thin\\\" x1=2.5 x2=4.5 y1=5.5 y2=5.5></line> <path class=ql-fill d=M3.5,6A0.5,0.5,0,0,1,3,5.5V3.085l-0.276.138A0.5,0.5,0,0,1,2.053,3c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,4,2.5v3A0.5,0.5,0,0,1,3.5,6Z></path> <path class=\\\"ql-stroke ql-thin\\\" d=M4.5,10.5h-2c0-.234,1.85-1.076,1.85-2.234A0.959,0.959,0,0,0,2.5,8.156></path> <path class=\\\"ql-stroke ql-thin\\\" d=M2.5,14.846a0.959,0.959,0,0,0,1.85-.109A0.7,0.7,0,0,0,3.75,14a0.688,0.688,0,0,0,.6-0.736,0.959,0.959,0,0,0-1.85-.109></path> </svg>\";\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=6 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=6 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=6 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=3 y1=4 y2=4></line> <line class=ql-stroke x1=3 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=3 y1=14 y2=14></line> </svg>\";\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg class=\\\"\\\" viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=9 x2=15 y1=4 y2=4></line> <polyline class=ql-stroke points=\\\"3 4 4 5 6 3\\\"></polyline> <line class=ql-stroke x1=9 x2=15 y1=14 y2=14></line> <polyline class=ql-stroke points=\\\"3 14 4 15 6 13\\\"></polyline> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points=\\\"3 9 4 10 6 8\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15.5,15H13.861a3.858,3.858,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.921,1.921,0,0,0,12.021,11.7a0.50013,0.50013,0,1,0,.957.291h0a0.914,0.914,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.076-1.16971,1.86982-1.93971,2.43082A1.45639,1.45639,0,0,0,12,15.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,15Z /> <path class=ql-fill d=M9.65,5.241a1,1,0,0,0-1.409.108L6,7.964,3.759,5.349A1,1,0,0,0,2.192,6.59178Q2.21541,6.6213,2.241,6.649L4.684,9.5,2.241,12.35A1,1,0,0,0,3.71,13.70722q0.02557-.02768.049-0.05722L6,11.036,8.241,13.65a1,1,0,1,0,1.567-1.24277Q9.78459,12.3777,9.759,12.35L7.316,9.5,9.759,6.651A1,1,0,0,0,9.65,5.241Z /> </svg>\";\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15.5,7H13.861a4.015,4.015,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.922,1.922,0,0,0,12.021,3.7a0.5,0.5,0,1,0,.957.291,0.917,0.917,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.077-1.164,1.925-1.934,2.486A1.423,1.423,0,0,0,12,7.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,7Z /> <path class=ql-fill d=M9.651,5.241a1,1,0,0,0-1.41.108L6,7.964,3.759,5.349a1,1,0,1,0-1.519,1.3L4.683,9.5,2.241,12.35a1,1,0,1,0,1.519,1.3L6,11.036,8.241,13.65a1,1,0,0,0,1.519-1.3L7.317,9.5,9.759,6.651A1,1,0,0,0,9.651,5.241Z /> </svg>\";\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=\\\"ql-stroke ql-thin\\\" x1=15.5 x2=2.5 y1=8.5 y2=9.5></line> <path class=ql-fill d=M9.007,8C6.542,7.791,6,7.519,6,6.5,6,5.792,7.283,5,9,5c1.571,0,2.765.679,2.969,1.309a1,1,0,0,0,1.9-.617C13.356,4.106,11.354,3,9,3,6.2,3,4,4.538,4,6.5a3.2,3.2,0,0,0,.5,1.843Z></path> <path class=ql-fill d=M8.984,10C11.457,10.208,12,10.479,12,11.5c0,0.708-1.283,1.5-3,1.5-1.571,0-2.765-.679-2.969-1.309a1,1,0,1,0-1.9.617C4.644,13.894,6.646,15,9,15c2.8,0,5-1.538,5-3.5a3.2,3.2,0,0,0-.5-1.843Z></path> </svg>\";\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-stroke d=M5,3V9a4.012,4.012,0,0,0,4,4H9a4.012,4.012,0,0,0,4-4V3></path> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=12 x=3 y=15></rect> </svg>\";\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=ql-stroke height=12 width=12 x=3 y=3></rect> <rect class=ql-fill height=12 width=1 x=5 y=3></rect> <rect class=ql-fill height=12 width=1 x=12 y=3></rect> <rect class=ql-fill height=2 width=8 x=5 y=8></rect> <rect class=ql-fill height=1 width=3 x=3 y=5></rect> <rect class=ql-fill height=1 width=3 x=3 y=7></rect> <rect class=ql-fill height=1 width=3 x=3 y=10></rect> <rect class=ql-fill height=1 width=3 x=3 y=12></rect> <rect class=ql-fill height=1 width=3 x=12 y=5></rect> <rect class=ql-fill height=1 width=3 x=12 y=7></rect> <rect class=ql-fill height=1 width=3 x=12 y=10></rect> <rect class=ql-fill height=1 width=3 x=12 y=12></rect> </svg>\";\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=ql-stroke points=\\\"7 11 9 13 11 11 7 11\\\"></polygon> <polygon class=ql-stroke points=\\\"7 7 9 5 11 7 7 7\\\"></polygon> </svg>\";\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.BubbleTooltip = undefined;\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(43);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']];\n\nvar BubbleTheme = function (_BaseTheme) {\n  _inherits(BubbleTheme, _BaseTheme);\n\n  function BubbleTheme(quill, options) {\n    _classCallCheck(this, BubbleTheme);\n\n    if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n      options.modules.toolbar.container = TOOLBAR_CONFIG;\n    }\n\n    var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options));\n\n    _this.quill.container.classList.add('ql-bubble');\n    return _this;\n  }\n\n  _createClass(BubbleTheme, [{\n    key: 'extendToolbar',\n    value: function extendToolbar(toolbar) {\n      this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n      this.tooltip.root.appendChild(toolbar.container);\n      this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n      this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n    }\n  }]);\n\n  return BubbleTheme;\n}(_base2.default);\n\nBubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        link: function link(value) {\n          if (!value) {\n            this.quill.format('link', false);\n          } else {\n            this.quill.theme.tooltip.edit();\n          }\n        }\n      }\n    }\n  }\n});\n\nvar BubbleTooltip = function (_BaseTooltip) {\n  _inherits(BubbleTooltip, _BaseTooltip);\n\n  function BubbleTooltip(quill, bounds) {\n    _classCallCheck(this, BubbleTooltip);\n\n    var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds));\n\n    _this2.quill.on(_emitter2.default.events.EDITOR_CHANGE, function (type, range, oldRange, source) {\n      if (type !== _emitter2.default.events.SELECTION_CHANGE) return;\n      if (range != null && range.length > 0 && source === _emitter2.default.sources.USER) {\n        _this2.show();\n        // Lock our width so we will expand beyond our offsetParent boundaries\n        _this2.root.style.left = '0px';\n        _this2.root.style.width = '';\n        _this2.root.style.width = _this2.root.offsetWidth + 'px';\n        var lines = _this2.quill.getLines(range.index, range.length);\n        if (lines.length === 1) {\n          _this2.position(_this2.quill.getBounds(range));\n        } else {\n          var lastLine = lines[lines.length - 1];\n          var index = _this2.quill.getIndex(lastLine);\n          var length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n          var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));\n          _this2.position(_bounds);\n        }\n      } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {\n        _this2.hide();\n      }\n    });\n    return _this2;\n  }\n\n  _createClass(BubbleTooltip, [{\n    key: 'listen',\n    value: function listen() {\n      var _this3 = this;\n\n      _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this);\n      this.root.querySelector('.ql-close').addEventListener('click', function () {\n        _this3.root.classList.remove('ql-editing');\n      });\n      this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n        // Let selection be restored by toolbar handlers before repositioning\n        setTimeout(function () {\n          if (_this3.root.classList.contains('ql-hidden')) return;\n          var range = _this3.quill.getSelection();\n          if (range != null) {\n            _this3.position(_this3.quill.getBounds(range));\n          }\n        }, 1);\n      });\n    }\n  }, {\n    key: 'cancel',\n    value: function cancel() {\n      this.show();\n    }\n  }, {\n    key: 'position',\n    value: function position(reference) {\n      var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference);\n      var arrow = this.root.querySelector('.ql-tooltip-arrow');\n      arrow.style.marginLeft = '';\n      if (shift === 0) return shift;\n      arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px';\n    }\n  }]);\n\n  return BubbleTooltip;\n}(_base.BaseTooltip);\n\nBubbleTooltip.TEMPLATE = ['<span class=\"ql-tooltip-arrow\"></span>', '<div class=\"ql-tooltip-editor\">', '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"https://quilljs.com\" data-video=\"Embed URL\">', '<a class=\"ql-close\"></a>', '</div>'].join('');\n\nexports.BubbleTooltip = BubbleTooltip;\nexports.default = BubbleTheme;\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(63);\n\n\n/***/ })\n/******/ ])[\"default\"];\n});","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <http://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n *     incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n  ? global.TYPED_ARRAY_SUPPORT\n  : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n  try {\n    var arr = new Uint8Array(1)\n    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n    return arr.foo() === 42 && // typed array instances can be augmented\n        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n  } catch (e) {\n    return false\n  }\n}\n\nfunction kMaxLength () {\n  return Buffer.TYPED_ARRAY_SUPPORT\n    ? 0x7fffffff\n    : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n  if (kMaxLength() < length) {\n    throw new RangeError('Invalid typed array length')\n  }\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = new Uint8Array(length)\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    if (that === null) {\n      that = new Buffer(length)\n    }\n    that.length = length\n  }\n\n  return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n    return new Buffer(arg, encodingOrOffset, length)\n  }\n\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new Error(\n        'If encoding is specified then the first argument must be a string'\n      )\n    }\n    return allocUnsafe(this, arg)\n  }\n  return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n  arr.__proto__ = Buffer.prototype\n  return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n    return fromArrayBuffer(that, value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(that, value, encodingOrOffset)\n  }\n\n  return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n  Buffer.prototype.__proto__ = Uint8Array.prototype\n  Buffer.__proto__ = Uint8Array\n  if (typeof Symbol !== 'undefined' && Symbol.species &&\n      Buffer[Symbol.species] === Buffer) {\n    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n    Object.defineProperty(Buffer, Symbol.species, {\n      value: null,\n      configurable: true\n    })\n  }\n}\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be a number')\n  } else if (size < 0) {\n    throw new RangeError('\"size\" argument must not be negative')\n  }\n}\n\nfunction alloc (that, size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(that, size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpretted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(that, size).fill(fill, encoding)\n      : createBuffer(that, size).fill(fill)\n  }\n  return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n  assertSize(size)\n  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < size; ++i) {\n      that[i] = 0\n    }\n  }\n  return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  var length = byteLength(string, encoding) | 0\n  that = createBuffer(that, length)\n\n  var actual = that.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    that = that.slice(0, actual)\n  }\n\n  return that\n}\n\nfunction fromArrayLike (that, array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  that = createBuffer(that, length)\n  for (var i = 0; i < length; i += 1) {\n    that[i] = array[i] & 255\n  }\n  return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n  array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\\'offset\\' is out of bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\\'length\\' is out of bounds')\n  }\n\n  if (byteOffset === undefined && length === undefined) {\n    array = new Uint8Array(array)\n  } else if (length === undefined) {\n    array = new Uint8Array(array, byteOffset)\n  } else {\n    array = new Uint8Array(array, byteOffset, length)\n  }\n\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = array\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    that = fromArrayLike(that, array)\n  }\n  return that\n}\n\nfunction fromObject (that, obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    that = createBuffer(that, len)\n\n    if (that.length === 0) {\n      return that\n    }\n\n    obj.copy(that, 0, 0, len)\n    return that\n  }\n\n  if (obj) {\n    if ((typeof ArrayBuffer !== 'undefined' &&\n        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n      if (typeof obj.length !== 'number' || isnan(obj.length)) {\n        return createBuffer(that, 0)\n      }\n      return fromArrayLike(that, obj)\n    }\n\n    if (obj.type === 'Buffer' && isArray(obj.data)) {\n      return fromArrayLike(that, obj.data)\n    }\n  }\n\n  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < kMaxLength()` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= kMaxLength()) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + kMaxLength().toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError('Arguments must be Buffers')\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    }\n    buf.copy(buffer, pos)\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    string = '' + string\n  }\n\n  var len = string.length\n  if (len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n      case undefined:\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) return utf8ToBytes(string).length // assume utf8\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length | 0\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  if (this.length > 0) {\n    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n    if (this.length > max) str += ' ... '\n  }\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError('Argument must be a Buffer')\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset  // Coerce to Number.\n  if (isNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (Buffer.TYPED_ARRAY_SUPPORT &&\n        typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  // must be an even number of digits\n  var strLen = string.length\n  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (isNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset | 0\n    if (isFinite(length)) {\n      length = length | 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  // legacy write(string, encoding, offset, length) - remove in v0.13\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n        return asciiWrite(this, string, offset, length)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Write(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF) ? 4\n      : (firstByte > 0xDF) ? 3\n      : (firstByte > 0xBF) ? 2\n      : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    newBuf = this.subarray(start, end)\n    newBuf.__proto__ = Buffer.prototype\n  } else {\n    var sliceLen = end - start\n    newBuf = new Buffer(sliceLen, undefined)\n    for (var i = 0; i < sliceLen; ++i) {\n      newBuf[i] = this[i + start]\n    }\n  }\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n      (littleEndian ? i : 1 - i) * 8\n  }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffffffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n  }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = (value >>> 24)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 1] = (value >>> 8)\n    this[offset] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 3] = (value >>> 24)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n  var i\n\n  if (this === target && start < targetStart && targetStart < end) {\n    // descending copy from end\n    for (i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    // ascending copy from start\n    for (i = 0; i < len; ++i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, start + len),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if (code < 256) {\n        val = code\n      }\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : utf8ToBytes(new Buffer(val, encoding).toString())\n    var len = bytes.length\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction stringtrim (str) {\n  if (str.trim) return str.trim()\n  return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\nfunction isnan (val) {\n  return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","export enum PersonActivationType {\n    Normal,\n    Observed,\n    Observator,\n    Homologation,\n    Bulk,\n  }\n  ","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.ReorderableRepeat = void 0;\n\nvar _aureliaDependencyInjection = require(\"aurelia-dependency-injection\");\n\nvar _aureliaBinding = require(\"aurelia-binding\");\n\nvar _aureliaTemplating = require(\"aurelia-templating\");\n\nvar _aureliaTemplatingResources = require(\"aurelia-templating-resources\");\n\nvar _reorderableRepeatStrategyLocator = require(\"./reorderable-repeat-strategy-locator\");\n\nvar _bcxAureliaDnd = require(\"bcx-aurelia-dnd\");\n\nvar _aureliaEventAggregator = require(\"aurelia-event-aggregator\");\n\nvar _aureliaTaskQueue = require(\"aurelia-task-queue\");\n\nvar _repeaterDndType = _interopRequireDefault(require(\"./repeater-dnd-type\"));\n\nvar _reorderableGroupMap = require(\"./reorderable-group-map\");\n\nvar _dec, _dec2, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _temp;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _initializerDefineProperty(target, property, descriptor, context) { if (!descriptor) return; Object.defineProperty(target, property, { enumerable: descriptor.enumerable, configurable: descriptor.configurable, writable: descriptor.writable, value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 }); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object['ke' + 'ys'](descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object['define' + 'Property'](target, property, desc); desc = null; } return desc; }\n\nfunction _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and set to use loose mode. ' + 'To use proposal-class-properties in spec mode with decorators, wait for ' + 'the next major version of decorators in stage 2.'); }\n\nvar seed = 0;\n\nvar classes = function () {\n  var cache = {};\n  var start = '(?:^|\\\\s)';\n  var end = '(?:\\\\s|$)';\n\n  function lookupClass(className) {\n    var cached = cache[className];\n\n    if (cached) {\n      cached.lastIndex = 0;\n    } else {\n      cache[className] = cached = new RegExp(start + className + end, 'g');\n    }\n\n    return cached;\n  }\n\n  function addClass(el, className) {\n    var current = el.className;\n\n    if (!current.length) {\n      el.className = className;\n    } else if (!lookupClass(className).test(current)) {\n      el.className += ' ' + className;\n    }\n  }\n\n  function rmClass(el, className) {\n    el.className = el.className.replace(lookupClass(className), ' ').trim();\n  }\n\n  return {\n    add: addClass,\n    rm: rmClass\n  };\n}();\n/**\n* Binding to iterate over Array to genereate a template for each iteration.\n*/\n\n\nvar ReorderableRepeat = (_dec = (0, _aureliaTemplating.customAttribute)('reorderable-repeat'), _dec2 = (0, _aureliaDependencyInjection.inject)(_aureliaEventAggregator.EventAggregator, _aureliaTaskQueue.TaskQueue, _aureliaBinding.BindingEngine, _bcxAureliaDnd.DndService, _aureliaTemplating.BoundViewFactory, _aureliaTemplating.TargetInstruction, _aureliaTemplating.ViewSlot, _aureliaTemplating.ViewResources, _aureliaBinding.ObserverLocator, _reorderableRepeatStrategyLocator.ReorderableRepeatStrategyLocator, _reorderableGroupMap.ReorderableGroupMap), _dec(_class = (0, _aureliaTemplating.templateController)(_class = _dec2(_class = (_class2 = (_temp =\n/*#__PURE__*/\nfunction (_AbstractRepeater) {\n  _inheritsLoose(ReorderableRepeat, _AbstractRepeater);\n\n  /**\n  * List of items to bind the repeater to.\n  *\n  * @property items\n  */\n\n  /**\n  * Local variable which gets assigned on each iteration.\n  *\n  * @property local\n  */\n\n  /**\n  * Creates an instance of Repeat.\n  * @param viewFactory The factory generating the view\n  * @param instruction The instructions for how the element should be enhanced.\n  * @param viewResources Collection of resources used to compile the the views.\n  * @param viewSlot The slot the view is injected in to.\n  * @param observerLocator The observer locator instance.\n  * @param collectionStrategyLocator The strategy locator to locate best strategy to iterate the collection.\n  */\n  function ReorderableRepeat(ea, taskQueue, bindingEngine, dndService, viewFactory, instruction, viewSlot, viewResources, observerLocator, strategyLocator, groupMap) {\n    var _this;\n\n    _this = _AbstractRepeater.call(this, {\n      local: 'item',\n      viewsRequireLifecycle: (0, _aureliaTemplatingResources.viewsRequireLifecycle)(viewFactory)\n    }) || this;\n\n    _initializerDefineProperty(_this, \"items\", _descriptor, _assertThisInitialized(_assertThisInitialized(_this)));\n\n    _initializerDefineProperty(_this, \"local\", _descriptor2, _assertThisInitialized(_assertThisInitialized(_this)));\n\n    _initializerDefineProperty(_this, \"intention\", _descriptor3, _assertThisInitialized(_assertThisInitialized(_this)));\n\n    _initializerDefineProperty(_this, \"patchedItems\", _descriptor4, _assertThisInitialized(_assertThisInitialized(_this)));\n\n    _this.repeaterId = (0, _repeaterDndType.default)(seed);\n    seed += 1;\n    _this.ea = ea;\n    _this.taskQueue = taskQueue;\n    _this.bindingEngine = bindingEngine;\n    _this.dndService = dndService;\n    _this.viewFactory = viewFactory;\n    _this.instruction = instruction;\n    _this.viewSlot = viewSlot;\n    _this.lookupFunctions = viewResources.lookupFunctions;\n    _this.observerLocator = observerLocator;\n    _this.strategyLocator = strategyLocator;\n    _this.groupMap = groupMap;\n    _this.ignoreMutation = false;\n    _this.sourceExpression = (0, _aureliaTemplatingResources.getItemsSourceExpression)(_this.instruction, 'reorderable-repeat.for');\n\n    if (_this.sourceExpression instanceof _aureliaBinding.BindingBehavior) {\n      throw new Error('BindingBehavior is not supported in reorderable-repeat');\n    }\n\n    if (_this.sourceExpression instanceof _aureliaBinding.ValueConverter) {\n      throw new Error('ValueConverter is not supported in reorderable-repeat');\n    }\n\n    if ((0, _aureliaTemplatingResources.isOneTime)(_this.sourceExpression)) {\n      throw new Error('oneTime binding is not supported in reorderable-repeat');\n    }\n\n    _this.viewsRequireLifecycle = (0, _aureliaTemplatingResources.viewsRequireLifecycle)(viewFactory);\n\n    var group = _this._reorderableGroup();\n\n    _this.type = group ? (0, _repeaterDndType.default)(group) : _this.repeaterId;\n    return _this;\n  }\n\n  var _proto = ReorderableRepeat.prototype;\n\n  _proto.call = function call(context, changes) {\n    this[context](this.items, changes);\n  }\n  /**\n  * Binds the repeat to the binding context and override context.\n  * @param bindingContext The binding context.\n  * @param overrideContext An override context for binding.\n  */\n  ;\n\n  _proto.bind = function bind(bindingContext, overrideContext) {\n    var _this2 = this;\n\n    this.scope = {\n      bindingContext: bindingContext,\n      overrideContext: overrideContext\n    };\n    this.matcherBinding = this._captureAndRemoveMatcherBinding();\n    this.arrayObserver = this.bindingEngine.collectionObserver(this.items).subscribe(this._itemsMutated.bind(this));\n    this._subsribers = [this.ea.subscribe('dnd:willStart', function () {\n      _this2.intention = null;\n\n      _this2.views().forEach(function (v) {\n        classes.rm(v.firstChild, 'reorderable-repeat-reordering');\n        classes.rm(v.firstChild, 'reorderable-repeat-dragging-me');\n      });\n    }), this.ea.subscribe('dnd:didEnd', function () {\n      _this2.views().forEach(function (v) {\n        classes.rm(v.firstChild, 'reorderable-repeat-reordering');\n        classes.rm(v.firstChild, 'reorderable-repeat-dragging-me');\n      });\n\n      if (!_this2.intention) return;\n      var _this2$intention = _this2.intention,\n          item = _this2$intention.item,\n          fromIndex = _this2$intention.fromIndex,\n          fromRepeaterId = _this2$intention.fromRepeaterId,\n          toIndex = _this2$intention.toIndex,\n          toRepeaterId = _this2$intention.toRepeaterId;\n      _this2.intention = null;\n      var repeaterId = _this2.repeaterId;\n      if (repeaterId !== fromRepeaterId && repeaterId !== toRepeaterId) return; // no change\n\n      if (fromRepeaterId === toRepeaterId && fromIndex === toIndex) return;\n\n      if (repeaterId === fromRepeaterId) {\n        _this2.items.splice(fromIndex, 1);\n      }\n\n      if (repeaterId === toRepeaterId) {\n        _this2.items.splice(toIndex, 0, item);\n      }\n\n      var afterReordering = _this2._reorderableAfterReorderingFunc();\n\n      if (afterReordering) {\n        // in group mode, wait for all models updated\n        // before hitting callback\n        _this2.taskQueue.queueMicroTask(function () {\n          if (fromRepeaterId === toRepeaterId && fromRepeaterId === repeaterId) {\n            afterReordering(_this2.items, {\n              fromIndex: fromIndex,\n              toIndex: toIndex\n            });\n          } else {\n            afterReordering(_this2.items);\n          }\n        });\n      }\n    }), this.ea.subscribe('reorderable-group:intention-changed', function (intention) {\n      if (intention.type !== _this2.type) return; // avoid double trigger of intentionChanged;\n\n      if (_this2.intention && intention.type === _this2.intention.type && intention.fromIndex === _this2.intention.fromIndex && intention.fromRepeaterId === _this2.intention.fromRepeaterId && intention.toIndex === _this2.intention.toIndex && intention.toRepeaterId === _this2.intention.toRepeaterId) return; // sync intention from other repeater\n\n      _this2.intention = intention;\n    })];\n    this.patchedItems = [].concat(this.items);\n    this.patchedItemsChanged();\n    this.groupMap.add(this);\n  }\n  /**\n  * Unbinds the repeat\n  */\n  ;\n\n  _proto.unbind = function unbind() {\n    this.groupMap.remove(this);\n    this.scope = null;\n    this.items = null;\n    this.matcherBinding = null;\n    this.viewSlot.removeAll(true);\n\n    if (this.arrayObserver) {\n      this.arrayObserver.dispose();\n      this.arrayObserver = null;\n    }\n\n    this._subsribers.forEach(function (s) {\n      return s.dispose();\n    });\n\n    this._subsribers = [];\n  };\n\n  _proto.intentionChanged = function intentionChanged(newIntention) {\n    if (newIntention) {\n      var repeaterId = this.repeaterId;\n      var item = newIntention.item,\n          fromIndex = newIntention.fromIndex,\n          fromRepeaterId = newIntention.fromRepeaterId,\n          toIndex = newIntention.toIndex,\n          toRepeaterId = newIntention.toRepeaterId;\n      var patched = [].concat(this.items);\n\n      if (repeaterId === fromRepeaterId) {\n        patched.splice(fromIndex, 1);\n      }\n\n      if (repeaterId === toRepeaterId) {\n        patched.splice(toIndex, 0, item);\n      }\n\n      this.patchedItems = patched;\n    }\n  } // every time the items property changes.\n  ;\n\n  _proto.itemsChanged = function itemsChanged(newVal, oldVal) {\n    // still bound?\n    if (!this.scope) {\n      return;\n    }\n\n    if (this.arrayObserver) {\n      this.arrayObserver.dispose();\n      this.arrayObserver = null;\n    }\n\n    this.arrayObserver = this.bindingEngine.collectionObserver(this.items).subscribe(this._itemsMutated.bind(this));\n\n    if (this.intention === null) {\n      this.patchedItems = [].concat(this.items);\n    } else {\n      this.intention = null;\n    }\n  } // every time the items array add/delete.\n  ;\n\n  _proto._itemsMutated = function _itemsMutated() {\n    if (this.intention === null) {\n      this.patchedItems = [].concat(this.items);\n    } else {\n      this.intention = null;\n    }\n  };\n\n  _proto.patchedItemsChanged = function patchedItemsChanged() {\n    // still bound?\n    if (!this.scope) {\n      return;\n    }\n\n    this.strategy = this.strategyLocator.getStrategy(this.patchedItems);\n\n    if (!this.strategy) {\n      throw new Error(\"Value for '\" + this.sourceExpression + \"' is non-repeatable\");\n    }\n\n    this.strategy.instanceChanged(this, this.patchedItems);\n  };\n\n  _proto._captureAndRemoveMatcherBinding = function _captureAndRemoveMatcherBinding() {\n    if (this.viewFactory.viewFactory) {\n      var instructions = this.viewFactory.viewFactory.instructions;\n      var instructionIds = Object.keys(instructions);\n\n      for (var i = 0; i < instructionIds.length; i++) {\n        var expressions = instructions[instructionIds[i]].expressions;\n\n        if (expressions) {\n          for (var ii = 0; i < expressions.length; i++) {\n            if (expressions[ii].targetProperty === 'matcher') {\n              var matcherBinding = expressions[ii];\n              expressions.splice(ii, 1);\n              return matcherBinding;\n            }\n          }\n        }\n      }\n    }\n\n    return undefined;\n  } // @override AbstractRepeater\n  ;\n\n  _proto.viewCount = function viewCount() {\n    return this.viewSlot.children.length;\n  };\n\n  _proto.views = function views() {\n    return this.viewSlot.children;\n  };\n\n  _proto.view = function view(index) {\n    return this.viewSlot.children[index];\n  };\n\n  _proto.matcher = function matcher() {\n    return this.matcherBinding ? this.matcherBinding.sourceExpression.evaluate(this.scope, this.matcherBinding.lookupFunctions) : null;\n  };\n\n  _proto.addView = function addView(bindingContext, overrideContext) {\n    var view = this.viewFactory.create();\n    view.bind(bindingContext, overrideContext);\n    this.viewSlot.add(view);\n\n    this._registerDnd(view);\n  };\n\n  _proto.insertView = function insertView(index, bindingContext, overrideContext) {\n    var view = this.viewFactory.create();\n    view.bind(bindingContext, overrideContext);\n    this.viewSlot.insert(index, view);\n\n    this._registerDnd(view);\n  };\n\n  _proto.moveView = function moveView(sourceIndex, targetIndex) {\n    this.viewSlot.move(sourceIndex, targetIndex);\n  };\n\n  _proto.removeAllViews = function removeAllViews(returnToCache, skipAnimation) {\n    var _this3 = this;\n\n    this.views().forEach(function (view) {\n      return _this3._unRegisterDnd(view);\n    });\n    return this.viewSlot.removeAll(returnToCache, skipAnimation);\n  };\n\n  _proto.removeViews = function removeViews(viewsToRemove, returnToCache, skipAnimation) {\n    var _this4 = this;\n\n    viewsToRemove.forEach(function (view) {\n      return _this4._unRegisterDnd(view);\n    });\n    return this.viewSlot.removeMany(viewsToRemove, returnToCache, skipAnimation);\n  };\n\n  _proto.removeView = function removeView(index, returnToCache, skipAnimation) {\n    this._unRegisterDnd(this.view(index));\n\n    return this.viewSlot.removeAt(index, returnToCache, skipAnimation);\n  };\n\n  _proto.updateBindings = function updateBindings(view) {\n    this._unRegisterDnd(view);\n\n    var j = view.bindings.length;\n\n    while (j--) {\n      (0, _aureliaTemplatingResources.updateOneTimeBinding)(view.bindings[j]);\n    }\n\n    j = view.controllers.length;\n\n    while (j--) {\n      var k = view.controllers[j].boundProperties.length;\n\n      while (k--) {\n        var binding = view.controllers[j].boundProperties[k].binding;\n        (0, _aureliaTemplatingResources.updateOneTimeBinding)(binding);\n      }\n    }\n\n    this._registerDnd(view);\n  };\n\n  _proto._additionalAttribute = function _additionalAttribute(view, attribute) {\n    return view && view.firstChild && view.firstChild.au && view.firstChild.au[attribute] ? view.firstChild.au[attribute].instruction.attributes[attribute] : undefined;\n  };\n\n  _proto._reorderableGroup = function _reorderableGroup() {\n    // only support static group, in order to get the value before view rendering\n    if (this.viewFactory && this.viewFactory.viewFactory) {\n      var node = this.viewFactory.viewFactory.template.firstChild;\n\n      if (node && node.hasAttribute('reorderable-group')) {\n        return node.getAttribute('reorderable-group');\n      }\n    }\n  };\n\n  _proto._reorderableDirection = function _reorderableDirection(view) {\n    var attr = this._additionalAttribute(view, 'reorderable-direction');\n\n    if (attr && attr.sourceExpression) {\n      attr = attr.sourceExpression.evaluate(this.scope);\n    }\n\n    if (typeof attr === 'string') {\n      return attr.toLowerCase() || 'down';\n    }\n\n    return 'down';\n  };\n\n  _proto._dndHandlerSelector = function _dndHandlerSelector(view) {\n    var attr = this._additionalAttribute(view, 'reorderable-dnd-handler-selector');\n\n    if (attr && attr.sourceExpression) {\n      attr = attr.sourceExpression.evaluate(this.scope);\n    }\n\n    if (typeof attr === 'string') {\n      return attr;\n    }\n  };\n\n  _proto._dndPreviewFunc = function _dndPreviewFunc(view) {\n    var func = this._additionalAttribute(view, 'reorderable-dnd-preview');\n\n    if (!func) {\n      return null;\n    } else if (typeof func === 'string') {\n      var funcCall = this.scope.overrideContext.bindingContext[func];\n\n      if (typeof funcCall === 'function') {\n        return funcCall.bind(this.scope.overrideContext.bindingContext);\n      }\n\n      throw new Error(\"'reorderable-dnd-preview' must be a function or evaluate to one\");\n    } else if (func.sourceExpression) {\n      // TODO test preview\n      return function (item, scope) {\n        return func.sourceExpression.evaluate(scope);\n      };\n    } else {\n      throw new Error(\"'reorderable-dnd-preview' must be a function or evaluate to one\");\n    }\n  };\n\n  _proto._reorderableAfterReorderingFunc = function _reorderableAfterReorderingFunc() {\n    var _this5 = this;\n\n    var func = this._additionalAttribute(this.view(0), 'reorderable-after-reordering');\n\n    if (!func) {\n      return null;\n    } else if (typeof func === 'string') {\n      var funcCall = this.scope.overrideContext.bindingContext[func];\n\n      if (typeof funcCall === 'function') {\n        return funcCall.bind(this.scope.overrideContext.bindingContext);\n      }\n\n      throw new Error(\"'reorderable-after-reordering' must be a function or evaluate to one\");\n    } else if (func.sourceExpression) {\n      return function () {\n        return func.sourceExpression.evaluate(_this5.scope);\n      };\n    } else {\n      throw new Error(\"'reorderable-after-reordering' must be a function or evaluate to one\");\n    }\n  };\n\n  _proto._dndHover = function _dndHover(location, index, direction) {\n    // bypass hovering on itself\n    if (this.intention && this.intention.toRepeaterId === this.repeaterId && this.intention.toIndex === index) {\n      return;\n    }\n\n    var model = this.dndService.model;\n    var mouseEndAt = location.mouseEndAt,\n        targetElementRect = location.targetElementRect;\n    var x = mouseEndAt.x - targetElementRect.x;\n    var y = mouseEndAt.y - targetElementRect.y;\n    var inLeastHalf;\n\n    if (direction === 'left') {\n      inLeastHalf = x > targetElementRect.width / 2;\n    } else if (direction === 'right') {\n      inLeastHalf = x < targetElementRect.width / 2;\n    } else if (direction === 'up') {\n      inLeastHalf = y > targetElementRect.height / 2;\n    } else\n      /* if (direction === 'down') */\n      {\n        inLeastHalf = y < targetElementRect.height / 2;\n      } // because of unknown size diff between items,\n    // check half size to avoid endless bouncing of swapping two items.\n\n\n    if (inLeastHalf || // or starting on itself\n    !this.intention && model.repeaterId === this.repeaterId && index === model.index) {\n      // hover over top half, user wants to move smth before this item.\n      this._updateIntention(index, true);\n    } else {\n      // hover over bottom half, user wants to move smth after this item.\n      this._updateIntention(index, false);\n    }\n  };\n\n  _proto._registerDnd = function _registerDnd(view) {\n    var _this6 = this;\n\n    var local = this.local;\n    var el = view.firstChild;\n    var item = view.bindingContext[local];\n    var index = view.overrideContext.$index;\n\n    var handlerSelector = this._dndHandlerSelector(view);\n\n    var handler;\n\n    if (handlerSelector) {\n      handler = el.querySelector(handlerSelector);\n    }\n\n    var type = this.type;\n    var repeaterId = this.repeaterId;\n\n    var direction = this._reorderableDirection(view);\n\n    var _previewFunc = this._dndPreviewFunc(view);\n\n    this.dndService.addSource({\n      dndModel: function dndModel() {\n        return {\n          type: type,\n          index: index,\n          item: item,\n          repeaterId: repeaterId\n        };\n      },\n      dndPreview: _previewFunc && function () {\n        return _previewFunc(item, view);\n      },\n      dndElement: el\n    }, handler && {\n      handler: handler\n    });\n    this.dndService.addTarget({\n      dndElement: el,\n      dndCanDrop: function dndCanDrop(model) {\n        if (model.type !== type) return false;\n        var intention = _this6.intention;\n        var inSameGroup = model.repeaterId === repeaterId;\n\n        _this6.taskQueue.queueMicroTask(function () {\n          classes.add(el, 'reorderable-repeat-reordering');\n        });\n\n        var draggingMe;\n\n        if (intention) {\n          draggingMe = intention.toRepeaterId === repeaterId && intention.toIndex === index;\n        } else if (inSameGroup) {\n          draggingMe = model.index === index;\n        }\n\n        if (draggingMe) {\n          // I am under dragging\n          _this6.taskQueue.queueMicroTask(function () {\n            classes.add(el, 'reorderable-repeat-dragging-me');\n          });\n        }\n\n        return true;\n      },\n      dndHover: function dndHover(location) {\n        _this6._dndHover(location, index, direction);\n      },\n      dndDrop: function dndDrop() {\n        /* no-op */\n      }\n    });\n  };\n\n  _proto._unRegisterDnd = function _unRegisterDnd(view) {\n    classes.rm(view.firstChild, 'reorderable-repeat-reordering');\n    classes.rm(view.firstChild, 'reorderable-repeat-dragging-me');\n    this.dndService.removeSource(view.firstChild);\n    this.dndService.removeTarget(view.firstChild);\n  };\n\n  _proto._updateIntention = function _updateIntention(targetIndex, beforeTarget) {\n    var _this$dndService = this.dndService,\n        isProcessing = _this$dndService.isProcessing,\n        model = _this$dndService.model;\n    if (!isProcessing) return;\n    if (model.type !== this.type) return;\n    var repeaterId = this.repeaterId;\n    var isUsingGroup = model.type !== model.repeaterId;\n    var inSameGroup = model.repeaterId === repeaterId;\n    if (targetIndex < 0) return;\n    var originalIndex;\n    var currentIndex;\n    var nextIndex;\n\n    if (inSameGroup) {\n      if (this.intention) {\n        originalIndex = this.intention.fromIndex;\n        currentIndex = this.intention.toIndex;\n      } else {\n        originalIndex = model.index;\n        if (originalIndex < 0) return;\n        currentIndex = originalIndex;\n      }\n    } else {\n      if (this.intention && this.intention.toRepeaterId === repeaterId) {\n        originalIndex = this.intention.fromIndex;\n        currentIndex = this.intention.toIndex;\n      } else {\n        originalIndex = model.index;\n        if (originalIndex < 0) return;\n        currentIndex = targetIndex;\n      }\n    }\n\n    if (currentIndex < targetIndex) {\n      // grabbed item is currently above target\n      if (beforeTarget) {\n        nextIndex = targetIndex - 1;\n      } else {\n        nextIndex = targetIndex;\n      }\n    } else\n      /* if (currentIndex > targetIndex) or across repeaters */\n      {\n        // grabbed item is currently below target\n        if (beforeTarget) {\n          nextIndex = targetIndex;\n        } else {\n          nextIndex = targetIndex + 1;\n        }\n      }\n\n    if (!this.intention || this.intention.fromIndex !== originalIndex || this.intention.fromRepeaterId !== model.repeaterId || this.intention.toIndex !== nextIndex || this.intention.toRepeaterId !== repeaterId) {\n      this.intention = {\n        type: model.type,\n        item: model.item,\n        fromIndex: originalIndex,\n        fromRepeaterId: model.repeaterId,\n        toIndex: nextIndex,\n        toRepeaterId: repeaterId\n      };\n\n      if (isUsingGroup) {\n        // let other repeaters know\n        this.ea.publish('reorderable-group:intention-changed', this.intention);\n      }\n    }\n  };\n\n  return ReorderableRepeat;\n}(_aureliaTemplatingResources.AbstractRepeater), _temp), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, \"items\", [_aureliaTemplating.bindable], {\n  configurable: true,\n  enumerable: true,\n  writable: true,\n  initializer: null\n}), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, \"local\", [_aureliaTemplating.bindable], {\n  configurable: true,\n  enumerable: true,\n  writable: true,\n  initializer: null\n}), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, \"intention\", [_aureliaBinding.observable], {\n  configurable: true,\n  enumerable: true,\n  writable: true,\n  initializer: function initializer() {\n    return null;\n  }\n}), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, \"patchedItems\", [_aureliaBinding.observable], {\n  configurable: true,\n  enumerable: true,\n  writable: true,\n  initializer: null\n})), _class2)) || _class) || _class) || _class);\nexports.ReorderableRepeat = ReorderableRepeat;","\"use strict\";\n\nexports.__esModule = true;\nexports.ReorderableRepeatStrategyLocator = void 0;\n\nvar _simpleArrayRepeatStrategy = require(\"./simple-array-repeat-strategy\");\n\nvar ReorderableRepeatStrategyLocator =\n/*#__PURE__*/\nfunction () {\n  function ReorderableRepeatStrategyLocator() {\n    this.matchers = [];\n    this.strategies = [];\n    this.addStrategy(function (items) {\n      return items instanceof Array;\n    }, new _simpleArrayRepeatStrategy.SimpleArrayRepeatStrategy());\n  }\n\n  var _proto = ReorderableRepeatStrategyLocator.prototype;\n\n  _proto.addStrategy = function addStrategy(matcher, strategy) {\n    this.matchers.push(matcher);\n    this.strategies.push(strategy);\n  };\n\n  _proto.getStrategy = function getStrategy(items) {\n    var matchers = this.matchers;\n\n    for (var i = 0, ii = matchers.length; i < ii; ++i) {\n      if (matchers[i](items)) {\n        return this.strategies[i];\n      }\n    }\n\n    return null;\n  };\n\n  return ReorderableRepeatStrategyLocator;\n}();\n\nexports.ReorderableRepeatStrategyLocator = ReorderableRepeatStrategyLocator;","\"use strict\";\n\nexports.__esModule = true;\nexports.SimpleArrayRepeatStrategy = void 0;\n\nvar _aureliaTemplatingResources = require(\"aurelia-templating-resources\");\n\n// dumbest array repeat strategy\nvar SimpleArrayRepeatStrategy =\n/*#__PURE__*/\nfunction () {\n  function SimpleArrayRepeatStrategy() {}\n\n  var _proto = SimpleArrayRepeatStrategy.prototype;\n\n  _proto.getCollectionObserver = function getCollectionObserver(observerLocator, items) {\n    return observerLocator.getArrayObserver(items);\n  };\n\n  _proto.instanceChanged = function instanceChanged(repeat, items) {\n    repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\n    var itemsLength = items.length;\n\n    if (items && itemsLength > 0) {\n      this._standardProcessInstanceChanged(repeat, items);\n    }\n  };\n\n  _proto._standardProcessInstanceChanged = function _standardProcessInstanceChanged(repeat, items) {\n    for (var i = 0, ii = items.length; i < ii; i++) {\n      var overrideContext = (0, _aureliaTemplatingResources.createFullOverrideContext)(repeat, items[i], i, ii);\n      repeat.addView(overrideContext.bindingContext, overrideContext);\n    }\n  };\n\n  return SimpleArrayRepeatStrategy;\n}();\n\nexports.SimpleArrayRepeatStrategy = SimpleArrayRepeatStrategy;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = _default;\nvar prefix = 'bcx-aurelia-reorderable-repeat:';\n\nfunction _default(ref) {\n  return prefix + ref;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.ReorderableDirection = void 0;\n\nvar _aureliaTemplating = require(\"aurelia-templating\");\n\nvar _dec, _class;\n\n//Placeholder attribute to prohibit use of this attribute name in other places\nvar ReorderableDirection = (_dec = (0, _aureliaTemplating.customAttribute)('reorderable-direction'), _dec(_class = function ReorderableDirection() {}) || _class);\nexports.ReorderableDirection = ReorderableDirection;","\"use strict\";\n\nexports.__esModule = true;\nexports.ReorderableGroup = void 0;\n\nvar _aureliaTemplating = require(\"aurelia-templating\");\n\nvar _dec, _class;\n\n//Placeholder attribute to prohibit use of this attribute name in other places\nvar ReorderableGroup = (_dec = (0, _aureliaTemplating.customAttribute)('reorderable-group'), _dec(_class = function ReorderableGroup() {}) || _class);\nexports.ReorderableGroup = ReorderableGroup;","\"use strict\";\n\nexports.__esModule = true;\nexports.ReorderableGroupFor = void 0;\n\nvar _aureliaDependencyInjection = require(\"aurelia-dependency-injection\");\n\nvar _aureliaTemplating = require(\"aurelia-templating\");\n\nvar _bcxAureliaDnd = require(\"bcx-aurelia-dnd\");\n\nvar _aureliaEventAggregator = require(\"aurelia-event-aggregator\");\n\nvar _reorderableGroupMap = require(\"./reorderable-group-map\");\n\nvar _dec, _dec2, _class, _temp;\n\nvar example = 'reorderable-group-for.bind=\"arrayModel\"';\nvar ReorderableGroupFor = (_dec = (0, _aureliaTemplating.customAttribute)('reorderable-group-for'), _dec2 = (0, _aureliaDependencyInjection.inject)(Element, _aureliaEventAggregator.EventAggregator, _bcxAureliaDnd.DndService, _reorderableGroupMap.ReorderableGroupMap), _dec(_class = _dec2(_class = (_temp =\n/*#__PURE__*/\nfunction () {\n  function ReorderableGroupFor(element, ea, dndService, groupMap) {\n    this.intention = null;\n    this.element = element;\n    this.ea = ea;\n    this.dndService = dndService;\n    this.groupMap = groupMap;\n    this.resetIntention = this.resetIntention.bind(this);\n  }\n\n  var _proto = ReorderableGroupFor.prototype;\n\n  _proto.bind = function bind() {\n    var _this = this;\n\n    var value = this.value;\n\n    if (!Array.isArray(value)) {\n      throw new Error('reorderable-group-for needs items to be an array. e.g. ' + example);\n    }\n\n    this._subsribers = [this.ea.subscribe('dnd:willStart', function () {\n      if (!_this.repeaterId) {\n        var repeaterInfo = _this.groupMap.get(value);\n\n        if (repeaterInfo) {\n          _this.group = repeaterInfo.group;\n          _this.repeaterId = repeaterInfo.repeaterId;\n        } else {\n          _this.group = null;\n          _this.repeaterId = null;\n        }\n      }\n\n      _this.resetIntention();\n    }), this.ea.subscribe('dnd:didEnd', this.resetIntention), this.ea.subscribe('reorderable-group:intention-changed', function (intention) {\n      if (intention.type !== _this.group) return; // sync intention from other repeater\n\n      _this.intention = intention;\n    })];\n  };\n\n  _proto.unbind = function unbind() {\n    this._subsribers.forEach(function (s) {\n      return s.dispose();\n    });\n\n    this._subsribers = [];\n  };\n\n  _proto.resetIntention = function resetIntention() {\n    this.intention = null;\n  };\n\n  _proto.attached = function attached() {\n    this.dndService.addTarget(this, {\n      element: this.element\n    });\n  };\n\n  _proto.detached = function detached() {\n    this.dndService.removeTarget(this);\n  };\n\n  _proto.dndCanDrop = function dndCanDrop(model) {\n    return model.type === this.group;\n  };\n\n  _proto.dndHover = function dndHover() {\n    if (!this.repeaterId) return;\n    var _this$dnd = this.dnd,\n        isHoveringShallowly = _this$dnd.isHoveringShallowly,\n        model = _this$dnd.model;\n    if (!isHoveringShallowly) return;\n    var type = model.type,\n        index = model.index,\n        item = model.item,\n        repeaterId = model.repeaterId;\n    var length = this.value ? this.value.length : 0;\n    var inSameGroup = model.repeaterId === this.repeaterId;\n    var defaultTargetIndex = inSameGroup ? length - 1 : length;\n\n    if (!this.intention || this.intention.toRepeaterId !== this.repeaterId) {\n      this.ea.publish('reorderable-group:intention-changed', {\n        type: type,\n        item: item,\n        fromIndex: index,\n        fromRepeaterId: repeaterId,\n        toIndex: defaultTargetIndex,\n        // move to last position\n        toRepeaterId: this.repeaterId\n      });\n    }\n  };\n\n  _proto.dndDrop = function dndDrop() {\n    /* no-op */\n  };\n\n  return ReorderableGroupFor;\n}(), _temp)) || _class) || _class);\nexports.ReorderableGroupFor = ReorderableGroupFor;","\"use strict\";\n\nexports.__esModule = true;\nexports.ReorderableDndPreview = void 0;\n\nvar _aureliaTemplating = require(\"aurelia-templating\");\n\nvar _dec, _class;\n\n//Placeholder attribute to prohibit use of this attribute name in other places\nvar ReorderableDndPreview = (_dec = (0, _aureliaTemplating.customAttribute)('reorderable-dnd-preview'), _dec(_class = function ReorderableDndPreview() {}) || _class);\nexports.ReorderableDndPreview = ReorderableDndPreview;","\nexport enum UserState {\n  Pending,\n  Active,\n  Inactive,\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.ReorderableDndHandlerSelector = void 0;\n\nvar _aureliaTemplating = require(\"aurelia-templating\");\n\nvar _dec, _class;\n\n//Placeholder attribute to prohibit use of this attribute name in other places\nvar ReorderableDndHandlerSelector = (_dec = (0, _aureliaTemplating.customAttribute)('reorderable-dnd-handler-selector'), _dec(_class = function ReorderableDndHandlerSelector() {}) || _class);\nexports.ReorderableDndHandlerSelector = ReorderableDndHandlerSelector;","\"use strict\";\n\nexports.__esModule = true;\nexports.ReorderableAfterReordering = void 0;\n\nvar _aureliaTemplating = require(\"aurelia-templating\");\n\nvar _dec, _class;\n\n//Placeholder attribute to prohibit use of this attribute name in other places\nvar ReorderableAfterReordering = (_dec = (0, _aureliaTemplating.customAttribute)('reorderable-after-reordering'), _dec(_class = function ReorderableAfterReordering() {}) || _class);\nexports.ReorderableAfterReordering = ReorderableAfterReordering;","(function ($) {\n  \"use strict\";\n\n  var defaultOptions = {\n    tagClass: function(item) {\n      return 'label label-info';\n    },\n    itemValue: function(item) {\n      return item ? item.toString() : item;\n    },\n    itemText: function(item) {\n      return this.itemValue(item);\n    },\n    itemTitle: function(item) {\n      return null;\n    },\n    freeInput: true,\n    addOnBlur: true,\n    maxTags: undefined,\n    maxChars: undefined,\n    confirmKeys: [13, 44],\n    delimiter: ',',\n    delimiterRegex: null,\n    cancelConfirmKeysOnEmpty: false,\n    onTagExists: function(item, $tag) {\n      $tag.hide().fadeIn();\n    },\n    trimValue: false,\n    allowDuplicates: false\n  };\n\n  /**\n   * Constructor function\n   */\n  function TagsInput(element, options) {\n    this.isInit = true;\n    this.itemsArray = [];\n\n    this.$element = $(element);\n    this.$element.hide();\n\n    this.isSelect = (element.tagName === 'SELECT');\n    this.multiple = (this.isSelect && element.hasAttribute('multiple'));\n    this.objectItems = options && options.itemValue;\n    this.placeholderText = element.hasAttribute('placeholder') ? this.$element.attr('placeholder') : '';\n    this.inputSize = Math.max(1, this.placeholderText.length);\n\n    this.$container = $('<div class=\"bootstrap-tagsinput\"></div>');\n    this.$input = $('<input type=\"text\" placeholder=\"' + this.placeholderText + '\"/>').appendTo(this.$container);\n\n    this.$element.before(this.$container);\n\n    this.build(options);\n    this.isInit = false;\n  }\n\n  TagsInput.prototype = {\n    constructor: TagsInput,\n\n    /**\n     * Adds the given item as a new tag. Pass true to dontPushVal to prevent\n     * updating the elements val()\n     */\n    add: function(item, dontPushVal, options) {\n      var self = this;\n\n      if (self.options.maxTags && self.itemsArray.length >= self.options.maxTags)\n        return;\n\n      // Ignore falsey values, except false\n      if (item !== false && !item)\n        return;\n\n      // Trim value\n      if (typeof item === \"string\" && self.options.trimValue) {\n        item = $.trim(item);\n      }\n\n      // Throw an error when trying to add an object while the itemValue option was not set\n      if (typeof item === \"object\" && !self.objectItems)\n        throw(\"Can't add objects when itemValue option is not set\");\n\n      // Ignore strings only containg whitespace\n      if (item.toString().match(/^\\s*$/))\n        return;\n\n      // If SELECT but not multiple, remove current tag\n      if (self.isSelect && !self.multiple && self.itemsArray.length > 0)\n        self.remove(self.itemsArray[0]);\n\n      if (typeof item === \"string\" && this.$element[0].tagName === 'INPUT') {\n        var delimiter = (self.options.delimiterRegex) ? self.options.delimiterRegex : self.options.delimiter;\n        var items = item.split(delimiter);\n        if (items.length > 1) {\n          for (var i = 0; i < items.length; i++) {\n            this.add(items[i], true);\n          }\n\n          if (!dontPushVal)\n            self.pushVal();\n          return;\n        }\n      }\n\n      var itemValue = self.options.itemValue(item),\n          itemText = self.options.itemText(item),\n          tagClass = self.options.tagClass(item),\n          itemTitle = self.options.itemTitle(item);\n\n      // Ignore items allready added\n      var existing = $.grep(self.itemsArray, function(item) { return self.options.itemValue(item) === itemValue; } )[0];\n      if (existing && !self.options.allowDuplicates) {\n        // Invoke onTagExists\n        if (self.options.onTagExists) {\n          var $existingTag = $(\".tag\", self.$container).filter(function() { return $(this).data(\"item\") === existing; });\n          self.options.onTagExists(item, $existingTag);\n        }\n        return;\n      }\n\n      // if length greater than limit\n      if (self.items().toString().length + item.length + 1 > self.options.maxInputLength)\n        return;\n\n      // raise beforeItemAdd arg\n      var beforeItemAddEvent = $.Event('beforeItemAdd', { item: item, cancel: false, options: options});\n      self.$element.trigger(beforeItemAddEvent);\n      if (beforeItemAddEvent.cancel)\n        return;\n\n      // register item in internal array and map\n      self.itemsArray.push(item);\n\n      // add a tag element\n\n      var $tag = $('<span class=\"tag ' + htmlEncode(tagClass) + (itemTitle !== null ? ('\" title=\"' + itemTitle) : '') + '\">' + htmlEncode(itemText) + '<span data-role=\"remove\"></span></span>');\n      $tag.data('item', item);\n      self.findInputWrapper().before($tag);\n      $tag.after(' ');\n\n      // Check to see if the tag exists in its raw or uri-encoded form\n      var optionExists = (\n        $('option[value=\"' + encodeURIComponent(itemValue) + '\"]', self.$element).length ||\n        $('option[value=\"' + htmlEncode(itemValue) + '\"]', self.$element).length\n      );\n\n      // add <option /> if item represents a value not present in one of the <select />'s options\n      if (self.isSelect && !optionExists) {\n        var $option = $('<option selected>' + htmlEncode(itemText) + '</option>');\n        $option.data('item', item);\n        $option.attr('value', itemValue);\n        self.$element.append($option);\n      }\n\n      if (!dontPushVal)\n        self.pushVal();\n\n      // Add class when reached maxTags\n      if (self.options.maxTags === self.itemsArray.length || self.items().toString().length === self.options.maxInputLength)\n        self.$container.addClass('bootstrap-tagsinput-max');\n\n      // If using typeahead, once the tag has been added, clear the typeahead value so it does not stick around in the input.\n      if ($('.typeahead, .twitter-typeahead', self.$container).length) {\n        self.$input.typeahead('val', '');\n      }\n\n      if (this.isInit) {\n        self.$element.trigger($.Event('itemAddedOnInit', { item: item, options: options }));\n      } else {\n        self.$element.trigger($.Event('itemAdded', { item: item, options: options }));\n      }\n    },\n\n    /**\n     * Removes the given item. Pass true to dontPushVal to prevent updating the\n     * elements val()\n     */\n    remove: function(item, dontPushVal, options) {\n      var self = this;\n\n      if (self.objectItems) {\n        if (typeof item === \"object\")\n          item = $.grep(self.itemsArray, function(other) { return self.options.itemValue(other) ==  self.options.itemValue(item); } );\n        else\n          item = $.grep(self.itemsArray, function(other) { return self.options.itemValue(other) ==  item; } );\n\n        item = item[item.length-1];\n      }\n\n      if (item) {\n        var beforeItemRemoveEvent = $.Event('beforeItemRemove', { item: item, cancel: false, options: options });\n        self.$element.trigger(beforeItemRemoveEvent);\n        if (beforeItemRemoveEvent.cancel)\n          return;\n\n        $('.tag', self.$container).filter(function() { return $(this).data('item') === item; }).remove();\n        $('option', self.$element).filter(function() { return $(this).data('item') === item; }).remove();\n        if($.inArray(item, self.itemsArray) !== -1)\n          self.itemsArray.splice($.inArray(item, self.itemsArray), 1);\n      }\n\n      if (!dontPushVal)\n        self.pushVal();\n\n      // Remove class when reached maxTags\n      if (self.options.maxTags > self.itemsArray.length)\n        self.$container.removeClass('bootstrap-tagsinput-max');\n\n      self.$element.trigger($.Event('itemRemoved',  { item: item, options: options }));\n    },\n\n    /**\n     * Removes all items\n     */\n    removeAll: function() {\n      var self = this;\n\n      $('.tag', self.$container).remove();\n      $('option', self.$element).remove();\n\n      while(self.itemsArray.length > 0)\n        self.itemsArray.pop();\n\n      self.pushVal();\n    },\n\n    /**\n     * Refreshes the tags so they match the text/value of their corresponding\n     * item.\n     */\n    refresh: function() {\n      var self = this;\n      $('.tag', self.$container).each(function() {\n        var $tag = $(this),\n            item = $tag.data('item'),\n            itemValue = self.options.itemValue(item),\n            itemText = self.options.itemText(item),\n            tagClass = self.options.tagClass(item);\n\n          // Update tag's class and inner text\n          $tag.attr('class', null);\n          $tag.addClass('tag ' + htmlEncode(tagClass));\n          $tag.contents().filter(function() {\n            return this.nodeType == 3;\n          })[0].nodeValue = htmlEncode(itemText);\n\n          if (self.isSelect) {\n            var option = $('option', self.$element).filter(function() { return $(this).data('item') === item; });\n            option.attr('value', itemValue);\n          }\n      });\n    },\n\n    /**\n     * Returns the items added as tags\n     */\n    items: function() {\n      return this.itemsArray;\n    },\n\n    /**\n     * Assembly value by retrieving the value of each item, and set it on the\n     * element.\n     */\n    pushVal: function() {\n      var self = this,\n          val = $.map(self.items(), function(item) {\n            return self.options.itemValue(item).toString();\n          });\n\n      self.$element.val(val, true).trigger('change');\n    },\n\n    /**\n     * Initializes the tags input behaviour on the element\n     */\n    build: function(options) {\n      var self = this;\n\n      self.options = $.extend({}, defaultOptions, options);\n      // When itemValue is set, freeInput should always be false\n      if (self.objectItems)\n        self.options.freeInput = false;\n\n      makeOptionItemFunction(self.options, 'itemValue');\n      makeOptionItemFunction(self.options, 'itemText');\n      makeOptionFunction(self.options, 'tagClass');\n\n      // Typeahead Bootstrap version 2.3.2\n      if (self.options.typeahead) {\n        var typeahead = self.options.typeahead || {};\n\n        makeOptionFunction(typeahead, 'source');\n\n        self.$input.typeahead($.extend({}, typeahead, {\n          source: function (query, process) {\n            function processItems(items) {\n              var texts = [];\n\n              for (var i = 0; i < items.length; i++) {\n                var text = self.options.itemText(items[i]);\n                map[text] = items[i];\n                texts.push(text);\n              }\n              process(texts);\n            }\n\n            this.map = {};\n            var map = this.map,\n                data = typeahead.source(query);\n\n            if ($.isFunction(data.success)) {\n              // support for Angular callbacks\n              data.success(processItems);\n            } else if ($.isFunction(data.then)) {\n              // support for Angular promises\n              data.then(processItems);\n            } else {\n              // support for functions and jquery promises\n              $.when(data)\n               .then(processItems);\n            }\n          },\n          updater: function (text) {\n            self.add(this.map[text]);\n            return this.map[text];\n          },\n          matcher: function (text) {\n            return (text.toLowerCase().indexOf(this.query.trim().toLowerCase()) !== -1);\n          },\n          sorter: function (texts) {\n            return texts.sort();\n          },\n          highlighter: function (text) {\n            var regex = new RegExp( '(' + this.query + ')', 'gi' );\n            return text.replace( regex, \"<strong>$1</strong>\" );\n          }\n        }));\n      }\n\n      // typeahead.js\n      if (self.options.typeaheadjs) {\n          var typeaheadConfig = null;\n          var typeaheadDatasets = {};\n\n          // Determine if main configurations were passed or simply a dataset\n          var typeaheadjs = self.options.typeaheadjs;\n          if ($.isArray(typeaheadjs)) {\n            typeaheadConfig = typeaheadjs[0];\n            typeaheadDatasets = typeaheadjs[1];\n          } else {\n            typeaheadDatasets = typeaheadjs;\n          }\n\n          self.$input.typeahead(typeaheadConfig, typeaheadDatasets).on('typeahead:selected', $.proxy(function (obj, datum) {\n            if (typeaheadDatasets.valueKey)\n              self.add(datum[typeaheadDatasets.valueKey]);\n            else\n              self.add(datum);\n            self.$input.typeahead('val', '');\n          }, self));\n      }\n\n      self.$container.on('click', $.proxy(function(event) {\n        if (! self.$element.attr('disabled')) {\n          self.$input.removeAttr('disabled');\n        }\n        self.$input.focus();\n      }, self));\n\n        if (self.options.addOnBlur && self.options.freeInput) {\n          self.$input.on('focusout', $.proxy(function(event) {\n              // HACK: only process on focusout when no typeahead opened, to\n              //       avoid adding the typeahead text as tag\n              if ($('.typeahead, .twitter-typeahead', self.$container).length === 0) {\n                self.add(self.$input.val());\n                self.$input.val('');\n              }\n          }, self));\n        }\n\n\n      self.$container.on('keydown', 'input', $.proxy(function(event) {\n        var $input = $(event.target),\n            $inputWrapper = self.findInputWrapper();\n\n        if (self.$element.attr('disabled')) {\n          self.$input.attr('disabled', 'disabled');\n          return;\n        }\n\n        switch (event.which) {\n          // BACKSPACE\n          case 8:\n            if (doGetCaretPosition($input[0]) === 0) {\n              var prev = $inputWrapper.prev();\n              if (prev.length) {\n                self.remove(prev.data('item'));\n              }\n            }\n            break;\n\n          // DELETE\n          case 46:\n            if (doGetCaretPosition($input[0]) === 0) {\n              var next = $inputWrapper.next();\n              if (next.length) {\n                self.remove(next.data('item'));\n              }\n            }\n            break;\n\n          // LEFT ARROW\n          case 37:\n            // Try to move the input before the previous tag\n            var $prevTag = $inputWrapper.prev();\n            if ($input.val().length === 0 && $prevTag[0]) {\n              $prevTag.before($inputWrapper);\n              $input.focus();\n            }\n            break;\n          // RIGHT ARROW\n          case 39:\n            // Try to move the input after the next tag\n            var $nextTag = $inputWrapper.next();\n            if ($input.val().length === 0 && $nextTag[0]) {\n              $nextTag.after($inputWrapper);\n              $input.focus();\n            }\n            break;\n         default:\n             // ignore\n         }\n\n        // Reset internal input's size\n        var textLength = $input.val().length,\n            wordSpace = Math.ceil(textLength / 5),\n            size = textLength + wordSpace + 1;\n        $input.attr('size', Math.max(this.inputSize, $input.val().length));\n      }, self));\n\n      self.$container.on('keypress', 'input', $.proxy(function(event) {\n         var $input = $(event.target);\n\n         if (self.$element.attr('disabled')) {\n            self.$input.attr('disabled', 'disabled');\n            return;\n         }\n\n         var text = $input.val(),\n         maxLengthReached = self.options.maxChars && text.length >= self.options.maxChars;\n         if (self.options.freeInput && (keyCombinationInList(event, self.options.confirmKeys) || maxLengthReached)) {\n            // Only attempt to add a tag if there is data in the field\n            if (text.length !== 0) {\n               self.add(maxLengthReached ? text.substr(0, self.options.maxChars) : text);\n               $input.val('');\n            }\n\n            // If the field is empty, let the event triggered fire as usual\n            if (self.options.cancelConfirmKeysOnEmpty === false) {\n                event.preventDefault();\n            }\n         }\n\n         // Reset internal input's size\n         var textLength = $input.val().length,\n            wordSpace = Math.ceil(textLength / 5),\n            size = textLength + wordSpace + 1;\n         $input.attr('size', Math.max(this.inputSize, $input.val().length));\n      }, self));\n\n      // Remove icon clicked\n      self.$container.on('click', '[data-role=remove]', $.proxy(function(event) {\n        if (self.$element.attr('disabled')) {\n          return;\n        }\n        self.remove($(event.target).closest('.tag').data('item'));\n      }, self));\n\n      // Only add existing value as tags when using strings as tags\n      if (self.options.itemValue === defaultOptions.itemValue) {\n        if (self.$element[0].tagName === 'INPUT') {\n            self.add(self.$element.val());\n        } else {\n          $('option', self.$element).each(function() {\n            self.add($(this).attr('value'), true);\n          });\n        }\n      }\n    },\n\n    /**\n     * Removes all tagsinput behaviour and unregsiter all event handlers\n     */\n    destroy: function() {\n      var self = this;\n\n      // Unbind events\n      self.$container.off('keypress', 'input');\n      self.$container.off('click', '[role=remove]');\n\n      self.$container.remove();\n      self.$element.removeData('tagsinput');\n      self.$element.show();\n    },\n\n    /**\n     * Sets focus on the tagsinput\n     */\n    focus: function() {\n      this.$input.focus();\n    },\n\n    /**\n     * Returns the internal input element\n     */\n    input: function() {\n      return this.$input;\n    },\n\n    /**\n     * Returns the element which is wrapped around the internal input. This\n     * is normally the $container, but typeahead.js moves the $input element.\n     */\n    findInputWrapper: function() {\n      var elt = this.$input[0],\n          container = this.$container[0];\n      while(elt && elt.parentNode !== container)\n        elt = elt.parentNode;\n\n      return $(elt);\n    }\n  };\n\n  /**\n   * Register JQuery plugin\n   */\n  $.fn.tagsinput = function(arg1, arg2, arg3) {\n    var results = [];\n\n    this.each(function() {\n      var tagsinput = $(this).data('tagsinput');\n      // Initialize a new tags input\n      if (!tagsinput) {\n          tagsinput = new TagsInput(this, arg1);\n          $(this).data('tagsinput', tagsinput);\n          results.push(tagsinput);\n\n          if (this.tagName === 'SELECT') {\n              $('option', $(this)).attr('selected', 'selected');\n          }\n\n          // Init tags from $(this).val()\n          $(this).val($(this).val());\n      } else if (!arg1 && !arg2) {\n          // tagsinput already exists\n          // no function, trying to init\n          results.push(tagsinput);\n      } else if(tagsinput[arg1] !== undefined) {\n          // Invoke function on existing tags input\n            if(tagsinput[arg1].length === 3 && arg3 !== undefined){\n               var retVal = tagsinput[arg1](arg2, null, arg3);\n            }else{\n               var retVal = tagsinput[arg1](arg2);\n            }\n          if (retVal !== undefined)\n              results.push(retVal);\n      }\n    });\n\n    if ( typeof arg1 == 'string') {\n      // Return the results from the invoked function calls\n      return results.length > 1 ? results : results[0];\n    } else {\n      return results;\n    }\n  };\n\n  $.fn.tagsinput.Constructor = TagsInput;\n\n  /**\n   * Most options support both a string or number as well as a function as\n   * option value. This function makes sure that the option with the given\n   * key in the given options is wrapped in a function\n   */\n  function makeOptionItemFunction(options, key) {\n    if (typeof options[key] !== 'function') {\n      var propertyName = options[key];\n      options[key] = function(item) { return item[propertyName]; };\n    }\n  }\n  function makeOptionFunction(options, key) {\n    if (typeof options[key] !== 'function') {\n      var value = options[key];\n      options[key] = function() { return value; };\n    }\n  }\n  /**\n   * HtmlEncodes the given value\n   */\n  var htmlEncodeContainer = $('<div />');\n  function htmlEncode(value) {\n    if (value) {\n      return htmlEncodeContainer.text(value).html();\n    } else {\n      return '';\n    }\n  }\n\n  /**\n   * Returns the position of the caret in the given input field\n   * http://flightschool.acylt.com/devnotes/caret-position-woes/\n   */\n  function doGetCaretPosition(oField) {\n    var iCaretPos = 0;\n    if (document.selection) {\n      oField.focus ();\n      var oSel = document.selection.createRange();\n      oSel.moveStart ('character', -oField.value.length);\n      iCaretPos = oSel.text.length;\n    } else if (oField.selectionStart || oField.selectionStart == '0') {\n      iCaretPos = oField.selectionStart;\n    }\n    return (iCaretPos);\n  }\n\n  /**\n    * Returns boolean indicates whether user has pressed an expected key combination.\n    * @param object keyPressEvent: JavaScript event object, refer\n    *     http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n    * @param object lookupList: expected key combinations, as in:\n    *     [13, {which: 188, shiftKey: true}]\n    */\n  function keyCombinationInList(keyPressEvent, lookupList) {\n      var found = false;\n      $.each(lookupList, function (index, keyCombination) {\n          if (typeof (keyCombination) === 'number' && keyPressEvent.which === keyCombination) {\n              found = true;\n              return false;\n          }\n\n          if (keyPressEvent.which === keyCombination.which) {\n              var alt = !keyCombination.hasOwnProperty('altKey') || keyPressEvent.altKey === keyCombination.altKey,\n                  shift = !keyCombination.hasOwnProperty('shiftKey') || keyPressEvent.shiftKey === keyCombination.shiftKey,\n                  ctrl = !keyCombination.hasOwnProperty('ctrlKey') || keyPressEvent.ctrlKey === keyCombination.ctrlKey;\n              if (alt && shift && ctrl) {\n                  found = true;\n                  return false;\n              }\n          }\n      });\n\n      return found;\n  }\n\n  /**\n   * Initialize tagsinput behaviour on inputs and selects which have\n   * data-role=tagsinput\n   */\n  $(function() {\n    $(\"input[data-role=tagsinput], select[multiple][data-role=tagsinput]\").tagsinput();\n  });\n})(window.jQuery);\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PickerConfig = undefined;\n\nvar _pickerGlobalOptions = require('./picker-global-options');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PickerConfig = exports.PickerConfig = function PickerConfig() {\n  _classCallCheck(this, PickerConfig);\n\n  this.extra = _pickerGlobalOptions.globalExtraOptions;\n  this.options = _pickerGlobalOptions.globalPickerOptions;\n};","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","module.exports = __webpack_public_path__ + \"765069023a54d18a25042b0f331aeafc.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"3ba7e622415a7edcab22e2562316c30a.svg\";","module.exports = __webpack_public_path__ + \"36a41e3522a394be9408462c7309e688.svg\";","module.exports = __webpack_public_path__ + \"574e88392b4c29c3736f594c30765a51.svg\";","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { User } from \"models/security/user\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { PasswordValidation } from \"models/security/password-validation\";\nimport { UserLoginInfo } from \"models/security/user-login-info\";\nimport { UserExportStatus } from \"models/security/userExportStatus\";\nimport { UserExportStatusResponse } from \"models/security/userExportStatusResponse\";\n\n@autoinject\nexport class UserService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"UserService\");\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"user/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async listArchive(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"user/list-archive\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getAll(): Promise<User[]> {\n    return await this.client.get(\"user\")\n      .then((response: User[]) => {\n        return response;\n      });\n  }\n\n  public async getAllEvaluators(): Promise<User[]> {\n    return await this.client.get(\"user/evaluators\")\n      .then((response: User[]) => {\n        return response;\n      });\n  }\n\n  public async getById(id: number): Promise<User> {\n    return await this.client.getById(\"user\", id)\n      .then((response: User) => {\n        return response;\n      });\n  }\n\n\n  public async create(model: User): Promise<User> {\n    return await this.client.create(\"user\", model)\n      .then((response: User) => {\n        return response;\n      });\n  }\n\n  public async update(model: User): Promise<void> {\n    return await this.client.updateById(\"user\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async changeState(id: number): Promise<void> {\n    return await this.client.post(`user/change-state/${id}`)\n      .then(() => null);\n  }\n\n  public async resendActivationMessage(id: number): Promise<void> {\n    return await this.client.post(`user/resend-activation-message/${id}`)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(\"user\", id)\n      .then(() => null);\n  }  \n\n  public async getLoginInfoById(id: number): Promise<UserLoginInfo> {\n    return await this.client.get(`user/login-info/${id}`)\n      .then((response: UserLoginInfo) => {\n        return response;\n      });\n  }\n\n  public async validate(model: PasswordValidation): Promise<boolean> {\n    return await this.client.post(\"user/validate\", model)\n      .then((response: boolean) => {\n        return response;\n      });\n  }\n\n  public async userRestore(model: User): Promise<void> {\n    return await this.client.updateById(\"user/archive\", model.id, null)\n      .then(() => null);\n  }\n\n  public async generateExport(): Promise<void> {\n    return await this.client.post(\"user/export-excel\")\n      .then(() => null);\n  }\n\n  public async getExportStatus(): Promise<UserExportStatus> {\n    return await this.client.get(\"user/export-status\")\n      .then((response: UserExportStatusResponse) => {\n        return (response && response.status) || UserExportStatus.None;\n      });\n  }\n\n  public async getExportDownloadUrl(): Promise<string> {\n    return await this.client.get(\"user/export-download\")\n      .then((response: { url: string }) => {\n        return (response && response.url) || \"\";\n      });\n  }\n\n}\n","module.exports = __webpack_public_path__ + \"0fee8637329e6a60ac780f2174e5fb35.svg\";","module.exports = __webpack_public_path__ + \"5ddd316b373fd29e6d26a03530ddfda0.svg\";","module.exports = __webpack_public_path__ + \"9345b0cdb316f361125d82cdb91f956a.svg\";",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Check if typed arrays are supported\n\t    if (typeof ArrayBuffer != 'function') {\n\t        return;\n\t    }\n\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\n\t    // Reference original init\n\t    var superInit = WordArray.init;\n\n\t    // Augment WordArray.init to handle typed arrays\n\t    var subInit = WordArray.init = function (typedArray) {\n\t        // Convert buffers to uint8\n\t        if (typedArray instanceof ArrayBuffer) {\n\t            typedArray = new Uint8Array(typedArray);\n\t        }\n\n\t        // Convert other array views to uint8\n\t        if (\n\t            typedArray instanceof Int8Array ||\n\t            (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t            typedArray instanceof Int16Array ||\n\t            typedArray instanceof Uint16Array ||\n\t            typedArray instanceof Int32Array ||\n\t            typedArray instanceof Uint32Array ||\n\t            typedArray instanceof Float32Array ||\n\t            typedArray instanceof Float64Array\n\t        ) {\n\t            typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t        }\n\n\t        // Handle Uint8Array\n\t        if (typedArray instanceof Uint8Array) {\n\t            // Shortcut\n\t            var typedArrayByteLength = typedArray.byteLength;\n\n\t            // Extract bytes\n\t            var words = [];\n\t            for (var i = 0; i < typedArrayByteLength; i++) {\n\t                words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t            }\n\n\t            // Initialize this word array\n\t            superInit.call(this, words, typedArrayByteLength);\n\t        } else {\n\t            // Else call normal init\n\t            superInit.apply(this, arguments);\n\t        }\n\t    };\n\n\t    subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_enc = C.enc;\n\n\t    /**\n\t     * UTF-16 BE encoding strategy.\n\t     */\n\t    var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t        /**\n\t         * Converts a word array to a UTF-16 BE string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The UTF-16 BE string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var utf16Chars = [];\n\t            for (var i = 0; i < sigBytes; i += 2) {\n\t                var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t                utf16Chars.push(String.fromCharCode(codePoint));\n\t            }\n\n\t            return utf16Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a UTF-16 BE string to a word array.\n\t         *\n\t         * @param {string} utf16Str The UTF-16 BE string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t         */\n\t        parse: function (utf16Str) {\n\t            // Shortcut\n\t            var utf16StrLength = utf16Str.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < utf16StrLength; i++) {\n\t                words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t            }\n\n\t            return WordArray.create(words, utf16StrLength * 2);\n\t        }\n\t    };\n\n\t    /**\n\t     * UTF-16 LE encoding strategy.\n\t     */\n\t    C_enc.Utf16LE = {\n\t        /**\n\t         * Converts a word array to a UTF-16 LE string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The UTF-16 LE string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var utf16Chars = [];\n\t            for (var i = 0; i < sigBytes; i += 2) {\n\t                var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t                utf16Chars.push(String.fromCharCode(codePoint));\n\t            }\n\n\t            return utf16Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a UTF-16 LE string to a word array.\n\t         *\n\t         * @param {string} utf16Str The UTF-16 LE string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t         */\n\t        parse: function (utf16Str) {\n\t            // Shortcut\n\t            var utf16StrLength = utf16Str.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < utf16StrLength; i++) {\n\t                words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t            }\n\n\t            return WordArray.create(words, utf16StrLength * 2);\n\t        }\n\t    };\n\n\t    function swapEndian(word) {\n\t        return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t    }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_enc = C.enc;\n\n\t    /**\n\t     * Base64url encoding strategy.\n\t     */\n\t    var Base64url = C_enc.Base64url = {\n\t        /**\n\t         * Converts a word array to a Base64url string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @param {boolean} urlSafe Whether to use url safe\n\t         *\n\t         * @return {string} The Base64url string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray, urlSafe=true) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\t            var map = urlSafe ? this._safe_map : this._map;\n\n\t            // Clamp excess bits\n\t            wordArray.clamp();\n\n\t            // Convert\n\t            var base64Chars = [];\n\t            for (var i = 0; i < sigBytes; i += 3) {\n\t                var byte1 = (words[i >>> 2]       >>> (24 - (i % 4) * 8))       & 0xff;\n\t                var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t                var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t                var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t                for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t                    base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t                }\n\t            }\n\n\t            // Add padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                while (base64Chars.length % 4) {\n\t                    base64Chars.push(paddingChar);\n\t                }\n\t            }\n\n\t            return base64Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Base64url string to a word array.\n\t         *\n\t         * @param {string} base64Str The Base64url string.\n\t         *\n\t         * @param {boolean} urlSafe Whether to use url safe\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t         */\n\t        parse: function (base64Str, urlSafe=true) {\n\t            // Shortcuts\n\t            var base64StrLength = base64Str.length;\n\t            var map = urlSafe ? this._safe_map : this._map;\n\t            var reverseMap = this._reverseMap;\n\n\t            if (!reverseMap) {\n\t                reverseMap = this._reverseMap = [];\n\t                for (var j = 0; j < map.length; j++) {\n\t                    reverseMap[map.charCodeAt(j)] = j;\n\t                }\n\t            }\n\n\t            // Ignore padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                var paddingIndex = base64Str.indexOf(paddingChar);\n\t                if (paddingIndex !== -1) {\n\t                    base64StrLength = paddingIndex;\n\t                }\n\t            }\n\n\t            // Convert\n\t            return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t        },\n\n\t        _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t        _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t    };\n\n\t    function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t        var words = [];\n\t        var nBytes = 0;\n\t        for (var i = 0; i < base64StrLength; i++) {\n\t            if (i % 4) {\n\t                var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t                var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t                var bitsCombined = bits1 | bits2;\n\t                words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t                nBytes++;\n\t            }\n\t        }\n\t        return WordArray.create(words, nBytes);\n\t    }\n\t}());\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_algo = C.algo;\n\t    var SHA256 = C_algo.SHA256;\n\n\t    /**\n\t     * SHA-224 hash algorithm.\n\t     */\n\t    var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init([\n\t                0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t                0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t            ]);\n\t        },\n\n\t        _doFinalize: function () {\n\t            var hash = SHA256._doFinalize.call(this);\n\n\t            hash.sigBytes -= 4;\n\n\t            return hash;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA224('message');\n\t     *     var hash = CryptoJS.SHA224(wordArray);\n\t     */\n\t    C.SHA224 = SHA256._createHelper(SHA224);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA224(message, key);\n\t     */\n\t    C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_x64 = C.x64;\n\t    var X64Word = C_x64.Word;\n\t    var X64WordArray = C_x64.WordArray;\n\t    var C_algo = C.algo;\n\t    var SHA512 = C_algo.SHA512;\n\n\t    /**\n\t     * SHA-384 hash algorithm.\n\t     */\n\t    var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t        _doReset: function () {\n\t            this._hash = new X64WordArray.init([\n\t                new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t                new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t                new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t                new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t            ]);\n\t        },\n\n\t        _doFinalize: function () {\n\t            var hash = SHA512._doFinalize.call(this);\n\n\t            hash.sigBytes -= 16;\n\n\t            return hash;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA384('message');\n\t     *     var hash = CryptoJS.SHA384(wordArray);\n\t     */\n\t    C.SHA384 = SHA512._createHelper(SHA384);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA384(message, key);\n\t     */\n\t    C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_x64 = C.x64;\n\t    var X64Word = C_x64.Word;\n\t    var C_algo = C.algo;\n\n\t    // Constants tables\n\t    var RHO_OFFSETS = [];\n\t    var PI_INDEXES  = [];\n\t    var ROUND_CONSTANTS = [];\n\n\t    // Compute Constants\n\t    (function () {\n\t        // Compute rho offset constants\n\t        var x = 1, y = 0;\n\t        for (var t = 0; t < 24; t++) {\n\t            RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t            var newX = y % 5;\n\t            var newY = (2 * x + 3 * y) % 5;\n\t            x = newX;\n\t            y = newY;\n\t        }\n\n\t        // Compute pi index constants\n\t        for (var x = 0; x < 5; x++) {\n\t            for (var y = 0; y < 5; y++) {\n\t                PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t            }\n\t        }\n\n\t        // Compute round constants\n\t        var LFSR = 0x01;\n\t        for (var i = 0; i < 24; i++) {\n\t            var roundConstantMsw = 0;\n\t            var roundConstantLsw = 0;\n\n\t            for (var j = 0; j < 7; j++) {\n\t                if (LFSR & 0x01) {\n\t                    var bitPosition = (1 << j) - 1;\n\t                    if (bitPosition < 32) {\n\t                        roundConstantLsw ^= 1 << bitPosition;\n\t                    } else /* if (bitPosition >= 32) */ {\n\t                        roundConstantMsw ^= 1 << (bitPosition - 32);\n\t                    }\n\t                }\n\n\t                // Compute next LFSR\n\t                if (LFSR & 0x80) {\n\t                    // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t                    LFSR = (LFSR << 1) ^ 0x71;\n\t                } else {\n\t                    LFSR <<= 1;\n\t                }\n\t            }\n\n\t            ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t        }\n\t    }());\n\n\t    // Reusable objects for temporary values\n\t    var T = [];\n\t    (function () {\n\t        for (var i = 0; i < 25; i++) {\n\t            T[i] = X64Word.create();\n\t        }\n\t    }());\n\n\t    /**\n\t     * SHA-3 hash algorithm.\n\t     */\n\t    var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {number} outputLength\n\t         *   The desired number of bits in the output hash.\n\t         *   Only values permitted are: 224, 256, 384, 512.\n\t         *   Default: 512\n\t         */\n\t        cfg: Hasher.cfg.extend({\n\t            outputLength: 512\n\t        }),\n\n\t        _doReset: function () {\n\t            var state = this._state = []\n\t            for (var i = 0; i < 25; i++) {\n\t                state[i] = new X64Word.init();\n\t            }\n\n\t            this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcuts\n\t            var state = this._state;\n\t            var nBlockSizeLanes = this.blockSize / 2;\n\n\t            // Absorb\n\t            for (var i = 0; i < nBlockSizeLanes; i++) {\n\t                // Shortcuts\n\t                var M2i  = M[offset + 2 * i];\n\t                var M2i1 = M[offset + 2 * i + 1];\n\n\t                // Swap endian\n\t                M2i = (\n\t                    (((M2i << 8)  | (M2i >>> 24)) & 0x00ff00ff) |\n\t                    (((M2i << 24) | (M2i >>> 8))  & 0xff00ff00)\n\t                );\n\t                M2i1 = (\n\t                    (((M2i1 << 8)  | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t                    (((M2i1 << 24) | (M2i1 >>> 8))  & 0xff00ff00)\n\t                );\n\n\t                // Absorb message into state\n\t                var lane = state[i];\n\t                lane.high ^= M2i1;\n\t                lane.low  ^= M2i;\n\t            }\n\n\t            // Rounds\n\t            for (var round = 0; round < 24; round++) {\n\t                // Theta\n\t                for (var x = 0; x < 5; x++) {\n\t                    // Mix column lanes\n\t                    var tMsw = 0, tLsw = 0;\n\t                    for (var y = 0; y < 5; y++) {\n\t                        var lane = state[x + 5 * y];\n\t                        tMsw ^= lane.high;\n\t                        tLsw ^= lane.low;\n\t                    }\n\n\t                    // Temporary values\n\t                    var Tx = T[x];\n\t                    Tx.high = tMsw;\n\t                    Tx.low  = tLsw;\n\t                }\n\t                for (var x = 0; x < 5; x++) {\n\t                    // Shortcuts\n\t                    var Tx4 = T[(x + 4) % 5];\n\t                    var Tx1 = T[(x + 1) % 5];\n\t                    var Tx1Msw = Tx1.high;\n\t                    var Tx1Lsw = Tx1.low;\n\n\t                    // Mix surrounding columns\n\t                    var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t                    var tLsw = Tx4.low  ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t                    for (var y = 0; y < 5; y++) {\n\t                        var lane = state[x + 5 * y];\n\t                        lane.high ^= tMsw;\n\t                        lane.low  ^= tLsw;\n\t                    }\n\t                }\n\n\t                // Rho Pi\n\t                for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t                    var tMsw;\n\t                    var tLsw;\n\n\t                    // Shortcuts\n\t                    var lane = state[laneIndex];\n\t                    var laneMsw = lane.high;\n\t                    var laneLsw = lane.low;\n\t                    var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t                    // Rotate lanes\n\t                    if (rhoOffset < 32) {\n\t                        tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t                        tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t                    } else /* if (rhoOffset >= 32) */ {\n\t                        tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t                        tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t                    }\n\n\t                    // Transpose lanes\n\t                    var TPiLane = T[PI_INDEXES[laneIndex]];\n\t                    TPiLane.high = tMsw;\n\t                    TPiLane.low  = tLsw;\n\t                }\n\n\t                // Rho pi at x = y = 0\n\t                var T0 = T[0];\n\t                var state0 = state[0];\n\t                T0.high = state0.high;\n\t                T0.low  = state0.low;\n\n\t                // Chi\n\t                for (var x = 0; x < 5; x++) {\n\t                    for (var y = 0; y < 5; y++) {\n\t                        // Shortcuts\n\t                        var laneIndex = x + 5 * y;\n\t                        var lane = state[laneIndex];\n\t                        var TLane = T[laneIndex];\n\t                        var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t                        var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t                        // Mix rows\n\t                        lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t                        lane.low  = TLane.low  ^ (~Tx1Lane.low  & Tx2Lane.low);\n\t                    }\n\t                }\n\n\t                // Iota\n\t                var lane = state[0];\n\t                var roundConstant = ROUND_CONSTANTS[round];\n\t                lane.high ^= roundConstant.high;\n\t                lane.low  ^= roundConstant.low;\n\t            }\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\t            var blockSizeBits = this.blockSize * 32;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t            dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Shortcuts\n\t            var state = this._state;\n\t            var outputLengthBytes = this.cfg.outputLength / 8;\n\t            var outputLengthLanes = outputLengthBytes / 8;\n\n\t            // Squeeze\n\t            var hashWords = [];\n\t            for (var i = 0; i < outputLengthLanes; i++) {\n\t                // Shortcuts\n\t                var lane = state[i];\n\t                var laneMsw = lane.high;\n\t                var laneLsw = lane.low;\n\n\t                // Swap endian\n\t                laneMsw = (\n\t                    (((laneMsw << 8)  | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t                    (((laneMsw << 24) | (laneMsw >>> 8))  & 0xff00ff00)\n\t                );\n\t                laneLsw = (\n\t                    (((laneLsw << 8)  | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t                    (((laneLsw << 24) | (laneLsw >>> 8))  & 0xff00ff00)\n\t                );\n\n\t                // Squeeze state to retrieve hash\n\t                hashWords.push(laneLsw);\n\t                hashWords.push(laneMsw);\n\t            }\n\n\t            // Return final computed hash\n\t            return new WordArray.init(hashWords, outputLengthBytes);\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\n\t            var state = clone._state = this._state.slice(0);\n\t            for (var i = 0; i < 25; i++) {\n\t                state[i] = state[i].clone();\n\t            }\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA3('message');\n\t     *     var hash = CryptoJS.SHA3(wordArray);\n\t     */\n\t    C.SHA3 = Hasher._createHelper(SHA3);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA3(message, key);\n\t     */\n\t    C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));","import { ActivationTypeExternal } from './activationTypeExternal';\nimport { ActivationQuestionaryStatus } from './activationQuestionaryStatus';\nimport { NoDiscType } from './../questionaries/noDiscType';\nimport { ActivationType } from './activationType';\nimport { PositionActivationType } from './../test-position/positionActivationType';\nimport { QuestionaryWay } from 'models/test-person/questionaryWay';\nimport { PersonActivationType } from \"./personActivationType\";\nimport { WhoCanSeeReport } from \"./whoCanSeeReport\";\nimport { CompanyCompetence } from 'models/test-core/competences/company-competence';\nimport { Test } from './../test-perfiltic/test';\nimport { QuestionaryLanguage } from 'models/questionaries/questionaryLanguage';\nimport { ActivationThematicAssociate } from './activationThematicAssociate';\n\n\n\nexport class Activation {\n  id: number;\n  companyId: number;\n\n  activationType: ActivationType;\n\n  personId: number;\n  personActivationType: PersonActivationType;\n\n  positionId: number;\n  positionActivationType: PositionActivationType;\n\n  organizationId: number;\n  organizationActivationType: PersonActivationType;\n\n  questionaryWay: QuestionaryWay;\n  isConfidentialTest?: boolean;\n  isAnonymous?: boolean;\n  whoCanSeeReport: WhoCanSeeReport;\n  invitationExpireDate: Date;\n  additionalText: string;\n  applicationDate: Date;\n\n  questionaryGroupId: number;\n  reportTemplateId: number;\n\n  questionaryId: number;\n  questionaryName: string;\n  languageId: number;\n\n  companyCompetenceIds: number[] = [];\n  companyCompetences: CompanyCompetence[] = [];\n\n  teamId: number;\n  noDiscType: NoDiscType;\n  reportId: number;\n  engineersTests: Test[] = [];\n  questionaryIds: QuestionaryLanguage[] = [];\n\n  activationQuestionaryStatus: ActivationQuestionaryStatus;\n  isSelectable?: boolean;\n\n  isExternalBukActivationTest?: boolean;\n  nameProcessBuk?: string;\n  activationTypeExternal?: ActivationTypeExternal;\n  processBukId?: number;\n  processStageBukId?: number; \n  activationThematicAssociates :ActivationThematicAssociate[] = [];\n\n}\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t    - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t    - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Constants table\n\t    var _zl = WordArray.create([\n\t        0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,\n\t        7,  4, 13,  1, 10,  6, 15,  3, 12,  0,  9,  5,  2, 14, 11,  8,\n\t        3, 10, 14,  4,  9, 15,  8,  1,  2,  7,  0,  6, 13, 11,  5, 12,\n\t        1,  9, 11, 10,  0,  8, 12,  4, 13,  3,  7, 15, 14,  5,  6,  2,\n\t        4,  0,  5,  9,  7, 12,  2, 10, 14,  1,  3,  8, 11,  6, 15, 13]);\n\t    var _zr = WordArray.create([\n\t        5, 14,  7,  0,  9,  2, 11,  4, 13,  6, 15,  8,  1, 10,  3, 12,\n\t        6, 11,  3,  7,  0, 13,  5, 10, 14, 15,  8, 12,  4,  9,  1,  2,\n\t        15,  5,  1,  3,  7, 14,  6,  9, 11,  8, 12,  2, 10,  0,  4, 13,\n\t        8,  6,  4,  1,  3, 11, 15,  0,  5, 12,  2, 13,  9,  7, 10, 14,\n\t        12, 15, 10,  4,  1,  5,  8,  7,  6,  2, 13, 14,  0,  3,  9, 11]);\n\t    var _sl = WordArray.create([\n\t         11, 14, 15, 12,  5,  8,  7,  9, 11, 13, 14, 15,  6,  7,  9,  8,\n\t        7, 6,   8, 13, 11,  9,  7, 15,  7, 12, 15,  9, 11,  7, 13, 12,\n\t        11, 13,  6,  7, 14,  9, 13, 15, 14,  8, 13,  6,  5, 12,  7,  5,\n\t          11, 12, 14, 15, 14, 15,  9,  8,  9, 14,  5,  6,  8,  6,  5, 12,\n\t        9, 15,  5, 11,  6,  8, 13, 12,  5, 12, 13, 14, 11,  8,  5,  6 ]);\n\t    var _sr = WordArray.create([\n\t        8,  9,  9, 11, 13, 15, 15,  5,  7,  7,  8, 11, 14, 14, 12,  6,\n\t        9, 13, 15,  7, 12,  8,  9, 11,  7,  7, 12,  7,  6, 15, 13, 11,\n\t        9,  7, 15, 11,  8,  6,  6, 14, 12, 13,  5, 14, 13, 13,  7,  5,\n\t        15,  5,  8, 11, 14, 14,  6, 14,  6,  9, 12,  9, 12,  5, 15,  8,\n\t        8,  5, 12,  9, 12,  5, 14,  6,  8, 13,  6,  5, 15, 13, 11, 11 ]);\n\n\t    var _hl =  WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t    var _hr =  WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t    /**\n\t     * RIPEMD160 hash algorithm.\n\t     */\n\t    var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash  = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\n\t            // Swap endian\n\t            for (var i = 0; i < 16; i++) {\n\t                // Shortcuts\n\t                var offset_i = offset + i;\n\t                var M_offset_i = M[offset_i];\n\n\t                // Swap\n\t                M[offset_i] = (\n\t                    (((M_offset_i << 8)  | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t                    (((M_offset_i << 24) | (M_offset_i >>> 8))  & 0xff00ff00)\n\t                );\n\t            }\n\t            // Shortcut\n\t            var H  = this._hash.words;\n\t            var hl = _hl.words;\n\t            var hr = _hr.words;\n\t            var zl = _zl.words;\n\t            var zr = _zr.words;\n\t            var sl = _sl.words;\n\t            var sr = _sr.words;\n\n\t            // Working variables\n\t            var al, bl, cl, dl, el;\n\t            var ar, br, cr, dr, er;\n\n\t            ar = al = H[0];\n\t            br = bl = H[1];\n\t            cr = cl = H[2];\n\t            dr = dl = H[3];\n\t            er = el = H[4];\n\t            // Computation\n\t            var t;\n\t            for (var i = 0; i < 80; i += 1) {\n\t                t = (al +  M[offset+zl[i]])|0;\n\t                if (i<16){\n\t\t            t +=  f1(bl,cl,dl) + hl[0];\n\t                } else if (i<32) {\n\t\t            t +=  f2(bl,cl,dl) + hl[1];\n\t                } else if (i<48) {\n\t\t            t +=  f3(bl,cl,dl) + hl[2];\n\t                } else if (i<64) {\n\t\t            t +=  f4(bl,cl,dl) + hl[3];\n\t                } else {// if (i<80) {\n\t\t            t +=  f5(bl,cl,dl) + hl[4];\n\t                }\n\t                t = t|0;\n\t                t =  rotl(t,sl[i]);\n\t                t = (t+el)|0;\n\t                al = el;\n\t                el = dl;\n\t                dl = rotl(cl, 10);\n\t                cl = bl;\n\t                bl = t;\n\n\t                t = (ar + M[offset+zr[i]])|0;\n\t                if (i<16){\n\t\t            t +=  f5(br,cr,dr) + hr[0];\n\t                } else if (i<32) {\n\t\t            t +=  f4(br,cr,dr) + hr[1];\n\t                } else if (i<48) {\n\t\t            t +=  f3(br,cr,dr) + hr[2];\n\t                } else if (i<64) {\n\t\t            t +=  f2(br,cr,dr) + hr[3];\n\t                } else {// if (i<80) {\n\t\t            t +=  f1(br,cr,dr) + hr[4];\n\t                }\n\t                t = t|0;\n\t                t =  rotl(t,sr[i]) ;\n\t                t = (t+er)|0;\n\t                ar = er;\n\t                er = dr;\n\t                dr = rotl(cr, 10);\n\t                cr = br;\n\t                br = t;\n\t            }\n\t            // Intermediate hash value\n\t            t    = (H[1] + cl + dr)|0;\n\t            H[1] = (H[2] + dl + er)|0;\n\t            H[2] = (H[3] + el + ar)|0;\n\t            H[3] = (H[4] + al + br)|0;\n\t            H[4] = (H[0] + bl + cr)|0;\n\t            H[0] =  t;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t                (((nBitsTotal << 8)  | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t                (((nBitsTotal << 24) | (nBitsTotal >>> 8))  & 0xff00ff00)\n\t            );\n\t            data.sigBytes = (dataWords.length + 1) * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Shortcuts\n\t            var hash = this._hash;\n\t            var H = hash.words;\n\n\t            // Swap endian\n\t            for (var i = 0; i < 5; i++) {\n\t                // Shortcut\n\t                var H_i = H[i];\n\n\t                // Swap\n\t                H[i] = (((H_i << 8)  | (H_i >>> 24)) & 0x00ff00ff) |\n\t                       (((H_i << 24) | (H_i >>> 8))  & 0xff00ff00);\n\t            }\n\n\t            // Return final computed hash\n\t            return hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\n\t    function f1(x, y, z) {\n\t        return ((x) ^ (y) ^ (z));\n\n\t    }\n\n\t    function f2(x, y, z) {\n\t        return (((x)&(y)) | ((~x)&(z)));\n\t    }\n\n\t    function f3(x, y, z) {\n\t        return (((x) | (~(y))) ^ (z));\n\t    }\n\n\t    function f4(x, y, z) {\n\t        return (((x) & (z)) | ((y)&(~(z))));\n\t    }\n\n\t    function f5(x, y, z) {\n\t        return ((x) ^ ((y) |(~(z))));\n\n\t    }\n\n\t    function rotl(x,n) {\n\t        return (x<<n) | (x>>>(32-n));\n\t    }\n\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.RIPEMD160('message');\n\t     *     var hash = CryptoJS.RIPEMD160(wordArray);\n\t     */\n\t    C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t     */\n\t    C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_algo = C.algo;\n\t    var SHA1 = C_algo.SHA1;\n\t    var HMAC = C_algo.HMAC;\n\n\t    /**\n\t     * Password-Based Key Derivation Function 2 algorithm.\n\t     */\n\t    var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t         * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t         * @property {number} iterations The number of iterations to perform. Default: 1\n\t         */\n\t        cfg: Base.extend({\n\t            keySize: 128/32,\n\t            hasher: SHA1,\n\t            iterations: 1\n\t        }),\n\n\t        /**\n\t         * Initializes a newly created key derivation function.\n\t         *\n\t         * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var kdf = CryptoJS.algo.PBKDF2.create();\n\t         *     var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t         *     var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t         */\n\t        init: function (cfg) {\n\t            this.cfg = this.cfg.extend(cfg);\n\t        },\n\n\t        /**\n\t         * Computes the Password-Based Key Derivation Function 2.\n\t         *\n\t         * @param {WordArray|string} password The password.\n\t         * @param {WordArray|string} salt A salt.\n\t         *\n\t         * @return {WordArray} The derived key.\n\t         *\n\t         * @example\n\t         *\n\t         *     var key = kdf.compute(password, salt);\n\t         */\n\t        compute: function (password, salt) {\n\t            // Shortcut\n\t            var cfg = this.cfg;\n\n\t            // Init HMAC\n\t            var hmac = HMAC.create(cfg.hasher, password);\n\n\t            // Initial values\n\t            var derivedKey = WordArray.create();\n\t            var blockIndex = WordArray.create([0x00000001]);\n\n\t            // Shortcuts\n\t            var derivedKeyWords = derivedKey.words;\n\t            var blockIndexWords = blockIndex.words;\n\t            var keySize = cfg.keySize;\n\t            var iterations = cfg.iterations;\n\n\t            // Generate key\n\t            while (derivedKeyWords.length < keySize) {\n\t                var block = hmac.update(salt).finalize(blockIndex);\n\t                hmac.reset();\n\n\t                // Shortcuts\n\t                var blockWords = block.words;\n\t                var blockWordsLength = blockWords.length;\n\n\t                // Iterations\n\t                var intermediate = block;\n\t                for (var i = 1; i < iterations; i++) {\n\t                    intermediate = hmac.finalize(intermediate);\n\t                    hmac.reset();\n\n\t                    // Shortcut\n\t                    var intermediateWords = intermediate.words;\n\n\t                    // XOR intermediate with block\n\t                    for (var j = 0; j < blockWordsLength; j++) {\n\t                        blockWords[j] ^= intermediateWords[j];\n\t                    }\n\t                }\n\n\t                derivedKey.concat(block);\n\t                blockIndexWords[0]++;\n\t            }\n\t            derivedKey.sigBytes = keySize * 4;\n\n\t            return derivedKey;\n\t        }\n\t    });\n\n\t    /**\n\t     * Computes the Password-Based Key Derivation Function 2.\n\t     *\n\t     * @param {WordArray|string} password The password.\n\t     * @param {WordArray|string} salt A salt.\n\t     * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t     *\n\t     * @return {WordArray} The derived key.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var key = CryptoJS.PBKDF2(password, salt);\n\t     *     var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t     *     var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t     */\n\t    C.PBKDF2 = function (password, salt, cfg) {\n\t        return PBKDF2.create(cfg).compute(password, salt);\n\t    };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t    var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t    CFB.Encryptor = CFB.extend({\n\t        processBlock: function (words, offset) {\n\t            // Shortcuts\n\t            var cipher = this._cipher;\n\t            var blockSize = cipher.blockSize;\n\n\t            generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t            // Remember this block to use with next block\n\t            this._prevBlock = words.slice(offset, offset + blockSize);\n\t        }\n\t    });\n\n\t    CFB.Decryptor = CFB.extend({\n\t        processBlock: function (words, offset) {\n\t            // Shortcuts\n\t            var cipher = this._cipher;\n\t            var blockSize = cipher.blockSize;\n\n\t            // Remember this block to use with next block\n\t            var thisBlock = words.slice(offset, offset + blockSize);\n\n\t            generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t            // This block becomes the previous block\n\t            this._prevBlock = thisBlock;\n\t        }\n\t    });\n\n\t    function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t        var keystream;\n\n\t        // Shortcut\n\t        var iv = this._iv;\n\n\t        // Generate keystream\n\t        if (iv) {\n\t            keystream = iv.slice(0);\n\n\t            // Remove IV for subsequent blocks\n\t            this._iv = undefined;\n\t        } else {\n\t            keystream = this._prevBlock;\n\t        }\n\t        cipher.encryptBlock(keystream, 0);\n\n\t        // Encrypt\n\t        for (var i = 0; i < blockSize; i++) {\n\t            words[offset + i] ^= keystream[i];\n\t        }\n\t    }\n\n\t    return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t    var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t    var Encryptor = CTR.Encryptor = CTR.extend({\n\t        processBlock: function (words, offset) {\n\t            // Shortcuts\n\t            var cipher = this._cipher\n\t            var blockSize = cipher.blockSize;\n\t            var iv = this._iv;\n\t            var counter = this._counter;\n\n\t            // Generate keystream\n\t            if (iv) {\n\t                counter = this._counter = iv.slice(0);\n\n\t                // Remove IV for subsequent blocks\n\t                this._iv = undefined;\n\t            }\n\t            var keystream = counter.slice(0);\n\t            cipher.encryptBlock(keystream, 0);\n\n\t            // Increment counter\n\t            counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t            // Encrypt\n\t            for (var i = 0; i < blockSize; i++) {\n\t                words[offset + i] ^= keystream[i];\n\t            }\n\t        }\n\t    });\n\n\t    CTR.Decryptor = Encryptor;\n\n\t    return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with  Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t    var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from  Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t    var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t        processBlock: function (words, offset) {\n\t            // Shortcuts\n\t            var cipher = this._cipher\n\t            var blockSize = cipher.blockSize;\n\t            var iv = this._iv;\n\t            var counter = this._counter;\n\n\t            // Generate keystream\n\t            if (iv) {\n\t                counter = this._counter = iv.slice(0);\n\n\t                // Remove IV for subsequent blocks\n\t                this._iv = undefined;\n\t            }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t            cipher.encryptBlock(keystream, 0);\n\n\t            // Encrypt\n\t            for (var i = 0; i < blockSize; i++) {\n\t                words[offset + i] ^= keystream[i];\n\t            }\n\t        }\n\t    });\n\n\t    CTRGladman.Decryptor = Encryptor;\n\n\t    return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t    var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t    var Encryptor = OFB.Encryptor = OFB.extend({\n\t        processBlock: function (words, offset) {\n\t            // Shortcuts\n\t            var cipher = this._cipher\n\t            var blockSize = cipher.blockSize;\n\t            var iv = this._iv;\n\t            var keystream = this._keystream;\n\n\t            // Generate keystream\n\t            if (iv) {\n\t                keystream = this._keystream = iv.slice(0);\n\n\t                // Remove IV for subsequent blocks\n\t                this._iv = undefined;\n\t            }\n\t            cipher.encryptBlock(keystream, 0);\n\n\t            // Encrypt\n\t            for (var i = 0; i < blockSize; i++) {\n\t                words[offset + i] ^= keystream[i];\n\t            }\n\t        }\n\t    });\n\n\t    OFB.Decryptor = Encryptor;\n\n\t    return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t    var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t    ECB.Encryptor = ECB.extend({\n\t        processBlock: function (words, offset) {\n\t            this._cipher.encryptBlock(words, offset);\n\t        }\n\t    });\n\n\t    ECB.Decryptor = ECB.extend({\n\t        processBlock: function (words, offset) {\n\t            this._cipher.decryptBlock(words, offset);\n\t        }\n\t    });\n\n\t    return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t    pad: function (data, blockSize) {\n\t        // Shortcuts\n\t        var dataSigBytes = data.sigBytes;\n\t        var blockSizeBytes = blockSize * 4;\n\n\t        // Count padding bytes\n\t        var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t        // Compute last byte position\n\t        var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t        // Pad\n\t        data.clamp();\n\t        data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t        data.sigBytes += nPaddingBytes;\n\t    },\n\n\t    unpad: function (data) {\n\t        // Get number of padding bytes from last byte\n\t        var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t        // Remove padding\n\t        data.sigBytes -= nPaddingBytes;\n\t    }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t    pad: function (data, blockSize) {\n\t        // Shortcut\n\t        var blockSizeBytes = blockSize * 4;\n\n\t        // Count padding bytes\n\t        var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t        // Pad\n\t        data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t             concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t    },\n\n\t    unpad: function (data) {\n\t        // Get number of padding bytes from last byte\n\t        var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t        // Remove padding\n\t        data.sigBytes -= nPaddingBytes;\n\t    }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t    pad: function (data, blockSize) {\n\t        // Add 0x80 byte\n\t        data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t        // Zero pad the rest\n\t        CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t    },\n\n\t    unpad: function (data) {\n\t        // Remove zero padding\n\t        CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t        // Remove one more byte -- the 0x80 byte\n\t        data.sigBytes--;\n\t    }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));","export enum AgreementStatus {\n  InternalDraft,\n  ManagementReview,\n  ForwardedClient,\n  Approved,\n  Valid,\n  InWarranty,\n  Expired,\n  Cancelled\n}\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t    pad: function (data, blockSize) {\n\t        // Shortcut\n\t        var blockSizeBytes = blockSize * 4;\n\n\t        // Pad\n\t        data.clamp();\n\t        data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t    },\n\n\t    unpad: function (data) {\n\t        // Shortcut\n\t        var dataWords = data.words;\n\n\t        // Unpad\n\t        var i = data.sigBytes - 1;\n\t        for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t            if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t                data.sigBytes = i + 1;\n\t                break;\n\t            }\n\t        }\n\t    }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t    pad: function () {\n\t    },\n\n\t    unpad: function () {\n\t    }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var CipherParams = C_lib.CipherParams;\n\t    var C_enc = C.enc;\n\t    var Hex = C_enc.Hex;\n\t    var C_format = C.format;\n\n\t    var HexFormatter = C_format.Hex = {\n\t        /**\n\t         * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t         *\n\t         * @param {CipherParams} cipherParams The cipher params object.\n\t         *\n\t         * @return {string} The hexadecimally encoded string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t         */\n\t        stringify: function (cipherParams) {\n\t            return cipherParams.ciphertext.toString(Hex);\n\t        },\n\n\t        /**\n\t         * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t         *\n\t         * @param {string} input The hexadecimally encoded string.\n\t         *\n\t         * @return {CipherParams} The cipher params object.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t         */\n\t        parse: function (input) {\n\t            var ciphertext = Hex.parse(input);\n\t            return CipherParams.create({ ciphertext: ciphertext });\n\t        }\n\t    };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var BlockCipher = C_lib.BlockCipher;\n\t    var C_algo = C.algo;\n\n\t    // Lookup tables\n\t    var SBOX = [];\n\t    var INV_SBOX = [];\n\t    var SUB_MIX_0 = [];\n\t    var SUB_MIX_1 = [];\n\t    var SUB_MIX_2 = [];\n\t    var SUB_MIX_3 = [];\n\t    var INV_SUB_MIX_0 = [];\n\t    var INV_SUB_MIX_1 = [];\n\t    var INV_SUB_MIX_2 = [];\n\t    var INV_SUB_MIX_3 = [];\n\n\t    // Compute lookup tables\n\t    (function () {\n\t        // Compute double table\n\t        var d = [];\n\t        for (var i = 0; i < 256; i++) {\n\t            if (i < 128) {\n\t                d[i] = i << 1;\n\t            } else {\n\t                d[i] = (i << 1) ^ 0x11b;\n\t            }\n\t        }\n\n\t        // Walk GF(2^8)\n\t        var x = 0;\n\t        var xi = 0;\n\t        for (var i = 0; i < 256; i++) {\n\t            // Compute sbox\n\t            var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t            sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t            SBOX[x] = sx;\n\t            INV_SBOX[sx] = x;\n\n\t            // Compute multiplication\n\t            var x2 = d[x];\n\t            var x4 = d[x2];\n\t            var x8 = d[x4];\n\n\t            // Compute sub bytes, mix columns tables\n\t            var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t            SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t            SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t            SUB_MIX_2[x] = (t << 8)  | (t >>> 24);\n\t            SUB_MIX_3[x] = t;\n\n\t            // Compute inv sub bytes, inv mix columns tables\n\t            var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t            INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t            INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t            INV_SUB_MIX_2[sx] = (t << 8)  | (t >>> 24);\n\t            INV_SUB_MIX_3[sx] = t;\n\n\t            // Compute next counter\n\t            if (!x) {\n\t                x = xi = 1;\n\t            } else {\n\t                x = x2 ^ d[d[d[x8 ^ x2]]];\n\t                xi ^= d[d[xi]];\n\t            }\n\t        }\n\t    }());\n\n\t    // Precomputed Rcon lookup\n\t    var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t    /**\n\t     * AES block cipher algorithm.\n\t     */\n\t    var AES = C_algo.AES = BlockCipher.extend({\n\t        _doReset: function () {\n\t            var t;\n\n\t            // Skip reset of nRounds has been set before and key did not change\n\t            if (this._nRounds && this._keyPriorReset === this._key) {\n\t                return;\n\t            }\n\n\t            // Shortcuts\n\t            var key = this._keyPriorReset = this._key;\n\t            var keyWords = key.words;\n\t            var keySize = key.sigBytes / 4;\n\n\t            // Compute number of rounds\n\t            var nRounds = this._nRounds = keySize + 6;\n\n\t            // Compute number of key schedule rows\n\t            var ksRows = (nRounds + 1) * 4;\n\n\t            // Compute key schedule\n\t            var keySchedule = this._keySchedule = [];\n\t            for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t                if (ksRow < keySize) {\n\t                    keySchedule[ksRow] = keyWords[ksRow];\n\t                } else {\n\t                    t = keySchedule[ksRow - 1];\n\n\t                    if (!(ksRow % keySize)) {\n\t                        // Rot word\n\t                        t = (t << 8) | (t >>> 24);\n\n\t                        // Sub word\n\t                        t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t                        // Mix Rcon\n\t                        t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t                    } else if (keySize > 6 && ksRow % keySize == 4) {\n\t                        // Sub word\n\t                        t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t                    }\n\n\t                    keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t                }\n\t            }\n\n\t            // Compute inv key schedule\n\t            var invKeySchedule = this._invKeySchedule = [];\n\t            for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t                var ksRow = ksRows - invKsRow;\n\n\t                if (invKsRow % 4) {\n\t                    var t = keySchedule[ksRow];\n\t                } else {\n\t                    var t = keySchedule[ksRow - 4];\n\t                }\n\n\t                if (invKsRow < 4 || ksRow <= 4) {\n\t                    invKeySchedule[invKsRow] = t;\n\t                } else {\n\t                    invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t                                               INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t                }\n\t            }\n\t        },\n\n\t        encryptBlock: function (M, offset) {\n\t            this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t        },\n\n\t        decryptBlock: function (M, offset) {\n\t            // Swap 2nd and 4th rows\n\t            var t = M[offset + 1];\n\t            M[offset + 1] = M[offset + 3];\n\t            M[offset + 3] = t;\n\n\t            this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t            // Inv swap 2nd and 4th rows\n\t            var t = M[offset + 1];\n\t            M[offset + 1] = M[offset + 3];\n\t            M[offset + 3] = t;\n\t        },\n\n\t        _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t            // Shortcut\n\t            var nRounds = this._nRounds;\n\n\t            // Get input, add round key\n\t            var s0 = M[offset]     ^ keySchedule[0];\n\t            var s1 = M[offset + 1] ^ keySchedule[1];\n\t            var s2 = M[offset + 2] ^ keySchedule[2];\n\t            var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t            // Key schedule row counter\n\t            var ksRow = 4;\n\n\t            // Rounds\n\t            for (var round = 1; round < nRounds; round++) {\n\t                // Shift rows, sub bytes, mix columns, add round key\n\t                var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t                var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t                var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t                var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t                // Update state\n\t                s0 = t0;\n\t                s1 = t1;\n\t                s2 = t2;\n\t                s3 = t3;\n\t            }\n\n\t            // Shift rows, sub bytes, add round key\n\t            var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t            var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t            var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t            var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t            // Set output\n\t            M[offset]     = t0;\n\t            M[offset + 1] = t1;\n\t            M[offset + 2] = t2;\n\t            M[offset + 3] = t3;\n\t        },\n\n\t        keySize: 256/32\n\t    });\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var BlockCipher = C_lib.BlockCipher;\n\t    var C_algo = C.algo;\n\n\t    // Permuted Choice 1 constants\n\t    var PC1 = [\n\t        57, 49, 41, 33, 25, 17, 9,  1,\n\t        58, 50, 42, 34, 26, 18, 10, 2,\n\t        59, 51, 43, 35, 27, 19, 11, 3,\n\t        60, 52, 44, 36, 63, 55, 47, 39,\n\t        31, 23, 15, 7,  62, 54, 46, 38,\n\t        30, 22, 14, 6,  61, 53, 45, 37,\n\t        29, 21, 13, 5,  28, 20, 12, 4\n\t    ];\n\n\t    // Permuted Choice 2 constants\n\t    var PC2 = [\n\t        14, 17, 11, 24, 1,  5,\n\t        3,  28, 15, 6,  21, 10,\n\t        23, 19, 12, 4,  26, 8,\n\t        16, 7,  27, 20, 13, 2,\n\t        41, 52, 31, 37, 47, 55,\n\t        30, 40, 51, 45, 33, 48,\n\t        44, 49, 39, 56, 34, 53,\n\t        46, 42, 50, 36, 29, 32\n\t    ];\n\n\t    // Cumulative bit shift constants\n\t    var BIT_SHIFTS = [1,  2,  4,  6,  8,  10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t    // SBOXes and round permutation constants\n\t    var SBOX_P = [\n\t        {\n\t            0x0: 0x808200,\n\t            0x10000000: 0x8000,\n\t            0x20000000: 0x808002,\n\t            0x30000000: 0x2,\n\t            0x40000000: 0x200,\n\t            0x50000000: 0x808202,\n\t            0x60000000: 0x800202,\n\t            0x70000000: 0x800000,\n\t            0x80000000: 0x202,\n\t            0x90000000: 0x800200,\n\t            0xa0000000: 0x8200,\n\t            0xb0000000: 0x808000,\n\t            0xc0000000: 0x8002,\n\t            0xd0000000: 0x800002,\n\t            0xe0000000: 0x0,\n\t            0xf0000000: 0x8202,\n\t            0x8000000: 0x0,\n\t            0x18000000: 0x808202,\n\t            0x28000000: 0x8202,\n\t            0x38000000: 0x8000,\n\t            0x48000000: 0x808200,\n\t            0x58000000: 0x200,\n\t            0x68000000: 0x808002,\n\t            0x78000000: 0x2,\n\t            0x88000000: 0x800200,\n\t            0x98000000: 0x8200,\n\t            0xa8000000: 0x808000,\n\t            0xb8000000: 0x800202,\n\t            0xc8000000: 0x800002,\n\t            0xd8000000: 0x8002,\n\t            0xe8000000: 0x202,\n\t            0xf8000000: 0x800000,\n\t            0x1: 0x8000,\n\t            0x10000001: 0x2,\n\t            0x20000001: 0x808200,\n\t            0x30000001: 0x800000,\n\t            0x40000001: 0x808002,\n\t            0x50000001: 0x8200,\n\t            0x60000001: 0x200,\n\t            0x70000001: 0x800202,\n\t            0x80000001: 0x808202,\n\t            0x90000001: 0x808000,\n\t            0xa0000001: 0x800002,\n\t            0xb0000001: 0x8202,\n\t            0xc0000001: 0x202,\n\t            0xd0000001: 0x800200,\n\t            0xe0000001: 0x8002,\n\t            0xf0000001: 0x0,\n\t            0x8000001: 0x808202,\n\t            0x18000001: 0x808000,\n\t            0x28000001: 0x800000,\n\t            0x38000001: 0x200,\n\t            0x48000001: 0x8000,\n\t            0x58000001: 0x800002,\n\t            0x68000001: 0x2,\n\t            0x78000001: 0x8202,\n\t            0x88000001: 0x8002,\n\t            0x98000001: 0x800202,\n\t            0xa8000001: 0x202,\n\t            0xb8000001: 0x808200,\n\t            0xc8000001: 0x800200,\n\t            0xd8000001: 0x0,\n\t            0xe8000001: 0x8200,\n\t            0xf8000001: 0x808002\n\t        },\n\t        {\n\t            0x0: 0x40084010,\n\t            0x1000000: 0x4000,\n\t            0x2000000: 0x80000,\n\t            0x3000000: 0x40080010,\n\t            0x4000000: 0x40000010,\n\t            0x5000000: 0x40084000,\n\t            0x6000000: 0x40004000,\n\t            0x7000000: 0x10,\n\t            0x8000000: 0x84000,\n\t            0x9000000: 0x40004010,\n\t            0xa000000: 0x40000000,\n\t            0xb000000: 0x84010,\n\t            0xc000000: 0x80010,\n\t            0xd000000: 0x0,\n\t            0xe000000: 0x4010,\n\t            0xf000000: 0x40080000,\n\t            0x800000: 0x40004000,\n\t            0x1800000: 0x84010,\n\t            0x2800000: 0x10,\n\t            0x3800000: 0x40004010,\n\t            0x4800000: 0x40084010,\n\t            0x5800000: 0x40000000,\n\t            0x6800000: 0x80000,\n\t            0x7800000: 0x40080010,\n\t            0x8800000: 0x80010,\n\t            0x9800000: 0x0,\n\t            0xa800000: 0x4000,\n\t            0xb800000: 0x40080000,\n\t            0xc800000: 0x40000010,\n\t            0xd800000: 0x84000,\n\t            0xe800000: 0x40084000,\n\t            0xf800000: 0x4010,\n\t            0x10000000: 0x0,\n\t            0x11000000: 0x40080010,\n\t            0x12000000: 0x40004010,\n\t            0x13000000: 0x40084000,\n\t            0x14000000: 0x40080000,\n\t            0x15000000: 0x10,\n\t            0x16000000: 0x84010,\n\t            0x17000000: 0x4000,\n\t            0x18000000: 0x4010,\n\t            0x19000000: 0x80000,\n\t            0x1a000000: 0x80010,\n\t            0x1b000000: 0x40000010,\n\t            0x1c000000: 0x84000,\n\t            0x1d000000: 0x40004000,\n\t            0x1e000000: 0x40000000,\n\t            0x1f000000: 0x40084010,\n\t            0x10800000: 0x84010,\n\t            0x11800000: 0x80000,\n\t            0x12800000: 0x40080000,\n\t            0x13800000: 0x4000,\n\t            0x14800000: 0x40004000,\n\t            0x15800000: 0x40084010,\n\t            0x16800000: 0x10,\n\t            0x17800000: 0x40000000,\n\t            0x18800000: 0x40084000,\n\t            0x19800000: 0x40000010,\n\t            0x1a800000: 0x40004010,\n\t            0x1b800000: 0x80010,\n\t            0x1c800000: 0x0,\n\t            0x1d800000: 0x4010,\n\t            0x1e800000: 0x40080010,\n\t            0x1f800000: 0x84000\n\t        },\n\t        {\n\t            0x0: 0x104,\n\t            0x100000: 0x0,\n\t            0x200000: 0x4000100,\n\t            0x300000: 0x10104,\n\t            0x400000: 0x10004,\n\t            0x500000: 0x4000004,\n\t            0x600000: 0x4010104,\n\t            0x700000: 0x4010000,\n\t            0x800000: 0x4000000,\n\t            0x900000: 0x4010100,\n\t            0xa00000: 0x10100,\n\t            0xb00000: 0x4010004,\n\t            0xc00000: 0x4000104,\n\t            0xd00000: 0x10000,\n\t            0xe00000: 0x4,\n\t            0xf00000: 0x100,\n\t            0x80000: 0x4010100,\n\t            0x180000: 0x4010004,\n\t            0x280000: 0x0,\n\t            0x380000: 0x4000100,\n\t            0x480000: 0x4000004,\n\t            0x580000: 0x10000,\n\t            0x680000: 0x10004,\n\t            0x780000: 0x104,\n\t            0x880000: 0x4,\n\t            0x980000: 0x100,\n\t            0xa80000: 0x4010000,\n\t            0xb80000: 0x10104,\n\t            0xc80000: 0x10100,\n\t            0xd80000: 0x4000104,\n\t            0xe80000: 0x4010104,\n\t            0xf80000: 0x4000000,\n\t            0x1000000: 0x4010100,\n\t            0x1100000: 0x10004,\n\t            0x1200000: 0x10000,\n\t            0x1300000: 0x4000100,\n\t            0x1400000: 0x100,\n\t            0x1500000: 0x4010104,\n\t            0x1600000: 0x4000004,\n\t            0x1700000: 0x0,\n\t            0x1800000: 0x4000104,\n\t            0x1900000: 0x4000000,\n\t            0x1a00000: 0x4,\n\t            0x1b00000: 0x10100,\n\t            0x1c00000: 0x4010000,\n\t            0x1d00000: 0x104,\n\t            0x1e00000: 0x10104,\n\t            0x1f00000: 0x4010004,\n\t            0x1080000: 0x4000000,\n\t            0x1180000: 0x104,\n\t            0x1280000: 0x4010100,\n\t            0x1380000: 0x0,\n\t            0x1480000: 0x10004,\n\t            0x1580000: 0x4000100,\n\t            0x1680000: 0x100,\n\t            0x1780000: 0x4010004,\n\t            0x1880000: 0x10000,\n\t            0x1980000: 0x4010104,\n\t            0x1a80000: 0x10104,\n\t            0x1b80000: 0x4000004,\n\t            0x1c80000: 0x4000104,\n\t            0x1d80000: 0x4010000,\n\t            0x1e80000: 0x4,\n\t            0x1f80000: 0x10100\n\t        },\n\t        {\n\t            0x0: 0x80401000,\n\t            0x10000: 0x80001040,\n\t            0x20000: 0x401040,\n\t            0x30000: 0x80400000,\n\t            0x40000: 0x0,\n\t            0x50000: 0x401000,\n\t            0x60000: 0x80000040,\n\t            0x70000: 0x400040,\n\t            0x80000: 0x80000000,\n\t            0x90000: 0x400000,\n\t            0xa0000: 0x40,\n\t            0xb0000: 0x80001000,\n\t            0xc0000: 0x80400040,\n\t            0xd0000: 0x1040,\n\t            0xe0000: 0x1000,\n\t            0xf0000: 0x80401040,\n\t            0x8000: 0x80001040,\n\t            0x18000: 0x40,\n\t            0x28000: 0x80400040,\n\t            0x38000: 0x80001000,\n\t            0x48000: 0x401000,\n\t            0x58000: 0x80401040,\n\t            0x68000: 0x0,\n\t            0x78000: 0x80400000,\n\t            0x88000: 0x1000,\n\t            0x98000: 0x80401000,\n\t            0xa8000: 0x400000,\n\t            0xb8000: 0x1040,\n\t            0xc8000: 0x80000000,\n\t            0xd8000: 0x400040,\n\t            0xe8000: 0x401040,\n\t            0xf8000: 0x80000040,\n\t            0x100000: 0x400040,\n\t            0x110000: 0x401000,\n\t            0x120000: 0x80000040,\n\t            0x130000: 0x0,\n\t            0x140000: 0x1040,\n\t            0x150000: 0x80400040,\n\t            0x160000: 0x80401000,\n\t            0x170000: 0x80001040,\n\t            0x180000: 0x80401040,\n\t            0x190000: 0x80000000,\n\t            0x1a0000: 0x80400000,\n\t            0x1b0000: 0x401040,\n\t            0x1c0000: 0x80001000,\n\t            0x1d0000: 0x400000,\n\t            0x1e0000: 0x40,\n\t            0x1f0000: 0x1000,\n\t            0x108000: 0x80400000,\n\t            0x118000: 0x80401040,\n\t            0x128000: 0x0,\n\t            0x138000: 0x401000,\n\t            0x148000: 0x400040,\n\t            0x158000: 0x80000000,\n\t            0x168000: 0x80001040,\n\t            0x178000: 0x40,\n\t            0x188000: 0x80000040,\n\t            0x198000: 0x1000,\n\t            0x1a8000: 0x80001000,\n\t            0x1b8000: 0x80400040,\n\t            0x1c8000: 0x1040,\n\t            0x1d8000: 0x80401000,\n\t            0x1e8000: 0x400000,\n\t            0x1f8000: 0x401040\n\t        },\n\t        {\n\t            0x0: 0x80,\n\t            0x1000: 0x1040000,\n\t            0x2000: 0x40000,\n\t            0x3000: 0x20000000,\n\t            0x4000: 0x20040080,\n\t            0x5000: 0x1000080,\n\t            0x6000: 0x21000080,\n\t            0x7000: 0x40080,\n\t            0x8000: 0x1000000,\n\t            0x9000: 0x20040000,\n\t            0xa000: 0x20000080,\n\t            0xb000: 0x21040080,\n\t            0xc000: 0x21040000,\n\t            0xd000: 0x0,\n\t            0xe000: 0x1040080,\n\t            0xf000: 0x21000000,\n\t            0x800: 0x1040080,\n\t            0x1800: 0x21000080,\n\t            0x2800: 0x80,\n\t            0x3800: 0x1040000,\n\t            0x4800: 0x40000,\n\t            0x5800: 0x20040080,\n\t            0x6800: 0x21040000,\n\t            0x7800: 0x20000000,\n\t            0x8800: 0x20040000,\n\t            0x9800: 0x0,\n\t            0xa800: 0x21040080,\n\t            0xb800: 0x1000080,\n\t            0xc800: 0x20000080,\n\t            0xd800: 0x21000000,\n\t            0xe800: 0x1000000,\n\t            0xf800: 0x40080,\n\t            0x10000: 0x40000,\n\t            0x11000: 0x80,\n\t            0x12000: 0x20000000,\n\t            0x13000: 0x21000080,\n\t            0x14000: 0x1000080,\n\t            0x15000: 0x21040000,\n\t            0x16000: 0x20040080,\n\t            0x17000: 0x1000000,\n\t            0x18000: 0x21040080,\n\t            0x19000: 0x21000000,\n\t            0x1a000: 0x1040000,\n\t            0x1b000: 0x20040000,\n\t            0x1c000: 0x40080,\n\t            0x1d000: 0x20000080,\n\t            0x1e000: 0x0,\n\t            0x1f000: 0x1040080,\n\t            0x10800: 0x21000080,\n\t            0x11800: 0x1000000,\n\t            0x12800: 0x1040000,\n\t            0x13800: 0x20040080,\n\t            0x14800: 0x20000000,\n\t            0x15800: 0x1040080,\n\t            0x16800: 0x80,\n\t            0x17800: 0x21040000,\n\t            0x18800: 0x40080,\n\t            0x19800: 0x21040080,\n\t            0x1a800: 0x0,\n\t            0x1b800: 0x21000000,\n\t            0x1c800: 0x1000080,\n\t            0x1d800: 0x40000,\n\t            0x1e800: 0x20040000,\n\t            0x1f800: 0x20000080\n\t        },\n\t        {\n\t            0x0: 0x10000008,\n\t            0x100: 0x2000,\n\t            0x200: 0x10200000,\n\t            0x300: 0x10202008,\n\t            0x400: 0x10002000,\n\t            0x500: 0x200000,\n\t            0x600: 0x200008,\n\t            0x700: 0x10000000,\n\t            0x800: 0x0,\n\t            0x900: 0x10002008,\n\t            0xa00: 0x202000,\n\t            0xb00: 0x8,\n\t            0xc00: 0x10200008,\n\t            0xd00: 0x202008,\n\t            0xe00: 0x2008,\n\t            0xf00: 0x10202000,\n\t            0x80: 0x10200000,\n\t            0x180: 0x10202008,\n\t            0x280: 0x8,\n\t            0x380: 0x200000,\n\t            0x480: 0x202008,\n\t            0x580: 0x10000008,\n\t            0x680: 0x10002000,\n\t            0x780: 0x2008,\n\t            0x880: 0x200008,\n\t            0x980: 0x2000,\n\t            0xa80: 0x10002008,\n\t            0xb80: 0x10200008,\n\t            0xc80: 0x0,\n\t            0xd80: 0x10202000,\n\t            0xe80: 0x202000,\n\t            0xf80: 0x10000000,\n\t            0x1000: 0x10002000,\n\t            0x1100: 0x10200008,\n\t            0x1200: 0x10202008,\n\t            0x1300: 0x2008,\n\t            0x1400: 0x200000,\n\t            0x1500: 0x10000000,\n\t            0x1600: 0x10000008,\n\t            0x1700: 0x202000,\n\t            0x1800: 0x202008,\n\t            0x1900: 0x0,\n\t            0x1a00: 0x8,\n\t            0x1b00: 0x10200000,\n\t            0x1c00: 0x2000,\n\t            0x1d00: 0x10002008,\n\t            0x1e00: 0x10202000,\n\t            0x1f00: 0x200008,\n\t            0x1080: 0x8,\n\t            0x1180: 0x202000,\n\t            0x1280: 0x200000,\n\t            0x1380: 0x10000008,\n\t            0x1480: 0x10002000,\n\t            0x1580: 0x2008,\n\t            0x1680: 0x10202008,\n\t            0x1780: 0x10200000,\n\t            0x1880: 0x10202000,\n\t            0x1980: 0x10200008,\n\t            0x1a80: 0x2000,\n\t            0x1b80: 0x202008,\n\t            0x1c80: 0x200008,\n\t            0x1d80: 0x0,\n\t            0x1e80: 0x10000000,\n\t            0x1f80: 0x10002008\n\t        },\n\t        {\n\t            0x0: 0x100000,\n\t            0x10: 0x2000401,\n\t            0x20: 0x400,\n\t            0x30: 0x100401,\n\t            0x40: 0x2100401,\n\t            0x50: 0x0,\n\t            0x60: 0x1,\n\t            0x70: 0x2100001,\n\t            0x80: 0x2000400,\n\t            0x90: 0x100001,\n\t            0xa0: 0x2000001,\n\t            0xb0: 0x2100400,\n\t            0xc0: 0x2100000,\n\t            0xd0: 0x401,\n\t            0xe0: 0x100400,\n\t            0xf0: 0x2000000,\n\t            0x8: 0x2100001,\n\t            0x18: 0x0,\n\t            0x28: 0x2000401,\n\t            0x38: 0x2100400,\n\t            0x48: 0x100000,\n\t            0x58: 0x2000001,\n\t            0x68: 0x2000000,\n\t            0x78: 0x401,\n\t            0x88: 0x100401,\n\t            0x98: 0x2000400,\n\t            0xa8: 0x2100000,\n\t            0xb8: 0x100001,\n\t            0xc8: 0x400,\n\t            0xd8: 0x2100401,\n\t            0xe8: 0x1,\n\t            0xf8: 0x100400,\n\t            0x100: 0x2000000,\n\t            0x110: 0x100000,\n\t            0x120: 0x2000401,\n\t            0x130: 0x2100001,\n\t            0x140: 0x100001,\n\t            0x150: 0x2000400,\n\t            0x160: 0x2100400,\n\t            0x170: 0x100401,\n\t            0x180: 0x401,\n\t            0x190: 0x2100401,\n\t            0x1a0: 0x100400,\n\t            0x1b0: 0x1,\n\t            0x1c0: 0x0,\n\t            0x1d0: 0x2100000,\n\t            0x1e0: 0x2000001,\n\t            0x1f0: 0x400,\n\t            0x108: 0x100400,\n\t            0x118: 0x2000401,\n\t            0x128: 0x2100001,\n\t            0x138: 0x1,\n\t            0x148: 0x2000000,\n\t            0x158: 0x100000,\n\t            0x168: 0x401,\n\t            0x178: 0x2100400,\n\t            0x188: 0x2000001,\n\t            0x198: 0x2100000,\n\t            0x1a8: 0x0,\n\t            0x1b8: 0x2100401,\n\t            0x1c8: 0x100401,\n\t            0x1d8: 0x400,\n\t            0x1e8: 0x2000400,\n\t            0x1f8: 0x100001\n\t        },\n\t        {\n\t            0x0: 0x8000820,\n\t            0x1: 0x20000,\n\t            0x2: 0x8000000,\n\t            0x3: 0x20,\n\t            0x4: 0x20020,\n\t            0x5: 0x8020820,\n\t            0x6: 0x8020800,\n\t            0x7: 0x800,\n\t            0x8: 0x8020000,\n\t            0x9: 0x8000800,\n\t            0xa: 0x20800,\n\t            0xb: 0x8020020,\n\t            0xc: 0x820,\n\t            0xd: 0x0,\n\t            0xe: 0x8000020,\n\t            0xf: 0x20820,\n\t            0x80000000: 0x800,\n\t            0x80000001: 0x8020820,\n\t            0x80000002: 0x8000820,\n\t            0x80000003: 0x8000000,\n\t            0x80000004: 0x8020000,\n\t            0x80000005: 0x20800,\n\t            0x80000006: 0x20820,\n\t            0x80000007: 0x20,\n\t            0x80000008: 0x8000020,\n\t            0x80000009: 0x820,\n\t            0x8000000a: 0x20020,\n\t            0x8000000b: 0x8020800,\n\t            0x8000000c: 0x0,\n\t            0x8000000d: 0x8020020,\n\t            0x8000000e: 0x8000800,\n\t            0x8000000f: 0x20000,\n\t            0x10: 0x20820,\n\t            0x11: 0x8020800,\n\t            0x12: 0x20,\n\t            0x13: 0x800,\n\t            0x14: 0x8000800,\n\t            0x15: 0x8000020,\n\t            0x16: 0x8020020,\n\t            0x17: 0x20000,\n\t            0x18: 0x0,\n\t            0x19: 0x20020,\n\t            0x1a: 0x8020000,\n\t            0x1b: 0x8000820,\n\t            0x1c: 0x8020820,\n\t            0x1d: 0x20800,\n\t            0x1e: 0x820,\n\t            0x1f: 0x8000000,\n\t            0x80000010: 0x20000,\n\t            0x80000011: 0x800,\n\t            0x80000012: 0x8020020,\n\t            0x80000013: 0x20820,\n\t            0x80000014: 0x20,\n\t            0x80000015: 0x8020000,\n\t            0x80000016: 0x8000000,\n\t            0x80000017: 0x8000820,\n\t            0x80000018: 0x8020820,\n\t            0x80000019: 0x8000020,\n\t            0x8000001a: 0x8000800,\n\t            0x8000001b: 0x0,\n\t            0x8000001c: 0x20800,\n\t            0x8000001d: 0x820,\n\t            0x8000001e: 0x20020,\n\t            0x8000001f: 0x8020800\n\t        }\n\t    ];\n\n\t    // Masks that select the SBOX input\n\t    var SBOX_MASK = [\n\t        0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t        0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t    ];\n\n\t    /**\n\t     * DES block cipher algorithm.\n\t     */\n\t    var DES = C_algo.DES = BlockCipher.extend({\n\t        _doReset: function () {\n\t            // Shortcuts\n\t            var key = this._key;\n\t            var keyWords = key.words;\n\n\t            // Select 56 bits according to PC1\n\t            var keyBits = [];\n\t            for (var i = 0; i < 56; i++) {\n\t                var keyBitPos = PC1[i] - 1;\n\t                keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t            }\n\n\t            // Assemble 16 subkeys\n\t            var subKeys = this._subKeys = [];\n\t            for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t                // Create subkey\n\t                var subKey = subKeys[nSubKey] = [];\n\n\t                // Shortcut\n\t                var bitShift = BIT_SHIFTS[nSubKey];\n\n\t                // Select 48 bits according to PC2\n\t                for (var i = 0; i < 24; i++) {\n\t                    // Select from the left 28 key bits\n\t                    subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t                    // Select from the right 28 key bits\n\t                    subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t                }\n\n\t                // Since each subkey is applied to an expanded 32-bit input,\n\t                // the subkey can be broken into 8 values scaled to 32-bits,\n\t                // which allows the key to be used without expansion\n\t                subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t                for (var i = 1; i < 7; i++) {\n\t                    subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t                }\n\t                subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t            }\n\n\t            // Compute inverse subkeys\n\t            var invSubKeys = this._invSubKeys = [];\n\t            for (var i = 0; i < 16; i++) {\n\t                invSubKeys[i] = subKeys[15 - i];\n\t            }\n\t        },\n\n\t        encryptBlock: function (M, offset) {\n\t            this._doCryptBlock(M, offset, this._subKeys);\n\t        },\n\n\t        decryptBlock: function (M, offset) {\n\t            this._doCryptBlock(M, offset, this._invSubKeys);\n\t        },\n\n\t        _doCryptBlock: function (M, offset, subKeys) {\n\t            // Get input\n\t            this._lBlock = M[offset];\n\t            this._rBlock = M[offset + 1];\n\n\t            // Initial permutation\n\t            exchangeLR.call(this, 4,  0x0f0f0f0f);\n\t            exchangeLR.call(this, 16, 0x0000ffff);\n\t            exchangeRL.call(this, 2,  0x33333333);\n\t            exchangeRL.call(this, 8,  0x00ff00ff);\n\t            exchangeLR.call(this, 1,  0x55555555);\n\n\t            // Rounds\n\t            for (var round = 0; round < 16; round++) {\n\t                // Shortcuts\n\t                var subKey = subKeys[round];\n\t                var lBlock = this._lBlock;\n\t                var rBlock = this._rBlock;\n\n\t                // Feistel function\n\t                var f = 0;\n\t                for (var i = 0; i < 8; i++) {\n\t                    f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t                }\n\t                this._lBlock = rBlock;\n\t                this._rBlock = lBlock ^ f;\n\t            }\n\n\t            // Undo swap from last round\n\t            var t = this._lBlock;\n\t            this._lBlock = this._rBlock;\n\t            this._rBlock = t;\n\n\t            // Final permutation\n\t            exchangeLR.call(this, 1,  0x55555555);\n\t            exchangeRL.call(this, 8,  0x00ff00ff);\n\t            exchangeRL.call(this, 2,  0x33333333);\n\t            exchangeLR.call(this, 16, 0x0000ffff);\n\t            exchangeLR.call(this, 4,  0x0f0f0f0f);\n\n\t            // Set output\n\t            M[offset] = this._lBlock;\n\t            M[offset + 1] = this._rBlock;\n\t        },\n\n\t        keySize: 64/32,\n\n\t        ivSize: 64/32,\n\n\t        blockSize: 64/32\n\t    });\n\n\t    // Swap bits across the left and right words\n\t    function exchangeLR(offset, mask) {\n\t        var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t        this._rBlock ^= t;\n\t        this._lBlock ^= t << offset;\n\t    }\n\n\t    function exchangeRL(offset, mask) {\n\t        var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t        this._lBlock ^= t;\n\t        this._rBlock ^= t << offset;\n\t    }\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.DES = BlockCipher._createHelper(DES);\n\n\t    /**\n\t     * Triple-DES block cipher algorithm.\n\t     */\n\t    var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t        _doReset: function () {\n\t            // Shortcuts\n\t            var key = this._key;\n\t            var keyWords = key.words;\n\t            // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t            if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t                throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t            }\n\n\t            // Extend the key according to the keying options defined in 3DES standard\n\t            var key1 = keyWords.slice(0, 2);\n\t            var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t            var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t            // Create DES instances\n\t            this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t            this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t            this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t        },\n\n\t        encryptBlock: function (M, offset) {\n\t            this._des1.encryptBlock(M, offset);\n\t            this._des2.decryptBlock(M, offset);\n\t            this._des3.encryptBlock(M, offset);\n\t        },\n\n\t        decryptBlock: function (M, offset) {\n\t            this._des3.decryptBlock(M, offset);\n\t            this._des2.encryptBlock(M, offset);\n\t            this._des1.decryptBlock(M, offset);\n\t        },\n\n\t        keySize: 192/32,\n\n\t        ivSize: 64/32,\n\n\t        blockSize: 64/32\n\t    });\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var StreamCipher = C_lib.StreamCipher;\n\t    var C_algo = C.algo;\n\n\t    /**\n\t     * RC4 stream cipher algorithm.\n\t     */\n\t    var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t        _doReset: function () {\n\t            // Shortcuts\n\t            var key = this._key;\n\t            var keyWords = key.words;\n\t            var keySigBytes = key.sigBytes;\n\n\t            // Init sbox\n\t            var S = this._S = [];\n\t            for (var i = 0; i < 256; i++) {\n\t                S[i] = i;\n\t            }\n\n\t            // Key setup\n\t            for (var i = 0, j = 0; i < 256; i++) {\n\t                var keyByteIndex = i % keySigBytes;\n\t                var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t                j = (j + S[i] + keyByte) % 256;\n\n\t                // Swap\n\t                var t = S[i];\n\t                S[i] = S[j];\n\t                S[j] = t;\n\t            }\n\n\t            // Counters\n\t            this._i = this._j = 0;\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            M[offset] ^= generateKeystreamWord.call(this);\n\t        },\n\n\t        keySize: 256/32,\n\n\t        ivSize: 0\n\t    });\n\n\t    function generateKeystreamWord() {\n\t        // Shortcuts\n\t        var S = this._S;\n\t        var i = this._i;\n\t        var j = this._j;\n\n\t        // Generate keystream word\n\t        var keystreamWord = 0;\n\t        for (var n = 0; n < 4; n++) {\n\t            i = (i + 1) % 256;\n\t            j = (j + S[i]) % 256;\n\n\t            // Swap\n\t            var t = S[i];\n\t            S[i] = S[j];\n\t            S[j] = t;\n\n\t            keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t        }\n\n\t        // Update counters\n\t        this._i = i;\n\t        this._j = j;\n\n\t        return keystreamWord;\n\t    }\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.RC4 = StreamCipher._createHelper(RC4);\n\n\t    /**\n\t     * Modified RC4 stream cipher algorithm.\n\t     */\n\t    var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {number} drop The number of keystream words to drop. Default 192\n\t         */\n\t        cfg: RC4.cfg.extend({\n\t            drop: 192\n\t        }),\n\n\t        _doReset: function () {\n\t            RC4._doReset.call(this);\n\n\t            // Drop\n\t            for (var i = this.cfg.drop; i > 0; i--) {\n\t                generateKeystreamWord.call(this);\n\t            }\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var StreamCipher = C_lib.StreamCipher;\n\t    var C_algo = C.algo;\n\n\t    // Reusable objects\n\t    var S  = [];\n\t    var C_ = [];\n\t    var G  = [];\n\n\t    /**\n\t     * Rabbit stream cipher algorithm\n\t     */\n\t    var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t        _doReset: function () {\n\t            // Shortcuts\n\t            var K = this._key.words;\n\t            var iv = this.cfg.iv;\n\n\t            // Swap endian\n\t            for (var i = 0; i < 4; i++) {\n\t                K[i] = (((K[i] << 8)  | (K[i] >>> 24)) & 0x00ff00ff) |\n\t                       (((K[i] << 24) | (K[i] >>> 8))  & 0xff00ff00);\n\t            }\n\n\t            // Generate initial state values\n\t            var X = this._X = [\n\t                K[0], (K[3] << 16) | (K[2] >>> 16),\n\t                K[1], (K[0] << 16) | (K[3] >>> 16),\n\t                K[2], (K[1] << 16) | (K[0] >>> 16),\n\t                K[3], (K[2] << 16) | (K[1] >>> 16)\n\t            ];\n\n\t            // Generate initial counter values\n\t            var C = this._C = [\n\t                (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t                (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t                (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t                (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t            ];\n\n\t            // Carry bit\n\t            this._b = 0;\n\n\t            // Iterate the system four times\n\t            for (var i = 0; i < 4; i++) {\n\t                nextState.call(this);\n\t            }\n\n\t            // Modify the counters\n\t            for (var i = 0; i < 8; i++) {\n\t                C[i] ^= X[(i + 4) & 7];\n\t            }\n\n\t            // IV setup\n\t            if (iv) {\n\t                // Shortcuts\n\t                var IV = iv.words;\n\t                var IV_0 = IV[0];\n\t                var IV_1 = IV[1];\n\n\t                // Generate four subvectors\n\t                var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t                var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t                var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t                var i3 = (i2 << 16)  | (i0 & 0x0000ffff);\n\n\t                // Modify counter values\n\t                C[0] ^= i0;\n\t                C[1] ^= i1;\n\t                C[2] ^= i2;\n\t                C[3] ^= i3;\n\t                C[4] ^= i0;\n\t                C[5] ^= i1;\n\t                C[6] ^= i2;\n\t                C[7] ^= i3;\n\n\t                // Iterate the system four times\n\t                for (var i = 0; i < 4; i++) {\n\t                    nextState.call(this);\n\t                }\n\t            }\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var X = this._X;\n\n\t            // Iterate the system\n\t            nextState.call(this);\n\n\t            // Generate four keystream words\n\t            S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t            S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t            S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t            S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t            for (var i = 0; i < 4; i++) {\n\t                // Swap endian\n\t                S[i] = (((S[i] << 8)  | (S[i] >>> 24)) & 0x00ff00ff) |\n\t                       (((S[i] << 24) | (S[i] >>> 8))  & 0xff00ff00);\n\n\t                // Encrypt\n\t                M[offset + i] ^= S[i];\n\t            }\n\t        },\n\n\t        blockSize: 128/32,\n\n\t        ivSize: 64/32\n\t    });\n\n\t    function nextState() {\n\t        // Shortcuts\n\t        var X = this._X;\n\t        var C = this._C;\n\n\t        // Save old counter values\n\t        for (var i = 0; i < 8; i++) {\n\t            C_[i] = C[i];\n\t        }\n\n\t        // Calculate new counter values\n\t        C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t        C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t        C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t        C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t        C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t        C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t        C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t        C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t        this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t        // Calculate the g-values\n\t        for (var i = 0; i < 8; i++) {\n\t            var gx = X[i] + C[i];\n\n\t            // Construct high and low argument for squaring\n\t            var ga = gx & 0xffff;\n\t            var gb = gx >>> 16;\n\n\t            // Calculate high and low result of squaring\n\t            var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t            var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t            // High XOR low\n\t            G[i] = gh ^ gl;\n\t        }\n\n\t        // Calculate new state values\n\t        X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t        X[1] = (G[1] + ((G[0] << 8)  | (G[0] >>> 24)) + G[7]) | 0;\n\t        X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t        X[3] = (G[3] + ((G[2] << 8)  | (G[2] >>> 24)) + G[1]) | 0;\n\t        X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t        X[5] = (G[5] + ((G[4] << 8)  | (G[4] >>> 24)) + G[3]) | 0;\n\t        X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t        X[7] = (G[7] + ((G[6] << 8)  | (G[6] >>> 24)) + G[5]) | 0;\n\t    }\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var StreamCipher = C_lib.StreamCipher;\n\t    var C_algo = C.algo;\n\n\t    // Reusable objects\n\t    var S  = [];\n\t    var C_ = [];\n\t    var G  = [];\n\n\t    /**\n\t     * Rabbit stream cipher algorithm.\n\t     *\n\t     * This is a legacy version that neglected to convert the key to little-endian.\n\t     * This error doesn't affect the cipher's security,\n\t     * but it does affect its compatibility with other implementations.\n\t     */\n\t    var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t        _doReset: function () {\n\t            // Shortcuts\n\t            var K = this._key.words;\n\t            var iv = this.cfg.iv;\n\n\t            // Generate initial state values\n\t            var X = this._X = [\n\t                K[0], (K[3] << 16) | (K[2] >>> 16),\n\t                K[1], (K[0] << 16) | (K[3] >>> 16),\n\t                K[2], (K[1] << 16) | (K[0] >>> 16),\n\t                K[3], (K[2] << 16) | (K[1] >>> 16)\n\t            ];\n\n\t            // Generate initial counter values\n\t            var C = this._C = [\n\t                (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t                (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t                (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t                (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t            ];\n\n\t            // Carry bit\n\t            this._b = 0;\n\n\t            // Iterate the system four times\n\t            for (var i = 0; i < 4; i++) {\n\t                nextState.call(this);\n\t            }\n\n\t            // Modify the counters\n\t            for (var i = 0; i < 8; i++) {\n\t                C[i] ^= X[(i + 4) & 7];\n\t            }\n\n\t            // IV setup\n\t            if (iv) {\n\t                // Shortcuts\n\t                var IV = iv.words;\n\t                var IV_0 = IV[0];\n\t                var IV_1 = IV[1];\n\n\t                // Generate four subvectors\n\t                var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t                var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t                var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t                var i3 = (i2 << 16)  | (i0 & 0x0000ffff);\n\n\t                // Modify counter values\n\t                C[0] ^= i0;\n\t                C[1] ^= i1;\n\t                C[2] ^= i2;\n\t                C[3] ^= i3;\n\t                C[4] ^= i0;\n\t                C[5] ^= i1;\n\t                C[6] ^= i2;\n\t                C[7] ^= i3;\n\n\t                // Iterate the system four times\n\t                for (var i = 0; i < 4; i++) {\n\t                    nextState.call(this);\n\t                }\n\t            }\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var X = this._X;\n\n\t            // Iterate the system\n\t            nextState.call(this);\n\n\t            // Generate four keystream words\n\t            S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t            S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t            S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t            S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t            for (var i = 0; i < 4; i++) {\n\t                // Swap endian\n\t                S[i] = (((S[i] << 8)  | (S[i] >>> 24)) & 0x00ff00ff) |\n\t                       (((S[i] << 24) | (S[i] >>> 8))  & 0xff00ff00);\n\n\t                // Encrypt\n\t                M[offset + i] ^= S[i];\n\t            }\n\t        },\n\n\t        blockSize: 128/32,\n\n\t        ivSize: 64/32\n\t    });\n\n\t    function nextState() {\n\t        // Shortcuts\n\t        var X = this._X;\n\t        var C = this._C;\n\n\t        // Save old counter values\n\t        for (var i = 0; i < 8; i++) {\n\t            C_[i] = C[i];\n\t        }\n\n\t        // Calculate new counter values\n\t        C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t        C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t        C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t        C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t        C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t        C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t        C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t        C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t        this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t        // Calculate the g-values\n\t        for (var i = 0; i < 8; i++) {\n\t            var gx = X[i] + C[i];\n\n\t            // Construct high and low argument for squaring\n\t            var ga = gx & 0xffff;\n\t            var gb = gx >>> 16;\n\n\t            // Calculate high and low result of squaring\n\t            var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t            var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t            // High XOR low\n\t            G[i] = gh ^ gl;\n\t        }\n\n\t        // Calculate new state values\n\t        X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t        X[1] = (G[1] + ((G[0] << 8)  | (G[0] >>> 24)) + G[7]) | 0;\n\t        X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t        X[3] = (G[3] + ((G[2] << 8)  | (G[2] >>> 24)) + G[1]) | 0;\n\t        X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t        X[5] = (G[5] + ((G[4] << 8)  | (G[4] >>> 24)) + G[3]) | 0;\n\t        X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t        X[7] = (G[7] + ((G[6] << 8)  | (G[6] >>> 24)) + G[5]) | 0;\n\t    }\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));","module.exports = __webpack_public_path__ + \"f03c878ac499f3ec7fa4c705d4540c15.svg\";","// With default aurelia-loader-webpack config, this module is added as an extra entry\n// before any other code executes so that PAL.Loader is properly configured.\n// There are several tricky points worth noticing.\n// \n// We don't add aurelia-loader-webpack itself as an entry point (used to until 2.0 RC2)\n// because it (transitively) brings too much bagage with itself, most notably polyfills.\n// This made it super-hard to add other polyfills before Aurelia's and led to various bugs.\n//\n// We don't add custom code in aurelia-pal or aurelia-loader or aurelia-bootstrapper to detect\n// the Webpack environment and configure the loader because they might live in a DLL.\n// If they do, they would bring aurelia-loader-webpack along in the DLL and this is a special \n// library that *has to be in the main chunk.*\n//\n// The over-complicated design I've settled upon in the end is to use this special module\n// as an entry point that configures aurelia-loader-webpack. It has minimal static imports:\n// just aurelia-pal, which itself has no other dependencies and doesn't run much code.\n// It hacks the loader field into a getter so that it can synchronously load aurelia-loader-webpack\n// just in time when it is demanded by aurelia-bootstrapper.\n// This enables users to load polyfills before aurelia-loader-webpack is actually loaded.\n\nimport { PLATFORM } from \"aurelia-pal\";\n\nvar Loader;\n\nObject.defineProperty(PLATFORM, \"Loader\", {\n  get: function() {\n    return Loader || (Loader = require(\"aurelia-loader-webpack\").WebpackLoader);\n  },\n  set: function(value) {\n    Loader = value;\n  }\n});\n","import { ItemToQualify } from './itemToQualify';\nimport { QuestionaryType } from './questionaryType';\nimport { OrganizationType } from './organizationType';\nimport { NoDiscType } from './noDiscType';\nimport  {GameTest } from './gameTest';\nimport { QuestionaryIncompatibility } from './questionaryIncompatibilty';\n\n\nexport class Questionary {\n  id: number;\n  averageTime: number;\n  order: number;\n  isActive: boolean;\n  name: string;\n  languageId: number;\n  languageName: string;\n  questionaryType: QuestionaryType;\n  itemToQualify: ItemToQualify;\n  organizationType: OrganizationType;\n  noDiscType: NoDiscType;\n  hasEndButton: boolean;\n  hasChronometer: boolean;\n  programmingLanguageId: number;\n  hasGameTest: boolean;\n  hasManipulationScale?: boolean;\n  isNewTest: boolean;\n  isTranslatable: boolean;\n  isOriginal?: boolean;\n  stringId: string;\n  gameTest: GameTest;\n  companyId?: number;\n  hasTestControl?: boolean;\n  isModular?: boolean;\n  questionaryIncompatibilities?: QuestionaryIncompatibility[];\n  logFileUrl: string;\n}\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport { Origin } from 'aurelia-metadata';\nimport { Loader } from 'aurelia-loader';\nimport { DOM, PLATFORM } from 'aurelia-pal';\n/**\n* An implementation of the TemplateLoader interface implemented with text-based loading.\n*/\nvar TextTemplateLoader = /** @class */ (function () {\n    function TextTemplateLoader() {\n    }\n    /**\n    * Loads a template.\n    * @param loader The loader that is requesting the template load.\n    * @param entry The TemplateRegistryEntry to load and populate with a template.\n    * @return A promise which resolves when the TemplateRegistryEntry is loaded with a template.\n    */\n    TextTemplateLoader.prototype.loadTemplate = function (loader, entry) {\n        return __awaiter(this, void 0, void 0, function () {\n            var text;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, loader.loadText(entry.address)];\n                    case 1:\n                        text = _a.sent();\n                        entry.template = DOM.createTemplateFromMarkup(text);\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    return TextTemplateLoader;\n}());\nexport { TextTemplateLoader };\nexport function ensureOriginOnExports(moduleExports, moduleId) {\n    var target = moduleExports;\n    var key;\n    var exportedValue;\n    if (target.__useDefault) {\n        target = target.default;\n    }\n    Origin.set(target, new Origin(moduleId, 'default'));\n    if (typeof target === 'object') {\n        for (key in target) {\n            exportedValue = target[key];\n            if (typeof exportedValue === 'function') {\n                Origin.set(exportedValue, new Origin(moduleId, key));\n            }\n        }\n    }\n    return moduleExports;\n}\n/**\n* A default implementation of the Loader abstraction which works with webpack (extended common-js style).\n*/\nvar WebpackLoader = /** @class */ (function (_super) {\n    __extends(WebpackLoader, _super);\n    function WebpackLoader() {\n        var _this = _super.call(this) || this;\n        _this.moduleRegistry = Object.create(null);\n        _this.loaderPlugins = Object.create(null);\n        _this.modulesBeingLoaded = new Map();\n        _this.useTemplateLoader(new TextTemplateLoader());\n        _this.addPlugin('template-registry-entry', {\n            fetch: function (moduleId) { return __awaiter(_this, void 0, void 0, function () {\n                var HmrContext, entry;\n                var _this = this;\n                return __generator(this, function (_a) {\n                    switch (_a.label) {\n                        case 0:\n                            // HMR:\n                            if (module.hot) {\n                                if (!this.hmrContext) {\n                                    HmrContext = require('aurelia-hot-module-reload').HmrContext;\n                                    this.hmrContext = new HmrContext(this);\n                                }\n                                module.hot.accept(moduleId, function () { return __awaiter(_this, void 0, void 0, function () {\n                                    return __generator(this, function (_a) {\n                                        switch (_a.label) {\n                                            case 0: return [4 /*yield*/, this.hmrContext.handleViewChange(moduleId)];\n                                            case 1:\n                                                _a.sent();\n                                                return [2 /*return*/];\n                                        }\n                                    });\n                                }); });\n                            }\n                            entry = this.getOrCreateTemplateRegistryEntry(moduleId);\n                            if (!!entry.templateIsLoaded) return [3 /*break*/, 2];\n                            return [4 /*yield*/, this.templateLoader.loadTemplate(this, entry)];\n                        case 1:\n                            _a.sent();\n                            _a.label = 2;\n                        case 2: return [2 /*return*/, entry];\n                    }\n                });\n            }); }\n        });\n        PLATFORM.eachModule = function (callback) {\n            var registry = __webpack_require__.c;\n            var cachedModuleIds = Object.getOwnPropertyNames(registry);\n            cachedModuleIds\n                // Note: we use .some here like a .forEach that can be \"break\"ed out of.\n                // It will stop iterating only when a truthy value is returned.\n                // Even though the docs say \"true\" explicitly, loader-default also goes by truthy\n                // and this is to keep it consistent with that.\n                .some(function (moduleId) {\n                var moduleExports = registry[moduleId].exports;\n                if (typeof moduleExports === 'object') {\n                    return callback(moduleId, moduleExports);\n                }\n                return false;\n            });\n        };\n        return _this;\n    }\n    WebpackLoader.prototype._import = function (address, defaultHMR) {\n        if (defaultHMR === void 0) { defaultHMR = true; }\n        return __awaiter(this, void 0, void 0, function () {\n            var addressParts, moduleId, loaderPlugin, plugin_1, asyncModuleId, callback;\n            var _this = this;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        addressParts = address.split('!');\n                        moduleId = addressParts.splice(addressParts.length - 1, 1)[0];\n                        loaderPlugin = addressParts.length === 1 ? addressParts[0] : null;\n                        if (!loaderPlugin) return [3 /*break*/, 2];\n                        plugin_1 = this.loaderPlugins[loaderPlugin];\n                        if (!plugin_1) {\n                            throw new Error(\"Plugin \" + loaderPlugin + \" is not registered in the loader.\");\n                        }\n                        if (module.hot && plugin_1.hot) {\n                            module.hot.accept(moduleId, function () { return plugin_1.hot(moduleId); });\n                        }\n                        return [4 /*yield*/, plugin_1.fetch(moduleId)];\n                    case 1: return [2 /*return*/, _a.sent()];\n                    case 2:\n                        if (__webpack_require__.m[moduleId]) {\n                            if (defaultHMR && module.hot && this.hmrContext) {\n                                module.hot.accept(moduleId, function () { return _this.hmrContext.handleModuleChange(moduleId, module.hot); });\n                            }\n                            return [2 /*return*/, __webpack_require__(moduleId)];\n                        }\n                        asyncModuleId = \"async!\" + moduleId;\n                        if (!__webpack_require__.m[asyncModuleId]) return [3 /*break*/, 4];\n                        if (defaultHMR && module.hot && this.hmrContext) {\n                            module.hot.accept(moduleId, function () { return _this.hmrContext.handleModuleChange(moduleId, module.hot); });\n                            module.hot.accept(asyncModuleId, function () { return _this.hmrContext.handleModuleChange(moduleId, module.hot); });\n                        }\n                        callback = __webpack_require__(asyncModuleId);\n                        return [4 /*yield*/, new Promise(callback)];\n                    case 3: return [2 /*return*/, _a.sent()];\n                    case 4: throw new Error(\"Unable to find module with ID: \" + moduleId);\n                }\n            });\n        });\n    };\n    /**\n    * Maps a module id to a source.\n    * @param id The module id.\n    * @param source The source to map the module to.\n    */\n    WebpackLoader.prototype.map = function (id, source) { };\n    /**\n    * Normalizes a module id.\n    * @param moduleId The module id to normalize.\n    * @param relativeTo What the module id should be normalized relative to.\n    * @return The normalized module id.\n    */\n    WebpackLoader.prototype.normalizeSync = function (moduleId, relativeTo) {\n        return moduleId;\n    };\n    /**\n    * Normalizes a module id.\n    * @param moduleId The module id to normalize.\n    * @param relativeTo What the module id should be normalized relative to.\n    * @return The normalized module id.\n    */\n    WebpackLoader.prototype.normalize = function (moduleId, relativeTo) {\n        return Promise.resolve(moduleId);\n    };\n    /**\n    * Instructs the loader to use a specific TemplateLoader instance for loading templates\n    * @param templateLoader The instance of TemplateLoader to use for loading templates.\n    */\n    WebpackLoader.prototype.useTemplateLoader = function (templateLoader) {\n        this.templateLoader = templateLoader;\n    };\n    /**\n    * Loads a collection of modules.\n    * @param ids The set of module ids to load.\n    * @return A Promise for an array of loaded modules.\n    */\n    WebpackLoader.prototype.loadAllModules = function (ids) {\n        var _this = this;\n        return Promise.all(ids.map(function (id) { return _this.loadModule(id); }));\n    };\n    /**\n    * Loads a module.\n    * @param moduleId The module ID to load.\n    * @return A Promise for the loaded module.\n    */\n    WebpackLoader.prototype.loadModule = function (moduleId, defaultHMR) {\n        if (defaultHMR === void 0) { defaultHMR = true; }\n        return __awaiter(this, void 0, void 0, function () {\n            var existing, beingLoaded, moduleExports;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        existing = this.moduleRegistry[moduleId];\n                        if (existing) {\n                            return [2 /*return*/, existing];\n                        }\n                        beingLoaded = this.modulesBeingLoaded.get(moduleId);\n                        if (beingLoaded) {\n                            return [2 /*return*/, beingLoaded];\n                        }\n                        beingLoaded = this._import(moduleId, defaultHMR);\n                        this.modulesBeingLoaded.set(moduleId, beingLoaded);\n                        return [4 /*yield*/, beingLoaded];\n                    case 1:\n                        moduleExports = _a.sent();\n                        this.moduleRegistry[moduleId] = ensureOriginOnExports(moduleExports, moduleId);\n                        this.modulesBeingLoaded.delete(moduleId);\n                        return [2 /*return*/, moduleExports];\n                }\n            });\n        });\n    };\n    /**\n    * Loads a template.\n    * @param url The url of the template to load.\n    * @return A Promise for a TemplateRegistryEntry containing the template.\n    */\n    WebpackLoader.prototype.loadTemplate = function (url) {\n        return this.loadModule(this.applyPluginToUrl(url, 'template-registry-entry'), false);\n    };\n    /**\n    * Loads a text-based resource.\n    * @param url The url of the text file to load.\n    * @return A Promise for text content.\n    */\n    WebpackLoader.prototype.loadText = function (url) {\n        return __awaiter(this, void 0, void 0, function () {\n            var result;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, this.loadModule(url, false)];\n                    case 1:\n                        result = _a.sent();\n                        if (result instanceof Array && result[0] instanceof Array && result.hasOwnProperty('toString')) {\n                            // we're dealing with a file loaded using the css-loader:\n                            return [2 /*return*/, result.toString()];\n                        }\n                        return [2 /*return*/, result];\n                }\n            });\n        });\n    };\n    /**\n    * Alters a module id so that it includes a plugin loader.\n    * @param url The url of the module to load.\n    * @param pluginName The plugin to apply to the module id.\n    * @return The plugin-based module id.\n    */\n    WebpackLoader.prototype.applyPluginToUrl = function (url, pluginName) {\n        return pluginName + \"!\" + url;\n    };\n    /**\n    * Registers a plugin with the loader.\n    * @param pluginName The name of the plugin.\n    * @param implementation The plugin implementation.\n    */\n    WebpackLoader.prototype.addPlugin = function (pluginName, implementation) {\n        this.loaderPlugins[pluginName] = implementation;\n    };\n    return WebpackLoader;\n}(Loader));\nexport { WebpackLoader };\nPLATFORM.Loader = WebpackLoader;\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import 'aurelia-polyfills';\nimport { PLATFORM, isInitialized } from 'aurelia-pal';\n\nvar bootstrapPromises = [];\nvar startResolve = void 0;\n\nvar startPromise = new Promise(function (resolve) {\n  return startResolve = resolve;\n});\nvar host = PLATFORM.global;\nvar isNodeLike = typeof process !== 'undefined' && !process.browser;\n\nfunction ready() {\n  if (!host.document || host.document.readyState === 'complete') {\n    return Promise.resolve();\n  }\n\n  return new Promise(function (resolve) {\n    host.document.addEventListener('DOMContentLoaded', completed);\n    host.addEventListener('load', completed);\n\n    function completed() {\n      host.document.removeEventListener('DOMContentLoaded', completed);\n      host.removeEventListener('load', completed);\n      resolve();\n    }\n  });\n}\n\nfunction createLoader() {\n  if (PLATFORM.Loader) {\n    return Promise.resolve(new PLATFORM.Loader());\n  }\n\n  if (typeof AURELIA_WEBPACK_2_0 === 'undefined') {\n    if (typeof __webpack_require__ !== 'undefined') {\n      var m = __webpack_require__(require.resolve('aurelia-loader-webpack'));\n      return Promise.resolve(new m.WebpackLoader());\n    }\n\n    if (host.System && typeof host.System.config === 'function') {\n      return host.System.normalize('aurelia-bootstrapper').then(function (bsn) {\n        return host.System.normalize('aurelia-loader-default', bsn);\n      }).then(function (loaderName) {\n        return host.System.import(loaderName).then(function (m) {\n          return new m.DefaultLoader();\n        });\n      });\n    }\n\n    if (typeof host.require === 'function' && typeof host.require.version === 'string') {\n      return new Promise(function (resolve, reject) {\n        return host.require(['aurelia-loader-default'], function (m) {\n          return resolve(new m.DefaultLoader());\n        }, reject);\n      });\n    }\n\n    if (isNodeLike && typeof module !== 'undefined' && typeof module.require !== 'undefined') {\n      var _m = module.require('aurelia-loader-nodejs');\n      return Promise.resolve(new _m.NodeJsLoader());\n    }\n  }\n\n  return Promise.reject('No PLATFORM.Loader is defined and there is neither a System API (ES6) or a Require API (AMD) globally available to load your app.');\n}\n\nfunction initializePal(loader) {\n  var type = void 0;\n\n  var isRenderer = isNodeLike && (process.type === 'renderer' || process.versions['node-webkit']);\n\n  if (isNodeLike && !isRenderer) {\n    type = 'nodejs';\n  } else if (typeof window !== 'undefined') {\n    type = 'browser';\n  } else if (typeof self !== 'undefined') {\n    type = 'worker';\n  } else {\n    throw new Error('Could not determine platform implementation to load.');\n  }\n\n  return loader.loadModule('aurelia-pal-' + type).then(function (palModule) {\n    return type === 'nodejs' && !isInitialized && palModule.globalize() || palModule.initialize();\n  });\n}\n\nfunction preparePlatform(loader) {\n  var map = function map(moduleId, relativeTo) {\n    return loader.normalize(moduleId, relativeTo).then(function (normalized) {\n      loader.map(moduleId, normalized);\n      return normalized;\n    });\n  };\n\n  return initializePal(loader).then(function () {\n    return loader.normalize('aurelia-bootstrapper');\n  }).then(function (bootstrapperName) {\n    var frameworkPromise = map(PLATFORM.moduleName('aurelia-framework', { exports: ['Aurelia'] }), bootstrapperName);\n\n    return Promise.all([frameworkPromise, frameworkPromise.then(function (frameworkName) {\n      return map('aurelia-dependency-injection', frameworkName);\n    }), map('aurelia-router', bootstrapperName), map('aurelia-logging-console', bootstrapperName)]);\n  }).then(function (_ref) {\n    var frameworkName = _ref[0];\n    return loader.loadModule(frameworkName);\n  }).then(function (fx) {\n    return startResolve(function () {\n      return new fx.Aurelia(loader);\n    });\n  });\n}\n\nfunction config(appHost, configModuleId, aurelia) {\n  aurelia.host = appHost;\n  aurelia.configModuleId = configModuleId || null;\n\n  if (configModuleId) {\n    return aurelia.loader.loadModule(configModuleId).then(function (customConfig) {\n      if (!customConfig.configure) {\n        throw new Error('Cannot initialize module \\'' + configModuleId + '\\' without a configure function.');\n      }\n\n      return customConfig.configure(aurelia);\n    });\n  }\n\n  aurelia.use.standardConfiguration().developmentLogging();\n\n  return aurelia.start().then(function () {\n    return aurelia.setRoot();\n  });\n}\n\nfunction run() {\n  return ready().then(createLoader).then(preparePlatform).then(function () {\n    var appHosts = host.document.querySelectorAll('[aurelia-app],[data-aurelia-app]');\n    for (var i = 0, ii = appHosts.length; i < ii; ++i) {\n      var appHost = appHosts[i];\n      var moduleId = appHost.getAttribute('aurelia-app') || appHost.getAttribute('data-aurelia-app');\n      bootstrap(config.bind(null, appHost, moduleId));\n    }\n\n    var toConsole = console.error.bind(console);\n    var bootstraps = bootstrapPromises.map(function (p) {\n      return p.catch(toConsole);\n    });\n    bootstrapPromises = null;\n    return Promise.all(bootstraps);\n  });\n}\n\nexport function bootstrap(configure) {\n  var p = startPromise.then(function (factory) {\n    return configure(factory());\n  });\n  if (bootstrapPromises) bootstrapPromises.push(p);\n  return p;\n}\n\nexport var starting = run();","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\nimport { PLATFORM } from 'aurelia-pal';\n\nif (typeof FEATURE_NO_ES2015 === 'undefined') {\n\n  (function (Object, GOPS) {\n    'use strict';\n\n    if (GOPS in Object) return;\n\n    var setDescriptor,\n        G = PLATFORM.global,\n        id = 0,\n        random = '' + Math.random(),\n        prefix = '__\\x01symbol:',\n        prefixLength = prefix.length,\n        internalSymbol = '__\\x01symbol@@' + random,\n        DP = 'defineProperty',\n        DPies = 'defineProperties',\n        GOPN = 'getOwnPropertyNames',\n        GOPD = 'getOwnPropertyDescriptor',\n        PIE = 'propertyIsEnumerable',\n        gOPN = Object[GOPN],\n        gOPD = Object[GOPD],\n        create = Object.create,\n        keys = Object.keys,\n        defineProperty = Object[DP],\n        $defineProperties = Object[DPies],\n        descriptor = gOPD(Object, GOPN),\n        ObjectProto = Object.prototype,\n        hOP = ObjectProto.hasOwnProperty,\n        pIE = ObjectProto[PIE],\n        toString = ObjectProto.toString,\n        indexOf = Array.prototype.indexOf || function (v) {\n      for (var i = this.length; i-- && this[i] !== v;) {}\n      return i;\n    },\n        addInternalIfNeeded = function addInternalIfNeeded(o, uid, enumerable) {\n      if (!hOP.call(o, internalSymbol)) {\n        defineProperty(o, internalSymbol, {\n          enumerable: false,\n          configurable: false,\n          writable: false,\n          value: {}\n        });\n      }\n      o[internalSymbol]['@@' + uid] = enumerable;\n    },\n        createWithSymbols = function createWithSymbols(proto, descriptors) {\n      var self = create(proto);\n      if (descriptors !== null && (typeof descriptors === 'undefined' ? 'undefined' : _typeof(descriptors)) === 'object') {\n        gOPN(descriptors).forEach(function (key) {\n          if (propertyIsEnumerable.call(descriptors, key)) {\n            $defineProperty(self, key, descriptors[key]);\n          }\n        });\n      }\n      return self;\n    },\n        copyAsNonEnumerable = function copyAsNonEnumerable(descriptor) {\n      var newDescriptor = create(descriptor);\n      newDescriptor.enumerable = false;\n      return newDescriptor;\n    },\n        get = function get() {},\n        onlyNonSymbols = function onlyNonSymbols(name) {\n      return name != internalSymbol && !hOP.call(source, name);\n    },\n        onlySymbols = function onlySymbols(name) {\n      return name != internalSymbol && hOP.call(source, name);\n    },\n        propertyIsEnumerable = function propertyIsEnumerable(key) {\n      var uid = '' + key;\n      return onlySymbols(uid) ? hOP.call(this, uid) && this[internalSymbol] && this[internalSymbol]['@@' + uid] : pIE.call(this, key);\n    },\n        setAndGetSymbol = function setAndGetSymbol(uid) {\n      var descriptor = {\n        enumerable: false,\n        configurable: true,\n        get: get,\n        set: function set(value) {\n          setDescriptor(this, uid, {\n            enumerable: false,\n            configurable: true,\n            writable: true,\n            value: value\n          });\n          addInternalIfNeeded(this, uid, true);\n        }\n      };\n      defineProperty(ObjectProto, uid, descriptor);\n      return source[uid] = defineProperty(Object(uid), 'constructor', sourceConstructor);\n    },\n        _Symbol = function _Symbol2(description) {\n      if (this && this !== G) {\n        throw new TypeError('Symbol is not a constructor');\n      }\n      return setAndGetSymbol(prefix.concat(description || '', random, ++id));\n    },\n        source = create(null),\n        sourceConstructor = { value: _Symbol },\n        sourceMap = function sourceMap(uid) {\n      return source[uid];\n    },\n        $defineProperty = function defineProp(o, key, descriptor) {\n      var uid = '' + key;\n      if (onlySymbols(uid)) {\n        setDescriptor(o, uid, descriptor.enumerable ? copyAsNonEnumerable(descriptor) : descriptor);\n        addInternalIfNeeded(o, uid, !!descriptor.enumerable);\n      } else {\n        defineProperty(o, key, descriptor);\n      }\n      return o;\n    },\n        $getOwnPropertySymbols = function getOwnPropertySymbols(o) {\n      var cof = toString.call(o);\n      o = cof === '[object String]' ? o.split('') : Object(o);\n      return gOPN(o).filter(onlySymbols).map(sourceMap);\n    };\n\n    descriptor.value = $defineProperty;\n    defineProperty(Object, DP, descriptor);\n\n    descriptor.value = $getOwnPropertySymbols;\n    defineProperty(Object, GOPS, descriptor);\n\n    var cachedWindowNames = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' ? Object.getOwnPropertyNames(window) : [];\n    var originalObjectGetOwnPropertyNames = Object.getOwnPropertyNames;\n    descriptor.value = function getOwnPropertyNames(o) {\n      if (toString.call(o) === '[object Window]') {\n        try {\n          return originalObjectGetOwnPropertyNames(o);\n        } catch (e) {\n          return [].concat([], cachedWindowNames);\n        }\n      }\n      return gOPN(o).filter(onlyNonSymbols);\n    };\n    defineProperty(Object, GOPN, descriptor);\n\n    descriptor.value = function defineProperties(o, descriptors) {\n      var symbols = $getOwnPropertySymbols(descriptors);\n      if (symbols.length) {\n        keys(descriptors).concat(symbols).forEach(function (uid) {\n          if (propertyIsEnumerable.call(descriptors, uid)) {\n            $defineProperty(o, uid, descriptors[uid]);\n          }\n        });\n      } else {\n        $defineProperties(o, descriptors);\n      }\n      return o;\n    };\n    defineProperty(Object, DPies, descriptor);\n\n    descriptor.value = propertyIsEnumerable;\n    defineProperty(ObjectProto, PIE, descriptor);\n\n    descriptor.value = _Symbol;\n    defineProperty(G, 'Symbol', descriptor);\n\n    descriptor.value = function (key) {\n      var uid = prefix.concat(prefix, key, random);\n      return uid in ObjectProto ? source[uid] : setAndGetSymbol(uid);\n    };\n    defineProperty(_Symbol, 'for', descriptor);\n\n    descriptor.value = function (symbol) {\n      return hOP.call(source, symbol) ? symbol.slice(prefixLength * 2, -random.length) : void 0;\n    };\n    defineProperty(_Symbol, 'keyFor', descriptor);\n\n    descriptor.value = function getOwnPropertyDescriptor(o, key) {\n      var descriptor = gOPD(o, key);\n      if (descriptor && onlySymbols(key)) {\n        descriptor.enumerable = propertyIsEnumerable.call(o, key);\n      }\n      return descriptor;\n    };\n    defineProperty(Object, GOPD, descriptor);\n\n    descriptor.value = function (proto, descriptors) {\n      return arguments.length === 1 ? create(proto) : createWithSymbols(proto, descriptors);\n    };\n    defineProperty(Object, 'create', descriptor);\n\n    descriptor.value = function () {\n      var str = toString.call(this);\n      return str === '[object String]' && onlySymbols(this) ? '[object Symbol]' : str;\n    };\n    defineProperty(ObjectProto, 'toString', descriptor);\n\n    try {\n      setDescriptor = create(defineProperty({}, prefix, {\n        get: function get() {\n          return defineProperty(this, prefix, { value: false })[prefix];\n        }\n      }))[prefix] || defineProperty;\n    } catch (o_O) {\n      setDescriptor = function setDescriptor(o, key, descriptor) {\n        var protoDescriptor = gOPD(ObjectProto, key);\n        delete ObjectProto[key];\n        defineProperty(o, key, descriptor);\n        defineProperty(ObjectProto, key, protoDescriptor);\n      };\n    }\n  })(Object, 'getOwnPropertySymbols');\n\n  (function (O, S) {\n    var dP = O.defineProperty,\n        ObjectProto = O.prototype,\n        toString = ObjectProto.toString,\n        toStringTag = 'toStringTag',\n        descriptor;\n    ['iterator', 'match', 'replace', 'search', 'split', 'hasInstance', 'isConcatSpreadable', 'unscopables', 'species', 'toPrimitive', toStringTag].forEach(function (name) {\n      if (!(name in Symbol)) {\n        dP(Symbol, name, { value: Symbol(name) });\n        switch (name) {\n          case toStringTag:\n            descriptor = O.getOwnPropertyDescriptor(ObjectProto, 'toString');\n            descriptor.value = function () {\n              var str = toString.call(this),\n                  tst = typeof this === 'undefined' || this === null ? undefined : this[Symbol.toStringTag];\n              return typeof tst === 'undefined' ? str : '[object ' + tst + ']';\n            };\n            dP(ObjectProto, 'toString', descriptor);\n            break;\n        }\n      }\n    });\n  })(Object, Symbol);\n\n  (function (Si, AP, SP) {\n\n    function returnThis() {\n      return this;\n    }\n\n    if (!AP[Si]) AP[Si] = function () {\n      var i = 0,\n          self = this,\n          iterator = {\n        next: function next() {\n          var done = self.length <= i;\n          return done ? { done: done } : { done: done, value: self[i++] };\n        }\n      };\n      iterator[Si] = returnThis;\n      return iterator;\n    };\n\n    if (!SP[Si]) SP[Si] = function () {\n      var fromCodePoint = String.fromCodePoint,\n          self = this,\n          i = 0,\n          length = self.length,\n          iterator = {\n        next: function next() {\n          var done = length <= i,\n              c = done ? '' : fromCodePoint(self.codePointAt(i));\n          i += c.length;\n          return done ? { done: done } : { done: done, value: c };\n        }\n      };\n      iterator[Si] = returnThis;\n      return iterator;\n    };\n  })(Symbol.iterator, Array.prototype, String.prototype);\n}\n\nif (typeof FEATURE_NO_ES2015 === 'undefined') {\n\n  Number.isNaN = Number.isNaN || function (value) {\n    return value !== value;\n  };\n\n  Number.isFinite = Number.isFinite || function (value) {\n    return typeof value === \"number\" && isFinite(value);\n  };\n}\n\nif (!String.prototype.endsWith || function () {\n  try {\n    return !\"ab\".endsWith(\"a\", 1);\n  } catch (e) {\n    return true;\n  }\n}()) {\n  String.prototype.endsWith = function (searchString, position) {\n    var subjectString = this.toString();\n    if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n      position = subjectString.length;\n    }\n    position -= searchString.length;\n    var lastIndex = subjectString.indexOf(searchString, position);\n    return lastIndex !== -1 && lastIndex === position;\n  };\n}\n\nif (!String.prototype.startsWith || function () {\n  try {\n    return !\"ab\".startsWith(\"b\", 1);\n  } catch (e) {\n    return true;\n  }\n}()) {\n  String.prototype.startsWith = function (searchString, position) {\n    position = position || 0;\n    return this.substr(position, searchString.length) === searchString;\n  };\n}\n\nif (typeof FEATURE_NO_ES2015 === 'undefined') {\n\n  if (!Array.from) {\n    Array.from = function () {\n      var toInteger = function toInteger(it) {\n        return isNaN(it = +it) ? 0 : (it > 0 ? Math.floor : Math.ceil)(it);\n      };\n      var toLength = function toLength(it) {\n        return it > 0 ? Math.min(toInteger(it), 0x1fffffffffffff) : 0;\n      };\n      var iterCall = function iterCall(iter, fn, val, index) {\n        try {\n          return fn(val, index);\n        } catch (E) {\n          if (typeof iter.return == 'function') iter.return();\n          throw E;\n        }\n      };\n\n      return function from(arrayLike) {\n        var O = Object(arrayLike),\n            C = typeof this == 'function' ? this : Array,\n            aLen = arguments.length,\n            mapfn = aLen > 1 ? arguments[1] : undefined,\n            mapping = mapfn !== undefined,\n            index = 0,\n            iterFn = O[Symbol.iterator],\n            length,\n            result,\n            step,\n            iterator;\n        if (mapping) mapfn = mapfn.bind(aLen > 2 ? arguments[2] : undefined);\n        if (iterFn != undefined && !Array.isArray(arrayLike)) {\n          for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n            result[index] = mapping ? iterCall(iterator, mapfn, step.value, index) : step.value;\n          }\n        } else {\n          length = toLength(O.length);\n          for (result = new C(length); length > index; index++) {\n            result[index] = mapping ? mapfn(O[index], index) : O[index];\n          }\n        }\n        result.length = index;\n        return result;\n      };\n    }();\n  }\n\n  if (!Array.prototype.find) {\n    Object.defineProperty(Array.prototype, 'find', {\n      configurable: true,\n      writable: true,\n      enumerable: false,\n      value: function value(predicate) {\n        if (this === null) {\n          throw new TypeError('Array.prototype.find called on null or undefined');\n        }\n        if (typeof predicate !== 'function') {\n          throw new TypeError('predicate must be a function');\n        }\n        var list = Object(this);\n        var length = list.length >>> 0;\n        var thisArg = arguments[1];\n        var value;\n\n        for (var i = 0; i < length; i++) {\n          value = list[i];\n          if (predicate.call(thisArg, value, i, list)) {\n            return value;\n          }\n        }\n        return undefined;\n      }\n    });\n  }\n\n  if (!Array.prototype.findIndex) {\n    Object.defineProperty(Array.prototype, 'findIndex', {\n      configurable: true,\n      writable: true,\n      enumerable: false,\n      value: function value(predicate) {\n        if (this === null) {\n          throw new TypeError('Array.prototype.findIndex called on null or undefined');\n        }\n        if (typeof predicate !== 'function') {\n          throw new TypeError('predicate must be a function');\n        }\n        var list = Object(this);\n        var length = list.length >>> 0;\n        var thisArg = arguments[1];\n        var value;\n\n        for (var i = 0; i < length; i++) {\n          value = list[i];\n          if (predicate.call(thisArg, value, i, list)) {\n            return i;\n          }\n        }\n        return -1;\n      }\n    });\n  }\n}\n\nif (typeof FEATURE_NO_ES2016 === 'undefined' && !Array.prototype.includes) {\n  Object.defineProperty(Array.prototype, 'includes', {\n    configurable: true,\n    writable: true,\n    enumerable: false,\n    value: function value(searchElement) {\n      var O = Object(this);\n      var len = parseInt(O.length) || 0;\n      if (len === 0) {\n        return false;\n      }\n      var n = parseInt(arguments[1]) || 0;\n      var k;\n      if (n >= 0) {\n        k = n;\n      } else {\n        k = len + n;\n        if (k < 0) {\n          k = 0;\n        }\n      }\n      var currentElement;\n      while (k < len) {\n        currentElement = O[k];\n        if (searchElement === currentElement || searchElement !== searchElement && currentElement !== currentElement) {\n          return true;\n        }\n        k++;\n      }\n      return false;\n    }\n  });\n}\n\nif (typeof FEATURE_NO_ES2015 === 'undefined') {\n\n  (function () {\n    var needsFix = false;\n\n    try {\n      var s = Object.keys('a');\n      needsFix = s.length !== 1 || s[0] !== '0';\n    } catch (e) {\n      needsFix = true;\n    }\n\n    if (needsFix) {\n      Object.keys = function () {\n        var hasOwnProperty = Object.prototype.hasOwnProperty,\n            hasDontEnumBug = !{ toString: null }.propertyIsEnumerable('toString'),\n            dontEnums = ['toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor'],\n            dontEnumsLength = dontEnums.length;\n\n        return function (obj) {\n          if (obj === undefined || obj === null) {\n            throw TypeError('Cannot convert undefined or null to object');\n          }\n\n          obj = Object(obj);\n\n          var result = [],\n              prop,\n              i;\n\n          for (prop in obj) {\n            if (hasOwnProperty.call(obj, prop)) {\n              result.push(prop);\n            }\n          }\n\n          if (hasDontEnumBug) {\n            for (i = 0; i < dontEnumsLength; i++) {\n              if (hasOwnProperty.call(obj, dontEnums[i])) {\n                result.push(dontEnums[i]);\n              }\n            }\n          }\n\n          return result;\n        };\n      }();\n    }\n  })();\n\n  (function (O) {\n    if ('assign' in O) {\n      return;\n    }\n\n    O.defineProperty(O, 'assign', {\n      configurable: true,\n      writable: true,\n      value: function () {\n        var gOPS = O.getOwnPropertySymbols,\n            pIE = O.propertyIsEnumerable,\n            filterOS = gOPS ? function (self) {\n          return gOPS(self).filter(pIE, self);\n        } : function () {\n          return Array.prototype;\n        };\n\n        return function assign(where) {\n          if (gOPS && !(where instanceof O)) {\n            console.warn('problematic Symbols', where);\n          }\n\n          function set(keyOrSymbol) {\n            where[keyOrSymbol] = arg[keyOrSymbol];\n          }\n\n          for (var i = 1, ii = arguments.length; i < ii; ++i) {\n            var arg = arguments[i];\n\n            if (arg === null || arg === undefined) {\n              continue;\n            }\n\n            O.keys(arg).concat(filterOS(arg)).forEach(set);\n          }\n\n          return where;\n        };\n      }()\n    });\n  })(Object);\n\n  if (!Object.is) {\n    Object.is = function (x, y) {\n      if (x === y) {\n        return x !== 0 || 1 / x === 1 / y;\n      } else {\n        return x !== x && y !== y;\n      }\n    };\n  }\n}\n\nif (typeof FEATURE_NO_ES2015 === 'undefined') {\n\n  (function (global) {\n    var i;\n\n    var defineProperty = Object.defineProperty,\n        is = function is(a, b) {\n      return a === b || a !== a && b !== b;\n    };\n\n    if (typeof WeakMap == 'undefined') {\n      global.WeakMap = createCollection({\n        'delete': sharedDelete,\n\n        clear: sharedClear,\n\n        get: sharedGet,\n\n        has: mapHas,\n\n        set: sharedSet\n      }, true);\n    }\n\n    if (typeof Map == 'undefined' || typeof new Map().values !== 'function' || !new Map().values().next) {\n      var _createCollection;\n\n      global.Map = createCollection((_createCollection = {\n        'delete': sharedDelete,\n\n        has: mapHas,\n\n        get: sharedGet,\n\n        set: sharedSet,\n\n        keys: sharedKeys,\n\n        values: sharedValues,\n\n        entries: mapEntries,\n\n        forEach: sharedForEach,\n\n        clear: sharedClear\n      }, _createCollection[Symbol.iterator] = mapEntries, _createCollection));\n    }\n\n    if (typeof Set == 'undefined' || typeof new Set().values !== 'function' || !new Set().values().next) {\n      var _createCollection2;\n\n      global.Set = createCollection((_createCollection2 = {\n        has: setHas,\n\n        add: sharedAdd,\n\n        'delete': sharedDelete,\n\n        clear: sharedClear,\n\n        keys: sharedValues,\n        values: sharedValues,\n\n        entries: setEntries,\n\n        forEach: sharedForEach\n      }, _createCollection2[Symbol.iterator] = sharedValues, _createCollection2));\n    }\n\n    if (typeof WeakSet == 'undefined') {\n      global.WeakSet = createCollection({\n        'delete': sharedDelete,\n\n        add: sharedAdd,\n\n        clear: sharedClear,\n\n        has: setHas\n      }, true);\n    }\n\n    function createCollection(proto, objectOnly) {\n      function Collection(a) {\n        if (!this || this.constructor !== Collection) return new Collection(a);\n        this._keys = [];\n        this._values = [];\n        this._itp = [];\n        this.objectOnly = objectOnly;\n\n        if (a) init.call(this, a);\n      }\n\n      if (!objectOnly) {\n        defineProperty(proto, 'size', {\n          get: sharedSize\n        });\n      }\n\n      proto.constructor = Collection;\n      Collection.prototype = proto;\n\n      return Collection;\n    }\n\n    function init(a) {\n      var i;\n\n      if (this.add) a.forEach(this.add, this);else a.forEach(function (a) {\n          this.set(a[0], a[1]);\n        }, this);\n    }\n\n    function sharedDelete(key) {\n      if (this.has(key)) {\n        this._keys.splice(i, 1);\n        this._values.splice(i, 1);\n\n        this._itp.forEach(function (p) {\n          if (i < p[0]) p[0]--;\n        });\n      }\n\n      return -1 < i;\n    };\n\n    function sharedGet(key) {\n      return this.has(key) ? this._values[i] : undefined;\n    }\n\n    function has(list, key) {\n      if (this.objectOnly && key !== Object(key)) throw new TypeError(\"Invalid value used as weak collection key\");\n\n      if (key != key || key === 0) for (i = list.length; i-- && !is(list[i], key);) {} else i = list.indexOf(key);\n      return -1 < i;\n    }\n\n    function setHas(value) {\n      return has.call(this, this._values, value);\n    }\n\n    function mapHas(value) {\n      return has.call(this, this._keys, value);\n    }\n\n    function sharedSet(key, value) {\n      this.has(key) ? this._values[i] = value : this._values[this._keys.push(key) - 1] = value;\n      return this;\n    }\n\n    function sharedAdd(value) {\n      if (!this.has(value)) this._values.push(value);\n      return this;\n    }\n\n    function sharedClear() {\n      (this._keys || 0).length = this._values.length = 0;\n    }\n\n    function sharedKeys() {\n      return sharedIterator(this._itp, this._keys);\n    }\n\n    function sharedValues() {\n      return sharedIterator(this._itp, this._values);\n    }\n\n    function mapEntries() {\n      return sharedIterator(this._itp, this._keys, this._values);\n    }\n\n    function setEntries() {\n      return sharedIterator(this._itp, this._values, this._values);\n    }\n\n    function sharedIterator(itp, array, array2) {\n      var _ref;\n\n      var p = [0],\n          done = false;\n      itp.push(p);\n      return _ref = {}, _ref[Symbol.iterator] = function () {\n        return this;\n      }, _ref.next = function next() {\n        var v,\n            k = p[0];\n        if (!done && k < array.length) {\n          v = array2 ? [array[k], array2[k]] : array[k];\n          p[0]++;\n        } else {\n          done = true;\n          itp.splice(itp.indexOf(p), 1);\n        }\n        return { done: done, value: v };\n      }, _ref;\n    }\n\n    function sharedSize() {\n      return this._values.length;\n    }\n\n    function sharedForEach(callback, context) {\n      var it = this.entries();\n      for (;;) {\n        var r = it.next();\n        if (r.done) break;\n        callback.call(context, r.value[1], r.value[0], this);\n      }\n    }\n  })(PLATFORM.global);\n}\n\nif (typeof FEATURE_NO_ES2015 === 'undefined') {\n  (function () {\n\n    var bind = Function.prototype.bind;\n\n    if (typeof PLATFORM.global.Reflect === 'undefined') {\n      PLATFORM.global.Reflect = {};\n    }\n\n    if (typeof Reflect.defineProperty !== 'function') {\n      Reflect.defineProperty = function (target, propertyKey, descriptor) {\n        if ((typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' ? target === null : typeof target !== 'function') {\n          throw new TypeError('Reflect.defineProperty called on non-object');\n        }\n        try {\n          Object.defineProperty(target, propertyKey, descriptor);\n          return true;\n        } catch (e) {\n          return false;\n        }\n      };\n    }\n\n    if (typeof Reflect.construct !== 'function') {\n      Reflect.construct = function (Target, args) {\n        if (args) {\n          switch (args.length) {\n            case 0:\n              return new Target();\n            case 1:\n              return new Target(args[0]);\n            case 2:\n              return new Target(args[0], args[1]);\n            case 3:\n              return new Target(args[0], args[1], args[2]);\n            case 4:\n              return new Target(args[0], args[1], args[2], args[3]);\n          }\n        }\n\n        var a = [null];\n        a.push.apply(a, args);\n        return new (bind.apply(Target, a))();\n      };\n    }\n\n    if (typeof Reflect.ownKeys !== 'function') {\n      Reflect.ownKeys = function (o) {\n        return Object.getOwnPropertyNames(o).concat(Object.getOwnPropertySymbols(o));\n      };\n    }\n  })();\n}\n\nif (typeof FEATURE_NO_ESNEXT === 'undefined') {\n  (function () {\n\n    var emptyMetadata = Object.freeze({});\n    var metadataContainerKey = '__metadata__';\n\n    if (typeof Reflect.getOwnMetadata !== 'function') {\n      Reflect.getOwnMetadata = function (metadataKey, target, targetKey) {\n        if (target.hasOwnProperty(metadataContainerKey)) {\n          return (target[metadataContainerKey][targetKey] || emptyMetadata)[metadataKey];\n        }\n      };\n    }\n\n    if (typeof Reflect.defineMetadata !== 'function') {\n      Reflect.defineMetadata = function (metadataKey, metadataValue, target, targetKey) {\n        var metadataContainer = target.hasOwnProperty(metadataContainerKey) ? target[metadataContainerKey] : target[metadataContainerKey] = {};\n        var targetContainer = metadataContainer[targetKey] || (metadataContainer[targetKey] = {});\n        targetContainer[metadataKey] = metadataValue;\n      };\n    }\n\n    if (typeof Reflect.metadata !== 'function') {\n      Reflect.metadata = function (metadataKey, metadataValue) {\n        return function (target, targetKey) {\n          Reflect.defineMetadata(metadataKey, metadataValue, target, targetKey);\n        };\n      };\n    }\n  })();\n}","export class ResponseOption {\n    id: number;\n    order: number;\n    option?: string;\n    media: string;\n    isColumn: boolean;\n    questionId: number;\n    thumbnailImage: string;\n    thumbnailImageUrl: string;\n    weight: number;\n    parentId?: number;\n    parent?: ResponseOption;\n    children: Array<ResponseOption> = new Array<ResponseOption>();\n}\n","import { ItemToQualify } from 'models/questionaries/itemToQualify';\nimport { Sheet } from '../sheets/sheet';\nimport { Questionary } from 'models/questionaries/questionary';\nimport { OrganizationType } from 'models/questionaries/organizationType';\nimport { ActivationQuestionary } from 'models/test-person/activationQuestionary';\nimport { ReportTemplateThematicAssociate } from './report-template-thematic-associate';\n\nexport class ReportTemplate {\n  id: number;\n  name: string;\n  description: string;\n  itemToQualify: ItemToQualify;\n  organizationType?: OrganizationType;\n  isActive: boolean;\n  isDefault: boolean;\n  createdOn: Date;\n  createdBy: string;\n  languageId: number;\n  LanguageName: string;\n  isPredictor: boolean;\n\n  questionaries: Questionary[] = [];\n  questionaryIds: number[] = [];\n  reportTemplateQuestionaryIds: number[] = [];\n\n  sheetIds: number[] = [];\n  sheets: Sheet[] = [];\n\n  companyCompetenceIds: number[] = [];\n\n  reportTemplateThematicAssociates: ReportTemplateThematicAssociate[] = [];\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Wallet } from \"models/talents/wallet\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport config from 'config.js';\n\n@autoinject\nexport class WalletService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"TalentWalletService\");\n  }\n\n  public async getAll(): Promise<Wallet[]> {\n    return await this.client.get(\"wallet\")\n      .then((response: Wallet[]) => {\n        return response;\n      });\n  }\n\n  public async getByUserId(id: number): Promise<Wallet> {\n    return await this.client.get(`wallet`, id)\n      .then((response: Wallet) => {\n        return response;\n      });\n  }\n\n  public async balancesList(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"wallet/balances-list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getGeneralWallet(companyId: number): Promise<Wallet> {\n    let backendUrl = config.URLS_BACKEND;\n    this.client.baseUrl =  `${backendUrl}/api/v1/company/${companyId}/`;\n    return await this.client.get(\"wallet/general-wallet\")\n      .then((response: Wallet) => {\n        return response;\n      });\n  }\n\n  public async getUserWallet(id: number, companyId: number): Promise<Wallet> {\n    let backendUrl = config.URLS_BACKEND;\n    this.client.baseUrl =  `${backendUrl}/api/v1/company/${companyId}/`;\n    return await this.client.get(`wallet/user-wallet/${id}`)\n      .then((response: Wallet) => {\n        return response;\n      });\n  }\n\n  public async getTotalBalanceByCompany(companyId: number): Promise<Wallet> {\n    let backendUrl = config.URLS_BACKEND;\n    this.client.baseUrl =  `${backendUrl}/api/v1/company/${companyId}/`;\n    return await this.client.get(\"wallet/total-balance-by-company\")\n      .then((response: Wallet) => {\n        return response;\n      });\n  }\n\n  public async hasSeenLowBalanceMessage(companyId: number): Promise<void> {\n    let backendUrl = config.URLS_BACKEND;\n    this.client.baseUrl = `${backendUrl}/api/v1/company/${companyId}/`;\n    return await this.client.update(\"wallet/has-seen-low-balance-message\")\n      .then(() => null);\n  }\n}\n","const PredefinedPermission = {\n\n  LanguageView: \"admin_localization_language_view\",\n  LanguageCreate: \"admin_localization_language_create\",\n  LanguageUpdate: \"admin_localization_language_update\",\n  LanguageDelete: \"admin_localization_language_delete\",\n  LanguageActivate: \"admin_localization_language_activate\",\n\n  LabelView: \"admin_localization_label_view\",\n  LabelCreate: \"admin_localization_label_create\",\n  LabelUpdate: \"admin_localization_label_update\",\n  LabelDelete: \"admin_localization_label_delete\",\n\n  LocalizationView: \"admin_localization_localization_view\",\n  LocalizationCreate: \"admin_localization_localization_create\",\n  LocalizationUpdate: \"admin_localization_localization_update\",\n  LocalizationDelete: \"admin_localization_localization_delete\",\n\n  //gestion de niveles educativos\n  EducationalLevelCountryView: \"admin_localization_educationallevelcountry_view\",\n  EducationalLevelCountryUpdate: \"admin_localization_educationallevelcountry_update\",\n  EducationalLevelCountryActivate: \"admin_localization_educationallevelcountry_activate\",\n\n  QuestionaryView: \"admin_questionary_questionary_view\",\n  QuestionaryCreate: \"admin_questionary_questionary_create\",\n  QuestionaryUpdate: \"admin_questionary_questionary_update\",\n  QuestionaryDelete: \"admin_questionary_questionary_delete\",\n  QuestionaryActivate: \"admin_questionary_questionary_activate\",\n\n  // Reviewer Status Permissions\n  QuestionaryReviewerInConstruction: \"admin_questionary_reviewer_inconstruction\",\n  QuestionaryReviewerInValidation: \"admin_questionary_reviewer_invalidation\",\n  QuestionaryReviewerReturned: \"admin_questionary_reviewer_returned\",\n  QuestionaryReviewerApproved: \"admin_questionary_reviewer_approved\",\n\n  ScaleView: \"admin_questionary_scale_view\",\n  ScaleCreate: \"admin_questionary_scale_create\",\n  ScaleUpdate: \"admin_questionary_scale_update\",\n  ScaleDelete: \"admin_questionary_scale_delete\",\n\n  ReportLabelsView: \"admin_testcore_reportlabels_view\",\n  ReportLabelsCreate: \"admin_testcore_reportlabels_create\",\n  ReportLabelsUpdate: \"admin_testcore_reportlabels_update\",\n  ReportLabelsDelete: \"admin_testcore_reportlabels_delete\",\n  ReportLabelsActivate: \"admin_testcore_reportlabels_activate\",\n\n  ArchetypeView: \"admin_archetype_archetype_view\",\n  ArchetypeCreate: \"admin_archetype_archetype_create\",\n  ArchetypeUpdate: \"admin_archetype_archetype_update\",\n  ArchetypeDelete: \"admin_archetype_archetype_delete\",\n  ArchetypeActivate: \"admin_archetype_archetype_activate\",\n\n  TestCoreCompetencesView: \"admin_testcore_competences_view\",\n  TestCoreCompetencesUpdate: \"admin_testcore_competences_update\",\n  TestCoreCompetencesActivate: \"admin_testcore_competences_activate\",\n\n  TestCoreNewsView: \"admin_testcore_news_view\",\n  TestCoreNewsUpdate: \"admin_testcore_news_update\",\n  TestCoreNewsCreate: \"admin_testcore_news_create\",\n  TestCoreNewsActivate: \"admin_testcore_news_activate\",\n\n  SheetView: \"admin_testcore_sheet_view\",\n  SheetUpdate: \"admin_testcore_sheet_update\",\n  SheetActivate: \"admin_testcore_sheet_activate\",\n\n  FranchiseView: \"admin_franchise_franchise_view\",\n  FranchiseCreate: \"admin_franchise_franchise_create\",\n  FranchiseUpdate: \"admin_franchise_franchise_update\",\n  FranchiseDelete: \"admin_franchise_franchise_delete\",\n  FranchiseActivate: \"admin_franchise_franchise_activate\",\n\n  TestCoreInboxView: \"admin_testcore_inbox_view\",\n  TestCoreInboxUpdate: \"admin_testcore_inbox_update\",\n  TestCoreInboxCreate: \"admin_testcore_inbox_create\",\n  TestCoreInboxActivate: \"admin_testcore_inbox_activate\",\n  // Franchise\n  PlanView: \"admin_plan_plan_view\",\n  PlanCreate: \"admin_plan_plan_create\",\n  PlanUpdate: \"admin_plan_plan_update\",\n  PlanDelete: \"admin_plan_plan_delete\",\n  PlanActivate: \"admin_plan_plan_activate\",\n\n  CoreGroupView: \"admin_coregroup_coregroup_view\",\n  CoreGroupCreate: \"admin_coregroup_coregroup_create\",\n  CoreGroupUpdate: \"admin_coregroup_coregroup_update\",\n  CoreGroupDelete: \"admin_coregroup_coregroup_delete\",\n\n  CoreUserView: \"admin_coregroup_coreuser_view\",\n  CoreUserCreate: \"admin_coregroup_coreuser_create\",\n  CoreUserUpdate: \"admin_coregroup_coreuser_update\",\n  CoreUserDelete: \"admin_coregroup_coreuser_delete\",\n  CoreUserActivate: \"admin_coregroup_coreuser_activate\",\n\n  MessageView: \"admin_message_message_view\",\n  MessageCreate: \"admin_message_message_create\",\n  MessageUpdate: \"admin_message_message_update\",\n  MessageDelete: \"admin_message_message_delete\",\n  MessageActivate: \"admin_message_message_activate\",\n\n  TestManagementCompetencesView: \"admin_testmanagement_competences_view\",\n  TestManagementCompetencesUpdate: \"admin_testmanagement_competences_update\",\n\n  CompanyGroupView: \"admin_company_companygroup_view\",\n  CompanyGroupCreate: \"admin_company_companygroup_create\",\n  CompanyGroupUpdate: \"admin_company_companygroup_update\",\n  CompanyGroupDelete: \"admin_company_companygroup_delete\",\n  CompanyGroupActivate: \"admin_company_companygroup_activate\",\n\n  CompanyView: \"admin_company_company_view\",\n  CompanyCreate: \"admin_company_company_create\",\n  CompanyUpdate: \"admin_company_company_update\",\n  CompanyDelete: \"admin_company_company_delete\",\n  CompanyActivate: \"admin_company_company_activate\",\n\n  // Master permissions\n  CompanyMasterView: \"admin_company_master_view\",\n  CompanyMasterUpdate: \"admin_company_master_update\",\n\n  PasswordPolicyView: \"admin_company_passwordpolicy_view\",\n  PasswordPolicyUpdate: \"admin_company_passwordpolicy_update\",\n\n  GroupView: \"admin_company_group_view\",\n  GroupCreate: \"admin_company_group_create\",\n  GroupUpdate: \"admin_company_group_update\",\n  GroupDelete: \"admin_company_group_delete\",\n\n  MasterUserView: \"admin_company_masteruser_view\",\n  MasterUserCreate: \"admin_company_masteruser_create\",\n  MasterUserUpdate: \"admin_company_masteruser_update\",\n  MasterUserDelete: \"admin_company_masteruser_delete\",\n  MasterUserActivate: \"admin_company_masteruser_activate\",\n\n  UserView: \"admin_company_user_view\",\n  UserCreate: \"admin_company_user_create\",\n  UserUpdate: \"admin_company_user_update\",\n  UserDelete: \"admin_company_user_delete\",\n  UserActivate: \"admin_company_user_activate\",\n  UserConvert: \"admin_company_user_convert\",\n  UserSwap: \"admin_company_user_swap\",\n  UserRegeneratePassword: \"admin_company_user_regenerate_password\",\n\n  ProfileView: \"admin_company_profile_view\",\n  ProfileCreate: \"admin_company_profile_create\",\n  ProfileUpdate: \"admin_company_profile_update\",\n  ProfileDelete: \"admin_company_profile_delete\",\n\n  ServiceAgreementView: \"admin_serviceagreement_serviceagreement_view\",\n  ServiceAgreementCreate: \"admin_serviceagreement_serviceagreement_create\",\n  ServiceAgreementUpdate: \"admin_serviceagreement_serviceagreement_update\",\n  ServiceAgreementDelete: \"admin_serviceagreement_serviceagreement_delete\",\n  ServiceAgreementActivate: \"admin_serviceagreement_serviceagreement_activate\",\n\n  ServiceAgreementStateChange: \"admin_serviceagreement_state_view\",\n  ServiceAgreementStateDraft: \"admin_serviceagreement_state_draft\",\n  ServiceAgreementStateInReview: \"admin_serviceagreement_state_inreview\",\n  ServiceAgreementStateForwarded: \"admin_serviceagreement_state_forwarded\",\n  ServiceAgreementStateApproved: \"admin_serviceagreement_state_approved\",\n  ServiceAgreementStateCancelled: \"admin_serviceagreement_state_cancelled\",\n  ServiceAgreementStateValid: \"admin_serviceagreement_state_valid\",\n\n  ServiceAgreementPrivateNoteView: \"admin_serviceagreement_privatenote_view\",\n  ServiceAgreementPrivateNoteCreate: \"admin_serviceagreement_privatenote_create\",\n  ServiceAgreementPrivateNoteUpdate: \"admin_serviceagreement_privatenote_update\",\n  ServiceAgreementPrivateNoteDelete: \"admin_serviceagreement_privatenote_delete\",\n\n  ServiceAgreementPublicNoteView: \"admin_serviceagreement_publicnote_view\",\n  ServiceAgreementPublicNoteCreate: \"admin_serviceagreement_publicnote_create\",\n  ServiceAgreementPublicNoteUpdate: \"admin_serviceagreement_publicnote_update\",\n  ServiceAgreementPublicNoteDelete: \"admin_serviceagreement_publicnote_delete\",\n\n  TagsManagementView: \"admin_tagsmanagement_tags_view\",\n  TagsManagementCreate: \"admin_tagsmanagement_tags_create\",\n  TagsManagementUpdate: \"admin_tagsmanagement_tags_update\",\n  TagsManagementDelete: \"admin_tagsmanagement_tags_delete\",\n\n  TestManagementQuestionaryGroupView: \"admin_testmanagement_questionarygroup_view\",\n  TestManagementQuestionaryGroupCreate: \"admin_testmanagement_questionarygroup_create\",\n  TestManagementQuestionaryGroupUpdate: \"admin_testmanagement_questionarygroup_update\",\n  TestManagementQuestionaryGroupDelete: \"admin_testmanagement_questionarygroup_delete\",\n  TestManagementQuestionaryGroupShare: \"admin_testmanagement_questionarygroup_share\",\n\n  TestManagementReportView: \"admin_testmanagement_report_view\",\n  TestManagementReportCreate: \"admin_testmanagement_report_create\",\n  TestManagementReportUpdate: \"admin_testmanagement_report_update\",\n  TestManagementReportDelete: \"admin_testmanagement_report_delete\",\n  TestManagementReportShare: \"admin_testmanagement_report_share\",\n\n  TestManagementReportPredictorView: \"admin_testmanagement_reportpredictor_view\",\n  TestManagementReportPredictorCreate: \"admin_testmanagement_reportpredictor_create\",\n  TestManagementReportPredictorUpdate: \"admin_testmanagement_reportpredictor_update\",\n  TestManagementReportPredictorDelete: \"admin_testmanagement_reportpredictor_delete\",\n\n  TestManagementDiscStyleView: \"admin_testmanagement_discstyles_view\",\n  TestManagementDiscStyleUpdate: \"admin_testmanagement_discstyles_update\",\n\n  TestManagementDiscProfileView: \"admin_testmanagement_discprofile_view\",\n  TestManagementDiscProfileUpdate: \"admin_testmanagement_discprofile_update\",\n\n  TestManagementQuestionaryConfigurationView: \"admin_testmanagement_questionaryconfiguration_view\",\n  TestManagementQuestionaryConfigurationUpdate: \"admin_testmanagement_questionaryconfiguration_update\",\n\n  TestManagementCustomCompanyQuestionaryView: \"admin_testmanagement_customcompanyquestionary_view\",\n  TestManagementCustomCompanyQuestionaryCreate: \"admin_testmanagement_customcompanyquestionary_create\",\n  TestManagementCustomCompanyQuestionaryUpdate: \"admin_testmanagement_customcompanyquestionary_update\",\n  TestManagementCustomCompanyQuestionaryDelete: \"admin_testmanagement_customcompanyquestionary_delete\",\n  TestManagementCustomCompanyQuestionaryActivate: \"admin_testmanagement_customcompanyquestionary_activate\",\n\n  TestManagementCustomCompanyModularQuestionaryView: \"admin_testmanagement_customcompanymodularquestionary_view\",\n  TestManagementCustomCompanyModularQuestionaryCreate: \"admin_testmanagement_customcompanymodularquestionary_create\",\n  TestManagementCustomCompanyModularQuestionaryUpdate: \"admin_testmanagement_customcompanymodularquestionary_update\",\n  TestManagementCustomCompanyModularQuestionaryDelete: \"admin_testmanagement_customcompanymodularquestionary_delete\",\n\n  TalentView: \"admin_company_talent_view\",\n  TalentAsign: \"admin_company_talent_asign\",\n  TalentRemove: \"admin_company_talent_remove\",\n  TalentTransfer: \"admin_company_talent_transfer\",\n\n  UserApiTokenView: \"admin_company_userapitoken_view\",\n  UserApiTokenGeneration: \"admin_company_userapitoken_generation\",\n\n  PreferenceView: \"admin_preference_preference_view\",\n  PreferenceUpdate: \"admin_preference_preference_update\",\n\n  //test module\n\n  // person\n\n  TestPersonView: \"test_person_person_view\",\n  TestPersonCreate: \"test_person_person_create\",\n  TestPersonUpdate: \"test_person_person_update\",\n  TestPersonDelete: \"test_person_person_delete\",\n\n  TestPersonObservationView: \"test_person_observation_view\",\n  TestPersonObservationCreate: \"test_person_observation_create\",\n  TestPersonObservationUpdate: \"test_person_observation_update\",\n  TestPersonObservationDelete: \"test_person_observation_delete\",\n\n  TestPersonHomologationView: \"test_person_homologation_view\",\n  TestPersonHomologationCreate: \"test_person_homologation_create\",\n  TestPersonHomologationUpdate: \"test_person_homologation_update\",\n  TestPersonHomologationDelete: \"test_person_homologation_delete\",\n\n  TestPersonBulkView: \"test_person_bulkactivation_view\",\n  TestPersonBulkCreate: \"test_person_bulkactivation_create\",\n  TestPersonBulkUpdate: \"test_person_bulkactivation_update\",\n  TestPersonBulkDelete: \"test_person_bulkactivation_delete\",\n\n  TestPersonBulkDownloadView: \"test_person_bulkdownload_view\",\n  TestPersonBulkDownloadCreate: \"test_person_bulkdownload_create\",\n  TestPersonBulkDownloadUpdate: \"test_person_bulkdownload_update\",\n  TestPersonBulkDownloadDelete: \"test_person_bulkdownload_delete\",\n\n  TestPersonBulkResultsExportView: \"test_person_bulkresultsexport_view\",\n  TestPersonBulkResultsExportCreate: \"test_person_bulkresultsexport_create\",\n  TestPersonBulkResultsExportUpdate: \"test_person_bulkresultsexport_update\",\n  TestPersonBulkResultsExportDelete: \"test_person_bulkresultsexport_delete\",\n  TestPersonBulkResultsExportEvaluatorsView: \"test_person_bulkresultsexport_evaluators_view\",\n\n  // position\n\n  TestPositionView: \"test_position_position_view\",\n  TestPositionCreate: \"test_position_position_create\",\n  TestPositionUpdate: \"test_position_position_update\",\n  TestPositionDelete: \"test_position_position_delete\",\n\n  TestPositionDirectView: \"test_position_direct_view\",\n  TestPositionDirectCreate: \"test_position_direct_create\",\n  TestPositionDirectUpdate: \"test_position_direct_update\",\n  TestPositionDirectDelete: \"test_position_direct_delete\",\n\n  TestPositionConcertedView: \"test_position_concerted_view\",\n  TestPositionConcertedCreate: \"test_position_concerted_create\",\n  TestPositionConcertedUpdate: \"test_position_concerted_update\",\n  TestPositionConcertedDelete: \"test_position_concerted_delete\",\n\n  // company\n\n  TestCompanyView: \"test_company_company_view\",\n  TestCompanyCreate: \"test_company_company_create\",\n  TestCompanyUpdate: \"test_company_company_update\",\n  TestCompanyDelete: \"test_company_company_delete\",\n\n  TestCompanyDirectView: \"test_company_direct_view\",\n  TestCompanyDirectCreate: \"test_company_direct_create\",\n  TestCompanyDirectUpdate: \"test_company_direct_update\",\n  TestCompanyDirectDelete: \"test_company_direct_delete\",\n\n  TestCompanyConcertedView: \"test_company_concerted_view\",\n  TestCompanyConcertedCreate: \"test_company_concerted_create\",\n  TestCompanyConcertedUpdate: \"test_company_concerted_update\",\n  TestCompanyConcertedDelete: \"test_company_concerted_delete\",\n\n  // team\n\n  TestTeamView: \"test_team_team_view\",\n  TestTeamCreate: \"test_team_team_create\",\n  TestTeamUpdate: \"test_team_team_update\",\n  TestTeamDelete: \"test_team_team_delete\",\n\n  TestTeamActivationView: \"test_team_activation_view\",\n  TestTeamActivationCreate: \"test_team_activation_create\",\n\n\n  // archive\n  TestArchiveView: \"test_archive_archive_view\",\n  TestArchiveUpdate: \"test_archive_archive_update\",\n\n\n  // recruiting\n\n\n\n  // cross functionalities\n\n  CrossFunctionalityTheMethod: \"cross_themethod_themethod_view\",\n  CrossFunctionalityHelp: \"cross_help_help_view\",\n  CrossFunctionalityChat: \"cross_chat_chat_view\",\n  CrossFunctionalityMicrosite: \"cross_microsite_microsite_view\",\n\n  //admin selection\n\n  //company\n  AdminSelectionAdminCompanyView: \"AdminSelection_admin_company_view\",\n  AdminSelectionAdminCompanyUpdate: \"AdminSelection_admin_company_update\",\n  AdminSelectionAdminCompanyInactivate: \"AdminSelection_admin_company_inactivate\",\n  AdminSelectionAdminCompanyCreate: \"AdminSelection_admin_company_create\",\n\n  //catalogs\n  AdminSelectionAdminCatalogsView: \"AdminSelection_admin_catalogs_view\",\n  AdminSelectionAdminCatalogsUpdate: \"AdminSelection_admin_catalogs_update\",\n  AdminSelectionAdminCatalogsInactivate: \"AdminSelection_admin_catalogs_inactivate\",\n  AdminSelectionAdminCatalogsCreate: \"AdminSelection_admin_catalogs_create\",\n\n  //traductions\n  AdminSelectionAdminTraductionsView: \"AdminSelection_admin_traductions_view\",\n  AdminSelectionAdminTraductionsUpdate: \"AdminSelection_admin_traductions_update\",\n  AdminSelectionAdminTraductionsInactivate: \"AdminSelection_admin_traductions_inactivate\",\n  AdminSelectionAdminTraductionsCreate: \"AdminSelection_admin_traductions_create\",\n\n  //portal\n  AdminSelectionAdminPortalEdit: \"AdminSelection_admin_portal_edit\",\n  AdminSelectionAdminPortalChangelogo: \"AdminSelection_admin_portal_changelogo\",\n\n  //theme\n  AdminSelectionAdminThemeCreate: \"AdminSelection_admin_theme_create\",\n  AdminSelectionAdminThemeView: \"AdminSelection_admin_theme_view\",\n  AdminSelectionAdminThemeChangetheme: \"AdminSelection_admin_theme_changetheme\",\n  AdminSelectionAdminThemeUpdate: \"AdminSelection_admin_theme_update\",\n  AdminSelectionAdminThemeDelete: \"AdminSelection_admin_theme_delete\",\n\n  //external integration\n  AdminSelectionAdminExternalintegrationCreate: \"AdminSelection_admin_externalintegration_create\",\n  AdminSelectionAdminExternalintegrationManage: \"AdminSelection_admin_externalintegration_manage\",\n  AdminSelectionAdminExternalintegrationUpdate: \"AdminSelection_admin_externalintegration_update\",\n  AdminSelectionAdminExternalintegrationAccess: \"AdminSelection_admin_externalintegration_access\",\n  AdminSelectionAdminExternalintegrationDelete : \"AdminSelection_admin_externalintegration_delete \",\n\n  //selection\n\n  //trayectory\n  SelectionPredictorTrayectoryView: \"selection_predictor_trayectory_view\",\n  SelectionPredictorTrayectoryUpdate: \"selection_predictor_trayectory_update\",\n  SelectionPredictorTrayectoryInactivate: \"selection_predictor_trayectory_inactivate\",\n  SelectionPredictorTrayectoryRequestreference: \"selection_predictor_trayectory_requestreference\",\n  SelectionPredictorTrayectoryDownloadcvfile: \"selection_predictor_trayectory_downloadcvfile\",\n  SelectionPredictorTrayectoryCreate: \"selection_predictor_trayectory_create\",\n  SelectionPredictorTrayectoryViewCandidateDocuments: \"selection_predictor_trayectory_viewcandidatedocuments\",\n\n  //internal\n  SelectionPredictorInternalnotesView: \"selection_predictor_internalnotes_view\",\n  SelectionPredictorInternalnotesUpdate: \"selection_predictor_internalnotes_update\",\n  SelectionPredictorInternalnotesInactivate: \"selection_predictor_internalnotes_inactivate\",\n  SelectionPredictorInternalnotesCreate: \"selection_predictor_internalnotes_create\",\n\n  //tasks\n  SelectionPredictorTasksView: \"selection_predictor_tasks_view\",\n  SelectionPredictorTasksUpdate: \"selection_predictor_tasks_update\",\n  SelectionPredictorTasksInactivate: \"selection_predictor_tasks_inactivate\",\n  SelectionPredictorTasksCreate: \"selection_predictor_tasks_create\",\n\n  //reports\n  SelectionPredictorReportsView: \"selection_predictor_reports_view\",\n  SelectionPredictorReportsDownload: \"selection_predictor_reports_download\",\n\n  //persons\n  SelectionPredictorPersonsView: \"selection_predictor_persons_view\",\n  SelectionPredictorPersonsUpdate: \"selection_predictor_persons_update\",\n  SelectionPredictorPersonsDelete: \"selection_predictor_persons_delete\",\n  SelectionPredictorPersonsSearch: \"selection_predictor_persons_search\",\n\n  //complete info\n  SelectionPredictorCompleteinfoView: \"selection_predictor_completeinfo_view\",\n  SelectionPredictorCompleteinfoRequest: \"selection_predictor_completeinfo_request\",\n\n  //contract\n  SelectionPredictorContractManagment: \"selection_predictor_contract_managment\",\n\n  //reserved info\n  SelectionPredictorReservedinfoView: \"selection_predictor_reservedinfo_view\",\n  SelectionPredictorReservedinfoCreate: \"selection_predictor_reservedinfo_create\",\n  SelectionPredictorReservedinfoDelete: \"selection_predictor_reservedinfo_delete\",\n  SelectionPredictorReservedinfoUpdate: \"selection_predictor_reservedinfo_update\",\n\n  //procces\n  SelectionProcessProcessPublish: \"selection_process_process_publish\",\n  SelectionProcessProcessCreate: \"selection_process_process_create\",\n  SelectionProcessProcessShare: \"selection_process_process_share\",\n  SelectionProcessProcessEdit: \"selection_process_process_edit\",\n\n  //offer\n  SelectionProcessOfferCreate: \"selection_process_offer_create\",\n  SelectionProcessOfferEdit: \"selection_process_offer_edit\",\n  SelectionProcessOfferUpdate: \"selection_process_offer_update\",\n  SelectionProcessOfferDelete: \"selection_process_offer_delete\",\n};\n\nexport default PredefinedPermission;\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Organization } from \"models/test-organization/organization\";\n\n@autoinject()\nexport class OrganizationService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"OrganizationService\");\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"organization/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getAll(): Promise<Organization[]> {\n    return await this.client.get(\"organization\")\n      .then((response: any) => {\n        return <Organization[]>response;\n      });\n  }\n\n  public async getById(id: number): Promise<Organization> {\n    return await this.client.getById(\"organization\", id)\n      .then((response: Organization) => {\n        return response;\n      });\n  }\n\n  public async create(model: Organization): Promise<Organization> {\n    return await this.client.create(\"organization\", model)\n      .then((response: any) => {\n        return <Organization>response;\n      });\n  }\n\n  public async update(model: Organization): Promise<void> {\n    return await this.client.updateById(\"organization\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(`organization`, id)\n      .then(() => null);\n  }\n\n  public async sendRemindersByFilter(parameters: UxDatatableParameters): Promise<boolean> {\n    return await this.client.post(\"organization/list-send-reminder/\", parameters)\n      .then((response: any) => {\n        return true;\n      });\n  }\n\n  public async sendReminder(id: number): Promise<boolean> {\n    return await this.client.post(`organization/send-reminder/${id}`)\n      .then((response: any) => {\n        return true;\n      });\n  }\n\n}\n","import {\n  LogManager,\n  autoinject\n} from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { Question } from 'models/questions/question';\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n@autoinject()\nexport class QuestionService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient,\n    // public model: Question\n  ) {\n\n    this.logger = LogManager.getLogger('QuestionsService');\n  }\n\n  // setModel(model: Question) {\n  //   this.model = model;\n  // }\n\n  // getModel(): Question {\n  //   return this.model;\n  // }\n\n  public async getAll(questionaryId: number): Promise<Question[]> {\n    return await this.client.get(`question/questionary/${questionaryId}`)\n      .then(response => {\n        return <Question[]>response;\n      });\n  }\n\n  public async list(questionaryId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`question/list/${questionaryId}`, parameters)\n      .then(response => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async listWithDisabled(questionaryId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`question/list-with-disabled/${questionaryId}`, parameters)\n      .then(response => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getById(id: number): Promise<Question> {\n    // this.logger.info(\"id: \" +  id); \n    return await this.client.getById(\"question\", id)\n      .then(response => {\n        return <Question>response;\n      });\n  }\n\n  public async getNextQuestion(id: number,questionaryId: number,languageId): Promise<Question> {\n    return await this.client.get(`question/get-next-question/${id}/${questionaryId}/${languageId}`)\n      .then(response => {\n        return <Question>response;\n      });\n  }\n\n  public async create(model: Question): Promise<Question> {\n    return await this.client.post('question', model)\n      .then(response => {\n        return <Question>response;\n      });\n  }\n\n  public async getAllTranslationsByQuestion(model: Question): Promise<Question[]> {\n    return await this.client.post('question/get-all-translations-by-question', model)\n      .then(response => {\n        return <Question[]>response;\n      });\n  }\n\n  public async getQuestionOptionByQuestion(model: Question): Promise<Question> {\n    return await this.client.post('question/get-question-option-by-question', model)\n      .then(response => {\n        return <Question>response;\n      });\n  }\n\n  public async createLocalization(model: Question): Promise<Question> {\n    return await this.client.post('question/create-localization', model)\n      .then(response => {\n        return <Question>response;\n      });\n  }\n\n  public async update(model: Question): Promise<Question> {\n    return await this.client.updateById('question', model.id, null, model)\n      .then(response => {\n        return <Question>response;\n      });\n  }\n\n  public async updateLocalization(model: Question): Promise<Question> {\n    return await this.client.update(`question/update-localization/${model.id}`, null, model)\n      .then(response => {\n        return <Question>response;\n      });\n  }\n\n  async delete(id: number): Promise<void> {\n    // this.logger.info(\"id to delete: \" +  id);\n    return await this.client.deleteById('question', id)\n      .then(() => null);\n  }\n\n  async deleteLocalization(id: number, languageId: number): Promise<void> {\n    return await this.client.delete(`question/delete-localization/${id}/${languageId}`)\n      .then(() => null);\n  }\n\n  public async changeState(id: number): Promise<void> {\n    return await this.client.post(`question/change-state/${id}`)\n      .then(() => null);\n  }\n\n  async uploadImage(image): Promise<any> {\n    let formData = new FormData();\n    formData.append('file', image);\n\n    return await this.client.post('question/upload', formData)\n      .then(response => {\n        return <any>response;\n      });\n  }\n\n  public async bulkUpload(questionaryId: number, file: File): Promise<any> {\n    let formData = new FormData();\n    formData.append('filedata', file);\n    formData.append('fileName', file.name);\n    formData.append('questionaryId', questionaryId.toString());\n\n    return await this.client.requestFormData('POST', 'question/bulk-upload', formData)\n      .then((response: any) => {\n        return response;\n      });\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Report } from \"models/test-reports/reports/report\";\n\n@autoinject()\nexport class ReportService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"ReportService\");\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"report/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getById(id: number): Promise<Report> {\n    return await this.client.getById(\"report\", id)\n      .then((response: any) => {\n        return <Report>response;\n      });\n  }\n\n  public async create(model: Report): Promise<Report> {\n    return await this.client.create(\"report\", model)\n      .then((response: any) => {\n        return <Report>response;\n      });\n  }\n\n  public async findExisting(personId: number, reportTemplateId: number, activationQuestionaryId: number): Promise<Report> {\n    return await this.client.get(`report/existing?personId=${personId}&reportTemplateId=${reportTemplateId}&activationQuestionaryId=${activationQuestionaryId}`)\n      .then((response: any) => {\n        return <Report>response;\n      });\n  }\n\n  public async getWeights(id: number): Promise<Report> {\n    return await this.client.get(`report/${id}/weights`)\n      .then((response: any) => {\n        return <Report>response;\n      });\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { Group } from \"models/groups/group\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\nimport * as moment from \"moment\";\n\n@autoinject()\nexport class CoreGroupService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"CoreGroupService\");\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"coregroup/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getAll(): Promise<Group[]> {\n    return await this.client.get(\"coregroup\")\n      .then((response: Group[]) => {\n        return response;\n      });\n  }\n\n  public async getById(id: number): Promise<Group> {\n    return await this.client.getById(\"coregroup\", id)\n      .then((response: Group) => {\n        return response;\n      });\n  }\n\n  public async create(model: Group): Promise<Group> {\n    return await this.client.create(\"coregroup\", model)\n      .then((response: Group) => {\n        return response;\n      });\n  }\n\n  public async update(model: Group): Promise<void> {\n    return await this.client.updateById(\"coregroup\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number, coreGroupIdToTransferUsers: number): Promise<void> {\n    return await this.client.deleteById(\"coregroup\", id, { groupIdToTransferUser: coreGroupIdToTransferUsers} )\n      .then(() => null);\n  }\n\n  public async getPermissionNamesById(id: number): Promise<Array<string>> {\n    return await this.client.get(`coregroup/${id}/core-permission-name`)\n      .then((response: Array<string>) => {\n        return response;\n      });\n  }\n\n  public async updatePermissionsNamesById(id: number, permissions: Array<string>): Promise<void> {\n    return await this.client.update(`coregroup/${id}/core-permission-name`, null, permissions)\n      .then(() => null);\n  }\n\n  public async downloadPdfById(id: number, name: string): Promise<void> {\n    let filename: string = name + \"_\" + moment().format() + \".pdf\";\n    return await this.client.download(\"GET\", `coregroup/print/${id}`, null, filename, \"application/pdf\", null)\n      .then(() => null);\n  }\n\n  // public async updatePermissionsById(id: number, permissions: Array<number>): Promise<void> {\n  //   return await this.client.update(`core-group/${id}/core-permission`, null, permissions)\n  //     .then(() => null);\n  // }\n\n  // public async getPermissionsById(id: number): Promise<Array<number>> {\n  //   return await this.client.get(`core-group/${id}/core-permission`)\n  //     .then((response: any) => {\n  //       return <Array<number>>response;\n  //     });\n  // }\n\n\n}\n","import { ResponseOption } from './response-option';\nimport { QuestionType } from './questionType';\nimport { QuestionUse } from './questionUse';\nimport { QuestionHistory } from './questionHistory';\nimport { ReviewerStatusType } from './reviewerStatusType';\nimport { QuestionInteractionType } from './questionInteractionType';\n\nexport class Question {\n  id: number;\n  questionType: QuestionType;\n  questionUse: QuestionUse;\n  order: number;\n  code: string;\n  formulation: string;\n  isMandatory: boolean = true;  \n  isDisable: boolean = false;\n  languageId?: number;\n  hasRandomResponses?: boolean;\n  minNumberOfAnswers?: number;\n  maxNumberOfAnswers?: number;\n  allowOneResponseByColumn?: boolean;\n  allowOneResponseByRow?: boolean;\n  allowRandomColumns?: boolean;\n  isTextSizeAvailable?: boolean ;\n  textSize?: number;\n  textSizeMin?: number;\n  textSizeMax?: number;\n  questionaryId: number;\n  isOriginal: boolean;\n  responseOptions: Array<ResponseOption> = new Array<ResponseOption>();\n  thematicGroupIds: Array<number> = new Array<number>();\n  thematicVariableIds: Array<number> = new Array<number>();\n  observation: string;\n  justification: string;\n  instruction: string;\n  reviewerStatusType?: ReviewerStatusType;\n  questionInteractionType?: QuestionInteractionType;\n  questionHistories: Array<QuestionHistory> = new Array<QuestionHistory>();\n\n}\n","import { WhoCanSeeReport } from './whoCanSeeReport';\nimport { PersonMode } from \"./personMode\";\nimport { QuestionaryWay } from './questionaryWay';\nimport { ActivationType } from './activationType';\nimport { Test } from './../test-perfiltic/test';\nimport { QuestionaryLanguage } from 'models/questionaries/questionaryLanguage';\nimport { ActivationThematicAssociate } from './activationThematicAssociate';\nexport class BulkActivation {\n  id: number;\n  companyId: number;\n  name: string;\n  personMode: PersonMode;\n  tags: string;\n  questionaryWay: QuestionaryWay;\n\n  activationType: ActivationType;\n\n  activationId: number;\n  observedId: number;\n  positionId: number;\n  organizationId: number;\n  \n  whoCanSeeReport: WhoCanSeeReport;\n  invitationExpireDate: Date;\n  additionalText: string;\n\n  questionaryGroupId: number;\n  questionaryId: number;\n  reportTemplateId: number;\n\n  hasMicroSite?: boolean;\n  isConfidentialTest?: boolean;\n  isAnonymous?: boolean;\n\n  languageId: number;\n\n  createdOn: Date;\n  createdByName: string;\n  createdByEmail: string;\n\n  filedata: any;\n  fileName: string;\n\n  engineersTests: Test[];\n  \n  logFileUrl: string;\n  isLoaded: boolean;\n  isObservation: boolean;\n\n  companyCompetenceIds: number[] = [];\n  questionaryIds: QuestionaryLanguage[] = [];\n\n  activationThematicAssociates :ActivationThematicAssociate[] = [];\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","export function areEqual(obj1, obj2) {\n\treturn Object.keys(obj1).every((key) => obj2.hasOwnProperty(key) && (obj1[key] === obj2[key]));\n};\n\nexport function addSlash(resource: string) {\n\tlet hasSlash = resource.slice(-1) === '/';\n\tif (hasSlash) {\n\t\treturn resource;\n\t} else {\n\t\treturn resource += \"/\";\n\t}\n\n}\n\n\n/* Retorna deep copy del objeto @from */\nexport function fnClone(from: any): any {\n\tvar prop, clone;\n\n\t// determina si @from es un valor primitivo o una función\n\tif (from == null || typeof from != \"object\") return from;\n\n\t// determina si @from es una instancia de alguno de los siguientes prototipos\n\tif (from.constructor == Date || from.constructor == RegExp || from.constructor == Function ||\n\t\tfrom.constructor == String || from.constructor == Number || from.constructor == Boolean) {\n\t\treturn new from.constructor(from);\n\t}\n\n\t// si el constructor del objeto no es ninguno de los anteriores\n\tif (from.constructor != Object && from.constructor != Array) return from;\n\n\t// itera recursivamente las propiedades del objeto\n\tclone = new from.constructor();\n\tfor (prop in from) {\n\t\t//no se recomienda arguments.callee\n\t\t//clone[prop] = arguments.callee(from[prop]);\n\t\tclone[prop] = this.fnClone(from[prop]);\n\t}\n\treturn clone;\n}\n\nexport function calculateAge(dob: Date) {\n\tvar diff_ms = Date.now() - dob.getTime();\n\tvar age_dt = new Date(diff_ms);\n\n\treturn Math.abs(age_dt.getUTCFullYear() - 1970);\n}\n\nexport function startOfDay(date: Date): Date {\n\tvar result = new Date(date);\n\tresult.setHours(0, 0, 0, 0);\n\treturn result;\n}\n\n// Inclusive end of day (23:59:59.999) in local time.\nexport function endOfDay(date: Date): Date {\n\tvar result = new Date(date);\n\tresult.setHours(23, 59, 59, 999);\n\treturn result;\n}\n\n// Normalizes the filter range: start to the beginning of the day and end to the end of the day.\nexport function normalizeSearchDateRange(search: any): void {\n\tif (search == null) {\n\t\treturn;\n\t}\n\tif (search.StartDate) {\n\t\tsearch.StartDate = startOfDay(search.StartDate);\n\t}\n\tif (search.EndDate) {\n\t\tsearch.EndDate = endOfDay(search.EndDate);\n\t}\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { CompanyCompetence } from \"models/test-core/competences/company-competence\";\n\n@autoinject()\nexport class CompanyCompetenceService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"CompanyCompetenceService\");\n  }\n\n  public async getAll(questionaryId: number): Promise<CompanyCompetence[]> {\n    return await this.client.get(`companycompetence/${questionaryId}`)\n      .then((response: any) => {\n        return <CompanyCompetence[]>response;\n      });\n  }\n\n  public async getById(id: number): Promise<CompanyCompetence> {\n    return await this.client.get(`companycompetence/${id}`)\n    .then((response: CompanyCompetence) => {\n      return <CompanyCompetence>response;\n    })\n  }\n\n  public async list(parameters: UxDatatableParameters, questionaryId: number): Promise<UxDatatableResponse> {\n    return await this.client.post(`companycompetence/list/${questionaryId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async update(model: CompanyCompetence): Promise<CompanyCompetence> {\n    return await this.client.updateById(\"companycompetence\", model.id, null, model)\n      .then(() => null);\n  }\n\n}\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var WordArray = C_lib.WordArray;\n\t    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t    var C_enc = C.enc;\n\t    var Utf8 = C_enc.Utf8;\n\t    var Base64 = C_enc.Base64;\n\t    var C_algo = C.algo;\n\t    var EvpKDF = C_algo.EvpKDF;\n\n\t    /**\n\t     * Abstract base cipher template.\n\t     *\n\t     * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t     * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t     * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t     * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t     */\n\t    var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {WordArray} iv The IV to use for this operation.\n\t         */\n\t        cfg: Base.extend(),\n\n\t        /**\n\t         * Creates this cipher in encryption mode.\n\t         *\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {Cipher} A cipher instance.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t         */\n\t        createEncryptor: function (key, cfg) {\n\t            return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t        },\n\n\t        /**\n\t         * Creates this cipher in decryption mode.\n\t         *\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {Cipher} A cipher instance.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t         */\n\t        createDecryptor: function (key, cfg) {\n\t            return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t        },\n\n\t        /**\n\t         * Initializes a newly created cipher.\n\t         *\n\t         * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t         */\n\t        init: function (xformMode, key, cfg) {\n\t            // Apply config defaults\n\t            this.cfg = this.cfg.extend(cfg);\n\n\t            // Store transform mode and key\n\t            this._xformMode = xformMode;\n\t            this._key = key;\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this cipher to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     cipher.reset();\n\t         */\n\t        reset: function () {\n\t            // Reset data buffer\n\t            BufferedBlockAlgorithm.reset.call(this);\n\n\t            // Perform concrete-cipher logic\n\t            this._doReset();\n\t        },\n\n\t        /**\n\t         * Adds data to be encrypted or decrypted.\n\t         *\n\t         * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t         *\n\t         * @return {WordArray} The data after processing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var encrypted = cipher.process('data');\n\t         *     var encrypted = cipher.process(wordArray);\n\t         */\n\t        process: function (dataUpdate) {\n\t            // Append\n\t            this._append(dataUpdate);\n\n\t            // Process available blocks\n\t            return this._process();\n\t        },\n\n\t        /**\n\t         * Finalizes the encryption or decryption process.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t         *\n\t         * @return {WordArray} The data after final processing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var encrypted = cipher.finalize();\n\t         *     var encrypted = cipher.finalize('data');\n\t         *     var encrypted = cipher.finalize(wordArray);\n\t         */\n\t        finalize: function (dataUpdate) {\n\t            // Final data update\n\t            if (dataUpdate) {\n\t                this._append(dataUpdate);\n\t            }\n\n\t            // Perform concrete-cipher logic\n\t            var finalProcessedData = this._doFinalize();\n\n\t            return finalProcessedData;\n\t        },\n\n\t        keySize: 128/32,\n\n\t        ivSize: 128/32,\n\n\t        _ENC_XFORM_MODE: 1,\n\n\t        _DEC_XFORM_MODE: 2,\n\n\t        /**\n\t         * Creates shortcut functions to a cipher's object interface.\n\t         *\n\t         * @param {Cipher} cipher The cipher to create a helper for.\n\t         *\n\t         * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t         */\n\t        _createHelper: (function () {\n\t            function selectCipherStrategy(key) {\n\t                if (typeof key == 'string') {\n\t                    return PasswordBasedCipher;\n\t                } else {\n\t                    return SerializableCipher;\n\t                }\n\t            }\n\n\t            return function (cipher) {\n\t                return {\n\t                    encrypt: function (message, key, cfg) {\n\t                        return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t                    },\n\n\t                    decrypt: function (ciphertext, key, cfg) {\n\t                        return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t                    }\n\t                };\n\t            };\n\t        }())\n\t    });\n\n\t    /**\n\t     * Abstract base stream cipher template.\n\t     *\n\t     * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t     */\n\t    var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t        _doFinalize: function () {\n\t            // Process partial blocks\n\t            var finalProcessedBlocks = this._process(!!'flush');\n\n\t            return finalProcessedBlocks;\n\t        },\n\n\t        blockSize: 1\n\t    });\n\n\t    /**\n\t     * Mode namespace.\n\t     */\n\t    var C_mode = C.mode = {};\n\n\t    /**\n\t     * Abstract base block cipher mode template.\n\t     */\n\t    var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t        /**\n\t         * Creates this mode for encryption.\n\t         *\n\t         * @param {Cipher} cipher A block cipher instance.\n\t         * @param {Array} iv The IV words.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t         */\n\t        createEncryptor: function (cipher, iv) {\n\t            return this.Encryptor.create(cipher, iv);\n\t        },\n\n\t        /**\n\t         * Creates this mode for decryption.\n\t         *\n\t         * @param {Cipher} cipher A block cipher instance.\n\t         * @param {Array} iv The IV words.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t         */\n\t        createDecryptor: function (cipher, iv) {\n\t            return this.Decryptor.create(cipher, iv);\n\t        },\n\n\t        /**\n\t         * Initializes a newly created mode.\n\t         *\n\t         * @param {Cipher} cipher A block cipher instance.\n\t         * @param {Array} iv The IV words.\n\t         *\n\t         * @example\n\t         *\n\t         *     var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t         */\n\t        init: function (cipher, iv) {\n\t            this._cipher = cipher;\n\t            this._iv = iv;\n\t        }\n\t    });\n\n\t    /**\n\t     * Cipher Block Chaining mode.\n\t     */\n\t    var CBC = C_mode.CBC = (function () {\n\t        /**\n\t         * Abstract base CBC mode.\n\t         */\n\t        var CBC = BlockCipherMode.extend();\n\n\t        /**\n\t         * CBC encryptor.\n\t         */\n\t        CBC.Encryptor = CBC.extend({\n\t            /**\n\t             * Processes the data block at offset.\n\t             *\n\t             * @param {Array} words The data words to operate on.\n\t             * @param {number} offset The offset where the block starts.\n\t             *\n\t             * @example\n\t             *\n\t             *     mode.processBlock(data.words, offset);\n\t             */\n\t            processBlock: function (words, offset) {\n\t                // Shortcuts\n\t                var cipher = this._cipher;\n\t                var blockSize = cipher.blockSize;\n\n\t                // XOR and encrypt\n\t                xorBlock.call(this, words, offset, blockSize);\n\t                cipher.encryptBlock(words, offset);\n\n\t                // Remember this block to use with next block\n\t                this._prevBlock = words.slice(offset, offset + blockSize);\n\t            }\n\t        });\n\n\t        /**\n\t         * CBC decryptor.\n\t         */\n\t        CBC.Decryptor = CBC.extend({\n\t            /**\n\t             * Processes the data block at offset.\n\t             *\n\t             * @param {Array} words The data words to operate on.\n\t             * @param {number} offset The offset where the block starts.\n\t             *\n\t             * @example\n\t             *\n\t             *     mode.processBlock(data.words, offset);\n\t             */\n\t            processBlock: function (words, offset) {\n\t                // Shortcuts\n\t                var cipher = this._cipher;\n\t                var blockSize = cipher.blockSize;\n\n\t                // Remember this block to use with next block\n\t                var thisBlock = words.slice(offset, offset + blockSize);\n\n\t                // Decrypt and XOR\n\t                cipher.decryptBlock(words, offset);\n\t                xorBlock.call(this, words, offset, blockSize);\n\n\t                // This block becomes the previous block\n\t                this._prevBlock = thisBlock;\n\t            }\n\t        });\n\n\t        function xorBlock(words, offset, blockSize) {\n\t            var block;\n\n\t            // Shortcut\n\t            var iv = this._iv;\n\n\t            // Choose mixing block\n\t            if (iv) {\n\t                block = iv;\n\n\t                // Remove IV for subsequent blocks\n\t                this._iv = undefined;\n\t            } else {\n\t                block = this._prevBlock;\n\t            }\n\n\t            // XOR blocks\n\t            for (var i = 0; i < blockSize; i++) {\n\t                words[offset + i] ^= block[i];\n\t            }\n\t        }\n\n\t        return CBC;\n\t    }());\n\n\t    /**\n\t     * Padding namespace.\n\t     */\n\t    var C_pad = C.pad = {};\n\n\t    /**\n\t     * PKCS #5/7 padding strategy.\n\t     */\n\t    var Pkcs7 = C_pad.Pkcs7 = {\n\t        /**\n\t         * Pads data using the algorithm defined in PKCS #5/7.\n\t         *\n\t         * @param {WordArray} data The data to pad.\n\t         * @param {number} blockSize The multiple that the data should be padded to.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t         */\n\t        pad: function (data, blockSize) {\n\t            // Shortcut\n\t            var blockSizeBytes = blockSize * 4;\n\n\t            // Count padding bytes\n\t            var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t            // Create padding word\n\t            var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t            // Create padding\n\t            var paddingWords = [];\n\t            for (var i = 0; i < nPaddingBytes; i += 4) {\n\t                paddingWords.push(paddingWord);\n\t            }\n\t            var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t            // Add padding\n\t            data.concat(padding);\n\t        },\n\n\t        /**\n\t         * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t         *\n\t         * @param {WordArray} data The data to unpad.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t         */\n\t        unpad: function (data) {\n\t            // Get number of padding bytes from last byte\n\t            var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t            // Remove padding\n\t            data.sigBytes -= nPaddingBytes;\n\t        }\n\t    };\n\n\t    /**\n\t     * Abstract base block cipher template.\n\t     *\n\t     * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t     */\n\t    var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {Mode} mode The block mode to use. Default: CBC\n\t         * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t         */\n\t        cfg: Cipher.cfg.extend({\n\t            mode: CBC,\n\t            padding: Pkcs7\n\t        }),\n\n\t        reset: function () {\n\t            var modeCreator;\n\n\t            // Reset cipher\n\t            Cipher.reset.call(this);\n\n\t            // Shortcuts\n\t            var cfg = this.cfg;\n\t            var iv = cfg.iv;\n\t            var mode = cfg.mode;\n\n\t            // Reset block mode\n\t            if (this._xformMode == this._ENC_XFORM_MODE) {\n\t                modeCreator = mode.createEncryptor;\n\t            } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t                modeCreator = mode.createDecryptor;\n\t                // Keep at least one block in the buffer for unpadding\n\t                this._minBufferSize = 1;\n\t            }\n\n\t            if (this._mode && this._mode.__creator == modeCreator) {\n\t                this._mode.init(this, iv && iv.words);\n\t            } else {\n\t                this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t                this._mode.__creator = modeCreator;\n\t            }\n\t        },\n\n\t        _doProcessBlock: function (words, offset) {\n\t            this._mode.processBlock(words, offset);\n\t        },\n\n\t        _doFinalize: function () {\n\t            var finalProcessedBlocks;\n\n\t            // Shortcut\n\t            var padding = this.cfg.padding;\n\n\t            // Finalize\n\t            if (this._xformMode == this._ENC_XFORM_MODE) {\n\t                // Pad data\n\t                padding.pad(this._data, this.blockSize);\n\n\t                // Process final blocks\n\t                finalProcessedBlocks = this._process(!!'flush');\n\t            } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t                // Process final blocks\n\t                finalProcessedBlocks = this._process(!!'flush');\n\n\t                // Unpad data\n\t                padding.unpad(finalProcessedBlocks);\n\t            }\n\n\t            return finalProcessedBlocks;\n\t        },\n\n\t        blockSize: 128/32\n\t    });\n\n\t    /**\n\t     * A collection of cipher parameters.\n\t     *\n\t     * @property {WordArray} ciphertext The raw ciphertext.\n\t     * @property {WordArray} key The key to this ciphertext.\n\t     * @property {WordArray} iv The IV used in the ciphering operation.\n\t     * @property {WordArray} salt The salt used with a key derivation function.\n\t     * @property {Cipher} algorithm The cipher algorithm.\n\t     * @property {Mode} mode The block mode used in the ciphering operation.\n\t     * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t     * @property {number} blockSize The block size of the cipher.\n\t     * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t     */\n\t    var CipherParams = C_lib.CipherParams = Base.extend({\n\t        /**\n\t         * Initializes a newly created cipher params object.\n\t         *\n\t         * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipherParams = CryptoJS.lib.CipherParams.create({\n\t         *         ciphertext: ciphertextWordArray,\n\t         *         key: keyWordArray,\n\t         *         iv: ivWordArray,\n\t         *         salt: saltWordArray,\n\t         *         algorithm: CryptoJS.algo.AES,\n\t         *         mode: CryptoJS.mode.CBC,\n\t         *         padding: CryptoJS.pad.PKCS7,\n\t         *         blockSize: 4,\n\t         *         formatter: CryptoJS.format.OpenSSL\n\t         *     });\n\t         */\n\t        init: function (cipherParams) {\n\t            this.mixIn(cipherParams);\n\t        },\n\n\t        /**\n\t         * Converts this cipher params object to a string.\n\t         *\n\t         * @param {Format} formatter (Optional) The formatting strategy to use.\n\t         *\n\t         * @return {string} The stringified cipher params.\n\t         *\n\t         * @throws Error If neither the formatter nor the default formatter is set.\n\t         *\n\t         * @example\n\t         *\n\t         *     var string = cipherParams + '';\n\t         *     var string = cipherParams.toString();\n\t         *     var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t         */\n\t        toString: function (formatter) {\n\t            return (formatter || this.formatter).stringify(this);\n\t        }\n\t    });\n\n\t    /**\n\t     * Format namespace.\n\t     */\n\t    var C_format = C.format = {};\n\n\t    /**\n\t     * OpenSSL formatting strategy.\n\t     */\n\t    var OpenSSLFormatter = C_format.OpenSSL = {\n\t        /**\n\t         * Converts a cipher params object to an OpenSSL-compatible string.\n\t         *\n\t         * @param {CipherParams} cipherParams The cipher params object.\n\t         *\n\t         * @return {string} The OpenSSL-compatible string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t         */\n\t        stringify: function (cipherParams) {\n\t            var wordArray;\n\n\t            // Shortcuts\n\t            var ciphertext = cipherParams.ciphertext;\n\t            var salt = cipherParams.salt;\n\n\t            // Format\n\t            if (salt) {\n\t                wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t            } else {\n\t                wordArray = ciphertext;\n\t            }\n\n\t            return wordArray.toString(Base64);\n\t        },\n\n\t        /**\n\t         * Converts an OpenSSL-compatible string to a cipher params object.\n\t         *\n\t         * @param {string} openSSLStr The OpenSSL-compatible string.\n\t         *\n\t         * @return {CipherParams} The cipher params object.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t         */\n\t        parse: function (openSSLStr) {\n\t            var salt;\n\n\t            // Parse base64\n\t            var ciphertext = Base64.parse(openSSLStr);\n\n\t            // Shortcut\n\t            var ciphertextWords = ciphertext.words;\n\n\t            // Test for salt\n\t            if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t                // Extract salt\n\t                salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t                // Remove salt from ciphertext\n\t                ciphertextWords.splice(0, 4);\n\t                ciphertext.sigBytes -= 16;\n\t            }\n\n\t            return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t        }\n\t    };\n\n\t    /**\n\t     * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t     */\n\t    var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t         */\n\t        cfg: Base.extend({\n\t            format: OpenSSLFormatter\n\t        }),\n\n\t        /**\n\t         * Encrypts a message.\n\t         *\n\t         * @param {Cipher} cipher The cipher algorithm to use.\n\t         * @param {WordArray|string} message The message to encrypt.\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {CipherParams} A cipher params object.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t         */\n\t        encrypt: function (cipher, message, key, cfg) {\n\t            // Apply config defaults\n\t            cfg = this.cfg.extend(cfg);\n\n\t            // Encrypt\n\t            var encryptor = cipher.createEncryptor(key, cfg);\n\t            var ciphertext = encryptor.finalize(message);\n\n\t            // Shortcut\n\t            var cipherCfg = encryptor.cfg;\n\n\t            // Create and return serializable cipher params\n\t            return CipherParams.create({\n\t                ciphertext: ciphertext,\n\t                key: key,\n\t                iv: cipherCfg.iv,\n\t                algorithm: cipher,\n\t                mode: cipherCfg.mode,\n\t                padding: cipherCfg.padding,\n\t                blockSize: cipher.blockSize,\n\t                formatter: cfg.format\n\t            });\n\t        },\n\n\t        /**\n\t         * Decrypts serialized ciphertext.\n\t         *\n\t         * @param {Cipher} cipher The cipher algorithm to use.\n\t         * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {WordArray} The plaintext.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t         *     var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t         */\n\t        decrypt: function (cipher, ciphertext, key, cfg) {\n\t            // Apply config defaults\n\t            cfg = this.cfg.extend(cfg);\n\n\t            // Convert string to CipherParams\n\t            ciphertext = this._parse(ciphertext, cfg.format);\n\n\t            // Decrypt\n\t            var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t            return plaintext;\n\t        },\n\n\t        /**\n\t         * Converts serialized ciphertext to CipherParams,\n\t         * else assumed CipherParams already and returns ciphertext unchanged.\n\t         *\n\t         * @param {CipherParams|string} ciphertext The ciphertext.\n\t         * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t         *\n\t         * @return {CipherParams} The unserialized ciphertext.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t         */\n\t        _parse: function (ciphertext, format) {\n\t            if (typeof ciphertext == 'string') {\n\t                return format.parse(ciphertext, this);\n\t            } else {\n\t                return ciphertext;\n\t            }\n\t        }\n\t    });\n\n\t    /**\n\t     * Key derivation function namespace.\n\t     */\n\t    var C_kdf = C.kdf = {};\n\n\t    /**\n\t     * OpenSSL key derivation function.\n\t     */\n\t    var OpenSSLKdf = C_kdf.OpenSSL = {\n\t        /**\n\t         * Derives a key and IV from a password.\n\t         *\n\t         * @param {string} password The password to derive from.\n\t         * @param {number} keySize The size in words of the key to generate.\n\t         * @param {number} ivSize The size in words of the IV to generate.\n\t         * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t         *\n\t         * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t         *     var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t         */\n\t        execute: function (password, keySize, ivSize, salt) {\n\t            // Generate random salt\n\t            if (!salt) {\n\t                salt = WordArray.random(64/8);\n\t            }\n\n\t            // Derive key and IV\n\t            var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t            // Separate key and IV\n\t            var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t            key.sigBytes = keySize * 4;\n\n\t            // Return params\n\t            return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t        }\n\t    };\n\n\t    /**\n\t     * A serializable cipher wrapper that derives the key from a password,\n\t     * and returns ciphertext as a serializable cipher params object.\n\t     */\n\t    var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t         */\n\t        cfg: SerializableCipher.cfg.extend({\n\t            kdf: OpenSSLKdf\n\t        }),\n\n\t        /**\n\t         * Encrypts a message using a password.\n\t         *\n\t         * @param {Cipher} cipher The cipher algorithm to use.\n\t         * @param {WordArray|string} message The message to encrypt.\n\t         * @param {string} password The password.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {CipherParams} A cipher params object.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t         *     var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t         */\n\t        encrypt: function (cipher, message, password, cfg) {\n\t            // Apply config defaults\n\t            cfg = this.cfg.extend(cfg);\n\n\t            // Derive key and other params\n\t            var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t            // Add IV to config\n\t            cfg.iv = derivedParams.iv;\n\n\t            // Encrypt\n\t            var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t            // Mix in derived params\n\t            ciphertext.mixIn(derivedParams);\n\n\t            return ciphertext;\n\t        },\n\n\t        /**\n\t         * Decrypts serialized ciphertext using a password.\n\t         *\n\t         * @param {Cipher} cipher The cipher algorithm to use.\n\t         * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t         * @param {string} password The password.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {WordArray} The plaintext.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t         *     var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t         */\n\t        decrypt: function (cipher, ciphertext, password, cfg) {\n\t            // Apply config defaults\n\t            cfg = this.cfg.extend(cfg);\n\n\t            // Convert string to CipherParams\n\t            ciphertext = this._parse(ciphertext, cfg.format);\n\n\t            // Derive key and other params\n\t            var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t            // Add IV to config\n\t            cfg.iv = derivedParams.iv;\n\n\t            // Decrypt\n\t            var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t            return plaintext;\n\t        }\n\t    });\n\t}());\n\n\n}));","import { autoinject, observable, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"./app-http-client\";\nimport { SessionService } from \"./session-service\";\nimport { Subscription, EventAggregator } from \"aurelia-event-aggregator\";\nimport config from 'config.js';\nimport { UserManager } from \"oidc-client\";\n\n@autoinject()\nexport class CompanyAppHttpClient extends AppHttpClient {\n\n  private companylogger: Logger;\n\n  @observable() \n  public currentCompanyId: number;\n\n  private companySwitcherSubscriber: Subscription;\n\n  constructor(\n    protected sessionService: SessionService,\n    protected ea: EventAggregator) {\n\n    super(sessionService, ea);\n\n    this.companylogger = LogManager.getLogger(\"CompanyAppHttpClient\");\n   \n    // this.companySwitcherSubscriber = this.ea.subscribe(CurrentCompanyChangeMessage, (message: CurrentCompanyChangeMessage) => {\n    //   // this.companylogger.debug(\"event companySwitcher: \", message.currentCompanyId);\n    //   this.currentCompanyId = message.currentCompanyId;\n    // });\n  }\n\n  public detached() {\n    this.companySwitcherSubscriber.dispose();\n  }\n\n  private currentCompanyIdChanged(newValue, oldValue) {\n    // this.companylogger.debug(\"currentCompanyIdChanged:\", newValue);\n    if (newValue) {\n      // this.currentCompanyId = newValue;\n      //base api\n      let backendUrl = config.URLS_BACKEND;\n      this.baseUrl = `${backendUrl}/api/v1/company/${this.currentCompanyId}/`;\n    }\n  }\n}\n","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\nimport { DOM, FEATURE } from 'aurelia-pal';\n\nvar stackSeparator = '\\nEnqueued in TaskQueue by:\\n';\nvar microStackSeparator = '\\nEnqueued in MicroTaskQueue by:\\n';\n\nfunction makeRequestFlushFromMutationObserver(flush) {\n  var observer = DOM.createMutationObserver(flush);\n  var val = 'a';\n  var node = DOM.createTextNode('a');\n  var values = Object.create(null);\n  values.a = 'b';\n  values.b = 'a';\n  observer.observe(node, { characterData: true });\n  return function requestFlush() {\n    node.data = val = values[val];\n  };\n}\n\nfunction makeRequestFlushFromTimer(flush) {\n  return function requestFlush() {\n    var timeoutHandle = setTimeout(handleFlushTimer, 0);\n\n    var intervalHandle = setInterval(handleFlushTimer, 50);\n    function handleFlushTimer() {\n      clearTimeout(timeoutHandle);\n      clearInterval(intervalHandle);\n      flush();\n    }\n  };\n}\n\nfunction onError(error, task, longStacks) {\n  if (longStacks && task.stack && (typeof error === 'undefined' ? 'undefined' : _typeof(error)) === 'object' && error !== null) {\n    error.stack = filterFlushStack(error.stack) + task.stack;\n  }\n\n  if ('onError' in task) {\n    task.onError(error);\n  } else {\n    setTimeout(function () {\n      throw error;\n    }, 0);\n  }\n}\n\nexport var TaskQueue = function () {\n  function TaskQueue() {\n    var _this = this;\n\n    \n\n    this.flushing = false;\n    this.longStacks = false;\n\n    this.microTaskQueue = [];\n    this.microTaskQueueCapacity = 1024;\n    this.taskQueue = [];\n\n    if (FEATURE.mutationObserver) {\n      this.requestFlushMicroTaskQueue = makeRequestFlushFromMutationObserver(function () {\n        return _this.flushMicroTaskQueue();\n      });\n    } else {\n      this.requestFlushMicroTaskQueue = makeRequestFlushFromTimer(function () {\n        return _this.flushMicroTaskQueue();\n      });\n    }\n\n    this.requestFlushTaskQueue = makeRequestFlushFromTimer(function () {\n      return _this.flushTaskQueue();\n    });\n  }\n\n  TaskQueue.prototype._flushQueue = function _flushQueue(queue, capacity) {\n    var index = 0;\n    var task = void 0;\n\n    try {\n      this.flushing = true;\n      while (index < queue.length) {\n        task = queue[index];\n        if (this.longStacks) {\n          this.stack = typeof task.stack === 'string' ? task.stack : undefined;\n        }\n        task.call();\n        index++;\n\n        if (index > capacity) {\n          for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n            queue[scan] = queue[scan + index];\n          }\n\n          queue.length -= index;\n          index = 0;\n        }\n      }\n    } catch (error) {\n      onError(error, task, this.longStacks);\n    } finally {\n      this.flushing = false;\n    }\n  };\n\n  TaskQueue.prototype.queueMicroTask = function queueMicroTask(task) {\n    if (this.microTaskQueue.length < 1) {\n      this.requestFlushMicroTaskQueue();\n    }\n\n    if (this.longStacks) {\n      task.stack = this.prepareQueueStack(microStackSeparator);\n    }\n\n    this.microTaskQueue.push(task);\n  };\n\n  TaskQueue.prototype.queueTask = function queueTask(task) {\n    if (this.taskQueue.length < 1) {\n      this.requestFlushTaskQueue();\n    }\n\n    if (this.longStacks) {\n      task.stack = this.prepareQueueStack(stackSeparator);\n    }\n\n    this.taskQueue.push(task);\n  };\n\n  TaskQueue.prototype.flushTaskQueue = function flushTaskQueue() {\n    var queue = this.taskQueue;\n    this.taskQueue = [];\n    this._flushQueue(queue, Number.MAX_VALUE);\n  };\n\n  TaskQueue.prototype.flushMicroTaskQueue = function flushMicroTaskQueue() {\n    var queue = this.microTaskQueue;\n    this._flushQueue(queue, this.microTaskQueueCapacity);\n    queue.length = 0;\n  };\n\n  TaskQueue.prototype.prepareQueueStack = function prepareQueueStack(separator) {\n    var stack = separator + filterQueueStack(captureStack());\n\n    if (typeof this.stack === 'string') {\n      stack = filterFlushStack(stack) + this.stack;\n    }\n\n    return stack;\n  };\n\n  return TaskQueue;\n}();\n\nfunction captureStack() {\n  var error = new Error();\n\n  if (error.stack) {\n    return error.stack;\n  }\n\n  try {\n    throw error;\n  } catch (e) {\n    return e.stack;\n  }\n}\n\nfunction filterQueueStack(stack) {\n  return stack.replace(/^[\\s\\S]*?\\bqueue(Micro)?Task\\b[^\\n]*\\n/, '');\n}\n\nfunction filterFlushStack(stack) {\n  var index = stack.lastIndexOf('flushMicroTaskQueue');\n\n  if (index < 0) {\n    index = stack.lastIndexOf('flushTaskQueue');\n    if (index < 0) {\n      return stack;\n    }\n  }\n\n  index = stack.lastIndexOf('\\n', index);\n\n  return index < 0 ? stack : stack.substr(0, index);\n}","export class ActivationThematicAssociate {\n  questionaryId : number;\n  thematicGroupId : number;\n  thematicVariableId : number;\n}\n","\nexport class UserInfoLoadedMessage {\n}\n","export class Group {\n  id: number;\n  name: string;\n  description: string;\n  companyId: number;\n  companyName: string;\n  auxGroupId: number;\n  isDefault: boolean;\n}\n","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\n\nimport { relativeToFile } from 'aurelia-path';\nimport { Origin } from 'aurelia-metadata';\n\nexport var TemplateDependency = function TemplateDependency(src, name) {\n  \n\n  this.src = src;\n  this.name = name;\n};\n\nexport var TemplateRegistryEntry = function () {\n  function TemplateRegistryEntry(address) {\n    \n\n    this.templateIsLoaded = false;\n    this.factoryIsReady = false;\n    this.resources = null;\n    this.dependencies = null;\n\n    this.address = address;\n    this.onReady = null;\n    this._template = null;\n    this._factory = null;\n  }\n\n  TemplateRegistryEntry.prototype.addDependency = function addDependency(src, name) {\n    var finalSrc = typeof src === 'string' ? relativeToFile(src, this.address) : Origin.get(src).moduleId;\n\n    this.dependencies.push(new TemplateDependency(finalSrc, name));\n  };\n\n  _createClass(TemplateRegistryEntry, [{\n    key: 'template',\n    get: function get() {\n      return this._template;\n    },\n    set: function set(value) {\n      var address = this.address;\n      var requires = void 0;\n      var current = void 0;\n      var src = void 0;\n      var dependencies = void 0;\n\n      this._template = value;\n      this.templateIsLoaded = true;\n\n      requires = value.content.querySelectorAll('require');\n      dependencies = this.dependencies = new Array(requires.length);\n\n      for (var i = 0, ii = requires.length; i < ii; ++i) {\n        current = requires[i];\n        src = current.getAttribute('from');\n\n        if (!src) {\n          throw new Error('<require> element in ' + address + ' has no \"from\" attribute.');\n        }\n\n        dependencies[i] = new TemplateDependency(relativeToFile(src, address), current.getAttribute('as'));\n\n        if (current.parentNode) {\n          current.parentNode.removeChild(current);\n        }\n      }\n    }\n  }, {\n    key: 'factory',\n    get: function get() {\n      return this._factory;\n    },\n    set: function set(value) {\n      this._factory = value;\n      this.factoryIsReady = true;\n    }\n  }]);\n\n  return TemplateRegistryEntry;\n}();\n\nexport var Loader = function () {\n  function Loader() {\n    \n\n    this.templateRegistry = {};\n  }\n\n  Loader.prototype.map = function map(id, source) {\n    throw new Error('Loaders must implement map(id, source).');\n  };\n\n  Loader.prototype.normalizeSync = function normalizeSync(moduleId, relativeTo) {\n    throw new Error('Loaders must implement normalizeSync(moduleId, relativeTo).');\n  };\n\n  Loader.prototype.normalize = function normalize(moduleId, relativeTo) {\n    throw new Error('Loaders must implement normalize(moduleId: string, relativeTo: string): Promise<string>.');\n  };\n\n  Loader.prototype.loadModule = function loadModule(id) {\n    throw new Error('Loaders must implement loadModule(id).');\n  };\n\n  Loader.prototype.loadAllModules = function loadAllModules(ids) {\n    throw new Error('Loader must implement loadAllModules(ids).');\n  };\n\n  Loader.prototype.loadTemplate = function loadTemplate(url) {\n    throw new Error('Loader must implement loadTemplate(url).');\n  };\n\n  Loader.prototype.loadText = function loadText(url) {\n    throw new Error('Loader must implement loadText(url).');\n  };\n\n  Loader.prototype.applyPluginToUrl = function applyPluginToUrl(url, pluginName) {\n    throw new Error('Loader must implement applyPluginToUrl(url, pluginName).');\n  };\n\n  Loader.prototype.addPlugin = function addPlugin(pluginName, implementation) {\n    throw new Error('Loader must implement addPlugin(pluginName, implementation).');\n  };\n\n  Loader.prototype.getOrCreateTemplateRegistryEntry = function getOrCreateTemplateRegistryEntry(address) {\n    return this.templateRegistry[address] || (this.templateRegistry[address] = new TemplateRegistryEntry(address));\n  };\n\n  return Loader;\n}();","import { SpendMode } from './spendMode';\nimport { DemoLimitTime } from './demoLimitTime';\nimport { TalentChargeFrequency } from './talentChargeFrequency';\nimport { PlanType } from './planType';\nimport { Company } from 'models/companies/company';\n\nexport class Plan {\n  id: number;\n  name: string;\n  planType: PlanType;\n  description: string;\n  isActive: boolean;\n\n  talents: number;\n  talentChargeFrequency: TalentChargeFrequency;\n  demoLimitTime: DemoLimitTime;\n\n  accumulateTalents: boolean;\n  isTestItemsActive: boolean;\n  isCrossItemsActive: boolean;\n  isOtherItemsActive: boolean;\n\n  company: Company;\n  companyId: number;\n  cloneFromPlanId: number;\n\n  hasTheMethod: boolean;\n  hasHelp: boolean;\n  hasWebChat: boolean;\n  hasMicrosite: boolean;\n\n  customReportsSpendMode: SpendMode;\n\n  isResultsExport: boolean;\n  isCandidateResult: boolean;\n\n  isVideoInterview: boolean;\n  videoInterviewTalents: number;\n\n  isRobotHunter: boolean;\n  predictorTalents: number;\n  dailyConsult: number;\n\n  isViewWallet: boolean;\n\n  hasWebBrowser: boolean;\n  hasEmploymentPortal: boolean;\n  hasRecruitmentSources: boolean;\n  isDataBasePublic: boolean;\n  hasChatBot: boolean;\n  hasMutichanel: boolean;\n  consultationPerYear: number;\n  consultationPerYearTalents: number;\n  publishedVacancies:number;\n  publishedVacanciesTalents:number;\n  additionalTalentsSpendMode: SpendMode;\n  consultSmartPerProcess: number;\n  showLowBalanceMessage: boolean;\n\n  isTalentracker: boolean;\n  isTalentrackerColorFeedback: boolean;\n  talentrackerColorFeedbackTalents: number;\n  isTalentrackerCoaching: boolean;\n  talentrackerCoachingTalents: number;\n  isTalentrackerDevelopmentPlan: boolean;\n  talentrackerDevelopmentPlanTalents: number;\n  isTalentrackerJobOpportunities: boolean;\n  talentrackerJobOpportunitiesTalents: number;\n  aiTalents: number;\n}\n","export enum UserExportStatus {\n  None,\n  Processing,\n  Ready\n}\n","var _class, _temp;\n\n\n\nimport * as LogManager from 'aurelia-logging';\nimport i18next from 'i18next';\nimport { DOM, PLATFORM } from 'aurelia-pal';\nimport { EventAggregator } from 'aurelia-event-aggregator';\nimport { BindingSignaler } from 'aurelia-templating-resources';\n\nexport var I18N = (_temp = _class = function () {\n  function I18N(ea, signaler) {\n    var _this = this;\n\n    \n\n    this.globalVars = {};\n    this.params = {};\n    this.i18nextDefered = {\n      resolve: null,\n      promise: null\n    };\n\n    this.i18next = i18next;\n    this.ea = ea;\n    this.Intl = PLATFORM.global.Intl;\n    this.signaler = signaler;\n    this.i18nextDefered.promise = new Promise(function (resolve) {\n      return _this.i18nextDefered.resolve = resolve;\n    });\n  }\n\n  I18N.prototype.setup = function setup(options) {\n    var _this2 = this;\n\n    var defaultOptions = {\n      skipTranslationOnMissingKey: false,\n      compatibilityAPI: 'v1',\n      compatibilityJSON: 'v1',\n      lng: 'en',\n      attributes: ['t', 'i18n'],\n      fallbackLng: 'en',\n      debug: false\n    };\n\n    i18next.init(options || defaultOptions, function (err, t) {\n      if (i18next.options.attributes instanceof String) {\n        i18next.options.attributes = [i18next.options.attributes];\n      }\n\n      _this2.i18nextDefered.resolve(_this2.i18next);\n    });\n\n    return this.i18nextDefered.promise;\n  };\n\n  I18N.prototype.i18nextReady = function i18nextReady() {\n    return this.i18nextDefered.promise;\n  };\n\n  I18N.prototype.setLocale = function setLocale(locale) {\n    var _this3 = this;\n\n    return new Promise(function (resolve) {\n      var oldLocale = _this3.getLocale();\n      _this3.i18next.changeLanguage(locale, function (err, tr) {\n        _this3.ea.publish('i18n:locale:changed', { oldValue: oldLocale, newValue: locale });\n        _this3.signaler.signal('aurelia-translation-signal');\n        resolve(tr);\n      });\n    });\n  };\n\n  I18N.prototype.getLocale = function getLocale() {\n    return this.i18next.language;\n  };\n\n  I18N.prototype.nf = function nf(options, locales) {\n    return new this.Intl.NumberFormat(locales || this.getLocale(), options || {});\n  };\n\n  I18N.prototype.uf = function uf(number, locale) {\n    var nf = this.nf({}, locale || this.getLocale());\n    var comparer = nf.format(10000 / 3);\n\n    var thousandSeparator = comparer[1];\n    var decimalSeparator = comparer[5];\n\n    if (thousandSeparator === '.') {\n      thousandSeparator = '\\\\.';\n    }\n\n    var result = number.replace(new RegExp(thousandSeparator, 'g'), '').replace(/[^\\d.,-]/g, '').replace(decimalSeparator, '.');\n\n    return Number(result);\n  };\n\n  I18N.prototype.df = function df(options, locales) {\n    return new this.Intl.DateTimeFormat(locales || this.getLocale(), options);\n  };\n\n  I18N.prototype.tr = function tr(key, options) {\n    var fullOptions = this.globalVars;\n\n    if (options !== undefined) {\n      fullOptions = Object.assign(Object.assign({}, this.globalVars), options);\n    }\n\n    return this.i18next.t(key, fullOptions);\n  };\n\n  I18N.prototype.registerGlobalVariable = function registerGlobalVariable(key, value) {\n    this.globalVars[key] = value;\n  };\n\n  I18N.prototype.unregisterGlobalVariable = function unregisterGlobalVariable(key) {\n    delete this.globalVars[key];\n  };\n\n  I18N.prototype.updateTranslations = function updateTranslations(el) {\n    if (!el || !el.querySelectorAll) {\n      return;\n    }\n\n    var i = void 0;\n    var l = void 0;\n\n    var selector = [].concat(this.i18next.options.attributes);\n    for (i = 0, l = selector.length; i < l; i++) {\n      selector[i] = '[' + selector[i] + ']';\n    }selector = selector.join(',');\n\n    var nodes = el.querySelectorAll(selector);\n    for (i = 0, l = nodes.length; i < l; i++) {\n      var node = nodes[i];\n      var keys = void 0;\n      var params = void 0;\n\n      for (var i2 = 0, l2 = this.i18next.options.attributes.length; i2 < l2; i2++) {\n        keys = node.getAttribute(this.i18next.options.attributes[i2]);\n        var pname = this.i18next.options.attributes[i2] + '-params';\n\n        if (pname && node.au && node.au[pname]) {\n          params = node.au[pname].viewModel.value;\n        }\n\n        if (keys) break;\n      }\n\n      if (!keys) continue;\n\n      this.updateValue(node, keys, params);\n    }\n  };\n\n  I18N.prototype.updateValue = function updateValue(node, value, params) {\n    if (value === null || value === undefined) {\n      return;\n    }\n\n    var keys = value.toString().split(';');\n    var i = keys.length;\n\n    while (i--) {\n      var key = keys[i];\n\n      var re = /\\[([a-z\\-, ]*)\\]/ig;\n\n      var m = void 0;\n      var attr = 'text';\n\n      if (node.nodeName === 'IMG') attr = 'src';\n\n      while ((m = re.exec(key)) !== null) {\n        if (m.index === re.lastIndex) {\n          re.lastIndex++;\n        }\n        if (m) {\n          key = key.replace(m[0], '');\n          attr = m[1];\n        }\n      }\n\n      var attrs = attr.split(',');\n      var j = attrs.length;\n\n      while (j--) {\n        attr = attrs[j].trim();\n\n        if (!node._textContent) node._textContent = node.textContent;\n        if (!node._innerHTML) node._innerHTML = node.innerHTML;\n\n        var attrCC = attr.replace(/-([a-z])/g, function (g) {\n          return g[1].toUpperCase();\n        });\n        var reservedNames = ['prepend', 'append', 'text', 'html'];\n        var i18nLogger = LogManager.getLogger('i18n');\n\n        if (reservedNames.indexOf(attr) > -1 && node.au && node.au.controller && node.au.controller.viewModel && attrCC in node.au.controller.viewModel) {\n          i18nLogger.warn('Aurelia I18N reserved attribute name\\n\\n  [' + reservedNames.join(', ') + ']\\n\\n  Your custom element has a bindable named ' + attr + ' which is a reserved word.\\n\\n  If you\\'d like Aurelia I18N to translate your bindable instead, please consider giving it another name.');\n        }\n\n        if (this.i18next.options.skipTranslationOnMissingKey && this.tr(key, params) === key) {\n          i18nLogger.warn('Couldn\\'t find translation for key: ' + key);\n          return;\n        }\n\n        switch (attr) {\n          case 'text':\n            var newChild = DOM.createTextNode(this.tr(key, params));\n            if (node._newChild && node._newChild.parentNode === node) {\n              node.removeChild(node._newChild);\n            }\n\n            node._newChild = newChild;\n            while (node.firstChild) {\n              node.removeChild(node.firstChild);\n            }\n            node.appendChild(node._newChild);\n            break;\n          case 'prepend':\n            var prependParser = DOM.createElement('div');\n            prependParser.innerHTML = this.tr(key, params);\n            for (var ni = node.childNodes.length - 1; ni >= 0; ni--) {\n              if (node.childNodes[ni]._prepended) {\n                node.removeChild(node.childNodes[ni]);\n              }\n            }\n\n            for (var pi = prependParser.childNodes.length - 1; pi >= 0; pi--) {\n              prependParser.childNodes[pi]._prepended = true;\n              if (node.firstChild) {\n                node.insertBefore(prependParser.childNodes[pi], node.firstChild);\n              } else {\n                node.appendChild(prependParser.childNodes[pi]);\n              }\n            }\n            break;\n          case 'append':\n            var appendParser = DOM.createElement('div');\n            appendParser.innerHTML = this.tr(key, params);\n            for (var _ni = node.childNodes.length - 1; _ni >= 0; _ni--) {\n              if (node.childNodes[_ni]._appended) {\n                node.removeChild(node.childNodes[_ni]);\n              }\n            }\n\n            while (appendParser.firstChild) {\n              appendParser.firstChild._appended = true;\n              node.appendChild(appendParser.firstChild);\n            }\n            break;\n          case 'html':\n            node.innerHTML = this.tr(key, params);\n            break;\n          default:\n            if (node.au && node.au.controller && node.au.controller.viewModel && attrCC in node.au.controller.viewModel) {\n              node.au.controller.viewModel[attrCC] = this.tr(key, params);\n            } else {\n              node.setAttribute(attr, this.tr(key, params));\n            }\n\n            break;\n        }\n      }\n    }\n  };\n\n  return I18N;\n}(), _class.inject = [EventAggregator, BindingSignaler], _temp);","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { BulkActivation } from \"models/test-person/bulkActivation\";\nimport { BulkActivationLogFileResult } from \"models/test-person/bulkActivationLogFileResult\";\nimport * as moment from \"moment\";\n\nimport * as objectToFormData from 'object-to-formdata';\n\n@autoinject()\nexport class BulkActivationService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient,\n  ) {\n\n    this.logger = LogManager.getLogger(\"BulkActivationService\");\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"bulkactivation/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async listObservation(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"bulkactivation/list-observation\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n\n  public async listItemsById(id: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`bulkactivation/list-items/${id}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getById(id: number): Promise<BulkActivation> {\n    return await this.client.getById(`bulkactivation`, id)\n      .then((response: BulkActivation) => {\n        return response;\n      });\n  }\n\n  // public async getAll(): Promise<BulkActivation[]> {\n  //   return await this.client.get(\"bulkactivation\")\n  //     .then((response: any) => {\n  //       return <BulkActivation[]>response;\n  //     });\n  // }\n\n  public async sendReminder(id: number): Promise<boolean> {\n    return await this.client.post(\"bulkactivation/send-reminder/\" + id)\n      .then((response: any) => {\n        return true\n      });\n  }\n\n  public async createLogFile(id: number): Promise<BulkActivationLogFileResult> {\n    return await this.client.post(\"bulkactivation/create-logfile/\" + id)\n      .then((response: any) => {\n        return <BulkActivationLogFileResult>response;\n      });\n  }\n\n  public async exportItemsById(id: number, name: string): Promise<any> {\n    let filename: string = name + \"_\" + moment().format() + \".csv\";\n    return await this.client.download(\"GET\", `bulkactivation/export-items/${id}`, null, filename, \"text/csv\", null)\n      .then(() => null);\n  }\n\n  public async create(model: BulkActivation): Promise<BulkActivation> {\n\n    // let formData = new FormData();\n\n    // let filedata = null;\n    // if (model.filedata) {\n    //   filedata = model.filedata[0];\n    // }\n\n    // // this.logger.debug(\"filedata\", filedata);\n\n    // formData.append('filedata', filedata);\n    // formData.append('filename', model.fileName);\n    // formData.append('name', model.name);\n    // formData.append('personMode', model.personMode.toString());\n    // formData.append('tags', (model.tags || \"\"));\n    // formData.append('hasMicroSite', model.hasMicroSite || false as any);\n    // formData.append('isConfidentialTest', model.isConfidentialTest || false as any);\n    // formData.append('questionaryWay', model.questionaryWay.toString());\n    // formData.append('whoCanSeeReport', model.whoCanSeeReport.toString());\n    // // this.logger.debug(\"date\", model.invitationExpireDate.toISOString());\n    // if (model.invitationExpireDate) {\n    //   formData.append('invitationExpireDate', model.invitationExpireDate ? model.invitationExpireDate.toISOString() : \"\");\n    // }\n    // formData.append('languageId', model.languageId.toString());\n    // formData.append('additionalText', model.additionalText || \"\");\n    // formData.append('reportTemplateId', model.reportTemplateId ? model.reportTemplateId.toString() : \"\");\n    // formData.append('questionaryGroupId', model.questionaryGroupId ? model.questionaryGroupId.toString() : \"\");\n    // formData.append('companyCompetenceIds', model.companyCompetenceIds.length > 0 ? JSON.stringify(model.companyCompetenceIds) : \"\");\n    // // competences\n\n    if (model.filedata) {\n      model.filedata = model.filedata[0];\n    }\n\n    let formData = objectToFormData(model);\n\n    if(model.questionaryIds){\n      model.questionaryIds.forEach((questionary, index) => {\n        formData.append(`questionaryIds[${index}].languageId`, questionary.languageId.toString());\n        formData.append(`questionaryIds[${index}].questionaryId`, questionary.questionaryId.toString());\n        formData.append(`questionaryIds[${index}].stringId`, questionary.stringId.toString());\n     });\n    }\n\n    if (model.engineersTests) {\n      model.engineersTests.forEach((test, index) => {\n        formData.append(`engineersTests[${index}].difficulty`, test.difficulty.toString());\n        formData.append(`engineersTests[${index}].questionaryId`, test.questionaryId.toString());\n      });\n    }\n\n    if (model.activationThematicAssociates) {\n      model.activationThematicAssociates.forEach((associate, index) => {\n        formData.append(`activationThematicAssociates[${index}].thematicGroupId`, associate.thematicGroupId.toString());\n        formData.append(`activationThematicAssociates[${index}].thematicVariableId`, associate.thematicVariableId.toString());\n        formData.append(`activationThematicAssociates[${index}].questionaryId`, associate.questionaryId.toString());\n      });\n    }\n    \n    \n    return await this.client.requestFormData(\"PUT\", `bulkactivation`, formData)\n      .then((response: any) => {\n        return <BulkActivation>response;\n      });\n\n  }\n\n  public async getMediaByBulkActivationId(id: number): Promise<string> {\n    return await this.client.get(`bulkActivation/get-media-by-bulkActivationId/${id}`)\n      .then((response: any) => {\n        return <string>response;\n      });\n  }\n\n  public async addPeople(id: number, model: BulkActivation): Promise<any> {\n    if (model.filedata) {\n      model.filedata = model.filedata[0];\n    }\n\n    let formData = objectToFormData(model);\n\n    return await this.client.requestFormData(\"POST\", `bulkactivation/add-people/${id}`, formData)\n      .then((response: any) => {\n        return response;\n      });\n  }\n\n  public async removePerson(bulkActivationId: number, itemId: number): Promise<boolean> {\n    return await this.client.delete(`bulkactivation/remove-item/${bulkActivationId}/${itemId}`)\n      .then(() => {\n        return true;\n      });\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { QuestionaryGroup } from \"models/test-management/questionary-groups/questionaryGroup\";\n\n@autoinject()\nexport class QuestionaryGroupService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"QuestionaryGroupService\");\n  }\n\n  public async getAll(): Promise<QuestionaryGroup[]> {\n    return await this.client.get(\"questionarygroup\")\n      .then((response: QuestionaryGroup[]) => {\n        return response;\n      });\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"questionarygroup/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getById(id: number): Promise<QuestionaryGroup> {\n    return await this.client.getById(\"questionarygroup\", id)\n      .then((response: any) => {        \n        return <QuestionaryGroup>response;\n      });\n  }\n\n  public async create(model: QuestionaryGroup): Promise<QuestionaryGroup> {\n    return await this.client.create(\"questionarygroup\", model)\n      .then((response: any) => {\n        return <QuestionaryGroup>response;\n      });\n  }\n\n  public async update(model: QuestionaryGroup): Promise<void> {\n    return await this.client.updateById(\"questionarygroup\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(\"questionarygroup\", id)\n      .then(() => null);\n  }\n  public async getTalentsById(id: number): Promise<QuestionaryGroup> {\n    return await this.client.get(\"questionarygroup/get-talents-by-id\", id)\n      .then((response: any) => {\n        return <QuestionaryGroup>response;\n      });\n  }\n  public async validateActivationVideoInterview(id: number): Promise<boolean> {\n    return await this.client.post(`questionarygroup/validate-activation-videointerview/${id}`)\n    .then((response: boolean) => {\n      return response;\n    });\n  }\n\n}\n","export { _getArrayObserver as getArrayObserver };\nexport { _getMapObserver as getMapObserver };\nexport { _getSetObserver as getSetObserver };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _dec, _dec2, _class, _dec3, _class2, _dec4, _class3, _dec5, _class5, _dec6, _class7, _dec7, _class8, _dec8, _class9, _dec9, _class10, _class12, _temp, _dec10, _class13, _class14, _temp2;\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\nimport * as LogManager from 'aurelia-logging';\nimport { PLATFORM, DOM } from 'aurelia-pal';\nimport { TaskQueue } from 'aurelia-task-queue';\nimport { metadata } from 'aurelia-metadata';\n\nexport var targetContext = 'Binding:target';\nexport var sourceContext = 'Binding:source';\n\nvar map = Object.create(null);\n\nexport function camelCase(name) {\n  if (name in map) {\n    return map[name];\n  }\n  var result = name.charAt(0).toLowerCase() + name.slice(1).replace(/[_.-](\\w|$)/g, function (_, x) {\n    return x.toUpperCase();\n  });\n  map[name] = result;\n  return result;\n}\n\nexport function createOverrideContext(bindingContext, parentOverrideContext) {\n  return {\n    bindingContext: bindingContext,\n    parentOverrideContext: parentOverrideContext || null\n  };\n}\n\nexport function getContextFor(name, scope, ancestor) {\n  var oc = scope.overrideContext;\n\n  if (ancestor) {\n    while (ancestor && oc) {\n      ancestor--;\n      oc = oc.parentOverrideContext;\n    }\n    if (ancestor || !oc) {\n      return undefined;\n    }\n    return name in oc ? oc : oc.bindingContext;\n  }\n\n  while (oc && !(name in oc) && !(oc.bindingContext && name in oc.bindingContext)) {\n    oc = oc.parentOverrideContext;\n  }\n  if (oc) {\n    return name in oc ? oc : oc.bindingContext;\n  }\n\n  return scope.bindingContext || scope.overrideContext;\n}\n\nexport function createScopeForTest(bindingContext, parentBindingContext) {\n  if (parentBindingContext) {\n    return {\n      bindingContext: bindingContext,\n      overrideContext: createOverrideContext(bindingContext, createOverrideContext(parentBindingContext))\n    };\n  }\n  return {\n    bindingContext: bindingContext,\n    overrideContext: createOverrideContext(bindingContext)\n  };\n}\n\nvar slotNames = [];\nvar versionSlotNames = [];\nvar lastSlot = -1;\nfunction ensureEnoughSlotNames(currentSlot) {\n  if (currentSlot === lastSlot) {\n    lastSlot += 5;\n    var ii = slotNames.length = versionSlotNames.length = lastSlot + 1;\n    for (var i = currentSlot + 1; i < ii; ++i) {\n      slotNames[i] = '_observer' + i;\n      versionSlotNames[i] = '_observerVersion' + i;\n    }\n  }\n}\nensureEnoughSlotNames(-1);\n\nfunction addObserver(observer) {\n  var observerSlots = this._observerSlots === undefined ? 0 : this._observerSlots;\n  var i = observerSlots;\n  while (i-- && this[slotNames[i]] !== observer) {}\n\n  if (i === -1) {\n    i = 0;\n    while (this[slotNames[i]]) {\n      i++;\n    }\n    this[slotNames[i]] = observer;\n    observer.subscribe(sourceContext, this);\n\n    if (i === observerSlots) {\n      this._observerSlots = i + 1;\n    }\n  }\n\n  if (this._version === undefined) {\n    this._version = 0;\n  }\n  this[versionSlotNames[i]] = this._version;\n  ensureEnoughSlotNames(i);\n}\n\nfunction observeProperty(obj, propertyName) {\n  var observer = this.observerLocator.getObserver(obj, propertyName);\n  addObserver.call(this, observer);\n}\n\nfunction observeArray(array) {\n  var observer = this.observerLocator.getArrayObserver(array);\n  addObserver.call(this, observer);\n}\n\nfunction unobserve(all) {\n  var i = this._observerSlots;\n  while (i--) {\n    if (all || this[versionSlotNames[i]] !== this._version) {\n      var observer = this[slotNames[i]];\n      this[slotNames[i]] = null;\n      if (observer) {\n        observer.unsubscribe(sourceContext, this);\n      }\n    }\n  }\n}\n\nexport function connectable() {\n  return function (target) {\n    target.prototype.observeProperty = observeProperty;\n    target.prototype.observeArray = observeArray;\n    target.prototype.unobserve = unobserve;\n    target.prototype.addObserver = addObserver;\n  };\n}\n\nvar queue = [];\nvar queued = {};\nvar nextId = 0;\nvar minimumImmediate = 100;\nvar frameBudget = 15;\n\nvar isFlushRequested = false;\nvar immediate = 0;\n\nfunction flush(animationFrameStart) {\n  var length = queue.length;\n  var i = 0;\n  while (i < length) {\n    var binding = queue[i];\n    queued[binding.__connectQueueId] = false;\n    binding.connect(true);\n    i++;\n\n    if (i % 100 === 0 && PLATFORM.performance.now() - animationFrameStart > frameBudget) {\n      break;\n    }\n  }\n  queue.splice(0, i);\n\n  if (queue.length) {\n    PLATFORM.requestAnimationFrame(flush);\n  } else {\n    isFlushRequested = false;\n    immediate = 0;\n  }\n}\n\nexport function enqueueBindingConnect(binding) {\n  if (immediate < minimumImmediate) {\n    immediate++;\n    binding.connect(false);\n  } else {\n    var id = binding.__connectQueueId;\n    if (id === undefined) {\n      id = nextId;\n      nextId++;\n      binding.__connectQueueId = id;\n    }\n\n    if (!queued[id]) {\n      queue.push(binding);\n      queued[id] = true;\n    }\n  }\n  if (!isFlushRequested) {\n    isFlushRequested = true;\n    PLATFORM.requestAnimationFrame(flush);\n  }\n}\n\nexport function setConnectQueueThreshold(value) {\n  minimumImmediate = value;\n}\n\nexport function enableConnectQueue() {\n  setConnectQueueThreshold(100);\n}\n\nexport function disableConnectQueue() {\n  setConnectQueueThreshold(Number.MAX_SAFE_INTEGER);\n}\n\nexport function getConnectQueueSize() {\n  return queue.length;\n}\n\nfunction addSubscriber(context, callable) {\n  if (this.hasSubscriber(context, callable)) {\n    return false;\n  }\n  if (!this._context0) {\n    this._context0 = context;\n    this._callable0 = callable;\n    return true;\n  }\n  if (!this._context1) {\n    this._context1 = context;\n    this._callable1 = callable;\n    return true;\n  }\n  if (!this._context2) {\n    this._context2 = context;\n    this._callable2 = callable;\n    return true;\n  }\n  if (!this._contextsRest) {\n    this._contextsRest = [context];\n    this._callablesRest = [callable];\n    return true;\n  }\n  this._contextsRest.push(context);\n  this._callablesRest.push(callable);\n  return true;\n}\n\nfunction removeSubscriber(context, callable) {\n  if (this._context0 === context && this._callable0 === callable) {\n    this._context0 = null;\n    this._callable0 = null;\n    return true;\n  }\n  if (this._context1 === context && this._callable1 === callable) {\n    this._context1 = null;\n    this._callable1 = null;\n    return true;\n  }\n  if (this._context2 === context && this._callable2 === callable) {\n    this._context2 = null;\n    this._callable2 = null;\n    return true;\n  }\n  var callables = this._callablesRest;\n  if (callables === undefined || callables.length === 0) {\n    return false;\n  }\n  var contexts = this._contextsRest;\n  var i = 0;\n  while (!(callables[i] === callable && contexts[i] === context) && callables.length > i) {\n    i++;\n  }\n  if (i >= callables.length) {\n    return false;\n  }\n  contexts.splice(i, 1);\n  callables.splice(i, 1);\n  return true;\n}\n\nvar arrayPool1 = [];\nvar arrayPool2 = [];\nvar poolUtilization = [];\n\nfunction callSubscribers(newValue, oldValue) {\n  var context0 = this._context0;\n  var callable0 = this._callable0;\n  var context1 = this._context1;\n  var callable1 = this._callable1;\n  var context2 = this._context2;\n  var callable2 = this._callable2;\n  var length = this._contextsRest ? this._contextsRest.length : 0;\n  var contextsRest = void 0;\n  var callablesRest = void 0;\n  var poolIndex = void 0;\n  var i = void 0;\n  if (length) {\n    poolIndex = poolUtilization.length;\n    while (poolIndex-- && poolUtilization[poolIndex]) {}\n    if (poolIndex < 0) {\n      poolIndex = poolUtilization.length;\n      contextsRest = [];\n      callablesRest = [];\n      poolUtilization.push(true);\n      arrayPool1.push(contextsRest);\n      arrayPool2.push(callablesRest);\n    } else {\n      poolUtilization[poolIndex] = true;\n      contextsRest = arrayPool1[poolIndex];\n      callablesRest = arrayPool2[poolIndex];\n    }\n\n    i = length;\n    while (i--) {\n      contextsRest[i] = this._contextsRest[i];\n      callablesRest[i] = this._callablesRest[i];\n    }\n  }\n\n  if (context0) {\n    if (callable0) {\n      callable0.call(context0, newValue, oldValue);\n    } else {\n      context0(newValue, oldValue);\n    }\n  }\n  if (context1) {\n    if (callable1) {\n      callable1.call(context1, newValue, oldValue);\n    } else {\n      context1(newValue, oldValue);\n    }\n  }\n  if (context2) {\n    if (callable2) {\n      callable2.call(context2, newValue, oldValue);\n    } else {\n      context2(newValue, oldValue);\n    }\n  }\n  if (length) {\n    for (i = 0; i < length; i++) {\n      var callable = callablesRest[i];\n      var context = contextsRest[i];\n      if (callable) {\n        callable.call(context, newValue, oldValue);\n      } else {\n        context(newValue, oldValue);\n      }\n      contextsRest[i] = null;\n      callablesRest[i] = null;\n    }\n    poolUtilization[poolIndex] = false;\n  }\n}\n\nfunction hasSubscribers() {\n  return !!(this._context0 || this._context1 || this._context2 || this._contextsRest && this._contextsRest.length);\n}\n\nfunction hasSubscriber(context, callable) {\n  var has = this._context0 === context && this._callable0 === callable || this._context1 === context && this._callable1 === callable || this._context2 === context && this._callable2 === callable;\n  if (has) {\n    return true;\n  }\n  var index = void 0;\n  var contexts = this._contextsRest;\n  if (!contexts || (index = contexts.length) === 0) {\n    return false;\n  }\n  var callables = this._callablesRest;\n  while (index--) {\n    if (contexts[index] === context && callables[index] === callable) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport function subscriberCollection() {\n  return function (target) {\n    target.prototype.addSubscriber = addSubscriber;\n    target.prototype.removeSubscriber = removeSubscriber;\n    target.prototype.callSubscribers = callSubscribers;\n    target.prototype.hasSubscribers = hasSubscribers;\n    target.prototype.hasSubscriber = hasSubscriber;\n  };\n}\n\nexport var ExpressionObserver = (_dec = connectable(), _dec2 = subscriberCollection(), _dec(_class = _dec2(_class = function () {\n  function ExpressionObserver(scope, expression, observerLocator, lookupFunctions) {\n    \n\n    this.scope = scope;\n    this.expression = expression;\n    this.observerLocator = observerLocator;\n    this.lookupFunctions = lookupFunctions;\n  }\n\n  ExpressionObserver.prototype.getValue = function getValue() {\n    return this.expression.evaluate(this.scope, this.lookupFunctions);\n  };\n\n  ExpressionObserver.prototype.setValue = function setValue(newValue) {\n    this.expression.assign(this.scope, newValue);\n  };\n\n  ExpressionObserver.prototype.subscribe = function subscribe(context, callable) {\n    var _this = this;\n\n    if (!this.hasSubscribers()) {\n      this.oldValue = this.expression.evaluate(this.scope, this.lookupFunctions);\n      this.expression.connect(this, this.scope);\n    }\n    this.addSubscriber(context, callable);\n    if (arguments.length === 1 && context instanceof Function) {\n      return {\n        dispose: function dispose() {\n          _this.unsubscribe(context, callable);\n        }\n      };\n    }\n  };\n\n  ExpressionObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n    if (this.removeSubscriber(context, callable) && !this.hasSubscribers()) {\n      this.unobserve(true);\n      this.oldValue = undefined;\n    }\n  };\n\n  ExpressionObserver.prototype.call = function call() {\n    var newValue = this.expression.evaluate(this.scope, this.lookupFunctions);\n    var oldValue = this.oldValue;\n    if (newValue !== oldValue) {\n      this.oldValue = newValue;\n      this.callSubscribers(newValue, oldValue);\n    }\n    this._version++;\n    this.expression.connect(this, this.scope);\n    this.unobserve(false);\n  };\n\n  return ExpressionObserver;\n}()) || _class) || _class);\n\nfunction isIndex(s) {\n  return +s === s >>> 0;\n}\n\nfunction toNumber(s) {\n  return +s;\n}\n\nfunction newSplice(index, removed, addedCount) {\n  return {\n    index: index,\n    removed: removed,\n    addedCount: addedCount\n  };\n}\n\nvar EDIT_LEAVE = 0;\nvar EDIT_UPDATE = 1;\nvar EDIT_ADD = 2;\nvar EDIT_DELETE = 3;\n\nfunction ArraySplice() {}\n\nArraySplice.prototype = {\n  calcEditDistances: function calcEditDistances(current, currentStart, currentEnd, old, oldStart, oldEnd) {\n    var rowCount = oldEnd - oldStart + 1;\n    var columnCount = currentEnd - currentStart + 1;\n    var distances = new Array(rowCount);\n    var north = void 0;\n    var west = void 0;\n\n    for (var i = 0; i < rowCount; ++i) {\n      distances[i] = new Array(columnCount);\n      distances[i][0] = i;\n    }\n\n    for (var j = 0; j < columnCount; ++j) {\n      distances[0][j] = j;\n    }\n\n    for (var _i = 1; _i < rowCount; ++_i) {\n      for (var _j = 1; _j < columnCount; ++_j) {\n        if (this.equals(current[currentStart + _j - 1], old[oldStart + _i - 1])) {\n          distances[_i][_j] = distances[_i - 1][_j - 1];\n        } else {\n          north = distances[_i - 1][_j] + 1;\n          west = distances[_i][_j - 1] + 1;\n          distances[_i][_j] = north < west ? north : west;\n        }\n      }\n    }\n\n    return distances;\n  },\n\n  spliceOperationsFromEditDistances: function spliceOperationsFromEditDistances(distances) {\n    var i = distances.length - 1;\n    var j = distances[0].length - 1;\n    var current = distances[i][j];\n    var edits = [];\n    while (i > 0 || j > 0) {\n      if (i === 0) {\n        edits.push(EDIT_ADD);\n        j--;\n        continue;\n      }\n      if (j === 0) {\n        edits.push(EDIT_DELETE);\n        i--;\n        continue;\n      }\n      var northWest = distances[i - 1][j - 1];\n      var west = distances[i - 1][j];\n      var north = distances[i][j - 1];\n\n      var min = void 0;\n      if (west < north) {\n        min = west < northWest ? west : northWest;\n      } else {\n        min = north < northWest ? north : northWest;\n      }\n\n      if (min === northWest) {\n        if (northWest === current) {\n          edits.push(EDIT_LEAVE);\n        } else {\n          edits.push(EDIT_UPDATE);\n          current = northWest;\n        }\n        i--;\n        j--;\n      } else if (min === west) {\n        edits.push(EDIT_DELETE);\n        i--;\n        current = west;\n      } else {\n        edits.push(EDIT_ADD);\n        j--;\n        current = north;\n      }\n    }\n\n    edits.reverse();\n    return edits;\n  },\n\n  calcSplices: function calcSplices(current, currentStart, currentEnd, old, oldStart, oldEnd) {\n    var prefixCount = 0;\n    var suffixCount = 0;\n\n    var minLength = Math.min(currentEnd - currentStart, oldEnd - oldStart);\n    if (currentStart === 0 && oldStart === 0) {\n      prefixCount = this.sharedPrefix(current, old, minLength);\n    }\n\n    if (currentEnd === current.length && oldEnd === old.length) {\n      suffixCount = this.sharedSuffix(current, old, minLength - prefixCount);\n    }\n\n    currentStart += prefixCount;\n    oldStart += prefixCount;\n    currentEnd -= suffixCount;\n    oldEnd -= suffixCount;\n\n    if (currentEnd - currentStart === 0 && oldEnd - oldStart === 0) {\n      return [];\n    }\n\n    if (currentStart === currentEnd) {\n      var _splice = newSplice(currentStart, [], 0);\n      while (oldStart < oldEnd) {\n        _splice.removed.push(old[oldStart++]);\n      }\n\n      return [_splice];\n    } else if (oldStart === oldEnd) {\n      return [newSplice(currentStart, [], currentEnd - currentStart)];\n    }\n\n    var ops = this.spliceOperationsFromEditDistances(this.calcEditDistances(current, currentStart, currentEnd, old, oldStart, oldEnd));\n\n    var splice = undefined;\n    var splices = [];\n    var index = currentStart;\n    var oldIndex = oldStart;\n    for (var i = 0; i < ops.length; ++i) {\n      switch (ops[i]) {\n        case EDIT_LEAVE:\n          if (splice) {\n            splices.push(splice);\n            splice = undefined;\n          }\n\n          index++;\n          oldIndex++;\n          break;\n        case EDIT_UPDATE:\n          if (!splice) {\n            splice = newSplice(index, [], 0);\n          }\n\n          splice.addedCount++;\n          index++;\n\n          splice.removed.push(old[oldIndex]);\n          oldIndex++;\n          break;\n        case EDIT_ADD:\n          if (!splice) {\n            splice = newSplice(index, [], 0);\n          }\n\n          splice.addedCount++;\n          index++;\n          break;\n        case EDIT_DELETE:\n          if (!splice) {\n            splice = newSplice(index, [], 0);\n          }\n\n          splice.removed.push(old[oldIndex]);\n          oldIndex++;\n          break;\n      }\n    }\n\n    if (splice) {\n      splices.push(splice);\n    }\n    return splices;\n  },\n\n  sharedPrefix: function sharedPrefix(current, old, searchLength) {\n    for (var i = 0; i < searchLength; ++i) {\n      if (!this.equals(current[i], old[i])) {\n        return i;\n      }\n    }\n\n    return searchLength;\n  },\n\n  sharedSuffix: function sharedSuffix(current, old, searchLength) {\n    var index1 = current.length;\n    var index2 = old.length;\n    var count = 0;\n    while (count < searchLength && this.equals(current[--index1], old[--index2])) {\n      count++;\n    }\n\n    return count;\n  },\n\n  calculateSplices: function calculateSplices(current, previous) {\n    return this.calcSplices(current, 0, current.length, previous, 0, previous.length);\n  },\n\n  equals: function equals(currentValue, previousValue) {\n    return currentValue === previousValue;\n  }\n};\n\nvar arraySplice = new ArraySplice();\n\nexport function calcSplices(current, currentStart, currentEnd, old, oldStart, oldEnd) {\n  return arraySplice.calcSplices(current, currentStart, currentEnd, old, oldStart, oldEnd);\n}\n\nfunction intersect(start1, end1, start2, end2) {\n  if (end1 < start2 || end2 < start1) {\n    return -1;\n  }\n\n  if (end1 === start2 || end2 === start1) {\n    return 0;\n  }\n\n  if (start1 < start2) {\n    if (end1 < end2) {\n      return end1 - start2;\n    }\n\n    return end2 - start2;\n  }\n\n  if (end2 < end1) {\n    return end2 - start1;\n  }\n\n  return end1 - start1;\n}\n\nexport function mergeSplice(splices, index, removed, addedCount) {\n  var splice = newSplice(index, removed, addedCount);\n\n  var inserted = false;\n  var insertionOffset = 0;\n\n  for (var i = 0; i < splices.length; i++) {\n    var current = splices[i];\n    current.index += insertionOffset;\n\n    if (inserted) {\n      continue;\n    }\n\n    var intersectCount = intersect(splice.index, splice.index + splice.removed.length, current.index, current.index + current.addedCount);\n\n    if (intersectCount >= 0) {\n\n      splices.splice(i, 1);\n      i--;\n\n      insertionOffset -= current.addedCount - current.removed.length;\n\n      splice.addedCount += current.addedCount - intersectCount;\n      var deleteCount = splice.removed.length + current.removed.length - intersectCount;\n\n      if (!splice.addedCount && !deleteCount) {\n        inserted = true;\n      } else {\n        var currentRemoved = current.removed;\n\n        if (splice.index < current.index) {\n          var prepend = splice.removed.slice(0, current.index - splice.index);\n          Array.prototype.push.apply(prepend, currentRemoved);\n          currentRemoved = prepend;\n        }\n\n        if (splice.index + splice.removed.length > current.index + current.addedCount) {\n          var append = splice.removed.slice(current.index + current.addedCount - splice.index);\n          Array.prototype.push.apply(currentRemoved, append);\n        }\n\n        splice.removed = currentRemoved;\n        if (current.index < splice.index) {\n          splice.index = current.index;\n        }\n      }\n    } else if (splice.index < current.index) {\n\n      inserted = true;\n\n      splices.splice(i, 0, splice);\n      i++;\n\n      var offset = splice.addedCount - splice.removed.length;\n      current.index += offset;\n      insertionOffset += offset;\n    }\n  }\n\n  if (!inserted) {\n    splices.push(splice);\n  }\n}\n\nfunction createInitialSplices(array, changeRecords) {\n  var splices = [];\n\n  for (var i = 0; i < changeRecords.length; i++) {\n    var record = changeRecords[i];\n    switch (record.type) {\n      case 'splice':\n        mergeSplice(splices, record.index, record.removed.slice(), record.addedCount);\n        break;\n      case 'add':\n      case 'update':\n      case 'delete':\n        if (!isIndex(record.name)) {\n          continue;\n        }\n\n        var index = toNumber(record.name);\n        if (index < 0) {\n          continue;\n        }\n\n        mergeSplice(splices, index, [record.oldValue], record.type === 'delete' ? 0 : 1);\n        break;\n      default:\n        console.error('Unexpected record type: ' + JSON.stringify(record));\n        break;\n    }\n  }\n\n  return splices;\n}\n\nexport function projectArraySplices(array, changeRecords) {\n  var splices = [];\n\n  createInitialSplices(array, changeRecords).forEach(function (splice) {\n    if (splice.addedCount === 1 && splice.removed.length === 1) {\n      if (splice.removed[0] !== array[splice.index]) {\n        splices.push(splice);\n      }\n\n      return;\n    }\n\n    splices = splices.concat(calcSplices(array, splice.index, splice.index + splice.addedCount, splice.removed, 0, splice.removed.length));\n  });\n\n  return splices;\n}\n\nfunction newRecord(type, object, key, oldValue) {\n  return {\n    type: type,\n    object: object,\n    key: key,\n    oldValue: oldValue\n  };\n}\n\nexport function getChangeRecords(map) {\n  var entries = new Array(map.size);\n  var keys = map.keys();\n  var i = 0;\n  var item = void 0;\n\n  while (item = keys.next()) {\n    if (item.done) {\n      break;\n    }\n\n    entries[i] = newRecord('added', map, item.value);\n    i++;\n  }\n\n  return entries;\n}\n\nexport var ModifyCollectionObserver = (_dec3 = subscriberCollection(), _dec3(_class2 = function () {\n  function ModifyCollectionObserver(taskQueue, collection) {\n    \n\n    this.taskQueue = taskQueue;\n    this.queued = false;\n    this.changeRecords = null;\n    this.oldCollection = null;\n    this.collection = collection;\n    this.lengthPropertyName = collection instanceof Map || collection instanceof Set ? 'size' : 'length';\n  }\n\n  ModifyCollectionObserver.prototype.subscribe = function subscribe(context, callable) {\n    this.addSubscriber(context, callable);\n  };\n\n  ModifyCollectionObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n    this.removeSubscriber(context, callable);\n  };\n\n  ModifyCollectionObserver.prototype.addChangeRecord = function addChangeRecord(changeRecord) {\n    if (!this.hasSubscribers() && !this.lengthObserver) {\n      return;\n    }\n\n    if (changeRecord.type === 'splice') {\n      var index = changeRecord.index;\n      var arrayLength = changeRecord.object.length;\n      if (index > arrayLength) {\n        index = arrayLength - changeRecord.addedCount;\n      } else if (index < 0) {\n        index = arrayLength + changeRecord.removed.length + index - changeRecord.addedCount;\n      }\n      if (index < 0) {\n        index = 0;\n      }\n      changeRecord.index = index;\n    }\n\n    if (this.changeRecords === null) {\n      this.changeRecords = [changeRecord];\n    } else {\n      this.changeRecords.push(changeRecord);\n    }\n\n    if (!this.queued) {\n      this.queued = true;\n      this.taskQueue.queueMicroTask(this);\n    }\n  };\n\n  ModifyCollectionObserver.prototype.flushChangeRecords = function flushChangeRecords() {\n    if (this.changeRecords && this.changeRecords.length || this.oldCollection) {\n      this.call();\n    }\n  };\n\n  ModifyCollectionObserver.prototype.reset = function reset(oldCollection) {\n    this.oldCollection = oldCollection;\n\n    if (this.hasSubscribers() && !this.queued) {\n      this.queued = true;\n      this.taskQueue.queueMicroTask(this);\n    }\n  };\n\n  ModifyCollectionObserver.prototype.getLengthObserver = function getLengthObserver() {\n    return this.lengthObserver || (this.lengthObserver = new CollectionLengthObserver(this.collection));\n  };\n\n  ModifyCollectionObserver.prototype.call = function call() {\n    var changeRecords = this.changeRecords;\n    var oldCollection = this.oldCollection;\n    var records = void 0;\n\n    this.queued = false;\n    this.changeRecords = [];\n    this.oldCollection = null;\n\n    if (this.hasSubscribers()) {\n      if (oldCollection) {\n        if (this.collection instanceof Map || this.collection instanceof Set) {\n          records = getChangeRecords(oldCollection);\n        } else {\n          records = calcSplices(this.collection, 0, this.collection.length, oldCollection, 0, oldCollection.length);\n        }\n      } else {\n        if (this.collection instanceof Map || this.collection instanceof Set) {\n          records = changeRecords;\n        } else {\n          records = projectArraySplices(this.collection, changeRecords);\n        }\n      }\n\n      this.callSubscribers(records);\n    }\n\n    if (this.lengthObserver) {\n      this.lengthObserver.call(this.collection[this.lengthPropertyName]);\n    }\n  };\n\n  return ModifyCollectionObserver;\n}()) || _class2);\n\nexport var CollectionLengthObserver = (_dec4 = subscriberCollection(), _dec4(_class3 = function () {\n  function CollectionLengthObserver(collection) {\n    \n\n    this.collection = collection;\n    this.lengthPropertyName = collection instanceof Map || collection instanceof Set ? 'size' : 'length';\n    this.currentValue = collection[this.lengthPropertyName];\n  }\n\n  CollectionLengthObserver.prototype.getValue = function getValue() {\n    return this.collection[this.lengthPropertyName];\n  };\n\n  CollectionLengthObserver.prototype.setValue = function setValue(newValue) {\n    this.collection[this.lengthPropertyName] = newValue;\n  };\n\n  CollectionLengthObserver.prototype.subscribe = function subscribe(context, callable) {\n    this.addSubscriber(context, callable);\n  };\n\n  CollectionLengthObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n    this.removeSubscriber(context, callable);\n  };\n\n  CollectionLengthObserver.prototype.call = function call(newValue) {\n    var oldValue = this.currentValue;\n    this.callSubscribers(newValue, oldValue);\n    this.currentValue = newValue;\n  };\n\n  return CollectionLengthObserver;\n}()) || _class3);\n\nvar arrayProto = Array.prototype;\nvar pop = arrayProto.pop;\nvar push = arrayProto.push;\nvar reverse = arrayProto.reverse;\nvar shift = arrayProto.shift;\nvar sort = arrayProto.sort;\nvar splice = arrayProto.splice;\nvar unshift = arrayProto.unshift;\n\nif (arrayProto.__au_patched__) {\n  LogManager.getLogger('array-observation').warn('Detected 2nd attempt of patching array from Aurelia binding.' + ' This is probably caused by dependency mismatch between core modules and a 3rd party plugin.' + ' Please see https://github.com/aurelia/cli/pull/906 if you are using webpack.');\n} else {\n  Reflect.defineProperty(arrayProto, '__au_patched__', { value: 1 });\n  arrayProto.pop = function () {\n    var notEmpty = this.length > 0;\n    var methodCallResult = pop.apply(this, arguments);\n    if (notEmpty && this.__array_observer__ !== undefined) {\n      this.__array_observer__.addChangeRecord({\n        type: 'delete',\n        object: this,\n        name: this.length,\n        oldValue: methodCallResult\n      });\n    }\n    return methodCallResult;\n  };\n\n  arrayProto.push = function () {\n    var methodCallResult = push.apply(this, arguments);\n    if (this.__array_observer__ !== undefined) {\n      this.__array_observer__.addChangeRecord({\n        type: 'splice',\n        object: this,\n        index: this.length - arguments.length,\n        removed: [],\n        addedCount: arguments.length\n      });\n    }\n    return methodCallResult;\n  };\n\n  arrayProto.reverse = function () {\n    var oldArray = void 0;\n    if (this.__array_observer__ !== undefined) {\n      this.__array_observer__.flushChangeRecords();\n      oldArray = this.slice();\n    }\n    var methodCallResult = reverse.apply(this, arguments);\n    if (this.__array_observer__ !== undefined) {\n      this.__array_observer__.reset(oldArray);\n    }\n    return methodCallResult;\n  };\n\n  arrayProto.shift = function () {\n    var notEmpty = this.length > 0;\n    var methodCallResult = shift.apply(this, arguments);\n    if (notEmpty && this.__array_observer__ !== undefined) {\n      this.__array_observer__.addChangeRecord({\n        type: 'delete',\n        object: this,\n        name: 0,\n        oldValue: methodCallResult\n      });\n    }\n    return methodCallResult;\n  };\n\n  arrayProto.sort = function () {\n    var oldArray = void 0;\n    if (this.__array_observer__ !== undefined) {\n      this.__array_observer__.flushChangeRecords();\n      oldArray = this.slice();\n    }\n    var methodCallResult = sort.apply(this, arguments);\n    if (this.__array_observer__ !== undefined) {\n      this.__array_observer__.reset(oldArray);\n    }\n    return methodCallResult;\n  };\n\n  arrayProto.splice = function () {\n    var methodCallResult = splice.apply(this, arguments);\n    if (this.__array_observer__ !== undefined) {\n      this.__array_observer__.addChangeRecord({\n        type: 'splice',\n        object: this,\n        index: +arguments[0],\n        removed: methodCallResult,\n        addedCount: arguments.length > 2 ? arguments.length - 2 : 0\n      });\n    }\n    return methodCallResult;\n  };\n\n  arrayProto.unshift = function () {\n    var methodCallResult = unshift.apply(this, arguments);\n    if (this.__array_observer__ !== undefined) {\n      this.__array_observer__.addChangeRecord({\n        type: 'splice',\n        object: this,\n        index: 0,\n        removed: [],\n        addedCount: arguments.length\n      });\n    }\n    return methodCallResult;\n  };\n}\n\nfunction _getArrayObserver(taskQueue, array) {\n  return ModifyArrayObserver.for(taskQueue, array);\n}\n\nvar ModifyArrayObserver = function (_ModifyCollectionObse) {\n  _inherits(ModifyArrayObserver, _ModifyCollectionObse);\n\n  function ModifyArrayObserver(taskQueue, array) {\n    \n\n    return _possibleConstructorReturn(this, _ModifyCollectionObse.call(this, taskQueue, array));\n  }\n\n  ModifyArrayObserver.for = function _for(taskQueue, array) {\n    if (!('__array_observer__' in array)) {\n      Reflect.defineProperty(array, '__array_observer__', {\n        value: ModifyArrayObserver.create(taskQueue, array),\n        enumerable: false, configurable: false\n      });\n    }\n    return array.__array_observer__;\n  };\n\n  ModifyArrayObserver.create = function create(taskQueue, array) {\n    return new ModifyArrayObserver(taskQueue, array);\n  };\n\n  return ModifyArrayObserver;\n}(ModifyCollectionObserver);\n\nexport var Expression = function () {\n  function Expression() {\n    \n\n    this.isAssignable = false;\n  }\n\n  Expression.prototype.evaluate = function evaluate(scope, lookupFunctions, args) {\n    throw new Error('Binding expression \"' + this + '\" cannot be evaluated.');\n  };\n\n  Expression.prototype.assign = function assign(scope, value, lookupFunctions) {\n    throw new Error('Binding expression \"' + this + '\" cannot be assigned to.');\n  };\n\n  Expression.prototype.toString = function toString() {\n    return typeof FEATURE_NO_UNPARSER === 'undefined' ? _Unparser.unparse(this) : Function.prototype.toString.call(this);\n  };\n\n  return Expression;\n}();\n\nexport var BindingBehavior = function (_Expression) {\n  _inherits(BindingBehavior, _Expression);\n\n  function BindingBehavior(expression, name, args) {\n    \n\n    var _this3 = _possibleConstructorReturn(this, _Expression.call(this));\n\n    _this3.expression = expression;\n    _this3.name = name;\n    _this3.args = args;\n    return _this3;\n  }\n\n  BindingBehavior.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n    return this.expression.evaluate(scope, lookupFunctions);\n  };\n\n  BindingBehavior.prototype.assign = function assign(scope, value, lookupFunctions) {\n    return this.expression.assign(scope, value, lookupFunctions);\n  };\n\n  BindingBehavior.prototype.accept = function accept(visitor) {\n    return visitor.visitBindingBehavior(this);\n  };\n\n  BindingBehavior.prototype.connect = function connect(binding, scope) {\n    this.expression.connect(binding, scope);\n  };\n\n  BindingBehavior.prototype.bind = function bind(binding, scope, lookupFunctions) {\n    if (this.expression.expression && this.expression.bind) {\n      this.expression.bind(binding, scope, lookupFunctions);\n    }\n    var behavior = lookupFunctions.bindingBehaviors(this.name);\n    if (!behavior) {\n      throw new Error('No BindingBehavior named \"' + this.name + '\" was found!');\n    }\n    var behaviorKey = 'behavior-' + this.name;\n    if (binding[behaviorKey]) {\n      throw new Error('A binding behavior named \"' + this.name + '\" has already been applied to \"' + this.expression + '\"');\n    }\n    binding[behaviorKey] = behavior;\n    behavior.bind.apply(behavior, [binding, scope].concat(evalList(scope, this.args, binding.lookupFunctions)));\n  };\n\n  BindingBehavior.prototype.unbind = function unbind(binding, scope) {\n    var behaviorKey = 'behavior-' + this.name;\n    binding[behaviorKey].unbind(binding, scope);\n    binding[behaviorKey] = null;\n    if (this.expression.expression && this.expression.unbind) {\n      this.expression.unbind(binding, scope);\n    }\n  };\n\n  return BindingBehavior;\n}(Expression);\n\nexport var ValueConverter = function (_Expression2) {\n  _inherits(ValueConverter, _Expression2);\n\n  function ValueConverter(expression, name, args) {\n    \n\n    var _this4 = _possibleConstructorReturn(this, _Expression2.call(this));\n\n    _this4.expression = expression;\n    _this4.name = name;\n    _this4.args = args;\n    _this4.allArgs = [expression].concat(args);\n    return _this4;\n  }\n\n  ValueConverter.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n    var converter = lookupFunctions.valueConverters(this.name);\n    if (!converter) {\n      throw new Error('No ValueConverter named \"' + this.name + '\" was found!');\n    }\n\n    if ('toView' in converter) {\n      return converter.toView.apply(converter, evalList(scope, this.allArgs, lookupFunctions));\n    }\n\n    return this.allArgs[0].evaluate(scope, lookupFunctions);\n  };\n\n  ValueConverter.prototype.assign = function assign(scope, value, lookupFunctions) {\n    var converter = lookupFunctions.valueConverters(this.name);\n    if (!converter) {\n      throw new Error('No ValueConverter named \"' + this.name + '\" was found!');\n    }\n\n    if ('fromView' in converter) {\n      value = converter.fromView.apply(converter, [value].concat(evalList(scope, this.args, lookupFunctions)));\n    }\n\n    return this.allArgs[0].assign(scope, value, lookupFunctions);\n  };\n\n  ValueConverter.prototype.accept = function accept(visitor) {\n    return visitor.visitValueConverter(this);\n  };\n\n  ValueConverter.prototype.connect = function connect(binding, scope) {\n    var expressions = this.allArgs;\n    var i = expressions.length;\n    while (i--) {\n      expressions[i].connect(binding, scope);\n    }\n    var converter = binding.lookupFunctions.valueConverters(this.name);\n    if (!converter) {\n      throw new Error('No ValueConverter named \"' + this.name + '\" was found!');\n    }\n    var signals = converter.signals;\n    if (signals === undefined) {\n      return;\n    }\n    i = signals.length;\n    while (i--) {\n      connectBindingToSignal(binding, signals[i]);\n    }\n  };\n\n  return ValueConverter;\n}(Expression);\n\nexport var Assign = function (_Expression3) {\n  _inherits(Assign, _Expression3);\n\n  function Assign(target, value) {\n    \n\n    var _this5 = _possibleConstructorReturn(this, _Expression3.call(this));\n\n    _this5.target = target;\n    _this5.value = value;\n    _this5.isAssignable = true;\n    return _this5;\n  }\n\n  Assign.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n    return this.target.assign(scope, this.value.evaluate(scope, lookupFunctions));\n  };\n\n  Assign.prototype.accept = function accept(vistor) {\n    vistor.visitAssign(this);\n  };\n\n  Assign.prototype.connect = function connect(binding, scope) {};\n\n  Assign.prototype.assign = function assign(scope, value) {\n    this.value.assign(scope, value);\n    this.target.assign(scope, value);\n  };\n\n  return Assign;\n}(Expression);\n\nexport var Conditional = function (_Expression4) {\n  _inherits(Conditional, _Expression4);\n\n  function Conditional(condition, yes, no) {\n    \n\n    var _this6 = _possibleConstructorReturn(this, _Expression4.call(this));\n\n    _this6.condition = condition;\n    _this6.yes = yes;\n    _this6.no = no;\n    return _this6;\n  }\n\n  Conditional.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n    return !!this.condition.evaluate(scope, lookupFunctions) ? this.yes.evaluate(scope, lookupFunctions) : this.no.evaluate(scope, lookupFunctions);\n  };\n\n  Conditional.prototype.accept = function accept(visitor) {\n    return visitor.visitConditional(this);\n  };\n\n  Conditional.prototype.connect = function connect(binding, scope) {\n    this.condition.connect(binding, scope);\n    if (this.condition.evaluate(scope)) {\n      this.yes.connect(binding, scope);\n    } else {\n      this.no.connect(binding, scope);\n    }\n  };\n\n  return Conditional;\n}(Expression);\n\nexport var AccessThis = function (_Expression5) {\n  _inherits(AccessThis, _Expression5);\n\n  function AccessThis(ancestor) {\n    \n\n    var _this7 = _possibleConstructorReturn(this, _Expression5.call(this));\n\n    _this7.ancestor = ancestor;\n    return _this7;\n  }\n\n  AccessThis.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n    var oc = scope.overrideContext;\n    var i = this.ancestor;\n    while (i-- && oc) {\n      oc = oc.parentOverrideContext;\n    }\n    return i < 1 && oc ? oc.bindingContext : undefined;\n  };\n\n  AccessThis.prototype.accept = function accept(visitor) {\n    return visitor.visitAccessThis(this);\n  };\n\n  AccessThis.prototype.connect = function connect(binding, scope) {};\n\n  return AccessThis;\n}(Expression);\n\nexport var AccessScope = function (_Expression6) {\n  _inherits(AccessScope, _Expression6);\n\n  function AccessScope(name, ancestor) {\n    \n\n    var _this8 = _possibleConstructorReturn(this, _Expression6.call(this));\n\n    _this8.name = name;\n    _this8.ancestor = ancestor;\n    _this8.isAssignable = true;\n    return _this8;\n  }\n\n  AccessScope.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n    var context = getContextFor(this.name, scope, this.ancestor);\n    return context[this.name];\n  };\n\n  AccessScope.prototype.assign = function assign(scope, value) {\n    var context = getContextFor(this.name, scope, this.ancestor);\n    return context ? context[this.name] = value : undefined;\n  };\n\n  AccessScope.prototype.accept = function accept(visitor) {\n    return visitor.visitAccessScope(this);\n  };\n\n  AccessScope.prototype.connect = function connect(binding, scope) {\n    var context = getContextFor(this.name, scope, this.ancestor);\n    binding.observeProperty(context, this.name);\n  };\n\n  return AccessScope;\n}(Expression);\n\nexport var AccessMember = function (_Expression7) {\n  _inherits(AccessMember, _Expression7);\n\n  function AccessMember(object, name) {\n    \n\n    var _this9 = _possibleConstructorReturn(this, _Expression7.call(this));\n\n    _this9.object = object;\n    _this9.name = name;\n    _this9.isAssignable = true;\n    return _this9;\n  }\n\n  AccessMember.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n    var instance = this.object.evaluate(scope, lookupFunctions);\n    return instance === null || instance === undefined ? instance : instance[this.name];\n  };\n\n  AccessMember.prototype.assign = function assign(scope, value) {\n    var instance = this.object.evaluate(scope);\n\n    if (instance === null || instance === undefined) {\n      instance = {};\n      this.object.assign(scope, instance);\n    }\n\n    instance[this.name] = value;\n    return value;\n  };\n\n  AccessMember.prototype.accept = function accept(visitor) {\n    return visitor.visitAccessMember(this);\n  };\n\n  AccessMember.prototype.connect = function connect(binding, scope) {\n    this.object.connect(binding, scope);\n    var obj = this.object.evaluate(scope);\n    if (obj) {\n      binding.observeProperty(obj, this.name);\n    }\n  };\n\n  return AccessMember;\n}(Expression);\n\nexport var AccessKeyed = function (_Expression8) {\n  _inherits(AccessKeyed, _Expression8);\n\n  function AccessKeyed(object, key) {\n    \n\n    var _this10 = _possibleConstructorReturn(this, _Expression8.call(this));\n\n    _this10.object = object;\n    _this10.key = key;\n    _this10.isAssignable = true;\n    return _this10;\n  }\n\n  AccessKeyed.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n    var instance = this.object.evaluate(scope, lookupFunctions);\n    var lookup = this.key.evaluate(scope, lookupFunctions);\n    return getKeyed(instance, lookup);\n  };\n\n  AccessKeyed.prototype.assign = function assign(scope, value) {\n    var instance = this.object.evaluate(scope);\n    var lookup = this.key.evaluate(scope);\n    return setKeyed(instance, lookup, value);\n  };\n\n  AccessKeyed.prototype.accept = function accept(visitor) {\n    return visitor.visitAccessKeyed(this);\n  };\n\n  AccessKeyed.prototype.connect = function connect(binding, scope) {\n    this.object.connect(binding, scope);\n    var obj = this.object.evaluate(scope);\n    if (obj instanceof Object) {\n      this.key.connect(binding, scope);\n      var key = this.key.evaluate(scope);\n\n      if (key !== null && key !== undefined && !(Array.isArray(obj) && typeof key === 'number')) {\n        binding.observeProperty(obj, key);\n      }\n    }\n  };\n\n  return AccessKeyed;\n}(Expression);\n\nexport var CallScope = function (_Expression9) {\n  _inherits(CallScope, _Expression9);\n\n  function CallScope(name, args, ancestor) {\n    \n\n    var _this11 = _possibleConstructorReturn(this, _Expression9.call(this));\n\n    _this11.name = name;\n    _this11.args = args;\n    _this11.ancestor = ancestor;\n    return _this11;\n  }\n\n  CallScope.prototype.evaluate = function evaluate(scope, lookupFunctions, mustEvaluate) {\n    var args = evalList(scope, this.args, lookupFunctions);\n    var context = getContextFor(this.name, scope, this.ancestor);\n    var func = getFunction(context, this.name, mustEvaluate);\n    if (func) {\n      return func.apply(context, args);\n    }\n    return undefined;\n  };\n\n  CallScope.prototype.accept = function accept(visitor) {\n    return visitor.visitCallScope(this);\n  };\n\n  CallScope.prototype.connect = function connect(binding, scope) {\n    var args = this.args;\n    var i = args.length;\n    while (i--) {\n      args[i].connect(binding, scope);\n    }\n  };\n\n  return CallScope;\n}(Expression);\n\nexport var CallMember = function (_Expression10) {\n  _inherits(CallMember, _Expression10);\n\n  function CallMember(object, name, args) {\n    \n\n    var _this12 = _possibleConstructorReturn(this, _Expression10.call(this));\n\n    _this12.object = object;\n    _this12.name = name;\n    _this12.args = args;\n    return _this12;\n  }\n\n  CallMember.prototype.evaluate = function evaluate(scope, lookupFunctions, mustEvaluate) {\n    var instance = this.object.evaluate(scope, lookupFunctions);\n    var args = evalList(scope, this.args, lookupFunctions);\n    var func = getFunction(instance, this.name, mustEvaluate);\n    if (func) {\n      return func.apply(instance, args);\n    }\n    return undefined;\n  };\n\n  CallMember.prototype.accept = function accept(visitor) {\n    return visitor.visitCallMember(this);\n  };\n\n  CallMember.prototype.connect = function connect(binding, scope) {\n    this.object.connect(binding, scope);\n    var obj = this.object.evaluate(scope);\n    if (getFunction(obj, this.name, false)) {\n      var args = this.args;\n      var i = args.length;\n      while (i--) {\n        args[i].connect(binding, scope);\n      }\n    }\n  };\n\n  return CallMember;\n}(Expression);\n\nexport var CallFunction = function (_Expression11) {\n  _inherits(CallFunction, _Expression11);\n\n  function CallFunction(func, args) {\n    \n\n    var _this13 = _possibleConstructorReturn(this, _Expression11.call(this));\n\n    _this13.func = func;\n    _this13.args = args;\n    return _this13;\n  }\n\n  CallFunction.prototype.evaluate = function evaluate(scope, lookupFunctions, mustEvaluate) {\n    var func = this.func.evaluate(scope, lookupFunctions);\n    if (typeof func === 'function') {\n      return func.apply(null, evalList(scope, this.args, lookupFunctions));\n    }\n    if (!mustEvaluate && (func === null || func === undefined)) {\n      return undefined;\n    }\n    throw new Error(this.func + ' is not a function');\n  };\n\n  CallFunction.prototype.accept = function accept(visitor) {\n    return visitor.visitCallFunction(this);\n  };\n\n  CallFunction.prototype.connect = function connect(binding, scope) {\n    this.func.connect(binding, scope);\n    var func = this.func.evaluate(scope);\n    if (typeof func === 'function') {\n      var args = this.args;\n      var i = args.length;\n      while (i--) {\n        args[i].connect(binding, scope);\n      }\n    }\n  };\n\n  return CallFunction;\n}(Expression);\n\nexport var Binary = function (_Expression12) {\n  _inherits(Binary, _Expression12);\n\n  function Binary(operation, left, right) {\n    \n\n    var _this14 = _possibleConstructorReturn(this, _Expression12.call(this));\n\n    _this14.operation = operation;\n    _this14.left = left;\n    _this14.right = right;\n    return _this14;\n  }\n\n  Binary.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n    var left = this.left.evaluate(scope, lookupFunctions);\n\n    switch (this.operation) {\n      case '&&':\n        return left && this.right.evaluate(scope, lookupFunctions);\n      case '||':\n        return left || this.right.evaluate(scope, lookupFunctions);\n    }\n\n    var right = this.right.evaluate(scope, lookupFunctions);\n\n    switch (this.operation) {\n      case '==':\n        return left == right;\n      case '===':\n        return left === right;\n      case '!=':\n        return left != right;\n      case '!==':\n        return left !== right;\n      case 'instanceof':\n        return typeof right === 'function' && left instanceof right;\n      case 'in':\n        return (typeof right === 'undefined' ? 'undefined' : _typeof(right)) === 'object' && right !== null && left in right;\n    }\n\n    if (left === null || right === null || left === undefined || right === undefined) {\n      switch (this.operation) {\n        case '+':\n          if (left !== null && left !== undefined) return left;\n          if (right !== null && right !== undefined) return right;\n          return 0;\n        case '-':\n          if (left !== null && left !== undefined) return left;\n          if (right !== null && right !== undefined) return 0 - right;\n          return 0;\n      }\n\n      return null;\n    }\n\n    switch (this.operation) {\n      case '+':\n        return autoConvertAdd(left, right);\n      case '-':\n        return left - right;\n      case '*':\n        return left * right;\n      case '/':\n        return left / right;\n      case '%':\n        return left % right;\n      case '<':\n        return left < right;\n      case '>':\n        return left > right;\n      case '<=':\n        return left <= right;\n      case '>=':\n        return left >= right;\n      case '^':\n        return left ^ right;\n    }\n\n    throw new Error('Internal error [' + this.operation + '] not handled');\n  };\n\n  Binary.prototype.accept = function accept(visitor) {\n    return visitor.visitBinary(this);\n  };\n\n  Binary.prototype.connect = function connect(binding, scope) {\n    this.left.connect(binding, scope);\n    var left = this.left.evaluate(scope);\n    if (this.operation === '&&' && !left || this.operation === '||' && left) {\n      return;\n    }\n    this.right.connect(binding, scope);\n  };\n\n  return Binary;\n}(Expression);\n\nexport var Unary = function (_Expression13) {\n  _inherits(Unary, _Expression13);\n\n  function Unary(operation, expression) {\n    \n\n    var _this15 = _possibleConstructorReturn(this, _Expression13.call(this));\n\n    _this15.operation = operation;\n    _this15.expression = expression;\n    return _this15;\n  }\n\n  Unary.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n    switch (this.operation) {\n      case '!':\n        return !this.expression.evaluate(scope, lookupFunctions);\n      case 'typeof':\n        return _typeof(this.expression.evaluate(scope, lookupFunctions));\n      case 'void':\n        return void this.expression.evaluate(scope, lookupFunctions);\n    }\n\n    throw new Error('Internal error [' + this.operation + '] not handled');\n  };\n\n  Unary.prototype.accept = function accept(visitor) {\n    return visitor.visitPrefix(this);\n  };\n\n  Unary.prototype.connect = function connect(binding, scope) {\n    this.expression.connect(binding, scope);\n  };\n\n  return Unary;\n}(Expression);\n\nexport var LiteralPrimitive = function (_Expression14) {\n  _inherits(LiteralPrimitive, _Expression14);\n\n  function LiteralPrimitive(value) {\n    \n\n    var _this16 = _possibleConstructorReturn(this, _Expression14.call(this));\n\n    _this16.value = value;\n    return _this16;\n  }\n\n  LiteralPrimitive.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n    return this.value;\n  };\n\n  LiteralPrimitive.prototype.accept = function accept(visitor) {\n    return visitor.visitLiteralPrimitive(this);\n  };\n\n  LiteralPrimitive.prototype.connect = function connect(binding, scope) {};\n\n  return LiteralPrimitive;\n}(Expression);\n\nexport var LiteralString = function (_Expression15) {\n  _inherits(LiteralString, _Expression15);\n\n  function LiteralString(value) {\n    \n\n    var _this17 = _possibleConstructorReturn(this, _Expression15.call(this));\n\n    _this17.value = value;\n    return _this17;\n  }\n\n  LiteralString.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n    return this.value;\n  };\n\n  LiteralString.prototype.accept = function accept(visitor) {\n    return visitor.visitLiteralString(this);\n  };\n\n  LiteralString.prototype.connect = function connect(binding, scope) {};\n\n  return LiteralString;\n}(Expression);\n\nexport var LiteralTemplate = function (_Expression16) {\n  _inherits(LiteralTemplate, _Expression16);\n\n  function LiteralTemplate(cooked, expressions, raw, tag) {\n    \n\n    var _this18 = _possibleConstructorReturn(this, _Expression16.call(this));\n\n    _this18.cooked = cooked;\n    _this18.expressions = expressions || [];\n    _this18.length = _this18.expressions.length;\n    _this18.tagged = tag !== undefined;\n    if (_this18.tagged) {\n      _this18.cooked.raw = raw;\n      _this18.tag = tag;\n      if (tag instanceof AccessScope) {\n        _this18.contextType = 'Scope';\n      } else if (tag instanceof AccessMember || tag instanceof AccessKeyed) {\n        _this18.contextType = 'Object';\n      } else {\n        throw new Error(_this18.tag + ' is not a valid template tag');\n      }\n    }\n    return _this18;\n  }\n\n  LiteralTemplate.prototype.getScopeContext = function getScopeContext(scope, lookupFunctions) {\n    return getContextFor(this.tag.name, scope, this.tag.ancestor);\n  };\n\n  LiteralTemplate.prototype.getObjectContext = function getObjectContext(scope, lookupFunctions) {\n    return this.tag.object.evaluate(scope, lookupFunctions);\n  };\n\n  LiteralTemplate.prototype.evaluate = function evaluate(scope, lookupFunctions, mustEvaluate) {\n    var results = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      results[i] = this.expressions[i].evaluate(scope, lookupFunctions);\n    }\n    if (this.tagged) {\n      var func = this.tag.evaluate(scope, lookupFunctions);\n      if (typeof func === 'function') {\n        var context = this['get' + this.contextType + 'Context'](scope, lookupFunctions);\n        return func.call.apply(func, [context, this.cooked].concat(results));\n      }\n      if (!mustEvaluate) {\n        return null;\n      }\n      throw new Error(this.tag + ' is not a function');\n    }\n    var result = this.cooked[0];\n    for (var _i2 = 0; _i2 < this.length; _i2++) {\n      result = String.prototype.concat(result, results[_i2], this.cooked[_i2 + 1]);\n    }\n    return result;\n  };\n\n  LiteralTemplate.prototype.accept = function accept(visitor) {\n    return visitor.visitLiteralTemplate(this);\n  };\n\n  LiteralTemplate.prototype.connect = function connect(binding, scope) {\n    for (var i = 0; i < this.length; i++) {\n      this.expressions[i].connect(binding, scope);\n    }\n    if (this.tagged) {\n      this.tag.connect(binding, scope);\n    }\n  };\n\n  return LiteralTemplate;\n}(Expression);\n\nexport var LiteralArray = function (_Expression17) {\n  _inherits(LiteralArray, _Expression17);\n\n  function LiteralArray(elements) {\n    \n\n    var _this19 = _possibleConstructorReturn(this, _Expression17.call(this));\n\n    _this19.elements = elements;\n    return _this19;\n  }\n\n  LiteralArray.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n    var elements = this.elements;\n    var result = [];\n\n    for (var i = 0, length = elements.length; i < length; ++i) {\n      result[i] = elements[i].evaluate(scope, lookupFunctions);\n    }\n\n    return result;\n  };\n\n  LiteralArray.prototype.accept = function accept(visitor) {\n    return visitor.visitLiteralArray(this);\n  };\n\n  LiteralArray.prototype.connect = function connect(binding, scope) {\n    var length = this.elements.length;\n    for (var i = 0; i < length; i++) {\n      this.elements[i].connect(binding, scope);\n    }\n  };\n\n  return LiteralArray;\n}(Expression);\n\nexport var LiteralObject = function (_Expression18) {\n  _inherits(LiteralObject, _Expression18);\n\n  function LiteralObject(keys, values) {\n    \n\n    var _this20 = _possibleConstructorReturn(this, _Expression18.call(this));\n\n    _this20.keys = keys;\n    _this20.values = values;\n    return _this20;\n  }\n\n  LiteralObject.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n    var instance = {};\n    var keys = this.keys;\n    var values = this.values;\n\n    for (var i = 0, length = keys.length; i < length; ++i) {\n      instance[keys[i]] = values[i].evaluate(scope, lookupFunctions);\n    }\n\n    return instance;\n  };\n\n  LiteralObject.prototype.accept = function accept(visitor) {\n    return visitor.visitLiteralObject(this);\n  };\n\n  LiteralObject.prototype.connect = function connect(binding, scope) {\n    var length = this.keys.length;\n    for (var i = 0; i < length; i++) {\n      this.values[i].connect(binding, scope);\n    }\n  };\n\n  return LiteralObject;\n}(Expression);\n\nfunction evalList(scope, list, lookupFunctions) {\n  var length = list.length;\n  var result = [];\n  for (var i = 0; i < length; i++) {\n    result[i] = list[i].evaluate(scope, lookupFunctions);\n  }\n  return result;\n}\n\nfunction autoConvertAdd(a, b) {\n  if (a !== null && b !== null) {\n    if (typeof a === 'string' && typeof b !== 'string') {\n      return a + b.toString();\n    }\n\n    if (typeof a !== 'string' && typeof b === 'string') {\n      return a.toString() + b;\n    }\n\n    return a + b;\n  }\n\n  if (a !== null) {\n    return a;\n  }\n\n  if (b !== null) {\n    return b;\n  }\n\n  return 0;\n}\n\nfunction getFunction(obj, name, mustExist) {\n  var func = obj === null || obj === undefined ? null : obj[name];\n  if (typeof func === 'function') {\n    return func;\n  }\n  if (!mustExist && (func === null || func === undefined)) {\n    return null;\n  }\n  throw new Error(name + ' is not a function');\n}\n\nfunction getKeyed(obj, key) {\n  if (Array.isArray(obj)) {\n    return obj[parseInt(key, 10)];\n  } else if (obj) {\n    return obj[key];\n  } else if (obj === null || obj === undefined) {\n    return undefined;\n  }\n\n  return obj[key];\n}\n\nfunction setKeyed(obj, key, value) {\n  if (Array.isArray(obj)) {\n    var index = parseInt(key, 10);\n\n    if (obj.length <= index) {\n      obj.length = index + 1;\n    }\n\n    obj[index] = value;\n  } else {\n    obj[key] = value;\n  }\n\n  return value;\n}\n\nvar _Unparser = null;\n\nexport { _Unparser as Unparser };\nif (typeof FEATURE_NO_UNPARSER === 'undefined') {\n  _Unparser = function () {\n    function Unparser(buffer) {\n      \n\n      this.buffer = buffer;\n    }\n\n    Unparser.unparse = function unparse(expression) {\n      var buffer = [];\n      var visitor = new _Unparser(buffer);\n\n      expression.accept(visitor);\n\n      return buffer.join('');\n    };\n\n    Unparser.prototype.write = function write(text) {\n      this.buffer.push(text);\n    };\n\n    Unparser.prototype.writeArgs = function writeArgs(args) {\n      this.write('(');\n\n      for (var i = 0, length = args.length; i < length; ++i) {\n        if (i !== 0) {\n          this.write(',');\n        }\n\n        args[i].accept(this);\n      }\n\n      this.write(')');\n    };\n\n    Unparser.prototype.visitBindingBehavior = function visitBindingBehavior(behavior) {\n      var args = behavior.args;\n\n      behavior.expression.accept(this);\n      this.write('&' + behavior.name);\n\n      for (var i = 0, length = args.length; i < length; ++i) {\n        this.write(':');\n        args[i].accept(this);\n      }\n    };\n\n    Unparser.prototype.visitValueConverter = function visitValueConverter(converter) {\n      var args = converter.args;\n\n      converter.expression.accept(this);\n      this.write('|' + converter.name);\n\n      for (var i = 0, length = args.length; i < length; ++i) {\n        this.write(':');\n        args[i].accept(this);\n      }\n    };\n\n    Unparser.prototype.visitAssign = function visitAssign(assign) {\n      assign.target.accept(this);\n      this.write('=');\n      assign.value.accept(this);\n    };\n\n    Unparser.prototype.visitConditional = function visitConditional(conditional) {\n      conditional.condition.accept(this);\n      this.write('?');\n      conditional.yes.accept(this);\n      this.write(':');\n      conditional.no.accept(this);\n    };\n\n    Unparser.prototype.visitAccessThis = function visitAccessThis(access) {\n      if (access.ancestor === 0) {\n        this.write('$this');\n        return;\n      }\n      this.write('$parent');\n      var i = access.ancestor - 1;\n      while (i--) {\n        this.write('.$parent');\n      }\n    };\n\n    Unparser.prototype.visitAccessScope = function visitAccessScope(access) {\n      var i = access.ancestor;\n      while (i--) {\n        this.write('$parent.');\n      }\n      this.write(access.name);\n    };\n\n    Unparser.prototype.visitAccessMember = function visitAccessMember(access) {\n      access.object.accept(this);\n      this.write('.' + access.name);\n    };\n\n    Unparser.prototype.visitAccessKeyed = function visitAccessKeyed(access) {\n      access.object.accept(this);\n      this.write('[');\n      access.key.accept(this);\n      this.write(']');\n    };\n\n    Unparser.prototype.visitCallScope = function visitCallScope(call) {\n      var i = call.ancestor;\n      while (i--) {\n        this.write('$parent.');\n      }\n      this.write(call.name);\n      this.writeArgs(call.args);\n    };\n\n    Unparser.prototype.visitCallFunction = function visitCallFunction(call) {\n      call.func.accept(this);\n      this.writeArgs(call.args);\n    };\n\n    Unparser.prototype.visitCallMember = function visitCallMember(call) {\n      call.object.accept(this);\n      this.write('.' + call.name);\n      this.writeArgs(call.args);\n    };\n\n    Unparser.prototype.visitPrefix = function visitPrefix(prefix) {\n      this.write('(' + prefix.operation);\n      if (prefix.operation.charCodeAt(0) >= 97) {\n        this.write(' ');\n      }\n      prefix.expression.accept(this);\n      this.write(')');\n    };\n\n    Unparser.prototype.visitBinary = function visitBinary(binary) {\n      binary.left.accept(this);\n      if (binary.operation.charCodeAt(0) === 105) {\n        this.write(' ' + binary.operation + ' ');\n      } else {\n        this.write(binary.operation);\n      }\n      binary.right.accept(this);\n    };\n\n    Unparser.prototype.visitLiteralPrimitive = function visitLiteralPrimitive(literal) {\n      this.write('' + literal.value);\n    };\n\n    Unparser.prototype.visitLiteralArray = function visitLiteralArray(literal) {\n      var elements = literal.elements;\n\n      this.write('[');\n\n      for (var i = 0, length = elements.length; i < length; ++i) {\n        if (i !== 0) {\n          this.write(',');\n        }\n\n        elements[i].accept(this);\n      }\n\n      this.write(']');\n    };\n\n    Unparser.prototype.visitLiteralObject = function visitLiteralObject(literal) {\n      var keys = literal.keys;\n      var values = literal.values;\n\n      this.write('{');\n\n      for (var i = 0, length = keys.length; i < length; ++i) {\n        if (i !== 0) {\n          this.write(',');\n        }\n\n        this.write('\\'' + keys[i] + '\\':');\n        values[i].accept(this);\n      }\n\n      this.write('}');\n    };\n\n    Unparser.prototype.visitLiteralString = function visitLiteralString(literal) {\n      var escaped = literal.value.replace(/'/g, \"\\'\");\n      this.write('\\'' + escaped + '\\'');\n    };\n\n    Unparser.prototype.visitLiteralTemplate = function visitLiteralTemplate(literal) {\n      var cooked = literal.cooked,\n          expressions = literal.expressions;\n\n      var length = expressions.length;\n      this.write('`');\n      this.write(cooked[0]);\n      for (var i = 0; i < length; i++) {\n        expressions[i].accept(this);\n        this.write(cooked[i + 1]);\n      }\n      this.write('`');\n    };\n\n    return Unparser;\n  }();\n}\n\nexport var ExpressionCloner = function () {\n  function ExpressionCloner() {\n    \n  }\n\n  ExpressionCloner.prototype.cloneExpressionArray = function cloneExpressionArray(array) {\n    var clonedArray = [];\n    var i = array.length;\n    while (i--) {\n      clonedArray[i] = array[i].accept(this);\n    }\n    return clonedArray;\n  };\n\n  ExpressionCloner.prototype.visitBindingBehavior = function visitBindingBehavior(behavior) {\n    return new BindingBehavior(behavior.expression.accept(this), behavior.name, this.cloneExpressionArray(behavior.args));\n  };\n\n  ExpressionCloner.prototype.visitValueConverter = function visitValueConverter(converter) {\n    return new ValueConverter(converter.expression.accept(this), converter.name, this.cloneExpressionArray(converter.args));\n  };\n\n  ExpressionCloner.prototype.visitAssign = function visitAssign(assign) {\n    return new Assign(assign.target.accept(this), assign.value.accept(this));\n  };\n\n  ExpressionCloner.prototype.visitConditional = function visitConditional(conditional) {\n    return new Conditional(conditional.condition.accept(this), conditional.yes.accept(this), conditional.no.accept(this));\n  };\n\n  ExpressionCloner.prototype.visitAccessThis = function visitAccessThis(access) {\n    return new AccessThis(access.ancestor);\n  };\n\n  ExpressionCloner.prototype.visitAccessScope = function visitAccessScope(access) {\n    return new AccessScope(access.name, access.ancestor);\n  };\n\n  ExpressionCloner.prototype.visitAccessMember = function visitAccessMember(access) {\n    return new AccessMember(access.object.accept(this), access.name);\n  };\n\n  ExpressionCloner.prototype.visitAccessKeyed = function visitAccessKeyed(access) {\n    return new AccessKeyed(access.object.accept(this), access.key.accept(this));\n  };\n\n  ExpressionCloner.prototype.visitCallScope = function visitCallScope(call) {\n    return new CallScope(call.name, this.cloneExpressionArray(call.args), call.ancestor);\n  };\n\n  ExpressionCloner.prototype.visitCallFunction = function visitCallFunction(call) {\n    return new CallFunction(call.func.accept(this), this.cloneExpressionArray(call.args));\n  };\n\n  ExpressionCloner.prototype.visitCallMember = function visitCallMember(call) {\n    return new CallMember(call.object.accept(this), call.name, this.cloneExpressionArray(call.args));\n  };\n\n  ExpressionCloner.prototype.visitUnary = function visitUnary(unary) {\n    return new Unary(prefix.operation, prefix.expression.accept(this));\n  };\n\n  ExpressionCloner.prototype.visitBinary = function visitBinary(binary) {\n    return new Binary(binary.operation, binary.left.accept(this), binary.right.accept(this));\n  };\n\n  ExpressionCloner.prototype.visitLiteralPrimitive = function visitLiteralPrimitive(literal) {\n    return new LiteralPrimitive(literal);\n  };\n\n  ExpressionCloner.prototype.visitLiteralArray = function visitLiteralArray(literal) {\n    return new LiteralArray(this.cloneExpressionArray(literal.elements));\n  };\n\n  ExpressionCloner.prototype.visitLiteralObject = function visitLiteralObject(literal) {\n    return new LiteralObject(literal.keys, this.cloneExpressionArray(literal.values));\n  };\n\n  ExpressionCloner.prototype.visitLiteralString = function visitLiteralString(literal) {\n    return new LiteralString(literal.value);\n  };\n\n  ExpressionCloner.prototype.visitLiteralTemplate = function visitLiteralTemplate(literal) {\n    return new LiteralTemplate(literal.cooked, this.cloneExpressionArray(literal.expressions), literal.raw, literal.tag && literal.tag.accept(this));\n  };\n\n  return ExpressionCloner;\n}();\n\nexport function cloneExpression(expression) {\n  var visitor = new ExpressionCloner();\n  return expression.accept(visitor);\n}\n\nexport var bindingMode = {\n  oneTime: 0,\n  toView: 1,\n  oneWay: 1,\n  twoWay: 2,\n  fromView: 3\n};\n\nexport var Parser = function () {\n  function Parser() {\n    \n\n    this.cache = Object.create(null);\n  }\n\n  Parser.prototype.parse = function parse(src) {\n    src = src || '';\n\n    return this.cache[src] || (this.cache[src] = new ParserImplementation(src).parseBindingBehavior());\n  };\n\n  return Parser;\n}();\n\nvar fromCharCode = String.fromCharCode;\n\nexport var ParserImplementation = function () {\n  _createClass(ParserImplementation, [{\n    key: 'raw',\n    get: function get() {\n      return this.src.slice(this.start, this.idx);\n    }\n  }]);\n\n  function ParserImplementation(src) {\n    \n\n    this.idx = 0;\n\n    this.start = 0;\n\n    this.src = src;\n    this.len = src.length;\n\n    this.tkn = T$EOF;\n\n    this.val = undefined;\n\n    this.ch = src.charCodeAt(0);\n  }\n\n  ParserImplementation.prototype.parseBindingBehavior = function parseBindingBehavior() {\n    this.nextToken();\n    if (this.tkn & T$ExpressionTerminal) {\n      this.err('Invalid start of expression');\n    }\n    var result = this.parseValueConverter();\n    while (this.opt(T$Ampersand)) {\n      result = new BindingBehavior(result, this.val, this.parseVariadicArgs());\n    }\n    if (this.tkn !== T$EOF) {\n      this.err('Unconsumed token ' + this.raw);\n    }\n    return result;\n  };\n\n  ParserImplementation.prototype.parseValueConverter = function parseValueConverter() {\n    var result = this.parseExpression();\n    while (this.opt(T$Bar)) {\n      result = new ValueConverter(result, this.val, this.parseVariadicArgs());\n    }\n    return result;\n  };\n\n  ParserImplementation.prototype.parseVariadicArgs = function parseVariadicArgs() {\n    this.nextToken();\n    var result = [];\n    while (this.opt(T$Colon)) {\n      result.push(this.parseExpression());\n    }\n    return result;\n  };\n\n  ParserImplementation.prototype.parseExpression = function parseExpression() {\n    var exprStart = this.idx;\n    var result = this.parseConditional();\n\n    while (this.tkn === T$Eq) {\n      if (!result.isAssignable) {\n        this.err('Expression ' + this.src.slice(exprStart, this.start) + ' is not assignable');\n      }\n      this.nextToken();\n      exprStart = this.idx;\n      result = new Assign(result, this.parseConditional());\n    }\n    return result;\n  };\n\n  ParserImplementation.prototype.parseConditional = function parseConditional() {\n    var result = this.parseBinary(0);\n\n    if (this.opt(T$Question)) {\n      var yes = this.parseExpression();\n      this.expect(T$Colon);\n      result = new Conditional(result, yes, this.parseExpression());\n    }\n    return result;\n  };\n\n  ParserImplementation.prototype.parseBinary = function parseBinary(minPrecedence) {\n    var left = this.parseLeftHandSide(0);\n\n    while (this.tkn & T$BinaryOp) {\n      var opToken = this.tkn;\n      if ((opToken & T$Precedence) <= minPrecedence) {\n        break;\n      }\n      this.nextToken();\n      left = new Binary(TokenValues[opToken & T$TokenMask], left, this.parseBinary(opToken & T$Precedence));\n    }\n    return left;\n  };\n\n  ParserImplementation.prototype.parseLeftHandSide = function parseLeftHandSide(context) {\n    var result = void 0;\n\n    primary: switch (this.tkn) {\n      case T$Plus:\n        this.nextToken();\n        return this.parseLeftHandSide(0);\n      case T$Minus:\n        this.nextToken();\n        return new Binary('-', new LiteralPrimitive(0), this.parseLeftHandSide(0));\n      case T$Bang:\n      case T$TypeofKeyword:\n      case T$VoidKeyword:\n        var op = TokenValues[this.tkn & T$TokenMask];\n        this.nextToken();\n        return new Unary(op, this.parseLeftHandSide(0));\n      case T$ParentScope:\n        {\n          do {\n            this.nextToken();\n            context++;\n            if (this.opt(T$Period)) {\n              if (this.tkn === T$Period) {\n                this.err();\n              }\n              continue;\n            } else if (this.tkn & T$AccessScopeTerminal) {\n              result = new AccessThis(context & C$Ancestor);\n\n              context = context & C$ShorthandProp | C$This;\n              break primary;\n            } else {\n              this.err();\n            }\n          } while (this.tkn === T$ParentScope);\n        }\n\n      case T$Identifier:\n        {\n          result = new AccessScope(this.val, context & C$Ancestor);\n          this.nextToken();\n          context = context & C$ShorthandProp | C$Scope;\n          break;\n        }\n      case T$ThisScope:\n        this.nextToken();\n        result = new AccessThis(0);\n        context = context & C$ShorthandProp | C$This;\n        break;\n      case T$LParen:\n        this.nextToken();\n        result = this.parseExpression();\n        this.expect(T$RParen);\n        context = C$Primary;\n        break;\n      case T$LBracket:\n        {\n          this.nextToken();\n          var _elements = [];\n          if (this.tkn !== T$RBracket) {\n            do {\n              _elements.push(this.parseExpression());\n            } while (this.opt(T$Comma));\n          }\n          this.expect(T$RBracket);\n          result = new LiteralArray(_elements);\n          context = C$Primary;\n          break;\n        }\n      case T$LBrace:\n        {\n          var keys = [];\n          var values = [];\n          this.nextToken();\n          while (this.tkn !== T$RBrace) {\n            if (this.tkn & T$IdentifierOrKeyword) {\n              var ch = this.ch,\n                  tkn = this.tkn,\n                  idx = this.idx;\n\n              keys.push(this.val);\n              this.nextToken();\n              if (this.opt(T$Colon)) {\n                values.push(this.parseExpression());\n              } else {\n                this.ch = ch;\n                this.tkn = tkn;\n                this.idx = idx;\n                values.push(this.parseLeftHandSide(C$ShorthandProp));\n              }\n            } else if (this.tkn & T$Literal) {\n              keys.push(this.val);\n              this.nextToken();\n              this.expect(T$Colon);\n              values.push(this.parseExpression());\n            } else {\n              this.err();\n            }\n            if (this.tkn !== T$RBrace) {\n              this.expect(T$Comma);\n            }\n          }\n          this.expect(T$RBrace);\n          result = new LiteralObject(keys, values);\n          context = C$Primary;\n          break;\n        }\n      case T$StringLiteral:\n        result = new LiteralString(this.val);\n        this.nextToken();\n        context = C$Primary;\n        break;\n      case T$TemplateTail:\n        result = new LiteralTemplate([this.val]);\n        this.nextToken();\n        context = C$Primary;\n        break;\n      case T$TemplateContinuation:\n        result = this.parseTemplate(0);\n        context = C$Primary;\n        break;\n      case T$NumericLiteral:\n        {\n          result = new LiteralPrimitive(this.val);\n          this.nextToken();\n\n          break;\n        }\n      case T$NullKeyword:\n      case T$UndefinedKeyword:\n      case T$TrueKeyword:\n      case T$FalseKeyword:\n        result = new LiteralPrimitive(TokenValues[this.tkn & T$TokenMask]);\n        this.nextToken();\n        context = C$Primary;\n        break;\n      default:\n        if (this.idx >= this.len) {\n          this.err('Unexpected end of expression');\n        } else {\n          this.err();\n        }\n    }\n\n    if (context & C$ShorthandProp) {\n      return result;\n    }\n\n    var name = this.val;\n    while (this.tkn & T$MemberOrCallExpression) {\n      switch (this.tkn) {\n        case T$Period:\n          this.nextToken();\n          if (!(this.tkn & T$IdentifierOrKeyword)) {\n            this.err();\n          }\n          name = this.val;\n          this.nextToken();\n\n          context = context & C$Primary | (context & (C$This | C$Scope)) << 1 | context & C$Member | (context & C$Keyed) >> 1 | (context & C$Call) >> 2;\n          if (this.tkn === T$LParen) {\n            continue;\n          }\n          if (context & C$Scope) {\n            result = new AccessScope(name, result.ancestor);\n          } else {\n            result = new AccessMember(result, name);\n          }\n          continue;\n        case T$LBracket:\n          this.nextToken();\n          context = C$Keyed;\n          result = new AccessKeyed(result, this.parseExpression());\n          this.expect(T$RBracket);\n          break;\n        case T$LParen:\n          this.nextToken();\n          var args = [];\n          while (this.tkn !== T$RParen) {\n            args.push(this.parseExpression());\n            if (!this.opt(T$Comma)) {\n              break;\n            }\n          }\n          this.expect(T$RParen);\n          if (context & C$Scope) {\n            result = new CallScope(name, args, result.ancestor);\n          } else if (context & (C$Member | C$Primary)) {\n            result = new CallMember(result, name, args);\n          } else {\n            result = new CallFunction(result, args);\n          }\n          context = C$Call;\n          break;\n        case T$TemplateTail:\n          result = new LiteralTemplate([this.val], [], [this.raw], result);\n          this.nextToken();\n          break;\n        case T$TemplateContinuation:\n          result = this.parseTemplate(context | C$Tagged, result);\n      }\n    }\n\n    return result;\n  };\n\n  ParserImplementation.prototype.parseTemplate = function parseTemplate(context, func) {\n    var cooked = [this.val];\n    var raw = context & C$Tagged ? [this.raw] : undefined;\n    this.expect(T$TemplateContinuation);\n    var expressions = [this.parseExpression()];\n\n    while ((this.tkn = this.scanTemplateTail()) !== T$TemplateTail) {\n      cooked.push(this.val);\n      if (context & C$Tagged) {\n        raw.push(this.raw);\n      }\n      this.expect(T$TemplateContinuation);\n      expressions.push(this.parseExpression());\n    }\n\n    cooked.push(this.val);\n    if (context & C$Tagged) {\n      raw.push(this.raw);\n    }\n    this.nextToken();\n    return new LiteralTemplate(cooked, expressions, raw, func);\n  };\n\n  ParserImplementation.prototype.nextToken = function nextToken() {\n    while (this.idx < this.len) {\n      if (this.ch <= 0x20) {\n        this.next();\n        continue;\n      }\n      this.start = this.idx;\n      if (this.ch === 0x24 || this.ch >= 0x61 && this.ch <= 0x7A) {\n        this.tkn = this.scanIdentifier();\n        return;\n      }\n\n      if ((this.tkn = CharScanners[this.ch](this)) !== null) {\n        return;\n      }\n    }\n    this.tkn = T$EOF;\n  };\n\n  ParserImplementation.prototype.next = function next() {\n    return this.ch = this.src.charCodeAt(++this.idx);\n  };\n\n  ParserImplementation.prototype.scanIdentifier = function scanIdentifier() {\n    while (AsciiIdParts.has(this.next()) || this.ch > 0x7F && IdParts[this.ch]) {}\n\n    return KeywordLookup[this.val = this.raw] || T$Identifier;\n  };\n\n  ParserImplementation.prototype.scanNumber = function scanNumber(isFloat) {\n    if (isFloat) {\n      this.val = 0;\n    } else {\n      this.val = this.ch - 0x30;\n      while (this.next() <= 0x39 && this.ch >= 0x30) {\n        this.val = this.val * 10 + this.ch - 0x30;\n      }\n    }\n\n    if (isFloat || this.ch === 0x2E) {\n      if (!isFloat) {\n        this.next();\n      }\n      var start = this.idx;\n      var value = this.ch - 0x30;\n      while (this.next() <= 0x39 && this.ch >= 0x30) {\n        value = value * 10 + this.ch - 0x30;\n      }\n      this.val = this.val + value / Math.pow(10, this.idx - start);\n    }\n\n    if (this.ch === 0x65 || this.ch === 0x45) {\n      var _start = this.idx;\n\n      this.next();\n      if (this.ch === 0x2D || this.ch === 0x2B) {\n        this.next();\n      }\n\n      if (!(this.ch >= 0x30 && this.ch <= 0x39)) {\n        this.idx = _start;\n        this.err('Invalid exponent');\n      }\n      while (this.next() <= 0x39 && this.ch >= 0x30) {}\n      this.val = parseFloat(this.src.slice(this.start, this.idx));\n    }\n\n    return T$NumericLiteral;\n  };\n\n  ParserImplementation.prototype.scanString = function scanString() {\n    var quote = this.ch;\n    this.next();\n\n    var buffer = void 0;\n    var marker = this.idx;\n\n    while (this.ch !== quote) {\n      if (this.ch === 0x5C) {\n        if (!buffer) {\n          buffer = [];\n        }\n\n        buffer.push(this.src.slice(marker, this.idx));\n\n        this.next();\n\n        var _unescaped = void 0;\n\n        if (this.ch === 0x75) {\n          this.next();\n\n          if (this.idx + 4 < this.len) {\n            var hex = this.src.slice(this.idx, this.idx + 4);\n\n            if (!/[A-Z0-9]{4}/i.test(hex)) {\n              this.err('Invalid unicode escape [\\\\u' + hex + ']');\n            }\n\n            _unescaped = parseInt(hex, 16);\n            this.idx += 4;\n            this.ch = this.src.charCodeAt(this.idx);\n          } else {\n            this.err();\n          }\n        } else {\n          _unescaped = unescape(this.ch);\n          this.next();\n        }\n\n        buffer.push(fromCharCode(_unescaped));\n        marker = this.idx;\n      } else if (this.ch === 0 || this.idx >= this.len) {\n        this.err('Unterminated quote');\n      } else {\n        this.next();\n      }\n    }\n\n    var last = this.src.slice(marker, this.idx);\n    this.next();\n    var unescaped = last;\n\n    if (buffer !== null && buffer !== undefined) {\n      buffer.push(last);\n      unescaped = buffer.join('');\n    }\n\n    this.val = unescaped;\n    return T$StringLiteral;\n  };\n\n  ParserImplementation.prototype.scanTemplate = function scanTemplate() {\n    var tail = true;\n    var result = '';\n\n    while (this.next() !== 0x60) {\n      if (this.ch === 0x24) {\n        if (this.idx + 1 < this.len && this.src.charCodeAt(this.idx + 1) === 0x7B) {\n          this.idx++;\n          tail = false;\n          break;\n        } else {\n          result += '$';\n        }\n      } else if (this.ch === 0x5C) {\n        result += fromCharCode(unescape(this.next()));\n      } else if (this.ch === 0 || this.idx >= this.len) {\n        this.err('Unterminated template literal');\n      } else {\n        result += fromCharCode(this.ch);\n      }\n    }\n\n    this.next();\n    this.val = result;\n    if (tail) {\n      return T$TemplateTail;\n    }\n    return T$TemplateContinuation;\n  };\n\n  ParserImplementation.prototype.scanTemplateTail = function scanTemplateTail() {\n    if (this.idx >= this.len) {\n      this.err('Unterminated template');\n    }\n    this.idx--;\n    return this.scanTemplate();\n  };\n\n  ParserImplementation.prototype.err = function err() {\n    var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Unexpected token ' + this.raw;\n    var column = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.start;\n\n    throw new Error('Parser Error: ' + message + ' at column ' + column + ' in expression [' + this.src + ']');\n  };\n\n  ParserImplementation.prototype.opt = function opt(token) {\n    if (this.tkn === token) {\n      this.nextToken();\n      return true;\n    }\n\n    return false;\n  };\n\n  ParserImplementation.prototype.expect = function expect(token) {\n    if (this.tkn === token) {\n      this.nextToken();\n    } else {\n      this.err('Missing expected token ' + TokenValues[token & T$TokenMask], this.idx);\n    }\n  };\n\n  return ParserImplementation;\n}();\n\nfunction unescape(code) {\n  switch (code) {\n    case 0x66:\n      return 0xC;\n    case 0x6E:\n      return 0xA;\n    case 0x72:\n      return 0xD;\n    case 0x74:\n      return 0x9;\n    case 0x76:\n      return 0xB;\n    default:\n      return code;\n  }\n}\n\nvar C$This = 1 << 10;\nvar C$Scope = 1 << 11;\nvar C$Member = 1 << 12;\nvar C$Keyed = 1 << 13;\nvar C$Call = 1 << 14;\nvar C$Primary = 1 << 15;\nvar C$ShorthandProp = 1 << 16;\nvar C$Tagged = 1 << 17;\n\nvar C$Ancestor = (1 << 9) - 1;\n\nvar T$TokenMask = (1 << 6) - 1;\n\nvar T$PrecShift = 6;\n\nvar T$Precedence = 7 << T$PrecShift;\n\nvar T$ExpressionTerminal = 1 << 11;\n\nvar T$ClosingToken = 1 << 12;\n\nvar T$OpeningToken = 1 << 13;\n\nvar T$AccessScopeTerminal = 1 << 14;\nvar T$Keyword = 1 << 15;\nvar T$EOF = 1 << 16 | T$AccessScopeTerminal | T$ExpressionTerminal;\nvar T$Identifier = 1 << 17;\nvar T$IdentifierOrKeyword = T$Identifier | T$Keyword;\nvar T$Literal = 1 << 18;\nvar T$NumericLiteral = 1 << 19 | T$Literal;\nvar T$StringLiteral = 1 << 20 | T$Literal;\nvar T$BinaryOp = 1 << 21;\n\nvar T$UnaryOp = 1 << 22;\n\nvar T$MemberExpression = 1 << 23;\n\nvar T$MemberOrCallExpression = 1 << 24;\nvar T$TemplateTail = 1 << 25 | T$MemberOrCallExpression;\nvar T$TemplateContinuation = 1 << 26 | T$MemberOrCallExpression;\n\nvar T$FalseKeyword = 0 | T$Keyword | T$Literal;\nvar T$TrueKeyword = 1 | T$Keyword | T$Literal;\nvar T$NullKeyword = 2 | T$Keyword | T$Literal;\nvar T$UndefinedKeyword = 3 | T$Keyword | T$Literal;\nvar T$ThisScope = 4 | T$IdentifierOrKeyword;\nvar T$ParentScope = 5 | T$IdentifierOrKeyword;\n\nvar T$LParen = 6 | T$OpeningToken | T$AccessScopeTerminal | T$MemberOrCallExpression;\nvar T$LBrace = 7 | T$OpeningToken;\nvar T$Period = 8 | T$MemberExpression | T$MemberOrCallExpression;\nvar T$RBrace = 9 | T$AccessScopeTerminal | T$ClosingToken | T$ExpressionTerminal;\nvar T$RParen = 10 | T$AccessScopeTerminal | T$ClosingToken | T$ExpressionTerminal;\nvar T$Comma = 11 | T$AccessScopeTerminal;\nvar T$LBracket = 12 | T$OpeningToken | T$AccessScopeTerminal | T$MemberExpression | T$MemberOrCallExpression;\nvar T$RBracket = 13 | T$ClosingToken | T$ExpressionTerminal;\nvar T$Colon = 14 | T$AccessScopeTerminal;\nvar T$Question = 15;\n\nvar T$Ampersand = 18 | T$AccessScopeTerminal;\nvar T$Bar = 19 | T$AccessScopeTerminal;\nvar T$BarBar = 20 | 1 << T$PrecShift | T$BinaryOp;\nvar T$AmpersandAmpersand = 21 | 2 << T$PrecShift | T$BinaryOp;\nvar T$Caret = 22 | 3 << T$PrecShift | T$BinaryOp;\nvar T$EqEq = 23 | 4 << T$PrecShift | T$BinaryOp;\nvar T$BangEq = 24 | 4 << T$PrecShift | T$BinaryOp;\nvar T$EqEqEq = 25 | 4 << T$PrecShift | T$BinaryOp;\nvar T$BangEqEq = 26 | 4 << T$PrecShift | T$BinaryOp;\nvar T$Lt = 27 | 5 << T$PrecShift | T$BinaryOp;\nvar T$Gt = 28 | 5 << T$PrecShift | T$BinaryOp;\nvar T$LtEq = 29 | 5 << T$PrecShift | T$BinaryOp;\nvar T$GtEq = 30 | 5 << T$PrecShift | T$BinaryOp;\nvar T$InKeyword = 31 | 5 << T$PrecShift | T$BinaryOp | T$Keyword;\nvar T$InstanceOfKeyword = 32 | 5 << T$PrecShift | T$BinaryOp | T$Keyword;\nvar T$Plus = 33 | 6 << T$PrecShift | T$BinaryOp | T$UnaryOp;\nvar T$Minus = 34 | 6 << T$PrecShift | T$BinaryOp | T$UnaryOp;\nvar T$TypeofKeyword = 35 | T$UnaryOp | T$Keyword;\nvar T$VoidKeyword = 36 | T$UnaryOp | T$Keyword;\nvar T$Star = 37 | 7 << T$PrecShift | T$BinaryOp;\nvar T$Percent = 38 | 7 << T$PrecShift | T$BinaryOp;\nvar T$Slash = 39 | 7 << T$PrecShift | T$BinaryOp;\nvar T$Eq = 40;\nvar T$Bang = 41 | T$UnaryOp;\n\nvar KeywordLookup = Object.create(null);\nKeywordLookup.true = T$TrueKeyword;\nKeywordLookup.null = T$NullKeyword;\nKeywordLookup.false = T$FalseKeyword;\nKeywordLookup.undefined = T$UndefinedKeyword;\nKeywordLookup.$this = T$ThisScope;\nKeywordLookup.$parent = T$ParentScope;\nKeywordLookup.in = T$InKeyword;\nKeywordLookup.instanceof = T$InstanceOfKeyword;\nKeywordLookup.typeof = T$TypeofKeyword;\nKeywordLookup.void = T$VoidKeyword;\n\nvar TokenValues = [false, true, null, undefined, '$this', '$parent', '(', '{', '.', '}', ')', ',', '[', ']', ':', '?', '\\'', '\"', '&', '|', '||', '&&', '^', '==', '!=', '===', '!==', '<', '>', '<=', '>=', 'in', 'instanceof', '+', '-', 'typeof', 'void', '*', '%', '/', '=', '!'];\n\nvar codes = {\n  AsciiIdPart: [0x24, 0, 0x30, 0x3A, 0x41, 0x5B, 0x5F, 0, 0x61, 0x7B],\n  IdStart: [0x24, 0, 0x41, 0x5B, 0x5F, 0, 0x61, 0x7B, 0xAA, 0, 0xBA, 0, 0xC0, 0xD7, 0xD8, 0xF7, 0xF8, 0x2B9, 0x2E0, 0x2E5, 0x1D00, 0x1D26, 0x1D2C, 0x1D5D, 0x1D62, 0x1D66, 0x1D6B, 0x1D78, 0x1D79, 0x1DBF, 0x1E00, 0x1F00, 0x2071, 0, 0x207F, 0, 0x2090, 0x209D, 0x212A, 0x212C, 0x2132, 0, 0x214E, 0, 0x2160, 0x2189, 0x2C60, 0x2C80, 0xA722, 0xA788, 0xA78B, 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, 0xA800, 0xAB30, 0xAB5B, 0xAB5C, 0xAB65, 0xFB00, 0xFB07, 0xFF21, 0xFF3B, 0xFF41, 0xFF5B],\n  Digit: [0x30, 0x3A],\n  Skip: [0, 0x21, 0x7F, 0xA1]\n};\n\nfunction decompress(lookup, set, compressed, value) {\n  var rangeCount = compressed.length;\n  for (var i = 0; i < rangeCount; i += 2) {\n    var start = compressed[i];\n    var end = compressed[i + 1];\n    end = end > 0 ? end : start + 1;\n    if (lookup) {\n      var j = start;\n      while (j < end) {\n        lookup[j] = value;\n        j++;\n      }\n    }\n    if (set) {\n      for (var ch = start; ch < end; ch++) {\n        set.add(ch);\n      }\n    }\n  }\n}\n\nfunction returnToken(token) {\n  return function (p) {\n    p.next();\n    return token;\n  };\n}\nfunction unexpectedCharacter(p) {\n  p.err('Unexpected character [' + fromCharCode(p.ch) + ']');\n  return null;\n}\n\nvar AsciiIdParts = new Set();\ndecompress(null, AsciiIdParts, codes.AsciiIdPart, true);\n\nvar IdParts = new Uint8Array(0xFFFF);\ndecompress(IdParts, null, codes.IdStart, 1);\ndecompress(IdParts, null, codes.Digit, 1);\n\nvar CharScanners = new Array(0xFFFF);\nvar ci = 0;\nwhile (ci < 0xFFFF) {\n  CharScanners[ci] = unexpectedCharacter;\n  ci++;\n}\n\ndecompress(CharScanners, null, codes.Skip, function (p) {\n  p.next();\n  return null;\n});\ndecompress(CharScanners, null, codes.IdStart, function (p) {\n  return p.scanIdentifier();\n});\ndecompress(CharScanners, null, codes.Digit, function (p) {\n  return p.scanNumber(false);\n});\n\nCharScanners[0x22] = CharScanners[0x27] = function (p) {\n  return p.scanString();\n};\nCharScanners[0x60] = function (p) {\n  return p.scanTemplate();\n};\n\nCharScanners[0x21] = function (p) {\n  if (p.next() !== 0x3D) {\n    return T$Bang;\n  }\n  if (p.next() !== 0x3D) {\n    return T$BangEq;\n  }\n  p.next();\n  return T$BangEqEq;\n};\n\nCharScanners[0x3D] = function (p) {\n  if (p.next() !== 0x3D) {\n    return T$Eq;\n  }\n  if (p.next() !== 0x3D) {\n    return T$EqEq;\n  }\n  p.next();\n  return T$EqEqEq;\n};\n\nCharScanners[0x26] = function (p) {\n  if (p.next() !== 0x26) {\n    return T$Ampersand;\n  }\n  p.next();\n  return T$AmpersandAmpersand;\n};\n\nCharScanners[0x7C] = function (p) {\n  if (p.next() !== 0x7C) {\n    return T$Bar;\n  }\n  p.next();\n  return T$BarBar;\n};\n\nCharScanners[0x2E] = function (p) {\n  if (p.next() <= 0x39 && p.ch >= 0x30) {\n    return p.scanNumber(true);\n  }\n  return T$Period;\n};\n\nCharScanners[0x3C] = function (p) {\n  if (p.next() !== 0x3D) {\n    return T$Lt;\n  }\n  p.next();\n  return T$LtEq;\n};\n\nCharScanners[0x3E] = function (p) {\n  if (p.next() !== 0x3D) {\n    return T$Gt;\n  }\n  p.next();\n  return T$GtEq;\n};\n\nCharScanners[0x25] = returnToken(T$Percent);\nCharScanners[0x28] = returnToken(T$LParen);\nCharScanners[0x29] = returnToken(T$RParen);\nCharScanners[0x2A] = returnToken(T$Star);\nCharScanners[0x2B] = returnToken(T$Plus);\nCharScanners[0x2C] = returnToken(T$Comma);\nCharScanners[0x2D] = returnToken(T$Minus);\nCharScanners[0x2F] = returnToken(T$Slash);\nCharScanners[0x3A] = returnToken(T$Colon);\nCharScanners[0x3F] = returnToken(T$Question);\nCharScanners[0x5B] = returnToken(T$LBracket);\nCharScanners[0x5D] = returnToken(T$RBracket);\nCharScanners[0x5E] = returnToken(T$Caret);\nCharScanners[0x7B] = returnToken(T$LBrace);\nCharScanners[0x7D] = returnToken(T$RBrace);\n\nvar mapProto = Map.prototype;\n\nfunction _getMapObserver(taskQueue, map) {\n  return ModifyMapObserver.for(taskQueue, map);\n}\n\nvar ModifyMapObserver = function (_ModifyCollectionObse2) {\n  _inherits(ModifyMapObserver, _ModifyCollectionObse2);\n\n  function ModifyMapObserver(taskQueue, map) {\n    \n\n    return _possibleConstructorReturn(this, _ModifyCollectionObse2.call(this, taskQueue, map));\n  }\n\n  ModifyMapObserver.for = function _for(taskQueue, map) {\n    if (!('__map_observer__' in map)) {\n      Reflect.defineProperty(map, '__map_observer__', {\n        value: ModifyMapObserver.create(taskQueue, map),\n        enumerable: false, configurable: false\n      });\n    }\n    return map.__map_observer__;\n  };\n\n  ModifyMapObserver.create = function create(taskQueue, map) {\n    var observer = new ModifyMapObserver(taskQueue, map);\n\n    var proto = mapProto;\n    if (proto.set !== map.set || proto.delete !== map.delete || proto.clear !== map.clear) {\n      proto = {\n        set: map.set,\n        delete: map.delete,\n        clear: map.clear\n      };\n    }\n\n    map.set = function () {\n      var hasValue = map.has(arguments[0]);\n      var type = hasValue ? 'update' : 'add';\n      var oldValue = map.get(arguments[0]);\n      var methodCallResult = proto.set.apply(map, arguments);\n      if (!hasValue || oldValue !== map.get(arguments[0])) {\n        observer.addChangeRecord({\n          type: type,\n          object: map,\n          key: arguments[0],\n          oldValue: oldValue\n        });\n      }\n      return methodCallResult;\n    };\n\n    map.delete = function () {\n      var hasValue = map.has(arguments[0]);\n      var oldValue = map.get(arguments[0]);\n      var methodCallResult = proto.delete.apply(map, arguments);\n      if (hasValue) {\n        observer.addChangeRecord({\n          type: 'delete',\n          object: map,\n          key: arguments[0],\n          oldValue: oldValue\n        });\n      }\n      return methodCallResult;\n    };\n\n    map.clear = function () {\n      var methodCallResult = proto.clear.apply(map, arguments);\n      observer.addChangeRecord({\n        type: 'clear',\n        object: map\n      });\n      return methodCallResult;\n    };\n\n    return observer;\n  };\n\n  return ModifyMapObserver;\n}(ModifyCollectionObserver);\n\nvar emLogger = LogManager.getLogger('event-manager');\n\nfunction findOriginalEventTarget(event) {\n  return event.path && event.path[0] || event.deepPath && event.deepPath[0] || event.target;\n}\n\nfunction stopPropagation() {\n  this.standardStopPropagation();\n  this.propagationStopped = true;\n}\n\nfunction handleCapturedEvent(event) {\n  event.propagationStopped = false;\n  var target = findOriginalEventTarget(event);\n\n  var orderedCallbacks = [];\n\n  while (target) {\n    if (target.capturedCallbacks) {\n      var callback = target.capturedCallbacks[event.type];\n      if (callback) {\n        if (event.stopPropagation !== stopPropagation) {\n          event.standardStopPropagation = event.stopPropagation;\n          event.stopPropagation = stopPropagation;\n        }\n        orderedCallbacks.push(callback);\n      }\n    }\n    target = target.parentNode;\n  }\n  for (var i = orderedCallbacks.length - 1; i >= 0 && !event.propagationStopped; i--) {\n    var orderedCallback = orderedCallbacks[i];\n    if ('handleEvent' in orderedCallback) {\n      orderedCallback.handleEvent(event);\n    } else {\n      orderedCallback(event);\n    }\n  }\n}\n\nvar CapturedHandlerEntry = function () {\n  function CapturedHandlerEntry(eventName) {\n    \n\n    this.eventName = eventName;\n    this.count = 0;\n  }\n\n  CapturedHandlerEntry.prototype.increment = function increment() {\n    this.count++;\n\n    if (this.count === 1) {\n      DOM.addEventListener(this.eventName, handleCapturedEvent, true);\n    }\n  };\n\n  CapturedHandlerEntry.prototype.decrement = function decrement() {\n    if (this.count === 0) {\n      emLogger.warn('The same EventListener was disposed multiple times.');\n    } else if (--this.count === 0) {\n      DOM.removeEventListener(this.eventName, handleDelegatedEvent, false);\n    }\n  };\n\n  return CapturedHandlerEntry;\n}();\n\nfunction handleDelegatedEvent(event) {\n  event.propagationStopped = false;\n  var target = findOriginalEventTarget(event);\n\n  while (target && !event.propagationStopped) {\n    if (target.delegatedCallbacks) {\n      var callback = target.delegatedCallbacks[event.type];\n      if (callback) {\n        if (event.stopPropagation !== stopPropagation) {\n          event.standardStopPropagation = event.stopPropagation;\n          event.stopPropagation = stopPropagation;\n        }\n        if ('handleEvent' in callback) {\n          callback.handleEvent(event);\n        } else {\n          callback(event);\n        }\n      }\n    }\n\n    target = target.parentNode;\n  }\n}\n\nvar DelegateHandlerEntry = function () {\n  function DelegateHandlerEntry(eventName) {\n    \n\n    this.eventName = eventName;\n    this.count = 0;\n  }\n\n  DelegateHandlerEntry.prototype.increment = function increment() {\n    this.count++;\n\n    if (this.count === 1) {\n      DOM.addEventListener(this.eventName, handleDelegatedEvent, false);\n    }\n  };\n\n  DelegateHandlerEntry.prototype.decrement = function decrement() {\n    if (this.count === 0) {\n      emLogger.warn('The same EventListener was disposed multiple times.');\n    } else if (--this.count === 0) {\n      DOM.removeEventListener(this.eventName, handleDelegatedEvent, false);\n    }\n  };\n\n  return DelegateHandlerEntry;\n}();\n\nvar DelegationEntryHandler = function () {\n  function DelegationEntryHandler(entry, lookup, targetEvent) {\n    \n\n    this.entry = entry;\n    this.lookup = lookup;\n    this.targetEvent = targetEvent;\n  }\n\n  DelegationEntryHandler.prototype.dispose = function dispose() {\n    if (this.lookup[this.targetEvent]) {\n      this.entry.decrement();\n      this.lookup[this.targetEvent] = null;\n    } else {\n      emLogger.warn('Calling .dispose() on already disposed eventListener');\n    }\n  };\n\n  return DelegationEntryHandler;\n}();\n\nvar EventHandler = function () {\n  function EventHandler(target, targetEvent, callback) {\n    \n\n    this.target = target;\n    this.targetEvent = targetEvent;\n    this.callback = callback;\n  }\n\n  EventHandler.prototype.dispose = function dispose() {\n    this.target.removeEventListener(this.targetEvent, this.callback);\n  };\n\n  return EventHandler;\n}();\n\nvar DefaultEventStrategy = function () {\n  function DefaultEventStrategy() {\n    \n\n    this.delegatedHandlers = {};\n    this.capturedHandlers = {};\n  }\n\n  DefaultEventStrategy.prototype.subscribe = function subscribe(target, targetEvent, callback, strategy, disposable) {\n    var delegatedHandlers = void 0;\n    var capturedHandlers = void 0;\n    var handlerEntry = void 0;\n\n    if (strategy === delegationStrategy.bubbling) {\n      delegatedHandlers = this.delegatedHandlers;\n      handlerEntry = delegatedHandlers[targetEvent] || (delegatedHandlers[targetEvent] = new DelegateHandlerEntry(targetEvent));\n      var delegatedCallbacks = target.delegatedCallbacks || (target.delegatedCallbacks = {});\n      if (!delegatedCallbacks[targetEvent]) {\n        handlerEntry.increment();\n      } else {\n        emLogger.warn('Overriding previous callback for event listener', { event: targetEvent, callback: callback, previousCallback: delegatedCallbacks[targetEvent] });\n      }\n      delegatedCallbacks[targetEvent] = callback;\n\n      if (disposable === true) {\n        return new DelegationEntryHandler(handlerEntry, delegatedCallbacks, targetEvent);\n      }\n\n      return function () {\n        handlerEntry.decrement();\n        delegatedCallbacks[targetEvent] = null;\n      };\n    }\n    if (strategy === delegationStrategy.capturing) {\n      capturedHandlers = this.capturedHandlers;\n      handlerEntry = capturedHandlers[targetEvent] || (capturedHandlers[targetEvent] = new CapturedHandlerEntry(targetEvent));\n      var capturedCallbacks = target.capturedCallbacks || (target.capturedCallbacks = {});\n      if (!capturedCallbacks[targetEvent]) {\n        handlerEntry.increment();\n      } else {\n        emLogger.error('already have a callback for event', { event: targetEvent, callback: callback });\n      }\n      capturedCallbacks[targetEvent] = callback;\n\n      if (disposable === true) {\n        return new DelegationEntryHandler(handlerEntry, capturedCallbacks, targetEvent);\n      }\n\n      return function () {\n        handlerEntry.decrement();\n        capturedCallbacks[targetEvent] = null;\n      };\n    }\n\n    target.addEventListener(targetEvent, callback);\n\n    if (disposable === true) {\n      return new EventHandler(target, targetEvent, callback);\n    }\n\n    return function () {\n      target.removeEventListener(targetEvent, callback);\n    };\n  };\n\n  return DefaultEventStrategy;\n}();\n\nexport var delegationStrategy = {\n  none: 0,\n  capturing: 1,\n  bubbling: 2\n};\n\nexport var EventManager = function () {\n  function EventManager() {\n    \n\n    this.elementHandlerLookup = {};\n    this.eventStrategyLookup = {};\n\n    this.registerElementConfig({\n      tagName: 'input',\n      properties: {\n        value: ['change', 'input'],\n        checked: ['change', 'input'],\n        files: ['change', 'input']\n      }\n    });\n\n    this.registerElementConfig({\n      tagName: 'textarea',\n      properties: {\n        value: ['change', 'input']\n      }\n    });\n\n    this.registerElementConfig({\n      tagName: 'select',\n      properties: {\n        value: ['change']\n      }\n    });\n\n    this.registerElementConfig({\n      tagName: 'content editable',\n      properties: {\n        value: ['change', 'input', 'blur', 'keyup', 'paste']\n      }\n    });\n\n    this.registerElementConfig({\n      tagName: 'scrollable element',\n      properties: {\n        scrollTop: ['scroll'],\n        scrollLeft: ['scroll']\n      }\n    });\n\n    this.defaultEventStrategy = new DefaultEventStrategy();\n  }\n\n  EventManager.prototype.registerElementConfig = function registerElementConfig(config) {\n    var tagName = config.tagName.toLowerCase();\n    var properties = config.properties;\n    var propertyName = void 0;\n\n    var lookup = this.elementHandlerLookup[tagName] = {};\n\n    for (propertyName in properties) {\n      if (properties.hasOwnProperty(propertyName)) {\n        lookup[propertyName] = properties[propertyName];\n      }\n    }\n  };\n\n  EventManager.prototype.registerEventStrategy = function registerEventStrategy(eventName, strategy) {\n    this.eventStrategyLookup[eventName] = strategy;\n  };\n\n  EventManager.prototype.getElementHandler = function getElementHandler(target, propertyName) {\n    var tagName = void 0;\n    var lookup = this.elementHandlerLookup;\n\n    if (target.tagName) {\n      tagName = target.tagName.toLowerCase();\n\n      if (lookup[tagName] && lookup[tagName][propertyName]) {\n        return new EventSubscriber(lookup[tagName][propertyName]);\n      }\n\n      if (propertyName === 'textContent' || propertyName === 'innerHTML') {\n        return new EventSubscriber(lookup['content editable'].value);\n      }\n\n      if (propertyName === 'scrollTop' || propertyName === 'scrollLeft') {\n        return new EventSubscriber(lookup['scrollable element'][propertyName]);\n      }\n    }\n\n    return null;\n  };\n\n  EventManager.prototype.addEventListener = function addEventListener(target, targetEvent, callbackOrListener, delegate, disposable) {\n    return (this.eventStrategyLookup[targetEvent] || this.defaultEventStrategy).subscribe(target, targetEvent, callbackOrListener, delegate, disposable);\n  };\n\n  return EventManager;\n}();\n\nexport var EventSubscriber = function () {\n  function EventSubscriber(events) {\n    \n\n    this.events = events;\n    this.element = null;\n    this.handler = null;\n  }\n\n  EventSubscriber.prototype.subscribe = function subscribe(element, callbackOrListener) {\n    this.element = element;\n    this.handler = callbackOrListener;\n\n    var events = this.events;\n    for (var i = 0, ii = events.length; ii > i; ++i) {\n      element.addEventListener(events[i], callbackOrListener);\n    }\n  };\n\n  EventSubscriber.prototype.dispose = function dispose() {\n    if (this.element === null) {\n      return;\n    }\n    var element = this.element;\n    var callbackOrListener = this.handler;\n    var events = this.events;\n    for (var i = 0, ii = events.length; ii > i; ++i) {\n      element.removeEventListener(events[i], callbackOrListener);\n    }\n    this.element = this.handler = null;\n  };\n\n  return EventSubscriber;\n}();\n\nexport var DirtyChecker = function () {\n  function DirtyChecker() {\n    \n\n    this.tracked = [];\n    this.checkDelay = 120;\n  }\n\n  DirtyChecker.prototype.addProperty = function addProperty(property) {\n    var tracked = this.tracked;\n\n    tracked.push(property);\n\n    if (tracked.length === 1) {\n      this.scheduleDirtyCheck();\n    }\n  };\n\n  DirtyChecker.prototype.removeProperty = function removeProperty(property) {\n    var tracked = this.tracked;\n    tracked.splice(tracked.indexOf(property), 1);\n  };\n\n  DirtyChecker.prototype.scheduleDirtyCheck = function scheduleDirtyCheck() {\n    var _this22 = this;\n\n    setTimeout(function () {\n      return _this22.check();\n    }, this.checkDelay);\n  };\n\n  DirtyChecker.prototype.check = function check() {\n    var tracked = this.tracked;\n    var i = tracked.length;\n\n    while (i--) {\n      var current = tracked[i];\n\n      if (current.isDirty()) {\n        current.call();\n      }\n    }\n\n    if (tracked.length) {\n      this.scheduleDirtyCheck();\n    }\n  };\n\n  return DirtyChecker;\n}();\n\nexport var DirtyCheckProperty = (_dec5 = subscriberCollection(), _dec5(_class5 = function () {\n  function DirtyCheckProperty(dirtyChecker, obj, propertyName) {\n    \n\n    this.dirtyChecker = dirtyChecker;\n    this.obj = obj;\n    this.propertyName = propertyName;\n  }\n\n  DirtyCheckProperty.prototype.getValue = function getValue() {\n    return this.obj[this.propertyName];\n  };\n\n  DirtyCheckProperty.prototype.setValue = function setValue(newValue) {\n    this.obj[this.propertyName] = newValue;\n  };\n\n  DirtyCheckProperty.prototype.call = function call() {\n    var oldValue = this.oldValue;\n    var newValue = this.getValue();\n\n    this.callSubscribers(newValue, oldValue);\n\n    this.oldValue = newValue;\n  };\n\n  DirtyCheckProperty.prototype.isDirty = function isDirty() {\n    return this.oldValue !== this.obj[this.propertyName];\n  };\n\n  DirtyCheckProperty.prototype.subscribe = function subscribe(context, callable) {\n    if (!this.hasSubscribers()) {\n      this.oldValue = this.getValue();\n      this.dirtyChecker.addProperty(this);\n    }\n    this.addSubscriber(context, callable);\n  };\n\n  DirtyCheckProperty.prototype.unsubscribe = function unsubscribe(context, callable) {\n    if (this.removeSubscriber(context, callable) && !this.hasSubscribers()) {\n      this.dirtyChecker.removeProperty(this);\n    }\n  };\n\n  return DirtyCheckProperty;\n}()) || _class5);\n\nvar logger = LogManager.getLogger('property-observation');\n\nexport var propertyAccessor = {\n  getValue: function getValue(obj, propertyName) {\n    return obj[propertyName];\n  },\n  setValue: function setValue(value, obj, propertyName) {\n    obj[propertyName] = value;\n  }\n};\n\nexport var PrimitiveObserver = function () {\n  function PrimitiveObserver(primitive, propertyName) {\n    \n\n    this.doNotCache = true;\n\n    this.primitive = primitive;\n    this.propertyName = propertyName;\n  }\n\n  PrimitiveObserver.prototype.getValue = function getValue() {\n    return this.primitive[this.propertyName];\n  };\n\n  PrimitiveObserver.prototype.setValue = function setValue() {\n    var type = _typeof(this.primitive);\n    throw new Error('The ' + this.propertyName + ' property of a ' + type + ' (' + this.primitive + ') cannot be assigned.');\n  };\n\n  PrimitiveObserver.prototype.subscribe = function subscribe() {};\n\n  PrimitiveObserver.prototype.unsubscribe = function unsubscribe() {};\n\n  return PrimitiveObserver;\n}();\n\nexport var SetterObserver = (_dec6 = subscriberCollection(), _dec6(_class7 = function () {\n  function SetterObserver(taskQueue, obj, propertyName) {\n    \n\n    this.taskQueue = taskQueue;\n    this.obj = obj;\n    this.propertyName = propertyName;\n    this.queued = false;\n    this.observing = false;\n  }\n\n  SetterObserver.prototype.getValue = function getValue() {\n    return this.obj[this.propertyName];\n  };\n\n  SetterObserver.prototype.setValue = function setValue(newValue) {\n    this.obj[this.propertyName] = newValue;\n  };\n\n  SetterObserver.prototype.getterValue = function getterValue() {\n    return this.currentValue;\n  };\n\n  SetterObserver.prototype.setterValue = function setterValue(newValue) {\n    var oldValue = this.currentValue;\n\n    if (oldValue !== newValue) {\n      if (!this.queued) {\n        this.oldValue = oldValue;\n        this.queued = true;\n        this.taskQueue.queueMicroTask(this);\n      }\n\n      this.currentValue = newValue;\n    }\n  };\n\n  SetterObserver.prototype.call = function call() {\n    var oldValue = this.oldValue;\n    var newValue = this.currentValue;\n\n    this.queued = false;\n\n    this.callSubscribers(newValue, oldValue);\n  };\n\n  SetterObserver.prototype.subscribe = function subscribe(context, callable) {\n    if (!this.observing) {\n      this.convertProperty();\n    }\n    this.addSubscriber(context, callable);\n  };\n\n  SetterObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n    this.removeSubscriber(context, callable);\n  };\n\n  SetterObserver.prototype.convertProperty = function convertProperty() {\n    this.observing = true;\n    this.currentValue = this.obj[this.propertyName];\n    this.setValue = this.setterValue;\n    this.getValue = this.getterValue;\n\n    if (!Reflect.defineProperty(this.obj, this.propertyName, {\n      configurable: true,\n      enumerable: this.propertyName in this.obj ? this.obj.propertyIsEnumerable(this.propertyName) : true,\n      get: this.getValue.bind(this),\n      set: this.setValue.bind(this)\n    })) {\n      logger.warn('Cannot observe property \\'' + this.propertyName + '\\' of object', this.obj);\n    }\n  };\n\n  return SetterObserver;\n}()) || _class7);\n\nexport var XLinkAttributeObserver = function () {\n  function XLinkAttributeObserver(element, propertyName, attributeName) {\n    \n\n    this.element = element;\n    this.propertyName = propertyName;\n    this.attributeName = attributeName;\n  }\n\n  XLinkAttributeObserver.prototype.getValue = function getValue() {\n    return this.element.getAttributeNS('http://www.w3.org/1999/xlink', this.attributeName);\n  };\n\n  XLinkAttributeObserver.prototype.setValue = function setValue(newValue) {\n    return this.element.setAttributeNS('http://www.w3.org/1999/xlink', this.attributeName, newValue);\n  };\n\n  XLinkAttributeObserver.prototype.subscribe = function subscribe() {\n    throw new Error('Observation of a \"' + this.element.nodeName + '\" element\\'s \"' + this.propertyName + '\" property is not supported.');\n  };\n\n  return XLinkAttributeObserver;\n}();\n\nexport var dataAttributeAccessor = {\n  getValue: function getValue(obj, propertyName) {\n    return obj.getAttribute(propertyName);\n  },\n  setValue: function setValue(value, obj, propertyName) {\n    if (value === null || value === undefined) {\n      obj.removeAttribute(propertyName);\n    } else {\n      obj.setAttribute(propertyName, value);\n    }\n  }\n};\n\nexport var DataAttributeObserver = function () {\n  function DataAttributeObserver(element, propertyName) {\n    \n\n    this.element = element;\n    this.propertyName = propertyName;\n  }\n\n  DataAttributeObserver.prototype.getValue = function getValue() {\n    return this.element.getAttribute(this.propertyName);\n  };\n\n  DataAttributeObserver.prototype.setValue = function setValue(newValue) {\n    if (newValue === null || newValue === undefined) {\n      return this.element.removeAttribute(this.propertyName);\n    }\n    return this.element.setAttribute(this.propertyName, newValue);\n  };\n\n  DataAttributeObserver.prototype.subscribe = function subscribe() {\n    throw new Error('Observation of a \"' + this.element.nodeName + '\" element\\'s \"' + this.propertyName + '\" property is not supported.');\n  };\n\n  return DataAttributeObserver;\n}();\n\nexport var StyleObserver = function () {\n  function StyleObserver(element, propertyName) {\n    \n\n    this.element = element;\n    this.propertyName = propertyName;\n\n    this.styles = null;\n    this.version = 0;\n  }\n\n  StyleObserver.prototype.getValue = function getValue() {\n    return this.element.style.cssText;\n  };\n\n  StyleObserver.prototype._setProperty = function _setProperty(style, value) {\n    var priority = '';\n\n    if (value !== null && value !== undefined && typeof value.indexOf === 'function' && value.indexOf('!important') !== -1) {\n      priority = 'important';\n      value = value.replace('!important', '');\n    }\n    this.element.style.setProperty(style, value, priority);\n  };\n\n  StyleObserver.prototype.setValue = function setValue(newValue) {\n    var styles = this.styles || {};\n    var style = void 0;\n    var version = this.version;\n\n    if (newValue !== null && newValue !== undefined) {\n      if (newValue instanceof Object) {\n        var value = void 0;\n        for (style in newValue) {\n          if (newValue.hasOwnProperty(style)) {\n            value = newValue[style];\n            style = style.replace(/([A-Z])/g, function (m) {\n              return '-' + m.toLowerCase();\n            });\n            styles[style] = version;\n            this._setProperty(style, value);\n          }\n        }\n      } else if (newValue.length) {\n        var rx = /\\s*([\\w\\-]+)\\s*:\\s*((?:(?:[\\w\\-]+\\(\\s*(?:\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[\\w\\-]+\\(\\s*(?:^\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[^\\)]*)\\),?|[^\\)]*)\\),?|\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[^;]*),?\\s*)+);?/g;\n        var pair = void 0;\n        while ((pair = rx.exec(newValue)) !== null) {\n          style = pair[1];\n          if (!style) {\n            continue;\n          }\n\n          styles[style] = version;\n          this._setProperty(style, pair[2]);\n        }\n      }\n    }\n\n    this.styles = styles;\n    this.version += 1;\n\n    if (version === 0) {\n      return;\n    }\n\n    version -= 1;\n    for (style in styles) {\n      if (!styles.hasOwnProperty(style) || styles[style] !== version) {\n        continue;\n      }\n\n      this.element.style.removeProperty(style);\n    }\n  };\n\n  StyleObserver.prototype.subscribe = function subscribe() {\n    throw new Error('Observation of a \"' + this.element.nodeName + '\" element\\'s \"' + this.propertyName + '\" property is not supported.');\n  };\n\n  return StyleObserver;\n}();\n\nexport var ValueAttributeObserver = (_dec7 = subscriberCollection(), _dec7(_class8 = function () {\n  function ValueAttributeObserver(element, propertyName, handler) {\n    \n\n    this.element = element;\n    this.propertyName = propertyName;\n    this.handler = handler;\n    if (propertyName === 'files') {\n      this.setValue = function () {};\n    }\n  }\n\n  ValueAttributeObserver.prototype.getValue = function getValue() {\n    return this.element[this.propertyName];\n  };\n\n  ValueAttributeObserver.prototype.setValue = function setValue(newValue) {\n    newValue = newValue === undefined || newValue === null ? '' : newValue;\n    if (this.element[this.propertyName] !== newValue) {\n      this.element[this.propertyName] = newValue;\n      this.notify();\n    }\n  };\n\n  ValueAttributeObserver.prototype.notify = function notify() {\n    var oldValue = this.oldValue;\n    var newValue = this.getValue();\n\n    this.callSubscribers(newValue, oldValue);\n\n    this.oldValue = newValue;\n  };\n\n  ValueAttributeObserver.prototype.handleEvent = function handleEvent() {\n    this.notify();\n  };\n\n  ValueAttributeObserver.prototype.subscribe = function subscribe(context, callable) {\n    if (!this.hasSubscribers()) {\n      this.oldValue = this.getValue();\n      this.handler.subscribe(this.element, this);\n    }\n\n    this.addSubscriber(context, callable);\n  };\n\n  ValueAttributeObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n    if (this.removeSubscriber(context, callable) && !this.hasSubscribers()) {\n      this.handler.dispose();\n    }\n  };\n\n  return ValueAttributeObserver;\n}()) || _class8);\n\nvar checkedArrayContext = 'CheckedObserver:array';\nvar checkedValueContext = 'CheckedObserver:value';\n\nexport var CheckedObserver = (_dec8 = subscriberCollection(), _dec8(_class9 = function () {\n  function CheckedObserver(element, handler, observerLocator) {\n    \n\n    this.element = element;\n    this.handler = handler;\n    this.observerLocator = observerLocator;\n  }\n\n  CheckedObserver.prototype.getValue = function getValue() {\n    return this.value;\n  };\n\n  CheckedObserver.prototype.setValue = function setValue(newValue) {\n    if (this.initialSync && this.value === newValue) {\n      return;\n    }\n\n    if (this.arrayObserver) {\n      this.arrayObserver.unsubscribe(checkedArrayContext, this);\n      this.arrayObserver = null;\n    }\n\n    if (this.element.type === 'checkbox' && Array.isArray(newValue)) {\n      this.arrayObserver = this.observerLocator.getArrayObserver(newValue);\n      this.arrayObserver.subscribe(checkedArrayContext, this);\n    }\n\n    this.oldValue = this.value;\n    this.value = newValue;\n    this.synchronizeElement();\n    this.notify();\n\n    if (!this.initialSync) {\n      this.initialSync = true;\n      this.observerLocator.taskQueue.queueMicroTask(this);\n    }\n  };\n\n  CheckedObserver.prototype.call = function call(context, splices) {\n    this.synchronizeElement();\n\n    if (!this.valueObserver) {\n      this.valueObserver = this.element.__observers__.model || this.element.__observers__.value;\n      if (this.valueObserver) {\n        this.valueObserver.subscribe(checkedValueContext, this);\n      }\n    }\n  };\n\n  CheckedObserver.prototype.synchronizeElement = function synchronizeElement() {\n    var value = this.value;\n    var element = this.element;\n    var elementValue = element.hasOwnProperty('model') ? element.model : element.value;\n    var isRadio = element.type === 'radio';\n    var matcher = element.matcher || function (a, b) {\n      return a === b;\n    };\n\n    element.checked = isRadio && !!matcher(value, elementValue) || !isRadio && value === true || !isRadio && Array.isArray(value) && value.findIndex(function (item) {\n      return !!matcher(item, elementValue);\n    }) !== -1;\n  };\n\n  CheckedObserver.prototype.synchronizeValue = function synchronizeValue() {\n    var value = this.value;\n    var element = this.element;\n    var elementValue = element.hasOwnProperty('model') ? element.model : element.value;\n    var index = void 0;\n    var matcher = element.matcher || function (a, b) {\n      return a === b;\n    };\n\n    if (element.type === 'checkbox') {\n      if (Array.isArray(value)) {\n        index = value.findIndex(function (item) {\n          return !!matcher(item, elementValue);\n        });\n        if (element.checked && index === -1) {\n          value.push(elementValue);\n        } else if (!element.checked && index !== -1) {\n          value.splice(index, 1);\n        }\n\n        return;\n      }\n\n      value = element.checked;\n    } else if (element.checked) {\n      value = elementValue;\n    } else {\n      return;\n    }\n\n    this.oldValue = this.value;\n    this.value = value;\n    this.notify();\n  };\n\n  CheckedObserver.prototype.notify = function notify() {\n    var oldValue = this.oldValue;\n    var newValue = this.value;\n\n    if (newValue === oldValue) {\n      return;\n    }\n\n    this.callSubscribers(newValue, oldValue);\n  };\n\n  CheckedObserver.prototype.handleEvent = function handleEvent() {\n    this.synchronizeValue();\n  };\n\n  CheckedObserver.prototype.subscribe = function subscribe(context, callable) {\n    if (!this.hasSubscribers()) {\n      this.handler.subscribe(this.element, this);\n    }\n    this.addSubscriber(context, callable);\n  };\n\n  CheckedObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n    if (this.removeSubscriber(context, callable) && !this.hasSubscribers()) {\n      this.handler.dispose();\n    }\n  };\n\n  CheckedObserver.prototype.unbind = function unbind() {\n    if (this.arrayObserver) {\n      this.arrayObserver.unsubscribe(checkedArrayContext, this);\n      this.arrayObserver = null;\n    }\n    if (this.valueObserver) {\n      this.valueObserver.unsubscribe(checkedValueContext, this);\n    }\n  };\n\n  return CheckedObserver;\n}()) || _class9);\n\nvar selectArrayContext = 'SelectValueObserver:array';\n\nexport var SelectValueObserver = (_dec9 = subscriberCollection(), _dec9(_class10 = function () {\n  function SelectValueObserver(element, handler, observerLocator) {\n    \n\n    this.element = element;\n    this.handler = handler;\n    this.observerLocator = observerLocator;\n  }\n\n  SelectValueObserver.prototype.getValue = function getValue() {\n    return this.value;\n  };\n\n  SelectValueObserver.prototype.setValue = function setValue(newValue) {\n    if (newValue !== null && newValue !== undefined && this.element.multiple && !Array.isArray(newValue)) {\n      throw new Error('Only null or Array instances can be bound to a multi-select.');\n    }\n    if (this.value === newValue) {\n      return;\n    }\n\n    if (this.arrayObserver) {\n      this.arrayObserver.unsubscribe(selectArrayContext, this);\n      this.arrayObserver = null;\n    }\n\n    if (Array.isArray(newValue)) {\n      this.arrayObserver = this.observerLocator.getArrayObserver(newValue);\n      this.arrayObserver.subscribe(selectArrayContext, this);\n    }\n\n    this.oldValue = this.value;\n    this.value = newValue;\n    this.synchronizeOptions();\n    this.notify();\n\n    if (!this.initialSync) {\n      this.initialSync = true;\n      this.observerLocator.taskQueue.queueMicroTask(this);\n    }\n  };\n\n  SelectValueObserver.prototype.call = function call(context, splices) {\n    this.synchronizeOptions();\n  };\n\n  SelectValueObserver.prototype.synchronizeOptions = function synchronizeOptions() {\n    var value = this.value;\n    var isArray = void 0;\n\n    if (Array.isArray(value)) {\n      isArray = true;\n    }\n\n    var options = this.element.options;\n    var i = options.length;\n    var matcher = this.element.matcher || function (a, b) {\n      return a === b;\n    };\n\n    var _loop = function _loop() {\n      var option = options.item(i);\n      var optionValue = option.hasOwnProperty('model') ? option.model : option.value;\n      if (isArray) {\n        option.selected = value.findIndex(function (item) {\n          return !!matcher(optionValue, item);\n        }) !== -1;\n        return 'continue';\n      }\n      option.selected = !!matcher(optionValue, value);\n    };\n\n    while (i--) {\n      var _ret = _loop();\n\n      if (_ret === 'continue') continue;\n    }\n  };\n\n  SelectValueObserver.prototype.synchronizeValue = function synchronizeValue() {\n    var _this23 = this;\n\n    var options = this.element.options;\n    var count = 0;\n    var value = [];\n\n    for (var i = 0, ii = options.length; i < ii; i++) {\n      var _option = options.item(i);\n      if (!_option.selected) {\n        continue;\n      }\n      value.push(_option.hasOwnProperty('model') ? _option.model : _option.value);\n      count++;\n    }\n\n    if (this.element.multiple) {\n      if (Array.isArray(this.value)) {\n        var _ret2 = function () {\n          var matcher = _this23.element.matcher || function (a, b) {\n            return a === b;\n          };\n\n          var i = 0;\n\n          var _loop2 = function _loop2() {\n            var a = _this23.value[i];\n            if (value.findIndex(function (b) {\n              return matcher(a, b);\n            }) === -1) {\n              _this23.value.splice(i, 1);\n            } else {\n              i++;\n            }\n          };\n\n          while (i < _this23.value.length) {\n            _loop2();\n          }\n\n          i = 0;\n\n          var _loop3 = function _loop3() {\n            var a = value[i];\n            if (_this23.value.findIndex(function (b) {\n              return matcher(a, b);\n            }) === -1) {\n              _this23.value.push(a);\n            }\n            i++;\n          };\n\n          while (i < value.length) {\n            _loop3();\n          }\n          return {\n            v: void 0\n          };\n        }();\n\n        if ((typeof _ret2 === 'undefined' ? 'undefined' : _typeof(_ret2)) === \"object\") return _ret2.v;\n      }\n    } else {\n      if (count === 0) {\n        value = null;\n      } else {\n        value = value[0];\n      }\n    }\n\n    if (value !== this.value) {\n      this.oldValue = this.value;\n      this.value = value;\n      this.notify();\n    }\n  };\n\n  SelectValueObserver.prototype.notify = function notify() {\n    var oldValue = this.oldValue;\n    var newValue = this.value;\n\n    this.callSubscribers(newValue, oldValue);\n  };\n\n  SelectValueObserver.prototype.handleEvent = function handleEvent() {\n    this.synchronizeValue();\n  };\n\n  SelectValueObserver.prototype.subscribe = function subscribe(context, callable) {\n    if (!this.hasSubscribers()) {\n      this.handler.subscribe(this.element, this);\n    }\n    this.addSubscriber(context, callable);\n  };\n\n  SelectValueObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n    if (this.removeSubscriber(context, callable) && !this.hasSubscribers()) {\n      this.handler.dispose();\n    }\n  };\n\n  SelectValueObserver.prototype.bind = function bind() {\n    var _this24 = this;\n\n    this.domObserver = DOM.createMutationObserver(function () {\n      _this24.synchronizeOptions();\n      _this24.synchronizeValue();\n    });\n    this.domObserver.observe(this.element, { childList: true, subtree: true, characterData: true });\n  };\n\n  SelectValueObserver.prototype.unbind = function unbind() {\n    this.domObserver.disconnect();\n    this.domObserver = null;\n\n    if (this.arrayObserver) {\n      this.arrayObserver.unsubscribe(selectArrayContext, this);\n      this.arrayObserver = null;\n    }\n  };\n\n  return SelectValueObserver;\n}()) || _class10);\n\nexport var ClassObserver = function () {\n  function ClassObserver(element) {\n    \n\n    this.element = element;\n    this.doNotCache = true;\n    this.value = '';\n    this.version = 0;\n  }\n\n  ClassObserver.prototype.getValue = function getValue() {\n    return this.value;\n  };\n\n  ClassObserver.prototype.setValue = function setValue(newValue) {\n    var nameIndex = this.nameIndex || {};\n    var version = this.version;\n    var names = void 0;\n    var name = void 0;\n\n    if (newValue !== null && newValue !== undefined && newValue.length) {\n      names = newValue.split(/\\s+/);\n      for (var i = 0, length = names.length; i < length; i++) {\n        name = names[i];\n        if (name === '') {\n          continue;\n        }\n        nameIndex[name] = version;\n        this.element.classList.add(name);\n      }\n    }\n\n    this.value = newValue;\n    this.nameIndex = nameIndex;\n    this.version += 1;\n\n    if (version === 0) {\n      return;\n    }\n\n    version -= 1;\n    for (name in nameIndex) {\n      if (!nameIndex.hasOwnProperty(name) || nameIndex[name] !== version) {\n        continue;\n      }\n      this.element.classList.remove(name);\n    }\n  };\n\n  ClassObserver.prototype.subscribe = function subscribe() {\n    throw new Error('Observation of a \"' + this.element.nodeName + '\" element\\'s \"class\" property is not supported.');\n  };\n\n  return ClassObserver;\n}();\n\nexport function hasDeclaredDependencies(descriptor) {\n  return !!(descriptor && descriptor.get && descriptor.get.dependencies);\n}\n\nexport function declarePropertyDependencies(ctor, propertyName, dependencies) {\n  var descriptor = Object.getOwnPropertyDescriptor(ctor.prototype, propertyName);\n  descriptor.get.dependencies = dependencies;\n}\n\nexport function computedFrom() {\n  for (var _len = arguments.length, rest = Array(_len), _key = 0; _key < _len; _key++) {\n    rest[_key] = arguments[_key];\n  }\n\n  return function (target, key, descriptor) {\n    descriptor.get.dependencies = rest;\n    return descriptor;\n  };\n}\n\nexport var ComputedExpression = function (_Expression19) {\n  _inherits(ComputedExpression, _Expression19);\n\n  function ComputedExpression(name, dependencies) {\n    \n\n    var _this25 = _possibleConstructorReturn(this, _Expression19.call(this));\n\n    _this25.name = name;\n    _this25.dependencies = dependencies;\n    _this25.isAssignable = true;\n    return _this25;\n  }\n\n  ComputedExpression.prototype.evaluate = function evaluate(scope, lookupFunctions) {\n    return scope.bindingContext[this.name];\n  };\n\n  ComputedExpression.prototype.assign = function assign(scope, value) {\n    scope.bindingContext[this.name] = value;\n  };\n\n  ComputedExpression.prototype.accept = function accept(visitor) {\n    throw new Error('not implemented');\n  };\n\n  ComputedExpression.prototype.connect = function connect(binding, scope) {\n    var dependencies = this.dependencies;\n    var i = dependencies.length;\n    while (i--) {\n      dependencies[i].connect(binding, scope);\n    }\n  };\n\n  return ComputedExpression;\n}(Expression);\n\nexport function createComputedObserver(obj, propertyName, descriptor, observerLocator) {\n  var dependencies = descriptor.get.dependencies;\n  if (!(dependencies instanceof ComputedExpression)) {\n    var i = dependencies.length;\n    while (i--) {\n      dependencies[i] = observerLocator.parser.parse(dependencies[i]);\n    }\n    dependencies = descriptor.get.dependencies = new ComputedExpression(propertyName, dependencies);\n  }\n\n  var scope = { bindingContext: obj, overrideContext: createOverrideContext(obj) };\n  return new ExpressionObserver(scope, dependencies, observerLocator);\n}\n\nvar svgElements = void 0;\nvar svgPresentationElements = void 0;\nvar svgPresentationAttributes = void 0;\nvar svgAnalyzer = void 0;\n\nif (typeof FEATURE_NO_SVG === 'undefined') {\n  svgElements = {\n    a: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'target', 'transform', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n    altGlyph: ['class', 'dx', 'dy', 'externalResourcesRequired', 'format', 'glyphRef', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rotate', 'style', 'systemLanguage', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    altGlyphDef: ['id', 'xml:base', 'xml:lang', 'xml:space'],\n    altGlyphItem: ['id', 'xml:base', 'xml:lang', 'xml:space'],\n    animate: ['accumulate', 'additive', 'attributeName', 'attributeType', 'begin', 'by', 'calcMode', 'dur', 'end', 'externalResourcesRequired', 'fill', 'from', 'id', 'keySplines', 'keyTimes', 'max', 'min', 'onbegin', 'onend', 'onload', 'onrepeat', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'systemLanguage', 'to', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n    animateColor: ['accumulate', 'additive', 'attributeName', 'attributeType', 'begin', 'by', 'calcMode', 'dur', 'end', 'externalResourcesRequired', 'fill', 'from', 'id', 'keySplines', 'keyTimes', 'max', 'min', 'onbegin', 'onend', 'onload', 'onrepeat', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'systemLanguage', 'to', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n    animateMotion: ['accumulate', 'additive', 'begin', 'by', 'calcMode', 'dur', 'end', 'externalResourcesRequired', 'fill', 'from', 'id', 'keyPoints', 'keySplines', 'keyTimes', 'max', 'min', 'onbegin', 'onend', 'onload', 'onrepeat', 'origin', 'path', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'rotate', 'systemLanguage', 'to', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n    animateTransform: ['accumulate', 'additive', 'attributeName', 'attributeType', 'begin', 'by', 'calcMode', 'dur', 'end', 'externalResourcesRequired', 'fill', 'from', 'id', 'keySplines', 'keyTimes', 'max', 'min', 'onbegin', 'onend', 'onload', 'onrepeat', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'systemLanguage', 'to', 'type', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n    circle: ['class', 'cx', 'cy', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'r', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n    clipPath: ['class', 'clipPathUnits', 'externalResourcesRequired', 'id', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n    'color-profile': ['id', 'local', 'name', 'rendering-intent', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n    cursor: ['externalResourcesRequired', 'id', 'requiredExtensions', 'requiredFeatures', 'systemLanguage', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    defs: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n    desc: ['class', 'id', 'style', 'xml:base', 'xml:lang', 'xml:space'],\n    ellipse: ['class', 'cx', 'cy', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rx', 'ry', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n    feBlend: ['class', 'height', 'id', 'in', 'in2', 'mode', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    feColorMatrix: ['class', 'height', 'id', 'in', 'result', 'style', 'type', 'values', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    feComponentTransfer: ['class', 'height', 'id', 'in', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    feComposite: ['class', 'height', 'id', 'in', 'in2', 'k1', 'k2', 'k3', 'k4', 'operator', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    feConvolveMatrix: ['bias', 'class', 'divisor', 'edgeMode', 'height', 'id', 'in', 'kernelMatrix', 'kernelUnitLength', 'order', 'preserveAlpha', 'result', 'style', 'targetX', 'targetY', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    feDiffuseLighting: ['class', 'diffuseConstant', 'height', 'id', 'in', 'kernelUnitLength', 'result', 'style', 'surfaceScale', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    feDisplacementMap: ['class', 'height', 'id', 'in', 'in2', 'result', 'scale', 'style', 'width', 'x', 'xChannelSelector', 'xml:base', 'xml:lang', 'xml:space', 'y', 'yChannelSelector'],\n    feDistantLight: ['azimuth', 'elevation', 'id', 'xml:base', 'xml:lang', 'xml:space'],\n    feFlood: ['class', 'height', 'id', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    feFuncA: ['amplitude', 'exponent', 'id', 'intercept', 'offset', 'slope', 'tableValues', 'type', 'xml:base', 'xml:lang', 'xml:space'],\n    feFuncB: ['amplitude', 'exponent', 'id', 'intercept', 'offset', 'slope', 'tableValues', 'type', 'xml:base', 'xml:lang', 'xml:space'],\n    feFuncG: ['amplitude', 'exponent', 'id', 'intercept', 'offset', 'slope', 'tableValues', 'type', 'xml:base', 'xml:lang', 'xml:space'],\n    feFuncR: ['amplitude', 'exponent', 'id', 'intercept', 'offset', 'slope', 'tableValues', 'type', 'xml:base', 'xml:lang', 'xml:space'],\n    feGaussianBlur: ['class', 'height', 'id', 'in', 'result', 'stdDeviation', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    feImage: ['class', 'externalResourcesRequired', 'height', 'id', 'preserveAspectRatio', 'result', 'style', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    feMerge: ['class', 'height', 'id', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    feMergeNode: ['id', 'xml:base', 'xml:lang', 'xml:space'],\n    feMorphology: ['class', 'height', 'id', 'in', 'operator', 'radius', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    feOffset: ['class', 'dx', 'dy', 'height', 'id', 'in', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    fePointLight: ['id', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y', 'z'],\n    feSpecularLighting: ['class', 'height', 'id', 'in', 'kernelUnitLength', 'result', 'specularConstant', 'specularExponent', 'style', 'surfaceScale', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    feSpotLight: ['id', 'limitingConeAngle', 'pointsAtX', 'pointsAtY', 'pointsAtZ', 'specularExponent', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y', 'z'],\n    feTile: ['class', 'height', 'id', 'in', 'result', 'style', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    feTurbulence: ['baseFrequency', 'class', 'height', 'id', 'numOctaves', 'result', 'seed', 'stitchTiles', 'style', 'type', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    filter: ['class', 'externalResourcesRequired', 'filterRes', 'filterUnits', 'height', 'id', 'primitiveUnits', 'style', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    font: ['class', 'externalResourcesRequired', 'horiz-adv-x', 'horiz-origin-x', 'horiz-origin-y', 'id', 'style', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'xml:base', 'xml:lang', 'xml:space'],\n    'font-face': ['accent-height', 'alphabetic', 'ascent', 'bbox', 'cap-height', 'descent', 'font-family', 'font-size', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'hanging', 'id', 'ideographic', 'mathematical', 'overline-position', 'overline-thickness', 'panose-1', 'slope', 'stemh', 'stemv', 'strikethrough-position', 'strikethrough-thickness', 'underline-position', 'underline-thickness', 'unicode-range', 'units-per-em', 'v-alphabetic', 'v-hanging', 'v-ideographic', 'v-mathematical', 'widths', 'x-height', 'xml:base', 'xml:lang', 'xml:space'],\n    'font-face-format': ['id', 'string', 'xml:base', 'xml:lang', 'xml:space'],\n    'font-face-name': ['id', 'name', 'xml:base', 'xml:lang', 'xml:space'],\n    'font-face-src': ['id', 'xml:base', 'xml:lang', 'xml:space'],\n    'font-face-uri': ['id', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n    foreignObject: ['class', 'externalResourcesRequired', 'height', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    g: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n    glyph: ['arabic-form', 'class', 'd', 'glyph-name', 'horiz-adv-x', 'id', 'lang', 'orientation', 'style', 'unicode', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'xml:base', 'xml:lang', 'xml:space'],\n    glyphRef: ['class', 'dx', 'dy', 'format', 'glyphRef', 'id', 'style', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    hkern: ['g1', 'g2', 'id', 'k', 'u1', 'u2', 'xml:base', 'xml:lang', 'xml:space'],\n    image: ['class', 'externalResourcesRequired', 'height', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'preserveAspectRatio', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    line: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'x1', 'x2', 'xml:base', 'xml:lang', 'xml:space', 'y1', 'y2'],\n    linearGradient: ['class', 'externalResourcesRequired', 'gradientTransform', 'gradientUnits', 'id', 'spreadMethod', 'style', 'x1', 'x2', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y1', 'y2'],\n    marker: ['class', 'externalResourcesRequired', 'id', 'markerHeight', 'markerUnits', 'markerWidth', 'orient', 'preserveAspectRatio', 'refX', 'refY', 'style', 'viewBox', 'xml:base', 'xml:lang', 'xml:space'],\n    mask: ['class', 'externalResourcesRequired', 'height', 'id', 'maskContentUnits', 'maskUnits', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    metadata: ['id', 'xml:base', 'xml:lang', 'xml:space'],\n    'missing-glyph': ['class', 'd', 'horiz-adv-x', 'id', 'style', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'xml:base', 'xml:lang', 'xml:space'],\n    mpath: ['externalResourcesRequired', 'id', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n    path: ['class', 'd', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'pathLength', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n    pattern: ['class', 'externalResourcesRequired', 'height', 'id', 'patternContentUnits', 'patternTransform', 'patternUnits', 'preserveAspectRatio', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'viewBox', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    polygon: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'points', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n    polyline: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'points', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n    radialGradient: ['class', 'cx', 'cy', 'externalResourcesRequired', 'fx', 'fy', 'gradientTransform', 'gradientUnits', 'id', 'r', 'spreadMethod', 'style', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n    rect: ['class', 'externalResourcesRequired', 'height', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rx', 'ry', 'style', 'systemLanguage', 'transform', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    script: ['externalResourcesRequired', 'id', 'type', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n    set: ['attributeName', 'attributeType', 'begin', 'dur', 'end', 'externalResourcesRequired', 'fill', 'id', 'max', 'min', 'onbegin', 'onend', 'onload', 'onrepeat', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'systemLanguage', 'to', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n    stop: ['class', 'id', 'offset', 'style', 'xml:base', 'xml:lang', 'xml:space'],\n    style: ['id', 'media', 'title', 'type', 'xml:base', 'xml:lang', 'xml:space'],\n    svg: ['baseProfile', 'class', 'contentScriptType', 'contentStyleType', 'externalResourcesRequired', 'height', 'id', 'onabort', 'onactivate', 'onclick', 'onerror', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onresize', 'onscroll', 'onunload', 'onzoom', 'preserveAspectRatio', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'version', 'viewBox', 'width', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y', 'zoomAndPan'],\n    switch: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'xml:base', 'xml:lang', 'xml:space'],\n    symbol: ['class', 'externalResourcesRequired', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'preserveAspectRatio', 'style', 'viewBox', 'xml:base', 'xml:lang', 'xml:space'],\n    text: ['class', 'dx', 'dy', 'externalResourcesRequired', 'id', 'lengthAdjust', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rotate', 'style', 'systemLanguage', 'textLength', 'transform', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    textPath: ['class', 'externalResourcesRequired', 'id', 'lengthAdjust', 'method', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'spacing', 'startOffset', 'style', 'systemLanguage', 'textLength', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space'],\n    title: ['class', 'id', 'style', 'xml:base', 'xml:lang', 'xml:space'],\n    tref: ['class', 'dx', 'dy', 'externalResourcesRequired', 'id', 'lengthAdjust', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rotate', 'style', 'systemLanguage', 'textLength', 'x', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    tspan: ['class', 'dx', 'dy', 'externalResourcesRequired', 'id', 'lengthAdjust', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'rotate', 'style', 'systemLanguage', 'textLength', 'x', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    use: ['class', 'externalResourcesRequired', 'height', 'id', 'onactivate', 'onclick', 'onfocusin', 'onfocusout', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'requiredExtensions', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:lang', 'xml:space', 'y'],\n    view: ['externalResourcesRequired', 'id', 'preserveAspectRatio', 'viewBox', 'viewTarget', 'xml:base', 'xml:lang', 'xml:space', 'zoomAndPan'],\n    vkern: ['g1', 'g2', 'id', 'k', 'u1', 'u2', 'xml:base', 'xml:lang', 'xml:space']\n  };\n\n\n  svgPresentationElements = {\n    'a': true,\n    'altGlyph': true,\n    'animate': true,\n    'animateColor': true,\n    'circle': true,\n    'clipPath': true,\n    'defs': true,\n    'ellipse': true,\n    'feBlend': true,\n    'feColorMatrix': true,\n    'feComponentTransfer': true,\n    'feComposite': true,\n    'feConvolveMatrix': true,\n    'feDiffuseLighting': true,\n    'feDisplacementMap': true,\n    'feFlood': true,\n    'feGaussianBlur': true,\n    'feImage': true,\n    'feMerge': true,\n    'feMorphology': true,\n    'feOffset': true,\n    'feSpecularLighting': true,\n    'feTile': true,\n    'feTurbulence': true,\n    'filter': true,\n    'font': true,\n    'foreignObject': true,\n    'g': true,\n    'glyph': true,\n    'glyphRef': true,\n    'image': true,\n    'line': true,\n    'linearGradient': true,\n    'marker': true,\n    'mask': true,\n    'missing-glyph': true,\n    'path': true,\n    'pattern': true,\n    'polygon': true,\n    'polyline': true,\n    'radialGradient': true,\n    'rect': true,\n    'stop': true,\n    'svg': true,\n    'switch': true,\n    'symbol': true,\n    'text': true,\n    'textPath': true,\n    'tref': true,\n    'tspan': true,\n    'use': true\n  };\n\n  svgPresentationAttributes = {\n    'alignment-baseline': true,\n    'baseline-shift': true,\n    'clip-path': true,\n    'clip-rule': true,\n    'clip': true,\n    'color-interpolation-filters': true,\n    'color-interpolation': true,\n    'color-profile': true,\n    'color-rendering': true,\n    'color': true,\n    'cursor': true,\n    'direction': true,\n    'display': true,\n    'dominant-baseline': true,\n    'enable-background': true,\n    'fill-opacity': true,\n    'fill-rule': true,\n    'fill': true,\n    'filter': true,\n    'flood-color': true,\n    'flood-opacity': true,\n    'font-family': true,\n    'font-size-adjust': true,\n    'font-size': true,\n    'font-stretch': true,\n    'font-style': true,\n    'font-variant': true,\n    'font-weight': true,\n    'glyph-orientation-horizontal': true,\n    'glyph-orientation-vertical': true,\n    'image-rendering': true,\n    'kerning': true,\n    'letter-spacing': true,\n    'lighting-color': true,\n    'marker-end': true,\n    'marker-mid': true,\n    'marker-start': true,\n    'mask': true,\n    'opacity': true,\n    'overflow': true,\n    'pointer-events': true,\n    'shape-rendering': true,\n    'stop-color': true,\n    'stop-opacity': true,\n    'stroke-dasharray': true,\n    'stroke-dashoffset': true,\n    'stroke-linecap': true,\n    'stroke-linejoin': true,\n    'stroke-miterlimit': true,\n    'stroke-opacity': true,\n    'stroke-width': true,\n    'stroke': true,\n    'text-anchor': true,\n    'text-decoration': true,\n    'text-rendering': true,\n    'unicode-bidi': true,\n    'visibility': true,\n    'word-spacing': true,\n    'writing-mode': true\n  };\n\n  var createElement = function createElement(html) {\n    var div = DOM.createElement('div');\n    div.innerHTML = html;\n    return div.firstChild;\n  };\n\n  svgAnalyzer = function () {\n    function SVGAnalyzer() {\n      \n\n      if (createElement('<svg><altGlyph /></svg>').firstElementChild.nodeName === 'altglyph' && elements.altGlyph) {\n        elements.altglyph = elements.altGlyph;\n        delete elements.altGlyph;\n        elements.altglyphdef = elements.altGlyphDef;\n        delete elements.altGlyphDef;\n        elements.altglyphitem = elements.altGlyphItem;\n        delete elements.altGlyphItem;\n        elements.glyphref = elements.glyphRef;\n        delete elements.glyphRef;\n      }\n    }\n\n    SVGAnalyzer.prototype.isStandardSvgAttribute = function isStandardSvgAttribute(nodeName, attributeName) {\n      return presentationElements[nodeName] && presentationAttributes[attributeName] || elements[nodeName] && elements[nodeName].indexOf(attributeName) !== -1;\n    };\n\n    return SVGAnalyzer;\n  }();\n}\n\nexport var elements = svgElements;\nexport var presentationElements = svgPresentationElements;\nexport var presentationAttributes = svgPresentationAttributes;\nexport var SVGAnalyzer = svgAnalyzer || function () {\n  function _class11() {\n    \n  }\n\n  _class11.prototype.isStandardSvgAttribute = function isStandardSvgAttribute() {\n    return false;\n  };\n\n  return _class11;\n}();\n\nexport var ObserverLocator = (_temp = _class12 = function () {\n  function ObserverLocator(taskQueue, eventManager, dirtyChecker, svgAnalyzer, parser) {\n    \n\n    this.taskQueue = taskQueue;\n    this.eventManager = eventManager;\n    this.dirtyChecker = dirtyChecker;\n    this.svgAnalyzer = svgAnalyzer;\n    this.parser = parser;\n\n    this.adapters = [];\n    this.logger = LogManager.getLogger('observer-locator');\n  }\n\n  ObserverLocator.prototype.getObserver = function getObserver(obj, propertyName) {\n    var observersLookup = obj.__observers__;\n    var observer = void 0;\n\n    if (observersLookup && propertyName in observersLookup) {\n      return observersLookup[propertyName];\n    }\n\n    observer = this.createPropertyObserver(obj, propertyName);\n\n    if (!observer.doNotCache) {\n      if (observersLookup === undefined) {\n        observersLookup = this.getOrCreateObserversLookup(obj);\n      }\n\n      observersLookup[propertyName] = observer;\n    }\n\n    return observer;\n  };\n\n  ObserverLocator.prototype.getOrCreateObserversLookup = function getOrCreateObserversLookup(obj) {\n    return obj.__observers__ || this.createObserversLookup(obj);\n  };\n\n  ObserverLocator.prototype.createObserversLookup = function createObserversLookup(obj) {\n    var value = {};\n\n    if (!Reflect.defineProperty(obj, '__observers__', {\n      enumerable: false,\n      configurable: false,\n      writable: false,\n      value: value\n    })) {\n      this.logger.warn('Cannot add observers to object', obj);\n    }\n\n    return value;\n  };\n\n  ObserverLocator.prototype.addAdapter = function addAdapter(adapter) {\n    this.adapters.push(adapter);\n  };\n\n  ObserverLocator.prototype.getAdapterObserver = function getAdapterObserver(obj, propertyName, descriptor) {\n    for (var i = 0, ii = this.adapters.length; i < ii; i++) {\n      var adapter = this.adapters[i];\n      var observer = adapter.getObserver(obj, propertyName, descriptor);\n      if (observer) {\n        return observer;\n      }\n    }\n    return null;\n  };\n\n  ObserverLocator.prototype.createPropertyObserver = function createPropertyObserver(obj, propertyName) {\n    var descriptor = void 0;\n    var handler = void 0;\n    var xlinkResult = void 0;\n\n    if (!(obj instanceof Object)) {\n      return new PrimitiveObserver(obj, propertyName);\n    }\n\n    if (obj instanceof DOM.Element) {\n      if (propertyName === 'class') {\n        return new ClassObserver(obj);\n      }\n      if (propertyName === 'style' || propertyName === 'css') {\n        return new StyleObserver(obj, propertyName);\n      }\n      handler = this.eventManager.getElementHandler(obj, propertyName);\n      if (propertyName === 'value' && obj.tagName.toLowerCase() === 'select') {\n        return new SelectValueObserver(obj, handler, this);\n      }\n      if (propertyName === 'checked' && obj.tagName.toLowerCase() === 'input') {\n        return new CheckedObserver(obj, handler, this);\n      }\n      if (handler) {\n        return new ValueAttributeObserver(obj, propertyName, handler);\n      }\n      xlinkResult = /^xlink:(.+)$/.exec(propertyName);\n      if (xlinkResult) {\n        return new XLinkAttributeObserver(obj, propertyName, xlinkResult[1]);\n      }\n      if (propertyName === 'role' && (obj instanceof DOM.Element || obj instanceof DOM.SVGElement) || /^\\w+:|^data-|^aria-/.test(propertyName) || obj instanceof DOM.SVGElement && this.svgAnalyzer.isStandardSvgAttribute(obj.nodeName, propertyName)) {\n        return new DataAttributeObserver(obj, propertyName);\n      }\n    }\n\n    descriptor = Object.getPropertyDescriptor(obj, propertyName);\n\n    if (hasDeclaredDependencies(descriptor)) {\n      return createComputedObserver(obj, propertyName, descriptor, this);\n    }\n\n    if (descriptor) {\n      var existingGetterOrSetter = descriptor.get || descriptor.set;\n      if (existingGetterOrSetter) {\n        if (existingGetterOrSetter.getObserver) {\n          return existingGetterOrSetter.getObserver(obj);\n        }\n\n        var adapterObserver = this.getAdapterObserver(obj, propertyName, descriptor);\n        if (adapterObserver) {\n          return adapterObserver;\n        }\n        return new DirtyCheckProperty(this.dirtyChecker, obj, propertyName);\n      }\n    }\n\n    if (obj instanceof Array) {\n      if (propertyName === 'length') {\n        return this.getArrayObserver(obj).getLengthObserver();\n      }\n\n      return new DirtyCheckProperty(this.dirtyChecker, obj, propertyName);\n    } else if (obj instanceof Map) {\n      if (propertyName === 'size') {\n        return this.getMapObserver(obj).getLengthObserver();\n      }\n\n      return new DirtyCheckProperty(this.dirtyChecker, obj, propertyName);\n    } else if (obj instanceof Set) {\n      if (propertyName === 'size') {\n        return this.getSetObserver(obj).getLengthObserver();\n      }\n\n      return new DirtyCheckProperty(this.dirtyChecker, obj, propertyName);\n    }\n\n    return new SetterObserver(this.taskQueue, obj, propertyName);\n  };\n\n  ObserverLocator.prototype.getAccessor = function getAccessor(obj, propertyName) {\n    if (obj instanceof DOM.Element) {\n      if (propertyName === 'class' || propertyName === 'style' || propertyName === 'css' || propertyName === 'value' && (obj.tagName.toLowerCase() === 'input' || obj.tagName.toLowerCase() === 'select') || propertyName === 'checked' && obj.tagName.toLowerCase() === 'input' || propertyName === 'model' && obj.tagName.toLowerCase() === 'input' || /^xlink:.+$/.exec(propertyName)) {\n        return this.getObserver(obj, propertyName);\n      }\n      if (/^\\w+:|^data-|^aria-/.test(propertyName) || obj instanceof DOM.SVGElement && this.svgAnalyzer.isStandardSvgAttribute(obj.nodeName, propertyName) || obj.tagName.toLowerCase() === 'img' && propertyName === 'src' || obj.tagName.toLowerCase() === 'a' && propertyName === 'href') {\n        return dataAttributeAccessor;\n      }\n    }\n    return propertyAccessor;\n  };\n\n  ObserverLocator.prototype.getArrayObserver = function getArrayObserver(array) {\n    return _getArrayObserver(this.taskQueue, array);\n  };\n\n  ObserverLocator.prototype.getMapObserver = function getMapObserver(map) {\n    return _getMapObserver(this.taskQueue, map);\n  };\n\n  ObserverLocator.prototype.getSetObserver = function getSetObserver(set) {\n    return _getSetObserver(this.taskQueue, set);\n  };\n\n  return ObserverLocator;\n}(), _class12.inject = [TaskQueue, EventManager, DirtyChecker, SVGAnalyzer, Parser], _temp);\n\nexport var ObjectObservationAdapter = function () {\n  function ObjectObservationAdapter() {\n    \n  }\n\n  ObjectObservationAdapter.prototype.getObserver = function getObserver(object, propertyName, descriptor) {\n    throw new Error('BindingAdapters must implement getObserver(object, propertyName).');\n  };\n\n  return ObjectObservationAdapter;\n}();\n\nexport var BindingExpression = function () {\n  function BindingExpression(observerLocator, targetProperty, sourceExpression, mode, lookupFunctions, attribute) {\n    \n\n    this.observerLocator = observerLocator;\n    this.targetProperty = targetProperty;\n    this.sourceExpression = sourceExpression;\n    this.mode = mode;\n    this.lookupFunctions = lookupFunctions;\n    this.attribute = attribute;\n    this.discrete = false;\n  }\n\n  BindingExpression.prototype.createBinding = function createBinding(target) {\n    return new Binding(this.observerLocator, this.sourceExpression, target, this.targetProperty, this.mode, this.lookupFunctions);\n  };\n\n  return BindingExpression;\n}();\n\nexport var Binding = (_dec10 = connectable(), _dec10(_class13 = function () {\n  function Binding(observerLocator, sourceExpression, target, targetProperty, mode, lookupFunctions) {\n    \n\n    this.observerLocator = observerLocator;\n    this.sourceExpression = sourceExpression;\n    this.target = target;\n    this.targetProperty = targetProperty;\n    this.mode = mode;\n    this.lookupFunctions = lookupFunctions;\n  }\n\n  Binding.prototype.updateTarget = function updateTarget(value) {\n    this.targetObserver.setValue(value, this.target, this.targetProperty);\n  };\n\n  Binding.prototype.updateSource = function updateSource(value) {\n    this.sourceExpression.assign(this.source, value, this.lookupFunctions);\n  };\n\n  Binding.prototype.call = function call(context, newValue, oldValue) {\n    if (!this.isBound) {\n      return;\n    }\n    if (context === sourceContext) {\n      oldValue = this.targetObserver.getValue(this.target, this.targetProperty);\n      newValue = this.sourceExpression.evaluate(this.source, this.lookupFunctions);\n      if (newValue !== oldValue) {\n        this.updateTarget(newValue);\n      }\n      if (this.mode !== bindingMode.oneTime) {\n        this._version++;\n        this.sourceExpression.connect(this, this.source);\n        this.unobserve(false);\n      }\n      return;\n    }\n    if (context === targetContext) {\n      if (newValue !== this.sourceExpression.evaluate(this.source, this.lookupFunctions)) {\n        this.updateSource(newValue);\n      }\n      return;\n    }\n    throw new Error('Unexpected call context ' + context);\n  };\n\n  Binding.prototype.bind = function bind(source) {\n    if (this.isBound) {\n      if (this.source === source) {\n        return;\n      }\n      this.unbind();\n    }\n    this.isBound = true;\n    this.source = source;\n\n    if (this.sourceExpression.bind) {\n      this.sourceExpression.bind(this, source, this.lookupFunctions);\n    }\n\n    var mode = this.mode;\n    if (!this.targetObserver) {\n      var method = mode === bindingMode.twoWay || mode === bindingMode.fromView ? 'getObserver' : 'getAccessor';\n      this.targetObserver = this.observerLocator[method](this.target, this.targetProperty);\n    }\n\n    if ('bind' in this.targetObserver) {\n      this.targetObserver.bind();\n    }\n    if (this.mode !== bindingMode.fromView) {\n      var value = this.sourceExpression.evaluate(source, this.lookupFunctions);\n      this.updateTarget(value);\n    }\n\n    if (mode === bindingMode.oneTime) {\n      return;\n    } else if (mode === bindingMode.toView) {\n      enqueueBindingConnect(this);\n    } else if (mode === bindingMode.twoWay) {\n      this.sourceExpression.connect(this, source);\n      this.targetObserver.subscribe(targetContext, this);\n    } else if (mode === bindingMode.fromView) {\n      this.targetObserver.subscribe(targetContext, this);\n    }\n  };\n\n  Binding.prototype.unbind = function unbind() {\n    if (!this.isBound) {\n      return;\n    }\n    this.isBound = false;\n    if (this.sourceExpression.unbind) {\n      this.sourceExpression.unbind(this, this.source);\n    }\n    this.source = null;\n    if ('unbind' in this.targetObserver) {\n      this.targetObserver.unbind();\n    }\n    if (this.targetObserver.unsubscribe) {\n      this.targetObserver.unsubscribe(targetContext, this);\n    }\n    this.unobserve(true);\n  };\n\n  Binding.prototype.connect = function connect(evaluate) {\n    if (!this.isBound) {\n      return;\n    }\n    if (evaluate) {\n      var value = this.sourceExpression.evaluate(this.source, this.lookupFunctions);\n      this.updateTarget(value);\n    }\n    this.sourceExpression.connect(this, this.source);\n  };\n\n  return Binding;\n}()) || _class13);\n\nexport var CallExpression = function () {\n  function CallExpression(observerLocator, targetProperty, sourceExpression, lookupFunctions) {\n    \n\n    this.observerLocator = observerLocator;\n    this.targetProperty = targetProperty;\n    this.sourceExpression = sourceExpression;\n    this.lookupFunctions = lookupFunctions;\n  }\n\n  CallExpression.prototype.createBinding = function createBinding(target) {\n    return new Call(this.observerLocator, this.sourceExpression, target, this.targetProperty, this.lookupFunctions);\n  };\n\n  return CallExpression;\n}();\n\nexport var Call = function () {\n  function Call(observerLocator, sourceExpression, target, targetProperty, lookupFunctions) {\n    \n\n    this.sourceExpression = sourceExpression;\n    this.target = target;\n    this.targetProperty = observerLocator.getObserver(target, targetProperty);\n    this.lookupFunctions = lookupFunctions;\n  }\n\n  Call.prototype.callSource = function callSource($event) {\n    var overrideContext = this.source.overrideContext;\n    Object.assign(overrideContext, $event);\n    overrideContext.$event = $event;\n    var mustEvaluate = true;\n    var result = this.sourceExpression.evaluate(this.source, this.lookupFunctions, mustEvaluate);\n    delete overrideContext.$event;\n    for (var prop in $event) {\n      delete overrideContext[prop];\n    }\n    return result;\n  };\n\n  Call.prototype.bind = function bind(source) {\n    var _this26 = this;\n\n    if (this.isBound) {\n      if (this.source === source) {\n        return;\n      }\n      this.unbind();\n    }\n    this.isBound = true;\n    this.source = source;\n\n    if (this.sourceExpression.bind) {\n      this.sourceExpression.bind(this, source, this.lookupFunctions);\n    }\n    this.targetProperty.setValue(function ($event) {\n      return _this26.callSource($event);\n    });\n  };\n\n  Call.prototype.unbind = function unbind() {\n    if (!this.isBound) {\n      return;\n    }\n    this.isBound = false;\n    if (this.sourceExpression.unbind) {\n      this.sourceExpression.unbind(this, this.source);\n    }\n    this.source = null;\n    this.targetProperty.setValue(null);\n  };\n\n  return Call;\n}();\n\nexport var ValueConverterResource = function () {\n  function ValueConverterResource(name) {\n    \n\n    this.name = name;\n  }\n\n  ValueConverterResource.convention = function convention(name) {\n    if (name.endsWith('ValueConverter')) {\n      return new ValueConverterResource(camelCase(name.substring(0, name.length - 14)));\n    }\n  };\n\n  ValueConverterResource.prototype.initialize = function initialize(container, target) {\n    this.instance = container.get(target);\n  };\n\n  ValueConverterResource.prototype.register = function register(registry, name) {\n    registry.registerValueConverter(name || this.name, this.instance);\n  };\n\n  ValueConverterResource.prototype.load = function load(container, target) {};\n\n  return ValueConverterResource;\n}();\n\nexport function valueConverter(nameOrTarget) {\n  if (nameOrTarget === undefined || typeof nameOrTarget === 'string') {\n    return function (target) {\n      metadata.define(metadata.resource, new ValueConverterResource(nameOrTarget), target);\n    };\n  }\n\n  metadata.define(metadata.resource, new ValueConverterResource(), nameOrTarget);\n}\n\nexport var BindingBehaviorResource = function () {\n  function BindingBehaviorResource(name) {\n    \n\n    this.name = name;\n  }\n\n  BindingBehaviorResource.convention = function convention(name) {\n    if (name.endsWith('BindingBehavior')) {\n      return new BindingBehaviorResource(camelCase(name.substring(0, name.length - 15)));\n    }\n  };\n\n  BindingBehaviorResource.prototype.initialize = function initialize(container, target) {\n    this.instance = container.get(target);\n  };\n\n  BindingBehaviorResource.prototype.register = function register(registry, name) {\n    registry.registerBindingBehavior(name || this.name, this.instance);\n  };\n\n  BindingBehaviorResource.prototype.load = function load(container, target) {};\n\n  return BindingBehaviorResource;\n}();\n\nexport function bindingBehavior(nameOrTarget) {\n  if (nameOrTarget === undefined || typeof nameOrTarget === 'string') {\n    return function (target) {\n      metadata.define(metadata.resource, new BindingBehaviorResource(nameOrTarget), target);\n    };\n  }\n\n  metadata.define(metadata.resource, new BindingBehaviorResource(), nameOrTarget);\n}\n\nexport var ListenerExpression = function () {\n  function ListenerExpression(eventManager, targetEvent, sourceExpression, delegationStrategy, preventDefault, lookupFunctions) {\n    \n\n    this.eventManager = eventManager;\n    this.targetEvent = targetEvent;\n    this.sourceExpression = sourceExpression;\n    this.delegationStrategy = delegationStrategy;\n    this.discrete = true;\n    this.preventDefault = preventDefault;\n    this.lookupFunctions = lookupFunctions;\n  }\n\n  ListenerExpression.prototype.createBinding = function createBinding(target) {\n    return new Listener(this.eventManager, this.targetEvent, this.delegationStrategy, this.sourceExpression, target, this.preventDefault, this.lookupFunctions);\n  };\n\n  return ListenerExpression;\n}();\n\nexport var Listener = function () {\n  function Listener(eventManager, targetEvent, delegationStrategy, sourceExpression, target, preventDefault, lookupFunctions) {\n    \n\n    this.eventManager = eventManager;\n    this.targetEvent = targetEvent;\n    this.delegationStrategy = delegationStrategy;\n    this.sourceExpression = sourceExpression;\n    this.target = target;\n    this.preventDefault = preventDefault;\n    this.lookupFunctions = lookupFunctions;\n  }\n\n  Listener.prototype.callSource = function callSource(event) {\n    var overrideContext = this.source.overrideContext;\n    overrideContext.$event = event;\n    var mustEvaluate = true;\n    var result = this.sourceExpression.evaluate(this.source, this.lookupFunctions, mustEvaluate);\n    delete overrideContext.$event;\n    if (result !== true && this.preventDefault) {\n      event.preventDefault();\n    }\n    return result;\n  };\n\n  Listener.prototype.handleEvent = function handleEvent(event) {\n    this.callSource(event);\n  };\n\n  Listener.prototype.bind = function bind(source) {\n    if (this.isBound) {\n      if (this.source === source) {\n        return;\n      }\n      this.unbind();\n    }\n    this.isBound = true;\n    this.source = source;\n\n    if (this.sourceExpression.bind) {\n      this.sourceExpression.bind(this, source, this.lookupFunctions);\n    }\n    this._handler = this.eventManager.addEventListener(this.target, this.targetEvent, this, this.delegationStrategy, true);\n  };\n\n  Listener.prototype.unbind = function unbind() {\n    if (!this.isBound) {\n      return;\n    }\n    this.isBound = false;\n    if (this.sourceExpression.unbind) {\n      this.sourceExpression.unbind(this, this.source);\n    }\n    this.source = null;\n    this._handler.dispose();\n    this._handler = null;\n  };\n\n  return Listener;\n}();\n\nfunction getAU(element) {\n  var au = element.au;\n\n  if (au === undefined) {\n    throw new Error('No Aurelia APIs are defined for the element: \"' + element.tagName + '\".');\n  }\n\n  return au;\n}\n\nexport var NameExpression = function () {\n  function NameExpression(sourceExpression, apiName, lookupFunctions) {\n    \n\n    this.sourceExpression = sourceExpression;\n    this.apiName = apiName;\n    this.lookupFunctions = lookupFunctions;\n    this.discrete = true;\n  }\n\n  NameExpression.prototype.createBinding = function createBinding(target) {\n    return new NameBinder(this.sourceExpression, NameExpression.locateAPI(target, this.apiName), this.lookupFunctions);\n  };\n\n  NameExpression.locateAPI = function locateAPI(element, apiName) {\n    switch (apiName) {\n      case 'element':\n        return element;\n      case 'controller':\n        return getAU(element).controller;\n      case 'view-model':\n        return getAU(element).controller.viewModel;\n      case 'view':\n        return getAU(element).controller.view;\n      default:\n        var target = getAU(element)[apiName];\n\n        if (target === undefined) {\n          throw new Error('Attempted to reference \"' + apiName + '\", but it was not found amongst the target\\'s API.');\n        }\n\n        return target.viewModel;\n    }\n  };\n\n  return NameExpression;\n}();\n\nvar NameBinder = function () {\n  function NameBinder(sourceExpression, target, lookupFunctions) {\n    \n\n    this.sourceExpression = sourceExpression;\n    this.target = target;\n    this.lookupFunctions = lookupFunctions;\n  }\n\n  NameBinder.prototype.bind = function bind(source) {\n    if (this.isBound) {\n      if (this.source === source) {\n        return;\n      }\n      this.unbind();\n    }\n    this.isBound = true;\n    this.source = source;\n    if (this.sourceExpression.bind) {\n      this.sourceExpression.bind(this, source, this.lookupFunctions);\n    }\n    this.sourceExpression.assign(this.source, this.target, this.lookupFunctions);\n  };\n\n  NameBinder.prototype.unbind = function unbind() {\n    if (!this.isBound) {\n      return;\n    }\n    this.isBound = false;\n    if (this.sourceExpression.evaluate(this.source, this.lookupFunctions) === this.target) {\n      this.sourceExpression.assign(this.source, null, this.lookupFunctions);\n    }\n    if (this.sourceExpression.unbind) {\n      this.sourceExpression.unbind(this, this.source);\n    }\n    this.source = null;\n  };\n\n  return NameBinder;\n}();\n\nvar LookupFunctions = {\n  bindingBehaviors: function bindingBehaviors(name) {\n    return null;\n  },\n  valueConverters: function valueConverters(name) {\n    return null;\n  }\n};\n\nexport var BindingEngine = (_temp2 = _class14 = function () {\n  function BindingEngine(observerLocator, parser) {\n    \n\n    this.observerLocator = observerLocator;\n    this.parser = parser;\n  }\n\n  BindingEngine.prototype.createBindingExpression = function createBindingExpression(targetProperty, sourceExpression) {\n    var mode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : bindingMode.toView;\n    var lookupFunctions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : LookupFunctions;\n\n    return new BindingExpression(this.observerLocator, targetProperty, this.parser.parse(sourceExpression), mode, lookupFunctions);\n  };\n\n  BindingEngine.prototype.propertyObserver = function propertyObserver(obj, propertyName) {\n    var _this27 = this;\n\n    return {\n      subscribe: function subscribe(callback) {\n        var observer = _this27.observerLocator.getObserver(obj, propertyName);\n        observer.subscribe(callback);\n        return {\n          dispose: function dispose() {\n            return observer.unsubscribe(callback);\n          }\n        };\n      }\n    };\n  };\n\n  BindingEngine.prototype.collectionObserver = function collectionObserver(collection) {\n    var _this28 = this;\n\n    return {\n      subscribe: function subscribe(callback) {\n        var observer = void 0;\n        if (collection instanceof Array) {\n          observer = _this28.observerLocator.getArrayObserver(collection);\n        } else if (collection instanceof Map) {\n          observer = _this28.observerLocator.getMapObserver(collection);\n        } else if (collection instanceof Set) {\n          observer = _this28.observerLocator.getSetObserver(collection);\n        } else {\n          throw new Error('collection must be an instance of Array, Map or Set.');\n        }\n        observer.subscribe(callback);\n        return {\n          dispose: function dispose() {\n            return observer.unsubscribe(callback);\n          }\n        };\n      }\n    };\n  };\n\n  BindingEngine.prototype.expressionObserver = function expressionObserver(bindingContext, expression) {\n    var scope = { bindingContext: bindingContext, overrideContext: createOverrideContext(bindingContext) };\n    return new ExpressionObserver(scope, this.parser.parse(expression), this.observerLocator, LookupFunctions);\n  };\n\n  BindingEngine.prototype.parseExpression = function parseExpression(expression) {\n    return this.parser.parse(expression);\n  };\n\n  BindingEngine.prototype.registerAdapter = function registerAdapter(adapter) {\n    this.observerLocator.addAdapter(adapter);\n  };\n\n  return BindingEngine;\n}(), _class14.inject = [ObserverLocator, Parser], _temp2);\n\nvar setProto = Set.prototype;\n\nfunction _getSetObserver(taskQueue, set) {\n  return ModifySetObserver.for(taskQueue, set);\n}\n\nvar ModifySetObserver = function (_ModifyCollectionObse3) {\n  _inherits(ModifySetObserver, _ModifyCollectionObse3);\n\n  function ModifySetObserver(taskQueue, set) {\n    \n\n    return _possibleConstructorReturn(this, _ModifyCollectionObse3.call(this, taskQueue, set));\n  }\n\n  ModifySetObserver.for = function _for(taskQueue, set) {\n    if (!('__set_observer__' in set)) {\n      Reflect.defineProperty(set, '__set_observer__', {\n        value: ModifySetObserver.create(taskQueue, set),\n        enumerable: false, configurable: false\n      });\n    }\n    return set.__set_observer__;\n  };\n\n  ModifySetObserver.create = function create(taskQueue, set) {\n    var observer = new ModifySetObserver(taskQueue, set);\n\n    var proto = setProto;\n    if (proto.add !== set.add || proto.delete !== set.delete || proto.clear !== set.clear) {\n      proto = {\n        add: set.add,\n        delete: set.delete,\n        clear: set.clear\n      };\n    }\n\n    set.add = function () {\n      var type = 'add';\n      var oldSize = set.size;\n      var methodCallResult = proto.add.apply(set, arguments);\n      var hasValue = set.size === oldSize;\n      if (!hasValue) {\n        observer.addChangeRecord({\n          type: type,\n          object: set,\n          value: Array.from(set).pop()\n        });\n      }\n      return methodCallResult;\n    };\n\n    set.delete = function () {\n      var hasValue = set.has(arguments[0]);\n      var methodCallResult = proto.delete.apply(set, arguments);\n      if (hasValue) {\n        observer.addChangeRecord({\n          type: 'delete',\n          object: set,\n          value: arguments[0]\n        });\n      }\n      return methodCallResult;\n    };\n\n    set.clear = function () {\n      var methodCallResult = proto.clear.apply(set, arguments);\n      observer.addChangeRecord({\n        type: 'clear',\n        object: set\n      });\n      return methodCallResult;\n    };\n\n    return observer;\n  };\n\n  return ModifySetObserver;\n}(ModifyCollectionObserver);\n\nexport function observable(targetOrConfig, key, descriptor) {\n  function deco(target, key, descriptor, config) {\n    var isClassDecorator = key === undefined;\n    if (isClassDecorator) {\n      target = target.prototype;\n      key = typeof config === 'string' ? config : config.name;\n    }\n\n    var innerPropertyName = '_' + key;\n    var innerPropertyDescriptor = {\n      configurable: true,\n      enumerable: false,\n      writable: true\n    };\n\n    var callbackName = config && config.changeHandler || key + 'Changed';\n\n    if (descriptor) {\n      if (typeof descriptor.initializer === 'function') {\n        innerPropertyDescriptor.value = descriptor.initializer();\n      }\n    } else {\n      descriptor = {};\n    }\n\n    if (!('enumerable' in descriptor)) {\n      descriptor.enumerable = true;\n    }\n\n    delete descriptor.value;\n    delete descriptor.writable;\n    delete descriptor.initializer;\n\n    Reflect.defineProperty(target, innerPropertyName, innerPropertyDescriptor);\n\n    descriptor.get = function () {\n      return this[innerPropertyName];\n    };\n    descriptor.set = function (newValue) {\n      var oldValue = this[innerPropertyName];\n      if (newValue === oldValue) {\n        return;\n      }\n\n      this[innerPropertyName] = newValue;\n      Reflect.defineProperty(this, innerPropertyName, { enumerable: false });\n\n      if (this[callbackName]) {\n        this[callbackName](newValue, oldValue, key);\n      }\n    };\n\n    descriptor.get.dependencies = [innerPropertyName];\n\n    if (isClassDecorator) {\n      Reflect.defineProperty(target, key, descriptor);\n    } else {\n      return descriptor;\n    }\n  }\n\n  if (key === undefined) {\n    return function (t, k, d) {\n      return deco(t, k, d, targetOrConfig);\n    };\n  }\n  return deco(targetOrConfig, key, descriptor);\n}\n\nvar signals = {};\n\nexport function connectBindingToSignal(binding, name) {\n  if (!signals.hasOwnProperty(name)) {\n    signals[name] = 0;\n  }\n  binding.observeProperty(signals, name);\n}\n\nexport function signalBindings(name) {\n  if (signals.hasOwnProperty(name)) {\n    signals[name]++;\n  }\n}","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { Result } from \"models/test-result/result\";\n\n@autoinject()\nexport class ResultService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"ResultService\");\n  }\n\n  // public async list ( parameters: UxDatatableParameters ): Promise<UxDatatableResponse> {\n  //   return await this.client.post( \"Position/list\", parameters )\n  //     .then( ( response: any ) => {\n  //       return <UxDatatableResponse> response;\n  //     } );\n  // }\n\n  // public async getAll (): Promise<Position[]> {\n  //   return await this.client.get( \"Position\" )\n  //     .then( ( response: any ) => {\n  //       return <Position[]> response;\n  //     } );\n  // }\n\n  // public async getById ( id: number ): Promise<Position> {\n  //   return await this.client.getById( \"Position\", id )\n  //     .then( ( response: Position ) => {\n  //       return response;\n  //     } );\n  // }\n\n  // public async create ( model: Position ): Promise<Position> {\n  //   return await this.client.create( \"Position\", model )\n  //     .then( ( response: any ) => {\n  //       return <Position> response;\n  //     } );\n  // }\n\n  // public async update ( model: Position ): Promise<void> {\n  //   return await this.client.updateById( \"Position\", model.id, null, model )\n  //     .then( () => null );\n  // }\n\n  public async getAllByPositionId(positionId: number): Promise<Result[]> {\n    return await this.client.get(`result/position/${positionId}`)\n      .then((response: any) => {\n        return <Result[]>response;\n      });\n  }\n\n  public async createToPosition(model: Result): Promise<Result> {\n    return await this.client.create(`result/position/${model.positionId}`, model)\n      .then((response: any) => {\n        return <Result>response;\n      });\n  }\n\n  public async getAllByOrganizationId(organizationId: number): Promise<Result[]> {\n    return await this.client.get(`result/organization/${organizationId}`)\n      .then((response: any) => {\n        return <Result[]>response;\n      });\n  }\n\n  public async createToOrganization(model: Result): Promise<Result> {\n    return await this.client.create(`result/organization/${model.organizationId}`, model)\n      .then((response: any) => {\n        return <Result>response;\n      });\n  }\n\n  public async getAllByPersonId(personId: number, activationId: number): Promise<Result[]> {\n    return await this.client.get(`result/person/${personId}/${activationId}`)\n      .then((response: any) => {\n        return <Result[]>response;\n      });\n  }\n\n  public async createToPerson(model: Result): Promise<Result> {\n    return await this.client.create(`result/person/${model.personId}/${model.activationId}`, model)\n      .then((response: any) => {\n        return <Result>response;\n      });\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DiscAdjective } from \"models/test-core/discAdjective\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\n\n@autoinject()\nexport class DiscAdjectiveService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n    this.logger = LogManager.getLogger(\"DiscAdjectiveService\");\n  }\n\n  public async getAll(): Promise<DiscAdjective[]> {\n    return await this.client.get(`DiscAdjective`)\n      .then((response: any) => {\n        return <DiscAdjective[]>response;\n      });\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { Questionary } from \"models/questionaries/questionary\";\n\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n@autoinject()\nexport class CustomCompanyModularQuestionaryService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"CustomCompanyModularQuestionaryService\");\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`customcompanymodularquestionary/list`, parameters)\n      .then(response => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n   public async getAll(): Promise<Questionary[]> {\n     return await this.client.get(\"customcompanymodularquestionary\")\n       .then(response => {\n         return <Questionary[]>response;\n      });\n   }\n\n  public async getById(id: number): Promise<Questionary> {\n    return await this.client.getById(\"customcompanymodularquestionary\", id)\n      .then(response => {\n        return <Questionary>response;\n      });\n  }\n\n  public async create(model: Questionary): Promise<Questionary> {\n    return await this.client.create(\"customcompanymodularquestionary\", model)\n      .then(response => {\n        return <Questionary>response;\n      });\n  }\n\n  public async update(model: Questionary): Promise<Questionary> {\n    return await this.client.updateById(\"customcompanymodularquestionary\", model.id, null, model)\n      .then(response => {\n        return <Questionary>response;\n      });\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(\"customcompanymodularquestionary\", id)\n      .then(() => null);\n  }\n\n  public async changeState(id: number): Promise<void> {\n    return await this.client.post(`customcompanymodularquestionary/change-state/${id}`)\n      .then(() => null);\n  }\n\n  public async createLogFile(questionaryId: number): Promise<boolean> {\n    return await this.client.post(`customcompanymodularquestionary/create-logfile/${questionaryId}`)\n      .then((response: boolean) => response);\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { CompanyDetail } from \"models/companies/company-detail\";\nimport { Plan } from \"models/plans/plan\";\n\n@autoinject\nexport class CompanyDetailService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"CompanyService\");\n  }\n\n  public async getDemoPlansByFranchiseId(franchiseId: number): Promise<Plan[]> {\n    return await this.client.get(`companydetail/get-demo-plans/${franchiseId}`)\n      .then((response: Plan[]) => {\n        return response;\n      })\n  }\n\n  public async getById(id: number): Promise<CompanyDetail> {\n    return await this.client.getById(\"companydetail\", id)\n      .then((response: any) => {\n        return <CompanyDetail>response;\n      });\n  }\n\n  public async create(model: CompanyDetail): Promise<CompanyDetail> {\n    return await this.client.create(\"companydetail\", model)\n      .then((response: any) => {\n        return <CompanyDetail>response;\n      });\n  }\n\n  public async update(model: CompanyDetail): Promise<CompanyDetail> {\n    return await this.client.updateById(\"companydetail\", model.id, null, model)\n    .then((response: any) => {\n      return <CompanyDetail>response;\n    });\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(\"companydetail\", id)\n      .then(() => null);\n  }\n\n  public async changeState(id: number): Promise<void> {    \n    return await this.client.post(`companydetail/change-state/${id}`)\n      .then(() => null);\n  }\n\n}\n","export enum QuestionInteractionType {\n  Microstory,\n  ActionRanking,\n  EventReconstruction,\n  IllustratedDialogue,\n  SingleChoiceList,\n  IconSlider,\n  IconicScale,\n  Meteogram,\n  SemanticDifferential,\n  DragChips\n}\n","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\nimport { PLATFORM, DOM } from 'aurelia-pal';\n\nexport function json(body, replacer) {\n  return JSON.stringify(body !== undefined ? body : {}, replacer);\n}\n\nexport var retryStrategy = {\n  fixed: 0,\n  incremental: 1,\n  exponential: 2,\n  random: 3\n};\n\nvar defaultRetryConfig = {\n  maxRetries: 3,\n  interval: 1000,\n  strategy: retryStrategy.fixed\n};\n\nexport var RetryInterceptor = function () {\n  function RetryInterceptor(retryConfig) {\n    \n\n    this.retryConfig = Object.assign({}, defaultRetryConfig, retryConfig || {});\n\n    if (this.retryConfig.strategy === retryStrategy.exponential && this.retryConfig.interval <= 1000) {\n      throw new Error('An interval less than or equal to 1 second is not allowed when using the exponential retry strategy');\n    }\n  }\n\n  RetryInterceptor.prototype.request = function (_request) {\n    function request(_x) {\n      return _request.apply(this, arguments);\n    }\n\n    request.toString = function () {\n      return _request.toString();\n    };\n\n    return request;\n  }(function (request) {\n    if (!request.retryConfig) {\n      request.retryConfig = Object.assign({}, this.retryConfig);\n      request.retryConfig.counter = 0;\n    }\n\n    request.retryConfig.requestClone = request.clone();\n\n    return request;\n  });\n\n  RetryInterceptor.prototype.response = function (_response) {\n    function response(_x2, _x3) {\n      return _response.apply(this, arguments);\n    }\n\n    response.toString = function () {\n      return _response.toString();\n    };\n\n    return response;\n  }(function (response, request) {\n    delete request.retryConfig;\n    return response;\n  });\n\n  RetryInterceptor.prototype.responseError = function responseError(error, request, httpClient) {\n    var retryConfig = request.retryConfig;\n    var requestClone = retryConfig.requestClone;\n\n    return Promise.resolve().then(function () {\n      if (retryConfig.counter < retryConfig.maxRetries) {\n        var result = retryConfig.doRetry ? retryConfig.doRetry(error, request) : true;\n\n        return Promise.resolve(result).then(function (doRetry) {\n          if (doRetry) {\n            retryConfig.counter++;\n            return new Promise(function (resolve) {\n              return PLATFORM.global.setTimeout(resolve, calculateDelay(retryConfig) || 0);\n            }).then(function () {\n              var newRequest = requestClone.clone();\n              if (typeof retryConfig.beforeRetry === 'function') {\n                return retryConfig.beforeRetry(newRequest, httpClient);\n              }\n              return newRequest;\n            }).then(function (newRequest) {\n              return httpClient.fetch(Object.assign(newRequest, { retryConfig: retryConfig }));\n            });\n          }\n\n          delete request.retryConfig;\n          throw error;\n        });\n      }\n\n      delete request.retryConfig;\n      throw error;\n    });\n  };\n\n  return RetryInterceptor;\n}();\n\nfunction calculateDelay(retryConfig) {\n  var interval = retryConfig.interval,\n      strategy = retryConfig.strategy,\n      minRandomInterval = retryConfig.minRandomInterval,\n      maxRandomInterval = retryConfig.maxRandomInterval,\n      counter = retryConfig.counter;\n\n\n  if (typeof strategy === 'function') {\n    return retryConfig.strategy(counter);\n  }\n\n  switch (strategy) {\n    case retryStrategy.fixed:\n      return retryStrategies[retryStrategy.fixed](interval);\n    case retryStrategy.incremental:\n      return retryStrategies[retryStrategy.incremental](counter, interval);\n    case retryStrategy.exponential:\n      return retryStrategies[retryStrategy.exponential](counter, interval);\n    case retryStrategy.random:\n      return retryStrategies[retryStrategy.random](counter, interval, minRandomInterval, maxRandomInterval);\n    default:\n      throw new Error('Unrecognized retry strategy');\n  }\n}\n\nvar retryStrategies = [function (interval) {\n  return interval;\n}, function (retryCount, interval) {\n  return interval * retryCount;\n}, function (retryCount, interval) {\n  return retryCount === 1 ? interval : Math.pow(interval, retryCount) / 1000;\n}, function (retryCount, interval) {\n  var minRandomInterval = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n  var maxRandomInterval = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 60000;\n\n  return Math.random() * (maxRandomInterval - minRandomInterval) + minRandomInterval;\n}];\n\nexport var HttpClientConfiguration = function () {\n  function HttpClientConfiguration() {\n    \n\n    this.baseUrl = '';\n    this.defaults = {};\n    this.interceptors = [];\n  }\n\n  HttpClientConfiguration.prototype.withBaseUrl = function withBaseUrl(baseUrl) {\n    this.baseUrl = baseUrl;\n    return this;\n  };\n\n  HttpClientConfiguration.prototype.withDefaults = function withDefaults(defaults) {\n    this.defaults = defaults;\n    return this;\n  };\n\n  HttpClientConfiguration.prototype.withInterceptor = function withInterceptor(interceptor) {\n    this.interceptors.push(interceptor);\n    return this;\n  };\n\n  HttpClientConfiguration.prototype.useStandardConfiguration = function useStandardConfiguration() {\n    var standardConfig = { credentials: 'same-origin' };\n    Object.assign(this.defaults, standardConfig, this.defaults);\n    return this.rejectErrorResponses();\n  };\n\n  HttpClientConfiguration.prototype.rejectErrorResponses = function rejectErrorResponses() {\n    return this.withInterceptor({ response: rejectOnError });\n  };\n\n  HttpClientConfiguration.prototype.withRetry = function withRetry(config) {\n    var interceptor = new RetryInterceptor(config);\n\n    return this.withInterceptor(interceptor);\n  };\n\n  return HttpClientConfiguration;\n}();\n\nfunction rejectOnError(response) {\n  if (!response.ok) {\n    throw response;\n  }\n\n  return response;\n}\n\nexport var HttpClient = function () {\n  function HttpClient() {\n    \n\n    this.activeRequestCount = 0;\n    this.isRequesting = false;\n    this.isConfigured = false;\n    this.baseUrl = '';\n    this.defaults = null;\n    this.interceptors = [];\n\n    if (typeof fetch === 'undefined') {\n      throw new Error('HttpClient requires a Fetch API implementation, but the current environment doesn\\'t support it. You may need to load a polyfill such as https://github.com/github/fetch');\n    }\n  }\n\n  HttpClient.prototype.configure = function configure(config) {\n    var normalizedConfig = void 0;\n\n    if ((typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object') {\n      normalizedConfig = { defaults: config };\n    } else if (typeof config === 'function') {\n      normalizedConfig = new HttpClientConfiguration();\n      normalizedConfig.baseUrl = this.baseUrl;\n      normalizedConfig.defaults = Object.assign({}, this.defaults);\n      normalizedConfig.interceptors = this.interceptors;\n\n      var c = config(normalizedConfig);\n      if (HttpClientConfiguration.prototype.isPrototypeOf(c)) {\n        normalizedConfig = c;\n      }\n    } else {\n      throw new Error('invalid config');\n    }\n\n    var defaults = normalizedConfig.defaults;\n    if (defaults && Headers.prototype.isPrototypeOf(defaults.headers)) {\n      throw new Error('Default headers must be a plain object.');\n    }\n\n    var interceptors = normalizedConfig.interceptors;\n\n    if (interceptors && interceptors.length) {\n      if (interceptors.filter(function (x) {\n        return RetryInterceptor.prototype.isPrototypeOf(x);\n      }).length > 1) {\n        throw new Error('Only one RetryInterceptor is allowed.');\n      }\n\n      var retryInterceptorIndex = interceptors.findIndex(function (x) {\n        return RetryInterceptor.prototype.isPrototypeOf(x);\n      });\n\n      if (retryInterceptorIndex >= 0 && retryInterceptorIndex !== interceptors.length - 1) {\n        throw new Error('The retry interceptor must be the last interceptor defined.');\n      }\n    }\n\n    this.baseUrl = normalizedConfig.baseUrl;\n    this.defaults = defaults;\n    this.interceptors = normalizedConfig.interceptors || [];\n    this.isConfigured = true;\n\n    return this;\n  };\n\n  HttpClient.prototype.fetch = function (_fetch) {\n    function fetch(_x6, _x7) {\n      return _fetch.apply(this, arguments);\n    }\n\n    fetch.toString = function () {\n      return _fetch.toString();\n    };\n\n    return fetch;\n  }(function (input, init) {\n    var _this = this;\n\n    trackRequestStart.call(this);\n\n    var request = this.buildRequest(input, init);\n    return processRequest(request, this.interceptors, this).then(function (result) {\n      var response = null;\n\n      if (Response.prototype.isPrototypeOf(result)) {\n        response = Promise.resolve(result);\n      } else if (Request.prototype.isPrototypeOf(result)) {\n        request = result;\n        response = fetch(result);\n      } else {\n        throw new Error('An invalid result was returned by the interceptor chain. Expected a Request or Response instance, but got [' + result + ']');\n      }\n\n      return processResponse(response, _this.interceptors, request, _this);\n    }).then(function (result) {\n      if (Request.prototype.isPrototypeOf(result)) {\n        return _this.fetch(result);\n      }\n      trackRequestEnd.call(_this);\n      return result;\n    });\n  });\n\n  HttpClient.prototype.buildRequest = function buildRequest(input, init) {\n    var defaults = this.defaults || {};\n    var request = void 0;\n    var body = void 0;\n    var requestContentType = void 0;\n\n    var parsedDefaultHeaders = parseHeaderValues(defaults.headers);\n    if (Request.prototype.isPrototypeOf(input)) {\n      request = input;\n      requestContentType = new Headers(request.headers).get('Content-Type');\n    } else {\n      init || (init = {});\n      body = init.body;\n      var bodyObj = body ? { body: body } : null;\n      var requestInit = Object.assign({}, defaults, { headers: {} }, init, bodyObj);\n      requestContentType = new Headers(requestInit.headers).get('Content-Type');\n      request = new Request(getRequestUrl(this.baseUrl, input), requestInit);\n    }\n    if (!requestContentType) {\n      if (new Headers(parsedDefaultHeaders).has('content-type')) {\n        request.headers.set('Content-Type', new Headers(parsedDefaultHeaders).get('content-type'));\n      } else if (body && isJSON(body)) {\n        request.headers.set('Content-Type', 'application/json');\n      }\n    }\n    setDefaultHeaders(request.headers, parsedDefaultHeaders);\n    if (body && Blob.prototype.isPrototypeOf(body) && body.type) {\n      request.headers.set('Content-Type', body.type);\n    }\n    return request;\n  };\n\n  HttpClient.prototype.get = function get(input, init) {\n    return this.fetch(input, init);\n  };\n\n  HttpClient.prototype.post = function post(input, body, init) {\n    return callFetch.call(this, input, body, init, 'post');\n  };\n\n  HttpClient.prototype.put = function put(input, body, init) {\n    return callFetch.call(this, input, body, init, 'put');\n  };\n\n  HttpClient.prototype.patch = function patch(input, body, init) {\n    return callFetch.call(this, input, body, init, 'patch');\n  };\n\n  HttpClient.prototype.delete = function _delete(input, body, init) {\n    return callFetch.call(this, input, body, init, 'delete');\n  };\n\n  return HttpClient;\n}();\n\nvar absoluteUrlRegexp = /^([a-z][a-z0-9+\\-.]*:)?\\/\\//i;\n\nfunction trackRequestStart() {\n  this.isRequesting = !!++this.activeRequestCount;\n}\n\nfunction trackRequestEnd() {\n  this.isRequesting = !! --this.activeRequestCount;\n  if (!this.isRequesting) {\n    var evt = DOM.createCustomEvent('aurelia-fetch-client-requests-drained', { bubbles: true, cancelable: true });\n    setTimeout(function () {\n      return DOM.dispatchEvent(evt);\n    }, 1);\n  }\n}\n\nfunction parseHeaderValues(headers) {\n  var parsedHeaders = {};\n  for (var name in headers || {}) {\n    if (headers.hasOwnProperty(name)) {\n      parsedHeaders[name] = typeof headers[name] === 'function' ? headers[name]() : headers[name];\n    }\n  }\n  return parsedHeaders;\n}\n\nfunction getRequestUrl(baseUrl, url) {\n  if (absoluteUrlRegexp.test(url)) {\n    return url;\n  }\n\n  return (baseUrl || '') + url;\n}\n\nfunction setDefaultHeaders(headers, defaultHeaders) {\n  for (var name in defaultHeaders || {}) {\n    if (defaultHeaders.hasOwnProperty(name) && !headers.has(name)) {\n      headers.set(name, defaultHeaders[name]);\n    }\n  }\n}\n\nfunction processRequest(request, interceptors, http) {\n  return applyInterceptors(request, interceptors, 'request', 'requestError', http);\n}\n\nfunction processResponse(response, interceptors, request, http) {\n  return applyInterceptors(response, interceptors, 'response', 'responseError', request, http);\n}\n\nfunction applyInterceptors(input, interceptors, successName, errorName) {\n  for (var _len = arguments.length, interceptorArgs = Array(_len > 4 ? _len - 4 : 0), _key = 4; _key < _len; _key++) {\n    interceptorArgs[_key - 4] = arguments[_key];\n  }\n\n  return (interceptors || []).reduce(function (chain, interceptor) {\n    var successHandler = interceptor[successName];\n    var errorHandler = interceptor[errorName];\n\n    return chain.then(successHandler && function (value) {\n      return successHandler.call.apply(successHandler, [interceptor, value].concat(interceptorArgs));\n    } || identity, errorHandler && function (reason) {\n      return errorHandler.call.apply(errorHandler, [interceptor, reason].concat(interceptorArgs));\n    } || thrower);\n  }, Promise.resolve(input));\n}\n\nfunction isJSON(str) {\n  try {\n    JSON.parse(str);\n  } catch (err) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction identity(x) {\n  return x;\n}\n\nfunction thrower(x) {\n  throw x;\n}\n\nfunction callFetch(input, body, init, method) {\n  if (!init) {\n    init = {};\n  }\n  init.method = method;\n  if (body) {\n    init.body = body;\n  }\n  return this.fetch(input, init);\n}","import { Company } from \"models/companies/company\";\n\nexport class CompanyEditedMessage {\n  constructor(\n    public company: Company) { }\n}\n\n","export class CompaniesLoadedMessage {\n}\n","var defaultClientUri = 'https://localhost:9000';\r\nvar default_1 = (function () {\r\n    function default_1(dto) {\r\n        var _this = this;\r\n        this._loginRedirectRoute = '/';\r\n        this._logoutRedirectRoute = '/';\r\n        this._unauthorizedRedirectRoute = '/';\r\n        this._logLevel = 0;\r\n        this._userManagerSettings = {\r\n            authority: 'https://localhost:5000',\r\n            client_id: 'Aurelia.OpenIdConnect',\r\n            loadUserInfo: true,\r\n            post_logout_redirect_uri: defaultClientUri + \"/signout-oidc\",\r\n            redirect_uri: defaultClientUri + \"/signin-oidc\",\r\n            response_type: 'id_token token',\r\n            scope: 'openid email roles profile',\r\n            silent_redirect_uri: defaultClientUri + \"/signin-oidc\",\r\n        };\r\n        if (!dto) {\r\n            return;\r\n        }\r\n        Object.keys(dto)\r\n            .filter(function (key) { return dto[key] !== undefined && dto[key] !== null; })\r\n            .forEach(function (key) {\r\n            _this.ensureRouteValueBeginsWithSlash(key, dto[key]);\r\n            _this['_' + key] = dto[key];\r\n        });\r\n        if (!dto.userManagerSettings) {\r\n            return;\r\n        }\r\n        Object.keys(dto.userManagerSettings).forEach(function (k) {\r\n            _this.userManagerSettings[k] = dto.userManagerSettings[k];\r\n        });\r\n    }\r\n    Object.defineProperty(default_1.prototype, \"loginRedirectRoute\", {\r\n        get: function () {\r\n            return this._loginRedirectRoute;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(default_1.prototype, \"logoutRedirectRoute\", {\r\n        get: function () {\r\n            return this._logoutRedirectRoute;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(default_1.prototype, \"unauthorizedRedirectRoute\", {\r\n        get: function () {\r\n            return this._unauthorizedRedirectRoute;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(default_1.prototype, \"logLevel\", {\r\n        get: function () {\r\n            return this._logLevel;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(default_1.prototype, \"userManagerSettings\", {\r\n        get: function () {\r\n            return this._userManagerSettings;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(default_1.prototype, \"redirectUri\", {\r\n        get: function () {\r\n            return this._userManagerSettings.redirect_uri;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(default_1.prototype, \"postLogoutRedirectUri\", {\r\n        get: function () {\r\n            return this._userManagerSettings.post_logout_redirect_uri;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    default_1.prototype.ensureRouteValueBeginsWithSlash = function (key, val) {\r\n        if (key.endsWith('Route') && !val.startsWith('/')) {\r\n            var message = \"The configured \\\"\" + key + \"\\\" must begin with a slash\";\r\n            throw new RangeError(message);\r\n        }\r\n    };\r\n    return default_1;\r\n}());\r\nexport default default_1;\r\n//# sourceMappingURL=open-id-connect-configuration-manager.js.map","import { Log } from 'oidc-client';\r\nvar OpenIdConnectLogger = (function () {\r\n    function OpenIdConnectLogger(level) {\r\n        this._level = Log.NONE;\r\n        if (level !== null && level !== undefined) {\r\n            this.setLogLevel(level);\r\n        }\r\n    }\r\n    Object.defineProperty(OpenIdConnectLogger.prototype, \"level\", {\r\n        get: function () {\r\n            return this._level;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    OpenIdConnectLogger.prototype.debug = function (msg) {\r\n        if (this.level >= Log.DEBUG) {\r\n            console.debug(\"DEBUG [OpenIdConnect] \" + msg);\r\n        }\r\n    };\r\n    OpenIdConnectLogger.prototype.info = function (msg) {\r\n        if (this.level >= Log.INFO) {\r\n            console.info(\"INFO [OpenIdConnect] \" + msg);\r\n        }\r\n    };\r\n    OpenIdConnectLogger.prototype.warn = function (msg) {\r\n        if (this.level >= Log.WARN) {\r\n            console.warn(\"WARN [OpenIdConnect] \" + msg);\r\n        }\r\n    };\r\n    OpenIdConnectLogger.prototype.error = function (msg) {\r\n        if (this.level >= Log.ERROR) {\r\n            console.error(\"ERROR [OpenIdConnect] \" + msg);\r\n        }\r\n    };\r\n    OpenIdConnectLogger.prototype.setLogLevel = function (level) {\r\n        var validOidcClientLevels = [\r\n            Log.DEBUG,\r\n            Log.INFO,\r\n            Log.WARN,\r\n            Log.ERROR,\r\n            Log.NONE,\r\n        ];\r\n        if (!validOidcClientLevels.includes(level)) {\r\n            var levels = validOidcClientLevels.join(', ');\r\n            var msg = \"The log level must be one of \" + levels;\r\n            throw new RangeError(msg);\r\n        }\r\n        this._level = level;\r\n        Log.level = level;\r\n        Log.logger = console;\r\n    };\r\n    return OpenIdConnectLogger;\r\n}());\r\nexport default OpenIdConnectLogger;\r\n//# sourceMappingURL=open-id-connect-logger.js.map","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _class, _temp, _dec, _class2, _dec2, _class3, _dec3, _class4, _dec4, _class5, _dec5, _class6, _dec6, _class7, _class8, _temp2, _class9, _temp3, _class11, _dec7, _class13, _dec8, _class14, _class15, _temp4, _dec9, _class16, _dec10, _class17, _dec11, _class18;\n\n\n\nimport * as LogManager from 'aurelia-logging';\nimport { metadata, Origin, protocol } from 'aurelia-metadata';\nimport { DOM, PLATFORM, FEATURE } from 'aurelia-pal';\nimport { TemplateRegistryEntry, Loader } from 'aurelia-loader';\nimport { relativeToFile } from 'aurelia-path';\nimport { Scope, Expression, ValueConverterResource, BindingBehaviorResource, camelCase, Binding, createOverrideContext, subscriberCollection, bindingMode, ObserverLocator, EventManager } from 'aurelia-binding';\nimport { Container, resolver, inject } from 'aurelia-dependency-injection';\nimport { TaskQueue } from 'aurelia-task-queue';\n\nexport var animationEvent = {\n  enterBegin: 'animation:enter:begin',\n  enterActive: 'animation:enter:active',\n  enterDone: 'animation:enter:done',\n  enterTimeout: 'animation:enter:timeout',\n\n  leaveBegin: 'animation:leave:begin',\n  leaveActive: 'animation:leave:active',\n  leaveDone: 'animation:leave:done',\n  leaveTimeout: 'animation:leave:timeout',\n\n  staggerNext: 'animation:stagger:next',\n\n  removeClassBegin: 'animation:remove-class:begin',\n  removeClassActive: 'animation:remove-class:active',\n  removeClassDone: 'animation:remove-class:done',\n  removeClassTimeout: 'animation:remove-class:timeout',\n\n  addClassBegin: 'animation:add-class:begin',\n  addClassActive: 'animation:add-class:active',\n  addClassDone: 'animation:add-class:done',\n  addClassTimeout: 'animation:add-class:timeout',\n\n  animateBegin: 'animation:animate:begin',\n  animateActive: 'animation:animate:active',\n  animateDone: 'animation:animate:done',\n  animateTimeout: 'animation:animate:timeout',\n\n  sequenceBegin: 'animation:sequence:begin',\n  sequenceDone: 'animation:sequence:done'\n};\n\nexport var Animator = function () {\n  function Animator() {\n    \n  }\n\n  Animator.prototype.enter = function enter(element) {\n    return Promise.resolve(false);\n  };\n\n  Animator.prototype.leave = function leave(element) {\n    return Promise.resolve(false);\n  };\n\n  Animator.prototype.removeClass = function removeClass(element, className) {\n    element.classList.remove(className);\n    return Promise.resolve(false);\n  };\n\n  Animator.prototype.addClass = function addClass(element, className) {\n    element.classList.add(className);\n    return Promise.resolve(false);\n  };\n\n  Animator.prototype.animate = function animate(element, className) {\n    return Promise.resolve(false);\n  };\n\n  Animator.prototype.runSequence = function runSequence(animations) {};\n\n  Animator.prototype.registerEffect = function registerEffect(effectName, properties) {};\n\n  Animator.prototype.unregisterEffect = function unregisterEffect(effectName) {};\n\n  return Animator;\n}();\n\nexport var CompositionTransactionNotifier = function () {\n  function CompositionTransactionNotifier(owner) {\n    \n\n    this.owner = owner;\n    this.owner._compositionCount++;\n  }\n\n  CompositionTransactionNotifier.prototype.done = function done() {\n    this.owner._compositionCount--;\n    this.owner._tryCompleteTransaction();\n  };\n\n  return CompositionTransactionNotifier;\n}();\n\nexport var CompositionTransactionOwnershipToken = function () {\n  function CompositionTransactionOwnershipToken(owner) {\n    \n\n    this.owner = owner;\n    this.owner._ownershipToken = this;\n    this.thenable = this._createThenable();\n  }\n\n  CompositionTransactionOwnershipToken.prototype.waitForCompositionComplete = function waitForCompositionComplete() {\n    this.owner._tryCompleteTransaction();\n    return this.thenable;\n  };\n\n  CompositionTransactionOwnershipToken.prototype.resolve = function resolve() {\n    this._resolveCallback();\n  };\n\n  CompositionTransactionOwnershipToken.prototype._createThenable = function _createThenable() {\n    var _this = this;\n\n    return new Promise(function (resolve, reject) {\n      _this._resolveCallback = resolve;\n    });\n  };\n\n  return CompositionTransactionOwnershipToken;\n}();\n\nexport var CompositionTransaction = function () {\n  function CompositionTransaction() {\n    \n\n    this._ownershipToken = null;\n    this._compositionCount = 0;\n  }\n\n  CompositionTransaction.prototype.tryCapture = function tryCapture() {\n    return this._ownershipToken === null ? new CompositionTransactionOwnershipToken(this) : null;\n  };\n\n  CompositionTransaction.prototype.enlist = function enlist() {\n    return new CompositionTransactionNotifier(this);\n  };\n\n  CompositionTransaction.prototype._tryCompleteTransaction = function _tryCompleteTransaction() {\n    if (this._compositionCount <= 0) {\n      this._compositionCount = 0;\n\n      if (this._ownershipToken !== null) {\n        var token = this._ownershipToken;\n        this._ownershipToken = null;\n        token.resolve();\n      }\n    }\n  };\n\n  return CompositionTransaction;\n}();\n\nvar capitalMatcher = /([A-Z])/g;\n\nfunction addHyphenAndLower(char) {\n  return '-' + char.toLowerCase();\n}\n\nexport function _hyphenate(name) {\n  return (name.charAt(0).toLowerCase() + name.slice(1)).replace(capitalMatcher, addHyphenAndLower);\n}\n\nexport function _isAllWhitespace(node) {\n  return !(node.auInterpolationTarget || /[^\\t\\n\\r ]/.test(node.textContent));\n}\n\nexport var ViewEngineHooksResource = function () {\n  function ViewEngineHooksResource() {\n    \n  }\n\n  ViewEngineHooksResource.prototype.initialize = function initialize(container, target) {\n    this.instance = container.get(target);\n  };\n\n  ViewEngineHooksResource.prototype.register = function register(registry, name) {\n    registry.registerViewEngineHooks(this.instance);\n  };\n\n  ViewEngineHooksResource.prototype.load = function load(container, target) {};\n\n  ViewEngineHooksResource.convention = function convention(name) {\n    if (name.endsWith('ViewEngineHooks')) {\n      return new ViewEngineHooksResource();\n    }\n  };\n\n  return ViewEngineHooksResource;\n}();\n\nexport function viewEngineHooks(target) {\n  var deco = function deco(t) {\n    metadata.define(metadata.resource, new ViewEngineHooksResource(), t);\n  };\n\n  return target ? deco(target) : deco;\n}\n\nexport var ElementEvents = function () {\n  function ElementEvents(element) {\n    \n\n    this.element = element;\n    this.subscriptions = {};\n  }\n\n  ElementEvents.prototype._enqueueHandler = function _enqueueHandler(handler) {\n    this.subscriptions[handler.eventName] = this.subscriptions[handler.eventName] || [];\n    this.subscriptions[handler.eventName].push(handler);\n  };\n\n  ElementEvents.prototype._dequeueHandler = function _dequeueHandler(handler) {\n    var index = void 0;\n    var subscriptions = this.subscriptions[handler.eventName];\n    if (subscriptions) {\n      index = subscriptions.indexOf(handler);\n      if (index > -1) {\n        subscriptions.splice(index, 1);\n      }\n    }\n    return handler;\n  };\n\n  ElementEvents.prototype.publish = function publish(eventName) {\n    var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var bubbles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n    var cancelable = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n    var event = DOM.createCustomEvent(eventName, { cancelable: cancelable, bubbles: bubbles, detail: detail });\n    this.element.dispatchEvent(event);\n  };\n\n  ElementEvents.prototype.subscribe = function subscribe(eventName, handler) {\n    var captureOrOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n    if (typeof handler === 'function') {\n      var eventHandler = new EventHandlerImpl(this, eventName, handler, captureOrOptions, false);\n      return eventHandler;\n    }\n\n    return undefined;\n  };\n\n  ElementEvents.prototype.subscribeOnce = function subscribeOnce(eventName, handler) {\n    var captureOrOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n    if (typeof handler === 'function') {\n      var eventHandler = new EventHandlerImpl(this, eventName, handler, captureOrOptions, true);\n      return eventHandler;\n    }\n\n    return undefined;\n  };\n\n  ElementEvents.prototype.dispose = function dispose(eventName) {\n    if (eventName && typeof eventName === 'string') {\n      var subscriptions = this.subscriptions[eventName];\n      if (subscriptions) {\n        while (subscriptions.length) {\n          var subscription = subscriptions.pop();\n          if (subscription) {\n            subscription.dispose();\n          }\n        }\n      }\n    } else {\n      this.disposeAll();\n    }\n  };\n\n  ElementEvents.prototype.disposeAll = function disposeAll() {\n    for (var _key in this.subscriptions) {\n      this.dispose(_key);\n    }\n  };\n\n  return ElementEvents;\n}();\n\nvar EventHandlerImpl = function () {\n  function EventHandlerImpl(owner, eventName, handler, captureOrOptions, once) {\n    \n\n    this.owner = owner;\n    this.eventName = eventName;\n    this.handler = handler;\n\n    this.capture = typeof captureOrOptions === 'boolean' ? captureOrOptions : captureOrOptions.capture;\n    this.bubbles = !this.capture;\n    this.captureOrOptions = captureOrOptions;\n    this.once = once;\n    owner.element.addEventListener(eventName, this, captureOrOptions);\n    owner._enqueueHandler(this);\n  }\n\n  EventHandlerImpl.prototype.handleEvent = function handleEvent(e) {\n    var fn = this.handler;\n    fn(e);\n    if (this.once) {\n      this.dispose();\n    }\n  };\n\n  EventHandlerImpl.prototype.dispose = function dispose() {\n    this.owner.element.removeEventListener(this.eventName, this, this.captureOrOptions);\n    this.owner._dequeueHandler(this);\n    this.owner = this.handler = null;\n  };\n\n  return EventHandlerImpl;\n}();\n\nexport var ResourceLoadContext = function () {\n  function ResourceLoadContext() {\n    \n\n    this.dependencies = {};\n  }\n\n  ResourceLoadContext.prototype.addDependency = function addDependency(url) {\n    this.dependencies[url] = true;\n  };\n\n  ResourceLoadContext.prototype.hasDependency = function hasDependency(url) {\n    return url in this.dependencies;\n  };\n\n  return ResourceLoadContext;\n}();\n\nexport var ViewCompileInstruction = function ViewCompileInstruction() {\n  var targetShadowDOM = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n  var compileSurrogate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  \n\n  this.targetShadowDOM = targetShadowDOM;\n  this.compileSurrogate = compileSurrogate;\n  this.associatedModuleId = null;\n};\n\nViewCompileInstruction.normal = new ViewCompileInstruction();\n\nexport var BehaviorInstruction = function () {\n  function BehaviorInstruction() {\n    \n  }\n\n  BehaviorInstruction.enhance = function enhance() {\n    var instruction = new BehaviorInstruction();\n    instruction.enhance = true;\n    return instruction;\n  };\n\n  BehaviorInstruction.unitTest = function unitTest(type, attributes) {\n    var instruction = new BehaviorInstruction();\n    instruction.type = type;\n    instruction.attributes = attributes || {};\n    return instruction;\n  };\n\n  BehaviorInstruction.element = function element(node, type) {\n    var instruction = new BehaviorInstruction();\n    instruction.type = type;\n    instruction.attributes = {};\n    instruction.anchorIsContainer = !(node.hasAttribute('containerless') || type.containerless);\n    instruction.initiatedByBehavior = true;\n    return instruction;\n  };\n\n  BehaviorInstruction.attribute = function attribute(attrName, type) {\n    var instruction = new BehaviorInstruction();\n    instruction.attrName = attrName;\n    instruction.type = type || null;\n    instruction.attributes = {};\n    return instruction;\n  };\n\n  BehaviorInstruction.dynamic = function dynamic(host, viewModel, viewFactory) {\n    var instruction = new BehaviorInstruction();\n    instruction.host = host;\n    instruction.viewModel = viewModel;\n    instruction.viewFactory = viewFactory;\n    instruction.inheritBindingContext = true;\n    return instruction;\n  };\n\n  return BehaviorInstruction;\n}();\n\nvar biProto = BehaviorInstruction.prototype;\nbiProto.initiatedByBehavior = false;\nbiProto.enhance = false;\nbiProto.partReplacements = null;\nbiProto.viewFactory = null;\nbiProto.originalAttrName = null;\nbiProto.skipContentProcessing = false;\nbiProto.contentFactory = null;\nbiProto.viewModel = null;\nbiProto.anchorIsContainer = false;\nbiProto.host = null;\nbiProto.attributes = null;\nbiProto.type = null;\nbiProto.attrName = null;\nbiProto.inheritBindingContext = false;\n\nBehaviorInstruction.normal = new BehaviorInstruction();\n\nexport var TargetInstruction = (_temp = _class = function () {\n  function TargetInstruction() {\n    \n  }\n\n  TargetInstruction.shadowSlot = function shadowSlot(parentInjectorId) {\n    var instruction = new TargetInstruction();\n    instruction.parentInjectorId = parentInjectorId;\n    instruction.shadowSlot = true;\n    return instruction;\n  };\n\n  TargetInstruction.contentExpression = function contentExpression(expression) {\n    var instruction = new TargetInstruction();\n    instruction.contentExpression = expression;\n    return instruction;\n  };\n\n  TargetInstruction.letElement = function letElement(expressions) {\n    var instruction = new TargetInstruction();\n    instruction.expressions = expressions;\n    instruction.letElement = true;\n    return instruction;\n  };\n\n  TargetInstruction.lifting = function lifting(parentInjectorId, liftingInstruction) {\n    var instruction = new TargetInstruction();\n    instruction.parentInjectorId = parentInjectorId;\n    instruction.expressions = TargetInstruction.noExpressions;\n    instruction.behaviorInstructions = [liftingInstruction];\n    instruction.viewFactory = liftingInstruction.viewFactory;\n    instruction.providers = [liftingInstruction.type.target];\n    instruction.lifting = true;\n    return instruction;\n  };\n\n  TargetInstruction.normal = function normal(injectorId, parentInjectorId, providers, behaviorInstructions, expressions, elementInstruction) {\n    var instruction = new TargetInstruction();\n    instruction.injectorId = injectorId;\n    instruction.parentInjectorId = parentInjectorId;\n    instruction.providers = providers;\n    instruction.behaviorInstructions = behaviorInstructions;\n    instruction.expressions = expressions;\n    instruction.anchorIsContainer = elementInstruction ? elementInstruction.anchorIsContainer : true;\n    instruction.elementInstruction = elementInstruction;\n    return instruction;\n  };\n\n  TargetInstruction.surrogate = function surrogate(providers, behaviorInstructions, expressions, values) {\n    var instruction = new TargetInstruction();\n    instruction.expressions = expressions;\n    instruction.behaviorInstructions = behaviorInstructions;\n    instruction.providers = providers;\n    instruction.values = values;\n    return instruction;\n  };\n\n  return TargetInstruction;\n}(), _class.noExpressions = Object.freeze([]), _temp);\n\nvar tiProto = TargetInstruction.prototype;\n\ntiProto.injectorId = null;\ntiProto.parentInjectorId = null;\n\ntiProto.shadowSlot = false;\ntiProto.slotName = null;\ntiProto.slotFallbackFactory = null;\n\ntiProto.contentExpression = null;\ntiProto.letElement = false;\n\ntiProto.expressions = null;\ntiProto.expressions = null;\ntiProto.providers = null;\n\ntiProto.viewFactory = null;\n\ntiProto.anchorIsContainer = false;\ntiProto.elementInstruction = null;\ntiProto.lifting = false;\n\ntiProto.values = null;\n\nexport var viewStrategy = protocol.create('aurelia:view-strategy', {\n  validate: function validate(target) {\n    if (!(typeof target.loadViewFactory === 'function')) {\n      return 'View strategies must implement: loadViewFactory(viewEngine: ViewEngine, compileInstruction: ViewCompileInstruction, loadContext?: ResourceLoadContext): Promise<ViewFactory>';\n    }\n\n    return true;\n  },\n  compose: function compose(target) {\n    if (!(typeof target.makeRelativeTo === 'function')) {\n      target.makeRelativeTo = PLATFORM.noop;\n    }\n  }\n});\n\nexport var RelativeViewStrategy = (_dec = viewStrategy(), _dec(_class2 = function () {\n  function RelativeViewStrategy(path) {\n    \n\n    this.path = path;\n    this.absolutePath = null;\n  }\n\n  RelativeViewStrategy.prototype.loadViewFactory = function loadViewFactory(viewEngine, compileInstruction, loadContext, target) {\n    if (this.absolutePath === null && this.moduleId) {\n      this.absolutePath = relativeToFile(this.path, this.moduleId);\n    }\n\n    compileInstruction.associatedModuleId = this.moduleId;\n    return viewEngine.loadViewFactory(this.absolutePath || this.path, compileInstruction, loadContext, target);\n  };\n\n  RelativeViewStrategy.prototype.makeRelativeTo = function makeRelativeTo(file) {\n    if (this.absolutePath === null) {\n      this.absolutePath = relativeToFile(this.path, file);\n    }\n  };\n\n  return RelativeViewStrategy;\n}()) || _class2);\n\nexport var ConventionalViewStrategy = (_dec2 = viewStrategy(), _dec2(_class3 = function () {\n  function ConventionalViewStrategy(viewLocator, origin) {\n    \n\n    this.moduleId = origin.moduleId;\n    this.viewUrl = viewLocator.convertOriginToViewUrl(origin);\n  }\n\n  ConventionalViewStrategy.prototype.loadViewFactory = function loadViewFactory(viewEngine, compileInstruction, loadContext, target) {\n    compileInstruction.associatedModuleId = this.moduleId;\n    return viewEngine.loadViewFactory(this.viewUrl, compileInstruction, loadContext, target);\n  };\n\n  return ConventionalViewStrategy;\n}()) || _class3);\n\nexport var NoViewStrategy = (_dec3 = viewStrategy(), _dec3(_class4 = function () {\n  function NoViewStrategy(dependencies, dependencyBaseUrl) {\n    \n\n    this.dependencies = dependencies || null;\n    this.dependencyBaseUrl = dependencyBaseUrl || '';\n  }\n\n  NoViewStrategy.prototype.loadViewFactory = function loadViewFactory(viewEngine, compileInstruction, loadContext, target) {\n    var entry = this.entry;\n    var dependencies = this.dependencies;\n\n    if (entry && entry.factoryIsReady) {\n      return Promise.resolve(null);\n    }\n\n    this.entry = entry = new TemplateRegistryEntry(this.moduleId || this.dependencyBaseUrl);\n\n    entry.dependencies = [];\n    entry.templateIsLoaded = true;\n\n    if (dependencies !== null) {\n      for (var i = 0, ii = dependencies.length; i < ii; ++i) {\n        var current = dependencies[i];\n\n        if (typeof current === 'string' || typeof current === 'function') {\n          entry.addDependency(current);\n        } else {\n          entry.addDependency(current.from, current.as);\n        }\n      }\n    }\n\n    compileInstruction.associatedModuleId = this.moduleId;\n\n    return viewEngine.loadViewFactory(entry, compileInstruction, loadContext, target);\n  };\n\n  return NoViewStrategy;\n}()) || _class4);\n\nexport var TemplateRegistryViewStrategy = (_dec4 = viewStrategy(), _dec4(_class5 = function () {\n  function TemplateRegistryViewStrategy(moduleId, entry) {\n    \n\n    this.moduleId = moduleId;\n    this.entry = entry;\n  }\n\n  TemplateRegistryViewStrategy.prototype.loadViewFactory = function loadViewFactory(viewEngine, compileInstruction, loadContext, target) {\n    var entry = this.entry;\n\n    if (entry.factoryIsReady) {\n      return Promise.resolve(entry.factory);\n    }\n\n    compileInstruction.associatedModuleId = this.moduleId;\n    return viewEngine.loadViewFactory(entry, compileInstruction, loadContext, target);\n  };\n\n  return TemplateRegistryViewStrategy;\n}()) || _class5);\n\nexport var InlineViewStrategy = (_dec5 = viewStrategy(), _dec5(_class6 = function () {\n  function InlineViewStrategy(markup, dependencies, dependencyBaseUrl) {\n    \n\n    this.markup = markup;\n    this.dependencies = dependencies || null;\n    this.dependencyBaseUrl = dependencyBaseUrl || '';\n  }\n\n  InlineViewStrategy.prototype.loadViewFactory = function loadViewFactory(viewEngine, compileInstruction, loadContext, target) {\n    var entry = this.entry;\n    var dependencies = this.dependencies;\n\n    if (entry && entry.factoryIsReady) {\n      return Promise.resolve(entry.factory);\n    }\n\n    this.entry = entry = new TemplateRegistryEntry(this.moduleId || this.dependencyBaseUrl);\n    entry.template = DOM.createTemplateFromMarkup(this.markup);\n\n    if (dependencies !== null) {\n      for (var i = 0, ii = dependencies.length; i < ii; ++i) {\n        var current = dependencies[i];\n\n        if (typeof current === 'string' || typeof current === 'function') {\n          entry.addDependency(current);\n        } else {\n          entry.addDependency(current.from, current.as);\n        }\n      }\n    }\n\n    compileInstruction.associatedModuleId = this.moduleId;\n    return viewEngine.loadViewFactory(entry, compileInstruction, loadContext, target);\n  };\n\n  return InlineViewStrategy;\n}()) || _class6);\n\nexport var StaticViewStrategy = (_dec6 = viewStrategy(), _dec6(_class7 = function () {\n  function StaticViewStrategy(config) {\n    \n\n    if (typeof config === 'string' || config instanceof DOM.Element && config.tagName === 'TEMPLATE') {\n      config = {\n        template: config\n      };\n    }\n    this.template = config.template;\n    this.dependencies = config.dependencies || [];\n    this.factoryIsReady = false;\n    this.onReady = null;\n    this.moduleId = 'undefined';\n  }\n\n  StaticViewStrategy.prototype.loadViewFactory = function loadViewFactory(viewEngine, compileInstruction, loadContext, target) {\n    var _this2 = this;\n\n    if (this.factoryIsReady) {\n      return Promise.resolve(this.factory);\n    }\n    var deps = this.dependencies;\n    deps = typeof deps === 'function' ? deps() : deps;\n    deps = deps ? deps : [];\n    deps = Array.isArray(deps) ? deps : [deps];\n\n    return Promise.all(deps).then(function (dependencies) {\n      var container = viewEngine.container;\n      var appResources = viewEngine.appResources;\n      var viewCompiler = viewEngine.viewCompiler;\n      var viewResources = new ViewResources(appResources);\n\n      var resource = void 0;\n      var elDeps = [];\n\n      if (target) {\n        viewResources.autoRegister(container, target);\n      }\n\n      for (var _iterator = dependencies, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n        var _ref;\n\n        if (_isArray) {\n          if (_i >= _iterator.length) break;\n          _ref = _iterator[_i++];\n        } else {\n          _i = _iterator.next();\n          if (_i.done) break;\n          _ref = _i.value;\n        }\n\n        var dep = _ref;\n\n        if (typeof dep === 'function') {\n          resource = viewResources.autoRegister(container, dep);\n          if (resource.elementName !== null) {\n            elDeps.push(resource);\n          }\n        } else if (dep && (typeof dep === 'undefined' ? 'undefined' : _typeof(dep)) === 'object') {\n          for (var _key2 in dep) {\n            var exported = dep[_key2];\n            if (typeof exported === 'function') {\n              resource = viewResources.autoRegister(container, exported);\n              if (resource.elementName !== null) {\n                elDeps.push(resource);\n              }\n            }\n          }\n        } else {\n          throw new Error('dependency neither function nor object. Received: \"' + (typeof dep === 'undefined' ? 'undefined' : _typeof(dep)) + '\"');\n        }\n      }\n\n      return Promise.all(elDeps.map(function (el) {\n        return el.load(container, el.target);\n      })).then(function () {\n        var factory = _this2.template !== null ? viewCompiler.compile(_this2.template, viewResources, compileInstruction) : null;\n        _this2.factoryIsReady = true;\n        _this2.factory = factory;\n        return factory;\n      });\n    });\n  };\n\n  return StaticViewStrategy;\n}()) || _class7);\n\nexport var ViewLocator = (_temp2 = _class8 = function () {\n  function ViewLocator() {\n    \n  }\n\n  ViewLocator.prototype.getViewStrategy = function getViewStrategy(value) {\n    if (!value) {\n      return null;\n    }\n\n    if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && 'getViewStrategy' in value) {\n      var _origin = Origin.get(value.constructor);\n\n      value = value.getViewStrategy();\n\n      if (typeof value === 'string') {\n        value = new RelativeViewStrategy(value);\n      }\n\n      viewStrategy.assert(value);\n\n      if (_origin.moduleId) {\n        value.makeRelativeTo(_origin.moduleId);\n      }\n\n      return value;\n    }\n\n    if (typeof value === 'string') {\n      value = new RelativeViewStrategy(value);\n    }\n\n    if (viewStrategy.validate(value)) {\n      return value;\n    }\n\n    if (typeof value !== 'function') {\n      value = value.constructor;\n    }\n\n    if ('$view' in value) {\n      var c = value.$view;\n      var _view = void 0;\n      c = typeof c === 'function' ? c.call(value) : c;\n      if (c === null) {\n        _view = new NoViewStrategy();\n      } else {\n        _view = c instanceof StaticViewStrategy ? c : new StaticViewStrategy(c);\n      }\n      metadata.define(ViewLocator.viewStrategyMetadataKey, _view, value);\n      return _view;\n    }\n\n    var origin = Origin.get(value);\n    var strategy = metadata.get(ViewLocator.viewStrategyMetadataKey, value);\n\n    if (!strategy) {\n      if (!origin.moduleId) {\n        throw new Error('Cannot determine default view strategy for object.', value);\n      }\n\n      strategy = this.createFallbackViewStrategy(origin);\n    } else if (origin.moduleId) {\n      strategy.moduleId = origin.moduleId;\n    }\n\n    return strategy;\n  };\n\n  ViewLocator.prototype.createFallbackViewStrategy = function createFallbackViewStrategy(origin) {\n    return new ConventionalViewStrategy(this, origin);\n  };\n\n  ViewLocator.prototype.convertOriginToViewUrl = function convertOriginToViewUrl(origin) {\n    var moduleId = origin.moduleId;\n    var id = moduleId.endsWith('.js') || moduleId.endsWith('.ts') ? moduleId.substring(0, moduleId.length - 3) : moduleId;\n    return id + '.html';\n  };\n\n  return ViewLocator;\n}(), _class8.viewStrategyMetadataKey = 'aurelia:view-strategy', _temp2);\n\nfunction mi(name) {\n  throw new Error('BindingLanguage must implement ' + name + '().');\n}\n\nexport var BindingLanguage = function () {\n  function BindingLanguage() {\n    \n  }\n\n  BindingLanguage.prototype.inspectAttribute = function inspectAttribute(resources, elementName, attrName, attrValue) {\n    mi('inspectAttribute');\n  };\n\n  BindingLanguage.prototype.createAttributeInstruction = function createAttributeInstruction(resources, element, info, existingInstruction) {\n    mi('createAttributeInstruction');\n  };\n\n  BindingLanguage.prototype.createLetExpressions = function createLetExpressions(resources, element) {\n    mi('createLetExpressions');\n  };\n\n  BindingLanguage.prototype.inspectTextContent = function inspectTextContent(resources, value) {\n    mi('inspectTextContent');\n  };\n\n  return BindingLanguage;\n}();\n\nvar noNodes = Object.freeze([]);\n\nexport var SlotCustomAttribute = function () {\n  SlotCustomAttribute.inject = function inject() {\n    return [DOM.Element];\n  };\n\n  function SlotCustomAttribute(element) {\n    \n\n    this.element = element;\n    this.element.auSlotAttribute = this;\n  }\n\n  SlotCustomAttribute.prototype.valueChanged = function valueChanged(newValue, oldValue) {};\n\n  return SlotCustomAttribute;\n}();\n\nexport var PassThroughSlot = function () {\n  function PassThroughSlot(anchor, name, destinationName, fallbackFactory) {\n    \n\n    this.anchor = anchor;\n    this.anchor.viewSlot = this;\n    this.name = name;\n    this.destinationName = destinationName;\n    this.fallbackFactory = fallbackFactory;\n    this.destinationSlot = null;\n    this.projections = 0;\n    this.contentView = null;\n\n    var attr = new SlotCustomAttribute(this.anchor);\n    attr.value = this.destinationName;\n  }\n\n  PassThroughSlot.prototype.renderFallbackContent = function renderFallbackContent(view, nodes, projectionSource, index) {\n    if (this.contentView === null) {\n      this.contentView = this.fallbackFactory.create(this.ownerView.container);\n      this.contentView.bind(this.ownerView.bindingContext, this.ownerView.overrideContext);\n\n      var slots = Object.create(null);\n      slots[this.destinationSlot.name] = this.destinationSlot;\n\n      ShadowDOM.distributeView(this.contentView, slots, projectionSource, index, this.destinationSlot.name);\n    }\n  };\n\n  PassThroughSlot.prototype.passThroughTo = function passThroughTo(destinationSlot) {\n    this.destinationSlot = destinationSlot;\n  };\n\n  PassThroughSlot.prototype.addNode = function addNode(view, node, projectionSource, index) {\n    if (this.contentView !== null) {\n      this.contentView.removeNodes();\n      this.contentView.detached();\n      this.contentView.unbind();\n      this.contentView = null;\n    }\n\n    if (node.viewSlot instanceof PassThroughSlot) {\n      node.viewSlot.passThroughTo(this);\n      return;\n    }\n\n    this.projections++;\n    this.destinationSlot.addNode(view, node, projectionSource, index);\n  };\n\n  PassThroughSlot.prototype.removeView = function removeView(view, projectionSource) {\n    this.projections--;\n    this.destinationSlot.removeView(view, projectionSource);\n\n    if (this.needsFallbackRendering) {\n      this.renderFallbackContent(null, noNodes, projectionSource);\n    }\n  };\n\n  PassThroughSlot.prototype.removeAll = function removeAll(projectionSource) {\n    this.projections = 0;\n    this.destinationSlot.removeAll(projectionSource);\n\n    if (this.needsFallbackRendering) {\n      this.renderFallbackContent(null, noNodes, projectionSource);\n    }\n  };\n\n  PassThroughSlot.prototype.projectFrom = function projectFrom(view, projectionSource) {\n    this.destinationSlot.projectFrom(view, projectionSource);\n  };\n\n  PassThroughSlot.prototype.created = function created(ownerView) {\n    this.ownerView = ownerView;\n  };\n\n  PassThroughSlot.prototype.bind = function bind(view) {\n    if (this.contentView) {\n      this.contentView.bind(view.bindingContext, view.overrideContext);\n    }\n  };\n\n  PassThroughSlot.prototype.attached = function attached() {\n    if (this.contentView) {\n      this.contentView.attached();\n    }\n  };\n\n  PassThroughSlot.prototype.detached = function detached() {\n    if (this.contentView) {\n      this.contentView.detached();\n    }\n  };\n\n  PassThroughSlot.prototype.unbind = function unbind() {\n    if (this.contentView) {\n      this.contentView.unbind();\n    }\n  };\n\n  _createClass(PassThroughSlot, [{\n    key: 'needsFallbackRendering',\n    get: function get() {\n      return this.fallbackFactory && this.projections === 0;\n    }\n  }]);\n\n  return PassThroughSlot;\n}();\n\nexport var ShadowSlot = function () {\n  function ShadowSlot(anchor, name, fallbackFactory) {\n    \n\n    this.anchor = anchor;\n    this.anchor.isContentProjectionSource = true;\n    this.anchor.viewSlot = this;\n    this.name = name;\n    this.fallbackFactory = fallbackFactory;\n    this.contentView = null;\n    this.projections = 0;\n    this.children = [];\n    this.projectFromAnchors = null;\n    this.destinationSlots = null;\n  }\n\n  ShadowSlot.prototype.addNode = function addNode(view, node, projectionSource, index, destination) {\n    if (this.contentView !== null) {\n      this.contentView.removeNodes();\n      this.contentView.detached();\n      this.contentView.unbind();\n      this.contentView = null;\n    }\n\n    if (node.viewSlot instanceof PassThroughSlot) {\n      node.viewSlot.passThroughTo(this);\n      return;\n    }\n\n    if (this.destinationSlots !== null) {\n      ShadowDOM.distributeNodes(view, [node], this.destinationSlots, this, index);\n    } else {\n      node.auOwnerView = view;\n      node.auProjectionSource = projectionSource;\n      node.auAssignedSlot = this;\n\n      var anchor = this._findAnchor(view, node, projectionSource, index);\n      var parent = anchor.parentNode;\n\n      parent.insertBefore(node, anchor);\n      this.children.push(node);\n      this.projections++;\n    }\n  };\n\n  ShadowSlot.prototype.removeView = function removeView(view, projectionSource) {\n    if (this.destinationSlots !== null) {\n      ShadowDOM.undistributeView(view, this.destinationSlots, this);\n    } else if (this.contentView && this.contentView.hasSlots) {\n      ShadowDOM.undistributeView(view, this.contentView.slots, projectionSource);\n    } else {\n      var found = this.children.find(function (x) {\n        return x.auSlotProjectFrom === projectionSource;\n      });\n      if (found) {\n        var _children = found.auProjectionChildren;\n\n        for (var i = 0, ii = _children.length; i < ii; ++i) {\n          var _child = _children[i];\n\n          if (_child.auOwnerView === view) {\n            _children.splice(i, 1);\n            view.fragment.appendChild(_child);\n            i--;ii--;\n            this.projections--;\n          }\n        }\n\n        if (this.needsFallbackRendering) {\n          this.renderFallbackContent(view, noNodes, projectionSource);\n        }\n      }\n    }\n  };\n\n  ShadowSlot.prototype.removeAll = function removeAll(projectionSource) {\n    if (this.destinationSlots !== null) {\n      ShadowDOM.undistributeAll(this.destinationSlots, this);\n    } else if (this.contentView && this.contentView.hasSlots) {\n      ShadowDOM.undistributeAll(this.contentView.slots, projectionSource);\n    } else {\n      var found = this.children.find(function (x) {\n        return x.auSlotProjectFrom === projectionSource;\n      });\n\n      if (found) {\n        var _children2 = found.auProjectionChildren;\n        for (var i = 0, ii = _children2.length; i < ii; ++i) {\n          var _child2 = _children2[i];\n          _child2.auOwnerView.fragment.appendChild(_child2);\n          this.projections--;\n        }\n\n        found.auProjectionChildren = [];\n\n        if (this.needsFallbackRendering) {\n          this.renderFallbackContent(null, noNodes, projectionSource);\n        }\n      }\n    }\n  };\n\n  ShadowSlot.prototype._findAnchor = function _findAnchor(view, node, projectionSource, index) {\n    if (projectionSource) {\n      var found = this.children.find(function (x) {\n        return x.auSlotProjectFrom === projectionSource;\n      });\n      if (found) {\n        if (index !== undefined) {\n          var _children3 = found.auProjectionChildren;\n          var viewIndex = -1;\n          var lastView = void 0;\n\n          for (var i = 0, ii = _children3.length; i < ii; ++i) {\n            var current = _children3[i];\n\n            if (current.auOwnerView !== lastView) {\n              viewIndex++;\n              lastView = current.auOwnerView;\n\n              if (viewIndex >= index && lastView !== view) {\n                _children3.splice(i, 0, node);\n                return current;\n              }\n            }\n          }\n        }\n\n        found.auProjectionChildren.push(node);\n        return found;\n      }\n    }\n\n    return this.anchor;\n  };\n\n  ShadowSlot.prototype.projectTo = function projectTo(slots) {\n    this.destinationSlots = slots;\n  };\n\n  ShadowSlot.prototype.projectFrom = function projectFrom(view, projectionSource) {\n    var anchor = DOM.createComment('anchor');\n    var parent = this.anchor.parentNode;\n    anchor.auSlotProjectFrom = projectionSource;\n    anchor.auOwnerView = view;\n    anchor.auProjectionChildren = [];\n    parent.insertBefore(anchor, this.anchor);\n    this.children.push(anchor);\n\n    if (this.projectFromAnchors === null) {\n      this.projectFromAnchors = [];\n    }\n\n    this.projectFromAnchors.push(anchor);\n  };\n\n  ShadowSlot.prototype.renderFallbackContent = function renderFallbackContent(view, nodes, projectionSource, index) {\n    if (this.contentView === null) {\n      this.contentView = this.fallbackFactory.create(this.ownerView.container);\n      this.contentView.bind(this.ownerView.bindingContext, this.ownerView.overrideContext);\n      this.contentView.insertNodesBefore(this.anchor);\n    }\n\n    if (this.contentView.hasSlots) {\n      var slots = this.contentView.slots;\n      var projectFromAnchors = this.projectFromAnchors;\n\n      if (projectFromAnchors !== null) {\n        for (var slotName in slots) {\n          var slot = slots[slotName];\n\n          for (var i = 0, ii = projectFromAnchors.length; i < ii; ++i) {\n            var anchor = projectFromAnchors[i];\n            slot.projectFrom(anchor.auOwnerView, anchor.auSlotProjectFrom);\n          }\n        }\n      }\n\n      this.fallbackSlots = slots;\n      ShadowDOM.distributeNodes(view, nodes, slots, projectionSource, index);\n    }\n  };\n\n  ShadowSlot.prototype.created = function created(ownerView) {\n    this.ownerView = ownerView;\n  };\n\n  ShadowSlot.prototype.bind = function bind(view) {\n    if (this.contentView) {\n      this.contentView.bind(view.bindingContext, view.overrideContext);\n    }\n  };\n\n  ShadowSlot.prototype.attached = function attached() {\n    if (this.contentView) {\n      this.contentView.attached();\n    }\n  };\n\n  ShadowSlot.prototype.detached = function detached() {\n    if (this.contentView) {\n      this.contentView.detached();\n    }\n  };\n\n  ShadowSlot.prototype.unbind = function unbind() {\n    if (this.contentView) {\n      this.contentView.unbind();\n    }\n  };\n\n  _createClass(ShadowSlot, [{\n    key: 'needsFallbackRendering',\n    get: function get() {\n      return this.fallbackFactory && this.projections === 0;\n    }\n  }]);\n\n  return ShadowSlot;\n}();\n\nexport var ShadowDOM = (_temp3 = _class9 = function () {\n  function ShadowDOM() {\n    \n  }\n\n  ShadowDOM.getSlotName = function getSlotName(node) {\n    if (node.auSlotAttribute === undefined) {\n      return ShadowDOM.defaultSlotKey;\n    }\n\n    return node.auSlotAttribute.value;\n  };\n\n  ShadowDOM.distributeView = function distributeView(view, slots, projectionSource, index, destinationOverride) {\n    var nodes = void 0;\n\n    if (view === null) {\n      nodes = noNodes;\n    } else {\n      var childNodes = view.fragment.childNodes;\n      var ii = childNodes.length;\n      nodes = new Array(ii);\n\n      for (var i = 0; i < ii; ++i) {\n        nodes[i] = childNodes[i];\n      }\n    }\n\n    ShadowDOM.distributeNodes(view, nodes, slots, projectionSource, index, destinationOverride);\n  };\n\n  ShadowDOM.undistributeView = function undistributeView(view, slots, projectionSource) {\n    for (var slotName in slots) {\n      slots[slotName].removeView(view, projectionSource);\n    }\n  };\n\n  ShadowDOM.undistributeAll = function undistributeAll(slots, projectionSource) {\n    for (var slotName in slots) {\n      slots[slotName].removeAll(projectionSource);\n    }\n  };\n\n  ShadowDOM.distributeNodes = function distributeNodes(view, nodes, slots, projectionSource, index, destinationOverride) {\n    for (var i = 0, ii = nodes.length; i < ii; ++i) {\n      var currentNode = nodes[i];\n      var nodeType = currentNode.nodeType;\n\n      if (currentNode.isContentProjectionSource) {\n        currentNode.viewSlot.projectTo(slots);\n\n        for (var slotName in slots) {\n          slots[slotName].projectFrom(view, currentNode.viewSlot);\n        }\n\n        nodes.splice(i, 1);\n        ii--;i--;\n      } else if (nodeType === 1 || nodeType === 3 || currentNode.viewSlot instanceof PassThroughSlot) {\n        if (nodeType === 3 && _isAllWhitespace(currentNode)) {\n          nodes.splice(i, 1);\n          ii--;i--;\n        } else {\n          var found = slots[destinationOverride || ShadowDOM.getSlotName(currentNode)];\n\n          if (found) {\n            found.addNode(view, currentNode, projectionSource, index);\n            nodes.splice(i, 1);\n            ii--;i--;\n          }\n        }\n      } else {\n        nodes.splice(i, 1);\n        ii--;i--;\n      }\n    }\n\n    for (var _slotName in slots) {\n      var slot = slots[_slotName];\n\n      if (slot.needsFallbackRendering) {\n        slot.renderFallbackContent(view, nodes, projectionSource, index);\n      }\n    }\n  };\n\n  return ShadowDOM;\n}(), _class9.defaultSlotKey = '__au-default-slot-key__', _temp3);\n\nfunction register(lookup, name, resource, type) {\n  if (!name) {\n    return;\n  }\n\n  var existing = lookup[name];\n  if (existing) {\n    if (existing !== resource) {\n      throw new Error('Attempted to register ' + type + ' when one with the same name already exists. Name: ' + name + '.');\n    }\n\n    return;\n  }\n\n  lookup[name] = resource;\n}\n\nexport function validateBehaviorName(name, type) {\n  if (/[A-Z]/.test(name)) {\n    var newName = _hyphenate(name);\n    LogManager.getLogger('templating').warn('\\'' + name + '\\' is not a valid ' + type + ' name and has been converted to \\'' + newName + '\\'. Upper-case letters are not allowed because the DOM is not case-sensitive.');\n    return newName;\n  }\n  return name;\n}\n\nvar conventionMark = '__au_resource__';\n\nexport var ViewResources = function () {\n  ViewResources.convention = function convention(target, existing) {\n    var resource = void 0;\n\n    if (existing && conventionMark in existing) {\n      return existing;\n    }\n    if ('$resource' in target) {\n      var config = target.$resource;\n\n      if (typeof config === 'string') {\n        resource = existing || new HtmlBehaviorResource();\n        resource[conventionMark] = true;\n        if (!resource.elementName) {\n          resource.elementName = validateBehaviorName(config, 'custom element');\n        }\n      } else {\n        if (typeof config === 'function') {\n          config = config.call(target);\n        }\n        if (typeof config === 'string') {\n          config = { name: config };\n        }\n\n        config = Object.assign({}, config);\n\n        var resourceType = config.type || 'element';\n\n        var _name = config.name;\n        switch (resourceType) {\n          case 'element':case 'attribute':\n            resource = existing || new HtmlBehaviorResource();\n            resource[conventionMark] = true;\n            if (resourceType === 'element') {\n              if (!resource.elementName) {\n                resource.elementName = _name ? validateBehaviorName(_name, 'custom element') : _hyphenate(target.name);\n              }\n            } else {\n              if (!resource.attributeName) {\n                resource.attributeName = _name ? validateBehaviorName(_name, 'custom attribute') : _hyphenate(target.name);\n              }\n            }\n            if ('templateController' in config) {\n              config.liftsContent = config.templateController;\n              delete config.templateController;\n            }\n            if ('defaultBindingMode' in config && resource.attributeDefaultBindingMode !== undefined) {\n              config.attributeDefaultBindingMode = config.defaultBindingMode;\n              delete config.defaultBindingMode;\n            }\n\n            delete config.name;\n\n            Object.assign(resource, config);\n            break;\n          case 'valueConverter':\n            resource = new ValueConverterResource(camelCase(_name || target.name));\n            break;\n          case 'bindingBehavior':\n            resource = new BindingBehaviorResource(camelCase(_name || target.name));\n            break;\n          case 'viewEngineHooks':\n            resource = new ViewEngineHooksResource();\n            break;\n        }\n      }\n\n      if (resource instanceof HtmlBehaviorResource) {\n        var _bindables = typeof config === 'string' ? undefined : config.bindables;\n        var currentProps = resource.properties;\n        if (Array.isArray(_bindables)) {\n          for (var i = 0, ii = _bindables.length; ii > i; ++i) {\n            var prop = _bindables[i];\n            if (!prop || typeof prop !== 'string' && !prop.name) {\n              throw new Error('Invalid bindable property at \"' + i + '\" for class \"' + target.name + '\". Expected either a string or an object with \"name\" property.');\n            }\n            var newProp = new BindableProperty(prop);\n\n            var existed = false;\n            for (var j = 0, jj = currentProps.length; jj > j; ++j) {\n              if (currentProps[j].name === newProp.name) {\n                existed = true;\n                break;\n              }\n            }\n            if (existed) {\n              continue;\n            }\n            newProp.registerWith(target, resource);\n          }\n        }\n      }\n    }\n    return resource;\n  };\n\n  function ViewResources(parent, viewUrl) {\n    \n\n    this.bindingLanguage = null;\n\n    this.parent = parent || null;\n    this.hasParent = this.parent !== null;\n    this.viewUrl = viewUrl || '';\n    this.lookupFunctions = {\n      valueConverters: this.getValueConverter.bind(this),\n      bindingBehaviors: this.getBindingBehavior.bind(this)\n    };\n    this.attributes = Object.create(null);\n    this.elements = Object.create(null);\n    this.valueConverters = Object.create(null);\n    this.bindingBehaviors = Object.create(null);\n    this.attributeMap = Object.create(null);\n    this.values = Object.create(null);\n    this.beforeCompile = this.afterCompile = this.beforeCreate = this.afterCreate = this.beforeBind = this.beforeUnbind = false;\n  }\n\n  ViewResources.prototype._tryAddHook = function _tryAddHook(obj, name) {\n    if (typeof obj[name] === 'function') {\n      var func = obj[name].bind(obj);\n      var counter = 1;\n      var callbackName = void 0;\n\n      while (this[callbackName = name + counter.toString()] !== undefined) {\n        counter++;\n      }\n\n      this[name] = true;\n      this[callbackName] = func;\n    }\n  };\n\n  ViewResources.prototype._invokeHook = function _invokeHook(name, one, two, three, four) {\n    if (this.hasParent) {\n      this.parent._invokeHook(name, one, two, three, four);\n    }\n\n    if (this[name]) {\n      this[name + '1'](one, two, three, four);\n\n      var callbackName = name + '2';\n      if (this[callbackName]) {\n        this[callbackName](one, two, three, four);\n\n        callbackName = name + '3';\n        if (this[callbackName]) {\n          this[callbackName](one, two, three, four);\n\n          var counter = 4;\n\n          while (this[callbackName = name + counter.toString()] !== undefined) {\n            this[callbackName](one, two, three, four);\n            counter++;\n          }\n        }\n      }\n    }\n  };\n\n  ViewResources.prototype.registerViewEngineHooks = function registerViewEngineHooks(hooks) {\n    this._tryAddHook(hooks, 'beforeCompile');\n    this._tryAddHook(hooks, 'afterCompile');\n    this._tryAddHook(hooks, 'beforeCreate');\n    this._tryAddHook(hooks, 'afterCreate');\n    this._tryAddHook(hooks, 'beforeBind');\n    this._tryAddHook(hooks, 'beforeUnbind');\n  };\n\n  ViewResources.prototype.getBindingLanguage = function getBindingLanguage(bindingLanguageFallback) {\n    return this.bindingLanguage || (this.bindingLanguage = bindingLanguageFallback);\n  };\n\n  ViewResources.prototype.patchInParent = function patchInParent(newParent) {\n    var originalParent = this.parent;\n\n    this.parent = newParent || null;\n    this.hasParent = this.parent !== null;\n\n    if (newParent.parent === null) {\n      newParent.parent = originalParent;\n      newParent.hasParent = originalParent !== null;\n    }\n  };\n\n  ViewResources.prototype.relativeToView = function relativeToView(path) {\n    return relativeToFile(path, this.viewUrl);\n  };\n\n  ViewResources.prototype.registerElement = function registerElement(tagName, behavior) {\n    register(this.elements, tagName, behavior, 'an Element');\n  };\n\n  ViewResources.prototype.getElement = function getElement(tagName) {\n    return this.elements[tagName] || (this.hasParent ? this.parent.getElement(tagName) : null);\n  };\n\n  ViewResources.prototype.mapAttribute = function mapAttribute(attribute) {\n    return this.attributeMap[attribute] || (this.hasParent ? this.parent.mapAttribute(attribute) : null);\n  };\n\n  ViewResources.prototype.registerAttribute = function registerAttribute(attribute, behavior, knownAttribute) {\n    this.attributeMap[attribute] = knownAttribute;\n    register(this.attributes, attribute, behavior, 'an Attribute');\n  };\n\n  ViewResources.prototype.getAttribute = function getAttribute(attribute) {\n    return this.attributes[attribute] || (this.hasParent ? this.parent.getAttribute(attribute) : null);\n  };\n\n  ViewResources.prototype.registerValueConverter = function registerValueConverter(name, valueConverter) {\n    register(this.valueConverters, name, valueConverter, 'a ValueConverter');\n  };\n\n  ViewResources.prototype.getValueConverter = function getValueConverter(name) {\n    return this.valueConverters[name] || (this.hasParent ? this.parent.getValueConverter(name) : null);\n  };\n\n  ViewResources.prototype.registerBindingBehavior = function registerBindingBehavior(name, bindingBehavior) {\n    register(this.bindingBehaviors, name, bindingBehavior, 'a BindingBehavior');\n  };\n\n  ViewResources.prototype.getBindingBehavior = function getBindingBehavior(name) {\n    return this.bindingBehaviors[name] || (this.hasParent ? this.parent.getBindingBehavior(name) : null);\n  };\n\n  ViewResources.prototype.registerValue = function registerValue(name, value) {\n    register(this.values, name, value, 'a value');\n  };\n\n  ViewResources.prototype.getValue = function getValue(name) {\n    return this.values[name] || (this.hasParent ? this.parent.getValue(name) : null);\n  };\n\n  ViewResources.prototype.autoRegister = function autoRegister(container, impl) {\n    var resourceTypeMeta = metadata.getOwn(metadata.resource, impl);\n    if (resourceTypeMeta) {\n      if (resourceTypeMeta instanceof HtmlBehaviorResource) {\n        ViewResources.convention(impl, resourceTypeMeta);\n\n        if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\n          HtmlBehaviorResource.convention(impl.name, resourceTypeMeta);\n        }\n        if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\n          resourceTypeMeta.elementName = _hyphenate(impl.name);\n        }\n      }\n    } else {\n      resourceTypeMeta = ViewResources.convention(impl) || HtmlBehaviorResource.convention(impl.name) || ValueConverterResource.convention(impl.name) || BindingBehaviorResource.convention(impl.name) || ViewEngineHooksResource.convention(impl.name);\n      if (!resourceTypeMeta) {\n        resourceTypeMeta = new HtmlBehaviorResource();\n        resourceTypeMeta.elementName = _hyphenate(impl.name);\n      }\n      metadata.define(metadata.resource, resourceTypeMeta, impl);\n    }\n    resourceTypeMeta.initialize(container, impl);\n    resourceTypeMeta.register(this);\n    return resourceTypeMeta;\n  };\n\n  return ViewResources;\n}();\n\nexport var View = function () {\n  function View(container, viewFactory, fragment, controllers, bindings, children, slots) {\n    \n\n    this.container = container;\n    this.viewFactory = viewFactory;\n    this.resources = viewFactory.resources;\n    this.fragment = fragment;\n    this.firstChild = fragment.firstChild;\n    this.lastChild = fragment.lastChild;\n    this.controllers = controllers;\n    this.bindings = bindings;\n    this.children = children;\n    this.slots = slots;\n    this.hasSlots = false;\n    this.fromCache = false;\n    this.isBound = false;\n    this.isAttached = false;\n    this.bindingContext = null;\n    this.overrideContext = null;\n    this.controller = null;\n    this.viewModelScope = null;\n    this.animatableElement = undefined;\n    this._isUserControlled = false;\n    this.contentView = null;\n\n    for (var _key3 in slots) {\n      this.hasSlots = true;\n      break;\n    }\n  }\n\n  View.prototype.returnToCache = function returnToCache() {\n    this.viewFactory.returnViewToCache(this);\n  };\n\n  View.prototype.created = function created() {\n    var i = void 0;\n    var ii = void 0;\n    var controllers = this.controllers;\n\n    for (i = 0, ii = controllers.length; i < ii; ++i) {\n      controllers[i].created(this);\n    }\n  };\n\n  View.prototype.bind = function bind(bindingContext, overrideContext, _systemUpdate) {\n    var controllers = void 0;\n    var bindings = void 0;\n    var children = void 0;\n    var i = void 0;\n    var ii = void 0;\n\n    if (_systemUpdate && this._isUserControlled) {\n      return;\n    }\n\n    if (this.isBound) {\n      if (this.bindingContext === bindingContext) {\n        return;\n      }\n\n      this.unbind();\n    }\n\n    this.isBound = true;\n    this.bindingContext = bindingContext;\n    this.overrideContext = overrideContext || createOverrideContext(bindingContext);\n\n    this.resources._invokeHook('beforeBind', this);\n\n    bindings = this.bindings;\n    for (i = 0, ii = bindings.length; i < ii; ++i) {\n      bindings[i].bind(this);\n    }\n\n    if (this.viewModelScope !== null) {\n      bindingContext.bind(this.viewModelScope.bindingContext, this.viewModelScope.overrideContext);\n      this.viewModelScope = null;\n    }\n\n    controllers = this.controllers;\n    for (i = 0, ii = controllers.length; i < ii; ++i) {\n      controllers[i].bind(this);\n    }\n\n    children = this.children;\n    for (i = 0, ii = children.length; i < ii; ++i) {\n      children[i].bind(bindingContext, overrideContext, true);\n    }\n\n    if (this.hasSlots) {\n      ShadowDOM.distributeView(this.contentView, this.slots);\n    }\n  };\n\n  View.prototype.addBinding = function addBinding(binding) {\n    this.bindings.push(binding);\n\n    if (this.isBound) {\n      binding.bind(this);\n    }\n  };\n\n  View.prototype.unbind = function unbind() {\n    var controllers = void 0;\n    var bindings = void 0;\n    var children = void 0;\n    var i = void 0;\n    var ii = void 0;\n\n    if (this.isBound) {\n      this.isBound = false;\n      this.resources._invokeHook('beforeUnbind', this);\n\n      if (this.controller !== null) {\n        this.controller.unbind();\n      }\n\n      bindings = this.bindings;\n      for (i = 0, ii = bindings.length; i < ii; ++i) {\n        bindings[i].unbind();\n      }\n\n      controllers = this.controllers;\n      for (i = 0, ii = controllers.length; i < ii; ++i) {\n        controllers[i].unbind();\n      }\n\n      children = this.children;\n      for (i = 0, ii = children.length; i < ii; ++i) {\n        children[i].unbind();\n      }\n\n      this.bindingContext = null;\n      this.overrideContext = null;\n    }\n  };\n\n  View.prototype.insertNodesBefore = function insertNodesBefore(refNode) {\n    refNode.parentNode.insertBefore(this.fragment, refNode);\n  };\n\n  View.prototype.appendNodesTo = function appendNodesTo(parent) {\n    parent.appendChild(this.fragment);\n  };\n\n  View.prototype.removeNodes = function removeNodes() {\n    var fragment = this.fragment;\n    var current = this.firstChild;\n    var end = this.lastChild;\n    var next = void 0;\n\n    while (current) {\n      next = current.nextSibling;\n      fragment.appendChild(current);\n\n      if (current === end) {\n        break;\n      }\n\n      current = next;\n    }\n  };\n\n  View.prototype.attached = function attached() {\n    var controllers = void 0;\n    var children = void 0;\n    var i = void 0;\n    var ii = void 0;\n\n    if (this.isAttached) {\n      return;\n    }\n\n    this.isAttached = true;\n\n    if (this.controller !== null) {\n      this.controller.attached();\n    }\n\n    controllers = this.controllers;\n    for (i = 0, ii = controllers.length; i < ii; ++i) {\n      controllers[i].attached();\n    }\n\n    children = this.children;\n    for (i = 0, ii = children.length; i < ii; ++i) {\n      children[i].attached();\n    }\n  };\n\n  View.prototype.detached = function detached() {\n    var controllers = void 0;\n    var children = void 0;\n    var i = void 0;\n    var ii = void 0;\n\n    if (this.isAttached) {\n      this.isAttached = false;\n\n      if (this.controller !== null) {\n        this.controller.detached();\n      }\n\n      controllers = this.controllers;\n      for (i = 0, ii = controllers.length; i < ii; ++i) {\n        controllers[i].detached();\n      }\n\n      children = this.children;\n      for (i = 0, ii = children.length; i < ii; ++i) {\n        children[i].detached();\n      }\n    }\n  };\n\n  return View;\n}();\n\nfunction getAnimatableElement(view) {\n  if (view.animatableElement !== undefined) {\n    return view.animatableElement;\n  }\n\n  var current = view.firstChild;\n\n  while (current && current.nodeType !== 1) {\n    current = current.nextSibling;\n  }\n\n  if (current && current.nodeType === 1) {\n    return view.animatableElement = current.classList.contains('au-animate') ? current : null;\n  }\n\n  return view.animatableElement = null;\n}\n\nexport var ViewSlot = function () {\n  function ViewSlot(anchor, anchorIsContainer) {\n    var animator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Animator.instance;\n\n    \n\n    this.anchor = anchor;\n    this.anchorIsContainer = anchorIsContainer;\n    this.bindingContext = null;\n    this.overrideContext = null;\n    this.animator = animator;\n    this.children = [];\n    this.isBound = false;\n    this.isAttached = false;\n    this.contentSelectors = null;\n    anchor.viewSlot = this;\n    anchor.isContentProjectionSource = false;\n  }\n\n  ViewSlot.prototype.animateView = function animateView(view) {\n    var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'enter';\n\n    var animatableElement = getAnimatableElement(view);\n\n    if (animatableElement !== null) {\n      switch (direction) {\n        case 'enter':\n          return this.animator.enter(animatableElement);\n        case 'leave':\n          return this.animator.leave(animatableElement);\n        default:\n          throw new Error('Invalid animation direction: ' + direction);\n      }\n    }\n  };\n\n  ViewSlot.prototype.transformChildNodesIntoView = function transformChildNodesIntoView() {\n    var parent = this.anchor;\n\n    this.children.push({\n      fragment: parent,\n      firstChild: parent.firstChild,\n      lastChild: parent.lastChild,\n      returnToCache: function returnToCache() {},\n      removeNodes: function removeNodes() {\n        var last = void 0;\n\n        while (last = parent.lastChild) {\n          parent.removeChild(last);\n        }\n      },\n      created: function created() {},\n      bind: function bind() {},\n      unbind: function unbind() {},\n      attached: function attached() {},\n      detached: function detached() {}\n    });\n  };\n\n  ViewSlot.prototype.bind = function bind(bindingContext, overrideContext) {\n    var i = void 0;\n    var ii = void 0;\n    var children = void 0;\n\n    if (this.isBound) {\n      if (this.bindingContext === bindingContext) {\n        return;\n      }\n\n      this.unbind();\n    }\n\n    this.isBound = true;\n    this.bindingContext = bindingContext = bindingContext || this.bindingContext;\n    this.overrideContext = overrideContext = overrideContext || this.overrideContext;\n\n    children = this.children;\n    for (i = 0, ii = children.length; i < ii; ++i) {\n      children[i].bind(bindingContext, overrideContext, true);\n    }\n  };\n\n  ViewSlot.prototype.unbind = function unbind() {\n    if (this.isBound) {\n      var i = void 0;\n      var ii = void 0;\n      var _children4 = this.children;\n\n      this.isBound = false;\n      this.bindingContext = null;\n      this.overrideContext = null;\n\n      for (i = 0, ii = _children4.length; i < ii; ++i) {\n        _children4[i].unbind();\n      }\n    }\n  };\n\n  ViewSlot.prototype.add = function add(view) {\n    if (this.anchorIsContainer) {\n      view.appendNodesTo(this.anchor);\n    } else {\n      view.insertNodesBefore(this.anchor);\n    }\n\n    this.children.push(view);\n\n    if (this.isAttached) {\n      view.attached();\n      return this.animateView(view, 'enter');\n    }\n  };\n\n  ViewSlot.prototype.insert = function insert(index, view) {\n    var children = this.children;\n    var length = children.length;\n\n    if (index === 0 && length === 0 || index >= length) {\n      return this.add(view);\n    }\n\n    view.insertNodesBefore(children[index].firstChild);\n    children.splice(index, 0, view);\n\n    if (this.isAttached) {\n      view.attached();\n      return this.animateView(view, 'enter');\n    }\n  };\n\n  ViewSlot.prototype.move = function move(sourceIndex, targetIndex) {\n    if (sourceIndex === targetIndex) {\n      return;\n    }\n\n    var children = this.children;\n    var view = children[sourceIndex];\n\n    view.removeNodes();\n    view.insertNodesBefore(children[targetIndex].firstChild);\n    children.splice(sourceIndex, 1);\n    children.splice(targetIndex, 0, view);\n  };\n\n  ViewSlot.prototype.remove = function remove(view, returnToCache, skipAnimation) {\n    return this.removeAt(this.children.indexOf(view), returnToCache, skipAnimation);\n  };\n\n  ViewSlot.prototype.removeMany = function removeMany(viewsToRemove, returnToCache, skipAnimation) {\n    var _this3 = this;\n\n    var children = this.children;\n    var ii = viewsToRemove.length;\n    var i = void 0;\n    var rmPromises = [];\n\n    viewsToRemove.forEach(function (child) {\n      if (skipAnimation) {\n        child.removeNodes();\n        return;\n      }\n\n      var animation = _this3.animateView(child, 'leave');\n      if (animation) {\n        rmPromises.push(animation.then(function () {\n          return child.removeNodes();\n        }));\n      } else {\n        child.removeNodes();\n      }\n    });\n\n    var removeAction = function removeAction() {\n      if (_this3.isAttached) {\n        for (i = 0; i < ii; ++i) {\n          viewsToRemove[i].detached();\n        }\n      }\n\n      if (returnToCache) {\n        for (i = 0; i < ii; ++i) {\n          viewsToRemove[i].returnToCache();\n        }\n      }\n\n      for (i = 0; i < ii; ++i) {\n        var index = children.indexOf(viewsToRemove[i]);\n        if (index >= 0) {\n          children.splice(index, 1);\n        }\n      }\n    };\n\n    if (rmPromises.length > 0) {\n      return Promise.all(rmPromises).then(function () {\n        return removeAction();\n      });\n    }\n\n    return removeAction();\n  };\n\n  ViewSlot.prototype.removeAt = function removeAt(index, returnToCache, skipAnimation) {\n    var _this4 = this;\n\n    var view = this.children[index];\n\n    var removeAction = function removeAction() {\n      index = _this4.children.indexOf(view);\n      view.removeNodes();\n      _this4.children.splice(index, 1);\n\n      if (_this4.isAttached) {\n        view.detached();\n      }\n\n      if (returnToCache) {\n        view.returnToCache();\n      }\n\n      return view;\n    };\n\n    if (!skipAnimation) {\n      var animation = this.animateView(view, 'leave');\n      if (animation) {\n        return animation.then(function () {\n          return removeAction();\n        });\n      }\n    }\n\n    return removeAction();\n  };\n\n  ViewSlot.prototype.removeAll = function removeAll(returnToCache, skipAnimation) {\n    var _this5 = this;\n\n    var children = this.children;\n    var ii = children.length;\n    var i = void 0;\n    var rmPromises = [];\n\n    children.forEach(function (child) {\n      if (skipAnimation) {\n        child.removeNodes();\n        return;\n      }\n\n      var animation = _this5.animateView(child, 'leave');\n      if (animation) {\n        rmPromises.push(animation.then(function () {\n          return child.removeNodes();\n        }));\n      } else {\n        child.removeNodes();\n      }\n    });\n\n    var removeAction = function removeAction() {\n      if (_this5.isAttached) {\n        for (i = 0; i < ii; ++i) {\n          children[i].detached();\n        }\n      }\n\n      if (returnToCache) {\n        for (i = 0; i < ii; ++i) {\n          var _child3 = children[i];\n\n          if (_child3) {\n            _child3.returnToCache();\n          }\n        }\n      }\n\n      _this5.children = [];\n    };\n\n    if (rmPromises.length > 0) {\n      return Promise.all(rmPromises).then(function () {\n        return removeAction();\n      });\n    }\n\n    return removeAction();\n  };\n\n  ViewSlot.prototype.attached = function attached() {\n    var i = void 0;\n    var ii = void 0;\n    var children = void 0;\n    var child = void 0;\n\n    if (this.isAttached) {\n      return;\n    }\n\n    this.isAttached = true;\n\n    children = this.children;\n    for (i = 0, ii = children.length; i < ii; ++i) {\n      child = children[i];\n      child.attached();\n      this.animateView(child, 'enter');\n    }\n  };\n\n  ViewSlot.prototype.detached = function detached() {\n    var i = void 0;\n    var ii = void 0;\n    var children = void 0;\n\n    if (this.isAttached) {\n      this.isAttached = false;\n      children = this.children;\n      for (i = 0, ii = children.length; i < ii; ++i) {\n        children[i].detached();\n      }\n    }\n  };\n\n  ViewSlot.prototype.projectTo = function projectTo(slots) {\n    var _this6 = this;\n\n    this.projectToSlots = slots;\n    this.add = this._projectionAdd;\n    this.insert = this._projectionInsert;\n    this.move = this._projectionMove;\n    this.remove = this._projectionRemove;\n    this.removeAt = this._projectionRemoveAt;\n    this.removeMany = this._projectionRemoveMany;\n    this.removeAll = this._projectionRemoveAll;\n    this.children.forEach(function (view) {\n      return ShadowDOM.distributeView(view, slots, _this6);\n    });\n  };\n\n  ViewSlot.prototype._projectionAdd = function _projectionAdd(view) {\n    ShadowDOM.distributeView(view, this.projectToSlots, this);\n\n    this.children.push(view);\n\n    if (this.isAttached) {\n      view.attached();\n    }\n  };\n\n  ViewSlot.prototype._projectionInsert = function _projectionInsert(index, view) {\n    if (index === 0 && !this.children.length || index >= this.children.length) {\n      this.add(view);\n    } else {\n      ShadowDOM.distributeView(view, this.projectToSlots, this, index);\n\n      this.children.splice(index, 0, view);\n\n      if (this.isAttached) {\n        view.attached();\n      }\n    }\n  };\n\n  ViewSlot.prototype._projectionMove = function _projectionMove(sourceIndex, targetIndex) {\n    if (sourceIndex === targetIndex) {\n      return;\n    }\n\n    var children = this.children;\n    var view = children[sourceIndex];\n\n    ShadowDOM.undistributeView(view, this.projectToSlots, this);\n    ShadowDOM.distributeView(view, this.projectToSlots, this, targetIndex);\n\n    children.splice(sourceIndex, 1);\n    children.splice(targetIndex, 0, view);\n  };\n\n  ViewSlot.prototype._projectionRemove = function _projectionRemove(view, returnToCache) {\n    ShadowDOM.undistributeView(view, this.projectToSlots, this);\n    this.children.splice(this.children.indexOf(view), 1);\n\n    if (this.isAttached) {\n      view.detached();\n    }\n    if (returnToCache) {\n      view.returnToCache();\n    }\n  };\n\n  ViewSlot.prototype._projectionRemoveAt = function _projectionRemoveAt(index, returnToCache) {\n    var view = this.children[index];\n\n    ShadowDOM.undistributeView(view, this.projectToSlots, this);\n    this.children.splice(index, 1);\n\n    if (this.isAttached) {\n      view.detached();\n    }\n    if (returnToCache) {\n      view.returnToCache();\n    }\n  };\n\n  ViewSlot.prototype._projectionRemoveMany = function _projectionRemoveMany(viewsToRemove, returnToCache) {\n    var _this7 = this;\n\n    viewsToRemove.forEach(function (view) {\n      return _this7.remove(view, returnToCache);\n    });\n  };\n\n  ViewSlot.prototype._projectionRemoveAll = function _projectionRemoveAll(returnToCache) {\n    ShadowDOM.undistributeAll(this.projectToSlots, this);\n\n    var children = this.children;\n    var ii = children.length;\n\n    for (var i = 0; i < ii; ++i) {\n      if (returnToCache) {\n        children[i].returnToCache();\n      } else if (this.isAttached) {\n        children[i].detached();\n      }\n    }\n\n    this.children = [];\n  };\n\n  return ViewSlot;\n}();\n\nvar ProviderResolver = resolver(_class11 = function () {\n  function ProviderResolver() {\n    \n  }\n\n  ProviderResolver.prototype.get = function get(container, key) {\n    var id = key.__providerId__;\n    return id in container ? container[id] : container[id] = container.invoke(key);\n  };\n\n  return ProviderResolver;\n}()) || _class11;\n\nvar providerResolverInstance = new ProviderResolver();\n\nfunction elementContainerGet(key) {\n  if (key === DOM.Element) {\n    return this.element;\n  }\n\n  if (key === BoundViewFactory) {\n    if (this.boundViewFactory) {\n      return this.boundViewFactory;\n    }\n\n    var factory = this.instruction.viewFactory;\n    var _partReplacements = this.partReplacements;\n\n    if (_partReplacements) {\n      factory = _partReplacements[factory.part] || factory;\n    }\n\n    this.boundViewFactory = new BoundViewFactory(this, factory, _partReplacements);\n    return this.boundViewFactory;\n  }\n\n  if (key === ViewSlot) {\n    if (this.viewSlot === undefined) {\n      this.viewSlot = new ViewSlot(this.element, this.instruction.anchorIsContainer);\n      this.element.isContentProjectionSource = this.instruction.lifting;\n      this.children.push(this.viewSlot);\n    }\n\n    return this.viewSlot;\n  }\n\n  if (key === ElementEvents) {\n    return this.elementEvents || (this.elementEvents = new ElementEvents(this.element));\n  }\n\n  if (key === CompositionTransaction) {\n    return this.compositionTransaction || (this.compositionTransaction = this.parent.get(key));\n  }\n\n  if (key === ViewResources) {\n    return this.viewResources;\n  }\n\n  if (key === TargetInstruction) {\n    return this.instruction;\n  }\n\n  return this.superGet(key);\n}\n\nfunction createElementContainer(parent, element, instruction, children, partReplacements, resources) {\n  var container = parent.createChild();\n  var providers = void 0;\n  var i = void 0;\n\n  container.element = element;\n  container.instruction = instruction;\n  container.children = children;\n  container.viewResources = resources;\n  container.partReplacements = partReplacements;\n\n  providers = instruction.providers;\n  i = providers.length;\n\n  while (i--) {\n    container._resolvers.set(providers[i], providerResolverInstance);\n  }\n\n  container.superGet = container.get;\n  container.get = elementContainerGet;\n\n  return container;\n}\n\nfunction hasAttribute(name) {\n  return this._element.hasAttribute(name);\n}\n\nfunction getAttribute(name) {\n  return this._element.getAttribute(name);\n}\n\nfunction setAttribute(name, value) {\n  this._element.setAttribute(name, value);\n}\n\nfunction makeElementIntoAnchor(element, elementInstruction) {\n  var anchor = DOM.createComment('anchor');\n\n  if (elementInstruction) {\n    var firstChild = element.firstChild;\n\n    if (firstChild && firstChild.tagName === 'AU-CONTENT') {\n      anchor.contentElement = firstChild;\n    }\n\n    anchor._element = element;\n\n    anchor.hasAttribute = hasAttribute;\n    anchor.getAttribute = getAttribute;\n    anchor.setAttribute = setAttribute;\n  }\n\n  DOM.replaceNode(anchor, element);\n\n  return anchor;\n}\n\nfunction applyInstructions(containers, element, instruction, controllers, bindings, children, shadowSlots, partReplacements, resources) {\n  var behaviorInstructions = instruction.behaviorInstructions;\n  var expressions = instruction.expressions;\n  var elementContainer = void 0;\n  var i = void 0;\n  var ii = void 0;\n  var current = void 0;\n  var instance = void 0;\n\n  if (instruction.contentExpression) {\n    bindings.push(instruction.contentExpression.createBinding(element.nextSibling));\n    element.nextSibling.auInterpolationTarget = true;\n    element.parentNode.removeChild(element);\n    return;\n  }\n\n  if (instruction.shadowSlot) {\n    var commentAnchor = DOM.createComment('slot');\n    var slot = void 0;\n\n    if (instruction.slotDestination) {\n      slot = new PassThroughSlot(commentAnchor, instruction.slotName, instruction.slotDestination, instruction.slotFallbackFactory);\n    } else {\n      slot = new ShadowSlot(commentAnchor, instruction.slotName, instruction.slotFallbackFactory);\n    }\n\n    DOM.replaceNode(commentAnchor, element);\n    shadowSlots[instruction.slotName] = slot;\n    controllers.push(slot);\n    return;\n  }\n\n  if (instruction.letElement) {\n    for (i = 0, ii = expressions.length; i < ii; ++i) {\n      bindings.push(expressions[i].createBinding());\n    }\n    element.parentNode.removeChild(element);\n    return;\n  }\n\n  if (behaviorInstructions.length) {\n    if (!instruction.anchorIsContainer) {\n      element = makeElementIntoAnchor(element, instruction.elementInstruction);\n    }\n\n    containers[instruction.injectorId] = elementContainer = createElementContainer(containers[instruction.parentInjectorId], element, instruction, children, partReplacements, resources);\n\n    for (i = 0, ii = behaviorInstructions.length; i < ii; ++i) {\n      current = behaviorInstructions[i];\n      instance = current.type.create(elementContainer, current, element, bindings);\n      controllers.push(instance);\n    }\n  }\n\n  for (i = 0, ii = expressions.length; i < ii; ++i) {\n    bindings.push(expressions[i].createBinding(element));\n  }\n}\n\nfunction styleStringToObject(style, target) {\n  var attributes = style.split(';');\n  var firstIndexOfColon = void 0;\n  var i = void 0;\n  var current = void 0;\n  var key = void 0;\n  var value = void 0;\n\n  target = target || {};\n\n  for (i = 0; i < attributes.length; i++) {\n    current = attributes[i];\n    firstIndexOfColon = current.indexOf(':');\n    key = current.substring(0, firstIndexOfColon).trim();\n    value = current.substring(firstIndexOfColon + 1).trim();\n    target[key] = value;\n  }\n\n  return target;\n}\n\nfunction styleObjectToString(obj) {\n  var result = '';\n\n  for (var _key4 in obj) {\n    result += _key4 + ':' + obj[_key4] + ';';\n  }\n\n  return result;\n}\n\nfunction applySurrogateInstruction(container, element, instruction, controllers, bindings, children) {\n  var behaviorInstructions = instruction.behaviorInstructions;\n  var expressions = instruction.expressions;\n  var providers = instruction.providers;\n  var values = instruction.values;\n  var i = void 0;\n  var ii = void 0;\n  var current = void 0;\n  var instance = void 0;\n  var currentAttributeValue = void 0;\n\n  i = providers.length;\n  while (i--) {\n    container._resolvers.set(providers[i], providerResolverInstance);\n  }\n\n  for (var _key5 in values) {\n    currentAttributeValue = element.getAttribute(_key5);\n\n    if (currentAttributeValue) {\n      if (_key5 === 'class') {\n        element.setAttribute('class', currentAttributeValue + ' ' + values[_key5]);\n      } else if (_key5 === 'style') {\n        var styleObject = styleStringToObject(values[_key5]);\n        styleStringToObject(currentAttributeValue, styleObject);\n        element.setAttribute('style', styleObjectToString(styleObject));\n      }\n    } else {\n      element.setAttribute(_key5, values[_key5]);\n    }\n  }\n\n  if (behaviorInstructions.length) {\n    for (i = 0, ii = behaviorInstructions.length; i < ii; ++i) {\n      current = behaviorInstructions[i];\n      instance = current.type.create(container, current, element, bindings);\n\n      if (instance.contentView) {\n        children.push(instance.contentView);\n      }\n\n      controllers.push(instance);\n    }\n  }\n\n  for (i = 0, ii = expressions.length; i < ii; ++i) {\n    bindings.push(expressions[i].createBinding(element));\n  }\n}\n\nexport var BoundViewFactory = function () {\n  function BoundViewFactory(parentContainer, viewFactory, partReplacements) {\n    \n\n    this.parentContainer = parentContainer;\n    this.viewFactory = viewFactory;\n    this.factoryCreateInstruction = { partReplacements: partReplacements };\n  }\n\n  BoundViewFactory.prototype.create = function create() {\n    var view = this.viewFactory.create(this.parentContainer.createChild(), this.factoryCreateInstruction);\n    view._isUserControlled = true;\n    return view;\n  };\n\n  BoundViewFactory.prototype.setCacheSize = function setCacheSize(size, doNotOverrideIfAlreadySet) {\n    this.viewFactory.setCacheSize(size, doNotOverrideIfAlreadySet);\n  };\n\n  BoundViewFactory.prototype.getCachedView = function getCachedView() {\n    return this.viewFactory.getCachedView();\n  };\n\n  BoundViewFactory.prototype.returnViewToCache = function returnViewToCache(view) {\n    this.viewFactory.returnViewToCache(view);\n  };\n\n  _createClass(BoundViewFactory, [{\n    key: 'isCaching',\n    get: function get() {\n      return this.viewFactory.isCaching;\n    }\n  }]);\n\n  return BoundViewFactory;\n}();\n\nexport var ViewFactory = function () {\n  function ViewFactory(template, instructions, resources) {\n    \n\n    this.isCaching = false;\n\n    this.template = template;\n    this.instructions = instructions;\n    this.resources = resources;\n    this.cacheSize = -1;\n    this.cache = null;\n  }\n\n  ViewFactory.prototype.setCacheSize = function setCacheSize(size, doNotOverrideIfAlreadySet) {\n    if (size) {\n      if (size === '*') {\n        size = Number.MAX_VALUE;\n      } else if (typeof size === 'string') {\n        size = parseInt(size, 10);\n      }\n    }\n\n    if (this.cacheSize === -1 || !doNotOverrideIfAlreadySet) {\n      this.cacheSize = size;\n    }\n\n    if (this.cacheSize > 0) {\n      this.cache = [];\n    } else {\n      this.cache = null;\n    }\n\n    this.isCaching = this.cacheSize > 0;\n  };\n\n  ViewFactory.prototype.getCachedView = function getCachedView() {\n    return this.cache !== null ? this.cache.pop() || null : null;\n  };\n\n  ViewFactory.prototype.returnViewToCache = function returnViewToCache(view) {\n    if (view.isAttached) {\n      view.detached();\n    }\n\n    if (view.isBound) {\n      view.unbind();\n    }\n\n    if (this.cache !== null && this.cache.length < this.cacheSize) {\n      view.fromCache = true;\n      this.cache.push(view);\n    }\n  };\n\n  ViewFactory.prototype.create = function create(container, createInstruction, element) {\n    createInstruction = createInstruction || BehaviorInstruction.normal;\n\n    var cachedView = this.getCachedView();\n    if (cachedView !== null) {\n      return cachedView;\n    }\n\n    var fragment = createInstruction.enhance ? this.template : this.template.cloneNode(true);\n    var instructables = fragment.querySelectorAll('.au-target');\n    var instructions = this.instructions;\n    var resources = this.resources;\n    var controllers = [];\n    var bindings = [];\n    var children = [];\n    var shadowSlots = Object.create(null);\n    var containers = { root: container };\n    var partReplacements = createInstruction.partReplacements;\n    var i = void 0;\n    var ii = void 0;\n    var view = void 0;\n    var instructable = void 0;\n    var instruction = void 0;\n\n    this.resources._invokeHook('beforeCreate', this, container, fragment, createInstruction);\n\n    if (element && this.surrogateInstruction !== null) {\n      applySurrogateInstruction(container, element, this.surrogateInstruction, controllers, bindings, children);\n    }\n\n    if (createInstruction.enhance && fragment.hasAttribute('au-target-id')) {\n      instructable = fragment;\n      instruction = instructions[instructable.getAttribute('au-target-id')];\n      applyInstructions(containers, instructable, instruction, controllers, bindings, children, shadowSlots, partReplacements, resources);\n    }\n\n    for (i = 0, ii = instructables.length; i < ii; ++i) {\n      instructable = instructables[i];\n      instruction = instructions[instructable.getAttribute('au-target-id')];\n      applyInstructions(containers, instructable, instruction, controllers, bindings, children, shadowSlots, partReplacements, resources);\n    }\n\n    view = new View(container, this, fragment, controllers, bindings, children, shadowSlots);\n\n    if (!createInstruction.initiatedByBehavior) {\n      view.created();\n    }\n\n    this.resources._invokeHook('afterCreate', view);\n\n    return view;\n  };\n\n  return ViewFactory;\n}();\n\nvar nextInjectorId = 0;\nfunction getNextInjectorId() {\n  return ++nextInjectorId;\n}\n\nvar lastAUTargetID = 0;\nfunction getNextAUTargetID() {\n  return (++lastAUTargetID).toString();\n}\n\nfunction makeIntoInstructionTarget(element) {\n  var value = element.getAttribute('class');\n  var auTargetID = getNextAUTargetID();\n\n  element.setAttribute('class', value ? value + ' au-target' : 'au-target');\n  element.setAttribute('au-target-id', auTargetID);\n\n  return auTargetID;\n}\n\nfunction makeShadowSlot(compiler, resources, node, instructions, parentInjectorId) {\n  var auShadowSlot = DOM.createElement('au-shadow-slot');\n  DOM.replaceNode(auShadowSlot, node);\n\n  var auTargetID = makeIntoInstructionTarget(auShadowSlot);\n  var instruction = TargetInstruction.shadowSlot(parentInjectorId);\n\n  instruction.slotName = node.getAttribute('name') || ShadowDOM.defaultSlotKey;\n  instruction.slotDestination = node.getAttribute('slot');\n\n  if (node.innerHTML.trim()) {\n    var fragment = DOM.createDocumentFragment();\n    var _child4 = void 0;\n\n    while (_child4 = node.firstChild) {\n      fragment.appendChild(_child4);\n    }\n\n    instruction.slotFallbackFactory = compiler.compile(fragment, resources);\n  }\n\n  instructions[auTargetID] = instruction;\n\n  return auShadowSlot;\n}\n\nvar defaultLetHandler = BindingLanguage.prototype.createLetExpressions;\n\nexport var ViewCompiler = (_dec7 = inject(BindingLanguage, ViewResources), _dec7(_class13 = function () {\n  function ViewCompiler(bindingLanguage, resources) {\n    \n\n    this.bindingLanguage = bindingLanguage;\n    this.resources = resources;\n  }\n\n  ViewCompiler.prototype.compile = function compile(source, resources, compileInstruction) {\n    resources = resources || this.resources;\n    compileInstruction = compileInstruction || ViewCompileInstruction.normal;\n    source = typeof source === 'string' ? DOM.createTemplateFromMarkup(source) : source;\n\n    var content = void 0;\n    var part = void 0;\n    var cacheSize = void 0;\n\n    if (source.content) {\n      part = source.getAttribute('part');\n      cacheSize = source.getAttribute('view-cache');\n      content = DOM.adoptNode(source.content);\n    } else {\n      content = source;\n    }\n\n    compileInstruction.targetShadowDOM = compileInstruction.targetShadowDOM && FEATURE.shadowDOM;\n    resources._invokeHook('beforeCompile', content, resources, compileInstruction);\n\n    var instructions = {};\n    this._compileNode(content, resources, instructions, source, 'root', !compileInstruction.targetShadowDOM);\n\n    var firstChild = content.firstChild;\n    if (firstChild && firstChild.nodeType === 1) {\n      var targetId = firstChild.getAttribute('au-target-id');\n      if (targetId) {\n        var ins = instructions[targetId];\n\n        if (ins.shadowSlot || ins.lifting || ins.elementInstruction && !ins.elementInstruction.anchorIsContainer) {\n          content.insertBefore(DOM.createComment('view'), firstChild);\n        }\n      }\n    }\n\n    var factory = new ViewFactory(content, instructions, resources);\n\n    factory.surrogateInstruction = compileInstruction.compileSurrogate ? this._compileSurrogate(source, resources) : null;\n    factory.part = part;\n\n    if (cacheSize) {\n      factory.setCacheSize(cacheSize);\n    }\n\n    resources._invokeHook('afterCompile', factory);\n\n    return factory;\n  };\n\n  ViewCompiler.prototype._compileNode = function _compileNode(node, resources, instructions, parentNode, parentInjectorId, targetLightDOM) {\n    switch (node.nodeType) {\n      case 1:\n        return this._compileElement(node, resources, instructions, parentNode, parentInjectorId, targetLightDOM);\n      case 3:\n        var expression = resources.getBindingLanguage(this.bindingLanguage).inspectTextContent(resources, node.wholeText);\n        if (expression) {\n          var marker = DOM.createElement('au-marker');\n          var auTargetID = makeIntoInstructionTarget(marker);\n          (node.parentNode || parentNode).insertBefore(marker, node);\n          node.textContent = ' ';\n          instructions[auTargetID] = TargetInstruction.contentExpression(expression);\n\n          while (node.nextSibling && node.nextSibling.nodeType === 3) {\n            (node.parentNode || parentNode).removeChild(node.nextSibling);\n          }\n        } else {\n          while (node.nextSibling && node.nextSibling.nodeType === 3) {\n            node = node.nextSibling;\n          }\n        }\n        return node.nextSibling;\n      case 11:\n        var currentChild = node.firstChild;\n        while (currentChild) {\n          currentChild = this._compileNode(currentChild, resources, instructions, node, parentInjectorId, targetLightDOM);\n        }\n        break;\n      default:\n        break;\n    }\n\n    return node.nextSibling;\n  };\n\n  ViewCompiler.prototype._compileSurrogate = function _compileSurrogate(node, resources) {\n    var tagName = node.tagName.toLowerCase();\n    var attributes = node.attributes;\n    var bindingLanguage = resources.getBindingLanguage(this.bindingLanguage);\n    var knownAttribute = void 0;\n    var property = void 0;\n    var instruction = void 0;\n    var i = void 0;\n    var ii = void 0;\n    var attr = void 0;\n    var attrName = void 0;\n    var attrValue = void 0;\n    var info = void 0;\n    var type = void 0;\n    var expressions = [];\n    var expression = void 0;\n    var behaviorInstructions = [];\n    var values = {};\n    var hasValues = false;\n    var providers = [];\n\n    for (i = 0, ii = attributes.length; i < ii; ++i) {\n      attr = attributes[i];\n      attrName = attr.name;\n      attrValue = attr.value;\n\n      info = bindingLanguage.inspectAttribute(resources, tagName, attrName, attrValue);\n      type = resources.getAttribute(info.attrName);\n\n      if (type) {\n        knownAttribute = resources.mapAttribute(info.attrName);\n        if (knownAttribute) {\n          property = type.attributes[knownAttribute];\n\n          if (property) {\n            info.defaultBindingMode = property.defaultBindingMode;\n\n            if (!info.command && !info.expression) {\n              info.command = property.hasOptions ? 'options' : null;\n            }\n\n            if (info.command && info.command !== 'options' && type.primaryProperty) {\n              var _primaryProperty = type.primaryProperty;\n              attrName = info.attrName = _primaryProperty.attribute;\n\n              info.defaultBindingMode = _primaryProperty.defaultBindingMode;\n            }\n          }\n        }\n      }\n\n      instruction = bindingLanguage.createAttributeInstruction(resources, node, info, undefined, type);\n\n      if (instruction) {\n        if (instruction.alteredAttr) {\n          type = resources.getAttribute(instruction.attrName);\n        }\n\n        if (instruction.discrete) {\n          expressions.push(instruction);\n        } else {\n          if (type) {\n            instruction.type = type;\n            this._configureProperties(instruction, resources);\n\n            if (type.liftsContent) {\n              throw new Error('You cannot place a template controller on a surrogate element.');\n            } else {\n              behaviorInstructions.push(instruction);\n            }\n          } else {\n            expressions.push(instruction.attributes[instruction.attrName]);\n          }\n        }\n      } else {\n        if (type) {\n          instruction = BehaviorInstruction.attribute(attrName, type);\n          instruction.attributes[resources.mapAttribute(attrName)] = attrValue;\n\n          if (type.liftsContent) {\n            throw new Error('You cannot place a template controller on a surrogate element.');\n          } else {\n            behaviorInstructions.push(instruction);\n          }\n        } else if (attrName !== 'id' && attrName !== 'part' && attrName !== 'replace-part') {\n          hasValues = true;\n          values[attrName] = attrValue;\n        }\n      }\n    }\n\n    if (expressions.length || behaviorInstructions.length || hasValues) {\n      for (i = 0, ii = behaviorInstructions.length; i < ii; ++i) {\n        instruction = behaviorInstructions[i];\n        instruction.type.compile(this, resources, node, instruction);\n        providers.push(instruction.type.target);\n      }\n\n      for (i = 0, ii = expressions.length; i < ii; ++i) {\n        expression = expressions[i];\n        if (expression.attrToRemove !== undefined) {\n          node.removeAttribute(expression.attrToRemove);\n        }\n      }\n\n      return TargetInstruction.surrogate(providers, behaviorInstructions, expressions, values);\n    }\n\n    return null;\n  };\n\n  ViewCompiler.prototype._compileElement = function _compileElement(node, resources, instructions, parentNode, parentInjectorId, targetLightDOM) {\n    var tagName = node.tagName.toLowerCase();\n    var attributes = node.attributes;\n    var expressions = [];\n    var expression = void 0;\n    var behaviorInstructions = [];\n    var providers = [];\n    var bindingLanguage = resources.getBindingLanguage(this.bindingLanguage);\n    var liftingInstruction = void 0;\n    var viewFactory = void 0;\n    var type = void 0;\n    var elementInstruction = void 0;\n    var elementProperty = void 0;\n    var i = void 0;\n    var ii = void 0;\n    var attr = void 0;\n    var attrName = void 0;\n    var attrValue = void 0;\n    var originalAttrName = void 0;\n    var instruction = void 0;\n    var info = void 0;\n    var property = void 0;\n    var knownAttribute = void 0;\n    var auTargetID = void 0;\n    var injectorId = void 0;\n\n    if (tagName === 'slot') {\n      if (targetLightDOM) {\n        node = makeShadowSlot(this, resources, node, instructions, parentInjectorId);\n      }\n      return node.nextSibling;\n    } else if (tagName === 'template') {\n      if (!('content' in node)) {\n        throw new Error('You cannot place a template element within ' + node.namespaceURI + ' namespace');\n      }\n      viewFactory = this.compile(node, resources);\n      viewFactory.part = node.getAttribute('part');\n    } else {\n      type = resources.getElement(node.getAttribute('as-element') || tagName);\n\n      if (tagName === 'let' && !type && bindingLanguage.createLetExpressions !== defaultLetHandler) {\n        expressions = bindingLanguage.createLetExpressions(resources, node);\n        auTargetID = makeIntoInstructionTarget(node);\n        instructions[auTargetID] = TargetInstruction.letElement(expressions);\n        return node.nextSibling;\n      }\n      if (type) {\n        elementInstruction = BehaviorInstruction.element(node, type);\n        type.processAttributes(this, resources, node, attributes, elementInstruction);\n        behaviorInstructions.push(elementInstruction);\n      }\n    }\n\n    for (i = 0, ii = attributes.length; i < ii; ++i) {\n      attr = attributes[i];\n      originalAttrName = attrName = attr.name;\n      attrValue = attr.value;\n      info = bindingLanguage.inspectAttribute(resources, tagName, attrName, attrValue);\n\n      if (targetLightDOM && info.attrName === 'slot') {\n        info.attrName = attrName = 'au-slot';\n      }\n\n      type = resources.getAttribute(info.attrName);\n      elementProperty = null;\n\n      if (type) {\n        knownAttribute = resources.mapAttribute(info.attrName);\n        if (knownAttribute) {\n          property = type.attributes[knownAttribute];\n\n          if (property) {\n            info.defaultBindingMode = property.defaultBindingMode;\n\n            if (!info.command && !info.expression) {\n              info.command = property.hasOptions ? 'options' : null;\n            }\n\n            if (info.command && info.command !== 'options' && type.primaryProperty) {\n              var _primaryProperty2 = type.primaryProperty;\n              attrName = info.attrName = _primaryProperty2.attribute;\n\n              info.defaultBindingMode = _primaryProperty2.defaultBindingMode;\n            }\n          }\n        }\n      } else if (elementInstruction) {\n        elementProperty = elementInstruction.type.attributes[info.attrName];\n        if (elementProperty) {\n          info.defaultBindingMode = elementProperty.defaultBindingMode;\n        }\n      }\n\n      if (elementProperty) {\n        instruction = bindingLanguage.createAttributeInstruction(resources, node, info, elementInstruction);\n      } else {\n        instruction = bindingLanguage.createAttributeInstruction(resources, node, info, undefined, type);\n      }\n\n      if (instruction) {\n        if (instruction.alteredAttr) {\n          type = resources.getAttribute(instruction.attrName);\n        }\n\n        if (instruction.discrete) {\n          expressions.push(instruction);\n        } else {\n          if (type) {\n            instruction.type = type;\n            this._configureProperties(instruction, resources);\n\n            if (type.liftsContent) {\n              instruction.originalAttrName = originalAttrName;\n              liftingInstruction = instruction;\n              break;\n            } else {\n              behaviorInstructions.push(instruction);\n            }\n          } else if (elementProperty) {\n            elementInstruction.attributes[info.attrName].targetProperty = elementProperty.name;\n          } else {\n            expressions.push(instruction.attributes[instruction.attrName]);\n          }\n        }\n      } else {\n        if (type) {\n          instruction = BehaviorInstruction.attribute(attrName, type);\n          instruction.attributes[resources.mapAttribute(attrName)] = attrValue;\n\n          if (type.liftsContent) {\n            instruction.originalAttrName = originalAttrName;\n            liftingInstruction = instruction;\n            break;\n          } else {\n            behaviorInstructions.push(instruction);\n          }\n        } else if (elementProperty) {\n          elementInstruction.attributes[attrName] = attrValue;\n        }\n      }\n    }\n\n    if (liftingInstruction) {\n      liftingInstruction.viewFactory = viewFactory;\n      node = liftingInstruction.type.compile(this, resources, node, liftingInstruction, parentNode);\n      auTargetID = makeIntoInstructionTarget(node);\n      instructions[auTargetID] = TargetInstruction.lifting(parentInjectorId, liftingInstruction);\n    } else {\n      var skipContentProcessing = false;\n\n      if (expressions.length || behaviorInstructions.length) {\n        injectorId = behaviorInstructions.length ? getNextInjectorId() : false;\n\n        for (i = 0, ii = behaviorInstructions.length; i < ii; ++i) {\n          instruction = behaviorInstructions[i];\n          instruction.type.compile(this, resources, node, instruction, parentNode);\n          providers.push(instruction.type.target);\n          skipContentProcessing = skipContentProcessing || instruction.skipContentProcessing;\n        }\n\n        for (i = 0, ii = expressions.length; i < ii; ++i) {\n          expression = expressions[i];\n          if (expression.attrToRemove !== undefined) {\n            node.removeAttribute(expression.attrToRemove);\n          }\n        }\n\n        auTargetID = makeIntoInstructionTarget(node);\n        instructions[auTargetID] = TargetInstruction.normal(injectorId, parentInjectorId, providers, behaviorInstructions, expressions, elementInstruction);\n      }\n\n      if (skipContentProcessing) {\n        return node.nextSibling;\n      }\n\n      var currentChild = node.firstChild;\n      while (currentChild) {\n        currentChild = this._compileNode(currentChild, resources, instructions, node, injectorId || parentInjectorId, targetLightDOM);\n      }\n    }\n\n    return node.nextSibling;\n  };\n\n  ViewCompiler.prototype._configureProperties = function _configureProperties(instruction, resources) {\n    var type = instruction.type;\n    var attrName = instruction.attrName;\n    var attributes = instruction.attributes;\n    var property = void 0;\n    var key = void 0;\n    var value = void 0;\n\n    var knownAttribute = resources.mapAttribute(attrName);\n    if (knownAttribute && attrName in attributes && knownAttribute !== attrName) {\n      attributes[knownAttribute] = attributes[attrName];\n      delete attributes[attrName];\n    }\n\n    for (key in attributes) {\n      value = attributes[key];\n\n      if (value !== null && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') {\n        property = type.attributes[key];\n\n        if (property !== undefined) {\n          value.targetProperty = property.name;\n        } else {\n          value.targetProperty = key;\n        }\n      }\n    }\n  };\n\n  return ViewCompiler;\n}()) || _class13);\n\nexport var ResourceModule = function () {\n  function ResourceModule(moduleId) {\n    \n\n    this.id = moduleId;\n    this.moduleInstance = null;\n    this.mainResource = null;\n    this.resources = null;\n    this.viewStrategy = null;\n    this.isInitialized = false;\n    this.onLoaded = null;\n    this.loadContext = null;\n  }\n\n  ResourceModule.prototype.initialize = function initialize(container) {\n    var current = this.mainResource;\n    var resources = this.resources;\n    var vs = this.viewStrategy;\n\n    if (this.isInitialized) {\n      return;\n    }\n\n    this.isInitialized = true;\n\n    if (current !== undefined) {\n      current.metadata.viewStrategy = vs;\n      current.initialize(container);\n    }\n\n    for (var i = 0, ii = resources.length; i < ii; ++i) {\n      current = resources[i];\n      current.metadata.viewStrategy = vs;\n      current.initialize(container);\n    }\n  };\n\n  ResourceModule.prototype.register = function register(registry, name) {\n    var main = this.mainResource;\n    var resources = this.resources;\n\n    if (main !== undefined) {\n      main.register(registry, name);\n      name = null;\n    }\n\n    for (var i = 0, ii = resources.length; i < ii; ++i) {\n      resources[i].register(registry, name);\n      name = null;\n    }\n  };\n\n  ResourceModule.prototype.load = function load(container, loadContext) {\n    if (this.onLoaded !== null) {\n      return this.loadContext === loadContext ? Promise.resolve() : this.onLoaded;\n    }\n\n    var main = this.mainResource;\n    var resources = this.resources;\n    var loads = void 0;\n\n    if (main !== undefined) {\n      loads = new Array(resources.length + 1);\n      loads[0] = main.load(container, loadContext);\n      for (var i = 0, ii = resources.length; i < ii; ++i) {\n        loads[i + 1] = resources[i].load(container, loadContext);\n      }\n    } else {\n      loads = new Array(resources.length);\n      for (var _i2 = 0, _ii = resources.length; _i2 < _ii; ++_i2) {\n        loads[_i2] = resources[_i2].load(container, loadContext);\n      }\n    }\n\n    this.loadContext = loadContext;\n    this.onLoaded = Promise.all(loads);\n    return this.onLoaded;\n  };\n\n  return ResourceModule;\n}();\n\nexport var ResourceDescription = function () {\n  function ResourceDescription(key, exportedValue, resourceTypeMeta) {\n    \n\n    if (!resourceTypeMeta) {\n      resourceTypeMeta = metadata.get(metadata.resource, exportedValue);\n\n      if (!resourceTypeMeta) {\n        resourceTypeMeta = new HtmlBehaviorResource();\n        resourceTypeMeta.elementName = _hyphenate(key);\n        metadata.define(metadata.resource, resourceTypeMeta, exportedValue);\n      }\n    }\n\n    if (resourceTypeMeta instanceof HtmlBehaviorResource) {\n      if (resourceTypeMeta.elementName === undefined) {\n        resourceTypeMeta.elementName = _hyphenate(key);\n      } else if (resourceTypeMeta.attributeName === undefined) {\n        resourceTypeMeta.attributeName = _hyphenate(key);\n      } else if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\n        HtmlBehaviorResource.convention(key, resourceTypeMeta);\n      }\n    } else if (!resourceTypeMeta.name) {\n      resourceTypeMeta.name = _hyphenate(key);\n    }\n\n    this.metadata = resourceTypeMeta;\n    this.value = exportedValue;\n  }\n\n  ResourceDescription.prototype.initialize = function initialize(container) {\n    this.metadata.initialize(container, this.value);\n  };\n\n  ResourceDescription.prototype.register = function register(registry, name) {\n    this.metadata.register(registry, name);\n  };\n\n  ResourceDescription.prototype.load = function load(container, loadContext) {\n    return this.metadata.load(container, this.value, loadContext);\n  };\n\n  return ResourceDescription;\n}();\n\nexport var ModuleAnalyzer = function () {\n  function ModuleAnalyzer() {\n    \n\n    this.cache = Object.create(null);\n  }\n\n  ModuleAnalyzer.prototype.getAnalysis = function getAnalysis(moduleId) {\n    return this.cache[moduleId];\n  };\n\n  ModuleAnalyzer.prototype.analyze = function analyze(moduleId, moduleInstance, mainResourceKey) {\n    var mainResource = void 0;\n    var fallbackValue = void 0;\n    var fallbackKey = void 0;\n    var resourceTypeMeta = void 0;\n    var key = void 0;\n    var exportedValue = void 0;\n    var resources = [];\n    var conventional = void 0;\n    var vs = void 0;\n    var resourceModule = void 0;\n\n    resourceModule = this.cache[moduleId];\n    if (resourceModule) {\n      return resourceModule;\n    }\n\n    resourceModule = new ResourceModule(moduleId);\n    this.cache[moduleId] = resourceModule;\n\n    if (typeof moduleInstance === 'function') {\n      moduleInstance = { 'default': moduleInstance };\n    }\n\n    if (mainResourceKey) {\n      mainResource = new ResourceDescription(mainResourceKey, moduleInstance[mainResourceKey]);\n    }\n\n    for (key in moduleInstance) {\n      exportedValue = moduleInstance[key];\n\n      if (key === mainResourceKey || typeof exportedValue !== 'function') {\n        continue;\n      }\n\n      resourceTypeMeta = metadata.get(metadata.resource, exportedValue);\n\n      if (resourceTypeMeta) {\n        if (resourceTypeMeta instanceof HtmlBehaviorResource) {\n          ViewResources.convention(exportedValue, resourceTypeMeta);\n\n          if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\n            HtmlBehaviorResource.convention(key, resourceTypeMeta);\n          }\n\n          if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\n            resourceTypeMeta.elementName = _hyphenate(key);\n          }\n        }\n\n        if (!mainResource && resourceTypeMeta instanceof HtmlBehaviorResource && resourceTypeMeta.elementName !== null) {\n          mainResource = new ResourceDescription(key, exportedValue, resourceTypeMeta);\n        } else {\n          resources.push(new ResourceDescription(key, exportedValue, resourceTypeMeta));\n        }\n      } else if (viewStrategy.decorates(exportedValue)) {\n        vs = exportedValue;\n      } else if (exportedValue instanceof TemplateRegistryEntry) {\n        vs = new TemplateRegistryViewStrategy(moduleId, exportedValue);\n      } else {\n        if (conventional = ViewResources.convention(exportedValue)) {\n          if (conventional.elementName !== null && !mainResource) {\n            mainResource = new ResourceDescription(key, exportedValue, conventional);\n          } else {\n            resources.push(new ResourceDescription(key, exportedValue, conventional));\n          }\n          metadata.define(metadata.resource, conventional, exportedValue);\n        } else if (conventional = HtmlBehaviorResource.convention(key)) {\n          if (conventional.elementName !== null && !mainResource) {\n            mainResource = new ResourceDescription(key, exportedValue, conventional);\n          } else {\n            resources.push(new ResourceDescription(key, exportedValue, conventional));\n          }\n\n          metadata.define(metadata.resource, conventional, exportedValue);\n        } else if (conventional = ValueConverterResource.convention(key) || BindingBehaviorResource.convention(key) || ViewEngineHooksResource.convention(key)) {\n          resources.push(new ResourceDescription(key, exportedValue, conventional));\n          metadata.define(metadata.resource, conventional, exportedValue);\n        } else if (!fallbackValue) {\n          fallbackValue = exportedValue;\n          fallbackKey = key;\n        }\n      }\n    }\n\n    if (!mainResource && fallbackValue) {\n      mainResource = new ResourceDescription(fallbackKey, fallbackValue);\n    }\n\n    resourceModule.moduleInstance = moduleInstance;\n    resourceModule.mainResource = mainResource;\n    resourceModule.resources = resources;\n    resourceModule.viewStrategy = vs;\n\n    return resourceModule;\n  };\n\n  return ModuleAnalyzer;\n}();\n\nvar logger = LogManager.getLogger('templating');\n\nfunction ensureRegistryEntry(loader, urlOrRegistryEntry) {\n  if (urlOrRegistryEntry instanceof TemplateRegistryEntry) {\n    return Promise.resolve(urlOrRegistryEntry);\n  }\n\n  return loader.loadTemplate(urlOrRegistryEntry);\n}\n\nvar ProxyViewFactory = function () {\n  function ProxyViewFactory(promise) {\n    var _this8 = this;\n\n    \n\n    promise.then(function (x) {\n      return _this8.viewFactory = x;\n    });\n  }\n\n  ProxyViewFactory.prototype.create = function create(container, bindingContext, createInstruction, element) {\n    return this.viewFactory.create(container, bindingContext, createInstruction, element);\n  };\n\n  ProxyViewFactory.prototype.setCacheSize = function setCacheSize(size, doNotOverrideIfAlreadySet) {\n    this.viewFactory.setCacheSize(size, doNotOverrideIfAlreadySet);\n  };\n\n  ProxyViewFactory.prototype.getCachedView = function getCachedView() {\n    return this.viewFactory.getCachedView();\n  };\n\n  ProxyViewFactory.prototype.returnViewToCache = function returnViewToCache(view) {\n    this.viewFactory.returnViewToCache(view);\n  };\n\n  _createClass(ProxyViewFactory, [{\n    key: 'isCaching',\n    get: function get() {\n      return this.viewFactory.isCaching;\n    }\n  }]);\n\n  return ProxyViewFactory;\n}();\n\nvar auSlotBehavior = null;\n\nexport var ViewEngine = (_dec8 = inject(Loader, Container, ViewCompiler, ModuleAnalyzer, ViewResources), _dec8(_class14 = (_temp4 = _class15 = function () {\n  function ViewEngine(loader, container, viewCompiler, moduleAnalyzer, appResources) {\n    \n\n    this.loader = loader;\n    this.container = container;\n    this.viewCompiler = viewCompiler;\n    this.moduleAnalyzer = moduleAnalyzer;\n    this.appResources = appResources;\n    this._pluginMap = {};\n\n    if (auSlotBehavior === null) {\n      auSlotBehavior = new HtmlBehaviorResource();\n      auSlotBehavior.attributeName = 'au-slot';\n      metadata.define(metadata.resource, auSlotBehavior, SlotCustomAttribute);\n    }\n\n    auSlotBehavior.initialize(container, SlotCustomAttribute);\n    auSlotBehavior.register(appResources);\n  }\n\n  ViewEngine.prototype.addResourcePlugin = function addResourcePlugin(extension, implementation) {\n    var name = extension.replace('.', '') + '-resource-plugin';\n    this._pluginMap[extension] = name;\n    this.loader.addPlugin(name, implementation);\n  };\n\n  ViewEngine.prototype.loadViewFactory = function loadViewFactory(urlOrRegistryEntry, compileInstruction, loadContext, target) {\n    var _this9 = this;\n\n    loadContext = loadContext || new ResourceLoadContext();\n\n    return ensureRegistryEntry(this.loader, urlOrRegistryEntry).then(function (registryEntry) {\n      var url = registryEntry.address;\n\n      if (registryEntry.onReady) {\n        if (!loadContext.hasDependency(url)) {\n          loadContext.addDependency(url);\n          return registryEntry.onReady;\n        }\n\n        if (registryEntry.template === null) {\n          return registryEntry.onReady;\n        }\n\n        return Promise.resolve(new ProxyViewFactory(registryEntry.onReady));\n      }\n\n      loadContext.addDependency(url);\n\n      registryEntry.onReady = _this9.loadTemplateResources(registryEntry, compileInstruction, loadContext, target).then(function (resources) {\n        registryEntry.resources = resources;\n\n        if (registryEntry.template === null) {\n          return registryEntry.factory = null;\n        }\n\n        var viewFactory = _this9.viewCompiler.compile(registryEntry.template, resources, compileInstruction);\n        return registryEntry.factory = viewFactory;\n      });\n\n      return registryEntry.onReady;\n    });\n  };\n\n  ViewEngine.prototype.loadTemplateResources = function loadTemplateResources(registryEntry, compileInstruction, loadContext, target) {\n    var resources = new ViewResources(this.appResources, registryEntry.address);\n    var dependencies = registryEntry.dependencies;\n    var importIds = void 0;\n    var names = void 0;\n\n    compileInstruction = compileInstruction || ViewCompileInstruction.normal;\n\n    if (dependencies.length === 0 && !compileInstruction.associatedModuleId) {\n      return Promise.resolve(resources);\n    }\n\n    importIds = dependencies.map(function (x) {\n      return x.src;\n    });\n    names = dependencies.map(function (x) {\n      return x.name;\n    });\n    logger.debug('importing resources for ' + registryEntry.address, importIds);\n\n    if (target) {\n      var viewModelRequires = metadata.get(ViewEngine.viewModelRequireMetadataKey, target);\n      if (viewModelRequires) {\n        var templateImportCount = importIds.length;\n        for (var i = 0, ii = viewModelRequires.length; i < ii; ++i) {\n          var req = viewModelRequires[i];\n          var importId = typeof req === 'function' ? Origin.get(req).moduleId : relativeToFile(req.src || req, registryEntry.address);\n\n          if (importIds.indexOf(importId) === -1) {\n            importIds.push(importId);\n            names.push(req.as);\n          }\n        }\n        logger.debug('importing ViewModel resources for ' + compileInstruction.associatedModuleId, importIds.slice(templateImportCount));\n      }\n    }\n\n    return this.importViewResources(importIds, names, resources, compileInstruction, loadContext);\n  };\n\n  ViewEngine.prototype.importViewModelResource = function importViewModelResource(moduleImport, moduleMember) {\n    var _this10 = this;\n\n    return this.loader.loadModule(moduleImport).then(function (viewModelModule) {\n      var normalizedId = Origin.get(viewModelModule).moduleId;\n      var resourceModule = _this10.moduleAnalyzer.analyze(normalizedId, viewModelModule, moduleMember);\n\n      if (!resourceModule.mainResource) {\n        throw new Error('No view model found in module \"' + moduleImport + '\".');\n      }\n\n      resourceModule.initialize(_this10.container);\n\n      return resourceModule.mainResource;\n    });\n  };\n\n  ViewEngine.prototype.importViewResources = function importViewResources(moduleIds, names, resources, compileInstruction, loadContext) {\n    var _this11 = this;\n\n    loadContext = loadContext || new ResourceLoadContext();\n    compileInstruction = compileInstruction || ViewCompileInstruction.normal;\n\n    moduleIds = moduleIds.map(function (x) {\n      return _this11._applyLoaderPlugin(x);\n    });\n\n    return this.loader.loadAllModules(moduleIds).then(function (imports) {\n      var i = void 0;\n      var ii = void 0;\n      var analysis = void 0;\n      var normalizedId = void 0;\n      var current = void 0;\n      var associatedModule = void 0;\n      var container = _this11.container;\n      var moduleAnalyzer = _this11.moduleAnalyzer;\n      var allAnalysis = new Array(imports.length);\n\n      for (i = 0, ii = imports.length; i < ii; ++i) {\n        current = imports[i];\n        normalizedId = Origin.get(current).moduleId;\n\n        analysis = moduleAnalyzer.analyze(normalizedId, current);\n        analysis.initialize(container);\n        analysis.register(resources, names[i]);\n\n        allAnalysis[i] = analysis;\n      }\n\n      if (compileInstruction.associatedModuleId) {\n        associatedModule = moduleAnalyzer.getAnalysis(compileInstruction.associatedModuleId);\n\n        if (associatedModule) {\n          associatedModule.register(resources);\n        }\n      }\n\n      for (i = 0, ii = allAnalysis.length; i < ii; ++i) {\n        allAnalysis[i] = allAnalysis[i].load(container, loadContext);\n      }\n\n      return Promise.all(allAnalysis).then(function () {\n        return resources;\n      });\n    });\n  };\n\n  ViewEngine.prototype._applyLoaderPlugin = function _applyLoaderPlugin(id) {\n    var index = id.lastIndexOf('.');\n    if (index !== -1) {\n      var ext = id.substring(index);\n      var pluginName = this._pluginMap[ext];\n\n      if (pluginName === undefined) {\n        return id;\n      }\n\n      return this.loader.applyPluginToUrl(id, pluginName);\n    }\n\n    return id;\n  };\n\n  return ViewEngine;\n}(), _class15.viewModelRequireMetadataKey = 'aurelia:view-model-require', _temp4)) || _class14);\n\nexport var Controller = function () {\n  function Controller(behavior, instruction, viewModel, container) {\n    \n\n    this.behavior = behavior;\n    this.instruction = instruction;\n    this.viewModel = viewModel;\n    this.isAttached = false;\n    this.view = null;\n    this.isBound = false;\n    this.scope = null;\n    this.container = container;\n    this.elementEvents = container.elementEvents || null;\n\n    var observerLookup = behavior.observerLocator.getOrCreateObserversLookup(viewModel);\n    var handlesBind = behavior.handlesBind;\n    var attributes = instruction.attributes;\n    var boundProperties = this.boundProperties = [];\n    var properties = behavior.properties;\n    var i = void 0;\n    var ii = void 0;\n\n    behavior._ensurePropertiesDefined(viewModel, observerLookup);\n\n    for (i = 0, ii = properties.length; i < ii; ++i) {\n      properties[i]._initialize(viewModel, observerLookup, attributes, handlesBind, boundProperties);\n    }\n  }\n\n  Controller.prototype.created = function created(owningView) {\n    if (this.behavior.handlesCreated) {\n      this.viewModel.created(owningView, this.view);\n    }\n  };\n\n  Controller.prototype.automate = function automate(overrideContext, owningView) {\n    this.view.bindingContext = this.viewModel;\n    this.view.overrideContext = overrideContext || createOverrideContext(this.viewModel);\n    this.view._isUserControlled = true;\n\n    if (this.behavior.handlesCreated) {\n      this.viewModel.created(owningView || null, this.view);\n    }\n\n    this.bind(this.view);\n  };\n\n  Controller.prototype.bind = function bind(scope) {\n    var skipSelfSubscriber = this.behavior.handlesBind;\n    var boundProperties = this.boundProperties;\n    var i = void 0;\n    var ii = void 0;\n    var x = void 0;\n    var observer = void 0;\n    var selfSubscriber = void 0;\n\n    if (this.isBound) {\n      if (this.scope === scope) {\n        return;\n      }\n\n      this.unbind();\n    }\n\n    this.isBound = true;\n    this.scope = scope;\n\n    for (i = 0, ii = boundProperties.length; i < ii; ++i) {\n      x = boundProperties[i];\n      observer = x.observer;\n      selfSubscriber = observer.selfSubscriber;\n      observer.publishing = false;\n\n      if (skipSelfSubscriber) {\n        observer.selfSubscriber = null;\n      }\n\n      x.binding.bind(scope);\n      observer.call();\n\n      observer.publishing = true;\n      observer.selfSubscriber = selfSubscriber;\n    }\n\n    var overrideContext = void 0;\n    if (this.view !== null) {\n      if (skipSelfSubscriber) {\n        this.view.viewModelScope = scope;\n      }\n\n      if (this.viewModel === scope.overrideContext.bindingContext) {\n        overrideContext = scope.overrideContext;\n      } else if (this.instruction.inheritBindingContext) {\n        overrideContext = createOverrideContext(this.viewModel, scope.overrideContext);\n      } else {\n        overrideContext = createOverrideContext(this.viewModel);\n        overrideContext.__parentOverrideContext = scope.overrideContext;\n      }\n\n      this.view.bind(this.viewModel, overrideContext);\n    } else if (skipSelfSubscriber) {\n      overrideContext = scope.overrideContext;\n\n      if (scope.overrideContext.__parentOverrideContext !== undefined && this.viewModel.viewFactory && this.viewModel.viewFactory.factoryCreateInstruction.partReplacements) {\n        overrideContext = Object.assign({}, scope.overrideContext);\n        overrideContext.parentOverrideContext = scope.overrideContext.__parentOverrideContext;\n      }\n      this.viewModel.bind(scope.bindingContext, overrideContext);\n    }\n  };\n\n  Controller.prototype.unbind = function unbind() {\n    if (this.isBound) {\n      var _boundProperties = this.boundProperties;\n      var _i3 = void 0;\n      var _ii2 = void 0;\n\n      this.isBound = false;\n      this.scope = null;\n\n      if (this.view !== null) {\n        this.view.unbind();\n      }\n\n      if (this.behavior.handlesUnbind) {\n        this.viewModel.unbind();\n      }\n\n      if (this.elementEvents !== null) {\n        this.elementEvents.disposeAll();\n      }\n\n      for (_i3 = 0, _ii2 = _boundProperties.length; _i3 < _ii2; ++_i3) {\n        _boundProperties[_i3].binding.unbind();\n      }\n    }\n  };\n\n  Controller.prototype.attached = function attached() {\n    if (this.isAttached) {\n      return;\n    }\n\n    this.isAttached = true;\n\n    if (this.behavior.handlesAttached) {\n      this.viewModel.attached();\n    }\n\n    if (this.view !== null) {\n      this.view.attached();\n    }\n  };\n\n  Controller.prototype.detached = function detached() {\n    if (this.isAttached) {\n      this.isAttached = false;\n\n      if (this.view !== null) {\n        this.view.detached();\n      }\n\n      if (this.behavior.handlesDetached) {\n        this.viewModel.detached();\n      }\n    }\n  };\n\n  return Controller;\n}();\n\nexport var BehaviorPropertyObserver = (_dec9 = subscriberCollection(), _dec9(_class16 = function () {\n  function BehaviorPropertyObserver(taskQueue, obj, propertyName, selfSubscriber, initialValue) {\n    \n\n    this.taskQueue = taskQueue;\n    this.obj = obj;\n    this.propertyName = propertyName;\n    this.notqueued = true;\n    this.publishing = false;\n    this.selfSubscriber = selfSubscriber;\n    this.currentValue = this.oldValue = initialValue;\n  }\n\n  BehaviorPropertyObserver.prototype.getValue = function getValue() {\n    return this.currentValue;\n  };\n\n  BehaviorPropertyObserver.prototype.setValue = function setValue(newValue) {\n    var oldValue = this.currentValue;\n\n    if (!Object.is(newValue, oldValue)) {\n      this.oldValue = oldValue;\n      this.currentValue = newValue;\n\n      if (this.publishing && this.notqueued) {\n        if (this.taskQueue.flushing) {\n          this.call();\n        } else {\n          this.notqueued = false;\n          this.taskQueue.queueMicroTask(this);\n        }\n      }\n    }\n  };\n\n  BehaviorPropertyObserver.prototype.call = function call() {\n    var oldValue = this.oldValue;\n    var newValue = this.currentValue;\n\n    this.notqueued = true;\n\n    if (Object.is(newValue, oldValue)) {\n      return;\n    }\n\n    if (this.selfSubscriber) {\n      this.selfSubscriber(newValue, oldValue);\n    }\n\n    this.callSubscribers(newValue, oldValue);\n    this.oldValue = newValue;\n  };\n\n  BehaviorPropertyObserver.prototype.subscribe = function subscribe(context, callable) {\n    this.addSubscriber(context, callable);\n  };\n\n  BehaviorPropertyObserver.prototype.unsubscribe = function unsubscribe(context, callable) {\n    this.removeSubscriber(context, callable);\n  };\n\n  return BehaviorPropertyObserver;\n}()) || _class16);\n\nfunction getObserver(instance, name) {\n  var lookup = instance.__observers__;\n\n  if (lookup === undefined) {\n    var ctor = Object.getPrototypeOf(instance).constructor;\n    var _behavior = metadata.get(metadata.resource, ctor);\n    if (!_behavior.isInitialized) {\n      _behavior.initialize(Container.instance || new Container(), instance.constructor);\n    }\n\n    lookup = _behavior.observerLocator.getOrCreateObserversLookup(instance);\n    _behavior._ensurePropertiesDefined(instance, lookup);\n  }\n\n  return lookup[name];\n}\n\nexport var BindableProperty = function () {\n  function BindableProperty(nameOrConfig) {\n    \n\n    if (typeof nameOrConfig === 'string') {\n      this.name = nameOrConfig;\n    } else {\n      Object.assign(this, nameOrConfig);\n    }\n\n    this.attribute = this.attribute || _hyphenate(this.name);\n    var defaultBindingMode = this.defaultBindingMode;\n    if (defaultBindingMode === null || defaultBindingMode === undefined) {\n      this.defaultBindingMode = bindingMode.oneWay;\n    } else if (typeof defaultBindingMode === 'string') {\n      this.defaultBindingMode = bindingMode[defaultBindingMode] || bindingMode.oneWay;\n    }\n    this.changeHandler = this.changeHandler || null;\n    this.owner = null;\n    this.descriptor = null;\n  }\n\n  BindableProperty.prototype.registerWith = function registerWith(target, behavior, descriptor) {\n    behavior.properties.push(this);\n    behavior.attributes[this.attribute] = this;\n    this.owner = behavior;\n\n    if (descriptor) {\n      this.descriptor = descriptor;\n      return this._configureDescriptor(descriptor);\n    }\n\n    return undefined;\n  };\n\n  BindableProperty.prototype._configureDescriptor = function _configureDescriptor(descriptor) {\n    var name = this.name;\n\n    descriptor.configurable = true;\n    descriptor.enumerable = true;\n\n    if ('initializer' in descriptor) {\n      this.defaultValue = descriptor.initializer;\n      delete descriptor.initializer;\n      delete descriptor.writable;\n    }\n\n    if ('value' in descriptor) {\n      this.defaultValue = descriptor.value;\n      delete descriptor.value;\n      delete descriptor.writable;\n    }\n\n    descriptor.get = function () {\n      return getObserver(this, name).getValue();\n    };\n\n    descriptor.set = function (value) {\n      getObserver(this, name).setValue(value);\n    };\n\n    descriptor.get.getObserver = function (obj) {\n      return getObserver(obj, name);\n    };\n\n    return descriptor;\n  };\n\n  BindableProperty.prototype.defineOn = function defineOn(target, behavior) {\n    var name = this.name;\n    var handlerName = void 0;\n\n    if (this.changeHandler === null) {\n      handlerName = name + 'Changed';\n      if (handlerName in target.prototype) {\n        this.changeHandler = handlerName;\n      }\n    }\n\n    if (this.descriptor === null) {\n      Object.defineProperty(target.prototype, name, this._configureDescriptor(behavior, {}));\n    }\n  };\n\n  BindableProperty.prototype.createObserver = function createObserver(viewModel) {\n    var selfSubscriber = null;\n    var defaultValue = this.defaultValue;\n    var changeHandlerName = this.changeHandler;\n    var name = this.name;\n    var initialValue = void 0;\n\n    if (this.hasOptions) {\n      return undefined;\n    }\n\n    if (changeHandlerName in viewModel) {\n      if ('propertyChanged' in viewModel) {\n        selfSubscriber = function selfSubscriber(newValue, oldValue) {\n          viewModel[changeHandlerName](newValue, oldValue);\n          viewModel.propertyChanged(name, newValue, oldValue);\n        };\n      } else {\n        selfSubscriber = function selfSubscriber(newValue, oldValue) {\n          return viewModel[changeHandlerName](newValue, oldValue);\n        };\n      }\n    } else if ('propertyChanged' in viewModel) {\n      selfSubscriber = function selfSubscriber(newValue, oldValue) {\n        return viewModel.propertyChanged(name, newValue, oldValue);\n      };\n    } else if (changeHandlerName !== null) {\n      throw new Error('Change handler ' + changeHandlerName + ' was specified but not declared on the class.');\n    }\n\n    if (defaultValue !== undefined) {\n      initialValue = typeof defaultValue === 'function' ? defaultValue.call(viewModel) : defaultValue;\n    }\n\n    return new BehaviorPropertyObserver(this.owner.taskQueue, viewModel, this.name, selfSubscriber, initialValue);\n  };\n\n  BindableProperty.prototype._initialize = function _initialize(viewModel, observerLookup, attributes, behaviorHandlesBind, boundProperties) {\n    var selfSubscriber = void 0;\n    var observer = void 0;\n    var attribute = void 0;\n    var defaultValue = this.defaultValue;\n\n    if (this.isDynamic) {\n      for (var _key6 in attributes) {\n        this._createDynamicProperty(viewModel, observerLookup, behaviorHandlesBind, _key6, attributes[_key6], boundProperties);\n      }\n    } else if (!this.hasOptions) {\n      observer = observerLookup[this.name];\n\n      if (attributes !== null) {\n        selfSubscriber = observer.selfSubscriber;\n        attribute = attributes[this.attribute];\n\n        if (behaviorHandlesBind) {\n          observer.selfSubscriber = null;\n        }\n\n        if (typeof attribute === 'string') {\n          viewModel[this.name] = attribute;\n          observer.call();\n        } else if (attribute) {\n          boundProperties.push({ observer: observer, binding: attribute.createBinding(viewModel) });\n        } else if (defaultValue !== undefined) {\n          observer.call();\n        }\n\n        observer.selfSubscriber = selfSubscriber;\n      }\n\n      observer.publishing = true;\n    }\n  };\n\n  BindableProperty.prototype._createDynamicProperty = function _createDynamicProperty(viewModel, observerLookup, behaviorHandlesBind, name, attribute, boundProperties) {\n    var changeHandlerName = name + 'Changed';\n    var selfSubscriber = null;\n    var observer = void 0;\n    var info = void 0;\n\n    if (changeHandlerName in viewModel) {\n      if ('propertyChanged' in viewModel) {\n        selfSubscriber = function selfSubscriber(newValue, oldValue) {\n          viewModel[changeHandlerName](newValue, oldValue);\n          viewModel.propertyChanged(name, newValue, oldValue);\n        };\n      } else {\n        selfSubscriber = function selfSubscriber(newValue, oldValue) {\n          return viewModel[changeHandlerName](newValue, oldValue);\n        };\n      }\n    } else if ('propertyChanged' in viewModel) {\n      selfSubscriber = function selfSubscriber(newValue, oldValue) {\n        return viewModel.propertyChanged(name, newValue, oldValue);\n      };\n    }\n\n    observer = observerLookup[name] = new BehaviorPropertyObserver(this.owner.taskQueue, viewModel, name, selfSubscriber);\n\n    Object.defineProperty(viewModel, name, {\n      configurable: true,\n      enumerable: true,\n      get: observer.getValue.bind(observer),\n      set: observer.setValue.bind(observer)\n    });\n\n    if (behaviorHandlesBind) {\n      observer.selfSubscriber = null;\n    }\n\n    if (typeof attribute === 'string') {\n      viewModel[name] = attribute;\n      observer.call();\n    } else if (attribute) {\n      info = { observer: observer, binding: attribute.createBinding(viewModel) };\n      boundProperties.push(info);\n    }\n\n    observer.publishing = true;\n    observer.selfSubscriber = selfSubscriber;\n  };\n\n  return BindableProperty;\n}();\n\nvar lastProviderId = 0;\n\nfunction nextProviderId() {\n  return ++lastProviderId;\n}\n\nfunction doProcessContent() {\n  return true;\n}\nfunction doProcessAttributes() {}\n\nexport var HtmlBehaviorResource = function () {\n  function HtmlBehaviorResource() {\n    \n\n    this.elementName = null;\n    this.attributeName = null;\n    this.attributeDefaultBindingMode = undefined;\n    this.liftsContent = false;\n    this.targetShadowDOM = false;\n    this.shadowDOMOptions = null;\n    this.processAttributes = doProcessAttributes;\n    this.processContent = doProcessContent;\n    this.usesShadowDOM = false;\n    this.childBindings = null;\n    this.hasDynamicOptions = false;\n    this.containerless = false;\n    this.properties = [];\n    this.attributes = {};\n    this.isInitialized = false;\n    this.primaryProperty = null;\n  }\n\n  HtmlBehaviorResource.convention = function convention(name, existing) {\n    var behavior = void 0;\n\n    if (name.endsWith('CustomAttribute')) {\n      behavior = existing || new HtmlBehaviorResource();\n      behavior.attributeName = _hyphenate(name.substring(0, name.length - 15));\n    }\n\n    if (name.endsWith('CustomElement')) {\n      behavior = existing || new HtmlBehaviorResource();\n      behavior.elementName = _hyphenate(name.substring(0, name.length - 13));\n    }\n\n    return behavior;\n  };\n\n  HtmlBehaviorResource.prototype.addChildBinding = function addChildBinding(behavior) {\n    if (this.childBindings === null) {\n      this.childBindings = [];\n    }\n\n    this.childBindings.push(behavior);\n  };\n\n  HtmlBehaviorResource.prototype.initialize = function initialize(container, target) {\n    var proto = target.prototype;\n    var properties = this.properties;\n    var attributeName = this.attributeName;\n    var attributeDefaultBindingMode = this.attributeDefaultBindingMode;\n    var i = void 0;\n    var ii = void 0;\n    var current = void 0;\n\n    if (this.isInitialized) {\n      return;\n    }\n\n    this.isInitialized = true;\n    target.__providerId__ = nextProviderId();\n\n    this.observerLocator = container.get(ObserverLocator);\n    this.taskQueue = container.get(TaskQueue);\n\n    this.target = target;\n    this.usesShadowDOM = this.targetShadowDOM && FEATURE.shadowDOM;\n    this.handlesCreated = 'created' in proto;\n    this.handlesBind = 'bind' in proto;\n    this.handlesUnbind = 'unbind' in proto;\n    this.handlesAttached = 'attached' in proto;\n    this.handlesDetached = 'detached' in proto;\n    this.htmlName = this.elementName || this.attributeName;\n\n    if (attributeName !== null) {\n      if (properties.length === 0) {\n        new BindableProperty({\n          name: 'value',\n          changeHandler: 'valueChanged' in proto ? 'valueChanged' : null,\n          attribute: attributeName,\n          defaultBindingMode: attributeDefaultBindingMode\n        }).registerWith(target, this);\n      }\n\n      current = properties[0];\n\n      if (properties.length === 1 && current.name === 'value') {\n        current.isDynamic = current.hasOptions = this.hasDynamicOptions;\n        current.defineOn(target, this);\n      } else {\n        for (i = 0, ii = properties.length; i < ii; ++i) {\n          properties[i].defineOn(target, this);\n          if (properties[i].primaryProperty) {\n            if (this.primaryProperty) {\n              throw new Error('Only one bindable property on a custom element can be defined as the default');\n            }\n            this.primaryProperty = properties[i];\n          }\n        }\n\n        current = new BindableProperty({\n          name: 'value',\n          changeHandler: 'valueChanged' in proto ? 'valueChanged' : null,\n          attribute: attributeName,\n          defaultBindingMode: attributeDefaultBindingMode\n        });\n\n        current.hasOptions = true;\n        current.registerWith(target, this);\n      }\n    } else {\n      for (i = 0, ii = properties.length; i < ii; ++i) {\n        properties[i].defineOn(target, this);\n      }\n\n      this._copyInheritedProperties(container, target);\n    }\n  };\n\n  HtmlBehaviorResource.prototype.register = function register(registry, name) {\n    var _this12 = this;\n\n    if (this.attributeName !== null) {\n      registry.registerAttribute(name || this.attributeName, this, this.attributeName);\n\n      if (Array.isArray(this.aliases)) {\n        this.aliases.forEach(function (alias) {\n          registry.registerAttribute(alias, _this12, _this12.attributeName);\n        });\n      }\n    }\n\n    if (this.elementName !== null) {\n      registry.registerElement(name || this.elementName, this);\n    }\n  };\n\n  HtmlBehaviorResource.prototype.load = function load(container, target, loadContext, viewStrategy, transientView) {\n    var _this13 = this;\n\n    var options = void 0;\n\n    if (this.elementName !== null) {\n      viewStrategy = container.get(ViewLocator).getViewStrategy(viewStrategy || this.viewStrategy || target);\n      options = new ViewCompileInstruction(this.targetShadowDOM, true);\n\n      if (!viewStrategy.moduleId) {\n        viewStrategy.moduleId = Origin.get(target).moduleId;\n      }\n\n      return viewStrategy.loadViewFactory(container.get(ViewEngine), options, loadContext, target).then(function (viewFactory) {\n        if (!transientView || !_this13.viewFactory) {\n          _this13.viewFactory = viewFactory;\n        }\n\n        return viewFactory;\n      });\n    }\n\n    return Promise.resolve(this);\n  };\n\n  HtmlBehaviorResource.prototype.compile = function compile(compiler, resources, node, instruction, parentNode) {\n    if (this.liftsContent) {\n      if (!instruction.viewFactory) {\n        var _template = DOM.createElement('template');\n        var fragment = DOM.createDocumentFragment();\n        var cacheSize = node.getAttribute('view-cache');\n        var part = node.getAttribute('part');\n\n        node.removeAttribute(instruction.originalAttrName);\n        DOM.replaceNode(_template, node, parentNode);\n        fragment.appendChild(node);\n        instruction.viewFactory = compiler.compile(fragment, resources);\n\n        if (part) {\n          instruction.viewFactory.part = part;\n          node.removeAttribute('part');\n        }\n\n        if (cacheSize) {\n          instruction.viewFactory.setCacheSize(cacheSize);\n          node.removeAttribute('view-cache');\n        }\n\n        node = _template;\n      }\n    } else if (this.elementName !== null) {\n      var _partReplacements2 = {};\n\n      if (this.processContent(compiler, resources, node, instruction) && node.hasChildNodes()) {\n        var currentChild = node.firstChild;\n        var contentElement = this.usesShadowDOM ? null : DOM.createElement('au-content');\n        var nextSibling = void 0;\n        var toReplace = void 0;\n\n        while (currentChild) {\n          nextSibling = currentChild.nextSibling;\n\n          if (currentChild.tagName === 'TEMPLATE' && (toReplace = currentChild.getAttribute('replace-part'))) {\n            _partReplacements2[toReplace] = compiler.compile(currentChild, resources);\n            DOM.removeNode(currentChild, parentNode);\n            instruction.partReplacements = _partReplacements2;\n          } else if (contentElement !== null) {\n            if (currentChild.nodeType === 3 && _isAllWhitespace(currentChild)) {\n              DOM.removeNode(currentChild, parentNode);\n            } else {\n              contentElement.appendChild(currentChild);\n            }\n          }\n\n          currentChild = nextSibling;\n        }\n\n        if (contentElement !== null && contentElement.hasChildNodes()) {\n          node.appendChild(contentElement);\n        }\n\n        instruction.skipContentProcessing = false;\n      } else {\n        instruction.skipContentProcessing = true;\n      }\n    } else if (!this.processContent(compiler, resources, node, instruction)) {\n      instruction.skipContentProcessing = true;\n    }\n\n    return node;\n  };\n\n  HtmlBehaviorResource.prototype.create = function create(container, instruction, element, bindings) {\n    var viewHost = void 0;\n    var au = null;\n\n    instruction = instruction || BehaviorInstruction.normal;\n    element = element || null;\n    bindings = bindings || null;\n\n    if (this.elementName !== null && element) {\n      if (this.usesShadowDOM) {\n        viewHost = element.attachShadow(this.shadowDOMOptions);\n        container.registerInstance(DOM.boundary, viewHost);\n      } else {\n        viewHost = element;\n        if (this.targetShadowDOM) {\n          container.registerInstance(DOM.boundary, viewHost);\n        }\n      }\n    }\n\n    if (element !== null) {\n      element.au = au = element.au || {};\n    }\n\n    var viewModel = instruction.viewModel || container.get(this.target);\n    var controller = new Controller(this, instruction, viewModel, container);\n    var childBindings = this.childBindings;\n    var viewFactory = void 0;\n\n    if (this.liftsContent) {\n      au.controller = controller;\n    } else if (this.elementName !== null) {\n      viewFactory = instruction.viewFactory || this.viewFactory;\n      container.viewModel = viewModel;\n\n      if (viewFactory) {\n        controller.view = viewFactory.create(container, instruction, element);\n      }\n\n      if (element !== null) {\n        au.controller = controller;\n\n        if (controller.view) {\n          if (!this.usesShadowDOM && (element.childNodes.length === 1 || element.contentElement)) {\n            var contentElement = element.childNodes[0] || element.contentElement;\n            controller.view.contentView = { fragment: contentElement };\n            contentElement.parentNode && DOM.removeNode(contentElement);\n          }\n\n          if (instruction.anchorIsContainer) {\n            if (childBindings !== null) {\n              for (var _i4 = 0, _ii3 = childBindings.length; _i4 < _ii3; ++_i4) {\n                controller.view.addBinding(childBindings[_i4].create(element, viewModel, controller));\n              }\n            }\n\n            controller.view.appendNodesTo(viewHost);\n          } else {\n            controller.view.insertNodesBefore(viewHost);\n          }\n        } else if (childBindings !== null) {\n          for (var _i5 = 0, _ii4 = childBindings.length; _i5 < _ii4; ++_i5) {\n            bindings.push(childBindings[_i5].create(element, viewModel, controller));\n          }\n        }\n      } else if (controller.view) {\n        controller.view.controller = controller;\n\n        if (childBindings !== null) {\n          for (var _i6 = 0, _ii5 = childBindings.length; _i6 < _ii5; ++_i6) {\n            controller.view.addBinding(childBindings[_i6].create(instruction.host, viewModel, controller));\n          }\n        }\n      } else if (childBindings !== null) {\n        for (var _i7 = 0, _ii6 = childBindings.length; _i7 < _ii6; ++_i7) {\n          bindings.push(childBindings[_i7].create(instruction.host, viewModel, controller));\n        }\n      }\n    } else if (childBindings !== null) {\n      for (var _i8 = 0, _ii7 = childBindings.length; _i8 < _ii7; ++_i8) {\n        bindings.push(childBindings[_i8].create(element, viewModel, controller));\n      }\n    }\n\n    if (au !== null) {\n      au[this.htmlName] = controller;\n    }\n\n    if (instruction.initiatedByBehavior && viewFactory) {\n      controller.view.created();\n    }\n\n    return controller;\n  };\n\n  HtmlBehaviorResource.prototype._ensurePropertiesDefined = function _ensurePropertiesDefined(instance, lookup) {\n    var properties = void 0;\n    var i = void 0;\n    var ii = void 0;\n    var observer = void 0;\n\n    if ('__propertiesDefined__' in lookup) {\n      return;\n    }\n\n    lookup.__propertiesDefined__ = true;\n    properties = this.properties;\n\n    for (i = 0, ii = properties.length; i < ii; ++i) {\n      observer = properties[i].createObserver(instance);\n\n      if (observer !== undefined) {\n        lookup[observer.propertyName] = observer;\n      }\n    }\n  };\n\n  HtmlBehaviorResource.prototype._copyInheritedProperties = function _copyInheritedProperties(container, target) {\n    var _this14 = this;\n\n    var behavior = void 0;\n    var derived = target;\n\n    while (true) {\n      var proto = Object.getPrototypeOf(target.prototype);\n      target = proto && proto.constructor;\n      if (!target) {\n        return;\n      }\n      behavior = metadata.getOwn(metadata.resource, target);\n      if (behavior) {\n        break;\n      }\n    }\n    behavior.initialize(container, target);\n\n    var _loop = function _loop(_i9, _ii8) {\n      var prop = behavior.properties[_i9];\n\n      if (_this14.properties.some(function (p) {\n        return p.name === prop.name;\n      })) {\n        return 'continue';\n      }\n\n      new BindableProperty(prop).registerWith(derived, _this14);\n    };\n\n    for (var _i9 = 0, _ii8 = behavior.properties.length; _i9 < _ii8; ++_i9) {\n      var _ret = _loop(_i9, _ii8);\n\n      if (_ret === 'continue') continue;\n    }\n  };\n\n  return HtmlBehaviorResource;\n}();\n\nfunction createChildObserverDecorator(selectorOrConfig, all) {\n  return function (target, key, descriptor) {\n    var actualTarget = typeof key === 'string' ? target.constructor : target;\n    var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, actualTarget);\n\n    if (typeof selectorOrConfig === 'string') {\n      selectorOrConfig = {\n        selector: selectorOrConfig,\n        name: key\n      };\n    }\n\n    if (descriptor) {\n      descriptor.writable = true;\n      descriptor.configurable = true;\n    }\n\n    selectorOrConfig.all = all;\n    r.addChildBinding(new ChildObserver(selectorOrConfig));\n  };\n}\n\nexport function children(selectorOrConfig) {\n  return createChildObserverDecorator(selectorOrConfig, true);\n}\n\nexport function child(selectorOrConfig) {\n  return createChildObserverDecorator(selectorOrConfig, false);\n}\n\nvar ChildObserver = function () {\n  function ChildObserver(config) {\n    \n\n    this.name = config.name;\n    this.changeHandler = config.changeHandler || this.name + 'Changed';\n    this.selector = config.selector;\n    this.all = config.all;\n  }\n\n  ChildObserver.prototype.create = function create(viewHost, viewModel, controller) {\n    return new ChildObserverBinder(this.selector, viewHost, this.name, viewModel, controller, this.changeHandler, this.all);\n  };\n\n  return ChildObserver;\n}();\n\nvar noMutations = [];\n\nfunction trackMutation(groupedMutations, binder, record) {\n  var mutations = groupedMutations.get(binder);\n\n  if (!mutations) {\n    mutations = [];\n    groupedMutations.set(binder, mutations);\n  }\n\n  mutations.push(record);\n}\n\nfunction onChildChange(mutations, observer) {\n  var binders = observer.binders;\n  var bindersLength = binders.length;\n  var groupedMutations = new Map();\n\n  for (var _i10 = 0, _ii9 = mutations.length; _i10 < _ii9; ++_i10) {\n    var record = mutations[_i10];\n    var added = record.addedNodes;\n    var removed = record.removedNodes;\n\n    for (var j = 0, jj = removed.length; j < jj; ++j) {\n      var _node = removed[j];\n      if (_node.nodeType === 1) {\n        for (var k = 0; k < bindersLength; ++k) {\n          var binder = binders[k];\n          if (binder.onRemove(_node)) {\n            trackMutation(groupedMutations, binder, record);\n          }\n        }\n      }\n    }\n\n    for (var _j = 0, _jj = added.length; _j < _jj; ++_j) {\n      var _node2 = added[_j];\n      if (_node2.nodeType === 1) {\n        for (var _k = 0; _k < bindersLength; ++_k) {\n          var _binder = binders[_k];\n          if (_binder.onAdd(_node2)) {\n            trackMutation(groupedMutations, _binder, record);\n          }\n        }\n      }\n    }\n  }\n\n  groupedMutations.forEach(function (value, key) {\n    if (key.changeHandler !== null) {\n      key.viewModel[key.changeHandler](value);\n    }\n  });\n}\n\nvar ChildObserverBinder = function () {\n  function ChildObserverBinder(selector, viewHost, property, viewModel, controller, changeHandler, all) {\n    \n\n    this.selector = selector;\n    this.viewHost = viewHost;\n    this.property = property;\n    this.viewModel = viewModel;\n    this.controller = controller;\n    this.changeHandler = changeHandler in viewModel ? changeHandler : null;\n    this.usesShadowDOM = controller.behavior.usesShadowDOM;\n    this.all = all;\n\n    if (!this.usesShadowDOM && controller.view && controller.view.contentView) {\n      this.contentView = controller.view.contentView;\n    } else {\n      this.contentView = null;\n    }\n  }\n\n  ChildObserverBinder.prototype.matches = function matches(element) {\n    if (element.matches(this.selector)) {\n      if (this.contentView === null) {\n        return true;\n      }\n\n      var contentView = this.contentView;\n      var assignedSlot = element.auAssignedSlot;\n\n      if (assignedSlot && assignedSlot.projectFromAnchors) {\n        var anchors = assignedSlot.projectFromAnchors;\n\n        for (var _i11 = 0, _ii10 = anchors.length; _i11 < _ii10; ++_i11) {\n          if (anchors[_i11].auOwnerView === contentView) {\n            return true;\n          }\n        }\n\n        return false;\n      }\n\n      return element.auOwnerView === contentView;\n    }\n\n    return false;\n  };\n\n  ChildObserverBinder.prototype.bind = function bind(source) {\n    var viewHost = this.viewHost;\n    var viewModel = this.viewModel;\n    var observer = viewHost.__childObserver__;\n\n    if (!observer) {\n      observer = viewHost.__childObserver__ = DOM.createMutationObserver(onChildChange);\n\n      var options = {\n        childList: true,\n        subtree: !this.usesShadowDOM\n      };\n\n      observer.observe(viewHost, options);\n      observer.binders = [];\n    }\n\n    observer.binders.push(this);\n\n    if (this.usesShadowDOM) {\n      var current = viewHost.firstElementChild;\n\n      if (this.all) {\n        var items = viewModel[this.property];\n        if (!items) {\n          items = viewModel[this.property] = [];\n        } else {\n          items.splice(0);\n        }\n\n        while (current) {\n          if (this.matches(current)) {\n            items.push(current.au && current.au.controller ? current.au.controller.viewModel : current);\n          }\n\n          current = current.nextElementSibling;\n        }\n\n        if (this.changeHandler !== null) {\n          this.viewModel[this.changeHandler](noMutations);\n        }\n      } else {\n        while (current) {\n          if (this.matches(current)) {\n            var _value = current.au && current.au.controller ? current.au.controller.viewModel : current;\n            this.viewModel[this.property] = _value;\n\n            if (this.changeHandler !== null) {\n              this.viewModel[this.changeHandler](_value);\n            }\n\n            break;\n          }\n\n          current = current.nextElementSibling;\n        }\n      }\n    }\n  };\n\n  ChildObserverBinder.prototype.onRemove = function onRemove(element) {\n    if (this.matches(element)) {\n      var _value2 = element.au && element.au.controller ? element.au.controller.viewModel : element;\n\n      if (this.all) {\n        var items = this.viewModel[this.property] || (this.viewModel[this.property] = []);\n        var index = items.indexOf(_value2);\n\n        if (index !== -1) {\n          items.splice(index, 1);\n        }\n\n        return true;\n      }\n\n      return false;\n    }\n\n    return false;\n  };\n\n  ChildObserverBinder.prototype.onAdd = function onAdd(element) {\n    if (this.matches(element)) {\n      var _value3 = element.au && element.au.controller ? element.au.controller.viewModel : element;\n\n      if (this.all) {\n        var items = this.viewModel[this.property] || (this.viewModel[this.property] = []);\n\n        if (this.selector === '*') {\n          items.push(_value3);\n          return true;\n        }\n\n        var index = 0;\n        var prev = element.previousElementSibling;\n\n        while (prev) {\n          if (this.matches(prev)) {\n            index++;\n          }\n\n          prev = prev.previousElementSibling;\n        }\n\n        items.splice(index, 0, _value3);\n        return true;\n      }\n\n      this.viewModel[this.property] = _value3;\n\n      if (this.changeHandler !== null) {\n        this.viewModel[this.changeHandler](_value3);\n      }\n    }\n\n    return false;\n  };\n\n  ChildObserverBinder.prototype.unbind = function unbind() {\n    if (this.viewHost.__childObserver__) {\n      this.viewHost.__childObserver__.disconnect();\n      this.viewHost.__childObserver__ = null;\n      this.viewModel[this.property] = null;\n    }\n  };\n\n  return ChildObserverBinder;\n}();\n\nfunction remove(viewSlot, previous) {\n  return Array.isArray(previous) ? viewSlot.removeMany(previous, true) : viewSlot.remove(previous, true);\n}\n\nexport var SwapStrategies = {\n  before: function before(viewSlot, previous, callback) {\n    return previous === undefined ? callback() : callback().then(function () {\n      return remove(viewSlot, previous);\n    });\n  },\n  with: function _with(viewSlot, previous, callback) {\n    return previous === undefined ? callback() : Promise.all([remove(viewSlot, previous), callback()]);\n  },\n  after: function after(viewSlot, previous, callback) {\n    return Promise.resolve(viewSlot.removeAll(true)).then(callback);\n  }\n};\n\nfunction tryActivateViewModel(context) {\n  if (context.skipActivation || typeof context.viewModel.activate !== 'function') {\n    return Promise.resolve();\n  }\n\n  return context.viewModel.activate(context.model) || Promise.resolve();\n}\n\nexport var CompositionEngine = (_dec10 = inject(ViewEngine, ViewLocator), _dec10(_class17 = function () {\n  function CompositionEngine(viewEngine, viewLocator) {\n    \n\n    this.viewEngine = viewEngine;\n    this.viewLocator = viewLocator;\n  }\n\n  CompositionEngine.prototype._swap = function _swap(context, view) {\n    var swapStrategy = SwapStrategies[context.swapOrder] || SwapStrategies.after;\n    var previousViews = context.viewSlot.children.slice();\n\n    return swapStrategy(context.viewSlot, previousViews, function () {\n      return Promise.resolve(context.viewSlot.add(view)).then(function () {\n        if (context.currentController) {\n          context.currentController.unbind();\n        }\n      });\n    }).then(function () {\n      if (context.compositionTransactionNotifier) {\n        context.compositionTransactionNotifier.done();\n      }\n    });\n  };\n\n  CompositionEngine.prototype._createControllerAndSwap = function _createControllerAndSwap(context) {\n    var _this15 = this;\n\n    return this.createController(context).then(function (controller) {\n      if (context.compositionTransactionOwnershipToken) {\n        return context.compositionTransactionOwnershipToken.waitForCompositionComplete().then(function () {\n          controller.automate(context.overrideContext, context.owningView);\n\n          return _this15._swap(context, controller.view);\n        }).then(function () {\n          return controller;\n        });\n      }\n\n      controller.automate(context.overrideContext, context.owningView);\n\n      return _this15._swap(context, controller.view).then(function () {\n        return controller;\n      });\n    });\n  };\n\n  CompositionEngine.prototype.createController = function createController(context) {\n    var _this16 = this;\n\n    var childContainer = void 0;\n    var viewModel = void 0;\n    var viewModelResource = void 0;\n\n    var m = void 0;\n\n    return this.ensureViewModel(context).then(tryActivateViewModel).then(function () {\n      childContainer = context.childContainer;\n      viewModel = context.viewModel;\n      viewModelResource = context.viewModelResource;\n      m = viewModelResource.metadata;\n\n      var viewStrategy = _this16.viewLocator.getViewStrategy(context.view || viewModel);\n\n      if (context.viewResources) {\n        viewStrategy.makeRelativeTo(context.viewResources.viewUrl);\n      }\n\n      return m.load(childContainer, viewModelResource.value, null, viewStrategy, true);\n    }).then(function (viewFactory) {\n      return m.create(childContainer, BehaviorInstruction.dynamic(context.host, viewModel, viewFactory));\n    });\n  };\n\n  CompositionEngine.prototype.ensureViewModel = function ensureViewModel(context) {\n    var childContainer = context.childContainer = context.childContainer || context.container.createChild();\n\n    if (typeof context.viewModel === 'string') {\n      context.viewModel = context.viewResources ? context.viewResources.relativeToView(context.viewModel) : context.viewModel;\n\n      return this.viewEngine.importViewModelResource(context.viewModel).then(function (viewModelResource) {\n        childContainer.autoRegister(viewModelResource.value);\n\n        if (context.host) {\n          childContainer.registerInstance(DOM.Element, context.host);\n        }\n\n        context.viewModel = childContainer.viewModel = childContainer.get(viewModelResource.value);\n        context.viewModelResource = viewModelResource;\n        return context;\n      });\n    }\n\n    var ctor = context.viewModel.constructor;\n    var isClass = typeof context.viewModel === 'function';\n    if (isClass) {\n      ctor = context.viewModel;\n      childContainer.autoRegister(ctor);\n    }\n    var m = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, ctor);\n\n    m.elementName = m.elementName || 'dynamic-element';\n\n    m.initialize(isClass ? childContainer : context.container || childContainer, ctor);\n\n    context.viewModelResource = { metadata: m, value: ctor };\n\n    if (context.host) {\n      childContainer.registerInstance(DOM.Element, context.host);\n    }\n    childContainer.viewModel = context.viewModel = isClass ? childContainer.get(ctor) : context.viewModel;\n    return Promise.resolve(context);\n  };\n\n  CompositionEngine.prototype.compose = function compose(context) {\n    var _this17 = this;\n\n    context.childContainer = context.childContainer || context.container.createChild();\n    context.view = this.viewLocator.getViewStrategy(context.view);\n\n    var transaction = context.childContainer.get(CompositionTransaction);\n    var compositionTransactionOwnershipToken = transaction.tryCapture();\n\n    if (compositionTransactionOwnershipToken) {\n      context.compositionTransactionOwnershipToken = compositionTransactionOwnershipToken;\n    } else {\n      context.compositionTransactionNotifier = transaction.enlist();\n    }\n\n    if (context.viewModel) {\n      return this._createControllerAndSwap(context);\n    } else if (context.view) {\n      if (context.viewResources) {\n        context.view.makeRelativeTo(context.viewResources.viewUrl);\n      }\n\n      return context.view.loadViewFactory(this.viewEngine, new ViewCompileInstruction()).then(function (viewFactory) {\n        var result = viewFactory.create(context.childContainer);\n        result.bind(context.bindingContext, context.overrideContext);\n\n        if (context.compositionTransactionOwnershipToken) {\n          return context.compositionTransactionOwnershipToken.waitForCompositionComplete().then(function () {\n            return _this17._swap(context, result);\n          }).then(function () {\n            return result;\n          });\n        }\n\n        return _this17._swap(context, result).then(function () {\n          return result;\n        });\n      });\n    } else if (context.viewSlot) {\n      context.viewSlot.removeAll();\n\n      if (context.compositionTransactionNotifier) {\n        context.compositionTransactionNotifier.done();\n      }\n\n      return Promise.resolve(null);\n    }\n\n    return Promise.resolve(null);\n  };\n\n  return CompositionEngine;\n}()) || _class17);\n\nexport var ElementConfigResource = function () {\n  function ElementConfigResource() {\n    \n  }\n\n  ElementConfigResource.prototype.initialize = function initialize(container, target) {};\n\n  ElementConfigResource.prototype.register = function register(registry, name) {};\n\n  ElementConfigResource.prototype.load = function load(container, target) {\n    var config = new target();\n    var eventManager = container.get(EventManager);\n    eventManager.registerElementConfig(config);\n  };\n\n  return ElementConfigResource;\n}();\n\nexport function resource(instanceOrConfig) {\n  return function (target) {\n    var isConfig = typeof instanceOrConfig === 'string' || Object.getPrototypeOf(instanceOrConfig) === Object.prototype;\n    if (isConfig) {\n      target.$resource = instanceOrConfig;\n    } else {\n      metadata.define(metadata.resource, instanceOrConfig, target);\n    }\n  };\n}\n\nexport function behavior(override) {\n  return function (target) {\n    if (override instanceof HtmlBehaviorResource) {\n      metadata.define(metadata.resource, override, target);\n    } else {\n      var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, target);\n      Object.assign(r, override);\n    }\n  };\n}\n\nexport function customElement(name) {\n  return function (target) {\n    var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, target);\n    r.elementName = validateBehaviorName(name, 'custom element');\n  };\n}\n\nexport function customAttribute(name, defaultBindingMode, aliases) {\n  return function (target) {\n    var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, target);\n    r.attributeName = validateBehaviorName(name, 'custom attribute');\n    r.attributeDefaultBindingMode = defaultBindingMode;\n    r.aliases = aliases;\n  };\n}\n\nexport function templateController(target) {\n  var deco = function deco(t) {\n    var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\n    r.liftsContent = true;\n  };\n\n  return target ? deco(target) : deco;\n}\n\nexport function bindable(nameOrConfigOrTarget, key, descriptor) {\n  var deco = function deco(target, key2, descriptor2) {\n    var actualTarget = key2 ? target.constructor : target;\n    var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, actualTarget);\n    var prop = void 0;\n\n    if (key2) {\n      nameOrConfigOrTarget = nameOrConfigOrTarget || {};\n      nameOrConfigOrTarget.name = key2;\n    }\n\n    prop = new BindableProperty(nameOrConfigOrTarget);\n    return prop.registerWith(actualTarget, r, descriptor2);\n  };\n\n  if (!nameOrConfigOrTarget) {\n    return deco;\n  }\n\n  if (key) {\n    var _target = nameOrConfigOrTarget;\n    nameOrConfigOrTarget = null;\n    return deco(_target, key, descriptor);\n  }\n\n  return deco;\n}\n\nexport function dynamicOptions(target) {\n  var deco = function deco(t) {\n    var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\n    r.hasDynamicOptions = true;\n  };\n\n  return target ? deco(target) : deco;\n}\n\nvar defaultShadowDOMOptions = { mode: 'open' };\n\nexport function useShadowDOM(targetOrOptions) {\n  var options = typeof targetOrOptions === 'function' || !targetOrOptions ? defaultShadowDOMOptions : targetOrOptions;\n\n  var deco = function deco(t) {\n    var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\n    r.targetShadowDOM = true;\n    r.shadowDOMOptions = options;\n  };\n\n  return typeof targetOrOptions === 'function' ? deco(targetOrOptions) : deco;\n}\n\nexport function processAttributes(processor) {\n  return function (t) {\n    var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\n    r.processAttributes = function (compiler, resources, node, attributes, elementInstruction) {\n      try {\n        processor(compiler, resources, node, attributes, elementInstruction);\n      } catch (error) {\n        LogManager.getLogger('templating').error(error);\n      }\n    };\n  };\n}\n\nfunction doNotProcessContent() {\n  return false;\n}\n\nexport function processContent(processor) {\n  return function (t) {\n    var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\n    r.processContent = processor ? function (compiler, resources, node, instruction) {\n      try {\n        return processor(compiler, resources, node, instruction);\n      } catch (error) {\n        LogManager.getLogger('templating').error(error);\n        return false;\n      }\n    } : doNotProcessContent;\n  };\n}\n\nexport function containerless(target) {\n  var deco = function deco(t) {\n    var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\n    r.containerless = true;\n  };\n\n  return target ? deco(target) : deco;\n}\n\nexport function useViewStrategy(strategy) {\n  return function (target) {\n    metadata.define(ViewLocator.viewStrategyMetadataKey, strategy, target);\n  };\n}\n\nexport function useView(path) {\n  return useViewStrategy(new RelativeViewStrategy(path));\n}\n\nexport function inlineView(markup, dependencies, dependencyBaseUrl) {\n  return useViewStrategy(new InlineViewStrategy(markup, dependencies, dependencyBaseUrl));\n}\n\nexport function noView(targetOrDependencies, dependencyBaseUrl) {\n  var target = void 0;\n  var dependencies = void 0;\n  if (typeof targetOrDependencies === 'function') {\n    target = targetOrDependencies;\n  } else {\n    dependencies = targetOrDependencies;\n    target = undefined;\n  }\n\n  var deco = function deco(t) {\n    metadata.define(ViewLocator.viewStrategyMetadataKey, new NoViewStrategy(dependencies, dependencyBaseUrl), t);\n  };\n\n  return target ? deco(target) : deco;\n}\n\nexport function view(templateOrConfig) {\n  return function (target) {\n    target.$view = templateOrConfig;\n  };\n}\n\nexport function elementConfig(target) {\n  var deco = function deco(t) {\n    metadata.define(metadata.resource, new ElementConfigResource(), t);\n  };\n\n  return target ? deco(target) : deco;\n}\n\nexport function viewResources() {\n  for (var _len = arguments.length, resources = Array(_len), _key7 = 0; _key7 < _len; _key7++) {\n    resources[_key7] = arguments[_key7];\n  }\n\n  return function (target) {\n    metadata.define(ViewEngine.viewModelRequireMetadataKey, resources, target);\n  };\n}\n\nexport var TemplatingEngine = (_dec11 = inject(Container, ModuleAnalyzer, ViewCompiler, CompositionEngine), _dec11(_class18 = function () {\n  function TemplatingEngine(container, moduleAnalyzer, viewCompiler, compositionEngine) {\n    \n\n    this._container = container;\n    this._moduleAnalyzer = moduleAnalyzer;\n    this._viewCompiler = viewCompiler;\n    this._compositionEngine = compositionEngine;\n    container.registerInstance(Animator, Animator.instance = new Animator());\n  }\n\n  TemplatingEngine.prototype.configureAnimator = function configureAnimator(animator) {\n    this._container.unregister(Animator);\n    this._container.registerInstance(Animator, Animator.instance = animator);\n  };\n\n  TemplatingEngine.prototype.compose = function compose(context) {\n    return this._compositionEngine.compose(context);\n  };\n\n  TemplatingEngine.prototype.enhance = function enhance(instruction) {\n    if (instruction instanceof DOM.Element) {\n      instruction = { element: instruction };\n    }\n\n    var compilerInstructions = { letExpressions: [] };\n    var resources = instruction.resources || this._container.get(ViewResources);\n\n    this._viewCompiler._compileNode(instruction.element, resources, compilerInstructions, instruction.element.parentNode, 'root', true);\n\n    var factory = new ViewFactory(instruction.element, compilerInstructions, resources);\n    var container = instruction.container || this._container.createChild();\n    var view = factory.create(container, BehaviorInstruction.enhance());\n\n    view.bind(instruction.bindingContext || {}, instruction.overrideContext);\n\n    view.firstChild = view.lastChild = view.fragment;\n    view.fragment = DOM.createDocumentFragment();\n    view.attached();\n\n    return view;\n  };\n\n  return TemplatingEngine;\n}()) || _class18);","import { ObservationType } from './observationType';\nexport class Observation {\n  id:number;\n  description: string;\n  observationType: ObservationType;\n  createdByName: string;\n  agreementId: number;\n}\n","import { PositionActivationType } from \"./positionActivationType\";\nimport { PositionLevel } from \"./positionLevel\";\nimport { EducationalLevel } from \"../catalogs/educationalLevel\";\nimport { Disc } from \"models/questionaries/disc\";\n\nexport class Position {\n  id: number;\n  companyId: number;\n  name: string;\n  tags: string;\n  positionActivationType: PositionActivationType;\n  questionaryId: string;\n\n  mission: string;\n  positionLevel: PositionLevel;\n  subPositions: string;\n  \n  educationalLevel: EducationalLevel;\n  functions: string;\n  salary: string;\n  requiredStudies: string;\n  dominatedLanguages: string;\n  others: string;\n  profilePositionId: number; // used to storage related position for positionDisc Form\n\n  highestDisc: Disc;\n  stamp: string;\n\n  evaluatorsQuantity: number;\n  finalizedEvaluatorsQuantity: number;\n  \n  createdOn: Date;\n  createdByName: string;\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { CompanyDetail } from \"models/companies/company-detail\";\n\n@autoinject()\nexport class CompanyInfoService {\n  private logger: Logger;\n\n  constructor(\n    private client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"CatalogService\");\n  }\n\n  \n  public async getById(id: number): Promise<CompanyDetail> {\n    return await this.client.getById(\"companyinfo\", id)\n      .then((response: any) => {\n        return <CompanyDetail>response;\n      });\n  }\n\n  public async getLogoUrl(id: number): Promise<string> {\n    return await this.client.get(`companyinfo/logo-url/${id}`)\n      .then((response: any) => {\n        return <string>response;\n      });\n  }\n\n\n}\n","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { Inbox } from \"models/test-core/inbox/inbox\";\n\n@autoinject()\nexport class InboxService {\n  private logger: Logger;\n\n  constructor(\n    public client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"InboxService\");\n  }\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`inbox/list`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n  public async changeState(id: number): Promise<void> {\n    return await this.client.post(`inbox/change-state/${id}`)\n      .then(() => null);\n  }\n\n  public async create(model: Inbox): Promise<Inbox> {\n    return await this.client.create(\"inbox\", model)\n      .then((response: Inbox) => {\n        return response;\n      });\n  }\n\n  public async getAllByCompany( companyId: Number,inbox: Inbox): Promise<Inbox[]> {\n    return await this.client.post(`inbox/get-all-by-company/${companyId}`,inbox )\n      .then((response: Inbox[]) => {\n        return response;\n      });\n  }\n\n  public async update(model: Inbox): Promise<void> {\n    return await this.client.updateById(\"inbox\", model.id, null, model)\n      .then(() => null);\n  }\n  public async getById(id: number): Promise<Inbox> {\n    return await this.client.getById(\"inbox\", id)\n      .then((response: Inbox) => {\n        return response;\n      });\n  }\n\n}\n","import { CompanyAppHttpClient } from 'common/services/company-app-http-client';\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Observation } from 'models/agreements/observation';\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n@autoinject()\nexport class ObservationService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"ObservationService\");\n  }\n\n  public async addendumList(agreementId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`agreementobservation/addendum-list/${agreementId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async publicNoteList(agreementId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`agreementobservation/public-note-list/${agreementId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async privateNoteList(agreementId: number, parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`agreementobservation/private-note-list/${agreementId}`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  // public async getById(id: number): Promise<Observation> {\n  //   return await this.client.getById(\"agreementobservation\", id)\n  //     .then((response: any) => {\n  //       return <Observation>response;\n  //     });\n  // }\n\n  public async createAddendum(model: Observation): Promise<Observation> {\n    return await this.client.create(\"agreementobservation/addendum\", model)\n      .then((response: any) => {\n        return <Observation>response;\n      });\n  }\n\n  public async createPublicNote(model: Observation): Promise<Observation> {\n    return await this.client.create(\"agreementobservation/public-note\", model)\n      .then((response: any) => {\n        return <Observation>response;\n      });\n  }\n\n  public async createPrivateNote(model: Observation): Promise<Observation> {\n    return await this.client.create(\"agreementobservation/private-note\", model)\n      .then((response: any) => {\n        return <Observation>response;\n      });\n  }\n\n  public async updateAddendum(model: Observation): Promise<void> {\n    return await this.client.updateById(\"agreementobservation/addendum\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async updatePrivateNote(model: Observation): Promise<void> {\n    return await this.client.updateById(\"agreementobservation/private-note\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async updatePublicNote(model: Observation): Promise<void> {\n    return await this.client.updateById(\"agreementobservation/public-note\", model.id, null, model)\n      .then(() => null);\n  }  \n\n  public async deleteAddendum(id: number): Promise<void> {\n    return await this.client.deleteById(\"agreementobservation/addendum\", id)\n      .then(() => null);\n  }\n\n  public async deletePublicNote(id: number): Promise<void> {\n    return await this.client.deleteById(\"agreementobservation/public-note\", id)\n      .then(() => null);\n  }\n\n  public async deletePrivateNote(id: number): Promise<void> {\n    return await this.client.deleteById(\"agreementobservation/private-note\", id)\n      .then(() => null);\n  }\n}\n","import { AppHttpClient } from 'common/services/app-http-client';\nimport { autoinject, LogManager } from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { ServiceRating } from 'models/service-rating/service-rating';\nimport { SalesIqModel } from '../../../../models/sales-iq/sales-iq-model';\n\n@autoinject\nexport class ServiceRatingService {\n  private logger: Logger;\n\n  constructor(public client: AppHttpClient) {\n    this.logger = LogManager.getLogger('ServiceRatingService');\n  }\n\n  public async getServiceRatingSettings(): Promise<ServiceRating> {\n    return await this.client.get(\"servicerating\")\n      .then((response) => {\n        return <ServiceRating>response;\n      });\n  }\n\n  public async getSalesIqSettings(): Promise<SalesIqModel> {\n    return await this.client.get(\"servicerating/sales-iq\")\n      .then((response) => {\n        return <SalesIqModel>response;\n      });\n  }\n\n  public async getSurveyZohoSettings(): Promise<SalesIqModel> {\n    return await this.client.get(\"servicerating/survey-zoho\")\n      .then((response) => {\n        return <SalesIqModel>response;\n      });\n  }\n\n  public async update(model: ServiceRating): Promise<void> {\n    return await this.client.update(\"servicerating\", null, model)\n      .then(() => null);\n  }\n\n}\n","import { PersonAppHttpClient } from 'common/services/person-app-http-client';\nimport { Logger } from 'aurelia-logging';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { DemographicData } from 'models/microsite/demographicData';\nimport { CompanyAppHttpClient } from 'common/services/company-app-http-client';\n\n@autoinject\nexport class PersonDemographicDataService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n    this.logger = LogManager.getLogger(\"DemographicDataService\");\n  }\n\n  public async get(id: number): Promise<DemographicData> {\n    return await this.client.get(`persondemographicdata/${id}`)\n      .then((response: any) => {\n        return <DemographicData>response;\n      });\n  }\n\n  // public async create(model: DemographicData): Promise<DemographicData> {\n  //   return await this.client.create(\"demographicdata\", model)\n  //     .then((response: any) => {\n  //       return <DemographicData>response;\n  //     });\n  // }\n\n  public async update(model: DemographicData): Promise<void> {\n    return await this.client.updateById(\"persondemographicdata\", model.id, null, model)\n      .then(() => null);\n  }\n\n  // public async delete(id: number): Promise<void> {\n  //   return await this.client.deleteById(\"demographicdata\", id)\n  //     .then(() => null);\n  // }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { EducationalLevelCountry } from \"models/educational-levels-by-country/educational-level-country\";\n\n@autoinject()\nexport class EducationalLevelCountryService {\n  private logger: Logger;\n\n  constructor(\n    private client: AppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"EducationalLevelCountryService\");\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(`educationallevelcountry/list`, parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getAll(): Promise<EducationalLevelCountry[]> {\n    return await this.client.get(\"educationallevelcountry\")\n      .then((response: any) => {\n        return <EducationalLevelCountry[]>response;\n      });\n  }\n\n  public async getByCountry(countryId: number): Promise<EducationalLevelCountry[]> {\n    return await this.client.get(`educationallevelcountry/country/${countryId}`)\n      .then((response: any) => {\n        return <EducationalLevelCountry[]>response;\n      });\n  }\n\n  public async update(model: EducationalLevelCountry): Promise<EducationalLevelCountry> {\n    return await this.client.updateById('educationallevelcountry', model.id, null, model)\n      .then(response => {\n        return <EducationalLevelCountry>response;\n      });\n  }\n\n  public async changeState(model: EducationalLevelCountry): Promise<EducationalLevelCountry> {\n    // this.logger.info(\"id to delete: \" +  id);\n    return await this.client.post(`educationallevelcountry/change-state/${model.id}`, model)\n      .then(response => {\n        return <EducationalLevelCountry>response;\n      });\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Profile } from \"models/profiles/profile\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n@autoinject()\nexport class ProfileService {\n\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"ProfileService\");\n  }\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"profile/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getAll(): Promise<Profile[]> {\n    return await this.client.get(\"profile\")\n      .then((response: any) => {\n        return <Profile[]>response;\n      });\n  }\n\n  public async getById(id: number): Promise<Profile> {\n    return await this.client.getById(\"profile\", id)\n      .then((response: any) => {\n        return <Profile>response;\n      });\n  }\n\n  public async create(model: Profile): Promise<Profile> {\n    return await this.client.create(\"profile\", model)\n      .then((response: any) => {\n        return <Profile>response;\n      });\n  }\n\n  public async update(model: Profile): Promise<void> {\n    return await this.client.updateById(\"profile\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async delete(id: number, profileIdToTransferUsers: number): Promise<void> {\n    return await this.client.deleteById(\"profile\", id, { profileIdToTransferUsers: profileIdToTransferUsers} )\n      .then(() => null);\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { AppHttpClient } from \"common/services/app-http-client\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { User } from \"models/security/user\";\nimport { CompanyAppHttpClient } from \"common/services/company-app-http-client\";\nimport { UserExportStatus } from \"models/security/userExportStatus\";\nimport { UserExportStatusResponse } from \"models/security/userExportStatusResponse\";\n\n@autoinject\nexport class MasterUserService {\n  private logger: Logger;\n\n  constructor(\n    public client: CompanyAppHttpClient) {\n\n    this.logger = LogManager.getLogger(\"MasterUserService\");\n  }\n\n  public async list(parameters: UxDatatableParameters): Promise<UxDatatableResponse> {\n    return await this.client.post(\"masteruser/list\", parameters)\n      .then((response: any) => {\n        return <UxDatatableResponse>response;\n      });\n  }\n\n  public async getAll(): Promise<User[]> {\n    return await this.client.get(\"masteruser\")\n      .then((response: User[]) => {\n        return response;\n      });\n  }\n\n  public async getById(id: number): Promise<User> {\n    return await this.client.getById(\"masteruser\", id)\n      .then((response: User) => {\n        return response;\n      });\n  }\n\n  public async create(model: User): Promise<User> {\n    return await this.client.create(\"masteruser\", model)\n      .then((response: User) => {\n        return response;\n      });\n  }\n\n  public async convert(model: User): Promise<User> {\n    return await this.client.create(\"masteruser/convert\", model)\n      .then((response: User) => {\n        return response;\n      });\n  }\n\n  public async changeUserCompany(model: User): Promise<User> {\n    return await this.client.update(`masteruser/change-user/${model.id}`, null, model)\n    .then((response: User) => {\n      return response;\n    });\n  }\n\n  public async update(model: User): Promise<void> {\n    return await this.client.updateById(\"masteruser\", model.id, null, model)\n      .then(() => null);\n  }\n\n  public async changeState(id: number): Promise<void> {\n    return await this.client.post(`masteruser/change-state/${id}`)\n      .then(() => null);\n  }\n\n  public async resendActivationMessage(id: number): Promise<void> {\n    return await this.client.post(`masteruser/resend-activation-message/${id}`)\n      .then(() => null);\n  }\n\n  public async delete(id: number): Promise<void> {\n    return await this.client.deleteById(\"masteruser\", id)\n      .then(() => null);\n  }\n  public async convertToUser(model: User, id: number): Promise<User> {\n    return await this.client.post(`masteruser/convert-user/${id}`, model)\n      .then((response: User) => {\n        return response;\n      });\n  }\n\n  public async generateExport(): Promise<void> {\n    return await this.client.post(\"masteruser/export-excel\")\n      .then(() => null);\n  }\n\n  public async getExportStatus(): Promise<UserExportStatus> {\n    return await this.client.get(\"masteruser/export-status\")\n      .then((response: UserExportStatusResponse) => {\n        return (response && response.status) || UserExportStatus.None;\n      });\n  }\n\n  public async getExportDownloadUrl(): Promise<string> {\n    return await this.client.get(\"masteruser/export-download\")\n      .then((response: { url: string }) => {\n        return (response && response.url) || \"\";\n      });\n  }\n\n}\n","import { autoinject, LogManager, observable, Disposable } from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { Router, RouterConfiguration } from 'aurelia-router';\nimport { PLATFORM } from 'aurelia-pal';\nimport { User, UserManager } from \"oidc-client\";\nimport { OpenIdConnect, OpenIdConnectRoles } from \"aurelia-open-id-connect\";\nimport { PermissionStore, Configuration, AuthorizationService } from 'aurelia-permission';\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { Notification } from 'common/services/notification';\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\nimport { CoreCompanyService } from 'main/admin/services/companies/core-company-service';\nimport { I18N } from 'aurelia-i18n';\nimport { SessionService } from 'common/services/session-service';\nimport { EventAggregator } from 'aurelia-event-aggregator';\n\nimport Flatpickr from \"flatpickr\";\nimport { es } from \"flatpickr/dist/l10n/es.js\";\n\nimport * as $ from 'jquery';\n\n@autoinject()\nexport class App {\n\n  // reference to the single state\n  // this will be shared with all subcomponents\n  public state: State;\n\n  private logger: Logger;\n  private router: Router;\n\n  @observable\n  private user: User = null;\n\n  private subscriptions: Disposable[] = [];\n\n  constructor(\n    private i18n: I18N,\n    private store: StoreService,\n    private sessionService: SessionService,\n    private permissionStore: PermissionStore,\n    private coreCompanyService: CoreCompanyService,\n    private openIdConnect: OpenIdConnect,\n    private notification: Notification,\n    private ea: EventAggregator\n  ) {\n\n    this.logger = LogManager.getLogger('App');\n\n    this.state = this.store.state;\n\n    this.subscriptions.push(this.ea.subscribe('router:navigation:success', this.refresh.bind(this)));\n  }\n\n  public async attached(): Promise<any> {\n    const publicRoutes = ['manual-activation'];\n    const currentRoute = window.location.pathname.replace(/^\\//, '').split('/')[0];\n    \n    if (!publicRoutes.includes(currentRoute)) {\n      this.user = await this.sessionService.getUser();\n      if (!this.user) {\n        await this.openIdConnect.login();\n      }\n    } else {      \n      if (currentRoute === 'manual-activation') {\n        const urlParams = new URLSearchParams(window.location.search);\n        const token = urlParams.get('token');\n        \n        if (!token) {\n          this.notification.warning('Invalid activation link - missing token');\n        }\n      }\n    }\n  }\n\n  private async userChanged(): Promise<any> {\n    if (this.user) {\n      await this.loadUserProfile();\n    }\n  }\n\n  private async refresh(): Promise<any> {\n    $('#navbarToggleSidebar').removeClass('show');\n\n    if (!$('#navbarToggleSidebar').length) {\n      $('.navbar-brand').removeClass('hide');\n      $('.navbar-toggler').removeClass('show');\n      $('#main-content, #main-footer').removeClass('content-sidebar--closed content-sidebar--open');\n    }\n  }\n\n  private async loadUserProfile(): Promise<any> {\n\n    try {\n      const profile = await this.sessionService.getProfile();\n      this.permissionStore.useDefaultDefinition(profile.permissions);\n      this.permissionStore.definePermissionObject(PredefinedPermissions);\n      await this.store.setUserBasicInfoState(profile.basic_info);\n\n      await this.loadCompanies();\n\n      if (profile.basic_info.culture) {\n        // set locale\n        await this.i18n.setLocale(profile.basic_info.culture);\n        // set flatpickr locale\n        this.setFlatpickrLocale();\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async loadCompanies(): Promise<any> {\n    try {\n      const companies = await this.coreCompanyService.getAll();\n      await this.store.setCompaniesState(companies);\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public setFlatpickrLocale(): void {\n\n    if (this.state && this.state.userBasicInfo) {\n\n      var genericCulture = this.state.userBasicInfo.culture.split(\"-\")[0];\n\n      switch (genericCulture) {\n        case \"es\":\n          // this.logger.debug(\"genericCulture: \", genericCulture);\n          Flatpickr.localize(es);\n          break;\n        default:\n          break;\n      }\n\n    }\n  }\n\n  public async configureRouter(routerConfiguration: RouterConfiguration, router: Router): Promise<any> {\n\n    if (window.location.pathname.includes('//')) {\n      const cleanPath = window.location.pathname.replace(/\\/+/g, '/');\n      const newUrl = cleanPath + window.location.search + window.location.hash;\n      window.history.replaceState({}, '', newUrl);\n    }\n\n    // switch from hash (#) to slash (/) navigation\n    routerConfiguration.options.pushState = true;\n    routerConfiguration.title = \"Tht\";\n\n    // configure routes\n    routerConfiguration.map([\n      {\n        route: 'manual-activation',\n        moduleId: PLATFORM.moduleName('main/test/pages/people/public-person-form'),\n        name: 'manual-activation',\n        nav: false,\n        hideBreadcrumb: true,\n        settings: {\n          roles: [],\n          public: true\n        }\n      },\n      {\n        route: ['', 'home'],\n        moduleId: PLATFORM.moduleName('./home'),\n        name: 'home',\n        title: 'Home',\n        nav: true,\n        settings: {\n          t: 'main.pages.home.title'\n        }\n      },\n      {\n        route: 'company/:companyId?',\n        moduleId: PLATFORM.moduleName('main/main-child-router'),\n        name: 'main-child-router',\n        settings: {\n          roles: [OpenIdConnectRoles.Authenticated],\n        }\n      },\n      {\n        route: 'gui',\n        moduleId: PLATFORM.moduleName('./gui'),\n        name: 'gui'\n      },\n\n    ]);\n\n    var handleUnknownRoutes = (instruction: { fragment: string; }) => {\n      let path = instruction.fragment.toLowerCase();\n\n      if (path.includes(\"admin\"))\n        return PLATFORM.moduleName(\"main/admin/pages/errors/admin-unknown-route.html\");\n\n      return PLATFORM.moduleName(\"main/pages/errors/what-happened.html\");\n    };\n\n    routerConfiguration.mapUnknownRoutes(handleUnknownRoutes);\n\n    // aurelia-openid-connect plugin configuration\n    this.openIdConnect.configure(routerConfiguration);\n    this.router = router;\n\n  }\n}\n","module.exports = \"<template> <require from=common/resources/elements/ux/loading-indicator/ux-loading-indicator></require> <require from=common/resources/elements/ux/breadcrumbs/ux-aurelia-crumbs></require> <require from=main/components/nav-bar></require> <ux-loading-indicator></ux-loading-indicator> <nav-bar state.bind=state></nav-bar> <env-warning></env-warning> <div id=main-content class=\\\"content-wrapper row m-0\\\"> <div class=col-12> <ux-aurelia-crumbs></ux-aurelia-crumbs> <router-view swap-order=after></router-view> </div> </div> <back-to-top></back-to-top> <footer> <nav id=main-footer class=\\\"footer row col-12 navbar navbar-expand-sm\\\"> <a class=navbar-brand href=/ > <img src=\" + require(\"../assets/images/logo-tht.svg\") + \" width=50 height=50 alt=tht> </a> <button class=navbar-toggler type=button data-toggle=collapse data-target=#navbarCollapse aria-controls=navbarCollapse aria-expanded=false aria-label=\\\"Toggle navigation\\\"> <span class=navbar-toggler-icon></span> </button> <div class=\\\"collapse navbar-collapse\\\" id=navbarCollapse> <ul class=\\\"navbar-nav ml-auto\\\"> <li class=\\\"nav-item active\\\"> <a class=nav-link href=\\\"${state.currentCompany ? '/company/' + state.currentCompany.id : '/'}\\\">Home<span class=sr-only>(current)</span></a> </li> </ul> </div> </nav> </footer> </template> \";","\n\nimport { animationEvent, TemplatingEngine } from 'aurelia-templating';\nimport { DOM } from 'aurelia-pal';\n\nexport var CssAnimator = function () {\n  function CssAnimator() {\n    \n\n    this.useAnimationDoneClasses = false;\n    this.animationEnteredClass = 'au-entered';\n    this.animationLeftClass = 'au-left';\n    this.isAnimating = false;\n\n    this.verifyKeyframesExist = true;\n  }\n\n  CssAnimator.prototype._addMultipleEventListener = function _addMultipleEventListener(el, s, fn) {\n    var evts = s.split(' ');\n    for (var i = 0, ii = evts.length; i < ii; ++i) {\n      el.addEventListener(evts[i], fn, false);\n    }\n  };\n\n  CssAnimator.prototype._removeMultipleEventListener = function _removeMultipleEventListener(el, s, fn) {\n    var evts = s.split(' ');\n    for (var i = 0, ii = evts.length; i < ii; ++i) {\n      el.removeEventListener(evts[i], fn, false);\n    }\n  };\n\n  CssAnimator.prototype._getElementAnimationDelay = function _getElementAnimationDelay(element) {\n    var styl = DOM.getComputedStyle(element);\n    var prop = void 0;\n    var delay = void 0;\n\n    if (styl.getPropertyValue('animation-delay')) {\n      prop = 'animation-delay';\n    } else if (styl.getPropertyValue('-webkit-animation-delay')) {\n      prop = '-webkit-animation-delay';\n    } else if (styl.getPropertyValue('-moz-animation-delay')) {\n      prop = '-moz-animation-delay';\n    } else {\n      return 0;\n    }\n\n    delay = styl.getPropertyValue(prop);\n    delay = Number(delay.replace(/[^\\d\\.]/g, ''));\n\n    return delay * 1000;\n  };\n\n  CssAnimator.prototype._getElementAnimationNames = function _getElementAnimationNames(element) {\n    var styl = DOM.getComputedStyle(element);\n    var prefix = void 0;\n\n    if (styl.getPropertyValue('animation-name')) {\n      prefix = '';\n    } else if (styl.getPropertyValue('-webkit-animation-name')) {\n      prefix = '-webkit-';\n    } else if (styl.getPropertyValue('-moz-animation-name')) {\n      prefix = '-moz-';\n    } else {\n      return [];\n    }\n\n    var animationNames = styl.getPropertyValue(prefix + 'animation-name');\n    return animationNames ? animationNames.split(' ') : [];\n  };\n\n  CssAnimator.prototype._performSingleAnimate = function _performSingleAnimate(element, className) {\n    var _this = this;\n\n    this._triggerDOMEvent(animationEvent.animateBegin, element);\n\n    return this.addClass(element, className, true).then(function (result) {\n      _this._triggerDOMEvent(animationEvent.animateActive, element);\n\n      if (result !== false) {\n        return _this.removeClass(element, className, true).then(function () {\n          _this._triggerDOMEvent(animationEvent.animateDone, element);\n        });\n      }\n\n      return false;\n    }).catch(function () {\n      _this._triggerDOMEvent(animationEvent.animateTimeout, element);\n    });\n  };\n\n  CssAnimator.prototype._triggerDOMEvent = function _triggerDOMEvent(eventType, element) {\n    var evt = DOM.createCustomEvent(eventType, { bubbles: true, cancelable: true, detail: element });\n    DOM.dispatchEvent(evt);\n  };\n\n  CssAnimator.prototype._animationChangeWithValidKeyframe = function _animationChangeWithValidKeyframe(animationNames, prevAnimationNames) {\n    var newAnimationNames = animationNames.filter(function (name) {\n      return prevAnimationNames.indexOf(name) === -1;\n    });\n\n    if (newAnimationNames.length === 0) {\n      return false;\n    }\n\n    if (!this.verifyKeyframesExist) {\n      return true;\n    }\n\n    var keyframesRuleType = window.CSSRule.KEYFRAMES_RULE || window.CSSRule.MOZ_KEYFRAMES_RULE || window.CSSRule.WEBKIT_KEYFRAMES_RULE;\n\n    var styleSheets = document.styleSheets;\n\n    try {\n      for (var i = 0; i < styleSheets.length; ++i) {\n        var cssRules = null;\n\n        try {\n          cssRules = styleSheets[i].cssRules;\n        } catch (e) {}\n\n        if (!cssRules) {\n          continue;\n        }\n\n        for (var j = 0; j < cssRules.length; ++j) {\n          var cssRule = cssRules[j];\n\n          if (cssRule.type === keyframesRuleType) {\n            if (newAnimationNames.indexOf(cssRule.name) !== -1) {\n              return true;\n            }\n          }\n        }\n      }\n    } catch (e) {}\n\n    return false;\n  };\n\n  CssAnimator.prototype.animate = function animate(element, className) {\n    var _this2 = this;\n\n    if (Array.isArray(element)) {\n      return Promise.all(element.map(function (el) {\n        return _this2._performSingleAnimate(el, className);\n      }));\n    }\n\n    return this._performSingleAnimate(element, className);\n  };\n\n  CssAnimator.prototype.runSequence = function runSequence(animations) {\n    var _this3 = this;\n\n    this._triggerDOMEvent(animationEvent.sequenceBegin, null);\n\n    return animations.reduce(function (p, anim) {\n      return p.then(function () {\n        return _this3.animate(anim.element, anim.className);\n      });\n    }, Promise.resolve(true)).then(function () {\n      _this3._triggerDOMEvent(animationEvent.sequenceDone, null);\n    });\n  };\n\n  CssAnimator.prototype._stateAnim = function _stateAnim(element, direction, doneClass) {\n    var _this4 = this;\n\n    var auClass = 'au-' + direction;\n    var auClassActive = auClass + '-active';\n    return new Promise(function (resolve, reject) {\n      var classList = element.classList;\n\n      _this4._triggerDOMEvent(animationEvent[direction + 'Begin'], element);\n\n      if (_this4.useAnimationDoneClasses) {\n        classList.remove(_this4.animationEnteredClass);\n        classList.remove(_this4.animationLeftClass);\n      }\n\n      classList.add(auClass);\n      var prevAnimationNames = _this4._getElementAnimationNames(element);\n\n      var _animStart = void 0;\n      var animHasStarted = false;\n      _this4._addMultipleEventListener(element, 'webkitAnimationStart animationstart', _animStart = function animStart(evAnimStart) {\n        if (evAnimStart.target !== element) {\n          return;\n        }\n        animHasStarted = true;\n        _this4.isAnimating = true;\n\n        _this4._triggerDOMEvent(animationEvent[direction + 'Active'], element);\n\n        evAnimStart.stopPropagation();\n\n        evAnimStart.target.removeEventListener(evAnimStart.type, _animStart);\n      }, false);\n\n      var _animEnd = void 0;\n      _this4._addMultipleEventListener(element, 'webkitAnimationEnd animationend', _animEnd = function animEnd(evAnimEnd) {\n        if (!animHasStarted) {\n          return;\n        }\n        if (evAnimEnd.target !== element) {\n          return;\n        }\n\n        evAnimEnd.stopPropagation();\n\n        classList.remove(auClassActive);\n        classList.remove(auClass);\n\n        evAnimEnd.target.removeEventListener(evAnimEnd.type, _animEnd);\n\n        if (_this4.useAnimationDoneClasses && doneClass !== undefined && doneClass !== null) {\n          classList.add(doneClass);\n        }\n\n        _this4.isAnimating = false;\n        _this4._triggerDOMEvent(animationEvent[direction + 'Done'], element);\n\n        resolve(true);\n      }, false);\n\n      var parent = element.parentElement;\n      var attrib = 'data-animator-pending' + direction;\n\n      var cleanupAnimation = function cleanupAnimation() {\n        var animationNames = _this4._getElementAnimationNames(element);\n        if (!_this4._animationChangeWithValidKeyframe(animationNames, prevAnimationNames)) {\n          classList.remove(auClassActive);\n          classList.remove(auClass);\n\n          _this4._removeMultipleEventListener(element, 'webkitAnimationEnd animationend', _animEnd);\n          _this4._removeMultipleEventListener(element, 'webkitAnimationStart animationstart', _animStart);\n\n          _this4._triggerDOMEvent(animationEvent[direction + 'Timeout'], element);\n          resolve(false);\n        }\n        parent && parent.setAttribute(attrib, +(parent.getAttribute(attrib) || 1) - 1);\n      };\n\n      if (parent !== null && parent !== undefined && (parent.classList.contains('au-stagger') || parent.classList.contains('au-stagger-' + direction))) {\n        var offset = +(parent.getAttribute(attrib) || 0);\n        parent.setAttribute(attrib, offset + 1);\n        var delay = _this4._getElementAnimationDelay(parent) * offset;\n        _this4._triggerDOMEvent(animationEvent.staggerNext, element);\n\n        setTimeout(function () {\n          classList.add(auClassActive);\n          cleanupAnimation();\n        }, delay);\n      } else {\n        classList.add(auClassActive);\n        cleanupAnimation();\n      }\n    });\n  };\n\n  CssAnimator.prototype.enter = function enter(element) {\n    return this._stateAnim(element, 'enter', this.animationEnteredClass);\n  };\n\n  CssAnimator.prototype.leave = function leave(element) {\n    return this._stateAnim(element, 'leave', this.animationLeftClass);\n  };\n\n  CssAnimator.prototype.removeClass = function removeClass(element, className) {\n    var _this5 = this;\n\n    var suppressEvents = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2];\n\n    return new Promise(function (resolve, reject) {\n      var classList = element.classList;\n\n      if (!classList.contains(className) && !classList.contains(className + '-add')) {\n        resolve(false);\n        return;\n      }\n\n      if (suppressEvents !== true) {\n        _this5._triggerDOMEvent(animationEvent.removeClassBegin, element);\n      }\n\n      if (classList.contains(className + '-add')) {\n        classList.remove(className + '-add');\n        classList.add(className);\n      }\n\n      classList.remove(className);\n      var prevAnimationNames = _this5._getElementAnimationNames(element);\n\n      var _animStart2 = void 0;\n      var animHasStarted = false;\n      _this5._addMultipleEventListener(element, 'webkitAnimationStart animationstart', _animStart2 = function animStart(evAnimStart) {\n        if (evAnimStart.target !== element) {\n          return;\n        }\n        animHasStarted = true;\n        _this5.isAnimating = true;\n\n        if (suppressEvents !== true) {\n          _this5._triggerDOMEvent(animationEvent.removeClassActive, element);\n        }\n\n        evAnimStart.stopPropagation();\n\n        evAnimStart.target.removeEventListener(evAnimStart.type, _animStart2);\n      }, false);\n\n      var _animEnd2 = void 0;\n      _this5._addMultipleEventListener(element, 'webkitAnimationEnd animationend', _animEnd2 = function animEnd(evAnimEnd) {\n        if (!animHasStarted) {\n          return;\n        }\n        if (evAnimEnd.target !== element) {\n          return;\n        }\n\n        if (!element.classList.contains(className + '-remove')) {\n          resolve(true);\n        }\n\n        evAnimEnd.stopPropagation();\n\n        classList.remove(className);\n\n        classList.remove(className + '-remove');\n\n        evAnimEnd.target.removeEventListener(evAnimEnd.type, _animEnd2);\n\n        _this5.isAnimating = false;\n\n        if (suppressEvents !== true) {\n          _this5._triggerDOMEvent(animationEvent.removeClassDone, element);\n        }\n\n        resolve(true);\n      }, false);\n\n      classList.add(className + '-remove');\n\n      var animationNames = _this5._getElementAnimationNames(element);\n      if (!_this5._animationChangeWithValidKeyframe(animationNames, prevAnimationNames)) {\n        classList.remove(className + '-remove');\n        classList.remove(className);\n\n        _this5._removeMultipleEventListener(element, 'webkitAnimationEnd animationend', _animEnd2);\n        _this5._removeMultipleEventListener(element, 'webkitAnimationStart animationstart', _animStart2);\n\n        if (suppressEvents !== true) {\n          _this5._triggerDOMEvent(animationEvent.removeClassTimeout, element);\n        }\n\n        resolve(false);\n      }\n    });\n  };\n\n  CssAnimator.prototype.addClass = function addClass(element, className) {\n    var _this6 = this;\n\n    var suppressEvents = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2];\n\n    return new Promise(function (resolve, reject) {\n      var classList = element.classList;\n\n      if (suppressEvents !== true) {\n        _this6._triggerDOMEvent(animationEvent.addClassBegin, element);\n      }\n\n      if (classList.contains(className + '-remove')) {\n        classList.remove(className + '-remove');\n        classList.remove(className);\n      }\n\n      var _animStart3 = void 0;\n      var animHasStarted = false;\n      _this6._addMultipleEventListener(element, 'webkitAnimationStart animationstart', _animStart3 = function animStart(evAnimStart) {\n        if (evAnimStart.target !== element) {\n          return;\n        }\n        animHasStarted = true;\n        _this6.isAnimating = true;\n\n        if (suppressEvents !== true) {\n          _this6._triggerDOMEvent(animationEvent.addClassActive, element);\n        }\n\n        evAnimStart.stopPropagation();\n\n        evAnimStart.target.removeEventListener(evAnimStart.type, _animStart3);\n      }, false);\n\n      var _animEnd3 = void 0;\n      _this6._addMultipleEventListener(element, 'webkitAnimationEnd animationend', _animEnd3 = function animEnd(evAnimEnd) {\n        if (!animHasStarted) {\n          return;\n        }\n        if (evAnimEnd.target !== element) {\n          return;\n        }\n\n        if (!element.classList.contains(className + '-add')) {\n          resolve(true);\n        }\n\n        evAnimEnd.stopPropagation();\n\n        classList.add(className);\n\n        classList.remove(className + '-add');\n\n        evAnimEnd.target.removeEventListener(evAnimEnd.type, _animEnd3);\n\n        _this6.isAnimating = false;\n\n        if (suppressEvents !== true) {\n          _this6._triggerDOMEvent(animationEvent.addClassDone, element);\n        }\n\n        resolve(true);\n      }, false);\n\n      var prevAnimationNames = _this6._getElementAnimationNames(element);\n\n      classList.add(className + '-add');\n\n      var animationNames = _this6._getElementAnimationNames(element);\n      if (!_this6._animationChangeWithValidKeyframe(animationNames, prevAnimationNames)) {\n        classList.remove(className + '-add');\n        classList.add(className);\n\n        _this6._removeMultipleEventListener(element, 'webkitAnimationEnd animationend', _animEnd3);\n        _this6._removeMultipleEventListener(element, 'webkitAnimationStart animationstart', _animStart3);\n\n        if (suppressEvents !== true) {\n          _this6._triggerDOMEvent(animationEvent.addClassTimeout, element);\n        }\n\n        resolve(false);\n      }\n    });\n  };\n\n  return CssAnimator;\n}();\n\nexport function configure(config, callback) {\n  var animator = config.container.get(CssAnimator);\n  config.container.get(TemplatingEngine).configureAnimator(animator);\n  if (typeof callback === 'function') {\n    callback(animator);\n  }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PickerConfig = exports.AbpTagsInputCustomElement = undefined;\nexports.configure = configure;\n\nvar _abpTagsInput = require('./abp-tags-input');\n\nvar _pickerConfig = require('./picker-config');\n\nfunction configure(aurelia, callback) {\n  aurelia.globalResources('./abp-tags-input');\n\n  var config = new _pickerConfig.PickerConfig();\n\n  if (typeof callback === 'function') {\n    callback(config);\n  }\n}\n\nexports.AbpTagsInputCustomElement = _abpTagsInput.AbpTagsInputCustomElement;\nexports.PickerConfig = _pickerConfig.PickerConfig;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.AbpTagsInputCustomElement = undefined;\n\nvar _dec, _dec2, _dec3, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10;\n\nvar _aureliaFramework = require('aurelia-framework');\n\nvar _jquery = require('jquery');\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nrequire('bootstrap-tagsinput/dist/bootstrap-tagsinput');\n\nvar _pickerGlobalOptions = require('./picker-global-options');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _initDefineProp(target, property, descriptor, context) {\n  if (!descriptor) return;\n  Object.defineProperty(target, property, {\n    enumerable: descriptor.enumerable,\n    configurable: descriptor.configurable,\n    writable: descriptor.writable,\n    value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n  });\n}\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n  var desc = {};\n  Object['ke' + 'ys'](descriptor).forEach(function (key) {\n    desc[key] = descriptor[key];\n  });\n  desc.enumerable = !!desc.enumerable;\n  desc.configurable = !!desc.configurable;\n\n  if ('value' in desc || desc.initializer) {\n    desc.writable = true;\n  }\n\n  desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n    return decorator(target, property, desc) || desc;\n  }, desc);\n\n  if (context && desc.initializer !== void 0) {\n    desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n    desc.initializer = undefined;\n  }\n\n  if (desc.initializer === void 0) {\n    Object['define' + 'Property'](target, property, desc);\n    desc = null;\n  }\n\n  return desc;\n}\n\nfunction _initializerWarningHelper(descriptor, context) {\n  throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n}\n\nvar AbpTagsInputCustomElement = exports.AbpTagsInputCustomElement = (_dec = (0, _aureliaFramework.inject)(Element), _dec2 = (0, _aureliaFramework.bindable)({ defaultBindingMode: _aureliaFramework.bindingMode.twoWay }), _dec3 = (0, _aureliaFramework.bindable)({ defaultBindingMode: _aureliaFramework.bindingMode.twoWay }), _dec(_class = (_class2 = function () {\n  function AbpTagsInputCustomElement(elm) {\n    var _this = this;\n\n    _classCallCheck(this, AbpTagsInputCustomElement);\n\n    _initDefineProp(this, 'element', _descriptor, this);\n\n    _initDefineProp(this, 'value', _descriptor2, this);\n\n    _initDefineProp(this, 'bootstrapVersion', _descriptor3, this);\n\n    _initDefineProp(this, 'placeholder', _descriptor4, this);\n\n    _initDefineProp(this, 'options', _descriptor5, this);\n\n    _initDefineProp(this, 'onBeforeItemAdd', _descriptor6, this);\n\n    _initDefineProp(this, 'onBeforeItemRemove', _descriptor7, this);\n\n    _initDefineProp(this, 'onItemAdded', _descriptor8, this);\n\n    _initDefineProp(this, 'onItemAddedOnInit', _descriptor9, this);\n\n    _initDefineProp(this, 'onItemRemoved', _descriptor10, this);\n\n    this.events = {};\n    this.methods = {};\n    this.options = {};\n\n    this.elm = elm;\n\n    elm.focus = function () {\n      return _this.input.focus();\n    };\n  }\n\n  AbpTagsInputCustomElement.prototype.attached = function attached() {\n    this.domElm = (0, _jquery2.default)(this.elm).find('input');\n\n    var pickerOptions = this.options || {};\n    if (!pickerOptions.tagClass) {\n      pickerOptions.tagClass = this.bootstrapVersion === 3 ? 'label label-info' : 'badge badge-info';\n    }\n\n    this.applyExposeEvents();\n    this.exposeMethods();\n\n    pickerOptions = Object.assign({}, _pickerGlobalOptions.globalPickerOptions, pickerOptions);\n    this.domElm.tagsinput(pickerOptions);\n\n    this.element = {\n      events: this.events,\n      options: pickerOptions,\n      methods: this.methods\n    };\n  };\n\n  AbpTagsInputCustomElement.prototype.applyExposeEvents = function applyExposeEvents() {\n    var _this2 = this;\n\n    this.domElm.on('beforeItemAdd', function (e) {\n      if (typeof _this2.onBeforeItemAdd === 'function') {\n        _this2.onBeforeItemAdd(e);\n      }\n      if (typeof _this2.events.onBeforeItemAdd === 'function') {\n        _this2.events.onBeforeItemAdd(e);\n      }\n    });\n\n    this.domElm.on('beforeItemRemove', function (e) {\n      if (typeof _this2.onBeforeItemRemove === 'function') {\n        _this2.onBeforeItemRemove(e);\n      }\n      if (typeof _this2.events.onBeforeItemRemove === 'function') {\n        _this2.events.onBeforeItemRemove(e);\n      }\n    });\n\n    this.domElm.on('itemAdded', function (e) {\n      if (!e.options || !e.options.preventRefresh) {\n        _this2.suppressValueChanged = true;\n        _this2.value = _this2.domElm.tagsinput('items');\n      }\n      if (typeof _this2.onItemAdded === 'function') {\n        _this2.onItemAdded(e);\n      }\n      if (typeof _this2.events.onItemAdded === 'function') {\n        _this2.events.onItemAdded(e);\n      }\n    });\n\n    this.domElm.on('itemAddedOnInit', function (e) {\n      if (typeof _this2.onItemAddedOnInit === 'function') {\n        _this2.onItemAddedOnInit(e);\n      }\n      if (typeof _this2.events.onItemAddedOnInit === 'function') {\n        _this2.events.onItemAddedOnInit(e);\n      }\n    });\n\n    this.domElm.on('itemRemoved', function (e) {\n      if (!e.options || !e.options.preventRefresh) {\n        _this2.suppressValueChanged = true;\n        _this2.value = _this2.domElm.tagsinput('items');\n      }\n      if (typeof _this2.onItemRemoved === 'function') {\n        _this2.onItemRemoved(e);\n      }\n      if (typeof _this2.events.onItemRemoved === 'function') {\n        _this2.events.onItemRemoved(e);\n      }\n    });\n  };\n\n  AbpTagsInputCustomElement.prototype.blur = function blur() {\n    var event = _aureliaFramework.DOM.createCustomEvent('blur');\n    this.elm.dispatchEvent(event);\n  };\n\n  AbpTagsInputCustomElement.prototype.exposeMethods = function exposeMethods() {\n    var _this3 = this;\n\n    var methods = {\n      add: function add(value) {\n        return _this3.domElm.tagsinput('add', value);\n      },\n      destroy: function destroy() {\n        return _this3.domElm.tagsinput('destroy');\n      },\n      focus: function focus() {\n        return _this3.domElm.tagsinput('focus');\n      },\n      input: function input() {\n        return _this3.domElm.tagsinput('input');\n      },\n      refresh: function refresh() {\n        return _this3.domElm.tagsinput('refresh');\n      },\n      remove: function remove(value) {\n        return _this3.domElm.tagsinput('remove', value);\n      },\n      removeAll: function removeAll() {\n        _this3.suppressValueChanged = true;\n        _this3.domElm.tagsinput('removeAll');\n        _this3.value = _this3.domElm.tagsinput('items');\n      }\n    };\n\n    this.methods = methods;\n  };\n\n  AbpTagsInputCustomElement.prototype.detached = function detached() {\n    this.domElm.tagsinput('destroy');\n  };\n\n  AbpTagsInputCustomElement.prototype.areEqualArray = function areEqualArray(arr1, arr2) {\n    if (arr1 === null && arr2 === null) {\n      return true;\n    }\n    if (!Array.isArray(arr1) || !Array.isArray(arr2) || arr1.length !== arr2.length) {\n      return false;\n    }\n    for (var i = 0; i < arr1.length; i++) {\n      if (arr1[i] !== arr2[i]) {\n        return false;\n      }\n    }\n    return true;\n  };\n\n  AbpTagsInputCustomElement.prototype.valueChanged = function valueChanged(newValue, oldValue) {\n    var _this4 = this;\n\n    var newValueSplit = typeof newValue === 'string' ? newValue.split(',') : newValue;\n    var oldValueSplit = typeof oldValue === 'string' ? oldValue.split(',') : oldValue;\n\n    if (newValue && this.domElm && newValue !== oldValue && !this.areEqualArray(newValueSplit, oldValueSplit)) {\n      if (this.suppressValueChanged) {\n        this.suppressValueChanged = false;\n        return;\n      }\n      if (!this.suppressValueChanged) {\n        this.domElm.tagsinput('removeAll');\n        if (Array.isArray(newValue)) {\n          newValue.forEach(function (value) {\n            return _this4.domElm.tagsinput('add', value, { preventRefresh: true });\n          });\n        } else {\n          this.domElm.tagsinput('add', newValue, { preventRefresh: true });\n        }\n      }\n    }\n  };\n\n  return AbpTagsInputCustomElement;\n}(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'element', [_dec2], {\n  enumerable: true,\n  initializer: null\n}), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'value', [_dec3], {\n  enumerable: true,\n  initializer: null\n}), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'bootstrapVersion', [_aureliaFramework.bindable], {\n  enumerable: true,\n  initializer: function initializer() {\n    return _pickerGlobalOptions.globalExtraOptions.bootstrapVersion;\n  }\n}), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'placeholder', [_aureliaFramework.bindable], {\n  enumerable: true,\n  initializer: function initializer() {\n    return '';\n  }\n}), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, 'options', [_aureliaFramework.bindable], {\n  enumerable: true,\n  initializer: null\n}), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, 'onBeforeItemAdd', [_aureliaFramework.bindable], {\n  enumerable: true,\n  initializer: null\n}), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, 'onBeforeItemRemove', [_aureliaFramework.bindable], {\n  enumerable: true,\n  initializer: null\n}), _descriptor8 = _applyDecoratedDescriptor(_class2.prototype, 'onItemAdded', [_aureliaFramework.bindable], {\n  enumerable: true,\n  initializer: null\n}), _descriptor9 = _applyDecoratedDescriptor(_class2.prototype, 'onItemAddedOnInit', [_aureliaFramework.bindable], {\n  enumerable: true,\n  initializer: null\n}), _descriptor10 = _applyDecoratedDescriptor(_class2.prototype, 'onItemRemoved', [_aureliaFramework.bindable], {\n  enumerable: true,\n  initializer: null\n})), _class2)) || _class);","module.exports = \"<template> <input type=text class=form-control data-role=tagsinput value.bind=value blur.trigger=blur() placeholder.bind=placeholder /> </template> \";","import { DialogConfiguration } from './dialog-configuration';\nexport function configure(frameworkConfig, callback) {\n    var applyConfig = null;\n    var config = new DialogConfiguration(frameworkConfig, function (apply) { applyConfig = apply; });\n    if (typeof callback === 'function') {\n        callback(config);\n    }\n    else {\n        config.useDefaults();\n    }\n    return applyConfig();\n}\nexport * from './dialog-settings';\nexport * from './dialog-configuration';\nexport * from './renderer';\nexport * from './dialog-cancel-error';\nexport * from './dialog-service';\nexport * from './dialog-controller';\n","\n\nimport * as LogManager from 'aurelia-logging';\n\nvar logger = LogManager.getLogger('event-aggregator');\n\nvar Handler = function () {\n  function Handler(messageType, callback) {\n    \n\n    this.messageType = messageType;\n    this.callback = callback;\n  }\n\n  Handler.prototype.handle = function handle(message) {\n    if (message instanceof this.messageType) {\n      this.callback.call(null, message);\n    }\n  };\n\n  return Handler;\n}();\n\nfunction invokeCallback(callback, data, event) {\n  try {\n    callback(data, event);\n  } catch (e) {\n    logger.error(e);\n  }\n}\n\nfunction invokeHandler(handler, data) {\n  try {\n    handler.handle(data);\n  } catch (e) {\n    logger.error(e);\n  }\n}\n\nexport var EventAggregator = function () {\n  function EventAggregator() {\n    \n\n    this.eventLookup = {};\n    this.messageHandlers = [];\n  }\n\n  EventAggregator.prototype.publish = function publish(event, data) {\n    var subscribers = void 0;\n    var i = void 0;\n\n    if (!event) {\n      throw new Error('Event was invalid.');\n    }\n\n    if (typeof event === 'string') {\n      subscribers = this.eventLookup[event];\n      if (subscribers) {\n        subscribers = subscribers.slice();\n        i = subscribers.length;\n\n        while (i--) {\n          invokeCallback(subscribers[i], data, event);\n        }\n      }\n    } else {\n      subscribers = this.messageHandlers.slice();\n      i = subscribers.length;\n\n      while (i--) {\n        invokeHandler(subscribers[i], event);\n      }\n    }\n  };\n\n  EventAggregator.prototype.subscribe = function subscribe(event, callback) {\n    var handler = void 0;\n    var subscribers = void 0;\n\n    if (!event) {\n      throw new Error('Event channel/type was invalid.');\n    }\n\n    if (typeof event === 'string') {\n      handler = callback;\n      subscribers = this.eventLookup[event] || (this.eventLookup[event] = []);\n    } else {\n      handler = new Handler(event, callback);\n      subscribers = this.messageHandlers;\n    }\n\n    subscribers.push(handler);\n\n    return {\n      dispose: function dispose() {\n        var idx = subscribers.indexOf(handler);\n        if (idx !== -1) {\n          subscribers.splice(idx, 1);\n        }\n      }\n    };\n  };\n\n  EventAggregator.prototype.subscribeOnce = function subscribeOnce(event, callback) {\n    var sub = this.subscribe(event, function (a, b) {\n      sub.dispose();\n      return callback(a, b);\n    });\n\n    return sub;\n  };\n\n  return EventAggregator;\n}();\n\nexport function includeEventsIn(obj) {\n  var ea = new EventAggregator();\n\n  obj.subscribeOnce = function (event, callback) {\n    return ea.subscribeOnce(event, callback);\n  };\n\n  obj.subscribe = function (event, callback) {\n    return ea.subscribe(event, callback);\n  };\n\n  obj.publish = function (event, data) {\n    ea.publish(event, data);\n  };\n\n  return ea;\n}\n\nexport function configure(config) {\n  config.instance(EventAggregator, includeEventsIn(config.aurelia));\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.configure = configure;\n\nvar _aureliaPal = require('aurelia-pal');\n\nfunction configure(config) {\n  config.globalResources(_aureliaPal.PLATFORM.moduleName('./aurelia-flatpickr'));\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.AureliaFlatpickrCustomElement = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _dec, _dec2, _class, _desc, _value, _class2, _descriptor, _descriptor2;\n\nvar _aureliaFramework = require('aurelia-framework');\n\nvar _flatpickr = require('flatpickr');\n\nvar _flatpickr2 = _interopRequireDefault(_flatpickr);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _initDefineProp(target, property, descriptor, context) {\n    if (!descriptor) return;\n    Object.defineProperty(target, property, {\n        enumerable: descriptor.enumerable,\n        configurable: descriptor.configurable,\n        writable: descriptor.writable,\n        value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n    });\n}\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n    var desc = {};\n    Object['ke' + 'ys'](descriptor).forEach(function (key) {\n        desc[key] = descriptor[key];\n    });\n    desc.enumerable = !!desc.enumerable;\n    desc.configurable = !!desc.configurable;\n\n    if ('value' in desc || desc.initializer) {\n        desc.writable = true;\n    }\n\n    desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n        return decorator(target, property, desc) || desc;\n    }, desc);\n\n    if (context && desc.initializer !== void 0) {\n        desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n        desc.initializer = undefined;\n    }\n\n    if (desc.initializer === void 0) {\n        Object['define' + 'Property'](target, property, desc);\n        desc = null;\n    }\n\n    return desc;\n}\n\nfunction _initializerWarningHelper(descriptor, context) {\n    throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n}\n\nvar defaultConfig = {\n    enableTime: true,\n    altInput: true,\n    altFormat: \"F j, Y h:i K\"\n};\n\nvar AureliaFlatpickrCustomElement = exports.AureliaFlatpickrCustomElement = (_dec = (0, _aureliaFramework.inject)(Element), _dec2 = (0, _aureliaFramework.bindable)({ defaultBindingMode: _aureliaFramework.bindingMode.twoWay }), _dec(_class = (_class2 = function () {\n    function AureliaFlatpickrCustomElement(element) {\n        _classCallCheck(this, AureliaFlatpickrCustomElement);\n\n        _initDefineProp(this, 'config', _descriptor, this);\n\n        _initDefineProp(this, 'value', _descriptor2, this);\n\n        this.element = element;\n    }\n\n    AureliaFlatpickrCustomElement.prototype.bind = function bind() {\n        this._config = Object.assign({}, defaultConfig, this.config);\n\n        this._config.onChange = this._config.onMonthChange = this._config.onYearChange = this.onChange.bind(this);\n    };\n\n    AureliaFlatpickrCustomElement.prototype.attached = function attached() {\n        this.flatpickr = new _flatpickr2.default(this.element.querySelector('.aurelia-flatpickr'), this._config);\n\n        this.valueChanged();\n    };\n\n    AureliaFlatpickrCustomElement.prototype.onChange = function onChange(selectedDates, dateStr, instance) {\n        var _this = this;\n\n        if (!this._datesAreSynced(this.value, selectedDates)) {\n\n            switch (selectedDates.length) {\n                case 0:\n                    this.value = undefined;\n                    break;\n                case 1:\n                    this.value = this._cloneDate(selectedDates[0]);\n                    break;\n                default:\n                    this.value = selectedDates.map(function (d) {\n                        return _this._cloneDate(d);\n                    });\n                    break;\n            }\n        }\n    };\n\n    AureliaFlatpickrCustomElement.prototype.valueChanged = function valueChanged() {\n        var _this2 = this;\n\n        if (!this.flatpickr) {\n            return;\n        }\n\n        if (this._datesAreSynced(this.value, this.flatpickr.selectedDates)) {\n            return;\n        }\n\n        var newDate = void 0;\n\n        if (!this.value) {\n            newDate = undefined;\n        } else if (!Array.isArray(this.value)) {\n            newDate = this._cloneDate(this.value);\n        } else {\n            newDate = this.value.map(function (d) {\n                return _this2._cloneDate(d);\n            });\n        }\n\n        this.flatpickr.setDate(newDate);\n    };\n\n    AureliaFlatpickrCustomElement.prototype._datesAreSynced = function _datesAreSynced(model, view) {\n        model = model || [];\n\n        var modelDates = Array.isArray(model) ? model : [model];\n\n        var _loop = function _loop(d) {\n            var modelDate = modelDates[d];\n\n            if (view.findIndex(function (v) {\n                return v.valueOf() === modelDate.valueOf();\n            }) > -1) {\n                return 'continue';\n            }\n\n            return {\n                v: false\n            };\n        };\n\n        for (var d = 0; d < modelDates.length; d++) {\n            var _ret = _loop(d);\n\n            switch (_ret) {\n                case 'continue':\n                    continue;\n\n                default:\n                    if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === \"object\") return _ret.v;\n            }\n        }\n\n        var _loop2 = function _loop2(d) {\n            var viewDate = view[d];\n\n            if (modelDates.findIndex(function (m) {\n                return m.valueOf() === viewDate.valueOf();\n            }) > -1) {\n                return 'continue';\n            }\n\n            return {\n                v: false\n            };\n        };\n\n        for (var d = 0; d < view.length; d++) {\n            var _ret2 = _loop2(d);\n\n            switch (_ret2) {\n                case 'continue':\n                    continue;\n\n                default:\n                    if ((typeof _ret2 === 'undefined' ? 'undefined' : _typeof(_ret2)) === \"object\") return _ret2.v;\n            }\n        }\n\n        return true;\n    };\n\n    AureliaFlatpickrCustomElement.prototype._cloneDate = function _cloneDate(d) {\n        return new Date(d.getTime ? d.valueOf() : d);\n    };\n\n    return AureliaFlatpickrCustomElement;\n}(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'config', [_aureliaFramework.bindable], {\n    enumerable: true,\n    initializer: function initializer() {\n        return {};\n    }\n}), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'value', [_dec2], {\n    enumerable: true,\n    initializer: null\n})), _class2)) || _class);","module.exports = \"<template> <require from=flatpickr/dist/flatpickr.css></require> <slot> <input class=aurelia-flatpickr type=text placeholder=\\\"Select Date..\\\"> </slot> </template> \";","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\nimport * as TheLogManager from 'aurelia-logging';\nimport { Container } from 'aurelia-dependency-injection';\nimport { Loader } from 'aurelia-loader';\nimport { BindingLanguage, ViewSlot, ViewResources, TemplatingEngine, CompositionTransaction, ViewEngine, HtmlBehaviorResource } from 'aurelia-templating';\nimport { DOM, PLATFORM } from 'aurelia-pal';\nimport { relativeToFile, join } from 'aurelia-path';\n\nfunction preventActionlessFormSubmit() {\n  DOM.addEventListener('submit', function (evt) {\n    var target = evt.target;\n    var action = target.action;\n\n    if (target.tagName.toLowerCase() === 'form' && !action) {\n      evt.preventDefault();\n    }\n  });\n}\n\nexport var Aurelia = function () {\n  function Aurelia(loader, container, resources) {\n    \n\n    this.loader = loader || new PLATFORM.Loader();\n    this.container = container || new Container().makeGlobal();\n    this.resources = resources || new ViewResources();\n    this.use = new FrameworkConfiguration(this);\n    this.logger = TheLogManager.getLogger('aurelia');\n    this.hostConfigured = false;\n    this.host = null;\n\n    this.use.instance(Aurelia, this);\n    this.use.instance(Loader, this.loader);\n    this.use.instance(ViewResources, this.resources);\n  }\n\n  Aurelia.prototype.start = function start() {\n    var _this = this;\n\n    if (this._started) {\n      return this._started;\n    }\n\n    this.logger.info('Aurelia Starting');\n    return this._started = this.use.apply().then(function () {\n      preventActionlessFormSubmit();\n\n      if (!_this.container.hasResolver(BindingLanguage)) {\n        var message = 'You must configure Aurelia with a BindingLanguage implementation.';\n        _this.logger.error(message);\n        throw new Error(message);\n      }\n\n      _this.logger.info('Aurelia Started');\n      var evt = DOM.createCustomEvent('aurelia-started', { bubbles: true, cancelable: true });\n      DOM.dispatchEvent(evt);\n      return _this;\n    });\n  };\n\n  Aurelia.prototype.enhance = function enhance() {\n    var _this2 = this;\n\n    var bindingContext = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var applicationHost = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n    this._configureHost(applicationHost || DOM.querySelectorAll('body')[0]);\n\n    return new Promise(function (resolve) {\n      var engine = _this2.container.get(TemplatingEngine);\n      _this2.root = engine.enhance({ container: _this2.container, element: _this2.host, resources: _this2.resources, bindingContext: bindingContext });\n      _this2.root.attached();\n      _this2._onAureliaComposed();\n      resolve(_this2);\n    });\n  };\n\n  Aurelia.prototype.setRoot = function setRoot() {\n    var _this3 = this;\n\n    var root = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    var applicationHost = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n    var instruction = {};\n\n    if (this.root && this.root.viewModel && this.root.viewModel.router) {\n      this.root.viewModel.router.deactivate();\n      this.root.viewModel.router.reset();\n    }\n\n    this._configureHost(applicationHost);\n\n    var engine = this.container.get(TemplatingEngine);\n    var transaction = this.container.get(CompositionTransaction);\n    delete transaction.initialComposition;\n\n    if (!root) {\n      if (this.configModuleId) {\n        root = relativeToFile('./app', this.configModuleId);\n      } else {\n        root = 'app';\n      }\n    }\n\n    instruction.viewModel = root;\n    instruction.container = instruction.childContainer = this.container;\n    instruction.viewSlot = this.hostSlot;\n    instruction.host = this.host;\n\n    return engine.compose(instruction).then(function (r) {\n      _this3.root = r;\n      instruction.viewSlot.attached();\n      _this3._onAureliaComposed();\n      return _this3;\n    });\n  };\n\n  Aurelia.prototype._configureHost = function _configureHost(applicationHost) {\n    if (this.hostConfigured) {\n      return;\n    }\n    applicationHost = applicationHost || this.host;\n\n    if (!applicationHost || typeof applicationHost === 'string') {\n      this.host = DOM.getElementById(applicationHost || 'applicationHost');\n    } else {\n      this.host = applicationHost;\n    }\n\n    if (!this.host) {\n      throw new Error('No applicationHost was specified.');\n    }\n\n    this.hostConfigured = true;\n    this.host.aurelia = this;\n    this.hostSlot = new ViewSlot(this.host, true);\n    this.hostSlot.transformChildNodesIntoView();\n    this.container.registerInstance(DOM.boundary, this.host);\n  };\n\n  Aurelia.prototype._onAureliaComposed = function _onAureliaComposed() {\n    var evt = DOM.createCustomEvent('aurelia-composed', { bubbles: true, cancelable: true });\n    setTimeout(function () {\n      return DOM.dispatchEvent(evt);\n    }, 1);\n  };\n\n  return Aurelia;\n}();\n\nvar logger = TheLogManager.getLogger('aurelia');\nvar extPattern = /\\.[^/.]+$/;\n\nfunction runTasks(config, tasks) {\n  var current = void 0;\n  var next = function next() {\n    current = tasks.shift();\n    if (current) {\n      return Promise.resolve(current(config)).then(next);\n    }\n\n    return Promise.resolve();\n  };\n\n  return next();\n}\n\nfunction loadPlugin(fwConfig, loader, info) {\n  logger.debug('Loading plugin ' + info.moduleId + '.');\n  if (typeof info.moduleId === 'string') {\n    fwConfig.resourcesRelativeTo = info.resourcesRelativeTo;\n\n    var id = info.moduleId;\n\n    if (info.resourcesRelativeTo.length > 1) {\n      return loader.normalize(info.moduleId, info.resourcesRelativeTo[1]).then(function (normalizedId) {\n        return _loadPlugin(normalizedId);\n      });\n    }\n\n    return _loadPlugin(id);\n  } else if (typeof info.configure === 'function') {\n    if (fwConfig.configuredPlugins.indexOf(info.configure) !== -1) {\n      return Promise.resolve();\n    }\n    fwConfig.configuredPlugins.push(info.configure);\n\n    return Promise.resolve(info.configure.call(null, fwConfig, info.config || {}));\n  }\n  throw new Error(invalidConfigMsg(info.moduleId || info.configure, 'plugin'));\n\n  function _loadPlugin(moduleId) {\n    return loader.loadModule(moduleId).then(function (m) {\n      if ('configure' in m) {\n        if (fwConfig.configuredPlugins.indexOf(m.configure) !== -1) {\n          return Promise.resolve();\n        }\n        return Promise.resolve(m.configure(fwConfig, info.config || {})).then(function () {\n          fwConfig.configuredPlugins.push(m.configure);\n          fwConfig.resourcesRelativeTo = null;\n          logger.debug('Configured plugin ' + info.moduleId + '.');\n        });\n      }\n\n      fwConfig.resourcesRelativeTo = null;\n      logger.debug('Loaded plugin ' + info.moduleId + '.');\n    });\n  }\n}\n\nfunction loadResources(aurelia, resourcesToLoad, appResources) {\n  if (Object.keys(resourcesToLoad).length === 0) {\n    return Promise.resolve();\n  }\n  var viewEngine = aurelia.container.get(ViewEngine);\n\n  return Promise.all(Object.keys(resourcesToLoad).map(function (n) {\n    return _normalize(resourcesToLoad[n]);\n  })).then(function (loads) {\n    var names = [];\n    var importIds = [];\n\n    loads.forEach(function (l) {\n      names.push(undefined);\n      importIds.push(l.importId);\n    });\n\n    return viewEngine.importViewResources(importIds, names, appResources);\n  });\n\n  function _normalize(load) {\n    var moduleId = load.moduleId;\n    var ext = getExt(moduleId);\n\n    if (isOtherResource(moduleId)) {\n      moduleId = removeExt(moduleId);\n    }\n\n    return aurelia.loader.normalize(moduleId, load.relativeTo).then(function (normalized) {\n      return {\n        name: load.moduleId,\n        importId: isOtherResource(load.moduleId) ? addOriginalExt(normalized, ext) : normalized\n      };\n    });\n  }\n\n  function isOtherResource(name) {\n    var ext = getExt(name);\n    if (!ext) return false;\n    if (ext === '') return false;\n    if (ext === '.js' || ext === '.ts') return false;\n    return true;\n  }\n\n  function removeExt(name) {\n    return name.replace(extPattern, '');\n  }\n\n  function addOriginalExt(normalized, ext) {\n    return removeExt(normalized) + '.' + ext;\n  }\n}\n\nfunction getExt(name) {\n  var match = name.match(extPattern);\n  if (match && match.length > 0) {\n    return match[0].split('.')[1];\n  }\n}\n\nfunction loadBehaviors(config) {\n  return Promise.all(config.behaviorsToLoad.map(function (m) {\n    return m.load(config.container, m.target);\n  })).then(function () {\n    config.behaviorsToLoad = null;\n  });\n}\n\nfunction assertProcessed(plugins) {\n  if (plugins.processed) {\n    throw new Error('This config instance has already been applied. To load more plugins or global resources, create a new FrameworkConfiguration instance.');\n  }\n}\n\nfunction invalidConfigMsg(cfg, type) {\n  return 'Invalid ' + type + ' [' + cfg + '], ' + type + ' must be specified as functions or relative module IDs.';\n}\n\nvar FrameworkConfiguration = function () {\n  function FrameworkConfiguration(aurelia) {\n    var _this4 = this;\n\n    \n\n    this.aurelia = aurelia;\n    this.container = aurelia.container;\n\n    this.info = [];\n    this.processed = false;\n    this.preTasks = [];\n    this.postTasks = [];\n\n    this.behaviorsToLoad = [];\n\n    this.configuredPlugins = [];\n    this.resourcesToLoad = {};\n    this.preTask(function () {\n      return aurelia.loader.normalize('aurelia-bootstrapper').then(function (name) {\n        return _this4.bootstrapperName = name;\n      });\n    });\n    this.postTask(function () {\n      return loadResources(aurelia, _this4.resourcesToLoad, aurelia.resources);\n    });\n  }\n\n  FrameworkConfiguration.prototype.instance = function instance(type, _instance) {\n    this.container.registerInstance(type, _instance);\n    return this;\n  };\n\n  FrameworkConfiguration.prototype.singleton = function singleton(type, implementation) {\n    this.container.registerSingleton(type, implementation);\n    return this;\n  };\n\n  FrameworkConfiguration.prototype.transient = function transient(type, implementation) {\n    this.container.registerTransient(type, implementation);\n    return this;\n  };\n\n  FrameworkConfiguration.prototype.preTask = function preTask(task) {\n    assertProcessed(this);\n    this.preTasks.push(task);\n    return this;\n  };\n\n  FrameworkConfiguration.prototype.postTask = function postTask(task) {\n    assertProcessed(this);\n    this.postTasks.push(task);\n    return this;\n  };\n\n  FrameworkConfiguration.prototype.feature = function feature(plugin) {\n    var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    switch (typeof plugin === 'undefined' ? 'undefined' : _typeof(plugin)) {\n      case 'string':\n        var hasIndex = /\\/index$/i.test(plugin);\n        var _moduleId = hasIndex || getExt(plugin) ? plugin : plugin + '/index';\n        var root = hasIndex ? plugin.substr(0, plugin.length - 6) : plugin;\n        this.info.push({ moduleId: _moduleId, resourcesRelativeTo: [root, ''], config: config });\n        break;\n\n      case 'function':\n        this.info.push({ configure: plugin, config: config || {} });\n        break;\n      default:\n        throw new Error(invalidConfigMsg(plugin, 'feature'));\n    }\n    return this;\n  };\n\n  FrameworkConfiguration.prototype.globalResources = function globalResources(resources) {\n    var _this5 = this;\n\n    assertProcessed(this);\n\n    var toAdd = Array.isArray(resources) ? resources : arguments;\n    var resource = void 0;\n    var resourcesRelativeTo = this.resourcesRelativeTo || ['', ''];\n\n    for (var i = 0, ii = toAdd.length; i < ii; ++i) {\n      resource = toAdd[i];\n      switch (typeof resource === 'undefined' ? 'undefined' : _typeof(resource)) {\n        case 'string':\n          var parent = resourcesRelativeTo[0];\n          var grandParent = resourcesRelativeTo[1];\n          var name = resource;\n\n          if ((resource.startsWith('./') || resource.startsWith('../')) && parent !== '') {\n            name = join(parent, resource);\n          }\n\n          this.resourcesToLoad[name] = { moduleId: name, relativeTo: grandParent };\n          break;\n        case 'function':\n          var meta = this.aurelia.resources.autoRegister(this.container, resource);\n          if (meta instanceof HtmlBehaviorResource && meta.elementName !== null) {\n            if (this.behaviorsToLoad.push(meta) === 1) {\n              this.postTask(function () {\n                return loadBehaviors(_this5);\n              });\n            }\n          }\n          break;\n        default:\n          throw new Error(invalidConfigMsg(resource, 'resource'));\n      }\n    }\n\n    return this;\n  };\n\n  FrameworkConfiguration.prototype.globalName = function globalName(resourcePath, newName) {\n    assertProcessed(this);\n    this.resourcesToLoad[resourcePath] = { moduleId: newName, relativeTo: '' };\n    return this;\n  };\n\n  FrameworkConfiguration.prototype.plugin = function plugin(_plugin, pluginConfig) {\n    assertProcessed(this);\n\n    var info = void 0;\n    switch (typeof _plugin === 'undefined' ? 'undefined' : _typeof(_plugin)) {\n      case 'string':\n        info = { moduleId: _plugin, resourcesRelativeTo: [_plugin, ''], config: pluginConfig || {} };\n        break;\n      case 'function':\n        info = { configure: _plugin, config: pluginConfig || {} };\n        break;\n      default:\n        throw new Error(invalidConfigMsg(_plugin, 'plugin'));\n    }\n    this.info.push(info);\n    return this;\n  };\n\n  FrameworkConfiguration.prototype._addNormalizedPlugin = function _addNormalizedPlugin(name, config) {\n    var _this6 = this;\n\n    var plugin = { moduleId: name, resourcesRelativeTo: [name, ''], config: config || {} };\n    this.info.push(plugin);\n\n    this.preTask(function () {\n      var relativeTo = [name, _this6.bootstrapperName];\n      plugin.moduleId = name;\n      plugin.resourcesRelativeTo = relativeTo;\n      return Promise.resolve();\n    });\n\n    return this;\n  };\n\n  FrameworkConfiguration.prototype.defaultBindingLanguage = function defaultBindingLanguage() {\n    return this._addNormalizedPlugin('aurelia-templating-binding');\n  };\n\n  FrameworkConfiguration.prototype.router = function router() {\n    return this._addNormalizedPlugin('aurelia-templating-router');\n  };\n\n  FrameworkConfiguration.prototype.history = function history() {\n    return this._addNormalizedPlugin('aurelia-history-browser');\n  };\n\n  FrameworkConfiguration.prototype.defaultResources = function defaultResources() {\n    return this._addNormalizedPlugin('aurelia-templating-resources');\n  };\n\n  FrameworkConfiguration.prototype.eventAggregator = function eventAggregator() {\n    return this._addNormalizedPlugin('aurelia-event-aggregator');\n  };\n\n  FrameworkConfiguration.prototype.basicConfiguration = function basicConfiguration() {\n    return this.defaultBindingLanguage().defaultResources().eventAggregator();\n  };\n\n  FrameworkConfiguration.prototype.standardConfiguration = function standardConfiguration() {\n    return this.basicConfiguration().history().router();\n  };\n\n  FrameworkConfiguration.prototype.developmentLogging = function developmentLogging(level) {\n    var _this7 = this;\n\n    var logLevel = level ? TheLogManager.logLevel[level] : undefined;\n\n    if (logLevel === undefined) {\n      logLevel = TheLogManager.logLevel.debug;\n    }\n\n    this.preTask(function () {\n      return _this7.aurelia.loader.normalize('aurelia-logging-console', _this7.bootstrapperName).then(function (name) {\n        return _this7.aurelia.loader.loadModule(name).then(function (m) {\n          TheLogManager.addAppender(new m.ConsoleAppender());\n          TheLogManager.setLevel(logLevel);\n        });\n      });\n    });\n\n    return this;\n  };\n\n  FrameworkConfiguration.prototype.apply = function apply() {\n    var _this8 = this;\n\n    if (this.processed) {\n      return Promise.resolve();\n    }\n\n    return runTasks(this, this.preTasks).then(function () {\n      var loader = _this8.aurelia.loader;\n      var info = _this8.info;\n      var current = void 0;\n\n      var next = function next() {\n        current = info.shift();\n        if (current) {\n          return loadPlugin(_this8, loader, current).then(next);\n        }\n\n        _this8.processed = true;\n        _this8.configuredPlugins = null;\n        return Promise.resolve();\n      };\n\n      return next().then(function () {\n        return runTasks(_this8, _this8.postTasks);\n      });\n    });\n  };\n\n  return FrameworkConfiguration;\n}();\n\nexport { FrameworkConfiguration };\n\n\nexport * from 'aurelia-dependency-injection';\nexport * from 'aurelia-binding';\nexport * from 'aurelia-metadata';\nexport * from 'aurelia-templating';\nexport * from 'aurelia-loader';\nexport * from 'aurelia-task-queue';\nexport * from 'aurelia-path';\nexport * from 'aurelia-pal';\n\nexport var LogManager = TheLogManager;","var _class, _temp;\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\nimport { DOM, PLATFORM } from 'aurelia-pal';\nimport { History } from 'aurelia-history';\n\nexport var LinkHandler = function () {\n  function LinkHandler() {\n    \n  }\n\n  LinkHandler.prototype.activate = function activate(history) {};\n\n  LinkHandler.prototype.deactivate = function deactivate() {};\n\n  return LinkHandler;\n}();\n\nexport var DefaultLinkHandler = function (_LinkHandler) {\n  _inherits(DefaultLinkHandler, _LinkHandler);\n\n  function DefaultLinkHandler() {\n    \n\n    var _this = _possibleConstructorReturn(this, _LinkHandler.call(this));\n\n    _this.handler = function (e) {\n      var _DefaultLinkHandler$g = DefaultLinkHandler.getEventInfo(e),\n          shouldHandleEvent = _DefaultLinkHandler$g.shouldHandleEvent,\n          href = _DefaultLinkHandler$g.href;\n\n      if (shouldHandleEvent) {\n        e.preventDefault();\n        _this.history.navigate(href);\n      }\n    };\n    return _this;\n  }\n\n  DefaultLinkHandler.prototype.activate = function activate(history) {\n    if (history._hasPushState) {\n      this.history = history;\n      DOM.addEventListener('click', this.handler, true);\n    }\n  };\n\n  DefaultLinkHandler.prototype.deactivate = function deactivate() {\n    DOM.removeEventListener('click', this.handler);\n  };\n\n  DefaultLinkHandler.getEventInfo = function getEventInfo(event) {\n    var info = {\n      shouldHandleEvent: false,\n      href: null,\n      anchor: null\n    };\n\n    var target = DefaultLinkHandler.findClosestAnchor(event.target);\n    if (!target || !DefaultLinkHandler.targetIsThisWindow(target)) {\n      return info;\n    }\n\n    if (target.hasAttribute('download') || target.hasAttribute('router-ignore')) {\n      return info;\n    }\n\n    if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) {\n      return info;\n    }\n\n    var href = target.getAttribute('href');\n    info.anchor = target;\n    info.href = href;\n\n    var leftButtonClicked = event.which === 1;\n    var isRelative = href && !(href.charAt(0) === '#' || /^[a-z]+:/i.test(href));\n\n    info.shouldHandleEvent = leftButtonClicked && isRelative;\n    return info;\n  };\n\n  DefaultLinkHandler.findClosestAnchor = function findClosestAnchor(el) {\n    while (el) {\n      if (el.tagName === 'A') {\n        return el;\n      }\n\n      el = el.parentNode;\n    }\n  };\n\n  DefaultLinkHandler.targetIsThisWindow = function targetIsThisWindow(target) {\n    var targetWindow = target.getAttribute('target');\n    var win = PLATFORM.global;\n\n    return !targetWindow || targetWindow === win.name || targetWindow === '_self';\n  };\n\n  return DefaultLinkHandler;\n}(LinkHandler);\n\nexport function configure(config) {\n  config.singleton(History, BrowserHistory);\n  config.transient(LinkHandler, DefaultLinkHandler);\n}\n\nexport var BrowserHistory = (_temp = _class = function (_History) {\n  _inherits(BrowserHistory, _History);\n\n  function BrowserHistory(linkHandler) {\n    \n\n    var _this2 = _possibleConstructorReturn(this, _History.call(this));\n\n    _this2._isActive = false;\n    _this2._checkUrlCallback = _this2._checkUrl.bind(_this2);\n\n    _this2.location = PLATFORM.location;\n    _this2.history = PLATFORM.history;\n    _this2.linkHandler = linkHandler;\n    return _this2;\n  }\n\n  BrowserHistory.prototype.activate = function activate(options) {\n    if (this._isActive) {\n      throw new Error('History has already been activated.');\n    }\n\n    var wantsPushState = !!options.pushState;\n\n    this._isActive = true;\n    this.options = Object.assign({}, { root: '/' }, this.options, options);\n\n    this.root = ('/' + this.options.root + '/').replace(rootStripper, '/');\n\n    this._wantsHashChange = this.options.hashChange !== false;\n    this._hasPushState = !!(this.options.pushState && this.history && this.history.pushState);\n\n    var eventName = void 0;\n    if (this._hasPushState) {\n      eventName = 'popstate';\n    } else if (this._wantsHashChange) {\n      eventName = 'hashchange';\n    }\n\n    PLATFORM.addEventListener(eventName, this._checkUrlCallback);\n\n    if (this._wantsHashChange && wantsPushState) {\n      var loc = this.location;\n      var atRoot = loc.pathname.replace(/[^\\/]$/, '$&/') === this.root;\n\n      if (!this._hasPushState && !atRoot) {\n        this.fragment = this._getFragment(null, true);\n        this.location.replace(this.root + this.location.search + '#' + this.fragment);\n\n        return true;\n      } else if (this._hasPushState && atRoot && loc.hash) {\n        this.fragment = this._getHash().replace(routeStripper, '');\n        this.history.replaceState({}, DOM.title, this.root + this.fragment + loc.search);\n      }\n    }\n\n    if (!this.fragment) {\n      this.fragment = this._getFragment();\n    }\n\n    this.linkHandler.activate(this);\n\n    if (!this.options.silent) {\n      return this._loadUrl();\n    }\n  };\n\n  BrowserHistory.prototype.deactivate = function deactivate() {\n    PLATFORM.removeEventListener('popstate', this._checkUrlCallback);\n    PLATFORM.removeEventListener('hashchange', this._checkUrlCallback);\n    this._isActive = false;\n    this.linkHandler.deactivate();\n  };\n\n  BrowserHistory.prototype.getAbsoluteRoot = function getAbsoluteRoot() {\n    var origin = createOrigin(this.location.protocol, this.location.hostname, this.location.port);\n    return '' + origin + this.root;\n  };\n\n  BrowserHistory.prototype.navigate = function navigate(fragment) {\n    var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n        _ref$trigger = _ref.trigger,\n        trigger = _ref$trigger === undefined ? true : _ref$trigger,\n        _ref$replace = _ref.replace,\n        replace = _ref$replace === undefined ? false : _ref$replace;\n\n    if (fragment && absoluteUrl.test(fragment)) {\n      this.location.href = fragment;\n      return true;\n    }\n\n    if (!this._isActive) {\n      return false;\n    }\n\n    fragment = this._getFragment(fragment || '');\n\n    if (this.fragment === fragment && !replace) {\n      return false;\n    }\n\n    this.fragment = fragment;\n\n    var url = this.root + fragment;\n\n    if (fragment === '' && url !== '/') {\n      url = url.slice(0, -1);\n    }\n\n    if (this._hasPushState) {\n      url = url.replace('//', '/');\n      this.history[replace ? 'replaceState' : 'pushState']({}, DOM.title, url);\n    } else if (this._wantsHashChange) {\n      updateHash(this.location, fragment, replace);\n    } else {\n      this.location.assign(url);\n    }\n\n    if (trigger) {\n      return this._loadUrl(fragment);\n    }\n\n    return true;\n  };\n\n  BrowserHistory.prototype.navigateBack = function navigateBack() {\n    this.history.back();\n  };\n\n  BrowserHistory.prototype.setTitle = function setTitle(title) {\n    DOM.title = title;\n  };\n\n  BrowserHistory.prototype.setState = function setState(key, value) {\n    var state = Object.assign({}, this.history.state);\n    var _location = this.location,\n        pathname = _location.pathname,\n        search = _location.search,\n        hash = _location.hash;\n\n    state[key] = value;\n    this.history.replaceState(state, null, '' + pathname + search + hash);\n  };\n\n  BrowserHistory.prototype.getState = function getState(key) {\n    var state = Object.assign({}, this.history.state);\n    return state[key];\n  };\n\n  BrowserHistory.prototype._getHash = function _getHash() {\n    return this.location.hash.substr(1);\n  };\n\n  BrowserHistory.prototype._getFragment = function _getFragment(fragment, forcePushState) {\n    var root = void 0;\n\n    if (!fragment) {\n      if (this._hasPushState || !this._wantsHashChange || forcePushState) {\n        fragment = this.location.pathname + this.location.search;\n        root = this.root.replace(trailingSlash, '');\n        if (!fragment.indexOf(root)) {\n          fragment = fragment.substr(root.length);\n        }\n      } else {\n        fragment = this._getHash();\n      }\n    }\n\n    return '/' + fragment.replace(routeStripper, '');\n  };\n\n  BrowserHistory.prototype._checkUrl = function _checkUrl() {\n    var current = this._getFragment();\n    if (current !== this.fragment) {\n      this._loadUrl();\n    }\n  };\n\n  BrowserHistory.prototype._loadUrl = function _loadUrl(fragmentOverride) {\n    var fragment = this.fragment = this._getFragment(fragmentOverride);\n\n    return this.options.routeHandler ? this.options.routeHandler(fragment) : false;\n  };\n\n  return BrowserHistory;\n}(History), _class.inject = [LinkHandler], _temp);\n\nvar routeStripper = /^#?\\/*|\\s+$/g;\n\nvar rootStripper = /^\\/+|\\/+$/g;\n\nvar trailingSlash = /\\/$/;\n\nvar absoluteUrl = /^([a-z][a-z0-9+\\-.]*:)?\\/\\//i;\n\nfunction updateHash(location, fragment, replace) {\n  if (replace) {\n    var _href = location.href.replace(/(javascript:|#).*$/, '');\n    location.replace(_href + '#' + fragment);\n  } else {\n    location.hash = '#' + fragment;\n  }\n}\n\nfunction createOrigin(protocol, hostname, port) {\n  return protocol + '//' + hostname + (port ? ':' + port : '');\n}","import * as LogManager from 'aurelia-logging';\nimport { EventAggregator } from 'aurelia-event-aggregator';\nimport { ViewResources } from 'aurelia-templating';\nimport { Loader } from 'aurelia-loader';\nimport { BindingSignaler } from 'aurelia-templating-resources';\nimport { PLATFORM } from 'aurelia-pal';\n\nimport { I18N } from './i18n';\nimport { RelativeTime } from './relativeTime';\nimport { DfValueConverter, DfBindingBehavior } from './df';\nimport { NfValueConverter, NfBindingBehavior } from './nf';\nimport { RtValueConverter, RtBindingBehavior } from './rt';\nimport { TValueConverter, TBindingBehavior, TCustomAttribute, TParamsCustomAttribute } from './t';\nimport { BaseI18N } from './base-i18n';\nimport { Backend } from './aurelia-i18n-loader';\n\nfunction registerI18N(frameworkConfig, cb) {\n  var instance = new I18N(frameworkConfig.container.get(EventAggregator), frameworkConfig.container.get(BindingSignaler));\n  frameworkConfig.container.registerInstance(I18N, instance);\n\n  var ret = cb(instance);\n\n  frameworkConfig.postTask(function () {\n    var resources = frameworkConfig.container.get(ViewResources);\n    var htmlBehaviorResource = resources.getAttribute('t');\n    var htmlParamsResource = resources.getAttribute('t-params');\n    var attributes = instance.i18next.options.attributes;\n\n    if (!attributes) {\n      attributes = ['t', 'i18n'];\n    }\n\n    attributes.forEach(function (alias) {\n      return resources.registerAttribute(alias, htmlBehaviorResource, 't');\n    });\n    attributes.forEach(function (alias) {\n      return resources.registerAttribute(alias + '-params', htmlParamsResource, 't-params');\n    });\n  });\n\n  return ret;\n}\n\nfunction configure(frameworkConfig, cb) {\n  if (cb === undefined || typeof cb !== 'function') {\n    var errorMsg = 'You need to provide a callback method to properly configure the library';\n    throw errorMsg;\n  }\n\n  frameworkConfig.globalResources(PLATFORM.moduleName('./t'));\n  frameworkConfig.globalResources(PLATFORM.moduleName('./nf'));\n  frameworkConfig.globalResources(PLATFORM.moduleName('./df'));\n  frameworkConfig.globalResources(PLATFORM.moduleName('./rt'));\n\n  if (PLATFORM.global.Intl === undefined) {\n    var i18nLogger = LogManager.getLogger('i18n');\n    i18nLogger.warn('Intl API is not available. Trying to load the polyfill.');\n    var loader = frameworkConfig.container.get(Loader);\n    var normalizeErrorMessage = 'Failed to normalize {module} while loading the Intl polyfill.';\n\n    return loader.normalize('aurelia-i18n').then(function (i18nName) {\n      return loader.normalize('intl', i18nName).then(function (intlName) {\n        return loader.loadModule(intlName).then(function (poly) {\n          PLATFORM.global.Intl = poly;\n          return registerI18N(frameworkConfig, cb);\n        }, function () {\n          return i18nLogger.warn('Failed to load the Intl polyfill.');\n        });\n      }, function () {\n        return i18nLogger.warn(normalizeErrorMessage.replace('{module}', 'intl'));\n      });\n    }, function () {\n      return i18nLogger.warn(normalizeErrorMessage.replace('{module}', 'aurelia-i18n'));\n    });\n  }\n\n  return Promise.resolve(registerI18N(frameworkConfig, cb));\n}\n\nexport { configure, I18N, RelativeTime, DfValueConverter, DfBindingBehavior, NfValueConverter, NfBindingBehavior, RtValueConverter, RtBindingBehavior, TValueConverter, TBindingBehavior, TCustomAttribute, TParamsCustomAttribute, BaseI18N, EventAggregator, Backend };","\n\nimport * as LogManager from 'aurelia-logging';\nimport { I18N } from './i18n';\nimport { SignalBindingBehavior } from 'aurelia-templating-resources';\nimport { ValueConverter } from 'aurelia-binding';\nimport { isInteger } from './utils';\n\nexport var DfValueConverter = function () {\n  DfValueConverter.inject = function inject() {\n    return [I18N];\n  };\n\n  function DfValueConverter(i18n) {\n    \n\n    this.service = i18n;\n  }\n\n  DfValueConverter.prototype.toView = function toView(value, dfOrOptions, locale, df) {\n    if (value === null || typeof value === 'undefined' || typeof value === 'string' && value.trim() === '') {\n      return value;\n    }\n\n    if (dfOrOptions && typeof dfOrOptions.format === 'function') {\n      return dfOrOptions.format(value);\n    } else if (df) {\n      var i18nLogger = LogManager.getLogger('i18n');\n      i18nLogger.warn('This ValueConverter signature is depcrecated and will be removed in future releases. Please use the signature [dfOrOptions, locale]');\n    } else {\n      df = this.service.df(dfOrOptions, locale || this.service.getLocale());\n    }\n\n    if (typeof value === 'string' && isNaN(value) && !isInteger(value)) {\n      value = new Date(value);\n    }\n\n    return df.format(value);\n  };\n\n  return DfValueConverter;\n}();\n\nexport var DfBindingBehavior = function () {\n  DfBindingBehavior.inject = function inject() {\n    return [SignalBindingBehavior];\n  };\n\n  function DfBindingBehavior(signalBindingBehavior) {\n    \n\n    this.signalBindingBehavior = signalBindingBehavior;\n  }\n\n  DfBindingBehavior.prototype.bind = function bind(binding, source) {\n    this.signalBindingBehavior.bind(binding, source, 'aurelia-translation-signal');\n\n    var sourceExpression = binding.sourceExpression;\n\n    if (sourceExpression.rewritten) {\n      return;\n    }\n    sourceExpression.rewritten = true;\n\n    var expression = sourceExpression.expression;\n    sourceExpression.expression = new ValueConverter(expression, 'df', sourceExpression.args, [expression].concat(sourceExpression.args));\n  };\n\n  DfBindingBehavior.prototype.unbind = function unbind(binding, source) {\n    this.signalBindingBehavior.unbind(binding, source);\n  };\n\n  return DfBindingBehavior;\n}();","\n\nimport * as LogManager from 'aurelia-logging';\nimport { I18N } from './i18n';\nimport { SignalBindingBehavior } from 'aurelia-templating-resources';\nimport { ValueConverter } from 'aurelia-binding';\n\nexport var NfValueConverter = function () {\n  NfValueConverter.inject = function inject() {\n    return [I18N];\n  };\n\n  function NfValueConverter(i18n) {\n    \n\n    this.service = i18n;\n  }\n\n  NfValueConverter.prototype.toView = function toView(value, nfOrOptions, locale, nf) {\n    if (value === null || typeof value === 'undefined' || typeof value === 'string' && value.trim() === '') {\n      return value;\n    }\n\n    if (nfOrOptions && typeof nfOrOptions.format === 'function') {\n      return nfOrOptions.format(value);\n    } else if (nf) {\n      var i18nLogger = LogManager.getLogger('i18n');\n      i18nLogger.warn('This ValueConverter signature is depcrecated and will be removed in future releases. Please use the signature [nfOrOptions, locale]');\n    } else {\n      nf = this.service.nf(nfOrOptions, locale || this.service.getLocale());\n    }\n\n    return nf.format(value);\n  };\n\n  return NfValueConverter;\n}();\n\nexport var NfBindingBehavior = function () {\n  NfBindingBehavior.inject = function inject() {\n    return [SignalBindingBehavior];\n  };\n\n  function NfBindingBehavior(signalBindingBehavior) {\n    \n\n    this.signalBindingBehavior = signalBindingBehavior;\n  }\n\n  NfBindingBehavior.prototype.bind = function bind(binding, source) {\n    this.signalBindingBehavior.bind(binding, source, 'aurelia-translation-signal');\n\n    var sourceExpression = binding.sourceExpression;\n\n    if (sourceExpression.rewritten) {\n      return;\n    }\n    sourceExpression.rewritten = true;\n\n    var expression = sourceExpression.expression;\n    sourceExpression.expression = new ValueConverter(expression, 'nf', sourceExpression.args, [expression].concat(sourceExpression.args));\n  };\n\n  NfBindingBehavior.prototype.unbind = function unbind(binding, source) {\n    this.signalBindingBehavior.unbind(binding, source);\n  };\n\n  return NfBindingBehavior;\n}();","\n\nimport { RelativeTime } from './relativeTime';\nimport { SignalBindingBehavior } from 'aurelia-templating-resources';\nimport { ValueConverter } from 'aurelia-binding';\n\nexport var RtValueConverter = function () {\n  RtValueConverter.inject = function inject() {\n    return [RelativeTime];\n  };\n\n  function RtValueConverter(relativeTime) {\n    \n\n    this.service = relativeTime;\n  }\n\n  RtValueConverter.prototype.toView = function toView(value) {\n    if (value === null || typeof value === 'undefined' || typeof value === 'string' && value.trim() === '') {\n      return value;\n    }\n\n    if (typeof value === 'string' && isNaN(value) && !Number.isInteger(value)) {\n      value = new Date(value);\n    }\n\n    return this.service.getRelativeTime(value);\n  };\n\n  return RtValueConverter;\n}();\n\nexport var RtBindingBehavior = function () {\n  RtBindingBehavior.inject = function inject() {\n    return [SignalBindingBehavior];\n  };\n\n  function RtBindingBehavior(signalBindingBehavior) {\n    \n\n    this.signalBindingBehavior = signalBindingBehavior;\n  }\n\n  RtBindingBehavior.prototype.bind = function bind(binding, source) {\n    this.signalBindingBehavior.bind(binding, source, 'aurelia-translation-signal', 'aurelia-relativetime-signal');\n\n    var sourceExpression = binding.sourceExpression;\n\n    if (sourceExpression.rewritten) {\n      return;\n    }\n    sourceExpression.rewritten = true;\n\n    var expression = sourceExpression.expression;\n    sourceExpression.expression = new ValueConverter(expression, 'rt', sourceExpression.args, [expression].concat(sourceExpression.args));\n  };\n\n  RtBindingBehavior.prototype.unbind = function unbind(binding, source) {\n    this.signalBindingBehavior.unbind(binding, source);\n  };\n\n  return RtBindingBehavior;\n}();","var _dec, _class, _dec2, _class2, _class3, _temp;\n\n\n\nimport { I18N } from './i18n';\nimport { EventAggregator } from 'aurelia-event-aggregator';\nimport { metadata } from 'aurelia-metadata';\nimport { customAttribute, HtmlBehaviorResource } from 'aurelia-templating';\nimport { SignalBindingBehavior } from 'aurelia-templating-resources';\nimport { ValueConverter } from 'aurelia-binding';\nimport { DOM } from 'aurelia-pal';\nimport { LazyOptional } from './utils';\n\nexport var TValueConverter = function () {\n  TValueConverter.inject = function inject() {\n    return [I18N];\n  };\n\n  function TValueConverter(i18n) {\n    \n\n    this.service = i18n;\n  }\n\n  TValueConverter.prototype.toView = function toView(value, options) {\n    return this.service.tr(value, options);\n  };\n\n  return TValueConverter;\n}();\n\nexport var TParamsCustomAttribute = (_dec = customAttribute('t-params'), _dec(_class = function () {\n  TParamsCustomAttribute.inject = function inject() {\n    return [DOM.Element];\n  };\n\n  TParamsCustomAttribute.configureAliases = function configureAliases(aliases) {\n    var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, TParamsCustomAttribute);\n    r.aliases = aliases;\n  };\n\n  function TParamsCustomAttribute(element) {\n    \n\n    this.element = element;\n  }\n\n  TParamsCustomAttribute.prototype.valueChanged = function valueChanged() {};\n\n  return TParamsCustomAttribute;\n}()) || _class);\n\nexport var TCustomAttribute = (_dec2 = customAttribute('t'), _dec2(_class2 = function () {\n  TCustomAttribute.inject = function inject() {\n    return [DOM.Element, I18N, EventAggregator, LazyOptional.of(TParamsCustomAttribute)];\n  };\n\n  TCustomAttribute.configureAliases = function configureAliases(aliases) {\n    var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, TCustomAttribute);\n    r.aliases = aliases;\n  };\n\n  function TCustomAttribute(element, i18n, ea, tparams) {\n    \n\n    this.element = element;\n    this.service = i18n;\n    this.ea = ea;\n    this.lazyParams = tparams;\n  }\n\n  TCustomAttribute.prototype.bind = function bind() {\n    var _this = this;\n\n    this.params = this.lazyParams();\n\n    if (this.params) {\n      this.params.valueChanged = function (newParams, oldParams) {\n        _this.paramsChanged(_this.value, newParams, oldParams);\n      };\n    }\n\n    var p = this.params !== null ? this.params.value : undefined;\n    this.subscription = this.ea.subscribe('i18n:locale:changed', function () {\n      _this.service.updateValue(_this.element, _this.value, _this.params !== null ? _this.params.value : undefined);\n    });\n\n    this.service.updateValue(this.element, this.value, p);\n  };\n\n  TCustomAttribute.prototype.paramsChanged = function paramsChanged(newValue, newParams) {\n    this.service.updateValue(this.element, newValue, newParams);\n  };\n\n  TCustomAttribute.prototype.valueChanged = function valueChanged(newValue) {\n    var p = this.params !== null ? this.params.value : undefined;\n    this.service.updateValue(this.element, newValue, p);\n  };\n\n  TCustomAttribute.prototype.unbind = function unbind() {\n    if (this.subscription) {\n      this.subscription.dispose();\n    }\n  };\n\n  return TCustomAttribute;\n}()) || _class2);\n\nexport var TBindingBehavior = (_temp = _class3 = function () {\n  function TBindingBehavior(signalBindingBehavior) {\n    \n\n    this.signalBindingBehavior = signalBindingBehavior;\n  }\n\n  TBindingBehavior.prototype.bind = function bind(binding, source) {\n    this.signalBindingBehavior.bind(binding, source, 'aurelia-translation-signal');\n\n    var sourceExpression = binding.sourceExpression;\n\n    if (sourceExpression.rewritten) {\n      return;\n    }\n    sourceExpression.rewritten = true;\n\n    var expression = sourceExpression.expression;\n    sourceExpression.expression = new ValueConverter(expression, 't', sourceExpression.args, [expression].concat(sourceExpression.args));\n  };\n\n  TBindingBehavior.prototype.unbind = function unbind(binding, source) {\n    this.signalBindingBehavior.unbind(binding, source);\n  };\n\n  return TBindingBehavior;\n}(), _class3.inject = [SignalBindingBehavior], _temp);","\n\nimport { Logger } from 'aurelia-logging';\n\nexport var ConsoleAppender = function () {\n  function ConsoleAppender() {\n    \n  }\n\n  ConsoleAppender.prototype.debug = function debug(logger) {\n    var _console;\n\n    for (var _len = arguments.length, rest = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      rest[_key - 1] = arguments[_key];\n    }\n\n    (_console = console).debug.apply(_console, ['DEBUG [' + logger.id + ']'].concat(rest));\n  };\n\n  ConsoleAppender.prototype.info = function info(logger) {\n    var _console2;\n\n    for (var _len2 = arguments.length, rest = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n      rest[_key2 - 1] = arguments[_key2];\n    }\n\n    (_console2 = console).info.apply(_console2, ['INFO [' + logger.id + ']'].concat(rest));\n  };\n\n  ConsoleAppender.prototype.warn = function warn(logger) {\n    var _console3;\n\n    for (var _len3 = arguments.length, rest = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n      rest[_key3 - 1] = arguments[_key3];\n    }\n\n    (_console3 = console).warn.apply(_console3, ['WARN [' + logger.id + ']'].concat(rest));\n  };\n\n  ConsoleAppender.prototype.error = function error(logger) {\n    var _console4;\n\n    for (var _len4 = arguments.length, rest = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n      rest[_key4 - 1] = arguments[_key4];\n    }\n\n    (_console4 = console).error.apply(_console4, ['ERROR [' + logger.id + ']'].concat(rest));\n  };\n\n  return ConsoleAppender;\n}();","var OpenIdConnectConfiguration = (function () {\r\n    function OpenIdConnectConfiguration() {\r\n    }\r\n    return OpenIdConnectConfiguration;\r\n}());\r\nexport default OpenIdConnectConfiguration;\r\n//# sourceMappingURL=open-id-connect-configuration.js.map","import { UserManager } from 'oidc-client';\r\nimport OpenIdConnectConfigurationManager from './open-id-connect-configuration-manager';\r\nimport OpenIdConnectLogger from './open-id-connect-logger';\r\nvar default_1 = (function () {\r\n    function default_1() {\r\n    }\r\n    default_1.prototype.createOpenIdConnectConfiguration = function (dto) {\r\n        return new OpenIdConnectConfigurationManager(dto);\r\n    };\r\n    default_1.prototype.createOpenIdConnectLogger = function (level) {\r\n        return new OpenIdConnectLogger(level);\r\n    };\r\n    default_1.prototype.createUserManager = function (settings) {\r\n        return new UserManager(settings);\r\n    };\r\n    return default_1;\r\n}());\r\nexport default default_1;\r\n//# sourceMappingURL=open-id-connect-factory.js.map","import { PLATFORM } from 'aurelia-framework';\r\nimport { UserManager } from 'oidc-client';\r\nimport OpenIdConnectConfiguration from './open-id-connect-configuration';\r\nimport OpenIdConnectConfigurationManager from './open-id-connect-configuration-manager';\r\nimport OpenIdConnectFactory from './open-id-connect-factory';\r\nimport OpenIdConnectLogger from './open-id-connect-logger';\r\nvar retrieveUserlandConfig = function (callback) {\r\n    var config = new OpenIdConnectConfiguration();\r\n    if (!callback || callback.length > 1) {\r\n        return config;\r\n    }\r\n    if (callback.length === 0) {\r\n        config = callback();\r\n        return config;\r\n    }\r\n    callback(config);\r\n    return config;\r\n};\r\nexport default function (frameworkConfig, callback, factory) {\r\n    if (!factory) {\r\n        factory = new OpenIdConnectFactory();\r\n    }\r\n    frameworkConfig.globalResources([\r\n        PLATFORM.moduleName('./open-id-connect-user-block'),\r\n        PLATFORM.moduleName('./open-id-connect-user-debug'),\r\n        PLATFORM.moduleName('./open-id-connect-navigation-filter'),\r\n    ]);\r\n    var userConfig = retrieveUserlandConfig(callback);\r\n    var configManager = factory.createOpenIdConnectConfiguration(userConfig);\r\n    frameworkConfig.container\r\n        .registerInstance(OpenIdConnectConfigurationManager, configManager);\r\n    var openIdConnectLogger = factory.createOpenIdConnectLogger(configManager.logLevel);\r\n    frameworkConfig.container\r\n        .registerInstance(OpenIdConnectLogger, openIdConnectLogger);\r\n    var userManager = factory.createUserManager(configManager.userManagerSettings);\r\n    frameworkConfig.container\r\n        .registerInstance(UserManager, userManager);\r\n    frameworkConfig.container.registerInstance(Window, window);\r\n}\r\n//# sourceMappingURL=plugin.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { valueConverter } from 'aurelia-framework';\r\nimport OpenIdConnectRoles from './open-id-connect-roles';\r\nvar default_1 = (function () {\r\n    function default_1() {\r\n    }\r\n    default_1.prototype.toView = function (navModels, user) {\r\n        return navModels.filter(function (navModel) {\r\n            if (!navModel.settings) {\r\n                return true;\r\n            }\r\n            var requiredRoles = navModel.settings.roles;\r\n            if (!requiredRoles || requiredRoles.length === 0) {\r\n                return true;\r\n            }\r\n            if (requiredRoles.includes(OpenIdConnectRoles.Authenticated)) {\r\n                return user !== null;\r\n            }\r\n            if (requiredRoles.includes(OpenIdConnectRoles.Anonymous)) {\r\n                return user == null;\r\n            }\r\n            return true;\r\n        });\r\n    };\r\n    default_1 = __decorate([\r\n        valueConverter('openIdConnectNavigationFilter')\r\n    ], default_1);\r\n    return default_1;\r\n}());\r\nexport default default_1;\r\n//# sourceMappingURL=open-id-connect-navigation-filter.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nimport { autoinject, customElement } from 'aurelia-framework';\r\nimport OpenIdConnect from './open-id-connect';\r\nvar default_1 = (function () {\r\n    function default_1(openIdConnect) {\r\n        this.openIdConnect = openIdConnect;\r\n        this.user = null;\r\n    }\r\n    Object.defineProperty(default_1.prototype, \"isLoggedIn\", {\r\n        get: function () {\r\n            return this.user !== null && this.user !== undefined;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    default_1.prototype.attached = function () {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var _this = this;\r\n            var _a;\r\n            return __generator(this, function (_b) {\r\n                switch (_b.label) {\r\n                    case 0:\r\n                        this.openIdConnect.addOrRemoveHandler('addUserUnloaded', function () {\r\n                            _this.user = null;\r\n                        });\r\n                        this.openIdConnect.addOrRemoveHandler('addUserLoaded', function () { return __awaiter(_this, void 0, void 0, function () {\r\n                            var _a;\r\n                            return __generator(this, function (_b) {\r\n                                switch (_b.label) {\r\n                                    case 0:\r\n                                        _a = this;\r\n                                        return [4, this.openIdConnect.getUser()];\r\n                                    case 1:\r\n                                        _a.user = _b.sent();\r\n                                        return [2];\r\n                                }\r\n                            });\r\n                        }); });\r\n                        _a = this;\r\n                        return [4, this.openIdConnect.getUser()];\r\n                    case 1:\r\n                        _a.user = _b.sent();\r\n                        return [2];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    default_1.prototype.login = function () {\r\n        this.openIdConnect.login();\r\n    };\r\n    default_1.prototype.logout = function () {\r\n        this.openIdConnect.logout();\r\n    };\r\n    default_1 = __decorate([\r\n        autoinject,\r\n        customElement('open-id-connect-user-block'),\r\n        __metadata(\"design:paramtypes\", [OpenIdConnect])\r\n    ], default_1);\r\n    return default_1;\r\n}());\r\nexport default default_1;\r\n//# sourceMappingURL=open-id-connect-user-block.js.map","module.exports = \"<template> <div class=user-block> <button show.bind=!isLoggedIn click.delegate=login()>login / signup</button> <button show.bind=isLoggedIn click.delegate=logout()>logout</button> </div> </template> \";","var __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return function (d, b) {\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nimport { autoinject, customElement } from 'aurelia-framework';\r\nimport OpenIdConnectUserBlock from './open-id-connect-user-block';\r\nvar default_1 = (function (_super) {\r\n    __extends(default_1, _super);\r\n    function default_1() {\r\n        return _super !== null && _super.apply(this, arguments) || this;\r\n    }\r\n    default_1.prototype.loginSilent = function () {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            return __generator(this, function (_a) {\r\n                try {\r\n                    this.openIdConnect.loginSilent();\r\n                }\r\n                catch (err) {\r\n                    if (err.error !== 'login_required') {\r\n                        throw err;\r\n                    }\r\n                    this.login();\r\n                }\r\n                return [2];\r\n            });\r\n        });\r\n    };\r\n    Object.defineProperty(default_1.prototype, \"stringifiedUser\", {\r\n        get: function () {\r\n            return JSON.stringify(this.user, undefined, 2);\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    default_1 = __decorate([\r\n        autoinject,\r\n        customElement('open-id-connect-user-debug')\r\n    ], default_1);\r\n    return default_1;\r\n}(OpenIdConnectUserBlock));\r\nexport default default_1;\r\n//# sourceMappingURL=open-id-connect-user-debug.js.map","module.exports = \"<template> <div class=user-debug> <button click.delegate=loginSilent()>login silent</button> <pre show.bind=isLoggedIn><code>User: ${stringifiedUser}</code></pre> </div> </template> \";","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nimport { initializePAL, isInitialized } from 'aurelia-pal';\n\nexport var _PLATFORM = {\n  location: window.location,\n  history: window.history,\n  addEventListener: function addEventListener(eventName, callback, capture) {\n    this.global.addEventListener(eventName, callback, capture);\n  },\n  removeEventListener: function removeEventListener(eventName, callback, capture) {\n    this.global.removeEventListener(eventName, callback, capture);\n  },\n\n  performance: window.performance,\n  requestAnimationFrame: function requestAnimationFrame(callback) {\n    return this.global.requestAnimationFrame(callback);\n  }\n};\n\nif (typeof FEATURE_NO_IE === 'undefined') {\n  var test = function test() {};\n\n  if (test.name === undefined) {\n    Object.defineProperty(Function.prototype, 'name', {\n      get: function get() {\n        var name = this.toString().match(/^\\s*function\\s*(\\S*)\\s*\\(/)[1];\n\n        Object.defineProperty(this, 'name', { value: name });\n        return name;\n      }\n    });\n  }\n}\n\nif (typeof FEATURE_NO_IE === 'undefined') {\n  if (!('classList' in document.createElement('_')) || document.createElementNS && !('classList' in document.createElementNS('http://www.w3.org/2000/svg', 'g'))) {\n    var protoProp = 'prototype';\n    var strTrim = String.prototype.trim;\n    var arrIndexOf = Array.prototype.indexOf;\n    var emptyArray = [];\n\n    var DOMEx = function DOMEx(type, message) {\n      this.name = type;\n      this.code = DOMException[type];\n      this.message = message;\n    };\n\n    var checkTokenAndGetIndex = function checkTokenAndGetIndex(classList, token) {\n      if (token === '') {\n        throw new DOMEx('SYNTAX_ERR', 'An invalid or illegal string was specified');\n      }\n\n      if (/\\s/.test(token)) {\n        throw new DOMEx('INVALID_CHARACTER_ERR', 'String contains an invalid character');\n      }\n\n      return arrIndexOf.call(classList, token);\n    };\n\n    var ClassList = function ClassList(elem) {\n      var trimmedClasses = strTrim.call(elem.getAttribute('class') || '');\n      var classes = trimmedClasses ? trimmedClasses.split(/\\s+/) : emptyArray;\n\n      for (var i = 0, ii = classes.length; i < ii; ++i) {\n        this.push(classes[i]);\n      }\n\n      this._updateClassName = function () {\n        elem.setAttribute('class', this.toString());\n      };\n    };\n\n    var classListProto = ClassList[protoProp] = [];\n\n    DOMEx[protoProp] = Error[protoProp];\n\n    classListProto.item = function (i) {\n      return this[i] || null;\n    };\n\n    classListProto.contains = function (token) {\n      token += '';\n      return checkTokenAndGetIndex(this, token) !== -1;\n    };\n\n    classListProto.add = function () {\n      var tokens = arguments;\n      var i = 0;\n      var ii = tokens.length;\n      var token = void 0;\n      var updated = false;\n\n      do {\n        token = tokens[i] + '';\n        if (checkTokenAndGetIndex(this, token) === -1) {\n          this.push(token);\n          updated = true;\n        }\n      } while (++i < ii);\n\n      if (updated) {\n        this._updateClassName();\n      }\n    };\n\n    classListProto.remove = function () {\n      var tokens = arguments;\n      var i = 0;\n      var ii = tokens.length;\n      var token = void 0;\n      var updated = false;\n      var index = void 0;\n\n      do {\n        token = tokens[i] + '';\n        index = checkTokenAndGetIndex(this, token);\n        while (index !== -1) {\n          this.splice(index, 1);\n          updated = true;\n          index = checkTokenAndGetIndex(this, token);\n        }\n      } while (++i < ii);\n\n      if (updated) {\n        this._updateClassName();\n      }\n    };\n\n    classListProto.toggle = function (token, force) {\n      token += '';\n\n      var result = this.contains(token);\n      var method = result ? force !== true && 'remove' : force !== false && 'add';\n\n      if (method) {\n        this[method](token);\n      }\n\n      if (force === true || force === false) {\n        return force;\n      }\n\n      return !result;\n    };\n\n    classListProto.toString = function () {\n      return this.join(' ');\n    };\n\n    Object.defineProperty(Element.prototype, 'classList', {\n      get: function get() {\n        return new ClassList(this);\n      },\n      enumerable: true,\n      configurable: true\n    });\n  } else {\n    var testElement = document.createElement('_');\n    testElement.classList.add('c1', 'c2');\n\n    if (!testElement.classList.contains('c2')) {\n      var createMethod = function createMethod(method) {\n        var original = DOMTokenList.prototype[method];\n\n        DOMTokenList.prototype[method] = function (token) {\n          for (var i = 0, ii = arguments.length; i < ii; ++i) {\n            token = arguments[i];\n            original.call(this, token);\n          }\n        };\n      };\n\n      createMethod('add');\n      createMethod('remove');\n    }\n\n    testElement.classList.toggle('c3', false);\n\n    if (testElement.classList.contains('c3')) {\n      var _toggle = DOMTokenList.prototype.toggle;\n\n      DOMTokenList.prototype.toggle = function (token, force) {\n        if (1 in arguments && !this.contains(token) === !force) {\n          return force;\n        }\n\n        return _toggle.call(this, token);\n      };\n    }\n\n    testElement = null;\n  }\n}\n\nif (typeof FEATURE_NO_IE === 'undefined') {\n  var _filterEntries = function _filterEntries(key, value) {\n    var i = 0,\n        n = _entries.length,\n        result = [];\n    for (; i < n; i++) {\n      if (_entries[i][key] == value) {\n        result.push(_entries[i]);\n      }\n    }\n    return result;\n  };\n\n  var _clearEntries = function _clearEntries(type, name) {\n    var i = _entries.length,\n        entry;\n    while (i--) {\n      entry = _entries[i];\n      if (entry.entryType == type && (name === void 0 || entry.name == name)) {\n        _entries.splice(i, 1);\n      }\n    }\n  };\n\n  // @license http://opensource.org/licenses/MIT\n  if ('performance' in window === false) {\n    window.performance = {};\n  }\n\n  if ('now' in window.performance === false) {\n    var nowOffset = Date.now();\n\n    if (performance.timing && performance.timing.navigationStart) {\n      nowOffset = performance.timing.navigationStart;\n    }\n\n    window.performance.now = function now() {\n      return Date.now() - nowOffset;\n    };\n  }\n\n  var startOffset = Date.now ? Date.now() : +new Date();\n  var _entries = [];\n  var _marksIndex = {};\n\n  ;\n\n  if (!window.performance.mark) {\n    window.performance.mark = window.performance.webkitMark || function (name) {\n      var mark = {\n        name: name,\n        entryType: \"mark\",\n        startTime: window.performance.now(),\n        duration: 0\n      };\n\n      _entries.push(mark);\n      _marksIndex[name] = mark;\n    };\n  }\n\n  if (!window.performance.measure) {\n    window.performance.measure = window.performance.webkitMeasure || function (name, startMark, endMark) {\n      startMark = _marksIndex[startMark].startTime;\n      endMark = _marksIndex[endMark].startTime;\n\n      _entries.push({\n        name: name,\n        entryType: \"measure\",\n        startTime: startMark,\n        duration: endMark - startMark\n      });\n    };\n  }\n\n  if (!window.performance.getEntriesByType) {\n    window.performance.getEntriesByType = window.performance.webkitGetEntriesByType || function (type) {\n      return _filterEntries(\"entryType\", type);\n    };\n  }\n\n  if (!window.performance.getEntriesByName) {\n    window.performance.getEntriesByName = window.performance.webkitGetEntriesByName || function (name) {\n      return _filterEntries(\"name\", name);\n    };\n  }\n\n  if (!window.performance.clearMarks) {\n    window.performance.clearMarks = window.performance.webkitClearMarks || function (name) {\n      _clearEntries(\"mark\", name);\n    };\n  }\n\n  if (!window.performance.clearMeasures) {\n    window.performance.clearMeasures = window.performance.webkitClearMeasures || function (name) {\n      _clearEntries(\"measure\", name);\n    };\n  }\n\n  _PLATFORM.performance = window.performance;\n}\n\nif (typeof FEATURE_NO_IE === 'undefined') {\n  var con = window.console = window.console || {};\n  var nop = function nop() {};\n\n  if (!con.memory) con.memory = {};\n  ('assert,clear,count,debug,dir,dirxml,error,exception,group,' + 'groupCollapsed,groupEnd,info,log,markTimeline,profile,profiles,profileEnd,' + 'show,table,time,timeEnd,timeline,timelineEnd,timeStamp,trace,warn').split(',').forEach(function (m) {\n    if (!con[m]) con[m] = nop;\n  });\n\n  if (_typeof(con.log) === 'object') {\n    'log,info,warn,error,assert,dir,clear,profile,profileEnd'.split(',').forEach(function (method) {\n      console[method] = this.bind(console[method], console);\n    }, Function.prototype.call);\n  }\n}\n\nif (typeof FEATURE_NO_IE === 'undefined') {\n  if (!window.CustomEvent || typeof window.CustomEvent !== 'function') {\n    var _CustomEvent = function _CustomEvent(event, params) {\n      params = params || {\n        bubbles: false,\n        cancelable: false,\n        detail: undefined\n      };\n\n      var evt = document.createEvent('CustomEvent');\n      evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n      return evt;\n    };\n\n    _CustomEvent.prototype = window.Event.prototype;\n    window.CustomEvent = _CustomEvent;\n  }\n}\n\nif (Element && !Element.prototype.matches) {\n  var proto = Element.prototype;\n  proto.matches = proto.matchesSelector || proto.mozMatchesSelector || proto.msMatchesSelector || proto.oMatchesSelector || proto.webkitMatchesSelector;\n}\n\nexport var _FEATURE = {\n  shadowDOM: !!HTMLElement.prototype.attachShadow,\n  scopedCSS: 'scoped' in document.createElement('style'),\n  htmlTemplateElement: function () {\n    var d = document.createElement('div');\n    d.innerHTML = '<template></template>';\n    return 'content' in d.children[0];\n  }(),\n  mutationObserver: !!(window.MutationObserver || window.WebKitMutationObserver),\n  ensureHTMLTemplateElement: function ensureHTMLTemplateElement(t) {\n    return t;\n  }\n};\n\nif (typeof FEATURE_NO_IE === 'undefined') {\n  var isSVGTemplate = function isSVGTemplate(el) {\n    return el.tagName === 'template' && el.namespaceURI === 'http://www.w3.org/2000/svg';\n  };\n\n  var fixSVGTemplateElement = function fixSVGTemplateElement(el) {\n    var template = el.ownerDocument.createElement('template');\n    var attrs = el.attributes;\n    var length = attrs.length;\n    var attr = void 0;\n\n    el.parentNode.insertBefore(template, el);\n\n    while (length-- > 0) {\n      attr = attrs[length];\n      template.setAttribute(attr.name, attr.value);\n      el.removeAttribute(attr.name);\n    }\n\n    el.parentNode.removeChild(el);\n\n    return fixHTMLTemplateElement(template);\n  };\n\n  var fixHTMLTemplateElement = function fixHTMLTemplateElement(template) {\n    var content = template.content = document.createDocumentFragment();\n    var child = void 0;\n\n    while (child = template.firstChild) {\n      content.appendChild(child);\n    }\n\n    return template;\n  };\n\n  var fixHTMLTemplateElementRoot = function fixHTMLTemplateElementRoot(template) {\n    var content = fixHTMLTemplateElement(template).content;\n    var childTemplates = content.querySelectorAll('template');\n\n    for (var i = 0, ii = childTemplates.length; i < ii; ++i) {\n      var child = childTemplates[i];\n\n      if (isSVGTemplate(child)) {\n        fixSVGTemplateElement(child);\n      } else {\n        fixHTMLTemplateElement(child);\n      }\n    }\n\n    return template;\n  };\n\n  if (!_FEATURE.htmlTemplateElement) {\n    _FEATURE.ensureHTMLTemplateElement = fixHTMLTemplateElementRoot;\n  }\n}\n\nvar shadowPoly = window.ShadowDOMPolyfill || null;\n\nexport var _DOM = {\n  Element: Element,\n  NodeList: NodeList,\n  SVGElement: SVGElement,\n  boundary: 'aurelia-dom-boundary',\n  addEventListener: function addEventListener(eventName, callback, capture) {\n    document.addEventListener(eventName, callback, capture);\n  },\n  removeEventListener: function removeEventListener(eventName, callback, capture) {\n    document.removeEventListener(eventName, callback, capture);\n  },\n  adoptNode: function adoptNode(node) {\n    return document.adoptNode(node);\n  },\n  createAttribute: function createAttribute(name) {\n    return document.createAttribute(name);\n  },\n  createElement: function createElement(tagName) {\n    return document.createElement(tagName);\n  },\n  createTextNode: function createTextNode(text) {\n    return document.createTextNode(text);\n  },\n  createComment: function createComment(text) {\n    return document.createComment(text);\n  },\n  createDocumentFragment: function createDocumentFragment() {\n    return document.createDocumentFragment();\n  },\n  createTemplateElement: function createTemplateElement() {\n    var template = document.createElement('template');\n    return _FEATURE.ensureHTMLTemplateElement(template);\n  },\n  createMutationObserver: function createMutationObserver(callback) {\n    return new (window.MutationObserver || window.WebKitMutationObserver)(callback);\n  },\n  createCustomEvent: function createCustomEvent(eventType, options) {\n    return new window.CustomEvent(eventType, options);\n  },\n  dispatchEvent: function dispatchEvent(evt) {\n    document.dispatchEvent(evt);\n  },\n  getComputedStyle: function getComputedStyle(element) {\n    return window.getComputedStyle(element);\n  },\n  getElementById: function getElementById(id) {\n    return document.getElementById(id);\n  },\n  querySelector: function querySelector(query) {\n    return document.querySelector(query);\n  },\n  querySelectorAll: function querySelectorAll(query) {\n    return document.querySelectorAll(query);\n  },\n  nextElementSibling: function nextElementSibling(element) {\n    if (element.nextElementSibling) {\n      return element.nextElementSibling;\n    }\n    do {\n      element = element.nextSibling;\n    } while (element && element.nodeType !== 1);\n    return element;\n  },\n  createTemplateFromMarkup: function createTemplateFromMarkup(markup) {\n    var parser = document.createElement('div');\n    parser.innerHTML = markup;\n\n    var temp = parser.firstElementChild;\n    if (!temp || temp.nodeName !== 'TEMPLATE') {\n      throw new Error('Template markup must be wrapped in a <template> element e.g. <template> <!-- markup here --> </template>');\n    }\n\n    return _FEATURE.ensureHTMLTemplateElement(temp);\n  },\n  appendNode: function appendNode(newNode, parentNode) {\n    (parentNode || document.body).appendChild(newNode);\n  },\n  replaceNode: function replaceNode(newNode, node, parentNode) {\n    if (node.parentNode) {\n      node.parentNode.replaceChild(newNode, node);\n    } else if (shadowPoly !== null) {\n      shadowPoly.unwrap(parentNode).replaceChild(shadowPoly.unwrap(newNode), shadowPoly.unwrap(node));\n    } else {\n      parentNode.replaceChild(newNode, node);\n    }\n  },\n  removeNode: function removeNode(node, parentNode) {\n    if (node.parentNode) {\n      node.parentNode.removeChild(node);\n    } else if (parentNode) {\n      if (shadowPoly !== null) {\n        shadowPoly.unwrap(parentNode).removeChild(shadowPoly.unwrap(node));\n      } else {\n        parentNode.removeChild(node);\n      }\n    }\n  },\n  injectStyles: function injectStyles(styles, destination, prepend, id) {\n    if (id) {\n      var oldStyle = document.getElementById(id);\n      if (oldStyle) {\n        var isStyleTag = oldStyle.tagName.toLowerCase() === 'style';\n\n        if (isStyleTag) {\n          oldStyle.innerHTML = styles;\n          return;\n        }\n\n        throw new Error('The provided id does not indicate a style tag.');\n      }\n    }\n\n    var node = document.createElement('style');\n    node.innerHTML = styles;\n    node.type = 'text/css';\n\n    if (id) {\n      node.id = id;\n    }\n\n    destination = destination || document.head;\n\n    if (prepend && destination.childNodes.length > 0) {\n      destination.insertBefore(node, destination.childNodes[0]);\n    } else {\n      destination.appendChild(node);\n    }\n\n    return node;\n  }\n};\n\nexport function initialize() {\n  if (isInitialized) {\n    return;\n  }\n\n  initializePAL(function (platform, feature, dom) {\n    Object.assign(platform, _PLATFORM);\n    Object.assign(feature, _FEATURE);\n    Object.assign(dom, _DOM);\n\n    Object.defineProperty(dom, 'title', {\n      get: function get() {\n        return document.title;\n      },\n      set: function set(value) {\n        document.title = value;\n      }\n    });\n\n    Object.defineProperty(dom, 'activeElement', {\n      get: function get() {\n        return document.activeElement;\n      }\n    });\n\n    Object.defineProperty(platform, 'XMLHttpRequest', {\n      get: function get() {\n        return platform.global.XMLHttpRequest;\n      }\n    });\n  });\n}","define([\"require\", \"exports\", \"aurelia-router\", \"./permission-store\", \"./authorize-route-step\", \"./authorization-service\", \"./global-permission-show\", \"./global-permission-enable\", \"./permission-filter\"], function (require, exports, aurelia_router_1, permission_store_1, authorize_route_step_1, authorization_service_1, global_permission_show_1, global_permission_enable_1, permission_filter_1) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.PermissionStore = permission_store_1.default;\n    exports.AuthorizationService = authorization_service_1.default;\n    exports.GlobalPermissionShow = global_permission_show_1.GlobalPermissionShow;\n    exports.GlobalPermissionEnable = global_permission_enable_1.GlobalPermissionEnable;\n    exports.PermissionFilterValueConverter = permission_filter_1.PermissionFilterValueConverter;\n    function configure(framework, configure) {\n        var permissionStore = framework.container.get(permission_store_1.default);\n        var authorizeRouteStep = framework.container.get(authorize_route_step_1.default);\n        configure(permissionStore, {\n            useDefaultRedirectRoute: function (route) {\n                authorizeRouteStep.useDefaultRedirectRoute(route);\n            }\n        });\n        var appRouter = framework.container.get(aurelia_router_1.AppRouter);\n        var authorizePipelineStep = appRouter.pipelineProvider.steps.find(function (step) { return step.slotName === 'preActivate'; });\n        authorizePipelineStep.steps.push(authorize_route_step_1.default);\n        framework.globalResources([\n            './global-permission-show',\n            './global-permission-enable',\n            './permission-filter'\n        ]);\n    }\n    exports.configure = configure;\n});\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\ndefine([\"require\", \"exports\", \"aurelia-framework\", \"./authorization-service\"], function (require, exports, aurelia_framework_1, authorization_service_1) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    var GlobalPermissionEnable = (function () {\n        function GlobalPermissionEnable(element, authorizationService) {\n            this.authorizationService = authorizationService;\n            this.can = '';\n            this.check = true;\n            this.element = element;\n        }\n        Object.defineProperty(GlobalPermissionEnable.prototype, \"canPermissions\", {\n            get: function () {\n                return this.can ? this.can.replace(' ', '').split(',') : [];\n            },\n            enumerable: true,\n            configurable: true\n        });\n        GlobalPermissionEnable.prototype.bind = function () {\n            if (this.check && !this.authorizationService.isAuthorizedByPermissionName(this.canPermissions)) {\n                this.disableElement();\n            }\n        };\n        GlobalPermissionEnable.prototype.disableElement = function () {\n            this.element.setAttribute('disabled', '');\n        };\n        __decorate([\n            aurelia_framework_1.bindable,\n            __metadata(\"design:type\", Object)\n        ], GlobalPermissionEnable.prototype, \"can\", void 0);\n        __decorate([\n            aurelia_framework_1.bindable,\n            __metadata(\"design:type\", Object)\n        ], GlobalPermissionEnable.prototype, \"check\", void 0);\n        GlobalPermissionEnable = __decorate([\n            aurelia_framework_1.autoinject(),\n            aurelia_framework_1.customAttribute('global-permission-enable'),\n            __metadata(\"design:paramtypes\", [Element, authorization_service_1.default])\n        ], GlobalPermissionEnable);\n        return GlobalPermissionEnable;\n    }());\n    exports.GlobalPermissionEnable = GlobalPermissionEnable;\n});\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\ndefine([\"require\", \"exports\", \"aurelia-framework\", \"./authorization-service\"], function (require, exports, aurelia_framework_1, authorization_service_1) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    var GlobalPermissionShow = (function () {\n        function GlobalPermissionShow(element, authorizationService) {\n            this.authorizationService = authorizationService;\n            this.can = '';\n            this.check = true;\n            this.element = element;\n        }\n        Object.defineProperty(GlobalPermissionShow.prototype, \"canPermissions\", {\n            get: function () {\n                return this.can ? this.can.replace(' ', '').split(',') : [];\n            },\n            enumerable: true,\n            configurable: true\n        });\n        GlobalPermissionShow.prototype.bind = function () {\n            if (this.check && !this.authorizationService.isAuthorizedByPermissionName(this.canPermissions)) {\n                this.hideElement();\n            }\n        };\n        GlobalPermissionShow.prototype.hideElement = function () {\n            this.element.classList.add('aurelia-hide');\n        };\n        __decorate([\n            aurelia_framework_1.bindable,\n            __metadata(\"design:type\", Object)\n        ], GlobalPermissionShow.prototype, \"can\", void 0);\n        __decorate([\n            aurelia_framework_1.bindable,\n            __metadata(\"design:type\", Object)\n        ], GlobalPermissionShow.prototype, \"check\", void 0);\n        GlobalPermissionShow = __decorate([\n            aurelia_framework_1.autoinject(),\n            aurelia_framework_1.customAttribute('global-permission-show'),\n            __metadata(\"design:paramtypes\", [Element, authorization_service_1.default])\n        ], GlobalPermissionShow);\n        return GlobalPermissionShow;\n    }());\n    exports.GlobalPermissionShow = GlobalPermissionShow;\n});\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\ndefine([\"require\", \"exports\", \"aurelia-framework\", \"./authorization-service\"], function (require, exports, aurelia_framework_1, authorization_service_1) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    var PermissionFilterValueConverter = (function () {\n        function PermissionFilterValueConverter(authorizationService) {\n            this.authorizationService = authorizationService;\n        }\n        PermissionFilterValueConverter.prototype.toView = function (array) {\n            var _this = this;\n            return array.filter(function (item) { return _this.filterExpression(item); });\n        };\n        PermissionFilterValueConverter.prototype.filterExpression = function (item) {\n            var permissionConfig = item.config && item.config.settings && item.config.settings.permission;\n            var permissions = (permissionConfig && permissionConfig.only) || [];\n            return (_a = this.authorizationService).isAuthorized.apply(_a, permissions);\n            var _a;\n        };\n        PermissionFilterValueConverter = __decorate([\n            aurelia_framework_1.autoinject(),\n            __metadata(\"design:paramtypes\", [authorization_service_1.default])\n        ], PermissionFilterValueConverter);\n        return PermissionFilterValueConverter;\n    }());\n    exports.PermissionFilterValueConverter = PermissionFilterValueConverter;\n});\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.QuillEditor = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _quillEditor = require('./quill-editor');\n\nObject.defineProperty(exports, 'QuillEditor', {\n    enumerable: true,\n    get: function get() {\n        return _quillEditor.QuillEditor;\n    }\n});\nexports.configure = configure;\n\nvar _aureliaPal = require('aurelia-pal');\n\nfunction configure(aureliaConfig, editorConfig) {\n    var defaultConfig = {\n        modules: { toolbar: true },\n        theme: 'snow'\n    };\n\n    if (!editorConfig || (typeof editorConfig === 'undefined' ? 'undefined' : _typeof(editorConfig)) === 'object') {\n        var options = Object.assign({}, defaultConfig, editorConfig);\n\n        aureliaConfig.container.registerInstance('quill-editor-config', options);\n    }\n\n    aureliaConfig.globalResources(_aureliaPal.PLATFORM.moduleName('./quill-editor'));\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.QuillEditor = undefined;\n\nvar _dec, _dec2, _dec3, _dec4, _class, _desc, _value, _class2, _descriptor, _descriptor2;\n\nvar _quill = require('quill');\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _aureliaBinding = require('aurelia-binding');\n\nvar _aureliaDependencyInjection = require('aurelia-dependency-injection');\n\nvar _aureliaTemplating = require('aurelia-templating');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _initDefineProp(target, property, descriptor, context) {\n    if (!descriptor) return;\n    Object.defineProperty(target, property, {\n        enumerable: descriptor.enumerable,\n        configurable: descriptor.configurable,\n        writable: descriptor.writable,\n        value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n    });\n}\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n    var desc = {};\n    Object['ke' + 'ys'](descriptor).forEach(function (key) {\n        desc[key] = descriptor[key];\n    });\n    desc.enumerable = !!desc.enumerable;\n    desc.configurable = !!desc.configurable;\n\n    if ('value' in desc || desc.initializer) {\n        desc.writable = true;\n    }\n\n    desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n        return decorator(target, property, desc) || desc;\n    }, desc);\n\n    if (context && desc.initializer !== void 0) {\n        desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n        desc.initializer = undefined;\n    }\n\n    if (desc.initializer === void 0) {\n        Object['define' + 'Property'](target, property, desc);\n        desc = null;\n    }\n\n    return desc;\n}\n\nfunction _initializerWarningHelper(descriptor, context) {\n    throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n}\n\nvar QuillEditor = exports.QuillEditor = (_dec = (0, _aureliaTemplating.inlineView)('<template>\\n    <div ref=\"quillEditor\"></div>\\n</template>'), _dec2 = (0, _aureliaTemplating.customElement)('quill-editor'), _dec3 = (0, _aureliaTemplating.bindable)(), _dec4 = (0, _aureliaTemplating.bindable)({ defaultBindingMode: _aureliaBinding.bindingMode.twoWay }), _dec(_class = _dec2(_class = (_class2 = function () {\n    function QuillEditor() {\n        var _this = this;\n\n        _classCallCheck(this, QuillEditor);\n\n        this._textChanged = false;\n\n        _initDefineProp(this, 'options', _descriptor, this);\n\n        _initDefineProp(this, 'value', _descriptor2, this);\n\n        this.onTextChanged = function () {\n            _this._textChanged = true;\n            _this.value = _this.editor.root.innerHTML;\n        };\n    }\n\n    QuillEditor.prototype.bind = function bind() {\n        var editorConfig = _aureliaDependencyInjection.Container.instance.get('quill-editor-config');\n        this.options = Object.assign({}, editorConfig, this.options);\n    };\n\n    QuillEditor.prototype.attached = function attached() {\n        this.editor = new _quill2.default(this.quillEditor, this.options);\n\n        this.editor.on('text-change', this.onTextChanged);\n\n        if (this.value) {\n            this.editor.root.innerHTML = this.value;\n        }\n    };\n\n    QuillEditor.prototype.valueChanged = function valueChanged(newValue, oldValue) {\n        if (newValue !== oldValue && this.editor.root.innerHTML !== newValue && this._textChanged === false) {\n            this.editor.root.innerHTML = this.value;\n        }\n        this._textChanged = false;\n    };\n\n    QuillEditor.prototype.detached = function detached() {\n        this.editor.off('text-change', this.onTextChanged);\n        this.cleanModules();\n\n        this.editor = null;\n        delete this.editor;\n    };\n\n    QuillEditor.prototype.cleanModules = function cleanModules() {\n        var toolbar = this.quillEditor.parentNode.querySelector('.ql-toolbar');\n\n        if (toolbar) {\n            toolbar.remove();\n        }\n\n        this.editor.options.modules.toolbar = null;\n        delete this.editor.options.modules.toolbar;\n\n        this.editor.theme.modules.toolbar = null;\n        delete this.editor.theme.modules.toolbar;\n    };\n\n    return QuillEditor;\n}(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'options', [_dec3], {\n    enumerable: true,\n    initializer: null\n}), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'value', [_dec4], {\n    enumerable: true,\n    initializer: null\n})), _class2)) || _class) || _class);","var _class, _temp, _dec, _class2, _dec2, _class3, _class4, _temp2, _class5, _temp3;\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\nimport * as LogManager from 'aurelia-logging';\nimport { camelCase, SVGAnalyzer, bindingMode, connectable, enqueueBindingConnect, sourceContext, Parser, ObserverLocator, EventManager, ListenerExpression, BindingExpression, CallExpression, delegationStrategy, NameExpression, LiteralString } from 'aurelia-binding';\nimport { BehaviorInstruction, BindingLanguage } from 'aurelia-templating';\n\nexport var AttributeMap = (_temp = _class = function () {\n  function AttributeMap(svg) {\n    \n\n    this.elements = Object.create(null);\n    this.allElements = Object.create(null);\n\n    this.svg = svg;\n\n    this.registerUniversal('accesskey', 'accessKey');\n    this.registerUniversal('contenteditable', 'contentEditable');\n    this.registerUniversal('tabindex', 'tabIndex');\n    this.registerUniversal('textcontent', 'textContent');\n    this.registerUniversal('innerhtml', 'innerHTML');\n    this.registerUniversal('scrolltop', 'scrollTop');\n    this.registerUniversal('scrollleft', 'scrollLeft');\n    this.registerUniversal('readonly', 'readOnly');\n\n    this.register('label', 'for', 'htmlFor');\n\n    this.register('img', 'usemap', 'useMap');\n\n    this.register('input', 'maxlength', 'maxLength');\n    this.register('input', 'minlength', 'minLength');\n    this.register('input', 'formaction', 'formAction');\n    this.register('input', 'formenctype', 'formEncType');\n    this.register('input', 'formmethod', 'formMethod');\n    this.register('input', 'formnovalidate', 'formNoValidate');\n    this.register('input', 'formtarget', 'formTarget');\n\n    this.register('textarea', 'maxlength', 'maxLength');\n\n    this.register('td', 'rowspan', 'rowSpan');\n    this.register('td', 'colspan', 'colSpan');\n    this.register('th', 'rowspan', 'rowSpan');\n    this.register('th', 'colspan', 'colSpan');\n  }\n\n  AttributeMap.prototype.register = function register(elementName, attributeName, propertyName) {\n    elementName = elementName.toLowerCase();\n    attributeName = attributeName.toLowerCase();\n    var element = this.elements[elementName] = this.elements[elementName] || Object.create(null);\n    element[attributeName] = propertyName;\n  };\n\n  AttributeMap.prototype.registerUniversal = function registerUniversal(attributeName, propertyName) {\n    attributeName = attributeName.toLowerCase();\n    this.allElements[attributeName] = propertyName;\n  };\n\n  AttributeMap.prototype.map = function map(elementName, attributeName) {\n    if (this.svg.isStandardSvgAttribute(elementName, attributeName)) {\n      return attributeName;\n    }\n    elementName = elementName.toLowerCase();\n    attributeName = attributeName.toLowerCase();\n    var element = this.elements[elementName];\n    if (element !== undefined && attributeName in element) {\n      return element[attributeName];\n    }\n    if (attributeName in this.allElements) {\n      return this.allElements[attributeName];\n    }\n\n    if (/(?:^data-)|(?:^aria-)|:/.test(attributeName)) {\n      return attributeName;\n    }\n    return camelCase(attributeName);\n  };\n\n  return AttributeMap;\n}(), _class.inject = [SVGAnalyzer], _temp);\n\nexport var InterpolationBindingExpression = function () {\n  function InterpolationBindingExpression(observerLocator, targetProperty, parts, mode, lookupFunctions, attribute) {\n    \n\n    this.observerLocator = observerLocator;\n    this.targetProperty = targetProperty;\n    this.parts = parts;\n    this.mode = mode;\n    this.lookupFunctions = lookupFunctions;\n    this.attribute = this.attrToRemove = attribute;\n    this.discrete = false;\n  }\n\n  InterpolationBindingExpression.prototype.createBinding = function createBinding(target) {\n    if (this.parts.length === 3) {\n      return new ChildInterpolationBinding(target, this.observerLocator, this.parts[1], this.mode, this.lookupFunctions, this.targetProperty, this.parts[0], this.parts[2]);\n    }\n    return new InterpolationBinding(this.observerLocator, this.parts, target, this.targetProperty, this.mode, this.lookupFunctions);\n  };\n\n  return InterpolationBindingExpression;\n}();\n\nfunction validateTarget(target, propertyName) {\n  if (propertyName === 'style') {\n    LogManager.getLogger('templating-binding').info('Internet Explorer does not support interpolation in \"style\" attributes.  Use the style attribute\\'s alias, \"css\" instead.');\n  } else if (target.parentElement && target.parentElement.nodeName === 'TEXTAREA' && propertyName === 'textContent') {\n    throw new Error('Interpolation binding cannot be used in the content of a textarea element.  Use <textarea value.bind=\"expression\"></textarea> instead.');\n  }\n}\n\nexport var InterpolationBinding = function () {\n  function InterpolationBinding(observerLocator, parts, target, targetProperty, mode, lookupFunctions) {\n    \n\n    validateTarget(target, targetProperty);\n    this.observerLocator = observerLocator;\n    this.parts = parts;\n    this.target = target;\n    this.targetProperty = targetProperty;\n    this.targetAccessor = observerLocator.getAccessor(target, targetProperty);\n    this.mode = mode;\n    this.lookupFunctions = lookupFunctions;\n  }\n\n  InterpolationBinding.prototype.interpolate = function interpolate() {\n    if (this.isBound) {\n      var value = '';\n      var parts = this.parts;\n      for (var i = 0, ii = parts.length; i < ii; i++) {\n        value += i % 2 === 0 ? parts[i] : this['childBinding' + i].value;\n      }\n      this.targetAccessor.setValue(value, this.target, this.targetProperty);\n    }\n  };\n\n  InterpolationBinding.prototype.updateOneTimeBindings = function updateOneTimeBindings() {\n    for (var i = 1, ii = this.parts.length; i < ii; i += 2) {\n      var child = this['childBinding' + i];\n      if (child.mode === bindingMode.oneTime) {\n        child.call();\n      }\n    }\n  };\n\n  InterpolationBinding.prototype.bind = function bind(source) {\n    if (this.isBound) {\n      if (this.source === source) {\n        return;\n      }\n      this.unbind();\n    }\n    this.source = source;\n\n    var parts = this.parts;\n    for (var i = 1, ii = parts.length; i < ii; i += 2) {\n      var binding = new ChildInterpolationBinding(this, this.observerLocator, parts[i], this.mode, this.lookupFunctions);\n      binding.bind(source);\n      this['childBinding' + i] = binding;\n    }\n\n    this.isBound = true;\n    this.interpolate();\n  };\n\n  InterpolationBinding.prototype.unbind = function unbind() {\n    if (!this.isBound) {\n      return;\n    }\n    this.isBound = false;\n    this.source = null;\n    var parts = this.parts;\n    for (var i = 1, ii = parts.length; i < ii; i += 2) {\n      var name = 'childBinding' + i;\n      this[name].unbind();\n    }\n  };\n\n  return InterpolationBinding;\n}();\n\nexport var ChildInterpolationBinding = (_dec = connectable(), _dec(_class2 = function () {\n  function ChildInterpolationBinding(target, observerLocator, sourceExpression, mode, lookupFunctions, targetProperty, left, right) {\n    \n\n    if (target instanceof InterpolationBinding) {\n      this.parent = target;\n    } else {\n      validateTarget(target, targetProperty);\n      this.target = target;\n      this.targetProperty = targetProperty;\n      this.targetAccessor = observerLocator.getAccessor(target, targetProperty);\n    }\n    this.observerLocator = observerLocator;\n    this.sourceExpression = sourceExpression;\n    this.mode = mode;\n    this.lookupFunctions = lookupFunctions;\n    this.left = left;\n    this.right = right;\n  }\n\n  ChildInterpolationBinding.prototype.updateTarget = function updateTarget(value) {\n    value = value === null || value === undefined ? '' : value.toString();\n    if (value !== this.value) {\n      this.value = value;\n      if (this.parent) {\n        this.parent.interpolate();\n      } else {\n        this.targetAccessor.setValue(this.left + value + this.right, this.target, this.targetProperty);\n      }\n    }\n  };\n\n  ChildInterpolationBinding.prototype.call = function call() {\n    if (!this.isBound) {\n      return;\n    }\n\n    this.rawValue = this.sourceExpression.evaluate(this.source, this.lookupFunctions);\n    this.updateTarget(this.rawValue);\n\n    if (this.mode !== bindingMode.oneTime) {\n      this._version++;\n      this.sourceExpression.connect(this, this.source);\n      if (this.rawValue instanceof Array) {\n        this.observeArray(this.rawValue);\n      }\n      this.unobserve(false);\n    }\n  };\n\n  ChildInterpolationBinding.prototype.bind = function bind(source) {\n    if (this.isBound) {\n      if (this.source === source) {\n        return;\n      }\n      this.unbind();\n    }\n    this.isBound = true;\n    this.source = source;\n\n    var sourceExpression = this.sourceExpression;\n    if (sourceExpression.bind) {\n      sourceExpression.bind(this, source, this.lookupFunctions);\n    }\n\n    this.rawValue = sourceExpression.evaluate(source, this.lookupFunctions);\n    this.updateTarget(this.rawValue);\n\n    if (this.mode === bindingMode.oneWay) {\n      enqueueBindingConnect(this);\n    }\n  };\n\n  ChildInterpolationBinding.prototype.unbind = function unbind() {\n    if (!this.isBound) {\n      return;\n    }\n    this.isBound = false;\n    var sourceExpression = this.sourceExpression;\n    if (sourceExpression.unbind) {\n      sourceExpression.unbind(this, this.source);\n    }\n    this.source = null;\n    this.value = null;\n    this.rawValue = null;\n    this.unobserve(true);\n  };\n\n  ChildInterpolationBinding.prototype.connect = function connect(evaluate) {\n    if (!this.isBound) {\n      return;\n    }\n    if (evaluate) {\n      this.rawValue = this.sourceExpression.evaluate(this.source, this.lookupFunctions);\n      this.updateTarget(this.rawValue);\n    }\n    this.sourceExpression.connect(this, this.source);\n    if (this.rawValue instanceof Array) {\n      this.observeArray(this.rawValue);\n    }\n  };\n\n  return ChildInterpolationBinding;\n}()) || _class2);\n\nexport var LetExpression = function () {\n  function LetExpression(observerLocator, targetProperty, sourceExpression, lookupFunctions, toBindingContext) {\n    \n\n    this.observerLocator = observerLocator;\n    this.sourceExpression = sourceExpression;\n    this.targetProperty = targetProperty;\n    this.lookupFunctions = lookupFunctions;\n    this.toBindingContext = toBindingContext;\n  }\n\n  LetExpression.prototype.createBinding = function createBinding() {\n    return new LetBinding(this.observerLocator, this.sourceExpression, this.targetProperty, this.lookupFunctions, this.toBindingContext);\n  };\n\n  return LetExpression;\n}();\n\nexport var LetBinding = (_dec2 = connectable(), _dec2(_class3 = function () {\n  function LetBinding(observerLocator, sourceExpression, targetProperty, lookupFunctions, toBindingContext) {\n    \n\n    this.observerLocator = observerLocator;\n    this.sourceExpression = sourceExpression;\n    this.targetProperty = targetProperty;\n    this.lookupFunctions = lookupFunctions;\n    this.source = null;\n    this.target = null;\n    this.toBindingContext = toBindingContext;\n  }\n\n  LetBinding.prototype.updateTarget = function updateTarget() {\n    var value = this.sourceExpression.evaluate(this.source, this.lookupFunctions);\n    this.target[this.targetProperty] = value;\n  };\n\n  LetBinding.prototype.call = function call(context) {\n    if (!this.isBound) {\n      return;\n    }\n    if (context === sourceContext) {\n      this.updateTarget();\n      return;\n    }\n    throw new Error('Unexpected call context ' + context);\n  };\n\n  LetBinding.prototype.bind = function bind(source) {\n    if (this.isBound) {\n      if (this.source === source) {\n        return;\n      }\n      this.unbind();\n    }\n\n    this.isBound = true;\n    this.source = source;\n    this.target = this.toBindingContext ? source.bindingContext : source.overrideContext;\n\n    if (this.sourceExpression.bind) {\n      this.sourceExpression.bind(this, source, this.lookupFunctions);\n    }\n\n    enqueueBindingConnect(this);\n  };\n\n  LetBinding.prototype.unbind = function unbind() {\n    if (!this.isBound) {\n      return;\n    }\n    this.isBound = false;\n    if (this.sourceExpression.unbind) {\n      this.sourceExpression.unbind(this, this.source);\n    }\n    this.source = null;\n    this.target = null;\n    this.unobserve(true);\n  };\n\n  LetBinding.prototype.connect = function connect() {\n    if (!this.isBound) {\n      return;\n    }\n    this.updateTarget();\n    this.sourceExpression.connect(this, this.source);\n  };\n\n  return LetBinding;\n}()) || _class3);\n\nexport var LetInterpolationBindingExpression = function () {\n  function LetInterpolationBindingExpression(observerLocator, targetProperty, parts, lookupFunctions, toBindingContext) {\n    \n\n    this.observerLocator = observerLocator;\n    this.targetProperty = targetProperty;\n    this.parts = parts;\n    this.lookupFunctions = lookupFunctions;\n    this.toBindingContext = toBindingContext;\n  }\n\n  LetInterpolationBindingExpression.prototype.createBinding = function createBinding() {\n    return new LetInterpolationBinding(this.observerLocator, this.targetProperty, this.parts, this.lookupFunctions, this.toBindingContext);\n  };\n\n  return LetInterpolationBindingExpression;\n}();\n\nexport var LetInterpolationBinding = function () {\n  function LetInterpolationBinding(observerLocator, targetProperty, parts, lookupFunctions, toBindingContext) {\n    \n\n    this.observerLocator = observerLocator;\n    this.parts = parts;\n    this.targetProperty = targetProperty;\n    this.lookupFunctions = lookupFunctions;\n    this.toBindingContext = toBindingContext;\n    this.target = null;\n  }\n\n  LetInterpolationBinding.prototype.bind = function bind(source) {\n    if (this.isBound) {\n      if (this.source === source) {\n        return;\n      }\n      this.unbind();\n    }\n\n    this.isBound = true;\n    this.source = source;\n    this.target = this.toBindingContext ? source.bindingContext : source.overrideContext;\n\n    this.interpolationBinding = this.createInterpolationBinding();\n    this.interpolationBinding.bind(source);\n  };\n\n  LetInterpolationBinding.prototype.unbind = function unbind() {\n    if (!this.isBound) {\n      return;\n    }\n    this.isBound = false;\n    this.source = null;\n    this.target = null;\n    this.interpolationBinding.unbind();\n    this.interpolationBinding = null;\n  };\n\n  LetInterpolationBinding.prototype.createInterpolationBinding = function createInterpolationBinding() {\n    if (this.parts.length === 3) {\n      return new ChildInterpolationBinding(this.target, this.observerLocator, this.parts[1], bindingMode.oneWay, this.lookupFunctions, this.targetProperty, this.parts[0], this.parts[2]);\n    }\n    return new InterpolationBinding(this.observerLocator, this.parts, this.target, this.targetProperty, bindingMode.oneWay, this.lookupFunctions);\n  };\n\n  return LetInterpolationBinding;\n}();\n\nexport var SyntaxInterpreter = (_temp2 = _class4 = function () {\n  function SyntaxInterpreter(parser, observerLocator, eventManager, attributeMap) {\n    \n\n    this.parser = parser;\n    this.observerLocator = observerLocator;\n    this.eventManager = eventManager;\n    this.attributeMap = attributeMap;\n  }\n\n  SyntaxInterpreter.prototype.interpret = function interpret(resources, element, info, existingInstruction, context) {\n    if (info.command in this) {\n      return this[info.command](resources, element, info, existingInstruction, context);\n    }\n\n    return this.handleUnknownCommand(resources, element, info, existingInstruction, context);\n  };\n\n  SyntaxInterpreter.prototype.handleUnknownCommand = function handleUnknownCommand(resources, element, info, existingInstruction, context) {\n    LogManager.getLogger('templating-binding').warn('Unknown binding command.', info);\n    return existingInstruction;\n  };\n\n  SyntaxInterpreter.prototype.determineDefaultBindingMode = function determineDefaultBindingMode(element, attrName, context) {\n    var tagName = element.tagName.toLowerCase();\n\n    if (tagName === 'input' && (attrName === 'value' || attrName === 'files') && element.type !== 'checkbox' && element.type !== 'radio' || tagName === 'input' && attrName === 'checked' && (element.type === 'checkbox' || element.type === 'radio') || (tagName === 'textarea' || tagName === 'select') && attrName === 'value' || (attrName === 'textcontent' || attrName === 'innerhtml') && element.contentEditable === 'true' || attrName === 'scrolltop' || attrName === 'scrollleft') {\n      return bindingMode.twoWay;\n    }\n\n    if (context && attrName in context.attributes && context.attributes[attrName] && context.attributes[attrName].defaultBindingMode >= bindingMode.oneTime) {\n      return context.attributes[attrName].defaultBindingMode;\n    }\n\n    return bindingMode.oneWay;\n  };\n\n  SyntaxInterpreter.prototype.bind = function bind(resources, element, info, existingInstruction, context) {\n    var instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\n\n    instruction.attributes[info.attrName] = new BindingExpression(this.observerLocator, this.attributeMap.map(element.tagName, info.attrName), this.parser.parse(info.attrValue), info.defaultBindingMode === undefined || info.defaultBindingMode === null ? this.determineDefaultBindingMode(element, info.attrName, context) : info.defaultBindingMode, resources.lookupFunctions);\n\n    return instruction;\n  };\n\n  SyntaxInterpreter.prototype.trigger = function trigger(resources, element, info) {\n    return new ListenerExpression(this.eventManager, info.attrName, this.parser.parse(info.attrValue), delegationStrategy.none, true, resources.lookupFunctions);\n  };\n\n  SyntaxInterpreter.prototype.capture = function capture(resources, element, info) {\n    return new ListenerExpression(this.eventManager, info.attrName, this.parser.parse(info.attrValue), delegationStrategy.capturing, true, resources.lookupFunctions);\n  };\n\n  SyntaxInterpreter.prototype.delegate = function delegate(resources, element, info) {\n    return new ListenerExpression(this.eventManager, info.attrName, this.parser.parse(info.attrValue), delegationStrategy.bubbling, true, resources.lookupFunctions);\n  };\n\n  SyntaxInterpreter.prototype.call = function call(resources, element, info, existingInstruction) {\n    var instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\n\n    instruction.attributes[info.attrName] = new CallExpression(this.observerLocator, info.attrName, this.parser.parse(info.attrValue), resources.lookupFunctions);\n\n    return instruction;\n  };\n\n  SyntaxInterpreter.prototype.options = function options(resources, element, info, existingInstruction, context) {\n    var instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\n    var attrValue = info.attrValue;\n    var language = this.language;\n    var name = null;\n    var target = '';\n    var current = void 0;\n    var i = void 0;\n    var ii = void 0;\n    var inString = false;\n    var inEscape = false;\n    var foundName = false;\n\n    for (i = 0, ii = attrValue.length; i < ii; ++i) {\n      current = attrValue[i];\n\n      if (current === ';' && !inString) {\n        if (!foundName) {\n          name = this._getPrimaryPropertyName(resources, context);\n        }\n        info = language.inspectAttribute(resources, '?', name, target.trim());\n        language.createAttributeInstruction(resources, element, info, instruction, context);\n\n        if (!instruction.attributes[info.attrName]) {\n          instruction.attributes[info.attrName] = info.attrValue;\n        }\n\n        target = '';\n        name = null;\n      } else if (current === ':' && name === null) {\n        foundName = true;\n        name = target.trim();\n        target = '';\n      } else if (current === '\\\\') {\n        target += current;\n        inEscape = true;\n        continue;\n      } else {\n        target += current;\n\n        if (name !== null && inEscape === false && current === '\\'') {\n          inString = !inString;\n        }\n      }\n\n      inEscape = false;\n    }\n\n    if (!foundName) {\n      name = this._getPrimaryPropertyName(resources, context);\n    }\n\n    if (name !== null) {\n      info = language.inspectAttribute(resources, '?', name, target.trim());\n      language.createAttributeInstruction(resources, element, info, instruction, context);\n\n      if (!instruction.attributes[info.attrName]) {\n        instruction.attributes[info.attrName] = info.attrValue;\n      }\n    }\n\n    return instruction;\n  };\n\n  SyntaxInterpreter.prototype._getPrimaryPropertyName = function _getPrimaryPropertyName(resources, context) {\n    var type = resources.getAttribute(context.attributeName);\n    if (type && type.primaryProperty) {\n      return type.primaryProperty.attribute;\n    }\n    return null;\n  };\n\n  SyntaxInterpreter.prototype['for'] = function _for(resources, element, info, existingInstruction) {\n    var parts = void 0;\n    var keyValue = void 0;\n    var instruction = void 0;\n    var attrValue = void 0;\n    var isDestructuring = void 0;\n\n    attrValue = info.attrValue;\n    isDestructuring = attrValue.match(/^ *[[].+[\\]]/);\n    parts = isDestructuring ? attrValue.split('of ') : attrValue.split(' of ');\n\n    if (parts.length !== 2) {\n      throw new Error('Incorrect syntax for \"for\". The form is: \"$local of $items\" or \"[$key, $value] of $items\".');\n    }\n\n    instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\n\n    if (isDestructuring) {\n      keyValue = parts[0].replace(/[[\\]]/g, '').replace(/,/g, ' ').replace(/\\s+/g, ' ').trim().split(' ');\n      instruction.attributes.key = keyValue[0];\n      instruction.attributes.value = keyValue[1];\n    } else {\n      instruction.attributes.local = parts[0];\n    }\n\n    instruction.attributes.items = new BindingExpression(this.observerLocator, 'items', this.parser.parse(parts[1]), bindingMode.oneWay, resources.lookupFunctions);\n\n    return instruction;\n  };\n\n  SyntaxInterpreter.prototype['two-way'] = function twoWay(resources, element, info, existingInstruction) {\n    var instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\n\n    instruction.attributes[info.attrName] = new BindingExpression(this.observerLocator, this.attributeMap.map(element.tagName, info.attrName), this.parser.parse(info.attrValue), bindingMode.twoWay, resources.lookupFunctions);\n\n    return instruction;\n  };\n\n  SyntaxInterpreter.prototype['to-view'] = function toView(resources, element, info, existingInstruction) {\n    var instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\n\n    instruction.attributes[info.attrName] = new BindingExpression(this.observerLocator, this.attributeMap.map(element.tagName, info.attrName), this.parser.parse(info.attrValue), bindingMode.toView, resources.lookupFunctions);\n\n    return instruction;\n  };\n\n  SyntaxInterpreter.prototype['from-view'] = function fromView(resources, element, info, existingInstruction) {\n    var instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\n\n    instruction.attributes[info.attrName] = new BindingExpression(this.observerLocator, this.attributeMap.map(element.tagName, info.attrName), this.parser.parse(info.attrValue), bindingMode.fromView, resources.lookupFunctions);\n\n    return instruction;\n  };\n\n  SyntaxInterpreter.prototype['one-time'] = function oneTime(resources, element, info, existingInstruction) {\n    var instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\n\n    instruction.attributes[info.attrName] = new BindingExpression(this.observerLocator, this.attributeMap.map(element.tagName, info.attrName), this.parser.parse(info.attrValue), bindingMode.oneTime, resources.lookupFunctions);\n\n    return instruction;\n  };\n\n  return SyntaxInterpreter;\n}(), _class4.inject = [Parser, ObserverLocator, EventManager, AttributeMap], _temp2);\n\nSyntaxInterpreter.prototype['one-way'] = SyntaxInterpreter.prototype['to-view'];\n\nvar info = {};\n\nexport var TemplatingBindingLanguage = (_temp3 = _class5 = function (_BindingLanguage) {\n  _inherits(TemplatingBindingLanguage, _BindingLanguage);\n\n  function TemplatingBindingLanguage(parser, observerLocator, syntaxInterpreter, attributeMap) {\n    \n\n    var _this = _possibleConstructorReturn(this, _BindingLanguage.call(this));\n\n    _this.parser = parser;\n    _this.observerLocator = observerLocator;\n    _this.syntaxInterpreter = syntaxInterpreter;\n    _this.emptyStringExpression = _this.parser.parse('\\'\\'');\n    syntaxInterpreter.language = _this;\n    _this.attributeMap = attributeMap;\n    _this.toBindingContextAttr = 'to-binding-context';\n    return _this;\n  }\n\n  TemplatingBindingLanguage.prototype.inspectAttribute = function inspectAttribute(resources, elementName, attrName, attrValue) {\n    var parts = attrName.split('.');\n\n    info.defaultBindingMode = null;\n\n    if (parts.length === 2) {\n      info.attrName = parts[0].trim();\n      info.attrValue = attrValue;\n      info.command = parts[1].trim();\n\n      if (info.command === 'ref') {\n        info.expression = new NameExpression(this.parser.parse(attrValue), info.attrName, resources.lookupFunctions);\n        info.command = null;\n        info.attrName = 'ref';\n      } else {\n        info.expression = null;\n      }\n    } else if (attrName === 'ref') {\n      info.attrName = attrName;\n      info.attrValue = attrValue;\n      info.command = null;\n      info.expression = new NameExpression(this.parser.parse(attrValue), 'element', resources.lookupFunctions);\n    } else {\n      info.attrName = attrName;\n      info.attrValue = attrValue;\n      info.command = null;\n      var interpolationParts = this.parseInterpolation(resources, attrValue);\n      if (interpolationParts === null) {\n        info.expression = null;\n      } else {\n        info.expression = new InterpolationBindingExpression(this.observerLocator, this.attributeMap.map(elementName, attrName), interpolationParts, bindingMode.oneWay, resources.lookupFunctions, attrName);\n      }\n    }\n\n    return info;\n  };\n\n  TemplatingBindingLanguage.prototype.createAttributeInstruction = function createAttributeInstruction(resources, element, theInfo, existingInstruction, context) {\n    var instruction = void 0;\n\n    if (theInfo.expression) {\n      if (theInfo.attrName === 'ref') {\n        return theInfo.expression;\n      }\n\n      instruction = existingInstruction || BehaviorInstruction.attribute(theInfo.attrName);\n      instruction.attributes[theInfo.attrName] = theInfo.expression;\n    } else if (theInfo.command) {\n      instruction = this.syntaxInterpreter.interpret(resources, element, theInfo, existingInstruction, context);\n    }\n\n    return instruction;\n  };\n\n  TemplatingBindingLanguage.prototype.createLetExpressions = function createLetExpressions(resources, letElement) {\n    var expressions = [];\n    var attributes = letElement.attributes;\n\n    var attr = void 0;\n\n    var parts = void 0;\n    var attrName = void 0;\n    var attrValue = void 0;\n    var command = void 0;\n    var toBindingContextAttr = this.toBindingContextAttr;\n    var toBindingContext = letElement.hasAttribute(toBindingContextAttr);\n    for (var i = 0, ii = attributes.length; ii > i; ++i) {\n      attr = attributes[i];\n      attrName = attr.name;\n      attrValue = attr.nodeValue;\n      parts = attrName.split('.');\n\n      if (attrName === toBindingContextAttr) {\n        continue;\n      }\n\n      if (parts.length === 2) {\n        command = parts[1];\n        if (command !== 'bind') {\n          LogManager.getLogger('templating-binding-language').warn('Detected invalid let command. Expected \"' + parts[0] + '.bind\", given \"' + attrName + '\"');\n          continue;\n        }\n        expressions.push(new LetExpression(this.observerLocator, camelCase(parts[0]), this.parser.parse(attrValue), resources.lookupFunctions, toBindingContext));\n      } else {\n        attrName = camelCase(attrName);\n        parts = this.parseInterpolation(resources, attrValue);\n        if (parts === null) {\n          LogManager.getLogger('templating-binding-language').warn('Detected string literal in let bindings. Did you mean \"' + attrName + '.bind=' + attrValue + '\" or \"' + attrName + '=${' + attrValue + '}\" ?');\n        }\n        if (parts) {\n          expressions.push(new LetInterpolationBindingExpression(this.observerLocator, attrName, parts, resources.lookupFunctions, toBindingContext));\n        } else {\n          expressions.push(new LetExpression(this.observerLocator, attrName, new LiteralString(attrValue), resources.lookupFunctions, toBindingContext));\n        }\n      }\n    }\n    return expressions;\n  };\n\n  TemplatingBindingLanguage.prototype.inspectTextContent = function inspectTextContent(resources, value) {\n    var parts = this.parseInterpolation(resources, value);\n    if (parts === null) {\n      return null;\n    }\n    return new InterpolationBindingExpression(this.observerLocator, 'textContent', parts, bindingMode.oneWay, resources.lookupFunctions, 'textContent');\n  };\n\n  TemplatingBindingLanguage.prototype.parseInterpolation = function parseInterpolation(resources, value) {\n    var i = value.indexOf('${', 0);\n    var ii = value.length;\n    var char = void 0;\n    var pos = 0;\n    var open = 0;\n    var quote = null;\n    var interpolationStart = void 0;\n    var parts = void 0;\n    var partIndex = 0;\n\n    while (i >= 0 && i < ii - 2) {\n      open = 1;\n      interpolationStart = i;\n      i += 2;\n\n      do {\n        char = value[i];\n        i++;\n\n        if (char === \"'\" || char === '\"') {\n          if (quote === null) {\n            quote = char;\n          } else if (quote === char) {\n            quote = null;\n          }\n          continue;\n        }\n\n        if (char === '\\\\') {\n          i++;\n          continue;\n        }\n\n        if (quote !== null) {\n          continue;\n        }\n\n        if (char === '{') {\n          open++;\n        } else if (char === '}') {\n          open--;\n        }\n      } while (open > 0 && i < ii);\n\n      if (open === 0) {\n        parts = parts || [];\n        if (value[interpolationStart - 1] === '\\\\' && value[interpolationStart - 2] !== '\\\\') {\n          parts[partIndex] = value.substring(pos, interpolationStart - 1) + value.substring(interpolationStart, i);\n          partIndex++;\n          parts[partIndex] = this.emptyStringExpression;\n          partIndex++;\n        } else {\n          parts[partIndex] = value.substring(pos, interpolationStart);\n          partIndex++;\n          parts[partIndex] = this.parser.parse(value.substring(interpolationStart + 2, i - 1));\n          partIndex++;\n        }\n        pos = i;\n        i = value.indexOf('${', i);\n      } else {\n        break;\n      }\n    }\n\n    if (partIndex === 0) {\n      return null;\n    }\n\n    parts[partIndex] = value.substr(pos);\n    return parts;\n  };\n\n  return TemplatingBindingLanguage;\n}(BindingLanguage), _class5.inject = [Parser, ObserverLocator, SyntaxInterpreter, AttributeMap], _temp3);\n\nexport function configure(config) {\n  config.container.registerSingleton(BindingLanguage, TemplatingBindingLanguage);\n  config.container.registerAlias(BindingLanguage, TemplatingBindingLanguage);\n}","var _dec, _dec2, _class;\n\n\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport { BoundViewFactory, ViewSlot, customAttribute, templateController } from 'aurelia-templating';\nimport { inject } from 'aurelia-dependency-injection';\nimport { IfCore } from './if-core';\n\nexport var Else = (_dec = customAttribute('else'), _dec2 = inject(BoundViewFactory, ViewSlot), _dec(_class = templateController(_class = _dec2(_class = function (_IfCore) {\n  _inherits(Else, _IfCore);\n\n  function Else(viewFactory, viewSlot) {\n    \n\n    var _this = _possibleConstructorReturn(this, _IfCore.call(this, viewFactory, viewSlot));\n\n    _this._registerInIf();\n    return _this;\n  }\n\n  Else.prototype.bind = function bind(bindingContext, overrideContext) {\n    _IfCore.prototype.bind.call(this, bindingContext, overrideContext);\n\n    if (this.ifVm.condition) {\n      this._hide();\n    } else {\n      this._show();\n    }\n  };\n\n  Else.prototype._registerInIf = function _registerInIf() {\n    var previous = this.viewSlot.anchor.previousSibling;\n    while (previous && !previous.au) {\n      previous = previous.previousSibling;\n    }\n    if (!previous || !previous.au.if) {\n      throw new Error(\"Can't find matching If for Else custom attribute.\");\n    }\n    this.ifVm = previous.au.if.viewModel;\n    this.ifVm.elseVm = this;\n  };\n\n  return Else;\n}(IfCore)) || _class) || _class) || _class);","var _dec, _dec2, _class;\n\n\n\nimport { inject } from 'aurelia-dependency-injection';\nimport { BoundViewFactory, ViewSlot, customAttribute, templateController } from 'aurelia-templating';\nimport { createOverrideContext } from 'aurelia-binding';\n\nexport var With = (_dec = customAttribute('with'), _dec2 = inject(BoundViewFactory, ViewSlot), _dec(_class = templateController(_class = _dec2(_class = function () {\n  function With(viewFactory, viewSlot) {\n    \n\n    this.viewFactory = viewFactory;\n    this.viewSlot = viewSlot;\n    this.parentOverrideContext = null;\n    this.view = null;\n  }\n\n  With.prototype.bind = function bind(bindingContext, overrideContext) {\n    this.parentOverrideContext = overrideContext;\n    this.valueChanged(this.value);\n  };\n\n  With.prototype.valueChanged = function valueChanged(newValue) {\n    var overrideContext = createOverrideContext(newValue, this.parentOverrideContext);\n    if (!this.view) {\n      this.view = this.viewFactory.create();\n      this.view.bind(newValue, overrideContext);\n      this.viewSlot.add(this.view);\n    } else {\n      this.view.bind(newValue, overrideContext);\n    }\n  };\n\n  With.prototype.unbind = function unbind() {\n    this.parentOverrideContext = null;\n\n    if (this.view) {\n      this.view.unbind();\n    }\n  };\n\n  return With;\n}()) || _class) || _class) || _class);","\n\nexport var NullRepeatStrategy = function () {\n  function NullRepeatStrategy() {\n    \n  }\n\n  NullRepeatStrategy.prototype.instanceChanged = function instanceChanged(repeat, items) {\n    repeat.removeAllViews(true);\n  };\n\n  NullRepeatStrategy.prototype.getCollectionObserver = function getCollectionObserver(observerLocator, items) {};\n\n  return NullRepeatStrategy;\n}();","\n\nimport { NullRepeatStrategy } from './null-repeat-strategy';\nimport { ArrayRepeatStrategy } from './array-repeat-strategy';\nimport { MapRepeatStrategy } from './map-repeat-strategy';\nimport { SetRepeatStrategy } from './set-repeat-strategy';\nimport { NumberRepeatStrategy } from './number-repeat-strategy';\n\nexport var RepeatStrategyLocator = function () {\n  function RepeatStrategyLocator() {\n    \n\n    this.matchers = [];\n    this.strategies = [];\n\n    this.addStrategy(function (items) {\n      return items === null || items === undefined;\n    }, new NullRepeatStrategy());\n    this.addStrategy(function (items) {\n      return items instanceof Array;\n    }, new ArrayRepeatStrategy());\n    this.addStrategy(function (items) {\n      return items instanceof Map;\n    }, new MapRepeatStrategy());\n    this.addStrategy(function (items) {\n      return items instanceof Set;\n    }, new SetRepeatStrategy());\n    this.addStrategy(function (items) {\n      return typeof items === 'number';\n    }, new NumberRepeatStrategy());\n  }\n\n  RepeatStrategyLocator.prototype.addStrategy = function addStrategy(matcher, strategy) {\n    this.matchers.push(matcher);\n    this.strategies.push(strategy);\n  };\n\n  RepeatStrategyLocator.prototype.getStrategy = function getStrategy(items) {\n    var matchers = this.matchers;\n\n    for (var i = 0, ii = matchers.length; i < ii; ++i) {\n      if (matchers[i](items)) {\n        return this.strategies[i];\n      }\n    }\n\n    return null;\n  };\n\n  return RepeatStrategyLocator;\n}();","\nexport var lifecycleOptionalBehaviors = ['focus', 'if', 'else', 'repeat', 'show', 'hide', 'with'];\n\nfunction behaviorRequiresLifecycle(instruction) {\n  var t = instruction.type;\n  var name = t.elementName !== null ? t.elementName : t.attributeName;\n  return lifecycleOptionalBehaviors.indexOf(name) === -1 && (t.handlesAttached || t.handlesBind || t.handlesCreated || t.handlesDetached || t.handlesUnbind) || t.viewFactory && viewsRequireLifecycle(t.viewFactory) || instruction.viewFactory && viewsRequireLifecycle(instruction.viewFactory);\n}\n\nfunction targetRequiresLifecycle(instruction) {\n  var behaviors = instruction.behaviorInstructions;\n  if (behaviors) {\n    var i = behaviors.length;\n    while (i--) {\n      if (behaviorRequiresLifecycle(behaviors[i])) {\n        return true;\n      }\n    }\n  }\n\n  return instruction.viewFactory && viewsRequireLifecycle(instruction.viewFactory);\n}\n\nexport function viewsRequireLifecycle(viewFactory) {\n  if ('_viewsRequireLifecycle' in viewFactory) {\n    return viewFactory._viewsRequireLifecycle;\n  }\n\n  viewFactory._viewsRequireLifecycle = false;\n\n  if (viewFactory.viewFactory) {\n    viewFactory._viewsRequireLifecycle = viewsRequireLifecycle(viewFactory.viewFactory);\n    return viewFactory._viewsRequireLifecycle;\n  }\n\n  if (viewFactory.template.querySelector('.au-animate')) {\n    viewFactory._viewsRequireLifecycle = true;\n    return true;\n  }\n\n  for (var id in viewFactory.instructions) {\n    if (targetRequiresLifecycle(viewFactory.instructions[id])) {\n      viewFactory._viewsRequireLifecycle = true;\n      return true;\n    }\n  }\n\n  viewFactory._viewsRequireLifecycle = false;\n  return false;\n}","\n\nexport var AbstractRepeater = function () {\n  function AbstractRepeater(options) {\n    \n\n    Object.assign(this, {\n      local: 'items',\n      viewsRequireLifecycle: true\n    }, options);\n  }\n\n  AbstractRepeater.prototype.viewCount = function viewCount() {\n    throw new Error('subclass must implement `viewCount`');\n  };\n\n  AbstractRepeater.prototype.views = function views() {\n    throw new Error('subclass must implement `views`');\n  };\n\n  AbstractRepeater.prototype.view = function view(index) {\n    throw new Error('subclass must implement `view`');\n  };\n\n  AbstractRepeater.prototype.matcher = function matcher() {\n    throw new Error('subclass must implement `matcher`');\n  };\n\n  AbstractRepeater.prototype.addView = function addView(bindingContext, overrideContext) {\n    throw new Error('subclass must implement `addView`');\n  };\n\n  AbstractRepeater.prototype.insertView = function insertView(index, bindingContext, overrideContext) {\n    throw new Error('subclass must implement `insertView`');\n  };\n\n  AbstractRepeater.prototype.moveView = function moveView(sourceIndex, targetIndex) {\n    throw new Error('subclass must implement `moveView`');\n  };\n\n  AbstractRepeater.prototype.removeAllViews = function removeAllViews(returnToCache, skipAnimation) {\n    throw new Error('subclass must implement `removeAllViews`');\n  };\n\n  AbstractRepeater.prototype.removeViews = function removeViews(viewsToRemove, returnToCache, skipAnimation) {\n    throw new Error('subclass must implement `removeView`');\n  };\n\n  AbstractRepeater.prototype.removeView = function removeView(index, returnToCache, skipAnimation) {\n    throw new Error('subclass must implement `removeView`');\n  };\n\n  AbstractRepeater.prototype.updateBindings = function updateBindings(view) {\n    throw new Error('subclass must implement `updateBindings`');\n  };\n\n  return AbstractRepeater;\n}();","var _dec, _dec2, _class, _desc, _value, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4;\n\nfunction _initDefineProp(target, property, descriptor, context) {\n  if (!descriptor) return;\n  Object.defineProperty(target, property, {\n    enumerable: descriptor.enumerable,\n    configurable: descriptor.configurable,\n    writable: descriptor.writable,\n    value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n  });\n}\n\n\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n  var desc = {};\n  Object['ke' + 'ys'](descriptor).forEach(function (key) {\n    desc[key] = descriptor[key];\n  });\n  desc.enumerable = !!desc.enumerable;\n  desc.configurable = !!desc.configurable;\n\n  if ('value' in desc || desc.initializer) {\n    desc.writable = true;\n  }\n\n  desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n    return decorator(target, property, desc) || desc;\n  }, desc);\n\n  if (context && desc.initializer !== void 0) {\n    desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n    desc.initializer = undefined;\n  }\n\n  if (desc.initializer === void 0) {\n    Object['define' + 'Property'](target, property, desc);\n    desc = null;\n  }\n\n  return desc;\n}\n\nfunction _initializerWarningHelper(descriptor, context) {\n  throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n}\n\nimport { inject } from 'aurelia-dependency-injection';\nimport { ObserverLocator } from 'aurelia-binding';\nimport { BoundViewFactory, TargetInstruction, ViewSlot, ViewResources, customAttribute, bindable, templateController } from 'aurelia-templating';\nimport { RepeatStrategyLocator } from './repeat-strategy-locator';\nimport { getItemsSourceExpression, unwrapExpression, isOneTime, updateOneTimeBinding } from './repeat-utilities';\nimport { viewsRequireLifecycle } from './analyze-view-factory';\nimport { AbstractRepeater } from './abstract-repeater';\n\nexport var Repeat = (_dec = customAttribute('repeat'), _dec2 = inject(BoundViewFactory, TargetInstruction, ViewSlot, ViewResources, ObserverLocator, RepeatStrategyLocator), _dec(_class = templateController(_class = _dec2(_class = (_class2 = function (_AbstractRepeater) {\n  _inherits(Repeat, _AbstractRepeater);\n\n  function Repeat(viewFactory, instruction, viewSlot, viewResources, observerLocator, strategyLocator) {\n    \n\n    var _this = _possibleConstructorReturn(this, _AbstractRepeater.call(this, {\n      local: 'item',\n      viewsRequireLifecycle: viewsRequireLifecycle(viewFactory)\n    }));\n\n    _initDefineProp(_this, 'items', _descriptor, _this);\n\n    _initDefineProp(_this, 'local', _descriptor2, _this);\n\n    _initDefineProp(_this, 'key', _descriptor3, _this);\n\n    _initDefineProp(_this, 'value', _descriptor4, _this);\n\n    _this.viewFactory = viewFactory;\n    _this.instruction = instruction;\n    _this.viewSlot = viewSlot;\n    _this.lookupFunctions = viewResources.lookupFunctions;\n    _this.observerLocator = observerLocator;\n    _this.key = 'key';\n    _this.value = 'value';\n    _this.strategyLocator = strategyLocator;\n    _this.ignoreMutation = false;\n    _this.sourceExpression = getItemsSourceExpression(_this.instruction, 'repeat.for');\n    _this.isOneTime = isOneTime(_this.sourceExpression);\n    _this.viewsRequireLifecycle = viewsRequireLifecycle(viewFactory);\n    return _this;\n  }\n\n  Repeat.prototype.call = function call(context, changes) {\n    this[context](this.items, changes);\n  };\n\n  Repeat.prototype.bind = function bind(bindingContext, overrideContext) {\n    this.scope = { bindingContext: bindingContext, overrideContext: overrideContext };\n    this.matcherBinding = this._captureAndRemoveMatcherBinding();\n    this.itemsChanged();\n  };\n\n  Repeat.prototype.unbind = function unbind() {\n    this.scope = null;\n    this.items = null;\n    this.matcherBinding = null;\n    this.viewSlot.removeAll(true, true);\n    this._unsubscribeCollection();\n  };\n\n  Repeat.prototype._unsubscribeCollection = function _unsubscribeCollection() {\n    if (this.collectionObserver) {\n      this.collectionObserver.unsubscribe(this.callContext, this);\n      this.collectionObserver = null;\n      this.callContext = null;\n    }\n  };\n\n  Repeat.prototype.itemsChanged = function itemsChanged() {\n    var _this2 = this;\n\n    this._unsubscribeCollection();\n\n    if (!this.scope) {\n      return;\n    }\n\n    var items = this.items;\n    this.strategy = this.strategyLocator.getStrategy(items);\n    if (!this.strategy) {\n      throw new Error('Value for \\'' + this.sourceExpression + '\\' is non-repeatable');\n    }\n\n    if (!this.isOneTime && !this._observeInnerCollection()) {\n      this._observeCollection();\n    }\n    this.ignoreMutation = true;\n    this.strategy.instanceChanged(this, items);\n    this.observerLocator.taskQueue.queueMicroTask(function () {\n      _this2.ignoreMutation = false;\n    });\n  };\n\n  Repeat.prototype._getInnerCollection = function _getInnerCollection() {\n    var expression = unwrapExpression(this.sourceExpression);\n    if (!expression) {\n      return null;\n    }\n    return expression.evaluate(this.scope, null);\n  };\n\n  Repeat.prototype.handleCollectionMutated = function handleCollectionMutated(collection, changes) {\n    if (!this.collectionObserver) {\n      return;\n    }\n    if (this.ignoreMutation) {\n      return;\n    }\n    this.strategy.instanceMutated(this, collection, changes);\n  };\n\n  Repeat.prototype.handleInnerCollectionMutated = function handleInnerCollectionMutated(collection, changes) {\n    var _this3 = this;\n\n    if (!this.collectionObserver) {\n      return;\n    }\n\n    if (this.ignoreMutation) {\n      return;\n    }\n    this.ignoreMutation = true;\n    var newItems = this.sourceExpression.evaluate(this.scope, this.lookupFunctions);\n    this.observerLocator.taskQueue.queueMicroTask(function () {\n      return _this3.ignoreMutation = false;\n    });\n\n    if (newItems === this.items) {\n      this.itemsChanged();\n    } else {\n      this.items = newItems;\n    }\n  };\n\n  Repeat.prototype._observeInnerCollection = function _observeInnerCollection() {\n    var items = this._getInnerCollection();\n    var strategy = this.strategyLocator.getStrategy(items);\n    if (!strategy) {\n      return false;\n    }\n    this.collectionObserver = strategy.getCollectionObserver(this.observerLocator, items);\n    if (!this.collectionObserver) {\n      return false;\n    }\n    this.callContext = 'handleInnerCollectionMutated';\n    this.collectionObserver.subscribe(this.callContext, this);\n    return true;\n  };\n\n  Repeat.prototype._observeCollection = function _observeCollection() {\n    var items = this.items;\n    this.collectionObserver = this.strategy.getCollectionObserver(this.observerLocator, items);\n    if (this.collectionObserver) {\n      this.callContext = 'handleCollectionMutated';\n      this.collectionObserver.subscribe(this.callContext, this);\n    }\n  };\n\n  Repeat.prototype._captureAndRemoveMatcherBinding = function _captureAndRemoveMatcherBinding() {\n    if (this.viewFactory.viewFactory) {\n      var instructions = this.viewFactory.viewFactory.instructions;\n      var instructionIds = Object.keys(instructions);\n      for (var i = 0; i < instructionIds.length; i++) {\n        var expressions = instructions[instructionIds[i]].expressions;\n        if (expressions) {\n          for (var ii = 0; i < expressions.length; i++) {\n            if (expressions[ii].targetProperty === 'matcher') {\n              var matcherBinding = expressions[ii];\n              expressions.splice(ii, 1);\n              return matcherBinding;\n            }\n          }\n        }\n      }\n    }\n\n    return undefined;\n  };\n\n  Repeat.prototype.viewCount = function viewCount() {\n    return this.viewSlot.children.length;\n  };\n\n  Repeat.prototype.views = function views() {\n    return this.viewSlot.children;\n  };\n\n  Repeat.prototype.view = function view(index) {\n    return this.viewSlot.children[index];\n  };\n\n  Repeat.prototype.matcher = function matcher() {\n    return this.matcherBinding ? this.matcherBinding.sourceExpression.evaluate(this.scope, this.matcherBinding.lookupFunctions) : null;\n  };\n\n  Repeat.prototype.addView = function addView(bindingContext, overrideContext) {\n    var view = this.viewFactory.create();\n    view.bind(bindingContext, overrideContext);\n    this.viewSlot.add(view);\n  };\n\n  Repeat.prototype.insertView = function insertView(index, bindingContext, overrideContext) {\n    var view = this.viewFactory.create();\n    view.bind(bindingContext, overrideContext);\n    this.viewSlot.insert(index, view);\n  };\n\n  Repeat.prototype.moveView = function moveView(sourceIndex, targetIndex) {\n    this.viewSlot.move(sourceIndex, targetIndex);\n  };\n\n  Repeat.prototype.removeAllViews = function removeAllViews(returnToCache, skipAnimation) {\n    return this.viewSlot.removeAll(returnToCache, skipAnimation);\n  };\n\n  Repeat.prototype.removeViews = function removeViews(viewsToRemove, returnToCache, skipAnimation) {\n    return this.viewSlot.removeMany(viewsToRemove, returnToCache, skipAnimation);\n  };\n\n  Repeat.prototype.removeView = function removeView(index, returnToCache, skipAnimation) {\n    return this.viewSlot.removeAt(index, returnToCache, skipAnimation);\n  };\n\n  Repeat.prototype.updateBindings = function updateBindings(view) {\n    var j = view.bindings.length;\n    while (j--) {\n      updateOneTimeBinding(view.bindings[j]);\n    }\n    j = view.controllers.length;\n    while (j--) {\n      var k = view.controllers[j].boundProperties.length;\n      while (k--) {\n        var binding = view.controllers[j].boundProperties[k].binding;\n        updateOneTimeBinding(binding);\n      }\n    }\n  };\n\n  return Repeat;\n}(AbstractRepeater), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'items', [bindable], {\n  enumerable: true,\n  initializer: null\n}), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, 'local', [bindable], {\n  enumerable: true,\n  initializer: null\n}), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, 'key', [bindable], {\n  enumerable: true,\n  initializer: null\n}), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, 'value', [bindable], {\n  enumerable: true,\n  initializer: null\n})), _class2)) || _class) || _class) || _class);","var _dec, _class;\n\n\n\nimport { Optional } from 'aurelia-dependency-injection';\nimport { customAttribute, Animator } from 'aurelia-templating';\nimport { DOM } from 'aurelia-pal';\nimport { injectAureliaHideStyleAtBoundary, aureliaHideClassName } from './aurelia-hide-style';\n\nexport var Show = (_dec = customAttribute('show'), _dec(_class = function () {\n  Show.inject = function inject() {\n    return [DOM.Element, Animator, Optional.of(DOM.boundary, true)];\n  };\n\n  function Show(element, animator, domBoundary) {\n    \n\n    this.element = element;\n    this.animator = animator;\n    this.domBoundary = domBoundary;\n  }\n\n  Show.prototype.created = function created() {\n    injectAureliaHideStyleAtBoundary(this.domBoundary);\n  };\n\n  Show.prototype.valueChanged = function valueChanged(newValue) {\n    if (newValue) {\n      this.animator.removeClass(this.element, aureliaHideClassName);\n    } else {\n      this.animator.addClass(this.element, aureliaHideClassName);\n    }\n  };\n\n  Show.prototype.bind = function bind(bindingContext) {\n    this.valueChanged(this.value);\n  };\n\n  return Show;\n}()) || _class);","import { FEATURE, DOM } from 'aurelia-pal';\n\nexport var aureliaHideClassName = 'aurelia-hide';\n\nvar aureliaHideClass = '.' + aureliaHideClassName + ' { display:none !important; }';\n\nexport function injectAureliaHideStyleAtHead() {\n  DOM.injectStyles(aureliaHideClass);\n}\n\nexport function injectAureliaHideStyleAtBoundary(domBoundary) {\n  if (FEATURE.shadowDOM && domBoundary && !domBoundary.hasAureliaHideStyle) {\n    domBoundary.hasAureliaHideStyle = true;\n    DOM.injectStyles(aureliaHideClass, domBoundary);\n  }\n}","var _dec, _class;\n\n\n\nimport { Optional } from 'aurelia-dependency-injection';\nimport { customAttribute, Animator } from 'aurelia-templating';\nimport { DOM } from 'aurelia-pal';\nimport { injectAureliaHideStyleAtBoundary, aureliaHideClassName } from './aurelia-hide-style';\n\nexport var Hide = (_dec = customAttribute('hide'), _dec(_class = function () {\n  Hide.inject = function inject() {\n    return [DOM.Element, Animator, Optional.of(DOM.boundary, true)];\n  };\n\n  function Hide(element, animator, domBoundary) {\n    \n\n    this.element = element;\n    this.animator = animator;\n    this.domBoundary = domBoundary;\n  }\n\n  Hide.prototype.created = function created() {\n    injectAureliaHideStyleAtBoundary(this.domBoundary);\n  };\n\n  Hide.prototype.valueChanged = function valueChanged(newValue) {\n    if (newValue) {\n      this.animator.addClass(this.element, aureliaHideClassName);\n    } else {\n      this.animator.removeClass(this.element, aureliaHideClassName);\n    }\n  };\n\n  Hide.prototype.bind = function bind(bindingContext) {\n    this.valueChanged(this.value);\n  };\n\n  return Hide;\n}()) || _class);","var _dec, _dec2, _class;\n\n\n\nimport { valueConverter } from 'aurelia-binding';\nimport { inject } from 'aurelia-dependency-injection';\nimport { HTMLSanitizer } from './html-sanitizer';\n\nexport var SanitizeHTMLValueConverter = (_dec = valueConverter('sanitizeHTML'), _dec2 = inject(HTMLSanitizer), _dec(_class = _dec2(_class = function () {\n  function SanitizeHTMLValueConverter(sanitizer) {\n    \n\n    this.sanitizer = sanitizer;\n  }\n\n  SanitizeHTMLValueConverter.prototype.toView = function toView(untrustedMarkup) {\n    if (untrustedMarkup === null || untrustedMarkup === undefined) {\n      return null;\n    }\n\n    return this.sanitizer.sanitize(untrustedMarkup);\n  };\n\n  return SanitizeHTMLValueConverter;\n}()) || _class) || _class);","var _dec, _dec2, _class;\n\n\n\nimport { inject } from 'aurelia-dependency-injection';\nimport { BoundViewFactory, ViewSlot, customAttribute, templateController } from 'aurelia-templating';\n\nexport var Replaceable = (_dec = customAttribute('replaceable'), _dec2 = inject(BoundViewFactory, ViewSlot), _dec(_class = templateController(_class = _dec2(_class = function () {\n  function Replaceable(viewFactory, viewSlot) {\n    \n\n    this.viewFactory = viewFactory;\n    this.viewSlot = viewSlot;\n    this.view = null;\n  }\n\n  Replaceable.prototype.bind = function bind(bindingContext, overrideContext) {\n    if (this.view === null) {\n      this.view = this.viewFactory.create();\n      this.viewSlot.add(this.view);\n    }\n\n    this.view.bind(bindingContext, overrideContext);\n  };\n\n  Replaceable.prototype.unbind = function unbind() {\n    this.view.unbind();\n  };\n\n  return Replaceable;\n}()) || _class) || _class) || _class);","var _dec, _class;\n\n\n\nimport { customAttribute } from 'aurelia-templating';\nimport { bindingMode } from 'aurelia-binding';\nimport { TaskQueue } from 'aurelia-task-queue';\nimport { DOM } from 'aurelia-pal';\n\nexport var Focus = (_dec = customAttribute('focus', bindingMode.twoWay), _dec(_class = function () {\n  Focus.inject = function inject() {\n    return [DOM.Element, TaskQueue];\n  };\n\n  function Focus(element, taskQueue) {\n    \n\n    this.element = element;\n    this.taskQueue = taskQueue;\n    this.isAttached = false;\n    this.needsApply = false;\n  }\n\n  Focus.prototype.valueChanged = function valueChanged(newValue) {\n    if (this.isAttached) {\n      this._apply();\n    } else {\n      this.needsApply = true;\n    }\n  };\n\n  Focus.prototype._apply = function _apply() {\n    var _this = this;\n\n    if (this.value) {\n      this.taskQueue.queueMicroTask(function () {\n        if (_this.value) {\n          _this.element.focus();\n        }\n      });\n    } else {\n      this.element.blur();\n    }\n  };\n\n  Focus.prototype.attached = function attached() {\n    this.isAttached = true;\n    if (this.needsApply) {\n      this.needsApply = false;\n      this._apply();\n    }\n    this.element.addEventListener('focus', this);\n    this.element.addEventListener('blur', this);\n  };\n\n  Focus.prototype.detached = function detached() {\n    this.isAttached = false;\n    this.element.removeEventListener('focus', this);\n    this.element.removeEventListener('blur', this);\n  };\n\n  Focus.prototype.handleEvent = function handleEvent(e) {\n    if (e.type === 'focus') {\n      this.value = true;\n    } else if (DOM.activeElement !== this.element) {\n      this.value = false;\n    }\n  };\n\n  return Focus;\n}()) || _class);","\n\nvar SCRIPT_REGEX = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi;\n\nexport var HTMLSanitizer = function () {\n  function HTMLSanitizer() {\n    \n  }\n\n  HTMLSanitizer.prototype.sanitize = function sanitize(input) {\n    return input.replace(SCRIPT_REGEX, '');\n  };\n\n  return HTMLSanitizer;\n}();","function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\nimport { ViewResources, resource, ViewCompileInstruction } from 'aurelia-templating';\nimport { Loader } from 'aurelia-loader';\nimport { Container } from 'aurelia-dependency-injection';\nimport { relativeToFile } from 'aurelia-path';\nimport { DOM, FEATURE } from 'aurelia-pal';\n\nvar cssUrlMatcher = /url\\((?!['\"]data)([^)]+)\\)/gi;\n\nfunction fixupCSSUrls(address, css) {\n  if (typeof css !== 'string') {\n    throw new Error('Failed loading required CSS file: ' + address);\n  }\n  return css.replace(cssUrlMatcher, function (match, p1) {\n    var quote = p1.charAt(0);\n    if (quote === '\\'' || quote === '\"') {\n      p1 = p1.substr(1, p1.length - 2);\n    }\n    return 'url(\\'' + relativeToFile(p1, address) + '\\')';\n  });\n}\n\nvar CSSResource = function () {\n  function CSSResource(address) {\n    \n\n    this.address = address;\n    this._scoped = null;\n    this._global = false;\n    this._alreadyGloballyInjected = false;\n  }\n\n  CSSResource.prototype.initialize = function initialize(container, target) {\n    this._scoped = new target(this);\n  };\n\n  CSSResource.prototype.register = function register(registry, name) {\n    if (name === 'scoped') {\n      registry.registerViewEngineHooks(this._scoped);\n    } else {\n      this._global = true;\n    }\n  };\n\n  CSSResource.prototype.load = function load(container) {\n    var _this = this;\n\n    return container.get(Loader).loadText(this.address).catch(function (err) {\n      return null;\n    }).then(function (text) {\n      text = fixupCSSUrls(_this.address, text);\n      _this._scoped.css = text;\n      if (_this._global) {\n        _this._alreadyGloballyInjected = true;\n        DOM.injectStyles(text);\n      }\n    });\n  };\n\n  return CSSResource;\n}();\n\nvar CSSViewEngineHooks = function () {\n  function CSSViewEngineHooks(owner) {\n    \n\n    this.owner = owner;\n    this.css = null;\n  }\n\n  CSSViewEngineHooks.prototype.beforeCompile = function beforeCompile(content, resources, instruction) {\n    if (instruction.targetShadowDOM) {\n      DOM.injectStyles(this.css, content, true);\n    } else if (FEATURE.scopedCSS) {\n      var styleNode = DOM.injectStyles(this.css, content, true);\n      styleNode.setAttribute('scoped', 'scoped');\n    } else if (this._global && !this.owner._alreadyGloballyInjected) {\n      DOM.injectStyles(this.css);\n      this.owner._alreadyGloballyInjected = true;\n    }\n  };\n\n  return CSSViewEngineHooks;\n}();\n\nexport function _createCSSResource(address) {\n  var _dec, _class;\n\n  var ViewCSS = (_dec = resource(new CSSResource(address)), _dec(_class = function (_CSSViewEngineHooks) {\n    _inherits(ViewCSS, _CSSViewEngineHooks);\n\n    function ViewCSS() {\n      \n\n      return _possibleConstructorReturn(this, _CSSViewEngineHooks.apply(this, arguments));\n    }\n\n    return ViewCSS;\n  }(CSSViewEngineHooks)) || _class);\n\n  return ViewCSS;\n}","var _dec, _class;\n\n\n\nimport { DataAttributeObserver, bindingBehavior } from 'aurelia-binding';\n\nexport var AttrBindingBehavior = (_dec = bindingBehavior('attr'), _dec(_class = function () {\n  function AttrBindingBehavior() {\n    \n  }\n\n  AttrBindingBehavior.prototype.bind = function bind(binding, source) {\n    binding.targetObserver = new DataAttributeObserver(binding.target, binding.targetProperty);\n  };\n\n  AttrBindingBehavior.prototype.unbind = function unbind(binding, source) {};\n\n  return AttrBindingBehavior;\n}()) || _class);","var _dec, _dec2, _class, _dec3, _dec4, _class2, _dec5, _dec6, _class3, _dec7, _dec8, _class4, _dec9, _dec10, _class5;\n\n\n\nimport { bindingMode, bindingBehavior } from 'aurelia-binding';\nimport { mixin } from 'aurelia-metadata';\n\nvar modeBindingBehavior = {\n  bind: function bind(binding, source, lookupFunctions) {\n    binding.originalMode = binding.mode;\n    binding.mode = this.mode;\n  },\n  unbind: function unbind(binding, source) {\n    binding.mode = binding.originalMode;\n    binding.originalMode = null;\n  }\n};\n\nexport var OneTimeBindingBehavior = (_dec = mixin(modeBindingBehavior), _dec2 = bindingBehavior('oneTime'), _dec(_class = _dec2(_class = function OneTimeBindingBehavior() {\n  \n\n  this.mode = bindingMode.oneTime;\n}) || _class) || _class);\n\nexport var OneWayBindingBehavior = (_dec3 = mixin(modeBindingBehavior), _dec4 = bindingBehavior('oneWay'), _dec3(_class2 = _dec4(_class2 = function OneWayBindingBehavior() {\n  \n\n  this.mode = bindingMode.toView;\n}) || _class2) || _class2);\n\nexport var ToViewBindingBehavior = (_dec5 = mixin(modeBindingBehavior), _dec6 = bindingBehavior('toView'), _dec5(_class3 = _dec6(_class3 = function ToViewBindingBehavior() {\n  \n\n  this.mode = bindingMode.toView;\n}) || _class3) || _class3);\n\nexport var FromViewBindingBehavior = (_dec7 = mixin(modeBindingBehavior), _dec8 = bindingBehavior('fromView'), _dec7(_class4 = _dec8(_class4 = function FromViewBindingBehavior() {\n  \n\n  this.mode = bindingMode.fromView;\n}) || _class4) || _class4);\n\nexport var TwoWayBindingBehavior = (_dec9 = mixin(modeBindingBehavior), _dec10 = bindingBehavior('twoWay'), _dec9(_class5 = _dec10(_class5 = function TwoWayBindingBehavior() {\n  \n\n  this.mode = bindingMode.twoWay;\n}) || _class5) || _class5);","var _dec, _class;\n\n\n\nimport { bindingMode, bindingBehavior } from 'aurelia-binding';\n\nfunction throttle(newValue) {\n  var _this = this;\n\n  var state = this.throttleState;\n  var elapsed = +new Date() - state.last;\n  if (elapsed >= state.delay) {\n    clearTimeout(state.timeoutId);\n    state.timeoutId = null;\n    state.last = +new Date();\n    this.throttledMethod(newValue);\n    return;\n  }\n  state.newValue = newValue;\n  if (state.timeoutId === null) {\n    state.timeoutId = setTimeout(function () {\n      state.timeoutId = null;\n      state.last = +new Date();\n      _this.throttledMethod(state.newValue);\n    }, state.delay - elapsed);\n  }\n}\n\nexport var ThrottleBindingBehavior = (_dec = bindingBehavior('throttle'), _dec(_class = function () {\n  function ThrottleBindingBehavior() {\n    \n  }\n\n  ThrottleBindingBehavior.prototype.bind = function bind(binding, source) {\n    var delay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n\n    var methodToThrottle = 'updateTarget';\n    if (binding.callSource) {\n      methodToThrottle = 'callSource';\n    } else if (binding.updateSource && binding.mode === bindingMode.twoWay) {\n      methodToThrottle = 'updateSource';\n    }\n\n    binding.throttledMethod = binding[methodToThrottle];\n    binding.throttledMethod.originalName = methodToThrottle;\n\n    binding[methodToThrottle] = throttle;\n\n    binding.throttleState = {\n      delay: delay,\n      last: 0,\n      timeoutId: null\n    };\n  };\n\n  ThrottleBindingBehavior.prototype.unbind = function unbind(binding, source) {\n    var methodToRestore = binding.throttledMethod.originalName;\n    binding[methodToRestore] = binding.throttledMethod;\n    binding.throttledMethod = null;\n    clearTimeout(binding.throttleState.timeoutId);\n    binding.throttleState = null;\n  };\n\n  return ThrottleBindingBehavior;\n}()) || _class);","var _dec, _class;\n\n\n\nimport { bindingMode, sourceContext, targetContext, bindingBehavior } from 'aurelia-binding';\n\nvar unset = {};\n\nfunction debounceCallSource(event) {\n  var _this = this;\n\n  var state = this.debounceState;\n  clearTimeout(state.timeoutId);\n  state.timeoutId = setTimeout(function () {\n    return _this.debouncedMethod(event);\n  }, state.delay);\n}\n\nfunction debounceCall(context, newValue, oldValue) {\n  var _this2 = this;\n\n  var state = this.debounceState;\n  clearTimeout(state.timeoutId);\n  if (context !== state.callContextToDebounce) {\n    state.oldValue = unset;\n    this.debouncedMethod(context, newValue, oldValue);\n    return;\n  }\n  if (state.oldValue === unset) {\n    state.oldValue = oldValue;\n  }\n  state.timeoutId = setTimeout(function () {\n    var _oldValue = state.oldValue;\n    state.oldValue = unset;\n    _this2.debouncedMethod(context, newValue, _oldValue);\n  }, state.delay);\n}\n\nexport var DebounceBindingBehavior = (_dec = bindingBehavior('debounce'), _dec(_class = function () {\n  function DebounceBindingBehavior() {\n    \n  }\n\n  DebounceBindingBehavior.prototype.bind = function bind(binding, source) {\n    var delay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n\n    var isCallSource = binding.callSource !== undefined;\n    var methodToDebounce = isCallSource ? 'callSource' : 'call';\n    var debouncer = isCallSource ? debounceCallSource : debounceCall;\n    var mode = binding.mode;\n    var callContextToDebounce = mode === bindingMode.twoWay || mode === bindingMode.fromView ? targetContext : sourceContext;\n\n    binding.debouncedMethod = binding[methodToDebounce];\n    binding.debouncedMethod.originalName = methodToDebounce;\n\n    binding[methodToDebounce] = debouncer;\n\n    binding.debounceState = {\n      callContextToDebounce: callContextToDebounce,\n      delay: delay,\n      timeoutId: 0,\n      oldValue: unset\n    };\n  };\n\n  DebounceBindingBehavior.prototype.unbind = function unbind(binding, source) {\n    var methodToRestore = binding.debouncedMethod.originalName;\n    binding[methodToRestore] = binding.debouncedMethod;\n    binding.debouncedMethod = null;\n    clearTimeout(binding.debounceState.timeoutId);\n    binding.debounceState = null;\n  };\n\n  return DebounceBindingBehavior;\n}()) || _class);","var _dec, _class;\n\n\n\nimport { bindingBehavior } from 'aurelia-binding';\n\nfunction findOriginalEventTarget(event) {\n  return event.path && event.path[0] || event.deepPath && event.deepPath[0] || event.target;\n}\n\nfunction handleSelfEvent(event) {\n  var target = findOriginalEventTarget(event);\n  if (this.target !== target) return;\n  this.selfEventCallSource(event);\n}\n\nexport var SelfBindingBehavior = (_dec = bindingBehavior('self'), _dec(_class = function () {\n  function SelfBindingBehavior() {\n    \n  }\n\n  SelfBindingBehavior.prototype.bind = function bind(binding, source) {\n    if (!binding.callSource || !binding.targetEvent) throw new Error('Self binding behavior only supports event.');\n    binding.selfEventCallSource = binding.callSource;\n    binding.callSource = handleSelfEvent;\n  };\n\n  SelfBindingBehavior.prototype.unbind = function unbind(binding, source) {\n    binding.callSource = binding.selfEventCallSource;\n    binding.selfEventCallSource = null;\n  };\n\n  return SelfBindingBehavior;\n}()) || _class);","var _dec, _class;\n\n\n\nimport { bindingBehavior } from 'aurelia-binding';\nimport { BindingSignaler } from './binding-signaler';\n\nexport var SignalBindingBehavior = (_dec = bindingBehavior('signal'), _dec(_class = function () {\n  SignalBindingBehavior.inject = function inject() {\n    return [BindingSignaler];\n  };\n\n  function SignalBindingBehavior(bindingSignaler) {\n    \n\n    this.signals = bindingSignaler.signals;\n  }\n\n  SignalBindingBehavior.prototype.bind = function bind(binding, source) {\n    if (!binding.updateTarget) {\n      throw new Error('Only property bindings and string interpolation bindings can be signaled.  Trigger, delegate and call bindings cannot be signaled.');\n    }\n    if (arguments.length === 3) {\n      var name = arguments[2];\n      var bindings = this.signals[name] || (this.signals[name] = []);\n      bindings.push(binding);\n      binding.signalName = name;\n    } else if (arguments.length > 3) {\n      var names = Array.prototype.slice.call(arguments, 2);\n      var i = names.length;\n      while (i--) {\n        var _name = names[i];\n        var _bindings = this.signals[_name] || (this.signals[_name] = []);\n        _bindings.push(binding);\n      }\n      binding.signalName = names;\n    } else {\n      throw new Error('Signal name is required.');\n    }\n  };\n\n  SignalBindingBehavior.prototype.unbind = function unbind(binding, source) {\n    var name = binding.signalName;\n    binding.signalName = null;\n    if (Array.isArray(name)) {\n      var names = name;\n      var i = names.length;\n      while (i--) {\n        var n = names[i];\n        var bindings = this.signals[n];\n        bindings.splice(bindings.indexOf(binding), 1);\n      }\n    } else {\n      var _bindings2 = this.signals[name];\n      _bindings2.splice(_bindings2.indexOf(binding), 1);\n    }\n  };\n\n  return SignalBindingBehavior;\n}()) || _class);","var _dec, _class;\n\n\n\nimport { bindingMode, EventSubscriber, bindingBehavior } from 'aurelia-binding';\n\nvar eventNamesRequired = 'The updateTrigger binding behavior requires at least one event name argument: eg <input value.bind=\"firstName & updateTrigger:\\'blur\\'\">';\nvar notApplicableMessage = 'The updateTrigger binding behavior can only be applied to two-way/ from-view bindings on input/select elements.';\n\nexport var UpdateTriggerBindingBehavior = (_dec = bindingBehavior('updateTrigger'), _dec(_class = function () {\n  function UpdateTriggerBindingBehavior() {\n    \n  }\n\n  UpdateTriggerBindingBehavior.prototype.bind = function bind(binding, source) {\n    for (var _len = arguments.length, events = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n      events[_key - 2] = arguments[_key];\n    }\n\n    if (events.length === 0) {\n      throw new Error(eventNamesRequired);\n    }\n    if (binding.mode !== bindingMode.twoWay && binding.mode !== bindingMode.fromView) {\n      throw new Error(notApplicableMessage);\n    }\n\n    var targetObserver = binding.observerLocator.getObserver(binding.target, binding.targetProperty);\n    if (!targetObserver.handler) {\n      throw new Error(notApplicableMessage);\n    }\n    binding.targetObserver = targetObserver;\n\n    targetObserver.originalHandler = binding.targetObserver.handler;\n\n    var handler = new EventSubscriber(events);\n    targetObserver.handler = handler;\n  };\n\n  UpdateTriggerBindingBehavior.prototype.unbind = function unbind(binding, source) {\n    binding.targetObserver.handler.dispose();\n    binding.targetObserver.handler = binding.targetObserver.originalHandler;\n    binding.targetObserver.originalHandler = null;\n  };\n\n  return UpdateTriggerBindingBehavior;\n}()) || _class);","\n\nimport { sourceContext } from 'aurelia-binding';\n\nexport var BindingSignaler = function () {\n  function BindingSignaler() {\n    \n\n    this.signals = {};\n  }\n\n  BindingSignaler.prototype.signal = function signal(name) {\n    var bindings = this.signals[name];\n    if (!bindings) {\n      return;\n    }\n    var i = bindings.length;\n    while (i--) {\n      bindings[i].call(sourceContext);\n    }\n  };\n\n  return BindingSignaler;\n}();","import { ViewEngine } from 'aurelia-templating';\nimport { _createDynamicElement } from './dynamic-element';\n\nexport function getElementName(address) {\n  return (/([^\\/^\\?]+)\\.html/i.exec(address)[1].toLowerCase()\n  );\n}\n\nexport function configure(config) {\n  var viewEngine = config.container.get(ViewEngine);\n  var loader = config.aurelia.loader;\n\n  viewEngine.addResourcePlugin('.html', {\n    'fetch': function fetch(address) {\n      return loader.loadTemplate(address).then(function (registryEntry) {\n        var _ref;\n\n        var bindable = registryEntry.template.getAttribute('bindable');\n        var elementName = getElementName(address);\n\n        if (bindable) {\n          bindable = bindable.split(',').map(function (x) {\n            return x.trim();\n          });\n          registryEntry.template.removeAttribute('bindable');\n        } else {\n          bindable = [];\n        }\n\n        return _ref = {}, _ref[elementName] = _createDynamicElement(elementName, address, bindable), _ref;\n      });\n    }\n  });\n}","\n\nimport { useView, customElement, bindable } from 'aurelia-templating';\nexport function _createDynamicElement(name, viewUrl, bindableNames) {\n  var _dec, _dec2, _class;\n\n  var DynamicElement = (_dec = customElement(name), _dec2 = useView(viewUrl), _dec(_class = _dec2(_class = function () {\n    function DynamicElement() {\n      \n    }\n\n    DynamicElement.prototype.bind = function bind(bindingContext) {\n      this.$parent = bindingContext;\n    };\n\n    return DynamicElement;\n  }()) || _class) || _class);\n\n  for (var i = 0, ii = bindableNames.length; i < ii; ++i) {\n    bindable(bindableNames[i])(DynamicElement);\n  }\n  return DynamicElement;\n}","import { Compose } from './compose';\nimport { If } from './if';\nimport { Else } from './else';\nimport { With } from './with';\nimport { Repeat } from './repeat';\nimport { Show } from './show';\nimport { Hide } from './hide';\nimport { SanitizeHTMLValueConverter } from './sanitize-html';\nimport { Replaceable } from './replaceable';\nimport { Focus } from './focus';\nimport { ViewEngine } from 'aurelia-templating';\nimport { _createCSSResource } from './css-resource';\nimport { HTMLSanitizer } from './html-sanitizer';\nimport { AttrBindingBehavior } from './attr-binding-behavior';\nimport { OneTimeBindingBehavior, OneWayBindingBehavior, TwoWayBindingBehavior, FromViewBindingBehavior, ToViewBindingBehavior } from './binding-mode-behaviors';\nimport { ThrottleBindingBehavior } from './throttle-binding-behavior';\nimport { DebounceBindingBehavior } from './debounce-binding-behavior';\nimport { SelfBindingBehavior } from './self-binding-behavior';\nimport { SignalBindingBehavior } from './signal-binding-behavior';\nimport { BindingSignaler } from './binding-signaler';\nimport { UpdateTriggerBindingBehavior } from './update-trigger-binding-behavior';\nimport { AbstractRepeater } from './abstract-repeater';\nimport { RepeatStrategyLocator } from './repeat-strategy-locator';\nimport { configure as configureHtmlResourcePlugin } from './html-resource-plugin';\nimport { NullRepeatStrategy } from './null-repeat-strategy';\nimport { ArrayRepeatStrategy } from './array-repeat-strategy';\nimport { MapRepeatStrategy } from './map-repeat-strategy';\nimport { SetRepeatStrategy } from './set-repeat-strategy';\nimport { NumberRepeatStrategy } from './number-repeat-strategy';\nimport { createFullOverrideContext, updateOverrideContext, getItemsSourceExpression, isOneTime, updateOneTimeBinding, unwrapExpression } from './repeat-utilities';\nimport { viewsRequireLifecycle } from './analyze-view-factory';\nimport { injectAureliaHideStyleAtHead } from './aurelia-hide-style';\n\nfunction configure(config) {\n  injectAureliaHideStyleAtHead();\n\n  config.globalResources(Compose, If, Else, With, Repeat, Show, Hide, Replaceable, Focus, SanitizeHTMLValueConverter, OneTimeBindingBehavior, OneWayBindingBehavior, ToViewBindingBehavior, FromViewBindingBehavior, TwoWayBindingBehavior, ThrottleBindingBehavior, DebounceBindingBehavior, SelfBindingBehavior, SignalBindingBehavior, UpdateTriggerBindingBehavior, AttrBindingBehavior);\n\n  configureHtmlResourcePlugin(config);\n\n  var viewEngine = config.container.get(ViewEngine);\n  var styleResourcePlugin = {\n    fetch: function fetch(address) {\n      var _ref;\n\n      return _ref = {}, _ref[address] = _createCSSResource(address), _ref;\n    }\n  };\n  ['.css', '.less', '.sass', '.scss', '.styl'].forEach(function (ext) {\n    return viewEngine.addResourcePlugin(ext, styleResourcePlugin);\n  });\n}\n\nexport { Compose, If, Else, With, Repeat, Show, Hide, HTMLSanitizer, SanitizeHTMLValueConverter, Replaceable, Focus, configure, AttrBindingBehavior, OneTimeBindingBehavior, OneWayBindingBehavior, ToViewBindingBehavior, FromViewBindingBehavior, TwoWayBindingBehavior, ThrottleBindingBehavior, DebounceBindingBehavior, SelfBindingBehavior, SignalBindingBehavior, BindingSignaler, UpdateTriggerBindingBehavior, AbstractRepeater, RepeatStrategyLocator, NullRepeatStrategy, ArrayRepeatStrategy, MapRepeatStrategy, SetRepeatStrategy, NumberRepeatStrategy, createFullOverrideContext, updateOverrideContext, getItemsSourceExpression, isOneTime, updateOneTimeBinding, unwrapExpression, viewsRequireLifecycle };","var _dec, _class, _dec2, _class2;\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\nimport { inject } from 'aurelia-dependency-injection';\nimport { CompositionEngine, useView, inlineView, customElement } from 'aurelia-templating';\nimport { RouteLoader, Router } from 'aurelia-router';\nimport { relativeToFile } from 'aurelia-path';\nimport { Origin } from 'aurelia-metadata';\nimport { RouterViewLocator } from './router-view';\n\nvar EmptyClass = (_dec = inlineView('<template></template>'), _dec(_class = function EmptyClass() {\n  \n}) || _class);\n\nexport var TemplatingRouteLoader = (_dec2 = inject(CompositionEngine), _dec2(_class2 = function (_RouteLoader) {\n  _inherits(TemplatingRouteLoader, _RouteLoader);\n\n  function TemplatingRouteLoader(compositionEngine) {\n    \n\n    var _this = _possibleConstructorReturn(this, _RouteLoader.call(this));\n\n    _this.compositionEngine = compositionEngine;\n    return _this;\n  }\n\n  TemplatingRouteLoader.prototype.loadRoute = function loadRoute(router, config) {\n    var childContainer = router.container.createChild();\n\n    var viewModel = void 0;\n    if (config.moduleId === null) {\n      viewModel = EmptyClass;\n    } else if (/\\.html/i.test(config.moduleId)) {\n      viewModel = createDynamicClass(config.moduleId);\n    } else {\n      viewModel = relativeToFile(config.moduleId, Origin.get(router.container.viewModel.constructor).moduleId);\n    }\n\n    var instruction = {\n      viewModel: viewModel,\n      childContainer: childContainer,\n      view: config.view || config.viewStrategy,\n      router: router\n    };\n\n    childContainer.registerSingleton(RouterViewLocator);\n\n    childContainer.getChildRouter = function () {\n      var childRouter = void 0;\n\n      childContainer.registerHandler(Router, function (c) {\n        return childRouter || (childRouter = router.createChild(childContainer));\n      });\n\n      return childContainer.get(Router);\n    };\n\n    return this.compositionEngine.ensureViewModel(instruction);\n  };\n\n  return TemplatingRouteLoader;\n}(RouteLoader)) || _class2);\n\nfunction createDynamicClass(moduleId) {\n  var _dec3, _dec4, _class3;\n\n  var name = /([^\\/^\\?]+)\\.html/i.exec(moduleId)[1];\n\n  var DynamicClass = (_dec3 = customElement(name), _dec4 = useView(moduleId), _dec3(_class3 = _dec4(_class3 = function () {\n    function DynamicClass() {\n      \n    }\n\n    DynamicClass.prototype.bind = function bind(bindingContext) {\n      this.$parent = bindingContext;\n    };\n\n    return DynamicClass;\n  }()) || _class3) || _class3);\n\n\n  return DynamicClass;\n}","var _dec, _dec2, _dec3, _dec4, _class;\n\n\n\nimport { customAttribute, bindable } from 'aurelia-templating';\nimport { Router } from 'aurelia-router';\nimport { DOM } from 'aurelia-pal';\nimport * as LogManager from 'aurelia-logging';\n\nvar logger = LogManager.getLogger('route-href');\n\nexport var RouteHref = (_dec = customAttribute('route-href'), _dec2 = bindable({ name: 'route', changeHandler: 'processChange', primaryProperty: true }), _dec3 = bindable({ name: 'params', changeHandler: 'processChange' }), _dec4 = bindable({ name: 'attribute', defaultValue: 'href' }), _dec(_class = _dec2(_class = _dec3(_class = _dec4(_class = function () {\n  RouteHref.inject = function inject() {\n    return [Router, DOM.Element];\n  };\n\n  function RouteHref(router, element) {\n    \n\n    this.router = router;\n    this.element = element;\n  }\n\n  RouteHref.prototype.bind = function bind() {\n    this.isActive = true;\n    this.processChange();\n  };\n\n  RouteHref.prototype.unbind = function unbind() {\n    this.isActive = false;\n  };\n\n  RouteHref.prototype.attributeChanged = function attributeChanged(value, previous) {\n    if (previous) {\n      this.element.removeAttribute(previous);\n    }\n\n    this.processChange();\n  };\n\n  RouteHref.prototype.processChange = function processChange() {\n    var _this = this;\n\n    return this.router.ensureConfigured().then(function () {\n      if (!_this.isActive) {\n        return null;\n      }\n\n      var href = _this.router.generate(_this.route, _this.params);\n\n      if (_this.element.au.controller) {\n        _this.element.au.controller.viewModel[_this.attribute] = href;\n      } else {\n        _this.element.setAttribute(_this.attribute, href);\n      }\n\n      return null;\n    }).catch(function (reason) {\n      logger.error(reason);\n    });\n  };\n\n  return RouteHref;\n}()) || _class) || _class) || _class) || _class);","import { Router, AppRouter, RouteLoader } from 'aurelia-router';\nimport { TemplatingRouteLoader } from './route-loader';\nimport { RouterView } from './router-view';\nimport { RouteHref } from './route-href';\n\nfunction configure(config) {\n  config.singleton(RouteLoader, TemplatingRouteLoader).singleton(Router, AppRouter).globalResources(RouterView, RouteHref);\n\n  config.container.registerAlias(Router, AppRouter);\n}\n\nexport { TemplatingRouteLoader, RouterView, RouteHref, configure };","import { mergeSplice, ObserverLocator } from 'aurelia-binding';\nimport { BoundViewFactory, TargetInstruction, ViewSlot, ViewResources, ElementEvents } from 'aurelia-templating';\nimport { updateOverrideContext, createFullOverrideContext, ArrayRepeatStrategy, NullRepeatStrategy, viewsRequireLifecycle, getItemsSourceExpression, isOneTime, unwrapExpression, updateOneTimeBinding, AbstractRepeater } from 'aurelia-templating-resources';\nimport { DOM, PLATFORM } from 'aurelia-pal';\nimport { Container } from 'aurelia-dependency-injection';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\n\nvar rebindView = function (repeat, view, collectionIndex, collection) {\r\n    view.bindingContext[repeat.local] = collection[collectionIndex];\r\n    updateOverrideContext(view.overrideContext, collectionIndex, collection.length);\r\n};\r\nvar rebindAndMoveView = function (repeat, view, index, moveToBottom) {\r\n    var items = repeat.items;\r\n    var viewSlot = repeat.viewSlot;\r\n    updateOverrideContext(view.overrideContext, index, items.length);\r\n    view.bindingContext[repeat.local] = items[index];\r\n    if (moveToBottom) {\r\n        viewSlot.children.push(viewSlot.children.shift());\r\n        repeat.templateStrategy.moveViewLast(view, repeat.bottomBufferEl);\r\n    }\r\n    else {\r\n        viewSlot.children.unshift(viewSlot.children.splice(-1, 1)[0]);\r\n        repeat.templateStrategy.moveViewFirst(view, repeat.topBufferEl);\r\n    }\r\n};\r\nvar calcMinViewsRequired = function (scrollerHeight, itemHeight) {\r\n    return Math$floor(scrollerHeight / itemHeight) + 1;\r\n};\r\nvar Math$abs = Math.abs;\r\nvar Math$max = Math.max;\r\nvar Math$min = Math.min;\r\nvar Math$round = Math.round;\r\nvar Math$floor = Math.floor;\r\nvar $isNaN = isNaN;\n\nvar doc = document;\r\nvar htmlElement = doc.documentElement;\r\nvar $raf = requestAnimationFrame;\n\nvar getScrollerElement = function (element) {\r\n    var current = element.parentNode;\r\n    while (current !== null && current !== htmlElement) {\r\n        if (hasOverflowScroll(current)) {\r\n            return current;\r\n        }\r\n        current = current.parentNode;\r\n    }\r\n    return htmlElement;\r\n};\r\nvar getElementDistanceToTopOfDocument = function (element) {\r\n    var box = element.getBoundingClientRect();\r\n    var scrollTop = window.pageYOffset;\r\n    var clientTop = htmlElement.clientTop;\r\n    var top = box.top + scrollTop - clientTop;\r\n    return Math$round(top);\r\n};\r\nvar hasOverflowScroll = function (element) {\r\n    var style = window.getComputedStyle(element);\r\n    return style && (style.overflowY === 'scroll' || style.overflow === 'scroll' || style.overflowY === 'auto' || style.overflow === 'auto');\r\n};\r\nvar getStyleValues = function (element) {\r\n    var styles = [];\r\n    for (var _i = 1; _i < arguments.length; _i++) {\r\n        styles[_i - 1] = arguments[_i];\r\n    }\r\n    var currentStyle = window.getComputedStyle(element);\r\n    var value = 0;\r\n    var styleValue = 0;\r\n    for (var i = 0, ii = styles.length; ii > i; ++i) {\r\n        styleValue = parseFloat(currentStyle[styles[i]]);\r\n        value += $isNaN(styleValue) ? 0 : styleValue;\r\n    }\r\n    return value;\r\n};\r\nvar calcOuterHeight = function (element) {\r\n    var height = element.getBoundingClientRect().height;\r\n    height += getStyleValues(element, 'marginTop', 'marginBottom');\r\n    return height;\r\n};\r\nvar calcScrollHeight = function (element) {\r\n    var height = element.getBoundingClientRect().height;\r\n    height -= getStyleValues(element, 'borderTopWidth', 'borderBottomWidth');\r\n    return height;\r\n};\r\nvar insertBeforeNode = function (view, bottomBuffer) {\r\n    bottomBuffer.parentNode.insertBefore(view.lastChild, bottomBuffer);\r\n};\r\nvar getDistanceToParent = function (child, parent) {\r\n    var offsetParent = child.offsetParent;\r\n    var childOffsetTop = child.offsetTop;\r\n    if (offsetParent === null || offsetParent === parent) {\r\n        return childOffsetTop;\r\n    }\r\n    else {\r\n        if (offsetParent.contains(parent)) {\r\n            return childOffsetTop - parent.offsetTop;\r\n        }\r\n        else {\r\n            return childOffsetTop + getDistanceToParent(offsetParent, parent);\r\n        }\r\n    }\r\n};\n\nvar ArrayVirtualRepeatStrategy = (function (_super) {\r\n    __extends(ArrayVirtualRepeatStrategy, _super);\r\n    function ArrayVirtualRepeatStrategy() {\r\n        return _super !== null && _super.apply(this, arguments) || this;\r\n    }\r\n    ArrayVirtualRepeatStrategy.prototype.createFirstRow = function (repeat) {\r\n        var overrideContext = createFullOverrideContext(repeat, repeat.items[0], 0, 1);\r\n        return repeat.addView(overrideContext.bindingContext, overrideContext);\r\n    };\r\n    ArrayVirtualRepeatStrategy.prototype.initCalculation = function (repeat, items) {\r\n        var itemCount = items.length;\r\n        if (!(itemCount > 0)) {\r\n            return 1;\r\n        }\r\n        var scrollerInfo = repeat.getScrollerInfo();\r\n        var existingViewCount = repeat.viewCount();\r\n        if (itemCount > 0 && existingViewCount === 0) {\r\n            this.createFirstRow(repeat);\r\n        }\r\n        var firstView = repeat.firstView();\r\n        var itemHeight = calcOuterHeight(firstView.firstChild);\r\n        if (itemHeight === 0) {\r\n            return 0;\r\n        }\r\n        repeat.itemHeight = itemHeight;\r\n        var scroll_el_height = scrollerInfo.height;\r\n        var elementsInView = repeat.minViewsRequired = calcMinViewsRequired(scroll_el_height, itemHeight);\r\n        return 2 | 4;\r\n    };\r\n    ArrayVirtualRepeatStrategy.prototype.onAttached = function (repeat) {\r\n        if (repeat.items.length < repeat.minViewsRequired) {\r\n            repeat.getMore(0, true, this.isNearBottom(repeat, repeat.lastViewIndex()), true);\r\n        }\r\n    };\r\n    ArrayVirtualRepeatStrategy.prototype.getViewRange = function (repeat, scrollerInfo) {\r\n        var topBufferEl = repeat.topBufferEl;\r\n        var scrollerEl = repeat.scrollerEl;\r\n        var itemHeight = repeat.itemHeight;\r\n        var realScrollTop = 0;\r\n        var isFixedHeightContainer = scrollerInfo.scroller !== htmlElement;\r\n        if (isFixedHeightContainer) {\r\n            var topBufferDistance = getDistanceToParent(topBufferEl, scrollerEl);\r\n            var scrollerScrollTop = scrollerInfo.scrollTop;\r\n            realScrollTop = Math$max(0, scrollerScrollTop - Math$abs(topBufferDistance));\r\n        }\r\n        else {\r\n            realScrollTop = pageYOffset - repeat.distanceToTop;\r\n        }\r\n        var realViewCount = repeat.minViewsRequired * 2;\r\n        var firstVisibleIndex = Math$max(0, itemHeight > 0 ? Math$floor(realScrollTop / itemHeight) : 0);\r\n        var lastVisibleIndex = Math$min(repeat.items.length - 1, firstVisibleIndex + (realViewCount - 1));\r\n        firstVisibleIndex = Math$max(0, Math$min(firstVisibleIndex, lastVisibleIndex - (realViewCount - 1)));\r\n        return [firstVisibleIndex, lastVisibleIndex];\r\n    };\r\n    ArrayVirtualRepeatStrategy.prototype.updateBuffers = function (repeat, firstIndex) {\r\n        var itemHeight = repeat.itemHeight;\r\n        var itemCount = repeat.items.length;\r\n        repeat.topBufferHeight = firstIndex * itemHeight;\r\n        repeat.bottomBufferHeight = (itemCount - firstIndex - repeat.viewCount()) * itemHeight;\r\n        repeat.updateBufferElements(true);\r\n    };\r\n    ArrayVirtualRepeatStrategy.prototype.isNearTop = function (repeat, firstIndex) {\r\n        var itemCount = repeat.items.length;\r\n        return itemCount > 0\r\n            ? firstIndex < repeat.edgeDistance\r\n            : false;\r\n    };\r\n    ArrayVirtualRepeatStrategy.prototype.isNearBottom = function (repeat, lastIndex) {\r\n        var itemCount = repeat.items.length;\r\n        return lastIndex === -1\r\n            ? true\r\n            : itemCount > 0\r\n                ? lastIndex > (itemCount - repeat.edgeDistance)\r\n                : false;\r\n    };\r\n    ArrayVirtualRepeatStrategy.prototype.instanceChanged = function (repeat, items, first) {\r\n        if (this._inPlaceProcessItems(repeat, items, first)) {\r\n            this._remeasure(repeat, repeat.itemHeight, repeat.minViewsRequired * 2, items.length, repeat.$first);\r\n        }\r\n    };\r\n    ArrayVirtualRepeatStrategy.prototype.instanceMutated = function (repeat, array, splices) {\r\n        this._standardProcessInstanceMutated(repeat, array, splices);\r\n    };\r\n    ArrayVirtualRepeatStrategy.prototype._inPlaceProcessItems = function ($repeat, items, firstIndex) {\r\n        var repeat = $repeat;\r\n        var currItemCount = items.length;\r\n        if (currItemCount === 0) {\r\n            repeat.removeAllViews(true, false);\r\n            repeat.resetCalculation();\r\n            repeat.__queuedSplices = repeat.__array = undefined;\r\n            return false;\r\n        }\r\n        var max_views_count = repeat.minViewsRequired * 2;\r\n        var realViewsCount = repeat.viewCount();\r\n        while (realViewsCount > currItemCount) {\r\n            realViewsCount--;\r\n            repeat.removeView(realViewsCount, true, false);\r\n        }\r\n        while (realViewsCount > max_views_count) {\r\n            realViewsCount--;\r\n            repeat.removeView(realViewsCount, true, false);\r\n        }\r\n        realViewsCount = Math$min(realViewsCount, max_views_count);\r\n        var local = repeat.local;\r\n        var lastIndex = currItemCount - 1;\r\n        if (firstIndex + realViewsCount > lastIndex) {\r\n            firstIndex = Math$max(0, currItemCount - realViewsCount);\r\n        }\r\n        repeat.$first = firstIndex;\r\n        for (var i = 0; i < realViewsCount; i++) {\r\n            var currIndex = i + firstIndex;\r\n            var view = repeat.view(i);\r\n            var last = currIndex === currItemCount - 1;\r\n            var middle = currIndex !== 0 && !last;\r\n            var bindingContext = view.bindingContext;\r\n            var overrideContext = view.overrideContext;\r\n            if (bindingContext[local] === items[currIndex]\r\n                && overrideContext.$index === currIndex\r\n                && overrideContext.$middle === middle\r\n                && overrideContext.$last === last) {\r\n                continue;\r\n            }\r\n            bindingContext[local] = items[currIndex];\r\n            overrideContext.$first = currIndex === 0;\r\n            overrideContext.$middle = middle;\r\n            overrideContext.$last = last;\r\n            overrideContext.$index = currIndex;\r\n            var odd = currIndex % 2 === 1;\r\n            overrideContext.$odd = odd;\r\n            overrideContext.$even = !odd;\r\n            repeat.updateBindings(view);\r\n        }\r\n        var minLength = Math$min(max_views_count, currItemCount);\r\n        for (var i = realViewsCount; i < minLength; i++) {\r\n            var overrideContext = createFullOverrideContext(repeat, items[i], i, currItemCount);\r\n            repeat.addView(overrideContext.bindingContext, overrideContext);\r\n        }\r\n        return true;\r\n    };\r\n    ArrayVirtualRepeatStrategy.prototype._standardProcessInstanceMutated = function ($repeat, array, splices) {\r\n        var _this = this;\r\n        var repeat = $repeat;\r\n        if (repeat.__queuedSplices) {\r\n            for (var i = 0, ii = splices.length; i < ii; ++i) {\r\n                var _a = splices[i], index = _a.index, removed = _a.removed, addedCount = _a.addedCount;\r\n                mergeSplice(repeat.__queuedSplices, index, removed, addedCount);\r\n            }\r\n            repeat.__array = array.slice(0);\r\n            return;\r\n        }\r\n        if (array.length === 0) {\r\n            repeat.removeAllViews(true, false);\r\n            repeat.resetCalculation();\r\n            repeat.__queuedSplices = repeat.__array = undefined;\r\n            return;\r\n        }\r\n        var maybePromise = this._runSplices(repeat, array.slice(0), splices);\r\n        if (maybePromise instanceof Promise) {\r\n            var queuedSplices_1 = repeat.__queuedSplices = [];\r\n            var runQueuedSplices_1 = function () {\r\n                if (!queuedSplices_1.length) {\r\n                    repeat.__queuedSplices = repeat.__array = undefined;\r\n                    return;\r\n                }\r\n                var nextPromise = _this._runSplices(repeat, repeat.__array, queuedSplices_1) || Promise.resolve();\r\n                nextPromise.then(runQueuedSplices_1);\r\n            };\r\n            maybePromise.then(runQueuedSplices_1);\r\n        }\r\n    };\r\n    ArrayVirtualRepeatStrategy.prototype._runSplices = function (repeat, newArray, splices) {\r\n        var firstIndex = repeat.$first;\r\n        var totalRemovedCount = 0;\r\n        var totalAddedCount = 0;\r\n        var splice;\r\n        var i = 0;\r\n        var spliceCount = splices.length;\r\n        var newArraySize = newArray.length;\r\n        var allSplicesAreInplace = true;\r\n        for (i = 0; spliceCount > i; i++) {\r\n            splice = splices[i];\r\n            var removedCount = splice.removed.length;\r\n            var addedCount = splice.addedCount;\r\n            totalRemovedCount += removedCount;\r\n            totalAddedCount += addedCount;\r\n            if (removedCount !== addedCount) {\r\n                allSplicesAreInplace = false;\r\n            }\r\n        }\r\n        if (allSplicesAreInplace) {\r\n            var lastIndex = repeat.lastViewIndex();\r\n            var repeatViewSlot = repeat.viewSlot;\r\n            for (i = 0; spliceCount > i; i++) {\r\n                splice = splices[i];\r\n                for (var collectionIndex = splice.index; collectionIndex < splice.index + splice.addedCount; collectionIndex++) {\r\n                    if (collectionIndex >= firstIndex && collectionIndex <= lastIndex) {\r\n                        var viewIndex = collectionIndex - firstIndex;\r\n                        var overrideContext = createFullOverrideContext(repeat, newArray[collectionIndex], collectionIndex, newArraySize);\r\n                        repeat.removeView(viewIndex, true, true);\r\n                        repeat.insertView(viewIndex, overrideContext.bindingContext, overrideContext);\r\n                    }\r\n                }\r\n            }\r\n            return;\r\n        }\r\n        var firstIndexAfterMutation = firstIndex;\r\n        var itemHeight = repeat.itemHeight;\r\n        var originalSize = newArraySize + totalRemovedCount - totalAddedCount;\r\n        var currViewCount = repeat.viewCount();\r\n        var newViewCount = currViewCount;\r\n        if (originalSize === 0 && itemHeight === 0) {\r\n            repeat.resetCalculation();\r\n            repeat.itemsChanged();\r\n            return;\r\n        }\r\n        var all_splices_are_positive_and_before_view_port = totalRemovedCount === 0\r\n            && totalAddedCount > 0\r\n            && splices.every(function (splice) { return splice.index <= firstIndex; });\r\n        if (all_splices_are_positive_and_before_view_port) {\r\n            repeat.$first = firstIndex + totalAddedCount - 1;\r\n            repeat.topBufferHeight += totalAddedCount * itemHeight;\r\n            repeat.enableScroll();\r\n            var scrollerInfo = repeat.getScrollerInfo();\r\n            var scroller_scroll_top = scrollerInfo.scrollTop;\r\n            var top_buffer_distance = getDistanceToParent(repeat.topBufferEl, scrollerInfo.scroller);\r\n            var real_scroll_top = Math$max(0, scroller_scroll_top === 0\r\n                ? 0\r\n                : (scroller_scroll_top - top_buffer_distance));\r\n            var first_index_after_scroll_adjustment = real_scroll_top === 0\r\n                ? 0\r\n                : Math$floor(real_scroll_top / itemHeight);\r\n            if (scroller_scroll_top > top_buffer_distance\r\n                && first_index_after_scroll_adjustment === firstIndex) {\r\n                repeat.updateBufferElements(false);\r\n                repeat.scrollerEl.scrollTop = real_scroll_top + totalAddedCount * itemHeight;\r\n                this._remeasure(repeat, itemHeight, newViewCount, newArraySize, firstIndex);\r\n                return;\r\n            }\r\n        }\r\n        var lastViewIndex = repeat.lastViewIndex();\r\n        var all_splices_are_after_view_port = currViewCount > repeat.minViewsRequired\r\n            && splices.every(function (s) { return s.index > lastViewIndex; });\r\n        if (all_splices_are_after_view_port) {\r\n            repeat.bottomBufferHeight = Math$max(0, newArraySize - firstIndex - currViewCount) * itemHeight;\r\n            repeat.updateBufferElements(true);\r\n        }\r\n        else {\r\n            var viewsRequiredCount = repeat.minViewsRequired * 2;\r\n            if (viewsRequiredCount === 0) {\r\n                var scrollerInfo = repeat.getScrollerInfo();\r\n                var minViewsRequired = calcMinViewsRequired(scrollerInfo.height, itemHeight);\r\n                repeat.minViewsRequired = minViewsRequired;\r\n                viewsRequiredCount = minViewsRequired * 2;\r\n            }\r\n            for (i = 0; spliceCount > i; ++i) {\r\n                var _a = splices[i], addedCount = _a.addedCount, removedCount = _a.removed.length, spliceIndex = _a.index;\r\n                var removeDelta = removedCount - addedCount;\r\n                if (firstIndexAfterMutation > spliceIndex) {\r\n                    firstIndexAfterMutation = Math$max(0, firstIndexAfterMutation - removeDelta);\r\n                }\r\n            }\r\n            newViewCount = 0;\r\n            if (newArraySize <= repeat.minViewsRequired) {\r\n                firstIndexAfterMutation = 0;\r\n                newViewCount = newArraySize;\r\n            }\r\n            else {\r\n                if (newArraySize <= viewsRequiredCount) {\r\n                    newViewCount = newArraySize;\r\n                    firstIndexAfterMutation = 0;\r\n                }\r\n                else {\r\n                    newViewCount = viewsRequiredCount;\r\n                }\r\n            }\r\n            var newTopBufferItemCount = newArraySize >= firstIndexAfterMutation\r\n                ? firstIndexAfterMutation\r\n                : 0;\r\n            var viewCountDelta = newViewCount - currViewCount;\r\n            if (viewCountDelta > 0) {\r\n                for (i = 0; viewCountDelta > i; ++i) {\r\n                    var collectionIndex = firstIndexAfterMutation + currViewCount + i;\r\n                    var overrideContext = createFullOverrideContext(repeat, newArray[collectionIndex], collectionIndex, newArray.length);\r\n                    repeat.addView(overrideContext.bindingContext, overrideContext);\r\n                }\r\n            }\r\n            else {\r\n                var ii = Math$abs(viewCountDelta);\r\n                for (i = 0; ii > i; ++i) {\r\n                    repeat.removeView(newViewCount, true, false);\r\n                }\r\n            }\r\n            var newBotBufferItemCount = Math$max(0, newArraySize - newTopBufferItemCount - newViewCount);\r\n            repeat.$first = firstIndexAfterMutation;\r\n            repeat.topBufferHeight = newTopBufferItemCount * itemHeight;\r\n            repeat.bottomBufferHeight = newBotBufferItemCount * itemHeight;\r\n            repeat.updateBufferElements(true);\r\n        }\r\n        this._remeasure(repeat, itemHeight, newViewCount, newArraySize, firstIndexAfterMutation);\r\n    };\r\n    ArrayVirtualRepeatStrategy.prototype.updateAllViews = function (repeat, startIndex) {\r\n        var views = repeat.viewSlot.children;\r\n        var viewLength = views.length;\r\n        var collection = repeat.items;\r\n        var delta = Math$floor(repeat.topBufferHeight / repeat.itemHeight);\r\n        var collectionIndex = 0;\r\n        var view;\r\n        for (; viewLength > startIndex; ++startIndex) {\r\n            collectionIndex = startIndex + delta;\r\n            view = repeat.view(startIndex);\r\n            rebindView(repeat, view, collectionIndex, collection);\r\n            repeat.updateBindings(view);\r\n        }\r\n    };\r\n    ArrayVirtualRepeatStrategy.prototype.remeasure = function (repeat) {\r\n        this._remeasure(repeat, repeat.itemHeight, repeat.viewCount(), repeat.items.length, repeat.firstViewIndex());\r\n    };\r\n    ArrayVirtualRepeatStrategy.prototype._remeasure = function (repeat, itemHeight, newViewCount, newArraySize, firstIndex) {\r\n        var scrollerInfo = repeat.getScrollerInfo();\r\n        var scroller_scroll_top = scrollerInfo.scrollTop;\r\n        var top_buffer_distance = getDistanceToParent(repeat.topBufferEl, scrollerInfo.scroller);\r\n        var real_scroll_top = Math$max(0, scroller_scroll_top === 0\r\n            ? 0\r\n            : (scroller_scroll_top - top_buffer_distance));\r\n        var first_index_after_scroll_adjustment = real_scroll_top === 0\r\n            ? 0\r\n            : Math$floor(real_scroll_top / itemHeight);\r\n        if (first_index_after_scroll_adjustment + newViewCount >= newArraySize) {\r\n            first_index_after_scroll_adjustment = Math$max(0, newArraySize - newViewCount);\r\n        }\r\n        var top_buffer_item_count_after_scroll_adjustment = first_index_after_scroll_adjustment;\r\n        var bot_buffer_item_count_after_scroll_adjustment = Math$max(0, newArraySize - top_buffer_item_count_after_scroll_adjustment - newViewCount);\r\n        repeat.$first = first_index_after_scroll_adjustment;\r\n        repeat.topBufferHeight = top_buffer_item_count_after_scroll_adjustment * itemHeight;\r\n        repeat.bottomBufferHeight = bot_buffer_item_count_after_scroll_adjustment * itemHeight;\r\n        repeat._handlingMutations = false;\r\n        repeat.revertScrollCheckGuard();\r\n        repeat.updateBufferElements();\r\n        this.updateAllViews(repeat, 0);\r\n    };\r\n    return ArrayVirtualRepeatStrategy;\r\n}(ArrayRepeatStrategy));\n\nvar NullVirtualRepeatStrategy = (function (_super) {\r\n    __extends(NullVirtualRepeatStrategy, _super);\r\n    function NullVirtualRepeatStrategy() {\r\n        return _super !== null && _super.apply(this, arguments) || this;\r\n    }\r\n    NullVirtualRepeatStrategy.prototype.getViewRange = function (repeat, scrollerInfo) {\r\n        return [0, 0];\r\n    };\r\n    NullVirtualRepeatStrategy.prototype.updateBuffers = function (repeat, firstIndex) { };\r\n    NullVirtualRepeatStrategy.prototype.onAttached = function () { };\r\n    NullVirtualRepeatStrategy.prototype.isNearTop = function () {\r\n        return false;\r\n    };\r\n    NullVirtualRepeatStrategy.prototype.isNearBottom = function () {\r\n        return false;\r\n    };\r\n    NullVirtualRepeatStrategy.prototype.initCalculation = function (repeat, items) {\r\n        repeat.itemHeight\r\n            = repeat.minViewsRequired\r\n                = 0;\r\n        return 2;\r\n    };\r\n    NullVirtualRepeatStrategy.prototype.createFirstRow = function () {\r\n        return null;\r\n    };\r\n    NullVirtualRepeatStrategy.prototype.instanceMutated = function () { };\r\n    NullVirtualRepeatStrategy.prototype.instanceChanged = function (repeat) {\r\n        repeat.removeAllViews(true, false);\r\n        repeat.resetCalculation();\r\n    };\r\n    NullVirtualRepeatStrategy.prototype.remeasure = function (repeat) { };\r\n    NullVirtualRepeatStrategy.prototype.updateAllViews = function () { };\r\n    return NullVirtualRepeatStrategy;\r\n}(NullRepeatStrategy));\n\nvar VirtualRepeatStrategyLocator = (function () {\r\n    function VirtualRepeatStrategyLocator() {\r\n        this.matchers = [];\r\n        this.strategies = [];\r\n        this.addStrategy(function (items) { return items === null || items === undefined; }, new NullVirtualRepeatStrategy());\r\n        this.addStrategy(function (items) { return items instanceof Array; }, new ArrayVirtualRepeatStrategy());\r\n    }\r\n    VirtualRepeatStrategyLocator.prototype.addStrategy = function (matcher, strategy) {\r\n        this.matchers.push(matcher);\r\n        this.strategies.push(strategy);\r\n    };\r\n    VirtualRepeatStrategyLocator.prototype.getStrategy = function (items) {\r\n        var matchers = this.matchers;\r\n        for (var i = 0, ii = matchers.length; i < ii; ++i) {\r\n            if (matchers[i](items)) {\r\n                return this.strategies[i];\r\n            }\r\n        }\r\n        return null;\r\n    };\r\n    return VirtualRepeatStrategyLocator;\r\n}());\n\nvar DefaultTemplateStrategy = (function () {\r\n    function DefaultTemplateStrategy() {\r\n    }\r\n    DefaultTemplateStrategy.prototype.getScrollContainer = function (element) {\r\n        return getScrollerElement(element);\r\n    };\r\n    DefaultTemplateStrategy.prototype.moveViewFirst = function (view, topBuffer) {\r\n        insertBeforeNode(view, DOM.nextElementSibling(topBuffer));\r\n    };\r\n    DefaultTemplateStrategy.prototype.moveViewLast = function (view, bottomBuffer) {\r\n        var previousSibling = bottomBuffer.previousSibling;\r\n        var referenceNode = previousSibling.nodeType === 8 && previousSibling.data === 'anchor' ? previousSibling : bottomBuffer;\r\n        insertBeforeNode(view, referenceNode);\r\n    };\r\n    DefaultTemplateStrategy.prototype.createBuffers = function (element) {\r\n        var parent = element.parentNode;\r\n        return [\r\n            parent.insertBefore(DOM.createElement('div'), element),\r\n            parent.insertBefore(DOM.createElement('div'), element.nextSibling)\r\n        ];\r\n    };\r\n    DefaultTemplateStrategy.prototype.removeBuffers = function (el, topBuffer, bottomBuffer) {\r\n        var parent = el.parentNode;\r\n        parent.removeChild(topBuffer);\r\n        parent.removeChild(bottomBuffer);\r\n    };\r\n    DefaultTemplateStrategy.prototype.getFirstElement = function (topBuffer, bottomBuffer) {\r\n        var firstEl = topBuffer.nextElementSibling;\r\n        return firstEl === bottomBuffer ? null : firstEl;\r\n    };\r\n    DefaultTemplateStrategy.prototype.getLastElement = function (topBuffer, bottomBuffer) {\r\n        var lastEl = bottomBuffer.previousElementSibling;\r\n        return lastEl === topBuffer ? null : lastEl;\r\n    };\r\n    return DefaultTemplateStrategy;\r\n}());\n\nvar BaseTableTemplateStrategy = (function (_super) {\r\n    __extends(BaseTableTemplateStrategy, _super);\r\n    function BaseTableTemplateStrategy() {\r\n        return _super !== null && _super.apply(this, arguments) || this;\r\n    }\r\n    BaseTableTemplateStrategy.prototype.getScrollContainer = function (element) {\r\n        return getScrollerElement(this.getTable(element));\r\n    };\r\n    BaseTableTemplateStrategy.prototype.createBuffers = function (element) {\r\n        var parent = element.parentNode;\r\n        return [\r\n            parent.insertBefore(DOM.createElement('tr'), element),\r\n            parent.insertBefore(DOM.createElement('tr'), element.nextSibling)\r\n        ];\r\n    };\r\n    return BaseTableTemplateStrategy;\r\n}(DefaultTemplateStrategy));\r\nvar TableBodyStrategy = (function (_super) {\r\n    __extends(TableBodyStrategy, _super);\r\n    function TableBodyStrategy() {\r\n        return _super !== null && _super.apply(this, arguments) || this;\r\n    }\r\n    TableBodyStrategy.prototype.getTable = function (element) {\r\n        return element.parentNode;\r\n    };\r\n    return TableBodyStrategy;\r\n}(BaseTableTemplateStrategy));\r\nvar TableRowStrategy = (function (_super) {\r\n    __extends(TableRowStrategy, _super);\r\n    function TableRowStrategy() {\r\n        return _super !== null && _super.apply(this, arguments) || this;\r\n    }\r\n    TableRowStrategy.prototype.getTable = function (element) {\r\n        return element.parentNode.parentNode;\r\n    };\r\n    return TableRowStrategy;\r\n}(BaseTableTemplateStrategy));\n\nvar ListTemplateStrategy = (function (_super) {\r\n    __extends(ListTemplateStrategy, _super);\r\n    function ListTemplateStrategy() {\r\n        return _super !== null && _super.apply(this, arguments) || this;\r\n    }\r\n    ListTemplateStrategy.prototype.createBuffers = function (element) {\r\n        var parent = element.parentNode;\r\n        return [\r\n            parent.insertBefore(DOM.createElement('li'), element),\r\n            parent.insertBefore(DOM.createElement('li'), element.nextSibling)\r\n        ];\r\n    };\r\n    return ListTemplateStrategy;\r\n}(DefaultTemplateStrategy));\n\nvar TemplateStrategyLocator = (function () {\r\n    function TemplateStrategyLocator(container) {\r\n        this.container = container;\r\n    }\r\n    TemplateStrategyLocator.prototype.getStrategy = function (element) {\r\n        var parent = element.parentNode;\r\n        var container = this.container;\r\n        if (parent === null) {\r\n            return container.get(DefaultTemplateStrategy);\r\n        }\r\n        var parentTagName = parent.tagName;\r\n        if (parentTagName === 'TBODY' || parentTagName === 'THEAD' || parentTagName === 'TFOOT') {\r\n            return container.get(TableRowStrategy);\r\n        }\r\n        if (parentTagName === 'TABLE') {\r\n            return container.get(TableBodyStrategy);\r\n        }\r\n        if (parentTagName === 'OL' || parentTagName === 'UL') {\r\n            return container.get(ListTemplateStrategy);\r\n        }\r\n        return container.get(DefaultTemplateStrategy);\r\n    };\r\n    TemplateStrategyLocator.inject = [Container];\r\n    return TemplateStrategyLocator;\r\n}());\n\nvar VirtualizationEvents = Object.assign(Object.create(null), {\r\n    scrollerSizeChange: 'virtual-repeat-scroller-size-changed',\r\n    itemSizeChange: 'virtual-repeat-item-size-changed'\r\n});\n\nvar getResizeObserverClass = function () { return PLATFORM.global.ResizeObserver; };\n\nvar VirtualRepeat = (function (_super) {\r\n    __extends(VirtualRepeat, _super);\r\n    function VirtualRepeat(element, viewFactory, instruction, viewSlot, viewResources, observerLocator, collectionStrategyLocator, templateStrategyLocator) {\r\n        var _this = _super.call(this, {\r\n            local: 'item',\r\n            viewsRequireLifecycle: viewsRequireLifecycle(viewFactory)\r\n        }) || this;\r\n        _this.$first = 0;\r\n        _this._isAttached = false;\r\n        _this._ticking = false;\r\n        _this._calledGetMore = false;\r\n        _this._skipNextScrollHandle = false;\r\n        _this._handlingMutations = false;\r\n        _this._lastGetMore = 0;\r\n        _this.element = element;\r\n        _this.viewFactory = viewFactory;\r\n        _this.instruction = instruction;\r\n        _this.viewSlot = viewSlot;\r\n        _this.lookupFunctions = viewResources['lookupFunctions'];\r\n        _this.observerLocator = observerLocator;\r\n        _this.taskQueue = observerLocator.taskQueue;\r\n        _this.strategyLocator = collectionStrategyLocator;\r\n        _this.templateStrategyLocator = templateStrategyLocator;\r\n        _this.edgeDistance = 5;\r\n        _this.sourceExpression = getItemsSourceExpression(_this.instruction, 'virtual-repeat.for');\r\n        _this.isOneTime = isOneTime(_this.sourceExpression);\r\n        _this.topBufferHeight\r\n            = _this.bottomBufferHeight\r\n                = _this.itemHeight\r\n                    = _this.distanceToTop\r\n                        = 0;\r\n        _this.revertScrollCheckGuard = function () {\r\n            _this._ticking = false;\r\n        };\r\n        _this._onScroll = _this._onScroll.bind(_this);\r\n        return _this;\r\n    }\r\n    VirtualRepeat.inject = function () {\r\n        return [\r\n            DOM.Element,\r\n            BoundViewFactory,\r\n            TargetInstruction,\r\n            ViewSlot,\r\n            ViewResources,\r\n            ObserverLocator,\r\n            VirtualRepeatStrategyLocator,\r\n            TemplateStrategyLocator\r\n        ];\r\n    };\r\n    VirtualRepeat.$resource = function () {\r\n        return {\r\n            type: 'attribute',\r\n            name: 'virtual-repeat',\r\n            templateController: true,\r\n            bindables: ['items', 'local']\r\n        };\r\n    };\r\n    VirtualRepeat.prototype.bind = function (bindingContext, overrideContext) {\r\n        this.scope = { bindingContext: bindingContext, overrideContext: overrideContext };\r\n    };\r\n    VirtualRepeat.prototype.attached = function () {\r\n        var _this = this;\r\n        this._isAttached = true;\r\n        var element = this.element;\r\n        var templateStrategy = this.templateStrategy = this.templateStrategyLocator.getStrategy(element);\r\n        var scrollerEl = this.scrollerEl = templateStrategy.getScrollContainer(element);\r\n        var _a = templateStrategy.createBuffers(element), topBufferEl = _a[0], bottomBufferEl = _a[1];\r\n        var isFixedHeightContainer = scrollerEl !== htmlElement;\r\n        var scrollListener = this._onScroll;\r\n        this.topBufferEl = topBufferEl;\r\n        this.bottomBufferEl = bottomBufferEl;\r\n        this.itemsChanged();\r\n        this._currScrollerInfo = this.getScrollerInfo();\r\n        if (isFixedHeightContainer) {\r\n            scrollerEl.addEventListener('scroll', scrollListener);\r\n        }\r\n        else {\r\n            var firstElement = templateStrategy.getFirstElement(topBufferEl, bottomBufferEl);\r\n            this.distanceToTop = firstElement === null ? 0 : getElementDistanceToTopOfDocument(topBufferEl);\r\n            DOM.addEventListener('scroll', scrollListener, false);\r\n            this._calcDistanceToTopInterval = PLATFORM.global.setInterval(function () {\r\n                var prevDistanceToTop = _this.distanceToTop;\r\n                var currDistanceToTop = getElementDistanceToTopOfDocument(topBufferEl);\r\n                _this.distanceToTop = currDistanceToTop;\r\n                if (prevDistanceToTop !== currDistanceToTop) {\r\n                    var currentScrollerInfo = _this.getScrollerInfo();\r\n                    var prevScrollerInfo = _this._currScrollerInfo;\r\n                    _this._currScrollerInfo = currentScrollerInfo;\r\n                    _this._handleScroll(currentScrollerInfo, prevScrollerInfo);\r\n                }\r\n            }, 500);\r\n        }\r\n        this.strategy.onAttached(this);\r\n    };\r\n    VirtualRepeat.prototype.call = function (context, changes) {\r\n        this[context](this.items, changes);\r\n    };\r\n    VirtualRepeat.prototype.detached = function () {\r\n        var scrollCt = this.scrollerEl;\r\n        var scrollListener = this._onScroll;\r\n        if (hasOverflowScroll(scrollCt)) {\r\n            scrollCt.removeEventListener('scroll', scrollListener);\r\n        }\r\n        else {\r\n            DOM.removeEventListener('scroll', scrollListener, false);\r\n        }\r\n        this.unobserveScroller();\r\n        this._currScrollerContentRect = undefined;\r\n        this._isAttached\r\n            = false;\r\n        this._unsubscribeCollection();\r\n        this.resetCalculation();\r\n        this.templateStrategy.removeBuffers(this.element, this.topBufferEl, this.bottomBufferEl);\r\n        this.topBufferEl = this.bottomBufferEl = this.scrollerEl = null;\r\n        this.removeAllViews(true, false);\r\n        var $clearInterval = PLATFORM.global.clearInterval;\r\n        $clearInterval(this._calcDistanceToTopInterval);\r\n        $clearInterval(this._sizeInterval);\r\n        this.distanceToTop\r\n            = this._sizeInterval\r\n                = this._calcDistanceToTopInterval = 0;\r\n    };\r\n    VirtualRepeat.prototype.unbind = function () {\r\n        this.scope = null;\r\n        this.items = null;\r\n    };\r\n    VirtualRepeat.prototype.itemsChanged = function () {\r\n        var _this = this;\r\n        this._unsubscribeCollection();\r\n        if (!this.scope || !this._isAttached) {\r\n            return;\r\n        }\r\n        var items = this.items;\r\n        var strategy = this.strategy = this.strategyLocator.getStrategy(items);\r\n        if (strategy === null) {\r\n            throw new Error('Value is not iterateable for virtual repeat.');\r\n        }\r\n        if (!this.isOneTime && !this._observeInnerCollection()) {\r\n            this._observeCollection();\r\n        }\r\n        var calculationSignals = strategy.initCalculation(this, items);\r\n        strategy.instanceChanged(this, items, this.$first);\r\n        if (calculationSignals & 1) {\r\n            this.resetCalculation();\r\n        }\r\n        if ((calculationSignals & 2) === 0) {\r\n            var _a = PLATFORM.global, $setInterval = _a.setInterval, $clearInterval_1 = _a.clearInterval;\r\n            $clearInterval_1(this._sizeInterval);\r\n            this._sizeInterval = $setInterval(function () {\r\n                if (_this.items) {\r\n                    var firstView = _this.firstView() || _this.strategy.createFirstRow(_this);\r\n                    var newCalcSize = calcOuterHeight(firstView.firstChild);\r\n                    if (newCalcSize > 0) {\r\n                        $clearInterval_1(_this._sizeInterval);\r\n                        _this.itemsChanged();\r\n                    }\r\n                }\r\n                else {\r\n                    $clearInterval_1(_this._sizeInterval);\r\n                }\r\n            }, 500);\r\n        }\r\n        if (calculationSignals & 4) {\r\n            this.observeScroller(this.scrollerEl);\r\n        }\r\n    };\r\n    VirtualRepeat.prototype.handleCollectionMutated = function (collection, changes) {\r\n        if (this._ignoreMutation) {\r\n            return;\r\n        }\r\n        this._handlingMutations = true;\r\n        this.strategy.instanceMutated(this, collection, changes);\r\n    };\r\n    VirtualRepeat.prototype.handleInnerCollectionMutated = function (collection, changes) {\r\n        var _this = this;\r\n        if (this._ignoreMutation) {\r\n            return;\r\n        }\r\n        this._ignoreMutation = true;\r\n        var newItems = this.sourceExpression.evaluate(this.scope, this.lookupFunctions);\r\n        this.taskQueue.queueMicroTask(function () { return _this._ignoreMutation = false; });\r\n        if (newItems === this.items) {\r\n            this.itemsChanged();\r\n        }\r\n        else {\r\n            this.items = newItems;\r\n        }\r\n    };\r\n    VirtualRepeat.prototype.enableScroll = function () {\r\n        this._ticking = false;\r\n        this._handlingMutations = false;\r\n        this._skipNextScrollHandle = false;\r\n    };\r\n    VirtualRepeat.prototype.getScroller = function () {\r\n        return this.scrollerEl;\r\n    };\r\n    VirtualRepeat.prototype.getScrollerInfo = function () {\r\n        var scroller = this.scrollerEl;\r\n        return {\r\n            scroller: scroller,\r\n            scrollTop: scroller.scrollTop,\r\n            height: scroller === htmlElement\r\n                ? innerHeight\r\n                : calcScrollHeight(scroller)\r\n        };\r\n    };\r\n    VirtualRepeat.prototype.resetCalculation = function () {\r\n        this.$first\r\n            = this.topBufferHeight\r\n                = this.bottomBufferHeight\r\n                    = this.itemHeight\r\n                        = this.minViewsRequired = 0;\r\n        this._ignoreMutation\r\n            = this._handlingMutations\r\n                = this._ticking = false;\r\n        this.updateBufferElements(true);\r\n    };\r\n    VirtualRepeat.prototype._onScroll = function () {\r\n        var _this = this;\r\n        var isHandlingMutations = this._handlingMutations;\r\n        if (!this._ticking && !isHandlingMutations) {\r\n            var prevScrollerInfo_1 = this._currScrollerInfo;\r\n            var currentScrollerInfo_1 = this.getScrollerInfo();\r\n            this._currScrollerInfo = currentScrollerInfo_1;\r\n            this.taskQueue.queueMicroTask(function () {\r\n                _this._ticking = false;\r\n                _this._handleScroll(currentScrollerInfo_1, prevScrollerInfo_1);\r\n            });\r\n            this._ticking = true;\r\n        }\r\n        if (isHandlingMutations) {\r\n            this._handlingMutations = false;\r\n        }\r\n    };\r\n    VirtualRepeat.prototype._handleScroll = function (currentScrollerInfo, prevScrollerInfo) {\r\n        if (!this._isAttached) {\r\n            return;\r\n        }\r\n        if (this._skipNextScrollHandle) {\r\n            this._skipNextScrollHandle = false;\r\n            return;\r\n        }\r\n        var items = this.items;\r\n        if (!items) {\r\n            return;\r\n        }\r\n        var strategy = this.strategy;\r\n        var old_range_start_index = this.$first;\r\n        var old_range_end_index = this.lastViewIndex();\r\n        var _a = strategy.getViewRange(this, currentScrollerInfo), new_range_start_index = _a[0], new_range_end_index = _a[1];\r\n        var scrolling_state = new_range_start_index > old_range_start_index\r\n            ? 1\r\n            : new_range_start_index < old_range_start_index\r\n                ? 2\r\n                : 0;\r\n        var didMovedViews = 0;\r\n        if (new_range_start_index >= old_range_start_index && old_range_end_index === new_range_end_index\r\n            || new_range_end_index === old_range_end_index && old_range_end_index >= new_range_end_index) {\r\n            if (new_range_start_index >= old_range_start_index && old_range_end_index === new_range_end_index) {\r\n                if (strategy.isNearBottom(this, new_range_end_index)) {\r\n                    scrolling_state |= 8;\r\n                }\r\n            }\r\n            else if (strategy.isNearTop(this, new_range_start_index)) {\r\n                scrolling_state |= 4;\r\n            }\r\n        }\r\n        else {\r\n            if (new_range_start_index > old_range_start_index && old_range_end_index >= new_range_start_index && new_range_end_index >= old_range_end_index) {\r\n                var views_to_move_count = new_range_start_index - old_range_start_index;\r\n                this._moveViews(views_to_move_count, 1);\r\n                didMovedViews = 1;\r\n                if (strategy.isNearBottom(this, new_range_end_index)) {\r\n                    scrolling_state |= 8;\r\n                }\r\n            }\r\n            else if (old_range_start_index > new_range_start_index && old_range_start_index <= new_range_end_index && old_range_end_index >= new_range_end_index) {\r\n                var views_to_move_count = old_range_end_index - new_range_end_index;\r\n                this._moveViews(views_to_move_count, -1);\r\n                didMovedViews = 1;\r\n                if (strategy.isNearTop(this, new_range_start_index)) {\r\n                    scrolling_state |= 4;\r\n                }\r\n            }\r\n            else if (old_range_end_index < new_range_start_index || old_range_start_index > new_range_end_index) {\r\n                strategy.remeasure(this);\r\n                if (old_range_end_index < new_range_start_index) {\r\n                    if (strategy.isNearBottom(this, new_range_end_index)) {\r\n                        scrolling_state |= 8;\r\n                    }\r\n                }\r\n                else if (strategy.isNearTop(this, new_range_start_index)) {\r\n                    scrolling_state |= 4;\r\n                }\r\n            }\r\n            else {\r\n                console.warn('Scroll intersection not handled');\r\n                strategy.remeasure(this);\r\n            }\r\n        }\r\n        if (didMovedViews === 1) {\r\n            this.$first = new_range_start_index;\r\n            strategy.updateBuffers(this, new_range_start_index);\r\n        }\r\n        if ((scrolling_state & (1 | 8)) === (1 | 8)\r\n            || (scrolling_state & (2 | 4)) === (2 | 4)) {\r\n            this.getMore(new_range_start_index, (scrolling_state & 4) > 0, (scrolling_state & 8) > 0);\r\n        }\r\n    };\r\n    VirtualRepeat.prototype._moveViews = function (viewsCount, direction) {\r\n        var repeat = this;\r\n        if (direction === -1) {\r\n            var startIndex = repeat.firstViewIndex();\r\n            while (viewsCount--) {\r\n                var view = repeat.lastView();\r\n                rebindAndMoveView(repeat, view, --startIndex, false);\r\n            }\r\n        }\r\n        else {\r\n            var lastIndex = repeat.lastViewIndex();\r\n            while (viewsCount--) {\r\n                var view = repeat.view(0);\r\n                rebindAndMoveView(repeat, view, ++lastIndex, true);\r\n            }\r\n        }\r\n    };\r\n    VirtualRepeat.prototype.getMore = function (topIndex, isNearTop, isNearBottom, force) {\r\n        var _this = this;\r\n        if (isNearTop || isNearBottom || force) {\r\n            if (!this._calledGetMore) {\r\n                var executeGetMore = function (time) {\r\n                    if (time - _this._lastGetMore < 16) {\r\n                        return;\r\n                    }\r\n                    _this._lastGetMore = time;\r\n                    _this._calledGetMore = true;\r\n                    var revertCalledGetMore = function () {\r\n                        _this._calledGetMore = false;\r\n                    };\r\n                    var firstView = _this.firstView();\r\n                    if (firstView === null) {\r\n                        revertCalledGetMore();\r\n                        return;\r\n                    }\r\n                    var firstViewElement = firstView.firstChild;\r\n                    var scrollNextAttrName = 'infinite-scroll-next';\r\n                    var func = firstViewElement\r\n                        && firstViewElement.au\r\n                        && firstViewElement.au[scrollNextAttrName]\r\n                        ? firstViewElement.au[scrollNextAttrName].instruction.attributes[scrollNextAttrName]\r\n                        : undefined;\r\n                    if (func === undefined) {\r\n                        revertCalledGetMore();\r\n                    }\r\n                    else {\r\n                        var scrollContext = {\r\n                            topIndex: topIndex,\r\n                            isAtBottom: isNearBottom,\r\n                            isAtTop: isNearTop\r\n                        };\r\n                        var overrideContext = _this.scope.overrideContext;\r\n                        overrideContext.$scrollContext = scrollContext;\r\n                        if (typeof func === 'string') {\r\n                            var bindingContext = overrideContext.bindingContext;\r\n                            var getMoreFuncName = firstView.firstChild.getAttribute(scrollNextAttrName);\r\n                            var funcCall = bindingContext[getMoreFuncName];\r\n                            if (typeof funcCall === 'function') {\r\n                                revertCalledGetMore();\r\n                                var result = funcCall.call(bindingContext, topIndex, isNearBottom, isNearTop);\r\n                                if (result instanceof Promise) {\r\n                                    _this._calledGetMore = true;\r\n                                    return result.then(function () {\r\n                                        revertCalledGetMore();\r\n                                    });\r\n                                }\r\n                            }\r\n                            else {\r\n                                throw new Error(\"'\" + scrollNextAttrName + \"' must be a function or evaluate to one\");\r\n                            }\r\n                        }\r\n                        else if (func.sourceExpression) {\r\n                            revertCalledGetMore();\r\n                            return func.sourceExpression.evaluate(_this.scope);\r\n                        }\r\n                        else {\r\n                            throw new Error(\"'\" + scrollNextAttrName + \"' must be a function or evaluate to one\");\r\n                        }\r\n                    }\r\n                };\r\n                $raf(executeGetMore);\r\n            }\r\n        }\r\n    };\r\n    VirtualRepeat.prototype.updateBufferElements = function (skipUpdate) {\r\n        this.topBufferEl.style.height = this.topBufferHeight + \"px\";\r\n        this.bottomBufferEl.style.height = this.bottomBufferHeight + \"px\";\r\n        if (skipUpdate) {\r\n            this._ticking = true;\r\n            $raf(this.revertScrollCheckGuard);\r\n        }\r\n    };\r\n    VirtualRepeat.prototype._unsubscribeCollection = function () {\r\n        var collectionObserver = this.collectionObserver;\r\n        if (collectionObserver) {\r\n            collectionObserver.unsubscribe(this.callContext, this);\r\n            this.collectionObserver = this.callContext = null;\r\n        }\r\n    };\r\n    VirtualRepeat.prototype.firstView = function () {\r\n        return this.view(0);\r\n    };\r\n    VirtualRepeat.prototype.lastView = function () {\r\n        return this.view(this.viewCount() - 1);\r\n    };\r\n    VirtualRepeat.prototype.firstViewIndex = function () {\r\n        var firstView = this.firstView();\r\n        return firstView === null ? -1 : firstView.overrideContext.$index;\r\n    };\r\n    VirtualRepeat.prototype.lastViewIndex = function () {\r\n        var lastView = this.lastView();\r\n        return lastView === null ? -1 : lastView.overrideContext.$index;\r\n    };\r\n    VirtualRepeat.prototype.observeScroller = function (scrollerEl) {\r\n        var _this = this;\r\n        var sizeChangeHandler = function (newRect) {\r\n            $raf(function () {\r\n                if (newRect === _this._currScrollerContentRect) {\r\n                    _this.itemsChanged();\r\n                }\r\n            });\r\n        };\r\n        var ResizeObserverConstructor = getResizeObserverClass();\r\n        if (typeof ResizeObserverConstructor === 'function') {\r\n            var observer = this._scrollerResizeObserver;\r\n            if (observer) {\r\n                observer.disconnect();\r\n            }\r\n            observer = this._scrollerResizeObserver = new ResizeObserverConstructor(function (entries) {\r\n                var oldRect = _this._currScrollerContentRect;\r\n                var newRect = entries[0].contentRect;\r\n                _this._currScrollerContentRect = newRect;\r\n                if (oldRect === undefined || newRect.height !== oldRect.height || newRect.width !== oldRect.width) {\r\n                    sizeChangeHandler(newRect);\r\n                }\r\n            });\r\n            observer.observe(scrollerEl);\r\n        }\r\n        var elEvents = this._scrollerEvents;\r\n        if (elEvents) {\r\n            elEvents.disposeAll();\r\n        }\r\n        var sizeChangeEventsHandler = function () {\r\n            $raf(function () {\r\n                _this.itemsChanged();\r\n            });\r\n        };\r\n        elEvents = this._scrollerEvents = new ElementEvents(scrollerEl);\r\n        elEvents.subscribe(VirtualizationEvents.scrollerSizeChange, sizeChangeEventsHandler, false);\r\n        elEvents.subscribe(VirtualizationEvents.itemSizeChange, sizeChangeEventsHandler, false);\r\n    };\r\n    VirtualRepeat.prototype.unobserveScroller = function () {\r\n        var observer = this._scrollerResizeObserver;\r\n        if (observer) {\r\n            observer.disconnect();\r\n        }\r\n        var scrollerEvents = this._scrollerEvents;\r\n        if (scrollerEvents) {\r\n            scrollerEvents.disposeAll();\r\n        }\r\n        this._scrollerResizeObserver\r\n            = this._scrollerEvents = undefined;\r\n    };\r\n    VirtualRepeat.prototype._observeInnerCollection = function () {\r\n        var items = this._getInnerCollection();\r\n        var strategy = this.strategyLocator.getStrategy(items);\r\n        if (!strategy) {\r\n            return false;\r\n        }\r\n        var collectionObserver = strategy.getCollectionObserver(this.observerLocator, items);\r\n        if (!collectionObserver) {\r\n            return false;\r\n        }\r\n        var context = \"handleInnerCollectionMutated\";\r\n        this.collectionObserver = collectionObserver;\r\n        this.callContext = context;\r\n        collectionObserver.subscribe(context, this);\r\n        return true;\r\n    };\r\n    VirtualRepeat.prototype._getInnerCollection = function () {\r\n        var expression = unwrapExpression(this.sourceExpression);\r\n        if (!expression) {\r\n            return null;\r\n        }\r\n        return expression.evaluate(this.scope, null);\r\n    };\r\n    VirtualRepeat.prototype._observeCollection = function () {\r\n        var collectionObserver = this.strategy.getCollectionObserver(this.observerLocator, this.items);\r\n        if (collectionObserver) {\r\n            this.callContext = \"handleCollectionMutated\";\r\n            this.collectionObserver = collectionObserver;\r\n            collectionObserver.subscribe(this.callContext, this);\r\n        }\r\n    };\r\n    VirtualRepeat.prototype.viewCount = function () {\r\n        return this.viewSlot.children.length;\r\n    };\r\n    VirtualRepeat.prototype.views = function () {\r\n        return this.viewSlot.children;\r\n    };\r\n    VirtualRepeat.prototype.view = function (index) {\r\n        var viewSlot = this.viewSlot;\r\n        return index < 0 || index > viewSlot.children.length - 1 ? null : viewSlot.children[index];\r\n    };\r\n    VirtualRepeat.prototype.addView = function (bindingContext, overrideContext) {\r\n        var view = this.viewFactory.create();\r\n        view.bind(bindingContext, overrideContext);\r\n        this.viewSlot.add(view);\r\n        return view;\r\n    };\r\n    VirtualRepeat.prototype.insertView = function (index, bindingContext, overrideContext) {\r\n        var view = this.viewFactory.create();\r\n        view.bind(bindingContext, overrideContext);\r\n        this.viewSlot.insert(index, view);\r\n    };\r\n    VirtualRepeat.prototype.removeAllViews = function (returnToCache, skipAnimation) {\r\n        return this.viewSlot.removeAll(returnToCache, skipAnimation);\r\n    };\r\n    VirtualRepeat.prototype.removeView = function (index, returnToCache, skipAnimation) {\r\n        return this.viewSlot.removeAt(index, returnToCache, skipAnimation);\r\n    };\r\n    VirtualRepeat.prototype.updateBindings = function (view) {\r\n        var bindings = view.bindings;\r\n        var j = bindings.length;\r\n        while (j--) {\r\n            updateOneTimeBinding(bindings[j]);\r\n        }\r\n        var controllers = view.controllers;\r\n        j = controllers.length;\r\n        while (j--) {\r\n            var boundProperties = controllers[j].boundProperties;\r\n            var k = boundProperties.length;\r\n            while (k--) {\r\n                var binding = boundProperties[k].binding;\r\n                updateOneTimeBinding(binding);\r\n            }\r\n        }\r\n    };\r\n    return VirtualRepeat;\r\n}(AbstractRepeater));\n\nvar InfiniteScrollNext = (function () {\r\n    function InfiniteScrollNext() {\r\n    }\r\n    InfiniteScrollNext.$resource = function () {\r\n        return {\r\n            type: 'attribute',\r\n            name: 'infinite-scroll-next'\r\n        };\r\n    };\r\n    return InfiniteScrollNext;\r\n}());\n\nfunction configure(config) {\r\n    config.globalResources(VirtualRepeat, InfiniteScrollNext);\r\n}\n\nexport { configure, VirtualRepeat, InfiniteScrollNext, VirtualizationEvents };\n","import { DOM } from 'aurelia-pal';\nimport { AccessMember, AccessScope, AccessKeyed, BindingBehavior, ValueConverter, getContextFor, Parser, bindingBehavior, bindingMode, LiteralString, Binary, Conditional, LiteralPrimitive, CallMember } from 'aurelia-binding';\nimport { Optional, Lazy } from 'aurelia-dependency-injection';\nimport { TaskQueue } from 'aurelia-task-queue';\nimport { customAttribute, bindable, BindingLanguage, ViewResources } from 'aurelia-templating';\nimport { customAttribute as customAttribute$1 } from 'aurelia-framework';\nimport { getLogger } from 'aurelia-logging';\n\n/**\r\n * Gets the DOM element associated with the data-binding. Most of the time it's\r\n * the binding.target but sometimes binding.target is an aurelia custom element,\r\n * or custom attribute which is a javascript \"class\" instance, so we need to use\r\n * the controller's container to retrieve the actual DOM element.\r\n */\r\nfunction getTargetDOMElement(binding, view) {\r\n    var target = binding.target;\r\n    // DOM element\r\n    if (target instanceof Element) {\r\n        return target;\r\n    }\r\n    // custom element or custom attribute\r\n    // tslint:disable-next-line:prefer-const\r\n    for (var i = 0, ii = view.controllers.length; i < ii; i++) {\r\n        var controller = view.controllers[i];\r\n        if (controller.viewModel === target) {\r\n            var element = controller.container.get(DOM.Element);\r\n            if (element) {\r\n                return element;\r\n            }\r\n            throw new Error(\"Unable to locate target element for \\\"\" + binding.sourceExpression + \"\\\".\");\r\n        }\r\n    }\r\n    throw new Error(\"Unable to locate target element for \\\"\" + binding.sourceExpression + \"\\\".\");\r\n}\n\nfunction getObject(expression, objectExpression, source) {\r\n    var value = objectExpression.evaluate(source, null);\r\n    if (value === null || value === undefined || value instanceof Object) {\r\n        return value;\r\n    }\r\n    // tslint:disable-next-line:max-line-length\r\n    throw new Error(\"The '\" + objectExpression + \"' part of '\" + expression + \"' evaluates to \" + value + \" instead of an object, null or undefined.\");\r\n}\r\n/**\r\n * Retrieves the object and property name for the specified expression.\r\n * @param expression The expression\r\n * @param source The scope\r\n */\r\nfunction getPropertyInfo(expression, source) {\r\n    var originalExpression = expression;\r\n    while (expression instanceof BindingBehavior || expression instanceof ValueConverter) {\r\n        expression = expression.expression;\r\n    }\r\n    var object;\r\n    var propertyName;\r\n    if (expression instanceof AccessScope) {\r\n        object = getContextFor(expression.name, source, expression.ancestor);\r\n        propertyName = expression.name;\r\n    }\r\n    else if (expression instanceof AccessMember) {\r\n        object = getObject(originalExpression, expression.object, source);\r\n        propertyName = expression.name;\r\n    }\r\n    else if (expression instanceof AccessKeyed) {\r\n        object = getObject(originalExpression, expression.object, source);\r\n        propertyName = expression.key.evaluate(source);\r\n    }\r\n    else {\r\n        throw new Error(\"Expression '\" + originalExpression + \"' is not compatible with the validate binding-behavior.\");\r\n    }\r\n    if (object === null || object === undefined) {\r\n        return null;\r\n    }\r\n    return { object: object, propertyName: propertyName };\r\n}\n\nfunction isString(value) {\r\n    return Object.prototype.toString.call(value) === '[object String]';\r\n}\r\nfunction isNumber(value) {\r\n    return Object.prototype.toString.call(value) === '[object Number]';\r\n}\n\nvar PropertyAccessorParser = /** @class */ (function () {\r\n    function PropertyAccessorParser(parser) {\r\n        this.parser = parser;\r\n    }\r\n    PropertyAccessorParser.prototype.parse = function (property) {\r\n        if (isString(property) || isNumber(property)) {\r\n            return property;\r\n        }\r\n        var accessorText = getAccessorExpression(property.toString());\r\n        var accessor = this.parser.parse(accessorText);\r\n        if (accessor instanceof AccessScope\r\n            || accessor instanceof AccessMember && accessor.object instanceof AccessScope) {\r\n            return accessor.name;\r\n        }\r\n        throw new Error(\"Invalid property expression: \\\"\" + accessor + \"\\\"\");\r\n    };\r\n    PropertyAccessorParser.inject = [Parser];\r\n    return PropertyAccessorParser;\r\n}());\r\nfunction getAccessorExpression(fn) {\r\n    /* tslint:disable:max-line-length */\r\n    var classic = /^function\\s*\\([$_\\w\\d]+\\)\\s*\\{(?:\\s*\"use strict\";)?\\s*(?:[$_\\w\\d.['\"\\]+;]+)?\\s*return\\s+[$_\\w\\d]+\\.([$_\\w\\d]+)\\s*;?\\s*\\}$/;\r\n    /* tslint:enable:max-line-length */\r\n    var arrow = /^\\(?[$_\\w\\d]+\\)?\\s*=>\\s*[$_\\w\\d]+\\.([$_\\w\\d]+)$/;\r\n    var match = classic.exec(fn) || arrow.exec(fn);\r\n    if (match === null) {\r\n        throw new Error(\"Unable to parse accessor function:\\n\" + fn);\r\n    }\r\n    return match[1];\r\n}\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\n\n/**\r\n * Validation triggers.\r\n */\r\nvar validateTrigger;\r\n(function (validateTrigger) {\r\n    /**\r\n     * Manual validation.  Use the controller's `validate()` and  `reset()` methods\r\n     * to validate all bindings.\r\n     */\r\n    validateTrigger[validateTrigger[\"manual\"] = 0] = \"manual\";\r\n    /**\r\n     * Validate the binding when the binding's target element fires a DOM \"blur\" event.\r\n     */\r\n    validateTrigger[validateTrigger[\"blur\"] = 1] = \"blur\";\r\n    /**\r\n     * Validate the binding when it updates the model due to a change in the view.\r\n     */\r\n    validateTrigger[validateTrigger[\"change\"] = 2] = \"change\";\r\n    /**\r\n     * Validate the binding when the binding's target element fires a DOM \"blur\" event and\r\n     * when it updates the model due to a change in the view.\r\n     */\r\n    validateTrigger[validateTrigger[\"changeOrBlur\"] = 3] = \"changeOrBlur\";\r\n})(validateTrigger || (validateTrigger = {}));\n\n/**\r\n * Validates objects and properties.\r\n */\r\nvar Validator = /** @class */ (function () {\r\n    function Validator() {\r\n    }\r\n    return Validator;\r\n}());\n\n/**\r\n * The result of validating an individual validation rule.\r\n */\r\nvar ValidateResult = /** @class */ (function () {\r\n    /**\r\n     * @param rule The rule associated with the result. Validator implementation specific.\r\n     * @param object The object that was validated.\r\n     * @param propertyName The name of the property that was validated.\r\n     * @param error The error, if the result is a validation error.\r\n     */\r\n    function ValidateResult(rule, object, propertyName, valid, message) {\r\n        if (message === void 0) { message = null; }\r\n        this.rule = rule;\r\n        this.object = object;\r\n        this.propertyName = propertyName;\r\n        this.valid = valid;\r\n        this.message = message;\r\n        this.id = ValidateResult.nextId++;\r\n    }\r\n    ValidateResult.prototype.toString = function () {\r\n        return this.valid ? 'Valid.' : this.message;\r\n    };\r\n    ValidateResult.nextId = 0;\r\n    return ValidateResult;\r\n}());\n\nvar ValidateEvent = /** @class */ (function () {\r\n    function ValidateEvent(\r\n    /**\r\n     * The type of validate event. Either \"validate\" or \"reset\".\r\n     */\r\n    type, \r\n    /**\r\n     * The controller's current array of errors. For an array containing both\r\n     * failed rules and passed rules, use the \"results\" property.\r\n     */\r\n    errors, \r\n    /**\r\n     * The controller's current array of validate results. This\r\n     * includes both passed rules and failed rules. For an array of only failed rules,\r\n     * use the \"errors\" property.\r\n     */\r\n    results, \r\n    /**\r\n     * The instruction passed to the \"validate\" or \"reset\" event. Will be null when\r\n     * the controller's validate/reset method was called with no instruction argument.\r\n     */\r\n    instruction, \r\n    /**\r\n     * In events with type === \"validate\", this property will contain the result\r\n     * of validating the instruction (see \"instruction\" property). Use the controllerValidateResult\r\n     * to access the validate results specific to the call to \"validate\"\r\n     * (as opposed to using the \"results\" and \"errors\" properties to access the controller's entire\r\n     * set of results/errors).\r\n     */\r\n    controllerValidateResult) {\r\n        this.type = type;\r\n        this.errors = errors;\r\n        this.results = results;\r\n        this.instruction = instruction;\r\n        this.controllerValidateResult = controllerValidateResult;\r\n    }\r\n    return ValidateEvent;\r\n}());\n\n/**\r\n * Orchestrates validation.\r\n * Manages a set of bindings, renderers and objects.\r\n * Exposes the current list of validation results for binding purposes.\r\n */\r\nvar ValidationController = /** @class */ (function () {\r\n    function ValidationController(validator, propertyParser) {\r\n        this.validator = validator;\r\n        this.propertyParser = propertyParser;\r\n        // Registered bindings (via the validate binding behavior)\r\n        this.bindings = new Map();\r\n        // Renderers that have been added to the controller instance.\r\n        this.renderers = [];\r\n        /**\r\n         * Validation results that have been rendered by the controller.\r\n         */\r\n        this.results = [];\r\n        /**\r\n         * Validation errors that have been rendered by the controller.\r\n         */\r\n        this.errors = [];\r\n        /**\r\n         *  Whether the controller is currently validating.\r\n         */\r\n        this.validating = false;\r\n        // Elements related to validation results that have been rendered.\r\n        this.elements = new Map();\r\n        // Objects that have been added to the controller instance (entity-style validation).\r\n        this.objects = new Map();\r\n        /**\r\n         * The trigger that will invoke automatic validation of a property used in a binding.\r\n         */\r\n        this.validateTrigger = validateTrigger.blur;\r\n        // Promise that resolves when validation has completed.\r\n        this.finishValidating = Promise.resolve();\r\n        this.eventCallbacks = [];\r\n    }\r\n    /**\r\n     * Subscribe to controller validate and reset events. These events occur when the\r\n     * controller's \"validate\"\" and \"reset\" methods are called.\r\n     * @param callback The callback to be invoked when the controller validates or resets.\r\n     */\r\n    ValidationController.prototype.subscribe = function (callback) {\r\n        var _this = this;\r\n        this.eventCallbacks.push(callback);\r\n        return {\r\n            dispose: function () {\r\n                var index = _this.eventCallbacks.indexOf(callback);\r\n                if (index === -1) {\r\n                    return;\r\n                }\r\n                _this.eventCallbacks.splice(index, 1);\r\n            }\r\n        };\r\n    };\r\n    /**\r\n     * Adds an object to the set of objects that should be validated when validate is called.\r\n     * @param object The object.\r\n     * @param rules Optional. The rules. If rules aren't supplied the Validator implementation will lookup the rules.\r\n     */\r\n    ValidationController.prototype.addObject = function (object, rules) {\r\n        this.objects.set(object, rules);\r\n    };\r\n    /**\r\n     * Removes an object from the set of objects that should be validated when validate is called.\r\n     * @param object The object.\r\n     */\r\n    ValidationController.prototype.removeObject = function (object) {\r\n        this.objects.delete(object);\r\n        this.processResultDelta('reset', this.results.filter(function (result) { return result.object === object; }), []);\r\n    };\r\n    /**\r\n     * Adds and renders an error.\r\n     */\r\n    ValidationController.prototype.addError = function (message, object, propertyName) {\r\n        if (propertyName === void 0) { propertyName = null; }\r\n        var resolvedPropertyName;\r\n        if (propertyName === null) {\r\n            resolvedPropertyName = propertyName;\r\n        }\r\n        else {\r\n            resolvedPropertyName = this.propertyParser.parse(propertyName);\r\n        }\r\n        var result = new ValidateResult({ __manuallyAdded__: true }, object, resolvedPropertyName, false, message);\r\n        this.processResultDelta('validate', [], [result]);\r\n        return result;\r\n    };\r\n    /**\r\n     * Removes and unrenders an error.\r\n     */\r\n    ValidationController.prototype.removeError = function (result) {\r\n        if (this.results.indexOf(result) !== -1) {\r\n            this.processResultDelta('reset', [result], []);\r\n        }\r\n    };\r\n    /**\r\n     * Adds a renderer.\r\n     * @param renderer The renderer.\r\n     */\r\n    ValidationController.prototype.addRenderer = function (renderer) {\r\n        var _this = this;\r\n        this.renderers.push(renderer);\r\n        renderer.render({\r\n            kind: 'validate',\r\n            render: this.results.map(function (result) { return ({ result: result, elements: _this.elements.get(result) }); }),\r\n            unrender: []\r\n        });\r\n    };\r\n    /**\r\n     * Removes a renderer.\r\n     * @param renderer The renderer.\r\n     */\r\n    ValidationController.prototype.removeRenderer = function (renderer) {\r\n        var _this = this;\r\n        this.renderers.splice(this.renderers.indexOf(renderer), 1);\r\n        renderer.render({\r\n            kind: 'reset',\r\n            render: [],\r\n            unrender: this.results.map(function (result) { return ({ result: result, elements: _this.elements.get(result) }); })\r\n        });\r\n    };\r\n    /**\r\n     * Registers a binding with the controller.\r\n     * @param binding The binding instance.\r\n     * @param target The DOM element.\r\n     * @param rules (optional) rules associated with the binding. Validator implementation specific.\r\n     */\r\n    ValidationController.prototype.registerBinding = function (binding, target, rules) {\r\n        this.bindings.set(binding, { target: target, rules: rules, propertyInfo: null });\r\n    };\r\n    /**\r\n     * Unregisters a binding with the controller.\r\n     * @param binding The binding instance.\r\n     */\r\n    ValidationController.prototype.unregisterBinding = function (binding) {\r\n        this.resetBinding(binding);\r\n        this.bindings.delete(binding);\r\n    };\r\n    /**\r\n     * Interprets the instruction and returns a predicate that will identify\r\n     * relevant results in the list of rendered validation results.\r\n     */\r\n    ValidationController.prototype.getInstructionPredicate = function (instruction) {\r\n        var _this = this;\r\n        if (instruction) {\r\n            var object_1 = instruction.object, propertyName_1 = instruction.propertyName, rules_1 = instruction.rules;\r\n            var predicate_1;\r\n            if (instruction.propertyName) {\r\n                predicate_1 = function (x) { return x.object === object_1 && x.propertyName === propertyName_1; };\r\n            }\r\n            else {\r\n                predicate_1 = function (x) { return x.object === object_1; };\r\n            }\r\n            if (rules_1) {\r\n                return function (x) { return predicate_1(x) && _this.validator.ruleExists(rules_1, x.rule); };\r\n            }\r\n            return predicate_1;\r\n        }\r\n        else {\r\n            return function () { return true; };\r\n        }\r\n    };\r\n    /**\r\n     * Validates and renders results.\r\n     * @param instruction Optional. Instructions on what to validate. If undefined, all\r\n     * objects and bindings will be validated.\r\n     */\r\n    ValidationController.prototype.validate = function (instruction) {\r\n        var _this = this;\r\n        // Get a function that will process the validation instruction.\r\n        var execute;\r\n        if (instruction) {\r\n            // tslint:disable-next-line:prefer-const\r\n            var object_2 = instruction.object, propertyName_2 = instruction.propertyName, rules_2 = instruction.rules;\r\n            // if rules were not specified, check the object map.\r\n            rules_2 = rules_2 || this.objects.get(object_2);\r\n            // property specified?\r\n            if (instruction.propertyName === undefined) {\r\n                // validate the specified object.\r\n                execute = function () { return _this.validator.validateObject(object_2, rules_2); };\r\n            }\r\n            else {\r\n                // validate the specified property.\r\n                execute = function () { return _this.validator.validateProperty(object_2, propertyName_2, rules_2); };\r\n            }\r\n        }\r\n        else {\r\n            // validate all objects and bindings.\r\n            execute = function () {\r\n                var promises = [];\r\n                for (var _i = 0, _a = Array.from(_this.objects); _i < _a.length; _i++) {\r\n                    var _b = _a[_i], object = _b[0], rules = _b[1];\r\n                    promises.push(_this.validator.validateObject(object, rules));\r\n                }\r\n                for (var _c = 0, _d = Array.from(_this.bindings); _c < _d.length; _c++) {\r\n                    var _e = _d[_c], binding = _e[0], rules = _e[1].rules;\r\n                    var propertyInfo = getPropertyInfo(binding.sourceExpression, binding.source);\r\n                    if (!propertyInfo || _this.objects.has(propertyInfo.object)) {\r\n                        continue;\r\n                    }\r\n                    promises.push(_this.validator.validateProperty(propertyInfo.object, propertyInfo.propertyName, rules));\r\n                }\r\n                return Promise.all(promises).then(function (resultSets) { return resultSets.reduce(function (a, b) { return a.concat(b); }, []); });\r\n            };\r\n        }\r\n        // Wait for any existing validation to finish, execute the instruction, render the results.\r\n        this.validating = true;\r\n        var returnPromise = this.finishValidating\r\n            .then(execute)\r\n            .then(function (newResults) {\r\n            var predicate = _this.getInstructionPredicate(instruction);\r\n            var oldResults = _this.results.filter(predicate);\r\n            _this.processResultDelta('validate', oldResults, newResults);\r\n            if (returnPromise === _this.finishValidating) {\r\n                _this.validating = false;\r\n            }\r\n            var result = {\r\n                instruction: instruction,\r\n                valid: newResults.find(function (x) { return !x.valid; }) === undefined,\r\n                results: newResults\r\n            };\r\n            _this.invokeCallbacks(instruction, result);\r\n            return result;\r\n        })\r\n            .catch(function (exception) {\r\n            // recover, to enable subsequent calls to validate()\r\n            _this.validating = false;\r\n            _this.finishValidating = Promise.resolve();\r\n            return Promise.reject(exception);\r\n        });\r\n        this.finishValidating = returnPromise;\r\n        return returnPromise;\r\n    };\r\n    /**\r\n     * Resets any rendered validation results (unrenders).\r\n     * @param instruction Optional. Instructions on what to reset. If unspecified all rendered results\r\n     * will be unrendered.\r\n     */\r\n    ValidationController.prototype.reset = function (instruction) {\r\n        var predicate = this.getInstructionPredicate(instruction);\r\n        var oldResults = this.results.filter(predicate);\r\n        this.processResultDelta('reset', oldResults, []);\r\n        this.invokeCallbacks(instruction, null);\r\n    };\r\n    /**\r\n     * Gets the elements associated with an object and propertyName (if any).\r\n     */\r\n    ValidationController.prototype.getAssociatedElements = function (_a) {\r\n        var object = _a.object, propertyName = _a.propertyName;\r\n        var elements = [];\r\n        for (var _i = 0, _b = Array.from(this.bindings); _i < _b.length; _i++) {\r\n            var _c = _b[_i], binding = _c[0], target = _c[1].target;\r\n            var propertyInfo = getPropertyInfo(binding.sourceExpression, binding.source);\r\n            if (propertyInfo && propertyInfo.object === object && propertyInfo.propertyName === propertyName) {\r\n                elements.push(target);\r\n            }\r\n        }\r\n        return elements;\r\n    };\r\n    ValidationController.prototype.processResultDelta = function (kind, oldResults, newResults) {\r\n        // prepare the instruction.\r\n        var instruction = {\r\n            kind: kind,\r\n            render: [],\r\n            unrender: []\r\n        };\r\n        // create a shallow copy of newResults so we can mutate it without causing side-effects.\r\n        newResults = newResults.slice(0);\r\n        var _loop_1 = function (oldResult) {\r\n            // get the elements associated with the old result.\r\n            var elements = this_1.elements.get(oldResult);\r\n            // remove the old result from the element map.\r\n            this_1.elements.delete(oldResult);\r\n            // create the unrender instruction.\r\n            instruction.unrender.push({ result: oldResult, elements: elements });\r\n            // determine if there's a corresponding new result for the old result we are unrendering.\r\n            var newResultIndex = newResults.findIndex(function (x) { return x.rule === oldResult.rule && x.object === oldResult.object && x.propertyName === oldResult.propertyName; });\r\n            if (newResultIndex === -1) {\r\n                // no corresponding new result... simple remove.\r\n                this_1.results.splice(this_1.results.indexOf(oldResult), 1);\r\n                if (!oldResult.valid) {\r\n                    this_1.errors.splice(this_1.errors.indexOf(oldResult), 1);\r\n                }\r\n            }\r\n            else {\r\n                // there is a corresponding new result...\r\n                var newResult = newResults.splice(newResultIndex, 1)[0];\r\n                // get the elements that are associated with the new result.\r\n                var elements_1 = this_1.getAssociatedElements(newResult);\r\n                this_1.elements.set(newResult, elements_1);\r\n                // create a render instruction for the new result.\r\n                instruction.render.push({ result: newResult, elements: elements_1 });\r\n                // do an in-place replacement of the old result with the new result.\r\n                // this ensures any repeats bound to this.results will not thrash.\r\n                this_1.results.splice(this_1.results.indexOf(oldResult), 1, newResult);\r\n                if (!oldResult.valid && newResult.valid) {\r\n                    this_1.errors.splice(this_1.errors.indexOf(oldResult), 1);\r\n                }\r\n                else if (!oldResult.valid && !newResult.valid) {\r\n                    this_1.errors.splice(this_1.errors.indexOf(oldResult), 1, newResult);\r\n                }\r\n                else if (!newResult.valid) {\r\n                    this_1.errors.push(newResult);\r\n                }\r\n            }\r\n        };\r\n        var this_1 = this;\r\n        // create unrender instructions from the old results.\r\n        for (var _i = 0, oldResults_1 = oldResults; _i < oldResults_1.length; _i++) {\r\n            var oldResult = oldResults_1[_i];\r\n            _loop_1(oldResult);\r\n        }\r\n        // create render instructions from the remaining new results.\r\n        for (var _a = 0, newResults_1 = newResults; _a < newResults_1.length; _a++) {\r\n            var result = newResults_1[_a];\r\n            var elements = this.getAssociatedElements(result);\r\n            instruction.render.push({ result: result, elements: elements });\r\n            this.elements.set(result, elements);\r\n            this.results.push(result);\r\n            if (!result.valid) {\r\n                this.errors.push(result);\r\n            }\r\n        }\r\n        // render.\r\n        for (var _b = 0, _c = this.renderers; _b < _c.length; _b++) {\r\n            var renderer = _c[_b];\r\n            renderer.render(instruction);\r\n        }\r\n    };\r\n    /**\r\n     * Validates the property associated with a binding.\r\n     */\r\n    ValidationController.prototype.validateBinding = function (binding) {\r\n        if (!binding.isBound) {\r\n            return;\r\n        }\r\n        var propertyInfo = getPropertyInfo(binding.sourceExpression, binding.source);\r\n        var rules;\r\n        var registeredBinding = this.bindings.get(binding);\r\n        if (registeredBinding) {\r\n            rules = registeredBinding.rules;\r\n            registeredBinding.propertyInfo = propertyInfo;\r\n        }\r\n        if (!propertyInfo) {\r\n            return;\r\n        }\r\n        var object = propertyInfo.object, propertyName = propertyInfo.propertyName;\r\n        this.validate({ object: object, propertyName: propertyName, rules: rules });\r\n    };\r\n    /**\r\n     * Resets the results for a property associated with a binding.\r\n     */\r\n    ValidationController.prototype.resetBinding = function (binding) {\r\n        var registeredBinding = this.bindings.get(binding);\r\n        var propertyInfo = getPropertyInfo(binding.sourceExpression, binding.source);\r\n        if (!propertyInfo && registeredBinding) {\r\n            propertyInfo = registeredBinding.propertyInfo;\r\n        }\r\n        if (registeredBinding) {\r\n            registeredBinding.propertyInfo = null;\r\n        }\r\n        if (!propertyInfo) {\r\n            return;\r\n        }\r\n        var object = propertyInfo.object, propertyName = propertyInfo.propertyName;\r\n        this.reset({ object: object, propertyName: propertyName });\r\n    };\r\n    /**\r\n     * Changes the controller's validateTrigger.\r\n     * @param newTrigger The new validateTrigger\r\n     */\r\n    ValidationController.prototype.changeTrigger = function (newTrigger) {\r\n        this.validateTrigger = newTrigger;\r\n        var bindings = Array.from(this.bindings.keys());\r\n        for (var _i = 0, bindings_1 = bindings; _i < bindings_1.length; _i++) {\r\n            var binding = bindings_1[_i];\r\n            var source = binding.source;\r\n            binding.unbind();\r\n            binding.bind(source);\r\n        }\r\n    };\r\n    /**\r\n     * Revalidates the controller's current set of errors.\r\n     */\r\n    ValidationController.prototype.revalidateErrors = function () {\r\n        for (var _i = 0, _a = this.errors; _i < _a.length; _i++) {\r\n            var _b = _a[_i], object = _b.object, propertyName = _b.propertyName, rule = _b.rule;\r\n            if (rule.__manuallyAdded__) {\r\n                continue;\r\n            }\r\n            var rules = [[rule]];\r\n            this.validate({ object: object, propertyName: propertyName, rules: rules });\r\n        }\r\n    };\r\n    ValidationController.prototype.invokeCallbacks = function (instruction, result) {\r\n        if (this.eventCallbacks.length === 0) {\r\n            return;\r\n        }\r\n        var event = new ValidateEvent(result ? 'validate' : 'reset', this.errors, this.results, instruction || null, result);\r\n        for (var i = 0; i < this.eventCallbacks.length; i++) {\r\n            this.eventCallbacks[i](event);\r\n        }\r\n    };\r\n    ValidationController.inject = [Validator, PropertyAccessorParser];\r\n    return ValidationController;\r\n}());\n\n/**\r\n * Binding behavior. Indicates the bound property should be validated.\r\n */\r\nvar ValidateBindingBehaviorBase = /** @class */ (function () {\r\n    function ValidateBindingBehaviorBase(taskQueue) {\r\n        this.taskQueue = taskQueue;\r\n    }\r\n    ValidateBindingBehaviorBase.prototype.bind = function (binding, source, rulesOrController, rules) {\r\n        var _this = this;\r\n        // identify the target element.\r\n        var target = getTargetDOMElement(binding, source);\r\n        // locate the controller.\r\n        var controller;\r\n        if (rulesOrController instanceof ValidationController) {\r\n            controller = rulesOrController;\r\n        }\r\n        else {\r\n            controller = source.container.get(Optional.of(ValidationController));\r\n            rules = rulesOrController;\r\n        }\r\n        if (controller === null) {\r\n            throw new Error(\"A ValidationController has not been registered.\");\r\n        }\r\n        controller.registerBinding(binding, target, rules);\r\n        binding.validationController = controller;\r\n        var trigger = this.getValidateTrigger(controller);\r\n        // tslint:disable-next-line:no-bitwise\r\n        if (trigger & validateTrigger.change) {\r\n            binding.vbbUpdateSource = binding.updateSource;\r\n            // tslint:disable-next-line:only-arrow-functions\r\n            // tslint:disable-next-line:space-before-function-paren\r\n            binding.updateSource = function (value) {\r\n                this.vbbUpdateSource(value);\r\n                this.validationController.validateBinding(this);\r\n            };\r\n        }\r\n        // tslint:disable-next-line:no-bitwise\r\n        if (trigger & validateTrigger.blur) {\r\n            binding.validateBlurHandler = function () {\r\n                _this.taskQueue.queueMicroTask(function () { return controller.validateBinding(binding); });\r\n            };\r\n            binding.validateTarget = target;\r\n            target.addEventListener('blur', binding.validateBlurHandler);\r\n        }\r\n        if (trigger !== validateTrigger.manual) {\r\n            binding.standardUpdateTarget = binding.updateTarget;\r\n            // tslint:disable-next-line:only-arrow-functions\r\n            // tslint:disable-next-line:space-before-function-paren\r\n            binding.updateTarget = function (value) {\r\n                this.standardUpdateTarget(value);\r\n                this.validationController.resetBinding(this);\r\n            };\r\n        }\r\n    };\r\n    ValidateBindingBehaviorBase.prototype.unbind = function (binding) {\r\n        // reset the binding to it's original state.\r\n        if (binding.vbbUpdateSource) {\r\n            binding.updateSource = binding.vbbUpdateSource;\r\n            binding.vbbUpdateSource = null;\r\n        }\r\n        if (binding.standardUpdateTarget) {\r\n            binding.updateTarget = binding.standardUpdateTarget;\r\n            binding.standardUpdateTarget = null;\r\n        }\r\n        if (binding.validateBlurHandler) {\r\n            binding.validateTarget.removeEventListener('blur', binding.validateBlurHandler);\r\n            binding.validateBlurHandler = null;\r\n            binding.validateTarget = null;\r\n        }\r\n        binding.validationController.unregisterBinding(binding);\r\n        binding.validationController = null;\r\n    };\r\n    return ValidateBindingBehaviorBase;\r\n}());\n\n/**\r\n * Binding behavior. Indicates the bound property should be validated\r\n * when the validate trigger specified by the associated controller's\r\n * validateTrigger property occurs.\r\n */\r\nvar ValidateBindingBehavior = /** @class */ (function (_super) {\r\n    __extends(ValidateBindingBehavior, _super);\r\n    function ValidateBindingBehavior() {\r\n        return _super !== null && _super.apply(this, arguments) || this;\r\n    }\r\n    ValidateBindingBehavior.prototype.getValidateTrigger = function (controller) {\r\n        return controller.validateTrigger;\r\n    };\r\n    ValidateBindingBehavior.inject = [TaskQueue];\r\n    ValidateBindingBehavior = __decorate([\r\n        bindingBehavior('validate')\r\n    ], ValidateBindingBehavior);\r\n    return ValidateBindingBehavior;\r\n}(ValidateBindingBehaviorBase));\r\n/**\r\n * Binding behavior. Indicates the bound property will be validated\r\n * manually, by calling controller.validate(). No automatic validation\r\n * triggered by data-entry or blur will occur.\r\n */\r\nvar ValidateManuallyBindingBehavior = /** @class */ (function (_super) {\r\n    __extends(ValidateManuallyBindingBehavior, _super);\r\n    function ValidateManuallyBindingBehavior() {\r\n        return _super !== null && _super.apply(this, arguments) || this;\r\n    }\r\n    ValidateManuallyBindingBehavior.prototype.getValidateTrigger = function () {\r\n        return validateTrigger.manual;\r\n    };\r\n    ValidateManuallyBindingBehavior.inject = [TaskQueue];\r\n    ValidateManuallyBindingBehavior = __decorate([\r\n        bindingBehavior('validateManually')\r\n    ], ValidateManuallyBindingBehavior);\r\n    return ValidateManuallyBindingBehavior;\r\n}(ValidateBindingBehaviorBase));\r\n/**\r\n * Binding behavior. Indicates the bound property should be validated\r\n * when the associated element blurs.\r\n */\r\nvar ValidateOnBlurBindingBehavior = /** @class */ (function (_super) {\r\n    __extends(ValidateOnBlurBindingBehavior, _super);\r\n    function ValidateOnBlurBindingBehavior() {\r\n        return _super !== null && _super.apply(this, arguments) || this;\r\n    }\r\n    ValidateOnBlurBindingBehavior.prototype.getValidateTrigger = function () {\r\n        return validateTrigger.blur;\r\n    };\r\n    ValidateOnBlurBindingBehavior.inject = [TaskQueue];\r\n    ValidateOnBlurBindingBehavior = __decorate([\r\n        bindingBehavior('validateOnBlur')\r\n    ], ValidateOnBlurBindingBehavior);\r\n    return ValidateOnBlurBindingBehavior;\r\n}(ValidateBindingBehaviorBase));\r\n/**\r\n * Binding behavior. Indicates the bound property should be validated\r\n * when the associated element is changed by the user, causing a change\r\n * to the model.\r\n */\r\nvar ValidateOnChangeBindingBehavior = /** @class */ (function (_super) {\r\n    __extends(ValidateOnChangeBindingBehavior, _super);\r\n    function ValidateOnChangeBindingBehavior() {\r\n        return _super !== null && _super.apply(this, arguments) || this;\r\n    }\r\n    ValidateOnChangeBindingBehavior.prototype.getValidateTrigger = function () {\r\n        return validateTrigger.change;\r\n    };\r\n    ValidateOnChangeBindingBehavior.inject = [TaskQueue];\r\n    ValidateOnChangeBindingBehavior = __decorate([\r\n        bindingBehavior('validateOnChange')\r\n    ], ValidateOnChangeBindingBehavior);\r\n    return ValidateOnChangeBindingBehavior;\r\n}(ValidateBindingBehaviorBase));\r\n/**\r\n * Binding behavior. Indicates the bound property should be validated\r\n * when the associated element blurs or is changed by the user, causing\r\n * a change to the model.\r\n */\r\nvar ValidateOnChangeOrBlurBindingBehavior = /** @class */ (function (_super) {\r\n    __extends(ValidateOnChangeOrBlurBindingBehavior, _super);\r\n    function ValidateOnChangeOrBlurBindingBehavior() {\r\n        return _super !== null && _super.apply(this, arguments) || this;\r\n    }\r\n    ValidateOnChangeOrBlurBindingBehavior.prototype.getValidateTrigger = function () {\r\n        return validateTrigger.changeOrBlur;\r\n    };\r\n    ValidateOnChangeOrBlurBindingBehavior.inject = [TaskQueue];\r\n    ValidateOnChangeOrBlurBindingBehavior = __decorate([\r\n        bindingBehavior('validateOnChangeOrBlur')\r\n    ], ValidateOnChangeOrBlurBindingBehavior);\r\n    return ValidateOnChangeOrBlurBindingBehavior;\r\n}(ValidateBindingBehaviorBase));\n\n/**\r\n * Creates ValidationController instances.\r\n */\r\nvar ValidationControllerFactory = /** @class */ (function () {\r\n    function ValidationControllerFactory(container) {\r\n        this.container = container;\r\n    }\r\n    ValidationControllerFactory.get = function (container) {\r\n        return new ValidationControllerFactory(container);\r\n    };\r\n    /**\r\n     * Creates a new controller instance.\r\n     */\r\n    ValidationControllerFactory.prototype.create = function (validator) {\r\n        if (!validator) {\r\n            validator = this.container.get(Validator);\r\n        }\r\n        var propertyParser = this.container.get(PropertyAccessorParser);\r\n        return new ValidationController(validator, propertyParser);\r\n    };\r\n    /**\r\n     * Creates a new controller and registers it in the current element's container so that it's\r\n     * available to the validate binding behavior and renderers.\r\n     */\r\n    ValidationControllerFactory.prototype.createForCurrentScope = function (validator) {\r\n        var controller = this.create(validator);\r\n        this.container.registerInstance(ValidationController, controller);\r\n        return controller;\r\n    };\r\n    return ValidationControllerFactory;\r\n}());\r\nValidationControllerFactory['protocol:aurelia:resolver'] = true;\n\nvar ValidationErrorsCustomAttribute = /** @class */ (function () {\r\n    function ValidationErrorsCustomAttribute(boundaryElement, controllerAccessor) {\r\n        this.boundaryElement = boundaryElement;\r\n        this.controllerAccessor = controllerAccessor;\r\n        this.controller = null;\r\n        this.errors = [];\r\n        this.errorsInternal = [];\r\n    }\r\n    ValidationErrorsCustomAttribute.inject = function () {\r\n        return [DOM.Element, Lazy.of(ValidationController)];\r\n    };\r\n    ValidationErrorsCustomAttribute.prototype.sort = function () {\r\n        this.errorsInternal.sort(function (a, b) {\r\n            if (a.targets[0] === b.targets[0]) {\r\n                return 0;\r\n            }\r\n            // tslint:disable-next-line:no-bitwise\r\n            return a.targets[0].compareDocumentPosition(b.targets[0]) & 2 ? 1 : -1;\r\n        });\r\n    };\r\n    ValidationErrorsCustomAttribute.prototype.interestingElements = function (elements) {\r\n        var _this = this;\r\n        return elements.filter(function (e) { return _this.boundaryElement.contains(e); });\r\n    };\r\n    ValidationErrorsCustomAttribute.prototype.render = function (instruction) {\r\n        var _loop_1 = function (result) {\r\n            var index = this_1.errorsInternal.findIndex(function (x) { return x.error === result; });\r\n            if (index !== -1) {\r\n                this_1.errorsInternal.splice(index, 1);\r\n            }\r\n        };\r\n        var this_1 = this;\r\n        for (var _i = 0, _a = instruction.unrender; _i < _a.length; _i++) {\r\n            var result = _a[_i].result;\r\n            _loop_1(result);\r\n        }\r\n        for (var _b = 0, _c = instruction.render; _b < _c.length; _b++) {\r\n            var _d = _c[_b], result = _d.result, elements = _d.elements;\r\n            if (result.valid) {\r\n                continue;\r\n            }\r\n            var targets = this.interestingElements(elements);\r\n            if (targets.length) {\r\n                this.errorsInternal.push({ error: result, targets: targets });\r\n            }\r\n        }\r\n        this.sort();\r\n        this.errors = this.errorsInternal;\r\n    };\r\n    ValidationErrorsCustomAttribute.prototype.bind = function () {\r\n        if (!this.controller) {\r\n            this.controller = this.controllerAccessor();\r\n        }\r\n        // this will call render() with the side-effect of updating this.errors\r\n        this.controller.addRenderer(this);\r\n    };\r\n    ValidationErrorsCustomAttribute.prototype.unbind = function () {\r\n        if (this.controller) {\r\n            this.controller.removeRenderer(this);\r\n        }\r\n    };\r\n    __decorate([\r\n        bindable({ defaultBindingMode: bindingMode.oneWay })\r\n    ], ValidationErrorsCustomAttribute.prototype, \"controller\", void 0);\r\n    __decorate([\r\n        bindable({ primaryProperty: true, defaultBindingMode: bindingMode.twoWay })\r\n    ], ValidationErrorsCustomAttribute.prototype, \"errors\", void 0);\r\n    ValidationErrorsCustomAttribute = __decorate([\r\n        customAttribute('validation-errors')\r\n    ], ValidationErrorsCustomAttribute);\r\n    return ValidationErrorsCustomAttribute;\r\n}());\n\nvar ValidationRendererCustomAttribute = /** @class */ (function () {\r\n    function ValidationRendererCustomAttribute() {\r\n    }\r\n    ValidationRendererCustomAttribute.prototype.created = function (view) {\r\n        this.container = view.container;\r\n    };\r\n    ValidationRendererCustomAttribute.prototype.bind = function () {\r\n        this.controller = this.container.get(ValidationController);\r\n        this.renderer = this.container.get(this.value);\r\n        this.controller.addRenderer(this.renderer);\r\n    };\r\n    ValidationRendererCustomAttribute.prototype.unbind = function () {\r\n        this.controller.removeRenderer(this.renderer);\r\n        this.controller = null;\r\n        this.renderer = null;\r\n    };\r\n    ValidationRendererCustomAttribute = __decorate([\r\n        customAttribute$1('validation-renderer')\r\n    ], ValidationRendererCustomAttribute);\r\n    return ValidationRendererCustomAttribute;\r\n}());\n\n/**\r\n * Sets, unsets and retrieves rules on an object or constructor function.\r\n */\r\nvar Rules = /** @class */ (function () {\r\n    function Rules() {\r\n    }\r\n    /**\r\n     * Applies the rules to a target.\r\n     */\r\n    Rules.set = function (target, rules) {\r\n        if (target instanceof Function) {\r\n            target = target.prototype;\r\n        }\r\n        Object.defineProperty(target, Rules.key, { enumerable: false, configurable: false, writable: true, value: rules });\r\n    };\r\n    /**\r\n     * Removes rules from a target.\r\n     */\r\n    Rules.unset = function (target) {\r\n        if (target instanceof Function) {\r\n            target = target.prototype;\r\n        }\r\n        target[Rules.key] = null;\r\n    };\r\n    /**\r\n     * Retrieves the target's rules.\r\n     */\r\n    Rules.get = function (target) {\r\n        return target[Rules.key] || null;\r\n    };\r\n    /**\r\n     * The name of the property that stores the rules.\r\n     */\r\n    Rules.key = '__rules__';\r\n    return Rules;\r\n}());\n\n// tslint:disable:no-empty\r\nvar ExpressionVisitor = /** @class */ (function () {\r\n    function ExpressionVisitor() {\r\n    }\r\n    ExpressionVisitor.prototype.visitChain = function (chain) {\r\n        this.visitArgs(chain.expressions);\r\n    };\r\n    ExpressionVisitor.prototype.visitBindingBehavior = function (behavior) {\r\n        behavior.expression.accept(this);\r\n        this.visitArgs(behavior.args);\r\n    };\r\n    ExpressionVisitor.prototype.visitValueConverter = function (converter) {\r\n        converter.expression.accept(this);\r\n        this.visitArgs(converter.args);\r\n    };\r\n    ExpressionVisitor.prototype.visitAssign = function (assign) {\r\n        assign.target.accept(this);\r\n        assign.value.accept(this);\r\n    };\r\n    ExpressionVisitor.prototype.visitConditional = function (conditional) {\r\n        conditional.condition.accept(this);\r\n        conditional.yes.accept(this);\r\n        conditional.no.accept(this);\r\n    };\r\n    ExpressionVisitor.prototype.visitAccessThis = function (access) {\r\n        access.ancestor = access.ancestor;\r\n    };\r\n    ExpressionVisitor.prototype.visitAccessScope = function (access) {\r\n        access.name = access.name;\r\n    };\r\n    ExpressionVisitor.prototype.visitAccessMember = function (access) {\r\n        access.object.accept(this);\r\n    };\r\n    ExpressionVisitor.prototype.visitAccessKeyed = function (access) {\r\n        access.object.accept(this);\r\n        access.key.accept(this);\r\n    };\r\n    ExpressionVisitor.prototype.visitCallScope = function (call) {\r\n        this.visitArgs(call.args);\r\n    };\r\n    ExpressionVisitor.prototype.visitCallFunction = function (call) {\r\n        call.func.accept(this);\r\n        this.visitArgs(call.args);\r\n    };\r\n    ExpressionVisitor.prototype.visitCallMember = function (call) {\r\n        call.object.accept(this);\r\n        this.visitArgs(call.args);\r\n    };\r\n    ExpressionVisitor.prototype.visitPrefix = function (prefix) {\r\n        prefix.expression.accept(this);\r\n    };\r\n    ExpressionVisitor.prototype.visitBinary = function (binary) {\r\n        binary.left.accept(this);\r\n        binary.right.accept(this);\r\n    };\r\n    ExpressionVisitor.prototype.visitLiteralPrimitive = function (literal) {\r\n        literal.value = literal.value;\r\n    };\r\n    ExpressionVisitor.prototype.visitLiteralArray = function (literal) {\r\n        this.visitArgs(literal.elements);\r\n    };\r\n    ExpressionVisitor.prototype.visitLiteralObject = function (literal) {\r\n        this.visitArgs(literal.values);\r\n    };\r\n    ExpressionVisitor.prototype.visitLiteralString = function (literal) {\r\n        literal.value = literal.value;\r\n    };\r\n    ExpressionVisitor.prototype.visitArgs = function (args) {\r\n        for (var i = 0; i < args.length; i++) {\r\n            args[i].accept(this);\r\n        }\r\n    };\r\n    return ExpressionVisitor;\r\n}());\n\nvar ValidationMessageParser = /** @class */ (function () {\r\n    function ValidationMessageParser(bindinqLanguage) {\r\n        this.bindinqLanguage = bindinqLanguage;\r\n        this.emptyStringExpression = new LiteralString('');\r\n        this.nullExpression = new LiteralPrimitive(null);\r\n        this.undefinedExpression = new LiteralPrimitive(undefined);\r\n        this.cache = {};\r\n    }\r\n    ValidationMessageParser.prototype.parse = function (message) {\r\n        if (this.cache[message] !== undefined) {\r\n            return this.cache[message];\r\n        }\r\n        var parts = this.bindinqLanguage.parseInterpolation(null, message);\r\n        if (parts === null) {\r\n            return new LiteralString(message);\r\n        }\r\n        var expression = new LiteralString(parts[0]);\r\n        for (var i = 1; i < parts.length; i += 2) {\r\n            expression = new Binary('+', expression, new Binary('+', this.coalesce(parts[i]), new LiteralString(parts[i + 1])));\r\n        }\r\n        MessageExpressionValidator.validate(expression, message);\r\n        this.cache[message] = expression;\r\n        return expression;\r\n    };\r\n    ValidationMessageParser.prototype.coalesce = function (part) {\r\n        // part === null || part === undefined ? '' : part\r\n        return new Conditional(new Binary('||', new Binary('===', part, this.nullExpression), new Binary('===', part, this.undefinedExpression)), this.emptyStringExpression, new CallMember(part, 'toString', []));\r\n    };\r\n    ValidationMessageParser.inject = [BindingLanguage];\r\n    return ValidationMessageParser;\r\n}());\r\nvar MessageExpressionValidator = /** @class */ (function (_super) {\r\n    __extends(MessageExpressionValidator, _super);\r\n    function MessageExpressionValidator(originalMessage) {\r\n        var _this = _super.call(this) || this;\r\n        _this.originalMessage = originalMessage;\r\n        return _this;\r\n    }\r\n    MessageExpressionValidator.validate = function (expression, originalMessage) {\r\n        var visitor = new MessageExpressionValidator(originalMessage);\r\n        expression.accept(visitor);\r\n    };\r\n    MessageExpressionValidator.prototype.visitAccessScope = function (access) {\r\n        if (access.ancestor !== 0) {\r\n            throw new Error('$parent is not permitted in validation message expressions.');\r\n        }\r\n        if (['displayName', 'propertyName', 'value', 'object', 'config', 'getDisplayName'].indexOf(access.name) !== -1) {\r\n            getLogger('aurelia-validation')\r\n                // tslint:disable-next-line:max-line-length\r\n                .warn(\"Did you mean to use \\\"$\" + access.name + \"\\\" instead of \\\"\" + access.name + \"\\\" in this validation message template: \\\"\" + this.originalMessage + \"\\\"?\");\r\n        }\r\n    };\r\n    return MessageExpressionValidator;\r\n}(ExpressionVisitor));\n\n/**\r\n * Dictionary of validation messages. [messageKey]: messageExpression\r\n */\r\nvar validationMessages = {\r\n    /**\r\n     * The default validation message. Used with rules that have no standard message.\r\n     */\r\n    default: \"${$displayName} is invalid.\",\r\n    required: \"${$displayName} is required.\",\r\n    matches: \"${$displayName} is not correctly formatted.\",\r\n    email: \"${$displayName} is not a valid email.\",\r\n    minLength: \"${$displayName} must be at least ${$config.length} character${$config.length === 1 ? '' : 's'}.\",\r\n    maxLength: \"${$displayName} cannot be longer than ${$config.length} character${$config.length === 1 ? '' : 's'}.\",\r\n    minItems: \"${$displayName} must contain at least ${$config.count} item${$config.count === 1 ? '' : 's'}.\",\r\n    maxItems: \"${$displayName} cannot contain more than ${$config.count} item${$config.count === 1 ? '' : 's'}.\",\r\n    equals: \"${$displayName} must be ${$config.expectedValue}.\",\r\n};\r\n/**\r\n * Retrieves validation messages and property display names.\r\n */\r\nvar ValidationMessageProvider = /** @class */ (function () {\r\n    function ValidationMessageProvider(parser) {\r\n        this.parser = parser;\r\n    }\r\n    /**\r\n     * Returns a message binding expression that corresponds to the key.\r\n     * @param key The message key.\r\n     */\r\n    ValidationMessageProvider.prototype.getMessage = function (key) {\r\n        var message;\r\n        if (key in validationMessages) {\r\n            message = validationMessages[key];\r\n        }\r\n        else {\r\n            message = validationMessages['default'];\r\n        }\r\n        return this.parser.parse(message);\r\n    };\r\n    /**\r\n     * Formulates a property display name using the property name and the configured\r\n     * displayName (if provided).\r\n     * Override this with your own custom logic.\r\n     * @param propertyName The property name.\r\n     */\r\n    ValidationMessageProvider.prototype.getDisplayName = function (propertyName, displayName) {\r\n        if (displayName !== null && displayName !== undefined) {\r\n            return (displayName instanceof Function) ? displayName() : displayName;\r\n        }\r\n        // split on upper-case letters.\r\n        var words = propertyName.toString().split(/(?=[A-Z])/).join(' ');\r\n        // capitalize first letter.\r\n        return words.charAt(0).toUpperCase() + words.slice(1);\r\n    };\r\n    ValidationMessageProvider.inject = [ValidationMessageParser];\r\n    return ValidationMessageProvider;\r\n}());\n\n/**\r\n * Validates.\r\n * Responsible for validating objects and properties.\r\n */\r\nvar StandardValidator = /** @class */ (function (_super) {\r\n    __extends(StandardValidator, _super);\r\n    function StandardValidator(messageProvider, resources) {\r\n        var _this = _super.call(this) || this;\r\n        _this.messageProvider = messageProvider;\r\n        _this.lookupFunctions = resources.lookupFunctions;\r\n        _this.getDisplayName = messageProvider.getDisplayName.bind(messageProvider);\r\n        return _this;\r\n    }\r\n    /**\r\n     * Validates the specified property.\r\n     * @param object The object to validate.\r\n     * @param propertyName The name of the property to validate.\r\n     * @param rules Optional. If unspecified, the rules will be looked up using the metadata\r\n     * for the object created by ValidationRules....on(class/object)\r\n     */\r\n    StandardValidator.prototype.validateProperty = function (object, propertyName, rules) {\r\n        return this.validate(object, propertyName, rules || null);\r\n    };\r\n    /**\r\n     * Validates all rules for specified object and it's properties.\r\n     * @param object The object to validate.\r\n     * @param rules Optional. If unspecified, the rules will be looked up using the metadata\r\n     * for the object created by ValidationRules....on(class/object)\r\n     */\r\n    StandardValidator.prototype.validateObject = function (object, rules) {\r\n        return this.validate(object, null, rules || null);\r\n    };\r\n    /**\r\n     * Determines whether a rule exists in a set of rules.\r\n     * @param rules The rules to search.\r\n     * @parem rule The rule to find.\r\n     */\r\n    StandardValidator.prototype.ruleExists = function (rules, rule) {\r\n        var i = rules.length;\r\n        while (i--) {\r\n            if (rules[i].indexOf(rule) !== -1) {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    };\r\n    StandardValidator.prototype.getMessage = function (rule, object, value) {\r\n        var expression = rule.message || this.messageProvider.getMessage(rule.messageKey);\r\n        // tslint:disable-next-line:prefer-const\r\n        var _a = rule.property, propertyName = _a.name, displayName = _a.displayName;\r\n        if (propertyName !== null) {\r\n            displayName = this.messageProvider.getDisplayName(propertyName, displayName);\r\n        }\r\n        var overrideContext = {\r\n            $displayName: displayName,\r\n            $propertyName: propertyName,\r\n            $value: value,\r\n            $object: object,\r\n            $config: rule.config,\r\n            // returns the name of a given property, given just the property name (irrespective of the property's displayName)\r\n            // split on capital letters, first letter ensured to be capitalized\r\n            $getDisplayName: this.getDisplayName\r\n        };\r\n        return expression.evaluate({ bindingContext: object, overrideContext: overrideContext }, this.lookupFunctions);\r\n    };\r\n    StandardValidator.prototype.validateRuleSequence = function (object, propertyName, ruleSequence, sequence, results) {\r\n        var _this = this;\r\n        // are we validating all properties or a single property?\r\n        var validateAllProperties = propertyName === null || propertyName === undefined;\r\n        var rules = ruleSequence[sequence];\r\n        var allValid = true;\r\n        // validate each rule.\r\n        var promises = [];\r\n        var _loop_1 = function (i) {\r\n            var rule = rules[i];\r\n            // is the rule related to the property we're validating.\r\n            // tslint:disable-next-line:triple-equals | Use loose equality for property keys\r\n            if (!validateAllProperties && rule.property.name != propertyName) {\r\n                return \"continue\";\r\n            }\r\n            // is this a conditional rule? is the condition met?\r\n            if (rule.when && !rule.when(object)) {\r\n                return \"continue\";\r\n            }\r\n            // validate.\r\n            var value = rule.property.name === null ? object : object[rule.property.name];\r\n            var promiseOrBoolean = rule.condition(value, object);\r\n            if (!(promiseOrBoolean instanceof Promise)) {\r\n                promiseOrBoolean = Promise.resolve(promiseOrBoolean);\r\n            }\r\n            promises.push(promiseOrBoolean.then(function (valid) {\r\n                var message = valid ? null : _this.getMessage(rule, object, value);\r\n                results.push(new ValidateResult(rule, object, rule.property.name, valid, message));\r\n                allValid = allValid && valid;\r\n                return valid;\r\n            }));\r\n        };\r\n        for (var i = 0; i < rules.length; i++) {\r\n            _loop_1(i);\r\n        }\r\n        return Promise.all(promises)\r\n            .then(function () {\r\n            sequence++;\r\n            if (allValid && sequence < ruleSequence.length) {\r\n                return _this.validateRuleSequence(object, propertyName, ruleSequence, sequence, results);\r\n            }\r\n            return results;\r\n        });\r\n    };\r\n    StandardValidator.prototype.validate = function (object, propertyName, rules) {\r\n        // rules specified?\r\n        if (!rules) {\r\n            // no. attempt to locate the rules.\r\n            rules = Rules.get(object);\r\n        }\r\n        // any rules?\r\n        if (!rules || rules.length === 0) {\r\n            return Promise.resolve([]);\r\n        }\r\n        return this.validateRuleSequence(object, propertyName, rules, 0, []);\r\n    };\r\n    StandardValidator.inject = [ValidationMessageProvider, ViewResources];\r\n    return StandardValidator;\r\n}(Validator));\n\n/**\r\n * Part of the fluent rule API. Enables customizing property rules.\r\n */\r\nvar FluentRuleCustomizer = /** @class */ (function () {\r\n    function FluentRuleCustomizer(property, condition, config, fluentEnsure, fluentRules, parsers) {\r\n        if (config === void 0) { config = {}; }\r\n        this.fluentEnsure = fluentEnsure;\r\n        this.fluentRules = fluentRules;\r\n        this.parsers = parsers;\r\n        this.rule = {\r\n            property: property,\r\n            condition: condition,\r\n            config: config,\r\n            when: null,\r\n            messageKey: 'default',\r\n            message: null,\r\n            sequence: fluentRules.sequence\r\n        };\r\n        this.fluentEnsure._addRule(this.rule);\r\n    }\r\n    /**\r\n     * Validate subsequent rules after previously declared rules have\r\n     * been validated successfully. Use to postpone validation of costly\r\n     * rules until less expensive rules pass validation.\r\n     */\r\n    FluentRuleCustomizer.prototype.then = function () {\r\n        this.fluentRules.sequence++;\r\n        return this;\r\n    };\r\n    /**\r\n     * Specifies the key to use when looking up the rule's validation message.\r\n     */\r\n    FluentRuleCustomizer.prototype.withMessageKey = function (key) {\r\n        this.rule.messageKey = key;\r\n        this.rule.message = null;\r\n        return this;\r\n    };\r\n    /**\r\n     * Specifies rule's validation message.\r\n     */\r\n    FluentRuleCustomizer.prototype.withMessage = function (message) {\r\n        this.rule.messageKey = 'custom';\r\n        this.rule.message = this.parsers.message.parse(message);\r\n        return this;\r\n    };\r\n    /**\r\n     * Specifies a condition that must be met before attempting to validate the rule.\r\n     * @param condition A function that accepts the object as a parameter and returns true\r\n     * or false whether the rule should be evaluated.\r\n     */\r\n    FluentRuleCustomizer.prototype.when = function (condition) {\r\n        this.rule.when = condition;\r\n        return this;\r\n    };\r\n    /**\r\n     * Tags the rule instance, enabling the rule to be found easily\r\n     * using ValidationRules.taggedRules(rules, tag)\r\n     */\r\n    FluentRuleCustomizer.prototype.tag = function (tag) {\r\n        this.rule.tag = tag;\r\n        return this;\r\n    };\r\n    ///// FluentEnsure APIs /////\r\n    /**\r\n     * Target a property with validation rules.\r\n     * @param property The property to target. Can be the property name or a property accessor function.\r\n     */\r\n    FluentRuleCustomizer.prototype.ensure = function (subject) {\r\n        return this.fluentEnsure.ensure(subject);\r\n    };\r\n    /**\r\n     * Targets an object with validation rules.\r\n     */\r\n    FluentRuleCustomizer.prototype.ensureObject = function () {\r\n        return this.fluentEnsure.ensureObject();\r\n    };\r\n    Object.defineProperty(FluentRuleCustomizer.prototype, \"rules\", {\r\n        /**\r\n         * Rules that have been defined using the fluent API.\r\n         */\r\n        get: function () {\r\n            return this.fluentEnsure.rules;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    /**\r\n     * Applies the rules to a class or object, making them discoverable by the StandardValidator.\r\n     * @param target A class or object.\r\n     */\r\n    FluentRuleCustomizer.prototype.on = function (target) {\r\n        return this.fluentEnsure.on(target);\r\n    };\r\n    ///////// FluentRules APIs /////////\r\n    /**\r\n     * Applies an ad-hoc rule function to the ensured property or object.\r\n     * @param condition The function to validate the rule.\r\n     * Will be called with two arguments, the property value and the object.\r\n     * Should return a boolean or a Promise that resolves to a boolean.\r\n     */\r\n    FluentRuleCustomizer.prototype.satisfies = function (condition, config) {\r\n        return this.fluentRules.satisfies(condition, config);\r\n    };\r\n    /**\r\n     * Applies a rule by name.\r\n     * @param name The name of the custom or standard rule.\r\n     * @param args The rule's arguments.\r\n     */\r\n    FluentRuleCustomizer.prototype.satisfiesRule = function (name) {\r\n        var args = [];\r\n        for (var _i = 1; _i < arguments.length; _i++) {\r\n            args[_i - 1] = arguments[_i];\r\n        }\r\n        var _a;\r\n        return (_a = this.fluentRules).satisfiesRule.apply(_a, [name].concat(args));\r\n    };\r\n    /**\r\n     * Applies the \"required\" rule to the property.\r\n     * The value cannot be null, undefined or whitespace.\r\n     */\r\n    FluentRuleCustomizer.prototype.required = function () {\r\n        return this.fluentRules.required();\r\n    };\r\n    /**\r\n     * Applies the \"matches\" rule to the property.\r\n     * Value must match the specified regular expression.\r\n     * null, undefined and empty-string values are considered valid.\r\n     */\r\n    FluentRuleCustomizer.prototype.matches = function (regex) {\r\n        return this.fluentRules.matches(regex);\r\n    };\r\n    /**\r\n     * Applies the \"email\" rule to the property.\r\n     * null, undefined and empty-string values are considered valid.\r\n     */\r\n    FluentRuleCustomizer.prototype.email = function () {\r\n        return this.fluentRules.email();\r\n    };\r\n    /**\r\n     * Applies the \"minLength\" STRING validation rule to the property.\r\n     * null, undefined and empty-string values are considered valid.\r\n     */\r\n    FluentRuleCustomizer.prototype.minLength = function (length) {\r\n        return this.fluentRules.minLength(length);\r\n    };\r\n    /**\r\n     * Applies the \"maxLength\" STRING validation rule to the property.\r\n     * null, undefined and empty-string values are considered valid.\r\n     */\r\n    FluentRuleCustomizer.prototype.maxLength = function (length) {\r\n        return this.fluentRules.maxLength(length);\r\n    };\r\n    /**\r\n     * Applies the \"minItems\" ARRAY validation rule to the property.\r\n     * null and undefined values are considered valid.\r\n     */\r\n    FluentRuleCustomizer.prototype.minItems = function (count) {\r\n        return this.fluentRules.minItems(count);\r\n    };\r\n    /**\r\n     * Applies the \"maxItems\" ARRAY validation rule to the property.\r\n     * null and undefined values are considered valid.\r\n     */\r\n    FluentRuleCustomizer.prototype.maxItems = function (count) {\r\n        return this.fluentRules.maxItems(count);\r\n    };\r\n    /**\r\n     * Applies the \"equals\" validation rule to the property.\r\n     * null, undefined and empty-string values are considered valid.\r\n     */\r\n    FluentRuleCustomizer.prototype.equals = function (expectedValue) {\r\n        return this.fluentRules.equals(expectedValue);\r\n    };\r\n    return FluentRuleCustomizer;\r\n}());\r\n/**\r\n * Part of the fluent rule API. Enables applying rules to properties and objects.\r\n */\r\nvar FluentRules = /** @class */ (function () {\r\n    function FluentRules(fluentEnsure, parsers, property) {\r\n        this.fluentEnsure = fluentEnsure;\r\n        this.parsers = parsers;\r\n        this.property = property;\r\n        /**\r\n         * Current rule sequence number. Used to postpone evaluation of rules until rules\r\n         * with lower sequence number have successfully validated. The \"then\" fluent API method\r\n         * manages this property, there's usually no need to set it directly.\r\n         */\r\n        this.sequence = 0;\r\n    }\r\n    /**\r\n     * Sets the display name of the ensured property.\r\n     */\r\n    FluentRules.prototype.displayName = function (name) {\r\n        this.property.displayName = name;\r\n        return this;\r\n    };\r\n    /**\r\n     * Applies an ad-hoc rule function to the ensured property or object.\r\n     * @param condition The function to validate the rule.\r\n     * Will be called with two arguments, the property value and the object.\r\n     * Should return a boolean or a Promise that resolves to a boolean.\r\n     */\r\n    FluentRules.prototype.satisfies = function (condition, config) {\r\n        return new FluentRuleCustomizer(this.property, condition, config, this.fluentEnsure, this, this.parsers);\r\n    };\r\n    /**\r\n     * Applies a rule by name.\r\n     * @param name The name of the custom or standard rule.\r\n     * @param args The rule's arguments.\r\n     */\r\n    FluentRules.prototype.satisfiesRule = function (name) {\r\n        var _this = this;\r\n        var args = [];\r\n        for (var _i = 1; _i < arguments.length; _i++) {\r\n            args[_i - 1] = arguments[_i];\r\n        }\r\n        var rule = FluentRules.customRules[name];\r\n        if (!rule) {\r\n            // standard rule?\r\n            rule = this[name];\r\n            if (rule instanceof Function) {\r\n                return rule.call.apply(rule, [this].concat(args));\r\n            }\r\n            throw new Error(\"Rule with name \\\"\" + name + \"\\\" does not exist.\");\r\n        }\r\n        var config = rule.argsToConfig ? rule.argsToConfig.apply(rule, args) : undefined;\r\n        return this.satisfies(function (value, obj) {\r\n            var _a;\r\n            return (_a = rule.condition).call.apply(_a, [_this, value, obj].concat(args));\r\n        }, config)\r\n            .withMessageKey(name);\r\n    };\r\n    /**\r\n     * Applies the \"required\" rule to the property.\r\n     * The value cannot be null, undefined or whitespace.\r\n     */\r\n    FluentRules.prototype.required = function () {\r\n        return this.satisfies(function (value) {\r\n            return value !== null\r\n                && value !== undefined\r\n                && !(isString(value) && !/\\S/.test(value));\r\n        }).withMessageKey('required');\r\n    };\r\n    /**\r\n     * Applies the \"matches\" rule to the property.\r\n     * Value must match the specified regular expression.\r\n     * null, undefined and empty-string values are considered valid.\r\n     */\r\n    FluentRules.prototype.matches = function (regex) {\r\n        return this.satisfies(function (value) { return value === null || value === undefined || value.length === 0 || regex.test(value); })\r\n            .withMessageKey('matches');\r\n    };\r\n    /**\r\n     * Applies the \"email\" rule to the property.\r\n     * null, undefined and empty-string values are considered valid.\r\n     */\r\n    FluentRules.prototype.email = function () {\r\n        // regex from https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\r\n        /* tslint:disable:max-line-length */\r\n        return this.matches(/^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/)\r\n            /* tslint:enable:max-line-length */\r\n            .withMessageKey('email');\r\n    };\r\n    /**\r\n     * Applies the \"minLength\" STRING validation rule to the property.\r\n     * null, undefined and empty-string values are considered valid.\r\n     */\r\n    FluentRules.prototype.minLength = function (length) {\r\n        return this.satisfies(function (value) { return value === null || value === undefined || value.length === 0 || value.length >= length; }, { length: length })\r\n            .withMessageKey('minLength');\r\n    };\r\n    /**\r\n     * Applies the \"maxLength\" STRING validation rule to the property.\r\n     * null, undefined and empty-string values are considered valid.\r\n     */\r\n    FluentRules.prototype.maxLength = function (length) {\r\n        return this.satisfies(function (value) { return value === null || value === undefined || value.length === 0 || value.length <= length; }, { length: length })\r\n            .withMessageKey('maxLength');\r\n    };\r\n    /**\r\n     * Applies the \"minItems\" ARRAY validation rule to the property.\r\n     * null and undefined values are considered valid.\r\n     */\r\n    FluentRules.prototype.minItems = function (count) {\r\n        return this.satisfies(function (value) { return value === null || value === undefined || value.length >= count; }, { count: count })\r\n            .withMessageKey('minItems');\r\n    };\r\n    /**\r\n     * Applies the \"maxItems\" ARRAY validation rule to the property.\r\n     * null and undefined values are considered valid.\r\n     */\r\n    FluentRules.prototype.maxItems = function (count) {\r\n        return this.satisfies(function (value) { return value === null || value === undefined || value.length <= count; }, { count: count })\r\n            .withMessageKey('maxItems');\r\n    };\r\n    /**\r\n     * Applies the \"equals\" validation rule to the property.\r\n     * null and undefined values are considered valid.\r\n     */\r\n    FluentRules.prototype.equals = function (expectedValue) {\r\n        return this.satisfies(function (value) { return value === null || value === undefined || value === '' || value === expectedValue; }, { expectedValue: expectedValue })\r\n            .withMessageKey('equals');\r\n    };\r\n    FluentRules.customRules = {};\r\n    return FluentRules;\r\n}());\r\n/**\r\n * Part of the fluent rule API. Enables targeting properties and objects with rules.\r\n */\r\nvar FluentEnsure = /** @class */ (function () {\r\n    function FluentEnsure(parsers) {\r\n        this.parsers = parsers;\r\n        /**\r\n         * Rules that have been defined using the fluent API.\r\n         */\r\n        this.rules = [];\r\n    }\r\n    /**\r\n     * Target a property with validation rules.\r\n     * @param property The property to target. Can be the property name or a property accessor\r\n     * function.\r\n     */\r\n    FluentEnsure.prototype.ensure = function (property) {\r\n        this.assertInitialized();\r\n        var name = this.parsers.property.parse(property);\r\n        var fluentRules = new FluentRules(this, this.parsers, { name: name, displayName: null });\r\n        return this.mergeRules(fluentRules, name);\r\n    };\r\n    /**\r\n     * Targets an object with validation rules.\r\n     */\r\n    FluentEnsure.prototype.ensureObject = function () {\r\n        this.assertInitialized();\r\n        var fluentRules = new FluentRules(this, this.parsers, { name: null, displayName: null });\r\n        return this.mergeRules(fluentRules, null);\r\n    };\r\n    /**\r\n     * Applies the rules to a class or object, making them discoverable by the StandardValidator.\r\n     * @param target A class or object.\r\n     */\r\n    FluentEnsure.prototype.on = function (target) {\r\n        Rules.set(target, this.rules);\r\n        return this;\r\n    };\r\n    /**\r\n     * Adds a rule definition to the sequenced ruleset.\r\n     * @internal\r\n     */\r\n    FluentEnsure.prototype._addRule = function (rule) {\r\n        while (this.rules.length < rule.sequence + 1) {\r\n            this.rules.push([]);\r\n        }\r\n        this.rules[rule.sequence].push(rule);\r\n    };\r\n    FluentEnsure.prototype.assertInitialized = function () {\r\n        if (this.parsers) {\r\n            return;\r\n        }\r\n        throw new Error(\"Did you forget to add \\\".plugin('aurelia-validation')\\\" to your main.js?\");\r\n    };\r\n    FluentEnsure.prototype.mergeRules = function (fluentRules, propertyName) {\r\n        // tslint:disable-next-line:triple-equals | Use loose equality for property keys\r\n        var existingRules = this.rules.find(function (r) { return r.length > 0 && r[0].property.name == propertyName; });\r\n        if (existingRules) {\r\n            var rule = existingRules[existingRules.length - 1];\r\n            fluentRules.sequence = rule.sequence;\r\n            if (rule.property.displayName !== null) {\r\n                fluentRules = fluentRules.displayName(rule.property.displayName);\r\n            }\r\n        }\r\n        return fluentRules;\r\n    };\r\n    return FluentEnsure;\r\n}());\r\n/**\r\n * Fluent rule definition API.\r\n */\r\nvar ValidationRules = /** @class */ (function () {\r\n    function ValidationRules() {\r\n    }\r\n    ValidationRules.initialize = function (messageParser, propertyParser) {\r\n        this.parsers = {\r\n            message: messageParser,\r\n            property: propertyParser\r\n        };\r\n    };\r\n    /**\r\n     * Target a property with validation rules.\r\n     * @param property The property to target. Can be the property name or a property accessor function.\r\n     */\r\n    ValidationRules.ensure = function (property) {\r\n        return new FluentEnsure(ValidationRules.parsers).ensure(property);\r\n    };\r\n    /**\r\n     * Targets an object with validation rules.\r\n     */\r\n    ValidationRules.ensureObject = function () {\r\n        return new FluentEnsure(ValidationRules.parsers).ensureObject();\r\n    };\r\n    /**\r\n     * Defines a custom rule.\r\n     * @param name The name of the custom rule. Also serves as the message key.\r\n     * @param condition The rule function.\r\n     * @param message The message expression\r\n     * @param argsToConfig A function that maps the rule's arguments to a \"config\"\r\n     * object that can be used when evaluating the message expression.\r\n     */\r\n    ValidationRules.customRule = function (name, condition, message, argsToConfig) {\r\n        validationMessages[name] = message;\r\n        FluentRules.customRules[name] = { condition: condition, argsToConfig: argsToConfig };\r\n    };\r\n    /**\r\n     * Returns rules with the matching tag.\r\n     * @param rules The rules to search.\r\n     * @param tag The tag to search for.\r\n     */\r\n    ValidationRules.taggedRules = function (rules, tag) {\r\n        return rules.map(function (x) { return x.filter(function (r) { return r.tag === tag; }); });\r\n    };\r\n    /**\r\n     * Returns rules that have no tag.\r\n     * @param rules The rules to search.\r\n     */\r\n    ValidationRules.untaggedRules = function (rules) {\r\n        return rules.map(function (x) { return x.filter(function (r) { return r.tag === undefined; }); });\r\n    };\r\n    /**\r\n     * Removes the rules from a class or object.\r\n     * @param target A class or object.\r\n     */\r\n    ValidationRules.off = function (target) {\r\n        Rules.unset(target);\r\n    };\r\n    return ValidationRules;\r\n}());\n\n// Exports\r\n/**\r\n * Aurelia Validation Configuration API\r\n */\r\nvar AureliaValidationConfiguration = /** @class */ (function () {\r\n    function AureliaValidationConfiguration() {\r\n        this.validatorType = StandardValidator;\r\n    }\r\n    /**\r\n     * Use a custom Validator implementation.\r\n     */\r\n    AureliaValidationConfiguration.prototype.customValidator = function (type) {\r\n        this.validatorType = type;\r\n    };\r\n    /**\r\n     * Applies the configuration.\r\n     */\r\n    AureliaValidationConfiguration.prototype.apply = function (container) {\r\n        var validator = container.get(this.validatorType);\r\n        container.registerInstance(Validator, validator);\r\n    };\r\n    return AureliaValidationConfiguration;\r\n}());\r\n/**\r\n * Configures the plugin.\r\n */\r\nfunction configure(\r\n// tslint:disable-next-line:ban-types\r\nframeworkConfig, callback) {\r\n    // the fluent rule definition API needs the parser to translate messages\r\n    // to interpolation expressions.\r\n    var messageParser = frameworkConfig.container.get(ValidationMessageParser);\r\n    var propertyParser = frameworkConfig.container.get(PropertyAccessorParser);\r\n    ValidationRules.initialize(messageParser, propertyParser);\r\n    // configure...\r\n    var config = new AureliaValidationConfiguration();\r\n    if (callback instanceof Function) {\r\n        callback(config);\r\n    }\r\n    config.apply(frameworkConfig.container);\r\n    // globalize the behaviors.\r\n    if (frameworkConfig.globalResources) {\r\n        frameworkConfig.globalResources(ValidateBindingBehavior, ValidateManuallyBindingBehavior, ValidateOnBlurBindingBehavior, ValidateOnChangeBindingBehavior, ValidateOnChangeOrBlurBindingBehavior, ValidationErrorsCustomAttribute, ValidationRendererCustomAttribute);\r\n    }\r\n}\n\nexport { AureliaValidationConfiguration, configure, getTargetDOMElement, getPropertyInfo, PropertyAccessorParser, getAccessorExpression, ValidateBindingBehavior, ValidateManuallyBindingBehavior, ValidateOnBlurBindingBehavior, ValidateOnChangeBindingBehavior, ValidateOnChangeOrBlurBindingBehavior, ValidateEvent, ValidateResult, validateTrigger, ValidationController, ValidationControllerFactory, ValidationErrorsCustomAttribute, ValidationRendererCustomAttribute, Validator, Rules, StandardValidator, validationMessages, ValidationMessageProvider, ValidationMessageParser, MessageExpressionValidator, FluentRuleCustomizer, FluentRules, FluentEnsure, ValidationRules };\n","\"use strict\";\n\nexports.__esModule = true;\nexports.configure = configure;\n\nvar _aureliaPal = require(\"aurelia-pal\");\n\nvar _reorderableRepeat = require(\"./reorderable-repeat\");\n\nvar _reorderableDirection = require(\"./reorderable-direction\");\n\nvar _reorderableGroup = require(\"./reorderable-group\");\n\nvar _reorderableGroupFor = require(\"./reorderable-group-for\");\n\nvar _reorderableDndPreview = require(\"./reorderable-dnd-preview\");\n\nvar _reorderableDndHandlerSelector = require(\"./reorderable-dnd-handler-selector\");\n\nvar _reorderableAfterReordering = require(\"./reorderable-after-reordering\");\n\nvar css = \"\\n.reorderable-repeat-dragging-me {\\n  visibility: hidden;\\n}\\n\";\n\nfunction configure(config) {\n  _aureliaPal.DOM.injectStyles(css);\n\n  config.globalResources([_reorderableRepeat.ReorderableRepeat, _reorderableDirection.ReorderableDirection, _reorderableGroup.ReorderableGroup, _reorderableGroupFor.ReorderableGroupFor, _reorderableDndPreview.ReorderableDndPreview, _reorderableDndHandlerSelector.ReorderableDndHandlerSelector, _reorderableAfterReordering.ReorderableAfterReordering]);\n}","import { inject, customAttribute } from 'aurelia-framework';\nimport { I18N } from 'aurelia-i18n';\n\n@customAttribute('t-html')\n@inject(Element, I18N)\nexport class THtmlCustomAttribute {\n  constructor(private element: Element, private i18n: I18N) {}\n\n  valueChanged(newValue: string) {\n    const translated = this.i18n.tr(newValue);\n    this.element.innerHTML = translated;\n  }\n}\n","import { autoinject, bindable, inlineView } from 'aurelia-framework';\nimport * as $ from 'jquery';\n\n@inlineView(`\n<template>\n    <a class=\"back-to-top\" click.trigger=\"click()\">\n      <i class=\"material-icons\">\n        arrow_upward\n      </i>\n    </a>\n</template>\n`)\n@autoinject()\nexport class BackToTopCustomElement {\n\n  public static ScrollEventName = 'scroll';\n  public static AnimationTime = 500;\n  public static MinimumWindowScroll = 50;\n\n  // @bindable iconClass = 'fa fa-chevron-circle-up';\n\n  constructor(private element: Element) { }\n\n  attached() {\n    window.addEventListener(BackToTopCustomElement.ScrollEventName, this.onScrollChange);\n  }\n\n  detached() {\n    window.removeEventListener(BackToTopCustomElement.ScrollEventName, this.onScrollChange);\n  }\n\n  click() {\n    $('body,html').animate({ scrollTop: 0 }, BackToTopCustomElement.AnimationTime);\n  }\n\n  private onScrollChange = () => {\n    const element = $(this.element).children().first();\n\n    if (window.pageYOffset >= BackToTopCustomElement.MinimumWindowScroll) {\n      element.fadeIn(BackToTopCustomElement.AnimationTime);\n    } else {\n      element.fadeOut(BackToTopCustomElement.AnimationTime);\n    }\n  }\n}\n","import { customAttribute, inject, bindable } from 'aurelia-framework';\nimport * as $ from 'jquery';\n\n@customAttribute('ux-bootstrap-tooltip')\n@inject(Element)\nexport class BootstrapTooltipCustomAttribute {\n  $element: any;\n  @bindable title: string = \"\";\n\n  constructor(element) {\n    this.$element = $(element);\n  }\n\n  bind() {\n    this.$element.tooltip({ title: this.title || \"\" });\n  }\n\n  unbind() {\n    this.$element.tooltip('dispose');\n  }\n\n  titleChanged() {\n    // this.$element.data('bs.tooltip', false);\n    this.$element.tooltip({ title: this.title || \"\" });\n  }\n}\n","/**\n * Created by istrauss on 11/15/2016.\n */\n\n// import './aurelia-crumbs.css';\n// import _clone from 'lodash/clone';\nimport { EventAggregator } from 'aurelia-event-aggregator';\nimport { inject, bindable, customElement, LogManager } from 'aurelia-framework';\nimport { Router } from 'aurelia-router';\nimport { NavigationInstruction } from 'aurelia-router';\nimport { Subscription } from 'aurelia-event-aggregator';\nimport { Logger } from 'aurelia-logging';\n\n@inject(Router, EventAggregator)\n@customElement(\"ux-aurelia-crumbs\")\nexport class UxAureliaCrumbsCustomElement {\n\n  private logger: Logger;\n\n  private subscription: Subscription;\n  private instructions;\n  private shouldShowBreadcrumb: boolean = true;\n\n  /**\n   * Configuration object\n   * @type {{seperator: 'htmlString'}}\n   */\n\n  @bindable\n  private config = {};\n\n  constructor(\n    private router: Router,\n    private ea: EventAggregator) {\n\n    this.logger = LogManager.getLogger(\"UxBreadcrumbsCustomElement\");\n  }\n\n  attached() {\n    this.subscription = this.ea.subscribe('router:navigation:success', this.refresh.bind(this));\n    this.refresh();\n  }\n\n  detached() {\n    this.subscription.dispose();\n  }\n\n  /**\n   * Refresh the rendered widget\n   */\n  refresh() {\n    // this.logger.debug(\"refresh\");\n    const parentInstructions = this.getParentInstructions(this.router.currentInstruction);\n    this.instructions = parentInstructions\n      .slice(0, parentInstructions.length - 1)\n      .concat(this.router.currentInstruction.getAllInstructions())\n      .filter(instruction => instruction.config.title);\n\n    // Check if any route config has hideBreadcrumb property set to true\n    const currentInstruction = this.router.currentInstruction;\n    this.shouldShowBreadcrumb = !this.checkHideBreadcrumb(currentInstruction);\n\n    // this.logger.debug(\"instrucctions: \", this.instructions);\n  }\n\n  navigateToRoute(instruction: NavigationInstruction) {    \n    const params =  Object.assign({}, instruction.params); //_clone(instruction.params); \n    // this.logger.debug(\"params.childRoute:\", params.childRoute);\n    delete params.childRoute;\n    // this.logger.debug(\"instruction:\", instruction.config.name);\n    instruction.router.navigateToRoute(instruction.config.name, params);\n  }\n\n  getParentInstructions(instruction) {    \n    return instruction.parentInstruction ? this.getParentInstructions(instruction.parentInstruction).concat([instruction]) : [instruction];\n  }\n\n  private checkHideBreadcrumb(instruction): boolean {\n    if (!instruction) return false;\n    \n    // Check current instruction - only hide if explicitly set to true\n    if (instruction.config && instruction.config.hideBreadcrumb === true) {\n      return true;\n    }\n    \n    // Check all child instructions - only hide if explicitly set to true\n    const allInstructions = instruction.getAllInstructions();\n    return allInstructions.some(inst => inst.config && inst.config.hideBreadcrumb === true);\n  }\n}\n","module.exports = \"<template> <nav aria-label=breadcrumb if.bind=shouldShowBreadcrumb> <ol class=\\\"breadcrumb breadcrumb-subnav\\\"> <li class=breadcrumb-item repeat.for=\\\"instruction of instructions\\\"> <span if.one-time=instruction.config.title> <template if.bind=$last>${instruction.config.title}</template> <template if.bind=!$last> <a href=# click.delegate=navigateToRoute(instruction)>${instruction.config.title}</a> </template> </span> </li> </ol> </nav> </template> \";","\nimport { bindable, bindingMode, customElement, inject, LogManager } from 'aurelia-framework';\nimport { DOM, PLATFORM } from 'aurelia-pal';\nimport { Logger } from 'aurelia-logging';\n\n\nexport interface CarouselConfig {\n\n  duration?: number;\n  easing?: string;\n  perPage?: number | any;\n  startIndex?: number;\n  draggable?: boolean;\n  threshold?: number;\n  loop?: boolean;\n  onInit?: () => {},\n  onChange?: () => {},\n}\n\nexport interface CarouselDrag {\n  startX?: number;\n  endX?: number;\n  startY?: number;\n  letItGo?: boolean;\n}\n\n@customElement(\"ux-carousel\")\n@inject(Element)\nexport class Carousel {\n\n  logger: Logger;\n\n  @bindable\n  showNav: boolean = true;\n\n  @bindable\n  heading: string = '';\n\n  @bindable({ defaultBindingMode: bindingMode.oneTime })\n  options: any;\n\n  config = <CarouselConfig>{\n    duration: 200,\n    easing: 'ease-out',\n    perPage: 1,\n    startIndex: 0,\n    draggable: true,\n    threshold: 20,\n    loop: false,\n    onInit: () => { },\n    onChange: () => { },\n  };\n\n  carouselContainer;\n  sliderFrame;\n  sliderWidth: number = 0;\n  sliderTransform: number = 0;\n  carouselWidth: number;\n  innerElements;\n  currentSlide;\n  transformProperty;\n  transformDuration: number = 0;\n  viewPortWidth;\n  resizeAnimRunning: boolean = false;\n  slideAnimRunning: boolean = false;\n  initialized: boolean = false;\n  pointerDown: boolean = false;\n  drag = <CarouselDrag>{\n    startX: 0,\n    endX: 0,\n    startY: 0,\n    letItGo: true\n  };\n  perPage;\n\n  constructor(private element: HTMLElement) {\n\n    this.logger = LogManager.getLogger(\"Carousel\");\n  }\n\n  attached() {\n    // Merge defaults with user's settings\n    this.mergeSettings();\n\n    // Cache some stuff\n    this.transformDuration = this.config.duration;\n    this.currentSlide = this.config.startIndex;\n    this.transformProperty = this.webkitOrNot();\n    this.viewPortWidth = PLATFORM.global.innerWidth; //window.innerWidth;\n    this.carouselWidth = this.carouselContainer.offsetWidth;\n    this.innerElements = this.sliderFrame.children;\n\n    // this.logger.debug(\"viewPortWidth:\", this.viewPortWidth);\n    // this.logger.debug(\"carouselWidth:\", this.carouselWidth);\n    // Initialize the carousel\n    this.init();\n  }\n\n  detached() {\n    PLATFORM.global.removeEventListener('resize', this.resizeHandler);\n\n    this.carouselContainer.removeEventListener('touchstart', this.touchstartHandler);\n    this.carouselContainer.removeEventListener('touchend', this.touchendHandler);\n    this.carouselContainer.removeEventListener('touchmove', this.touchmoveHandler);\n    this.carouselContainer.removeEventListener('mousedown', this.mousedownHandler);\n    this.carouselContainer.removeEventListener('mouseup', this.mouseupHandler);\n    this.carouselContainer.removeEventListener('mouseleave', this.mouseleaveHandler);\n    this.carouselContainer.removeEventListener('mousemove', this.mousemoveHandler);\n  }\n\n  /**\n   * Overrides default settings with custom ones.\n   * @param {Object} options - Optional settings object.\n   * @returns {Object} - Custom Siema settings.\n   */\n  mergeSettings = () => {\n    for (const attrname in this.options) {\n      this.config[attrname] = this.options[attrname];\n    }\n  }\n\n\n  /**\n   * Determine if browser supports unprefixed transform property.\n   * @returns {string} - Transform property supported by client.\n   */\n  webkitOrNot = () => {\n    // const style = document.documentElement.style;\n    const style = this.element.style;\n\n    if (typeof style.transform === 'string') {\n      return 'transform';\n    }\n    return 'WebkitTransform';\n  }\n\n\n  /**\n   * Builds the markup and attaches listeners to required events.\n   */\n  init = () => {\n    // Resize element on window resize\n    PLATFORM.global.addEventListener('resize', this.resizeHandler);\n\n    // If element is draggable / swipable, add event handlers\n    if (this.config.draggable) {\n\n      // Touch events\n      this.carouselContainer.addEventListener('touchstart', this.touchstartHandler, { passive: true });\n      this.carouselContainer.addEventListener('touchend', this.touchendHandler);\n      this.carouselContainer.addEventListener('touchmove', this.touchmoveHandler, { passive: true });\n\n      // Mouse events\n      this.carouselContainer.addEventListener('mousedown', this.mousedownHandler);\n      this.carouselContainer.addEventListener('mouseup', this.mouseupHandler);\n      this.carouselContainer.addEventListener('mouseleave', this.mouseleaveHandler);\n      this.carouselContainer.addEventListener('mousemove', this.mousemoveHandler);\n    }\n\n    if (this.carouselContainer === null) {\n      throw new Error('Something went wrong with the carousel ref binding 😭');\n    }\n\n    // carousel container is collapse then set carousel width equal to view port\n    if (this.carouselWidth === 0) {\n      this.carouselWidth = this.viewPortWidth;\n    }\n\n    // update perPage number dependable of user value\n    this.resolveSlidesNumber();\n\n    // Apply styling and stuff\n    this.refresh();\n\n    this.config.onInit.call(this);\n    this.initialized = true;\n\n  }\n\n  /**\n   * Determinates slides number accordingly to clients viewPort.\n   */\n  resolveSlidesNumber = () => {\n    if (typeof this.config.perPage === 'number') {\n      this.perPage = this.config.perPage;\n    }\n    else if (typeof this.config.perPage === 'object') {\n      this.perPage = 1;\n      for (const viewPort in this.config.perPage) {\n        if (this.viewPortWidth >= viewPort) {\n          this.perPage = this.config.perPage[viewPort];\n        }\n      }\n    }\n  }\n\n\n  /**\n   * Go to previous slide.\n   * @param {number} [howManySlides=1] - How many items to slide backward.\n   * @param {function} callback - Optional callback function.\n   */\n  prev = (howManySlides = 1, callback = null) => {\n    if (this.innerElements.length <= this.perPage) {\n      return;\n    }\n    const beforeChange = this.currentSlide;\n    if (this.currentSlide === 0 && this.config.loop) {\n      this.currentSlide = this.innerElements.length - this.perPage;\n    }\n    else {\n      this.currentSlide = Math.max(this.currentSlide - howManySlides, 0);\n    }\n    if (beforeChange !== this.currentSlide) {\n      this.slideToCurrent();\n      this.config.onChange.call(this);\n      if (callback) {\n        callback.call(this);\n      }\n    }\n  }\n\n\n  /**\n   * Go to next slide.\n   * @param {number} [howManySlides=1] - How many items to slide forward.\n   * @param {function} callback - Optional callback function.\n   */\n  next = (howManySlides = 1, callback = null) => {\n    if (this.innerElements.length <= this.perPage) {\n      return;\n    }\n    const beforeChange = this.currentSlide;\n    if (this.currentSlide === this.innerElements.length - this.perPage && this.config.loop) {\n      this.currentSlide = 0;\n    }\n    else {\n      this.currentSlide = Math.min(this.currentSlide + howManySlides, this.innerElements.length - this.perPage);\n    }\n    if (beforeChange !== this.currentSlide) {\n      this.slideToCurrent();\n      this.config.onChange.call(this);\n      if (callback) {\n        callback.call(this);\n      }\n    }\n  }\n\n\n  /**\n   * Go to slide with particular index\n   * @param {number} index - Item index to slide to.\n   * @param {function} callback - Optional callback function.\n   */\n  goTo = (index, callback = null) => {\n    if (this.innerElements.length <= this.perPage) {\n      return;\n    }\n    const beforeChange = this.currentSlide;\n    this.currentSlide = Math.min(Math.max(index, 0), this.innerElements.length - this.perPage);\n    if (beforeChange !== this.currentSlide) {\n      this.slideToCurrent();\n      this.config.onChange.call(this);\n      if (callback) {\n        callback.call(this);\n      }\n    }\n  }\n\n\n  /**\n   * Moves sliders frame to position of currently active slide\n   */\n  slideToCurrent = () => {\n    this.sliderTransform = (this.currentSlide * (this.carouselWidth / this.perPage)) * -1;\n  }\n\n\n  /**\n   * Recalculate drag /swipe event and reposition the frame of a slider\n   */\n  updateAfterDrag = () => {\n    const movement = this.drag.endX - this.drag.startX;\n    const movementDistance = Math.abs(movement);\n    const howManySliderToSlide = Math.ceil(movementDistance / (this.carouselWidth / this.perPage));\n\n    if (movement > 0 && movementDistance > this.config.threshold && this.innerElements.length > this.perPage) {\n      this.prev(howManySliderToSlide);\n    }\n    else if (movement < 0 && movementDistance > this.config.threshold && this.innerElements.length > this.perPage) {\n      this.next(howManySliderToSlide);\n    }\n    this.slideToCurrent();\n  }\n\n\n  /**\n   * When window resizes, resize slider components as well\n   */\n  resizeHandler = () => {\n    // Only resize width changes when a resize is not already running\n    if (this.resizeAnimRunning || this.viewPortWidth === PLATFORM.global.innerWidth) {\n      return;\n    }\n\n    this.resizeAnimRunning = true;\n    PLATFORM.global.requestAnimationFrame(this.resizeWorker);\n\n\n\n  }\n\n  resizeWorker = () => {\n    this.viewPortWidth = PLATFORM.global.innerWidth;\n    // update perPage number dependable of user value\n    this.resolveSlidesNumber();\n\n    this.carouselWidth = this.carouselContainer.offsetWidth;\n    this.sliderWidth = (this.carouselWidth / this.perPage) * this.innerElements.length;\n\n    this.slideToCurrent();\n    this.resizeAnimRunning = false;\n  }\n\n\n  /**\n   * Clear drag after touchend and mouseup event\n   */\n  clearDrag = () => {\n    this.drag = {\n      startX: 0,\n      endX: 0,\n      startY: 0,\n      letItGo: null\n    };\n  }\n\n\n  /**\n   * touchstart event handler\n   */\n  touchstartHandler = (e) => {\n    e.stopPropagation();\n    this.pointerDown = true;\n    this.drag.startX = e.touches[0].pageX;\n    this.drag.startY = e.touches[0].pageY;\n  }\n\n\n  /**\n   * touchend event handler\n   */\n  touchendHandler = (e) => {\n    e.stopPropagation();\n    this.pointerDown = false;\n    if (this.drag.endX) {\n      this.updateAfterDrag();\n    }\n    this.clearDrag();\n  }\n\n\n  /**\n   * touchmove event handler\n   */\n  touchmoveHandler = (e) => {\n    e.stopPropagation();\n\n    if (this.drag.letItGo === null) {\n      this.drag.letItGo = Math.abs(this.drag.startY - e.touches[0].pageY) < Math.abs(this.drag.startX - e.touches[0].pageX);\n    }\n\n    if (this.pointerDown && this.drag.letItGo) {\n      if (this.transformDuration !== 0) {\n        this.transformDuration = 0;\n      }\n      this.drag.endX = e.touches[0].pageX;\n      if (!this.slideAnimRunning) {\n        this.slideAnimRunning = true;\n        requestAnimationFrame(() => this.touchmoveWorker(e));\n      }\n    }\n  }\n\n  touchmoveWorker = (e) => {\n    this.sliderTransform = (this.currentSlide * (this.carouselWidth / this.perPage) + (this.drag.startX - this.drag.endX)) * -1;\n    this.slideAnimRunning = false;\n  }\n\n\n  /**\n   * mousedown event handler\n   */\n  mousedownHandler = (e) => {\n    e.preventDefault();\n    e.stopPropagation();\n    this.pointerDown = true;\n    this.drag.startX = e.pageX;\n  }\n\n\n  /**\n   * mouseup event handler\n   */\n  mouseupHandler = (e) => {\n    e.stopPropagation();\n    this.pointerDown = false;\n    this.transformDuration = this.config.duration;\n    if (this.drag.endX) {\n      this.updateAfterDrag();\n    }\n    this.clearDrag();\n  }\n\n\n  /**\n   * mousemove event handler\n   */\n  mousemoveHandler = (e) => {\n    e.preventDefault();\n    if (this.pointerDown) {\n      this.drag.endX = e.pageX;\n      if (!this.slideAnimRunning) {\n        if (this.transformDuration !== 0) {\n          this.transformDuration = 0;\n        }\n        this.slideAnimRunning = true;\n        requestAnimationFrame(this.mousemoveWorker);\n      }\n    }\n  }\n\n  mousemoveWorker = () => {\n    this.sliderTransform = (this.currentSlide * (this.carouselWidth / this.perPage) + (this.drag.startX - this.drag.endX)) * -1;\n    this.slideAnimRunning = false;\n  }\n\n\n  /**\n   * mouseleave event handler\n   */\n  mouseleaveHandler = (e) => {\n    if (this.pointerDown) {\n      this.pointerDown = false;\n      this.drag.endX = e.pageX;\n      this.transformDuration = this.config.duration;\n      this.updateAfterDrag();\n      this.clearDrag();\n    }\n  }\n\n\n  /**\n   * Update after removing, prepending or appending items.\n   */\n  refresh = () => {\n    this.sliderWidth = (this.carouselWidth / this.perPage) * this.innerElements.length;\n\n    // Loop through the slides and add styling \n    Array.prototype.forEach.call(this.innerElements, element => {\n      element.style.width = `${100 / this.innerElements.length}%`;\n    });\n\n    // Go to currently active slide after initial build\n    this.slideToCurrent();\n  }\n\n  preventClickOnDrag = (event) => { }\n}\n","module.exports = \"<template> <div class=\\\"carousel-wrapper ${heading ? 'controls--header' : 'controls--footer'}\\\"> <div if.bind=heading class=\\\"row mb-3 carousel-heading\\\"> <div if.bind=heading class=carousel-heading__title> <h2>${heading}</h2> <span if.bind=sortBy>Sorted by ${sortBy} (${sortDir})</span> </div> </div> <div ref=carouselContainer class=\\\"carousel-content ${config.draggable ? pointerDown ? 'grabbing': 'grab' : ''}\\\"> <div ref=sliderFrame class=slider show.bind=initialized css=\\\"width: ${sliderWidth}px; transition: transform ${transformDuration}ms ${config.easing}; ${transformProperty}: translate3d(${sliderTransform}px, 0, 0);;\\\"> <slot></slot> </div> </div> <div class=carousel-controls> <div if.bind=showNav class=nav> <span click.delegate=prev() class=\\\"btn btn-outline-primary ${navPrevDisabled ? 'disabled' : ''}\\\"> <i class=material-icons>chevron_left</i> </span> <span click.delegate=next() class=\\\"btn btn-outline-primary ${navNextDisabled ? 'disabled' : ''}\\\"> <i class=material-icons>chevron_right</i> </span> </div> </div> </div> </template> \";","/**\n\tThis is a clipboard alternative to ZeroClipboard which removes a dependency that requires Flash (Flash is dead).\n\tdocument.execCommand is ~86% supported across all browsers (http://caniuse.com/#feat=document-execcommand)\n\tIt creates an empty textarea element and sets the inner text to the text to copy (since the browser can only copy from inputs and textareas).\n\tUsage:\n\t\t<require from=\"customattributes/clipboard\"></require>\n\t\t<span>${name}</span>\n\t\t...\n\t\t<button clipboard=\"${name}\">COPY ME</button>\n**/\nimport { autoinject, customAttribute } from 'aurelia-framework';\n\n@customAttribute(\"ux-clipboard\")\n@autoinject()\nexport class ClipboardCustomAttribute {\n\tconstructor(private element: Element) { }\n\n\tattached() {\n\t\t// Loop over any child elements and disable the click events. For example if you put this on a button,\n\t\t// and then put a span / image icon it breaks the click event.\n\t\tArray.from(this.element.childNodes).forEach(e => {\n\t\t\tconst style = (<HTMLElement>e).style;\n\t\t\tif (style) {\n\t\t\t\tstyle.pointerEvents = 'none';\n\t\t\t}\n\t\t});\n\n\t\tthis.element.addEventListener('click', this.handleClick);\n\t}\n\n\tdetached() {\n\t\tthis.element.removeEventListener('click', this.handleClick);\n\t}\n\n\tprivate handleClick($event: any) {\n\t\tconst text = $event.srcElement.getAttribute('text');\n\t\tif (document.queryCommandSupported('copy') && text) {\n\t\t\tconst hiddenElement: HTMLTextAreaElement = document.createElement('textarea');\n\t\t\thiddenElement.style.display = 'none !important;';\n\t\t\thiddenElement.innerText = text;\n\n\t\t\tdocument.body.appendChild(hiddenElement);\n\t\t\thiddenElement.select();\n\n\t\t\tdocument.execCommand('SelectAll');\n\t\t\tdocument.execCommand('Copy');\n\n\t\t\tdocument.body.removeChild(hiddenElement);\n\t\t}\n\t}\n\n\tprivate valueChanged(newValue: string) {\n\t\tthis.element.setAttribute('text', newValue);\n\t}\n}\n","\nimport { bindable, customElement, customAttribute, LogManager, inject, bindingMode, inlineView, observable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Disposable } from \"aurelia-binding\";\nimport { BindingEngine } from \"aurelia-binding\";\n\nexport class UxDatatableParameters {\n  search?: any = {};\n  skip?: number = 0;\n  pageSize?: number = 50;\n  totalRecords?: number = 0;\n  tableData?: Array<any> = [];\n  currentPage?: number = 1;\n}\n\nexport class UxDatatableResponse {\n  data: Array<any> = [];\n  totalRecords: number = 0;\n}\n\n\ninterface ScrollContext {\n  topIndex: number;\n  isAtBottom: boolean;\n  isAtTop: boolean;\n}\n\n@customAttribute(\"ux-datatable\")\n@inject(BindingEngine)\nexport class UxDatatableCustomAttribute {\n\n  private logger: Logger;\n\n  private refreshing: boolean = false;\n  private totalPages: number = 0;\n  private canGetMoreItems: boolean = true;\n\n  @bindable\n  public parameters: UxDatatableParameters;\n\n  @bindable\n  public onRefresh: Function;\n\n  private subscriptions: Array<Disposable> = [];\n\n  constructor(\n    private bindingEngine: BindingEngine) {\n    this.logger = LogManager.getLogger(\"AuDatatableCustomAttribute\");\n  }\n\n  public attached(): void {\n    this.subscriptions.push(this.bindingEngine\n      .propertyObserver(this.parameters, \"tableData\")\n      .subscribe(() => this.updateRecordInfo()));\n  }\n\n  public detached(): void {\n    this.subscriptions.forEach(x => x.dispose());\n  }\n\n  private updateRecordInfo(): void {\n    this.totalPages = Math.ceil(parseInt(this.parameters.totalRecords.toString(), null) / this.parameters.pageSize);\n    // this.logger.debug(\"totalPages:\", this.totalPages);\n    this.canGetMoreItems = this.totalPages > this.parameters.currentPage;\n  }\n\n  public async getMoreItems(scrollContext: ScrollContext): Promise<any> {\n    this.logger.debug(\"getMoreItems\");\n    if (scrollContext\n      && scrollContext.isAtBottom\n      && !this.refreshing\n      && this.canGetMoreItems) {\n      // this.logger.debug(\"getting more items...\");\n      await this.changePage();\n    }\n  }\n\n  public async changePage(): Promise<any> {\n    if (typeof this.onRefresh !== \"function\") {\n      throw new Error(\"[ux-datatable-pagination:changePage] No onChangePage() callback has been set\");\n    }\n    // this.logger.debug(`this.parameters.currentPage: ${this.parameters.currentPage}, this.totalPages: ${this.totalPages}`);\n\n    // if (this.totalPages && this.totalPages < this.parameters.currentPage) return;\n\n    this.refreshing = true;\n    this.parameters.skip = this.parameters.currentPage * this.parameters.pageSize;\n    this.parameters.currentPage = this.parameters.currentPage + 1;\n\n    try {\n      let response: UxDatatableResponse = await this.onRefresh();\n      this.parameters.totalRecords = response.totalRecords;\n      // this.parameters.tableData = this.parameters.tableData.concat(response.data);\n      Array.prototype.push.apply(this.parameters.tableData, response.data);\n\n    }\n    catch (error) {\n      this.logger.error(error);\n    }\n\n    this.refreshing = false;\n  }\n}\n\n\n@inlineView(`\n    <template>\n        <div class=\"au-table-search d-flex\">\n            <input keyup.delegate=\"search() & debounce:500\"\n                value.bind=\"parameters.search.Query\"\n                type=\"text\"\n                placeholder.bind=\"placeholder\"\n                class.bind=\"inputClasses\" />\n            <button class=\"btn btn-link ml-2 p-0\" click.delegate=\"search()\" title=\"Refresh\">\n              <i class=\"material-icons\">\n                refresh\n              </i>\n            </button>\n        </div>\n    </template>\n`)\n\n@customElement(\"ux-datatable-search\")\nexport class UxDatatableSearchCustomElement {\n  private logger: Logger;\n\n  @bindable\n  public placeholder: string;\n\n  @bindable\n  public inputClasses: string;\n\n  @bindable\n  public onSearchChange: Function;\n\n  @bindable\n  public parameters: UxDatatableParameters;\n\n  constructor() {\n    this.logger = LogManager.getLogger(\"UxDatatableInfoCustomElement\");\n  }\n\n  public async search(): Promise<void> {\n    if (typeof this.onSearchChange !== \"function\") {\n      throw new Error(\"[ux-datatable-search:search] No onSearchChange() callback has been set\");\n    }\n\n    try {\n      this.reset();\n      let response: UxDatatableResponse = await this.onSearchChange() as UxDatatableResponse;\n      this.parameters.tableData = response.data;\n      this.parameters.totalRecords = response.totalRecords;\n      this.reset();\n    } catch (error) {\n      this.logger.error(error);\n    }\n  }\n\n  private reset(): void {\n    this.parameters.currentPage = this.parameters.totalRecords > 0 ? 1 : 0;\n    this.parameters.skip = 0;\n  }\n}\n\n\n@inlineView(`\n    <template>\n        <div class=\"au-table-info\">\n            \\${ info }\n            <span if.bind=\"parameters.search.Query.length > 0 && parameters.tableData.length > 0\">&nbsp;(\\${ labelFiltered })</span>\n        </div>\n    </template>\n`)\n\n@customElement(\"ux-datatable-info\")\n@inject(BindingEngine)\nexport class UxDatatableInfoCustomElement {\n  private logger: Logger;\n\n  @bindable\n  public message: string;\n\n  @bindable\n  public labelFiltered: string;\n\n  @bindable\n  public parameters: UxDatatableParameters;\n\n  private info: string;\n  private subscriptions: Array<Disposable> = [];\n\n  constructor(\n    private bindingEngine: BindingEngine) {\n    this.logger = LogManager.getLogger(\"UxDatatableInfoCustomElement\");\n  }\n\n  public attached(): void {\n    if (!this.message) {\n      this.message = \"TOTAL_RECORDS records\";\n    }\n    if (!this.labelFiltered) {\n      this.labelFiltered = \"filtered\";\n    }\n\n    // this.subscriptions.push(this.bindingEngine\n    //   .propertyObserver(this.parameters, \"tableData\")\n    //   .subscribe(() => this.updateRecordInfo()));\n\n    this.subscriptions.push(this.bindingEngine\n      .propertyObserver(this.parameters, \"totalRecords\")\n      .subscribe(() => this.updateRecordInfo()));\n  }\n\n  public detached(): void {\n    this.subscriptions.forEach(x => x.dispose());\n  }\n\n  private updateRecordInfo(): void {\n    this.info = this.message.replace(\"TOTAL_RECORDS\", this.parameters.totalRecords.toString());\n    // this.logger.debug(\"info\", this.info);\n  }\n\n}\n\n","\nimport { bindable, customElement, customAttribute, LogManager, inject, bindingMode, inlineView, observable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Disposable } from \"aurelia-binding\";\nimport { BindingEngine } from \"aurelia-binding\";\nimport { I18N } from \"aurelia-i18n\";\n\nexport class UxDatatableParameters {\n  search?: any = {};\n  skip?: number = 0;\n  pageSize?: number = 20;\n  totalRecords?: number = 0;\n  tableData?: Array<any> = [];\n  currentPage?: number = 1;\n\n  totalPages?: number=0; \n  canGetMoreItems?: boolean = false; \n  pageForItems?: number = 5;\n  pagesNumber? = [];\n}\n\nexport class UxDatatableResponse {\n  data: Array<any> = [];\n  totalRecords: number = 0;\n  totalPages?:number =0; \n}\n\n\ninterface ScrollContext {\n  topIndex: number;\n  isAtBottom: boolean;\n  isAtTop: boolean;\n}\n\n@customAttribute(\"ux-datatable-pagination\")\n@inject(BindingEngine)\nexport class UxDatatableCustomAttribute {\n\n  private logger: Logger;\n\n  private refreshing: boolean = false;\n  private totalPages: number = 0;\n  private canGetMoreItems: boolean = true;\n\n  @bindable\n  public parameters: UxDatatableParameters;\n\n  @bindable\n  public onRefresh: Function;\n\n  private subscriptions: Array<Disposable> = [];\n\n  constructor(\n    private bindingEngine: BindingEngine) {\n    this.logger = LogManager.getLogger(\"AuDatatableCustomAttribute\");\n  }\n\n  public attached(): void {\n    this.subscriptions.push(this.bindingEngine\n      .propertyObserver(this.parameters, \"tableData\")\n      .subscribe(() => this.updateRecordInfo()));\n  }\n\n  public detached(): void {\n    this.subscriptions.forEach(x => x.dispose());\n  }\n\n  private updateRecordInfo(): void {\n    this.totalPages = Math.ceil(parseInt(this.parameters.totalRecords.toString(), null) / this.parameters.pageSize);\n    // this.logger.debug(\"totalPages:\", this.totalPages);\n    this.canGetMoreItems = this.totalPages > this.parameters.currentPage;\n\n    this.parameters.totalPages = this.totalPages; \n    this.parameters.canGetMoreItems = this.canGetMoreItems;\n    this.parameters.pagesNumber = [];\n    var initialPage = 1;\n    var iniNextPage = initialPage;\n    if(this.parameters.currentPage>1 && ( (this.parameters.currentPage-1) %  this.parameters.pageForItems) == 0){\n      var totalpagesheet = this.parameters.pageForItems;\n      iniNextPage = (this.parameters.currentPage /this.parameters.pageForItems)*this.parameters.pageForItems;\n      initialPage = iniNextPage;\n    }else{\n      if(this.parameters.currentPage > this.parameters.pageForItems){\n        initialPage = ((Math.trunc(this.parameters.currentPage /this.parameters.pageForItems) ) * this.parameters.pageForItems )+1;\n        console.log((Math.trunc(this.parameters.currentPage /this.parameters.pageForItems)  ) );\n      }\n    }\n    totalpagesheet = (initialPage-1) + this.parameters.pageForItems;\n \n    for(var i=initialPage; i<=totalpagesheet ; i++ ){\n      this.parameters.pagesNumber.push(i)\n    }\n    this.parameters.pagesNumber.push('...')\n   \n    let a = this.parameters.pagesNumber;\n  }\n\n  public async getMoreItems(scrollContext: ScrollContext): Promise<any> {\n    this.logger.debug(\"getMoreItems\");\n    if (scrollContext\n      && scrollContext.isAtBottom\n      && !this.refreshing\n      && this.canGetMoreItems) {\n      // this.logger.debug(\"getting more items...\");\n      await this.changePage();\n    }\n  }\n\n  public async changePage(): Promise<any> {\n    if (typeof this.onRefresh !== \"function\") {\n      throw new Error(\"[ux-datatable-pagination:changePage] No onChangePage() callback has been set\");\n    }\n    // this.logger.debug(`this.parameters.currentPage: ${this.parameters.currentPage}, this.totalPages: ${this.totalPages}`);\n\n    // if (this.totalPages && this.totalPages < this.parameters.currentPage) return;\n\n    this.refreshing = true;    \n    this.parameters.skip = this.parameters.currentPage * this.parameters.pageSize;\n    this.parameters.currentPage = this.parameters.currentPage + 1;\n\n    try {\n      let response: UxDatatableResponse = await this.onRefresh();\n      this.parameters.totalRecords = response.totalRecords;\n      // this.parameters.tableData = this.parameters.tableData.concat(response.data);\n      this.parameters.totalPages = response.totalPages; \n      Array.prototype.push.apply(this.parameters.tableData, response.data);\n\n    }\n    catch (error) {\n      this.logger.error(error);\n    }\n\n    this.refreshing = false;\n  }\n}\n@inlineView(`\n\n<template>\n  <div class=\"row\">\n    <div class=\"col-md-6\">\n      <nav aria-label=\"Page navigation example\">\n        <ul class=\"pagination\">          \n          <li class.bind=\"parameters.currentPage == 1 ? 'page-item disabled' : 'page-item'\">\n            <a href=\"#\" class=\"page-link\" click.delegate=\"getFirstPage()\" \n              role=\"button\">\n              <i class=\"material-icons\" style=\"font-size: 12px\">keyboard_double_arrow_left</i>\n            </a>\n          </li>\n          <li class.bind=\"parameters.currentPage == 1 ? 'page-item disabled' : 'page-item'\">\n            <a href=\"#\" class=\"page-link\" click.delegate=\"getPrevPage()\" \n              role=\"button\">\n              <i class=\"material-icons\" style=\"font-size: 10px\">arrow_back_ios</i>\n            </a>\n          </li>\n          <li virtual-repeat.for=\"item of parameters.pagesNumber\"\n            class.bind=\"parameters.currentPage == item ? 'page-item active' : 'page-item'\">\n            <a class=\"page-link\" click.delegate=\"getPage(item)\">\\${ item }</a>\n          </li>\n          <li class.bind=\"parameters.currentPage == parameters.totalPages ? 'page-item disabled' : 'page-item'\">\n            <a href=\"#\" class=\"page-link\" click.delegate=\"getNextPage()\" \n              role=\"button\">\n              <i class=\"material-icons\" style=\"font-size: 10px\">arrow_forward_ios</i>\n            </a>\n          </li>\n          <li class.bind=\"parameters.currentPage == parameters.totalPages ? 'page-item disabled' : 'page-item'\">\n            <a href=\"#\" class=\"page-link\" click.delegate=\"getLastPage()\" \n              role=\"button\">\n              <i class=\"material-icons\" style=\"font-size: 12px\">keyboard_double_arrow_right</i>\n            </a>\n          </li>\n        </ul>\n      </nav>\n    </div>\n    <div class=\"col-md-3\">\n      <div class=\"row\">\n        <div class=\"col-12 col-md-6\">\n           <select style=\"width: 70px\" class=\"form-control\" value.bind=\"parameters.pageSize\" change.delegate=\"getFirstPage()\">\n              <option repeat.for=\"option of itemsByPage\" model.bind=\"option\">\\${option}</option>\n          </select>\n        </div> \n        <div class=\"col-12 col-md-6\">\n          <p>\\${'main.admin.pages.pagination.items_page' & t}</p>\n        </div>\n      </div>      \n    </div>   \n    <div class=\"col-md-3\">\n      <h6>\\${message}</h6>    \n    </div>\n  </div>\n  <template>\n\n`)\n@customElement(\"ux-datatable-pagination-selector\")\nexport class UxDatatablePagination {\n  private logger: Logger;\n\n  @bindable\n  public parameters: UxDatatableParameters;\n\n  @bindable\n  public onRefresh: Function;\n\n  @bindable\n  public inputClasses: string;\n\n  private refreshing: boolean = false;\n  public totalPage: number = 0\n  public message: string;\n\n  private subscriptions: Array<Disposable> = [];\n  public  itemsByPage: Array<Number> = [5,10,20,50,100];\n  constructor(private bindingEngine: BindingEngine,\n    private i18n: I18N,) {\n    this.logger = LogManager.getLogger(\"UxDatatableInfoCustomElement\");\n  }\n  public attached(): void {\n    this.subscriptions.push(this.bindingEngine\n      .propertyObserver(this.parameters, \"tableData\")\n      .subscribe(() => this.updateRecordInfo()));       \n  }       \n  private  updateRecordInfo(): void {  \n    this.validateIsaFunction();\n    this.totalPage = Math.ceil(parseInt(this.parameters.totalRecords.toString(), null) / this.parameters.pageSize);\n    this.parameters.totalPages = this.totalPage;    \n    if (this.parameters.pagesNumber.length == 0){\n      this.pushPagesNumber(1,this.parameters.pageForItems)      \n    }     \n    this.message = this.i18n.tr(\"main.admin.pages.pagination.current_page\").replace('{0}', this.parameters.currentPage.toString())\n                    .replace('{1}' ,this.parameters.totalPages.toString())\n                    .replace('{2}', this.parameters.totalRecords.toString())         \n  }\n  public pushPagesNumber(min: number, max:number){\n    \n    for (let i = min; i <= max; i++) {\n      this.parameters.pagesNumber.push(i);\n     }\n  }\n  public calculateSkip(min:number, max:number){\n    for (let i = min; i < max; i++) {\n      this.parameters.skip = this.parameters.skip + parseInt(this.parameters.pageSize.toString());\n    }  \n  }\n  public validateIsaFunction(){\n    if (typeof this.onRefresh !== \"function\") {\n      throw new Error(\"[ux-datatable-search:search] No onSearchChange() callback has been set\");\n    }\n  }\n  public async refreshResponse(){    \n    try {   \n      let response: UxDatatableResponse = await this.onRefresh() as UxDatatableResponse;\n      this.parameters.tableData = response.data;\n      this.parameters.totalRecords = response.totalRecords;\n      this.parameters.totalPages = response.totalPages; \n     \n    } catch (error) {\n      this.logger.error(error);\n    }\n  }\n  public async getFirstPage(): Promise<void> {    \n    this.parameters.skip = 0;\n    this.parameters.currentPage = 1;\n    this.parameters.pagesNumber = [];\n    this.pushPagesNumber(this.parameters.currentPage,this.parameters.pageForItems);    \n    await this.refreshResponse();\n  }\n  public async getLastPage(): Promise<void> {    \n    this.parameters.skip = 0;     \n    this.parameters.pagesNumber = [];\n\n    if ((this.parameters.totalPages % this.parameters.pageForItems) != 0){\n     this.pushPagesNumber((this.parameters.totalPages - ((this.parameters.totalPages % this.parameters.pageForItems)-1)),this.parameters.totalPages);\n    }else{\n      this.pushPagesNumber((this.parameters.totalPages - this.parameters.pageForItems),this.parameters.totalPages);\n    }\n\n   \n    this.calculateSkip(1,this.parameters.totalPages);\n    // for (let i = 1; i < this.parameters.totalPages; i++) {\n    //   this.parameters.skip = this.parameters.skip + parseInt(this.parameters.pageSize.toString());\n    // }\n    this.parameters.currentPage = this.parameters.totalPages;\n    await this.refreshResponse();\n  }\n  public async getPage(page: number): Promise<void>{\n    this.parameters.skip = 0;\n    this.calculateSkip(1,page);\n    // for (let i = 1; i < page; i++) {\n    //   this.parameters.skip = this.parameters.skip + parseInt(this.parameters.pageSize.toString());\n    // }    \n    this.parameters.currentPage = page;\n    await this.refreshResponse();\n  }\n  public async getNextPage(): Promise<void>{\n   \n    if ((this.parameters.currentPage % this.parameters.pageForItems) == 0){      \n      this.parameters.pagesNumber = [];\n      this.pushPagesNumber((this.parameters.currentPage + 1),(this.parameters.currentPage + this.parameters.pageForItems));\n    }\n    this.parameters.skip = 0;\n    this.parameters.currentPage = this.parameters.currentPage + 1;\n    this.calculateSkip(1,this.parameters.currentPage);     \n    await this.refreshResponse();\n  }\n  public async getPrevPage(): Promise<void>{    \n\n    if (((this.parameters.currentPage - 1) % this.parameters.pageForItems) == 0){      \n      this.parameters.pagesNumber = [];\n      this.pushPagesNumber((this.parameters.currentPage - this.parameters.pageForItems),(this.parameters.currentPage - 1));\n    }   \n    \n    this.parameters.skip = 0;\n    this.parameters.currentPage = this.parameters.currentPage - 1;\n    this.calculateSkip(1,this.parameters.currentPage);     \n    await this.refreshResponse();\n  }\n}\n\n@inlineView(`\n    <template>\n        <div class=\"au-table-search d-flex\">\n            <input keyup.delegate=\"search() & debounce:500\"\n                value.bind=\"parameters.search.Query\"\n                type=\"text\"\n                placeholder.bind=\"placeholder\"\n                class.bind=\"inputClasses\" />\n            <button class=\"btn btn-link ml-2 p-0\" click.delegate=\"search()\" title=\"Refresh\">\n              <i class=\"material-icons\">\n                refresh\n              </i>\n            </button>\n        </div>\n    </template>\n`)\n\n@customElement(\"ux-datatable-pagination-search\")\nexport class UxDatatableSearchCustomElement {\n  private logger: Logger;\n\n  @bindable\n  public placeholder: string;\n\n  @bindable\n  public inputClasses: string;\n\n  @bindable\n  public onSearchChange: Function;\n\n  @bindable\n  public parameters: UxDatatableParameters;\n\n  constructor() {\n    this.logger = LogManager.getLogger(\"UxDatatableInfoCustomElement\");\n  }\n\n  public async search(): Promise<void> {\n    if (typeof this.onSearchChange !== \"function\") {\n      throw new Error(\"[ux-datatable-search:search] No onSearchChange() callback has been set\");\n    }\n\n    try {\n      this.reset();\n      let response: UxDatatableResponse = await this.onSearchChange() as UxDatatableResponse;\n      this.parameters.tableData = response.data;\n      this.parameters.totalRecords = response.totalRecords;\n      this.reset();\n      let res: UxDatatablePagination;     \n     \n    } catch (error) {\n      this.logger.error(error);\n    }\n  }\n\n  private reset(): void {\n    this.parameters.currentPage = this.parameters.totalRecords > 0 ? 1 : 1;\n    this.parameters.skip = 0;\n    this.parameters.pagesNumber = [];\n    \n    for (let i = this.parameters.currentPage; i <= this.parameters.pageForItems; i++) {\n      this.parameters.pagesNumber.push(i);\n     }\n    \n  }\n}\n\n\n@inlineView(`\n    <template>\n        <div class=\"au-table-info\">\n            \\${ info }\n            <span if.bind=\"parameters.search.Query.length > 0 && parameters.tableData.length > 0\">&nbsp;(\\${ labelFiltered })</span>\n        </div>\n    </template>\n`)\n\n@customElement(\"ux-datatable-pagination-info\")\n@inject(BindingEngine)\nexport class UxDatatableInfoCustomElement {\n  private logger: Logger;\n\n  @bindable\n  public message: string;\n\n  @bindable\n  public labelFiltered: string;\n\n  @bindable\n  public parameters: UxDatatableParameters;\n\n  private info: string;\n  private subscriptions: Array<Disposable> = [];\n\n  constructor(\n    private bindingEngine: BindingEngine) {\n    this.logger = LogManager.getLogger(\"UxDatatableInfoCustomElement\");\n  }\n\n  public attached(): void {\n    if (!this.message) {\n      this.message = \"TOTAL_RECORDS records\";\n    }\n    if (!this.labelFiltered) {\n      this.labelFiltered = \"filtered\";\n    }\n\n    // this.subscriptions.push(this.bindingEngine\n    //   .propertyObserver(this.parameters, \"tableData\")\n    //   .subscribe(() => this.updateRecordInfo()));\n\n    this.subscriptions.push(this.bindingEngine\n      .propertyObserver(this.parameters, \"totalRecords\")\n      .subscribe(() => this.updateRecordInfo()));\n  }\n\n  public detached(): void {\n    this.subscriptions.forEach(x => x.dispose());\n  }\n\n  private updateRecordInfo(): void {\n    this.info = this.message.replace(\"TOTAL_RECORDS\", this.parameters.totalRecords.toString());\n    // this.logger.debug(\"info\", this.info);\n  }\n\n}\n\n","import { bindable, LogManager, observable, bindingMode, autoinject } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from \"common/store/store-service\";\n\n// import { es } from \"flatpickr/dist/l10n/es.js\";\n\n@autoinject()\nexport class UxDatePickerCustomElement {\n\n  private logger: Logger;\n\n  @bindable({ defaultBindingMode: bindingMode.twoWay })\n  @observable\n  public value: Date;\n\n  @bindable\n  public enableTime: boolean = false;\n\n  @bindable\n  public altFormat: string = 'm/d/Y';\n\n  // public locale: any;\n\n  public state: State;\n\n\n  constructor(\n    private store: StoreService,\n  ) {\n\n    this.logger = LogManager.getLogger(\"UxDatePickerCustomElement\");\n\n    this.state = this.store.state;\n  }\n\n  public bind() {\n    if (this.state && this.state.userBasicInfo && this.state.userBasicInfo.culture) {\n      let culture = this.state.userBasicInfo.culture.split(\"-\")[0];\n\n      switch (culture) {\n        case \"es\":\n          // this.logger.debug(\"genericCulture: \", culture);\n\n          // this.locale = es;\n\n          if (this.enableTime) {\n            this.altFormat = `d/m/Y h:i K`;\n          }\n          else {\n            this.altFormat = `d/m/Y`;\n          }\n          break;\n        default:\n          if (this.enableTime) {\n            this.altFormat = `m/d/Y h:i K`;\n          }\n          else {\n            this.altFormat = `m/d/Y`;\n          }\n          break;\n      }\n    }\n  }\n\n  // public attached() {\n\n  //   this.logger.debug(\"attached\");\n\n\n  // }\n\n  get config() {\n    // let c = {};\n    // if (this.locale) {\n    //   c = {\n    //     enableTime: this.enableTime,\n    //     altFormat: `${this.altFormat}`,\n    //     locale: this.locale\n    //   };\n    // }\n    // else {\n    //   c = {\n    //     enableTime: this.enableTime,\n    //     altFormat: `${this.altFormat}`\n    //   };\n    // }\n\n    let c = {\n      enableTime: this.enableTime,\n      altFormat: `${this.altFormat}`\n    };\n\n    // this.logger.debug(\"config:\", c);\n    return c;\n  }\n\n}\n","module.exports = \"<template> <aurelia-flatpickr config.one-time=config value.bind=value></aurelia-flatpickr> </template> \";","import { noView } from 'aurelia-templating';\nimport { autoinject } from 'aurelia-dependency-injection';\nimport { EventAggregator } from 'aurelia-event-aggregator';\nimport nprogress from 'nprogress';\n\n@noView()\n@autoinject\nexport class UxLoadingIndicator {\n  \n  constructor(\n    private ea: EventAggregator) {\n\n    ea.subscribe('router:navigation:processing', this.start);\n    ea.subscribe('router:navigation:complete', this.done);\n\n    // ea.subscribe('app:http_client:requesting', this.start);\n    // ea.subscribe('app:http_client:request_complete', this.done);\n  }\n\n  start() {\n    nprogress.start();\n    nprogress.inc();\n  }\n\n  done() {\n    nprogress.done();\n  }\n}\n","import { bindable, inject, LogManager, customElement, observable, bindingMode } from \"aurelia-framework\";\nimport * as $ from \"jquery\";\nimport { Logger } from \"aurelia-logging\";\n\n@customElement(\"ux-range-input\")\n\n@inject(Element) // Inject the instance of this element\nexport class RangeInput {\n\n  private logger: Logger;\n\n  @bindable\n  public name: string = \"range-input\";\n\n  @bindable({ defaultBindingMode: bindingMode.twoWay })\n  @observable\n  public value: number;\n\n  @bindable\n  public min: number = 1;\n\n  @bindable\n  public max: number = 99;\n\n  @bindable\n  public minRange: number = 1;\n\n  @bindable\n  public maxRange: number = 99;\n\n  public inputElement: HTMLInputElement;\n\n  constructor(private element: Element) {\n\n    this.logger = LogManager.getLogger(\"RangeInput\");\n\n  }\n\n  public attached() {\n\n    // this.logger.debug(\"attached\");\n\n  }\n\n\n  // private onChangeVal(itm) {\n  //   if (itm.value < 60) return 60;\n  //   if (itm.value > 100) return 100;\n  //   return itm.value;\n  // }\n\n  public valueChanged() {\n\n    let elMax = parseFloat(this.max.toString()); // Range default max\n    let elMin = parseFloat(this.min.toString()); // Range default min\n    let val = parseFloat(this.value.toString());\n\n    let elMinRange = parseFloat(this.minRange.toString());\n    let elMaxRange = parseFloat(this.maxRange.toString());\n\n    if (val < elMinRange) {\n      // this.value = elMinRange;\n      return;\n    }\n\n    if (val > elMaxRange) {\n      // this.value = elMaxRange;\n      return;\n    }\n\n    // this.logger.debug(\"thumbRange\");\n    let el = $(this.inputElement);\n    // var val = el.val();\n    let wrapper = $(this.element);\n    let elWidth = el.width() - 15;\n    let thumb = wrapper.find('.thumb');\n    let thumbPercent = (val - elMin) / (elMax - elMin) * elWidth;\n\n    // extra validation to exist or create thumb\n    if (thumb.length) {\n      thumb.find('.thumb-value').html(this.value);\n      thumb.css('left', thumbPercent + 'px');\n    } else {\n      el.after('<div class=\"thumb\" style=\"left: ' + thumbPercent + 'px\"><span class=\"thumb-value\">' + this.value + '</span></div>');\n    }\n\n\n  }\n}\n","module.exports = \"<template> <div class=\\\"form-group custom-range-input\\\"> <label for.bind=name></label> <input ref=inputElement class=custom-range type=range value.bind=value focus.one-time=hasFocus name.one-time=name min.one-time=min max.one-time=max> </div> </template> \";","module.exports = \"<template bindable=router> <nav class=\\\"nav flex-column nav-pills\\\"> <a repeat.for=\\\"route of router.navigation\\\" class=\\\"nav-link ${route.isActive ? 'active' : ''}\\\" href.bind=route.href>${route.title}</a> </nav> </template> \";","module.exports = \"<template bindable=errors> <div class=form-group> <div class=\\\"alert alert-danger\\\" show.bind=errors.length> <p>${'errorMessages.errors' & t}</p> <ul class=list-unstyled> <li repeat.for=\\\"error of errors\\\"> ${error.message} </li> </ul> </div> </div> </template> \";","module.exports = \"<template bindable=router> <nav class=\\\"nav subnav\\\"> <a repeat.for=\\\"route of router.navigation\\\" class=\\\"nav-link ${route.isActive ? 'active' : ''}\\\" href.bind=route.href>${route.title}</a> </nav> </template> \";","import {\n  FrameworkConfiguration,\n  PLATFORM\n} from 'aurelia-framework';\n\nexport function configure(config: FrameworkConfiguration) {\n  config.globalResources([\n    PLATFORM.moduleName('./elements/ux/bootstrap-tooltip/bootstrap-tooltip'),\n    PLATFORM.moduleName('./elements/ux/back-to-top/back-to-top'),\n    PLATFORM.moduleName('./elements/ux/datatable/ux-datatable'),\n    PLATFORM.moduleName('./elements/ux/datatable/ux-datatable-pagination'),\n    PLATFORM.moduleName('./elements/ux/clipboard/ux-clipboard'),\n    PLATFORM.moduleName('./elements/ux/well/ux-well.html'),\n    PLATFORM.moduleName('./elements/ux/side-well/ux-side-well.html'),\n    PLATFORM.moduleName('./elements/ux/validation-summary/ux-validation-summary.html'),\n    PLATFORM.moduleName('./elements/ux/carousel/carousel'),\n    PLATFORM.moduleName('./elements/ux/range-input/range-input'),\n    PLATFORM.moduleName('./elements/ux/date-picker/ux-date-picker'),\n    // PLATFORM.moduleName('./elements/ux/tags-input/ux-tags-input'),\n\n    // PLATFORM.moduleName('./value-converters/blob-to-url'),\n    // PLATFORM.moduleName('./value-converters/files-to-array'),\n    PLATFORM.moduleName('./value-converters/filter'),\n    PLATFORM.moduleName('./value-converters/date-format'),\n    PLATFORM.moduleName('./value-converters/date-time-format'),\n    PLATFORM.moduleName('./value-converters/currency-format'),\n    PLATFORM.moduleName('./attributes/t-html')\n  ]);\n}\n","import * as numeral from 'numeral';\nimport 'numeral/locales';\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\nimport { autoinject } from 'aurelia-framework';\n\n@autoinject()\nexport class CurrencyFormatValueConverter {\n\n  public state: State;\n\n  constructor(\n    private store: StoreService,\n  ) {\n    this.state = this.store.state;\n  }\n\n  toView(value) {\n\n    if (this.state && this.state.userBasicInfo && this.state.userBasicInfo.culture) {\n      var genericCulture = this.state.userBasicInfo.culture.split(\"-\")[0];\n\n      // console.log(\"genericCulture\" + genericCulture);\n\n      numeral.locale(genericCulture);\n\n      return numeral(value).format('($0,0.00)');\n    }\n    else {\n      return numeral(value).format('($0,0.00)');\n    }\n  }\n\n  fromView(value) {\n    var myNumeral = numeral(value);\n    return myNumeral.value();\n  }\n}\n","import * as moment from 'moment';\nimport { StoreService } from 'common/store/store-service';\nimport { State } from 'common/store/store-model';\nimport { autoinject } from 'aurelia-framework';\n\n@autoinject()\nexport class DateFormatValueConverter {\n\n  public state: State;\n\n  constructor(\n    private store: StoreService,\n  ) {\n    this.state = this.store.state;\n  }\n\n  toView(value) {\n    if (value) {\n\n      if (this.state && this.state.userBasicInfo) {\n        return moment(value).format(this.state.userBasicInfo.dateFormat);\n      }\n      else {\n        return moment(value).format('M/D/YYYY');\n      }\n    }\n    else {\n      return \"\";\n    }\n  }\n}\n","import * as moment from 'moment-timezone';\nimport { State } from 'common/store/store-model';\nimport { autoinject } from 'aurelia-framework';\nimport { StoreService } from 'common/store/store-service';\n\n@autoinject()\nexport class DateTimeFormatValueConverter {\n\n  public state: State;\n\n  constructor(\n    private store: StoreService,\n  ) {\n    this.state = this.store.state;\n  }\n\n  toView(value) {\n    if (value) {\n\n      if (this.state && this.state.userBasicInfo && this.state.userBasicInfo.timezone) {\n        return moment(value).tz(this.state.userBasicInfo.timezone).format(this.state.userBasicInfo.dateTimeFormat);\n      }\n      else if (this.state && this.state.userBasicInfo) {\n        return moment(value).format(this.state.userBasicInfo.dateTimeFormat);\n      }\n      else {\n        return moment(value).format('M/D/YYYY h:mm:ss a');\n      }\n\n    }\n    else {\n      return \"\";\n    }\n\n  }\n}\n","export class FilterValueConverter {\n  toView(array, propertyName, filter_on) {\n    return array.filter(i => i[propertyName] == filter_on);\n  }\n}\n\nexport class FilterOnPropertyValueConverter {\n  toView(array: {}[], property: string, exp: string) {\n\n    if (array === undefined || array === null || property === undefined || exp === undefined) {\n      console.debug(\"Error\");\n      return array;\n    }\n    return array.filter((item) => item[property].toLowerCase().indexOf(exp.toLowerCase()) > -1);\n  }\n}\n\nexport class HasPropertyValueValueConverter {\n  toView(array: {}[], property: string, exp: string) {\n\n    if (array === undefined || array === null || property === undefined || exp === undefined) {\n      return false;\n    }\n    return array.filter((item) => item[property].toLowerCase().indexOf(exp.toLowerCase()) > -1).length > 0;\n  }\n}\n\nexport class GenericFilterValueConverter {\n  toView(array, value, cols, showResults = false) {\n    if (!value) { return showResults ? array : []; };\n\n    var arrayOut = array.filter(\n      function (arrayIn) {\n        for (var col in arrayIn) {\n          if (arrayIn.hasOwnProperty(col)) {\n            if (cols.indexOf(col) != -1 && arrayIn[col].toLowerCase()\n              .indexOf(value.toLowerCase()) != -1) {\n              return true;\n            }\n          }\n        };\n        return false;\n      });\n    return arrayOut;\n  }\n}\n","exports = module.exports = require(\"../../css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".flatpickr-calendar {\\n  background: transparent;\\n  overflow: hidden;\\n  max-height: 0;\\n  opacity: 0;\\n  visibility: hidden;\\n  text-align: center;\\n  padding: 0;\\n  -webkit-animation: none;\\n          animation: none;\\n  direction: ltr;\\n  border: 0;\\n  font-size: 14px;\\n  line-height: 24px;\\n  border-radius: 5px;\\n  position: absolute;\\n  width: 315px;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n  -ms-touch-action: manipulation;\\n      touch-action: manipulation;\\n  background: #fff;\\n  -webkit-box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0,0,0,0.08);\\n          box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0,0,0,0.08);\\n}\\n.flatpickr-calendar.open,\\n.flatpickr-calendar.inline {\\n  opacity: 1;\\n  visibility: visible;\\n  overflow: visible;\\n  max-height: 640px;\\n}\\n.flatpickr-calendar.open {\\n  display: inline-block;\\n  z-index: 99999;\\n}\\n.flatpickr-calendar.animate.open {\\n  -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);\\n          animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);\\n}\\n.flatpickr-calendar.inline {\\n  display: block;\\n  position: relative;\\n  top: 2px;\\n}\\n.flatpickr-calendar.static {\\n  position: absolute;\\n  top: calc(100% + 2px);\\n}\\n.flatpickr-calendar.static.open {\\n  z-index: 999;\\n  display: block;\\n}\\n.flatpickr-calendar.hasWeeks {\\n  width: auto;\\n}\\n.flatpickr-calendar .hasWeeks .dayContainer,\\n.flatpickr-calendar .hasTime .dayContainer {\\n  border-bottom: 0;\\n  border-bottom-right-radius: 0;\\n  border-bottom-left-radius: 0;\\n}\\n.flatpickr-calendar .hasWeeks .dayContainer {\\n  border-left: 0;\\n}\\n.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {\\n  height: 40px;\\n  border-top: 1px solid #e6e6e6;\\n}\\n.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {\\n  height: auto;\\n}\\n.flatpickr-calendar:before,\\n.flatpickr-calendar:after {\\n  position: absolute;\\n  display: block;\\n  pointer-events: none;\\n  border: solid transparent;\\n  content: '';\\n  height: 0;\\n  width: 0;\\n  left: 22px;\\n}\\n.flatpickr-calendar.rightMost:before,\\n.flatpickr-calendar.rightMost:after {\\n  left: auto;\\n  right: 22px;\\n}\\n.flatpickr-calendar:before {\\n  border-width: 5px;\\n  margin: 0 -5px;\\n}\\n.flatpickr-calendar:after {\\n  border-width: 4px;\\n  margin: 0 -4px;\\n}\\n.flatpickr-calendar.arrowTop:before,\\n.flatpickr-calendar.arrowTop:after {\\n  bottom: 100%;\\n}\\n.flatpickr-calendar.arrowTop:before {\\n  border-bottom-color: #e6e6e6;\\n}\\n.flatpickr-calendar.arrowTop:after {\\n  border-bottom-color: #fff;\\n}\\n.flatpickr-calendar.arrowBottom:before,\\n.flatpickr-calendar.arrowBottom:after {\\n  top: 100%;\\n}\\n.flatpickr-calendar.arrowBottom:before {\\n  border-top-color: #e6e6e6;\\n}\\n.flatpickr-calendar.arrowBottom:after {\\n  border-top-color: #fff;\\n}\\n.flatpickr-calendar:focus {\\n  outline: 0;\\n}\\n.flatpickr-wrapper {\\n  position: relative;\\n  display: inline-block;\\n}\\n.flatpickr-month {\\n  background: transparent;\\n  color: rgba(0,0,0,0.9);\\n  fill: rgba(0,0,0,0.9);\\n  height: 28px;\\n  line-height: 1;\\n  text-align: center;\\n  position: relative;\\n  -webkit-user-select: none;\\n     -moz-user-select: none;\\n      -ms-user-select: none;\\n          user-select: none;\\n  overflow: hidden;\\n}\\n.flatpickr-prev-month,\\n.flatpickr-next-month {\\n  text-decoration: none;\\n  cursor: pointer;\\n  position: absolute;\\n  top: 0px;\\n  line-height: 16px;\\n  height: 28px;\\n  padding: 10px calc(3.57% - 1.5px);\\n  z-index: 3;\\n}\\n.flatpickr-prev-month i,\\n.flatpickr-next-month i {\\n  position: relative;\\n}\\n.flatpickr-prev-month.flatpickr-prev-month,\\n.flatpickr-next-month.flatpickr-prev-month {\\n/*\\n        /*rtl:begin:ignore*/\\n/*\\n        */\\n  left: 0;\\n/*\\n        /*rtl:end:ignore*/\\n/*\\n        */\\n}\\n/*\\n        /*rtl:begin:ignore*/\\n/*\\n        /*rtl:end:ignore*/\\n.flatpickr-prev-month.flatpickr-next-month,\\n.flatpickr-next-month.flatpickr-next-month {\\n/*\\n        /*rtl:begin:ignore*/\\n/*\\n        */\\n  right: 0;\\n/*\\n        /*rtl:end:ignore*/\\n/*\\n        */\\n}\\n/*\\n        /*rtl:begin:ignore*/\\n/*\\n        /*rtl:end:ignore*/\\n.flatpickr-prev-month:hover,\\n.flatpickr-next-month:hover {\\n  color: #959ea9;\\n}\\n.flatpickr-prev-month:hover svg,\\n.flatpickr-next-month:hover svg {\\n  fill: #f64747;\\n}\\n.flatpickr-prev-month svg,\\n.flatpickr-next-month svg {\\n  width: 14px;\\n}\\n.flatpickr-prev-month svg path,\\n.flatpickr-next-month svg path {\\n  -webkit-transition: fill 0.1s;\\n  transition: fill 0.1s;\\n  fill: inherit;\\n}\\n.numInputWrapper {\\n  position: relative;\\n  height: auto;\\n}\\n.numInputWrapper input,\\n.numInputWrapper span {\\n  display: inline-block;\\n}\\n.numInputWrapper input {\\n  width: 100%;\\n}\\n.numInputWrapper span {\\n  position: absolute;\\n  right: 0;\\n  width: 14px;\\n  padding: 0 4px 0 2px;\\n  height: 50%;\\n  line-height: 50%;\\n  opacity: 0;\\n  cursor: pointer;\\n  border: 1px solid rgba(57,57,57,0.05);\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n}\\n.numInputWrapper span:hover {\\n  background: rgba(0,0,0,0.1);\\n}\\n.numInputWrapper span:active {\\n  background: rgba(0,0,0,0.2);\\n}\\n.numInputWrapper span:after {\\n  display: block;\\n  content: \\\"\\\";\\n  position: absolute;\\n  top: 33%;\\n}\\n.numInputWrapper span.arrowUp {\\n  top: 0;\\n  border-bottom: 0;\\n}\\n.numInputWrapper span.arrowUp:after {\\n  border-left: 4px solid transparent;\\n  border-right: 4px solid transparent;\\n  border-bottom: 4px solid rgba(57,57,57,0.6);\\n}\\n.numInputWrapper span.arrowDown {\\n  top: 50%;\\n}\\n.numInputWrapper span.arrowDown:after {\\n  border-left: 4px solid transparent;\\n  border-right: 4px solid transparent;\\n  border-top: 4px solid rgba(57,57,57,0.6);\\n}\\n.numInputWrapper span svg {\\n  width: inherit;\\n  height: auto;\\n}\\n.numInputWrapper span svg path {\\n  fill: rgba(0,0,0,0.5);\\n}\\n.numInputWrapper:hover {\\n  background: rgba(0,0,0,0.05);\\n}\\n.numInputWrapper:hover span {\\n  opacity: 1;\\n}\\n.flatpickr-current-month {\\n  font-size: 135%;\\n  line-height: inherit;\\n  font-weight: 300;\\n  color: inherit;\\n  position: absolute;\\n  width: 75%;\\n  left: 12.5%;\\n  padding: 6.16px 0 0 0;\\n  line-height: 1;\\n  height: 28px;\\n  display: inline-block;\\n  text-align: center;\\n  -webkit-transform: translate3d(0px, 0px, 0px);\\n          transform: translate3d(0px, 0px, 0px);\\n}\\n.flatpickr-current-month.slideLeft {\\n  -webkit-transform: translate3d(-100%, 0px, 0px);\\n          transform: translate3d(-100%, 0px, 0px);\\n  -webkit-animation: fpFadeOut 400ms ease, fpSlideLeft 400ms cubic-bezier(0.23, 1, 0.32, 1);\\n          animation: fpFadeOut 400ms ease, fpSlideLeft 400ms cubic-bezier(0.23, 1, 0.32, 1);\\n}\\n.flatpickr-current-month.slideLeftNew {\\n  -webkit-transform: translate3d(100%, 0px, 0px);\\n          transform: translate3d(100%, 0px, 0px);\\n  -webkit-animation: fpFadeIn 400ms ease, fpSlideLeftNew 400ms cubic-bezier(0.23, 1, 0.32, 1);\\n          animation: fpFadeIn 400ms ease, fpSlideLeftNew 400ms cubic-bezier(0.23, 1, 0.32, 1);\\n}\\n.flatpickr-current-month.slideRight {\\n  -webkit-transform: translate3d(100%, 0px, 0px);\\n          transform: translate3d(100%, 0px, 0px);\\n  -webkit-animation: fpFadeOut 400ms ease, fpSlideRight 400ms cubic-bezier(0.23, 1, 0.32, 1);\\n          animation: fpFadeOut 400ms ease, fpSlideRight 400ms cubic-bezier(0.23, 1, 0.32, 1);\\n}\\n.flatpickr-current-month.slideRightNew {\\n  -webkit-transform: translate3d(0, 0, 0px);\\n          transform: translate3d(0, 0, 0px);\\n  -webkit-animation: fpFadeIn 400ms ease, fpSlideRightNew 400ms cubic-bezier(0.23, 1, 0.32, 1);\\n          animation: fpFadeIn 400ms ease, fpSlideRightNew 400ms cubic-bezier(0.23, 1, 0.32, 1);\\n}\\n.flatpickr-current-month span.cur-month {\\n  font-family: inherit;\\n  font-weight: 700;\\n  color: inherit;\\n  display: inline-block;\\n  margin-left: 0.5ch;\\n  padding: 0;\\n}\\n.flatpickr-current-month span.cur-month:hover {\\n  background: rgba(0,0,0,0.05);\\n}\\n.flatpickr-current-month .numInputWrapper {\\n  width: 6ch;\\n  width: 7ch\\\\0;\\n  display: inline-block;\\n}\\n.flatpickr-current-month .numInputWrapper span.arrowUp:after {\\n  border-bottom-color: rgba(0,0,0,0.9);\\n}\\n.flatpickr-current-month .numInputWrapper span.arrowDown:after {\\n  border-top-color: rgba(0,0,0,0.9);\\n}\\n.flatpickr-current-month input.cur-year {\\n  background: transparent;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n  color: inherit;\\n  cursor: default;\\n  padding: 0 0 0 0.5ch;\\n  margin: 0;\\n  display: inline-block;\\n  font-size: inherit;\\n  font-family: inherit;\\n  font-weight: 300;\\n  line-height: inherit;\\n  height: initial;\\n  border: 0;\\n  border-radius: 0;\\n  vertical-align: initial;\\n}\\n.flatpickr-current-month input.cur-year:focus {\\n  outline: 0;\\n}\\n.flatpickr-current-month input.cur-year[disabled],\\n.flatpickr-current-month input.cur-year[disabled]:hover {\\n  font-size: 100%;\\n  color: rgba(0,0,0,0.5);\\n  background: transparent;\\n  pointer-events: none;\\n}\\n.flatpickr-weekdays {\\n  background: transparent;\\n  text-align: center;\\n  overflow: hidden;\\n  width: 315px;\\n  display: -ms-flexbox;\\n  display: -webkit-box;\\n  display: flex;\\n  -ms-flex-align: center;\\n      -webkit-box-align: center;\\n          align-items: center;\\n  height: 28px;\\n}\\nspan.flatpickr-weekday {\\n  cursor: default;\\n  font-size: 90%;\\n  background: transparent;\\n  color: rgba(0,0,0,0.54);\\n  line-height: 1;\\n  margin: 0;\\n  text-align: center;\\n  display: block;\\n  -ms-flex: 1;\\n      -webkit-box-flex: 1;\\n          flex: 1;\\n  font-weight: bolder;\\n}\\n.dayContainer,\\n.flatpickr-weeks {\\n  padding: 1px 0 0 0;\\n}\\n.flatpickr-days {\\n  position: relative;\\n  overflow: hidden;\\n  display: -ms-flexbox;\\n  display: -webkit-box;\\n  display: flex;\\n  width: 315px;\\n}\\n.flatpickr-days:focus {\\n  outline: 0;\\n}\\n.dayContainer {\\n  padding: 0;\\n  outline: 0;\\n  text-align: left;\\n  width: 315px;\\n  min-width: 315px;\\n  max-width: 315px;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n  display: inline-block;\\n  display: -ms-flexbox;\\n  display: -webkit-box;\\n  display: flex;\\n  flex-wrap: wrap;\\n  -ms-flex-wrap: wrap;\\n  -ms-flex-pack: justify;\\n          justify-content: space-around;\\n  -webkit-transform: translate3d(0px, 0px, 0px);\\n          transform: translate3d(0px, 0px, 0px);\\n  opacity: 1;\\n}\\n.flatpickr-calendar.animate .dayContainer.slideLeft {\\n  -webkit-animation: fpFadeOut 400ms cubic-bezier(0.23, 1, 0.32, 1), fpSlideLeft 400ms cubic-bezier(0.23, 1, 0.32, 1);\\n          animation: fpFadeOut 400ms cubic-bezier(0.23, 1, 0.32, 1), fpSlideLeft 400ms cubic-bezier(0.23, 1, 0.32, 1);\\n}\\n.flatpickr-calendar.animate .dayContainer.slideLeft,\\n.flatpickr-calendar.animate .dayContainer.slideLeftNew {\\n  -webkit-transform: translate3d(-100%, 0px, 0px);\\n          transform: translate3d(-100%, 0px, 0px);\\n}\\n.flatpickr-calendar.animate .dayContainer.slideLeftNew {\\n  -webkit-animation: fpFadeIn 400ms cubic-bezier(0.23, 1, 0.32, 1), fpSlideLeft 400ms cubic-bezier(0.23, 1, 0.32, 1);\\n          animation: fpFadeIn 400ms cubic-bezier(0.23, 1, 0.32, 1), fpSlideLeft 400ms cubic-bezier(0.23, 1, 0.32, 1);\\n}\\n.flatpickr-calendar.animate .dayContainer.slideRight {\\n  -webkit-animation: fpFadeOut 400ms cubic-bezier(0.23, 1, 0.32, 1), fpSlideRight 400ms cubic-bezier(0.23, 1, 0.32, 1);\\n          animation: fpFadeOut 400ms cubic-bezier(0.23, 1, 0.32, 1), fpSlideRight 400ms cubic-bezier(0.23, 1, 0.32, 1);\\n  -webkit-transform: translate3d(100%, 0px, 0px);\\n          transform: translate3d(100%, 0px, 0px);\\n}\\n.flatpickr-calendar.animate .dayContainer.slideRightNew {\\n  -webkit-animation: fpFadeIn 400ms cubic-bezier(0.23, 1, 0.32, 1), fpSlideRightNew 400ms cubic-bezier(0.23, 1, 0.32, 1);\\n          animation: fpFadeIn 400ms cubic-bezier(0.23, 1, 0.32, 1), fpSlideRightNew 400ms cubic-bezier(0.23, 1, 0.32, 1);\\n}\\n.flatpickr-day {\\n  background: none;\\n  border: 1px solid transparent;\\n  border-radius: 150px;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n  color: #393939;\\n  cursor: pointer;\\n  font-weight: 400;\\n  width: 14.2857143%;\\n  -ms-flex-preferred-size: 14.2857143%;\\n      flex-basis: 14.2857143%;\\n  max-width: 40px;\\n  height: 40px;\\n  line-height: 40px;\\n  margin: 0;\\n  display: inline-block;\\n  position: relative;\\n  -ms-flex-pack: center;\\n      -webkit-box-pack: center;\\n          justify-content: center;\\n  text-align: center;\\n}\\n.flatpickr-day.inRange,\\n.flatpickr-day.prevMonthDay.inRange,\\n.flatpickr-day.nextMonthDay.inRange,\\n.flatpickr-day.today.inRange,\\n.flatpickr-day.prevMonthDay.today.inRange,\\n.flatpickr-day.nextMonthDay.today.inRange,\\n.flatpickr-day:hover,\\n.flatpickr-day.prevMonthDay:hover,\\n.flatpickr-day.nextMonthDay:hover,\\n.flatpickr-day:focus,\\n.flatpickr-day.prevMonthDay:focus,\\n.flatpickr-day.nextMonthDay:focus {\\n  cursor: pointer;\\n  outline: 0;\\n  background: #e6e6e6;\\n  border-color: #e6e6e6;\\n}\\n.flatpickr-day.today {\\n  border-color: #959ea9;\\n}\\n.flatpickr-day.today:hover,\\n.flatpickr-day.today:focus {\\n  border-color: #959ea9;\\n  background: #959ea9;\\n  color: #fff;\\n}\\n.flatpickr-day.selected,\\n.flatpickr-day.startRange,\\n.flatpickr-day.endRange,\\n.flatpickr-day.selected.inRange,\\n.flatpickr-day.startRange.inRange,\\n.flatpickr-day.endRange.inRange,\\n.flatpickr-day.selected:focus,\\n.flatpickr-day.startRange:focus,\\n.flatpickr-day.endRange:focus,\\n.flatpickr-day.selected:hover,\\n.flatpickr-day.startRange:hover,\\n.flatpickr-day.endRange:hover,\\n.flatpickr-day.selected.prevMonthDay,\\n.flatpickr-day.startRange.prevMonthDay,\\n.flatpickr-day.endRange.prevMonthDay,\\n.flatpickr-day.selected.nextMonthDay,\\n.flatpickr-day.startRange.nextMonthDay,\\n.flatpickr-day.endRange.nextMonthDay {\\n  background: #569ff7;\\n  -webkit-box-shadow: none;\\n          box-shadow: none;\\n  color: #fff;\\n  border-color: #569ff7;\\n}\\n.flatpickr-day.selected.startRange,\\n.flatpickr-day.startRange.startRange,\\n.flatpickr-day.endRange.startRange {\\n  border-radius: 50px 0 0 50px;\\n}\\n.flatpickr-day.selected.endRange,\\n.flatpickr-day.startRange.endRange,\\n.flatpickr-day.endRange.endRange {\\n  border-radius: 0 50px 50px 0;\\n}\\n.flatpickr-day.selected.startRange + .endRange,\\n.flatpickr-day.startRange.startRange + .endRange,\\n.flatpickr-day.endRange.startRange + .endRange {\\n  -webkit-box-shadow: -10px 0 0 #569ff7;\\n          box-shadow: -10px 0 0 #569ff7;\\n}\\n.flatpickr-day.selected.startRange.endRange,\\n.flatpickr-day.startRange.startRange.endRange,\\n.flatpickr-day.endRange.startRange.endRange {\\n  border-radius: 50px;\\n}\\n.flatpickr-day.inRange {\\n  border-radius: 0;\\n  -webkit-box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;\\n          box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;\\n}\\n.flatpickr-day.disabled,\\n.flatpickr-day.disabled:hover {\\n  pointer-events: none;\\n}\\n.flatpickr-day.disabled,\\n.flatpickr-day.disabled:hover,\\n.flatpickr-day.prevMonthDay,\\n.flatpickr-day.nextMonthDay,\\n.flatpickr-day.notAllowed,\\n.flatpickr-day.notAllowed.prevMonthDay,\\n.flatpickr-day.notAllowed.nextMonthDay {\\n  color: rgba(57,57,57,0.3);\\n  background: transparent;\\n  border-color: transparent;\\n  cursor: default;\\n}\\n.flatpickr-day.week.selected {\\n  border-radius: 0;\\n  -webkit-box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7;\\n          box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7;\\n}\\n.rangeMode .flatpickr-day {\\n  margin-top: 1px;\\n}\\n.flatpickr-weekwrapper {\\n  display: inline-block;\\n  float: left;\\n}\\n.flatpickr-weekwrapper .flatpickr-weeks {\\n  padding: 0 12px;\\n  -webkit-box-shadow: 1px 0 0 #e6e6e6;\\n          box-shadow: 1px 0 0 #e6e6e6;\\n}\\n.flatpickr-weekwrapper .flatpickr-weekday {\\n  float: none;\\n  width: 100%;\\n  line-height: 28px;\\n}\\n.flatpickr-weekwrapper span.flatpickr-day {\\n  display: block;\\n  width: 100%;\\n  max-width: none;\\n}\\n.flatpickr-innerContainer {\\n  display: block;\\n  display: -ms-flexbox;\\n  display: -webkit-box;\\n  display: flex;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n  overflow: hidden;\\n}\\n.flatpickr-rContainer {\\n  display: inline-block;\\n  padding: 0;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n}\\n.flatpickr-time {\\n  text-align: center;\\n  outline: 0;\\n  display: block;\\n  height: 0;\\n  line-height: 40px;\\n  max-height: 40px;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n  overflow: hidden;\\n  display: -ms-flexbox;\\n  display: -webkit-box;\\n  display: flex;\\n}\\n.flatpickr-time:after {\\n  content: \\\"\\\";\\n  display: table;\\n  clear: both;\\n}\\n.flatpickr-time .numInputWrapper {\\n  -ms-flex: 1;\\n      -webkit-box-flex: 1;\\n          flex: 1;\\n  width: 40%;\\n  height: 40px;\\n  float: left;\\n}\\n.flatpickr-time .numInputWrapper span.arrowUp:after {\\n  border-bottom-color: #393939;\\n}\\n.flatpickr-time .numInputWrapper span.arrowDown:after {\\n  border-top-color: #393939;\\n}\\n.flatpickr-time.hasSeconds .numInputWrapper {\\n  width: 26%;\\n}\\n.flatpickr-time.time24hr .numInputWrapper {\\n  width: 49%;\\n}\\n.flatpickr-time input {\\n  background: transparent;\\n  -webkit-box-shadow: none;\\n          box-shadow: none;\\n  border: 0;\\n  border-radius: 0;\\n  text-align: center;\\n  margin: 0;\\n  padding: 0;\\n  height: inherit;\\n  line-height: inherit;\\n  cursor: pointer;\\n  color: #393939;\\n  font-size: 14px;\\n  position: relative;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n}\\n.flatpickr-time input.flatpickr-hour {\\n  font-weight: bold;\\n}\\n.flatpickr-time input.flatpickr-minute,\\n.flatpickr-time input.flatpickr-second {\\n  font-weight: 400;\\n}\\n.flatpickr-time input:focus {\\n  outline: 0;\\n  border: 0;\\n}\\n.flatpickr-time .flatpickr-time-separator,\\n.flatpickr-time .flatpickr-am-pm {\\n  height: inherit;\\n  display: inline-block;\\n  float: left;\\n  line-height: inherit;\\n  color: #393939;\\n  font-weight: bold;\\n  width: 2%;\\n  -webkit-user-select: none;\\n     -moz-user-select: none;\\n      -ms-user-select: none;\\n          user-select: none;\\n  -webkit-align-self: center;\\n      -ms-flex-item-align: center;\\n              -ms-grid-row-align: center;\\n          align-self: center;\\n}\\n.flatpickr-time .flatpickr-am-pm {\\n  outline: 0;\\n  width: 18%;\\n  cursor: pointer;\\n  text-align: center;\\n  font-weight: 400;\\n}\\n.flatpickr-time .flatpickr-am-pm:hover,\\n.flatpickr-time .flatpickr-am-pm:focus {\\n  background: #f0f0f0;\\n}\\n.flatpickr-input[readonly] {\\n  cursor: pointer;\\n}\\n@-webkit-keyframes fpFadeInDown {\\n  from {\\n    opacity: 0;\\n    -webkit-transform: translate3d(0, -20px, 0);\\n            transform: translate3d(0, -20px, 0);\\n  }\\n  to {\\n    opacity: 1;\\n    -webkit-transform: translate3d(0, 0, 0);\\n            transform: translate3d(0, 0, 0);\\n  }\\n}\\n@keyframes fpFadeInDown {\\n  from {\\n    opacity: 0;\\n    -webkit-transform: translate3d(0, -20px, 0);\\n            transform: translate3d(0, -20px, 0);\\n  }\\n  to {\\n    opacity: 1;\\n    -webkit-transform: translate3d(0, 0, 0);\\n            transform: translate3d(0, 0, 0);\\n  }\\n}\\n@-webkit-keyframes fpSlideLeft {\\n  from {\\n    -webkit-transform: translate3d(0px, 0px, 0px);\\n            transform: translate3d(0px, 0px, 0px);\\n  }\\n  to {\\n    -webkit-transform: translate3d(-100%, 0px, 0px);\\n            transform: translate3d(-100%, 0px, 0px);\\n  }\\n}\\n@keyframes fpSlideLeft {\\n  from {\\n    -webkit-transform: translate3d(0px, 0px, 0px);\\n            transform: translate3d(0px, 0px, 0px);\\n  }\\n  to {\\n    -webkit-transform: translate3d(-100%, 0px, 0px);\\n            transform: translate3d(-100%, 0px, 0px);\\n  }\\n}\\n@-webkit-keyframes fpSlideLeftNew {\\n  from {\\n    -webkit-transform: translate3d(100%, 0px, 0px);\\n            transform: translate3d(100%, 0px, 0px);\\n  }\\n  to {\\n    -webkit-transform: translate3d(0px, 0px, 0px);\\n            transform: translate3d(0px, 0px, 0px);\\n  }\\n}\\n@keyframes fpSlideLeftNew {\\n  from {\\n    -webkit-transform: translate3d(100%, 0px, 0px);\\n            transform: translate3d(100%, 0px, 0px);\\n  }\\n  to {\\n    -webkit-transform: translate3d(0px, 0px, 0px);\\n            transform: translate3d(0px, 0px, 0px);\\n  }\\n}\\n@-webkit-keyframes fpSlideRight {\\n  from {\\n    -webkit-transform: translate3d(0, 0, 0px);\\n            transform: translate3d(0, 0, 0px);\\n  }\\n  to {\\n    -webkit-transform: translate3d(100%, 0px, 0px);\\n            transform: translate3d(100%, 0px, 0px);\\n  }\\n}\\n@keyframes fpSlideRight {\\n  from {\\n    -webkit-transform: translate3d(0, 0, 0px);\\n            transform: translate3d(0, 0, 0px);\\n  }\\n  to {\\n    -webkit-transform: translate3d(100%, 0px, 0px);\\n            transform: translate3d(100%, 0px, 0px);\\n  }\\n}\\n@-webkit-keyframes fpSlideRightNew {\\n  from {\\n    -webkit-transform: translate3d(-100%, 0, 0px);\\n            transform: translate3d(-100%, 0, 0px);\\n  }\\n  to {\\n    -webkit-transform: translate3d(0, 0, 0px);\\n            transform: translate3d(0, 0, 0px);\\n  }\\n}\\n@keyframes fpSlideRightNew {\\n  from {\\n    -webkit-transform: translate3d(-100%, 0, 0px);\\n            transform: translate3d(-100%, 0, 0px);\\n  }\\n  to {\\n    -webkit-transform: translate3d(0, 0, 0px);\\n            transform: translate3d(0, 0, 0px);\\n  }\\n}\\n@-webkit-keyframes fpFadeOut {\\n  from {\\n    opacity: 1;\\n  }\\n  to {\\n    opacity: 0;\\n  }\\n}\\n@keyframes fpFadeOut {\\n  from {\\n    opacity: 1;\\n  }\\n  to {\\n    opacity: 0;\\n  }\\n}\\n@-webkit-keyframes fpFadeIn {\\n  from {\\n    opacity: 0;\\n  }\\n  to {\\n    opacity: 1;\\n  }\\n}\\n@keyframes fpFadeIn {\\n  from {\\n    opacity: 0;\\n  }\\n  to {\\n    opacity: 1;\\n  }\\n}\\n\", \"\"]);\n\n// exports\n","export class Gui {\n}\n","module.exports = \"<template> <style>.theme-showcase .jumbotron{margin:4rem 0}.section-demo .title{margin-bottom:24px;padding:22px;background:#f2f2f2}.section-demo .subtitle{bottom:5px;color:#c0c1c2;display:block;font-weight:400;font-size:13px;line-height:15px;left:0;margin-left:20px;position:absolute;width:260px}.section-demo .content{position:relative;width:100%;margin-bottom:40px;padding-left:25%}.section-demo .row [class*=col-]{margin-bottom:40px}.progress-demo .progress{margin-bottom:10px}.grid-demo{margin:0}.grid-demo [class*=col-]{padding-top:15px;padding-bottom:15px;font-size:12px;background-color:#f2f5fa;border:1px solid #d8dce1}.layout-demo{margin:0}.layout-demo .container-fluid{position:relative;min-height:640px;padding:0;background-color:#ebeff0;border:8px solid #607d8b;border-top-width:84px;border-radius:3px;overflow:hidden}.layout-demo .sidebar{position:absolute}.main-container{padding-left:88px;transition:padding .2s}.layout-demo .sidebar:hover+.main-container{padding-left:280px}</style> <div class=\\\"container theme-showcase\\\" role=main> <div class=jumbotron> <h1>GUI Example</h1> <p>This is a template showcasing the optional theme stylesheet included in Bootstrap. Use it as a starting point to create something more unique by building on or modifying it.</p> </div> <div class=section-demo> <h2 class=title>Typography</h2> <div class=row> <div class=\\\"col-12 content\\\"> <h1><span class=subtitle>Header 1</span>Lorem ipsum dolor sit amet, consectetur adipisicing elit. </h1> </div> <div class=\\\"col-12 content\\\"> <h2><span class=subtitle>Header 2</span>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</h2> </div> <div class=\\\"col-12 content\\\"> <h3><span class=subtitle>Header 3</span>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</h3> </div> <div class=\\\"col-12 content\\\"> <h4><span class=subtitle>Header 4</span>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</h4> </div> <div class=\\\"col-12 content\\\"> <h5><span class=subtitle>Header 5</span>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</h5> </div> <div class=\\\"col-12 content\\\"> <h6><span class=subtitle>Header 6</span>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</h6> </div> <div class=\\\"col-12 content\\\"> <h7><span class=subtitle>Header 7</span>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</h7> </div> <div class=\\\"col-12 content\\\"> <p><span class=subtitle>Paragraph</span> I will be the leader of a company that ends up being worth billions of dollars, because I got the answers. I understand culture. I am the nucleus. I think that’s a responsibility that I have, to push possibilities, to show people, this is the level that things could be at.</p> </div> <div class=\\\"col-12 content\\\"> <span class=subtitle>Quote</span> <div class=\\\"blockquote undefined\\\"> <p>I will be the leader of a company that ends up being worth billions of dollars, because I got the answers. I understand culture. I am the nucleus. I think that’s a responsibility that I have, to push possibilities, to show people, this is the level that things could be at.</p> <small>Kanye West, Musician</small> </div> </div> <div class=\\\"col-12 content\\\"> <span class=subtitle>Muted Text</span> <p class=text-muted>I will be the leader of a company that ends up being worth billions of dollars, because I got the answers...</p> </div> <div class=\\\"col-12 content\\\"> <span class=subtitle>Primary Text</span> <p class=text-primary>I will be the leader of a company that ends up being worth billions of dollars, because I got the answers... </p> </div> <div class=\\\"col-12 content\\\"> <span class=subtitle>Info Text</span> <p class=text-info>I will be the leader of a company that ends up being worth billions of dollars, because I got the answers... </p> </div> <div class=\\\"col-12 content\\\"> <span class=subtitle>Success Text</span> <p class=text-success>I will be the leader of a company that ends up being worth billions of dollars, because I got the answers... </p> </div> <div class=\\\"col-12 content\\\"> <span class=subtitle>Warning Text</span> <p class=text-warning>I will be the leader of a company that ends up being worth billions of dollars, because I got the answers... </p> </div> <div class=\\\"col-12 content\\\"> <span class=subtitle>Danger Text</span> <p class=text-danger>I will be the leader of a company that ends up being worth billions of dollars, because I got the answers... </p> </div> <div class=\\\"col-12 content\\\"> <h2><span class=subtitle>Small Tag</span> Header with small subtitle<br> <small>Use \\\"small\\\" tag for the headers</small></h2> </div> </div> </div> <div class=section-demo> <h2 class=title>Avatars</h2> <div class=row> <div class=\\\"col-12 content\\\"> <h3 class=subtitle><small>Pick your style</small></h3> <img class=\\\"green avatar rounded-circle\\\" alt=48x48 width=48 height=48 src=data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20pointer-events%3D%22none%22%20width%3D%2246%22%20height%3D%2246%22%20style%3D%22background-color%3A%404854%3B%20width%3A%2046px%3B%20height%3A%2046px%3B%22%3E%3Ctext%20text-anchor%3D%22middle%22%20y%3D%2250%25%22%20x%3D%2250%25%22%20dy%3D%220.35em%22%20pointer-events%3D%22auto%22%20fill%3D%22%23ffffff%22%20font-family%3D%22HelveticaNeue-Light%2CHelvetica%20Neue%20Light%2CHelvetica%20Neue%2CHelvetica%2C%20Arial%2CLucida%20Grande%2C%20sans-serif%22%20style%3D%22font-weight%3A%20400%3B%20font-size%3A%2020px%3B%22%3EGA%3C%2Ftext%3E%3C%2Fsvg%3E> <img class=\\\"green avatar rounded-circle\\\" alt=48x48 width=48 height=48 src=https://topmops.net/wp-content/uploads/2017/01/avatar-placeholder-generic.jpg> </div> </div> <div class=row> <div class=\\\"col-12 content\\\"> <h3 class=subtitle><small>Pick your size</small></h3> <img class=\\\"avatar-sm green avatar rounded-circle\\\" alt=36x36 width=36 height=36 src=\\\"data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2275%22%20height%3D%2275%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2075%2075%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_1665eea11cd%20text%20%7B%20fill%3Argba(255%2C255%2C255%2C.75)%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A10pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_1665eea11cd%22%3E%3Crect%20width%3D%2275%22%20height%3D%2275%22%20fill%3D%22%404854%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%2220%22%20y%3D%2242.6%22%3E36x36%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E\\\"> <img class=\\\"green avatar rounded-circle\\\" alt=48x48 width=48 height=48 src=\\\"data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2275%22%20height%3D%2275%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2075%2075%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_1665eea11cd%20text%20%7B%20fill%3Argba(255%2C255%2C255%2C.75)%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A10pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_1665eea11cd%22%3E%3Crect%20width%3D%2275%22%20height%3D%2275%22%20fill%3D%22%404854%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%2220%22%20y%3D%2242.6%22%3E48x48%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E\\\"> <img class=\\\"avatar-lg green avatar rounded-circle\\\" alt=58x58 width=58 height=58 src=\\\"data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2275%22%20height%3D%2275%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2075%2075%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_1665eea11cd%20text%20%7B%20fill%3Argba(255%2C255%2C255%2C.75)%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A10pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_1665eea11cd%22%3E%3Crect%20width%3D%2275%22%20height%3D%2275%22%20fill%3D%22%404854%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%2220%22%20y%3D%2242.6%22%3E58x58%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E\\\"> </div> </div> <div class=row> <div class=\\\"col-12 content\\\"> <h3 class=subtitle><small> Pick your color </small></h3> <svg class=\\\"determinated avatar rounded-circle\\\" xmlns=http://www.w3.org/2000/svg pointer-events=none width=46 height=46><text text-anchor=middle y=50% x=50% dy=0.35em pointer-events=auto fill=#ffffff font-family=\\\"HelveticaNeue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica, Arial,Lucida Grande, sans-serif\\\" style=font-weight:400;font-size:20px>DC</text></svg> <svg class=\\\"influencer avatar rounded-circle\\\" xmlns=http://www.w3.org/2000/svg pointer-events=none width=46 height=46><text text-anchor=middle y=50% x=50% dy=0.35em pointer-events=auto fill=#ffffff font-family=\\\"HelveticaNeue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica, Arial,Lucida Grande, sans-serif\\\" style=font-weight:400;font-size:20px>IC</text></svg> <svg class=\\\"serene avatar rounded-circle\\\" xmlns=http://www.w3.org/2000/svg pointer-events=none width=46 height=46><text text-anchor=middle y=50% x=50% dy=0.35em pointer-events=auto fill=#ffffff font-family=\\\"HelveticaNeue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica, Arial,Lucida Grande, sans-serif\\\" style=font-weight:400;font-size:20px>SC</text></svg> <svg class=\\\"conscientious avatar rounded-circle\\\" xmlns=http://www.w3.org/2000/svg pointer-events=none width=46 height=46><text text-anchor=middle y=50% x=50% dy=0.35em pointer-events=auto fill=#ffffff font-family=\\\"HelveticaNeue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica, Arial,Lucida Grande, sans-serif\\\" style=font-weight:400;font-size:20px>CC</text></svg> </div> </div> </div> <div class=section-demo> <h2 class=title>Avatars</h2> <div class=row> <div class=\\\"col-12 content\\\"> <h3 class=subtitle><small>Pick your style</small></h3> <button class=\\\"btn btn-primary btn-round\\\">Default</button> <button class=\\\"btn btn-primary btn-round btn-round\\\">Round</button> <button class=\\\"btn btn-primary btn-round btn-round\\\"> <i class=\\\"material-icons left\\\">favorite</i> With Icon </button> <button class=\\\"btn btn-outline-primary btn-link\\\">Outline</button> <button class=\\\"btn btn-link\\\">Link</button> </div> </div> <div class=row> <div class=\\\"col-12 content\\\"> <h3 class=subtitle><small>Pick your size</small></h3> <button class=\\\"btn btn-primary btn-round btn-sm\\\">Small</button> <button class=\\\"btn btn-primary btn-round\\\">Regular</button> <button class=\\\"btn btn-primary btn-round btn-lg\\\">Large</button> </div> </div> <div class=row> <div class=\\\"col-12 content\\\"> <h3 class=subtitle><small> Pick your color </small></h3> <button class=btn>Default</button> <button class=\\\"btn btn-primary btn-round\\\">Primary</button> <button class=\\\"btn btn-secondary\\\">Secondary</button> <button class=\\\"btn btn-info\\\">Info</button> <button class=\\\"btn btn-primary btn-round\\\">Success</button> <button class=\\\"btn btn-warning\\\">Warning</button> <button class=\\\"btn btn-danger\\\">Danger</button> </div> </div> </div> <div class=section-demo> <h2 class=title>Tables</h2> <div class=row> <div class=col-md-6> <table class=table> <thead> <tr> <th>#</th> <th>First Name</th> <th>Last Name</th> <th>Username</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>Mark</td> <td>Otto</td> <td>@mdo</td> </tr> <tr> <td>2</td> <td>Jacob</td> <td>Thornton</td> <td>@fat</td> </tr> <tr> <td>3</td> <td>Larry</td> <td>the Bird</td> <td>@twitter</td> </tr> </tbody> </table> </div> <div class=col-md-6> <table class=\\\"table table-shadow table-responsive\\\"> <thead> <tr> <th>#</th> <th>First Name</th> <th>Last Name</th> <th>Username</th> </tr> </thead> <tbody> <tr> <td>1</td> <td><img class=\\\"avatar-sm green avatar rounded-circle\\\" alt=36x36 width=36 height=36 src=https://topmops.net/wp-content/uploads/2017/01/avatar-placeholder-generic.jpg></td> <td>Otto</td> <td>@mdo</td> </tr> <tr> <td>2</td> <td><img class=\\\"avatar-lg green avatar rounded-circle\\\" alt=48x48 width=48 height=48 src=https://topmops.net/wp-content/uploads/2017/01/avatar-placeholder-generic.jpg></td> <td>Thornton</td> <td>@fat</td> </tr> <tr> <td>3</td> <td>Larry</td> <td>the Bird</td> <td>@twitter</td> </tr> </tbody> </table> </div> </div> <div class=row> <div class=col-md-6> <table class=\\\"table table-bordered\\\"> <thead> <tr> <th>#</th> <th>First Name</th> <th>Last Name</th> <th>Username</th> </tr> </thead> <tbody> <tr> <td rowspan=2>1</td> <td>Mark</td> <td>Otto</td> <td>@mdo</td> </tr> <tr> <td>Mark</td> <td>Otto</td> <td>@TwBootstrap</td> </tr> <tr> <td>2</td> <td>Jacob</td> <td>Thornton</td> <td>@fat</td> </tr> <tr> <td>3</td> <td colspan=2>Larry the Bird</td> <td>@twitter</td> </tr> </tbody> </table> </div> <div class=col-md-6> <table class=\\\"table table-condensed\\\"> <thead> <tr> <th>#</th> <th>First Name</th> <th>Last Name</th> <th>Username</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>Mark</td> <td>Otto</td> <td>@mdo</td> </tr> <tr> <td>2</td> <td>Jacob</td> <td>Thornton</td> <td>@fat</td> </tr> <tr> <td>3</td> <td colspan=2>Larry the Bird</td> <td>@twitter</td> </tr> </tbody> </table> </div> </div> </div> <div class=section-demo> <h2 class=title>Badges</h2> <div class=row> <div class=col-12> <h1>Example heading <span class=\\\"badge badge-secondary\\\">New</span></h1> <h2>Example heading <span class=\\\"badge badge-secondary\\\">New</span></h2> <h3>Example heading <span class=\\\"badge badge-secondary\\\">New</span></h3> <h4>Example heading <span class=\\\"badge badge-secondary\\\">New</span></h4> <h5>Example heading <span class=\\\"badge badge-secondary\\\">New</span></h5> <h6>Example heading <span class=\\\"badge badge-secondary\\\">New</span></h6> </div> </div> <div class=row> <div class=col-12> <button type=button class=\\\"btn btn-primary btn-round\\\"> Notifications <span class=\\\"badge badge-light\\\">4</span> </button> </div> </div> </div> <div class=section-demo> <h2 class=title>Dropdown menus <div class=row> <div class=\\\"col-12 content\\\"> <h3 class=subtitle><small>Default</small></h3> <div class=dropdown> <button class=\\\"btn btn-outline-secondary btn-round dropdown-toggle\\\" type=button id=dropdownMenuButton data-toggle=dropdown aria-haspopup=true aria-expanded=false> Dropdown button </button> <div class=dropdown-menu aria-labelledby=dropdownMenuButton> <a class=dropdown-item href=\\\"\\\" onclick=return!1>Action</a> <a class=dropdown-item href=\\\"\\\" onclick=return!1>Another action</a> <a class=dropdown-item href=\\\"\\\" onclick=return!1>Something else here</a> </div> </div> </div> <div class=\\\"col-12 content\\\"> <h3 class=subtitle><small>Inline</small></h3> <b>Example text</b> <div class=\\\"dropdown inline\\\"> <button class=\\\"btn btn-outline-secondary btn-round dropdown-toggle\\\" type=button id=dropdownMenuButton data-toggle=dropdown aria-haspopup=true aria-expanded=false> Dropdown inline </button> <div class=dropdown-menu aria-labelledby=dropdownMenuButton> <a class=dropdown-item href=\\\"\\\" onclick=return!1>Action</a> <a class=dropdown-item href=\\\"\\\" onclick=return!1>Another action</a> <a class=dropdown-item href=\\\"\\\" onclick=return!1>Something else here</a> </div> </div> </div> <div class=\\\"col-12 content\\\"> <h3 class=subtitle><small>Bigmenu</small></h3> <div class=\\\"dropdown big-menu\\\"> <button class=\\\"btn btn-outline-secondary btn-round dropdown-toggle\\\" type=button id=dropdownMenuButton data-toggle=dropdown aria-haspopup=true aria-expanded=false> Dropdown big menu </button> <div class=dropdown-menu aria-labelledby=dropdownMenuButton> <a class=\\\"dropdown-item caret-right\\\" href=\\\"\\\" onclick=return!1> <b>Action</b> <p class=small>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> </a> <a class=\\\"dropdown-item caret-right\\\" href=\\\"\\\" onclick=return!1> <b>Action</b> <p class=small>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> </a> <a class=\\\"dropdown-item caret-right\\\" href=\\\"\\\" onclick=return!1> <b>Action</b> <p class=small>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatum adipisci obcaecati reprehenderit delectus voluptatem modi itaque laudantium deleniti magnam, inventore tempora nisi hic quis voluptates repellendus dignissimos explicabo facilis perferendis.</p> </a> </div> </div> </div> </div> </h2></div> <div class=section-demo> <h2 class=title>Forms <div class=row> <div class=col-12> <div class=row> <div class=\\\"col form-group\\\"> <input type=text class=form-control placeholder=Nombres> </div> <div class=\\\"col form-group\\\"> <input type=text class=form-control placeholder=Apellidos> </div> </div> <div class=row> <div class=\\\"col form-group\\\"> <input type=text class=form-control placeholder=\\\"Numero de documento\\\"> </div> <div class=\\\"col form-group\\\"> <input type=email class=form-control placeholder=Email> </div> </div> <div class=row> <div class=\\\"col form-group\\\"> <input type=text class=form-control placeholder=\\\"Numero de celular\\\"> </div> <div class=\\\"col form-group\\\"> <select class=form-control id=exampleFormControlSelect1> <option value=\\\"\\\" disabled=disabled selected=selected>Modo de activacion</option> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select> </div> </div> <ux-range-input class=col-12></ux-range-input> <div class=form-group> <input type=password class=form-control id=exampleInputPassword1 placeholder=Password> </div> <div class=form-group> <div class=custom-file> <input type=file class=custom-file-input id=customFile lang=es> <label class=custom-file-label for=customFile>Seleccionar Archivo</label> </div> </div> <div class=form-group> <textarea class=form-control id=exampleFormControlTextarea1 rows=3></textarea> </div> <h3>Tags inputs...</h3> <hr/> <button class=\\\"btn btn-primary btn-round\\\">Aceptar</button> </div> </div> </h2></div> <div class=section-demo> <h2 class=title>Navbars</h2> <div class=row> <div class=col-12> <h4>Extend</h4> <nav class=\\\"navbar navbar-expand-lg navbar-light\\\"> <a class=navbar-brand href=\\\"\\\" onclick=return!1> <img class=logotype src=\" + require(\"../assets/images/logo.png\") + \" alt=Tht> </a> <div class=\\\"ml-auto mr-auto\\\"> <h3>Eum odio facilis incidunt</h3> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> <form class=\\\"form-inline justify-content-center\\\"> <input class=\\\"form-control mr-sm-2\\\" type=search placeholder=Search aria-label=Search> <button class=\\\"btn btn-outline-secondary btn-round my-2 my-sm-0\\\" type=submit>Search</button> </form> </div> </nav> </div> <div class=col-12> <h4>Default</h4> <nav class=\\\"navbar navbar-light justify-content-between\\\"> <a class=navbar-brand href=\\\"\\\" onclick=return!1> <img class=logotype src=\" + require(\"../assets/images/logo.png\") + \" alt=Tht> ${router.title} </a> <form class=form-inline> <input class=\\\"form-control mr-sm-2\\\" type=search placeholder=Search aria-label=Search> <button class=\\\"btn btn-outline-secondary btn-round my-2 my-sm-0\\\" type=submit>Search</button> </form> </nav> </div> </div> </div> <div class=section-demo> <h2 class=title>SubNav</h2> <div class=row> <div class=col-12> <nav class=\\\"nav subnav\\\"> <a class=\\\"nav-link active\\\" href=#>Active</a> <a class=nav-link href=#>Link</a> <a class=nav-link href=#>Link</a> <a class=nav-link href=#>Link</a> <a class=\\\"nav-link disabled\\\" href=#>Disabled</a> </nav> </div> </div> </div> <div class=section-demo> <h2 class=title>Breadcrumbs</h2> <div class=row> <div class=col-12> <nav aria-label=breadcrumb> <ol class=breadcrumb> <li class=breadcrumb-item><a href=#>Home</a></li> <li class=breadcrumb-item><a href=#>Library</a></li> <li class=\\\"breadcrumb-item active\\\" aria-current=page>Data</li> </ol> </nav> </div> </div> </div> <div class=section-demo> <h2 class=title>Alerts <div class=\\\"alert alert-success\\\" role=alert> <strong>Well done!</strong> You successfully read this important alert message. </div> <div class=\\\"alert alert-info\\\" role=alert> <strong>Heads up!</strong> This alert needs your attention, but it's not super important. </div> <div class=\\\"alert alert-warning\\\" role=alert> <strong>Warning!</strong> Best check yo self, you're not looking too good. </div> <div class=\\\"alert alert-danger\\\" role=alert> <strong>Oh snap!</strong> Change a few things up and try submitting again. </div> <div class=section-demo> <h2 class=title>Progress bars </h2></div> </h2></div> <div class=progress-demo> <div class=progress> <div class=progress-bar role=progressbar aria-valuenow=60 aria-valuemin=0 aria-valuemax=100 style=width:60%><span class=sr-only>60% Complete</span></div> </div> <div class=progress> <div class=\\\"progress-bar progress-bar-success\\\" role=progressbar aria-valuenow=40 aria-valuemin=0 aria-valuemax=100 style=width:40%><span class=sr-only>40% Complete (success)</span></div> </div> <div class=progress> <div class=\\\"progress-bar progress-bar-info\\\" role=progressbar aria-valuenow=20 aria-valuemin=0 aria-valuemax=100 style=width:20%><span class=sr-only>20% Complete</span></div> </div> <div class=progress> <div class=\\\"progress-bar progress-bar-warning\\\" role=progressbar aria-valuenow=60 aria-valuemin=0 aria-valuemax=100 style=width:60%><span class=sr-only>60% Complete (warning)</span></div> </div> <div class=progress> <div class=\\\"progress-bar progress-bar-danger\\\" role=progressbar aria-valuenow=80 aria-valuemin=0 aria-valuemax=100 style=width:80%><span class=sr-only>80% Complete (danger)</span></div> </div> <div class=progress> <div class=\\\"progress-bar progress-bar-striped\\\" role=progressbar aria-valuenow=60 aria-valuemin=0 aria-valuemax=100 style=width:60%><span class=sr-only>60% Complete</span></div> </div> <div class=progress> <div class=\\\"progress-bar progress-bar-success\\\" style=width:35%><span class=sr-only>35% Complete (success)</span></div> <div class=\\\"progress-bar progress-bar-warning\\\" style=width:20%><span class=sr-only>20% Complete (warning)</span></div> <div class=\\\"progress-bar progress-bar-danger\\\" style=width:10%><span class=sr-only>10% Complete (danger)</span></div> </div> </div> <div class=section-demo> <h2 class=title>List groups <div class=row> <div class=col-sm-4> <ul class=list-group> <li class=list-group-item>Cras justo odio</li> <li class=list-group-item>Dapibus ac facilisis in</li> <li class=list-group-item>Morbi leo risus</li> <li class=list-group-item>Porta ac consectetur ac</li> <li class=list-group-item>Vestibulum at eros</li> </ul> </div> <div class=col-sm-4> <div class=list-group> <a href=\\\"\\\" onclick=return!1 class=\\\"list-group-item active\\\"> Cras justo odio </a> <a href=\\\"\\\" onclick=return!1 class=list-group-item>Dapibus ac facilisis in</a> <a href=\\\"\\\" onclick=return!1 class=list-group-item>Morbi leo risus</a> <a href=\\\"\\\" onclick=return!1 class=list-group-item>Porta ac consectetur ac</a> <a href=\\\"\\\" onclick=return!1 class=list-group-item>Vestibulum at eros</a> </div> </div> <div class=col-sm-4> <div class=list-group> <a href=\\\"\\\" onclick=return!1 class=\\\"list-group-item active\\\"> <h4 class=list-group-item-heading>List group item heading</h4> <p class=list-group-item-text>Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p> </a> <a href=\\\"\\\" onclick=return!1 class=list-group-item> <h4 class=list-group-item-heading>List group item heading</h4> <p class=list-group-item-text>Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p> </a> <a href=\\\"\\\" onclick=return!1 class=list-group-item> <h4 class=list-group-item-heading>List group item heading</h4> <p class=list-group-item-text>Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p> </a> </div> </div> </div> </h2></div> <div class=section-demo> <h2 class=title>Bootstrap grid <p class=lead>Basic grid layouts to get you familiar with building within the Bootstrap grid system.</p> <div class=row> <div class=col-12> <h4>Three equal columns</h4> <p>Get three equal-width columns <strong>starting at desktops and scaling to large desktops</strong>. On mobile devices, tablets and below, the columns will automatically stack.</p> <div class=\\\"row grid-demo\\\"> <div class=col-md-4>.col-md-4</div> <div class=col-md-4>.col-md-4</div> <div class=col-md-4>.col-md-4</div> </div> <h4>Three unequal columns</h4> <p>Get three columns <strong>starting at desktops and scaling to large desktops</strong> of various widths. Remember, grid columns should add up to twelve for a single horizontal block. More than that, and columns start stacking no matter the viewport.</p> <div class=\\\"row grid-demo\\\"> <div class=col-md-3>.col-md-3</div> <div class=col-md-6>.col-md-6</div> <div class=col-md-3>.col-md-3</div> </div> <h4>Two columns</h4> <p>Get two columns <strong>starting at desktops and scaling to large desktops</strong>.</p> <div class=\\\"row grid-demo\\\"> <div class=col-md-8>.col-md-8</div> <div class=col-md-4>.col-md-4</div> </div> <h4>Full width, single column</h4> <p class=text-warning>No grid classes are necessary for full-width elements.</p> <hr> <h4>Two columns with two nested columns</h4> <p>Per the documentation, nesting is easy—just put a row of columns within an existing column. This gives you two columns <strong>starting at desktops and scaling to large desktops</strong>, with another two (equal widths) within the larger column.</p> <p>At mobile device sizes, tablets and down, these columns and their nested columns will stack.</p> <div class=\\\"row grid-demo\\\"> <div class=col-md-8> .col-md-8 <div class=row> <div class=col-md-6>.col-md-6</div> <div class=col-md-6>.col-md-6</div> </div> </div> <div class=col-md-4>.col-md-4</div> </div> <hr> <h4>Mixed: mobile and desktop</h4> <p>The Bootstrap 3 grid system has four tiers of classes: xs (phones), sm (tablets), md (desktops), and lg (larger desktops). You can use nearly any combination of these classes to create more dynamic and flexible layouts.</p> <p>Each tier of classes scales up, meaning if you plan on setting the same widths for xs and sm, you only need to specify xs.</p> <div class=\\\"row grid-demo\\\"> <div class=\\\"col-12 col-md-8\\\">.col-12 .col-md-8</div> <div class=\\\"col-6 col-md-4\\\">.col-6 .col-md-4</div> </div> <div class=\\\"row grid-demo\\\"> <div class=\\\"col-6 col-md-4\\\">.col-6 .col-md-4</div> <div class=\\\"col-6 col-md-4\\\">.col-6 .col-md-4</div> <div class=\\\"col-6 col-md-4\\\">.col-6 .col-md-4</div> </div> <div class=\\\"row grid-demo\\\"> <div class=col-6>.col-6</div> <div class=col-6>.col-6</div> </div> <hr> <h4>Mixed: mobile, tablet, and desktop</h4> <p></p> <div class=\\\"row grid-demo\\\"> <div class=\\\"col-12 col-sm-6 col-lg-8\\\">.col-12 .col-sm-6 .col-lg-8</div> <div class=\\\"col-6 col-lg-4\\\">.col-6 .col-lg-4</div> </div> <div class=\\\"row grid-demo\\\"> <div class=\\\"col-6 col-sm-4\\\">.col-6 .col-sm-4</div> <div class=\\\"col-6 col-sm-4\\\">.col-6 .col-sm-4</div> <div class=\\\"col-6 col-sm-4\\\">.col-6 .col-sm-4</div> </div> <hr> <h4>Column clearing</h4> <p><a href=http://getbootstrap.com/css/#grid-responsive-resets>Clear floats</a> at specific breakpoints to prevent awkward wrapping with uneven content.</p> <div class=\\\"row grid-demo\\\"> <div class=\\\"col-6 col-sm-3\\\"> .col-6 .col-sm-3 <br> Resize your viewport or check it out on your phone for an example. </div> <div class=\\\"col-6 col-sm-3\\\">.col-6 .col-sm-3</div> <div class=\\\"col-6 col-sm-3\\\">.col-6 .col-sm-3</div> <div class=\\\"col-6 col-sm-3\\\">.col-6 .col-sm-3</div> </div> <hr> <h4>Offset, push, and pull resets</h4> <p>Reset offsets, pushes, and pulls at specific breakpoints.</p> <div class=\\\"row grid-demo\\\"> <div class=\\\"col-sm-5 col-md-6\\\">.col-sm-5 .col-md-6</div> <div class=\\\"col-sm-5 col-sm-offset-2 col-md-6 col-md-offset-0\\\">.col-sm-5 .col-sm-offset-2 .col-md-6 .col-md-offset-0</div> </div> <div class=\\\"row grid-demo\\\"> <div class=\\\"col-sm-6 col-md-5 col-lg-6\\\">.col-sm-6 .col-md-5 .col-lg-6</div> <div class=\\\"col-sm-6 col-md-5 col-md-offset-2 col-lg-6 col-lg-offset-0\\\">.col-sm-6 .col-md-5 .col-md-offset-2 .col-lg-6 .col-lg-offset-0</div> </div> </div> </div> </h2></div> </div> <div class=section-demo> <div class=container> <h2 class=title>Layouts </h2></div> <div class=\\\"layout-demo row\\\"> <div class=col-12> <div class=container-fluid> <nav class=\\\"navbar navbar-light align-items-center justify-content-between\\\"> <div class=\\\"nav align-items-center justify-content-start\\\"> <a class=navbar-brand href=\\\"\\\" onclick=return!1> <img class=logotype src=\" + require(\"../assets/images/logo.png\") + \" alt=Tht> </a> <div class=\\\"dropdown inline\\\"> <a class=\\\"btn btn-link dropdown-toggle text-secondary\\\" href=\\\"\\\" onclick=return!1 id=dropdownMenuButton data-toggle=dropdown aria-haspopup=true aria-expanded=false> Organizaciones </a> <div class=dropdown-menu aria-labelledby=dropdownMenuButton> <a class=dropdown-item href=\\\"\\\" onclick=return!1>Action</a> <a class=dropdown-item href=\\\"\\\" onclick=return!1>Another action</a> <a class=dropdown-item href=\\\"\\\" onclick=return!1>Something else here</a> </div> </div> </div> <div class=\\\"nav align-items-center justify-content-end\\\"> <button class=\\\"btn btn-link btn-round p-1 mr-3\\\"> <i class=\\\"material-icons left\\\">search</i> </button> <button class=\\\"btn btn-outline-primary btn-round mr-3\\\"> <i class=\\\"material-icons left\\\">star</i> 7000 </button> <button type=button class=\\\"btn btn-badge btn-link mr-4\\\"> <i class=material-icons>notifications</i> <span class=\\\"badge badge-light badge-icon\\\">9</span> <span class=sr-only>notificaciones sin leer</span> </button> <div class=navbar-avatar> <img class=rounded-circle alt=54x54 style=\\\"width:48px;height:48px;border:3px solid #81b252\\\" src=\\\"https://media.licdn.com/dms/image/C4E03AQHzKoFEuMuXKA/profile-displayphoto-shrink_100_100/0?e=1533168000&v=beta&t=ZTtyEGUp0ZhQiMKzRg-HuZydnV9_ISDAa_Wk6qM4PRo\\\"> </div> </div> </nav> <nav class=sidebar id=navbarToggleSidebar> <button type=button class=close aria-label=Close> <i class=material-icons>chevron_left</i> </button> <ul class=\\\"nav flex-column\\\"> <li class=nav-item> <a class=\\\"nav-link active\\\" href=\\\"\\\" onclick=return!1> <i class=\\\"material-icons left\\\">radio_button_checked</i> Dashboard<span class=sr-only>(Actual)</span> </a> </li> <li class=nav-item> <a class=nav-link href=\\\"\\\" onclick=return!1> <i class=\\\"material-icons left\\\">radio_button_checked</i> Orders </a> </li> <li class=nav-item> <a class=nav-link href=\\\"\\\" onclick=return!1> <i class=\\\"material-icons left\\\">radio_button_checked</i> Products </a> </li> <li class=nav-item> <a class=nav-link href=\\\"\\\" onclick=return!1> <i class=\\\"material-icons left\\\">radio_button_checked</i> Customers </a> </li> <li class=nav-item> <a class=nav-link href=\\\"\\\" onclick=return!1> <i class=\\\"material-icons left\\\">radio_button_checked</i> Reports </a> </li> <li class=nav-item> <a class=nav-link href=\\\"\\\" onclick=return!1> <i class=\\\"material-icons left\\\">radio_button_checked</i> Integrations </a> </li> </ul> </nav> <div class=\\\"main-container row no-gutters\\\" role=main> <div class=\\\"col-12 p-3\\\"> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut optio ab velit est modi ipsa consequuntur, aspernatur ipsum animi, ipsam fuga nobis repellendus dicta harum at ex itaque sunt neque? </div> </div> </div> </div> <div class=col-12> <div class=container-fluid> <nav class=\\\"navbar navbar-expand-lg navbar-light\\\"> <a class=navbar-brand href=\\\"\\\" onclick=return!1> <img class=logotype src=\" + require(\"../assets/images/logo.png\") + \" alt=Tht> </a> <div class=\\\"ml-auto mr-auto\\\"> <h3>Eum odio facilis incidunt</h3> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> <form class=\\\"form-inline justify-content-center\\\"> <input class=\\\"form-control mr-sm-2\\\" type=search placeholder=Search aria-label=Search> <button class=\\\"btn btn-outline-secondary btn-round my-2 my-sm-0\\\" type=submit>Search</button> </form> </div> </nav> <div class=\\\"row no-gutters\\\" role=main> <div class=\\\"col-12 p-3\\\"> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut optio ab velit est modi ipsa consequuntur, aspernatur ipsum animi, ipsam fuga nobis repellendus dicta harum at ex itaque sunt neque? </div> </div> </div> </div> <div class=col-12> </div> </div> </div> </template> \";","import { Notification } from 'common/services/notification';\n\nimport { autoinject, LogManager } from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\n\nimport { User } from \"oidc-client\";\nimport { SessionService } from 'common/services/session-service';\n\nimport { Router, RouteConfig } from 'aurelia-router';\nimport { OpenIdProfile } from 'models/security/open-id-profile';\nimport { PermissionStore } from 'aurelia-permission';\nimport { StoreService } from 'common/store/store-service';\nimport { State } from 'common/store/store-model';\n\n@autoinject()\nexport class Home {\n\n  private logger: Logger;\n  private user: User;\n\n  private state: State;\n\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private sessionService: SessionService,\n    private permissionStore: PermissionStore,\n    private notification: Notification,\n    private window: Window) {\n\n    this.logger = LogManager.getLogger('Home');\n\n    this.state = this.store.state;\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.logger.debug(\"activate\");\n    if(params){\n      this.window.history.pushState({}, document.title, \"/\");\n    }\n  }\n}\n","module.exports = \"<template> <require from=./main/admin/pages/agreements/agreements-to-approve></require> <require from=./main/admin/pages/company-groups-master/company-list-selector></require> <require from=./models/security/roleViewEngineHooks></require> <div if.bind=\\\"state && state.userBasicInfo\\\"> <section> <div class=row> <div class=col-12> <p class=lead>${'main.pages.home.hello' & t} ${state.userBasicInfo.fullName}</p> </div> </div> </section> <section if.bind=\\\"state.userBasicInfo.roleId < Role.Customer\\\"> <agreements-to-approve></agreements-to-approve> </section> <section> <company-list-selector route-name=main-child-router></company-list-selector> </section> </div> </template> \";","/// <reference types=\"aurelia-loader-webpack/src/webpack-hot-interface\"/>\n// css\n// import 'font-awesome/css/font-awesome.css';\nimport 'nprogress/nprogress.css';\nimport 'toastr/build/toastr.min.css';\n// intro.js\n// import 'intro.js/minified/introjs.min.css';\n// aurelia quill editor plug in\nimport 'quill/dist/quill.snow.css';\n// aurelia bootstrap plugin\nimport 'bootstrap-tagsinput/dist/bootstrap-tagsinput.css';\n\n// app style\nimport '../assets/styles/main.scss';\n\n// js\nimport { Aurelia } from 'aurelia-framework';\nimport { PLATFORM } from 'aurelia-pal';\nimport * as Bluebird from 'bluebird';\n// remove out if you don't want a Promise polyfill (remove also from webpack.config.js)\nBluebird.config({ warnings: { wForgottenReturn: false } });\n\n// import environment from \"config/environment\";npm \nimport i18nConfig from 'config/i18n-config';\n\n// config\nimport config from 'config.js';\n\n// import oidcConfig from \"config/open-id-connect-configuration\";\n\n// Authorization config\nimport { PermissionStore, Configuration } from 'aurelia-permission';\nimport openIdConfig from 'config/open-id-connect-configuration';\nimport { I18N } from 'aurelia-i18n';\n\n// flatpickr es locale\n// import \"flatpickr/dist/l10n/es.js\";\n\n// intro.js\n// import 'intro.js';\n\n// quill options\nimport quillOptions from 'config/quill-config';\n\ndeclare const IS_PRODUCTION: boolean; // The value is supplied by Webpack during the build\n\nexport async function configure(aurelia: Aurelia) {\n\n  // if (environment.useHttps && location.protocol !== \"https:\") {\n  //   // location.protocol is buggy in Firefox\n  //   // see also http://stackoverflow.com/a/10036029\n  //   location.href = \"https:\" + window.location.href.substring(window.location.protocol.length);\n  // }\n  // console.log(\"IS_PRODUCTION: \" + IS_PRODUCTION);\n\n  aurelia.use.standardConfiguration();\n\n  if(!IS_PRODUCTION){\n    aurelia.use.developmentLogging();\n  }\n\n  aurelia.use.feature(PLATFORM.moduleName('common/resources/index'));\n  aurelia.use.feature(PLATFORM.moduleName('main/components/index'));\n\n  // Uncomment the line below to enable animation.\n  aurelia.use.plugin(PLATFORM.moduleName('aurelia-animator-css'));\n  // if the css animator is enabled, add swap-order=\"after\" to all router-view elements\n\n  // Anyone wanting to use HTMLImports to load views, will need to install the following plugin.\n  // aurelia.use.plugin(PLATFORM.moduleName('aurelia-html-import-template-loader'));\n\n  // i18next\n  aurelia.use.plugin(PLATFORM.moduleName('aurelia-i18n'), async (instance: I18N) => {\n\n    let backendUrl = config.URLS_BACKEND;\n\n    await i18nConfig(aurelia, instance, backendUrl, IS_PRODUCTION);\n\n    return instance;\n  });\n\n  // Authentication\n  aurelia.use.plugin(PLATFORM.moduleName(\"aurelia-open-id-connect\"), () => {\n    let backendUrl = config.URLS_BACKEND;\n    let hostUrl = config.URLS_FRONTEND;\n    return openIdConfig(backendUrl, hostUrl);\n  });\n\n  // Authorization\n  aurelia.use.plugin(PLATFORM.moduleName(\"aurelia-permission\"), (permissionStore: PermissionStore, configuration: Configuration) => { return null; });\n\n\n\n  // aurelia-validation\n  aurelia.use.plugin(PLATFORM.moduleName('aurelia-validation'));\n\n  // dialog\n  aurelia.use.plugin(PLATFORM.moduleName('aurelia-dialog'), config => {\n    config.useDefaults();\n    config.settings.lock = true;\n    config.settings.centerHorizontalOnly = false;\n    config.settings.startingZIndex = 5;\n    config.settings.keyboard = true;\n  });\n\n  // virtual scrolling\n  aurelia.use.plugin(PLATFORM.moduleName('aurelia-ui-virtualization'));\n\n  // navigation-menu\n  // aurelia.use.plugin(PLATFORM.moduleName('aurelia-navigation-menu'));\n\n  // datepicker\n  aurelia.use.plugin(PLATFORM.moduleName('aurelia-flatpickr'));\n\n  // quill \n  aurelia.use.plugin(PLATFORM.moduleName('aurelia-quill-plugin'), quillOptions);\n\n  // aurelia.use.plugin( PLATFORM.moduleName('aurelia-tags-input') );\n\n  // aurelia.use.plugin(PLATFORM.moduleName('aurelia-bootstrap-select'));\n\n  aurelia.use.plugin(PLATFORM.moduleName('bcx-aurelia-reorderable-repeat'));\n\n\n  aurelia.use.plugin(PLATFORM.moduleName('aurelia-bootstrap-tagsinput'));\n\n  // google analitics\n  /*aurelia.use.plugin(PLATFORM.moduleName('aurelia-google-analytics'), config => {\n    config.init('UA-132482465-2');\n    // config.init('G-Q7L2M47XY1');\n    config.attach({\n      logging: {\n        // Set to `true` to have some log messages appear in the browser console.\n        enabled: IS_PRODUCTION || false\n      },\n      pageTracking: {\n        // Set to `false` to disable in non-production environments.\n        enabled: IS_PRODUCTION || false,\n      },\n      clickTracking: {\n        // Set to `false` to disable in non-production environments.\n        enabled: IS_PRODUCTION || false,\n      },\n      exceptionTracking: {\n        // Set to `false` to disable in non-production environments.\n        enabled: IS_PRODUCTION || false\n      }\n    });\n  });*/\n\n\n  return await aurelia.start().then(async () => {\n    return await aurelia.setRoot(PLATFORM.moduleName('app'));\n  });\n}\n","\nimport { I18N } from 'aurelia-i18n';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration, RouteConfig } from \"aurelia-router\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\nimport { CoreCompanyService } from './services/companies/core-company-service';\nimport { CompanySettings } from 'models/companies/company-settings';\nimport { Role } from 'models/security/role';\n\n@autoinject()\nexport class AdminChildRouter {\n\n  private logger: Logger;\n\n  private router: Router;\n\n  private state: State;\n\n  constructor(\n    private store: StoreService,\n    private i18n: I18N,\n    private authorizationService: AuthorizationService) {\n\n    this.logger = LogManager.getLogger(\"AdminChildRouter\");\n\n    this.state = this.store.state;\n  }\n\n  public async configureRouter(config: RouterConfiguration, router: Router) {\n\n    let companySettings = this.getCompanySettings();\n\n    // this.logger.debug(\"companySettings\", companySettings);\n\n    this.router = router;\n\n    config.map([\n      {\n        route: [\"\", \"admin-home\"],\n        moduleId: PLATFORM.moduleName(\"./pages/home/home\"),\n        name: \"admin-home\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.home.title\"),\n        settings: {\n          icon: \"ticon-modulo-admin\",\n          isHome: true\n        }\n      },\n\n      {\n        route: \"groups\",\n        moduleId: PLATFORM.moduleName(\"./pages/groups/group-list-child-router\"),\n        name: \"group-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.groups.title\"),\n        nav:\n          this.authorizationService.isAuthorized(PredefinedPermissions.GroupView)\n          && companySettings.hasGroupManagement,\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.GroupView]\n          },\n          icon: \"ticon-grupos-usuarios-internos\"\n        }\n      },\n\n      {\n        route: \"profiles\",\n        moduleId: PLATFORM.moduleName(\"./pages/profiles/profile-list-child-router\"),\n        name: \"profile-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.profiles.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.ProfileView)\n          && companySettings.hasProfileManagement,\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.ProfileView]\n          },\n          icon: \"ticon-roles\"\n        }\n      },\n\n      {\n        route: \"users\",\n        moduleId: PLATFORM.moduleName(\"./pages/users/user-list-child-router\"),\n        name: \"user-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.users.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.UserView)\n          && companySettings.hasUserManagement,\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.UserView]\n          },\n          icon: \"ticon-usuarios-internos\"\n        }\n      },\n\n      {\n        route: \"companies-master\",\n        moduleId: PLATFORM.moduleName(\"./pages/company-groups-master/company-group-master-list-child-router\"),\n        name: \"company-group-master-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.companies_master.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.CompanyMasterView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.CompanyMasterView]\n          },\n          icon: \"ticon-gestion-org\"\n        }\n      },\n\n      {\n        route: \"talents\",\n        moduleId: PLATFORM.moduleName(\"./pages/talents/talent-list-child-router\"),\n        name: \"talent-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.talents.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TalentView)\n          && companySettings.hasTalentManagement,\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TalentView]\n          },\n          icon: \"ticon-gestion-talentos\"\n        }\n      },\n\n      {\n        route: \"test-management\",\n        moduleId: PLATFORM.moduleName(\"./pages/test-management/test-management-child-router\"),\n        name: \"test-management-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.test_management.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestManagementReportView)\n          || this.authorizationService.isAuthorized(PredefinedPermissions.TestManagementQuestionaryGroupView)\n          || this.authorizationService.isAuthorized(PredefinedPermissions.TestManagementDiscProfileView)\n          || this.authorizationService.isAuthorized(PredefinedPermissions.TestManagementDiscStyleView)\n          || this.authorizationService.isAuthorized(PredefinedPermissions.TestManagementQuestionaryConfigurationView)\n          || this.authorizationService.isAuthorized(PredefinedPermissions.TestManagementCustomCompanyQuestionaryView)\n          || this.authorizationService.isAuthorized(PredefinedPermissions.TestManagementCompetencesView),\n        settings: {\n          icon: \"ticon-modulo-test\"\n        }\n      },     \n      {\n        route: \"messages\",\n        moduleId: PLATFORM.moduleName(\"./pages/messages/message-list-child-router\"),\n        name: \"message-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.messages.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.MessageView)\n          && companySettings.hasNotificationManagement,\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.MessageView]\n          },\n          icon: \"ticon-gestion-notif\"\n        }\n      },\n\n      {\n        route: \"user-api-applications\",\n        moduleId: PLATFORM.moduleName(\"./pages/user-api-applications/user-api-application-list-child-router\"),\n        name: \"user-api-application-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.user_api_applications.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.UserApiTokenView)\n          && companySettings.hasUserManagement,\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.UserApiTokenView]\n          },\n          icon: \"ticon-API\"\n        }\n      },\n      \n\n      // core functionalities\n\n      {\n        route: \"test-core\",\n        moduleId: PLATFORM.moduleName(\"./pages/test-core/test-core-child-router\"),\n        name: \"test-core-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.test_core.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.SheetView),\n        settings: {\n          icon: \"ticon-admin-contenidos\"\n        }\n      },\n      {\n        route: \"inbox\",\n        moduleId: PLATFORM.moduleName(\"./pages/test-core/inbox/inbox-by-user/inbox-user-list-child-router\"),\n        name: \"inbox\",\n        title: this.i18n.tr(\"main.admin.pages.inbox.title\"),\n        nav: false,\n        settings: {\n          icon: \"ticon-modulo-test\"\n        }\n      },\n\n\n      {\n        route: \"core-groups\",\n        moduleId: PLATFORM.moduleName(\"./pages/core-groups/core-group-list-child-router\"),\n        name: \"core-group-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.core_groups.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.CoreGroupView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.CoreGroupView]\n          },\n          icon: \"ticon-grupos-usuarios-internos\"\n        }\n      },\n\n      {\n        route: \"core-users\",\n        moduleId: PLATFORM.moduleName(\"./pages/core-users/core-user-list-child-router\"),\n        name: \"core-user-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.core_users.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.CoreUserView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.CoreUserView]\n          },\n          icon: \"ticon-usuarios-internos\"\n        }\n      },\n\n      {\n        route: \"companies\",\n        moduleId: PLATFORM.moduleName(\"./pages/company-groups/company-group-franchise-list-child-router\"),\n        name: \"company-group-franchise-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.company_groups.select_franchise\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.CompanyGroupView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.CompanyGroupView]\n          },\n          icon: \"ticon-organizaciones-grupos\"\n        }\n      },\n\n      {\n        route: \"plans\",\n        moduleId: PLATFORM.moduleName(\"./pages/plans/plan-franchise-list-child-router\"),\n        name: \"plan-franchise-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.plans.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.PlanView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.PlanView]\n          },\n          icon: \"ticon-gestion-planes\"\n        }\n      },\n\n      {\n        route: \"messages-franchises\",\n        moduleId: PLATFORM.moduleName(\"./pages/messages/message-franchise-list-child-router\"),\n        name: \"message-franchise-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.messages.franchise.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.FranchiseView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.FranchiseView]\n          },\n          icon: \"ticon-notificaciones-alarmas\"\n        }\n      },\n\n      {\n        route: \"questionaries\",\n        moduleId: PLATFORM.moduleName(\"./pages/questionaries/questionary-list-child-router\"),\n        name: \"questionary-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.questionaries.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.QuestionaryView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.QuestionaryView]\n          },\n          icon: \"ticon-cuestionarios\"\n        }\n      },\n\n            {\n        route: \"modular-questionaries\",\n        moduleId: PLATFORM.moduleName(\"./pages/modular-questionaries/modular-questionary-list-child-router\"),\n        name: \"modular-questionary-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.modular-questionaries.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.QuestionaryView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.QuestionaryView]\n          },\n          icon: \"ticon-cuestionarios\"\n        }\n      },\n\n      {\n        route: \"thematic-groups\",\n        moduleId: PLATFORM.moduleName(\"./pages/thematic-groups/thematic-group-questionary-list-child-router\"),\n        name: \"thematic-group-questionary-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.thematic_groups.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.QuestionaryView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.QuestionaryView]\n          },\n          icon: \"ticon-gestion-grupos-tema\"\n        }\n      },\n\n      {\n        route: \"scales\",\n        moduleId: PLATFORM.moduleName(\"./pages/scales/scale-questionary-list-child-router\"),\n        name: \"scale-questionary-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.scales.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.ScaleView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.ScaleView]\n          },\n          icon: \"ticon-baremos2\"\n        }\n      },\n      \n      {\n        route: \"archetypes\",\n        moduleId: PLATFORM.moduleName(\"./pages/archetypes/archetype-list-child-router\"),\n        name: \"archetype-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.archetypes.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.ArchetypeView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.ArchetypeView]\n          },\n          icon: \"ticon-perfiles-referencia\"\n        }\n      },\n      {\n        route: \"reference-position\",\n        moduleId: PLATFORM.moduleName(\"./pages/position-reference/position-reference-list-child-router\"),\n        name: \"position-reference-list-child-router\",\n        title: this.i18n.tr(\"main.test.pages.position.position_reference_list.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.ArchetypeView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.ArchetypeView]\n          },\n          icon: \"ticon-perfiles-referencia\"\n        }\n      },\n\n      {\n        route: \"educational-levels-by-country\",\n        moduleId: PLATFORM.moduleName(\"./pages/educational-levels-by-country/educational-level-country-list-child-router\"),\n        name: \"educational-level-country-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.educational_levels_country.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.EducationalLevelCountryView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.EducationalLevelCountryView]\n          },\n          icon: \"ticon-nivel-educativo2\"\n        }\n      },\n\n      {\n        route: \"habeas-data-by-country\",\n        moduleId: PLATFORM.moduleName(\"./pages/habeas-data-by-country/habeas-data-country-list-child-router\"),\n        name: \"habeas-data-country-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.habeas_data_country.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.EducationalLevelCountryUpdate),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.EducationalLevelCountryUpdate]\n          },\n          icon: \"ticon-baremos2\"\n        }\n      },\n\n      {\n        route: \"languages\",\n        moduleId: PLATFORM.moduleName(\"./pages/languages/language-list-child-router\"),\n        name: \"language-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.languages.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.LanguageView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.LanguageView]\n          },\n          icon: \"ticon-localizaciones\"\n        }\n      },\n\n      {\n        route: \"labels\",\n        moduleId: PLATFORM.moduleName(\"./pages/labels/label-list\"),\n        name: \"labels\",\n        title: this.i18n.tr(\"main.admin.pages.labels.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.LanguageView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.LanguageView]\n          },\n          icon: \"ticon-localizaciones\"\n        }\n      },     \n    ]);\n\n  }\n\n  private getCompanySettings(): CompanySettings {\n\n    let settings = new CompanySettings();\n\n    settings.hasGroupManagement = true;\n    settings.hasUserManagement = true;\n    settings.hasProfileManagement = true;\n    settings.hasTalentManagement = true;\n    settings.hasNotificationManagement = true;\n    settings.hasPreferenceManagement = true;\n\n    if (this.state\n      && this.state.userBasicInfo\n      && this.state.userBasicInfo.roleId >= Role.Master\n      && this.state.currentCompany\n      && this.state.currentCompany.companySettings) {\n\n      settings = this.state.currentCompany.companySettings;\n\n    }\n\n    return settings;\n  }\n\n}\n","module.exports = \"<template> <router-view swap-order=after></router-view> </template> \";","\nimport { Company } from 'models/companies/company';\nimport { autoinject, bindable, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { DeleteConfirmation } from \"../../../components/delete-confirmation\";\nimport { Notification } from \"common/services/notification\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { AgreementService } from '../../services/agreements/agreement-service';\nimport { Agreement } from 'models/agreements/agreement';\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\nimport { PdfService } from 'main/admin/services/pdf/pdf-service';\nimport * as $ from 'jquery';\n\n@autoinject()\nexport class AgreementList {\n\n  @bindable\n  public companyId: number;\n\n  private company: Company;\n  private logger: Logger;\n  private agreements: Agreement[] = [];\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n  private params: any = {};\n\n  private state: State;\n\n  private isMaster: boolean = false;\n\n  constructor(\n    private store: StoreService,\n    private agreementService: AgreementService,\n    private pdfService: PdfService,\n    private dialogService: DialogService,\n    private router: Router,\n    private notification: Notification) {\n    this.logger = LogManager.getLogger(\"AgreementList\");\n\n    this.state = this.store.state;\n  }\n\n  public async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.logger.debug(\"activate companyId:\", params.companyId);\n    this.params = params;\n\n    this.isMaster = routeConfig.navModel.router.baseUrl.indexOf(\"companies-master\") > 0;   \n  }\n\n  public async bind(): Promise<any> {\n    if (!isNaN(this.params.companyGroupId)) {\n      this.companyId = +this.params.companyGroupId;\n    }    \n    if (this.params.companyDetailId && this.params.companyDetailId === 'create') {     \n      this.companyId = null;\n    }    \n    if (!isNaN(this.params.companyDetailId)) {\n      this.companyId = +this.params.companyDetailId;\n    }\n    if (this.companyId) {\n      this.agreementService.client.currentCompanyId = this.companyId;\n      this.company = this.state.companies.find(x => x.id == this.companyId);\n      return await this.databind();\n    }\n  }\n\n  public async databind(): Promise<void> {\n    this.logger.info(\"databind\");\n    return await this.agreementService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private refresh = async (): Promise<UxDatatableResponse> => {\n    return this.agreementService.list(this.parameters);\n  }\n\n  private async delete(id: number, name: string): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    }).whenClosed((response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        this.agreementService.delete(id)\n          .then(() => {\n            let indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(id.toString());\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n\n            this.notification.success(\"main.admin.pages.agreements.notifications.deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private async pdfExport(id: number, name: string): Promise<void> {\n    let html = $('html').html();\n    try {\n      let readOnly = await this.agreementService.getReadOnlyById(id);\n      return this.pdfService.print(readOnly.agreementBody, name);\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n    \n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class AgreementChildRouter {\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N){\n    this.logger = LogManager.getLogger(\"AgreementChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./agreement-list\"),\n        name: \"agreements\"\n      },\n      {\n        route: \"agreement/:agreementId\",\n        moduleId: PLATFORM.moduleName(\"./readonly/readonly-child-router\"),\n        name: \"readonly-child-router\",\n      },\n      {\n        route: \"agreement/:agreementId/edit\",\n        moduleId: PLATFORM.moduleName(\"./edition/edition-child-router\"),\n        name: \"edition-child-router\"\n      }  \n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","module.exports = \"<template> <require from=../../../../models/agreements/agreementDurationViewEngineHooks></require> <require from=../../../../models/agreements/agreementStatusViewEngineHooks></require> <div if.bind=!companyId> <h2>${'main.admin.pages.agreements.title' & t}</h2> <p> ${'main.admin.pages.agreements.notification_new_group' & t} </p> </div> <div class=\\\"content-container row mb-3\\\" if.bind=companyId> <div class=content-main> <h2>${company.name} / ${'main.admin.pages.agreements.title' & t}</h2> <p> ${'main.admin.pages.agreements.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-4> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=col-2> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-3 scope=col t=main.admin.pages.agreements.description>Description</th> <th class=col-md-2 scope=col t=main.admin.pages.agreements.dateStart>Date Start</th> <th class=col-md-2 scope=col t=main.admin.pages.agreements.dateEnd>Date End</th> <th class=col-md-1 scope=col t=main.admin.pages.agreements.duration>Agreement Type</th> <th class=col-md-2 scope=col t=main.admin.pages.agreements.state>Status</th> <th class=col-md-2 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-3 text-truncate\\\"><span title=${item.description}>${item.description}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=\\\"${item.startDate | dateFormat}\\\">${item.startDate | dateFormat}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=\\\"${item.endDate | dateFormat}\\\">${item.endDate | dateFormat}</span></td> <td class=col-md-1>${'main.admin.pages.agreements.agreementDuration.' + AgreementDuration[item.agreementDuration] & t}</td> <td class=col-md-2>${'main.admin.pages.agreements.agreementStatus.' + AgreementStatus[item.agreementStatus] & t}</td> <td class=\\\"col-md-2 d-flex\\\"> <a if.bind=isMaster class=\\\"btn btn-link\\\" global-permission-show=\\\"can: ServiceAgreementView\\\" route-href=\\\"route: readonly-child-router; params.bind: {agreementId: item.id}\\\" title.bind=\\\"'commands.view' & t\\\"> <i class=material-icons>visibility</i> </a> <a if.bind=!isMaster class=\\\"btn btn-link\\\" global-permission-show=\\\"can: ServiceAgreementUpdate\\\" route-href=\\\"route: readonly-child-router; params.bind: {agreementId: item.id}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <button if.bind=!isMaster class=\\\"btn btn-link\\\" global-permission-show=\\\"can: ServiceAgreementDelete\\\" click.delegate=\\\"delete(item.id, item.description)\\\" title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar global-permission-show=\\\"can: ServiceAgreementCreate\\\" if.bind=!isMaster> <div class=row> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=commands.create>title</h5> <p class=card-text t=[html]main.admin.pages.agreements.create_info>Lorem</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: edition-child-router; params.bind: {agreementId:'create'}\\\">${'commands.create' & t}</a> </div> </div> </div> </div> </div> </div> </template> \";","import { DialogController } from 'aurelia-dialog';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\n@autoinject()\nexport class AgreementReadOnlyModeModal {\n\n  private logger: Logger;\n\n  private params: any = {};\n\n  constructor(\n    private dialogController: DialogController) {\n    this.logger = LogManager.getLogger(\"AgreementReadOnlyModeModal\");\n  }\n\n  public async activate(params: any): Promise<void> {\n    this.logger.debug(\"activate\", params);\n    this.params = params;\n\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <require from=./readonly/agreement-readonly-mode></require> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <agreement-readonly-mode params.bind=params is-master=true is-attached=true></agreement-readonly-mode> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.close' & t}</button> </div> </div> </ux-dialog-body> </ux-dialog> </template> \";","import { Agreement } from '../../../../models/agreements/agreement';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { AgreementMasterService } from \"main/admin/services/agreements/agreement-master-service\";\nimport { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { AgreementReadOnlyModeModal } from './agreement-readonly-mode-modal';\n\n@autoinject()\nexport class AgreementsToApprove {\n\n  private logger: Logger;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  constructor(\n    private dialogService: DialogService,\n    private agreementMasterService: AgreementMasterService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"AgreementsToApprove\");\n  }\n\n  public async attached(): Promise<any> {\n    this.logger.debug(\"attached\");\n    try {\n      let response: UxDatatableResponse = await this.agreementMasterService.listToApprove(this.parameters);\n      this.parameters.tableData = response.data;\n      this.parameters.totalRecords = response.totalRecords;\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n\n  public async view(item: Agreement): Promise<any> {\n    this.logger.info(\"view\");\n\n    let params: any = {\n      companyGroupId: item.company.parentId,\n      companyDetailId: item.companyId,\n      agreementId: item.id,\n    };\n\n    return await this.dialogService.open({\n      viewModel: AgreementReadOnlyModeModal,\n      model: params\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return null;\n      }\n    });\n\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private refresh = async (): Promise<UxDatatableResponse> => {\n    return this.agreementMasterService.listToApprove(this.parameters);\n  }\n}\n","module.exports = \"<template> <section class=au-animate if.bind=\\\"parameters.tableData.length > 0\\\" global-permission-show=\\\"can: ServiceAgreementStateApproved\\\"> <h2>${'main.admin.pages.agreements_to_approve.title' & t}</h2> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-10\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=col-2> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=\\\"list-group list-group-flush\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item repeat.for=\\\"item of parameters.tableData\\\"> <button class=\\\"btn btn-link\\\" title.bind=\\\"'commands.view' & t\\\" click.delegate=view(item)> ${item.company.name} (${item.company.businessName}) - ${item.description} </button> </li> </ul> </div> </div> </section> </template> \";","import { I18N } from 'aurelia-i18n';\nimport { DialogController } from \"aurelia-dialog\";\nimport { autoinject } from \"aurelia-framework\";\n\n\n@autoinject()\nexport class ChangeStateAgreementConfirmation {\n  private agreementstatus: string;\n\n\n  constructor(private dialogController: DialogController,\n    private i18n: I18N) {\n    this.agreementstatus = null;\n  }\n\n  public activate(agreementstatus: string) {\n    this.agreementstatus = this.i18n.tr(agreementstatus);\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2 t=commands.change_state>Change state</h2> <p t=modals.change_state_agreement_confirmation.message t-params.bind=\\\"{agreementstatus: agreementstatus}\\\">Change state?</p> </ux-dialog-body> <ux-dialog-footer> <button attach-focus=true class=\\\"btn btn-primary btn-round\\\" click.delegate=dialogController.ok() t=commands.accept>Accept</button> <button class=\\\"btn btn-secondary btn-round\\\" click.delegate=dialogController.cancel() t=commands.cancel>Cancel</button> </ux-dialog-footer> </ux-dialog> </template> \";","import { AgreementStatus } from 'models/agreements/agreementStatus';\nimport { ActivityStatus } from 'models/agreements/activityStatus';\nimport { ActivityModal } from './activity-modal';\nimport { DeleteConfirmation } from '../../../../components/delete-confirmation';\nimport { UxDatatableResponse } from 'common/resources/elements/ux/datatable/ux-datatable';\nimport { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { ActivityService } from '../../../services/agreements/activity-service';\nimport { AgreementService } from '../../../services/agreements/agreement-service';\nimport { UxDatatableCustomAttribute } from 'common/resources/elements/ux/datatable/ux-datatable';\nimport { UxDatatableParameters } from 'common/resources/elements/ux/datatable/ux-datatable';\nimport { Agreement } from 'models/agreements/agreement';\nimport { Logger } from 'aurelia-logging';\nimport { Activity } from 'models/agreements/activity';\nimport { Notification } from \"common/services/notification\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\n\n@autoinject()\nexport class ActivityList {\n  \n  private logger: Logger;\n  public agreementId: number;\n  private companyId: number;\n  private agreement: Agreement;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private disable: boolean = false;\n  private params: any = {};\n\n  constructor(\n    private agreementService: AgreementService,\n    private activityService: ActivityService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n    this.logger = LogManager.getLogger(\"ActivityList\");\n  }\n\n  public async activate(params: any): Promise<void> {\n    this.params = params;\n  }\n\n  public async bind(): Promise<any> {\n    if (!isNaN(this.params.agreementId)) {\n      this.agreementId = +this.params.agreementId;\n      \n      if (!isNaN(this.params.companyGroupId)) {\n        this.companyId = +this.params.companyGroupId;\n      }\n      \n      if (this.params.companyDetailId && this.params.companyDetailId === 'create') {\n        this.companyId = null;\n      }\n      else if (!isNaN(this.params.companyDetailId)) {\n        this.companyId = +this.params.companyDetailId;\n      }\n\n      if (this.agreementId && this.companyId) {\n        this.agreementService.client.currentCompanyId = this.params.companyId;\n        this.activityService.client.currentCompanyId = this.params.companyId;\n\n        try {\n          this.agreement = await this.agreementService.getById(this.agreementId);\n          \n          if (this.agreement.agreementStatus !== AgreementStatus.InternalDraft) {\n            this.disable = true;\n          }\n\n          return this.databind();\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n    }\n  }\n\n  public async databind(): Promise<void> {\n    this.logger.info(\"databind\");\n    return await this.activityService.list(this.agreementId, this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private refresh = (): Promise<UxDatatableResponse> => {\n    // this.logger.info(\"refreshing\");\n    return this.activityService.list(this.agreementId, this.parameters);\n  }\n\n  private async create(): Promise<void> {\n    let item: Activity = new Activity();\n    item.agreementId = this.agreementId;\n    return await this.dialogService.open({\n      viewModel: ActivityModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        item.activityStatus = ActivityStatus.Pending;\n        return await this.activityService.create(item)\n          .then(async (activity: Activity) => {\n            item.id = activity.id;\n            this.parameters.tableData.unshift(item);\n            this.notification.success(\"notifications.item_added\");\n            // return await this.databind();\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private async edit(item: Activity): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: ActivityModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.activityService.update(item)\n          .then(async () => {\n            this.notification.success(\"notifications.item_edited\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      } else {\n        this.databind();\n      }\n    });\n  }\n\n  private async delete(id: number, name: string): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    }).whenClosed((response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        this.activityService.delete(id)\n          .then(() => {\n            // this.databind();\n            let indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(id.toString());\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n\n            this.notification.success(\"notifications.item_deleted\");\n            \n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../../models/agreements/activityStatusViewEngineHooks></require> <require from=../../../../../models/agreements/notifyViewEngineHooks></require> <require from=../../../../../common/resources/value-converters/date-format></require> <div if.bind=!agreementId> <h2>${'main.admin.pages.agreements.create' & t}</h2> <p> ${'main.admin.pages.agreements.activity.notification_new_agreement' & t} </p> </div> <div class=\\\"content-container row mb-3\\\" if.bind=agreementId> <div class=content-main> <h2>${'main.admin.pages.agreements.activity.workplan' & t} / ${agreement.description}</h2> <p> ${'main.admin.pages.agreements.activity.information' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-4> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=col-2> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-2 scope=col t=main.admin.pages.agreements.activity.name>Name</th> <th class=col-md-2 scope=col t=main.admin.pages.agreements.activity.responsible>Responsible</th> <th class=col-md-1 scope=col t=main.admin.pages.agreements.activity.date>Date</th> <th class=col-md-1 scope=col t=main.admin.pages.agreements.activity.hasAlarm>Alarm</th> <th class=col-md-2 scope=col t=main.admin.pages.agreements.activity.email>Email</th> <th class=col-md-1 scope=col t=main.admin.pages.agreements.activity.notifies>Notify</th> <th class=col-md-1 scope=col t=main.admin.pages.agreements.activity.status>ActivityStatus</th> <th class=col-md-2 scope=col hidden.bind=disable></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.name}>${item.name}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.responsible}>${item.responsible}</span></td> <td class=\\\"col-md-1 text-truncate\\\"><span title=\\\"${item.date | dateFormat}\\\">${item.date | dateFormat}</span></td> <td class=col-md-1>${item.hasAlarm ? 'commands.yes' : 'commands.no' & t }</td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.email}>${item.email}</span></td> <td class=col-md-1>${'main.admin.pages.agreements.activity.notify.' + Notify[item.notify] & t}</td> <td class=col-md-1>${'main.admin.pages.agreements.activity.activityStatus.' + ActivityStatus[item.activityStatus] & t}</td> <td class=\\\"col-md-2 d-flex\\\"> <button if.bind=!disable class=\\\"btn btn-link\\\" global-permission-show=\\\"can: ServiceAgreementUpdate\\\" click.delegate=edit(item) title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </button> <button if.bind=!disable class=\\\"btn btn-link\\\" global-permission-show=\\\"can: ServiceAgreementUpdate\\\" click.delegate=\\\"delete(item.id, item.name)\\\" title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\" if.bind=!disable> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=commands.create>title</h5> <p class=card-text t=[html]main.admin.pages.agreements.activity.create_info>Lorem</p> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: ServiceAgreementCreate\\\" click.delegate=create()>${'main.admin.pages.agreements.activity.commands.create' & t}</button> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: readonly-child-router; params.bind: { agreementId: agreement.id}\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </div> </template> \";","import { ValidationRules, ControllerValidateResult } from 'aurelia-validation';\nimport { BootstrapFormRenderer } from 'common/services/bootstrap-form-renderer';\nimport { DialogController } from 'aurelia-dialog';\nimport { ValidationController, ValidationControllerFactory } from 'aurelia-validation';\nimport { Activity } from 'models/agreements/activity';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from 'aurelia-logging';\n\n@autoinject()\nexport class ActivityModal {\n  \n  private model: Activity = new Activity;\n  private validationController: ValidationController;\n  private logger: Logger;\n\n  constructor(\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ActivityModal\");\n  }\n\n public async activate(model: Activity): Promise<void> {\n    this.logger.debug(\"activate\");\n    this.model = model;\n    this.configureValidationRules();\n  }\n  \n  configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.agreements.activity.name\").required()\n      .ensure(\"responsible\").displayName(\"main.admin.pages.agreements.activity.responsible\").required()\n      .ensure(\"date\").displayName(\"main.admin.pages.agreements.activity.date\").required()\n      .ensure(\"email\").displayName(\"main.admin.pages.agreements.activity.email\").required().matches(/^[-\\w.%+]{1,64}@(?:[A-Z0-9-]{1,63}\\.){1,125}[A-Z]{2,63}$/i)\n      .ensure(\"Notify\").displayName(\"main.admin.pages.agreements.activity.Notify\").required()\n      .on(this.model);\n  }\n\n  public async submit(): Promise<void> {\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {          \n          return await this.save();\n        }\n      });\n  }\n\n  public async save(): Promise<any> {\n    return await this.dialogController.ok();\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../../models/agreements/notifyViewEngineHooks></require> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'main.admin.pages.agreements.activity.title' & t}</h2> <form> <div class=form-group> <label for=model.name t=main.admin.pages.agreements.activity.name>Name</label> <input type=text value.bind=\\\"model.name & validate\\\" class=form-control id=name t=[placeholder]main.admin.pages.agreements.activity.name> </div> <div class=form-group> <label for=model.responsible t=main.admin.pages.agreements.activity.responsible>Responsible</label> <input type=text value.bind=\\\"model.responsible & validate\\\" class=form-control id=responsible t=[placeholder]main.admin.pages.agreements.activity.responsible> </div> <div class=form-group> <label for=model.date t=main.admin.pages.agreements.activity.date>Date</label> <ux-date-picker value.bind=\\\"model.date & validate\\\"></ux-date-picker> </div> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=model.hasAlarm checked.bind=model.hasAlarm /> <label for=model.hasAlarm class=form-check-label>${'main.admin.pages.agreements.activity.hasAlarm' & t}</label> </span> </div> <div class=form-group> <label for=model.email t=main.admin.pages.agreements.activity.email>Percentage</label> <input type=text value.bind=\\\"model.email & validate\\\" class=form-control id=email t=[placeholder]main.admin.pages.agreements.activity.email> </div> <div class=form-group> <label for=model.notify t=main.admin.pages.agreements.activity.notifies>PaymentDay</label> <select value.bind=\\\"model.notify & validate\\\" class=form-control id=notify> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of Notifies\\\" model.bind=Notify[option]> ${'main.admin.pages.agreements.activity.notify.' + option & t}</option> </select> </div> <div class=form-group> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: ServiceAgreementUpdate\\\" type=submit click.delegate=submit()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { AgreementStatus } from 'models/agreements/agreementStatus';\nimport { Notification } from 'common/services/notification';\nimport { AgreementCustomerReqService } from '../../../services/agreements/agreement-customer-req-service';\nimport { AgreementCustomerReq } from 'models/agreements/agreementCustomerReq';\nimport { Agreement } from 'models/agreements/agreement';\nimport { Router } from 'aurelia-router';\nimport { ValidationRules, ControllerValidateResult } from 'aurelia-validation';\nimport { AgreementService } from '../../../services/agreements/agreement-service';\nimport { BootstrapFormRenderer } from 'common/services/bootstrap-form-renderer';\nimport { ValidationControllerFactory } from 'aurelia-validation';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { ValidationController } from 'aurelia-validation';\nimport { Logger } from 'aurelia-logging';\nimport { BusinessCompanyService } from 'main/admin/services/franchises/business-company-service';\nimport { BankInformationService } from 'main/admin/services/franchises/bank-information-service';\nimport { BusinessCompany } from 'models/franchises/businessCompany';\nimport { BankInformation } from 'models/franchises/bankInformation';\n\n@autoinject()\nexport class AgreementCustomerReqEdit {\n\n  private logger: Logger;\n  private agreement: Agreement;\n  private agreementId: number;\n  private companyId: number;\n  private franchiseId: number;\n\n  private businessCompanies: BusinessCompany[] = [];\n  private bankInformations: BankInformation[] = [];\n\n  private model: AgreementCustomerReq = new AgreementCustomerReq();\n  private validationController: ValidationController;\n\n  private disable: boolean = false;\n\n  private params: any = {};\n\n  constructor(\n    private agreementService: AgreementService,\n    private agreementCustomerReqService: AgreementCustomerReqService,\n    private businessCompanyService: BusinessCompanyService,\n    private bankInformationService: BankInformationService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private router: Router,\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"AgreementCustomerReqEdit\")\n  }\n\n  public async activate(params: any): Promise<void> {\n    this.logger.info(\"activate\");\n    this.params = params;\n  }\n\n  public async bind(): Promise<any> {\n    if (!isNaN(this.params.agreementId) && !isNaN(this.params.franchiseId)) {\n      this.franchiseId = this.params.franchiseId;\n      this.agreementId = this.params.agreementId;\n\n      if (!isNaN(this.params.companyGroupId)) {\n        this.companyId = +this.params.companyGroupId;\n      }\n\n      if (this.params.companyDetailId && this.params.companyDetailId === 'create') {\n        this.companyId = null;\n      }\n      else if (!isNaN(this.params.companyDetailId)) {\n        this.companyId = +this.params.companyDetailId;\n      }\n\n      if (this.agreementId && this.companyId) {\n        this.agreementService.client.currentCompanyId = this.companyId;\n\n        try {\n\n          this.businessCompanies = await this.businessCompanyService.getAll(this.franchiseId);\n\n          this.agreement = await this.agreementService.getById(+this.params.agreementId);\n\n          if (this.agreement.agreementStatus !== AgreementStatus.InternalDraft) {\n            this.disable = true;\n          }\n\n          this.agreementCustomerReqService.client.currentCompanyId = this.companyId;\n          this.model = await this.agreementCustomerReqService.getById(+this.params.agreementId);\n\n          if (this.model.id === 0) {\n            this.model.agreementId = this.agreementId;\n            this.model.agreement = this.agreement;\n          }else{\n            this.bankInformations = await this.bankInformationService.getAll(this.model.businessCompanyId);\n          }\n\n          this.configureValidationRules();\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n    }\n  }\n\n  private configureValidationRules(): void {\n    // this.logger.info(\"configureValidationRules\");\n    // this.logger.debug(\"model\", this.model);\n    ValidationRules\n      .ensure(\"purchaseOrder\").displayName(\"main.admin.pages.agreements.agreementcustomerreq.purchaseOrder\").required()\n      .ensure(\"nameToInvoice\").displayName(\"main.admin.pages.agreements.agreementcustomerreq.nameToInvoice\").required()\n      .ensure(\"billingClosingDate\").displayName(\"main.admin.pages.agreements.agreementcustomerreq.billingClosingDate\").required()\n      .ensure(\"documentsToRegisterAsProvider\").displayName(\"main.admin.pages.agreements.agreementcustomerreq.documentsToRegisterAsProvider\").required()\n      .ensure(\"businessCompanyId\").displayName(\"main.admin.pages.agreements.agreementcustomerreq.companyToDeliverInvoice\").required()\n      .ensure(\"bankInformationId\").displayName(\"main.admin.pages.agreements.agreementcustomerreq.bankInformation\").required()\n      .on(this.model);\n\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(keepEditing);\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.agreementCustomerReqService.client.isRequesting;\n  }\n\n  public async save(keepEditing: boolean): Promise<any> {\n    this.logger.info(\"save\");\n\n    // TO-DO por default colombia\n    // this.model.bankInformationId = 1;\n    // this.model.companyToDeliverInvoiceId = 5;\n\n    try {\n\n      if (!this.model.id) {\n\n        this.model = await this.agreementCustomerReqService.create(this.model)\n\n        this.notification.success(\"notifications.item_added\");\n\n        if (!keepEditing) {\n          this.router.parent.navigateToRoute(\"readonly-child-router\", { agreementId: this.agreementId });\n        }\n        else {\n          // this.logger.debug(\"agrrementId: \", this.model.id);\n          return await this.router.navigateToRoute(\"agreements-customer-req\");\n        }\n\n      }\n      else {\n        await this.agreementCustomerReqService.update(this.model);\n\n        this.notification.success(\"notifications.item_edited\");\n\n        if (!keepEditing) {\n          this.router.parent.navigateToRoute(\"readonly-child-router\", { agreementId: this.agreementId });\n        }\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public async filterBank(businessCompanyId: number): Promise<void> {\n    this.model.bankInformationId = null;\n\n    this.bankInformations = await this.bankInformationService.getAll(businessCompanyId);\n  }\n}\n","module.exports = \"<template> <require from=../../../../../common/resources/value-converters/date-format></require> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <section if.bind=!agreementId> <h2>${'main.admin.pages.agreements.create' & t}</h2> <p> ${'main.admin.pages.agreements.agreementcustomerreq.notification_new_agreement' & t} </p> </section> <section if.bind=agreementId> <h2>${'main.admin.pages.agreements.agreementcustomerreq.title' & t} / ${agreement.description}</h2> <p> ${'main.admin.pages.agreements.agreementcustomerreq.information' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=agreementcustomerreq.purchaseOrder t=main.admin.pages.agreements.agreementcustomerreq.purchaseOrder>PurchaseOrder</label> <input type=text value.bind=\\\"model.purchaseOrder & validate\\\" class=form-control id=agreementcustomerreq.purchaseOrder t=[placeholder]main.admin.pages.agreements.agreementcustomerreq.purchaseOrder> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=agreementcustomerreq.nameToInvoice t=main.admin.pages.agreements.agreementcustomerreq.nameToInvoice>NameToInvoice</label> <input type=text value.bind=\\\"model.nameToInvoice & validate\\\" class=form-control id=nameToInvoice t=[placeholder]main.admin.pages.agreements.agreementcustomerreq.nameToInvoice> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=agreementcustomerreq.billingClosingDate t=main.admin.pages.agreements.agreementcustomerreq.billingClosingDate>BillingClosingDate</label> <ux-date-picker value.bind=\\\"model.billingClosingDate & validate\\\" id=billingClosingDate> </ux-date-picker> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <label for=agreementcustomerreq.documentsToRegisterAsProvider t=main.admin.pages.agreements.agreementcustomerreq.documentsToRegisterAsProvider>DocumentsToRegisterAsProvider</label> <input type=text value.bind=\\\"model.documentsToRegisterAsProvider & validate\\\" class=form-control id=documentsToRegisterAsProvider t=[placeholder]main.admin.pages.agreements.agreementcustomerreq.documentsToRegisterAsProvider> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=agreementcustomerreq.hasSupplierRegistration checked.bind=model.hasSupplierRegistration /> <label for=agreementcustomerreq.hasSupplierRegistration class=form-check-label>${'main.admin.pages.agreemenst.agreementcustomerreq.hasSupplierRegistration' & t}</label> </span> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=agreementcustomerreq.isRequiresContract checked.bind=model.isRequiresContract /> <label for=agreementcustomerreq.isRequiresContract class=form-check-label>${'main.admin.pages.agreemenst.agreementcustomerreq.isRequiresContract' & t}</label> </span> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=agreementcustomerreq.businessCompanyId t=main.admin.pages.agreements.agreementcustomerreq.companyToDeliverInvoice>businessCompanyId</label> <select value.bind=\\\"model.businessCompanyId & validate\\\" class=form-control id=agreementcustomerreq.businessCompanyId change.delegate=filterBank(model.businessCompanyId)> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of businessCompanies\\\" model.bind=option.id>${option.name} </option> </select> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=agreementcustomerreq.bankInformationId t=main.admin.pages.agreements.agreementcustomerreq.bankInformation>planId</label> <select value.bind=\\\"model.bankInformationId & validate\\\" class=form-control id=agreementcustomerreq.bankInformationId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of bankInformations\\\" model.bind=option.id>${option.bank} - ${option.accountNumber} </option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=form-actions> <button if.bind=!disable class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: ServiceAgreementCreate\\\" type=submit click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button if.bind=!disable class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: ServiceAgreementCreate\\\" type=submit click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: readonly-child-router; params.bind: { agreementId: agreement.id}\\\" t=commands.cancel>Cancel</a> </div> </section> </form> </div> </template> \";","import { AgreementPlanService } from '../../../services/agreements/agreement-plan-service';\nimport { TestPlanItemListModal } from './test-plan-item-list-modal';\nimport { DialogCloseResult } from 'aurelia-dialog';\nimport { ContactModal } from '../../contacts/contact-modal';\nimport { DialogService } from 'aurelia-dialog';\nimport { Contact } from 'models/contacts/contact';\nimport { ValidationRules, ControllerValidateResult } from 'aurelia-validation';\nimport { Agreement } from 'models/agreements/agreement';\nimport { Company } from 'models/companies/company';\nimport { AgreementService } from '../../../services/agreements/agreement-service';\nimport { ValidationControllerFactory } from 'aurelia-validation';\nimport { Notification } from 'common/services/notification';\nimport { CatalogService } from '../../../../services/catalogs/catalog-service';\nimport { CatalogBase } from 'models/catalogs/catalog-base';\nimport { ValidationController } from 'aurelia-validation';\nimport { Logger } from 'aurelia-logging';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Router } from 'aurelia-router';\nimport { Plan } from 'models/plans/plan';\nimport { ContactService } from '../../../services/contacts/contact-service';\nimport { AgreementStatus } from 'models/agreements/agreementStatus';\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\nimport { PlanType } from 'models/plans/planType';\nimport { CompanyDetailService } from 'main/admin/services/companies/company-detail-service';\n\n\n@autoinject()\nexport class AgreementEdit {\n  private logger: Logger;\n  private companyId: number;\n  private company: Company;\n  private model: Agreement = new Agreement();\n\n\n  private validationController: ValidationController;\n\n  private plans: Plan[] = [];\n  private allPlans: Plan[] = [];\n  private selectionPlans: Plan[] = [];\n  private contacts: Contact[] = [];\n  private legalContact: Contact;\n  private officialContact: Contact;\n  private approveContact: Contact;\n\n  private countries: CatalogBase[] = [];\n\n  private disable: boolean = false;\n\n  private params: any = {};\n\n  private state: State;\n\n  constructor(\n    private store: StoreService,\n    private catalogService: CatalogService,\n    private contactService: ContactService,\n    private agreementPlanService: AgreementPlanService,\n    private agreementService: AgreementService,\n    private dialogService: DialogService,\n    private companyDetailService: CompanyDetailService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private router: Router,\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"AgreementEdit\");\n\n    this.state = this.store.state;\n  }\n\n  public async activate(params: any): Promise<void> {\n    this.logger.info(\"activate\");\n    this.params = params;\n  }\n\n  public async bind(): Promise<any> {\n\n    if (!isNaN(this.params.companyGroupId) && !isNaN(this.params.franchiseId)) {\n      try {\n        this.countries = await this.catalogService.getCountryAll();\n        if (!isNaN(this.params.companyGroupId)) {\n          this.companyId = +this.params.companyGroupId;\n        }\n\n        if (this.params.companyDetailId && this.params.companyDetailId === 'create') {\n          this.companyId = null;\n        }\n        else if (!isNaN(this.params.companyDetailId)) {\n          this.companyId = +this.params.companyDetailId;\n        }\n\n        if (this.companyId) {\n\n          this.agreementService.client.currentCompanyId = this.companyId;\n          this.agreementPlanService.client.currentCompanyId = this.companyId;\n\n          this.company = this.state.companies.find(x => x.id == this.companyId);\n          this.contacts = await this.contactService.getall(this.companyId);\n          this.allPlans = await this.agreementPlanService.getBillablePlansByFranchiseId(this.params.franchiseId);\n          this.plans = this.allPlans.filter(x => !x.isRobotHunter);\n          this.model = await this.agreementService.getLastAgreementByCompany(this.companyId);\n          this.selectionPlans = this.allPlans.filter(x => x.isRobotHunter && x.isTestItemsActive);\n\n          if (!isNaN(this.params.agreementId)) {\n\n            this.model = await this.agreementService.getById(+this.params.agreementId);\n\n            if (this.model.agreementStatus !== AgreementStatus.InternalDraft) {\n              this.disable = true;\n            }\n\n            this.legalContactChange();\n            this.officialContactChange();\n            this.approveContactChange();\n\n          }\n          else {\n            this.model.companyId = this.companyId;\n            this.model.company = this.company;\n          }\n\n          if (this.model.isDemoSelectionPlan) {\n            this.selectionPlans = (await this.companyDetailService.getDemoPlansByFranchiseId(this.params.franchiseId))\n              .filter(x => x.isRobotHunter && x.isTestItemsActive);\n          }\n\n\n          this.configureValidationRules();\n        }\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n  private configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    // this.logger.debug(\"model\", this.model);\n    ValidationRules\n      .ensure(\"description\").displayName(\"main.admin.pages.agreements.description\").required()\n      //.ensure(\"countryId\").displayName(\"catalog.country.title\").required()\n      //.ensure(\"planId\").displayName(\"main.admin.pages.agreements.plan\").required()\n      .ensure(\"numApprovedUsers\").displayName(\"main.admin.pages.agreements.numApprovedUsers\").required()\n      .ensure(\"talents\").displayName(\"main.admin.pages.agreements.talents\").required().matches(/^[0-9]*$/)\n      .ensure(\"selectionTalents\").displayName(\"main.admin.pages.agreements.talents\").required().matches(/^[0-9]*$/)\n      .ensure(\"corporateID\").displayName(\"main.admin.pages.agreements.corporateid\").required()\n      .ensure(\"phone\").displayName(\"main.admin.pages.agreements.phone\").required()\n      .ensure(\"address\").displayName(\"main.admin.pages.agreements.address\").required()\n      .ensure(\"numberOfEmployees\").displayName(\"main.admin.pages.agreements.numberOfEmployees\").required().matches(/^[0-9]*$/)\n      .ensure(\"agreementDuration\").displayName(\"main.admin.pages.agreements.duration\").required()\n      .ensure(\"startDate\").displayName(\"main.admin.pages.agreements.startDate\").required()\n      .ensure(\"endDate\").displayName(\"main.admin.pages.agreements.endDate\").required()\n      .ensure(\"whoApproveId\").displayName(\"main.admin.pages.agreements.whoApprove\").required()\n      .ensure(\"officialInterlocutorId\").displayName(\"main.admin.pages.agreements.officialInterlocutor\").required()\n      .ensure(\"demoSelectionStartDate\").displayName(\"main.admin.pages.companies.demoSelectionStartDate\").required().when(x => this.model.isDemoSelectionPlan)\n      .ensure(\"selectionPlanId\").displayName(\"main.admin.pages.companies.selectionPlanId\").required().when(x => this.model.isDemoSelectionPlan)\n      .on(this.model);\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(keepEditing);\n        }\n      });\n  }\n  private async onIsDemoChange(isDemo: boolean) {\n    if (isDemo) {\n      this.model.demoSelectionStartDate = new Date();\n      this.selectionPlans = (await this.companyDetailService.getDemoPlansByFranchiseId(this.params.franchiseId))\n        .filter(x => x.isRobotHunter && x.isTestItemsActive);\n    }\n    else {\n      this.selectionPlans = this.allPlans.filter(x => x.isRobotHunter)\n        .filter(x => x.isTestItemsActive);\n    }\n  }\n  get canSave() {\n    return !this.agreementService.client.isRequesting;\n  }\n\n  public async save(keepEditing: boolean): Promise<any> {\n    this.logger.info(\"save\");\n    try {\n      if (!this.model.id) {\n\n        this.model = await this.agreementService.create(this.model)\n\n        if (!keepEditing) {\n          this.router.parent.navigateToRoute(\"readonly-child-router\", { agreementId: this.model.id });\n        }\n        else {\n          this.router.parent.navigateToRoute(\"edition-child-router\", { agreementId: this.model.id });\n        }\n\n        this.notification.success(\"notifications.item_added\");\n\n      } else {\n\n        await this.agreementService.update(this.model);\n\n        this.notification.success(\"notifications.item_edited\");\n\n        if (!keepEditing) {\n          this.router.parent.navigateToRoute(\"readonly-child-router\", { agreementId: this.model.id });\n        }\n\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async createContact(): Promise<void> {\n    this.logger.info(\"createContact\");\n    let item: Contact = new Contact();\n    item.companyId = this.company.id;\n\n    return await this.dialogService.open({\n      viewModel: ContactModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        try {\n          item = await this.contactService.create(item);\n\n          this.contacts.unshift(item);\n          this.notification.success(\"main.admin.pages.contacts.notifications.added\");\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n    });\n  }\n\n  private legalContactChange() {\n    this.legalContact = this.contacts.find(x => x.id === this.model.legalRepresentativeId);\n    this.model.legalRepresentative = this.legalContact.fullName;\n  }\n\n  private officialContactChange() {\n    this.officialContact = this.contacts.find(x => x.id === this.model.officialInterlocutorId);\n    this.model.officialInterlocutor = this.officialContact.fullName;\n  }\n\n  private approveContactChange() {\n    this.approveContact = this.contacts.find(x => x.id === this.model.whoApproveId);\n    this.model.WhoApprove = this.approveContact.fullName;\n  }\n\n  private async viewTestPlanItems(): Promise<void> {\n    this.logger.info(\"PlanDetailsPopup\");\n    return await this.dialogService.open({\n      viewModel: TestPlanItemListModal,\n      model: this.model.planId\n    }).whenClosed(async (response: DialogCloseResult) => null);\n  }\n  private async viewSelectionPlanItems(): Promise<void> {\n    this.logger.info(\"PlanDetailsPopup\");\n    return await this.dialogService.open({\n      viewModel: TestPlanItemListModal,\n      model: this.model.selectionPlanId\n    }).whenClosed(async (response: DialogCloseResult) => null);\n  }\n\n  private async cancel() {\n    if (this.model.id) {\n      return await this.router.navigateToRoute(\"readonly-child-router\", { agreementId: this.model.id });\n    } else {\n      return await this.router.navigateToRoute(\"agreements\");\n    }\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../../models/agreements/agreementDurationViewEngineHooks></require> <require from=../../../../../models/agreements/agreementStatusViewEngineHooks></require> <require from=../../../../../models/agreements/companyTypeViewEngineHooks></require> <require from=../../../../../models/agreements/corporateIdTypeViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2 if.bind=!model.id>${company.name} / ${'main.admin.pages.agreements.create' & t}</h2> <h2 if.bind=model.id>${company.name}</h2> <p> ${'main.admin.pages.agreements.info_editing' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=agreement.description t=main.admin.pages.agreements.description>Description</label> <input type=text value.bind=\\\"model.description & validate\\\" class=form-control id=agreement.description t=[placeholder]main.admin.pages.agreements.description> </div> </div> <div class=\\\"col-12 col-md-6 col-lg-3\\\"> <div class=form-group> <label for=planId t=main.admin.pages.agreements.plan>planId</label> <select value.bind=\\\"model.planId & validate\\\" class=form-control id=planId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of plans\\\" model.bind=option.id>${option.name}</option> </select> <a href=# if.bind=model.planId click.delegate=viewTestPlanItems() t=main.admin.pages.agreements.planDetails>View details plan</a> </div> </div> <div class=\\\"col-12 col-md-6 col-lg-3\\\"> <div class=form-group> <label for=selectionPlanId t=main.admin.pages.agreements.plan_selection>planId</label> <span if.bind=\\\"model.planId && model.agreementStatus != AgreementStatus.InWarranty && model.agreementStatus != AgreementStatus.Expired \\n            && model.agreementStatus != AgreementStatus.Cancelled \\\" class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=model.isDemoSelectionPlan checked.bind=model.isDemoSelectionPlan change.delegate=onIsDemoChange(model.isDemoSelectionPlan) /> <label for=model.isDemoSelectionPlan class=form-check-label t=main.admin.pages.agreements.demo_plan>Demo</label> </span> <select value.bind=\\\"model.selectionPlanId & validate\\\" class=form-control id=selectionPlanId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of selectionPlans\\\" model.bind=option.id>${option.name}</option> </select> <a href=# if.bind=model.selectionPlanId click.delegate=viewSelectionPlanItems() t=main.admin.pages.agreements.planDetails>View details plan</a> <div show.bind=model.isDemoSelectionPlan> <label for=demoSelectionStartDate t=main.admin.pages.agreements.date_demoselectionplan>Start_Date</label> <ux-date-picker value.bind=\\\"model.demoSelectionStartDate & validate\\\" id=demoSelectionStartDate></ux-date-picker> </div> </div> </div> <div class=\\\"col-12 col-md-2\\\"> <div class=form-group> <label for=agreement.numApprovedUsers t=main.admin.pages.agreements.numApprovedUsers>numApprovedUsers</label> <input type=number value.bind=\\\"model.numApprovedUsers & validate\\\" class=form-control id=agreement.numApprovedUsers t=[placeholder]main.admin.pages.agreements.numApprovedUsers> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-2\\\"> <div class=form-group> <label for=corporateTypeId t=main.admin.pages.agreements.corporate_id_type>CorporateId Type</label> <select value.bind=\\\"model.corporateIdType & validate\\\" class=form-control id=corporateidType> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of CorporateIdTypes\\\" model.bind=CorporateIdType[option]> ${'main.admin.pages.agreements.corporateIdType.' + option & t}</option> </select> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=agreement.corporateID t=main.admin.pages.agreements.corporateid>NIT</label> <input type=text value.bind=\\\"model.corporateID & validate\\\" class=form-control id=agreement.corporateID t=[placeholder]main.admin.pages.agreements.corporateid> </div> </div> <div class=\\\"col-12 col-md-2\\\"> <div class=form-group> <label for=companyType t=main.admin.pages.agreements.company_type>Company Type</label> <select value.bind=\\\"model.companyType & validate\\\" class=form-control id=companyType> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of CompanyTypes\\\" model.bind=CompanyType[option]> ${'main.admin.pages.agreements.companyType.' + option & t}</option> </select> </div> </div> <div class=\\\"col-12 col-md-4 col-lg-4\\\"> <div class=form-group> <label for=agreement.address t=main.admin.pages.agreements.address>Address</label> <input type=text value.bind=\\\"model.address & validate\\\" class=form-control id=agreement.address t=[placeholder]main.admin.pages.agreements.address> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=agreement.phone t=main.admin.pages.agreements.phone>NIT</label> <input type=text value.bind=\\\"model.phone & validate\\\" class=form-control id=agreement.phone t=[placeholder]main.admin.pages.agreements.phone> </div> </div> <div class=\\\"col-12 col-md-6 col-lg-6\\\"> <div class=form-group> <label for=agreement.phoneNumber t=main.admin.pages.agreements.phoneNumber>PhoneNumber</label> <input type=text value.bind=\\\"model.phoneNumber & validate\\\" class=form-control id=agreement.phoneNumber t=[placeholder]main.admin.pages.agreements.phoneNumber> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-3\\\"> <div class=form-group> <label for=agreement.numberOfEmployees t=main.admin.pages.agreements.numberofemployees>numberOfEmployees</label> <input type=number value.bind=\\\"model.numberOfEmployees & validate\\\" class=form-control id=agreement.numberOfEmployees t=[placeholder]main.admin.pages.agreements.numberofemployees> </div> </div> <div class=\\\"col-12 col-md-2 col-lg-4\\\"> <div class=form-group> <label for=agreement.talents t=main.admin.pages.agreements.talents>Description</label> <input type=text value.bind=\\\"model.talents & validate\\\" class=form-control id=agreement.talents t=[placeholder]main.admin.pages.agreements.talents> </div> </div> <div class=\\\"col-12 col-md-2 col-lg-4\\\"> <div class=form-group> <label for=agreement.selectionTalents t=main.admin.pages.agreements.selection_talents>Description</label> <input disabled.bind=model.isDemoSelectionPlan type=text value.bind=\\\"model.selectionTalents & validate\\\" class=form-control id=agreement.selectionTalents t=[placeholder]main.admin.pages.agreements.selection_talents> </div> </div> <div class=\\\"col-12 col-md-5\\\"> <div class=form-group> <label for=countryId>${'main.admin.pages.agreements.countries' & t}</label> <select multiple=multiple value.bind=model.operationCountries class=form-control> <option repeat.for=\\\"option of countries\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-6 col-lg-4\\\"> <div class=form-group> <label for=agreementDuration t=main.admin.pages.agreements.duration>Duration</label> <select value.bind=\\\"model.agreementDuration & validate\\\" class=form-control id=agreementDuration> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of AgreementDurations\\\" model.bind=AgreementDuration[option]> ${'main.admin.pages.agreements.agreementDuration.' + option & t}</option> </select> </div> </div> <div class=\\\"col-12 col-md-6 col-lg-4\\\"> <div class=form-group> <label for=agreement.startDate t=main.admin.pages.agreements.dateStart>Start_Date</label> <ux-date-picker value.bind=\\\"model.startDate & validate\\\" id=startDate></ux-date-picker> </div> </div> <div class=\\\"col-12 col-md-6 col-lg-4\\\"> <div class=form-group> <label for=agreement.endDate t=main.admin.pages.agreements.dateEnd>Start_Date</label> <ux-date-picker value.bind=\\\"model.endDate & validate\\\" id=endDate></ux-date-picker> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-6 col-lg-4\\\"> <div class=form-group> <label for=whoApproveId t=main.admin.pages.agreements.whoApprove>whoApprove</label> <select value.bind=\\\"model.whoApproveId & validate\\\" class=form-control id=whoApproveId change.delegate=approveContactChange()> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of contacts\\\" model.bind=option.id>${option.fullName}</option> </select> <label> <small>${approveContact.emailAddress}</small> </label> </div> </div> <div class=\\\"col-12 col-md-6 col-lg-4\\\"> <div class=form-group> <label for=officialInterlocutorId t=main.admin.pages.agreements.officialInterlocutor>officialInterlocutor</label> <select value.bind=\\\"model.officialInterlocutorId & validate\\\" class=form-control id=officialInterlocutorId change.delegate=officialContactChange()> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of contacts\\\" model.bind=option.id>${option.fullName}</option> </select> <label> <small>${officialContact.emailAddress}</small> </label> </div> </div> <div class=\\\"col-12 col-md-6 col-lg-4\\\"> <div class=form-group> <label for=legalRepresentativeId t=main.admin.pages.agreements.legalRepresentative>legalRepresentative</label> <select value.bind=\\\"model.legalRepresentativeId & validate\\\" class=form-control id=legalRepresentativeId change.delegate=legalContactChange()> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of contacts\\\" model.bind=option.id>${option.fullName}</option> </select> <label> <small>${legalContact.emailAddress}</small> </label> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-3> <a href=# class=\\\"btn btn-link\\\" click.delegate=createContact() if.bind=!disable> <i class=material-icons title=\\\"${'main.admin.pages.agreements.addcontact' & t}\\\">add</i> ${'main.admin.pages.agreements.addcontact' & t} </a> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=form-actions> <button if.bind=!disable class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: ServiceAgreementCreate\\\" type=submit click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button if.bind=!disable class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: ServiceAgreementCreate\\\" type=submit click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <button if.bind=\\\"model.agreementStatus == AgreementStatus.Approved || model.agreementStatus == AgreementStatus.Valid\\\" global-permission-show=\\\"can: ServiceAgreementStateValid\\\" class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button if.bind=\\\"model.agreementStatus == AgreementStatus.Approved || model.agreementStatus == AgreementStatus.Valid\\\" global-permission-show=\\\"can: ServiceAgreementStateValid\\\" class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=cancel() t=commands.cancel>Cancel</button> </div> </form> </div> </template> \";","import { AgreementStatus } from 'models/agreements/agreementStatus';\nimport { DeleteConfirmation } from '../../../../components/delete-confirmation';\nimport { UxDatatableResponse } from 'common/resources/elements/ux/datatable/ux-datatable';\nimport { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { AgreementService } from '../../../services/agreements/agreement-service';\nimport { UxDatatableCustomAttribute } from 'common/resources/elements/ux/datatable/ux-datatable';\nimport { UxDatatableParameters } from 'common/resources/elements/ux/datatable/ux-datatable';\nimport { Agreement } from 'models/agreements/agreement';\nimport { Logger } from 'aurelia-logging';\nimport { Notification } from \"common/services/notification\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { AgreementFileService } from 'main/admin/services/agreements/agreement-file-service';\nimport { AgreementFile } from 'models/agreements/agreementFile';\nimport { AgreementFileModal } from './agreement-file-modal';\nimport { Router } from 'aurelia-router';\n\n@autoinject()\nexport class AgreementFileList {\n\n  private logger: Logger;\n  public agreementId: number;\n  private companyId: number;\n  private agreement: Agreement;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private disable: boolean = false;\n  private params: any = {};\n\n  constructor(\n    private router: Router,\n    private agreementService: AgreementService,\n    private agreementFileService: AgreementFileService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"AgreementFileList\");\n\n  }\n\n  public async activate(params: any): Promise<void> {\n    this.params = params;\n  }\n\n  public async bind(): Promise<any> {\n    if (!isNaN(this.params.agreementId)) {\n      this.agreementId = +this.params.agreementId;\n\n      if (!isNaN(this.params.companyGroupId)) {\n        this.companyId = +this.params.companyGroupId;\n      }\n\n      if (this.params.companyDetailId && this.params.companyDetailId === 'create') {\n        this.companyId = null;\n      }\n      else if (!isNaN(this.params.companyDetailId)) {\n        this.companyId = +this.params.companyDetailId;\n      }\n\n      if (this.agreementId && this.companyId) {\n        this.agreementService.client.currentCompanyId = this.params.companyId;\n        this.agreementFileService.client.currentCompanyId = this.params.companyId;\n        try {\n          this.agreement = await this.agreementService.getById(this.agreementId);\n          if (this.agreement.agreementStatus !== AgreementStatus.InternalDraft) {\n            this.disable = true;\n          }\n\n          return this.databind();\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n    }\n  }\n\n  public async databind(): Promise<void> {\n    this.logger.info(\"databind\");\n    return await this.agreementFileService.list(this.agreementId, this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private refresh = (): Promise<UxDatatableResponse> => {\n    // this.logger.info(\"refreshing\");\n    return this.agreementFileService.list(this.agreementId, this.parameters);\n  }\n\n  private async create(): Promise<void> {\n    let item: AgreementFile = new AgreementFile();\n    item.agreementId = this.agreementId;\n    return await this.dialogService.open({\n      viewModel: AgreementFileModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        try {\n          item = await this.agreementFileService.create(item);\n\n          this.parameters.tableData.unshift(item);\n          this.notification.success(\"notifications.item_added\");\n          // return await this.databind();\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n    });\n  }\n\n  private async delete(id: number, name: string): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    }).whenClosed((response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        this.agreementFileService.delete(id)\n          .then(() => {\n            // this.databind();\n            let indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(id.toString());\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n\n            this.notification.success(\"notifications.item_deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n  private async getPrivateMedia(id: number) {\n    try {\n      let privateUrl = await this.agreementFileService.getMediaByAgreementFileId(id);\n      if (privateUrl != null) {\n        return this.router.navigate(privateUrl);\n      }\n    } catch (error){\n      this.notification.error(error);\n    }\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../../models/agreements/activityStatusViewEngineHooks></require> <require from=../../../../../models/agreements/notifyViewEngineHooks></require> <require from=../../../../../common/resources/value-converters/date-format></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <section if.bind=!agreementId> <h2>${'main.admin.pages.agreements.create' & t}</h2> <p> ${'main.admin.pages.agreements.activity.notification_new_agreement' & t} </p> </section> <section if.bind=agreementId> <h2>${'main.admin.pages.agreements.agreement_file.title' & t} / ${agreement.description}</h2> <p> ${'main.admin.pages.agreements.agreement_file.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-4> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=col-2> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th scope=col t=main.admin.pages.agreements.agreement_file.file_name>Name</th> <th scope=col t=main.admin.pages.agreements.agreement_file.created_on>Created on</th> <th scope=col t=main.admin.pages.agreements.agreement_file.created_by_name>Created by</th> <th scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-5 text-truncate\\\"> <a href=# click.delegate=getPrivateMedia(item.id) title=${item.fileName}> ${item.fileName} </a> </td> <td class=\\\"col-md-1 text-truncate\\\"><span title=\\\"${item.createdOn | dateFormat}\\\">${item.createdOn | dateFormat}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.createdByName}>${item.createdByName}</span></td> <td class=\\\"col-md-3 d-flex\\\"> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: ServiceAgreementCreate\\\" click.delegate=\\\"delete(item.id, item.fileName)\\\" title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> </td> </tr> </tbody> </table> </div> </div> </section> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\" if.bind=!disable> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=commands.create>title</h5> <p class=card-text t=[html]main.admin.pages.agreements.agreement_file.create_info>Lorem</p> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: ServiceAgreementUpdate\\\" click.delegate=create()>${'commands.upload' & t}</button> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: readonly-child-router; params.bind: { agreementId: agreementId}\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </div> </template> \";","import { ValidationRules, ControllerValidateResult } from 'aurelia-validation';\nimport { BootstrapFormRenderer } from 'common/services/bootstrap-form-renderer';\nimport { DialogController } from 'aurelia-dialog';\nimport { ValidationController, ValidationControllerFactory } from 'aurelia-validation';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from 'aurelia-logging';\nimport { AgreementFile } from 'models/agreements/agreementFile';\nimport { FileAcceptValidator } from 'common/utils/file-accept-validator';\nimport { Notification } from 'common/services/notification';\n\n@autoinject()\nexport class AgreementFileModal {\n\n  private model: AgreementFile = new AgreementFile();\n  private validationController: ValidationController;\n  private logger: Logger;\n\n  constructor(\n    private notification: Notification,\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ActivityModal\");\n  }\n\n  public async activate(model: AgreementFile): Promise<void> {\n    this.logger.debug(\"activate\");\n    this.model = model;\n    this.configureValidationRules();\n  }\n\n  configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"fileName\").displayName(\"main.admin.pages.agreements.agreement_file.name\").required()\n      .on(this.model);\n  }\n\n  public async submit(): Promise<void> {\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  public async save(): Promise<any> {\n    return await this.dialogController.ok();\n  }\n\n  public setFile($event: any): void {\n    this.logger.debug(\"setFile\");\n    let file = <File>$event.target.files[0];\n\n    // this.logger.debug(\"file\", file);\n\n    let fileValidator = FileAcceptValidator.parse(\"image/*,application/pdf\", 1024 * 20000);\n    if (fileValidator.isValid(file)) {\n      let reader: FileReader = new FileReader();\n      reader.readAsDataURL(file);\n      reader.onload = () => {\n        this.model.fileName = file.name;\n        this.model.fileUrl = URL.createObjectURL(file);\n      };\n    }\n    else {\n      this.notification.error(\"main.admin.pages.agreements.agreement_file.bad_file\");\n\n    }\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../../models/agreements/notifyViewEngineHooks></require> <ux-dialog> <ux-dialog-body> <h2>${'main.admin.pages.agreements.agreement_file.title' & t}</h2> <form> <div class=\\\"row mb-3\\\"> <div class=col> <div class=form-group> <label>${'main.admin.pages.agreements.agreement_file.file' & t}</label> <div class=custom-file> <input type=file class=custom-file-input id=model.file files.bind=model.file accept=image/*,application/pdf change.delegate=setFile($event)> <label class=custom-file-label for=model.file>${model.fileName}</label> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=dialogController.ok()>${'commands.save' & t} </button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </div> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { AgreementStatus } from 'models/agreements/agreementStatus';\nimport { DialogCloseResult } from 'aurelia-dialog';\nimport { QuotaModal } from './quota-modal';\nimport { CatalogBase } from 'models/catalogs/catalog-base';\nimport { Quota } from 'models/agreements/quota';\nimport { Router } from 'aurelia-router';\nimport { ValidationRules, ControllerValidateResult } from 'aurelia-validation';\nimport { AgreementTermsOfPayService } from '../../../services/agreements/agreement-terms-pay-service';\nimport { AgreementService } from '../../../services/agreements/agreement-service';\nimport { BootstrapFormRenderer } from 'common/services/bootstrap-form-renderer';\nimport { ValidationControllerFactory } from 'aurelia-validation';\nimport { DialogService } from 'aurelia-dialog';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { ValidationController } from 'aurelia-validation';\nimport { Logger } from 'aurelia-logging';\nimport { Notification } from 'common/services/notification';\nimport { ContactService } from '../../../services/contacts/contact-service';\nimport { CatalogService } from '../../../../services/catalogs/catalog-service';\nimport { ContactModal } from '../../contacts/contact-modal';\nimport { Contact } from 'models/contacts/contact';\nimport { AgreementTermsOfPay } from 'models/agreements/agreementTermsOfPay';\nimport { Agreement } from 'models/agreements/agreement';\nimport { DeleteConfirmation } from '../../../../components/delete-confirmation';\n\n@autoinject()\nexport class AgreementTermsOfPayEdit {\n  private logger: Logger;\n\n  private agreement: Agreement;\n  private agreementId: number;\n  private companyId: number;\n\n  private model: AgreementTermsOfPay = new AgreementTermsOfPay();\n  private validationController: ValidationController;\n\n  private contacts: Contact[] = [];\n  private currencies: CatalogBase[] = [];\n  private invoicePerson: Contact;\n\n  private percentageTotal: number = 0;\n  private subtotaltermspay: number = 0;\n  private taxtotaltermspay: number = 0\n  private alltotaltermspay: number = 0;\n\n  private disable: boolean = false;\n\n  private params: any = {};\n\n  constructor(\n    private catalogService: CatalogService,\n    private contactService: ContactService,\n    private agreementService: AgreementService,\n    private agreementTermPayService: AgreementTermsOfPayService,\n    private dialogService: DialogService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private router: Router,\n  ) {\n\n    this.logger = LogManager.getLogger(\"AgreementTermsOfPayEdit\");\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n  }\n\n  public async activate(params: any): Promise<void> {\n    this.logger.info(\"activate\");\n    this.params = params;\n  }\n\n  public async bind(): Promise<any> {\n\n    if (!isNaN(this.params.agreementId)) {\n      this.agreementId = this.params.agreementId;\n\n      try {\n        this.currencies = await this.catalogService.getCurrencyAll();\n\n        if (!isNaN(this.params.companyGroupId)) {\n          this.companyId = +this.params.companyGroupId;\n        }\n        \n        if (this.params.companyDetailId && this.params.companyDetailId === 'create') {\n          this.companyId = null;\n        }\n        else if (!isNaN(this.params.companyDetailId)) {\n          this.companyId = +this.params.companyDetailId;\n        }\n\n        if (this.agreementId && this.companyId) {\n          this.agreementService.client.currentCompanyId = this.companyId;\n\n          this.contacts = await this.contactService.getall(this.companyId);\n\n          this.agreement = await this.agreementService.getById(+this.params.agreementId);\n\n          if (this.agreement.agreementStatus !== AgreementStatus.InternalDraft) {\n            this.disable = true;\n          }\n\n\n          this.model = await this.agreementTermPayService.getById(+this.params.agreementId);\n\n          if (this.model.id === 0) {\n            this.model.agreement = this.agreement;\n            this.model.agreementId = this.params.agreementId;\n          } else {\n            this.legalContactChange();\n            this.calculateTotals();\n          }\n\n          this.configureValidationRules();\n        }\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n\n  private configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    // this.logger.debug(\"model\", this.model);\n    ValidationRules\n      .ensure(\"purchaseValue\").displayName(\"main.admin.pages.agreements.agreementtermspay.purchasevalue\").required().matches(/^0*[1-9]\\d*$/)//.satisfies(obj => obj > 0)\n      .ensure(\"currencyTypeId\").displayName(\"main.admin.pages.agreements.agreementtermspay.currencyType\").required().matches(/^0*[1-9]\\d*$/)//.satisfies(obj => obj > 0)\n      .ensure(\"invoicePersonId\").displayName(\"main.admin.pages.agreements.agreementtermspay.invoicePerson\").required().matches(/^0*[1-9]\\d*$/)//.satisfies(obj => obj > 0)\n      .ensure(\"quotas\").displayName(\"main.admin.pages.agreements.agreementtermspay.quota_create\").required().minItems(1)\n      .on(this.model);\n  }\n\n  private legalContactChange() {\n    this.invoicePerson = this.contacts.find(x => x.id === this.model.invoicePersonId);\n  }\n\n  public async submit(keepEditing: boolean): Promise<any> {\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          if (this.validateTotalAndQuotasValues()) {\n            return await this.save(keepEditing);\n          }\n          else {\n            this.notification.warning(\"main.admin.pages.agreements.errors.error_totalAgreement_NotEquals\");\n          }\n        }\n      });\n\n  }\n\n  get canSave() {\n    return !this.agreementTermPayService.client.isRequesting;\n  }\n\n  public async save(keepEditing: boolean): Promise<any> {\n    this.logger.info(\"save\");\n    // this.logger.debug(\"ModelCreate: \", this.model);\n\n    try {\n      if (!this.model.id) {\n\n        this.model = await this.agreementTermPayService.create(this.model)\n\n        this.notification.success(\"notifications.item_edited\");\n\n        if (!keepEditing) {\n          return await this.router.parent.navigateToRoute(\"readonly-child-router\", { agreementId: this.agreementId });\n        }\n        // else {\n        //   return await this.router.navigateToRoute(\"agreements-terms-pay\");\n        // }\n\n\n      }\n      else {\n        await this.agreementTermPayService.update(this.model);\n\n        this.notification.success(\"notifications.item_edited\");\n\n        if (!keepEditing) {\n          return await this.router.parent.navigateToRoute(\"readonly-child-router\", { agreementId: this.agreementId });\n        }\n        // else {\n        //   return await this.router.navigateToRoute(\"agreements-terms-pay\");\n        // }\n\n\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async createContact(): Promise<void> {\n    this.logger.info(\"createContact\");\n    let item: Contact = new Contact();\n    item.companyId = this.agreement.companyId;\n\n    return await this.dialogService.open({\n      viewModel: ContactModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        try {\n          item = await this.contactService.create(item);\n          this.contacts.unshift(item);\n\n          this.notification.success(\"notifications.item_added\");\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n\n      }\n    });\n  }\n\n  private async createQuota(): Promise<void> {\n    this.logger.info(\"createQuota\");\n\n    let item: Quota = new Quota();\n    item.AgreementTermsOfPayId = this.model.id;\n\n    return await this.dialogService.open({\n      viewModel: QuotaModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        this.model.quotas.unshift(item);\n\n        this.calculateTotals();\n        // this.notification.success(\"main.admin.pages.agreements.agreementtermspay.notifications.quota_added\");\n      }\n    }).catch(error => {\n      this.notification.error(error);\n    });\n  }\n\n  private async updateQuota(editQuota: Quota, index: number): Promise<void> {\n    this.logger.info(\"updateQuota\");\n\n    let originalQuota = JSON.parse(JSON.stringify(editQuota)); // fnClone(this.model.quotas);\n\n    return await this.dialogService.open({\n      viewModel: QuotaModal,\n      model: editQuota\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (response.wasCancelled) {\n        this.model.quotas.splice(index, 1, originalQuota);\n      }\n\n      this.calculateTotals();\n\n    }).catch(error => {\n      this.notification.error(error);\n    });\n  }\n\n  private async removeQuota(deleteQuota: Quota): Promise<any> {\n    this.logger.info(\"updateateQuota\");\n\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: +deleteQuota.subtotal + +deleteQuota.tax\n    }).whenClosed((response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        var pos = this.model.quotas.indexOf(deleteQuota);\n        this.model.quotas.splice(pos, 1);\n\n        this.calculateTotals();\n\n      }\n    });\n\n  }\n\n  private calculateTotals(): void {\n    // var arrayQuotas = this.model.quotas;\n    let tempSubtotal = 0;\n    let tempTax = 0;\n    let tempAlltotal = 0;\n    let tempAllPercentage = 0;\n\n    this.model.quotas.forEach(function (quota, index, array) {\n      tempAllPercentage += +quota.percentage;\n      tempSubtotal += +quota.subtotal;\n      tempTax += +quota.tax;\n      tempAlltotal += +quota.subtotal + +quota.tax;//+quota.total;\n    });\n\n    this.percentageTotal = tempAllPercentage;\n    this.subtotaltermspay = tempSubtotal;\n    this.taxtotaltermspay = tempTax;\n    this.alltotaltermspay = tempAlltotal;\n\n  }\n\n  private validateTotalAndQuotasValues(): boolean {\n    return this.model.purchaseValue == this.alltotaltermspay && this.percentageTotal == 100;\n  }\n\n  private getTotal(item1, item2) {\n    return +item1 + +item2;\n  }\n\n}\n","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <section if.bind=!agreementId> <h2>${'main.admin.pages.agreements.create' & t}</h2> <p> ${'main.admin.pages.agreements.agreementtermspay.notification_new_agreement' & t} </p> </section> <section if.bind=agreementId> <h2>${'main.admin.pages.agreements.agreementtermspay.title' & t} / ${agreement.description}</h2> <p> ${'main.admin.pages.agreements.agreementtermspay.information' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=agreementtermspay.purchaseValue t=main.admin.pages.agreements.agreementtermspay.purchasevalue>PurchaseValue</label> <input type=number value.bind=\\\"model.purchaseValue & validate\\\" class=form-control id=agreementtermspay.purchaseValue change.delegate=\\\"calculateTotals() & debounce:200\\\" t=[placeholder]main.admin.pages.agreements.agreementtermspay.purchasevalue> <br/> ${model.purchaseValue | currencyFormat} </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=agreementtermspay.currencyTypeId t=main.admin.pages.agreements.agreementtermspay.currencyType>planId</label> <select value.bind=\\\"model.currencyTypeId & validate\\\" class=form-control id=agreementtermspay.currencyTypeId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of currencies\\\" model.bind=option.id>${option.code} - ${option.name & t} </option> </select> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=agreementtermspay.invoicePersonId t=main.admin.pages.agreements.agreementtermspay.invoicePerson>whoApprove</label> <select value.bind=\\\"model.invoicePersonId & validate\\\" class=form-control id=agreementtermspay.invoicePersonId change.delegate=legalContactChange()> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of contacts\\\" model.bind=option.id>${option.fullName}</option> </select> <label> <small>${invoicePerson.emailAddress}</small> </label> <a href=# class=\\\"btn btn-link\\\" click.delegate=createContact() if.bind=!disable> <i class=material-icons title=\\\"${'main.admin.pages.agreements.addcontact' & t}\\\">add</i> ${'main.admin.pages.agreements.addcontact' & t} </a> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"form-group text-left\\\"> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=agreementtermspay.hasAutomaticRenewal checked.bind=model.hasAutomaticRenewal /> <label for=agreementtermspay.hasAutomaticRenewal class=form-check-label>${'main.admin.pages.agreemenst.agreementtermspay.hasAutomaticRenewal' & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\"> <thead> <tr class=d-flex> <th class=col-md-2 scope=col t=main.admin.pages.agreemenst.agreementtermspay.quotas.payMode> PayMode</th> <th class=col-md-1 scope=col t=main.admin.pages.agreemenst.agreementtermspay.quotas.percentage> Percentage</th> <th class=col-md-2 scope=col t=main.admin.pages.agreemenst.agreementtermspay.quotas.paymentDate> PaymentDay</th> <th class=col-md-2 scope=col t=main.admin.pages.agreemenst.agreementtermspay.quotas.subtotal> Subtotal</th> <th class=col-md-2 scope=col t=main.admin.pages.agreemenst.agreementtermspay.quotas.tax>Tax</th> <th class=col-md-2 scope=col t=main.admin.pages.agreemenst.agreementtermspay.quotas.total>Total </th> <th class=col-md-1 scope=col hidden.bind=disable></th> </tr> </thead> <tbody> <tr class=d-flex repeat.for=\\\"item of model.quotas\\\"> <td class=col-md-2>${item.payMode}</td> <td class=col-md-1>${item.percentage}%</td> <td class=col-md-2>${item.paymentDate | dateFormat}</td> <td class=col-md-2>${item.subtotal | currencyFormat}</td> <td class=col-md-2>${item.tax | currencyFormat}</td> <td class=col-md-2>${getTotal(item.subtotal,item.tax) | currencyFormat}</td> <td class=\\\"col-md-1 d-flex\\\" hidden.bind=disable> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: ServiceAgreementUpdate\\\" click.delegate=\\\"updateQuota(item, $index)\\\"> <i class=material-icons title=\\\"${'main.admin.pages.agreements.agreementtermspay.updatequota' & t}\\\">edit</i> </button> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: ServiceAgreementUpdate\\\" click.delegate=removeQuota(item)> <i class=material-icons title=\\\"${'main.admin.pages.agreements.agreementtermspay.removequota' & t}\\\">archive</i> </button> </td> </tr> <tr class=d-flex> <th class=col-md-2 scope=col></th> <th class=col-md-1 scope=col></th> <th class=col-md-2 scope=col t=main.admin.pages.agreemenst.agreementtermspay.total>Total</th> <th class=col-md-2 scope=col>${subtotaltermspay | currencyFormat}</th> <th class=col-md-2 scope=col>${taxtotaltermspay | currencyFormat}</th> <th class=col-md-2 scope=col>${alltotaltermspay | currencyFormat}</th> <th class=col-md-1 scope=col hidden.bind=disable></th> </tr> </tbody> </table> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <a href=# class=\\\"btn btn-link\\\" click.delegate=createQuota() if.bind=!disable> <i class=material-icons title=\\\"${'main.admin.pages.agreementtermspay.addquota' & t}\\\">add</i> ${'main.admin.pages.agreements.agreementtermspay.addquota' & t} </a> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=form-actions> <button if.bind=!disable class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: ServiceAgreementCreate\\\" type=submit click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button if.bind=!disable class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: ServiceAgreementCreate\\\" type=submit click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: readonly-child-router; params.bind: { agreementId: agreement.id}\\\" t=commands.cancel>Cancel</a> </div> </section> </form> </div> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { I18N } from \"aurelia-i18n\";\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\n\n@autoinject\nexport class EditNavegationChildRouter {\n\n  private logger: Logger;\n\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService) {\n\n    this.logger = LogManager.getLogger(\"EditNavegationChildRouter\");\n  }\n\n  public configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: [\"\",\"edit\"],\n        moduleId: PLATFORM.moduleName(\"./agreement-edit\"),\n        name: \"agreement-edit\",\n        nav: true,\n        title: this.i18n.tr(\"navigations.basic_info\")        \n      },\n\n      {\n        route: 'agreements-terms-pay',\n        moduleId: PLATFORM.moduleName('./agreement-terms-pay-edit'),\n        name: 'agreements-terms-pay',\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.agreements.agreementtermspay.title\"),\n      },\n\n      {\n        route: 'agreements-customer-req',\n        moduleId: PLATFORM.moduleName('./agreement-customer-req'),\n        name: 'agreements-customer-req',\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.agreements.agreementcustomerreq.title\"),\n      },\n\n      {\n        route: 'activities-list',\n        moduleId: PLATFORM.moduleName('./activity-list'),\n        name: 'activities-list',\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.agreements.activity.workplan\"),\n      },\n\n      {\n        route: 'file-list',\n        moduleId: PLATFORM.moduleName('./agreement-file-list'),\n        name: 'file-list',\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.agreements.agreement_file.title\"),\n      },\n\n      {\n        route: 'terms-conditions',\n        moduleId: PLATFORM.moduleName('./terms-conditions-edit'),\n        name: 'terms-conditions',\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.agreements.termsandconditions.title\"),\n      },\n\n      {\n        route: \"readonly\",\n        moduleId: PLATFORM.moduleName(\"../readonly/readonly-child-router\"),\n        name: \"agreement-readonly-mode\",\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.agreements.initialAgreement\")\n      }\n    ]);\n    }\n}\n","module.exports = \"<template> <section class=au-animate> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-2\\\"> <ux-side-well router.bind=router></ux-side-well> </div> <div class=\\\"col-12 col-md-10\\\"> <router-view></router-view> </div> </div> </section> </template> \";","import { Quota } from 'models/agreements/quota';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\n\n@autoinject()\nexport class QuotaModal {\n\n  private logger: Logger;\n\n  private validationController: ValidationController;\n\n  private model: Quota;\n\n  constructor(\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"QuotaModal\");\n  }\n\n  async activate(model: Quota): Promise<void> {\n    this.logger.debug(\"activate\");\n    this.model = model;\n\n    this.configureValidationRules();\n  }\n\n  configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"payMode\").displayName(\"main.admin.pages.agreemenst.agreementtermspay.quotas.payMode\").required()\n      .ensure(\"percentage\").displayName(\"main.admin.pages.agreemenst.agreementtermspay.quotas.percentage\").required().matches(/^[0-9]*$/)\n      .ensure(\"paymentDate\").displayName(\"main.admin.pages.agreemenst.agreementtermspay.quotas.paymentDate\").required()\n      .ensure(\"subtotal\").displayName(\"main.admin.pages.agreemenst.agreementtermspay.quotas.subtotal\").required().matches(/^[0-9]*$/)\n      .ensure(\"tax\").displayName(\"main.admin.pages.agreemenst.agreementtermspay.quotas.tax\").required().matches(/^[0-9]*$/)\n      .on(this.model);\n  }\n\n  public async submit(): Promise<void> {\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  public async save(): Promise<any> {\n    return await this.dialogController.ok();\n  }\n\n  private getTotal(item1, item2){\n    return +item1 + +item2;\n  }\n\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'main.admin.pages.agreements.agreementtermspay.quota_create' & t}</h2> <form> <div class=form-group> <label for=model.payMode t=main.admin.pages.agreemenst.agreementtermspay.quotas.payMode>PayMode</label> <input type=text value.bind=\\\"model.payMode & validate\\\" class=form-control id=payMode t=[placeholder]main.admin.pages.agreemenst.agreementtermspay.quotas.payMode> </div> <div class=form-group> <label for=model.percentage t=main.admin.pages.agreemenst.agreementtermspay.quotas.percentage>Percentage</label> <input type=number value.bind=\\\"model.percentage & validate\\\" class=form-control id=percentage t=[placeholder]main.admin.pages.agreemenst.agreementtermspay.quotas.percentage> </div> <div class=form-group> <label for=model.paymentDate t=main.admin.pages.agreemenst.agreementtermspay.quotas.paymentDate>PaymentDay</label> <ux-date-picker value.bind=\\\"model.paymentDate & validate\\\" id=startDate></ux-date-picker> </div> <div class=form-group> <label for=model.subtotal t=main.admin.pages.agreemenst.agreementtermspay.quotas.subtotal>Subtotal</label> <input type=number value.bind=\\\"model.subtotal & validate\\\" class=form-control id=subtotal t=[placeholder]main.admin.pages.agreemenst.agreementtermspay.quotas.subtotal> </div> <div class=form-group> <label for=model.tax t=main.admin.pages.agreemenst.agreementtermspay.quotas.tax>Tax</label> <input type=number value.bind=\\\"model.tax & validate\\\" class=form-control id=tax t=[placeholder]main.admin.pages.agreemenst.agreementtermspay.quotas.tax> </div> <div class=form-group> <label for=total t=main.admin.pages.agreemenst.agreementtermspay.quotas.total>PaymentDay</label> <br/> ${getTotal(model.subtotal,model.tax) | currencyFormat} </div> <div class=form-group> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: ServiceAgreementUpdate\\\" type=submit click.delegate=submit()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { AgreementStatus } from 'models/agreements/agreementStatus';\nimport { BootstrapFormRenderer } from 'common/services/bootstrap-form-renderer';\nimport { ValidationController, ValidationRules, ControllerValidateResult } from 'aurelia-validation';\nimport { ValidationControllerFactory } from 'aurelia-validation';\nimport { Notification } from 'common/services/notification';\nimport { AgreementService } from '../../../services/agreements/agreement-service';\nimport { Agreement } from 'models/agreements/agreement';\nimport { Logger } from 'oidc-client';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Router } from 'aurelia-router';\n\n@autoinject()\nexport class TermsConditionsEdit {\n  private logger: Logger;\n  private agreementId: number;\n  private companyId: number;\n\n  private model: Agreement = new Agreement();\n  private validationController: ValidationController;\n  \n  private disable: boolean = false;\n  private params: any = {};\n\n  constructor(\n    private agreementService: AgreementService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private router: Router) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"TermsConditionsEdit\");\n  }\n\n  public async activate(params: any): Promise<void> {\n    this.logger.info(\"activate\");\n    this.params = params;\n  }\n\n  public async bind(): Promise<any> {\n    if (!isNaN(this.params.agreementId)) {\n\n      this.agreementId = this.params.agreementId;\n\n      if (!isNaN(this.params.companyGroupId)) {\n        this.companyId = +this.params.companyGroupId;\n      }\n\n      if (this.params.companyDetailId && this.params.companyDetailId === 'create') {\n        this.companyId = null;\n      }\n      else if (!isNaN(this.params.companyDetailId)) {\n        this.companyId = +this.params.companyDetailId;\n      }\n\n      if (this.agreementId && this.companyId) {\n\n        this.agreementService.client.currentCompanyId = this.companyId;\n\n        try {\n          this.model = await this.agreementService.getById(+this.params.agreementId);\n\n          if (this.model.agreementStatus !== AgreementStatus.InternalDraft) {\n            this.disable = true;\n          }\n\n          this.configureValidationRules();\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n    }\n  }\n\n  private configureValidationRules(): void {\n    // this.logger.info(\"configureValidationRules\");\n    this.logger.debug(\"model\", this.model);\n    ValidationRules\n      .ensure(\"termsAndConditions\").displayName(\"main.admin.pages.agreements.description\").required()\n      .on(this.model);\n  }\n\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    // this.saveAndContinue = keepEditing;\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(keepEditing);\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.agreementService.client.isRequesting;\n  }\n\n  public async save(keepEditing: boolean): Promise<any> {\n    this.logger.info(\"save\");\n    try {\n      await this.agreementService.update(this.model);\n      this.notification.success(\"notifications.item_edited\");\n      if (!keepEditing) {\n        this.router.parent.navigateToRoute(\"readonly-child-router\", { agreementId: this.agreementId });\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n}\n","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <section if.bind=!agreementId> <h2>${'main.admin.pages.agreements.create' & t}</h2> <p> ${'main.admin.pages.agreements.termsandconditions.notification_new_agreement' & t} </p> </section> <section if.bind=agreementId> <h2>${'main.admin.pages.agreements.termsandconditions.title' & t} / ${model.description}</h2> <p> ${'main.admin.pages.agreements.termsandconditions.information' & t} </p> <hr/> <div class=\\\"row mb-3\\\" style=margin-bottom:50px> <div class=col-12> <div class=form-group> <label for=html t=main.admin.pages.agreements.termsandconditions.html>TextInHTML</label> <quill-editor value.bind=\\\"model.termsAndConditions & validate\\\"></quill-editor> </div> </div> </div> <div class=clearfix></div> <div class=\\\"row mb-3\\\"> <div class=col> <p>&nbsp;</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=form-actions> <button if.bind=!disable class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: ServiceAgreementCreate\\\" type=submit click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button if.bind=!disable class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: ServiceAgreementCreate\\\" type=submit click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: readonly-child-router; params.bind: { agreementId: model.id}\\\" t=commands.cancel>Cancel</a> </div> </section> </form> </div> </template> \";","import { Plan } from \"models/plans/plan\";\nimport { Notification } from \"common/services/notification\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult, DialogCancelableOperationResult, DialogController } from \"aurelia-dialog\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { AgreementPlanService } from \"main/admin/services/agreements/agreement-plan-service\";\n\n@autoinject()\nexport class TestPlanItemListModal {\n  private planId: number;\n  private plan: Plan = new Plan();\n  private logger: Logger;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n  private isRobotHunter: boolean;\n  constructor(\n    private agreementPlanService: AgreementPlanService,\n    private dialogController: DialogController,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"TestPlanItemListModal\");\n  }\n\n  public async activate(planId: number): Promise<void> {\n\n    this.planId = planId;\n    return await this.databind();\n\n  }\n\n  public async databind(): Promise<void> {\n    this.logger.info(\"databind\");\n    if (this.planId) {\n      try {\n        this.plan = await this.agreementPlanService.getById(this.planId);        \n        this.isRobotHunter = this.plan.isRobotHunter;\n        let response = await this.agreementPlanService.getTestPlanItemsByPlanId(this.planId, this.parameters)\n\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n  private refresh = async (parameters: UxDatatableParameters): Promise<UxDatatableResponse> => {\n    return await this.agreementPlanService.getTestPlanItemsByPlanId(this.planId, parameters);\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../../models/plans/testPlanItemTypeViewEngineHooks></require> <require from=../../../../../models/plans/spendModeViewEngineHooks></require> <require from=../../../../../models/plans/visualizationTypeViewEngineHooks></require> <require from=../../../../../models/plans/selectionPlanComponentTypeViewEngineHooks></require> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2> ${plan.name} </h2> <div if.bind=plan.isTestItemsActive class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div if.bind=plan.isTestItemsActive class=\\\"row mb-3\\\"> <div class=col-12> <table if.bind=!isRobotHunter class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-4 scope=col t=main.admin.pages.plans.test_plan_items.name>Name</th> <th class=col-md-2 scope=col t=main.admin.pages.plans.test_plan_items.item_type>Type</th> <th class=col-md-2 scope=col t=main.admin.pages.plans.test_plan_items.spend_mode>Spend mode</th> <th class=col-md-2 scope=col t=main.admin.pages.plans.test_plan_items.talentsPrice>Talents</th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-4 text-truncate\\\" if.bind=item.questionaryId>${item.questionaryName}</td> <td class=\\\"col-md-4 text-truncate\\\" if.bind=item.reportTemplateId>${item.reportTemplateName & t}</td> <td class=\\\"col-md-4 text-truncate\\\" if.bind=item.sheetId>${item.sheetName & t}</td> <td class=\\\"col-md-2 text-truncate\\\">${'main.admin.pages.plans.test_plan_items.test_plan_item_types.' + TestPlanItemType[item.testPlanItemType] & t}</td> <td class=\\\"col-md-2 text-truncate\\\" if.bind=\\\"item.questionaryId || item.reportTemplateId\\\"> ${'main.admin.pages.plans.test_plan_items.spend_modes.' + SpendMode[item.spendMode] & t}</td> <td class=col-md-2 if.bind=item.sheetId>&nbsp;</td> <td class=col-md-2>${item.talentsPrice}</td> </tr> </tbody> </table> <table if.bind=isRobotHunter class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-1 scope=col t=main.admin.pages.plans.selection_plan_items.component>Component</th> <th class=col-md-2 scope=col t=main.admin.pages.plans.selection_plan_items.category>Category</th> <th class=col-md-3 scope=col t=main.admin.pages.plans.selection_plan_items.name_item>Item Name</th> <th class=col-md-2 scope=col t=main.admin.pages.plans.selection_plan_items.visualization_type>Visualization Type</th> <th class=col-md-2 scope=col t=main.admin.pages.plans.test_plan_items.spend_mode>Spend Mode</th> <th class=col-md-1 scope=col t=main.admin.pages.plans.test_plan_items.talentsPrice>Talents</th> <th class=col-md-2 scope=col t=main.admin.pages.plans.selection_plan_items.additional_talents>Additional Talents</th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=col-md-1><span if.bind=\\\"item.selectionPlanComponentType != null\\\">${'main.admin.pages.plans.test_plan_items.selection_plan_component_types.' + SelectionPlanComponentType[item.selectionPlanComponentType] & t}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=\\\"${item.category & t}\\\">${item.category & t}</span></td> <td class=\\\"col-md-3 text-truncate\\\"><span title=\\\"${item.nameItem & t}\\\">${item.nameItem & t}</span></td> <td class=col-md-2><span if.bind=\\\"item.visualizationType != null\\\">${'main.admin.pages.plans.test_plan_items.selection_plan_visualization_types.' + VisualizationType[item.visualizationType] & t}</span></td> <td class=col-md-2><span if.bind=\\\"item.spendMode != null\\\">${'main.admin.pages.plans.test_plan_items.spend_modes.' + SpendMode[item.spendMode] & t}</span></td> <td class=col-md-1>${item.talentsPrice}</td> <td class=col-md-2>${item.talentsAdditionalPrice}</td> </tr> </tbody> </table> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.ok' & t}</button> </div> </div> </ux-dialog-body> </ux-dialog> </template> \";","import { DeleteConfirmation } from '../../../../components/delete-confirmation';\nimport { AddendumModal } from './addendum-modal';\nimport { ObservationType } from 'models/agreements/observationType';\nimport { UxDatatableResponse } from 'common/resources/elements/ux/datatable/ux-datatable';\nimport { AgreementService } from '../../../services/agreements/agreement-service';\nimport { Notification } from 'common/services/notification';\nimport { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { ObservationService } from '../../../services/agreements/observation-service';\nimport { UxDatatableCustomAttribute } from 'common/resources/elements/ux/datatable/ux-datatable';\nimport { UxDatatableParameters } from 'common/resources/elements/ux/datatable/ux-datatable';\nimport { Agreement } from 'models/agreements/agreement';\n\nimport { Logger } from 'aurelia-logging';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Observation } from 'models/agreements/observation';\n\ninterface SearchParams {\n  ObservationType: ObservationType\n}\n\n@autoinject()\nexport class AddendumList {\n\n  private logger: Logger;\n  public agreementId: number;\n  private companyId: number;\n  private agreement: Agreement;\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n  private params: any = {};\n\n  private refresh = (): Promise<UxDatatableResponse> => {\n    return this.observationService.addendumList(this.agreementId, this.parameters);\n  }\n\n  constructor(\n    private agreementService: AgreementService,\n    private observationService: ObservationService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"AddendumList\");\n\n  }\n\n  public async activate(params: any): Promise<any> {\n    this.params = params;\n\n  }\n\n  public async bind(): Promise<any> {\n\n    // this.logger.debug(\"bind\", this.params);\n\n    if (!isNaN(this.params.agreementId)) {\n\n      this.agreementId = +this.params.agreementId;\n\n      if (!isNaN(this.params.companyGroupId)) {\n        this.companyId = +this.params.companyGroupId;\n      }\n      else if (this.params.companyDetailId && this.params.companyDetailId === 'create') {\n        this.companyId = null;\n      }\n      else if (!isNaN(this.params.companyDetailId)) {\n        this.companyId = +this.params.companyDetailId;\n      }\n\n      if (this.companyId && this.agreementId) {\n        this.agreementService.client.currentCompanyId = this.companyId;\n        try {\n          this.agreement = await this.agreementService.getById(this.agreementId);\n\n          return this.databind();\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n    }\n  }\n\n  public async databind(): Promise<void> {\n    return await this.observationService.addendumList(this.agreementId, this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async create(): Promise<void> {\n    let item: Observation = new Observation();\n    item.agreementId = this.agreementId;\n\n    return await this.dialogService.open({\n      viewModel: AddendumModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        try {\n          item = await this.observationService.createAddendum(item);\n          this.parameters.tableData.unshift(item);\n          this.parameters.totalRecords++;\n\n          this.notification.success(\"main.admin.pages.agreements.addendum.notifications.added\");\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n    });\n  }\n\n  private async edit(item: Observation): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: AddendumModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        try {\n          await this.observationService.updateAddendum(item);\n          this.notification.success(\"main.admin.pages.agreements.addendum.notifications.edited\");\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      } else {\n        this.databind();\n      }\n    });\n  }\n\n  private async delete(item: Observation, name: string): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        try {\n          await this.observationService.deleteAddendum(item.id);\n\n          let indexOfEditedModel: number = this.parameters.tableData.indexOf(item);\n          this.parameters.tableData.splice(indexOfEditedModel, 1);\n          this.parameters.totalRecords--;\n\n          this.notification.success(\"main.admin.pages.agreements.addendum.notifications.deleted\");\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n    });\n  }\n}\n","module.exports = \"<template> <div if.bind=!agreementId> <h2>${'main.admin.pages.agreements.create' & t}</h2> <p> ${'main.admin.pages.agreements.addendum.notification_new_agreement' & t} </p> </div> <div class=\\\"content-container row mb-3\\\" if.bind=agreementId> <div class=content-main> <h2>${'main.admin.pages.agreements.addendum.title' & t}</h2> <p> ${'main.admin.pages.agreements.addendum.information' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-4> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=col-2> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=\\\"list-group list-group-flush\\\" repeat.for=\\\"item of parameters.tableData\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable infinite-scroll-next.call=getMore($scrollContext)> <li class=list-group-item> <div class=\\\"row mb-3\\\"> <div class=col-10> <strong> <label t=main.admin.pages.agreements.addendum.from>From</label> </strong> ${item.createdByName} </div> <div class=col-2> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: ServiceAgreementUpdate\\\" click.delegate=edit(item) title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </button> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: ServiceAgreementUpdate\\\" click.delegate=\\\"delete(item, item.createdByName)\\\" title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div innerhtml.bind=\\\"item.description | sanitizeHTML\\\"></div> </div> </div> </li> </ul> </div> </div> </div> <div class=content-sidebar global-permission-show=\\\"can: ServiceAgreementUpdate\\\"> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.agreements.addendum.commands.create' & t}</h5> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create()>${'commands.create' & t}</button> </div> </div> </div> </div> </template> \";","import { ControllerValidateResult } from 'aurelia-validation';\nimport { ValidationRules } from 'aurelia-validation';\nimport { BootstrapFormRenderer } from 'common/services/bootstrap-form-renderer';\nimport { ValidationControllerFactory } from 'aurelia-validation';\nimport { DialogController } from 'aurelia-dialog';\nimport { ValidationController } from 'aurelia-validation';\nimport { Observation } from 'models/agreements/observation';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\n@autoinject()\nexport class AddendumModal {\n  private model: Observation = new Observation();\n  private validationController: ValidationController;\n  private logger: Logger;\n\n  constructor(\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n    this.logger = LogManager.getLogger(\"AddendumModal\");\n  }\n\n  async activate(model: Observation): Promise<void> {\n    this.logger.debug(\"activate\");\n    this.model = model;\n    this.configureValidationRules();\n  }\n\n  configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"description\").displayName(\"main.admin.pages.agreements.addendum.description\").required()\n      .on(this.model);\n  }\n\n  public async submit(): Promise<void> {\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  public async save(): Promise<any> {\n    // this.logger.debug(\"save:\");\n    return await this.dialogController.ok();\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'main.admin.pages.agreements.addendum.note_create' & t}</h2> <form> <div class=\\\"row mb-3\\\" style=margin-bottom:50px> <div class=col-12> <div class=form-group> <label for=model.description t=main.admin.pages.agreements.addendum.description>Description</label> <quill-editor value.bind=\\\"model.description & validate\\\"></quill-editor> </div> </div> </div> <div class=clearfix></div> <div class=row> <div class=col> <p>&nbsp;</p> </div> </div> <div class=form-group> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: ServiceAgreementUpdate\\\" type=submit click.delegate=submit()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { ChangeStateAgreementConfirmation } from '../change-state-agreement-confirmation';\nimport { ObservationService } from '../../../services/agreements/observation-service';\nimport { NoteModal } from './note-modal';\nimport { LogManager, bindable } from 'aurelia-framework';\nimport { Notification } from 'common/services/notification';\nimport { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { AgreementService } from '../../../services/agreements/agreement-service';\nimport { Agreement } from 'models/agreements/agreement';\nimport { Logger } from 'aurelia-logging';\nimport { autoinject } from \"aurelia-framework\";\nimport { Router, RouteConfig } from 'aurelia-router';\nimport { Observation } from 'models/agreements/observation';\nimport { ObservationType } from 'models/agreements/observationType';\nimport { AgreementMasterService } from 'main/admin/services/agreements/agreement-master-service';\nimport { AgreementStatus } from 'models/agreements/agreementStatus';\nimport { PdfService } from 'main/admin/services/pdf/pdf-service';\nimport * as $ from 'jquery';\n\n@autoinject()\nexport class AgreementReadonlyMode {\n\n  private logger: Logger;\n  private companyId: number;\n\n  private model: Agreement = new Agreement();\n\n  // private disable: boolean = false;\n\n  @bindable\n  private params: any = {};\n\n  @bindable\n  private isMaster: boolean = false;\n\n  @bindable\n  private isAttached: boolean = false;\n\n  constructor(\n    private agreementService: AgreementService,\n    private agreementMasterService: AgreementMasterService,\n    private dialogService: DialogService,\n    private observationService: ObservationService,\n    private pdfService: PdfService,\n    private notification: Notification,\n  ) {\n\n    this.logger = LogManager.getLogger(\"AgreementReadOnlyMode\");\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    // this.logger.debug(\"activate\", params);\n    this.params = params;\n\n    // this.logger.debug(\"baseUrl:\", routeConfig.navModel.router.baseUrl);\n    this.isMaster = routeConfig.navModel.router.baseUrl.indexOf(\"companies-master\") > 0;\n  }\n\n  public async attached(): Promise<any> {\n    this.logger.debug(\"attached\", this.params);\n\n  }\n\n  public async bind(): Promise<any> {\n\n    this.logger.debug(\"bind\", this.params);\n\n    if (!isNaN(this.params.companyGroupId)) {\n      this.companyId = +this.params.companyGroupId;\n    }\n    else if (this.params.companyDetailId && this.params.companyDetailId === 'create') {\n      this.companyId = null;\n    }\n    else if (!isNaN(this.params.companyDetailId)) {\n      this.companyId = +this.params.companyDetailId;\n    }\n\n    if (this.companyId) {\n\n      this.agreementService.client.currentCompanyId = this.companyId;\n\n      if (!isNaN(this.params.agreementId)) {\n        try {\n          this.model = await this.agreementService.getReadOnlyById(+this.params.agreementId);\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n    }\n  }\n\n  public async changeStatusToDraft(agreementstatus: string): Promise<any> {\n    this.logger.info(\"changestatusdraft\");\n    return await this.dialogService.open({\n      viewModel: ChangeStateAgreementConfirmation,\n      model: agreementstatus\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        // this.model.agreementStatus = newstatus;\n        try {\n          await this.agreementService.changeStatusToDraft(this.model);\n          await this.bind();\n          this.notification.success(\"main.admin.pages.agreements.changestatus.notification\");\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n    });\n\n  }\n\n  public async changeStatusToReview(agreementstatus: string): Promise<any> {\n    this.logger.info(\"changestatusreview\");\n\n    if (this.model.isComplete) {\n      return await this.dialogService.open({\n        viewModel: ChangeStateAgreementConfirmation,\n        model: agreementstatus\n      }).whenClosed(async (response: DialogCloseResult) => {\n        if (!response.wasCancelled) {\n          // this.model.agreementStatus = newstatus;\n          try {\n            await this.agreementService.changeStatusToReview(this.model);\n            // await this.bind();\n            this.model.agreementStatus = AgreementStatus.ManagementReview;\n\n            this.notification.success(\"main.admin.pages.agreements.changestatus.notification\");\n          }\n          catch (error) {\n            this.notification.error(error);\n          }\n        }\n      });\n\n    } else {\n      this.notification.warning(\"main.admin.pages.agreements.changestatus.incompletedata\");\n    }\n  }\n\n  public async changeStatusToForwarded(agreementstatus: string): Promise<any> {\n    this.logger.info(\"changestatusforwarded\");\n\n    if (this.model.isComplete) {\n      return await this.dialogService.open({\n        viewModel: ChangeStateAgreementConfirmation,\n        model: agreementstatus\n      }).whenClosed(async (response: DialogCloseResult) => {\n        if (!response.wasCancelled) {\n          // this.model.agreementStatus = newstatus;\n          try {\n            await this.agreementService.changeStatusToForwarded(this.model);\n            // await this.bind();\n            this.model.agreementStatus = AgreementStatus.ForwardedClient;\n\n            this.notification.success(\"main.admin.pages.agreements.changestatus.notification\");\n          }\n          catch (error) {\n            this.notification.error(error);\n          }\n        }\n      });\n\n    } else {\n      this.notification.warning(\"main.admin.pages.agreements.changestatus.incompletedata\");\n    }\n  }\n\n  public async changeStatusToApproved(agreementstatus: string): Promise<any> {\n    this.logger.info(\"changestatusapproved\");\n\n    if (this.model.isComplete) {\n      return await this.dialogService.open({\n        viewModel: ChangeStateAgreementConfirmation,\n        model: agreementstatus\n      }).whenClosed(async (response: DialogCloseResult) => {\n        if (!response.wasCancelled) {\n          // this.model.agreementStatus = newstatus;\n          try {\n            await this.agreementMasterService.changeStatusToApproved(this.model);\n            // await this.bind();\n            this.model.agreementStatus = AgreementStatus.Approved;\n\n            this.notification.success(\"main.admin.pages.agreements.changestatus.notification\");\n          }\n          catch (error) {\n            this.notification.error(error);\n          }\n        }\n      });\n\n    } else {\n      this.notification.warning(\"main.admin.pages.agreements.changestatus.incompletedata\");\n    }\n  }\n\n  public async changeStatusToValid(agreementstatus: string): Promise<any> {\n    this.logger.info(\"changestatusvalid\");\n\n    if (this.model.isComplete) {\n\n      return await this.dialogService.open({\n        viewModel: ChangeStateAgreementConfirmation,\n        model: agreementstatus\n      }).whenClosed(async (response: DialogCloseResult) => {\n        if (!response.wasCancelled) {\n          // this.model.agreementStatus = newstatus;\n          try {\n            await this.agreementService.changeStatusToValid(this.model)\n            // await this.bind();\n            this.model.agreementStatus = AgreementStatus.Valid;\n\n            this.notification.success(\"main.admin.pages.agreements.changestatus.notification\");\n          }\n          catch (error) {\n            this.notification.error(error);\n          }\n        }\n      });\n\n    } else {\n      this.notification.warning(\"main.admin.pages.agreements.changestatus.incompletedata\");\n    }\n  }\n\n  public async changeStatusToCancelled(agreementstatus: string): Promise<any> {\n    this.logger.info(\"changestatuscancelled\");\n\n    return await this.dialogService.open({\n      viewModel: ChangeStateAgreementConfirmation,\n      model: agreementstatus\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        //this.model.agreementStatus = newstatus;\n        try {\n          await this.agreementService.changeStatusToCancelled(this.model);\n          // await this.bind();\n          this.model.agreementStatus = AgreementStatus.Cancelled;\n\n          this.notification.success(\"main.admin.pages.agreements.changestatus.notification\");\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n    });\n\n  }\n\n  private async pdfExport(): Promise<void> {\n    let html = $(\"#agreementContent\").html();\n\n    let style = $(\"head\").html();\n    try {\n      return this.pdfService.print(style+html, this.model.description);\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async requestChanges(): Promise<void> {\n    let item: Observation = new Observation();\n    item.agreementId = this.model.id;\n\n    return await this.dialogService.open({\n      viewModel: NoteModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        try {         \n\n          let note: Observation = await this.observationService.createPublicNote(item);\n          item.id = note.id;\n\n          // await this.agreementService.changeStatusToDraft(this.model);\n          // await this.bind();\n          this.model.agreementStatus = AgreementStatus.InternalDraft;\n\n          this.notification.success(\"main.admin.pages.agreements.note.notifications.added\");\n          // this.notification.success(\"main.admin.pages.agreements.changestatus.notification\");\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n\n    });\n  }\n\n  public async resendApprove(): Promise<any> {\n    if (this.model.isComplete) {\n      try {\n        await this.agreementService.resendToApprove(this.model);\n        // await this.bind();\n        this.notification.success(\"main.admin.pages.agreements.requestapprove.notification\");\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    } else {\n      this.notification.warning(\"main.admin.pages.agreements.changestatus.incompletedata\");\n    }\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../../models/agreements/agreementStatusViewEngineHooks></require> <h2 if.bind=!model.id>${'main.admin.pages.agreements.create' & t}</h2> <h2 if.bind=model.id>${model.company.name}</h2> <div class=\\\"row mb-3 justify-content-md-center\\\"> <div class=\\\"col-md-2 col-12\\\"> <div class=\\\"nav-horizontal ${model.agreementStatus == AgreementStatus.InternalDraft ? 'active':'' }\\\"> <div class=number>1</div> <div class=title>${'main.admin.pages.agreements.agreementStatus.InternalDraft' & t}</div> </div> </div> <div class=\\\"col-md-2 col-12\\\"> <div class=\\\"nav-horizontal ${model.agreementStatus == AgreementStatus.ManagementReview ? 'active':'' }\\\"> <div class=number>2</div> <div class=title>${'main.admin.pages.agreements.agreementStatus.ManagementReview' & t}</div> </div> </div> <div class=\\\"col-md-2 col-12\\\"> <div class=\\\"nav-horizontal ${model.agreementStatus == AgreementStatus.ForwardedClient ? 'active':'' }\\\"> <div class=number>3</div> <div class=title>${'main.admin.pages.agreements.agreementStatus.ForwardedClient' & t}</div> </div> </div> <div class=\\\"col-md-2 col-12\\\"> <div class=\\\"nav-horizontal ${model.agreementStatus == AgreementStatus.Approved ? 'active':'' }\\\"> <div class=number>4</div> <div class=title>${'main.admin.pages.agreements.agreementStatus.Approved' & t}</div> </div> </div> <div class=\\\"col-md-2 col-12\\\"> <div class=\\\"nav-horizontal ${model.agreementStatus == AgreementStatus.Valid ? 'active':'' }\\\"> <div class=number>5</div> <div class=title>${'main.admin.pages.agreements.agreementStatus.Valid' & t}</div> </div> </div> </div> <div class=\\\"row mb-3 justify-content-md-center\\\"> <div class=\\\"col-md-10 col-12\\\"> <p> ${'main.admin.pages.agreements.info_viewmode' & t} </p> <div if.bind=!model.agreementBody> <i class=\\\"fa fa-spinner fa-spin\\\"></i> </div> <div id=agreementContent if.bind=model.agreementBody innerhtml.bind=\\\"model.agreementBody | sanitizeHTML\\\" class=\\\"pre-scrollable card p-3\\\"> </div> </div> </div> <div class=\\\"row mb-3 justify-content-md-center\\\"> <div class=\\\"col-md-10 col-12\\\"> <a if.bind=!isMaster global-permission-show=\\\"can: ServiceAgreementUpdate\\\" class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: edition-child-router\\\"> <span t=commands.edit>Edit</span> </a> <button global-permission-show=\\\"can: ServiceAgreementStateDraft\\\" if.bind=\\\"model.agreementStatus == AgreementStatus.ManagementReview || model.agreementStatus == AgreementStatus.ForwardedClient\\\" class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=\\\"changeStatusToDraft('main.admin.pages.agreements.agreementStatus.InternalDraft')\\\"> <i class=material-icons> navigate_before </i> ${'main.admin.pages.agreements.changestatus.send_draft' & t} </button> <button global-permission-show=\\\"can: ServiceAgreementPublicNoteCreate\\\" if.bind=\\\"model.agreementStatus == AgreementStatus.ForwardedClient\\\" class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=requestChanges()> <i class=material-icons> navigate_before </i> ${'main.admin.pages.agreements.changestatus.request_changes' & t}</button> <button global-permission-show=\\\"can: ServiceAgreementStateInReview\\\" if.bind=\\\"model.agreementStatus == AgreementStatus.InternalDraft\\\" class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=\\\"changeStatusToReview('main.admin.pages.agreements.agreementStatus.ManagementReview')\\\">${'main.admin.pages.agreements.changestatus.management_review' & t} <i class=material-icons> navigate_next </i> </button> <button global-permission-show=\\\"can: ServiceAgreementStateForwarded\\\" if.bind=\\\"model.agreementStatus == AgreementStatus.ManagementReview\\\" class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=\\\"changeStatusToForwarded('main.admin.pages.agreements.agreementStatus.ForwardedClient')\\\">${'main.admin.pages.agreements.changestatus.refer_customer' & t} <i class=material-icons> navigate_next </i> </button> <button global-permission-show=\\\"can: ServiceAgreementStateForwarded\\\" if.bind=\\\"model.agreementStatus == AgreementStatus.ForwardedClient\\\" class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=resendApprove()>${'main.admin.pages.agreements.changestatus.resend_approve' & t} <i class=material-icons> navigate_next </i> </button> <button global-permission-show=\\\"can: ServiceAgreementStateApproved\\\" if.bind=\\\"model.agreementStatus == AgreementStatus.ForwardedClient\\\" class=\\\"btn btn-success btn-round\\\" type=submit click.delegate=\\\"changeStatusToApproved('main.admin.pages.agreements.agreementStatus.Approved')\\\"> ${'main.admin.pages.agreements.changestatus.approve' & t} <i class=material-icons> check </i> </button> <button global-permission-show=\\\"can: ServiceAgreementStateValid\\\" if.bind=\\\"model.agreementStatus == AgreementStatus.Approved\\\" class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=\\\"changeStatusToValid('main.admin.pages.agreements.agreementStatus.Valid')\\\">${'main.admin.pages.agreements.changestatus.putinforce' & t} <i class=material-icons> play_arrow </i> </button> <button global-permission-show=\\\"can: ServiceAgreementStateCancelled\\\" class=\\\"btn btn-danger btn-round\\\" type=submit click.delegate=\\\"changeStatusToCancelled(AgreementStatus[AgreementStatus.Cancelled], 'main.admin.pages.agreements.agreementStatus.Cancelled')\\\"> ${'main.admin.pages.agreements.changestatus.cancel' & t} <i class=material-icons> cancel </i> </button> <button if.bind=\\\"model.agreementStatus == AgreementStatus.Valid\\\" global-permission-show=\\\"can: ServiceAgreementStateValid\\\" class=\\\"btn btn-warning btn-round\\\" type=submit click.delegate=pdfExport()> ${'main.admin.pages.agreements.pdf.download' & t} <i class=material-icons>picture_as_pdf</i> </button> </div> </div> </template> \";","import { NoteModal } from './note-modal';\nimport { ObservationType } from 'models/agreements/observationType';\nimport { UxDatatableResponse } from 'common/resources/elements/ux/datatable/ux-datatable';\nimport { AgreementService } from '../../../services/agreements/agreement-service';\nimport { Notification } from 'common/services/notification';\nimport { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { ObservationService } from '../../../services/agreements/observation-service';\nimport { UxDatatableCustomAttribute } from 'common/resources/elements/ux/datatable/ux-datatable';\nimport { UxDatatableParameters } from 'common/resources/elements/ux/datatable/ux-datatable';\nimport { Agreement } from 'models/agreements/agreement';\nimport { Logger } from 'aurelia-logging';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Observation } from 'models/agreements/observation';\n\ninterface SearchParams {\n  ObservationType: ObservationType\n}\n\n@autoinject()\nexport class InternalNotesList {\n\n  private logger: Logger;\n  public agreementId: number;\n  private companyId: number;\n  private agreement: Agreement;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private params: any = {};\n\n  private refresh = (): Promise<UxDatatableResponse> => {\n    return this.observationService.privateNoteList(this.agreementId, this.parameters);\n  }\n\n  constructor(\n    private agreementService: AgreementService,\n    private observationService: ObservationService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n    this.logger = LogManager.getLogger(\"InternalNotesList\");\n  }\n\n  public async activate(params: any): Promise<void> {\n    this.params = params;\n  }\n\n  public async bind(): Promise<any> {\n\n    if (!isNaN(this.params.agreementId)) {\n\n      this.agreementId = +this.params.agreementId;\n\n      if (!isNaN(this.params.companyGroupId)) {\n        this.companyId = +this.params.companyGroupId;\n      }\n      else if (this.params.companyDetailId && this.params.companyDetailId === 'create') {\n        this.companyId = null;\n      }\n      else if (!isNaN(this.params.companyDetailId)) {\n        this.companyId = +this.params.companyDetailId;\n      }\n\n      if (this.companyId && this.agreementId) {\n        this.agreementService.client.currentCompanyId = this.companyId;\n        try {\n          this.agreement = await this.agreementService.getById(this.agreementId);\n          this.parameters.search = <SearchParams>{ ObservationType: ObservationType.InternalNote };\n          return this.databind();\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n    }\n  }\n\n  public async databind(): Promise<void> {\n    this.logger.info(\"databind\");\n    return await this.observationService.privateNoteList(this.agreementId, this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async create(): Promise<void> {\n    let item: Observation = new Observation();\n    item.agreementId = this.agreementId;\n\n    return await this.dialogService.open({\n      viewModel: NoteModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        try {\n          item = await this.observationService.createPrivateNote(item)\n          this.parameters.tableData.unshift(item);\n          this.parameters.totalRecords++;\n\n          this.notification.success(\"main.admin.pages.agreements.notes.notifications.added\");\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n    });\n  }\n\n}\n","module.exports = \"<template> <div if.bind=!agreementId> <h2>${'main.admin.pages.agreements.create' & t}</h2> <p> ${'main.admin.pages.agreements.notes.notification_new_agreement' & t} </p> </div> <div class=\\\"content-container row mb-3\\\" if.bind=agreementId> <div class=content-main> <h2>${'main.admin.pages.agreements.internalnotes.title' & t}</h2> <p> ${'main.admin.pages.agreements.internalnotes.information' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-4> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=col-2> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=\\\"list-group list-group-flush\\\" repeat.for=\\\"item of parameters.tableData\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable infinite-scroll-next.call=getMore($scrollContext)> <li class=list-group-item> <div class=\\\"row mb-3\\\"> <div class=col-12> <strong> <label t=main.admin.pages.agreements.notes.from>From</label> </strong> ${item.createdByName} </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div innerhtml.bind=\\\"item.description | sanitizeHTML\\\"></div> </div> </div> </li> </ul> </div> </div> </div> <div class=content-sidebar global-permission-show=\\\"can: ServiceAgreementPrivateNoteCreate\\\"> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.agreements.notes.commands.create' & t}</h5> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create()>${'commands.create' & t}</button> </div> </div> </div> </div> </template> \";","import { ControllerValidateResult } from 'aurelia-validation';\nimport { ValidationRules } from 'aurelia-validation';\nimport { BootstrapFormRenderer } from 'common/services/bootstrap-form-renderer';\nimport { ValidationControllerFactory } from 'aurelia-validation';\nimport { DialogController } from 'aurelia-dialog';\nimport { ValidationController } from 'aurelia-validation';\nimport { Observation } from 'models/agreements/observation';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\n@autoinject()\nexport class NoteModal {\n  private model: Observation = new Observation();\n  private validationController: ValidationController;\n  private logger: Logger;\n\n  constructor(\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n    this.logger = LogManager.getLogger(\"NoteModal\");\n\n  }\n\n  async activate(model: Observation): Promise<void> {\n    this.logger.debug(\"activate\");\n    this.model = model;\n    this.configureValidationRules();\n  }\n\n  configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"description\").displayName(\"main.admin.pages.agreements.notes.description\").required()\n      .on(this.model);\n  }\n\n  public async submit(): Promise<void> {\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  public async save(): Promise<any> {\n    // this.logger.debug(\"save:\");\n    return await this.dialogController.ok();\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'main.admin.pages.agreements.notes.note_create' & t}</h2> <form> <div class=\\\"row mb-3\\\" style=margin-bottom:50px> <div class=col-12> <div class=form-group> <label for=model.description t=main.admin.pages.agreements.notes.description>Description</label> <quill-editor value.bind=\\\"model.description & validate\\\"></quill-editor> </div> </div> </div> <div class=clearfix></div> <div class=row> <div class=col> <p>&nbsp;</p> </div> </div> <div class=form-group> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { NoteModal } from './note-modal';\nimport { ObservationType } from 'models/agreements/observationType';\nimport { UxDatatableResponse } from 'common/resources/elements/ux/datatable/ux-datatable';\nimport { AgreementService } from '../../../services/agreements/agreement-service';\nimport { Notification } from 'common/services/notification';\nimport { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { ObservationService } from '../../../services/agreements/observation-service';\nimport { UxDatatableCustomAttribute } from 'common/resources/elements/ux/datatable/ux-datatable';\nimport { UxDatatableParameters } from 'common/resources/elements/ux/datatable/ux-datatable';\nimport { Agreement } from 'models/agreements/agreement';\n\nimport { Logger } from 'aurelia-logging';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Observation } from 'models/agreements/observation';\n\ninterface SearchParams {\n  ObservationType: ObservationType\n}\n\n@autoinject()\nexport class PublicNotesList {\n  private logger: Logger;\n  public agreementId: number;\n  private companyId: number;\n  private agreement: Agreement;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private params: any = {};\n\n  private refresh = (): Promise<UxDatatableResponse> => {\n    return this.observationService.publicNoteList(this.agreementId, this.parameters);\n  }\n\n  constructor(\n    private agreementService: AgreementService,\n    private observationService: ObservationService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"PublicNoteList\");\n\n  }\n\n  public async activate(params: any): Promise<void> {\n    this.params = params;\n  }\n\n  public async bind(): Promise<any> {\n    if (!isNaN(this.params.agreementId)) {\n      this.agreementId = +this.params.agreementId;\n\n      if (!isNaN(this.params.companyGroupId)) {\n        this.companyId = +this.params.companyGroupId;\n      }\n      else if (this.params.companyDetailId && this.params.companyDetailId === 'create') {\n        this.companyId = null;\n      }\n      else if (!isNaN(this.params.companyDetailId)) {\n        this.companyId = +this.params.companyDetailId;\n      }\n\n      if (this.companyId && this.agreementId) {\n        this.agreementService.client.currentCompanyId = this.companyId;\n        try {\n          this.agreement = await this.agreementService.getById(this.agreementId);\n          this.parameters.search = <SearchParams>{ ObservationType: ObservationType.PublicNote };\n          return this.databind();\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n    }\n  }\n\n  public async databind(): Promise<void> {\n    this.logger.info(\"databind\");\n    return await this.observationService.publicNoteList(this.agreementId, this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n\n\n  private async create(): Promise<void> {\n    let item: Observation = new Observation();\n    item.agreementId = this.agreementId;\n\n    return await this.dialogService.open({\n      viewModel: NoteModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        try {\n          item = await this.observationService.createPublicNote(item);\n          this.parameters.tableData.unshift(item);\n          this.parameters.totalRecords++;\n\n          this.notification.success(\"main.admin.pages.agreements.notes.notifications.added\");\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n    });\n  }\n\n}\n","module.exports = \"<template> <div if.bind=!agreementId> <h2>${'main.admin.pages.agreements.create' & t}</h2> <p> ${'main.admin.pages.agreements.notes.notification_new_agreement' & t} </p> </div> <div class=\\\"content-container row mb-3\\\" if.bind=agreementId> <div class=content-main> <h2>${'main.admin.pages.agreements.publicnotes.title' & t}</h2> <p> ${'main.admin.pages.agreements.publicnotes.information' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-4> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=col-2> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=\\\"list-group list-group-flush\\\" repeat.for=\\\"item of parameters.tableData\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable infinite-scroll-next.call=getMore($scrollContext)> <li class=list-group-item> <div class=\\\"row mb-3\\\"> <div class=col-12> <strong> <label t=main.admin.pages.agreements.notes.from>From</label> </strong> ${item.createdByName} </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div innerhtml.bind=\\\"item.description | sanitizeHTML\\\"></div> </div> </div> </li> </ul> </div> </div> </div> <div class=content-sidebar global-permission-show=\\\"can: ServiceAgreementPublicNoteCreate\\\"> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.agreements.notes.commands.create' & t}</h5> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create()>${'commands.create' & t}</button> </div> </div> </div> </div> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { I18N } from \"aurelia-i18n\";\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\n\n@autoinject\nexport class AgreementReadOnlyChildRouter {\n\n  private logger: Logger;\n\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService) {\n\n    this.logger = LogManager.getLogger(\"AgreementReadOnlyChildRouter\");    \n  }\n\n  public configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: [\"\",\"readonly\"],\n        moduleId: PLATFORM.moduleName(\"./agreement-readonly-mode\"),\n        name: \"agreement-readonly-mode\",\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.ServiceAgreementView),\n        title: this.i18n.tr(\"main.admin.pages.agreements.initialAgreement\")\n      },\n\n      {\n        route: 'public-notes',\n        moduleId: PLATFORM.moduleName('./public-notes-list'),\n        name: 'public-notes',\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.ServiceAgreementPublicNoteView),\n        title: this.i18n.tr(\"main.admin.pages.agreements.publicnotes.title\"),\n      },\n\n      {\n        route: 'internal-notes',\n        moduleId: PLATFORM.moduleName('./internal-notes-list'),\n        name: 'internal-notes',\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.ServiceAgreementPrivateNoteView),\n        title: this.i18n.tr(\"main.admin.pages.agreements.internalnotes.title\"),\n      },\n\n      {\n        route: 'addendums',\n        moduleId: PLATFORM.moduleName('./addendum-list'),\n        name: 'addendums',\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.ServiceAgreementView),\n        title: this.i18n.tr(\"main.admin.pages.agreements.addendum.title\"),\n      },\n\n      {\n        route: \"edit\",\n        moduleId: PLATFORM.moduleName(\"../edition/edition-child-router\"),\n        name: \"edition-child-router\",\n        nav: false,\n        title: this.i18n.tr(\"navigations.basic_info\")\n      }\n\n    ]);\n  }\n}\n","module.exports = \"<template> <section class=au-animate> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-2\\\"> <ux-side-well router.bind=router></ux-side-well> </div> <div class=\\\"col-12 col-md-10\\\"> <router-view></router-view> </div> </div> </section> </template> \";","import { AuthorizationService } from 'aurelia-permission';\n\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class ArchetypeChildRouteer {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n\n    this.logger = LogManager.getLogger(\"ArchetypeChildRouter\");\n  }\n\n  public configureRouter(config: RouterConfiguration, router: Router): void {\n    \n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./localizations/archetype-localization-list\"),       \n        name: \"archetype-localization-list\",\n        title: this.i18n.tr(\"main.admin.pages.archetypes.localization_card_title\"),\n      },      \n\n    ]);\n    this.router = router;\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { Archetype } from \"models/archetypes/archetype\";\nimport { ArchetypeService } from \"../../services/archetypes/archetype-service\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { archetypeType } from \"models/archetypes/archetypeType\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\n\ninterface SearchParams {\n  archetypetype: archetypeType\n}\n@autoinject\nexport class ArchetypeEdit{\n\n  private logger: Logger;\n  private model: Archetype;\n  private validationController: ValidationController;\n\n  private archetypes: Archetype[];\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n  \n  constructor(\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory,\n    private archetypeService: ArchetypeService,\n    private notification: Notification) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ArchetypeModal\");\n  }\n  public bind(): void {\n    this.archetypeService.getAll().then(archetypes => this.archetypes = archetypes);\n  }\n  \n  public activate(model: Archetype): void {\n    this.model = model;\n    this.configureValidationRules();\n  }\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.archetypes.name\").required()\n      .ensure(\"d\").displayName(\"main.admin.pages.archetypes.d\").required().matches(/^[1-9][0-9]?$|^100$/)\n      .ensure(\"i\").displayName(\"main.admin.pages.archetypes.i\").required().matches(/^[1-9][0-9]?$|^100$/)\n      .ensure(\"s\").displayName(\"main.admin.pages.archetypes.s\").required().matches(/^[1-9][0-9]?$|^100$/)\n      .ensure(\"c\").displayName(\"main.admin.pages.archetypes.c\").required().matches(/^[1-9][0-9]?$|^100$/)\n            \n      .on(this.model);\n  }\n  public async submit(saveAndContinue: boolean): Promise<void> {\n    // this.saveAndContinue = saveAndContinue;\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(saveAndContinue);\n        }        \n      });\n      \n  }\n  public async save(saveAndContinue: boolean): Promise<any> {\n    this.logger.debug(\"save:\", saveAndContinue);\n    this.validationController.reset();\n    return await this.dialogController.ok(saveAndContinue);\n  }\n}\n","module.exports = \"<template> <require from=../../../../models/archetypes/archetypeTypeViewEngineHooks></require> <ux-dialog class=col-md-6> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h3>${'main.admin.pages.archetypes.title_editar' & t}</h3> <form> <div class=form-group> <label for=archetypeType>${'main.admin.pages.archetypes.kind' & t}</label> <label class=form-control for=archetypeType>${'main.admin.pages.archetypes.type.' + archetypeTypes[model.archetypeType] & t}</label> </div> <div class=form-group> <label>${'main.admin.pages.archetypes.name' & t}</label> <input attach-focus=true type=text class=form-control id=model.name t=[placeholder]main.admin.pages.archetypes.name value.bind=\\\"model.name & validate\\\"> </div> <div class=form-group> <div class=\\\"row mb-2\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\"> <tr> <th scope=col t=main.admin.pages.archetypes.d>D</th> <th scope=col t=main.admin.pages.archetypes.i>I</th> <th scope=col t=main.admin.pages.archetypes.s>S</th> <th scope=col t=main.admin.pages.archetypes.c>C</th> </tr> <tr> <th><input type=number class=form-control id=model.d value.bind=\\\"model.d & validate\\\"></th> <th><input type=number class=form-control id=model.i value.bind=\\\"model.i & validate\\\"></th> <th><input type=number class=form-control id=model.s value.bind=\\\"model.s & validate\\\"></th> <th><input type=number class=form-control id=model.c value.bind=\\\"model.c & validate\\\"></th> </tr> </table> </div> </div> </div> <div class=form-group> <label>${'main.admin.pages.groups.description' & t}</label> <textarea class=form-control id=model.description t=[placeholder]main.admin.pages.groups.description value.bind=\\\"model.description & validate\\\" rows=3></textarea> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit(false)>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel() t=commands.cancel>Cancel</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration, RouteConfig } from \"aurelia-router\";\nimport { DialogService, DialogCloseResult, DialogCancelableOperationResult } from \"aurelia-dialog\";\nimport { ArchetypeService } from \"../../services/archetypes/archetype-service\";\nimport { Archetype } from \"models/archetypes/archetype\";\nimport { Notification } from \"common/services/notification\";\nimport { DeleteConfirmation } from \"../../../components/delete-confirmation\";\nimport { ArchetypeModal } from './archetype-modal';\nimport { ArchetypeEdit } from './archetype-edit';\nimport { archetypeType } from \"models/archetypes/archetypeType\";\nimport { ChangeStateConfirmation } from \"../../../components/change-state-confirmation\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n@autoinject\nexport class ArchetypeList {\n  private logger: Logger;\n  private parameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private refresh = async (): Promise<void | UxDatatableParameters> => {\n    this.logger.debug(\"refreshing\");\n    try {\n      const response = await this.archetypeService.list(this.parameters);\n      return response;\n    }\n    catch (error) {\n      return this.notification.error(error);\n    }\n  }\n\n  constructor(\n    private router: Router,\n    private archetypeService: ArchetypeService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n    this.logger = LogManager.getLogger(\"ArchetypeList\");\n  }\n\n  private async bind(): Promise<any> {\n    this.logger.debug(\"databind\");\n    // return await this.archetypeService.getAll();\n    return await this.archetypeService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.parameters.totalRecords = response.totalRecords;\n        this.parameters.tableData = response.data;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async databind(): Promise<any> {\n    this.logger.debug(\"bind\");\n    return await this.archetypeService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  public async create(): Promise<any> {\n    let item: Archetype = new Archetype();\n\n    return await this.dialogService.open({\n      viewModel: ArchetypeModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        // this.logger.debug(\"response.output\", response.output);\n        try {\n          let model: Archetype = await this.archetypeService.create(item);\n          item.id = model.id;\n          this.parameters.tableData.unshift(model);\n          this.parameters.totalRecords++;\n          this.notification.success(\"main.admin.pages.archetypes.notifications.added\");\n\n        } catch (error) {\n          this.notification.error(error);\n\n        }\n      }\n    });\n  }\n\n  public async edit(item: Archetype): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: ArchetypeEdit,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        try {\n          await this.archetypeService.update(item);\n          this.notification.success(\"main.admin.pages.archetypes.notifications.edited\");\n        } catch (error) {\n          this.notification.error(error);\n          // await this.databind();\n        }\n      }\n      // return await this.databind();\n    });\n  }\n  public async delete(id: number, name: string): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.archetypeService.delete(id)\n          .then(() => {\n            let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === id);\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"main.admin.pages.archetypes.notifications.deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  public async changeState(item: Archetype): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: ChangeStateConfirmation,\n      model: item.name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.archetypeService.changeState(item.id)\n          .then(() => {\n            // this.databind();\n            // item.isActive = !item.isActive;\n            this.notification.success(\"main.admin.pages.archetypes.notifications.edited\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n      else {\n        item.isActive = !item.isActive;\n      }\n    });\n  }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class ArchetypeListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"ArchetypeListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./archetype-list\"),\n        name: \"archetypes\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.admin.pages.languages.title\"),\n      },\n\n      {\n        route: \"archetype/:archetypeId\",\n        moduleId: PLATFORM.moduleName(\"./archetype-child-router\"),\n        name: \"archetype-child-router\",\n        // nav: false,\n        // title: this.i18n.tr(\"main.admin.pages.languages.language\"),\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=../../../../models/archetypes/archetypeTypeViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2 t=main.admin.pages.archetypes.title>Label</h2> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=col-2> <ux-datatable-info parameters.bind=parameters t=[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-2 scope=col t=main.admin.pages.archetypes.name>Name</th> <th class=col-md-1 scope=col t=main.admin.pages.archetypes.d>D</th> <th class=col-md-1 scope=col t=main.admin.pages.archetypes.i>I</th> <th class=col-md-1 scope=col t=main.admin.pages.archetypes.s>S</th> <th class=col-md-1 scope=col t=main.admin.pages.archetypes.c>C</th> <th class=col-md-2 scope=col t=main.admin.pages.archetypes.kind>Type</th> <th class=col-md-2 scope=col t=main.admin.pages.archetypes.description>Description</th> <th class=col-md-2 scope=col></th> </tr> </thead><thead> </thead><tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.name}>${item.name}</span></td> <td class=col-md-1>${item.d}</td> <td class=col-md-1>${item.i}</td> <td class=col-md-1>${item.s}</td> <td class=col-md-1>${item.c}</td> <td class=col-md-2>${'main.admin.pages.archetypes.type.' + archetypeTypes[item.archetypeType] & t} </td> <td class=col-md-2><span title=${item.description}>${item.description}</span></td> <td class=\\\"col-md-2 d-flex\\\"> <button class=\\\"btn btn-link\\\" click.delegate=edit(item) global-permission-enable=\\\"can: ArchetypeEdit\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </button> <button class=\\\"btn btn-link\\\" global-permission-enable=\\\"can: ArchetypeDelete\\\" click.delegate=\\\"delete(item.id, item.name)\\\" title.bind=\\\"'commands.archive' & t  \\\"> <i class=material-icons>archive</i> </button> <span class=\\\"switch switch-sm pt-2\\\"> <input type=checkbox class=switch id=isActive_${$index} checked.bind=item.isActive change.delegate=changeState(item) global-permission-enable=\\\"can: ArchetypeActivate\\\"/> <label for=isActive_${$index} class=form-check-label>&nbsp;</label> </span> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\" global-permission-enable=\\\"can: ArchetypeCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.archetypes.create_card_title' & t}</h5> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create()>${'commands.create' & t}</button> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-enable=\\\"can: ArchetypeCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.archetypes.localization_card_title' & t}</h5> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: archetype-child-router; params.bind: {archetypeId:'localization'}\\\">${'commands.create' & t}</a> </div> </div> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { Archetype } from \"models/archetypes/archetype\";\nimport { ArchetypeService } from \"../../services/archetypes/archetype-service\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { archetypeType } from \"models/archetypes/archetypeType\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n\ninterface SearchParams {\n  archetypetype: archetypeType\n}\n@autoinject\nexport class ArchetypeModal{\n  private logger: Logger;\n  private model: Archetype;\n  private validationController: ValidationController;\n\n  private archetypes: Archetype[];\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  constructor(\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory,\n    private archetypeService: ArchetypeService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ArchetypeModal\");\n  }\n\n  public bind(): void {\n    this.archetypeService.getAll().then(archetypes => this.archetypes = archetypes);\n  }\n\n  public activate(model: Archetype): void {\n    this.model = model;\n    this.configureValidationRules();\n  }\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.archetypes.name\").required()\n      .ensure(\"d\").displayName(\"main.admin.pages.archetypes.d\").required().matches(/^[1-9][0-9]?$|^100$/)\n      .ensure(\"i\").displayName(\"main.admin.pages.archetypes.i\").required().matches(/^[1-9][0-9]?$|^100$/)\n      .ensure(\"s\").displayName(\"main.admin.pages.archetypes.s\").required().matches(/^[1-9][0-9]?$|^100$/)\n      .ensure(\"c\").displayName(\"main.admin.pages.archetypes.c\").required().matches(/^[1-9][0-9]?$|^100$/)\n      .ensure(\"archetypeType\").displayName(\"main.admin.pages.archetypes.kind\").required()\n      \n      .on(this.model);\n  }\n  \n  public async submit(saveAndContinue: boolean): Promise<void> {\n    // this.saveAndContinue = saveAndContinue;\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(saveAndContinue);\n        }\n      });\n  }\n  public async save(saveAndContinue: boolean): Promise<any> {\n    this.logger.debug(\"save:\", saveAndContinue);\n    this.validationController.reset();\n    return await this.dialogController.ok(saveAndContinue);\n  }\n}\n","module.exports = \"<template> <require from=../../../../models/archetypes/archetypeTypeViewEngineHooks></require> <ux-dialog class=col-md-6> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h3>${'main.admin.pages.archetypes.create_card_title' & t}</h3> <form> <div class=form-group> <label for=archetypeType>${'main.admin.pages.archetypes.kind' & t}</label> <select id=archetypeType value.bind=\\\"model.archetypeType & validate\\\" class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of archetypeTypes\\\" model.bind=option>${'main.admin.pages.archetypes.type.' + option & t} </option> </select> </div> <div class=form-group> <label>${'main.admin.pages.archetypes.name' & t}</label> <input type=text class=form-control id=model.name t=[placeholder]main.admin.pages.archetypes.name value.bind=\\\"model.name & validate\\\"> </div> <div class=form-group> <div class=\\\"row mb-2\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\"> <tr> <th scope=col t=main.admin.pages.archetypes.d>D</th> <th scope=col t=main.admin.pages.archetypes.i>I</th> <th scope=col t=main.admin.pages.archetypes.s>S</th> <th scope=col t=main.admin.pages.archetypes.c>C</th> </tr> <tr> <th><input type=number class=form-control id=model.d value.bind=\\\"model.d & validate\\\"></th> <th><input type=number class=form-control id=model.i value.bind=\\\"model.i & validate\\\"></th> <th><input type=number class=form-control id=model.s value.bind=\\\"model.s & validate\\\"></th> <th><input type=number class=form-control id=model.c value.bind=\\\"model.c & validate\\\"></th> </tr> </table> </div> </div> </div> <div class=form-group> <label>${'main.admin.pages.archetypes.description' & t}</label> <textarea class=form-control id=model.description t=[placeholder]main.admin.pages.archetypes.description value.bind=\\\"model.description & validate\\\" rows=3></textarea> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit(false)>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel() t=commands.cancel>Cancel</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { ArchetypeLocalization } from 'models/archetypes/archetype-localization';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { Notification } from \"common/services/notification\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { ArchetypeLocalizationService } from \"main/admin/services/archetypes/archetype-localization-service\";\nimport { ArchetypeLocalizationModal } from './archetype-localization-modal';\nimport { LanguageService } from 'main/admin/services/localizations/language-service';\nimport { ControllerValidateResult, ValidationController } from 'aurelia-validation';\n\n@autoinject()\nexport class ArchetypeLocalizationList {\n  private logger: Logger;\n\n  private params: any = {};\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n  private languages;\n\n  private isLoaded: boolean = false;\n\n  private refresh = async (): Promise<void | UxDatatableParameters> => {\n    this.logger.debug(\"refreshing\");\n    try {\n      const response = await this.archetypelocalizationservice.list(this.parameters);\n      return response;\n    }\n    catch (error) {\n      return this.notification.error(error);\n    }\n  }\n\n  constructor(\n    private languageService: LanguageService,\n    private validationController: ValidationController,\n    private archetypelocalizationservice: ArchetypeLocalizationService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"ArchetypeLocalizationList\");\n\n    this.parameters.search = {};\n\n  }\n\n  private async activate(params: any): Promise<void> {\n    if (this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n  }\n\n  private async databind(): Promise<any> {\n    this.logger.debug(\"databind\");\n\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.logger.debug(\"refresh\", response);\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n\n  }\n\n  private async bind(): Promise<any> {\n    try {\n      this.languages = await this.languageService.getAll();\n      if (this.languages.length > 0) {\n        this.parameters.search.LanguageId = this.languages[0].id;\n        return await this.databind();\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  public async create(item: ArchetypeLocalization): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: ArchetypeLocalizationModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        this.logger.debug(\"response.output\", response.output);\n        try {\n          let model: ArchetypeLocalization = await this.archetypelocalizationservice.create(item);\n\n          item.id = model.id;\n          // this.parameters.tableData.unshift(model);\n          // this.parameters.totalRecords++;\n          this.notification.success(\"notifications.item_added\");\n          // return await this.databind();\n        } catch (error) {\n          this.notification.error(error);\n        }\n      }\n    });\n  }\n\n  public async edit(item: ArchetypeLocalization): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: ArchetypeLocalizationModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      this.logger.debug(\"response.output\", response.output);\n      if (!response.wasCancelled) {\n        try {\n          await this.archetypelocalizationservice.update(item);\n\n          this.notification.success(\"main.admin.pages.archetypes.notifications.edited\");\n          // return await this.refresh();\n        } catch (error) {\n          this.notification.error(error);\n          // return await this.databind();\n        }\n      }\n      // return await this.databind();\n    });\n  }\n\n  public async submit(item: ArchetypeLocalization): Promise<void> {\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (item.id != 0) {\n          return await this.edit(item);\n        }\n        return await this.create(item);\n      });\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../../models/archetypes/archetypeTypeViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2 t=main.admin.pages.archetypes.title>Label</h2> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-10 col-md-4\\\"> <div class=form-group> <label for=countryId>${'main.admin.pages.archetypes.localization' & t}</label> <select value.bind=parameters.search.LanguageId class=form-control id=languageId change.delegate=\\\"databind() & debounce:100\\\"> <option repeat.for=\\\"option of languages\\\" model.bind=option.id>${option.name & t}</option> </select> </div> </div> <div class=\\\"col-10 col-md-4\\\"> <div class=form-group> <label for=countryId>${'main.admin.pages.archetypes.kind' & t}</label> <select id=archetypeType value.bind=parameters.search.archetypeType class=form-control id=archetypeType change.delegate=\\\"databind() & debounce:100\\\"> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of archetypeTypes\\\" model.bind=archetypeType[option]> ${'main.admin.pages.archetypes.type.' + option & t} </option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-3 scope=col t=main.admin.pages.archetypes.name>Name</th> <th class=col-md-3 scope=col t=main.admin.pages.archetypes.traduction>traduction</th> <th class=col-md-3 scope=col t=main.admin.pages.archetypes.kind>type</th> <th class=col-md-3 scope=col>&nbsp;</th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-3 text-truncate\\\"><span title=${item.archetypeName}>${item.archetypeName}</span></td> <td class=\\\"col-md-3 text-truncate\\\"><span title=${item.traduction}>${item.traduction}</span></td> <td class=\\\"col-md-3 text-truncate\\\"><span title=\\\"${'main.admin.pages.archetypes.type.' + archetypeTypes[item.archetypeType] & t}\\\">${'main.admin.pages.archetypes.type.' + archetypeTypes[item.archetypeType] & t}</span></td> <td class=\\\"col-md-3 d-flex\\\"> <button class=\\\"btn btn-link\\\" click.delegate=submit(item) global-permission-enable=\\\"can: ArchetypeEdit\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </button> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { ArchetypeLocalization } from \"models/archetypes/archetype-localization\";\n// import { ArchetypeLocalizationService } from \"main/admin/services/archetypes/archetype-localization-service\";\n\n@autoinject\nexport class ArchetypeLocalizationModal{\n  private logger: Logger;\n  private model: ArchetypeLocalization;\n  private validationController: ValidationController;\n\n  // private archetypeslocalization: ArchetypeLocalization[];\n\n  constructor(\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory,\n    // private archetypelocalizationservice: ArchetypeLocalizationService\n    ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ArchetypeModal\");\n  }\n\n  // public async bind(): Promise<any> {\n  //   return await this.archetypelocalizationservice.getAll().then(archetypeslocalization => this.archetypeslocalization = archetypeslocalization);\n  // }\n\n  public activate(model: ArchetypeLocalization): void {\n    this.model = model;\n    this.configureValidationRules();\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules    \n    .ensure(\"descriptionTraduction\").displayName(\"main.admin.pages.archetypes.description_traduction\").required()\n    .ensure(\"traduction\").displayName(\"main.admin.pages.archetypes.kind\").required()    \n    .on(this.model);\n  }\n\n  public async submit(saveAndContinue: boolean): Promise<void> {\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(saveAndContinue);\n        }\n      });\n  }\n\n  public async save(saveAndContinue: boolean): Promise<any> {\n    this.logger.debug(\"save:\", saveAndContinue);\n    this.validationController.reset();\n    return await this.dialogController.ok(saveAndContinue);\n  }\n\n}\n","module.exports = \"<template> <ux-dialog class=col-md-24> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h3>${'main.admin.pages.archetypes.titel_editar_localization' & t}</h3> <hr/> <form> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label>${'main.admin.pages.archetypes.name' & t}</label> <input attach-focus=true disabled=disabled type=text class=form-control id=model.archetypeName t=[placeholder]main.admin.pages.archetypes.name value.bind=\\\"model.archetypeName & validate\\\"> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label>${'main.admin.pages.archetypes.traduction' & t}</label> <input attach-focus=true type=text class=form-control id=model.traduction t=[placeholder]main.admin.pages.archetypes.traduction value.bind=\\\"model.traduction & validate\\\"> </div> </div> </div> <div class=form-group> <input attach-focus=true disabled=disabled type=hidden class=form-control id=model.archetypeId t=[placeholder]main.admin.pages.archetypes.name value.bind=\\\"model.archetypeId & validate\\\"> </div> <div class=form-group> <input attach-focus=true disabled=disabled type=hidden class=form-control id=model.LanguageId t=[placeholder]main.admin.pages.archetypes.localization value.bind=\\\"model.languageId & validate\\\"> </div> <div class=form-group> <label>${'main.admin.pages.archetypes.localization' & t}</label> <input attach-focus=true disabled=disabled type=text class=form-control id=model.languageCulture t=[placeholder]main.admin.pages.archetypes.localization value.bind=\\\"model.languageCulture & validate\\\"> </div> <div class=form-group> <label>${'main.admin.pages.archetypes.description' & t}</label> <textarea attach-focus=true disabled=disabled type=text class=form-control id=model.description t=[placeholder]main.admin.pages.archetypes.description value.bind=\\\"model.description & validate\\\">\\n          </textarea> </div> <div class=form-group> <label>${'main.admin.pages.archetypes.description_traduction' & t}</label> <textarea class=form-control id=model.descriptionTraduction t=[placeholder]main.admin.pages.archetypes.description_traduction value.bind=\\\"model.descriptionTraduction & validate\\\">\\n            </textarea> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit(false)>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel() t=commands.cancel>Cancel</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","\nimport { LogManager, autoinject } from 'aurelia-framework';\nimport { PLATFORM } from 'aurelia-pal';\nimport { Logger } from 'aurelia-logging';\nimport { Router, RouterConfiguration } from 'aurelia-router';\nimport { AuthorizationService } from 'aurelia-permission';\nimport { I18N } from 'aurelia-i18n';\nimport PredefinedPermissions from 'config/predefined-permissions';\n\n@autoinject\nexport class CompanyMasterChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService) {\n\n    this.logger = LogManager.getLogger(\"CompanyMasterChildRouter\");\n  }\n\n  public configureRouter(config: RouterConfiguration, router: Router) {\n    this.router = router;\n    config.map([\n      {\n        route: '',\n        moduleId: PLATFORM.moduleName('./company-master-edit'),\n        name: 'company-master-edit',\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.companies.company\"),\n      },\n\n      {\n        route: 'agreements',\n        moduleId: PLATFORM.moduleName('../agreements/agreement-list-child-router'),\n        name: 'company-master-agreements',\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.ServiceAgreementView),\n        title: this.i18n.tr(\"main.admin.pages.agreements.title\"),\n      },\n\n      {\n        route: 'password-policy',\n        moduleId: PLATFORM.moduleName('../companies/company-password-policy-edit'),\n        name: 'company-master-password-policy',\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.PasswordPolicyView),\n        title: this.i18n.tr(\"main.admin.pages.companies.password_policy.title\"),\n      },\n\n\n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { Notification } from \"common/services/notification\";\nimport { FileAcceptValidator } from 'common/utils/file-accept-validator';\nimport { CompanyEditedMessage } from 'messages/companyEditedMessage';\nimport { EventAggregator } from 'aurelia-event-aggregator';\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\nimport { CompanyDetailMasterService } from '../../services/companies/company-detail-master-service';\nimport { CompanyDetailMaster } from 'models/companies/company-detail-master';\nimport { Company } from 'models/companies/company';\n\n@autoinject()\nexport class CompanyMasterEdit {\n\n  private logger: Logger;\n\n  private state: State;\n  private franchise: Company;\n  private companyGroup: Company;\n\n  private model: CompanyDetailMaster = new CompanyDetailMaster();\n\n  constructor(\n    private store: StoreService,\n    private companyDetailMasterService: CompanyDetailMasterService,\n    private notification: Notification,\n    private router: Router,\n    private ea: EventAggregator) {\n\n\n    this.logger = LogManager.getLogger(\"CompanyMasterEdit\");\n\n    this.state = this.store.state;\n  }\n\n\n  private async activate(params: any): Promise<void> {\n    this.logger.info(\"activate\");\n\n    if (!isNaN(params.companyDetailId)) {\n      try {\n        this.model = await this.companyDetailMasterService.getById(+params.companyDetailId);\n        this.setFranchiseAndCompanyGroup();\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n  private setFranchiseAndCompanyGroup() {\n    if (this.state.companies.length > 0) {\n      this.companyGroup = this.state.companies.find(x => x.id == this.model.company.parentId);\n      this.franchise = this.state.companies.find(x => x.id == this.companyGroup.parentId);\n    }\n  }\n\n  get canSave() {\n    return !this.companyDetailMasterService.client.isRequesting;\n  }\n\n  public async save(keepEditing: boolean): Promise<any> {\n    this.logger.info(\"save\");\n\n    return await this.companyDetailMasterService.update(this.model)\n      .then(async (response: CompanyDetailMaster) => {\n        this.model.logoUrl = this.model.logoUrl;\n\n        // trigger company edited event\n        // this.logger.debug(\"updated company\", response.company);\n\n        this.ea.publish(new CompanyEditedMessage(response.company));\n\n        this.notification.success(\"main.admin.pages.companies.messages.company_edited\");\n\n        if (!keepEditing) {\n          return await this.router.navigateToRoute(\"company-group-master-list-selector\");\n        }\n\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n\n  }\n\n  public setFile($event: any): void {\n    this.logger.debug(\"setFile\");\n    let file = <File>$event.target.files[0];\n    let fileValidator = FileAcceptValidator.parse(\"image/*\");\n    if (fileValidator.isValid(file)) {\n      let reader: FileReader = new FileReader();\n      reader.readAsDataURL(file);\n      reader.onload = () => {\n        var base64data: any = reader.result;\n        this.model.logo = base64data;\n        this.model.logoFileName = file.name;\n        this.model.logoUrl = URL.createObjectURL(file);\n      };\n    }\n    else {\n      this.notification.error(\"main.admin.pages.companies.errors.error_bad_image\");\n    }\n  }\n\n  public unSetFile(): void {\n    this.model.logo = null;\n    this.model.logoFileName = null;\n    this.model.logoUrl = null;\n  }\n}\n","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2 if.bind=!model.id>${'main.admin.pages.companies.create' & t}</h2> <h2 if.bind=model.id>${model.company.name}</h2> <p> ${'main.admin.pages.companies.info_editing' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-3\\\"> <div class=\\\"row mb-3\\\"> <div class=col> <img if.bind=model.logoUrl class=\\\"img-thumbnail w-50\\\" alt.bind=item.option src.bind=model.logoUrl> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> <div class=custom-file> <input class=custom-file-input id=model.logoFileName type=file accept=image/* change.delegate=setFile($event)> <label class=custom-file-label for=model.logoFileName>${ model.logoFileName ? model.logoFileName : 'commons.file' & t}</label> </div> <div class=form-group if.bind=model.logoUrl> <button type=button class=\\\"btn btn-link\\\" click.delegate=unSetFile()> ${ 'commands.clear' & t } </button> </div> </div> </div> </div> <div class=\\\"col-12 col-md-9\\\"> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label>${model.company.name} <br> <small>${'main.admin.pages.companies.name' & t}</small> </label> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label>${model.company.businessName} <br> <small>${'main.admin.pages.companies.business_name' & t}</small> </label> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <label>${model.economicSectorName & t} <br> <small>${'catalogs.economic_sectors.title' & t}</small> </label> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label>${model.countryName & t} <br> <small>${'catalogs.countries.title' & t}</small> </label> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label>${model.regionName & t} <br> <small>${'catalogs.regions.title' & t}</small> </label> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label>${model.cityName & t} <br> <small>${'catalogs.cities.title' & t}</small> </label> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=model.userNumber></label> <label>${model.userNumber} <br> <small>${'main.admin.pages.companies.user_number' & t}</small> </label> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=model.isDemo></label> <label>${model.isDemo ? 'commands.yes' : 'commands.no' & t} <br> <small>${'main.admin.pages.companies.demo' & t}</small> </label> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label>${model.planName} <br> <small>${'main.admin.pages.companies.plan' & t}</small> </label> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <i class=material-icons> location_on </i> <label> ${franchise.name} <br/> <small>${'main.admin.pages.franchises.title' & t}</small> </label> </div> <div class=\\\"col-12 col-md-4\\\"> <i class=\\\"material-icons ticon-organizaciones-grupos\\\"> &nbsp; </i> <label> ${companyGroup.name} <br/> <small>${'main.admin.pages.company_groups.title' & t}</small> </label> </div> <div class=\\\"col-12 col-md-4\\\"> <i class=material-icons> date_range </i> <label> ${model.company.createdOn | dateFormat} <br/> <small>${'commons.created_on' & t}</small> </label> </div> </div> </div> </div> <div class=form-actions> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: CompanyMasterUpdate\\\" type=submit click.delegate=save(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: CompanyMasterUpdate\\\" type=submit click.delegate=save(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: company-group-master-list-selector;\\\" t=commands.cancel>Cancel</a> </div> </form> </div> </template> \";","\nimport { LogManager, autoinject } from 'aurelia-framework';\nimport { PLATFORM } from 'aurelia-pal';\nimport { Logger } from 'aurelia-logging';\nimport { Router, RouterConfiguration } from 'aurelia-router';\n\nimport { AuthorizationService } from 'aurelia-permission';\nimport { I18N } from 'aurelia-i18n';\nimport PredefinedPermissions from 'config/predefined-permissions';\n\n@autoinject\nexport class CompanyChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService) {\n\n    this.logger = LogManager.getLogger(\"CompanyChildRouter\");\n  }\n\n  public configureRouter(config: RouterConfiguration, router: Router) {\n    this.router = router;\n    config.map([\n      {\n        route: '',\n        moduleId: PLATFORM.moduleName('./company-edit'),\n        name: 'company-edit',\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.companies.company\"),\n      },\n\n      {\n        route: 'agreements',\n        moduleId: PLATFORM.moduleName('../agreements/agreement-list-child-router'),\n        name: 'company-agreements',\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.ServiceAgreementView),\n        title: this.i18n.tr(\"main.admin.pages.agreements.title\"),\n      },\n\n      {\n        route: 'contacts',\n        moduleId: PLATFORM.moduleName('../contacts/contact-list'),\n        name: 'company-contacts',\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.CompanyUpdate),\n        title: this.i18n.tr(\"main.admin.pages.contacts.title\"),\n      },\n\n      {\n        route: 'password-policy',\n        moduleId: PLATFORM.moduleName('./company-password-policy-edit'),\n        name: 'company-password-policy',\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.PasswordPolicyView),\n        title: this.i18n.tr(\"main.admin.pages.companies.password_policy.title\"),\n      },\n\n      {\n        route: 'settings',\n        moduleId: PLATFORM.moduleName('./company-settings-edit'),\n        name: 'company-settings',\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.CompanyUpdate),\n        title: this.i18n.tr(\"main.admin.pages.companies.company_settings.title\"),\n      },\n\n      {\n        route: 'external-activations',\n        moduleId: PLATFORM.moduleName('./company-external-activations-edit'),\n        name: 'external-activations',\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.CompanyUpdate),\n        title: this.i18n.tr(\"main.admin.pages.companies.external_activations.title\"),\n      },\n\n      // {\n      //   route: \"groups\",\n      //   moduleId: PLATFORM.moduleName(\"../groups/group-list-child-router\"),\n      //   name: \"company-user-groups\",\n      //   nav: true,\n      //   title: this.i18n.tr(\"main.admin.pages.groups.title\"),\n      // },\n\n      // {\n      //   route: \"profiles\",\n      //   moduleId: PLATFORM.moduleName(\"../profiles/profile-list-child-router\"),\n      //   name: \"company-profiles\",\n      //   title: this.i18n.tr(\"main.admin.pages.profiles.title\"),\n      //   nav: true,\n      // },\n\n      // {\n      //   route: \"users\",\n      //   moduleId: PLATFORM.moduleName(\"../users/user-list-child-router\"),\n      //   name: \"company-users\",\n      //   title: this.i18n.tr(\"main.admin.pages.users.title\"),\n      //   nav: true,\n      // },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","import { PlanService } from '../../services/plans/plan-service';\nimport { CoreCompanyService } from '../../services/companies/core-company-service';\nimport { CompanyGroup } from 'models/companies/company-group';\nimport { CatalogBase } from 'models/catalogs/catalog-base';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { CatalogService } from \"../../../services/catalogs/catalog-service\";\nimport { CatalogChild } from \"models/catalogs/catalog-child\";\nimport { CompanyDetailService } from '../../services/companies/company-detail-service';\nimport { CompanyDetail } from 'models/companies/company-detail';\nimport { FileAcceptValidator } from 'common/utils/file-accept-validator';\nimport { Plan } from 'models/plans/plan';\nimport { CompanyGroupService } from '../../services/companies/company-group-service';\nimport { CompanyEditedMessage } from 'messages/companyEditedMessage';\nimport { EventAggregator } from 'aurelia-event-aggregator';\nimport { Company } from 'models/companies/company';\nimport { PlanType } from 'models/plans/planType';\n\n@autoinject()\nexport class CompanyEdit {\n\n  private logger: Logger;\n\n  private franchise: Company;\n  private franchiseId: number;\n  \n  private companyGroup: CompanyGroup;\n\n  private model: CompanyDetail = new CompanyDetail();\n  private validationController: ValidationController;\n\n  private demoPlans: Plan[] = [];  \n  private demoAllPlans: Plan[] = [];\n  private demoSelectionPlans: Plan[] = [];\n  private economicSectors: CatalogBase[] = [];\n  private countries: CatalogBase[] = [];\n  private regions: CatalogChild[] = [];\n  private cities: CatalogChild[] = [];\n\n  constructor(\n    private planService: PlanService,\n    private catalogService: CatalogService,\n    private coreCompanyService: CoreCompanyService,\n    private companyGroupService: CompanyGroupService,\n    private companyService: CompanyDetailService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private router: Router,\n    private ea: EventAggregator) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"CompanyEdit\");\n\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.companies.name\").required()\n      .on(this.model.company)\n      .ensure(\"economicSectorId\").displayName(\"catalogs.economic_sectors.title\").required()\n      .ensure(\"organizationType\").displayName(\"main.admin.pages.companies.organization_type\").required()\n      .ensure(\"countryId\").displayName(\"catalogs.countries.title\").required()\n      .ensure(\"regionId\").displayName(\"catalogs.regions.title\").required()\n      .ensure(\"cityId\").displayName(\"catalogs.cities.title\").required()\n\n      .ensure(\"userNumber\").displayName(\"main.admin.pages.companies.user_number\").matches(/^[0-9]*$/).required()\n      .ensure(\"isDemo\").displayName(\"main.admin.pages.companies.demo\").required()\n\n      .ensure(\"planId\").displayName(\"main.admin.pages.companies.plan\").required().when(x => this.model.isDemo)\n\n      .on(this.model);\n  }\n\n  private async activate(params: any): Promise<any> {\n    this.logger.info(\"activate\");\n\n    try {\n\n      if (!isNaN(params.franchiseId) && !isNaN(params.companyGroupId)) {\n        this.franchiseId = +params.franchiseId;\n        this.companyGroup = await this.companyGroupService.getById(+params.companyGroupId);\n        this.economicSectors = await this.catalogService.getEconomicSectorAll();\n        this.countries = await this.catalogService.getCountryAll();\n        this.demoAllPlans = (await this.companyService.getDemoPlansByFranchiseId(this.franchiseId));\n        this.demoPlans = this.demoAllPlans.filter(x=> !x.isRobotHunter);\n        this.demoSelectionPlans = this.demoAllPlans\n        .filter(x=> x.isRobotHunter && x.isTestItemsActive);\n        this.franchise = await this.coreCompanyService.getById(+params.franchiseId);\n\n        if (!isNaN(params.companyDetailId)) {\n          this.model = await this.companyService.getById(+params.companyDetailId);\n          this.regions = await this.catalogService.getRegionsByCountryId(this.model.countryId);\n          this.cities = await this.catalogService.getCitiesByRegionId(this.model.regionId);\n        }\n        else {\n          this.model.company.parentId = this.companyGroup.companyId;\n          this.model.company.createdOn = new Date();         \n        }\n        this.configureValidationRules();\n\n      }\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n  filterDemo(isDemo: boolean) {  \n    if (!isDemo) {\n      this.model.planId = null;\n      this.model.selectionPlanId = null;\n    }\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(keepEditing);\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.companyService.client.isRequesting;\n  }\n\n  public async save(keepEditing: boolean): Promise<any> {\n    this.logger.info(\"save\");\n    if (!this.model.id) {\n      return await this.companyService.create(this.model)\n        .then(async (response: CompanyDetail) => {\n          this.model.companyId = response.companyId;\n\n          // trigger company edited event\n          this.ea.publish(new CompanyEditedMessage(response.company));\n\n          this.notification.success(\"main.admin.pages.companies.messages.company_added\");\n\n          if (!keepEditing) {\n            return await this.router.navigateToRoute(\"company-groups\");\n          } else {\n            return await this.router.navigateToRoute(\"company-child-router\", { companyGroupId: this.model.company.parentId, companyDetailId: this.model.companyId });\n          }\n\n        }).catch(error => {\n          this.notification.error(error);\n        });\n    } else {\n\n      return await this.companyService.update(this.model)\n        .then(async (response: CompanyDetail) => {\n          this.model.logoUrl = this.model.logoUrl;\n\n          // trigger company edited event\n          // this.logger.debug(\"updated company\", response.company);\n\n          this.ea.publish(new CompanyEditedMessage(response.company));\n\n          this.notification.success(\"main.admin.pages.companies.messages.company_edited\");\n\n          if (!keepEditing) {\n            return await this.router.navigateToRoute(\"company-groups\");\n          }\n\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    }\n  }\n\n  public async filterRegion(countryId: number): Promise<void> {\n    this.model.regionId = null;\n    this.model.cityId = null;\n\n    this.regions = await this.catalogService.getRegionsByCountryId(countryId);\n  }\n\n  public async filterCity(regionId: number): Promise<void> {\n    this.model.cityId = null;\n\n    this.cities = await this.catalogService.getCitiesByRegionId(regionId);\n  }\n\n  public setFile($event: any): void {\n    this.logger.debug(\"setFile\");\n    let file = <File>$event.target.files[0];\n    let fileValidator = FileAcceptValidator.parse(\"image/*\", 1024 * 300);\n    if (fileValidator.isValid(file)) {\n      let reader: FileReader = new FileReader();\n      reader.readAsDataURL(file);\n      reader.onload = () => {\n        var base64data: any = reader.result;\n        this.model.logo = base64data;\n        this.model.logoFileName = file.name;\n        this.model.logoUrl = URL.createObjectURL(file);\n      };\n    }\n    else {\n      this.notification.error(\"main.admin.pages.companies.errors.error_bad_image\");\n    }\n  }\n\n  public unSetFile(): void {\n    this.model.logo = null;\n    this.model.logoFileName = null;\n    this.model.logoUrl = null;\n  }\n}\n","module.exports = \"<template> <require from=../../../../models/companies/companyOrganizationTypeViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2 if.bind=!model.id>${'main.admin.pages.companies.create' & t}</h2> <h2 if.bind=model.id>${model.company.name}</h2> <p> ${'main.admin.pages.companies.info_editing' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-3\\\"> <div class=\\\"row mb-3\\\"> <div class=col> <img if.bind=model.logoUrl class=\\\"img-thumbnail w-50\\\" alt.bind=item.option src.bind=model.logoUrl> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> <div class=custom-file> <input class=custom-file-input id=model.logoFileName type=file accept=image/* change.delegate=setFile($event)> <label class=custom-file-label for=model.logoFileName>${model.logoFileName}</label> </div> <div class=form-group if.bind=model.logoUrl> <button type=button class=\\\"btn btn-link\\\" click.delegate=unSetFile()> ${ 'commands.clear' & t } </button> </div> </div> </div> </div> <div class=\\\"col-12 col-md-9\\\"> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=company.name t=main.admin.pages.companies.name>Name</label> <input type=text value.bind=\\\"model.company.name & validate\\\" class=form-control id=company.name t=[placeholder]main.admin.pages.companies.name> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=company.businessName t=main.admin.pages.companies.business_name>Name</label> <input type=text value.bind=model.company.businessName class=form-control id=company.businessName t=[placeholder]main.admin.pages.companies.business_name> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=economicSector>${'catalogs.economic_sectors.title' & t}</label> <select value.bind=\\\"model.economicSectorId & validate\\\" class=form-control id=economicSector> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of economicSectors\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=organizationType>${'main.admin.pages.companies.organization_type' & t}</label> <select value.bind=\\\"model.organizationType & validate\\\" class=form-control id=organizationType> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of CompanyOrganizationTypes\\\" model.bind=CompanyOrganizationType[option]>${'main.admin.pages.companies.organization_types.' + option & t}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=countryId>${'catalogs.countries.title' & t}</label> <select value.bind=\\\"model.countryId & validate\\\" class=form-control id=countryId change.delegate=\\\"filterRegion(model.countryId, true)\\\"> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of countries\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=regionId>${'catalogs.regions.title' & t}</label> <select value.bind=\\\"model.regionId & validate\\\" class=form-control id=regionId change.delegate=\\\"filterCity(model.regionId, true)\\\"> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of regions\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=cityId>${'catalogs.cities.title' & t}</label> <select value.bind=\\\"model.cityId & validate\\\" class=form-control id=cityId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of cities\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=model.userNumber>${'main.admin.pages.companies.user_number' & t}</label> <input type=text value.bind=\\\"model.userNumber & validate\\\" class=form-control id=model.userNumber t=[placeholder]main.admin.pages.companies.user_number> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.isDemo class=switch checked.bind=model.isDemo change.delegate=filterDemo(model.demo)> <label for=model.isDemo>${'main.admin.pages.companies.demo' & t}</label> </span> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=planId t=main.admin.pages.companies.plan>planId</label> <select value.bind=\\\"model.planId & validate\\\" class=form-control id=planId disabled.bind=!model.isDemo> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of demoPlans\\\" model.bind=option.id>${option.name & t}</option> </select> </div> <div class=form-group> <label for=SelectionPlanId t=main.admin.pages.companies.plan_demo>SelectionPlanId</label> <select value.bind=\\\"model.selectionPlanId & validate\\\" class=form-control id=SelectionPlanId disabled.bind=\\\"!model.isDemo || !model.planId\\\"> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of demoSelectionPlans\\\" model.bind=option.id>${option.name & t}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <i class=material-icons> location_on </i> <label> ${franchise.name} <br/> <small>${'main.admin.pages.franchises.title' & t}</small> </label> </div> <div class=\\\"col-12 col-md-4\\\"> <i class=\\\"material-icons ticon-organizaciones-grupos\\\"> &nbsp; </i> <label> ${companyGroup.company.name} <br/> <small>${'main.admin.pages.company_groups.title' & t}</small> </label> </div> <div class=\\\"col-12 col-md-4\\\"> <i class=material-icons> date_range </i> <label> ${model.company.createdOn | dateFormat} <br/> <small>${'commons.created_on' & t}</small> </label> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=form-actions> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: CompanyCreate\\\" type=submit click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: CompanyCreate\\\" type=submit click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: company-groups;\\\" t=commands.cancel>Cancel</a> </div> </form> </div> </template> \";","import { CoreCompanyService } from 'main/admin/services/companies/core-company-service';\n\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { CompanySettingsService } from '../../services/companies/company-settings-service';\nimport { CompanySettings } from 'models/companies/company-settings';\nimport { Company } from \"models/companies/company\";\nimport { QuestionaryService } from 'main/admin/services/questionaries/questionary-service';\nimport { Questionary } from 'models/questionaries/questionary';\n\n@autoinject()\nexport class CompanySettingsEdit {\n\n  private logger: Logger;\n\n  private franchiseId: number;\n  private companyGroupId: number;\n\n  private company: Company;\n\n  private model: CompanySettings = new CompanySettings();\n  private validationController: ValidationController;\n\n  private competencesQuestionaries: Questionary[] = [];\n\n  constructor(\n    private companySettingsService: CompanySettingsService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private router: Router,\n    private coreCompanyService: CoreCompanyService,\n    private companyQuestionaryService: QuestionaryService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"CompanySettingsEdit\");\n\n  }\n\n  private async activate(params: any): Promise<void> {\n    this.logger.info(\"activate\");\n\n    if (!isNaN(params.companyDetailId) && !isNaN(params.franchiseId) && !isNaN(params.companyGroupId)) {\n      this.franchiseId = +params.franchiseId;\n      this.companyGroupId = +params.comapnyGroupId;\n\n      try {\n\n        this.company = await this.coreCompanyService.getById(+params.companyDetailId);\n\n        this.model = await this.companySettingsService.getById(+params.companyDetailId);\n\n        this.competencesQuestionaries = await this.companyQuestionaryService.getCompetencesQuestionaries();\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n  // public cancel(): void {\n  //   this.logger.info(\"cancel\");\n  //   this.router.parent.navigate(`companies/franchise/${this.franchiseId}/company-groups`);\n  // }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(keepEditing);\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.companySettingsService.client.isRequesting;\n  }\n\n  public async save(keepEditing: boolean): Promise<any> {\n    this.logger.info(\"save\");\n\n    return await this.companySettingsService.update(this.model)\n      .then(async () => {\n        this.notification.success(\"main.admin.pages.companies.messages.company_edited\");\n\n        if (!keepEditing) {\n          return await this.router.navigateToRoute(\"company-groups\");\n        }\n\n      })\n      .catch((error) => {\n        this.notification.error(error);\n      });\n\n  }\n}\n\n","module.exports = \"<template> <div if.bind=!model.companyId> <h2>${'main.admin.pages.companies.title' & t}</h2> <p> ${'main.admin.pages.contacts.notification_new_company' & t} </p> </div> <div class=\\\"content-container row mb-3\\\" if.bind=model.companyId> <form class=content-main> <h2>${company.name} / ${'main.admin.pages.companies.external_activations.title' & t}</h2> <p>${'main.admin.pages.companies.external_activations.info' & t}</p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.hasSuccessFactorsConnection class=switch checked.bind=model.hasSuccessFactorsConnection> <label for=model.hasSuccessFactorsConnection> ${'main.admin.pages.companies.company_settings.has_user_management' & t} </label> <br/> <p>${'main.admin.pages.companies.external_activations.has_sapp_connection.info' & t}</p> </span> </div> </div> </div> <div if.bind=model.hasSuccessFactorsConnection> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=planId t=main.admin.pages.companies.token_url>TokenURL</label> <input type=text value.bind=\\\"model.successFactorsTokenURl & validate\\\" class=form-control id=company.successFactorsTokenURl t=[placeholder]main.admin.pages.companies.token_url> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=planId t=main.admin.pages.companies.client_id>ClientId</label> <input type=text value.bind=\\\"model.successFactorsClientId & validate\\\" class=form-control id=company.successFactorsClientId t=[placeholder]main.admin.pages.companies.client_id> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=planId t=main.admin.pages.companies.client_secret>ClientSecret</label> <input type=text value.bind=\\\"model.successFactorsClientSecret & validate\\\" class=form-control id=company.successFactorsClientSecret t=[placeholder]main.admin.pages.companies.client_secret> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=planId t=main.admin.pages.companies.endpoint_notification>EndPointNotification</label> <input type=text value.bind=\\\"model.successFactorsEndPoint & validate\\\" class=form-control id=company.successFactorsEndPoint t=[placeholder]main.admin.pages.companies.endpoint_notification> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.hasBukConnection class=switch checked.bind=model.hasBukConnection> <label for=model.hasBukConnection> ${'main.admin.pages.companies.company_settings.has_user_management' & t} </label> <br/> <p>${'main.admin.pages.companies.external_activations.has_buk_connection.info' & t}</p> </span> </div> </div> </div> <div if.bind=model.hasBukConnection> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=planId t=main.admin.pages.companies.token_buk>Token Buk</label> <input type=text value.bind=\\\"model.bukTokenConnection & validate\\\" class=form-control id=company.bukToken t=[placeholder]main.admin.pages.companies.token_buk> </div> <div class=form-group> <label for=planId t=main.admin.pages.companies.url_buk>URL Buk</label> <input type=text value.bind=\\\"model.urlBukConnection & validate\\\" class=form-control id=company.urlBuk t=[placeholder]main.admin.pages.companies.url_buk> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.hasHiringRoomConnection class=switch checked.bind=model.hasHiringRoomConnection> <label for=model.hasHiringRoomConnection> ${'main.admin.pages.companies.external_activations.has_hiringroom_connection' & t} </label> <br/> <p>${'main.admin.pages.companies.external_activations.has_hiringroom_connection.info' & t}</p> </span> </div> </div> </div> <div if.bind=model.hasHiringRoomConnection> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=hiringRoomClientId t=main.admin.pages.companies.hiringroom_client_id>Client ID HiringRoom</label> <input type=text value.bind=\\\"model.hiringRoomClientId & validate\\\" class=form-control id=company.hiringRoomClientId t=[placeholder]main.admin.pages.companies.hiringroom_client_id> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=hiringRoomClientAccount t=main.admin.pages.companies.hiringroom_client_account>Client Account</label> <input type=text value.bind=\\\"model.hiringRoomClientAccount & validate\\\" class=form-control id=company.hiringRoomClientAccount t=[placeholder]main.admin.pages.companies.hiringroom_client_account> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.hasKactusConnection class=switch checked.bind=model.hasKactusConnection> <label for=model.hasKactusConnection> ${'main.admin.pages.companies.external_activations.has_Kactus_connection' & t} </label> <br/> <p>${'main.admin.pages.companies.external_activations.has_Kactus_connection.check' & t}</p> </span> </div> </div> <div class=col-12 if.bind=model.hasKactusConnection> <br/> <p>${'main.admin.pages.companies.external_activations.has_Kactus_connection.info' & t}</p> </div> </div> <div if.bind=model.hasKactusConnection> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=KactusClientId t=main.admin.pages.companies.kactus_client_id>${'main.admin.pages.companies.kactus_client_id' & t}</label> <input type=text value.bind=\\\"model.kactusClientId & validate\\\" class=form-control id=company.kactusClientId t=[placeholder]main.admin.pages.companies.kactus_client_id> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=KactusPassword t=main.admin.pages.companies.kactus_password>${'main.admin.pages.companies.kactus_password' & t}</label> <input type=text value.bind=\\\"model.kactusPassword & validate\\\" class=form-control id=company.kactusPassword t=[placeholder]main.admin.pages.companies.kactus_password> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=KactusCompanyDomain t=main.admin.pages.companies.kactus_company_domain>${'main.admin.pages.companies.kactus_company_domain' & t}</label> <input type=text value.bind=\\\"model.kactusCompanyDomain & validate\\\" class=form-control id=company.kactusCompanyDomain t=[placeholder]main.admin.pages.companies.kactus_company_domain> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=KactusTokenUrl t=main.admin.pages.companies.kactus_token_url>${'main.admin.pages.companies.kactus_token_url' & t}</label> <input type=text value.bind=\\\"model.kactusTokenUrl & validate\\\" class=form-control id=company.kactusTokenUrl t=[placeholder]main.admin.pages.companies.kactus_token_url> </div> </div> </div> </div> <div class=form-actions> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: CompanyCreate\\\" type=submit click.delegate=submit(true) disabled.bind=!canSave> ${'commands.save_and_continue' & t} </button> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: CompanyCreate\\\" type=submit click.delegate=submit(false) disabled.bind=!canSave> ${'commands.save' & t} </button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: company-groups;\\\" t=commands.cancel>Cancel</a> </div> </form> </div> </template> \";","\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { PasswordPolicyService } from '../../services/companies/password-policy-service';\nimport { PasswordPolicy } from 'models/companies/password-policy';\nimport { Company } from \"models/companies/company\";\nimport { CoreCompanyService } from \"main/admin/services/companies/core-company-service\";\n\n@autoinject()\nexport class CompanyPasswordPolicyEdit {\n\n  private logger: Logger;\n\n  private company: Company;\n\n  private model: PasswordPolicy = new PasswordPolicy();\n  private validationController: ValidationController;\n\n  private isMaster: boolean = false;\n\n  constructor(\n    private passwordPolicyService: PasswordPolicyService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private router: Router,\n    private coreCompanyService: CoreCompanyService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"CompanyPasswordPolicyEdit\");\n\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"requiredLength\").displayName(\"main.admin.pages.companies.password_policy.requiredLength\").matches(/^[0-9]*$/).required()\n      .ensure(\"lockoutMaxFailedAccessAttempts\").displayName(\"main.admin.pages.companies.password_policy.lockoutMaxFailedAccessAttempts\").matches(/^[0-9]*$/).required()\n      .ensure(\"passwordChangingPeriod\").displayName(\"main.admin.pages.companies.password_policy.passwordChangingPeriod\").required()\n      .when(x => this.model.requirePasswordChanging)\n      .on(this.model);\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n\n    this.isMaster = routeConfig.navModel.router.baseUrl.indexOf(\"companies-master\") > 0;\n\n    if (!isNaN(params.companyDetailId)) {\n\n      try {\n\n        this.company = await this.coreCompanyService.getById(+params.companyDetailId);\n\n        this.model = await this.passwordPolicyService.getById(+params.companyDetailId);\n        \n        this.configureValidationRules();\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(keepEditing);\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.passwordPolicyService.client.isRequesting;\n  }\n\n  public async save(keepEditing: boolean): Promise<any> {\n    this.logger.info(\"save\");\n    return await this.passwordPolicyService.update(this.model)\n      .then(async () => {\n        this.notification.success(\"main.admin.pages.companies.messages.company_edited\");\n\n        if (!keepEditing) {\n          if (!this.isMaster) {\n            return await this.router.navigateToRoute(\"company-groups\");\n          } else {\n            return await this.router.navigateToRoute(\"company-group-master-list-selector\");\n          }\n        }\n\n      })\n      .catch((error) => {\n        this.notification.error(error);\n      });\n  }\n\n  public async cancel(){\n    if (!this.isMaster) {\n      return await this.router.navigateToRoute(\"company-groups\");\n    } else {\n      return await this.router.navigateToRoute(\"company-group-master-list-selector\");\n    }\n  }\n\n  public filterLockout(hasChanged: boolean): void {\n    if (!hasChanged) {\n      this.model.lockoutMaxFailedAccessAttempts = 0;\n    } else {\n      this.model.lockoutMaxFailedAccessAttempts = 5;\n    }\n  }\n\n  public filterChangingPeriod(hasChanged: boolean): void {\n    if (!hasChanged) {\n      this.model.passwordChangingPeriod = null;\n    }\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../models/companies/passwordChangingPeriodViewEngineHooks></require> <div if.bind=!model.companyId> <h2>${'main.admin.pages.companies.title' & t}</h2> <p> ${'main.admin.pages.contacts.notification_new_company' & t} </p> </div> <div class=\\\"content-container row mb-3\\\" if.bind=model.companyId> <form class=content-main> <h2>${company.name} / ${'main.admin.pages.companies.password_policy.title' & t}</h2> <p>${'main.admin.pages.companies.password_policy.info' & t}</p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.requiredLength>${'main.admin.pages.companies.password_policy.requiredLength' & t}</label> <input type=number value.bind=\\\"model.requiredLength & validate\\\" class=form-control id=model.requiredLength t=[placeholder]main.admin.pages.companies.password_policy.requiredLength> </div> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.requireLowercase class=switch model.bind=model.requireLowercase checked.bind=model.requireLowercase> <label for=model.requireLowercase>${'main.admin.pages.companies.password_policy.requireLowercase' & t}</label> </span> </div> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.requireUppercase class=switch model.bind=model.requireUppercase checked.bind=model.requireUppercase> <label for=model.requireUppercase>${'main.admin.pages.companies.password_policy.requireUppercase' & t}</label> </span> </div> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.requireDigit class=switch model.bind=model.requireDigit checked.bind=model.requireDigit> <label for=model.requireDigit>${'main.admin.pages.companies.password_policy.requireDigit' & t}</label> </span> </div> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.requireNonAlphanumeric class=switch model.bind=model.requireNonAlphanumeric checked.bind=model.requireNonAlphanumeric> <label for=model.requireNonAlphanumeric>${'main.admin.pages.companies.password_policy.requireNonAlphanumeric' & t}</label> </span> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.requirePasswordChanging class=switch model.bind=model.requirePasswordChanging change.delegate=filterChangingPeriod(model.requirePasswordChanging) checked.bind=model.requirePasswordChanging> <label for=model.requirePasswordChanging>${'main.admin.pages.companies.password_policy.requirePasswordChanging' & t}</label> </span> <select value.bind=\\\"model.passwordChangingPeriod & validate\\\" class=form-control id=passwordChangingPeriod disabled.bind=!model.requirePasswordChanging required.bind=model.requirePasswordChanging> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of PasswordChangingPeriods\\\" model.bind=PasswordChangingPeriod[option]> ${'main.admin.pages.companies.password_policy.passwor_changing_period.' + option & t}</option> </select> </div> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.lockoutEnabled class=switch model.bind=model.lockoutEnabled checked.bind=model.lockoutEnabled change.delegate=filterLockout(model.lockoutEnabled)> <label for=model.lockoutEnabled>${'main.admin.pages.companies.password_policy.lockoutEnabled' & t}</label> </span> <input type=number disabled.bind=!model.lockoutEnabled value.bind=\\\"model.lockoutMaxFailedAccessAttempts & validate\\\" class=form-control id=model.lockoutMaxFailedAccessAttempts t=[placeholder]main.admin.pages.companies.password_policy.lockoutMaxFailedAccessAttempts> </div> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.validateLastFivePasswords class=switch model.bind=model.validateLastFivePasswords checked.bind=model.validateLastFivePasswords> <label for=model.validateLastFivePasswords>${'main.admin.pages.companies.password_policy.validateLastFivePasswords' & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=form-actions> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: PasswordPolicyUpdate\\\" type=submit click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: PasswordPolicyUpdate\\\" type=submit click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=cancel() t=commands.cancel>Cancel</button> </div> </form> </div> </template> \";","import { CoreCompanyService } from 'main/admin/services/companies/core-company-service';\n\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { CompanySettingsService } from '../../services/companies/company-settings-service';\nimport { CompanySettings } from 'models/companies/company-settings';\nimport { Company } from \"models/companies/company\";\nimport { QuestionaryService } from 'main/admin/services/questionaries/questionary-service';\nimport { Questionary } from 'models/questionaries/questionary';\n\n@autoinject()\nexport class CompanySettingsEdit {\n\n  private logger: Logger;\n\n  private franchiseId: number;\n  private companyGroupId: number;\n\n  private company: Company;\n\n  private model: CompanySettings = new CompanySettings();\n  private validationController: ValidationController;\n\n  private competencesQuestionaries: Questionary[] = [];\n\n  constructor(\n    private companySettingsService: CompanySettingsService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private router: Router,\n    private coreCompanyService: CoreCompanyService,\n    private companyQuestionaryService: QuestionaryService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"CompanySettingsEdit\");\n\n  }\n\n  private async activate(params: any): Promise<void> {\n    this.logger.info(\"activate\");\n\n    if (!isNaN(params.companyDetailId) && !isNaN(params.franchiseId) && !isNaN(params.companyGroupId)) {\n      this.franchiseId = +params.franchiseId;\n      this.companyGroupId = +params.comapnyGroupId;\n\n      try {\n\n        this.company = await this.coreCompanyService.getById(+params.companyDetailId);\n\n        this.model = await this.companySettingsService.getById(+params.companyDetailId);\n\n        this.competencesQuestionaries = await this.companyQuestionaryService.getCompetencesQuestionaries();\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n  // public cancel(): void {\n  //   this.logger.info(\"cancel\");\n  //   this.router.parent.navigate(`companies/franchise/${this.franchiseId}/company-groups`);\n  // }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(keepEditing);\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.companySettingsService.client.isRequesting;\n  }\n\n  public async save(keepEditing: boolean): Promise<any> {\n    this.logger.info(\"save\");\n\n    return await this.companySettingsService.update(this.model)\n      .then(async () => {\n        this.notification.success(\"main.admin.pages.companies.messages.company_edited\");\n\n        if (!keepEditing) {\n          return await this.router.navigateToRoute(\"company-groups\");\n        }\n\n      })\n      .catch((error) => {\n        this.notification.error(error);\n      });\n\n  }\n}\n\n","module.exports = \"<template> <div if.bind=!model.companyId> <h2>${'main.admin.pages.companies.title' & t}</h2> <p> ${'main.admin.pages.contacts.notification_new_company' & t} </p> </div> <div class=\\\"content-container row mb-3\\\" if.bind=model.companyId> <form class=content-main> <h2>${company.name} / ${'main.admin.pages.companies.company_settings.title' & t}</h2> <p>${'main.admin.pages.companies.company_settings.info' & t}</p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.hasUserManagement class=switch checked.bind=model.hasUserManagement> <label for=model.hasUserManagement> ${'main.admin.pages.companies.company_settings.has_user_management' & t} </label> <br/> <p>${'main.admin.pages.companies.company_settings.has_user_management.info' & t}</p> </span> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.hasGroupManagement class=switch checked.bind=model.hasGroupManagement> <label for=model.hasGroupManagement> ${'main.admin.pages.companies.company_settings.has_group_management' & t} </label> <br/> <p>${'main.admin.pages.companies.company_settings.has_group_management.info' & t}</p> </span> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.hasTestControl class=switch checked.bind=model.hasTestControl> <label for=model.hasTestControl> </label> <br/> <p>${'main.admin.pages.companies.company_settings.has_test_control' & t}</p> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.hasPreferenceManagement class=switch checked.bind=model.hasPreferenceManagement> <label for=model.hasPreferenceManagement> ${'main.admin.pages.companies.company_settings.has_preference_management' & t} </label> <br/> <p>${'main.admin.pages.companies.company_settings.has_preference_management.info' & t}</p> </span> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.hasProfileManagement class=switch checked.bind=model.hasProfileManagement> <label for=model.hasProfileManagement> ${'main.admin.pages.companies.company_settings.has_profile_management' & t} </label> <br/> <p>${'main.admin.pages.companies.company_settings.has_profile_management.info' & t}</p> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.hasNotificationManagement class=switch checked.bind=model.hasNotificationManagement> <label for=model.hasNotificationManagement> ${'main.admin.pages.companies.company_settings.has_notification_management' & t} </label> <br/> <p>${'main.admin.pages.companies.company_settings.has_notification_management.info' & t}</p> </span> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.hasTalentManagement class=switch checked.bind=model.hasTalentManagement> <label for=model.hasTalentManagement> ${'main.admin.pages.companies.company_settings.has_talent_management' & t} </label> <br/> <p>${'main.admin.pages.companies.company_settings.has_talent_management.info' & t}</p> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=planId t=main.admin.pages.companies.competences-questionaries>planId</label> <select value.bind=\\\"model.competencesQuestionaryId & validate\\\" class=form-control id=questionaryId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of competencesQuestionaries\\\" model.bind=option.id>${option.name & t}</option> </select> </div> </div> </div> <div class=form-actions> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: CompanyCreate\\\" type=submit click.delegate=submit(true) disabled.bind=!canSave> ${'commands.save_and_continue' & t} </button> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: CompanyCreate\\\" type=submit click.delegate=submit(false) disabled.bind=!canSave> ${'commands.save' & t} </button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: company-groups;\\\" t=commands.cancel>Cancel</a> </div> </form> </div> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { I18N } from \"aurelia-i18n\";\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\n\n@autoinject\nexport class CompanyGroupMasterChildRouter {\n\n  private logger: Logger;\n\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService) {\n\n    this.logger = LogManager.getLogger(\"CompanyGroupMasterChildRouter\");\n  }\n\n  public configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./company-group-master-view\"),\n        name: \"company-group-master-view\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.company_groups.company_group\"),\n      },\n\n      {\n        route: \"agreements\",\n        moduleId: PLATFORM.moduleName(\"../agreements/agreement-list-child-router\"),\n        name: \"company-groups-master-agreements\",\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.ServiceAgreementView),\n        title: this.i18n.tr(\"main.admin.pages.agreements.title\"),\n      },\n\n      // {\n      //   route: \"contacts\",\n      //   moduleId: PLATFORM.moduleName(\"../contacts/contact-list\"),\n      //   name: \"company-group-contacts\",\n      //   nav: this.authorizationService.isAuthorized(PredefinedPermissions.CoreGroupUpdate),\n      //   title: this.i18n.tr(\"main.admin.pages.contacts.title\"),\n      // },\n\n      // {\n      //   route: \"master-users\",\n      //   moduleId: PLATFORM.moduleName(\"../master-users/master-user-list-child-router\"),\n      //   name: \"company-groups-master-users\",\n      //   title: this.i18n.tr(\"main.admin.pages.master_users.title\"),\n      //   nav: this.authorizationService.isAuthorized(PredefinedPermissions.MasterUserView),\n      // },\n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class CompanyGroupMasterListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"CompanyGroupMasterListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./company-group-master-list-selector\"),\n        name: \"company-group-master-list-selector\",\n      },\n\n      // {\n      //   route: \"company/:companyDetailId\",\n      //   moduleId: PLATFORM.moduleName(\"../companies-master/company-master-child-router\"),\n      //   name: \"company-master-child-router\",\n      // },\n\n      {\n        route: \"company-group/:companyGroupId\",\n        moduleId: PLATFORM.moduleName(\"./company-group-master-child-router\"),\n        name: \"company-group-master-child-router\",\n      },\n\n      {\n        route: \"company-group/:companyGroupId/company/:companyDetailId\",\n        moduleId: PLATFORM.moduleName(\"../companies-master/company-master-child-router\"),\n        name: \"company-master-child-router\",\n      },\n      \n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","import { SessionService } from 'common/services/session-service';\nimport { Router } from \"aurelia-router\";\nimport { autoinject, LogManager, bindable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { Company } from \"models/companies/company\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Role } from \"models/security/role\";\nimport { CoreCompanyService } from \"../../services/companies/core-company-service\";\nimport { CompanyGroupMasterService } from \"../../services/companies/company-group-master-service\";\nimport $ from 'jquery';\n\n\n@autoinject()\nexport class CompanyGroupMasterListSelector {\n\n  private logger: Logger;\n\n  // @bindable\n  // private routeName: string;\n\n  // @bindable\n  // private companyParam: string;\n\n  private masterFranchises: Company[] = [];\n  private franchises: Company[] = [];\n  private companies: Company[] = [];\n\n  private masterFranchiseId: number;\n  private franchiseId: number;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  // private user: User = null;\n\n  constructor(\n    private sessionService: SessionService,\n    private coreCompanyService: CoreCompanyService,\n    private companyGroupMasterService: CompanyGroupMasterService,\n    private notification: Notification,\n    private router: Router) {\n\n    this.logger = LogManager.getLogger(\"CompanyListSelector\");\n  }\n\n  private async attached(): Promise<any> {\n    //arrow\n    $('.company-accordion').on('click', function () {\n      var button = $(this).find('.btn[data-toggle]');\n      var header = $(this).find('.card-header');\n      if (header.length && button.length && button.hasClass('collapsed')) {\n        header.removeClass('collapsed');\n      } else {\n        header.addClass('collapsed');\n      }\n    });\n\n    // this.user = await this.sessionService.getUser();\n    // if (this.user) {\n    try {\n      // const companies = \n      this.companies = await this.coreCompanyService.getAll();\n      // if (this.companies.length === 1) {\n      //   return await this.router.navigateToRoute(\"main-child-router\", { companyId: this.companies[0].id });\n      // }\n      this.franchises = this.companies.filter(x => x.roleId === Role.Franchise);\n      // this.logger.debug(\"franchises\", this.franchises);\n      // has franchises\n      if (this.franchises.length > 0) {\n        // default franchsie\n        this.franchiseId = this.franchises[0].id;\n        this.masterFranchises = this.companies.filter(x => x.roleId === Role.MasterFranchise);\n        // this.logger.debug(\"masterFranchises\", this.masterFranchises);\n        // has master franchsies\n        if (this.masterFranchises.length > 0) {\n          this.masterFranchiseId = this.masterFranchises[0].id;\n        }\n        return await this.databind();\n\n      } else {\n        const companyGroups = this.companies.filter(x => x.roleId === Role.Master);\n        \n        if (companyGroups.length > 0) {\n          this.franchiseId = companyGroups[0].parentId;\n          return await this.databind();\n        }\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n    // }\n  }\n\n  private async databind(): Promise<void> {\n    // this.logger.debug(\"databind\");\n    if (this.franchiseId) {\n      try {\n        this.parameters.search.SearchAll = false;\n        const response = await this.companyGroupMasterService.list(this.franchiseId, this.parameters);\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    // this.logger.info(\"refreshing\");\n    let search = this.parameters.search.Query;\n\n    try {\n      const hasSearchQuery = search != null && search.trim() !== '';\n      this.parameters.search.SearchAll = hasSearchQuery;\n\n      const response = await this.companyGroupMasterService.list(this.franchiseId, this.parameters);\n\n      if (hasSearchQuery && response.totalRecords > 0 && response.data && response.data.length > 0) {\n        const hasResultsInCurrent = response.data.some(item => item.company.parentId === this.franchiseId);\n\n        if (!hasResultsInCurrent) {\n          const firstResultFranchiseId = response.data[0].company.parentId;\n          const firstResultFranchise = this.franchises.find(f => f.id === firstResultFranchiseId);\n\n          if (firstResultFranchise) {\n            if (firstResultFranchise.parentId !== this.masterFranchiseId) {\n              this.masterFranchiseId = firstResultFranchise.parentId;\n            }\n            this.franchiseId = firstResultFranchise.id;\n          }\n        }\n      }\n\n      return response;\n    }\n    catch (error) {\n      return this.notification.error(error);\n    }\n  }\n\n  private async masterFranchiseChanged(): Promise<any> {\n    this.parameters.tableData = [];\n    this.parameters.totalRecords = 0;\n    const visibleFranchises = this.franchises.filter(f => f.parentId === this.masterFranchiseId);\n    if (visibleFranchises.length > 0) {\n      this.franchiseId = visibleFranchises[0].id;\n      return await this.databind();\n    }\n  }\n\n  private async selectFranshise(franchiseId: number): Promise<any> {\n    // this.logger.debug(\"selectFranshise\", franchiseId);\n    this.franchiseId = franchiseId;\n    return await this.databind();\n  }\n\n  // private async select(companyId: number): Promise<any> {\n  //   // this.logger.debug(\"selected\", companyId);\n  //   switch (this.routeName) {\n  //     case 'main-child-router':\n  //       return await this.router.navigateToRoute(this.routeName, { companyId: companyId });\n  //     case 'company-master-child-router':\n  //       return await this.router.navigateToRoute(this.routeName, { companyDetailId: companyId });\n  //     default:\n  //       break;\n  //   }\n\n  // }\n\n}\n","module.exports = \"<template> <h2 t=main.admin.pages.company_groups.title>Company groups</h2> <section class=au-animate> <div class=\\\"row mb-3\\\"> <div class=col-12> <p>${'main.admin.pages.company_list_selector.info' & t}</p> </div> </div> <hr/> <div class=\\\"row mb-3 au-stagger\\\"> <div if.bind=\\\"franchises.length > 0\\\" class=\\\"col-12 col-md-2 mb-3\\\"> <div if.bind=\\\"masterFranchises.length > 1\\\" class=row> <div class=col-12> <div class=form-group> <label for=masterFranchiseId>${'main.admin.pages.company_groups.master_franchise' & t}</label> <select value.bind=masterFranchiseId change.delegate=masterFranchiseChanged() class=form-control id=masterFranchiseId> <option repeat.for=\\\"option of masterFranchises\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> </div> <div class=row> <div class=col-12> <div class=\\\"nav flex-column nav-pills\\\" id=v-pills-tab role=tablist aria-orientation=vertical> <a repeat.for=\\\"franchise of franchises | filter:'parentId':masterFranchiseId\\\" href=# class=\\\"nav-link ${franchise.id == franchiseId ? 'active' : ''} au-animate\\\" click.delegate=selectFranshise(franchise.id)> <h5 class=mb-1>${franchise.name}</h5> <p class=mb-1>${franchise.bussinesName}</p> </a> </div> </div> </div> </div> <div class=\\\"col-12 col-md-10\\\"> <div class=\\\"row mb-3 align-items-center m-0\\\"> <div class=\\\"col-12 col-md-6\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-sm-auto\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3 m-0\\\"> <div class=col-12> <div class=company-accordion ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <div virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext) class=card> <div class=card-header> <div class=\\\"row mb-1\\\"> <div class=col-9> <h5 class=mb-0> <a class=\\\"btn btn-link\\\" route-href=\\\"route: company-group-master-child-router; params.bind: { companyGroupId: item.companyId}\\\" title.bind=\\\"'commands.edit' & t\\\"> ${item.company.name} </a> </h5> </div> </div> <div id=collapse_${$index}> <div class=card-body> <div class=row> <div class=col-12> <ul class=\\\"list-group list-group-flush\\\"> <li repeat.for=\\\"children of item.companies\\\" class=\\\"list-group-item justify-content-between au-animate\\\"> <a class=\\\"btn btn-link\\\" global-permission-show=\\\"can: CompanyMasterView\\\" route-href=\\\"route: company-master-child-router; params.bind: { companyGroupId: children.parentId, companyDetailId: children.id}\\\" title.bind=\\\"'commands.edit' & t\\\"> ${children.name} </a> </li> </ul> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </section> </template> \";","import { CoreCompanyService } from '../../services/companies/core-company-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { Company } from 'models/companies/company';\nimport { CompanyGroupMasterService } from 'main/admin/services/companies/company-group-master-service';\nimport { CompanyGroupMaster } from 'models/companies/company-group-master';\n\n\n@autoinject()\nexport class CompanyGroupMasterView {\n\n  private logger: Logger;\n  private model: CompanyGroupMaster = new CompanyGroupMaster();\n  private franchise: Company;\n\n  constructor(\n    private coreCompanyService: CoreCompanyService,\n    private companyGroupMasterService: CompanyGroupMasterService,\n    private notification: Notification) {\n\n\n    this.logger = LogManager.getLogger(\"CompanyGroupMasterView\");\n\n  }\n\n  private async activate(params: any): Promise<void> {\n    this.logger.info(\"activate\");\n\n    try {\n\n      if (!isNaN(params.companyGroupId)) {\n        this.model = await this.companyGroupMasterService.getById(+params.companyGroupId);\n      }\n\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n}\n","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2 if.bind=!model.id>${'main.admin.pages.company_groups.create' & t}</h2> <h2 if.bind=model.id>${model.company.name}</h2> <p> ${'main.admin.pages.company_groups.info_editing' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div if.bind=franchise class=col-4> <i class=material-icons> location_on </i> <label> ${franchise.name} <br/> <small>${'main.admin.pages.franchises.title' & t}</small> </label> </div> <div class=col-4> <i class=material-icons> date_range </i> <label> ${model.company.createdOn | dateFormat} <br/> <small>${'main.admin.pages.company_groups.creation_date' & t}</small> </label> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label> ${model.company.name} <br/> <small>${'main.admin.pages.company_groups.name' & t}</small> </label> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label> ${model.company.businessName} <br/> <small>${'main.admin.pages.company_groups.business_name' & t}</small> </label> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label> ${model.economicSectorName} <br/> <small>${'catalogs.economic_sectors.title' & t}</small> </label> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label> ${model.countryName} <br/> <small>${'catalogs.countries.title' & t}</small> </label> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label> ${model.regionName} <br/> <small>${'catalogs.regions.title' & t}</small> </label> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label> ${model.cityName} <br/> <small>${'catalogs.cities.title' & t}</small> </label> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: company-group-master-list-selector;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </div> </template> \";","import { Router } from \"aurelia-router\";\nimport { autoinject, LogManager, bindable, Disposable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { Company } from \"models/companies/company\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Role } from \"models/security/role\";\nimport { CompanyGroupMasterService } from \"../../services/companies/company-group-master-service\";\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\nimport { EventAggregator } from 'aurelia-event-aggregator';\nimport { CompaniesLoadedMessage } from 'messages/companiesLoadedMessage';\n\nimport $ from \"jquery\";\n\n@autoinject()\nexport class CompanyListSelector {\n\n  private logger: Logger;\n\n  @bindable\n  private routeName: string;\n\n  @bindable\n  private companyParam: string;\n\n  private masterFranchises: Company[] = [];\n  private franchises: Company[] = [];\n  private companies: Company[] = [];\n\n  private masterFranchiseId: number;\n  private franchiseId: number;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  // private user: User = null;\n\n  private state: State;\n\n  private subscriptions: Disposable[] = [];\n\n  constructor(\n    // private sessionService: SessionService,\n    // private coreCompanyService: CoreCompanyService,\n    private store: StoreService,\n    private companyGroupMasterService: CompanyGroupMasterService,\n    private notification: Notification,\n    private router: Router,\n    private ea: EventAggregator) {\n\n    this.logger = LogManager.getLogger(\"CompanyListSelector\");\n\n    this.state = this.store.state;\n\n    this.subscriptions.push(this.ea.subscribe(CompaniesLoadedMessage, this.init.bind(this)));\n  }\n\n  private async attached(): Promise<any> {\n    // arrow\n    $('.company-accordion').on('click', function () {\n      var button = $(this).find('.btn[data-toggle]');\n      var header = $(this).find('.card-header');\n      if (header.length && button.length && button.hasClass('collapsed')) {\n        header.removeClass('collapsed');\n      } else {\n        header.addClass('collapsed');\n      }\n    });\n\n\n    await this.init();\n\n\n\n    // this.user = await this.sessionService.getUser();\n    // if (this.user) {\n    // try {\n    //   // const companies = \n    //   // this.companies = await this.coreCompanyService.getAll();\n\n    //   this.companies = this.state.companies;\n\n    //   if (this.companies.length === 1) {\n    //     return await this.router.navigateToRoute(\"main-child-router\", { companyId: this.companies[0].id });\n    //   }\n\n    //   this.franchises = this.companies.filter(x => x.roleId === Role.Franchise);\n    //   // this.logger.debug(\"franchises\", this.franchises);\n    //   // has franchises\n    //   if (this.franchises.length > 0) {\n    //     // default franchsie\n    //     this.franchiseId = this.franchises[0].id;\n    //     this.masterFranchises = this.companies.filter(x => x.roleId === Role.MasterFranchise);\n    //     // this.logger.debug(\"masterFranchises\", this.masterFranchises);\n    //     // has master franchsies\n    //     if (this.masterFranchises.length > 0) {\n    //       this.masterFranchiseId = this.masterFranchises[0].id;\n    //     }\n    //     return await this.databind();\n    //   }\n    //   else {\n    //     const companyGroups = this.companies.filter(x => x.roleId === Role.Master);\n    //     if (companyGroups.length > 0) {\n    //       this.franchiseId = companyGroups[0].parentId;\n    //       return await this.databind();\n    //     }\n    //   }\n    // }\n    // catch (error) {\n    //   this.notification.error(error);\n    // }\n    // }\n  }\n\n  public unbind() {\n    this.subscriptions.forEach(x => x.dispose());\n  }\n\n  private async init() {\n    this.parameters.search.Query = sessionStorage.getItem('companyListSearch');\n    if (this.state.companies.length === 0) {\n      return;\n    }\n\n    // this.logger.debug(\"init\");\n\n    try {\n      // const companies = \n      // this.companies = await this.coreCompanyService.getAll();\n\n      this.companies = this.state.companies;\n\n      if (this.companies.length === 1) {\n        return await this.router.navigateToRoute(\"main-child-router\", { companyId: this.companies[0].id });\n      }\n\n      this.franchises = this.companies.filter(x => x.roleId === Role.Franchise);\n      //  this.logger.debug(\"franchises\", this.franchises);\n      // has franchises\n      if (this.franchises.length > 0) {\n        // default franchsie\n        this.franchiseId = this.franchises[0].id;\n        this.masterFranchises = this.companies.filter(x => x.roleId === Role.MasterFranchise);\n        // this.logger.debug(\"masterFranchises\", this.masterFranchises);\n        // has master franchsies\n        if (this.masterFranchises.length > 0) {\n          this.masterFranchiseId = this.masterFranchises[0].id;\n        }\n        return await this.databind();\n      } else {\n        const companyGroups = this.companies.filter(x => x.roleId === Role.Master);\n        if (companyGroups.length > 0) {\n          this.franchiseId = companyGroups[0].parentId;\n          return await this.databind();\n        }\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async databind(): Promise<any> {\n    // this.logger.debug(\"databind\");\n    if (this.franchiseId) {\n      try {\n        this.parameters.search.SearchAll = false;\n        const response = await this.companyGroupMasterService.list(this.franchiseId, this.parameters);\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    // this.logger.info(\"refreshing\");\n    let search = this.parameters.search.Query;\n    sessionStorage.setItem('companyListSearch', search == null ? '' : search);\n\n    try {\n      const hasSearchQuery = search != null && search.trim() !== '';\n      this.parameters.search.SearchAll = hasSearchQuery;\n\n      const response = await this.companyGroupMasterService.list(this.franchiseId, this.parameters);\n\n      if (hasSearchQuery && response.totalRecords > 0 && response.data && response.data.length > 0) {\n        // Check if there are results in the current franchise\n        const hasResultsInCurrent = response.data.some(item => item.company.parentId === this.franchiseId);\n\n        if (!hasResultsInCurrent) {\n          // The first result's franchise\n          const firstResultFranchiseId = response.data[0].company.parentId;\n          const firstResultFranchise = this.franchises.find(f => f.id === firstResultFranchiseId);\n\n          if (firstResultFranchise) {\n            // If the franchise belongs to a different master franchise, update the master select\n            if (firstResultFranchise.parentId !== this.masterFranchiseId) {\n              this.masterFranchiseId = firstResultFranchise.parentId;\n            }\n            this.franchiseId = firstResultFranchise.id;\n          }\n        }\n      }\n\n      return response;\n    }\n    catch (error) {\n      return this.notification.error(error);\n    }\n  }\n\n  private async masterFranchiseChanged(): Promise<any> {\n    this.parameters.tableData = [];\n    this.parameters.totalRecords = 0;\n    const visibleFranchises = this.franchises.filter(f => f.parentId === this.masterFranchiseId);\n    if (visibleFranchises.length > 0) {\n      this.franchiseId = visibleFranchises[0].id;\n      return await this.databind();\n    }\n  }\n\n  private async selectFranshise(franchiseId: number): Promise<any> {\n    // this.logger.debug(\"selectFranshise\", franchiseId);\n    this.franchiseId = franchiseId;\n    return await this.databind();\n  }\n\n  private async select(companyId: number): Promise<any> {\n    // this.logger.debug(\"selected\", companyId);\n    switch (this.routeName) {\n      case 'main-child-router':\n        return await this.router.navigateToRoute(this.routeName, { companyId: companyId });\n      case 'company-master-child-router':\n        return await this.router.navigateToRoute(this.routeName, { companyDetailId: companyId });\n      default:\n        break;\n    }\n\n  }\n\n}\n","module.exports = \"<template> <h2 t=main.admin.pages.company_groups.title>Company groups</h2> <section class=au-animate> <div class=\\\"row mb-3\\\"> <div class=col-12> <p>${'main.admin.pages.company_list_selector.info' & t}</p> </div> </div> <hr/> <div class=\\\"row mb-3 au-stagger\\\"> <div if.bind=\\\"franchises.length > 0\\\" class=\\\"col-12 col-md-2 mb-3\\\"> <div if.bind=\\\"masterFranchises.length > 1\\\" class=row> <div class=col-12> <div class=form-group> <label for=masterFranchiseId>${'main.admin.pages.company_groups.master_franchise' & t}</label> <select value.bind=masterFranchiseId change.delegate=masterFranchiseChanged() class=form-control id=masterFranchiseId> <option repeat.for=\\\"option of masterFranchises\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> </div> <div class=row> <div class=col-12> <div class=\\\"nav flex-column nav-pills\\\" id=v-pills-tab role=tablist aria-orientation=vertical> <a repeat.for=\\\"franchise of franchises | filter:'parentId':masterFranchiseId\\\" href=# class=\\\"nav-link ${franchise.id == franchiseId ? 'active' : ''} au-animate\\\" click.delegate=selectFranshise(franchise.id)> <h5 class=mb-1>${franchise.name}</h5> <p class=mb-1>${franchise.bussinesName}</p> </a> </div> </div> </div> </div> <div class=\\\"col-12 col-md-10\\\"> <div class=\\\"row mb-3 align-items-center m-0\\\"> <div class=\\\"col-12 col-md-6\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-sm-auto\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3 m-0\\\"> <div class=col-12> <div class=\\\"accordion company-accordion\\\" id=accordion ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <div virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext) class=card> <div class=card-header id=heading_${$index}> <div class=\\\"row mb-1\\\"> <div class=\\\"col-9 text-truncate\\\"> <h5 class=mb-0> <button class=\\\"btn btn-link\\\" data-toggle=collapse data-target=#collapse_${$index} aria-expanded=true aria-controls=collapse_${$index} title=${item.company.name}> ${item.company.name} </button> </h5> </div> </div> <div id=collapse_${$index} class=\\\"collapse show\\\" aria-labelledby=heading_${$index} data-parent=#accordion> <div class=card-body> <div class=row> <div class=\\\"col-12 text-truncate\\\"> <ul class=\\\"list-group list-group-flush\\\"> <li repeat.for=\\\"children of item.companies\\\" class=\\\"list-group-item justify-content-between au-animate\\\"> <button class=\\\"btn btn-link\\\" click.delegate=select(children.id)> <span title=${children.name}> ${children.name}</span> <i class=material-icons title=\\\"${'commands.select' & t}\\\">keyboard_arrow_right</i> </button> </li> </ul> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </section> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { I18N } from \"aurelia-i18n\";\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\n\n@autoinject\nexport class CompanyGroupChildRouter {\n\n  private logger: Logger;\n\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService) {\n\n    this.logger = LogManager.getLogger(\"CompanyGroupChildRouter\");\n  }\n\n  public configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./company-group-edit\"),\n        name: \"company-group-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.company_groups.company_group\"),\n      },\n\n      {\n        route: \"agreements\",\n        moduleId: PLATFORM.moduleName(\"../agreements/agreement-list-child-router\"),\n        name: \"company-groups-agreements\",\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.ServiceAgreementView),\n        title: this.i18n.tr(\"main.admin.pages.agreements.title\"),\n      },\n\n      {\n        route: \"contacts\",\n        moduleId: PLATFORM.moduleName(\"../contacts/contact-list\"),\n        name: \"company-group-contacts\",\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.CoreGroupUpdate),\n        title: this.i18n.tr(\"main.admin.pages.contacts.title\"),\n      },\n\n      {\n        route: \"master-users\",\n        moduleId: PLATFORM.moduleName(\"../master-users/master-user-list-child-router\"),\n        name: \"company-groups-master-users\",\n        title: this.i18n.tr(\"main.admin.pages.master_users.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.MasterUserView),\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","import { CoreCompanyService } from '../../services/companies/core-company-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { CatalogService } from \"../../../services/catalogs/catalog-service\";\nimport { CatalogBase } from \"models/catalogs/catalog-base\";\nimport { CatalogChild } from \"models/catalogs/catalog-child\";\nimport { CompanyGroupService } from \"../../services/companies/company-group-service\";\nimport { CompanyGroup } from \"models/companies/company-group\";\nimport { EventAggregator } from \"aurelia-event-aggregator\";\nimport { CompanyEditedMessage } from \"messages/companyEditedMessage\";\nimport { Company } from 'models/companies/company';\n\n\n@autoinject()\nexport class CompanyGroupEdit {\n\n  private logger: Logger;\n  private model: CompanyGroup = new CompanyGroup();\n  private franchise: Company;\n  private validationController: ValidationController;\n\n  private economicSectors: CatalogBase[] = [];\n  private countries: CatalogBase[] = [];\n  private regions: CatalogChild[] = [];\n  private cities: CatalogChild[] = [];\n\n  constructor(\n    private catalogService: CatalogService,\n    private coreCompanyService: CoreCompanyService,\n    private companyGroupService: CompanyGroupService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private router: Router,\n    private ea: EventAggregator) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"CompanyGroupEdit\");\n\n  }\n\n  private async activate(params: any): Promise<void> {\n    this.logger.info(\"activate\");\n\n    try {\n\n      if (!isNaN(params.franchiseId)) {\n\n        this.economicSectors = await this.catalogService.getEconomicSectorAll();\n        this.countries = await this.catalogService.getCountryAll();\n        this.franchise = await this.coreCompanyService.getById(+params.franchiseId);\n\n        if (!isNaN(params.companyGroupId)) {\n          this.model = await this.companyGroupService.getById(+params.companyGroupId);\n          this.regions = await this.catalogService.getRegionsByCountryId(this.model.countryId);\n          this.cities = await this.catalogService.getCitiesByRegionId(this.model.regionId);\n        }\n        else {\n          this.model.company.parentId = this.franchise.id;\n          this.model.company.createdOn = new Date();          \n        }\n        this.configureValidationRules();\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    this.logger.debug(\"model\", this.model.company);\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.company_groups.name\").required()\n      .on(this.model.company)\n      .ensure(\"economicSectorId\").displayName(\"catalogs.economic_sectors.title\").required()\n      .ensure(\"countryId\").displayName(\"catalogs.countries.title\").required()\n      .ensure(\"regionId\").displayName(\"catalogs.regions.title\").required()\n      .ensure(\"cityId\").displayName(\"catalogs.cities.title\").required()\n      .on(this.model);\n  }\n\n  // public cancel(): void {\n  //   this.logger.info(\"cancel\");\n  //   this.router.parent.navigate(`companies/franchise/${this.model.company.parentId}/company-groups`);\n  // }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(keepEditing);\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.companyGroupService.client.isRequesting;\n  }\n\n  public async save(keepEditing: boolean): Promise<any> {\n    this.logger.info(\"save\");\n    if (!this.model.id) {\n      return await this.companyGroupService.create(this.model)\n        .then(async (response: CompanyGroup) => {\n          this.model = response;\n\n          // trigger company edited event\n          this.ea.publish(new CompanyEditedMessage(this.model.company));\n\n          this.notification.success(\"main.admin.pages.company_groups.messages.company_group_added\");\n\n          if (!keepEditing) {\n            return await this.router.navigateToRoute(\"company-groups\");\n          } else {\n            return await this.router.navigateToRoute(\"company-group-child-router\", { companyGroupId: this.model.companyId });\n          }\n\n        }).catch(error => {\n          this.notification.error(error);\n        });\n    } else {\n      return await this.companyGroupService.update(this.model)\n        .then(async () => {\n          // trigger company edited event\n          this.ea.publish(new CompanyEditedMessage(this.model.company));\n\n          this.notification.success(\"main.admin.pages.company_groups.messages.company_group_edited\");\n\n          if (!keepEditing) {\n            return await this.router.navigateToRoute(\"company-groups\");\n          }\n\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    }\n  }\n\n  public async filterRegion(countryId: number): Promise<void> {\n    this.model.regionId = null;\n    this.model.cityId = null;\n\n    this.regions = await this.catalogService.getRegionsByCountryId(countryId);\n  }\n\n  public async filterCity(regionId: number): Promise<void> {\n    this.model.cityId = null;\n\n    this.cities = await this.catalogService.getCitiesByRegionId(regionId);\n  }\n\n}\n","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2 if.bind=!model.id>${'main.admin.pages.company_groups.create' & t}</h2> <h2 if.bind=model.id>${model.company.name}</h2> <p> ${'main.admin.pages.company_groups.info_editing' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div if.bind=franchise class=col-4> <i class=material-icons> location_on </i> <label> ${franchise.name} <br/> <small>${'main.admin.pages.franchises.title' & t}</small> </label> </div> <div class=col-4> <i class=material-icons> date_range </i> <label> ${model.company.createdOn | dateFormat} <br/> <small>${'main.admin.pages.company_groups.creation_date' & t}</small> </label> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=company.name t=main.admin.pages.company_groups.name>Name</label> <input type=text value.bind=\\\"model.company.name & validate\\\" class=form-control id=company.name t=[placeholder]main.admin.pages.company_groups.name> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=company.businessName t=main.admin.pages.company_groups.business_name>Name</label> <input type=text value.bind=model.company.businessName class=form-control id=company.businessName t=[placeholder]main.admin.pages.company_groups.business_name> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=economicSector>${'catalogs.economic_sectors.title' & t}</label> <select value.bind=\\\"model.economicSectorId & validate\\\" class=form-control id=economicSector> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of economicSectors\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=countryId>${'catalogs.countries.title' & t}</label> <select value.bind=\\\"model.countryId & validate\\\" class=form-control id=countryId change.delegate=\\\"filterRegion(model.countryId, true)\\\"> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of countries\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=regionId>${'catalogs.regions.title' & t}</label> <select value.bind=\\\"model.regionId & validate\\\" class=form-control id=regionId change.delegate=\\\"filterCity(model.regionId, true)\\\"> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of regions\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=cityId>${'catalogs.cities.title' & t}</label> <select value.bind=\\\"model.cityId & validate\\\" class=form-control id=cityId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of cities\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: CompanyGroupCreate\\\" type=submit click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: CompanyGroupCreate\\\" type=submit click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: company-groups;\\\" t=commands.cancel>Cancel</a> </div> </div> </form> </div> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class CompanyGroupFranchiseListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"CompanyGroupFranchiseListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./company-group-franchises\"),\n        name: \"select-franchise\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.admin.pages.company_groups.select_franchise\"),\n      },\n\n      {\n        route: \"franchise/:franchiseId\",\n        moduleId: PLATFORM.moduleName(\"./company-group-list-child-router\"),\n        name: \"company-group-list-child-router\",\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.company_groups.title\"),\n      },\n      \n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","\nexport class CompanyGroupFranchises {\n\n}\n","module.exports = \"<template> <require from=../franchises/franchise-dropdown-selector></require> <div class=\\\"row mb-3\\\"> <div class=col-12> <h2>${'main.admin.pages.company_groups.management' & t}</h2> <p>${'main.admin.pages.company_groups.select_franchise_info' & t}</p> <franchise-dropdown-selector style=text-align:center route-name=company-group-list-child-router></franchise-dropdown-selector> </div> </div> </template> \";","// import * as $ from \"jquery\";\nimport { Router } from \"aurelia-router\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { DeleteConfirmation } from \"../../../components/delete-confirmation\";\nimport { Notification } from \"common/services/notification\";\nimport { CompanyGroupService } from \"../../services/companies/company-group-service\";\nimport { CompanyDetailService } from '../../services/companies/company-detail-service';\n\nimport { CompanyGroup } from \"models/companies/company-group\";\nimport { Company } from \"models/companies/company\";\nimport { ChangeStateConfirmation } from \"../../../components/change-state-confirmation\";\nimport {\n  UxDatatableParameters,\n  UxDatatableCustomAttribute,\n  UxDatatableResponse\n} from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { EventAggregator } from \"aurelia-event-aggregator\";\nimport { CompanyEditedMessage } from \"messages/companyEditedMessage\";\nimport { CompanyDeletedMessage } from \"messages/companyDeletedMessage\";\n\nimport * as $ from \"jquery\";\n\n@autoinject()\nexport class CompanyGroupList {\n\n  private logger: Logger;\n  private params: any = {};\n  private franchiseId: number;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private isLoaded: boolean = false;\n\n  constructor(\n    private companyGroupService: CompanyGroupService,\n    private companyService: CompanyDetailService,\n    private dialogService: DialogService,\n    private notification: Notification,\n    private router: Router,\n    private ea: EventAggregator) {\n\n    this.logger = LogManager.getLogger(\"CompanyGroupList\");\n  }\n\n  private async activate(params: any): Promise<any> {\n    // this.logger.info(\"activate\");\n\n    if (this.params.franchiseId != params.franchiseId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n\n  }\n\n  public attached() {\n    $('.company-accordion').on('click', function () {\n      var button = $(this).find('.btn[data-toggle]');\n      var header = $(this).find('.card-header');\n      if (header.length && button.length && button.hasClass('collapsed')) {\n        header.removeClass('collapsed');\n      } else {\n        header.addClass('collapsed');\n      }\n    });\n  }\n\n  private async bind(): Promise<any> {\n    this.logger.info(\"bind\");\n    if (!isNaN(this.params.franchiseId)) {\n      this.franchiseId = +this.params.franchiseId;\n      this.isLoaded = true;\n\n      return await this.databind();\n    }\n  }\n\n  public async databind(): Promise<void> {\n    this.parameters.search.SearchAll = false;\n    return await this.companyGroupService.list(this.franchiseId, this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n        this.logger.debug(\"total records\", this.parameters.totalRecords);\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.info(\"refreshing\");\n    try {\n      const search = this.parameters.search.Query;\n      const hasSearchQuery = search != null && search.trim() !== '';\n      this.parameters.search.SearchAll = hasSearchQuery;\n\n      const response = await this.companyGroupService.list(this.franchiseId, this.parameters);\n\n      if (hasSearchQuery && response.totalRecords > 0 && response.data && response.data.length > 0) {\n        const hasResultsInCurrent = response.data.some(item => item.company.parentId === this.franchiseId);\n        if (!hasResultsInCurrent) {\n          // Navigate to the franchise of the first result (already prioritized by backend)\n          const firstResultFranchiseId = response.data[0].company.parentId;\n          if (firstResultFranchiseId) {\n            this.router.navigateToRoute(\"company-group-list-child-router\", { franchiseId: firstResultFranchiseId });\n          }\n        }\n      }\n\n      return response;\n    }\n    catch (error) {\n      return this.notification.error(error);\n    }\n  }\n\n  private async create(): Promise<any> {\n    return await this.router.navigateToRoute(\"company-group-child-router\", { companyGroupId: 'create' });\n  }\n\n  private async agreements(childrenId: number, parentId: number): Promise<any> {\n    return await this.router.navigate(`company-group/${parentId}/company/${childrenId}/agreements`);\n  }\n\n  private async delete(companyGroup: CompanyGroup): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: companyGroup.company.name\n    })\n      .whenClosed(async (response: DialogCloseResult) => {\n        if (!response.wasCancelled) {\n          return await this.companyGroupService.delete(companyGroup.id)\n            .then(() => {\n\n              // trigger company edited event\n              this.ea.publish(new CompanyDeletedMessage(companyGroup.companyId));\n\n              const indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id == companyGroup.id);\n              this.parameters.tableData.splice(indexOfEditedModel, 1);\n              this.parameters.totalRecords--;\n\n              this.notification.success(\"notifications.item_deleted\");\n            })\n            .catch(error => {\n              this.notification.error(error);\n            });\n        }\n      });\n  }\n\n  private async deleteCompany(company: Company): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: company.name\n    })\n      .whenClosed(async (response: DialogCloseResult) => {\n        if (!response.wasCancelled) {\n          return await this.companyService.delete(company.id)\n            .then(() => {\n\n              // trigger company edited event\n              this.ea.publish(new CompanyDeletedMessage(company.id));\n\n              let companyGroup = this.parameters.tableData.find(x => x.companyId == company.parentId);\n              const indexOfEditedModel: number = companyGroup.companies.findIndex(x => x.id == company.id);\n              companyGroup.companies.splice(indexOfEditedModel, 1);\n\n              this.notification.success('notifications.item_deleted');\n            })\n            .catch((error: Error) => {\n              this.notification.error(error);\n            });\n        }\n      });\n  }\n\n  private async changeCompanyState(item: Company): Promise<void> {\n\n    return await this.dialogService.open({\n      viewModel: ChangeStateConfirmation,\n      model: item.name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.companyService.changeState(item.id)\n          .then(() => {\n            // this.databind();\n            // item.isActive = !item.isActive;\n\n            // trigger company edited event\n            this.ea.publish(new CompanyEditedMessage(item));\n\n            this.notification.success(\"main.admin.pages.companies.messages.state_changed\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n      else {\n        item.isActive = !item.isActive;\n      }\n    });\n  }\n\n  private async changeCompanyGroupState(item: CompanyGroup): Promise<void> {\n\n    return await this.dialogService.open({\n      viewModel: ChangeStateConfirmation,\n      model: item.company.name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.companyGroupService.changeState(item.companyId)\n          .then(() => {\n            // this.databind();\n            // item.company.isActive = !item.company.isActive;\n            item.companies.forEach(x => {\n              x.isActive = item.company.isActive;\n            });\n\n            // trigger company edited event\n            this.ea.publish(new CompanyEditedMessage(item.company));\n\n            this.notification.success(\"main.admin.pages.company_groups.messages.state_changed\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n      else {\n        item.company.isActive = !item.company.isActive;\n      }\n    });\n  }\n\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class CompanyGroupListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"CompanyGroupListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./company-group-list\"),\n        name: \"company-groups\",\n      },\n\n      {\n        route: \"company-group/:companyGroupId\",\n        moduleId: PLATFORM.moduleName(\"./company-group-child-router\"),\n        name: \"company-group-child-router\",\n      },\n\n      {\n        route: \"company-group/:companyGroupId/company/:companyDetailId\",\n        moduleId: PLATFORM.moduleName(\"../companies/company-child-router\"),\n        name: \"company-child-router\",\n      },\n      \n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=../franchises/franchise-selector></require> <h2 t=main.admin.pages.company_groups.title>Company groups</h2> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.admin.pages.company_groups.info' & t} </p> </div> </div> <hr/> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <div class=row> <div class=\\\"col-12 col-md-2\\\"> <franchise-selector franchise-id.bind=franchiseId route-name=company-group-list-child-router class=col-3></franchise-selector> </div> <div class=\\\"col-12 col-md-10\\\"> <div class=\\\"row mb-3 align-items-center m-0\\\"> <div class=\\\"col-12 col-md-6\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-sm-auto\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3 m-0\\\"> <div class=col-12> <div class=\\\"accordion company-accordion\\\" id=accordion ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <div virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext) class=card> <div class=card-header id=heading_${$index}> <div class=\\\"row mb-1\\\"> <div class=\\\"col-12 col-md-9 text-truncate\\\"> <h5 class=mb-0> <button class=\\\"btn btn-link\\\" data-toggle=collapse data-target=#collapse_${$index} aria-expanded=true aria-controls=collapse_${$index} title=${item.company.name}> ${item.company.name} </button> </h5> </div> <div class=\\\"col-12 col-md-3 text-right\\\"> <a class=\\\"btn btn-link\\\" global-permission-show=\\\"can: CompanyGroupView, CompanyGroupUpdate\\\" route-href=\\\"route: company-group-child-router; params.bind: { companyGroupId: item.companyId}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <a class=\\\"btn btn-link\\\" href=# global-permission-show=\\\"can: CompanyGroupDelete\\\" click.delegate=delete(item) title.bind=\\\"'commands.archive' & t\\\" title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </a> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=companyGroupIsActive_${$index} checked.bind=item.company.isActive change.delegate=changeCompanyGroupState(item) global-permission-enable=\\\"can: CompanyGroupUpdate\\\"/> <label for=companyGroupIsActive_${$index} class=form-check-label>&nbsp;</label> </span> </div> </div> </div> <div id=collapse_${$index} class=\\\"collapse show\\\" aria-labelledby=heading_${$index} data-parent=#accordion> <div class=card-body> <div class=row> <div class=\\\"col-12 text-truncate\\\"> <ul class=\\\"list-group list-group-flush\\\"> <li repeat.for=\\\"children of item.companies\\\" class=\\\"list-group-item justify-content-between\\\"> <span title=${children.name}>${children.name}</span> <a class=\\\"btn btn-link\\\" global-permission-show=\\\"can: CompanyView, CompanyUpdate\\\" click.delegate=\\\"agreements(children.id, item.company.id)\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <a class=\\\"btn btn-link\\\" href=# global-permission-show=\\\"can: CompanyDelete\\\" click.delegate=deleteCompany(children) title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </a> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=companyIsActive_${$index} checked.bind=children.isActive change.delegate=changeCompanyState(children) global-permission-enable=\\\"can: CompanyUpdate\\\"/> <label for=companyIsActive_${$index} class=form-check-label>&nbsp;</label> </span> </li> </ul> </div> </div> <div class=\\\"row p-2 list-group-item-secondary\\\" global-permission-show=\\\"can: CompanyCreate\\\"> <div class=\\\"col-12 col-md-8\\\"> <p class=card-text t=[html]main.admin.pages.companies.create_info> </p> </div> <div class=\\\"col-12 col-md-4 text-right\\\"> <a class=\\\"btn btn-secondary\\\" route-href=\\\"route: company-child-router; params.bind: { companyGroupId: item.companyId, companyDetailId: 'create'}\\\">${'commands.create' & t}</a> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div class=content-sidebar global-permission-show=\\\"can: CompanyGroupCreate\\\"> <div class=row> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=commands.create></h5> <p class=card-text t=[html]main.admin.pages.company_groups.create>Lorem</p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create()> ${'commands.create' & t} </button> </div> </div> </div> </div> </div> </div> </template> \";","import { Company } from 'models/companies/company';\nimport { CoreCompanyService } from '../../services/companies/core-company-service';\n\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { DeleteConfirmation } from \"../../../components/delete-confirmation\";\nimport { Notification } from \"common/services/notification\";\n\nimport { ContactService } from \"../../services/contacts/contact-service\";\nimport { Contact } from \"models/contacts/contact\";\nimport { ContactModal } from \"./contact-modal\";\n\nimport {\n  UxDatatableParameters,\n  UxDatatableCustomAttribute,\n  UxDatatableResponse\n} from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\n\n@autoinject()\nexport class ContactList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n  private company: Company;\n\n  private state: State;\n  private isLoaded: boolean = false;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  constructor(\n    private store: StoreService,\n    private coreCompanyService: CoreCompanyService,\n    private contactService: ContactService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"ContactList\");\n\n    this.state = this.store.state;\n\n  }\n\n  private async activate(params: any): Promise<void> {\n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyGroupId)) {\n      this.companyId = +this.params.companyGroupId;\n    }\n\n    if (this.params.companyDetailId && this.params.companyDetailId === 'create') {\n      this.companyId = null;\n    }\n\n    if (!isNaN(this.params.companyDetailId)) {\n      this.companyId = +this.params.companyDetailId;\n    }\n\n    if (this.companyId) {\n      this.company = this.state.companies.find(x => x.id == this.companyId);\n      this.isLoaded = true;\n      return await this.databind();\n    }\n  }\n\n  // public async attached(): Promise<void> {\n  //   this.logger.info(\"attached \");\n  //   this.logger.debug(\"attached companyId:\", this.companyId);\n  //   if (this.companyId) {\n  //     return await this.coreCompanyService.getById(this.companyId)\n  //       .then((company: Company) => {\n  //         this.company = company;\n  //         return this.databind();\n  //       })\n  //       .catch(error => {\n  //         this.notification.error(error);\n  //       });\n  //   }\n  // }\n\n  public async databind(): Promise<void> {\n    // this.logger.info(\"databind\");\n    return await this.contactService.list(this.companyId, this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private refresh = (): Promise<UxDatatableResponse> => {\n    return this.contactService.list(this.companyId, this.parameters);\n  }\n\n\n  private async create(): Promise<void> {\n    let item: Contact = new Contact();\n    item.companyId = this.companyId;\n    return await this.dialogService.open({\n      viewModel: ContactModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        try {\n          let contact: Contact = await this.contactService.create(item);\n          item.id = contact.id;\n          \n          this.parameters.tableData.unshift(item);\n          this.parameters.totalRecords++;\n\n          this.notification.success(\"notifications.item_added\");\n          // return await this.databind();\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n    });\n  }\n\n  private async edit(item: Contact): Promise<void> {\n    let orginialItem = JSON.parse(JSON.stringify(item));\n    return await this.dialogService.open({\n      viewModel: ContactModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.contactService.update(item)\n          .then(async () => {\n            // var name = this.model.name;\n            this.notification.success(\"notifications.item_edited\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n      else {\n        Object.assign(item, orginialItem);\n      }\n    });\n  }\n\n  private async delete(id: number, name: string): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    }).whenClosed((response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        this.contactService.delete(id)\n          .then(() => {\n\n            let indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(id.toString());\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n\n            this.notification.success(\"notifications.item_deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n}\n","module.exports = \"<template> <div if.bind=!companyId> <h2>${'main.admin.pages.contacts.title' & t}</h2> <p> ${'main.admin.pages.contacts.notification_new_group' & t} </p> </div> <div class=\\\"content-container row mb-3\\\" if.bind=companyId> <div class=content-main> <h2>${company.name} / ${'main.admin.pages.contacts.title' & t}</h2> <p> ${'main.admin.pages.contacts.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-3 scope=col t=main.admin.pages.contacts.full_name>Full name</th> <th class=col-md-3 scope=col t=main.admin.pages.contacts.phone_number>Phone Number</th> <th class=col-md-3 scope=col t=main.admin.pages.contacts.email>Email</th> <th class=col-md-3 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-3 text-truncate\\\"><span title=${item.fullName}>${item.fullName}</span></td> <td class=\\\"col-md-3 text-truncate\\\"><span title=${item.phoneNumber}>${item.phoneNumber}</span></td> <td class=\\\"col-md-3 text-truncate\\\"><span title=${item.emailAddress}>${item.emailAddress}</span></td> <td class=\\\"col-md-3 d-flex\\\"> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: ContactUpdate\\\" click.delegate=edit(item) title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </button> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: ContactDelete\\\" click.delegate=\\\"delete(item.id, item.name)\\\" title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar global-permission-show=\\\"can: ContactCreate\\\"> <div class=row> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=commands.create>title</h5> <p class=card-text t=[html]main.admin.pages.contacts.create_info>Lorem</p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create() t=commands.create>Create</button> </div> </div> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager, NewInstance } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { Contact } from \"models/contacts/contact\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\n\n@autoinject()\nexport class ContactModal {\n\n  private model: Contact = new Contact();\n\n  private validationController: ValidationController;\n  private logger: Logger;\n\n  constructor(\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ContactModal\");\n\n  }\n\n  async activate(model: Contact): Promise<void> {\n    this.logger.debug(\"activate\");\n    this.model = model;\n    this.configureValidationRules();\n  }\n\n  configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"fullName\").displayName(\"main.admin.pages.contacts.full_name\").required()\n      .ensure(\"emailAddress\").displayName(\"main.admin.pages.contacts.email\").email().required()\n      .on(this.model);\n  }\n\n  public async submit(): Promise<void> {\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  public async save(): Promise<any> {\n    this.logger.debug(\"save:\");\n    return await this.dialogController.ok();\n  }\n\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'main.admin.pages.contacts.title' & t}</h2> <form> <div class=form-group> <input type=text value.bind=\\\"model.fullName & validate\\\" class=form-control id=fullName t=[placeholder]main.admin.pages.contacts.full_name> </div> <div class=form-group> <input type=text value.bind=\\\"model.emailAddress & validate\\\" class=form-control id=email t=[placeholder]main.admin.pages.contacts.email> </div> <div class=form-group> <input type=text value.bind=model.phoneNumber class=form-control id=phoneNumber t=[placeholder]main.admin.pages.contacts.phone_number> </div> <div class=form-group> <input type=text value.bind=model.idNumber class=form-control id=idNumber t=[placeholder]main.admin.pages.contacts.id_number> </div> <div class=form-group> <input type=text value.bind=model.charge class=form-control id=equivalentScore t=[placeholder]main.admin.pages.contacts.charge> </div> <div class=form-group> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class CoreGroupChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"CoreGroupChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./core-group-edit\"),\n        name: \"core-groups-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.groups.group\"),\n      },\n      \n      {\n        route: \"core-permissions\",\n        moduleId: PLATFORM.moduleName(\"./core-permissions/core-permission-edit\"),\n        name: \"core-groups-edit-permissions\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.permissions.title\"),\n      }\n    ]);\n  }\n}\n","module.exports = \"<template> <require from=./core-group-create-card></require> <require from=./reset-second-password-card></require> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <router-view></router-view> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\"> <div class=col-12> <core-group-create-card></core-group-create-card> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <reset-second-password-card></reset-second-password-card> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { CoreGroupModal } from \"./core-group-modal\";\nimport { Group } from \"models/groups/group\";\nimport { Notification } from \"common/services/notification\";\nimport { CoreGroupService } from \"../../services/groups/core-group-service\";\n\n@autoinject()\nexport class CoreGroupCreateCard {\n\n  private logger: Logger;\n\n  constructor(\n    private router: Router,\n    private dialogService: DialogService,\n    private coreGroupService: CoreGroupService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"CoreGroupCreateCard\");\n  }\n\n  private async create(): Promise<any> {\n    let item: Group = new Group();\n    return await this.dialogService.open({\n      viewModel: CoreGroupModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        this.logger.debug(\"response.output\", response.output);\n        return await this.coreGroupService.create(item)\n          .then(async (model: Group) => {\n\n            // item.id = model.id;\n            this.notification.success(\"notifications.item_added\");\n\n            if (response.output) {\n              return await this.router.navigateToRoute(\"core-group-child-router\", { coreGroupId: model.id });\n            } else {              \n              return await this.router.navigateToRoute(\"core-groups\");\n            }\n\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n}\n","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\" global-permission-show=\\\"can: CoreGroupCreate\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.core_groups.create_card.title' & t}</h5> <p t=[html]main.admin.pages.core_groups.create_card.info>Create new core group</p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create()>${'commands.create' & t}</button> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\n\nimport { Group } from \"models/groups/group\";\nimport { CoreGroupService } from \"../../services/groups/core-group-service\";\nimport { Notification } from \"common/services/notification\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\n\n@autoinject()\nexport class CoreGroupDeleteModal {\n\n  private logger: Logger;\n  private groupToDelete: Group;\n  private coreGroupIdToTransferUsers: number;\n  private validationController: ValidationController;\n  private coreGroups: Group[];\n\n  constructor(\n    private dialogController: DialogController,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private coreGroupService: CoreGroupService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"GroupModal\");\n    this.configureValidationRules();\n  }\n\n  private async activate(item: Group): Promise<void> {\n    this.groupToDelete = Object.assign(new Group(), item);\n    return await this.coreGroupService.getAll()\n      .then(coreGroups => this.coreGroups = coreGroups)\n      .then(() => {\n        // remuevo de la lista de grupos a transferir usuarios el grupo a eliminar\n        this.coreGroups.splice(this.coreGroups.map(x => x.id.toString()).indexOf(item.id.toString()), 1);\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"coreGroupIdToTransferUsers\").displayName(\"main.admin.pages.core_groups.core_group_to_transfer\").required()\n      .on(this);\n  }\n\n  public async submit(): Promise<any> {\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.dialogController.ok(this.coreGroupIdToTransferUsers);\n        }\n      });\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'commands.archive' & t}</h2> <div class=row> <div class=col-12> <p t=modals.delete_confirmation.message t-params.bind=\\\"{name: groupToDelete.name}\\\">Delete?</p> </div> </div> <form> <div class=form-group> <label>${'main.admin.pages.core_groups.core_group_to_transfer' & t}</label> <select class=form-control value.bind=\\\"coreGroupIdToTransferUsers & validate\\\"> <option value=\\\"\\\" disabled=disabled selected=selected t=forms.select_option>select an item</option> <option repeat.for=\\\"option of coreGroups\\\" model.bind=option.id>${option.name}</option> </select> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> <button type=submit class=\\\"btn btn-danger\\\" attach-focus=true click.delegate=submit() t=commands.archive>Delete</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { autoinject, LogManager, NewInstance } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\n\nimport { Group } from \"models/groups/group\";\nimport { CoreGroupService } from \"../../services/groups/core-group-service\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\n\nimport { Notification } from \"common/services/notification\";\n\n@autoinject()\nexport class CoreGroupEdit {\n\n  private logger: Logger;\n  private model: Group = new Group();\n  private saveAndContinue: boolean = false;\n  private validationController: ValidationController;\n\n  constructor(\n    private router: Router,\n    private dialogController: DialogController,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private coreGroupService: CoreGroupService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"CoreGroupEdit\");\n\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    if (!isNaN(params.coreGroupId)) {\n      try {\n        this.model = await this.coreGroupService.getById(+params.coreGroupId);\n        this.configureValidationRules();\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.core_groups.name\").required()\n      .on(this.model);\n  }\n\n  public async submit(saveAndContinue: boolean): Promise<void> {\n    this.saveAndContinue = saveAndContinue;\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.coreGroupService.client.isRequesting;\n  }\n\n  public async save(): Promise<any> {\n    return await this.coreGroupService.update(this.model)\n      .then(async () => {\n        this.notification.success(\"notifications.item_edited\");\n\n        if (!this.saveAndContinue) {\n          return await this.router.navigateToRoute(\"core-groups\");\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n}\n","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2 if.bind=!model.id>${'main.admin.pages.groups.group' & t}</h2> <h2 if.bind=model.id>${'main.admin.pages.core_groups.title' & t} / ${model.name}</h2> <p> ${'main.admin.pages.core_groups.info_editing' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <label>${'main.admin.pages.groups.name' & t}</label> <input type=text class=form-control id=model.name t=[placeholder]main.admin.pages.groups.name value.bind=\\\"model.name & validate\\\"> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <label>${'main.admin.pages.groups.description' & t}</label> <textarea class=form-control t=[placeholder]main.admin.pages.groups.description value.bind=\\\"model.description & validate\\\" rows=3></textarea> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: CoreGroupCreate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: CoreGroupCreate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: core-groups;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </div> </template> \";","import { autoinject, LogManager, observable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\n\nimport { CoreGroupService } from \"../../services/groups/core-group-service\";\nimport { CoreGroupModal } from \"./core-group-modal\";\nimport { Group } from \"models/groups/group\";\nimport { Notification } from \"common/services/notification\";\nimport { CoreGroupDeleteModal } from \"./core-group-delete-modal\";\n\nimport {\n  UxDatatableParameters,\n  UxDatatableCustomAttribute,\n  UxDatatableResponse\n} from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n@autoinject\nexport class CoreGroupList {\n\n  private logger: Logger;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.coregroupService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  constructor(\n    private router: Router,\n    private coregroupService: CoreGroupService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"CoreGroupList\");\n\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.logger.debug(\"activate\");\n    // return await this.databind();\n  }\n\n  private async bind(): Promise<any> {\n    this.logger.debug(\"activate\");\n    return await this.databind();\n  }\n\n  private async databind(): Promise<any> {\n    this.logger.debug(\"databind\");\n    // this.logger.debug(\"parameters\", this.parameters);\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async create(): Promise<any> {\n    let item: Group = new Group();\n    return await this.dialogService.open({\n      viewModel: CoreGroupModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n\n      if (!response.wasCancelled) {\n\n        this.logger.debug(\"response.output\", response.output);\n\n        return await this.coregroupService.create(item)\n          .then(async (model: Group) => {\n\n            this.logger.debug(\"item.id: \", model.id);\n            item.id = model.id;\n            \n            if (response.output) {\n              // this.logger.debug(\"Save and continue id: \", model.id);\n              return await this.router.navigateToRoute(\"core-group-child-router\", { coreGroupId: model.id });\n            } else {      \n              this.logger.debug(\"item: \", item);\n              this.parameters.tableData.unshift(item);\n              this.parameters.totalRecords++;\n              this.notification.success(\"notifications.item_added\");\n              // return await this.databind();\n            }\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private async delete(item: Group): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: CoreGroupDeleteModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        if (response.output) {\n          let coreGroupIdToTransferUsers: number = <number>response.output;\n          this.logger.debug(\"coreGroupIdToTransferUsers: \", coreGroupIdToTransferUsers);\n          return await this.coregroupService.delete(item.id, coreGroupIdToTransferUsers)\n            .then(() => {\n              let indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(item.id.toString());\n              this.parameters.tableData.splice(indexOfEditedModel, 1);\n              this.parameters.totalRecords--;\n              this.notification.success(\"notifications.item_deleted\");\n            })\n            .catch(error => {\n              this.notification.error(error);\n            });\n        }\n      }\n    });\n  }\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class CoreGroupListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"CoreGroupListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./core-group-list\"),\n        name: \"core-groups\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.admin.pages.groups.title\"),\n      },\n\n      {\n        route: \"core-group/:coreGroupId\",\n        moduleId: PLATFORM.moduleName(\"./core-group-child-router\"),\n        name: \"core-group-child-router\",\n        // nav: false,\n        // title: this.i18n.tr(\"main.admin.pages.groups.group\"),\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=./reset-second-password-card></require> <require from=./core-group-create-card></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${'main.admin.pages.core_groups.title' & t}</h2> <p> ${'main.admin.pages.core_groups.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-3 scope=col t=main.admin.pages.core_groups.name>Name</th> <th class=col-md-5 scope=col t=main.admin.pages.core_groups.description>Description</th> <th class=col-md-4 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-3 text-truncate\\\"><span title=${item.name}>${item.name}</span></td> <td class=\\\"col-md-5 text-truncate\\\"><span title=${item.description}>${item.description}</span></td> <td class=\\\"col-md-4 d-flex\\\"> <a if.one-time=!item.isDefault class=\\\"btn btn-link\\\" global-permission-show=\\\"can: CoreGroupUpdate\\\" route-href=\\\"route: core-group-child-router; params.bind: {coreGroupId:item.id}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <button if.one-time=!item.isDefault class=\\\"btn btn-link\\\" global-permission-show=\\\"can: CoreGroupDelete\\\" click.delegate=delete(item) title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\" global-permission-show=\\\"can: CoreGroupCreate\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.core_groups.create_card.title' & t}</h5> <p t=[html]main.admin.pages.core_groups.create_card.info>Create new core group</p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create()>${'commands.create' & t}</button> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <reset-second-password-card></reset-second-password-card> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\n\nimport { Group } from \"models/groups/group\";\nimport { CoreGroupService } from \"../../services/groups/core-group-service\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\n\n@autoinject\nexport class CoreGroupModal {\n\n  private logger: Logger;\n  private saveAndContinue: boolean = false;\n  private model: Group;\n  private validationController: ValidationController;\n  private coreGroups: Group[];\n\n  constructor(\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory,\n    private coreGroupService: CoreGroupService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"CoreGroupModal\");\n\n  }\n\n  public bind(): void {\n    this.coreGroupService.getAll().then(coreGroups => this.coreGroups = coreGroups);\n  }\n\n  public activate(model: Group): void {\n    this.model = model;\n    this.configureValidationRules();\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.core_groups.name\").required()\n      .ensure(\"auxGroupId\").displayName(\"main.admin.pages.core_groups.core_group_to_clone\").required()\n      .on(this.model);\n  }\n\n  public async submit(saveAndContinue: boolean): Promise<void> {\n    // this.saveAndContinue = saveAndContinue;\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(saveAndContinue);\n        }\n      });\n  }\n\n  public async save(saveAndContinue: boolean): Promise<any> {\n    this.logger.debug(\"save:\", saveAndContinue);\n    this.validationController.reset();\n    return await this.dialogController.ok(saveAndContinue);\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h3>${'main.admin.pages.groups.group' & t}</h3> <form> <div class=form-group> <label>${'main.admin.pages.groups.name' & t}</label> <input type=text class=form-control id=model.name t=[placeholder]main.admin.pages.groups.name value.bind=\\\"model.name & validate\\\"> </div> <div class=form-group> <label>${'main.admin.pages.core_groups.core_group_to_clone' & t}</label> <select class=form-control value.bind=\\\"model.auxGroupId & validate\\\"> <option value=\\\"\\\" disabled=disabled selected=selected t=forms.select_option>select an item</option> <option repeat.for=\\\"option of coreGroups\\\" model.bind=option.id>${option.name}</option> </select> </div> <div class=form-group> <label>${'main.admin.pages.groups.description' & t}</label> <textarea class=form-control id=model.description t=[placeholder]main.admin.pages.groups.description value.bind=\\\"model.description & validate\\\" id=exampleFormControlTextarea1 rows=3></textarea> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit(true)>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit(false)>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel() t=commands.cancel>Cancel</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { I18N } from \"aurelia-i18n\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\n\nimport { CoreGroupService } from \"../../../services/groups/core-group-service\";\nimport { CorePermissionService } from \"../../../services/groups/core-permission-service\";\nimport { Permission } from \"models/groups/permission\";\nimport { Group } from \"models/groups/group\";\nimport { Notification } from \"common/services/notification\";\nimport { SecondPasswordModal } from \"./second-password-modal\";\n\ninterface SetNameMap {\n  [setName: string]: string;\n}\n\ninterface DisableSetMap {\n  [permission: string]: boolean;\n}\n\n@autoinject\nexport class CorePermissionEdit {\n\n  private logger: Logger;\n  private validationController: ValidationController;\n\n  private groupId: number;\n  private group: Group;\n  private saveAndContinue: boolean = false;\n  private isLoaded: boolean = false;\n\n  private permissions: Array<Permission> = new Array<Permission>();\n\n  private groupPermissionNamesSelected: Array<string> = new Array<string>();\n\n  private disableSets: DisableSetMap = {};\n\n  private setNames: SetNameMap = {};\n\n  constructor(\n    private router: Router,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private coreGroupService: CoreGroupService,\n    private corePermissionService: CorePermissionService,\n    private dialogService: DialogService,\n    private i18n: I18N) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"CorePermissionEdit\");\n  }\n\n  private async activate(params: any): Promise<any> {\n    this.isLoaded = false;\n\n    this.logger.debug(\"Activated id:\", params.coreGroupId);\n    this.groupId = +params.coreGroupId;\n\n    if (!this.groupId) {\n      return await this.router.navigateToRoute(\"core-groups\");\n    }\n\n    try {\n      this.group = await this.coreGroupService.getById(this.groupId);\n\n      this.permissions = await this.corePermissionService.getAll();\n      for (let i: number = this.permissions.length - 1; i >= 0; i--) {\n        let groupPermissionName: string = this.permissions[i].name;\n        this.disableSets[groupPermissionName] = true;\n      }\n\n      this.groupPermissionNamesSelected = await this.coreGroupService.getPermissionNamesById(this.groupId);\n\n      for (let i: number = this.groupPermissionNamesSelected.length - 1; i >= 0; i--) {\n        let groupPermissionName: string = this.groupPermissionNamesSelected[i];\n        this.disableSets[groupPermissionName] = false;\n        this.toggleSet(groupPermissionName);\n      }\n      this.isLoaded = true;\n\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public async submit(saveAndContinue: boolean): Promise<void> {\n    this.saveAndContinue = saveAndContinue;\n    return await this.save();\n  }\n\n  get canSave() {\n    return !this.coreGroupService.client.isRequesting;\n  }\n\n  public async save(): Promise<any> {\n    return await this.coreGroupService.updatePermissionsNamesById(this.groupId, this.groupPermissionNamesSelected)\n      .then(async () => {\n        this.notification.success(\"notifications.item_edited\");\n\n        if (!this.saveAndContinue) {\n          return await this.router.navigateToRoute(\"core-groups\");\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  public async generatePdf(): Promise<void> {\n    return await this.coreGroupService.downloadPdfById(this.group.id, this.group.name)\n      .then(() => null)\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private getSubModulesByModule(moduleName: string): string[] {\n    return this.permissions.filter(x => x.name.startsWith(moduleName + \"_\"))\n      .sort((x, y) => x.id - y.id)\n      .map(x => { return x.name.split(\"_\").slice(0, 2).join(\"_\"); })\n      .filter((item, i, ar) => { return ar.indexOf(item) === i; });\n  }\n\n  private getSetsBySubModule(subModuleName: string): string[] {\n    return this.permissions.filter(x => x.name.startsWith(subModuleName + \"_\"))\n      .sort((x, y) => x.id - y.id)\n      .map(x => { return x.name.split(\"_\").slice(0, 3).join(\"_\"); })\n      .filter((item, i, ar) => { return ar.indexOf(item) === i; });\n  }\n\n  private getSelectedSetNameBySubModule(subModuleName: string): string {\n    let result: string = \"\";\n    let setPermissionNames: string[] = this.groupPermissionNamesSelected.filter(x => x.startsWith(subModuleName + \"_\"));\n    for (var i: number = 0; i < setPermissionNames.length; i++) {\n      let permissionNameTr: string = this.i18n.tr(\"main.admin.pages.permissions.\" + setPermissionNames[i]);\n      result += permissionNameTr;\n      if (i < setPermissionNames.length - 1) {\n        result += \", \";\n      }\n    }\n    // this.logger.debug(\"result\", result);\n    return result;\n  }\n\n  private getGroupPermissionsBySet(setName: string): string[] {\n    return this.permissions.filter(x => x.name.startsWith(setName + \"_\"))\n      .sort((x, y) => x.id - y.id)\n      .map(x => x.name);\n  }\n\n  private async toggleSet(groupPermissionName: string): Promise<void> {\n    let setName: string = groupPermissionName.split(\"_\").slice(0, 3).join(\"_\");\n\n    if (groupPermissionName.endsWith(\"_view\")) {\n\n      let disable: boolean = this.groupPermissionNamesSelected.indexOf(groupPermissionName) < 0;\n\n      let groupPermissionSet: string[] = this.getGroupPermissionsBySet(setName);\n\n      // enable / disable checkboxes del set\n      for (let i: number = groupPermissionSet.length - 1; i >= 0; i--) {\n        let groupPermissionName2: string = groupPermissionSet[i];\n        this.disableSets[groupPermissionName2] = disable;\n      }\n\n      // elimino los permisos del set si se encuentra disable\n      if (disable) {\n        this.disableSets[groupPermissionName] = disable;\n\n        for (let i: number = this.groupPermissionNamesSelected.length - 1; i >= 0; i--) {\n          if (this.groupPermissionNamesSelected[i].startsWith(setName + \"_\")) {\n            this.groupPermissionNamesSelected.splice(i, 1);\n          }\n        }\n      } else if (this.isLoaded) {\n        let permission: Permission = this.permissions.filter(x => x.name === groupPermissionName)[0];\n\n        if (permission\n          && permission.isRestricted) {\n\n          this.logger.debug(\"toggleSet restricted permission:\", permission);\n\n          return await this.validateSecondPassword()\n            .then((result: boolean) => {\n              if (result) {\n                this.disableSets[groupPermissionName] = disable;\n                // set dropdown name\n                this.setNames[setName] = this.getSelectedSetNameBySubModule(setName);\n              } else {\n                this.groupPermissionNamesSelected.splice(this.groupPermissionNamesSelected.indexOf(groupPermissionName), 1);\n\n                for (let i: number = groupPermissionSet.length - 1; i >= 0; i--) {\n                  let groupPermissionName2: string = groupPermissionSet[i];\n                  this.disableSets[groupPermissionName2] = true;\n                }\n              }\n\n            });\n        }\n      }\n    }\n\n    // set dropdown name\n    this.setNames[setName] = this.getSelectedSetNameBySubModule(setName);\n  }\n\n  private async validateSecondPassword(): Promise<boolean> {\n    return await this.dialogService.open({\n      viewModel: SecondPasswordModal\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        if (response.output) {\n          let result: boolean = <boolean>response.output;\n          this.logger.debug(\"validate ok: \", result);\n          return result;\n        } else {\n          return false;\n        }\n      } else {\n        return false;\n      }\n    });\n  }\n}\n","module.exports = \"<template> <form class=form> <h2>${'main.admin.pages.permissions.title' & t} / ${group.name}</h2> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-2\\\"> <div class=\\\"nav flex-column nav-pills\\\" id=v-pills-tab role=tablist aria-orientation=vertical> <a class=\\\"nav-link active\\\" id=v-pills-admin-tab data-toggle=pill role=tab aria-controls=nav-admin aria-selected=true href=#nav-admin>${'main.admin.pages.permissions.admin_module' & t}</a> <a class=nav-link id=v-pills-test-tab data-toggle=pill role=tab aria-controls=nav-test aria-selected=false href=#nav-test>${'main.admin.pages.permissions.test_module' & t}</a> <a class=nav-link id=v-pills-cross-tab data-toggle=pill role=tab aria-controls=nav-cross aria-selected=false href=#nav-cross>${'main.admin.pages.permissions.cross_functionalities' & t}</a> <a class=nav-link id=v-pills-admin-selection-tab data-toggle=pill role=tab aria-controls=nav-admin-selection aria-selected=false href=#nav-admin-selection>${'main.admin.pages.permissions.adminselection_module' & t}</a> <a class=nav-link id=v-pills-selection-tab data-toggle=pill role=tab aria-controls=nav-selection aria-selected=false href=#nav-selection>${'main.admin.pages.permissions.selection_module' & t}</a> </div> </div> <div class=\\\"col-12 col-md-10\\\"> <div class=tab-content id=v-pills-tabContent> <div class=\\\"tab-pane fade show active\\\" id=nav-admin role=tabpanel aria-labelledby=v-pills-admin-tab> <div class=\\\"row mb-3\\\" repeat.for=\\\"subModule of getSubModulesByModule('admin')\\\"> <div class=\\\"card col-12\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.permissions.' + subModule & t }</h5> <div class=\\\"row mb-3\\\" repeat.for=\\\"setItem of getSetsBySubModule(subModule)\\\"> <div class=col-12> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=${setItem}_view value=${setItem}_view checked.bind=groupPermissionNamesSelected change.delegate=\\\"toggleSet(setItem + '_view')\\\"/> <label for=${setItem}_view class=form-check-label>${'main.admin.pages.permissions.' + setItem & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-11 offset-1\\\"> <div class=dropdown> <button class=\\\"btn btn-secondary dropdown-toggle\\\" type=button id=dropdownMenuButton${$index} data-toggle=dropdown aria-haspopup=true aria-expanded=false> ${setNames[setItem]} </button> <div class=dropdown-menu aria-labelledby=dropdownMenuButton${$index}> <a class=\\\"dropdown-item form-check custom-control custom-checkbox\\\" repeat.for=\\\"item of getGroupPermissionsBySet(setItem)\\\"> <input type=checkbox class=\\\"form-check-input custom-control-input\\\" id=${item}1 model.bind=item checked.bind=groupPermissionNamesSelected disabled.bind=disableSets[item] change.delegate=toggleSet(item) /> <label for=${item}1 class=\\\"form-check-label custom-control-label\\\">${'main.admin.pages.permissions.' + item & t}</label> </a> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=nav-test role=tabpanel aria-labelledby=v-pills-test-tab> <div class=\\\"row mb-3\\\" repeat.for=\\\"subModule of getSubModulesByModule('test')\\\"> <div class=\\\"card col-12\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.permissions.' + subModule & t }</h5> <div class=\\\"row mb-3\\\" repeat.for=\\\"setItem of getSetsBySubModule(subModule)\\\"> <div class=col-12> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=${setItem}_view value=${setItem}_view checked.bind=groupPermissionNamesSelected change.delegate=\\\"toggleSet(setItem + '_view')\\\"/> <label for=${setItem}_view class=form-check-label>${'main.admin.pages.permissions.' + setItem & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-11 offset-1\\\"> <div class=dropdown> <button class=\\\"btn btn-secondary dropdown-toggle\\\" type=button id=dropdownMenuButton${$index} data-toggle=dropdown aria-haspopup=true aria-expanded=false> ${setNames[setItem]} </button> <div class=dropdown-menu aria-labelledby=dropdownMenuButton${$index}> <a class=\\\"dropdown-item form-check custom-control custom-checkbox\\\" repeat.for=\\\"item of getGroupPermissionsBySet(setItem)\\\"> <input type=checkbox class=\\\"form-check-input custom-control-input\\\" id=${item}1 model.bind=item checked.bind=groupPermissionNamesSelected disabled.bind=disableSets[item] change.delegate=toggleSet(item) /> <label for=${item}1 class=\\\"form-check-label custom-control-label\\\">${'main.admin.pages.permissions.' + item & t}</label> </a> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=nav-cross role=tabpanel aria-labelledby=v-pills-cross-tab> <div class=\\\"row mb-3\\\" repeat.for=\\\"subModule of getSubModulesByModule('cross')\\\"> <div class=\\\"card col-12\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.permissions.' + subModule & t }</h5> <div class=\\\"row mb-3\\\" repeat.for=\\\"setItem of getSetsBySubModule(subModule)\\\"> <div class=col-12> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=${setItem}_view value=${setItem}_view checked.bind=groupPermissionNamesSelected change.delegate=\\\"toggleSet(setItem + '_view')\\\"/> <label for=${setItem}_view class=form-check-label>${'main.admin.pages.permissions.' + setItem & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-11 offset-1\\\"> <div class=dropdown> <button class=\\\"btn btn-secondary dropdown-toggle\\\" type=button id=dropdownMenuButton${$index} data-toggle=dropdown aria-haspopup=true aria-expanded=false> ${setNames[setItem]} </button> <div class=dropdown-menu aria-labelledby=dropdownMenuButton${$index}> <a class=\\\"dropdown-item form-check custom-control custom-checkbox\\\" repeat.for=\\\"item of getGroupPermissionsBySet(setItem)\\\"> <input type=checkbox class=\\\"form-check-input custom-control-input\\\" id=${item}1 model.bind=item checked.bind=groupPermissionNamesSelected disabled.bind=disableSets[item] change.delegate=toggleSet(item) /> <label for=${item}1 class=\\\"form-check-label custom-control-label\\\">${'main.admin.pages.permissions.' + item & t}</label> </a> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div class=\\\"tab-pane fade show active\\\" id=nav-admin-selection role=tabpanel aria-labelledby=v-pills-admin-selection-tab> <div class=\\\"row mb-3\\\" repeat.for=\\\"subModule of getSubModulesByModule('adminselection')\\\"> <div class=\\\"card col-12\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.permissions.' + subModule & t }</h5> <div class=\\\"row mb-3\\\" repeat.for=\\\"setItem of getSetsBySubModule(subModule)\\\"> <div class=col-12> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=${setItem}_view value=${setItem}_view checked.bind=groupPermissionNamesSelected change.delegate=\\\"toggleSet(setItem + '_view')\\\"/> <label for=${setItem}_view class=form-check-label>${'main.admin.pages.permissions.' + setItem & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-11 offset-1\\\"> <div class=dropdown> <button class=\\\"btn btn-secondary dropdown-toggle\\\" type=button id=dropdownMenuButton${$index} data-toggle=dropdown aria-haspopup=true aria-expanded=false> ${setNames[setItem]} </button> <div class=dropdown-menu aria-labelledby=dropdownMenuButton${$index}> <a class=\\\"dropdown-item form-check custom-control custom-checkbox\\\" repeat.for=\\\"item of getGroupPermissionsBySet(setItem)\\\"> <input type=checkbox class=\\\"form-check-input custom-control-input custom-control-input\\\" id=${item}1 model.bind=item checked.bind=groupPermissionNamesSelected disabled.bind=disableSets[item] change.delegate=toggleSet(item) /> <label for=${item}1 class=\\\"form-check-label custom-control-label\\\" style=width:100%>${'main.admin.pages.permissions.' + item & t}</label> </a> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=nav-selection role=tabpanel aria-labelledby=v-pills-selection-tab> <div class=\\\"row mb-3\\\" repeat.for=\\\"subModule of getSubModulesByModule('selection')\\\"> <div class=\\\"card col-12\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.permissions.' + subModule & t }</h5> <div class=\\\"row mb-3\\\" repeat.for=\\\"setItem of getSetsBySubModule(subModule)\\\"> <div class=col-12> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=${setItem}_view value=${setItem}_view checked.bind=groupPermissionNamesSelected change.delegate=\\\"toggleSet(setItem + '_view')\\\"/> <label for=${setItem}_view class=form-check-label>${'main.admin.pages.permissions.' + setItem & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-11 offset-1\\\"> <div class=dropdown> <button class=\\\"btn btn-secondary dropdown-toggle\\\" type=button id=dropdownMenuButton${$index} data-toggle=dropdown aria-haspopup=true aria-expanded=false> ${setNames[setItem]} </button> <div class=dropdown-menu aria-labelledby=dropdownMenuButton${$index}> <a class=\\\"dropdown-item form-check custom-control custom-checkbox\\\" repeat.for=\\\"item of getGroupPermissionsBySet(setItem)\\\"> <input type=checkbox class=\\\"form-check-input custom-control-input custom-control-input\\\" id=${item}1 model.bind=item checked.bind=groupPermissionNamesSelected disabled.bind=disableSets[item] change.delegate=toggleSet(item) /> <label for=${item}1 class=\\\"form-check-label custom-control-label\\\" style=width:100%>${'main.admin.pages.permissions.' + item & t}</label> </a> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: CoreGroupCreate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: CoreGroupCreate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: core-groups;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\n\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\n\nimport { Notification } from \"common/services/notification\";\nimport { SecondPasswordService } from \"../../../services/groups/second-password-service\";\nimport { SecondPassword } from \"models/second-password/second-password\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\n\n@autoinject()\nexport class SecondPasswordModal {\n\n  private logger: Logger;\n  private model: SecondPassword;\n  private validationController: ValidationController;\n\n  constructor(\n    private dialogController: DialogController,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private secondPasswordService: SecondPasswordService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"SecondPasswordModal\");\n\n  }\n\n  public activate(): void {\n    this.model = new SecondPassword();\n    this.configureValidationRules();\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"password\").displayName(\"main.admin.pages.core_groups.second_password.password\").required()\n      .on(this.model);\n  }\n\n  public async submit(): Promise<void> {\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.validate();\n        }\n      });\n  }\n\n  public async validate(): Promise<any> {\n    return await this.secondPasswordService.validate(this.model)\n      .then(async (model: boolean) => {\n        this.validationController.reset();\n        if (model) {\n          this.notification.success(\"main.admin.pages.core_groups.second_password.notifications.success_validate\");\n        } else {\n          this.notification.error(\"main.admin.pages.core_groups.second_password.notifications.error_validate\");\n        }\n        return await this.dialogController.ok(model);\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h3>${'main.admin.pages.core_groups.second_password.validate_title' & t}</h3> <form> <div class=form-group> <label for=model.password>${'main.admin.pages.core_groups.second_password.password' & t}</label> <input type=password class=form-control value.bind=\\\"model.password & validate\\\"> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit()>${'main.admin.pages.core_groups.second_password.validate_button' & t}</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { ResetSecondPasswordModal } from \"./reset-second-password-modal\";\n\n@autoinject()\nexport class ResetSecondPasswordCard {\n\n  private logger: Logger;\n\n  constructor(\n    private dialogService: DialogService) {\n\n    this.logger = LogManager.getLogger(\"ResetSecondPasswordCard\");\n  }\n\n  public async resetSecondPassword(): Promise<void> {\n    this.logger.debug(\"resetSecondPassword\");\n\n    return await this.dialogService.open({\n      viewModel: ResetSecondPasswordModal\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        if (response.output) {\n          let result: boolean = <boolean>response.output;\n          this.logger.debug(\"Reset ok: \", result);\n        }\n      }\n    });\n  }\n}\n","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.core_groups.second_password.reset_title' & t}</h5> <p t=[html]main.admin.pages.core_groups.second_password.info>Create new core group</p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=resetSecondPassword()>${'main.admin.pages.core_groups.second_password.reset_button' & t}</button> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\n\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\n\nimport { Notification } from \"common/services/notification\";\nimport { ResetSecondPassword } from \"models/second-password/reset-second-password\";\nimport { SecondPasswordService } from \"../../services/groups/second-password-service\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\n\n@autoinject()\nexport class ResetSecondPasswordModal {\n\n  private logger: Logger;\n  private model: ResetSecondPassword;\n  private validationController: ValidationController;\n  private errorMessages: string[];\n\n  constructor(\n    private dialogController: DialogController,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private secondPasswordService: SecondPasswordService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ResetSecondPasswordModal\");\n\n  }\n\n  public activate(): void {\n    this.model = new ResetSecondPassword();\n    this.configureValidationRules();\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"currentPassword\").displayName(\"main.admin.pages.core_groups.second_password.current_password\").required()\n      .ensure(\"newPassword\").displayName(\"main.admin.pages.core_groups.second_password.new_password\").required()\n      .ensure(\"confirmNewPassword\").displayName(\"main.admin.pages.core_groups.second_password.confirm_new_password\").required()\n      .satisfiesRule(\"matchesProperty\", \"newPassword\")\n      .on(this.model);\n  }\n\n  public async submit(): Promise<void> {\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  get canSave(){\n    return !this.secondPasswordService.client.isRequesting;\n  }\n\n  public async save(): Promise<any> {\n    return await this.secondPasswordService.create(this.model)\n      .then(async (model: boolean) => {\n        this.validationController.reset();\n        if (model) {\n          this.notification.success(\"main.admin.pages.core_groups.second_password.notifications.success_reset\");\n        } else {\n          this.notification.error(\"main.admin.pages.core_groups.second_password.notifications.error_reset\");\n        }\n        return await this.dialogController.ok(model);\n      })\n      .catch(error => {\n        this.logger.debug(\"error: \", error);\n        this.notification.error(error);\n      });\n  }\n}\n\nValidationRules.customRule(\n  \"matchesProperty\",\n  (value, obj, otherPropertyName) =>\n    value === null\n    || value === undefined\n    || value === \"\"\n    || obj[otherPropertyName] === null\n    || obj[otherPropertyName] === undefined\n    || obj[otherPropertyName] === \"\"\n    || value === obj[otherPropertyName],\n  \"errorMessages.matchesProperty\", otherPropertyName => ({ otherPropertyName })\n);\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h3>${'main.admin.pages.core_groups.second_password.reset_title' & t}</h3> <form> <div class=form-group> <label>${'main.admin.pages.core_groups.second_password.current_password' & t}</label> <input type=password class=form-control value.bind=\\\"model.currentPassword & validate\\\"> </div> <div class=form-group> <label>${'main.admin.pages.core_groups.second_password.new_password' & t}</label> <input type=password class=form-control value.bind=\\\"model.newPassword & validate\\\"> </div> <div class=form-group> <label>${'main.admin.pages.core_groups.second_password.confirm_new_password' & t}</label> <input type=password class=form-control value.bind=\\\"model.confirmNewPassword & validate\\\"> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit() disabled.bind=!canSave>${'main.admin.pages.core_groups.second_password.reset_button' & t}</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class CoreUserChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N\n  ) {\n\n    this.logger = LogManager.getLogger(\"CoreGroupChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      // {\n      //   route: \"create\",\n      //   moduleId: PLATFORM.moduleName(\"./core-user-edit\"),\n      //   name: \"core-user-create\",\n      //   nav: false,\n      //   title: this.i18n.tr(\"main.admin.pages.core_users.create_card.title\"),\n      //   settings: {\n      //     permission: {\n      //       only: [PredefinedPermissions.CoreUserCreate]\n      //     }\n      //   }\n      // },\n\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./core-user-edit\"),\n        name: \"core-user-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.core_users.core_user\"),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.CoreUserView]\n          }\n        }\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <require from=./core-user-create-card.html></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <router-view></router-view> </div> <div class=content-sidebar> <core-user-create-card global-permission-show=\\\"can: CoreUserCreate\\\"></core-user-create-card> </div> </div> </template> \";","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\" global-permission-show=\\\"can: CoreUserCreate\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.core_users.create_card.title' & t}</h5> <p t=[html]main.admin.pages.core_users.create_card.info>Create new profile</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: core-user-child-router; params.bind: {coreUserId:'create'}\\\">${'commands.create' & t}</a> </div> </div> </template> \";","import { StoreService } from 'common/store/store-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig, RoutableComponentDetermineActivationStrategy, activationStrategy } from \"aurelia-router\";\nimport { I18N } from \"aurelia-i18n\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { CoreUserService } from \"../../services/users/core-user-service\";\nimport { CoreCompanyService } from \"../../services/companies/core-company-service\";\nimport { User } from \"models/security/user\";\nimport { CoreGroupService } from \"../../services/groups/core-group-service\";\nimport { Group } from \"models/groups/group\";\nimport { Company } from \"models/companies/company\";\nimport { SessionService } from \"common/services/session-service\";\nimport { UserState } from \"models/security/userState\";\nimport { Role } from \"models/security/role\";\nimport { State } from \"common/store/store-model\";\n\n@autoinject()\n// @connectTo()\nexport class CoreUserEdit implements RoutableComponentDetermineActivationStrategy {\n\n  private logger: Logger;\n  private model: User;\n  private validationController: ValidationController;\n  private coreGroups: Group[];\n\n  public state: State;\n\n  private masterFranchises: Company[];\n  private franchises: Company[];\n  // private selectedMasterFranchiseId: number = null;\n  // private selectedFranchiseId: number = null;\n\n  // private disableAdminRole: boolean = false;\n  // private disableCoreRole: boolean = false;\n  // private disableMasterFranchiseRole: boolean = false;\n\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private coreUserService: CoreUserService,\n    private coreGroupService: CoreGroupService,\n    private coreCompanyService: CoreCompanyService,\n    private i18n: I18N,\n    private sessionService: SessionService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"CoreUserEdit\");\n\n    this.state = this.store.state;\n\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<void> {\n    // this.logger.debug(\"Activated id:\", params.coreUserId);\n    try {\n      this.masterFranchises = await this.coreCompanyService.getByRoleId(Role.MasterFranchise);\n      this.franchises = await this.coreCompanyService.getByRoleId(Role.Franchise);\n      this.coreGroups = await this.coreGroupService.getAll();\n\n      // if (this.state && this.state.userBasicInfo) {\n      //   this.initHieranchyLevelByCurrentUserRole(this.state.userBasicInfo.roleId);\n      // }\n\n      if (!isNaN(params.coreUserId)) {\n        this.model = await this.coreUserService.getById(+params.coreUserId);\n        // this.initHieranchyLevelCompanyIdByRole();        \n      } else {\n        this.model = new User();\n        this.model.userState = UserState.Pending;\n      }\n      this.configureValidationRules();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"firstName\").displayName(\"main.admin.pages.users.first_name\").required()\n      .ensure(\"lastName\").displayName(\"main.admin.pages.users.last_name\").required()\n      .ensure(\"email\").displayName(\"main.admin.pages.users.email\").email().required()\n      .ensure(\"groupId\").displayName(\"main.admin.pages.users.group_id\").required()\n      .ensure(\"roleId\").displayName(\"main.admin.pages.users.role_id\").required()\n      .ensure(\"companyId\").displayName(\"main.admin.pages.users.company_id\").required()\n      .on(this.model);\n  }\n\n  private async submit(saveAndContinue: boolean): Promise<any> {\n    let result = await this.validationController.validate();\n    if (result.valid) {\n      if (!this.model.roleId) {\n        this.notification.warning(this.i18n.tr(\"main.admin.pages.users.errors.role_is_required\"));\n      }\n      else {\n        return await this.save(saveAndContinue);\n      }\n    }\n\n  }\n\n  get canSave() {\n    return !this.coreGroupService.client.isRequesting;\n  }\n\n  private async save(saveAndContinue: boolean): Promise<any> {\n    if (!this.model.id) {\n      return await this.coreUserService.create(this.model)\n        .then(async (model: User) => {\n          this.notification.success(\"notifications.item_added\");\n          if (!saveAndContinue) {\n            return await this.router.navigateToRoute(\"core-users\");\n          } else {\n            return await this.router.navigateToRoute(\"core-user-child-router\", { coreUserId: model.id });\n          }\n\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    } else {\n      return await this.coreUserService.update(this.model)\n        .then(async () => {\n          this.notification.success(\"notifications.item_edited\");\n          if (!saveAndContinue) {\n            return await this.router.navigateToRoute(\"core-users\");\n          }\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    }\n  }\n\n  // private setCompanyIdByRole(): void {\n  //   switch (this.model.roleId) {\n  //     case 1:\n  //     case 2:\n  //       this.model.companyId = null;//THT_CORE_COMPANY;\n  //       break;\n  //     case 3:\n  //       this.model.companyId = this.selectedMasterFranchiseId;\n  //       break;\n  //     case 4:\n  //       this.model.companyId = this.selectedFranchiseId;\n  //       break;\n  //     default:\n  //       break;\n  //   }\n  // }\n\n  // private initHieranchyLevelCompanyIdByRole(): void {\n  //   switch (this.model.roleId) {\n  //     case 1:\n  //     case 2:\n  //       break;\n  //     case 3:\n  //       this.selectedMasterFranchiseId = this.model.companyId;\n  //       break;\n  //     case 4:\n  //       this.selectedFranchiseId = this.model.companyId;\n  //       break;\n  //     default:\n  //       break;\n  //   }\n  // }\n\n  // private initHieranchyLevelByCurrentUserRole(currentUserRole: number): void {\n  //   switch (currentUserRole) {\n  //     case 1:\n  //       break;\n  //     case 2:\n  //       this.disableAdminRole = true;\n  //       break;\n  //     case 3:\n  //       this.disableAdminRole = this.disableCoreRole = true;\n  //       break;\n  //     case 4:\n  //       this.disableAdminRole = this.disableCoreRole = this.disableMasterFranchiseRole = true;\n  //       break;\n  //     default:\n  //       break;\n  //   }\n  //   // this.logger.debug(\"disableCoreRole\", this.disableCoreRole);\n  // }\n\n  public determineActivationStrategy(): any {\n    return activationStrategy.replace;\n  }\n}\n","module.exports = \"<template> <require from=../../../../models/security/userStateViewEngineHooks></require> <require from=../../../../models/security/roleViewEngineHooks></require> <form class=form> <h2>${'main.admin.pages.users.user' & t}</h2> <p> ${'main.admin.pages.core_users.editing_info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label>${'main.admin.pages.users.first_name' & t}</label> <input type=text class=form-control id=model.firstName t=[placeholder]main.admin.pages.users.first_name value.bind=\\\"model.firstName & validate\\\"> </div> </div> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label>${'main.admin.pages.users.last_name' & t}</label> <input type=text class=form-control id=model.lastName t=[placeholder]main.admin.pages.users.last_name value.bind=\\\"model.lastName & validate\\\"> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label>${'main.admin.pages.users.email' & t}</label> <input type=text class=form-control id=model.email t=[placeholder]main.admin.pages.users.email value.bind=\\\"model.email & validate\\\"> </div> </div> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label>${'main.admin.pages.users.group_id' & t}</label> <select class=form-control value.bind=\\\"model.groupId & validate\\\"> <option value=\\\"\\\">${'forms.select_option' & t}</option> <option repeat.for=\\\"option of coreGroups\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <h3>${'main.admin.pages.users.levels.title' & t}</h3> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"state.userBasicInfo.roleId == 1\\\"> <div class=\\\"col-md-3 col-12\\\"> <span class=\\\"switch switch-sm\\\"> <input type=radio class=switch id=role1 name=role model.bind=Role.Admin checked.bind=model.roleId> <label for=role1>${'main.admin.pages.users.levels.admin' & t}</label> </span> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"state.userBasicInfo.roleId <= 2\\\"> <div class=\\\"col-md-6 col-12\\\"> <span class=\\\"switch switch-sm\\\"> <input type=radio class=switch id=role2 name=role model.bind=Role.Core checked.bind=model.roleId> <label for=role2>${'main.admin.pages.users.levels.core' & t}</label> </span> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"state.userBasicInfo.roleId <= 3\\\"> <div class=\\\"col-md-6 col-12\\\"> <span class=\\\"switch switch-sm\\\"> <input type=radio class=switch id=role3 name=role model.bind=Role.MasterFranchise checked.bind=model.roleId> <label for=role3>${'main.admin.pages.users.levels.master_franchise' & t}</label> </span> </div> <div class=\\\"col-md-6 col-12\\\" if.bind=\\\"model.roleId == Role.MasterFranchise\\\"> <select class=form-control value.bind=\\\"model.companyId & validate\\\"> <option value=\\\"\\\">${'forms.select_option' & t}</option> <option repeat.for=\\\"option of masterFranchises\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <span class=\\\"switch switch-sm\\\"> <input type=radio class=switch id=role4 name=role model.bind=Role.Franchise checked.bind=model.roleId> <label for=role4>${'main.admin.pages.users.levels.franchise' & t}</label> </span> </div> <div class=\\\"col-md-6 col-12\\\" if.bind=\\\"model.roleId == Role.Franchise\\\"> <select class=form-control value.bind=\\\"model.companyId & validate\\\"> <option value=\\\"\\\">${'forms.select_option' & t}</option> <option repeat.for=\\\"option of franchises\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: CoreUserCreate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: CoreUserCreate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: core-users;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { DeleteConfirmation } from \"../../../components/delete-confirmation\";\nimport { Notification } from \"common/services/notification\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { CoreUserService } from \"../../services/users/core-user-service\";\nimport { ChangeStateConfirmation } from \"../../../components/change-state-confirmation\";\nimport { User } from \"models/security/user\";\nimport { UserState } from \"models/security/userState\";\n\n@autoinject()\nexport class CoreUserList {\n\n  private logger: Logger;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.coreUserService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  constructor(\n    private router: Router,\n    private coreUserService: CoreUserService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"CoreUserList\");\n\n  }\n\n  public async bind(): Promise<void> {\n    // this.logger.debug(\"attached\");\n    return await this.databind();\n  }\n\n\n  private async databind(): Promise<void> {\n    // this.logger.debug(\"databind\");\n    // this.logger.debug(\"parameters\", this.parameters);\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  // public async create(): Promise<any> {\n  //   return await this.dialogService.open({\n  //     viewModel: CoreGroupModal\n  //   }).whenClosed(async (response: DialogCloseResult) => {\n  //     if (!response.wasCancelled) {\n  //       if (response.output) {\n  //         let id: number = <number>response.output;\n  //         this.logger.debug(\"Save and continue id: \", id);\n  //         this.router.navigate(`core-group/${id}`);\n  //       }\n  //       else {\n  //         return await this.databind();\n  //       }\n  //     }\n  //   });\n  // }\n\n  public async changeState(item: User): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: ChangeStateConfirmation,\n      model: item.fullName\n    })\n      .whenClosed(async (response: DialogCloseResult) => {\n        if (!response.wasCancelled) {\n          return await this.coreUserService.changeState(item.id)\n            .then(() => {\n              // this.databind();\n              switch (item.userState) {\n                case UserState.Active:\n                  item.userState = UserState.Inactive;\n                  break;\n                case UserState.Inactive:\n                  item.userState = UserState.Active;\n                  break;\n                default:\n                  break;\n              }\n              this.notification.success(\"notifications.item_edited\");\n            })\n            .catch(error => {\n              this.notification.error(error);\n            });\n        }\n        else{\n          this.logger.debug(\"response canceled\")\n        }\n        \n      });\n  }\n\n  public async resendActivationMessage(id: number): Promise<void> {\n    return await this.coreUserService.resendActivationMessage(id)\n      .then(() => {\n        this.notification.success(\"main.admin.pages.users.resend_activation_completed\");\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  // public toCoreUser(id: number): boolean {\n  //   this.router.navigate(`core-user/${id}`);\n  // }\n\n  public async delete(item): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: item.fullName\n    }).whenClosed((response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        this.coreUserService.delete(item.id)\n          .then(async () => {            \n            let indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(item.id.toString());\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"notifications.item_deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class CoreUserListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"CoreUserListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./core-user-list\"),\n        name: \"core-users\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.admin.pages.core-users.title\"),\n      },\n\n      {\n        route: \"core-user/:coreUserId\",\n        moduleId: PLATFORM.moduleName(\"./core-user-child-router\"),\n        name: \"core-user-child-router\",\n        // nav: false,\n        // title: this.i18n.tr(\"main.admin.pages.core-users.core-user\"),\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=./core-user-create-card.html></require> <require from=../../../../models/security/userStateViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${'main.admin.pages.core_users.title' & t}</h2> <p> ${'main.admin.pages.core_users.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-1 scope=col>${'main.admin.pages.users.first_name' & t}</th> <th class=col-md-2 scope=col>${'main.admin.pages.users.last_name' & t}</th> <th class=col-md-2 scope=col>${'main.admin.pages.users.email' & t}</th> <th class=col-md-3 scope=col>${'main.admin.pages.users.user_name' & t}</th> <th class=col-md-1 scope=col>${'main.admin.pages.users.user_state.title' & t}</th> <th class=col-md-3 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-1 text-truncate\\\"><span title=${item.firstName}>${item.firstName}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.lastName}>${item.lastName}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.email}>${item.email}</span></td> <td class=\\\"col-md-3 text-truncate\\\"><span title=${item.userName}>${item.userName}</span></td> <td class=col-md-1>${'main.admin.pages.users.user_state.'+ UserState[item.userState] & t}</td> <td class=\\\"col-md-3 d-flex\\\"> <a class=\\\"btn btn-link\\\" global-permission-show=\\\"can: CoreUserUpdate\\\" route-href=\\\"route: core-user-child-router; params.bind: {coreUserId:item.id}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: CoreUserDelete\\\" click.delegate=delete(item) title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: CoreUserUpdate\\\" click.delegate=resendActivationMessage(item.id) title.bind=\\\"'main.admin.pages.users.resend_activation_message' & t\\\"> <i class=material-icons>email</i> </button> <button if.bind=\\\"item.userState !== UserState.Pending\\\" class=\\\"btn btn-link\\\" global-permission-show=\\\"can: CoreUserUpdate\\\" click.delegate=changeState(item) t=\\\"${item.userState === UserState.Active ? 'commands.unactivate' : 'commands.activate'}\\\">Activate</button> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> <core-user-create-card global-permission-show=\\\"can: CoreUserCreate\\\"></core-user-create-card> </div> </div> </template> \";","import { EducationalLevelCountryModal } from './educational-level-country-modal';\nimport { EducationalLevelCountry } from 'models/educational-levels-by-country/educational-level-country';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { Notification } from \"common/services/notification\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { EducationalLevelCountryService } from '../../services/educational-levels-by-country/educational-level-country-service';\nimport { CatalogService } from \"../../../services/catalogs/catalog-service\";\nimport { CatalogBase } from \"models/catalogs/catalog-base\";\nimport { ChangeStateConfirmation } from '../../../components/change-state-confirmation';\n\n@autoinject()\nexport class EducationallevelCountryList {\n\n  private logger: Logger;\n\n  private countries: CatalogBase[] = [];\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  constructor(\n    private catalogService: CatalogService,\n    private educationalLevelCountryService: EducationalLevelCountryService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"EducationallevelCountryList\");\n\n    this.parameters.search = {};\n\n  }\n\n  private async activate(params: any): Promise<void> {\n    try {\n      this.countries = await this.catalogService.getCountryAll();\n      if (this.countries.length > 0) {\n        this.parameters.search.CountryId = this.countries[0].id;\n        return await this.databind();\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async databind(): Promise<any> {\n    this.logger.debug(\"databind\");\n\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        // this.logger.debug(\"refresh\", response);\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private refresh = (): Promise<UxDatatableResponse> => {\n    // this.logger.info(\"refreshing\");\n    return this.educationalLevelCountryService.list(this.parameters);\n  }\n\n  private async edit(item: EducationalLevelCountry): Promise<void> {\n    let orginialItem = JSON.parse(JSON.stringify(item));\n    return await this.dialogService.open({\n      viewModel: EducationalLevelCountryModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.educationalLevelCountryService.update(item)\n          .then((model: EducationalLevelCountry) => {\n\n            this.logger.debug(\"model.id\", model.id);\n            item.id = model.id;\n\n            this.notification.success(\"main.admin.pages.educational_levels_country.notifications.edited\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n      else {\n        Object.assign(item, orginialItem);\n      }\n    });\n  }\n\n  public async changeState(item: EducationalLevelCountry): Promise<void> {\n    // this.logger.debug(\"item.isActive\", item.isActive);\n    return await this.dialogService.open({\n      viewModel: ChangeStateConfirmation,\n      model: item.name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.educationalLevelCountryService.changeState(item)\n          .then((model: EducationalLevelCountry) => {\n            // item.isActive = !item.isActive;\n            if (item.id === 0) {\n              item.id = model.id;\n            }\n\n            this.notification.success(\"main.admin.pages.educational_levels_country.notifications.activation_changed\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n      else {\n        item.isActive = !item.isActive;\n      }\n    });\n  }\n\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class EducationalLevelCountryListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"EducationalLevelCountryListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./educational-level-country-list\"),\n        name: \"educational-level-country-list\",\n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=../../../../models/catalogs/educationalLevelViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${'main.admin.pages.educational_levels_country.title' & t}</h2> <p> ${'main.admin.pages.educational_levels_country.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-10> <div class=form-group> <label for=countryId>${'catalogs.countries.title' & t}</label> <select value.bind=parameters.search.CountryId class=form-control id=countryId change.delegate=\\\"databind() & debounce:100\\\"> <option repeat.for=\\\"option of countries\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-2 scope=col>${'main.catalog.educational_level.title' & t}</th> <th class=col-md-3 scope=col>${'main.admin.pages.educational_levels_country.name' & t}</th> <th class=col-md-3 scope=col>${'main.admin.pages.educational_levels_country.description' & t}</th> <th class=col-md-4 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex repeat.for=\\\"item of parameters.tableData\\\"> <td class=col-md-2>${'main.catalog.educational_level.' + EducationalLevel[item.educationalLevel] & t}</td> <td class=col-md-3>${item.name}</td> <td class=col-md-3>${item.description}</td> <td class=\\\"col-md-4 d-flex\\\"> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: EducationalLevelCountryUpdate\\\" click.delegate=edit(item)> <i class=material-icons>edit</i> </button> <span class=\\\"switch switch-sm pt-2\\\"> <input type=checkbox class=switch id=isActive_${$index} checked.bind=item.isActive change.delegate=changeState(item) global-permission-enable=\\\"can: EducationalLevelCountryActivate\\\"/> <label for=isActive_${$index} class=form-check-label>&nbsp;</label> </span> </td> </tr> </tbody> </table> </div> </div> </div> </div> </template> \";","import { EducationalLevelCountry } from 'models/educational-levels-by-country/educational-level-country';\nimport { autoinject, LogManager, NewInstance } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { Contact } from \"models/contacts/contact\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\n\n@autoinject()\nexport class EducationalLevelCountryModal {\n\n  private model: EducationalLevelCountry = new EducationalLevelCountry();\n\n  private validationController: ValidationController;\n  private logger: Logger;\n\n  constructor(\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"EducationalLevelCountryModal\");\n\n  }\n\n  async activate(model: EducationalLevelCountry): Promise<void> {\n    this.logger.debug(\"activate\");\n    this.model = model;\n    this.configureValidationRules();\n  }\n\n  configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.educational_levels_country.name\").required()\n      .on(this.model);\n  }\n\n  public async submit(): Promise<void> {\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n  \n  public async save(): Promise<any> {\n    // this.logger.debug(\"save:\");\n    return await this.dialogController.ok();\n  }\n\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'main.admin.pages.educational_levels_country.title' & t}</h2> <form> <div class=form-group> <input type=text value.bind=\\\"model.name & validate\\\" class=form-control id=name t=[placeholder]main.admin.pages.educational_levels_country.name> </div> <div class=form-group> <textarea class=form-control t=[placeholder]main.admin.pages.educational_levels_country.description value.bind=model.description rows=3></textarea> </div> <div class=form-group> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","module.exports = \"<template> <div class=\\\"card card-outline-danger mb-3 text-center\\\"> <div class=card-body> <h1><i class=\\\"fa fa-exclamation-triangle\\\"></i> Not sure you should be here!</h1> <blockquote class=card-blockquote> <p>We couldn't find the page you were looking for in this restricted area.</p> <footer>Please return <a route-href=\\\"route: home;\\\">home</a></footer> </blockquote> </div> </div> </template> \";","import { autoinject, LogManager, bindable, Disposable } from \"aurelia-framework\";\nimport { Router } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { CoreCompanyService } from \"../../services/companies/core-company-service\";\nimport { Company } from \"models/companies/company\";\nimport { Role } from \"models/security/role\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from \"common/store/store-service\";\nimport { EventAggregator } from \"aurelia-event-aggregator\";\nimport { CompaniesLoadedMessage } from \"messages/companiesLoadedMessage\";\n\n@autoinject()\nexport class FranchiseDropdownSelector {\n\n  // @bindable\n  // private baseUrl: string;\n\n  @bindable\n  private routeName: string;\n\n  @bindable\n  private isRobotHunter: boolean;\n\n  private logger: Logger;\n  private companies: Company[] = [];\n  private masterFranchises: Company[] = [];\n  private franchises: Company[] = [];\n\n  private state: State;\n\n  private subscriptions: Disposable[] = [];\n\n  constructor(\n    private store: StoreService,\n    private ea: EventAggregator,\n    private coreCompanyService: CoreCompanyService,\n    private router: Router) {\n\n    this.logger = LogManager.getLogger(\"FranchiseDropDownSelector\");\n\n    this.state = this.store.state;\n\n    this.subscriptions.push(this.ea.subscribe(CompaniesLoadedMessage, this.databind.bind(this)));\n  }\n\n  public async attached(): Promise<void> {\n    this.logger.debug(\"attached\");\n    return await this.databind();\n\n  }\n\n  public async databind(): Promise<void> {\n    try {\n      // this.companies = await this.coreCompanyService.getAll();\n\n      this.companies = this.state.companies;\n\n      this.franchises = this.companies.filter(x => x.roleId === Role.Franchise);\n\n      if (this.franchises.length === 1) {\n        this.select(this.franchises[0].id);\n      }\n      else if (this.franchises.length === 0) {\n        const companyGroups = this.companies.filter(x => x.roleId === Role.Master);\n        if (companyGroups.length > 0) {\n          const franchiseId = companyGroups[0].parentId;\n\n          return this.select(franchiseId);\n        }\n      }\n\n      this.masterFranchises = this.companies.filter(x => x.roleId === Role.MasterFranchise);\n\n    }\n    catch (error) {\n      this.logger.debug(\"error\");\n    }\n\n  }\n\n  public async select(franchiseId: number): Promise<any> {\n    // this.logger.debug(\"navigating to franchiseId:\", franchiseId);    \n    return await this.router.navigateToRoute(this.routeName, { franchiseId: franchiseId , isRobotHunter: this.isRobotHunter });\n  }\n\n}\n","module.exports = \"<template> <div class=\\\"dropdown big-menu\\\"> <button type=button class=\\\"btn btn-outline-secondary btn-round dropdown-toggle d-none d-lg-block\\\" id=dropdownMenu data-toggle=dropdown aria-haspopup=true aria-expanded=false> ${'main.admin.pages.company_groups.select_franchise' & t} </button> <ul if.bind=\\\"masterFranchises.length > 0\\\" class=\\\"dropdown-menu multi-level\\\" role=menu aria-labelledby=dropdownMenu> <li repeat.for=\\\"masterFranchise of masterFranchises\\\" class=dropdown-submenu> <a class=\\\"dropdown-item caret-right\\\" tabindex=-1> <b>${masterFranchise.name}</b> <p class=small>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> </a> <ul class=dropdown-menu> <li repeat.for=\\\"franchise of companies | filter:'parentId':masterFranchise.id\\\" class=dropdown-item> <a href=# class=dropdown-item click.delegate=select(franchise.id)>${franchise.name}</a> </li> </ul> </li> </ul> <button type=button class=\\\"btn btn-outline-secondary btn-round dropdown-toggle d-lg-none\\\" data-toggle=collapse data-target=#dropdownMenu-mobile aria-expanded=false aria-controls=dropdownMenu-mobile> ${'main.admin.pages.company_groups.select_franchise' & t} </button> <ul id=dropdownMenu-mobile if.bind=\\\"masterFranchises.length > 0\\\" class=\\\"dropdown-menu--mobile collapse list-group\\\"> <li repeat.for=\\\"masterFranchise of masterFranchises\\\" class=\\\"list-group-item p-0\\\"> <a class=\\\"dropdown-item caret-right\\\" tabindex=-1 data-toggle=collapse data-target=#collapse-${masterFranchise.id} aria-expanded=false aria-controls=collapse-${masterFranchise.id}> <b>${masterFranchise.name}</b> <p class=small>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> </a> <ul class=\\\"collapse dropdown-menu\\\" id=collapse-${masterFranchise.id}> <li class=dropdown-submenu repeat.for=\\\"franchise of companies | filter:'parentId':masterFranchise.id\\\"> <a href=# class=dropdown-item click.delegate=select(franchise.id)>${franchise.name}</a> </li> </ul> </li> </ul> <div if.bind=\\\"masterFranchises.length === 0\\\" class=dropdown-menu role=menu aria-labelledby=dropdownMenu> <a repeat.for=\\\"franchise of franchises\\\" href=# class=dropdown-item click.delegate=select(franchise.id)>${franchise.name}</a> </div> </div> </template> \";","import { autoinject, LogManager, bindable, observable } from \"aurelia-framework\";\nimport { Router, NavigationInstruction } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\nimport { CoreCompanyService } from \"../../services/companies/core-company-service\";\nimport { Company } from \"models/companies/company\";\nimport { Role } from \"models/security/role\";\nimport { Notification } from \"common/services/notification\";\n@autoinject()\nexport class FranchiseSelector {\n\n  @bindable\n  private routeName: string;\n\n  @bindable\n  private franchiseId: number;\n\n  @bindable\n  private isRobotHunter: boolean;\n\n  private logger: Logger;\n  private companies: Company[] = [];\n  private masterFranchises: Company[] = [];\n\n  private masterFranchiseId: number;\n\n  constructor(\n    private coreCompanyService: CoreCompanyService,\n    private router: Router,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"FranchiseSelector\");\n  }\n\n  public async attached(): Promise<any> {\n    // this.logger.debug(\"attached\", this.franchiseId);\n    return await this.databind();\n  }\n\n  public async databind(): Promise<any> {\n    // this.logger.debug(\"databind\");\n    try {\n      let response = await this.coreCompanyService.getAll();\n      this.companies = response.filter(x => x.roleId == Role.Franchise);\n      this.masterFranchises = response.filter(x => x.roleId == Role.MasterFranchise);\n      // this.logger.debug(\"setMasterFranchiseId: \", this.masterFranchises);\n      this.setMasterFranchiseId();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private setMasterFranchiseId() {\n    if (this.franchiseId) {\n      let franchise = this.companies.find(x => x.id == this.franchiseId);\n      if (franchise) {\n        this.masterFranchiseId = franchise.parentId;\n        this.logger.debug(\"setMasterFranchiseId: \", this.masterFranchiseId);\n      }\n    }\n  }\n\n  private franchiseIdChanged() {\n    this.setMasterFranchiseId();\n  }\n\n  private async masterFranchiseChanged(): Promise<any> {\n    const visibleFranchises = this.companies.filter(f => f.parentId === this.masterFranchiseId);\n    if (visibleFranchises.length > 0) {\n      return await this.select(visibleFranchises[0].id);\n    }\n  }\n\n  public async select(franchiseId: number): Promise<any> {    \n    return await this.router.navigateToRoute(this.routeName, { franchiseId: franchiseId , isRobotHunter: this.isRobotHunter });\n  }\n\n}\n","module.exports = \"<template> <div if.bind=\\\"masterFranchises.length > 1\\\" class=row> <div class=col-12> <div class=form-group> <label for=masterFranchiseId>${'main.admin.pages.company_groups.master_franchise' & t}</label> <select value.bind=masterFranchiseId change.delegate=masterFranchiseChanged() class=form-control id=masterFranchiseId> <option repeat.for=\\\"option of masterFranchises\\\" model.bind=option.id>${option.name & t}</option> </select> </div> </div> </div> <div class=row> <div class=\\\"col-12 pre-scrollable\\\" style=max-height:310px> <div class=\\\"nav flex-column nav-pills\\\" id=v-pills-tab role=tablist aria-orientation=vertical> <a repeat.for=\\\"company of companies | filter:'parentId':masterFranchiseId\\\" href=# class=\\\"nav-link ${company.id == franchiseId ? 'active' : ''}\\\" click.delegate=select(company.id)> <h5 class=mb-1>${company.name}</h5> <p class=mb-1>${company.bussinesName}</p> </a> </div> </div> </div> </template> \";","\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration } from \"aurelia-router\";\n\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject()\nexport class GroupChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"GroupChildRouter\");\n  }\n\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: [\"\"],\n        moduleId: PLATFORM.moduleName(\"./group-edit\"),\n        name: \"groups-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.groups.group\"),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.GroupUpdate]\n          }\n        }\n      },\n      {\n        route: [\"permissions\"],\n        moduleId: PLATFORM.moduleName(\"./permissions/permission-edit\"),\n        name: \"groups-edit-permissions\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.permissions.title\"),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.GroupUpdate]\n          }\n        }\n      }\n    ]);\n  }\n}\n","module.exports = \"<template> <require from=./group-create-card></require> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <router-view></router-view> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\"> <div class=col-12> <group-create-card></group-create-card> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { GroupModal } from \"./group-modal\";\nimport { Group } from \"models/groups/group\";\nimport { GroupService } from \"../../services/groups/group-service\";\nimport { Notification } from \"common/services/notification\";\n\n@autoinject()\nexport class GroupCreateCard {\n\n  private logger: Logger;\n\n  constructor(\n    private router: Router,\n    private dialogService: DialogService,\n    private groupService: GroupService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"GroupCreateCard\");\n  }\n\n  private async create(): Promise<any> {\n    let item: Group = new Group();\n    return await this.dialogService.open({\n      viewModel: GroupModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        this.logger.debug(\"response.output\", response.output);\n        return await this.groupService.create(item)\n          .then(async (model: Group) => {\n\n            // item.id = model.id;\n            this.notification.success(\"notifications.item_added\");\n\n            if (response.output) {\n              return await this.router.navigateToRoute(\"group-child-router\", { groupId: model.id });\n            } else {\n              return await this.router.navigateToRoute(\"groups\");\n            }\n\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n}\n","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\" global-permission-show=\\\"can: GroupCreate\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.groups.create_card.title' & t}</h5> <p t=[html]main.admin.pages.groups.create_card.info>Create new core group</p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create()>${'commands.create' & t}</button> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\n\nimport { Group } from \"models/groups/group\";\nimport { Notification } from \"common/services/notification\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { GroupService } from \"../../services/groups/group-service\";\n\n@autoinject()\nexport class GroupDeleteModal {\n\n  private logger: Logger;\n  private groupToDelete: Group;\n  private groupIdToTransferUsers: number;\n  private validationController: ValidationController;\n  private groups: Group[];\n\n  constructor(\n    private dialogController: DialogController,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private groupService: GroupService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"GroupDeleteModal\");\n    this.configureValidationRules();\n  }\n\n  private async activate(item: Group): Promise<void> {\n    this.groupToDelete = Object.assign(new Group(), item);\n    return await this.groupService.getAll()\n      .then(groups => this.groups = groups)\n      .then(() => {\n        // remuevo de la lista de grupos a transferir usuarios el grupo a eliminar\n        this.groups.splice(this.groups.map(x => x.id.toString()).indexOf(item.id.toString()), 1);\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"groupIdToTransferUsers\").displayName(\"main.admin.pages.groups.group_to_transfer\").required()\n      .on(this);\n  }\n\n  public async submit(): Promise<any> {\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.dialogController.ok(this.groupIdToTransferUsers);\n        }\n      });\n  }\n}\n\n\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'commands.archive' & t}</h2> <div class=row> <div class=col-12> <p t=modals.delete_confirmation.message t-params.bind=\\\"{name: groupToDelete.name}\\\">Delete?</p> </div> </div> <form> <div class=form-group> <label>${'main.admin.pages.groups.group_to_transfer' & t}</label> <select class=form-control value.bind=\\\"groupIdToTransferUsers & validate\\\"> <option value=\\\"\\\" t=forms.select_option>select an item</option> <option repeat.for=\\\"option of groups\\\" model.bind=option.id>${option.name}</option> </select> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> <button type=submit class=\\\"btn btn-danger\\\" attach-focus=true click.delegate=submit() t=commands.archive>Delete</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\n\nimport { Group } from \"models/groups/group\";\nimport { GroupService } from \"../../services/groups/group-service\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from 'common/store/store-service';\nimport { Company } from \"models/companies/company\";\n\n@autoinject()\nexport class GroupEdit {\n\n  private logger: Logger;\n\n  private companyId: number;\n  private company: Company;\n\n  private model: Group = new Group();\n  private saveAndContinue: boolean = false;\n  private validationController: ValidationController;\n\n  private state: State;\n\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private groupService: GroupService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"GroupEdit\");\n\n    this.state = this.store.state;\n\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    // this.logger.debug(\"activate\");\n    if (!isNaN(params.companyId) && !isNaN(params.groupId)) {\n      this.companyId = +params.companyId;\n      if (!isNaN(params.companyDetailId)) {\n        this.companyId = +params.companyDetailId;\n      }\n      this.groupService.client.currentCompanyId = this.companyId;\n      this.company = this.state.companies.find(x => x.id == this.companyId);\n      try {\n        this.model = await this.groupService.getById(+params.groupId);\n        this.configureValidationRules();\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.groups.name\").required()\n      .on(this.model);\n  }\n\n  private async submit(saveAndContinue: boolean): Promise<void> {\n    this.saveAndContinue = saveAndContinue;\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.groupService.client.isRequesting;\n  }\n\n  private async save(): Promise<any> {\n    return await this.groupService.update(this.model)\n      .then(async () => {\n        this.notification.success(\"notifications.item_edited\");\n\n        if (!this.saveAndContinue) {\n          return await this.router.navigateToRoute(\"groups\");\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n}\n","module.exports = \"<template> <h2>${company.name} / ${model.name}</h2> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.admin.pages.groups.info_editing' & t} </p> </div> </div> <div class=\\\"row mb-3\\\"> <form class=col-12> <div class=form-group> <label>${'main.admin.pages.groups.name' & t}</label> <input type=text class=form-control id=model.name t=[placeholder]main.admin.pages.groups.name value.bind=\\\"model.name & validate\\\"> </div> <div class=form-group> <label>${'main.admin.pages.groups.description' & t}</label> <textarea class=form-control t=[placeholder]main.admin.pages.groups.description value.bind=\\\"model.description & validate\\\" rows=3></textarea> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: GroupCreate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: GroupCreate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: groups;\\\" t=commands.cancel>Cancel</a> </div> </form> </div> </template> \";","import { StoreService } from 'common/store/store-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { GroupService } from \"../../services/groups/group-service\";\nimport { GroupModal } from \"./group-modal\";\nimport { Group } from \"models/groups/group\";\nimport { Notification } from \"common/services/notification\";\nimport { GroupDeleteModal } from \"./group-delete-modal\";\nimport { Company } from \"models/companies/company\";\nimport { State } from \"common/store/store-model\";\nimport { CompanyDetailService } from 'main/admin/services/companies/company-detail-service';\n\n@autoinject()\nexport class GroupList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n  private company: Company;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private state: State;\n  private isLoaded: boolean = false;\n  private isMasterGroup: boolean = false;\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.groupService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private groupService: GroupService,\n    private dialogService: DialogService,\n    private companyDetailService: CompanyDetailService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"GroupList\");\n\n    this.state = this.store.state;\n  }\ndetermineActivationStrategy() {\n  return 'replace';\n}\n  private async activate(params: any, routeConfig: RouteConfig,navigationInstruction): Promise<any> {\n    // this.logger.debug(\"activate\");\n\n   const mastergroup = navigationInstruction.config.settings.isMasterGroup;\n   mastergroup ? this.isMasterGroup = true : this.isMasterGroup = false;\n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n\n  }\n\n  private async bind(): Promise<any> {\n    // this.logger.debug(\"bind\");\n\n    if (!isNaN(this.params.companyId)) {\n\n      this.companyId = +this.params.companyId;\n\n      if (this.params.companyDetailId && this.params.companyDetailId === 'create') {\n        this.companyId = null;\n      }\n      else if (!isNaN(this.params.companyDetailId)) {\n        this.companyId = +this.params.companyDetailId;\n      }\n \n\n      if (this.companyId) {\n        if (this.isMasterGroup) {\n          let companyDetail = await this.companyDetailService.getById(\n            this.companyId\n          );\n          this.companyId = companyDetail.company.parentId;  \n        }\n\n        this.groupService.client.currentCompanyId = this.companyId;\n\n        this.company = this.state.companies.find((x) => x.id == this.companyId);\n\n        this.isLoaded = true;\n\n        return await this.databind();\n      }\n    }\n  }\n\n  // public async attached(): Promise<any> {\n\n  //   // this.logger.debug(\"baseUrl:\", this.router.baseUrl);\n\n  //   if (!this.isAttached) {\n  //     // subscription\n  //     this.subscription = this.ea.subscribe(SelectedCompanyChangeMessage, (message: SelectedCompanyChangeMessage) => {\n  //       this.logger.debug(\"event companySwitcher: \", message.selectedCompanyId);\n  //       this.databind();\n  //     });\n  //   }\n  //   else {\n  //     if (this.companyId) {\n  //       this.groupService.client.selectedCompanyId = this.companyId;\n  //       return await this.databind();\n  //     }\n  //   }\n\n  // }\n\n  // public detached(): void {\n  //   if (!this.isAttached) {\n  //     this.subscription.dispose();\n  //   }\n  // }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async create(): Promise<any> {\n    let item: Group = new Group();\n    return await this.dialogService.open({\n      viewModel: GroupModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        this.logger.debug(\"response.output\", response.output);\n        return await this.groupService.create(item)\n          .then(async (model: Group) => {\n            item.id = model.id;\n            if (response.output) {\n              this.logger.debug(\"Save and continue id: \", model.id);\n              return await this.router.navigateToRoute(\"group-child-router\", { groupId: model.id });\n            } else {\n              this.parameters.tableData.unshift(item);\n              this.parameters.totalRecords++;\n              this.notification.success(\"notifications.item_added\");\n              // return await this.databind();\n            }\n\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  // private edit(groupId: number): void {\n  //   this.router.navigate(`group/${groupId}`);\n  // }\n\n  private async delete(item: Group): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: GroupDeleteModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        if (response.output) {\n          let groupIdToTransferUsers: number = <number>response.output;\n          this.logger.debug(\"groupIdToTransferUsers: \", groupIdToTransferUsers);\n          return await this.groupService.delete(item.id, groupIdToTransferUsers)\n            .then(() => {\n              let indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(item.id.toString());\n              this.parameters.tableData.splice(indexOfEditedModel, 1);\n              this.parameters.totalRecords--;\n              this.notification.success(\"notifications.item_deleted\");\n            })\n            .catch(error => {\n              this.notification.error(error);\n            });\n        }\n      }\n    });\n  }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class CoreGroupListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"CoreGroupListChildRouter\");\n  }\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./group-list\"),\n        name: \"groups\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.groups.title\"),\n      },\n\n      {\n        route: \"group/:groupId/is-master-Group/:isMasterGroup\",\n        moduleId: PLATFORM.moduleName(\"./group-child-router\"),\n        name: \"group-child-router\",\n        // nav: false,\n        // title: this.i18n.tr(\"main.admin.pages.groups.group\"),\n      },\n      {\n        route: \"master-group\",\n        moduleId: PLATFORM.moduleName(\"./group-list\"),\n        name: \"master-group\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.master_users.title\"),\n        settings: {\n          isMasterGroup: true          \n        }\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div if.bind=!companyId> <h2>${'main.admin.pages.groups.title' & t}</h2> <p> ${'main.admin.pages.groups.notification_new_company' & t} </p> </div> <div class=\\\"content-container row mb-3\\\" if.bind=companyId> <div class=content-main> <h2>${company.name} / ${'main.admin.pages.groups.title' & t}</h2> <p> ${'main.admin.pages.groups.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-4 scope=col t=main.admin.pages.core_groups.name>Name</th> <th class=col-md-4 scope=col t=main.admin.pages.core_groups.description>Description</th> <th class=col-md-4 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-4 text-truncate\\\"><span title=${item.name}>${item.name}</span></td> <td class=\\\"col-md-4 text-truncate\\\"><span title=${item.description}>${item.description}</span></td> <td class=\\\"col-md-4 d-flex\\\"> <a if.bind=!item.isDefault class=\\\"btn btn-link\\\" global-permission-show=\\\"can: GroupUpdate\\\" route-href=\\\"route: group-child-router; params.bind: {groupId:item.id,isMasterGroup:isMasterGroup}\\\" data-placement=top title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <button if.bind=!item.isDefault class=\\\"btn btn-link\\\" global-permission-show=\\\"can: GroupDelete\\\" click.delegate=delete(item) title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar global-permission-show=\\\"can: GroupCreate\\\"> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.groups.create_card.title' & t}</h5> <p t=[html]main.admin.pages.groups.create_card.info>Create new core group</p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create() t=commands.create>Create</button> </div> </div> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { Group } from \"models/groups/group\";\nimport { GroupService } from \"../../services/groups/group-service\";\nimport { Notification } from \"common/services/notification\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\n\n@autoinject()\nexport class GroupModal {\n\n  private logger: Logger;\n  private saveAndContinue: boolean = false;\n  private model: Group;\n  private validationController: ValidationController;\n  private groups: Group[];\n\n  constructor(\n    private dialogController: DialogController,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private groupService: GroupService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"GroupModal\");\n\n  }\n\n  public bind(): void {\n    this.groupService.getAll().then(groups => {\n      this.groups = groups;\n    });\n  }\n\n  public activate(model: Group): void {\n    this.model = model;\n    this.configureValidationRules();\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.groups.name\").required()\n      .ensure(\"auxGroupId\").displayName(\"main.admin.pages.groups.group_to_clone\").required()\n      .on(this.model);\n  }\n\n  public async submit(saveAndContinue: boolean): Promise<void> {\n    this.saveAndContinue = saveAndContinue;\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  public async save(): Promise<any> {\n    // this.logger.debug(\"save:\");\n    // this.validationController.reset();\n    return await this.dialogController.ok(this.saveAndContinue);\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'main.admin.pages.groups.group' & t}</h2> <form> <div class=form-group> <label>${'main.admin.pages.groups.name' & t}</label> <input type=text class=form-control id=model.name t=[placeholder]main.admin.pages.groups.name value.bind=\\\"model.name & validate\\\"> </div> <div class=form-group> <label>${'main.admin.pages.groups.group_to_clone' & t}</label> <select class=form-control value.bind=\\\"model.auxGroupId & validate:rules\\\"> <option value=\\\"\\\" disabled=disabled selected=selected t=forms.select_option>select an item</option> <option repeat.for=\\\"option of groups\\\" model.bind=option.id>${option.name}</option> </select> </div> <div class=form-group> <label>${'main.admin.pages.groups.description' & t}</label> <textarea class=form-control id=model.description t=[placeholder]main.admin.pages.groups.description value.bind=\\\"model.description & validate\\\" id=exampleFormControlTextarea1 rows=3></textarea> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit(false)>${'commands.save' & t}</button> <button class=\\\"btn btn-secondary btn-round\\\" click.delegate=dialogController.cancel() t=commands.cancel>Cancel</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { I18N } from \"aurelia-i18n\";\n\nimport { GroupService } from \"../../../services/groups/group-service\";\nimport { PermissionService } from \"../../../services/groups/permission-service\";\nimport { Permission } from \"models/groups/permission\";\nimport { Group } from \"models/groups/group\";\nimport { Notification } from \"common/services/notification\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from 'common/store/store-service';\nimport { Company } from 'models/companies/company';\n\ninterface SetNameMap {\n  [setName: string]: string;\n}\n\ninterface DisableSetMap {\n  [permission: string]: boolean;\n}\n\n@autoinject()\nexport class PermissionEdit {\n\n  private logger: Logger;\n\n  public companyId: number;\n  private company: Company;\n\n  private validationController: ValidationController;\n\n  private groupId: number;\n  private group: Group;\n  private saveAndContinue: boolean = false;\n\n  private permissions: Permission[] = [];\n\n  private groupPermissionNamesSelected: Array<string> = new Array<string>();\n\n  private disableSets: DisableSetMap = {};\n\n  private setNames: SetNameMap = {};\n\n  private state: State;\n  private isMasterGroup: boolean = false;\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private groupService: GroupService,\n    private permissionService: PermissionService,\n    private i18n: I18N) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"PermissionEdit\");\n\n    this.state = this.store.state;\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    // this.logger.debug(\"activate\");\n    if (!isNaN(params.companyId) && !isNaN(params.groupId)) {\n      this.companyId = +params.companyId;\n\n      if (!isNaN(params.companyDetailId)) {\n        this.companyId = +params.companyDetailId;\n      }  \n      this.groupService.client.currentCompanyId = +params.companyId;\n      this.company = this.state.companies.find(x => x.id == this.companyId);\n      this.groupId = +params.groupId;\n      this.isMasterGroup = params.isMasterGroup === \"true\" || params.isMasterGroup === true; \n\n      try {\n        this.group = await this.groupService.getById(this.groupId);\n        this.permissions = await this.permissionService.getAll();\n\n        for (let i: number = this.permissions.length - 1; i >= 0; i--) {\n          let groupPermissionName: string = this.permissions[i].name;\n          this.disableSets[groupPermissionName] = true;\n        }\n\n        this.groupPermissionNamesSelected = await this.groupService.getPermissionNamesById(this.groupId);\n\n        for (let i: number = this.groupPermissionNamesSelected.length - 1; i >= 0; i--) {\n          let groupPermissionName: string = this.groupPermissionNamesSelected[i];\n          this.disableSets[groupPermissionName] = false;\n          this.toggleSet(groupPermissionName);\n        }\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n  public async submit(saveAndContinue: boolean): Promise<void> {\n    this.saveAndContinue = saveAndContinue;\n    return await this.save();\n  }\n\n  get canSave() {\n    return !this.groupService.client.isRequesting;\n  }\n\n  public async save(): Promise<any> {\n    return await this.groupService.updatePermissionsNamesById(this.groupId, this.groupPermissionNamesSelected)\n      .then(async () => {\n        this.notification.success(\"notifications.item_edited\");\n\n        if (!this.saveAndContinue) {\n          return await this.router.navigateToRoute(\"groups\");\n        }\n\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private getSubModulesByModule(moduleName: string): string[] {\n    this.logger.debug(\"getSubModulesByModule:\", moduleName);\n    return this.permissions\n      .filter(x => x.name.startsWith(moduleName + \"_\"))\n      .sort((x, y) => x.id - y.id)//order by id\n      .map(x => { return x.name.split(\"_\").slice(0, 2).join(\"_\"); })\n      .filter((item, i, ar) => ar.indexOf(item) === i); // unique\n  }\n\n  private getSetsBySubModule(subModuleName: string): string[] {\n    return this.permissions\n      .filter(x => x.name.startsWith(subModuleName + \"_\"))\n      .sort((x, y) => x.id - y.id)\n      .map(x => { return x.name.split(\"_\").slice(0, 3).join(\"_\"); })\n      .filter((item, i, ar) => ar.indexOf(item) === i);\n  }\n\n  private getSelectedSetNameBySubModule(subModuleName: string): string {\n    let result: string = \"\";\n    let setPermissionNames: string[] = this.groupPermissionNamesSelected.filter(x => x.startsWith(subModuleName + \"_\"));\n    for (var i: number = 0; i < setPermissionNames.length; i++) {\n      let permissionNameTr: string = this.i18n.tr(\"main.admin.pages.permissions.\" + setPermissionNames[i]);\n      result += permissionNameTr;\n      if (i < setPermissionNames.length - 1) {\n        result += \", \";\n      }\n    }\n    // this.logger.debug(\"result\", result);\n    return result;\n  }\n\n  private getGroupPermissionsBySet(setName: string): string[] {\n    return this.permissions\n      .filter(x => x.name.startsWith(setName + \"_\"))\n      .sort((x, y) => x.id - y.id)\n      .map(x => x.name);\n  }\n\n  private toggleSet(groupPermissionName: string): void {\n    let setName: string = groupPermissionName.split(\"_\").slice(0, 3).join(\"_\");\n\n    if (groupPermissionName.endsWith(\"_view\")) {\n\n      let disable: boolean = this.groupPermissionNamesSelected.indexOf(groupPermissionName) < 0;\n\n      let groupPermissionSet: string[] = this.getGroupPermissionsBySet(setName);\n\n      // enable / disable checkboxes del set\n      for (let i: number = groupPermissionSet.length - 1; i >= 0; i--) {\n        let groupPermissionName2: string = groupPermissionSet[i];\n        this.disableSets[groupPermissionName2] = disable;\n      }\n\n      // elimino los permisos del set si se encuentra disable\n      if (disable) {\n        this.disableSets[groupPermissionName] = disable;\n\n        for (let i: number = this.groupPermissionNamesSelected.length - 1; i >= 0; i--) {\n          if (this.groupPermissionNamesSelected[i].startsWith(setName + \"_\")) {\n            this.groupPermissionNamesSelected.splice(i, 1);\n          }\n        }\n      }\n    }\n    // set dropdown name\n    this.setNames[setName] = this.getSelectedSetNameBySubModule(setName);\n\n  }\n}\n","module.exports = \"<template> <form class=form> <h2>${company.name} / ${'main.admin.pages.permissions.title' & t} / ${group.name}</h2> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-2\\\"> <div class=\\\"nav flex-column nav-pills\\\" id=v-pills-tab role=tablist aria-orientation=vertical> <a class=\\\"nav-link active\\\" id=v-pills-admin-tab data-toggle=pill role=tab aria-controls=nav-admin aria-selected=true href=#nav-admin>${'main.admin.pages.permissions.admin_module' & t}</a> <a class=nav-link id=v-pills-test-tab data-toggle=pill role=tab aria-controls=nav-test aria-selected=false href=#nav-test>${'main.admin.pages.permissions.test_module' & t}</a> <a class=nav-link id=v-pills-cross-tab data-toggle=pill role=tab aria-controls=nav-cross aria-selected=false href=#nav-cross>${'main.admin.pages.permissions.cross_functionalities' & t}</a> <a class=nav-link if.bind=isMasterGroup id=v-pills-admin-selection-tab data-toggle=pill role=tab aria-controls=nav-admin-selection aria-selected=false href=#nav-admin-selection>${'main.admin.pages.permissions.adminselection_module' & t}</a> <a class=nav-link id=v-pills-selection-tab data-toggle=pill role=tab aria-controls=nav-selection aria-selected=false href=#nav-selection>${'main.admin.pages.permissions.selection_module' & t}</a> </div> </div> <div class=\\\"col-12 col-md-10\\\"> <div class=tab-content id=v-pills-tabContent> <div class=\\\"tab-pane fade show active\\\" id=nav-admin role=tabpanel aria-labelledby=v-pills-admin-tab> <div class=\\\"row mb-3\\\" repeat.for=\\\"subModule of getSubModulesByModule('admin')\\\"> <div class=\\\"card col-12\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.permissions.' + subModule & t }</h5> <div class=\\\"row mb-3\\\" repeat.for=\\\"setItem of getSetsBySubModule(subModule)\\\"> <div class=col-12> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=${setItem}_view value=${setItem}_view checked.bind=groupPermissionNamesSelected change.delegate=\\\"toggleSet(setItem + '_view')\\\"/> <label for=${setItem}_view class=form-check-label>${'main.admin.pages.permissions.' + setItem & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-11 offset-1\\\"> <div class=dropdown> <button class=\\\"btn btn-secondary dropdown-toggle\\\" type=button id=dropdownMenuButton${$index} data-toggle=dropdown aria-haspopup=true aria-expanded=false> ${setNames[setItem]} </button> <div class=dropdown-menu aria-labelledby=dropdownMenuButton${$index}> <a class=\\\"dropdown-item form-check custom-control custom-checkbox\\\" repeat.for=\\\"item of getGroupPermissionsBySet(setItem)\\\"> <input type=checkbox class=\\\"form-check-input custom-control-input custom-control-input\\\" id=${item}1 model.bind=item checked.bind=groupPermissionNamesSelected disabled.bind=disableSets[item] change.delegate=toggleSet(item) /> <label for=${item}1 class=\\\"form-check-label custom-control-label\\\" style=width:100%>${'main.admin.pages.permissions.' + item & t}</label> </a> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=nav-test role=tabpanel aria-labelledby=v-pills-test-tab> <div class=\\\"row mb-3\\\" repeat.for=\\\"subModule of getSubModulesByModule('test')\\\"> <div class=\\\"card col-12\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.permissions.' + subModule & t }</h5> <div class=\\\"row mb-3\\\" repeat.for=\\\"setItem of getSetsBySubModule(subModule)\\\"> <div class=col-12> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=${setItem}_view value=${setItem}_view checked.bind=groupPermissionNamesSelected change.delegate=\\\"toggleSet(setItem + '_view')\\\"/> <label for=${setItem}_view class=form-check-label>${'main.admin.pages.permissions.' + setItem & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-11 offset-1\\\"> <div class=dropdown> <button class=\\\"btn btn-secondary dropdown-toggle\\\" type=button id=dropdownMenuButton${$index} data-toggle=dropdown aria-haspopup=true aria-expanded=false> ${setNames[setItem]} </button> <div class=dropdown-menu aria-labelledby=dropdownMenuButton${$index}> <a class=\\\"dropdown-item form-check custom-control custom-checkbox\\\" repeat.for=\\\"item of getGroupPermissionsBySet(setItem)\\\"> <input type=checkbox class=\\\"form-check-input custom-control-input custom-control-input\\\" id=${item}1 model.bind=item checked.bind=groupPermissionNamesSelected disabled.bind=disableSets[item] change.delegate=toggleSet(item) /> <label for=${item}1 class=\\\"form-check-label custom-control-label\\\" style=width:100%>${'main.admin.pages.permissions.' + item & t}</label> </a> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=nav-cross role=tabpanel aria-labelledby=v-pills-cross-tab> <div class=\\\"row mb-3\\\" repeat.for=\\\"subModule of getSubModulesByModule('cross')\\\"> <div class=\\\"card col-12\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.permissions.' + subModule & t }</h5> <div class=\\\"row mb-3\\\" repeat.for=\\\"setItem of getSetsBySubModule(subModule)\\\"> <div class=col-12> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=${setItem}_view value=${setItem}_view checked.bind=groupPermissionNamesSelected change.delegate=\\\"toggleSet(setItem + '_view')\\\"/> <label for=${setItem}_view class=form-check-label>${'main.admin.pages.permissions.' + setItem & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-11 offset-1\\\"> <div class=dropdown> <button class=\\\"btn btn-secondary dropdown-toggle\\\" type=button id=dropdownMenuButton${$index} data-toggle=dropdown aria-haspopup=true aria-expanded=false> ${setNames[setItem]} </button> <div class=dropdown-menu aria-labelledby=dropdownMenuButton${$index}> <a class=\\\"dropdown-item form-check custom-control custom-checkbox\\\" repeat.for=\\\"item of getGroupPermissionsBySet(setItem)\\\"> <input type=checkbox class=\\\"form-check-input custom-control-input custom-control-input\\\" id=${item}1 model.bind=item checked.bind=groupPermissionNamesSelected disabled.bind=disableSets[item] change.delegate=toggleSet(item) /> <label for=${item}1 class=\\\"form-check-label custom-control-label\\\" style=width:100%>${'main.admin.pages.permissions.' + item & t}</label> </a> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div class=\\\"tab-pane fade show active\\\" id=nav-admin-selection role=tabpanel aria-labelledby=v-pills-admin-selection-tab> <div class=\\\"row mb-3\\\" repeat.for=\\\"subModule of getSubModulesByModule('adminselection')\\\"> <div class=\\\"card col-12\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.permissions.' + subModule & t }</h5> <div class=\\\"row mb-3\\\" repeat.for=\\\"setItem of getSetsBySubModule(subModule)\\\"> <div class=col-12> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=${setItem}_view value=${setItem}_view checked.bind=groupPermissionNamesSelected change.delegate=\\\"toggleSet(setItem + '_view')\\\"/> <label for=${setItem}_view class=form-check-label>${'main.admin.pages.permissions.' + setItem & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-11 offset-1\\\"> <div class=dropdown> <button class=\\\"btn btn-secondary dropdown-toggle\\\" type=button id=dropdownMenuButton${$index} data-toggle=dropdown aria-haspopup=true aria-expanded=false> ${setNames[setItem]} </button> <div class=dropdown-menu aria-labelledby=dropdownMenuButton${$index}> <a class=\\\"dropdown-item form-check custom-control custom-checkbox\\\" repeat.for=\\\"item of getGroupPermissionsBySet(setItem)\\\"> <input type=checkbox class=\\\"form-check-input custom-control-input custom-control-input\\\" id=${item}1 model.bind=item checked.bind=groupPermissionNamesSelected disabled.bind=disableSets[item] change.delegate=toggleSet(item) /> <label for=${item}1 class=\\\"form-check-label custom-control-label\\\" style=width:100%>${'main.admin.pages.permissions.' + item & t}</label> </a> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=nav-selection role=tabpanel aria-labelledby=v-pills-selection-tab> <div class=\\\"row mb-3\\\" repeat.for=\\\"subModule of getSubModulesByModule('selection')\\\"> <div class=\\\"card col-12\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.permissions.' + subModule & t }</h5> <div class=\\\"row mb-3\\\" repeat.for=\\\"setItem of getSetsBySubModule(subModule)\\\"> <div class=col-12> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=${setItem}_view value=${setItem}_view checked.bind=groupPermissionNamesSelected change.delegate=\\\"toggleSet(setItem + '_view')\\\"/> <label for=${setItem}_view class=form-check-label>${'main.admin.pages.permissions.' + setItem & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-11 offset-1\\\"> <div class=dropdown> <button class=\\\"btn btn-secondary dropdown-toggle\\\" type=button id=dropdownMenuButton${$index} data-toggle=dropdown aria-haspopup=true aria-expanded=false> ${setNames[setItem]} </button> <div class=dropdown-menu aria-labelledby=dropdownMenuButton${$index}> <a class=\\\"dropdown-item form-check custom-control custom-checkbox\\\" repeat.for=\\\"item of getGroupPermissionsBySet(setItem)\\\"> <input type=checkbox class=\\\"form-check-input custom-control-input custom-control-input\\\" id=${item}1 model.bind=item checked.bind=groupPermissionNamesSelected disabled.bind=disableSets[item] change.delegate=toggleSet(item) /> <label for=${item}1 class=\\\"form-check-label custom-control-label\\\" style=width:100%>${'main.admin.pages.permissions.' + item & t}</label> </a> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: GroupUpdate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: GroupUpdate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: groups;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { CatalogService } from \"../../../services/catalogs/catalog-service\";\nimport { CatalogBase } from \"models/catalogs/catalog-base\";\nimport { HabeasDataCountry } from 'models/habeas-data-by-country/habeas-data-country';\nimport { HabeasDataCountryService } from 'main/admin/services/habeas-data-by-country/habeas-data-country-service';\nimport { Language } from 'models/localizations/language';\nimport { LanguageService } from '../../services/localizations/language-service';\nimport { ValidationController, ValidationControllerFactory, ValidationRules } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\n\n@autoinject()\nexport class HabeasDataCountryList {\n  private logger: Logger;\n  private countries: CatalogBase[] = [];\n  private language: Language[] = [];\n  private model: HabeasDataCountry;\n  private validationController: ValidationController;\n\n\n  constructor(\n    private catalogService: CatalogService,\n    private languageService: LanguageService,\n    private habeasDataCountryService: HabeasDataCountryService,\n    private validationControllerFactory: ValidationControllerFactory,\n    private notification: Notification) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n    this.logger = LogManager.getLogger(\"HabeasDataCountryList\");\n\n  }\n\n  private async activate(): Promise<void> {\n    try {\n      this.countries = await this.catalogService.getCountryAll();\n\n      this.language = await this.languageService.getAll();\n\n      this.model = new HabeasDataCountry();\n      this.configureValidationRules();\n\n\n      if (this.countries.length > 0) {\n        this.model.countryId = this.countries[0].id;\n        this.model.languageId = this.language[0].id;\n        return await this.databind();\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private configureValidationRules(): void {\n    this.logger.debug(\"model\", this.model);\n    ValidationRules\n      .ensure(\"habeasData\").displayName(\"main.admin.pages.agreements.description\").required()\n      .on(this.model);\n  }\n\n  private async databind(): Promise<any> {\n    this.logger.debug(\"databind\");\n\n    await this.refresh();\n\n  }\n\n  private async cancel() {\n    this.notification.warning(\"main.admin.pages.habeas_data_country.notifications.cancel\");\n    this.refresh();\n  }\n\n  private async refresh (): Promise<any> {\n    this.model.habeasData = null;\n    this.model = await this.habeasDataCountryService.getByCountryAndLanguage(this.model);\n  }\n\n  private async submit(): Promise<any> {\n    try {\n      await this.habeasDataCountryService.updateOrCreate(this.model);\n      this.notification.success(\"main.admin.pages.habeas_data_country.notifications.edited_or_created\");\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class HabeasDataCountryListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"HabeasDataCountryListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./habeas-data-country-list\"),\n        name: \"habeas-data-country-list\",\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template>\";","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${'main.admin.pages.habeas_data_country.title' & t}</h2> <p>${'main.admin.pages.habeas_data_country.info' & t}</p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 d-flex justify-content-between\\\"> <div class=form-group> <label for=model.countryId>${'catalogs.countries.title' & t}</label> <select value.bind=model.countryId class=form-control id=countryId change.delegate=\\\"refresh() & debounce:100\\\"> <option repeat.for=\\\"option of countries\\\" model.bind=option.id>${option.name}</option> </select> </div> <div class=form-group> <label for=model.languageId>${'main.admin.pages.habeas_data_country.language' & t}</label> <select value.bind=model.languageId class=form-control id=languageId change.delegate=\\\"refresh() & debounce:100\\\"> <option repeat.for=\\\"option of language\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=row style=margin-bottom:50px> <div class=col-md-12> <label>${'main.admin.pages.habeas_data_country.text' & t}</label> <quill-editor value.bind=\\\"model.habeasData & validate\\\" id=habeasData></quill-editor> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=clearfix></div> <div class=\\\"row mb-3\\\"> <div class=col> <p>&nbsp;</p> </div> </div> </div> </div> <div class=\\\"row mt-5\\\" if.bind=!isInvalid> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: EducationalLevelCountryUpdate\\\" click.delegate=submit(item)>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=cancel()>Cancel</a> </div> </div> </div> </div> </div> </template>\";","import { Router } from 'aurelia-router';\nimport { autoinject } from \"aurelia-framework\";\n\n@autoinject\nexport class Home {\n\n  constructor(private router: Router) {\n\n  }\n\n\n}\n","module.exports = \"<template> <section> <div class=\\\"row mb-4 text-center\\\"> <div class=col-12> <h1 class=display-4>${'main.admin.pages.home.title' & t}</h1> <p class=lead>${'main.admin.pages.home.info' & t}</p> </div> </div> </section> <section> <div class=\\\"row mb-4\\\"> <div class=\\\"col-6 col-md-4 col-lg-3\\\" repeat.for=\\\"route of router.navigation\\\" if.bind=!route.settings.isHome> <div class=\\\"card-selector card mb-4 card-shadow card-round\\\"> <a href.bind=route.href> <i class=\\\"material-icons large ${route.settings.icon}\\\">${route.settings.icon.startsWith('t') ? '': route.settings.icon}</i> <div class=card-body> <h3 class=card-title>${route.title}</h3> </div> </a> </div> </div> </div> </section> </template> \";","import { autoinject, LogManager, observable } from \"aurelia-framework\";\n\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration, RouteConfig } from \"aurelia-router\";\nimport { EventAggregator, Subscription } from \"aurelia-event-aggregator\";\nimport { DialogService, DialogCloseResult, DialogCancelableOperationResult } from \"aurelia-dialog\";\n\nimport { LabelService } from \"../../services/localizations/label-service\";\nimport { Label } from \"models/localizations/label\";\nimport { DeleteConfirmation } from \"../../../components/delete-confirmation\";\nimport { Notification } from \"common/services/notification\";\nimport { LabelModal } from \"./label-modal\";\nimport {\n  UxDatatableParameters,\n  UxDatatableCustomAttribute,\n  UxDatatableResponse\n} from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n@autoinject\nexport class LabelList {\n\n  private logger: Logger;\n  private data: Array<Label> = [];\n  private parameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n  private host: string;\n\n\n  private refresh = (): Promise<UxDatatableParameters> => {\n    this.logger.debug(\"refreshing\");\n    return this.labelService.list(this.parameters);\n  }\n\n  constructor(\n    private router: Router,\n    private labelService: LabelService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n    this.logger = LogManager.getLogger(\"LabelList\");\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.logger.debug(\"activate\");\n    // return await this.databind();\n  }\n\n  private async bind(): Promise<any> {\n    return await this.databind();\n  }\n\n  private async databind(): Promise<any> {\n    this.logger.debug(\"bind\");\n    return await this.labelService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  public async create(): Promise<void> {\n    let item: Label = new Label();\n    return await this.dialogService.open({\n      viewModel: LabelModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.labelService.create(item)\n          .then(async (label: Label) => {\n            item.id = label.id;\n            this.parameters.tableData.unshift(item);\n            this.parameters.totalRecords++;\n            this.notification.success(\"notifications.item_added\");\n            // return await this.databind();\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  public async edit(item: Label): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: LabelModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.labelService.update(item)\n          .then(async () => {\n            // var name = this.model.name;\n            this.notification.success(\"main.admin.pages.labels.notifications.edited\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  public async delete(id: number, name: string): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.labelService.delete(id)\n          .then(() => {\n            let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === id);\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"main.admin.pages.labels.notifications.deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n}\n","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2 t=main.admin.pages.labels.title>Label</h2> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=col-2> <ux-datatable-info parameters.bind=parameters t=[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-4 scope=col t=main.admin.pages.labels.name>Name</th> <th class=col-md-4 scope=col t=main.admin.pages.labels.referenceLanguage>Reference Language</th> <th class=col-md-1 scope=col t=main.admin.pages.labels.maxSize>Max Size</th> <th class=col-md-3 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-4 text-truncate\\\"><span title=${item.name}>${item.name}</span></td> <td class=\\\"col-md-4 text-truncate\\\"><span title=${item.referenceLanguage}>${item.referenceLanguage}</span></td> <td class=col-md-1><span title=${item.maxSize}>${item.maxSize}</span></td> <td class=\\\"col-md-3 d-flex\\\"> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: LanguageUpdate\\\" click.delegate=edit(item) title.bind=\\\"'commands.edit' & t\\\"><i class=material-icons>edit</i></button> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: LanguageUpdate\\\" click.delegate=\\\"delete(item.id, item.name)\\\" title.bind=\\\"'commands.archive' & t\\\"><i class=material-icons>archive</i></button> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> <div class=\\\"card card-shadow card-round\\\" global-permission-show=\\\"can: LanguageUpdate\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.labels.create_card.title' & t}</h5> <p t=[html]main.admin.pages.labels.create_card.info>Create</p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create() t=commands.create>Create</button> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager, NewInstance } from \"aurelia-framework\";\nimport { EventAggregator, Subscription } from \"aurelia-event-aggregator\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\n\nimport { Label } from \"models/localizations/label\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\n\n@autoinject()\nexport class LabelModal {\n\n  private logger: Logger;\n  private model: Label;\n  private validationController: ValidationController;\n\n  constructor(\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n    this.logger = LogManager.getLogger(\"LabelModal\");\n\n  }\n\n  private async activate(model: Label): Promise<any> {\n    this.model = model;\n    this.configureValidationRules();\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.labels.name\").required()\n      .ensure(\"referenceLanguage\").displayName(\"main.admin.pages.labels.referenceLanguage\").required()\n      .ensure(\"maxSize\").displayName(\"main.admin.pages.labels.maxSize\").matches(/^[0-9]*$/).required()\n      .on(this.model);\n  }\n\n  public async submit(): Promise<void> {\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  public async save(): Promise<any> {\n    return await this.dialogController.ok();\n\n  }\n}\n","module.exports = \"<template> <require from=../../../../models/localizations/labelModuleViewEngineHooks></require> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'main.admin.pages.labels.label' & t}</h2> <form> <div class=form-group> <label for=name t=main.admin.pages.labels.name>Name</label> <input attach-focus=true type=text value.bind=\\\"model.name & validate\\\" class=form-control id=name t=[placeholder]main.admin.pages.labels.name> </div> <div class=form-group> <label for=description t=main.admin.pages.labels.referenceLanguage>referenceLanguage</label> <input type=text value.bind=\\\"model.referenceLanguage & validate\\\" class=form-control id=referenceLanguage t=[placeholder]main.admin.pages.labels.referenceLanguage> </div> <div class=form-group> <label for=description t=main.admin.pages.labels.maxSize>maxSize</label> <input type=text value.bind=\\\"model.maxSize & validate\\\" class=form-control id=maxSize t=[placeholder]main.admin.pages.labels.maxSize> </div> <div class=form-group> <label for=model.labelModule>${'main.admin.pages.labels.label_modules.title' & t}</label> <select value.bind=\\\"model.labelModule & validate\\\" class=form-control id=model.labelModule> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of LabelModules\\\" model.bind=LabelModule[option]> ${'main.admin.pages.labels.label_modules.' + option & t}</option> </select> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { Router, RouterConfiguration } from \"aurelia-router\";\nimport { PLATFORM } from \"aurelia-pal\";\n\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { Logger } from \"aurelia-logging\";\nimport { I18N } from \"aurelia-i18n\";\nimport { LogManager, autoinject } from \"aurelia-framework\";\n\n@autoinject\nexport class LanguageChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"LanguageChildRouter\");\n  }\n\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    config.map([\n      // {\n      //   route: \"create\",\n      //   moduleId: PLATFORM.moduleName(\"./language-edit\"),\n      //   name: \"language-create\",\n      //   nav: false,\n      //   title: this.i18n.tr(\"main.admin.pages.languages.title\"),\n      //   settings: {\n      //     permission: {\n      //       only: [PredefinedPermissions.LanguageUpdate]\n      //     }\n      //   }\n      // },\n\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./language-edit\"),\n        name: \"language-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.languages.language\"),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.LanguageUpdate]\n          }\n        }\n      },\n      {\n        route: \"localizations\",\n        moduleId: PLATFORM.moduleName(\"./localizations/localization-list\"),\n        name: \"localizations\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.localizations.title\"),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.LocalizationUpdate]\n          }\n        }\n      }\n    ]);\n\n    this.router = router;\n  }\n}\n","module.exports = \"<template> <require from=./language-create-card.html></require> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <router-view></router-view> </div> <div class=content-sidebar> <language-create-card global-permission-show=\\\"can: LanguageCreate\\\"></language-create-card> </div> </div> </template> \";","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\" global-permission-show=\\\"can: LanguageCreate\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.languages.create_card.title' & t}</h5> <p t=[html]main.admin.pages.languages.create_card.info>Create new profile</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: language-child-router; params.bind: {languageId:'create'}\\\">${'commands.create' & t}</a> </div> </div> </template> \";","import config from 'config.js';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { Language } from \"models/localizations/language\";\nimport { LanguageService } from \"../../services/localizations/language-service\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { Culture } from \"models/localizations/culture\";\nimport { Flag } from \"models/localizations/flag\";\n\n@autoinject\nexport class LanguageEdit {\n\n  private logger: Logger;\n  private model: Language = new Language();\n  private saveAndContinue: boolean = false;\n  private validationController: ValidationController;\n  private cultures: Culture[] = [];\n  private flags: Flag[] = [];\n  private host: string;\n\n  constructor(\n    private router: Router,\n    private dialogController: DialogController,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private languageService: LanguageService,\n    ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n    \n    let backendUrl = config.URLS_BACKEND;\n\n    this.host = backendUrl + \"/modules/localization/assets/images/flags/\";\n    this.logger = LogManager.getLogger(\"LanguageEdit\");\n\n  }\n\n\n  private async activate(params: any): Promise<any> {\n\n    this.logger.debug(\"Activated id:\", params.languageId);\n    if (!params.languageId) {\n      return;\n    }\n\n    await this.languageService.cultures()\n      .then((response: Culture[]) => {\n        this.cultures = response;\n      });\n\n    await this.languageService.flags()\n      .then((response: Flag[]) => {\n        this.flags = response;\n      });\n\n    if (!isNaN(params.languageId)) {\n      return await this.languageService.getById(+params.languageId)\n        .then((language: Language) => {\n          this.model = language;\n          this.configureValidationRules();\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    }\n    else {\n      this.configureValidationRules();\n    }\n  }\n\n  private configureValidationRules(): void {\n    this.logger.debug(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.languages.name\").required()\n      .ensure(\"culture\").displayName(\"main.admin.pages.languages.culture\").required()\n      .ensure(\"flagImageFileName\").displayName(\"main.admin.pages.languages.flag\").required()\n      .on(this.model);\n  }\n\n  public async submit(saveAndContinue: boolean): Promise<void> {\n    this.logger.debug(\"submit\");\n    this.saveAndContinue = saveAndContinue;\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  get canSave(){\n    return !this.languageService.client.isRequesting;\n  }\n\n  public async save(): Promise<any> {\n    this.logger.debug(\"save\");\n\n    if (!this.model.id) {\n      return await this.languageService.create(this.model)\n        .then(async (model: Language) => {\n\n          this.notification.success(\"notifications.item_added\");\n\n          if (!this.saveAndContinue) {\n            return await this.router.navigateToRoute(\"languages\");\n          } else {\n            return await this.router.navigateToRoute(\"language-child-router\", { languageId: model.id });\n          }\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    } else {\n      return await this.languageService.update(this.model)\n        .then(async (language: Language) => {\n\n          this.notification.success(\"notifications.item_edited\");\n\n          if (!this.saveAndContinue) {\n            return await this.router.navigateToRoute(\"languages\");\n          } \n\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    }\n  }\n}\n","module.exports = \"<template> <form class=form> <h2>${'main.admin.pages.languages.language' & t} / ${model.name}</h2> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label for=name>${'main.admin.pages.languages.name' & t}</label> <input type=text value.bind=\\\"model.name & validate\\\" class=form-control t=[placeholder]main.admin.pages.languages.name> </div> </div> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label for=culture>${'main.admin.pages.languages.culture' & t}</label> <select value.bind=\\\"model.culture & validate\\\" class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of cultures\\\" model.bind=option.value>${option.name}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label for=flag>${'main.admin.pages.languages.flag' & t}</label> <select value.bind=\\\"model.flag & validate\\\" class=form-control id=flag> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of flags\\\" model.bind=option.value> ${option.name}</option> </select> </div> </div> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=isActive value.bind=model.isActive checked.bind=model.isActive /> <label for=isActive class=form-check-label>${'main.admin.pages.languages.is_active' & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-actions> <button type=submit class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: LanguageCreate\\\" t=commands.save_and_continue click.delegate=submit(true) disabled.bind=!canSave>Save and continue</button> <button type=submit class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: LanguageCreate\\\" t=commands.save click.delegate=submit(false) disabled.bind=!canSave>Save</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: languages;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </template> \";","import { autoinject, LogManager, observable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { LanguageService } from \"../../services/localizations/language-service\";\nimport { Language } from \"models/localizations/language\";\nimport { DeleteConfirmation } from \"../../../components/delete-confirmation\";\nimport { Notification } from \"common/services/notification\";\nimport { ChangeStateConfirmation } from \"../../../components/change-state-confirmation\";\nimport { UxDatatableParameters, UxDatatableResponse, UxDatatableCustomAttribute } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport config from 'config.js';\n\n@autoinject()\nexport class LanguageList {\n\n  private logger: Logger;\n  private parameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n  private host: string;\n\n  private refresh = async (): Promise<void | UxDatatableParameters> => {\n    this.logger.debug(\"refreshing\");\n    try {\n      const response = await this.languageService.list(this.parameters);\n      return response;\n    }\n    catch (error) {\n      return this.notification.error(error);\n    }\n  }\n\n  constructor(\n    private router: Router,\n    private languageService: LanguageService,\n    private dialogService: DialogService,\n    private notification: Notification\n  ) {\n\n    let backendUrl = config.URLS_BACKEND;\n\n    this.host = backendUrl + \"/modules/localization/assets/images/flags/\";\n    this.logger = LogManager.getLogger(\"LanguageList\");\n  }\n\n  private async bind(): Promise<any> {\n    this.logger.debug(\"databind\");\n    return await this.languageService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.parameters.totalRecords = response.totalRecords;\n        this.parameters.tableData = response.data;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  public async changeState(item: Language): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: ChangeStateConfirmation,\n      model: item.name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.languageService.changeState(item.id)\n          .then(() => {\n            // this.databind();\n            // item.isActive = !item.isActive;\n            this.notification.success(\"notifications.item_edited\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n      else {\n        item.isActive = !item.isActive;\n      }\n    });\n  }\n\n  public async delete(id: number, language: string): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.languageService.delete(id)\n          .then(() => {\n            let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === id);\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"notifications.item_deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class LanguageListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"LanguageListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./language-list\"),\n        name: \"languages\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.admin.pages.languages.title\"),\n      },\n\n      {\n        route: \"language/:languageId\",\n        moduleId: PLATFORM.moduleName(\"./language-child-router\"),\n        name: \"language-child-router\",\n        // nav: false,\n        // title: this.i18n.tr(\"main.admin.pages.languages.language\"),\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=./language-create-card.html></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${'main.admin.pages.languages.title' & t}</h2> <p> ${'main.admin.pages.languages.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-3 scope=col>${'main.admin.pages.languages.name' & t}</th> <th class=col-md-3 scope=col>${'main.admin.pages.languages.culture' & t}</th> <th class=col-md-3 scope=col>${'main.admin.pages.languages.flag' & t}</th> <th class=col-md-3 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-3 text-truncate\\\"><img src.bind=host+item.flag> ${item.name}</td> <td class=col-md-3>${item.culture}</td> <td class=col-md-3>${item.flag}</td> <td class=\\\"col-md-3 d-flex\\\"> <a class=\\\"btn btn-link\\\" global-permission-show=\\\"can: LanguageUpdate\\\" route-href=\\\"route: language-child-router; params.bind: {languageId:item.id}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: LanguageDelete\\\" click.delegate=\\\"delete(item.id, item.name)\\\" title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> <span class=\\\"switch switch-sm pt-2\\\"> <input type=checkbox class=switch id=isActive_${$index} checked.bind=item.isActive change.delegate=changeState(item) global-permission-enable=\\\"can: LanguageActivate\\\"/> <label for=isActive_${$index} class=form-check-label>&nbsp;</label> </span> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> <language-create-card global-permission-show=\\\"can: LanguageCreate\\\"></language-create-card> </div> </div> </template> \";","\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult, DialogCancelableOperationResult } from \"aurelia-dialog\";\nimport { LocalizationModal } from \"./localization-modal\";\nimport { LocalizationService } from \"../../../services/localizations/localization-service\";\nimport { LanguageService } from \"../../../services/localizations/language-service\";\nimport { Localization } from \"models/localizations/localization\";\nimport { Notification } from \"common/services/notification\";\nimport { UxDatatableResponse, UxDatatableCustomAttribute, UxDatatableParameters } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Language } from \"models/localizations/language\";\n\n@autoinject()\nexport class LocalizationList {\n\n  private logger: Logger;\n  private params: any;\n\n  private parameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private languageId: number;\n  private language: Language;\n\n  private refresh = (): Promise<UxDatatableResponse> => {\n    // this.logger.info(\"refreshing\");\n    return this.localizationService.list(this.languageId, this.parameters);\n  }\n\n  constructor(\n    private localizationService: LocalizationService,\n    private languageService: LanguageService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"LocalizationList\");\n  }\n\n  private async activate(params: any): Promise<any> {\n    this.params = params;\n  }\n\n  private async bind(): Promise<any> {\n\n    if (!isNaN(this.params.languageId)) {\n      this.languageId = +this.params.languageId;\n      \n      try {\n        this.language = await this.languageService.getById(+this.params.languageId);\n        return await this.databind();\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.info(\"databind\");\n\n    return await this.localizationService.list(this.languageId, this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.parameters.totalRecords = response.totalRecords;\n        this.parameters.tableData = response.data;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  public async edit(item: Localization): Promise<void> {\n    this.logger.info(\"edit\");\n\n    return await this.dialogService.open({\n      viewModel: LocalizationModal,\n      model: item\n    }).whenClosed(async (response) => {\n      if (!response.wasCancelled && response.output) {\n        if (item.id !== 0) {\n          return await this.localizationService.update(item)\n            .then(() => {\n              this.notification.success(\"main.admin.pages.localizations.notifications.edited\");\n            })\n            .catch(error => {\n              this.notification.error(error);\n            });\n        }\n        else {\n          return await this.localizationService.create(item)\n            .then(() => {\n              this.notification.success(\"main.admin.pages.localizations.notifications.edited\");\n            })\n            .catch(error => {\n              this.notification.error(error);\n            });\n        }\n      }\n    });\n  }\n}\n","module.exports = \"<template> <div if.bind=!languageId> <h2>${'main.admin.pages.languages.language' & t}</h2> <p> ${'main.admin.pages.localizations.notifications.msj' & t} </p> </div> <div if.bind=languageId> <h2>${'main.admin.pages.languages.language' & t} / ${language.name}</h2> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-4> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=col-2> <ux-datatable-info parameters.bind=parameters t=[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-3 scope=col t=main.admin.pages.localizations.label>Label</th> <th class=col-md-3 scope=col t=main.admin.pages.localizations.referenceLanguage>ReferenceLanguage </th> <th class=col-md-1 scope=col t=main.admin.pages.localizations.maxSize>MaxSize</th> <th class=col-md-3 scope=col t=main.admin.pages.localizations.translation>Translation</th> <th class=col-md-2 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-3 text-truncate\\\"><span title=${item.label}>${item.label}</span></td> <td class=\\\"col-md-3 text-truncate\\\"><span title=${item.referenceLanguage}>${item.referenceLanguage}</span></td> <td class=col-md-1><span title=${item.maxSize}>${item.maxSize}</span></td> <td class=\\\"col-md-3 text-truncate\\\"><span title=${item.translation}>${item.translation}</span></td> <td class=\\\"col-md-2 d-flex\\\"> <a class=\\\"btn btn-link\\\" global-permission-show=\\\"can: LocalizationUpdate\\\" href=# click.delegate=edit(item) title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> </td> </tr> </tbody> </table> </div> </div> </div> </template> \";","\nimport { autoinject, LogManager, NewInstance } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { Localization } from \"models/localizations/localization\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\n\n@autoinject\nexport class LocalizationModal {\n\n  private logger: Logger;\n  private model: Localization = new Localization();\n  private validationController: ValidationController;\n\n  constructor(\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n    this.logger = LogManager.getLogger(\"LocalizationModal\");\n  }\n\n  private async activate(model: Localization): Promise<void> {\n    this.model = model;\n    return this.configureValidationRules();\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"translation\").displayName(\"main.admin.pages.localizations.translation\").required()\n      .on(this.model);\n  }\n\n  public async submit(): Promise<void> {\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n\n  public async save(): Promise<any> {\n    // this.logger.debug(\"save:\");\n    // this.validationController.reset();\n    return await this.dialogController.ok(this.model);\n  }\n\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'main.admin.pages.localizations.localization' & t}</h2> <form> <div class=form-group> <label for=label1 t=main.admin.pages.localizations.label>label</label> <br> <label for=label>${model.label}</label> </div> <div class=form-group> <label for=ReferenceLanguage1 t=main.admin.pages.localizations.referenceLanguage>ReferenceLanguage</label> <br> <label for=ReferenceLanguage>${model.referenceLanguage}</label> </div> <div class=form-group> <label for=MaxSize1 t=main.admin.pages.localizations.maxSize>MaxSize</label> <br> <label for=MaxSize>${model.maxSize}</label> </div> <div class=form-group> <label for=Translation t=main.admin.pages.localizations.translation>Translation</label> <textarea maxlength.bind=model.maxSize value.bind=\\\"model.translation & validate\\\" class=form-control id=Translation></textarea> </div> <div class=form-group> <label for=comments t=main.admin.pages.localizations.comments>comments</label> <textarea value.bind=model.comments class=form-control id=comments t=[placeholder]main.admin.pages.localizations.comments>\\n          </textarea> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class MasterUserChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"MasterUserChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./master-user-edit\"),\n        name: \"master-users-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.master_users.master_user\"),\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <require from=./master-user-create-card.html></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <router-view></router-view> </div> <div class=content-sidebar> <master-user-create-card global-permission-show=\\\"can: MasterUserCreate\\\"></master-user-create-card> </div> </div> </template> \";","import { bindable, LogManager, bindingMode, autoinject, Disposable, BindingEngine } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { EventAggregator } from 'aurelia-event-aggregator';\n\n@autoinject\nexport class MasterUserCreateCard {\n\n  protected logger: Logger;\n\n  @bindable\n  public companyGroup: number;\n  private params: any = {};\n\n  constructor(\n    public element: Element,\n    private ea: EventAggregator,\n    public bindingEngine: BindingEngine) {\n    this.logger = LogManager.getLogger(\"MasterUserCreateCard\");\n\n  }\n\n  public async attached(): Promise<any> {\n}\n}\n","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.master_users.create_card.title' & t}</h5> <p t=[html]main.admin.pages.master_users.create_card.info>Create</p> <a if.bind=companyGroup class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: master-user-child-router; params.bind: {masterUserId:'create', companyGroupId:companyGroup}\\\">${'commands.create' & t}</a> <a if.bind=!companyGroup class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: master-user-child-router; params.bind: {masterUserId:'create'}\\\">${'commands.create' & t}</a> </div> </div> </template> \";","\nimport { autoinject, bindable, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig, RoutableComponentDetermineActivationStrategy, activationStrategy } from \"aurelia-router\";\n\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\n\nimport { Notification } from \"common/services/notification\";\nimport { User } from \"models/security/user\";\nimport { UserState } from \"models/security/userState\";\nimport { MasterUserService } from \"../../services/users/master-user-service\";\nimport { StoreService } from \"common/store/store-service\";\nimport { State } from \"common/store/store-model\";\nimport { Company } from \"models/companies/company\";\nimport { Group } from \"models/groups/group\";\nimport { GroupService } from \"main/admin/services/groups/group-service\";\n\n@autoinject()\nexport class MasterUserEdit implements RoutableComponentDetermineActivationStrategy {\n\n  private logger: Logger;\n  private params: any = {};\n  private groups: Group[];\n  private companyId: number;\n  private company: Company;\n  @bindable\n  public currentCompanyGroup: number;\n\n\n  private model: User = new User();\n  private saveAndContinue: boolean = false;\n  private validationController: ValidationController;\n\n  private state: State;\n\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private masterUserService: MasterUserService,\n    private groupService: GroupService\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"MasterUserEdit\");\n\n    this.state = this.store.state;\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<void> {\n    this.params = params;\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyGroupId)) {\n      this.companyId = +this.params.companyGroupId;\n    }\n\n    this.masterUserService.client.currentCompanyId = this.companyId;\n\n    this.company = this.state.companies.find(x => x.id === this.companyId);\n     this.groups = await this.groupService.getAll();\n\n    try {\n      if (!isNaN(this.params.masterUserId)) {\n        this.model = await this.masterUserService.getById(+this.params.masterUserId);\n      } \n      else {\n        this.model.userState = UserState.Pending;\n      }\n      this.configureValidationRules();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"firstName\").displayName(\"main.admin.pages.users.first_name\").required()\n      .ensure(\"lastName\").displayName(\"main.admin.pages.users.last_name\").required()\n      .ensure(\"email\").displayName(\"main.admin.pages.users.email\").email().required()\n      .on(this.model);\n  }\n\n  private async submit(saveAndContinue: boolean): Promise<void> {\n    this.saveAndContinue = saveAndContinue;\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.masterUserService.client.isRequesting;\n  }\n\n  private async save(): Promise<any> {\n    if (!this.model.id) {\n      return await this.masterUserService.create(this.model)\n        .then(async (model: User) => {\n          this.notification.success(\"notifications.item_added\");\n\n          if (!this.saveAndContinue) {\n            return await this.router.navigateToRoute(\"master-users\");\n          } else {\n            if(this.params.franchiseId){\n              return await this.router.navigateToRoute(\"master-user-child-router\", { masterUserId: model.id });\n            }\n            else{\n              return await this.router.navigateToRoute(\"master-user-child-router\", { masterUserId: model.id , companyGroupId: this.currentCompanyGroup});\n            }\n          }\n\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    } else {\n      return await this.masterUserService.update(this.model)\n        .then(async () => {\n\n          this.notification.success(\"notifications.item_edited\");\n\n          if (!this.saveAndContinue) {\n            return await this.router.navigateToRoute(\"master-users\");\n          }\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    }\n  }\n\n  public determineActivationStrategy(): any {\n    return activationStrategy.replace;\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../models/security/userStateViewEngineHooks></require> <h2 if.bind=!model.id>${'main.admin.pages.master_users.create' & t}</h2> <h2 if.bind=model.id>${company.name} / ${model.fullName}</h2> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.admin.pages.master_users.editing_info' & t} </p> </div> </div> <div class=\\\"row mb-3\\\"> <form class=col-12> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label>${'main.admin.pages.users.first_name' & t}</label> <input type=text class=form-control id=model.firstName t=[placeholder]main.admin.pages.users.first_name value.bind=\\\"model.firstName & validate\\\"> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label>${'main.admin.pages.users.last_name' & t}</label> <input type=text class=form-control id=model.lastName t=[placeholder]main.admin.pages.users.last_name value.bind=\\\"model.lastName & validate\\\"> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label>${'main.admin.pages.users.email' & t}</label> <input type=text class=form-control id=model.email t=[placeholder]main.admin.pages.users.email value.bind=\\\"model.email & validate\\\" disabled.bind=\\\"model.userState !== UserState.Pending\\\"> </div> </div> <div class=\\\"col-12 col-md-4\\\" show.bind=\\\"state && state.currentCompany && state.currentCompany.companySettings && state.currentCompany.companySettings.hasGroupManagement\\\"> <div class=form-group> <label>${'main.admin.pages.users.group_id' & t}</label> <select class=form-control value.bind=\\\"model.groupId & validate\\\"> <option repeat.for=\\\"option of groups\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: MasterUserCreate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: MasterUserCreate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: master-users;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </div> </template> \";","\nimport { autoinject, bindable, bindingMode, LogManager } from \"aurelia-framework\";\n\nimport { Logger } from \"aurelia-logging\";\nimport { RouteConfig } from \"aurelia-router\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\n\nimport { DeleteConfirmation } from \"../../../components/delete-confirmation\";\nimport { Notification } from \"common/services/notification\";\nimport { UserLoginInfoModal } from '../users/user-login-info-modal';\n\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\nimport { ChangeStateConfirmation } from \"../../../components/change-state-confirmation\";\nimport { User } from \"models/security/user\";\nimport { UserState } from \"models/security/userState\";\nimport { MasterUserService } from \"../../services/users/master-user-service\";\nimport { UserExportStatus } from \"models/security/userExportStatus\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from 'common/store/store-service';\nimport { Company } from 'models/companies/company';\nimport { ConvertUserConfirmation } from \"main/components/convert-user-confirmation\";\nimport { CompanyGroupService } from \"main/admin/services/companies/company-group-service\";\n\n@autoinject()\nexport class MasterUserList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  private companyId: number;\n  private company: Company;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private state: State;\n\n  private isLoaded: boolean = false;\n\n  private canDelete: boolean = false;\n\n  public exportStatus: UserExportStatus = UserExportStatus.None;\n  public UserExportStatus = UserExportStatus;\n\n  @bindable\n  private currentCompany: number;\n  @bindable\n  private currentCompanyGroup: number;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.masterUserService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  constructor(\n    private companyGroupService: CompanyGroupService,\n    private store: StoreService,\n    private masterUserService: MasterUserService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"MasterUserList\");\n\n    this.state = this.store.state;\n  }\n\n  private validateCanDeleted() {\n    if (this.parameters.tableData.length > 1) {\n      this.canDelete = true;\n    }\n    else {\n      this.canDelete = false;\n    }\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.params = params;\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n  }\n\n  private async bind() {\n    try{\n      this.refreshCompany();\n\n      if (this.companyId) {\n        this.logger.debug(\"companyId\", this.companyId);\n        this.masterUserService.client.currentCompanyId = this.companyId;\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n        this.isLoaded = true;\n        await this.checkExportStatus();\n        return await this.databind();\n      }\n    }catch{\n\n    }\n  }\n\n  private async refreshCompany(): Promise<void> {\n    if (this.params.companyGroupId && this.params.companyGroupId === 'create') {\n      this.companyId = null;\n    }\n    else if (!isNaN(this.params.companyGroupId)) {\n      this.logger.debug(\"companyGroupId\", this.params.companyGroupId);\n      this.companyId = +this.params.companyGroupId;\n    }\n    else if(this.currentCompany){\n      this.companyId = +this.currentCompanyGroup;\n    }\n  }\n\n  private async databind(): Promise<void> {\n    // this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n        this.validateCanDeleted();\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n\n  private async changeState(item: User): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: ChangeStateConfirmation,\n      model: item.fullName\n    })\n      .whenClosed(async (response: DialogCloseResult) => {\n        if (!response.wasCancelled) {\n          return await this.masterUserService.changeState(item.id)\n            .then(() => {\n              // this.databind();\n              switch (item.userState) {\n                case UserState.Active:\n                  item.userState = UserState.Inactive;\n                  break;\n                case UserState.Inactive:\n                  item.userState = UserState.Active;\n                  break;\n                default:\n                  break;\n              }\n              this.notification.success(\"notifications.item_edited\");\n            })\n            .catch(error => {\n              this.notification.error(error);\n            });\n        }\n      });\n  }\n\n  private async viewLoginInfo(userId: number): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: UserLoginInfoModal,\n      model: userId\n    });\n  }\n\n  private async resendActivationMessage(id: number): Promise<void> {\n    return await this.masterUserService.resendActivationMessage(id)\n      .then(() => {\n        this.notification.success(\"main.admin.pages.users.resend_activation_completed\");\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async delete(item: User): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: item.fullName\n    }).whenClosed((response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        this.masterUserService.delete(item.id)\n          .then(async () => {\n            let indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(item.id.toString());\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"notifications.item_deleted\");\n            this.validateCanDeleted();\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private async convertToUser(item: User): Promise<void> {\n    const companyGroup = await this.companyGroupService.getById(this.companyId)\n    return await this.dialogService.open({\n      viewModel: ConvertUserConfirmation,\n      model: companyGroup.companies\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        try {\n\n          let model: User = await this.masterUserService.convertToUser(item, response.output);\n          let indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(item.id.toString());\n          this.parameters.tableData.splice(indexOfEditedModel, 1);\n          this.parameters.totalRecords--;\n          this.notification.success(\"notifications.item_added\");\n          this.validateCanDeleted();\n        } catch (error) {\n          this.notification.error(error);\n        }\n      }\n    });\n  }\n\n  public async exportUsers(): Promise<void> {\n    try {\n      this.exportStatus = UserExportStatus.Processing;\n      await this.masterUserService.generateExport();\n    } catch (error) {\n      this.exportStatus = UserExportStatus.None;\n      this.notification.error(error);\n    }\n  }\n\n  public async downloadExport(): Promise<void> {\n    try {\n      const url = await this.masterUserService.getExportDownloadUrl();\n      if (url) {\n        window.open(url, \"_blank\");\n      }\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public async checkExportStatus(): Promise<void> {\n    try {\n      this.exportStatus = await this.masterUserService.getExportStatus();\n    } catch {\n      this.exportStatus = UserExportStatus.None;\n    }\n  }\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class UserListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"UserListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./master-user-list\"),\n        name: \"master-users\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.admin.pages.users.title\"),\n      },\n\n      {\n        route: \":masterUserId\",\n        moduleId: PLATFORM.moduleName(\"./master-user-child-router\"),\n        name: \"master-user-child-router\",\n        // nav: false,\n        // title: this.i18n.tr(\"main.admin.pages.users.user\"),\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=./master-user-create-card></require> <require from=../../../../models/security/userStateViewEngineHooks></require> <div if.bind=\\\"!companyId && currentCompany == 0\\\"> <h2>${'main.admin.pages.master_users.title' & t}</h2> <p> ${'main.admin.pages.master_users.notification_new_company_group' & t} </p> </div> <div class=\\\"content-container row mb-3\\\" if.bind=\\\"companyId || currentCompany != 0\\\"> <div class=content-main> <h2>${company.name} / ${'main.admin.pages.master_users.title' & t}</h2> <p> ${'main.admin.pages.master_users.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-2 scope=col>${'main.admin.pages.users.first_name' & t}</th> <th class=col-md-2 scope=col>${'main.admin.pages.users.last_name' & t}</th> <th class=col-md-2 scope=col>${'main.admin.pages.users.email' & t}</th> <th class=col-md-2 scope=col>${'main.admin.pages.users.user_name' & t}</th> <th class=col-md-1 scope=col>${'main.admin.pages.users.user_state.title' & t}</th> <th class=col-md-3 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.firstName}>${item.firstName}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.lastName}>${item.lastName}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.email}>${item.email}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.userName}>${item.userName}</span></td> <td class=\\\"col-md-1 text-truncate\\\">${'main.admin.pages.users.user_state.'+ UserState[item.userState] & t}</td> <td class=\\\"col-md-3 d-flex\\\"> <a class=\\\"btn btn-link\\\" global-permission-show=\\\"can: MasterUserUpdate\\\" route-href=\\\"route: master-user-child-router; params.bind: {masterUserId:item.id, companyGroupId:currentCompanyGroup}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <button class=\\\"btn btn-link\\\" if.bind=canDelete global-permission-show=\\\"can: MasterUserDelete\\\" click.delegate=delete(item) title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: MasterUserUpdate\\\" click.delegate=resendActivationMessage(item.id) title.bind=\\\"'main.admin.pages.users.resend_activation_message' & t\\\"> <i class=material-icons>mail</i>  </button> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: CoreUserView\\\" click.delegate=viewLoginInfo(item.id) title.bind=\\\"'commands.link' & t\\\"> <i class=material-icons>link</i> </button> <button class=\\\"btn btn-link\\\" if.bind=canDelete global-permission-show=\\\"can: MasterUserCreate\\\" click.delegate=convertToUser(item) title.bind=\\\"'commands.convert' & t\\\"> <i class=material-icons>supervisor_account</i> </button> <button if.bind=\\\"item.userState !== UserState.Pending\\\" class=\\\"btn btn-link\\\" global-permission-show=\\\"can: MasterUserUpdate\\\" click.delegate=changeState(item) t=\\\"${item.userState === UserState.Active ? 'commands.unactivate' : 'commands.activate'}\\\">Activate</button> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> <master-user-create-card company-group.bind=currentCompanyGroup global-permission-show=\\\"can: MasterUserCreate\\\"></master-user-create-card> <div class=\\\"card card-shadow card-round mt-3\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.master_users.export.title' & t}</h5> <p class=card-text> ${'main.admin.pages.master_users.export.async_description' & t} </p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=exportUsers() disabled.bind=\\\"exportStatus === UserExportStatus.Processing\\\"> <span if.bind=\\\"exportStatus !== UserExportStatus.Ready\\\">${'main.admin.pages.master_users.export.generate' & t}</span> <span if.bind=\\\"exportStatus === UserExportStatus.Ready\\\">${'main.admin.pages.master_users.export.regenerate' & t}</span> </button> <button if.bind=\\\"exportStatus === UserExportStatus.Processing\\\" class=\\\"btn btn-link\\\" click.delegate=checkExportStatus() title.bind=\\\"'commands.refresh' & t\\\"> <i class=material-icons>refresh</i> </button> <button if.bind=\\\"exportStatus === UserExportStatus.Ready\\\" class=\\\"btn btn-primary btn-round\\\" click.delegate=downloadExport()> ${'main.admin.pages.master_users.export.download' & t} </button> </div> </div> </div> </div> </template> \";","\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration } from \"aurelia-router\";\n\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject()\nexport class MessageChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n\n    this.logger = LogManager.getLogger(\"MessageChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./message-edit\"),\n        name: \"message-activations\",\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.messages.activations\"),\n        // settings: {\n        //   permission: {\n        //     only: [PredefinedPermissions.MessageUpdate]\n        //   },\n        //   t: \"main.admin.pages.messages.activations\"\n        // }\n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","import { autoinject, LogManager, NewInstance } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\n\nimport { MessageTemplate } from \"models/messages/message-template\";\nimport { MessageTemplateService } from \"../../services/messages/message-template-service\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\n\nimport { Language } from \"models/localizations/language\";\nimport { CoreLanguageService } from \"main/admin/services/localizations/core-language-service\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from \"common/store/store-service\";\nimport { Company } from \"models/companies/company\";\n\n@autoinject()\nexport class MessageEdit {\n\n  private logger: Logger;\n  private params: any = {};\n\n  private companyId: number;\n  private company: Company;\n  \n  private model: MessageTemplate;\n  private saveAndContinue: boolean = false;\n  private validationController: ValidationController;\n  private languages: Array<Language>;\n\n  private state: State;\n\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private notification: Notification,\n    public languagesService: CoreLanguageService,\n    private validationControllerFactory: ValidationControllerFactory,\n    private messageTemplateService: MessageTemplateService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"MessageEdit\");\n\n    this.state = this.store.state;\n\n  }\n\n  public async activate(params: any): Promise<void> {\n    this.params = params;\n  }\n\n  public async bind(): Promise<any> {\n    \n    try {\n      this.languages = await this.languagesService.getAll();\n\n      this.companyId =  +this.params.companyId;\n      this.messageTemplateService.client.currentCompanyId = this.companyId;\n      this.company = this.state.companies.find(x => x.id == this.companyId);\n      \n      this.model = await this.messageTemplateService.getMessageByTemplateName(this.params.messageId);\n      this.configureValidationRules();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"languageId\").displayName(\"main.admin.pages.messages.language\").required()\n      .ensure(\"subject\").displayName(\"main.admin.pages.messages.subject\").required()\n      .ensure(\"emailBody\").displayName(\"main.admin.pages.messages.emailBody\").required()\n      .ensure(\"smsBody\").displayName(\"main.admin.pages.messages.smsBody\").required()\n      .ensure(\"messagePeriod\").displayName(\"main.admin.pages.messages.messagePeriod\").required().when(x => this.model.name == 'Test.Reminder')\n      .ensure(\"hasReceiveCopy\").displayName(\"main.admin.pages.messages.hasReceiveCopy\").required().when(x => this.model.name == 'Test.Activations')\n      .on(this.model);\n  }\n\n  public async submit(saveAndContinue: boolean): Promise<void> {\n    this.saveAndContinue = saveAndContinue;\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.messageTemplateService.client.isRequesting;\n  }\n\n  public async save(): Promise<any> {\n    if (this.model.id === undefined || this.model.id === 0) {\n      return await this.messageTemplateService.create(this.model)\n        .then(async (response: MessageTemplate) => {\n          this.model = response;\n          this.notification.success(\"notifications.item_added\");\n          if (!this.saveAndContinue) {\n            return await this.router.navigateToRoute(\"messages\");\n          }\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    } else {\n      return await this.messageTemplateService.update(this.model)\n        .then(async () => {\n          this.notification.success(\"notifications.item_edited\");\n          if (!this.saveAndContinue) {\n            return await this.router.navigateToRoute(\"messages\");\n          }\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    }\n\n  }\n}\n","module.exports = \"<template> <require from=../../../../models/messages/messagePeriodViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2>${company.name} / ${'main.admin.pages.messages.type.' + model.name & t}</h2> <p> ${'main.admin.pages.messages.info_editing.' + model.name & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"card mb-3\\\"> <label class=p-3 for=tokens t=main.admin.pages.messages.template>Tokens</label> <ul class=\\\"list-group list-group-flush\\\"> <li class=list-group-item repeat.for=\\\"item of model.tokens\\\"> <div class=row> <div class=\\\"col-md-2 col-12\\\">${item.name} </div> <div class=\\\"col-md-10 col-12\\\">${'main.admin.pages.messages.public_tokens.descriptions.' + item.description & t} </div> </div> </li> </ul> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=localizationId t=main.admin.pages.messages.language>Language</label> <select value.bind=\\\"model.languageId & validate\\\" class=form-control id=languageId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"item of languages\\\" model.bind=item.id>${item.name}</option> </select> </div> </div> <div class=\\\"col-12 col-md-4\\\" if.bind=\\\"model.name=='Test_Reminder'\\\"> <div class=form-group> <label for=messagePeriod t=main.admin.pages.messages.messagePeriod.title>Period</label> <select value.bind=\\\"model.messagePeriod & validate\\\" class=form-control id=messagePeriod required.bind=model.messagePeriod> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of MessagePeriods\\\" model.bind=MessagePeriod[option]> ${'main.admin.pages.messages.messagePeriod.' + option & t}</option> </select> </div> </div> <div class=\\\"col-12 col-md-4\\\" if.bind=\\\"model.name=='Test_Activations'\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.hasReceiveCopy class=switch checked.bind=model.hasReceiveCopy> <label for=model.hasReceiveCopy>${'main.admin.pages.messages.hasReceiveCopy' & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <label for=subject t=main.admin.pages.messages.subject>Translation</label> <input type=text class=form-control id=model.subject t=[placeholder]main.admin.pages.messages.subject value.bind=\\\"model.subject & validate\\\"> </div> </div> </div> <div class=\\\"row mb-3\\\" style=margin-bottom:50px> <div class=col-12> <label for=emailBody t=main.admin.pages.messages.message.emailBody>body</label> <quill-editor value.bind=\\\"model.emailBody & validate\\\"></quill-editor> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=clearfix></div> </div> </div> <div class=\\\"row mb-4\\\"> <div class=col-12> <p>&nbsp;</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <label for=Translation t=main.admin.pages.messages.message.smsBody>sms</label> <textarea maxlength=120 value.bind=\\\"model.smsBody & validate\\\" class=form-control id=Translation></textarea> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: MessageUpdate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: MessageUpdate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: messages;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </div></template> \";","import { MessageAgreement } from 'models/messages/message-agreement';\nimport { autoinject, LogManager, NewInstance } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\n\n\nimport { MessageAgreementService } from \"../../services/messages/message-agreement-service\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\n\n\nimport { Subscription } from \"aurelia-event-aggregator\";\n\n@autoinject()\nexport class MessageFranchiseAgreement {\n\n  private logger: Logger;\n  private model: MessageAgreement;\n  private saveAndContinue: boolean = false;\n  private validationController: ValidationController;\n  private expreRegular: RegExp;\n\n  constructor(\n    private router: Router,\n    private dialogController: DialogController,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private messageAgreementService: MessageAgreementService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"MessageFranchiseAgreement\");\n    this.expreRegular = /^[a-zA-Z0-9_\\-\\.~]{2,}@[a-zA-Z0-9_\\-\\.~]{2,}\\.[a-zA-Z]{2,15}((;\\s?){1}[a-zA-Z0-9_\\-\\.~]{2,}@[a-zA-Z0-9_\\-\\.~]{2,}\\.[a-zA-Z]{2,15})*?$/;\n  }\n\n\n  public async activate(params: any, routeConfig: RouteConfig): Promise<void> {\n    // this.logger.debug(\"Activate franchiseId:\", params.franchiseId);\n    if (params.franchiseId) {\n      try {\n        this.model = await this.messageAgreementService.getById(+params.franchiseId);\n        this.configureValidationRules();\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"draft\").displayName(\"main.admin.pages.messages.franchise.draft\").matches(this.expreRegular).required()\n      .ensure(\"review\").displayName(\"main.admin.pages.messages.franchise.review\").matches(this.expreRegular).required()\n      .ensure(\"forwarded\").displayName(\"main.admin.pages.messages.franchise.forwarded\").matches(this.expreRegular).required()\n      .ensure(\"cancelled\").displayName(\"main.admin.pages.messages.franchise.cancelled\").matches(this.expreRegular).required()\n      .ensure(\"valid\").displayName(\"main.admin.pages.messages.franchise.valid\").matches(this.expreRegular).required()\n      .ensure(\"inWarranty\").displayName(\"main.admin.pages.messages.franchise.inWarranty\").matches(this.expreRegular).required()\n      .ensure(\"datesModification\").displayName(\"main.admin.pages.messages.franchise.datesModification\").matches(this.expreRegular).required()\n      .on(this.model);\n  }\n\n  public async submit(saveAndContinue: boolean): Promise<void> {\n    this.saveAndContinue = saveAndContinue;\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.messageAgreementService.client.isRequesting;\n  }\n\n  public async save(): Promise<any> {\n    return await this.messageAgreementService.update(this.model)\n      .then(async () => {\n        this.notification.success(\"notifications.item_edited\");\n\n        if (!this.saveAndContinue) {\n          // return this.router.parent.navigate(`${this.model.franchiseId}`);\n          return await this.router.navigateToRoute(\"messages-franchise-main\");\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n}\n","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2>${model.franchise.name} / ${'main.admin.pages.messages.franchise.type.agreement' & t}</h2> <p> ${'main.admin.pages.messages.franchise.info_editing.agreement' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <label for=draft t=main.admin.pages.messages.franchise.draft>Translation</label> <input type=text class=form-control id=model.draft t=[placeholder]main.admin.pages.messages.franchise.draft value.bind=\\\"model.draft & validate\\\"> </div> <div class=form-group> <label for=review t=main.admin.pages.messages.franchise.review>Translation</label> <input type=text class=form-control id=model.review t=[placeholder]main.admin.pages.messages.franchise.review value.bind=\\\"model.review & validate\\\"> </div> <div class=form-group> <label for=forwarded t=main.admin.pages.messages.franchise.forwarded>Translation</label> <input type=text class=form-control id=model.forwarded t=[placeholder]main.admin.pages.messages.franchise.forwarded value.bind=\\\"model.forwarded & validate\\\"> </div> <div class=form-group> <label for=forwarded t=main.admin.pages.messages.franchise.approved>Translation</label> <input type=text class=form-control id=model.approved t=[placeholder]main.admin.pages.messages.franchise.approved value.bind=\\\"model.approved & validate\\\"> </div> <div class=form-group> <label for=cancelled t=main.admin.pages.messages.franchise.cancelled>Translation</label> <input type=text class=form-control id=model.cancelled t=[placeholder]main.admin.pages.messages.franchise.cancelled value.bind=\\\"model.cancelled & validate\\\"> </div> <div class=form-group> <label for=valid t=main.admin.pages.messages.franchise.valid>Translation</label> <input type=text class=form-control id=model.valid t=[placeholder]main.admin.pages.messages.franchise.valid value.bind=\\\"model.valid & validate\\\"> </div> <div class=form-group> <label for=inWarranty t=main.admin.pages.messages.franchise.inWarranty>Translation</label> <input type=text class=form-control id=model.inWarranty t=[placeholder]main.admin.pages.messages.franchise.inWarranty value.bind=\\\"model.inWarranty & validate\\\"> </div> <div class=form-group> <label for=datesModification t=main.admin.pages.messages.franchise.datesModification>Translation</label> <input type=text class=form-control id=model.datesModification t=[placeholder]main.admin.pages.messages.franchise.datesModification value.bind=\\\"model.datesModification & validate\\\"> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-enable=\\\"can: FranchiseUpdate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-enable=\\\"can: FranchiseUpdate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: messages-franchise-main;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </div> </template> \";","\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration } from \"aurelia-router\";\n\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject()\nexport class MessageChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n\n    this.logger = LogManager.getLogger(\"MessageChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./message-franchise-main\"),\n        name: \"messages-franchise-main\",\n        // nav: false,\n        // title: this.i18n.tr(\"main.admin.pages.messages.franchise.main\"),\n        // settings: {\n        //   permission: {\n        //     only: [PredefinedPermissions.MessageUpdate]\n        //   },\n        //   t: \"main.admin.pages.messages.franchise.main\"\n        // }\n      },\n\n      {\n        route: 'agreement',\n        moduleId: PLATFORM.moduleName(\"./message-franchise-agreement\"),\n        name: \"message-franchise-agreement\",\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.messages.franchise.type.agreement\"),\n        // settings: {\n        //   permission: {\n        //     only: [PredefinedPermissions.MessageUpdate]\n        //   },\n        //   t: \"main.admin.pages.messages.franchise.agreement\"\n        // }\n      },\n\n      {\n        route: 'talent',\n        moduleId: PLATFORM.moduleName(\"./message-franchise-talent\"),\n        name: \"message-franchise-talent\",\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.messages.franchise.type.talent\"),\n        // settings: {\n        //   permission: {\n        //     only: [PredefinedPermissions.MessageUpdate]\n        //   },\n        //   t: \"main.admin.pages.messages.franchise.talent\"\n        // }\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class MessageFranchiseListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n      \n    this.logger = LogManager.getLogger(\"MessageFranchiseListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([     \n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./message-franchises\"),\n        name: \"select-franchise\",\n        // nav: false,\n        // title: this.i18n.tr(\"main.admin.pages.messages.select_franchise\"),\n      },\n\n      {\n        route: \"franchise/:franchiseId\",\n        moduleId: PLATFORM.moduleName(\"./message-franchise-child-router\"),\n        name: \"message-franchise-child-router\",\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.messages.franchise.title\"),\n      },   \n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","import { View } from 'aurelia-framework';\nimport { autoinject, LogManager, NewInstance } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\n\nimport { MessageTemplateService } from \"../../services/messages/message-template-service\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { MessageTemplate } from 'models/messages/message-template';\n\n@autoinject()\nexport class MessageFranchiseMain {\n\n  private logger: Logger;\n\n  // private validationController: ValidationController;\n  // private messagesTemplates: Array<MessageTemplate>;\n\n  constructor(\n    // private router: Router,\n    // private dialogController: DialogController,\n    // private notification: Notification,\n    // private validationControllerFactory: ValidationControllerFactory,\n    // private messageTemplateService: MessageTemplateService\n  ) {\n\n        // this.validationController = this.validationControllerFactory.createForCurrentScope();\n        // this.validationController.addRenderer(new BootstrapFormRenderer());\n        this.logger = LogManager.getLogger(\"MessageFranchiseMain\");\n\n  }\n\n  // public async activate(params: any, routeConfig: RouteConfig, view: View): Promise<void> {\n\n  //   this.logger.debug(\"Activate companyId:\", params.companyId);\n  //   if (!params.companyId) {\n  //     return;\n  //   }    \n  // }\n\n  // public toConfig(type: string): boolean {   \n  //     return    this.router.navigate(`${encodeURIComponent(type)}`);\n  // }\n       \n\n}\n","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${'main.admin.pages.messages.activations' & t}</h2> <p> ${'main.admin.pages.messages.info_editing' & t} </p> <hr/> <ul class=\\\"list-group list-group-flush\\\"> <li class=\\\"list-group-item justify-content-between\\\"> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-10\\\"> <h3>${'main.admin.pages.messages.franchise.type.agreement' & t}</h3> <p>${'main.admin.pages.messages.franchise.type.comment.agreement' & t} </p> </div> <div class=\\\"col-12 col-md-2 text-right\\\"> <a class=\\\"btn btn-secondary btn-sm padded\\\" global-permission-show=\\\"can: FranchiseView\\\" route-href=\\\"route: message-franchise-agreement;\\\" t=commands.config>Configurar</a> </div> </div> </li> <li class=\\\"list-group-item justify-content-between\\\"> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-10\\\"> <h3>${'main.admin.pages.messages.franchise.type.talent' & t}</h3> <p>${'main.admin.pages.messagesfranchise.type.comment.talent' & t} </p> </div> <div class=\\\"col-12 col-md-2 text-right\\\"> <a class=\\\"btn btn-secondary btn-sm padded\\\" global-permission-show=\\\"can: FranchiseView\\\" route-href=\\\"route: message-franchise-talent;\\\" t=commands.config>Configurar</a> </div> </div> </li> </ul> </div> </div> </template> \";","import { MessageTalent } from 'models/messages/message-talent';\nimport { autoinject, LogManager, NewInstance } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\n\n\nimport { MessageTalentService } from \"../../services/messages/message-talent-service\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\n\n\nimport { Subscription } from \"aurelia-event-aggregator\";\n\n@autoinject()\nexport class MessageFranchiseTalent {\n\n  private logger: Logger;\n  private model: MessageTalent;\n  private saveAndContinue: boolean = false;\n  private validationController: ValidationController;\n  private expreRegular: RegExp;\n\n  constructor(\n    private router: Router,\n    private dialogController: DialogController,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private messageTalentService: MessageTalentService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n    this.expreRegular = /^[a-zA-Z0-9_\\-\\.~]{2,}@[a-zA-Z0-9_\\-\\.~]{2,}\\.[a-zA-Z]{2,15}((;\\s?){1}[a-zA-Z0-9_\\-\\.~]{2,}@[a-zA-Z0-9_\\-\\.~]{2,}\\.[a-zA-Z]{2,15})*?$/;\n    this.logger = LogManager.getLogger(\"MessageFranchiseTalent\");\n\n  }\n\n\n  public async activate(params: any, routeConfig: RouteConfig): Promise<void> {\n    this.logger.debug(\"Activate franchiseId:\", params.franchiseId);\n    if (params.franchiseId) {\n      try {\n        this.model = await this.messageTalentService.getById(+params.franchiseId);\n        this.configureValidationRules();\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"assignment\").displayName(\"main.admin.pages.messages.franchise.assignment\").matches(this.expreRegular).required()\n      .ensure(\"removal\").displayName(\"main.admin.pages.messages.franchise.removal\").matches(this.expreRegular).required()\n      .on(this.model);\n  }\n\n  public async submit(saveAndContinue: boolean): Promise<void> {\n    this.saveAndContinue = saveAndContinue;\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  public async save(): Promise<any> {\n    return await this.messageTalentService.update(this.model)\n      .then(async () => {\n        this.notification.success(\"notifications.item_edited\");\n\n        if (!this.saveAndContinue) {\n          // return this.router.parent.navigate(`${this.model.franchiseId}`);\n          return await this.router.navigateToRoute(\"messages-franchise-main\");\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n}\n","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2>${model.franchise.name} / ${'main.admin.pages.messages.franchise.type.talent' & t}</h2> <p> ${'main.admin.pages.messages.franchise.info_editing.talent' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <label for=assignment t=main.admin.pages.messages.franchise.assignment>Translation</label> <input type=text class=form-control id=model.assignment t=[placeholder]main.admin.pages.messages.franchise.assignment value.bind=\\\"model.assignment & validate\\\"> </div> <div class=form-group> <label for=removal t=main.admin.pages.messages.franchise.removal>Translation</label> <input type=text class=form-control id=model.removal t=[placeholder]main.admin.pages.messages.franchise.removal value.bind=\\\"model.removal & validate\\\"> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-enable=\\\"can: FranchiseUpdate\\\" click.delegate=submit(true)>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-enable=\\\"can: FranchiseUpdate\\\" click.delegate=submit(false)>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: messages-franchise-main;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </div> </template> \";","\nexport class MessageFranchises {\n\n}\n","module.exports = \"<template> <require from=../franchises/franchise-dropdown-selector></require> <div class=\\\"row mb-3\\\"> <div class=col-12> <h2>${'main.admin.pages.messages.franchise.activations' & t}</h2> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.admin.pages.messages.franchise.info_editing' & t} </p> </div> </div> <franchise-dropdown-selector style=text-align:center route-name=message-franchise-child-router></franchise-dropdown-selector> </div> </div> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class MessageListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n      \n    this.logger = LogManager.getLogger(\"MessageListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./message-main\"),\n        name: \"messages\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.admin.pages.messages.title\"),\n      },\n\n      {\n        route: \"message/:messageId\",\n        moduleId: PLATFORM.moduleName(\"./message-child-router\"),\n        name: \"message-child-router\",\n        //nav: false\n      },\n\n      {\n        route: 'summary-reports',\n        moduleId: PLATFORM.moduleName(\"./message-summary\"),\n        name: \"message-summary-reports\",\n        //nav: true,\n        title: this.i18n.tr(\"main.admin.pages.messages.summaryreport\"),\n        // settings: {\n        //   permission: {\n        //     only: [PredefinedPermissions.MessageUpdate]\n        //   },\n        //   t: \"main.admin.pages.messages.summaryreport\"\n        // }\n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","\n\nimport { View } from 'aurelia-framework';\nimport { autoinject, LogManager, NewInstance } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\n\nimport { MessageTemplateService } from \"../../services/messages/message-template-service\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\n\n\nimport { MessageTemplate } from 'models/messages/message-template';\nimport { Company } from 'models/companies/company';\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\n\n@autoinject()\nexport class MessageMain {\n\n  private logger: Logger;\n  private params: any = {};\n\n  private validationController: ValidationController;\n  private messagesTemplates: Array<MessageTemplate>;\n\n  public companyId: number;\n  private company: Company;\n  private state: State;\n  private isLoaded: boolean = false;\n\n  constructor(\n    private router: Router,\n    private store: StoreService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private messageTemplateService: MessageTemplateService) {\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"MessageMain\");\n\n    this.state = this.store.state;\n  }\n\n  public async activate(params: any, routeConfig: RouteConfig, view: View): Promise<void> {\n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n  }\n\n  private async bind() {\n    // this.logger.debug(\"bind\");\n    if (!isNaN(this.params.companyId)) {\n\n      this.companyId = +this.params.companyId;\n      this.messageTemplateService.client.currentCompanyId = this.companyId;\n      this.company = this.state.companies.find(x => x.id == this.companyId);\n      this.isLoaded = true;\n\n      try {\n        this.messagesTemplates = await this.messageTemplateService.getAll();\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n  public toSummary(): any {\n    return this.router.navigate(\"summary-reports\");\n  }\n}\n","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${company.name} / ${'main.admin.pages.messages.activations' & t}</h2> <p> ${'main.admin.pages.messages.info_editing' & t} </p> <hr/> <ul class=\\\"list-group list-group-flush\\\"> <li repeat.for=\\\"template of messagesTemplates\\\" class=\\\"list-group-item justify-content-between\\\"> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-10\\\"> <h3>${'main.admin.pages.messages.type.' + template.name & t}</h3> <p>${'main.admin.pages.messages.type.comment.' + template.name & t} </p> </div> <div class=\\\"col-12 col-md-2 text-right\\\"> <a class=\\\"btn btn-secondary btn-sm padded\\\" global-permission-show=\\\"can: MessageUpdate\\\" route-href=\\\"route: message-child-router; params.bind: {messageId: template.name}\\\">${'commands.config' & t}</a> </div> </div> </li> </ul> <ul class=\\\"list-group list-group-flush\\\"> <li class=\\\"list-group-item justify-content-between\\\"> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-10\\\"> <h3>${'main.admin.pages.messages.type.summaryreport' & t}</h3> <p>${'main.admin.pages.messages.type.comment.summaryreport' & t} </p> </div> <div class=\\\"col-12 col-md-2 text-right\\\"> <a class=\\\"btn btn-secondary btn-sm padded\\\" global-permission-show=\\\"can: MessageUpdate\\\" href=# click.delegate=toSummary()>${'commands.config' & t}</a> </div> </div> </li> </ul> </div> </div> </template> \";","\nimport { View } from 'aurelia-framework';\nimport { autoinject, LogManager, NewInstance } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\n\nimport { MessageSummaryReport } from \"models/messages/message-summary-report\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { MessageSummaryService } from '../../services/messages/message-summary-service';\nimport { Company } from 'models/companies/company';\nimport { StoreService } from 'common/store/store-service';\nimport { State } from 'common/store/store-model';\n\n\n@autoinject()\nexport class MessageSummary {\n\n  private logger: Logger;\n  private params: any = {};\n\n  private companyId: number;\n  private company: Company;\n\n  private model: MessageSummaryReport = new MessageSummaryReport();\n  private saveAndContinue: boolean = false;\n  private validationController: ValidationController;\n\n  private state: State;\n\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private dialogController: DialogController,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private messageSummaryService: MessageSummaryService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"MessageSummary\");\n\n    this.state = this.store.state;\n  }\n\n\n  public async activate(params: any, routeConfig: RouteConfig, view: View): Promise<void> {\n    this.params = params;\n  }\n\n  public async bind(): Promise<any> {\n    try {\n      this.companyId =  +this.params.companyId;\n\n      this.messageSummaryService.client.currentCompanyId = +this.params.companyId;\n      this.company = this.state.companies.find(x => x.id == this.companyId);\n\n      this.model = await this.messageSummaryService.get();\n      this.configureValidationRules();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"isConsumption\").displayName(\"main.admin.pages.messages.isConsumption\").required()\n      .ensure(\"consumptionPeriod\").displayName(\"main.admin.pages.messages.messagePeriod\").required().when(x => this.model.isConsumption)\n      .ensure(\"isPending\").displayName(\"main.admin.pages.messages.isConsumption\").required()\n      .ensure(\"pendingPeriod\").displayName(\"main.admin.pages.messages.messagePeriod\").required().when(x => this.model.isPending)\n      .ensure(\"isActiveUser\").displayName(\"main.admin.pages.messages.isConsumption\").required()\n      .ensure(\"activeUserPeriod\").displayName(\"main.admin.pages.messages.messagePeriod\").required().when(x => this.model.isActiveUser)\n      .ensure(\"isActivityDelivery\").displayName(\"main.admin.pages.messages.isConsumption\").required()\n      .ensure(\"activityDeliveryPeriod\").displayName(\"main.admin.pages.messages.messagePeriod\").required().when(x => this.model.isActivityDelivery)\n      .on(this.model);\n  }\n\n  public async submit(saveAndContinue: boolean): Promise<void> {\n    this.saveAndContinue = saveAndContinue;\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.messageSummaryService.client.isRequesting;\n  }\n\n  public async save(): Promise<any> {\n    try {\n      await this.messageSummaryService.update(this.model)\n\n      this.notification.success(\"notifications.item_edited\");\n\n      if (!this.saveAndContinue) {\n        return await this.router.navigateToRoute(\"messages\");\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n\n  }\n\n  public filter(hasChanged: boolean, ban: number): void {\n    if (!hasChanged) {\n      switch (ban) {\n        case 1:\n          this.model.consumptionPeriod = null;\n          break;\n        case 2:\n          this.model.pendingPeriod = null;\n          break;\n        case 3:\n          this.model.activeUserPeriod = null;\n          break;\n        case 4:\n          this.model.activityDeliveryPeriod = null;\n          break;\n      }\n    }\n  }\n}\n","module.exports = \"<template> <require from=../../../../models/messages/messagePeriodViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2>${company.name} / ${'main.admin.pages.messages.type.summaryreport' & t}</h2> <p> ${'main.admin.pages.messages.type.info_editing.summaryreport' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.isConsumption class=switch checked.bind=model.isConsumption change.delegate=filter(model.isConsumption,1)> <label for=model.isConsumption>${'main.admin.pages.messages.isConsumption' & t}</label> </span> <select value.bind=\\\"model.consumptionPeriod & validate\\\" class=form-control id=consumptionPeriod disabled.bind=!model.isConsumption required.bind=model.consumptionPeriod> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of MessagePeriods\\\" model.bind=MessagePeriod[option]> ${'main.admin.pages.messages.messagePeriod.' + option & t}</option> </select> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.isPending class=switch checked.bind=model.isPending change.delegate=filter(model.isPending,2)> <label for=model.isPending>${'main.admin.pages.messages.isPending' & t}</label> </span> <select value.bind=\\\"model.pendingPeriod & validate\\\" class=form-control id=pendingPeriod disabled.bind=!model.isPending required.bind=model.pendingPeriod> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of MessagePeriods\\\" model.bind=MessagePeriod[option]> ${'main.admin.pages.messages.messagePeriod.' + option & t}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.isActiveUser class=switch checked.bind=model.isActiveUser change.delegate=filter(model.isActiveUser,3)> <label for=model.isActiveUser>${'main.admin.pages.messages.isActiveUser' & t}</label> </span> <select value.bind=\\\"model.activeUserPeriod & validate\\\" class=form-control id=activeUserPeriod disabled.bind=!model.isActiveUser required.bind=model.activeUserPeriod> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of MessagePeriods\\\" model.bind=MessagePeriod[option]> ${'main.admin.pages.messages.messagePeriod.' + option & t}</option> </select> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.isActivityDelivery class=switch checked.bind=model.isActivityDelivery change.delegate=filter(model.isActivityDelivery,4)> <label for=model.isActivityDelivery>${'main.admin.pages.messages.isActivityDelivery' & t}</label> </span> <select value.bind=\\\"model.activityDeliveryPeriod & validate\\\" class=form-control id=activityDeliveryPeriod disabled.bind=!model.isActivityDelivery required.bind=model.activityDeliveryPeriod> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of MessagePeriods\\\" model.bind=MessagePeriod[option]> ${'main.admin.pages.messages.messagePeriod.' + option & t}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-enable=\\\"can: MessageUpdate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-enable=\\\"can: MessageUpdate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: messages;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </div> </template> \";","import { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { Logger } from \"aurelia-logging\";\nimport { I18N } from \"aurelia-i18n\";\nimport { LogManager, autoinject } from \"aurelia-framework\";\n\n@autoinject\nexport class ModularQuestionaryChild {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"ModularQuestionaryChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    config.map([\n      {\n        route: \"\",\n        name: \"modular-questionary-edit\",\n        moduleId: PLATFORM.moduleName(\"./modular-questionary-edit\"),\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.questionaries.questionary\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.QuestionaryUpdate]\n          }\n        }\n      },\n      {\n        route: \"modular-thematic-variables\",\n        name: \"modular-thematic-variable-list-child-router\",\n        moduleId: PLATFORM.moduleName(\"./modular-thematic-variables/modular-thematic-variable-list-child-router\"),\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.modular_questionaries.modular_thematic_variables.title\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.QuestionaryUpdate]\n          }\n        }\n      },\n       {\n        route: \"modular-questions\",\n        name: \"modular-question-list-child-router\",\n        moduleId: PLATFORM.moduleName(\"./modular-questions/modular-question-list-child-router\"),\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.modular_questionaries.modular_questions.title\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.QuestionaryUpdate]\n          }\n        }\n      },\n      {\n        route: \"modular-scales\",\n        name: \"modular-scale-list-child-router\",\n        moduleId: PLATFORM.moduleName(\"../modular-scales/modular-scale-list-child-router\"),\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.modular-questionaries.scales.title\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.QuestionaryView]\n          }\n        }\n      },\n    ]);\n\n    this.router = router;\n  }\n\n}\n","module.exports = \"<template> <require from=./modular-questionary-create-card.html></require> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\" global-permission-show=\\\"can: QuestionaryCreate\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.questionaries.create_card.title' & t}</h5> <p t=[html]main.admin.pages.questionaries.create_card.info>Create new questionaries</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: modular-questionary-child-router; params.bind: {questionaryId:'create'}\\\">${'commands.create' & t}</a> </div> </div> </template> \";","import { NoDiscType } from 'models/questionaries/noDiscType';\nimport { ProgrammingLanguage } from 'models/test-perfiltic/programmingLanguage';\nimport { Router } from \"aurelia-router\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { Questionary } from \"models/questionaries/questionary\";\n\nimport { ItemToQualify } from \"models/questionaries/itemToQualify\";\nimport { QuestionaryType } from \"models/questionaries/questionaryType\";\nimport { Language } from \"models/localizations/language\";\n\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { CoreLanguageService } from \"main/admin/services/localizations/core-language-service\";\nimport { PerfilticService } from 'main/admin/services/perfiltic/perfiltic-service';\nimport { ModularQuestionaryService } from 'main/admin/services/questionaries/modular-questionary-service';\nimport { QuestionaryService } from 'main/admin/services/questionaries/questionary-service';\n\n@autoinject()\nexport class ModularQuestionaryEdit {\n\n  private logger: Logger;\n  private parameters = new UxDatatableParameters();\n  private model: Questionary = new Questionary();\n  private languages: Language[] = [];\n  private programmingLanguages: ProgrammingLanguage[] = [];\n  public isDisabled: boolean;\n  public questionaries: Questionary[] = [];\n  public incompatibleQuestionaryIds: number[] = [];\n\n  private validationController: ValidationController;\n\n  constructor(\n    private questionariesService: ModularQuestionaryService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private router: Router,\n    public languagesService: CoreLanguageService,\n    public questionaryType: QuestionaryType,\n    public itemToQualify: ItemToQualify,\n    public perfilticservice: PerfilticService,\n    public questionaryService :QuestionaryService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"QuestionaryEdit\");\n\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.questionaries.name\").required()\n      .ensure(\"questionaryType\").displayName(\"main.admin.pages.questionaries.type\").required()\n      .ensure(\"itemToQualify\").displayName(\"main.admin.pages.questionaries.item_to_qualify\").required()\n      .ensure(\"organizationType\").displayName(\"main.admin.pages.questionaries.organization_type\").required()\n      .ensure(\"languageId\").displayName(\"main.admin.pages.questionaries.language\").required()\n      .ensure(\"programmingLanguageId\").displayName(\"main.admin.pages.questionaries.programmingLanguageId\").required()\n      .ensure(\"averageTime\").displayName(\"main.admin.pages.questionaries.average_time\").required().matches(/^[0-9]*$/)\n      .ensure(\"order\").displayName(\"main.admin.pages.questionaries.order\").matches(/^[0-9]*$/)\n      .on(this.model);\n  }\n\n  private async activate(params: any): Promise<void> {\n    // this.logger.info(\"activate\");\n    try {\n      this.languages = await this.languagesService.getAll();     \n      if (!this.model.id) {\n      this.model.questionaryType = QuestionaryType.NoDisc;\n      this.model.itemToQualify = ItemToQualify.Person;\n      this.model.noDiscType = NoDiscType.General;\n      this.model.hasManipulationScale = true;\n      this.isDisabled = true;\n    }\n      if (!isNaN(params.questionaryId)) {\n        this.model = await this.questionariesService.getById(+params.questionaryId);\n         this.questionaries = (await this.questionaryService.getAll())\n      .filter(q=> q.languageId == this.model.languageId);\n        if (this.model.noDiscType === NoDiscType.EngineersTest) {\n          this.programmingLanguages = await this.perfilticservice.getAll();\n        }\n      }\n      this.configureValidationRules();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(keepEditing);\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  get canSave() {\n    return !this.questionariesService.client.isRequesting;\n  }\n\n  private async changeNoDiscType(itm) {\n    if (itm === NoDiscType.EngineersTest) {\n      if (this.programmingLanguages.length == 0) {\n        this.programmingLanguages = await this.perfilticservice.getAll();\n      }\n    }\n    else {\n      this.model.programmingLanguageId = 0;\n    }\n  }\n\n  public async save(keepEditing: boolean): Promise<any> {\n    this.logger.info(\"save\");\n    try {\n\n      if (!this.model.id) {\n        this.model.isModular = true;\n        let response: Questionary = await this.questionariesService.create(this.model);\n\n        this.model.id = response.id;\n\n        this.notification.success(\"main.admin.pages.questionaries.messages.questionary_added\");\n\n        if (!keepEditing) {\n          return await this.router.navigateToRoute(\"modular-questionaries\");\n        } else {\n          return await this.router.navigateToRoute(\"modular-questionary-child-router\", { questionaryId: this.model.id });\n        }\n\n      } else {\n        await this.questionariesService.update(this.model);\n\n        this.notification.success(\"main.admin.pages.questionaries.messages.questionary_edited\");\n\n        if (!keepEditing) {\n          return await this.router.navigateToRoute(\"modular-questionaries\");\n        }\n\n      }\n\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public changeItemToQualify() {\n    if (this.model.noDiscType == NoDiscType.Performance\n      || this.model.noDiscType == NoDiscType.Potential) {\n      this.model.itemToQualify = ItemToQualify.Observed;\n      this.isDisabled = true;\n    } else {\n      this.isDisabled = false;\n    }\n\n  }\n    private async filterQuestionaries() {\n    if (this.model.questionaryIncompatibilities) {\n      this.model.questionaryIncompatibilities = [];\n    }\n    const all = await this.questionaryService.getAll();\n    this.questionaries = all.filter(q => q.languageId == this.model.languageId\n    );\n\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../models/questionaries/questionaryTypeViewEngineHooks></require> <require from=../../../../models/questionaries/itemToQualifyViewEngineHooks></require> <require from=../../../../models/questionaries/organizationTypeViewEngineHooks></require> <require from=../../../../models/questionaries/noDiscTypeViewEngineHooks></require> <require from=../../../../models/questionaries/gameTestViewEngineHooks></require> <require from=../../../components/questionary-selector></require> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2 if.bind=!model.id>${'main.admin.pages.questionaries.new' & t}</h2> <h2 if.bind=model.id>${model.name}</h2> <p>${'main.admin.pages.questionaries.editing_info' & t}</p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <label for=Name t=main.admin.pages.questionaries.name>Name</label> <input type=text value.bind=\\\"model.name & validate\\\" class=form-control id=Name t=[placeholder]main.admin.pages.questionaries.name> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group if.bind=!model.id> <label for=questionaryType>${'main.admin.pages.questionaries.questionary_type.title' & t}</label> <select value.bind=\\\"model.questionaryType & validate\\\" class=form-control id=questionaryType disabled.bind=isDisabled> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of QuestionaryTypes\\\" model.bind=QuestionaryType[option]> ${'main.admin.pages.questionaries.questionary_type.' + option & t}</option> </select> </div> <div class=form-group if.bind=model.id> <label>${'main.admin.pages.questionaries.questionary_type.title' & t}</label> <p>${'main.admin.pages.questionaries.questionary_type.' + QuestionaryType[model.questionaryType] & t}</p> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group if.bind=\\\"!model.id && model.questionaryType == QuestionaryType.Disc\\\"> <label for=itemToQualify t=main.admin.pages.questionaries.item_to_qualify>Item to qualify</label> <select value.bind=\\\"model.itemToQualify & validate\\\" class=form-control id=itemToQualify disabled.bind=isDisabled> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of ItemsToQualify\\\" model.bind=ItemToQualify[option]> ${'main.admin.pages.questionaries.items_to_qualify.' + option & t}</option> </select> </div> <div class=form-group if.bind=\\\"!model.id && model.questionaryType == QuestionaryType.NoDisc\\\"> <label for=itemToQualify t=main.admin.pages.questionaries.item_to_qualify>Item to qualify</label> <select value.bind=\\\"model.itemToQualify & validate\\\" class=form-control id=itemToQualify disabled.bind=isDisabled> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of ItemsToQualify\\\" model.bind=ItemToQualify[option]> ${'main.admin.pages.questionaries.items_to_qualify.' + option & t}</option> </select> </div> <div class=form-group if.bind=\\\"model.id && model.questionaryType == QuestionaryType.NoDisc\\\"> <label for=itemToQualify t=main.admin.pages.questionaries.item_to_qualify>Item to qualify</label> <p>${'main.admin.pages.questionaries.items_to_qualify.' + ItemToQualify[model.itemToQualify] & t}</p> </div> <div class=form-group if.bind=\\\"model.id && model.questionaryType == QuestionaryType.Disc\\\"> <label for=itemToQualify t=main.admin.pages.questionaries.item_to_qualify>Item to qualify</label> <p>${'main.admin.pages.questionaries.items_to_qualify.' + ItemToQualify[model.itemToQualify] & t}</p> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group if.bind=\\\"!model.id && model.questionaryType == QuestionaryType.NoDisc\\\"> <label for=noDiscType t=main.admin.pages.questionaries.team_types.title>No Disc type</label> <select value.bind=\\\"model.noDiscType & validate\\\" class=form-control id=noDiscType change.delegate=changeItemToQualify() change.delegate=changeNoDiscType(model.noDiscType) disabled.bind=true> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of NoDiscTypes\\\" model.bind=NoDiscType[option]> ${'main.admin.pages.questionaries.no_disc_type.' + option & t}</option> </select> </div> <div class=form-group if.bind=\\\"model.id && model.questionaryType == QuestionaryType.NoDisc\\\"> <label for=noDiscType t=main.admin.pages.questionaries.team_types.title>Team type</label> <p>${'main.admin.pages.questionaries.no_disc_type.' + NoDiscType[model.noDiscType] & t}</p> </div> <div class=form-group if.bind=\\\"!model.id && model.questionaryType == QuestionaryType.Disc && model.itemToQualify == ItemToQualify.Organization\\\"> <label for=organizationType t=main.admin.pages.questionaries.organization_types.title>Organization type</label> <select value.bind=\\\"model.organizationType & validate\\\" class=form-control id=organizationType> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of OrganizationTypes\\\" model.bind=OrganizationType[option]> ${'main.admin.pages.questionaries.organization_types.' + option & t}</option> </select> </div> <div class=form-group if.bind=\\\"model.id && model.questionaryType == QuestionaryType.Disc && model.itemToQualify == ItemToQualify.Organization\\\"> <label for=organizationType t=main.admin.pages.questionaries.organization_types.title>Organization type</label> <p>${'main.admin.pages.questionaries.organization_types.' + OrganizationType[model.organizationType] & t} </p> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <label for=localizationId t=main.admin.pages.questionaries.language>Language</label> <select value.bind=\\\"model.languageId & validate\\\" class=form-control id=languageId change.delegate=filterQuestionaries()> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"item of languages\\\" model.bind=item.id>${item.name}</option> </select> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group if.bind=\\\"model.questionaryType == QuestionaryType.NoDisc && model.itemToQualify == ItemToQualify.Person \\n                                    && model.noDiscType == NoDiscType.EngineersTest\\\"> <label for=programmingLanguageId t=main.admin.pages.questionaries.programmingLanguage>Programming Language</label> <select value.bind=\\\"model.programmingLanguageId & validate\\\" class=form-control id=programmingLanguageId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"item of programmingLanguages\\\" model.bind=item.id>${item.name}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=endButton checked.bind=model.hasEndButton /> <label for=endButton class=form-check-label>${'main.admin.pages.questionaries.end_button' & t}</label> </span> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=chronometer checked.bind=model.hasChronometer /> <label for=chronometer class=form-check-label>${'main.admin.pages.questionaries.chronometer' & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input disabled.bind=model.id type=checkbox class=switch id=gameTest checked.bind=model.hasGameTest /> <label for=gameTest class=form-check-label>GameTest</label> </span> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=testControl checked.bind=model.hasTestControl /> <label for=testControl class=form-check-label>${'main.admin.pages.test_management.questionaries_configuration.has_test_control' & t}</label> </span> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input disabled.bind=model.id type=checkbox class=switch id=manipulationScale checked.bind=model.hasManipulationScale /> <label for=manipulationScale class=form-check-label>${'main.admin.pages.modular_questionaries.has_manipulation_scale' & t}</label> </span> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group if.bind=\\\"model.hasGameTest && model.itemToQualify == ItemToQualify.Person\\\"> <label t=main.admin.pages.questionaries.game_test.title>Game Test</label> <select disabled.bind=model.id value.bind=\\\"model.gameTest & validate\\\" class=form-control id=gameTest> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of GameTests\\\" model.bind=GameTest[option]> ${'main.admin.pages.questionaries.game_test.' + option & t}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label for=localizationId t=main.admin.pages.questionaries.incompatibility>Questionries Incompatibility</label> <questionary-selector value.bind=model.questionaryIncompatibilities params-list.bind=questionaries questionary-id.bind=model.id> </questionary-selector> </div> </div> </div> </form></div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button type=button click.delegate=submit(true) global-permission-show=\\\"can: QuestionaryCreate\\\" class=\\\"btn btn-primary btn-round\\\" t=commands.save_and_continue disabled.bind=!canSave>Save and edit</button> <button type=button click.delegate=submit(false) global-permission-show=\\\"can: QuestionaryCreate\\\" class=\\\"btn btn-primary btn-round\\\" t=commands.save disabled.bind=!canSave>Save</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: modular-questionaries;\\\" t=commands.cancel>Cancel</a> </div> </div> </div>   </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { Notification } from \"common/services/notification\";\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { QuestionaryType } from \"models/questionaries/questionaryType\";\nimport { DeleteConfirmation } from \"../../../components/delete-confirmation\";\nimport { ChangeStateConfirmation } from \"../../../components/change-state-confirmation\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { LanguageService } from \"main/admin/services/localizations/language-service\";\nimport { Language } from \"models/localizations/language\";\nimport { SearchParams } from \"models/questionaries/searchParams\";\nimport { ModularQuestionaryService } from \"main/admin/services/questionaries/modular-questionary-service\";\nimport { Router } from \"aurelia-router\";\n\n@autoinject()\nexport class ModularQuestionaryList {\n\n  private logger: Logger;\n  private languages: Language[];\n  private selectedLanguageId: number;\n\n  private parameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  constructor(\n    private languageService: LanguageService,\n    private questionaryService: ModularQuestionaryService,\n    private dialogService: DialogService,\n    private notification: Notification,\n    public questionaryType: QuestionaryType,\n    private router: Router) {\n\n    this.logger = LogManager.getLogger(\"QuestionaryList\");\n  }\n\n  private refresh = (): Promise<UxDatatableResponse> => {\n    return this.questionaryService.list(this.parameters);\n  }\n\n  private async bind(): Promise<any> {\n    this.languages = await this.languageService.getAll();\n    const response: UxDatatableResponse = await this.questionaryService.list(this.parameters);\n    this.parameters.tableData = response.data;\n    this.parameters.totalRecords = response.totalRecords;\n  }\n\n  public async selectLanguage() {\n    if (this.selectedLanguageId) {\n      const language = this.languages.find(x => x.id === this.selectedLanguageId);\n      this.parameters.search = <SearchParams>{ LanguageId: language.id };\n      await this.bind();\n    }\n  }\n\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  public async deletemanager(model: Questionary): Promise<any> {\n\n    if (model.isOriginal) {\n      return await this.delete(model.id, model.name);\n    }\n  }\n\n  public async delete(id: number, name: string) {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.questionaryService.delete(id)\n          .then(() => {\n            let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === id);\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"main.admin.pages.questionaries.messages.questionary_deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  public async changeState(item: Questionary): Promise<void> {\n    this.logger.debug(\"item.isActive\", item.isActive);\n    return await this.dialogService.open({\n      viewModel: ChangeStateConfirmation,\n      model: item.name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.questionaryService.changeState(item.id)\n          .then(() => {\n            this.notification.success(\"main.admin.pages.questionaries.messages.questionary_edited\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n      else {\n        item.isActive = !item.isActive;\n      }\n    });\n  }\n\n  private async getPrivateMedia(privateUrl: string) {\n    try {\n      if (privateUrl != null) {\n        return this.router.navigate(privateUrl);\n      }\n    } catch (error){\n      this.notification.error(error);\n    }\n  }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class ModularQuestionaryListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"ModularQuestionaryListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./modular-questionary-list\"),\n        name: \"modular-questionaries\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.admin.pages.questionaries.title\"),\n      },\n\n      {\n        route: \"modular-questionary/:questionaryId\",\n        moduleId: PLATFORM.moduleName(\"./modular-questionary-child-router\"),\n        name: \"modular-questionary-child-router\",\n        // nav: false,\n        // title: this.i18n.tr(\"main.admin.pages.questionaries.questionary\"),\n      },\n      \n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=./modular-questionary-create-card.html></require> <require from=../../../../models/questionaries/questionaryTypeViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${'main.admin.pages.questionaries.title' & t}</h2> <p>${'main.admin.pages.questionaries.subtitle' & t}</p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=col-md-4> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <select class=form-control value.bind=selectedLanguageId change.delegate=selectLanguage()> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of languages\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-3 scope=col t=main.admin.pages.questionaries.name>Name</th> <th class=col-md-3 scope=col t=main.admin.pages.questionaries.language>Language</th> <th class=col-md-3 scope=col t=main.admin.pages.questionaries.type>Type</th> <th class=col-md-3 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-3 text-truncate\\\"><span title=${item.name}>${item.name}</span></td> <td class=\\\"col-md-3 text-truncate\\\"><span title=${item.languageName}>${item.languageName}</span></td> <td class=col-md-3>${'main.admin.pages.questionaries.questionary_type.' + QuestionaryType[item.questionaryType] & t}</td> <td class=\\\"col-md-3 d-flex\\\"> <a if.bind=item.isOriginal class=\\\"btn btn-link\\\" global-permission-show=\\\"can: QuestionaryUpdate\\\" route-href=\\\"route: modular-questionary-child-router; params.bind: {questionaryId:item.id}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: QuestionaryDelete\\\" click.delegate=deletemanager(item) title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> <a href=# class=\\\"btn btn-link\\\" click.delegate=getPrivateMedia(item.logFileUrl) if.bind=\\\"item.logFileUrl && item.logFileUrl != ''\\\" global-permission-show=\\\"can: QuestionaryView\\\" title=\\\"${'commands.view' & t}\\\"> <i class=material-icons style=font-size:x-large>cloud_download</i> </a> <span if.bind=item.isOriginal class=\\\"switch switch-sm pt-2 btn\\\"> <input type=checkbox class=switch id=isActive_${$index} checked.bind=item.isActive change.delegate=changeState(item) global-permission-enable=\\\"can: QuestionaryActivate\\\"/> <label for=isActive_${$index} class=form-check-label>&nbsp;</label> </span> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar global-permission-show=\\\"can: QuestionaryCreate\\\"> <modular-questionary-create-card></modular-questionary-create-card> </div> </div> </template> \";","import { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { Logger } from \"aurelia-logging\";\nimport { I18N } from \"aurelia-i18n\";\nimport { LogManager, autoinject } from \"aurelia-framework\";\n\n@autoinject\nexport class ModularQuestionChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"ModularQuestionChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    config.map([\n\n      {\n        route: \"\",\n        name: \"modular-question-edit\",\n        moduleId: PLATFORM.moduleName(\"./modular-question-edit\"),\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.questionaries.questions.question\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.QuestionaryUpdate]\n          }\n        }\n      },\n      \n    ]);\n\n    this.router = router;\n  }\n\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\" global-permission-show=\\\"can: QuestionaryCreate\\\"> <div class=card-body> <h5 class=card-title t=main.admin.pages.questionaries.modular-questions.create_card.title>title</h5> <p class=card-text t=[html]main.admin.pages.questionaries.modular-questions.create_card.info>Create new question</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: modular-question-create-type-selection\\\">${'commands.create' & t}</a> </div> </div> </template> \";","import { ThematicAssociation } from './../../../../../models/thematic-groups/thematic-association';\nimport { FileAcceptValidator } from 'common/utils/file-accept-validator';\nimport { Router } from \"aurelia-router\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { QuestionService } from \"../../../services/questionaries/question-service\";\nimport { Question } from \"models/questions/question\";\nimport { QuestionType } from \"models/questions/questionType\";\nimport { QuestionUse } from \"models/questions/questionUse\";\nimport { ResponseOption } from \"models/questions/response-option\";\nimport { QuestionaryService } from 'main/admin/services/questionaries/questionary-service';\nimport { ThematicGroupService } from 'main/admin/services/thematic-groups/thematic-group-service';\nimport { ThematicGroup } from 'models/thematic-groups/thematic-group';\nimport { ThematicAssociationService } from 'main/admin/services/thematic-groups/thematic-association-service';\nimport { QuestionHistoryModal } from 'main/components/question-history-modal';\nimport { ReviewerStatusType } from 'models/questions/reviewerStatusType';\nimport PredefinedPermission from 'config/predefined-permissions';\nimport { SessionService } from 'common/services/session-service';\nimport { QuestionHistoryService } from 'main/admin/services/questionaries/question-history-service';\nimport { QuestionHistory } from 'models/questions/questionHistory';\nimport { I18N } from 'aurelia-i18n';\nimport { QuestionInteractionType } from 'models/questions/questionInteractionType';\nimport { InteractionTypeChangeConfirmation } from 'main/components/interaction-type-change-confirmation';\nimport { CompanyQuestionaryService } from 'main/admin/services/test-management/company-questionary-service';\n\n@autoinject()\nexport class ModularQuestionEdit {\n\tprivate allowedReviewerStatusTypes: { value: ReviewerStatusType, name: string }[] = [];\n\tprivate logger: Logger;\n\tprivate model: Question = new Question();\n\tprivate validationController: ValidationController;\n\n\tprivate questionId: number;\n\tprivate responseOptionRules;\n\tprivate isTheLastQuestion: boolean = false;\n\tprivate availableDimensions: ThematicGroup[] = [];\n\tpublic observation: string = \"\";\n\tprivate filteredQuestionInteractionTypes: string[] = [];\n\tprivate isGameTest: boolean = false;\n\tprivate previousInteractionType: any = null;\n\tprivate microstoryComponent: any;\n\tprivate eventReconstructionComponent: any;\n\tprivate illustratedDialogueComponent: any;\n\tprivate singleChoiceListComponent: any;\n\tprivate dragChipsComponent: any;\n\tprivate QuestionUse = QuestionUse;\n\n\tconstructor(\n\t\tprivate questionService: QuestionService,\n\t\tprivate dialogService: DialogService,\n\t\tprivate notification: Notification,\n\t\tprivate questionaryService: QuestionaryService,\n\t\tprivate validationControllerFactory: ValidationControllerFactory,\n\t\tprivate thematicGroupService: ThematicGroupService,\n\t\tprivate thematicAssociationService: ThematicAssociationService,\n\t\tprivate router: Router,\n\t\tprivate sessionService: SessionService,\n\t\tprivate i18n: I18N,\n\t\tprivate questionHistoryService: QuestionHistoryService,\n\t\tprivate companyQuestionaryService: CompanyQuestionaryService\n\t) {\n\n\t\tthis.logger = LogManager.getLogger(\"ModularQuestionEdit\");\n\n\t\tthis.validationController = this.validationControllerFactory.createForCurrentScope();\n\t\tthis.validationController.addRenderer(new BootstrapFormRenderer());\n\t}\n\n\tpublic configureValidationRules(): void {\n\t\tthis.logger.info(\"configureValidationRules\");\n\t\tValidationRules\n\t\tlet rules = ValidationRules\n\t\t\t.ensure(\"formulation\").displayName(\"main.admin.pages.questionaries.questions.question\").required()\n\t\t\t.ensure(\"questionUse\").displayName(\"main.admin.pages.questionaries.questions.use\").required()\n\t\t\t.ensure(\"reviewerStatusType\").displayName(\"main.admin.pages.questionaries.questions.reviewer_status_type\").required()\n\t\t\t.ensure(\"code\").displayName(\"main.admin.pages.questionaries.questions.code\").required()\n\t\t\t.ensure(\"thematicGroupIds\").displayName(\"main.admin.pages.questionaries.questions.thematic_group_ids\").required();\n\n\t\tif (this.isGameTest && (this.model.questionType == QuestionType.SingleChoiceList || this.model.questionType == QuestionType.MultipleChoiceList)) {\n\t\t\trules = rules\n\t\t\t\t.ensure(\"questionInteractionType\")\n\t\t\t\t.displayName(\"main.admin.pages.modular_questionaries.questions.interaction_type\")\n\t\t\t\t.required()\n\t\t\t\t.withMessage(this.i18n.tr(\"main.admin.pages.modular_questionaries.questions.interaction_type_required\"));\n\t\t}\n\n\t\trules.on(this.model);\n\n\t\tthis.model.responseOptions.forEach(option => {\n\t\t\tthis.applyWeightValidation(option);\n\t\t});\n\t}\n\tprivate applyWeightValidation(option: ResponseOption): void {\n\t\tValidationRules\n\t\t\t.ensure(\"weight\")\n\t\t\t.displayName(\"main.admin.pages.modular-questionaries.questions.weight\")\n\t\t\t.required()\n\t\t\t.satisfies(value => value >= 0 && value <= 100)\n\t\t\t.withMessage(this.i18n.tr(\"main.admin.pages.modular-questionaries.questions.range\"))\n\t\t\t.on(option);\n\t}\n\n\t// Runs a gamified interaction component's business validation; returns true if it should block save.\n\tprivate runComponentBusinessValidation(component: any): boolean {\n\t\tif (!component) {\n\t\t\treturn false;\n\t\t}\n\t\tconst businessErrors = component.validateBusinessRules();\n\t\tif (businessErrors.length > 0) {\n\t\t\tbusinessErrors.forEach(err => this.notification.error(err));\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate async loadAllowedReviewerStatusTypes() {\n\t\tthis.allowedReviewerStatusTypes = [];\n\n\t\tconst permissionMap = [\n\t\t\t{ value: ReviewerStatusType.InConstruction, name: 'InConstruction', permission: PredefinedPermission.QuestionaryReviewerInConstruction },\n\t\t\t{ value: ReviewerStatusType.InValidation, name: 'InValidation', permission: PredefinedPermission.QuestionaryReviewerInValidation },\n\t\t\t{ value: ReviewerStatusType.Returned, name: 'Returned', permission: PredefinedPermission.QuestionaryReviewerReturned },\n\t\t\t{ value: ReviewerStatusType.Aproved, name: 'Aproved', permission: PredefinedPermission.QuestionaryReviewerApproved },\n\t\t];\n\t\tconst profile = await this.sessionService.getProfile();\n\t\tconst permission = profile.permissions;\n\t\tfor (let i = 0; i < permissionMap.length; i++) {\n\t\t\tif (permission && permission.includes(permissionMap[i].permission)) {\n\t\t\t\tthis.allowedReviewerStatusTypes.push({ value: permissionMap[i].value, name: permissionMap[i].name });\n\t\t\t}\n\t\t}\n\t}\n\tprivate async activate(params: any): Promise<void> {\n\t\ttry {\n\t\t\tawait this.loadAllowedReviewerStatusTypes();\n\t\t\tif (!isNaN(params.questionId)) {\n\t\t\t\tthis.questionId = params.questionId;\n\n\t\t\t\tthis.model = await this.questionService.getById(this.questionId);\n\t\t\t\t// Independent request to show response options weights\n\t\t\t\tawait this.loadSelectedDimensions();\n\n\t\t\t\tlet associationWeights = await this.thematicAssociationService.getWeightByQuestionId(this.model.id);\n\t\t\t\tthis.assignWeightsToResponseOptions(associationWeights);\n\n\t\t\t} else if (!isNaN(params.questionaryId) && !isNaN(params.questionTypeId)) {\n\n\t\t\t\tthis.logger.debug(\"params.questionTypeId: \", params.questionTypeId);\n\n\t\t\t\tthis.model.questionaryId = <number>params.questionaryId;\n\t\t\t\tthis.model.questionType = <QuestionType>params.questionTypeId;\n\t\t\t\tthis.model.reviewerStatusType = ReviewerStatusType.InConstruction;\n\t\t\t\tthis.logger.debug(\"this.model.questionType: \", QuestionType[this.model.questionType]);\n\n\t\t\t\tif (this.model.questionType == QuestionType.DescriptiveText || this.model.questionType == QuestionType.OpenAnswerQuestion) {\n\t\t\t\t\tthis.addResponseOption(true);\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet questionary = await this.questionaryService.getById(this.model.questionaryId);\n\t\t\tthis.isGameTest = questionary.hasGameTest;\n\t\t\tthis.loadFilteredQuestionInteractionTypes();\n\t\t\tthis.previousInteractionType = this.model.questionInteractionType;\n\n\t\t\tawait this.loadDimensions();\n\t\t\tthis.configureValidationRules();\n\t\t}\n\t\tcatch (error) {\n\t\t\tthis.notification.error(error);\n\t\t}\n\t}\n\n\tloadFilteredQuestionInteractionTypes() {\n\t\tif (this.model.questionType == QuestionType.SingleChoiceList) {\n\t\t\tthis.filteredQuestionInteractionTypes = ['Microstory', 'SingleChoiceList', 'IconSlider', 'IconicScale', 'Meteogram', 'SemanticDifferential'];\n\t\t} else if (this.model.questionType == QuestionType.MultipleChoiceList) {\n\t\t\tthis.filteredQuestionInteractionTypes = ['ActionRanking', 'EventReconstruction', 'IllustratedDialogue', 'DragChips'];\n\t\t} else {\n\t\t\tthis.filteredQuestionInteractionTypes = [];\n\t\t}\n\t}\n\n\tpublic async openProperties(): Promise<void> {\n\t\tthis.logger.debug(\"openHistory\");\n\t\ttry {\n\t\t\tlet histories = await this.questionHistoryService.getByQuestionId(this.model.id);\n\t\t\treturn await this.dialogService.open({\n\t\t\t\tviewModel: QuestionHistoryModal,\n\t\t\t\tmodel: histories\n\t\t\t}).whenClosed(() => null);\n\t\t} catch (error) {\n\t\t\tthis.notification.error(error);\n\t\t}\n\t}\n\tpublic async loadSelectedDimensions() {\n\t\tlet selectedDimensions = await this.thematicGroupService.getSelectedByQuestionId(this.model.id);\n\t\tthis.model.thematicGroupIds = selectedDimensions.map(d => d.id);\n\t\tthis.model.thematicVariableIds = selectedDimensions\n\t\t\t.filter(d => d.thematicVariableId != null)\n\t\t\t.map(d => d.thematicVariableId);\n\t}\n\tpublic async loadDimensions() {\n\t\tthis.availableDimensions = (await this.companyQuestionaryService.getAvailableByQuestionaryId(this.model.questionaryId)).\n\t\t\tfilter(d => d.isDisabled == false);\n\t}\n\tgetQuestionTypeValue(): string {\n\t\tconst questionType = QuestionType[this.model.questionType];\n\t\treturn questionType;\n\t}\n\tpublic async nextQuestion(): Promise<any> {\n\t\tlet questionary = await this.questionaryService.getById(this.model.questionaryId);\n\t\tlet nextQuestion = await this.questionService.getNextQuestion(this.model.id, this.model.questionaryId, questionary.languageId);\n\t\tif (nextQuestion != null) {\n\t\t\tawait this.router.navigateToRoute(\"modular-question-child-router\", { questionId: nextQuestion.id });\n\t\t\twindow.location.reload();\n\t\t} else {\n\t\t\tthis.isTheLastQuestion = true;\n\t\t\tthis.notification.info(\"main.admin.pages.questionaries.questions.messages.no_more_questions\");\n\t\t}\n\t}\n\n\tpublic async submit(saveAndContinue: boolean): Promise<void> {\n\t\tthis.logger.debug(\"submit\");\n\t\tif ((this.model.questionType == QuestionType.SingleChoiceList\n\t\t\t|| this.model.questionType == QuestionType.MultipleChoiceList\n\t\t\t|| this.model.questionType == QuestionType.SingleImageChoiceList\n\t\t\t|| this.model.questionType == QuestionType.MultipleImageChoiceList\n\t\t\t|| this.model.questionType == QuestionType.SingleChoiceListWithComments)\n\t\t\t&& this.model.questionUse == QuestionUse.Evaluation\n\t\t\t&& this.model.thematicGroupIds.length == 0) {\n\t\t\tthis.notification.error(\"main.admin.pages.questionaries.questions.errors.thematic_group_required\");\n\t\t\treturn;\n\t\t}\n\n\n\t\t// Validate microstory business rules before standard validation\n\t\tif (this.model.questionInteractionType == QuestionInteractionType.Microstory) {\n\t\t\tif (this.runComponentBusinessValidation(this.microstoryComponent)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Validate action ranking / event reconstruction business rules before standard validation.\n\t\t// ActionRanking reuses the EventReconstruction options component (ZOHO-56907).\n\t\tif (this.model.questionInteractionType == QuestionInteractionType.EventReconstruction\n\t\t\t|| this.model.questionInteractionType == QuestionInteractionType.ActionRanking) {\n\t\t\tif (this.runComponentBusinessValidation(this.eventReconstructionComponent)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Validate illustrated dialogue business rules before standard validation\n\t\tif (this.model.questionInteractionType == QuestionInteractionType.IllustratedDialogue) {\n\t\t\tif (this.runComponentBusinessValidation(this.illustratedDialogueComponent)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Validate single choice list business rules before standard validation.\n\t\t// Reused by the single-choice gamified interactions added for Bienestar Laboral.\n\t\tconst singleChoiceInteractions = [\n\t\t\tQuestionInteractionType.SingleChoiceList,\n\t\t\tQuestionInteractionType.IconSlider,\n\t\t\tQuestionInteractionType.IconicScale,\n\t\t\tQuestionInteractionType.Meteogram,\n\t\t\tQuestionInteractionType.SemanticDifferential\n\t\t];\n\t\tif (singleChoiceInteractions.indexOf(this.model.questionInteractionType) !== -1) {\n\t\t\tif (this.runComponentBusinessValidation(this.singleChoiceListComponent)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Validate drag chips business rules before standard validation\n\t\tif (this.model.questionInteractionType == QuestionInteractionType.DragChips) {\n\t\t\tif (this.runComponentBusinessValidation(this.dragChipsComponent)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\treturn this.validationController.validate()\n\t\t\t.then(async (result: ControllerValidateResult) => {\n\t\t\t\tif (result.valid) {\n\t\t\t\t\tif (this.model.responseOptions.length > 0 && this.model.questionType !== QuestionType.DescriptiveText) {\n\t\t\t\t\t\tlet validDescriptiveText: boolean = true;\n\t\t\t\t\t\tif (validDescriptiveText) {\n\t\t\t\t\t\t\treturn await this.save(saveAndContinue);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn await this.save(saveAndContinue);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tget canSave() {\n\t\treturn !this.questionService.client.isRequesting;\n\t}\n\n\tpublic async save(saveAndContinue: boolean): Promise<any> {\n\t\tthis.logger.debug(\"save\");\n\t\tif (this.model.formulation !== undefined) {\n\t\t\tthis.logger.debug(\"this.model\", this.model);\n\t\t\tif (this.model.id !== undefined) {\n\t\t\t\t// Handle observation history for existing questions\n\t\t\t\tif (this.observation.trim() != \"\") {\n\t\t\t\t\tlet questionHistory: QuestionHistory = new QuestionHistory();\n\t\t\t\t\tquestionHistory.id = 0;\n\t\t\t\t\tquestionHistory.observation = this.observation;\n\t\t\t\t\tquestionHistory.questionId = this.model.id;\n\t\t\t\t\tquestionHistory.reviewerStatusType = this.model.reviewerStatusType;\n\n\t\t\t\t\tif (!this.model.questionHistories) {\n\t\t\t\t\t\tthis.model.questionHistories = [];\n\t\t\t\t\t}\n\t\t\t\t\tthis.model.questionHistories.push(questionHistory);\n\t\t\t\t}\n\n\t\t\t\treturn await this.questionService.update(this.model)\n\t\t\t\t\t.then(async (model: Question) => {\n\t\t\t\t\t\tthis.notification.success(\"main.admin.pages.questionaries.questions.messages.question_edited\");\n\t\t\t\t\t\tthis.model.questionHistories = new Array<QuestionHistory>();\n\t\t\t\t\t\tthis.observation = \"\";\n\t\t\t\t\t\tif (!saveAndContinue) {\n\t\t\t\t\t\t\treturn await this.router.navigateToRoute(\"modular-questions\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn await this.router.navigateToRoute(\"modular-question-child-router\", { questionId: this.model.id });\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.catch(error => {\n\t\t\t\t\t\tthis.notification.error(error);\n\t\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn this.executeActionWithNotification(\n\t\t\t\t\t() => this.questionService.create(this.model),\n\t\t\t\t\t\"main.admin.pages.questionaries.questions.messages.question_added\",\n\t\t\t\t\tsaveAndContinue\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\n\tprivate async executeActionWithNotification(action: () => Promise<Question>, successMessage: string, saveAndContinue: boolean) {\n\t\ttry {\n\n\t\t\tvar questionId;\n\t\t\tvar question = await action()\n\t\t\tif (question)\n\t\t\t\tquestionId = question.id;\n\t\t\telse\n\t\t\t\tquestionId = this.model.id;\n\n\t\t\t// Clear observation field after successful save\n\t\t\tthis.observation = \"\";\n\n\t\t\tthis.notification.success(successMessage);\n\n\t\t\tif (!saveAndContinue) {\n\t\t\t\treturn this.router.navigateToRoute(\"modular-questions\");\n\t\t\t} else {\n\t\t\t\treturn this.router.navigateToRoute(\"modular-question-child-router\", { questionId: questionId });\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthis.notification.error(error);\n\t\t}\n\t}\n\n\tpublic addResponseOption(isColumn: boolean): void {\n\t\tthis.logger.info(\"addReponseOption\");\n\t\tlet responseOption: ResponseOption = new ResponseOption();\n\t\tresponseOption.id = 0;\n\t\tresponseOption.order = this.model.responseOptions.length;\n\t\tresponseOption.isColumn = isColumn;\n\t\tresponseOption.option = \"\";\n\t\tthis.model.responseOptions.push(responseOption);\n\n\t\t//validation\n\t\t//this.validationController.addObject(responseOption, this.responseOptionRules);\n\t\tthis.applyWeightValidation(responseOption);\n\t}\n\n\tpublic deleteResponseOption(index: number) {\n\t\tlet responseOption = this.model.responseOptions[index];\n\t\t//validation\n\t\tthis.validationController.removeObject(responseOption);\n\t\t//delete\n\t\tthis.model.responseOptions.splice(index, 1);\n\t}\n\n\tpublic setFile($event: any, item: ResponseOption): void {\n\t\tthis.logger.debug(\"setFile\");\n\t\tlet file = <File>$event.target.files[0];\n\t\tlet fileValidator = FileAcceptValidator.parse(\"image/*\", 1024 * 300);\n\t\tif (fileValidator.isValid(file)) {\n\t\t\tlet reader: FileReader = new FileReader();\n\t\t\treader.readAsDataURL(file);\n\t\t\treader.onload = () => {\n\t\t\t\tlet base64data: any = reader.result;\n\t\t\t\titem.thumbnailImage = base64data;\n\t\t\t\titem.option = file.name;\n\t\t\t\titem.thumbnailImageUrl = URL.createObjectURL(file);\n\t\t\t};\n\t\t}\n\t\telse {\n\t\t\tthis.notification.error(\"main.admin.pages.questionaries.questions.errors.error_bad_image\");\n\n\t\t}\n\t}\n\n\tpublic unSetFile(item: ResponseOption): void {\n\t\titem.option = null;\n\t\titem.thumbnailImage = null;\n\t\titem.thumbnailImageUrl = null;\n\t}\n\n\tpublic getQuestionUsesByQuestionType(): Array<any> {\n\t\tthis.logger.debug(\"getQuestionUsesByQuestionType\");\n\t\tlet result: Array<any> = [];\n\t\tthis.logger.debug(\"getQuestionUsesByQuestionType this.model.questionType\", this.model.questionType);\n\t\tswitch (+this.model.questionType) {\n\t\t\tcase QuestionType.SingleChoiceList:\n\t\t\tcase QuestionType.SingleImageChoiceList:\n\t\t\tcase QuestionType.SingleChoiceListWithComments:\n\t\t\tcase QuestionType.MultipleChoiceList:\n\t\t\tcase QuestionType.MultipleImageChoiceList:\n\t\t\tcase QuestionType.Matrix:\n\t\t\t\tthis.logger.debug(\"QuestionType.All\");\n\t\t\t\tresult = Object.keys(QuestionUse)\n\t\t\t\t\t.filter(key => QuestionUse[key] === QuestionUse.Evaluation || QuestionUse[key] === QuestionUse.Example)\n\t\t\t\t\t.map(key => ({ id: QuestionUse[key], name: key }));\n\t\t\t\tbreak;\n\t\t\tcase QuestionType.DescriptiveText:\n\t\t\t\tthis.logger.debug(\"QuestionType.DescriptiveText\");\n\t\t\t\tresult = Object.keys(QuestionUse)\n\t\t\t\t\t.filter(key => QuestionUse[key] === QuestionUse.Instruction || QuestionUse[key] === QuestionUse.Warning || QuestionUse[key] === QuestionUse.Farewell)\n\t\t\t\t\t.map(key => ({ id: QuestionUse[key], name: key }));\n\t\t\t\tbreak;\n\t\t\tcase QuestionType.OpenAnswerQuestion:\n\t\t\t\tthis.logger.debug(\"QuestionType.OpenAnswerQuestion\");\n\t\t\t\tresult = Object.keys(QuestionUse)\n\t\t\t\t\t.filter(key => QuestionUse[key] === QuestionUse.Evaluation || QuestionUse[key] === QuestionUse.Example || QuestionUse[key] === QuestionUse.Warning)\n\t\t\t\t\t.map(key => ({ id: QuestionUse[key], name: key }));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\tthis.logger.debug(\"getQuestionUsesByQuestionType result:\", result);\n\t\treturn result;\n\t}\n\tprivate assignWeightsToResponseOptions(weights: any[]): void {\n\t\tif (!Array.isArray(weights)) return;\n\t\tfor (const weightObj of weights) {\n\t\t\t// Search top-level options\n\t\t\tlet option = this.model.responseOptions.find(o => o.id === weightObj.id);\n\t\t\t// Search children (microstory)\n\t\t\tif (!option) {\n\t\t\t\tfor (const parent of this.model.responseOptions) {\n\t\t\t\t\tif (parent.children) {\n\t\t\t\t\t\toption = parent.children.find(c => c.id === weightObj.id);\n\t\t\t\t\t\tif (option) break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (option) {\n\t\t\t\toption.weight = weightObj.weight;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync onInteractionTypeChanged(): Promise<void> {\n\t\tconst hasExistingOptions = this.model.responseOptions.length > 0;\n\t\tconst isFirstSelection = this.previousInteractionType === null\n\t\t\t|| this.previousInteractionType === undefined\n\t\t\t|| this.previousInteractionType === '';\n\n\t\t// If switching from one type to another (not first selection) and there are options, confirm\n\t\tif (!isFirstSelection && hasExistingOptions) {\n\t\t\treturn await this.dialogService.open({\n\t\t\t\tviewModel: InteractionTypeChangeConfirmation\n\t\t\t}).whenClosed((response) => {\n\t\t\t\tif (!response.wasCancelled) {\n\t\t\t\t\tthis.clearResponseOptions();\n\t\t\t\t\tthis.previousInteractionType = this.model.questionInteractionType;\n\t\t\t\t} else {\n\t\t\t\t\t// Revert to previous value\n\t\t\t\t\tthis.model.questionInteractionType = this.previousInteractionType;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.previousInteractionType = this.model.questionInteractionType;\n\t}\n\n\tprivate clearResponseOptions(): void {\n\t\tfor (const option of this.model.responseOptions) {\n\t\t\tif (option.children) {\n\t\t\t\toption.children.forEach(child => this.validationController.removeObject(child));\n\t\t\t}\n\t\t\tthis.validationController.removeObject(option);\n\t\t}\n\t\tthis.model.responseOptions = [];\n\t}\n\n}\n","module.exports = \"<template> <require from=../../../../../models/questions/questionTypeViewEngineHooks></require> <require from=../../../../../models/questions/reviewerStatusTypeViewEngineHooks></require> <require from=../../../../../models/questions/questionInteractionTypeViewEngineHooks></require> <require from=../../../../components/multiselector-dimensions></require> <require from=../../../../components/microstory-response-options></require> <require from=../../../../components/event-reconstruction-response-options></require> <require from=../../../../components/illustrated-dialogue-response-options></require> <require from=../../../../components/single-choice-list-response-options></require> <require from=../../../../components/multiple-choice-list-response-options></require> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2 if.bind=!model.id>${'main.admin.pages.questionaries.questions.create' & t}</h2> <h2 if.bind=model.id>${'main.admin.pages.questionaries.questions.edit' & t}</h2> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-12> <h3>${'main.admin.pages.questionaries.questions.question_type.' + QuestionType[model.questionType] & t}</h3> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-11 col-12\\\"> <p>${'main.admin.pages.questionaries.questions.edit_info' & t}</p> </div> <div class=\\\"col-md-1 col-12\\\"> <button type=button class=\\\"btn btn-primary btn-round btn-sm\\\" click.delegate=openProperties() style=float:right> <i class=material-icons>settings</i> </button> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"isGameTest && (model.questionType == QuestionType.SingleChoiceList || model.questionType == QuestionType.MultipleChoiceList)\\\"> <div class=col-6> <label t=main.admin.pages.modular_questionaries.questions.instruction.title>Instruction</label> <input type=text value.bind=\\\"model.instruction & validate\\\" class=form-control t=[placeholder]main.admin.pages.modular_questionaries.questions.instruction.info /> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"isGameTest && (model.questionType == QuestionType.SingleChoiceList || model.questionType == QuestionType.MultipleChoiceList)\\\"> <div class=col-6> <label for=interactionType t=main.admin.pages.modular_questionaries.questions.interaction_type.title>Interaction Type</label> <select value.bind=\\\"model.questionInteractionType & validate\\\" class=form-control id=interactionType disabled.bind=model.id change.delegate=onInteractionTypeChanged()> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of filteredQuestionInteractionTypes\\\" model.bind=QuestionInteractionType[option]> ${'main.admin.pages.modular_questionaries.questions.interaction_type.' + option & t} </option> </select> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=row style=margin-bottom:50px> <div class=\\\"col-12 col-md-8\\\"> <label for=Question t=main.admin.pages.questionaries.questions.question>Question</label> <quill-editor value.bind=\\\"model.formulation & validate\\\"></quill-editor> </div> <div class=\\\"col-12 col-md-4\\\" if.bind=\\\"model.questionType == QuestionType.SingleChoiceList ||\\n             model.questionType == QuestionType.MultipleChoiceList || \\n             model.questionType == QuestionType.SingleChoiceListWithComments ||\\n             model.questionType == QuestionType.SingleImageChoiceList ||\\n             model.questionType == QuestionType.MultipleImageChoiceList\\\"> <label for=Question t=main.admin.pages.questionaries.questions.dimensions>Dimensions</label> <multiselector-dimensions items.bind=availableDimensions id-prop=id name-prop=name variable-id-prop=thematicVariableId selected-ids.two-way=model.thematicGroupIds selected-variable-ids.two-way=model.thematicVariableIds show-manipulation-scale.bind=true> </multiselector-dimensions> </div> </div> <div class=clearfix></div> <div class=\\\"row mb-4\\\"> <div class=col-12> <p>&nbsp;</p> <p>&nbsp;</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-2\\\"> <div class=form-group> <label for=use t=main.admin.pages.questionaries.questions.state>State</label> <select value.bind=\\\"model.reviewerStatusType & validate\\\" class=form-control id=use t=[placeholder]main.admin.admin.pages.questionaries.questions.state disabled.bind=!model.id> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of allowedReviewerStatusTypes\\\" model.bind=option.value>${'main.admin.pages.questionaries.questions.question_state.' + option.name & t}</option> </select> </div> </div> <div class=\\\"col-12 col-md-2\\\" if.bind=model.id> <div class=form-group> <label for=Order t=main.admin.pages.questionaries.questions.order>Order</label> <input type=number value.bind=\\\"model.order & validate\\\" class=form-control id=Order t=[placeholder]main.admin.pages.questionaries.questions.order> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=use t=main.admin.pages.questionaries.questions.use>Use</label> <select value.bind=\\\"model.questionUse & validate\\\" class=form-control id=use t=[placeholder]main.admin.admin.pages.questionaries.questions.use> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of getQuestionUsesByQuestionType(model.questionType)\\\" model.bind=option.id>${'main.admin.pages.questionaries.questions.question_use.' + option.name & t}</option> </select> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=Code t=main.admin.pages.questionaries.questions.code>Code</label> <input type=text value.bind=\\\"model.code & validate\\\" class=form-control id=Code t=[placeholder]main.admin.pages.questionaries.questions.code> </div> </div> </div> <div if.bind=model.id class=row> <div class=col> <p>${'main.admin.pages.modular-questionaries.questions.observations' & t}</p> </div> </div> <div if.bind=model.id class=row> <div class=col> <div class=form-group> <input value.bind=observation class=form-control type=text t=[placeholder]main.admin.pages.modular-questionaries.questions.observation.info /> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"(model.questionType == QuestionType.SingleChoiceList && !isGameTest) || (model.questionType == QuestionType.MultipleChoiceList && !isGameTest) || model.questionType == QuestionType.SingleChoiceListWithComments\\\"> <div class=col-12> <h4>${'main.admin.pages.modular-questionaries.questions.responses' & t}</h4> <ul class=list-group> <li class=list-group-item if.bind=\\\"model.responseOptions.length > 0\\\"> <div class=row> <div class=col-8> </div> <div class=\\\"col-2 text-center\\\"> <strong>${'main.admin.pages.modular-questionaries.questions.weight' & t}</strong> </div> <div class=col-2> </div> </div> </li> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\"> <div class=row> <div class=col-8> <div class=form-group> <input type=text name=item value.bind=item.option class=form-control /> </div> </div> <div class=col-2> <div class=form-group> <input type=number name=item-weight value.bind=\\\"item.weight & validate\\\" min=0 max=100 class=form-control /> </div> </div> <div class=col-2> <button type=button class=\\\"btn btn-link\\\" click.delegate=deleteResponseOption($index)> <i class=material-icons>archive</i> </button> </div> </div> </li> </ul> <br/> <button type=button class=\\\"btn btn-primary btn-round\\\" click.delegate=addResponseOption(false)> <i class=material-icons>add</i> </button> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.SingleImageChoiceList || model.questionType == QuestionType.MultipleImageChoiceList\\\"> <div class=col-12> <h4>${'main.admin.pages.modular-questionaries.questions.responses' & t}</h4> <ul class=list-group> <li class=list-group-item if.bind=\\\"model.responseOptions.length > 0\\\"> <div class=row> <div class=\\\"col-md-4 col-8\\\"> </div> <div class=\\\"col-2 text-center\\\"> <strong>${'main.admin.pages.modular-questionaries.questions.weight' & t}</strong> </div> <div class=col-2> </div> </div> </li> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\"> <div class=row> <div class=\\\"col-md-4 col-8\\\"> <div class=custom-file> <input type=file class=custom-file-input id=item.option accept=image/* change.delegate=\\\"setFile($event, item)\\\"> <label class=custom-file-label for=item.option>${item.option}</label> </div> <img if.bind=item.thumbnailImageUrl class=\\\"img-thumbnail w-50\\\" alt.bind=item.option src.bind=item.thumbnailImageUrl> </div> <div class=col-2> <div class=form-group> <input type=number name=item-weight value.bind=\\\"item.weight & validate\\\" min=0 max=100 class=form-control /> </div> </div> <div class=col-2> <button type=button class=\\\"btn btn-link\\\" click.delegate=deleteResponseOption($index)> <i class=material-icons>archive</i> </button> </div> </div> </li> </ul> <br/> <button type=button class=\\\"btn btn-primary btn-round\\\" click.delegate=addResponseOption(false)> <i class=material-icons>add</i> </button> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.Matrix\\\"> <div class=col-12> <h4>${'main.admin.pages.questionaries.questions.responses' & t}</h4> <div class=row> <div class=\\\"col-12 col-md-6\\\"> <p>${'main.admin.pages.questionaries.questions.matrix_rows' & t}</p> <ul class=list-group> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\" if.bind=!item.isColumn> <div class=row> <div class=col-10> <div class=form-group> <input type=text name=item value.bind=item.option class=form-control disabled.bind=isTranslation> </div> </div> </div> </li> </ul> <br/> <button type=button class=\\\"btn btn-primary btn-round\\\" click.delegate=addResponseOption(false)> <i class=material-icons>add</i> </button> </div> <div class=\\\"col-12 col-md-6\\\"> <p>${'main.admin.pages.questionaries.questions.matrix_columns' & t}</p> <ul class=list-group> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\" if.bind=item.isColumn> <div class=row> <div class=col-10> <div class=form-group> <input type=text name=item value.bind=item.option class=form-control> </div> </div> <div class=col-2> <button type=button class=\\\"btn btn-link\\\" click.delegate=deleteResponseOption($index)> <i class=material-icons>archive</i> </button> </div> </div> </li> </ul> <br/> <button type=button class=\\\"btn btn-primary btn-round\\\" click.delegate=addResponseOption(true)> <i class=material-icons>add</i> </button> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.DescriptiveText\\\"> <div class=col-12> <h4>${'main.admin.pages.questionaries.questions.descriptive_text_image' & t}</h4> <ul class=list-group> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\"> <div class=row> <div class=\\\"col-md-4 col-10\\\"> <div class=custom-file> <input type=file class=custom-file-input id=item.option accept=image/* change.delegate=\\\"setFile($event, item)\\\"> <label class=custom-file-label for=item.option>${item.option}</label> </div> <img if.bind=item.thumbnailImageUrl class=\\\"img-thumbnail w-50\\\" alt.bind=item.option src.bind=item.thumbnailImageUrl> </div> <div class=col-2> <div class=form-group if.bind=item.option> <button type=button class=\\\"btn btn-link\\\" click.delegate=unSetFile(item)> <i class=material-icons>archive</i> </button> </div> </div> </div> </li> </ul> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.OpenAnswerQuestion\\\"> <div class=col-12> <h4>${'main.admin.pages.questionaries.questions.ideal_response' & t}</h4> <div class=form-group> <input type=text value.bind=model.responseOptions[0].option name=item class=form-control> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"isGameTest && model.questionType == QuestionType.SingleChoiceList && model.questionInteractionType !== null && model.questionInteractionType !== undefined && model.questionInteractionType !== '' && model.questionInteractionType == QuestionInteractionType.Microstory\\\"> <div class=col-12> <microstory-response-options view-model.ref=microstoryComponent items.two-way=model.responseOptions validation-controller.bind=validationController is-evaluation-question.bind=\\\"model.questionUse == QuestionUse.Evaluation\\\"> </microstory-response-options> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"isGameTest && model.questionType == QuestionType.MultipleChoiceList && model.questionInteractionType !== null && model.questionInteractionType !== undefined && model.questionInteractionType !== '' && model.questionInteractionType == QuestionInteractionType.ActionRanking\\\"> <div class=col-12> <event-reconstruction-response-options view-model.ref=eventReconstructionComponent items.two-way=model.responseOptions validation-controller.bind=validationController is-evaluation-question.bind=\\\"model.questionUse == QuestionUse.Evaluation\\\"> </event-reconstruction-response-options> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"isGameTest && model.questionType == QuestionType.MultipleChoiceList && model.questionInteractionType !== null && model.questionInteractionType !== undefined && model.questionInteractionType !== '' && model.questionInteractionType == QuestionInteractionType.EventReconstruction\\\"> <div class=col-12> <event-reconstruction-response-options view-model.ref=eventReconstructionComponent items.two-way=model.responseOptions validation-controller.bind=validationController is-evaluation-question.bind=\\\"model.questionUse == QuestionUse.Evaluation\\\"> </event-reconstruction-response-options> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"isGameTest && model.questionType == QuestionType.MultipleChoiceList && model.questionInteractionType !== null && model.questionInteractionType !== undefined && model.questionInteractionType !== '' && model.questionInteractionType == QuestionInteractionType.IllustratedDialogue\\\"> <div class=col-12> <illustrated-dialogue-response-options view-model.ref=illustratedDialogueComponent items.two-way=model.responseOptions validation-controller.bind=validationController is-evaluation-question.bind=\\\"model.questionUse == QuestionUse.Evaluation\\\"> </illustrated-dialogue-response-options> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"isGameTest && model.questionType == QuestionType.SingleChoiceList && model.questionInteractionType !== null && model.questionInteractionType !== undefined && model.questionInteractionType !== '' && (model.questionInteractionType == QuestionInteractionType.SingleChoiceList || model.questionInteractionType == QuestionInteractionType.IconSlider || model.questionInteractionType == QuestionInteractionType.IconicScale || model.questionInteractionType == QuestionInteractionType.Meteogram || model.questionInteractionType == QuestionInteractionType.SemanticDifferential)\\\"> <div class=col-12> <single-choice-list-response-options view-model.ref=singleChoiceListComponent items.two-way=model.responseOptions validation-controller.bind=validationController is-evaluation-question.bind=\\\"model.questionUse == QuestionUse.Evaluation\\\"> </single-choice-list-response-options> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"isGameTest && model.questionType == QuestionType.MultipleChoiceList && model.questionInteractionType !== null && model.questionInteractionType !== undefined && model.questionInteractionType !== '' && model.questionInteractionType == QuestionInteractionType.DragChips\\\"> <div class=col-12> <multiple-choice-list-response-options view-model.ref=dragChipsComponent items.two-way=model.responseOptions validation-controller.bind=validationController is-evaluation-question.bind=\\\"model.questionUse == QuestionUse.Evaluation\\\"> </multiple-choice-list-response-options> </div> </div> <div class=row> <div class=col> <p>${'main.admin.pages.modular-questionaries.questions.justification' & t}</p> </div> </div> <div class=row> <div class=col> <div class=form-group> <input value.bind=model.justification class=form-control type=text t=[placeholder]main.admin.pages.modular-questionaries.questions.justification.info /> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-actions> <button type=button click.delegate=submit(true) class=\\\"btn btn-primary btn-round\\\" t=commands.save_and_continue disabled.bind=!canSave>Save and edit</button> <button type=button click.delegate=submit(false) class=\\\"btn btn-primary btn-round\\\" t=commands.save disabled.bind=!canSave>Save</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: modular-questions;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </div> </template> \";","import config from 'config.js';\nimport { Router } from \"aurelia-router\";\nimport { bindable } from \"aurelia-framework\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { QuestionService } from \"../../../services/questionaries/question-service\";\nimport { QuestionType } from \"models/questions/questionType\";\nimport { Question } from \"models/questions/question\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { DeleteConfirmation } from \"../../../../components/delete-confirmation\";\nimport { CoreLanguageService } from \"main/admin/services/localizations/core-language-service\";\nimport { QuestionaryService } from \"main/admin/services/questionaries/questionary-service\";\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { QuestionaryConfiguration } from \"models/test-management/questionaries-configuration/questionary-configuration\";\nimport { QuestionaryConfigurationWithoutCompanyService } from \"main/admin/services/test-management/questionary-configuration-without-company-service\";\nimport { ModularQuestionaryService } from 'main/admin/services/questionaries/modular-questionary-service';\n\n@autoinject()\nexport class ModularQuestionList {\n\n  @bindable public questionaryId: number;\n\n  private logger: Logger;\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n  private questionary: Questionary = new Questionary();\n  private questionaryConfiguration: QuestionaryConfiguration;\n  private xlsxExampleUrl: string = config.URLS_BACKEND + \"/person-content/bulk-question-example.xlsx\";\n  constructor(\n    private dialogService: DialogService,\n    private questionService: QuestionService,\n    private questionaryService: QuestionaryService,\n    public languageService: CoreLanguageService,\n    private notification: Notification,\n    public questionType: QuestionType,\n    private questionaryConfigurationService: QuestionaryConfigurationWithoutCompanyService,\n    private modularQuestionaryService: ModularQuestionaryService) {\n\n    this.logger = LogManager.getLogger(\"QuestionList\");\n\n  }\n\n  private async activate(params: any): Promise<void> {\n    this.logger.debug(\"activated this.questionaryId\", params.questionaryId);\n    if (!isNaN(params.questionaryId)) {\n      this.questionaryId = +params.questionaryId;\n      this.questionary = await this.questionaryService.getById(this.questionaryId);\n      this.questionaryConfiguration = await this.questionaryConfigurationService.getConfigurationWithoutCompanyByQuestionaryId(this.questionaryId);\n      await this.databind();\n    }\n  }\n\n  private async bind(): Promise<any> {\n  }\n\n  public async databind(): Promise<void> {\n    this.logger.info(\"databind\");\n    this.parameters.currentPage = 1;\n    this.parameters.skip = 0;\n    return await this.questionService.listWithDisabled(this.questionaryId, this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.parameters.totalRecords = response.totalRecords;\n        this.parameters.tableData = response.data;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private refresh = (): Promise<UxDatatableResponse> => {    \n    return this.questionService.listWithDisabled(this.questionaryId, this.parameters);\n  }\n\n  private async delete(id: number, name: string, isOriginal: boolean, languageId: number): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled && isOriginal) {\n        return await this.questionService.delete(id)\n          .then(() => {\n            let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === id);\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"main.admin.pages.questionaries.questions.question_deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      } else if (!response.wasCancelled && !isOriginal) {\n        return await this.questionService.deleteLocalization(id, languageId)\n          .then(async () => {\n            this.notification.success(\"main.admin.pages.questionaries.questions.question_deleted\");\n            await this.databind();\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n  private async updateConfigurations(item: QuestionaryConfiguration) {\n    return await this.questionaryConfigurationService.updateWithoutCompany(item)\n      .then(async (model: QuestionaryConfiguration) => {\n        this.logger.debug(\"model.id\", model.id);\n        item.id = model.id\n        this.notification.success(\"main.admin.pages.test_management.questionaries_configuration.notifications.edited\");\n      })\n      .catch(async error => {\n        await this.databind();\n        this.notification.error(error);\n      });\n  }\n\n  public async changeState(item: Question): Promise<void> {\n    this.logger.debug(\"item.isDisable\", item.isDisable);\n    return await this.questionService.changeState(item.id)\n      .then(() => {\n        this.notification.success(\"main.admin.pages.questionaries.messages.question_activation_changed\");\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  public async uploadBulk(questionaryId: number, file: File): Promise<any> {\n    const result = await this.questionService.bulkUpload(questionaryId, file);\n    return result;\n  }\n\n  public async createLogFile(questionaryId: number): Promise<void> {\n    if (!questionaryId) return;\n      await this.modularQuestionaryService.createLogFile(questionaryId);\n  }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class MModularQuestionListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"ModularQuestionListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./modular-question-list\"),\n        name: \"modular-questions\"\n      },\n\n      {\n        route: \":questionId\",\n        moduleId: PLATFORM.moduleName(\"./modular-question-child-router\"),\n        name: \"modular-question-child-router\",\n      },\n\n      {\n        route: \"create\",\n        name: \"modular-question-create-type-selection\",\n        moduleId: PLATFORM.moduleName(\"./modular-question-type-selection\"),\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.questionaries.modular-questions.create_info\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.QuestionaryUpdate]\n          }\n        }\n      },\n      \n      {\n        route: [\"create/:questionTypeId\"],\n        name: \"modular-question-create\",\n        moduleId: PLATFORM.moduleName(\"./modular-question-child-router\"),\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.questionaries.modular-questions.create\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.QuestionaryUpdate]\n          }\n        }\n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=./modular-question-create-card.html></require> <require from=../../../../../models/questions/questionTypeViewEngineHooks></require> <require from=../../../../components/bulk-upload-question-card></require> <require from=../../../../components/export-questionary-questions-card></require> <div if.bind=!questionaryId> <h2>${'main.admin.pages.questionaries.new' & t}</h2> <p> ${'main.admin.pages.questionaries.questions.notification_new_question' & t} </p> </div> <div if.bind=questionaryId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <div class=row> <div class=col> <h2>${'main.admin.pages.questionaries.questions.title' & t}</h2> <p>${'main.admin.pages.questionaries.questions.info' & t}</p> </div> <div class=col> <span class=\\\"switch switch-sm pt-2 mr-4\\\"> <input type=checkbox class=switch id=randomquestions checked.bind=questionaryConfiguration.hasRandomQuestions change.delegate=updateConfigurations(questionaryConfiguration) global-permission-enable=\\\"can: CustomCompanyModularQuestionaryUpdate\\\"/> <label for=randomquestions class=form-check-label>${'main.admin.pages.modular-questionaries.questions.random_questions' & t}</label> </span> <span class=\\\"switch switch-sm pt-2\\\"> <input type=checkbox class=switch id=randomresponses checked.bind=questionaryConfiguration.hasRandomResponses change.delegate=updateConfigurations(questionaryConfiguration) global-permission-enable=\\\"can: CustomCompanyModularQuestionaryUpdate\\\"/> <label for=randomresponses class=form-check-label>${'main.admin.pages.modular-questionaries.questions.random_responses' & t}</label> </span> </div> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-1 scope=col t=main.admin.pages.modular-questionaries.questions.code>Code</th> <th class=col-md-4 scope=col t=main.admin.pages.questionaries.questions.question>Question</th> <th class=col-md-1 scope=col t=main.admin.pages.modular-questionaries.questions.order>Order</th> <th class=col-md-3 scope=col t=main.admin.pages.questionaries.questions.type>Type</th> <th class=col-md-3 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=col-md-1>${item.code}</td> <td class=\\\"col-md-4 height-100 overflow-y-hidden\\\"> <div innerhtml.bind=\\\"item.formulation | sanitizeHTML\\\"></div> </td> <td class=col-md-1>${item.order}</td> <td class=col-md-3>${'main.admin.pages.questionaries.questions.question_type.' + QuestionType[item.questionType] & t} </td> <td class=\\\"col-md-3 d-flex\\\"> <a if.bind=item.isOriginal class=\\\"btn btn-link\\\" global-permission-show=\\\"can: QuestionUpdate\\\" route-href=\\\"route: modular-question-child-router; params.bind: {questionId:item.id}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <a if.bind=!item.isOriginal class=\\\"btn btn-link\\\" global-permission-show=\\\"can: QuestionUpdate\\\" route-href=\\\"route: modular-question-child-router; params.bind: {questionId:item.id}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <span> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: QuestionDelete\\\" click.delegate=\\\"delete(item.id, item.name, item.isOriginal, item.languageId)\\\" title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> </span> <span class=\\\"switch switch-sm pt-2\\\"> <input type=checkbox class=switch id=isDisable_${$index} checked.bind=!item.isDisable change.delegate=changeState(item) global-permission-enable=\\\"can: QuestionUpdate\\\"/> <label for=isDisable_${$index} class=form-check-label>&nbsp;</label> </span> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> <modular-question-create-card></modular-question-create-card> <div global-permission-show=\\\"can: QuestionaryCreate\\\"> <bulk-upload-question-card questionary-id.bind=questionaryId xlsx-example-url.bind=xlsxExampleUrl upload-function.call=\\\"uploadBulk(questionaryId, file)\\\" on-uploaded.call=databind()> </bulk-upload-question-card> </div> <div global-permission-show=\\\"can: QuestionaryView\\\"> <export-questionary-questions-card questionary-id.bind=questionaryId export-function.call=createLogFile(questionaryId)></export-questionary-questions-card> </div> </div> </div> </div> </template> \";","import { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Notification } from \"common/services/notification\";\nimport { QuestionType } from \"models/questions/questionType\";\n\n@autoinject()\nexport class QuestionTypeSelection {\n\n  private logger: Logger;\n  private questionaryId: number;\n  private tabItem: string;\n\n  constructor(\n    private router: Router,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"QuestionTypeSelection\");\n    this.tabItem = \"selectionList\";\n\n  }\n\n  public activate(params: any): any {\n    this.logger.info(\"Activated with questionaryId\", params.questionaryId);\n    if (!isNaN(params.questionaryId)) {\n      this.questionaryId = +params.questionaryId;\n    } else {\n      this.router.navigate(\"questionaries\");\n    }\n  }\n\n  public createQuestion(type: QuestionType): any {\n    this.logger.info(\"create question with type:\", type);\n    this.router.navigate(`create/${type}`);\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../../models/questions/questionTypeViewEngineHooks></require> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-2\\\"> <div class=\\\"nav flex-column nav-pills\\\" id=v-pills-tab role=tablist aria-orientation=vertical> <a class=\\\"nav-link active\\\" id=v-pills-list-tab data-toggle=pill role=tab aria-controls=nav-list aria-selected=true href=#nav-list>${'main.admin.pages.questionaries.questions.choice_list' & t}</a> <a class=nav-link id=v-pills-image-tab data-toggle=pill role=tab aria-controls=nav-image aria-selected=false href=#nav-image>${'main.admin.pages.questionaries.questions.choice_images' & t}</a> <a class=nav-link id=v-pills-others-tab data-toggle=pill role=tab aria-controls=nav-others aria-selected=false href=#nav-others>${'main.admin.pages.questionaries.questions.others' & t}</a> </div> </div> <div class=\\\"col-12 col-md-10\\\"> <div class=tab-content id=v-pills-tabContent> <h2>${'main.admin.pages.questionaries.questions.create' & t}</h2> <p>${'main.admin.pages.questionaries.questions.create_info' & t}</p> <hr> <div class=\\\"tab-pane fade show active\\\" id=nav-list role=tabpanel aria-labelledby=v-pills-list-tab> <h2>${'main.admin.pages.questionaries.questions.single_choice_list' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.single_choice_list_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.SingleChoiceList) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> <h2>${'main.admin.pages.questionaries.questions.multiple_choice_list' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.multiple_choice_list_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.MultipleChoiceList) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> <h2>${'main.admin.pages.questionaries.questions.single_choice_list_with_comments' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.single_choice_list_with_comments_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.SingleChoiceListWithComments) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=nav-image role=tabpanel aria-labelledby=v-pills-image-tab> <h2>${'main.admin.pages.questionaries.questions.single_choice_images' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.single_choice_images_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.SingleImageChoiceList) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> <h2>${'main.admin.pages.questionaries.questions.multiple_choice_images' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.multiple_choice_images_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.MultipleImageChoiceList) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=nav-others role=tabpanel aria-labelledby=v-pills-others-tab> <h2>${'main.admin.pages.questionaries.questions.descriptive_text' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.descriptive_text_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.DescriptiveText) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> <h2>${'main.admin.pages.questionaries.questions.open_answer_questions' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.open_answer_questions_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.OpenAnswerQuestion) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> </div> </div> </div> </div></template> \";","import { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { Logger } from \"aurelia-logging\";\nimport { I18N } from \"aurelia-i18n\";\nimport { LogManager, autoinject } from \"aurelia-framework\";\n\n@autoinject\nexport class ModularThematicVariableChild {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"ModularThematicVariableChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    config.map([\n      {\n        route: \"\",\n        name: \"modular-thematic-variable-edit\",\n        moduleId: PLATFORM.moduleName(\"./modular-thematic-variable-edit\"),\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.questionaries.questionary\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.QuestionaryUpdate]\n          }\n        }\n      },\n    ]);\n\n    this.router = router;\n  }\n\n}\n","module.exports = \"<template> <require from=./modular-thematic-variable-create-card.html></require> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","import { bindable, autoinject } from \"aurelia-framework\";\n\n@autoinject()\nexport class ModularThematicVariableCreateCard {\n\n  @bindable\n  public questionaryId: number;\n\n  constructor() {\n  }\n}\n","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\" global-permission-show=\\\"can: QuestionaryCreate\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.modular_thematic_variables.create_card.title' & t}</h5> <p t=[html]main.admin.pages.modular_thematic_variables.create_card.info>Create new dimensions</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: modular-thematic-variable-child-router; params.bind: {questionaryId:questionaryId,thematicGroupId:'create'}\\\">${'commands.create' & t}</a> </div> </div> </template> \";","import { Router } from \"aurelia-router\";\nimport { autoinject, bindable, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { ItemToQualify } from \"models/questionaries/itemToQualify\";\nimport { QuestionaryType } from \"models/questionaries/questionaryType\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { CoreLanguageService } from \"main/admin/services/localizations/core-language-service\";\nimport { PerfilticService } from 'main/admin/services/perfiltic/perfiltic-service';\nimport { ThematicGroupService } from 'main/admin/services/thematic-groups/thematic-group-service';\nimport { ThematicGroup } from 'models/thematic-groups/thematic-group';\n\n@autoinject()\nexport class ModularThematicVariableEdit {\n\n  public questionaryId: number;\n  public thematicGroupId: number;\n  private logger: Logger;\n\n  private parameters = new UxDatatableParameters();\n  private model: ThematicGroup = new ThematicGroup();\n  public isDisabled: boolean;\n\n  private validationController: ValidationController;\n\n  constructor(\n    private thematicGroupService: ThematicGroupService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private router: Router,\n    public languagesService: CoreLanguageService,\n    public questionaryType: QuestionaryType,\n    public itemToQualify: ItemToQualify,\n    public perfilticservice: PerfilticService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"QuestionaryEdit\");\n\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.questionaries.name\").required()\n      .ensure(\"averageTime\").displayName(\"main.admin.pages.modular_questionaries.modular_thematic_variables.average_time\").required().matches(/^[0-9]*$/)\n      .on(this.model);\n  }\n\n  private async activate(params: any): Promise<void> {\n    // this.logger.info(\"activate\");\n    try {\n      if (!isNaN(params.questionaryId)) {\n        this.questionaryId = +params.questionaryId;\n        if (params.thematicGroupId && params.thematicGroupId !== 'create' && !isNaN(params.thematicGroupId)) {\n          this.thematicGroupId = +params.thematicGroupId;\n          this.model = await this.thematicGroupService.getByIdWithThematicVariable(this.thematicGroupId);\n        }\n      }\n      this.configureValidationRules();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(keepEditing);\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  get canSave() {\n    return !this.thematicGroupService.client.isRequesting;\n  }\n\n\n  public async save(keepEditing: boolean): Promise<any> {\n    this.logger.info(\"save\");\n    try {\n\n      if (!this.model.id) {\n        this.model.questionaryId = this.questionaryId;\n        let response: ThematicGroup = await this.thematicGroupService.createWithThematicVariable(this.model);\n\n        this.model.id = response.id;\n\n        this.notification.success(\"main.admin.pages.modular_thematic_variable.messages.questionary_added\");\n\n        if (!keepEditing) {\n          return await this.router.navigateToRoute(\"modular-thematic-variables\", { questionaryId: this.questionaryId });\n        } else {\n          return await this.router.navigateToRoute(\"modular-thematic-variable-child-router\", { thematicGroupId: this.model.id, questionaryId: this.questionaryId });\n        }\n\n      } else {\n        await this.thematicGroupService.updateWithThematicVariable(this.model);\n\n        this.notification.success(\"main.admin.pages.modular_thematic_variable.messages.questionary_edited\");\n\n        if (!keepEditing) {\n          return await this.router.navigateToRoute(\"modular-thematic-variables\");\n        }\n\n      }\n\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n}\n","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2>${'main.admin.pages.modular_questionaries.modular_thematic_variables.title' & t}</h2> <h2 if.bind=model.id>${model.name}</h2> <p>${'main.admin.pages.modular_questionaries.modular_thematic_variables.info' & t}</p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <label for=Name t=main.admin.pages.questionaries.name>Name</label> <input type=text value.bind=\\\"model.name & validate\\\" class=form-control id=Name t=[placeholder]main.admin.pages.questionaries.name> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <label for=AverageTime t=main.admin.pages.modular_questionaries.modular_thematic_variables.average_time>AverageTime</label> <input type=number min=0 value.bind=\\\"model.averageTime & validate\\\" class=form-control id=AverageTime t=[placeholder]main.admin.pages.modular_thematic_variables.average_time> </div> </div> </div> </form></div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button type=button click.delegate=submit(true) global-permission-show=\\\"can: QuestionaryCreate\\\" class=\\\"btn btn-primary btn-round\\\" t=commands.save_and_continue disabled.bind=!canSave>Save and edit</button> <button type=button click.delegate=submit(false) global-permission-show=\\\"can: QuestionaryCreate\\\" class=\\\"btn btn-primary btn-round\\\" t=commands.save disabled.bind=!canSave>Save</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: modular-thematic-variables;\\\" t=commands.cancel>Cancel</a> </div> </div> </div>   </template> \";","import { autoinject, bindable, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { Notification } from \"common/services/notification\";\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { QuestionaryType } from \"models/questionaries/questionaryType\";\nimport { DeleteConfirmation } from \"../../../../components/delete-confirmation\";\nimport { ChangeStateConfirmation } from \"../../../../components/change-state-confirmation\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { ThematicGroupService } from \"main/admin/services/thematic-groups/thematic-group-service\";\nimport { ThematicGroup } from \"models/thematic-groups/thematic-group\";\n\n@autoinject()\nexport class ModularThematicVariableList {\n  @bindable\n  public questionaryId: number;\n\n  private logger: Logger;\n  private parameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  constructor(\n    private thematicGroupService: ThematicGroupService,\n    private dialogService: DialogService,\n    private notification: Notification,\n    public questionaryType: QuestionaryType) {\n\n    this.logger = LogManager.getLogger(\"ModularThematicVariableList\");\n  }\n\n  private refresh = (): Promise<UxDatatableResponse> => {\n    if (!this.questionaryId) {\n      return Promise.resolve({ data: [], totalRecords: 0 });\n    }\n    return this.thematicGroupService.listWithThematicVariable(this.questionaryId, this.parameters);\n  }\n\n  private async bind(): Promise<void> {\n  }\n  private async activate(params: any): Promise<void> {\n    this.logger.debug(\"activated this.questionaryId\", params.questionaryId);\n\n    if (!isNaN(params.questionaryId)) {\n      this.questionaryId = +params.questionaryId;\n      await this.databind();\n    }\n  }\n  public async databind(): Promise<void> {\n    this.logger.info(\"databind\");\n\n    return await this.thematicGroupService.listWithThematicVariable(this.questionaryId, this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.parameters.totalRecords = response.totalRecords;\n        this.parameters.tableData = response.data;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  public async delete(model: Questionary) {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: model.name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.thematicGroupService.deleteWithThematicVariable(model.id)\n          .then(() => {\n            let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === model.id);\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"main.admin.pages.modular_thematic_variables.messages.deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  public async changeState(item: ThematicGroup): Promise<void> {\n    this.logger.debug(\"item.isDisabled\", item.isDisabled);\n    return await this.dialogService.open({\n      viewModel: ChangeStateConfirmation,\n      model: item.name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.thematicGroupService.changeState(item.id)\n          .then(() => {\n            this.notification.success(\"main.admin.pages.modular_thematic_variables.messages.edited\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n      else {\n        item.isDisabled = !item.isDisabled;\n      }\n    });\n  }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class ModularThematicVariableListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"ModularThematicVariableListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./modular-thematic-variable-list\"),\n        name: \"modular-thematic-variables\"\n      },\n\n      {\n        route: \"modular-thematic-variable/:questionaryId\",\n        moduleId: PLATFORM.moduleName(\"./modular-thematic-variable-child-router\"),\n        name: \"modular-thematic-variable-child-router\",\n        // nav: false,\n        // title: this.i18n.tr(\"main.admin.pages.questionaries.questionary\"),\n      },\n\n\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=./modular-thematic-variable-create-card></require> <div if.bind=!questionaryId> <h2>${'main.admin.pages.questionaries.new' & t}</h2> <p> ${'main.admin.pages.questionaries.questions.notification_new_question' & t} </p> </div> <div if.bind=questionaryId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${'main.admin.pages.modular_questionaries.modular_thematic_variables.title' & t}</h2> <p>${'main.admin.pages.modular_questionaries.modular_thematic_variables.info' & t}</p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=col-md-4> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-1 scope=col t=commons.id>Id</th> <th class=col-md-3 scope=col t=main.admin.pages.questionaries.name>Name</th> <th class=col-md-4 scope=col t=main.admin.pages.modular_questionaries.average_time>AverageTime </th> <th class=col-md-4 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=col-md-1><span title=${item.id}>${item.thematicVariableId}</span></td> <td class=\\\"col-md-3 text-truncate\\\"><span title=${item.name}>${item.name}</span></td> <td class=\\\"col-md-4 text-truncate\\\"><span title=${item.languageName}>${item.averageTime}</span></td> <td class=\\\"col-md-4 d-flex\\\"> <a class=\\\"btn btn-link\\\" global-permission-show=\\\"can: QuestionaryUpdate\\\" route-href=\\\"route: modular-thematic-variable-child-router; params.bind: {thematicGroupId:item.id, questionaryId: questionaryId}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: QuestionaryDelete\\\" click.delegate=delete(item) title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> <span class=\\\"switch switch-sm pt-2\\\"> <input type=checkbox class=switch id=isDisabled_${$index} checked.bind=!item.isDisabled change.delegate=changeState(item) global-permission-enable=\\\"can: QuestionaryActivate\\\"/> <label for=isDisabled_${$index} class=form-check-label>&nbsp;</label> </span>  </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar global-permission-show=\\\"can: QuestionaryCreate\\\"> <modular-thematic-variable-create-card questionary-id.bind=questionaryId></modular-thematic-variable-create-card> </div> </div> </div> </template> \";","import config from 'config.js';\nimport { Router } from \"aurelia-router\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { DeleteConfirmation } from \"../../../components/delete-confirmation\";\nimport { Notification } from \"common/services/notification\";\nimport { ScaleService } from \"../../services/scales/scale-service\";\nimport { Scale } from \"models/scales/scale\";\nimport { ModularScaleModal } from \"./modular-scale-modal\";\nimport { ThematicVariablesService } from \"../../services/thematic-groups/thematic-variables-service\";\nimport { ThematicVariable } from \"models/thematic-groups/thematic-variable\";\nimport { EducationalLevel } from \"models/catalogs/educationalLevel\";\nimport { AgeRange } from \"models/catalogs/ageRange\";\nimport { Genre } from \"models/catalogs/genre\";\nimport { CatalogService } from \"main/services/catalogs/catalog-service\";\nimport { CatalogBase } from \"models/catalogs/catalog-base\";\n\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n@autoinject()\nexport class ModularScaleList {\n\n  private thematicVariableId: number;\n  private thematicVariable: ThematicVariable = new ThematicVariable();\n\n  private logger: Logger;\n  private model: Scale = new Scale();\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n  private countries: CatalogBase[] = [];\n  private xlsxExampleUrl: string = config.URLS_BACKEND + \"/person-content/bulk-scales-example.xlsx\";\n\n  constructor(\n    private scaleService: ScaleService,\n    private thematicVariablesService: ThematicVariablesService,\n    private catalogService: CatalogService,\n    private dialogService: DialogService,\n    private notification: Notification,\n    private router: Router) {\n\n    this.logger = LogManager.getLogger(\"ModularScaleList\");\n  }\n\n  private async activate(params: any): Promise<void> {\n    this.logger.debug(\"activate\");\n    if (!isNaN(params.thematicVariableId)) {\n      this.thematicVariableId = +params.thematicVariableId;\n    }\n  }\n\n  private async bind(): Promise<any> {\n    try {\n      if (this.thematicVariableId) {\n        this.thematicVariable = await this.thematicVariablesService.getById(this.thematicVariableId);\n      }\n      this.countries = await this.catalogService.getCountryAll();\n    } catch (error) {\n      this.notification.error(error);\n    }\n    return this.databind();\n  }\n\n  private async databind(): Promise<any> {\n    this.parameters.currentPage = 1;\n    this.parameters.skip = 0;\n    if (this.thematicVariableId) {\n      return await this.scaleService.list(this.thematicVariableId, this.parameters)\n        .then((response: UxDatatableResponse) => {\n          this.parameters.tableData = response.data;\n          this.parameters.totalRecords = response.totalRecords;\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    }\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private refresh = (): Promise<UxDatatableResponse> => {\n    return this.scaleService.list(this.thematicVariableId, this.parameters);\n  }\n\n  private async edit(item: Scale): Promise<void> {\n    let originalItem = JSON.parse(JSON.stringify(item));\n    return await this.dialogService.open({\n      viewModel: ModularScaleModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.scaleService.update(item)\n          .then(async () => {\n            this.notification.success(\"notifications.item_edited\");\n            await this.databind();\n          })\n          .catch(error => {\n            Object.assign(item, originalItem);\n            this.notification.error(error);\n          });\n      } else {\n        Object.assign(item, originalItem);\n      }\n    });\n  }\n\n  private async create(): Promise<void> {\n    let item: Scale = new Scale();\n    item.thematicVariableId = this.thematicVariableId;\n\n    if (this.parameters.search.Genre >= 0) {\n      item.genre = <Genre>this.parameters.search.Genre;\n    }\n\n    if (this.parameters.search.EducationalLevel >= 0) {\n      item.educationalLevel = <EducationalLevel>this.parameters.search.EducationalLevel;\n    }\n\n    if (this.parameters.search.AgeRange >= 0) {\n      item.ageRange = <AgeRange>this.parameters.search.AgeRange;\n    }\n\n    if (this.parameters.search.CountryId) {\n      item.countryId = this.parameters.search.CountryId;\n    }\n\n    return await this.dialogService.open({\n      viewModel: ModularScaleModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.scaleService.create(item)\n          .then(async (model: Scale) => {\n            this.notification.success(\"notifications.item_added\");\n            await this.databind();\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private async delete(id: number, name: string): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.scaleService.delete(id)\n          .then(async () => {\n            this.notification.success(\"notifications.item_deleted\");\n            await this.databind();\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  public async uploadBulk(thematicVariableId: number, file: File): Promise<any> {\n    const result = await this.scaleService.bulkUpload(thematicVariableId, file);\n    return result;\n  }\n\n  private goBack(): void {\n    this.router.navigateBack();\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class ModularScaleListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"ModularScaleListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./modular-scale-thematic-variables\"),\n        name: \"modular-scale-thematic-variables\",\n      },\n\n      {\n        route: \"thematic-variable/:thematicVariableId\",\n        moduleId: PLATFORM.moduleName(\"./modular-scale-list\"),\n        name: \"modular-scale-list\",\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.modular-questionaries.scales.title\"),\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=../../../../models/catalogs/genreViewEngineHooks></require> <require from=../../../../models/catalogs/educationalLevelViewEngineHooks></require> <require from=../../../../models/catalogs/ageRangeViewEngineHooks></require> <require from=../../../components/bulk-upload-scale-card></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <div class=\\\"row mb-3\\\"> <div class=col-12> <h2 class=d-inline-block>${'main.admin.pages.modular-questionaries.scales.title' & t} / ${thematicVariable.name}</h2> </div> </div> <p> ${'main.admin.pages.modular-questionaries.scales.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-3> <div class=form-group> <label for=genre>${'main.catalog.genre.title' & t}</label> <select id=genre change.delegate=\\\"databind() & debounce:100\\\" value.bind=parameters.search.Genre class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of Genres\\\" model.bind=Genre[option]>${'main.catalog.genre.' + option & t} </option> </select> </div> </div> <div class=col-3> <div class=form-group> <label for=educationalLevel>${'main.catalog.educational_level.title' & t}</label> <select id=educationalLevel change.delegate=\\\"databind() & debounce:100\\\" value.bind=parameters.search.EducationalLevel class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of EducationalLevels\\\" model.bind=EducationalLevel[option]> ${'main.catalog.educational_level.' + option & t} </option> </select> </div> </div> <div class=col-3> <div class=form-group> <label for=ageRange>${'main.catalog.age_range.title' & t}</label> <select id=ageRange change.delegate=\\\"databind() & debounce:100\\\" value.bind=parameters.search.AgeRange class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of AgeRanges\\\" model.bind=AgeRange[option]>${'main.catalog.age_range.' + option & t} </option> </select> </div> </div> <div class=col-3> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-3> <div class=form-group> <label for=country>${'main.admin.pages.modular-questionaries.scales.country' & t}</label> <select id=country change.delegate=\\\"databind() & debounce:100\\\" value.bind=parameters.search.CountryId class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"country of countries\\\" model.bind=country.id>${country.name}</option> </select> </div> </div> <div class=col-3> <div class=form-group> <label for=companyName>${'main.admin.pages.modular-questionaries.scales.organization' & t}</label> <input id=companyName type=text class=form-control value.bind=parameters.search.CompanyName input.delegate=\\\"databind() & debounce:400\\\"/> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col scope=col t=main.admin.pages.modular-questionaries.scales.organization>Organization</th> <th class=col scope=col t=main.admin.pages.modular-questionaries.scales.country>Country</th> <th class=col scope=col t=main.catalog.genre.title>Genre</th> <th class=col scope=col t=main.catalog.educational_level.title>Educational level</th> <th class=col scope=col t=main.catalog.age_range.title>Age range</th> <th class=col scope=col t=main.admin.pages.scales.raw_score>Raw score</th> <th class=col scope=col t=main.admin.pages.scales.equivalent_score>Equivalent score</th> <th class=col scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=col>${item.companyName}</td> <td class=col>${item.countryName}</td> <td class=col t=\\\"${item.genre !== null && item.genre !== '' ? 'main.catalog.genre.' + Genre[item.genre] : ''}\\\">genre </td> <td class=col t=\\\"${item.educationalLevel !== null && item.educationalLevel !== '' ? 'main.catalog.educational_level.' + EducationalLevel[item.educationalLevel] : ''}\\\"> el</td> <td class=col t=\\\"${item.ageRange !== null && item.ageRange !== '' ? 'main.catalog.age_range.' + AgeRange[item.ageRange] : ''}\\\"> age</td> <td class=col>${item.rawValuesRange}</td> <td class=col>${item.equivalentValue}</td> <td class=\\\"col d-flex\\\"> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: ScaleUpdate\\\" click.delegate=edit(item) title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </button> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: ScaleDelete\\\" click.delegate=\\\"delete(item.id, item.name)\\\" title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar global-permission-show=\\\"can: ScaleCreate\\\"> <div class=row> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=commands.create>title</h5> <p class=card-text t=[html]main.admin.pages.modular-questionaries.scales.create_info>Create</p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create() t=commands.create>Create</button> </div> </div> </div> </div> <div class=row> <div class=col> <bulk-upload-scale-card thematic-variable-id.bind=thematicVariableId xlsx-example-url.bind=xlsxExampleUrl upload-function.call=\\\"uploadBulk(thematicVariableId, file)\\\" on-uploaded.call=databind()> </bulk-upload-scale-card> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { Scale } from \"models/scales/scale\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { CatalogService } from \"main/services/catalogs/catalog-service\";\nimport { CatalogBase } from \"models/catalogs/catalog-base\";\nimport { CoreCompanyService } from \"main/admin/services/companies/core-company-service\";\nimport { Company } from \"models/companies/company\";\nimport { Role } from \"models/security/role\";\n\n@autoinject()\nexport class ModularScaleModal {\n\n  private model: Scale = new Scale();\n\n  private validationController: ValidationController;\n  private logger: Logger;\n\n  private countries: CatalogBase[] = [];\n  private allCompanies: Company[] = [];\n  private masterFranchises: Company[] = [];\n  private franchises: Company[] = [];\n  private organizationGroups: Company[] = [];\n  private companies: Company[] = [];\n\n  private selectedMasterFranchiseId: number;\n  private selectedFranchiseId: number;\n  private selectedOrganizationGroupId: number;\n\n  constructor(\n    private dialogController: DialogController,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private catalogService: CatalogService,\n    private coreCompanyService: CoreCompanyService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ModularScaleModal\");\n  }\n\n  private async activate(model: Scale): Promise<void> {\n    this.logger.debug(\"activate\");\n    this.model = model;\n    this.configureValidationRules();\n    await this.loadCountries();\n    await this.loadCompanies();\n  }\n\n  private async loadCountries(): Promise<void> {\n    try {\n      this.countries = await this.catalogService.getCountryAll();\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async loadCompanies(): Promise<void> {\n    try {\n      this.allCompanies = await this.coreCompanyService.getAll();\n      this.masterFranchises = this.allCompanies.filter(x => x.roleId == Role.MasterFranchise);\n      this.masterFranchises.sort((a, b) => a.name.localeCompare(b.name));\n\n      // If editing, restore the selection chain\n      if (this.model.companyId) {\n        let selectedCompany = this.allCompanies.find(x => x.id == this.model.companyId);\n        if (selectedCompany) {\n          this.selectedOrganizationGroupId = selectedCompany.parentId;\n          let selectedGroup = this.allCompanies.find(x => x.id == this.selectedOrganizationGroupId);\n          if (selectedGroup) {\n            this.selectedFranchiseId = selectedGroup.parentId;\n            let selectedFranchise = this.allCompanies.find(x => x.id == this.selectedFranchiseId);\n            if (selectedFranchise) {\n              this.selectedMasterFranchiseId = selectedFranchise.parentId;\n              this.onMasterFranchiseChange();\n              this.onFranchiseChange();\n              this.onOrganizationGroupChange();\n            }\n          }\n        }\n      }\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public onMasterFranchiseChange(): void {\n    this.franchises = this.allCompanies.filter(\n      x => x.parentId == this.selectedMasterFranchiseId\n    );\n    this.franchises.sort((a, b) => a.name.localeCompare(b.name));\n    this.organizationGroups = [];\n    this.companies = [];\n    if (!this.selectedFranchiseId ||\n      !this.franchises.find(x => x.id == this.selectedFranchiseId)) {\n      this.selectedFranchiseId = null;\n      this.selectedOrganizationGroupId = null;\n      this.model.companyId = null;\n    }\n  }\n\n  public onFranchiseChange(): void {\n    this.organizationGroups = this.allCompanies.filter(\n      x => x.parentId == this.selectedFranchiseId\n    );\n    this.organizationGroups.sort((a, b) => a.name.localeCompare(b.name));\n    this.companies = [];\n    if (!this.selectedOrganizationGroupId ||\n      !this.organizationGroups.find(x => x.id == this.selectedOrganizationGroupId)) {\n      this.selectedOrganizationGroupId = null;\n      this.model.companyId = null;\n    }\n  }\n\n  public onOrganizationGroupChange(): void {\n    this.companies = this.allCompanies.filter(\n      x => x.parentId == this.selectedOrganizationGroupId\n    );\n    this.companies.sort((a, b) => a.name.localeCompare(b.name));\n    if (!this.model.companyId ||\n      !this.companies.find(x => x.id == this.model.companyId)) {\n      this.model.companyId = null;\n    }\n  }\n\n  configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"rawValuesRange\").displayName(\"main.admin.pages.scales.raw_score\").required().matches(/^\\d+-\\d+$/)\n      .ensure(\"equivalentValue\").displayName(\"main.admin.pages.scales.equivalent_score\").required().matches(/^[1-9][0-9]?$|^100$/)\n      .on(this.model);\n  }\n\n  public async submit(): Promise<void> {\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  public async save(): Promise<any> {\n    return await this.dialogController.ok();\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../models/catalogs/genreViewEngineHooks></require> <require from=../../../../models/catalogs/educationalLevelViewEngineHooks></require> <require from=../../../../models/catalogs/ageRangeViewEngineHooks></require> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'main.admin.pages.modular-questionaries.scales.title' & t}</h2> <form> <div class=form-group> <label for=masterFranchise>${'main.admin.pages.modular-questionaries.scales.master_franchise' & t}</label> <select id=masterFranchise value.bind=selectedMasterFranchiseId change.delegate=onMasterFranchiseChange() class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"mf of masterFranchises\\\" model.bind=mf.id>${mf.name}</option> </select> </div> <div class=form-group> <label for=franchise>${'main.admin.pages.modular-questionaries.scales.franchise' & t}</label> <select id=franchise value.bind=selectedFranchiseId change.delegate=onFranchiseChange() class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"f of franchises\\\" model.bind=f.id>${f.name}</option> </select> </div> <div class=form-group> <label for=organizationGroup>${'main.admin.pages.modular-questionaries.scales.organization_group' & t}</label> <select id=organizationGroup value.bind=selectedOrganizationGroupId change.delegate=onOrganizationGroupChange() class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"og of organizationGroups\\\" model.bind=og.id>${og.name}</option> </select> </div> <div class=form-group> <label for=company>${'main.admin.pages.modular-questionaries.scales.organization' & t}</label> <select id=company value.bind=model.companyId class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"c of companies\\\" model.bind=c.id>${c.name}</option> </select> </div> <div class=form-group> <label for=country>${'main.admin.pages.modular-questionaries.scales.country' & t}</label> <select id=country value.bind=model.countryId class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"country of countries\\\" model.bind=country.id>${country.name}</option> </select> </div> <div class=form-group> <label for=genre>${'main.catalog.genre.title' & t}</label> <select id=genre value.bind=model.genre class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of Genres\\\" model.bind=Genre[option]>${'main.catalog.genre.' + option & t} </option> </select> </div> <div class=form-group> <label for=educationalLevel>${'main.catalog.educational_level.title' & t}</label> <select id=educationalLevel value.bind=model.educationalLevel class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of EducationalLevels\\\" model.bind=EducationalLevel[option]> ${'main.catalog.educational_level.' + option & t} </option> </select> </div> <div class=form-group> <label for=ageRange>${'main.catalog.age_range.title' & t}</label> <select id=ageRange value.bind=model.ageRange class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of AgeRanges\\\" model.bind=AgeRange[option]>${'main.catalog.age_range.' + option & t} </option> </select> </div> <div class=form-group> <input attach-focus=true type=text value.bind=\\\"model.rawValuesRange & validate\\\" class=form-control id=rawScore t=[placeholder]main.admin.pages.scales.raw_score> </div> <div class=form-group> <input type=text value.bind=\\\"model.equivalentValue & validate\\\" class=form-control id=equivalentScore t=[placeholder]main.admin.pages.scales.equivalent_score> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit()>${'commands.save' & t} </button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel() t=commands.cancel>Cancel</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { Notification } from \"common/services/notification\";\nimport { ThematicGroupService } from \"../../services/thematic-groups/thematic-group-service\";\nimport { ThematicVariablesService } from \"../../services/thematic-groups/thematic-variables-service\";\nimport { ThematicVariable } from \"models/thematic-groups/thematic-variable\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\ninterface ThematicVariableRow extends ThematicVariable {\n  thematicGroupName: string;\n}\n\n@autoinject()\nexport class ModularScaleThematicVariables {\n\n  private logger: Logger;\n  private questionaryId: number;\n  private parameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n  private groups: any[] = [];\n\n  constructor(\n    private thematicGroupService: ThematicGroupService,\n    private thematicVariablesService: ThematicVariablesService,\n    private notification: Notification,\n    private router: Router) {\n\n    this.logger = LogManager.getLogger(\"ModularScaleThematicVariables\");\n  }\n\n  private async activate(params: any): Promise<void> {\n    this.logger.debug(\"activate\");\n    if (!isNaN(params.questionaryId)) {\n      this.questionaryId = +params.questionaryId;\n    }\n  }\n\n  private async bind(): Promise<void> {\n    await this.loadGroups();\n    await this.databind();\n  }\n\n  private async loadGroups(): Promise<void> {\n    if (!this.questionaryId) {\n      return;\n    }\n\n    try {\n      let params = new UxDatatableParameters();\n      let groupsResponse: UxDatatableResponse = await this.thematicGroupService.list(this.questionaryId, params);\n      this.groups = groupsResponse.data;\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data.filter(i => !i.isManipulationScale);\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private refresh = async (): Promise<UxDatatableResponse> => {\n    if (!this.questionaryId || !this.groups.length) {\n      return { data: [], totalRecords: 0 };\n    }\n\n    let allVariables: ThematicVariableRow[] = [];\n    let totalRecords = 0;\n\n    for (let group of this.groups) {\n      let response: UxDatatableResponse = await this.thematicVariablesService.list(group.id, this.parameters);\n      for (let variable of response.data) {\n        allVariables.push({\n          ...variable,\n          thematicGroupName: group.name\n        });\n      }\n      totalRecords += response.totalRecords;\n    }\n\n    return { data: allVariables, totalRecords: totalRecords };\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async select(thematicVariableId: number): Promise<void> {\n    await this.router.navigateToRoute(\"modular-scale-list\", { thematicVariableId: thematicVariableId });\n  }\n}\n","module.exports = \"<template> <div if.bind=!questionaryId> <h2>${'main.admin.pages.modular-questionaries.scales.title' & t}</h2> <p> ${'main.admin.pages.modular-questionaries.scales.previous_info' & t} </p> </div> <div if.bind=questionaryId> <h2>${'main.admin.pages.modular-questionaries.scales.title' & t}</h2> <p> ${'main.admin.pages.modular-questionaries.scales.dimension_select' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col scope=col>${'main.admin.pages.modular-questionaries.scales.dimension' & t}</th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=col> <a href=# click.delegate=select(item.id)> ${item.name} </a> </td> </tr> </tbody> </table> </div> </div> </div> </template> \";","\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Router } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { PlanService } from \"../../../services/plans/plan-service\";\nimport { Plan } from \"models/plans/plan\";\n\n\n@autoinject()\nexport class CrossPlanItemsEdit {\n\n  private logger: Logger;\n\n  private planId: number;\n  private plan: Plan = new Plan();\n\n  constructor(\n    private planService: PlanService,\n    private notification: Notification,\n    private router: Router) {\n\n    this.logger = LogManager.getLogger(\"CrossPlanItemsEdit\");\n  }\n\n  private async activate(params: any): Promise<void> {\n    this.logger.info(\"activate\");\n\n    if (!isNaN(params.planId)) {\n      this.planId = +params.planId;\n      return await this.planService.getById(this.planId)\n        .then((plan: Plan) => {\n          this.plan = plan;\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    }\n  }\n\n  get canSave() {\n    return !this.planService.client.isRequesting;\n  }\n\n  public async submit(keepEditing: boolean): Promise<any> {\n    this.logger.info(\"submit\");\n\n    return await this.planService.update(this.plan)\n      .then(async () => {\n        this.notification.success(\"main.admin.pages.plans.messages.plan_edited\");\n\n        if (!keepEditing) {\n          return await this.router.navigateToRoute(\"plans\");\n        }\n\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  // public cancel(): void {\n  //   this.logger.info(\"cancel\");\n  //   this.router.parent.navigate(`plans/franchise/${this.plan.companyId}/plans`);\n  // }\n\n  public async changeCrossItemsState(): Promise<void> {\n    if (!this.plan.isCrossItemsActive) {\n      this.plan.hasHelp = false;\n      this.plan.hasTheMethod = false;\n      this.plan.hasWebChat = false;\n      this.plan.hasMicrosite = false;\n    }\n    \n    return await this.planService.changeCrossItemsState(this.plan.id)\n      .then(() => {\n        this.notification.success(\"main.admin.pages.plans.messages.plan_edited\");\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n}\n","module.exports = \"<template> <div if.bind=!planId> <h2>${'main.admin.pages.plans.cross_plan_items.title' & t}</h2> <p> ${'main.admin.pages.plans.cross_plan_items.notification_new_plan' & t} </p> </div> <div if.bind=planId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${'main.admin.pages.plans.cross_plan_items.title' & t} / ${plan.name}</h2> <p> ${'main.admin.pages.plans.cross_plan_items.subtitle' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=isCrossItemsActive checked.bind=plan.isCrossItemsActive change.delegate=changeCrossItemsState() /> <label for=isCrossItemsActive class=form-check-label>${'main.admin.pages.plans.is_cross_plan_items_active' & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=plan.isCrossItemsActive> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=hasTheMethod checked.bind=plan.hasTheMethod /> <label for=hasTheMethod class=form-check-label>${'main.admin.pages.plans.cross_plan_items.has_the_method' & t}</label> </span> </div> <p>${'main.admin.pages.plans.cross_plan_items.has_the_method_info' & t}</p> </div> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=hasWebChat checked.bind=plan.hasWebChat /> <label for=hasWebChat class=form-check-label>${'main.admin.pages.plans.cross_plan_items.has_web_chat' & t}</label> </span> </div> <p>${'main.admin.pages.plans.cross_plan_items.has_web_chat_info' & t}</p> </div> </div> <div class=\\\"row mb-3\\\" if.bind=plan.isCrossItemsActive> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=hasHelp checked.bind=plan.hasHelp /> <label for=hasHelp class=form-check-label>${'main.admin.pages.plans.cross_plan_items.has_help' & t}</label> </span> </div> <p>${'main.admin.pages.plans.cross_plan_items.has_help_info' & t}</p> </div> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=hasMicrosite checked.bind=plan.hasMicrosite /> <label for=hasMicrosite class=form-check-label>${'main.admin.pages.plans.cross_plan_items.has_microsite' & t}</label> </span> </div> <p>${'main.admin.pages.plans.cross_plan_items.has_microsite_info' & t}</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-actions> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: PlanCreate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: PlanCreate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: plans;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { PlanService } from \"../../../services/plans/plan-service\";\nimport { Plan } from \"models/plans/plan\";\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { DeleteConfirmation } from \"../../../../components/delete-confirmation\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { OtherPlanItem } from \"models/plans/other-plan-item\";\nimport { OtherPlanItemModal } from \"./other-plan-item-modal\";\nimport { OtherPlanItemsService } from \"main/admin/services/plans/other-plan-item-service\";\n\n@autoinject()\nexport class OtherPlanItemList {\n\n  private planId: number;\n  private plan: Plan = new Plan();\n  private logger: Logger;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  constructor(\n    private dialogService: DialogService,\n    private planService: PlanService,\n    private otherTestModuleService: OtherPlanItemsService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"OtherPlanItemList\");\n  }\n\n  private async activate(params: any): Promise<void> {\n    if (!isNaN(params.planId)) {\n      this.planId = +params.planId;\n      return await this.databind();\n    }\n  }\n\n  private async bind(): Promise<any> {\n  }\n\n  public async databind(): Promise<void> {\n    // this.logger.info(\"databind\");\n    if (this.planId) {\n      try {\n        this.plan = await this.planService.getById(this.planId);\n        if (this.plan.isTestItemsActive) {\n          let response = await this.otherTestModuleService.list(this.planId, this.parameters);\n          this.parameters.tableData = response.data;\n          this.parameters.totalRecords = response.totalRecords;\n        }\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n  private refresh = (parameters: UxDatatableParameters): Promise<void | UxDatatableResponse> => {\n    this.logger.info(\"refreshing\");\n    return this.otherTestModuleService.list(this.planId, parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        return this.notification.error(error);\n      });\n  }\n\n  private async create(): Promise<void> {\n    let item: OtherPlanItem = new OtherPlanItem();\n    item.planId = this.plan.id;\n    return await this.dialogService.open({\n      viewModel: OtherPlanItemModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.otherTestModuleService.create(item)\n          .then(async (model: OtherPlanItem) => {\n            item.id = model.id;\n            this.parameters.tableData.unshift(item);\n            this.parameters.totalRecords++;\n            this.notification.success(\"notifications.item_added\");\n            // return await this.databind();\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private async edit(item: OtherPlanItem): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: OtherPlanItemModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled && response.output) {\n        return await this.otherTestModuleService.update(item)\n          .then(async () => {\n            // var name = this.model.name;\n            this.notification.success(\"notifications.item_edited\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private async delete(id: number, name: string): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    })\n      .whenClosed((response: DialogCloseResult) => {\n        if (!response.wasCancelled) {\n          this.otherTestModuleService.delete(id)\n            .then(() => {\n              let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === id);\n              this.parameters.tableData.splice(indexOfEditedModel, 1);\n              this.parameters.totalRecords--;\n              this.notification.success(\"notifications.item_deleted\");\n            })\n            .catch(error => {\n              this.notification.error(error);\n            });\n        }\n      });\n  }\n\n  private async changeOtherItemsState(): Promise<void> {\n    return await this.planService.changeOtherItemsState(this.plan.id)\n      .then(() => {\n        this.notification.success(\"main.admin.pages.plans.messages.plan_edited\");\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n}\n","module.exports = \"<template> <require from=../../../../../models/plans/otherPlanItemTypeViewEngineHooks></require> <div if.bind=!planId> <h2>${'main.admin.pages.plans.other_plan_items.title' & t}</h2> <p> ${'main.admin.pages.plans.other_plan_items.notification_new_plan' & t} </p> </div> <div if.bind=planId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${'main.admin.pages.plans.other_plan_items.title' & t} / ${plan.name}</h2> <p> ${'main.admin.pages.plans.other_plan_items.subtitle' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=isOtherItemsActive checked.bind=plan.isOtherItemsActive change.delegate=changeOtherItemsState() /> <label for=isOtherItemsActive class=form-check-label>${'main.admin.pages.plans.is_other_plan_items_active' & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table if.bind=plan.isOtherItemsActive class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-4 scope=col t=main.admin.pages.plans.other_plan_items.other_plan_item_type> Other</th> <th class=col-md-4 scope=col t=main.admin.pages.plans.other_plan_items.description>Description </th> <th class=col-md-4 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=col-md-4>${'main.admin.pages.plans.other_plan_items.other_plan_item_types.' + OtherPlanItemType[item.otherPlanItemType] & t} </td> <td class=\\\"col-md-4 text-truncate\\\"><span title=${item.description}>${item.description}</span></td> <td class=\\\"col-md-4 d-flex\\\"> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: PlanUpdate\\\" click.delegate=edit(item)> <i class=material-icons>edit</i> </button> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: PlanUpdate\\\" click.delegate=\\\"delete(item.id, item.name)\\\"> <i class=material-icons>archive</i> </button> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar if.bind=plan.isOtherItemsActive global-permission-show=\\\"can: PlanCreate\\\"> <div class=row> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.plans.other_plan_items.create_card.title' & t}</h5> <p class=card-text t=[html]main.admin.pages.plans.other_plan_items.create_card.info>Lorem</p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create() t=commands.create>Create</button> </div> </div> </div> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport {\n  ValidationController,\n  ValidationControllerFactory,\n  ValidationRules,\n  ControllerValidateResult\n} from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { OtherPlanItem } from 'models/plans/other-plan-item';\n\n@autoinject()\nexport class OtherPlanItemModal {\n\n  private model: OtherPlanItem = new OtherPlanItem();\n  private validationController: ValidationController;\n  private logger: Logger;\n\n  constructor(\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"TestPlanItemModal\");\n  }\n\n  private async activate(model: OtherPlanItem): Promise<any> {\n    this.logger.debug(\"model\", model);\n    this.model = model;\n    this.configureValidationRules();\n  }\n\n  configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"otherPlanItemType\").displayName(\"main.admin.pages.plans.other_plan_items.other_plan_item_type\").required()\n      .on(this.model);\n  }\n\n  public async submit(): Promise<void> {\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  public async save(): Promise<any> {\n    // this.validationController.reset();\n    return await this.dialogController.ok();\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../../models/plans/otherPlanItemTypeViewEngineHooks></require> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'main.admin.pages.plans.other_plan_items.title' & t}</h2> <form> <div class=form-group if.bind=!model.id> <label for=otherPlanItemType t=main.admin.pages.plans.other_plan_items.other_plan_item_type>Type</label> <select value.bind=\\\"model.otherPlanItemType & validate\\\" class=form-control id=otherPlanItemType> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of OtherPlanItemTypes\\\" model.bind=OtherPlanItemType[option]>${'main.admin.pages.plans.other_plan_items.other_plan_item_types.' + option & t}</option> </select> </div> <div class=form-group if.bind=model.id> <label for=type t=main.admin.pages.plans.other_plan_items.other_plan_item_type>Type</label> <p>${'main.admin.pages.plans.other_plan_items.other_plan_item_types.' + OtherPlanItemType[model.otherPlanItemType] & t}</p> </div> <div class=form-group> <label for=type t=main.admin.pages.plans.other_plan_items.description>Description</label> <input type=text value.bind=model.description class=form-control id=talents t=[placeholder]main.admin.pages.plans.other_plan_items.description> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=\\\"form-group text-right\\\"> <button type=submit class=\\\"btn btn-primary btn-round\\\" attach-focus=true click.delegate=submit() t=commands.save>Save</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { Logger } from \"aurelia-logging\";\nimport { I18N } from \"aurelia-i18n\";\nimport { Notification } from \"common/services/notification\";\n@autoinject\nexport class PlanChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n  private isRobotHunter: boolean = false;\n  constructor(\n    private i18n: I18N,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"GroupChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router, params: any): void {\n    this.router = router;    \n    try {  \n      if (params.isRobotHunter) {\n        this.isRobotHunter = JSON.parse(params.isRobotHunter);\n      }        \n   \n    config.map([\n      {\n        route: [\"\"],\n        moduleId: PLATFORM.moduleName(\"./plan-edit\"),\n        name: \"plan-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.plans.plan.title\"),\n      },\n\n      {\n        route: \"test-plan-items\",\n        moduleId: PLATFORM.moduleName(\"./test-plan-items/test-plan-item-list\"),\n        name: \"test-plan-items\",\n        nav: !this.isRobotHunter,\n        title: this.i18n.tr(\"main.admin.pages.plans.test_plan_items.title\")\n      },\n\n\n      {\n        route: \"cross-plan-items\",\n        moduleId: PLATFORM.moduleName(\"./cross-plan-items/cross-plan-items-edit\"),\n        name: \"cross-plan-items\",\n        nav: !this.isRobotHunter,\n        title: this.i18n.tr(\"main.admin.pages.plans.cross_plan_items.title\"),\n      },\n\n      {\n        route: \"other-plan-items\",\n        moduleId: PLATFORM.moduleName(\"./other-plan-items/other-plan-item-list\"),\n        name: \"other-plan-items\",\n        nav: !this.isRobotHunter,\n        title: this.i18n.tr(\"main.admin.pages.plans.other_plan_items.title\"),\n      },\n\n      {\n        route: \"selection-plan-items\",\n        moduleId: PLATFORM.moduleName(\"./test-plan-items/test-plan-item-list\"),\n        name: \"selection-plan-items\",\n        nav: this.isRobotHunter,\n        title: this.i18n.tr(\"main.admin.pages.plans.selection_plan_items.title\")\n      },\n\n    ]);\n  }\n  catch (error) {\n    this.notification.error(error);\n  }\n}\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Router } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { PlanService } from \"../../services/plans/plan-service\";\nimport { Plan } from \"models/plans/plan\";\nimport { CoreCompanyService } from \"../../services/companies/core-company-service\";\nimport { Company } from \"models/companies/company\";\nimport { SpendMode } from \"models/plans/spendMode\";\nimport { PlanType } from \"models/plans/planType\";\n\n@autoinject()\nexport class PlanEdit {\n\n  private plans: Plan[];\n  private logger: Logger;\n\n  private model: Plan = new Plan();\n  private franchise: Company;\n  private validationController: ValidationController;\n  private isRobotHunter: boolean = false;\n  constructor(\n    private coreCompanyService: CoreCompanyService,\n    private planService: PlanService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private router: Router) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"PlanEdit\");\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.plans.plan_name\").required()\n      .ensure(\"planType\").displayName(\"main.admin.pages.plans.plan_type\").required()\n      .ensure(\"talents\").displayName(\"main.admin.pages.plans.talents\").required().matches(/^[0-9]*$/)\n      .ensure(\"talentChargeFrequency\").displayName(\"main.admin.pages.plans.talent_charge_frequency\").required()\n      .ensure(\"demoLimitTime\").displayName(\"main.admin.pages.plans.demo_limit_time\").required()\n      .ensure(\"consultSmartPerProcess\").displayName(\"main.admin.pages.plans.talents\").required().matches(/^[0-9]*$/)\n  }\n\n  private async activate(params: any): Promise<void> {\n    // this.logger.info(\"activate\");\n    if (!isNaN(params.franchiseId)) {\n      try {\n        if (params.isRobotHunter) {\n          this.isRobotHunter = JSON.parse(params.isRobotHunter);\n          this.model.additionalTalentsSpendMode = SpendMode.UniqueRetail;\n        }\n        this.plans = (await this.planService.getAll(this.isRobotHunter));\n        this.franchise = await this.coreCompanyService.getById(+params.franchiseId);\n        this.model.isRobotHunter = this.isRobotHunter;\n        if (!isNaN(params.planId)) {\n          this.model = await this.planService.getById(+params.planId);\n        }\n        else {\n          this.model.companyId = this.franchise.id;\n        }\n        this.configureValidationRules();\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n  onPlanTypeChange() {\n    if (this.isRobotHunter && this.model.planType === PlanType.Demo) {\n      this.model.hasEmploymentPortal = true;\n      this.model.isDataBasePublic = true;\n    }\n    if (this.isRobotHunter && this.model.planType === PlanType.Billable) {\n      this.model.hasEmploymentPortal = false;\n      this.model.isDataBasePublic = false;\n    }\n  }\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(keepEditing);\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.planService.client.isRequesting;\n  }\n\n  public async save(keepEditing: boolean): Promise<any> {\n    this.logger.info(\"save\");\n    if (this.model.additionalTalentsSpendMode == SpendMode.Unlimitted) {\n      return this.notification.error(\"main.admin.pages.plans.messages.plan_edited_unilimitted\");\n    }\n    if (!this.model.id) {\n      return await this.planService.create(this.model)\n        .then(async (plan: Plan) => {\n          this.model.id = plan.id;\n          this.notification.success(\"main.admin.pages.plans.messages.plan_edited\");\n          if (!keepEditing) {\n            return await this.router.navigateToRoute(\"plans\");\n          } else {\n            return await this.router.navigateToRoute(\"plan-child-router\", { planId: plan.id });\n          }\n\n        }).catch(error => {\n          this.notification.error(error);\n        });\n    } else {\n      return await this.planService.update(this.model)\n        .then(async () => {\n          this.notification.success(\"main.admin.pages.plans.messages.plan_edited\");\n\n          if (!keepEditing) {\n            return await this.router.navigateToRoute(\"plans\");\n          }\n\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    }\n  }\n  // public cancel(): void {\n  //   this.logger.info(\"cancel\");\n  //   this.router.parent.navigate(`plans/franchise/${this.model.companyId}/plans`);\n  // }\n}\n","module.exports = \"<template> <require from=../../../../models/plans/planTypeViewEngineHooks></require> <require from=../../../../models/plans/talentChargeFrequencyViewEngineHooks></require> <require from=../../../../models/plans/demoLimitTimeViewEngineHooks></require> <require from=../../../../models/plans/spendModeViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2 if.bind=!model.id>${'main.admin.pages.plans.create' & t}</h2> <h2 if.bind=model.id>${model.name}</h2> <p>${'main.admin.pages.plans.editing_info' & t}</p> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-4> <label> ${franchise.name} <br/> <small>${'main.admin.pages.franchises.title' & t}</small> </label> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=name t=main.admin.pages.plans.plan_name>Plan name</label> <input type=text value.bind=\\\"model.name & validate\\\" class=form-control id=name t=[placeholder]main.admin.pages.plans.plan_name> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group if.bind=!model.id> <label for=type t=main.admin.pages.plans.plan_type>Plan type</label> <select value.bind=\\\"model.planType & validate\\\" class=form-control id=planType change.delegate=onPlanTypeChange()> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of PlanTypes\\\" model.bind=PlanType[option]> ${'main.admin.pages.plans.plan_types.' + option & t}</option> </select> </div> <div class=form-group if.bind=model.id> <label for=type t=main.admin.pages.questionaries.type>Type</label> <p>${'main.admin.pages.plans.plan_types.' + PlanType[model.planType] & t}</p> </div> </div> <div class=\\\"col-md-4 col-12\\\" if.bind=!model.id> <div class=form-group> <label for=cloneFrom>${'main.admin.pages.plans.clone_from' & t}</label> <select value.bind=\\\"model.cloneFromPlanId & validate\\\" class=form-control id=cloneFromPlanId> <option t=commands.new value=\\\"\\\"></option> <option repeat.for=\\\"item of plans | filter:'planType':model.planType\\\" model.bind=item.id>${item.name} </option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <label for=description t=main.admin.pages.plans.plan_description>Description</label> <input type=text value.bind=model.description class=form-control id=company.businessName t=[placeholder]main.admin.pages.plans.plan_description> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\" if.bind=\\\"!model.cloneFromPlanId && model.planType == PlanType.Demo && !model.isRobotHunter\\\"> <div class=form-group> <label for=talents t=main.admin.pages.plans.talents>Talent numbers</label> <input type=number value.bind=\\\"model.talents & validate\\\" class=form-control id=talents t=[placeholder]main.admin.pages.plans.talents> </div> </div> <div class=\\\"col-md-4 col-12\\\" if.bind=\\\"!model.cloneFromPlanId && model.planType == PlanType.Demo && !model.isRobotHunter\\\"> <div class=form-group> <label for=talentChargeFrequency>${'main.admin.pages.plans.talent_charge_frequency' & t}</label> <select value.bind=\\\"model.talentChargeFrequency & validate\\\" class=form-control id=talentChargeFrequency> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of TalentChargeFrequencies\\\" model.bind=TalentChargeFrequency[option]> ${'main.admin.pages.plans.talent_charge_frequencies.' + option & t}</option> </select> </div> </div> <div class=\\\"col-md-4 col-12\\\" if.bind=\\\"!model.cloneFromPlanId && model.planType == PlanType.Demo\\\"> <div class=form-group> <label for=demoLimitTime t=main.admin.pages.plans.demo_limit_time>Limit time</label> <select value.bind=\\\"model.demoLimitTime & validate\\\" class=form-control id=demoLimitTime> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of DemoLimitTimes\\\" model.bind=DemoLimitTime[option]> ${'main.admin.pages.plans.demo_limit_times.' + option & t}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\" if.bind=\\\"!model.cloneFromPlanId && model.planType == PlanType.Demo && !model.isRobotHunter\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=accumulateTalents checked.bind=model.accumulateTalents /> <label for=accumulateTalents class=form-check-label>${'main.admin.pages.plans.accumulateTalents' & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"!model.cloneFromPlanId && model.isRobotHunter\\\"> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <label for=dailyConsult t=main.admin.pages.plans.daily_consult>Daily consult</label> <input type=number value.bind=\\\"model.dailyConsult & validate\\\" class=form-control id=dailyConsult t=[placeholder]main.admin.pages.plans.daily_consult> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <label for=consultationPerYear t=main.admin.pages.plans.consultationPerYear>Consultation Per Year</label> <input type=number value.bind=\\\"model.consultationPerYear & validate\\\" class=form-control id=consultationPerYear t=[placeholder]main.admin.pages.plans.consultationPerYear> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <label for=spendMode t=main.admin.pages.plans.test_plan_items.spend_mode_additional_consult>Spend mode</label> <select value.bind=model.additionalTalentsSpendMode class=form-control id=spendMode> <option repeat.for=\\\"option of SpendModes\\\" model.bind=SpendMode[option]> <span>${'main.admin.pages.plans.test_plan_items.spend_modes.' + option & t}</span> </option> </select> </div> </div> <div class=\\\"col-md-3 col-12\\\" if.bind=\\\"model.consultationPerYear > 0\\\"> <div class=form-group> <label for=consultationPerYearTalents t=main.admin.pages.plans.consultationPerYearTalents>ConsultationPerYearTalents</label> <input type=number value.bind=\\\"model.consultationPerYearTalents & validate\\\" class=form-control id=consultationPerYearTalents t=[placeholder]main.admin.pages.plans.consultationPerYearTalents> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"!model.cloneFromPlanId  && model.isRobotHunter\\\"> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <label for=publishedVacancies t=main.admin.pages.plans.publishedVacancies>Published Vacancies</label> <input type=number value.bind=\\\"model.publishedVacancies & validate\\\" class=form-control id=publishedVacancies t=[placeholder]main.admin.pages.plans.publishedVacancies> </div> </div> <div class=\\\"col-md-3 col-12\\\" if.bind=\\\"model.publishedVacancies > 0\\\"> <div class=form-group> <label for=publishedVacanciesTalents t=main.admin.pages.plans.publishedVacanciesTalents>Published Vacancies Talents</label> <input type=number value.bind=\\\"model.publishedVacanciesTalents & validate\\\" class=form-control id=publishedVacanciesTalents t=[placeholder]main.admin.pages.plans.publishedVacanciesTalents> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <label for=consultSmartPerProcess t=main.admin.pages.plans.smartXVacancies>Smart per Vacancies</label> <input type=number min=1 value.bind=\\\"model.consultSmartPerProcess & validate\\\" class=form-control id=consultSmartPerProcess t=[placeholder]main.admin.pages.plans.smartXVacancies> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <label for=aiTalents t=main.admin.pages.plans.reservedInformationTalents>Talentos de IA</label> <input type=number value.bind=\\\"model.aiTalents & validate\\\" class=form-control id=aiTalents t=[placeholder]main.admin.pages.plans.reservedInformationTalents> </div> </div> </div> <h5 class=\\\"w-100 text-start mb-4\\\">${'main.plans.recruitment.sources' & t}</h5> <div class=\\\"row mt-4\\\" if.bind=\\\"!model.cloneFromPlanId && model.isRobotHunter\\\"> <div class=\\\"col-md-12 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=hasRecruitmentSources checked.bind=model.hasRecruitmentSources /> <label for=hasRecruitmentSources class=form-check-label>${'main.plans.suggested' & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"!model.cloneFromPlanId && model.isRobotHunter\\\"> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=hasWebBrowser checked.bind=model.hasWebBrowser /> <label for=hasWebBrowser class=form-check-label>${'main.admin.pages.plans.hasWebBrowser' & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"!model.cloneFromPlanId && model.isRobotHunter\\\"> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=hasEmploymentPortal checked.bind=model.hasEmploymentPortal /> <label for=hasEmploymentPortal class=form-check-label>${'main.admin.pages.plans.hasEmploymentPortal' & t}</label> </span> </div> </div> <div class=\\\"col-md-3 col-12\\\" if.bind=model.hasEmploymentPortal> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=isDataBasePublic checked.bind=model.isDataBasePublic /> <label for=isDataBasePublic class=form-check-label>${'main.admin.pages.plans.isDataBasePublic' & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"!model.cloneFromPlanId && model.isRobotHunter\\\"> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=hasChatBot checked.bind=model.hasChatBot /> <label for=hasChatBot class=form-check-label>${'main.admin.pages.plans.hasChatBot' & t}</label> </span> </div> </div> <div class=\\\"col-md-12 col-12 mt-2\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=hasMutichanel checked.bind=model.hasMutichanel /> <label for=hasMutichanel class=form-check-label>${'main.admin.pages.plans.hasMutichanel' & t}</label> </span> </div> </div> <div class=\\\"col-md-3 col-12\\\" if.bind=model.hasChatBot> <div class=form-group> <label for=responsePerMonth t=main.admin.pages.plans.responsePerMonth>Response Number Month</label> <input type=number value.bind=\\\"model.responsePerMonth & validate\\\" class=form-control id=responsePerMonth t=[placeholder]main.admin.pages.plans.responsePerMonth> </div> </div> <div class=\\\"col-md-3 col-12\\\" if.bind=model.hasChatBot> <div class=form-group> <label for=responsePerMonthTalents t=main.admin.pages.plans.responsePerMonthTalents>Response Talents</label> <input type=number value.bind=\\\"model.responsePerMonthTalents & validate\\\" class=form-control id=responsePerMonthTalents t=[placeholder]main.admin.pages.plans.responsePerMonthTalents> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-actions> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: PlanCreate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: PlanCreate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: plans;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </div> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\nimport { AuthorizationService } from \"aurelia-permission\";\n\n@autoinject\nexport class PlanFranchiseListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService) {\n    this.logger = LogManager.getLogger(\"PlanFranchiseListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;    \n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./plans-home\"),\n        name: \"plans-home\",\n        title: this.i18n.tr(\"main.admin.pages.plans_management.title\"),\n        settings: {\n          isHome: true\n        }\n      },\n             \n      {\n        route: \"plan-franchise\",\n        moduleId: PLATFORM.moduleName(\"./plan-franchises\"),\n        name: \"select-franchise\",\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.PlanView),\n        title: this.i18n.tr(\"main.admin.pages.plans.franchise_plan\"),\n        settings:{\n          permission: {\n            only: [PredefinedPermissions.PlanView]\n          },\n          info: this.i18n.tr(\"main.admin.pages.test_management.plan_franchise.info\")\n        }\n      },\n\n      {\n        route: \"plan-selection\",\n        moduleId: PLATFORM.moduleName(\"./plan-selection-franchises\"),\n        name: \"plan-select-franchise\",        \n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.PlanView),\n        title: this.i18n.tr(\"main.test.pages.selection_plans\"),\n        settings:{\n          permission: {\n            only: [PredefinedPermissions.PlanView]\n          },\n          info: this.i18n.tr(\"main.admin.pages.test_management.plan_selection.info\")\n        }\n      },\n\n      {\n        route: \"franchise/:franchiseId/is-selection-plan/:isRobotHunter\",\n        moduleId: PLATFORM.moduleName(\"./plan-list-child-router\"),\n        name: \"plan-list-child-router\",\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.plans.plans\"),\n      },\n      \n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","\nexport class PlanFranchises {\n\n}\n","module.exports = \"<template> <require from=../franchises/franchise-dropdown-selector></require> <div class=\\\"row mb-3\\\"> <div class=col-12> <h2>${'main.admin.pages.plans.management' & t}</h2> <p>${'main.admin.pages.plans.management_info' & t}</p> <franchise-dropdown-selector style=text-align:center route-name=plan-list-child-router is-robot-hunter=false></franchise-dropdown-selector> </div> </div> </template> \";","import { Router } from \"aurelia-router\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult, DialogCancelableOperationResult } from \"aurelia-dialog\";\nimport { DeleteConfirmation } from \"../../../components/delete-confirmation\";\nimport { Notification } from \"common/services/notification\";\nimport { PlanService } from \"../../services/plans/plan-service\";\nimport { CoreCompanyService } from \"../../services/companies/core-company-service\";\nimport { Company } from \"models/companies/company\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Role } from \"models/security/role\";\nimport { Plan } from \"models/plans/plan\";\nimport { ChangeStateConfirmation } from \"../../../components/change-state-confirmation\";\n\n@autoinject()\nexport class PlanList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  private franchiseId: number;\n  private isRobotHunter: boolean;\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private companies: Company[] = [];\n  private franchises: Company[] = [];\n\n  private isLoaded: boolean = false;\n\n  constructor(\n    private coreCompanyService: CoreCompanyService,\n    private planService: PlanService,\n    // private dialogController: DialogController,\n    private dialogService: DialogService,\n    private notification: Notification,\n    private router: Router) {\n\n    this.logger = LogManager.getLogger(\"PlanList\");\n  }\n\n  private async activate(params: any): Promise<void> {\n\n    if (this.params.franchiseId != params.franchiseId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.franchiseId)) {\n      this.franchiseId = +this.params.franchiseId;\n      this.isRobotHunter = this.params.isRobotHunter;\n      try {\n        this.companies = await this.coreCompanyService.getAll()\n        this.franchises = this.companies.filter(x => x.roleId === Role.Franchise);\n        this.isLoaded = true;\n        return await this.databind();\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n  public async databind(): Promise<void> {\n    this.logger.info(\"databind\");\n    return await this.planService.list(this.franchiseId,this.isRobotHunter, this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private refresh = (): Promise<UxDatatableResponse> => {\n    // this.logger.info(\"refreshing\");\n    return this.planService.list(this.franchiseId,this.isRobotHunter, this.parameters);\n  }\n\n  private async create(): Promise<any> {\n    this.logger.info(\"create\");\n    return await this.router.navigateToRoute(\"plan-child-router\", { planId: 'create' , isRobotHunter: this.isRobotHunter });\n  }\n\n  private async delete(id: number, name: string): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    })\n      .whenClosed(async (response: DialogCloseResult) => {\n        if (!response.wasCancelled) {\n          return await this.planService.delete(id)\n            .then(() => {\n              let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === id);\n              this.parameters.tableData.splice(indexOfEditedModel, 1);\n              this.parameters.totalRecords--;\n              this.notification.success(\"main.admin.pages.plans.messages.plan_deleted\");\n            })\n            .catch(error => {\n              this.notification.error(error);\n            });\n        }\n      });\n  }\n\n\n  public async changeState(item: Plan): Promise<void> {\n    this.logger.debug(\"item.isActive\", item.isActive);\n    return await this.dialogService.open({\n      viewModel: ChangeStateConfirmation,\n      model: item.name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.planService.changeState(item.id)\n          .then(() => {\n            // item.isActive = !item.isActive;\n            this.notification.success(\"main.admin.pages.plans.messages.activation_changed\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n      else {\n        item.isActive = !item.isActive;\n      }\n    });\n  }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class PlanListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"PlanListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./plan-list\"),\n        name: \"plans\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.admin.pages.plans.title\"),\n      },\n\n      {\n        route: \"plan/:planId\",\n        moduleId: PLATFORM.moduleName(\"./plan-child-router\"),\n        name: \"plan-child-router\",\n        // nav: false,\n        // title: this.i18n.tr(\"main.admin.pages.plans.plan\"),\n      },\n      \n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=../franchises/franchise-selector></require> <require from=../../../../models/plans/planTypeViewEngineHooks></require> <h2>${'main.admin.pages.plans.title' & t}</h2> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.admin.pages.plans.management' & t} </p> </div> </div> <hr/> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <div class=row> <div class=\\\"col-md-2 col-12\\\"> <franchise-selector franchise-id.bind=franchiseId route-name=plan-list-child-router is-robot-hunter.bind=isRobotHunter></franchise-selector> </div> <div class=\\\"col-md-10 col-12\\\"> <div class=\\\"row mb-3 align-items-center m-0\\\"> <div class=\\\"col-12 col-md-6\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-sm-auto\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3 m-0\\\"> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-4 scope=col t=main.admin.pages.plans.plan_name>Plan name</th> <th class=col-md-2 scope=col t=main.admin.pages.plans.plan_type>Plan type</th> <th class=col-md-3 scope=col t=main.admin.pages.plans.plan_description>Plan description</th> <th class=col-md-3 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-4 text-truncate\\\"><span title=${item.name}>${item.name}</span></td> <td class=col-md-2>${'main.admin.pages.plans.plan_types.' + PlanType[item.planType] & t}</td> <td class=\\\"col-md-3 text-truncate\\\"><span title=${item.description}>${item.description}</span></td> <td class=\\\"col-md-3 d-flex\\\"> <a class=\\\"btn btn-link\\\" global-permission-show=\\\"can: PlanUpdate\\\" route-href=\\\"route: plan-child-router; params.bind: {planId:item.id}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: PlanDelete\\\" click.delegate=\\\"delete(item.id, item.name)\\\" title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> <span class=\\\"switch switch-sm pt-2\\\"> <input type=checkbox class=switch id=isActive_${$index} checked.bind=item.isActive change.delegate=changeState(item) global-permission-enable=\\\"can: PlanActivate\\\"/> <label for=isActive_${$index} class=form-check-label>&nbsp;</label> </span> </td> </tr> </tbody> </table> </div> </div> </div> </div> <div class=content-sidebar global-permission-show=\\\"can: PlanCreate\\\"> <div class=row> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=commands.create>title</h5> <p class=card-text t=[html]main.admin.pages.plans.create_info>Lorem</p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create()> ${'commands.create' & t} </button> </div> </div> </div> </div> </div> </div> </template> \";","\nexport class SelectionPlanFranchises {\n\n}\n","module.exports = \"<template> <require from=../franchises/franchise-dropdown-selector></require> <div class=\\\"row mb-3\\\"> <div class=col-12> <h2>${'main.test.pages.selection_plans' & t}</h2> <p>${'main.admin.pages.test_management.plan_selection.info' & t}</p> <franchise-dropdown-selector style=text-align:center route-name=plan-list-child-router is-robot-hunter=true></franchise-dropdown-selector> </div> </div> </template> \";","import { Router } from 'aurelia-router';\nimport { autoinject } from \"aurelia-framework\";\n\n@autoinject\nexport class PlansHome {\n\n  constructor(private router: Router) {\n\n  }\n\n\n}\n","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <section> <div class=\\\"row mb-4 text-center\\\"> <div class=col-12> <h1 class=display-4>${'main.admin.pages.plans_management.title' & t}</h1> <p class=lead>${'main.admin.pages.plans_management.info' & t}</p> </div> </div> </section> <section> <ul class=\\\"list-group list-group-flush\\\"> <li repeat.for=\\\"route of router.navigation\\\" if.bind=!route.settings.isHome class=\\\"list-group-item justify-content-between\\\"> <div class=\\\"row mb-3\\\"> <div class=col-10> <h3>${route.title}</h3> <p>${route.settings.info}</p> </div> <div class=\\\"col-2 text-right\\\"> <a class=\\\"btn btn-secondary\\\" href.bind=route.href>${'commands.config' & t}</a> </div> </div> </li> </ul> </section> </div> </div> </template> \";","import { autoinject, LogManager, bindable } from \"aurelia-framework\";\nimport { PlanService } from \"../../../services/plans/plan-service\";\n\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { SpendMode } from 'models/plans/spendMode';\n\n@autoinject()\nexport class CustomReportSpendMode {\n\n  private logger: Logger;\n\n  @bindable\n  private planId: number;\n\n  @bindable\n  private customReportsSpendMode: SpendMode;\n\n  constructor(\n    private planService: PlanService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"CustomReportSpendMode\");\n  }\n\n  private async changeCustomReportSpendMode(): Promise<void> {\n\n    if (this.planId && this.customReportsSpendMode) {\n      this.logger.debug(\"changeCustomReportSpendMode planId\", this.planId);\n      this.logger.debug(\"changeCustomReportSpendMode customReportsSpendMode\", this.customReportsSpendMode);\n\n      return await this.planService.changeCustomReportSpendMode(this.planId, this.customReportsSpendMode)\n        .then(() => {\n          this.notification.success(\"main.admin.pages.plans.messages.plan_edited\");\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n\n    }\n  }\n}\n","module.exports = \"<template> <require from=../../../../../models/plans/spendModeViewEngineHooks></require> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.plans.custom_report_spend_mode.title' & t}</h5> <p class=card-text t=[html]main.admin.pages.plans.custom_report_spend_mode.info>Lorem</p> <form> <div class=form-group> <label for=spendMode t=main.admin.pages.plans.test_plan_items.spend_mode>Spend mode</label> <select value.bind=customReportsSpendMode class=form-control id=spendMode change.delegate=changeCustomReportSpendMode()> <option repeat.for=\\\"option of SpendModes\\\" model.bind=SpendMode[option]>${'main.admin.pages.plans.test_plan_items.spend_modes.' + option & t}</option> </select> </div> </form> </div> </div> </template> \";","import { I18N } from 'aurelia-i18n';\nimport { TestPlanItem } from 'models/plans/test-plan-item';\nimport { Router } from \"aurelia-router\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { TestPlanItemModal } from \"./test-plan-item-modal\";\nimport { PlanService } from \"../../../services/plans/plan-service\";\nimport { Plan } from \"models/plans/plan\";\nimport { TestPlanItemsService } from \"../../../services/plans/test-plan-item-service\";\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { DeleteConfirmation } from \"../../../../components/delete-confirmation\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { SpendMode } from 'models/plans/spendMode';\n\n@autoinject()\nexport class TestPlanItemList {\n\n  private planId: number;\n  private plan: Plan = new Plan();\n  private logger: Logger;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private customReportsSpendMode: SpendMode;\n  private isRobotHunter: boolean;\n\n  constructor(\n    private i18n: I18N,\n    private dialogService: DialogService,\n    private planService: PlanService,\n    private planTestModuleService: TestPlanItemsService,\n    private router: Router,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"TestPlanItemList\");\n  }\n\n  private async activate(params: any): Promise<void> {\n    if (!isNaN(params.planId)) {\n      this.planId = +params.planId;      \n      if (params.isRobotHunter) {\n        this.isRobotHunter = JSON.parse(params.isRobotHunter);\n      }       \n    }\n  }\n\n  private async bind(): Promise<any> {\n    return await this.databind();\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  public async databind(): Promise<void> {\n    this.logger.info(\"databind\");\n    if (this.planId) {\n      try {\n        this.plan = await this.planService.getById(this.planId);\n        this.customReportsSpendMode = this.plan.customReportsSpendMode;\n        if (this.plan.isTestItemsActive) {\n          let response = await this.planTestModuleService.list(this.planId, this.parameters);\n          this.parameters.tableData = response.data;\n          this.parameters.totalRecords = response.totalRecords;\n        }\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n  private refresh = (): Promise<UxDatatableResponse> => {\n    // this.logger.info(\"refreshing\");\n    return this.planTestModuleService.list(this.planId, this.parameters);\n  }\n\n  private async create(): Promise<void> {\n    let item: TestPlanItem = new TestPlanItem();\n    item.planId = this.plan.id;\n    return await this.dialogService.open({\n      viewModel: TestPlanItemModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.planTestModuleService.create(item)\n          .then(async (model: TestPlanItem) => {\n            item.id = model.id;\n            item.questionaryName = model.questionaryName;\n            item.reportTemplateName = model.reportTemplateName;\n            item.sheetName = model.sheetName;\n            this.parameters.tableData.unshift(item);\n            this.parameters.totalRecords++;\n            this.notification.success(\"notifications.item_added\");\n            // return await this.databind();\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private async edit(item: TestPlanItem): Promise<void> {\n    item.planId = this.plan.id;\n    return await this.dialogService.open({\n      viewModel: TestPlanItemModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.planTestModuleService.update(item)\n          .then(async () => {\n            // var name = this.model.name;\n            this.notification.success(\"notifications.item_edited\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private async delete(item: TestPlanItem): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: item.questionaryId ? item.questionaryName : item.reportTemplateId ? this.i18n.tr(item.reportTemplateName) : this.i18n.tr(item.sheetName)\n    })\n      .whenClosed((response: DialogCloseResult) => {\n        if (!response.wasCancelled) {\n          this.planTestModuleService.delete(item.id)\n            .then(() => {\n              let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === item.id);\n              this.parameters.tableData.splice(indexOfEditedModel, 1);\n              this.parameters.totalRecords--;\n              this.notification.success(\"notifications.item_deleted\");\n            })\n            .catch(error => {\n              this.notification.error(error);\n            });\n        }\n      });\n  }\n\n  private async changeTestItemsState(): Promise<void> {\n    return await this.planService.changeTestItemsState(this.plan.id)\n      .then(() => {\n        this.notification.success(\"main.admin.pages.plans.messages.plan_edited\");\n        this.bind();\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n      \n  }\n  private async changeResultsExport(): Promise<void> {\n    return await this.planService.changeResultsExport(this.plan.id)\n      .then(() => {\n        this.notification.success(\"main.admin.pages.plans.messages.plan_edited\");\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async changeCandidateReport(): Promise<void> {\n    return await this.planService.changeCandidateReport(this.plan.id)\n      .then(() => {\n        this.notification.success(\"main.admin.pages.plans.messages.plan_edited\");\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n  \n  private async changeVideoInterview(state: boolean): Promise<void> {\n    return await this.planService.changeVideoInterview(this.plan.id, this.plan.videoInterviewTalents, state)\n      .then(() => {\n        this.notification.success(\"main.admin.pages.plans.messages.plan_edited\");\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  // private async changeRobotHunter(state: boolean): Promise<void>{\n  //   return await this.planService.changeRobotHunter(this.plan.id, this.plan.predictorTalents, state)\n  //     .then(() => {\n  //       this.notification.success(\"main.admin.pages.plans.messages.plan_edited\");\n  //     })\n  //     .catch(error => {\n  //       this.notification.error(error);\n  //     });\n  // }\n  \n  private async changeViewWallets(): Promise<void> {\n    return await this.planService.changeViewWallets(this.plan.id)\n      .then(() => {\n        this.notification.success(\"main.admin.pages.plans.messages.plan_edited\");\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async changeShowLowBalanceMessage(): Promise<void> {\n    return await this.planService.changeShowLowBalanceMessage(this.plan.id)\n      .then(() => {\n        this.notification.success(\"main.admin.pages.plans.messages.plan_edited\");\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async changeTalentracker(): Promise<void> {\n    return await this.planService.changeTalentracker(this.plan.id)\n      .then(() => {\n        this.notification.success(\"main.admin.pages.plans.messages.plan_edited\");\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async changeTalentrackerColorFeedback(state: boolean): Promise<void> {\n    return await this.planService.changeTalentrackerColorFeedback(this.plan.id, this.plan.talentrackerColorFeedbackTalents, state)\n      .then(() => {\n        this.notification.success(\"main.admin.pages.plans.messages.plan_edited\");\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async changeTalentrackerCoaching(state: boolean): Promise<void> {\n    return await this.planService.changeTalentrackerCoaching(this.plan.id, this.plan.talentrackerCoachingTalents, state)\n      .then(() => {\n        this.notification.success(\"main.admin.pages.plans.messages.plan_edited\");\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async changeTalentrackerDevelopmentPlan(state: boolean): Promise<void> {\n    return await this.planService.changeTalentrackerDevelopmentPlan(this.plan.id, this.plan.talentrackerDevelopmentPlanTalents, state)\n      .then(() => {\n        this.notification.success(\"main.admin.pages.plans.messages.plan_edited\");\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async changeTalentrackerJobOpportunities(state: boolean): Promise<void> {\n    return await this.planService.changeTalentrackerJobOpportunities(this.plan.id, this.plan.talentrackerJobOpportunitiesTalents, state)\n      .then(() => {\n        this.notification.success(\"main.admin.pages.plans.messages.plan_edited\");\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n}\n","module.exports = \"<template> <require from=../../../../../models/plans/testPlanItemTypeViewEngineHooks></require> <require from=../../../../../models/plans/spendModeViewEngineHooks></require> <require from=./custom-report-spend-mode></require> <require from=../../../../../models/plans/visualizationTypeViewEngineHooks></require> <require from=../../../../../models/plans/selectionPlanComponentTypeViewEngineHooks></require> <div if.bind=!planId> <h2>${'main.admin.pages.plans.test_plan_items.title' & t}</h2> <p> ${'main.admin.pages.plans.test_plan_items.notification_new_plan' & t} </p> </div> <div if.bind=planId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2 if.bind=!isRobotHunter>${'main.admin.pages.plans.test_plan_items.title' & t} / ${plan.name}</h2> <h2 if.bind=isRobotHunter>${'main.admin.pages.plans.selection_plan_items.title' & t} / ${plan.name}</h2> <p if.bind=!isRobotHunter>${'main.admin.pages.plans.test_plan_items.subtitle' & t}</p> <p if.bind=isRobotHunter>${'main.admin.pages.plans.selection_plan_items.subtitle' & t}</p> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=isTestItemsActive checked.bind=plan.isTestItemsActive change.delegate=changeTestItemsState() /> <label if.bind=!isRobotHunter for=isTestItemsActive class=form-check-label>${'main.admin.pages.plans.is_test_module_active' & t}</label> <label if.bind=isRobotHunter for=isTestItemsActive class=form-check-label>${'main.admin.pages.plans.is_selection_module_active' & t}</label> </span> </div> </div> </div> <div if.bind=plan.isTestItemsActive class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div if.bind=plan.isTestItemsActive class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr if.bind=!isRobotHunter class=d-flex> <th class=col-md-3 scope=col t=main.admin.pages.plans.test_plan_items.name>Name</th> <th class=col-md-2 scope=col t=main.admin.pages.plans.test_plan_items.item_type>Type</th> <th class=col-md-2 scope=col t=main.admin.pages.plans.test_plan_items.spend_mode>Spend mode</th> <th class=col-md-1 scope=col t=main.admin.pages.plans.test_plan_items.talentsPrice>Talents</th> <th class=col-md-3 scope=col></th> </tr> <tr if.bind=isRobotHunter class=d-flex> <th class=col-md-1 scope=col t=main.admin.pages.plans.selection_plan_items.component>Component</th> <th class=col-md-1 scope=col t=main.admin.pages.plans.selection_plan_items.category>Category</th> <th class=col-md-2 scope=col t=main.admin.pages.plans.selection_plan_items.name_item>Item Name</th> <th class=col-md-2 scope=col t=main.admin.pages.plans.selection_plan_items.visualization_type>Visualization Type</th> <th class=col-md-2 scope=col t=main.admin.pages.plans.test_plan_items.spend_mode>Spend Mode</th> <th class=col-md-1 scope=col t=main.admin.pages.plans.test_plan_items.talentsPrice>Talents</th> <th class=col-md-2 scope=col t=main.admin.pages.plans.selection_plan_items.additional_talents>Additional Talents</th> <th class=col-md-3 scope=col></th> </tr> </thead> <tbody> <tr if.bind=!isRobotHunter class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-3 text-truncate\\\" if.bind=item.questionaryId><span title=${item.questionaryName}>${item.questionaryName}</span></td> <td class=\\\"col-md-3 text-truncate\\\" if.bind=item.reportTemplateId><span title=\\\"${item.reportTemplateName & t}\\\">${item.reportTemplateName & t}</span></td> <td class=\\\"col-md-3 text-truncate\\\" if.bind=item.sheetId><span title=\\\"${item.sheetName & t}\\\">${item.sheetName & t}</span></td> <td class=col-md-2>${'main.admin.pages.plans.test_plan_items.test_plan_item_types.' + TestPlanItemType[item.testPlanItemType] & t}</td> <td class=col-md-2 if.bind=\\\"item.questionaryId || item.reportTemplateId\\\"> ${'main.admin.pages.plans.test_plan_items.spend_modes.' + SpendMode[item.spendMode] & t}</td> <td class=col-md-2 if.bind=item.sheetId>&nbsp;</td> <td class=col-md-1>${item.talentsPrice}</td> <td class=\\\"col-md-3 d-flex\\\"> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: PlanUpdate\\\" click.delegate=edit(item) title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </button> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: PlanUpdate\\\" click.delegate=delete(item) title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> </td> </tr> <tr if.bind=isRobotHunter class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=col-md-1>${'main.admin.pages.plans.test_plan_items.selection_plan_component_types.' + SelectionPlanComponentType[item.selectionPlanComponentType] & t}</td> <td class=\\\"col-md-1 text-truncate\\\"><span title=\\\"${item.category & t}\\\">${item.category & t}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=\\\"${item.nameItem & t}\\\">${item.nameItem & t}</span></td> <td class=col-md-2><span if.bind=\\\"item.visualizationType != null\\\">${'main.admin.pages.plans.test_plan_items.selection_plan_visualization_types.' + VisualizationType[item.visualizationType] & t}</span></td> <td class=col-md-2><span if.bind=\\\"item.spendMode != null\\\">${'main.admin.pages.plans.test_plan_items.spend_modes.' + SpendMode[item.spendMode] & t}</span></td> <td class=col-md-1>${item.talentsPrice}</td> <td class=col-md-2>${item.talentsAdditionalPrice}</td> <td class=\\\"col-md-3 d-flex\\\"> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: PlanUpdate\\\" click.delegate=edit(item) title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </button> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar if.bind=\\\"plan.isTestItemsActive && !isRobotHunter\\\" global-permission-show=\\\"can: PlanCreate\\\"> <div class=\\\"row mb-3\\\"> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.plans.test_plan_items.create_card.title' & t}</h5> <p class=card-text t=[html]main.admin.pages.plans.test_plan_items.create_card.info>Lorem</p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create() t=commands.create>Create</button> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> <custom-report-spend-mode plan-id.bind=planId custom-reports-spend-mode.bind=customReportsSpendMode> </custom-report-spend-mode> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.plans.test_plan_items.export_results_card.title' & t}</h5> <p class=card-text t=[html]main.admin.pages.plans.test_plan_items.export_results_card.info>Lorem</p> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=isResultsExport checked.bind=plan.isResultsExport change.delegate=changeResultsExport() /> <label for=isResultsExport class=form-check-label>${'main.admin.pages.plans.is_export_active' & t}</label> </span> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.plans.test_plan_items.candidate_report_card.title' & t}</h5> <p class=card-text t=[html]main.admin.pages.plans.test_plan_items.candidate_report_card.info>Lorem</p> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=isCandidateReport checked.bind=plan.isCandidateReport change.delegate=changeCandidateReport() /> <label for=isCandidateReport class=form-check-label>${'main.admin.pages.plans.is_export_active' & t}</label> </span> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.plans.test_plan_items.videointerview_card.title' & t}</h5> <p class=card-text t=[html]main.admin.pages.plans.test_plan_items.videointerview_card.info>Lorem</p> <div class=\\\"switch switch-sm mb-2\\\"> <input type=checkbox class=switch id=isVideoInterview checked.bind=plan.isVideoInterview change.delegate=changeVideoInterview(true) /> <label for=isVideoInterview class=form-check-label>${'main.admin.pages.plans.is_export_active' & t}</label> </div> <div class=d-flex if.bind=plan.isVideoInterview> <input type=number class=\\\"form-control col-6\\\" value.bind=plan.videoInterviewTalents id=videoInterviewTalents /> <button class=\\\"btn btn-primary btn-round ml-3\\\" t=main.admin.pages.talents.assign.title click.delegate=changeVideoInterview(false)>Assing</button> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.plans.test_plan_items.viewwallet_card.title' & t}</h5> <p class=card-text t=[html]main.admin.pages.plans.test_plan_items.viewwallet_card.info>Lorem</p> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=isViewWallet checked.bind=plan.isViewWallet change.delegate=changeViewWallets() /> <label for=isViewWallet class=form-check-label>${'main.admin.pages.plans.is_export_active' & t}</label> </span> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.plans.test_plan_items.show_low_balance_message_card.title' & t}</h5> <p class=card-text t=[html]main.admin.pages.plans.test_plan_items.show_low_balance_message_card.info>Lorem</p> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=showLowBalanceMessage checked.bind=plan.showLowBalanceMessage change.delegate=changeShowLowBalanceMessage() /> <label for=showLowBalanceMessage class=form-check-label>${'main.admin.pages.plans.is_export_active' & t}</label> </span> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.plans.test_plan_items.talentracker_card.title' & t}</h5> <p class=card-text t=[html]main.admin.pages.plans.test_plan_items.talentracker_card.info>Lorem</p> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=isTalentracker checked.bind=plan.isTalentracker change.delegate=changeTalentracker() /> <label for=isTalentracker class=form-check-label>${'main.admin.pages.plans.is_export_active' & t}</label> </span> <div if.bind=plan.isTalentracker class=mt-3> <hr/> <p class=\\\"card-text mb-1\\\">${'main.admin.pages.plans.test_plan_items.talentracker_card.color_feedback' & t}</p> <div class=\\\"switch switch-sm mb-2\\\"> <input type=checkbox class=switch id=isTalentrackerColorFeedback checked.bind=plan.isTalentrackerColorFeedback change.delegate=changeTalentrackerColorFeedback(true) /> <label for=isTalentrackerColorFeedback class=form-check-label>${'main.admin.pages.plans.is_export_active' & t}</label> </div> <div class=\\\"d-flex mb-3\\\" if.bind=plan.isTalentrackerColorFeedback> <input type=number class=\\\"form-control col-6\\\" value.bind=plan.talentrackerColorFeedbackTalents id=talentrackerColorFeedbackTalents /> <button class=\\\"btn btn-primary btn-round ml-3\\\" t=main.admin.pages.talents.assign.title click.delegate=changeTalentrackerColorFeedback(false)>Assing</button> </div> <hr/> <p class=\\\"card-text mb-1\\\">${'main.admin.pages.plans.test_plan_items.talentracker_card.coaching' & t}</p> <div class=\\\"switch switch-sm mb-2\\\"> <input type=checkbox class=switch id=isTalentrackerCoaching checked.bind=plan.isTalentrackerCoaching change.delegate=changeTalentrackerCoaching(true) /> <label for=isTalentrackerCoaching class=form-check-label>${'main.admin.pages.plans.is_export_active' & t}</label> </div> <div class=\\\"d-flex mb-3\\\" if.bind=plan.isTalentrackerCoaching> <input type=number class=\\\"form-control col-6\\\" value.bind=plan.talentrackerCoachingTalents id=talentrackerCoachingTalents /> <button class=\\\"btn btn-primary btn-round ml-3\\\" t=main.admin.pages.talents.assign.title click.delegate=changeTalentrackerCoaching(false)>Assing</button> </div> <hr/> <p class=\\\"card-text mb-1\\\">${'main.admin.pages.plans.test_plan_items.talentracker_card.development_plan' & t}</p> <div class=\\\"switch switch-sm mb-2\\\"> <input type=checkbox class=switch id=isTalentrackerDevelopmentPlan checked.bind=plan.isTalentrackerDevelopmentPlan change.delegate=changeTalentrackerDevelopmentPlan(true) /> <label for=isTalentrackerDevelopmentPlan class=form-check-label>${'main.admin.pages.plans.is_export_active' & t}</label> </div> <div class=\\\"d-flex mb-3\\\" if.bind=plan.isTalentrackerDevelopmentPlan> <input type=number class=\\\"form-control col-6\\\" value.bind=plan.talentrackerDevelopmentPlanTalents id=talentrackerDevelopmentPlanTalents /> <button class=\\\"btn btn-primary btn-round ml-3\\\" t=main.admin.pages.talents.assign.title click.delegate=changeTalentrackerDevelopmentPlan(false)>Assing</button> </div> <hr/> <p class=\\\"card-text mb-1\\\">${'main.admin.pages.plans.test_plan_items.talentracker_card.job_opportunities' & t}</p> <div class=\\\"switch switch-sm mb-2\\\"> <input type=checkbox class=switch id=isTalentrackerJobOpportunities checked.bind=plan.isTalentrackerJobOpportunities change.delegate=changeTalentrackerJobOpportunities(true) /> <label for=isTalentrackerJobOpportunities class=form-check-label>${'main.admin.pages.plans.is_export_active' & t}</label> </div> <div class=d-flex if.bind=plan.isTalentrackerJobOpportunities> <input type=number class=\\\"form-control col-6\\\" value.bind=plan.talentrackerJobOpportunitiesTalents id=talentrackerJobOpportunitiesTalents /> <button class=\\\"btn btn-primary btn-round ml-3\\\" t=main.admin.pages.talents.assign.title click.delegate=changeTalentrackerJobOpportunities(false)>Assing</button> </div> </div> </div> </div> </div> </div> </div> </div> </div> </template> \";","import { TestPlanItemType } from './../../../../../models/plans/testPlanItemType';\nimport { TestPlanItem } from 'models/plans/test-plan-item';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { ReportTemplate } from 'models/test-core/report-templates/report-template';\nimport { PlanQuestionaryService } from '../../../services/plans/plan-questionary-service';\nimport { PlanReportService } from '../../../services/plans/plan-report-service';\nimport { PlanSheetService } from '../../../services/plans/plan-sheet-service';\nimport { Sheet } from 'models/test-core/sheets/sheet';\nimport { PlanService } from 'main/admin/services/plans/plan-service';\nimport { Plan } from 'models/plans/plan';\n\n@autoinject()\nexport class TestPlanItemModal {\n\n  private model: TestPlanItem = new TestPlanItem();\n  private questionaries: Questionary[] = [];\n  private reports: ReportTemplate[] = [];\n  private sheets: Sheet[] = [];\n  private plan: Plan;\n  private questionariesFilter: String;\n  private searchQuestionaries: Questionary[];\n\n  private validationController: ValidationController;\n  private logger: Logger;\n\n  constructor(\n    private dialogController: DialogController,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private planQuestionaryService: PlanQuestionaryService,\n    private planReportService: PlanReportService,\n    private planSheetService: PlanSheetService,\n    private planService: PlanService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"TestPlanItemModal\");\n  }\n\n  private async activate(model: TestPlanItem): Promise<any> {\n    this.logger.debug(\"model\", model);\n    this.model = model;\n    this.configureValidationRules();   \n    this.plan = await this.planService.getById(this.model.planId)\n    \n  }\n\n  configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"testPlanItemType\").displayName(\"main.admin.pages.plans.test_plan_items.test_plan_item_type\").required()\n      .ensure(\"questionaryId\").displayName(\"main.admin.pages.plans.test_plan_items.questionary_report_sheet\").required()\n      .ensure(\"reportId\").displayName(\"main.admin.pages.plans.test_plan_items.questionary_report_sheet\").required()\n      .ensure(\"sheetId\").displayName(\"main.admin.pages.plans.test_plan_items.questionary_report_sheet\").required()\n      .ensure(\"spendMode\").displayName(\"main.admin.pages.plans.test_plan_items.spend_mode\").required()\n      .ensure(\"visualizationType\").displayName(\"main.admin.pages.plans.selection_plan_items.visualization_type\").required()\n      .ensure(\"talentsPrice\").displayName(\"main.admin.pages.plans.test_plan_items.talentsPrice\").required().matches(/^[0-9]*$/)\n      .on(this.model);\n  }\n\n  public async submit(): Promise<void> {\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  public async save(): Promise<any> {\n    // this.validationController.reset();\n    return await this.dialogController.ok();\n  }\n\n  async GetItemTypeInfo(item: TestPlanItemType){\n    try {  \n      if (!this.plan.isRobotHunter) {\n        if (item === TestPlanItemType.Report) {\n          this.reports = await this.planReportService.getMissingByPlan(this.model.planId);\n        } else if (item === TestPlanItemType.Questionary) {\n          this.questionaries = await this.planQuestionaryService.getMissingByPlan(this.model.planId);\n          this.searchQuestionaries = this.questionaries;\n        } else if (item === TestPlanItemType.Sheet) {\n          this.sheets = await this.planSheetService.getMissingByPlan(this.model.planId);\n        }\n      }\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async OnChangeQuestionariesGroup() {\n    if (this.questionariesFilter.length > 0) {\n      this.searchQuestionaries = this.questionaries.filter(q => q.name.toLowerCase().includes(this.questionariesFilter.toLowerCase()));\n      this.model.questionaryId = this.searchQuestionaries[0].id;\n    }\n    else if (this.questionariesFilter == null || this.questionariesFilter.length == 0) {\n      this.searchQuestionaries = [];\n      this.searchQuestionaries = this.questionaries;\n    }\n  }\n}\n","module.exports = \"<template> <require from=../../../../../models/plans/testPlanItemTypeViewEngineHooks></require> <require from=../../../../../models/plans/spendModeViewEngineHooks></require> <require from=../../../../../models/plans/selectionPlanComponentTypeViewEngineHooks></require> <require from=../../../../../models/plans/visualizationTypeViewEngineHooks></require> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <div if.bind=!plan.isRobotHunter> <h2>${'main.admin.pages.plans.test_plan_items.questionary_report_sheet' & t}</h2> <form> <div class=form-group if.bind=!model.id> <label for=testPlanItemType>${'main.admin.pages.plans.test_plan_items.item_type' & t}</label> <select value.bind=\\\"model.testPlanItemType & validate\\\" class=form-control id=testPlanItemType change.delegate=GetItemTypeInfo(model.testPlanItemType)> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of TestPlanItemTypes\\\" model.bind=TestPlanItemType[option]> ${'main.admin.pages.plans.test_plan_items.test_plan_item_types.' + option & t}</option> </select> </div> <div class=form-group if.bind=model.id> <label for=type>${'main.admin.pages.plans.test_plan_items.item_type' & t}</label> <p>${'main.admin.pages.plans.test_plan_items.test_plan_item_types.' + TestPlanItemType[model.testPlanItemType] & t}</p> </div> <div class=form-group if.bind=\\\"!model.id && model.testPlanItemType == TestPlanItemType.Questionary\\\"> <label for=questionaryId>${'main.admin.pages.plans.test_plan_items.questionary_report_sheet' & t}</label> <div class=form-group> <input type=text class=form-control id=questionariesFilter input.delegate=OnChangeQuestionariesGroup() t=[placeholder]ux_datatable.search_placeholder value.bind=questionariesFilter> </div> <select value.bind=\\\"model.questionaryId & validate\\\" class=form-control id=questionaryId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"item of searchQuestionaries\\\" model.bind=item.id>${item.name & t}</option> </select> </div> <div class=form-group if.bind=\\\"model.id && model.testPlanItemType == TestPlanItemType.Questionary\\\"> <label for=questionaryId>${'main.admin.pages.plans.test_plan_items.questionary_report_sheet' & t}</label> <p>${model.questionaryName}</p> </div> <div class=form-group if.bind=\\\"!model.id && model.testPlanItemType == TestPlanItemType.Report\\\"> <label for=reportId>${'main.admin.pages.plans.test_plan_items.questionary_report_sheet' & t}</label> <select value.bind=\\\"model.reportTemplateId & validate\\\" class=form-control id=reportId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"item of reports\\\" model.bind=item.id>${item.name & t}</option> </select> </div> <div class=form-group if.bind=\\\"model.id && model.testPlanItemType == TestPlanItemType.Report\\\"> <label for=reportId>${'main.admin.pages.plans.test_plan_items.questionary_report_sheet' & t}</label> <p>${model.reportTemplateName & t}</p> </div> <div class=form-group if.bind=\\\"!model.id && model.testPlanItemType == TestPlanItemType.Sheet\\\"> <label for=reportId>${'main.admin.pages.plans.test_plan_items.questionary_report_sheet' & t}</label> <select value.bind=\\\"model.sheetId & validate\\\" class=form-control id=reportId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"item of sheets\\\" model.bind=item.id>${item.name & t}</option> </select> </div> <div class=form-group if.bind=\\\"model.id && model.testPlanItemType == TestPlanItemType.Sheet\\\"> <label for=reportId>${'main.admin.pages.plans.test_plan_items.questionary_report_sheet' & t}</label> <p>${model.sheetName & t}</p> </div> <div class=form-group if.bind=\\\"model.testPlanItemType != TestPlanItemType.Sheet\\\"> <label for=spendMode t=main.admin.pages.plans.test_plan_items.spend_mode>Spend mode</label> <select value.bind=\\\"model.spendMode & validate\\\" class=form-control id=spendMode> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of SpendModes\\\" model.bind=SpendMode[option]> ${'main.admin.pages.plans.test_plan_items.spend_modes.' + option & t}</option> </select> </div> <div class=form-group> <label for=talents t=main.admin.pages.plans.test_plan_items.talents>Talents</label> <input type=number value.bind=\\\"model.talentsPrice & validate\\\" class=form-control id=talents t=[placeholder]main.admin.pages.plans.test_plan_items.talents> </div> <span if.bind=\\\"model.testPlanItemType == TestPlanItemType.Sheet \\\" class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=isActive value.bind=model.warning checked.bind=model.warning /> <label for=isActive class=form-check-label>${'main.admin.pages.test_core.sheets.warning_active' & t}</label> </span> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=\\\"form-group text-right\\\"> <button type=submit class=\\\"btn btn-primary btn-round\\\" click.delegate=submit() t=commands.save>Save</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </form> </div> <div if.bind=plan.isRobotHunter> <h2>${'main.admin.pages.plans.selection_plan_items.configuration_component_category_item' & t}</h2> <form> <div class=form-group if.bind=model.id> <label for=type>${'main.admin.pages.plans.selection_plan_items.component' & t}</label> <p>${'main.admin.pages.plans.test_plan_items.selection_plan_component_types.' + SelectionPlanComponentType[model.selectionPlanComponentType] & t}</p> </div> <div class=form-group if.bind=model.id> <label for=type>${'main.admin.pages.plans.selection_plan_items.category' & t}</label> <p>${model.category & t}</p> </div> <div class=form-group if.bind=model.id> <label for=type>${'main.admin.pages.plans.selection_plan_items.name_item' & t}</label> <p>${model.nameItem & t}</p> </div> <div class=form-group> <label for=visualizationType>${'main.admin.pages.plans.selection_plan_items.visualization_type' & t}</label> <select value.bind=\\\"model.visualizationType & validate\\\" class=form-control id=visualizationType> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of VisualizationTypes\\\" model.bind=VisualizationType[option]> ${'main.admin.pages.plans.test_plan_items.selection_plan_visualization_types.' + option & t}</option> </select> </div> <div class=form-group> <label for=spendMode t=main.admin.pages.plans.test_plan_items.spend_mode>Spend mode</label> <select value.bind=\\\"model.spendMode & validate\\\" class=form-control id=spendMode> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of SpendModes\\\" model.bind=SpendMode[option]> ${'main.admin.pages.plans.test_plan_items.spend_modes.' + option & t}</option> </select> </div> <div class=form-group> <label for=talents t=main.admin.pages.plans.test_plan_items.talents>Talents</label> <input type=number value.bind=\\\"model.talentsPrice & validate\\\" class=form-control id=talents t=[placeholder]main.admin.pages.plans.test_plan_items.talents> </div> <div class=form-group> <label for=talents t=main.admin.pages.plans.selection_plan_items.additional_talents>Additional Talents</label> <input type=number value.bind=\\\"model.talentsAdditionalPrice & validate\\\" class=form-control id=talentsAdditionalPrice t=[placeholder]main.admin.pages.plans.selection_plan_items.additional_talents> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=\\\"form-group text-right\\\"> <button type=submit class=\\\"btn btn-primary btn-round\\\" click.delegate=submit() t=commands.save>Save</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </form> </div> </ux-dialog-body> </ux-dialog> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { Position } from \"models/test-position/position\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { Disc } from \"models/questionaries/disc\";\nimport { DiscAdjective } from \"models/test-core/discAdjective\";\nimport { Result } from \"models/test-result/result\";\nimport { PositionService } from \"main/test/services/position/position-service\";\nimport { ResultService } from \"main/test/services/result/result-service\";\nimport { DiscAdjectiveService } from \"main/test/services/core/disc-adjective-service\";\n\n\n@autoinject()\nexport class PositionDiscEdit {\n\n  private logger: Logger;\n  public companyId: number;\n\n  private positionId: number;\n  private model: Position = new Position();\n\n\n  private validationController: ValidationController;\n  private positionDiscList: Result[] = [];\n  private discAdjetives: DiscAdjective[] = [];\n\n  constructor(\n    private router: Router,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private positionService: PositionService,\n    private resultService: ResultService,\n    private discAdjectiveService: DiscAdjectiveService\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"PositionDiscEdit\");\n  }\n\n  public async activate(params: any): Promise<any> {\n    try {\n      if (!isNaN(params.companyId)) {\n        this.companyId = +params.companyId;\n\n        this.positionService.client.currentCompanyId = this.companyId;\n        this.resultService.client.currentCompanyId = this.companyId;\n\n\n        if (!isNaN(params.positionId)) {\n          this.positionId = +params.positionId;\n          this.model = await this.getItem(this.positionId);         \n\n          this.positionDiscList = await this.getPositionDisc(this.positionId);\n        }\n\n        const adjectives = await this.getDiscAdjetives();\n\n        this.discAdjetives = adjectives.map(itm => {\n          let range = itm.scoreRange.split('-');\n          let minRange = parseInt((range[0] || '0').trim());\n          let maxRange = parseInt((range[1] || '0').trim());\n          itm['min'] = minRange;\n          itm['max'] = maxRange;\n          return itm;\n        });\n      }\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async getItem(itemId: number): Promise<Position> {\n    return await this.positionService.getById(itemId);\n  }\n\n  private async getPositions(): Promise<Position[]> {\n    return await this.positionService.getAll();\n  }\n\n  private async getDiscAdjetives(): Promise<DiscAdjective[]> {\n    return await this.discAdjectiveService.getAll();\n  }\n\n  private async getPositionDisc(positionId: number): Promise<Result[]> {\n\n    let allPositionDisc = await this.resultService.getAllByPositionId(positionId);\n    let discIds = Object.keys(Disc).filter(k => typeof Disc[k] !== 'number');\n\n    let positionDiscList: Result[] = [];\n\n    discIds.forEach(itm => {\n      let filteredItems = allPositionDisc.filter(p => Disc[p.disc] === Disc[itm]);\n\n      if (filteredItems.length) {\n        positionDiscList.push({\n          positionId: this.positionId,\n          disc: Disc[itm],\n          value: filteredItems[0].value\n        })\n      } else {\n        positionDiscList.push({\n          positionId: this.positionId,\n          disc: Disc[itm],\n          value: 50\n        })\n      }\n    })\n\n    return positionDiscList;\n  }\n\n  private calculateLabel(value: number, disc: Disc): string {\n    // this.logger.debug(\"calculateLabel: \" + disc + value);\n    const itm = this.discAdjetives.find((itm: any) => value >= itm.min && value <= itm.max && itm.disc === Disc[disc]);\n    return itm ? itm.name : '';\n  }\n\n  private async changeItem(item): Promise<any> {\n    if (item) {\n      this.positionDiscList = await this.getPositionDisc(item);\n    }\n  }\n\n  public async submit(): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n\n  get canSave() {\n    return !this.resultService.client.isRequesting;\n  }\n\n  private async save(): Promise<any> {\n\n    let promises = [];\n    // Person Data\n    // create stamp\n    this.model.stamp = Math.random().toString(36).substring(2) + (new Date()).getTime().toString(36);\n\n    // get highest disc\n    let maxItem: any = { value: 0 };\n    this.positionDiscList.forEach(itm => {\n      if (maxItem.value < itm.value) {\n        maxItem = itm;\n      }\n    });\n\n    this.model.highestDisc = maxItem.disc;\n\n    this.positionDiscList.forEach(itm => {\n      itm.stamp = this.model.stamp;\n      promises.push(this.resultService.createToPosition(itm));\n    });\n\n    Promise.all(promises)\n      .then(async () => this.positionService.update(this.model))\n      .then(async () => this.notification.success(\"notifications.item_edited\"))\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n}\n","module.exports = \"<template> <require from=../../../../models/test-position/positionActivationTypeViewEngineHooks></require> <require from=../../../../models/questionaries/discViewEngineHooks></require> <require from=../../../../models/questionaries/disc></require> <div if.bind=!positionId> ${'main.test.pages.position.position_evaluator_list.msg_first_create_item' & t} </div> <div if.bind=positionId> <h2> ${'main.test.pages.position.position_disc_edit.title' & t} / ${model.name} </h2> <div class=\\\"content-container row mb-3\\\" if.bind=\\\"model.positionActivationType != PositionActivationType.Reference\\\"> <div class=content-main> <p>${'main.test.pages.position.position_type_is_not_direct' & t}</p> </div> </div> <div class=\\\"content-container row mb-3\\\" if.bind=\\\"model.positionActivationType == PositionActivationType.Reference\\\"> <form class=content-main> <hr/> <div class=\\\"alert alert-info mt-3\\\" role=alert> <p> ${'main.test.pages.disc_homologation.warning' & t} </p> </div> <div class=row> <div class=col-12> <div class=row repeat.for=\\\"option of positionDiscList\\\"> <div class=col-1> <label>${option.disc}</label> </div> <div class=col-6> <ux-range-input value.bind=option.value></ux-range-input> </div> <div class=col> <input type=number class=form-control id=disc[${option.disc}] value.bind=\\\"option.value & validate\\\"> </div> <div class=col-2> <label>${calculateLabel(option.value, option.disc) & t}</label> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestPositionUpdate\\\" click.delegate=submit() disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: positions-reference;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </div> </div> </template> \";","import { ArchetypeLocalization } from 'models/archetypes/archetype-localization';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { Notification } from \"common/services/notification\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { ArchetypeLocalizationService } from \"main/admin/services/archetypes/archetype-localization-service\";\n\nimport { LanguageService } from 'main/admin/services/localizations/language-service';\nimport { ControllerValidateResult, ValidationController } from 'aurelia-validation';\nimport { PositionLocalizationService } from 'main/test/services/position/position-localization-service';\nimport { PositionLocalization } from 'models/test-position/positionLocalization';\nimport { PositionReferenceLocalizationModal } from './position-reference-localization-modal';\n\n\n@autoinject()\nexport class PositionReferenceLocalizationList {\n  private logger: Logger;\n\n  private params: any = {};\n  public companyId: number;\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n  private languages;\n\n  private isLoaded: boolean = false;\n\n  private refresh = async (): Promise<void | UxDatatableParameters> => {\n    this.logger.debug(\"refreshing\");\n    try {\n      const response = await this.positionlocalizationservice.list(this.parameters);\n      return response;\n    }\n    catch (error) {\n      return this.notification.error(error);\n    }\n  }\n\n  constructor(\n    private languageService: LanguageService,\n    private validationController: ValidationController,\n    private positionlocalizationservice: PositionLocalizationService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"PositionReferenceLocalizationList\");\n\n    this.parameters.search = {};\n\n  }\n\n  private async activate(params: any): Promise<void> {\n    if (this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n  }\n\n  private async databind(): Promise<any> {\n    this.logger.debug(\"databind\");\n\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.logger.debug(\"refresh\", response);\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n\n  }\n\n  private async bind(): Promise<any> {\n    try {\n      this.languages = await this.languageService.getAll();\n      if (this.languages.length > 0) {\n        if (!isNaN(this.params.companyId)) {\n\n          this.companyId = +this.params.companyId;\n          this.positionlocalizationservice.client.currentCompanyId = this.companyId;\n        }\n       \n        this.parameters.search.LanguageId = this.languages[0].id;\n        return await this.databind();\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  public async create(item: PositionLocalization): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: PositionReferenceLocalizationModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        this.logger.debug(\"response.output\", response.output);\n        try {\n          let model: PositionLocalization = await this.positionlocalizationservice.create(item);\n\n          item.id = model.id;\n          // this.parameters.tableData.unshift(model);\n          // this.parameters.totalRecords++;\n          this.notification.success(\"notifications.item_added\");\n          // return await this.databind();\n        } catch (error) {\n          this.notification.error(error);\n        }\n      }\n    });\n  }\n\n  public async edit(item: PositionLocalization): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: PositionReferenceLocalizationModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      this.logger.debug(\"response.output\", response.output);\n      if (!response.wasCancelled) {\n        try {\n          await this.positionlocalizationservice.update(item);\n\n          this.notification.success(\"main.admin.pages.archetypes.notifications.edited\");\n          // return await this.refresh();\n        } catch (error) {\n          this.notification.error(error);\n          // return await this.databind();\n        }\n      }\n      // return await this.databind();\n    });\n  }\n\n  public async submit(item: PositionLocalization): Promise<void> {\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (item.id != 0) {\n          return await this.edit(item);\n        }\n        return await this.create(item);\n      });\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../../models/archetypes/archetypeTypeViewEngineHooks></require> <require from=../../../../../models/test-position/positionActivationTypeViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2 t=main.test.pages.position.position_reference_list.title>Label</h2> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-10 col-md-4\\\"> <div class=form-group> <label for=countryId>${'main.admin.pages.position.localization' & t}</label> <select value.bind=parameters.search.LanguageId class=form-control id=languageId change.delegate=\\\"databind() & debounce:100\\\"> <option repeat.for=\\\"option of languages\\\" model.bind=option.id>${option.name & t}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-3 scope=col t=main.admin.pages.archetypes.name>Name</th> <th class=col-md-3 scope=col t=main.admin.pages.archetypes.traduction>traduction</th> <th class=col-md-3 scope=col t=main.admin.pages.archetypes.kind>type</th> <th class=col-md-3 scope=col>&nbsp;</th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-3 text-truncate\\\"><span title=${item.name}>${item.name}</span></td> <td class=\\\"col-md-3 text-truncate\\\"><span title=${item.nameTraduction}>${item.nameTraduction}</span></td> <td class=\\\"col-md-3 text-truncate\\\"><span title=\\\"${'main.test.pages.position.position_edit.activation_type.' + PositionActivationType[item.positionActivationType] & t}\\\"> ${'main.test.pages.position.position_edit.activation_type.' + PositionActivationType[item.positionActivationType] & t} </span></td> <td class=\\\"col-md-3 d-flex\\\"> <button class=\\\"btn btn-link\\\" click.delegate=submit(item) global-permission-enable=\\\"can: ArchetypeEdit\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </button> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { ArchetypeLocalization } from \"models/archetypes/archetype-localization\";\nimport { PositionLocalization } from \"models/test-position/positionLocalization\";\n// import { ArchetypeLocalizationService } from \"main/admin/services/archetypes/archetype-localization-service\";\n\n@autoinject\nexport class PositionReferenceLocalizationModal{\n  private logger: Logger;\n  private model: PositionLocalization;\n  private validationController: ValidationController;\n\n  // private archetypeslocalization: ArchetypeLocalization[];\n\n  constructor(\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory,\n    // private archetypelocalizationservice: ArchetypeLocalizationService\n    ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"PositionReferenceLocalizationModal\");\n  }\n\n  // public async bind(): Promise<any> {\n  //   return await this.archetypelocalizationservice.getAll().then(archetypeslocalization => this.archetypeslocalization = archetypeslocalization);\n  // }\n\n  public activate(model: PositionLocalization): void {\n    this.model = model;\n    this.configureValidationRules();\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules    \n    .ensure(\"nameTraduction\").displayName(\"main.admin.pages.position.name_traduction\").required()       \n    .on(this.model);\n  }\n\n  public async submit(saveAndContinue: boolean): Promise<void> {\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(saveAndContinue);\n        }\n      });\n  }\n\n  public async save(saveAndContinue: boolean): Promise<any> {\n    this.logger.debug(\"save:\", saveAndContinue);\n    this.validationController.reset();\n    return await this.dialogController.ok(saveAndContinue);\n  }\n\n}\n","module.exports = \"<template> <ux-dialog class=col-md-24> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h3>${'main.admin.pages.position_reference.title_editar_localization' & t}</h3> <hr/> <form> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label>${'main.test.pages.position.position_edit.name' & t}</label> <input attach-focus=true disabled=disabled type=text class=form-control id=model.name t=[placeholder]main.test.pages.position.position_edit.name value.bind=\\\"model.name & validate\\\"> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label>${'main.admin.pages.position.name_traduction' & t}</label> <input attach-focus=true type=text class=form-control id=model.nameTraduction t=[placeholder]main.admin.pages.position.name_traduction value.bind=\\\"model.nameTraduction & validate\\\"> </div> </div> </div> <div class=form-group> <input attach-focus=true disabled=disabled type=hidden class=form-control id=model.positionId t=[placeholder]main.admin.pages.position.id value.bind=\\\"model.positionId & validate\\\"> </div> <div class=form-group> <input attach-focus=true disabled=disabled type=hidden class=form-control id=model.LanguageId t=[placeholder]main.admin.pages.archetypes.localization value.bind=\\\"model.languageId & validate\\\"> </div> <div class=form-group> <label>${'main.admin.pages.archetypes.localization' & t}</label> <input attach-focus=true disabled=disabled type=text class=form-control id=model.languageCulture t=[placeholder]main.admin.pages.archetypes.localization value.bind=\\\"model.languageCulture & validate\\\"> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label>${'main.test.pages.position.position_edit.mission' & t}</label> <textarea attach-focus=true disabled=disabled type=text class=form-control id=model.mision t=[placeholder]main.test.pages.position.position_edit.mission value.bind=\\\"model.mision & validate\\\">\\n              </textarea> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label>${'main.admin.pages.position.mision_traduction' & t}</label> <textarea class=form-control id=model.misionTraduction t=[placeholder]main.admin.pages.position.mision_traduction value.bind=\\\"model.misionTraduction & validate\\\">\\n                </textarea> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label for=model.subPositions>${'main.test.pages.position.position_edit.sub_positions' & t}</label> <input disabled=disabled type=text class=form-control id=model.subPositions t=[placeholder]main.test.pages.position.position_edit.sub_positions value.bind=\\\"model.subPositions & validate\\\"> </div> <div class=form-group> <label for=model.salary>${'main.test.pages.position.position_edit.salary' & t}</label> <input disabled=disabled type=text class=form-control id=model.salary t=[placeholder]main.test.pages.position.position_edit.salary value.bind=\\\"model.salary & validate\\\"> </div> <div class=form-group> <label for=model.requiredStudies>${'main.test.pages.position.position_edit.required_studies' & t}</label> <input disabled=disabled type=text class=form-control id=model.requiredStudies t=[placeholder]main.test.pages.position.position_edit.required_studies value.bind=\\\"model.requiredStudies & validate\\\"> </div> <div class=form-group> <label for=model.dominatedLanguages>${'main.test.pages.position.position_edit.dominated_languages' & t}</label> <input disabled=disabled type=text class=form-control id=model.dominatedLanguages t=[placeholder]main.test.pages.position.position_edit.dominated_languages value.bind=\\\"model.dominatedLanguages & validate\\\"> </div> </div> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label for=model.subPositionsTraduction>${'main.test.pages.position.position_edit.sub_positions_traduction' & t}</label> <input type=text class=form-control id=model.subPositionsTraduction t=[placeholder]main.test.pages.position.position_edit.sub_positions_traduction value.bind=\\\"model.subPositionsTraduction & validate\\\"> </div> <div class=form-group> <label for=model.salaryTraduction>${'main.test.pages.position.position_edit.salary_traduction' & t}</label> <input type=text class=form-control id=model.salaryTraduction t=[placeholder]main.test.pages.position.position_edit.salary_traduction value.bind=\\\"model.salaryTraduction & validate\\\"> </div> <div class=form-group> <label for=model.requiredStudiesTraduction>${'main.test.pages.position.position_edit.required_studies_traduction' & t}</label> <input type=text class=form-control id=model.requiredStudiesTraduction t=[placeholder]main.test.pages.position.position_edit.required_studies_traduction value.bind=\\\"model.requiredStudiesTraduction & validate\\\"> </div> <div class=form-group> <label for=model.dominatedLanguagesTraduction>${'main.test.pages.position.position_edit.dominated_languages_traduction' & t}</label> <input type=text class=form-control id=model.dominatedLanguagesTraduction t=[placeholder]main.test.pages.position.position_edit.dominated_languages_traduction value.bind=\\\"model.dominatedLanguagesTraduction & validate\\\"> </div> </div> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <br> <br> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit(false)>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel() t=commands.cancel>Cancel</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class PositionReferenceChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N\n  ) {\n\n    this.logger = LogManager.getLogger(\"PositionReferenceChildRouter\");\n\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./position-reference-edit\"),\n        name: \"position-reference-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.positions.position\"),\n      },\n\n      {\n        route: \"disc\",\n        moduleId: PLATFORM.moduleName(\"../position-reference-disc/position-reference-disc-edit\"),\n        name: \"position-reference-disc-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.position.position_tabs.tab_disc\"),\n      },\n\n      // {\n      //   route: \"evaluators\",\n      //   moduleId: PLATFORM.moduleName(\"../position-evaluator/position-evaluator-list-child-router\"),\n      //   name: \"position-evaluator-list-child-router\",\n      //   nav: true,\n      //   title: this.i18n.tr(\"main.test.pages.position.position_tabs.tab_evaluators\"),\n      // },\n\n      // {\n      //   route: \"disc\",\n      //   moduleId: PLATFORM.moduleName(\"../position-disc/position-disc-edit\"),\n      //   name: \"position-disc-edit\",\n      //   nav: true,\n      //   title: this.i18n.tr(\"main.test.pages.position.position_tabs.tab_disc\"),\n      // },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","import { CompanyInfoService } from './../../../services/companies/company-info-service';\nimport { CompanyDetail } from './../../../../models/companies/company-detail';\n\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { Position } from \"models/test-position/position\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { QuestionaryType } from \"models/questionaries/questionaryType\";\nimport { ItemToQualify } from \"models/questionaries/itemToQualify\";\nimport { CompanyQuestionaryService } from 'main/admin/services/test-management/company-questionary-service';\nimport { EducationalLevelCountry } from \"models/educational-levels-by-country/educational-level-country\";\nimport { EducationalLevelCountryService } from \"main/admin/services/educational-levels-by-country/educational-level-country-service\";\nimport { StoreService } from 'common/store/store-service';\nimport { State } from 'common/store/store-model';\nimport { PositionActivationType } from 'models/test-position/positionActivationType';\nimport { PositionService } from 'main/test/services/position/position-service';\n\n@autoinject()\nexport class PositionReferenceEdit {\n\n  private logger: Logger;\n  public companyId: number;\n  public companyDetail: CompanyDetail;\n\n  private positionId: number;\n\n  private model: Position = new Position();\n  private validationController: ValidationController;\n\n  private positionDiscQuestionaries: Questionary[] = [];\n  private educationalLevelCountries: EducationalLevelCountry[] = [];\n  // THT Company\n  private positionReference: number = 0;\n  private params: any = {};\n\n  private state: State;\n  private isLoaded: boolean = false;\n\n  constructor(\n    private store: StoreService,\n    private router: Router,    \n    private notification: Notification,\n    private educationalLevelCountryService: EducationalLevelCountryService,\n    private validationControllerFactory: ValidationControllerFactory,\n    private positionService: PositionService,\n    private companyInfoService: CompanyInfoService,\n  ) {\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"PositionEdit\");\n\n    this.state = this.store.state;\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.test.pages.position.position_edit.name\").required()\n      .ensure(\"positionActivationType\").displayName(\"main.test.pages.position.position_edit.activation_type.title\").required()     \n      .on(this.model);\n  }\n\n  public async activate(params: any): Promise<any> {\n    this.model.companyId = this.positionReference;\n    this.model.positionActivationType = PositionActivationType.Reference\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n\n    if (!isNaN(params.companyId)) {\n      try {\n        this.companyId = +params.companyId;\n        this.positionService.client.currentCompanyId = this.companyId;       \n\n        if (!isNaN(params.positionId)) {\n          this.positionId = params.positionId;\n          this.model = await this.positionService.getById(this.positionId);\n        }\n        this.configureValidationRules();\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n\n  }\n\n  public async bind() {\n    // this.logger.debug(\"bind\");\n    if (!isNaN(this.params.companyId)) {\n      try {\n        this.isLoaded = true;\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          if (this.positionId) {\n            return await this.update(keepEditing);\n          } else {\n            return await this.create(keepEditing);\n          }\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  get canSave() {\n    return !this.positionService.client.isRequesting;\n  }\n\n  private async create(keepEditing: boolean): Promise<any> {\n    \n    return await this.positionService.create(this.model)\n      .then(async (result: Position) => {\n        this.notification.success(\"notifications.item_edited\");\n        if (keepEditing) {        \n            return await this.router.parent.navigate(`position-reference/${result.id}/disc`);          \n        }\n        else {\n          return await this.router.navigateToRoute(\"positions-reference\");\n        }\n\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async update(keepEditing: boolean): Promise<any> {    \n    return await this.positionService.update(this.model)\n      .then(async () => {\n        this.notification.success(\"notifications.item_edited\");\n\n        if (!keepEditing) {\n          return await this.router.navigateToRoute(\"positions-reference\");\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n  public notificationInfo(message:string){\n    this.notification.info(message);\n  }\n}\n","module.exports = \"<template> <require from=../../../../models/test-position/positionActivationTypeViewEngineHooks></require> <require from=../../../../models/test-position/positionLevelViewEngineHooks></require> <require from=../../../../models/test-position/positionQuestionaryTypeViewEngineHooks></require> <require from=../../../../models/catalogs/educationalLevelViewEngineHooks></require> <h2> ${'main.test.pages.position.position_edit.title' & t} / ${model.name} </h2> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <div class=row> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label for=model.name>${'main.test.pages.position.position_edit.name' & t}</label> <input type=text class=form-control id=model.name t=[placeholder]main.test.pages.position.position_edit.name value.bind=\\\"model.name & validate\\\"> </div> <div class=form-group> <label for=model.mission>${'main.test.pages.position.position_edit.mission' & t}</label> <input type=text class=form-control id=model.mission t=[placeholder]main.test.pages.position.position_edit.mission value.bind=\\\"model.mission & validate\\\"> </div> <div class=form-group> <label for=model.tags>${'main.test.pages.position.position_edit.tags' & t} <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.test.pages.position.tag')\\\" role=button> <i class=material-icons>info_outline</i> </a> </label> <company-tags-input value.bind=model.tags /> </div> </div> </div> <div class=row> <div class=\\\"col-md-6 col-12\\\"> <p> <a class=\\\"btn btn-link\\\" data-toggle=collapse href=#collapseAdvanceOptions role=button aria-expanded=false aria-controls=collapseAdvanceOptions> ${'main.test.pages.position.position_edit.advanced_options' & t} </a> </p> <div class=collapse id=collapseAdvanceOptions> <div class=form-group> <label for=model.positionLevel>${'main.test.pages.position.position_edit.position_level' & t}</label> <select value.bind=\\\"model.positionLevel & validate\\\" class=form-control id=model.positionLevel> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of PositionLevels\\\" model.bind=PositionLevel[option]> ${'main.test.pages.position.position_edit.position_level_' + option & t}</option> </select> </div> <div class=form-group> <label for=model.subPositions>${'main.test.pages.position.position_edit.sub_positions' & t}</label> <input type=text class=form-control id=model.subPositions t=[placeholder]main.test.pages.position.position_edit.sub_positions value.bind=\\\"model.subPositions & validate\\\"> </div> <div class=row style=margin-bottom:100px> <div class=col> <label>${'main.test.pages.position.position_edit.functions' & t}</label> <quill-editor value.bind=\\\"model.functions & validate\\\"></quill-editor> </div> </div> <div class=clearfix></div> <div class=row> <div class=col> <p>&nbsp;</p> </div> </div> <div class=form-group> <label for=model.salary>${'main.test.pages.position.position_edit.salary' & t}</label> <input type=text class=form-control id=model.salary t=[placeholder]main.test.pages.position.position_edit.salary value.bind=\\\"model.salary & validate\\\"> </div> <div class=form-group> <label for=model.requiredStudies>${'main.test.pages.position.position_edit.required_studies' & t}</label> <input type=text class=form-control id=model.requiredStudies t=[placeholder]main.test.pages.position.position_edit.required_studies value.bind=\\\"model.requiredStudies & validate\\\"> </div> <div class=form-group> <label for=model.dominatedLanguages>${'main.test.pages.position.position_edit.dominated_languages' & t}</label> <input type=text class=form-control id=model.dominatedLanguages t=[placeholder]main.test.pages.position.position_edit.dominated_languages value.bind=\\\"model.dominatedLanguages & validate\\\"> </div> <div class=row> <div class=col> <p>&nbsp;</p> </div> </div> <div class=row style=margin-bottom:50px> <div class=col> <label>${'main.test.pages.position.position_edit.others' & t}</label> <quill-editor value.bind=\\\"model.others & validate\\\"></quill-editor> </div> </div> <div class=clearfix></div> <div class=row> <div class=col> <p>&nbsp;</p> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: ArchetypeCreate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'main.test.pages.position.position_edit.commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: ArchetypeCreate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'main.test.pages.position.position_edit.commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: positions-reference;\\\" t=main.test.pages.position.position_edit.commands.cancel>Cancel</a> </div> </div> </div> </form> </div> </template> \";","import { TransactionService } from '../../services/talents/transaction-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\n\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\n\nimport { Notification } from \"common/services/notification\";\n\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { User } from \"models/security/user\";\n\nimport { Company } from \"models/companies/company\";\nimport { CoreCompanyService } from \"../../services/companies/core-company-service\";\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\nimport { PositionService } from 'main/test/services/position/position-service';\n\n\n\n@autoinject()\nexport class PositionReferenceList {\n\n  private logger: Logger;\n  private params: any = {};\n  private users: User[];\n  public companyId: number;\n  private company: Company;\n\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private state: State;\n  private isLoaded: boolean = false;\n\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private coreCompanyService: CoreCompanyService,\n    private positionService: PositionService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"TalentConsolidatedList\");\n\n    this.state = this.store.state;\n\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.positionService.listPositionReference(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n   \n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n\n      this.companyId = +this.params.companyId;\n\n      if (this.companyId) {\n\n        this.positionService.client.currentCompanyId = this.companyId;\n        this.isLoaded = true;\n        return await this.databind();\n      }\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  // private async getMore(scrollContext: any): Promise<void> {\n  //   return await this.uxDatatable.getMoreItems(scrollContext);\n  // }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class PositionReferenceListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"PositionReferenceListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./position-reference-list\"),\n        name: \"positions-reference\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.admin.pages.languages.title\"),\n      },\n\n      {\n        route: \"position-reference/:positionId\",\n        moduleId: PLATFORM.moduleName(\"./position-reference-child-router\"),\n        name: \"position-reference-child-router\",\n      },\n      \n      {\n        route: \"localization\",\n        moduleId: PLATFORM.moduleName(\"./localization/position-reference-localization-list\"),\n        name: \"position-reference-localization\",        \n        title: this.i18n.tr(\"main.test.pages.position.position_tabs.tab_competences\"),\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=../../../components/three-tags.html></require> <require from=../../../../models/test-position/positionActivationTypeViewEngineHooks></require> <h2> ${'main.test.pages.position.position_reference_list.title' & t} </h2> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.test.pages.position.position_reference_list.info' & t} </p> </div> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-2 col-3 text-truncate mb-2\\\" if.bind=\\\"item.highestDisc >= 0\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_list.status.title' & t}</small> </label> <span class=\\\"badge badge-pill badge-success\\\">${'main.test.pages.position.position_list.statuses.activated' & t}</span> </div> <div class=\\\"col-md-2 col-3 text-truncate mb-2\\\" if.bind=\\\"item.highestDisc == null\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_list.status.title' & t}</small> </label> <span class=\\\"badge badge-pill badge-warning\\\">${'main.test.pages.position.position_list.statuses.processing' & t}</span> </div> <div class=\\\"col-md-4 col-9 mb-2 minh-40 text-truncate\\\"> <a route-href=\\\"route: position-reference-child-router; params.bind: {positionId:item.id}\\\" title=${item.name}> ${item.name} </a> <br/> </div> <div class=\\\"col-md-4 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_list.activation_type' & t}</small> </label> ${'main.test.pages.position.position_edit.activation_type.' + PositionActivationType[item.positionActivationType] & t} </div> <div class=\\\"col-md-2 col-12 mb-2\\\"> <a href=# global-permission-show=\\\"can: ArchetypeDelete\\\" click.delegate=delete(item) title.bind=\\\"'commands.archive' & t\\\" role=button> <i class=material-icons>archive</i> </a> </div> </div> </li> </ul> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: ArchetypeCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.test.pages.position.position_list.card_title' & t} </h5> <p t=[html]main.test.pages.position.position_list.card_info>Create new </p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: position-reference-child-router; params.bind: {positionId:'create'} \\\" t=commands.create>New </a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-enable=\\\"can: ArchetypeCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.archetypes.localization_card_title' & t}</h5> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: position-reference-localization; \\\">${'commands.create' & t}</a> </div> </div> </div> </div> </div> </div>  </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration } from \"aurelia-router\";\n\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class ProfileChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"GroupChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./profile-edit\"),\n        name: \"profiles-edit\",\n        title: this.i18n.tr(\"main.admin.pages.profiles.profile\"),\n        nav: false,\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.ProfileUpdate]\n          }\n        }\n      },\n      \n    ]);\n  }\n}\n","module.exports = \"<template> <require from=./profile-create-card.html></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <router-view></router-view> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\"> <div class=col-12> <profile-create-card></profile-create-card> </div> </div> </div> </div> </template> \";","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\" global-permission-show=\\\"can: ProfileCreate\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.profiles.create_card.title' & t}</h5> <p t=[html]main.admin.pages.profiles.create_card.info>Create new profile</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: profile-child-router; params.bind: {profileId:'create'}\\\">${'commands.create' & t}</a> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\n\nimport { Profile } from \"models/profiles/profile\";\nimport { Notification } from \"common/services/notification\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { ProfileService } from \"../../services/profiles/profile-service\";\n\n@autoinject()\nexport class ProfileDeleteModal {\n\n  private logger: Logger;\n  private profileToDelete: Profile;\n  private profileIdToTransferUsers: number;\n  private validationController: ValidationController;\n  private profiles: Profile[];\n\n  constructor(\n    private dialogController: DialogController,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private profileService: ProfileService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ProfileDeleteModal\");\n    this.configureValidationRules();\n  }\n\n  private async activate(item: Profile): Promise<void> {\n    this.profileToDelete = Object.assign(new Profile(), item);\n    return await this.profileService.getAll()\n      .then(profiles => this.profiles = profiles)\n      .then(() => {\n        // remuevo de la lista de grupos a transferir usuarios el grupo a eliminar\n        this.profiles.splice(this.profiles.map(x => x.id.toString()).indexOf(item.id.toString()), 1);\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"profileIdToTransferUsers\").displayName(\"main.admin.pages.profiles.profile_to_transfer\").required()\n      .on(this);\n  }\n\n  public async submit(): Promise<any> {\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.dialogController.ok(this.profileIdToTransferUsers);\n        }\n      });\n  }\n}\n\n\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'commands.archive' & t}</h2> <div class=row> <div class=col-12> <p t=modals.delete_confirmation.message t-params.bind=\\\"{name: profileToDelete.name}\\\">Delete?</p> </div> </div> <form> <div class=form-group> <label>${'main.admin.pages.profiles.profile_to_transfer' & t}</label> <select class=form-control value.bind=\\\"profileIdToTransferUsers & validate\\\"> <option value=\\\"\\\" t=forms.select_option>select an item</option> <option repeat.for=\\\"option of profiles\\\" model.bind=option.id>${option.name}</option> </select> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> <button type=submit class=\\\"btn btn-danger\\\" attach-focus=true click.delegate=submit() t=commands.archive>Delete</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","\nimport { autoinject, LogManager, NewInstance } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\n\nimport { Profile } from \"models/profiles/profile\";\nimport { ProfileService } from \"../../services/profiles/profile-service\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { I18N } from \"aurelia-i18n\";\nimport { CoreCompanyService } from \"../../services/companies/core-company-service\";\nimport { Company } from \"models/companies/company\";\nimport { StoreService } from \"common/store/store-service\";\nimport { State } from \"common/store/store-model\";\n\n@autoinject()\nexport class ProfileEdit {\n\n  private logger: Logger;\n\n  public companyId: number;\n  private company: Company;\n\n  private model: Profile = new Profile();\n  private profiles: Profile[];\n  private saveAndContinue: boolean = false;\n  private validationController: ValidationController;\n\n  private state: State;\n\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private coreCompanyService: CoreCompanyService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private profileService: ProfileService,\n    private i18n: I18N) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ProfileEdit\");\n\n    this.state = this.store.state;\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<void> {\n\n    try {\n\n\n      if (!isNaN(params.companyId)) {\n\n        this.companyId = +params.companyId;\n\n        if (!isNaN(params.companyDetailId)) {\n          this.companyId = +params.companyDetailId;\n        }\n\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n\n        this.profileService.client.currentCompanyId = this.companyId;\n\n        this.profiles = await this.profileService.getAll();\n\n        if (!isNaN(params.profileId)) {\n\n          this.model = await this.profileService.getById(+params.profileId);\n\n        }\n\n        this.configureValidationRules();\n        // routeConfig.navModel.setTitle(this.i18n.tr(\"commands.create\"));\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.profiles.name\").required()\n      .ensure(\"parentId\").displayName(\"main.admin.pages.profiles.parent_name\").required()\n      .on(this.model);\n  }\n\n  private async submit(saveAndContinue: boolean): Promise<void> {\n    this.saveAndContinue = saveAndContinue;\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.profileService.client.isRequesting;\n  }\n\n  private async save(): Promise<any> {\n    if (!this.model.id) {\n      return await this.profileService.create(this.model)\n        .then(async (model: Profile) => {\n          this.notification.success(\"notifications.item_added\");\n\n          if (!this.saveAndContinue) {\n            return await this.router.navigateToRoute(\"profiles\");\n          } else {\n            return await this.router.navigateToRoute(\"profile-child-router\", { profileId: model.id });\n          }\n\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    } else {\n      return await this.profileService.update(this.model)\n        .then(async () => {\n          this.notification.success(\"notifications.item_edited\");\n\n          if (!this.saveAndContinue) {\n            return await this.router.navigateToRoute(\"profiles\");\n          }\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    }\n  }\n}\n","module.exports = \"<template> <form class=form> <h2 if.bind=!model.id>${'main.admin.pages.profiles.create' & t}</h2> <h2 if.bind=model.id>${company.name} / ${model.name}</h2> <p> ${'main.admin.pages.groups.info_editing' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label>${'main.admin.pages.profiles.name' & t}</label> <input type=text class=form-control id=model.name t=[placeholder]main.admin.pages.profiles.name value.bind=\\\"model.name & validate\\\"> </div> </div> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label>${'main.admin.pages.profiles.parent_name' & t}</label> <select class=form-control value.bind=\\\"model.parentId & validate\\\"> <option value=\\\"\\\" t=forms.select_option>select an item</option> <option repeat.for=\\\"option of profiles\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label>${'main.admin.pages.profiles.description' & t}</label> <textarea class=form-control t=[placeholder]main.admin.pages.profiles.description value.bind=\\\"model.description & validate\\\" rows=3></textarea> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=share_with_peers value.bind=model.shareWithPeers checked.bind=model.shareWithPeers /> <label for=share_with_peers class=form-check-label>${'main.admin.pages.profiles.share_with_peers' & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: ProfileCreate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: ProfileCreate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: profiles;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </template> \";","\n\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { Router, RouteConfig } from \"aurelia-router\";\n\nimport {\n  UxDatatableParameters,\n  UxDatatableCustomAttribute,\n  UxDatatableResponse\n} from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { ProfileService } from \"../../services/profiles/profile-service\";\nimport { Profile } from \"models/profiles/profile\";\nimport { Notification } from \"common/services/notification\";\nimport { ProfileDeleteModal } from \"./profile-delete-modal\";\nimport { Company } from \"models/companies/company\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from \"common/store/store-service\";\n\n@autoinject()\nexport class ProfileList {\n\n  private logger: Logger;\n  private params: any ={};\n\n  public companyId: number;\n  private company: Company;\n\n  private state: State;\n  \n  private isLoaded: boolean = false;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.profileService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private profileService: ProfileService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"ProfileList\");\n\n    this.state = this.store.state;\n\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n\n  }\n\n  private async bind(): Promise<any> {\n\n    if (!isNaN(this.params.companyId)) {\n\n      this.companyId = +this.params.companyId;\n\n      if (this.params.companyDetailId && this.params.companyDetailId === 'create') {\n        this.companyId = null;\n      }\n      else if (!isNaN(this.params.companyDetailId)) {\n        this.companyId = +this.params.companyDetailId;\n      }\n\n      if (this.companyId) {\n\n        this.profileService.client.currentCompanyId = this.companyId;\n\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n\n        this.isLoaded = true;\n\n        return await this.databind();\n      }\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    // this.logger.debug(\"parameters\", this.parameters);\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async edit(id: number): Promise<any> {\n    return await this.router.navigateToRoute(\"profile-child-router\", {profileId: id});\n  }\n\n  public async delete(item: Profile): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: ProfileDeleteModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        if (response.output) {\n          let idToTransfer: number = <number>response.output;\n          this.logger.debug(\"profileIdToTransferUsers: \", idToTransfer);\n          return await this.profileService.delete(item.id, idToTransfer)\n            .then(async () => {\n              let indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(item.id.toString());\n              this.parameters.tableData.splice(indexOfEditedModel, 1);\n              this.parameters.totalRecords--;\n              this.notification.success(\"notifications.item_deleted\");\n            })\n            .catch(error => {\n              this.notification.error(error);\n            });\n        }\n      }\n    });\n  }\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class ProfileListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"ProfileListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./profile-list\"),\n        name: \"profiles\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.admin.pages.profiles.title\"),\n      },\n\n      {\n        route: \"profile/:profileId\",\n        moduleId: PLATFORM.moduleName(\"./profile-child-router\"),\n        name: \"profile-child-router\",\n        // nav: false,\n        // title: this.i18n.tr(\"main.admin.pages.profiles.profile\"),\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=./profile-create-card.html></require> <div if.bind=!companyId> <h2>${'main.admin.pages.profiles.title' & t}</h2> <p> ${'main.admin.pages.profiles.notification_new_company' & t} </p> </div> <div if.bind=companyId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${company.name} / ${'main.admin.pages.profiles.title' & t}</h2> <p> ${'main.admin.pages.profiles.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-2 scope=col t=main.admin.pages.profiles.name>Name</th> <th class=col-md-2 scope=col t=main.admin.pages.profiles.parent_name>Report to</th> <th class=col-md-2 scope=col t=main.admin.pages.profiles.share_with_peers>Share with peers</th> <th class=col-md-4 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.name}>${item.name}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.parentName}>${item.parentName}</span></td> <td class=col-md-2>${item.shareWithPeers ? 'commands.yes' : 'commands.no' & t}</td> <td class=\\\"col-md-4 d-flex\\\"> <a if.bind=!item.isDefault class=\\\"btn btn-link\\\" global-permission-show=\\\"can: ProfileUpdate\\\" route-href=\\\"route: profile-child-router; params.bind: {profileId:item.id}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <button if.bind=!item.isDefault class=\\\"btn btn-link\\\" global-permission-show=\\\"can: ProfileDelete\\\" click.delegate=delete(item) title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar global-permission-show=\\\"can: ProfileCreate\\\"> <div class=\\\"row mb-3\\\"> <div class=col-12> <profile-create-card></profile-create-card> </div> </div> </div> </div> </div> </template> \";","import { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { Logger } from \"aurelia-logging\";\nimport { I18N } from \"aurelia-i18n\";\nimport { LogManager, autoinject } from \"aurelia-framework\";\n\n@autoinject\nexport class QuestionaryChild {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"GroupChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    config.map([\n\n      // {\n      //   route: \"create\",\n      //   name: \"questionary-create\",\n      //   moduleId: PLATFORM.moduleName(\"./questionary-edit\"),\n      //   nav: false,\n      //   title: this.i18n.tr(\"main.admin.pages.questionaries.create_card.title\"),\n      //   settings: {\n      //     Permission: {\n      //       only: [PredefinedPermissions.QuestionaryCreate]\n      //     }\n      //   }\n      // },\n\n      {\n        route: \"\",\n        name: \"questionary-edit\",\n        moduleId: PLATFORM.moduleName(\"./questionary-edit\"),\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.questionaries.questionary\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.QuestionaryUpdate]\n          }\n        }\n      },\n\n      {\n        route: \"questions\",\n        name: \"question-list-child-router\",\n        moduleId: PLATFORM.moduleName(\"./questions/question-list-child-router\"),\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.questionaries.questions.title\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.QuestionaryUpdate]\n          }\n        }\n      },\n\n      // {\n      //   route: \"question/create\",\n      //   name: \"question-create\",\n      //   moduleId: PLATFORM.moduleName(\"./questions/question-type-selection\"),\n      //   nav: false,\n      //   title: this.i18n.tr(\"main.admin.pages.questionaries.questions.create\"),\n      //   settings: {\n      //     Permission: {\n      //       only: [PredefinedPermissions.QuestionaryUpdate]\n      //     }\n      //   }\n      // },\n      // {\n      //   route: [\"question/create/:questionTypeId\", \"question/:questionId\"],\n      //   name: \"question-edit\",\n      //   moduleId: PLATFORM.moduleName(\"./questions/question-edit\"),\n      //   nav: false,\n      //   title: this.i18n.tr(\"main.admin.pages.questionaries.questions.edit\"),\n      //   settings: {\n      //     Permission: {\n      //       only: [PredefinedPermissions.QuestionaryUpdate]\n      //     }\n      //   }\n      // }\n\n    ]);\n\n    this.router = router;\n  }\n\n}\n","module.exports = \"<template> <require from=./questionary-create-card.html></require> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\" global-permission-show=\\\"can: QuestionaryCreate\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.questionaries.create_card.title' & t}</h5> <p t=[html]main.admin.pages.questionaries.create_card.info>Create new questionaries</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: questionary-child-router; params.bind: {questionaryId:'create'}\\\">${'commands.create' & t}</a> </div> </div> </template> \";","import { Router } from \"aurelia-router\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { QuestionaryService } from \"../../services/questionaries/questionary-service\";\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { ItemToQualify } from \"models/questionaries/itemToQualify\";\nimport { QuestionaryType } from \"models/questionaries/questionaryType\";\nimport { Language } from \"models/localizations/language\";\nimport { CoreLanguageService } from \"main/admin/services/localizations/core-language-service\";\nimport { PerfilticService } from 'main/admin/services/perfiltic/perfiltic-service';\nimport { QuestionaryLocalization } from 'models/questionaries/questionaryLocalization';\nimport { LocalizationType } from 'models/questionaries/localizationType';\n\n@autoinject()\nexport class QuestionaryCreateTranslation {\n\n  private logger: Logger;\n\n  private model: Questionary = new Questionary();\n  private translatedQuestionnaries: Questionary[] = [];\n  private translatedmodel: QuestionaryLocalization = new QuestionaryLocalization();\n  private languages: Language[] = [];\n  private questionaryLanguageId: number = 0;\n  private validationController: ValidationController;\n\n  constructor(\n    private questionariesService: QuestionaryService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private router: Router,\n    public languagesService: CoreLanguageService,\n    public questionaryType: QuestionaryType,\n    public itemToQualify: ItemToQualify,\n    public perfilticservice: PerfilticService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"QuestionaryCreateTranslation\");\n\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"organizationType\").displayName(\"main.admin.pages.questionaries.organization_type\").required()      \n      .ensure(\"languageId\").displayName(\"main.admin.pages.questionaries.language\").required()\n      .on(this.model)\n      .ensure(\"translation\").displayName(\"main.admin.pages.questionaries.translated_name\").required()\n      .on(this.translatedmodel);\n  }\n\n  private async activate(params: any): Promise<void> {\n    try {\n      this.languages = await this.languagesService.getAll();    \n      if (!isNaN(params.questionaryId)) {\n        this.model = await this.questionariesService.getById(+params.questionaryId);\n        this.translatedQuestionnaries = await this.questionariesService.getAllTranslationsByQuestionary(this.model);\n        if(this.model && this.translatedQuestionnaries)\n        {\n          if(isNaN(params.languageId)){\n            this.languages = this.languages.filter(x => x.id !== this.model.languageId);\n            this.languages = this.languages.filter(language => {\n              return !this.translatedQuestionnaries.some(translation => translation.languageId === language.id);\n            });\n          }\n          else{\n            this.questionaryLanguageId = params.languageId;\n            this.translatedmodel.translation = this.translatedQuestionnaries.find(x => x.languageId == this.questionaryLanguageId).name;\n            this.translatedmodel.languageId = this.questionaryLanguageId;\n            this.languages = this.languages.filter(x => x.id == this.questionaryLanguageId);\n          }\n        }\n      }\n      this.configureValidationRules();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(keepEditing);\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  get canSave() {\n    return !this.questionariesService.client.isRequesting;\n  }\n\n  public async save(keepEditing: boolean): Promise<any> {\n    this.logger.info(\"save\");\n    try {\n      if (this.translatedmodel.translation.toLowerCase() != this.model.name.toLowerCase()) {\n        this.translatedmodel.labelId = this.model.id;\n        this.translatedmodel.localizationTypeId = LocalizationType.Questionary;\n        if(this.questionaryLanguageId <= 0){\n          let response: QuestionaryLocalization = await this.questionariesService.createLocalization(this.translatedmodel);\n          this.notification.success(\"main.admin.pages.questionaries.messages.questionary_added\");\n        }\n        else{\n          let response: QuestionaryLocalization = await this.questionariesService.updateLocalization(this.translatedmodel);\n          this.notification.success(\"main.admin.pages.questionaries.messages.questionary_update\");\n        }\n\n        if (!keepEditing) {\n          return await this.router.navigateToRoute(\"questionaries\");\n        } else {\n          return await this.router.navigateToRoute(\"questionary-translate-child-router\", { questionaryId: this.model.id });\n        }\n\n      } else {\n\n        this.notification.warning(\"main.admin.pages.questionaries.questions.errors.error_bad_option\");\n\n      }\n\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../models/questionaries/questionaryTypeViewEngineHooks></require> <require from=../../../../models/questionaries/itemToQualifyViewEngineHooks></require> <require from=../../../../models/questionaries/organizationTypeViewEngineHooks></require> <require from=../../../../models/questionaries/noDiscTypeViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2 if.bind=!model.id>${'error.not_found' & t}</h2> <h2 if.bind=model.id>${model.name}</h2> <p>${'main.admin.pages.questionaries.editing_info' & t}</p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <label for=Name t=main.admin.pages.questionaries.name>Name</label> <input type=text value.bind=\\\"model.name & validate\\\" class=form-control id=Name t=[placeholder]main.admin.pages.questionaries.name disabled.bind=true> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group if.bind=\\\"model.id && model.questionaryType == QuestionaryType.NoDisc\\\"> <label for=noDiscType t=main.admin.pages.questionaries.team_types.title>Team type</label> <p>${'main.admin.pages.questionaries.no_disc_type.' + NoDiscType[model.noDiscType] & t}</p> </div> <div class=form-group if.bind=\\\"!model.id && model.questionaryType == QuestionaryType.Disc && model.itemToQualify == ItemToQualify.Organization\\\"> <label for=organizationType t=main.admin.pages.questionaries.organization_types.title>Organization type</label> <select value.bind=\\\"model.organizationType & validate\\\" class=form-control id=organizationType> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of OrganizationTypes\\\" model.bind=OrganizationType[option]> ${'main.admin.pages.questionaries.organization_types.' + option & t}</option> </select> </div> <div class=form-group if.bind=\\\"model.id && model.questionaryType == QuestionaryType.Disc && model.itemToQualify == ItemToQualify.Organization\\\"> <label for=organizationType t=main.admin.pages.questionaries.organization_types.title>Organization type</label> <p>${'main.admin.pages.questionaries.organization_types.' + OrganizationType[model.organizationType] & t} </p> </div> <div class=form-group if.bind=\\\"model.id && model.questionaryType == QuestionaryType.NoDisc\\\"> <label for=itemToQualify t=main.admin.pages.questionaries.item_to_qualify>Item to qualify</label> <p>${'main.admin.pages.questionaries.items_to_qualify.' + ItemToQualify[model.itemToQualify] & t}</p> </div> <div class=form-group if.bind=\\\"model.id && model.questionaryType == QuestionaryType.Disc\\\"> <label for=itemToQualify t=main.admin.pages.questionaries.item_to_qualify>Item to qualify</label> <p>${'main.admin.pages.questionaries.items_to_qualify.' + ItemToQualify[model.itemToQualify] & t}</p> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group if.bind=model.id> <label>${'main.admin.pages.questionaries.questionary_type.title' & t}</label> <p>${'main.admin.pages.questionaries.questionary_type.' + QuestionaryType[model.questionaryType] & t}</p> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <label for=localizationId t=main.admin.pages.questionaries.language>Language</label> <select value.bind=\\\"translatedmodel.languageId & validate\\\" class=form-control id=languageId disabled.bind=\\\"questionaryLanguageId > 0\\\"> <option repeat.for=\\\"item of languages\\\" model.bind=item.id>${item.name}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <label for=Name t=main.admin.pages.questionaries.translated_name>New Name</label> <input type=text value.bind=\\\"translatedmodel.translation & validate\\\" class=form-control id=translatedName t=[placeholder]main.admin.pages.questionaries.translated_name> </div> </div> </div> </form></div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button type=button click.delegate=submit(true) global-permission-show=\\\"can: QuestionaryCreate\\\" class=\\\"btn btn-primary btn-round\\\" t=commands.save_and_continue disabled.bind=!canSave>Save and edit</button> <button type=button click.delegate=submit(false) global-permission-show=\\\"can: QuestionaryCreate\\\" class=\\\"btn btn-primary btn-round\\\" t=commands.save disabled.bind=!canSave>Save</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: questionaries;\\\" t=commands.cancel>Cancel</a> </div> </div> </div>   </template> \";","import { NoDiscType } from 'models/questionaries/noDiscType';\nimport { ProgrammingLanguage } from 'models/test-perfiltic/programmingLanguage';\nimport { Router } from \"aurelia-router\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\n\nimport { Logger } from \"aurelia-logging\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { QuestionaryService } from \"../../services/questionaries/questionary-service\";\nimport { Questionary } from \"models/questionaries/questionary\";\n\nimport { ItemToQualify } from \"models/questionaries/itemToQualify\";\nimport { QuestionaryType } from \"models/questionaries/questionaryType\";\nimport { Language } from \"models/localizations/language\";\n\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { CoreLanguageService } from \"main/admin/services/localizations/core-language-service\";\nimport { PerfilticService } from 'main/admin/services/perfiltic/perfiltic-service';\n\n@autoinject()\nexport class QuestionaryEdit {\n\n  private logger: Logger;\n\n  private parameters = new UxDatatableParameters();\n  private model: Questionary = new Questionary();\n  private languages: Language[] = [];\n  private programmingLanguages: ProgrammingLanguage[] = [];\n  public isDisabled: boolean;\n\n  private validationController: ValidationController;\n\n  constructor(\n    private questionariesService: QuestionaryService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private router: Router,\n    public languagesService: CoreLanguageService,\n    public questionaryType: QuestionaryType,\n    public itemToQualify: ItemToQualify,\n    public perfilticservice: PerfilticService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"QuestionaryEdit\");\n\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.questionaries.name\").required()\n      .ensure(\"questionaryType\").displayName(\"main.admin.pages.questionaries.type\").required()\n      .ensure(\"itemToQualify\").displayName(\"main.admin.pages.questionaries.item_to_qualify\").required()\n      .ensure(\"organizationType\").displayName(\"main.admin.pages.questionaries.organization_type\").required()      \n      .ensure(\"languageId\").displayName(\"main.admin.pages.questionaries.language\").required()\n      .ensure(\"programmingLanguageId\").displayName(\"main.admin.pages.questionaries.programmingLanguageId\").required()\n      .ensure(\"averageTime\").displayName(\"main.admin.pages.questionaries.average_time\").required().matches(/^[0-9]*$/)\n      .ensure(\"order\").displayName(\"main.admin.pages.questionaries.order\").matches(/^[0-9]*$/)\n      .on(this.model);\n  }\n\n  private async activate(params: any): Promise<void> {\n    // this.logger.info(\"activate\");\n    try {\n      this.languages = await this.languagesService.getAll();    \n      if (!isNaN(params.questionaryId)) {\n        this.model = await this.questionariesService.getById(+params.questionaryId);\n        if(this.model.noDiscType === NoDiscType.EngineersTest )\n        {\n          this.programmingLanguages = await this.perfilticservice.getAll();\n        }\n      }\n      this.configureValidationRules();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(keepEditing);\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  get canSave() {\n    return !this.questionariesService.client.isRequesting;\n  }\n\n  private async changeNoDiscType(itm) {\n    if(itm === NoDiscType.EngineersTest){\n        if(this.programmingLanguages.length == 0){\n        this.programmingLanguages = await this.perfilticservice.getAll();\n      }\n    }  \n    else {\n      this.model.programmingLanguageId = 0;\n    }\n  }\n\n  public async save(keepEditing: boolean): Promise<any> {\n    this.logger.info(\"save\");\n    try {\n\n      if (!this.model.id) {\n        let response: Questionary = await this.questionariesService.create(this.model);\n\n        this.model.id = response.id;\n\n        this.notification.success(\"main.admin.pages.questionaries.messages.questionary_added\");\n\n        if (!keepEditing) {\n          return await this.router.navigateToRoute(\"questionaries\");\n        } else {\n          return await this.router.navigateToRoute(\"questionary-child-router\", { questionaryId: this.model.id });\n        }\n\n      } else {\n        await this.questionariesService.update(this.model);\n\n        this.notification.success(\"main.admin.pages.questionaries.messages.questionary_edited\");\n\n        if (!keepEditing) {\n          return await this.router.navigateToRoute(\"questionaries\");\n        }\n\n      }\n\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public changeItemToQualify() {       \n    if (this.model.noDiscType == NoDiscType.Performance\n      || this.model.noDiscType == NoDiscType.Potential) {\n      this.model.itemToQualify = ItemToQualify.Observed;\n      this.isDisabled = true;\n    } else {\n      this.isDisabled = false;\n    }\n\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../models/questionaries/questionaryTypeViewEngineHooks></require> <require from=../../../../models/questionaries/itemToQualifyViewEngineHooks></require> <require from=../../../../models/questionaries/organizationTypeViewEngineHooks></require> <require from=../../../../models/questionaries/noDiscTypeViewEngineHooks></require> <require from=../../../../models/questionaries/gameTestViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2 if.bind=!model.id>${'main.admin.pages.questionaries.new' & t}</h2> <h2 if.bind=model.id>${model.name}</h2> <p>${'main.admin.pages.questionaries.editing_info' & t}</p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <label for=Name t=main.admin.pages.questionaries.name>Name</label> <input type=text value.bind=\\\"model.name & validate\\\" class=form-control id=Name t=[placeholder]main.admin.pages.questionaries.name> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group if.bind=!model.id> <label for=questionaryType>${'main.admin.pages.questionaries.questionary_type.title' & t}</label> <select value.bind=\\\"model.questionaryType & validate\\\" class=form-control id=questionaryType> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of QuestionaryTypes\\\" model.bind=QuestionaryType[option]> ${'main.admin.pages.questionaries.questionary_type.' + option & t}</option> </select> </div> <div class=form-group if.bind=model.id> <label>${'main.admin.pages.questionaries.questionary_type.title' & t}</label> <p>${'main.admin.pages.questionaries.questionary_type.' + QuestionaryType[model.questionaryType] & t}</p> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group if.bind=\\\"!model.id && model.questionaryType == QuestionaryType.Disc\\\"> <label for=itemToQualify t=main.admin.pages.questionaries.item_to_qualify>Item to qualify</label> <select value.bind=\\\"model.itemToQualify & validate\\\" class=form-control id=itemToQualify> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of ItemsToQualify\\\" model.bind=ItemToQualify[option]> ${'main.admin.pages.questionaries.items_to_qualify.' + option & t}</option> </select> </div> <div class=form-group if.bind=\\\"!model.id && model.questionaryType == QuestionaryType.NoDisc\\\"> <label for=itemToQualify t=main.admin.pages.questionaries.item_to_qualify>Item to qualify</label> <select value.bind=\\\"model.itemToQualify & validate\\\" class=form-control id=itemToQualify disabled.bind=isDisabled> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of ItemsToQualify\\\" model.bind=ItemToQualify[option]> ${'main.admin.pages.questionaries.items_to_qualify.' + option & t}</option> </select> </div> <div class=form-group if.bind=\\\"model.id && model.questionaryType == QuestionaryType.NoDisc\\\"> <label for=itemToQualify t=main.admin.pages.questionaries.item_to_qualify>Item to qualify</label> <p>${'main.admin.pages.questionaries.items_to_qualify.' + ItemToQualify[model.itemToQualify] & t}</p> </div> <div class=form-group if.bind=\\\"model.id && model.questionaryType == QuestionaryType.Disc\\\"> <label for=itemToQualify t=main.admin.pages.questionaries.item_to_qualify>Item to qualify</label> <p>${'main.admin.pages.questionaries.items_to_qualify.' + ItemToQualify[model.itemToQualify] & t}</p> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group if.bind=\\\"!model.id && model.questionaryType == QuestionaryType.NoDisc\\\"> <label for=noDiscType t=main.admin.pages.questionaries.team_types.title>No Disc type</label> <select value.bind=\\\"model.noDiscType & validate\\\" class=form-control id=noDiscType change.delegate=changeItemToQualify() change.delegate=changeNoDiscType(model.noDiscType)> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of NoDiscTypes\\\" model.bind=NoDiscType[option]> ${'main.admin.pages.questionaries.no_disc_type.' + option & t}</option> </select> </div> <div class=form-group if.bind=\\\"model.id && model.questionaryType == QuestionaryType.NoDisc\\\"> <label for=noDiscType t=main.admin.pages.questionaries.team_types.title>Team type</label> <p>${'main.admin.pages.questionaries.no_disc_type.' + NoDiscType[model.noDiscType] & t}</p> </div> <div class=form-group if.bind=\\\"!model.id && model.questionaryType == QuestionaryType.Disc && model.itemToQualify == ItemToQualify.Organization\\\"> <label for=organizationType t=main.admin.pages.questionaries.organization_types.title>Organization type</label> <select value.bind=\\\"model.organizationType & validate\\\" class=form-control id=organizationType> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of OrganizationTypes\\\" model.bind=OrganizationType[option]> ${'main.admin.pages.questionaries.organization_types.' + option & t}</option> </select> </div> <div class=form-group if.bind=\\\"model.id && model.questionaryType == QuestionaryType.Disc && model.itemToQualify == ItemToQualify.Organization\\\"> <label for=organizationType t=main.admin.pages.questionaries.organization_types.title>Organization type</label> <p>${'main.admin.pages.questionaries.organization_types.' + OrganizationType[model.organizationType] & t} </p> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <label for=localizationId t=main.admin.pages.questionaries.language>Language</label> <select value.bind=\\\"model.languageId & validate\\\" class=form-control id=languageId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"item of languages\\\" model.bind=item.id>${item.name}</option> </select> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <label for=AverageTime t=main.admin.pages.questionaries.average_time>Average Time</label> <input type=number min=0 value.bind=\\\"model.averageTime & validate\\\" class=form-control id=AverageTime t=[placeholder]main.admin.pages.questionaries.average_time> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <label for=Order t=main.admin.pages.questionaries.order>Order</label> <input type=number min=0 value.bind=\\\"model.order & validate\\\" class=form-control id=Order t=[placeholder]main.admin.pages.questionaries.order> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group if.bind=\\\"model.questionaryType == QuestionaryType.NoDisc && model.itemToQualify == ItemToQualify.Person \\n                                    && model.noDiscType == NoDiscType.EngineersTest\\\"> <label for=programmingLanguageId t=main.admin.pages.questionaries.programmingLanguage>Programming Language</label> <select value.bind=\\\"model.programmingLanguageId & validate\\\" class=form-control id=programmingLanguageId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"item of programmingLanguages\\\" model.bind=item.id>${item.name}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=endButton checked.bind=model.hasEndButton /> <label for=endButton class=form-check-label>${'main.admin.pages.questionaries.end_button' & t}</label> </span> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=chronometer checked.bind=model.hasChronometer /> <label for=chronometer class=form-check-label>${'main.admin.pages.questionaries.chronometer' & t}</label> </span> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=isTranslatable checked.bind=model.isTranslatable /> <label for=isTranslatable class=form-check-label>${'main.admin.pages.questionaries.questions.translatable' & t}</label> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=gameTest checked.bind=model.hasGameTest /> <label for=gameTest class=form-check-label>GameTest</label> </span> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=testControl checked.bind=model.hasTestControl /> <label for=testControl class=form-check-label>${'main.admin.pages.test_management.questionaries_configuration.has_test_control' & t}</label> </span> </div> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group if.bind=\\\"model.hasGameTest && model.itemToQualify == ItemToQualify.Person\\\"> <label for=gameTest t=main.admin.pages.questionaries.game_test>Item to qualify</label> <select value.bind=\\\"model.gameTest & validate\\\" class=form-control id=gameTest> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of GameTests\\\" model.bind=GameTest[option]> ${'main.admin.pages.questionaries.game_test.' + option & t}</option> </select> </div> </div> </div> </form></div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button type=button click.delegate=submit(true) global-permission-show=\\\"can: QuestionaryCreate\\\" class=\\\"btn btn-primary btn-round\\\" t=commands.save_and_continue disabled.bind=!canSave>Save and edit</button> <button type=button click.delegate=submit(false) global-permission-show=\\\"can: QuestionaryCreate\\\" class=\\\"btn btn-primary btn-round\\\" t=commands.save disabled.bind=!canSave>Save</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: questionaries;\\\" t=commands.cancel>Cancel</a> </div> </div> </div>   </template> \";","import { Router } from \"aurelia-router\";\nimport { bindable } from \"aurelia-framework\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { QuestionaryService } from \"../../services/questionaries/questionary-service\";\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { QuestionaryType } from \"models/questionaries/questionaryType\";\n\n@autoinject()\nexport class QuestionaryKanban {\n\n  @bindable \n  private routeName: string;\n\n  private logger: Logger;\n  private questionaries: Questionary[];\n\n  constructor(\n    private questionariesService: QuestionaryService,\n    private router: Router,\n    private notification: Notification,\n    public questionaryType: QuestionaryType) {\n    this.logger = LogManager.getLogger(\"QuestionaryKanban\");\n  }\n\n  public async bind(): Promise<any> {\n    return await this.questionariesService.getAll()\n      .then(response => this.questionaries = response)\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  public async selectQuestionary(questionaryId: number): Promise<any> {\n    \n    // this.router.navigate(`${this.baseUrl}/${questionaryId}/${this.postUrl}`);\n    this.logger.debug(\"navigating to questionaryId:\", questionaryId);\n    return await this.router.navigateToRoute(this.routeName, {questionaryId: questionaryId});\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../models/questionaries/questionaryTypeViewEngineHooks></require> <div class=tht-container> <div class=\\\"tht-questionary-item card\\\" repeat.for=\\\"item of questionaries\\\" click.delegate=selectQuestionary(item.id)> <div class=tht-questionary-type>${'main.admin.pages.questionaries.questionary_type.' + QuestionaryType[item.questionaryType] & t}</div> <div class=tht-questionary-name>${item.name}</div> <div class=tht-questionary-localization>${item.languageName}</div> <div class=tht-questionary-status>${item.isActive ? 'active' : 'unactive' & t}</div> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { Notification } from \"common/services/notification\";\nimport { QuestionaryService } from \"../../services/questionaries/questionary-service\";\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { QuestionaryType } from \"models/questionaries/questionaryType\";\nimport { DeleteConfirmation } from \"../../../components/delete-confirmation\";\nimport { ChangeStateConfirmation } from \"../../../components/change-state-confirmation\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { LanguageService } from \"main/admin/services/localizations/language-service\";\nimport { Language } from \"models/localizations/language\";\nimport { SearchParams } from \"models/questionaries/searchParams\";\n\n@autoinject()\nexport class QuestionaryList {\n\n  private logger: Logger;\n  private languages: Language[];\n  private selectedLanguageId: number;\n\n  private parameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  constructor(\n    private languageService: LanguageService,\n    private questionaryService: QuestionaryService,\n    private dialogService: DialogService,\n    private notification: Notification,\n    public questionaryType: QuestionaryType) {\n\n    this.logger = LogManager.getLogger(\"QuestionaryList\");\n  }\n\n  private refresh = (): Promise<UxDatatableResponse> => {\n      return this.questionaryService.list(this.parameters);\n  }\n\n  private async bind(): Promise<any> {\n    this.languages = await this.languageService.getAll();\n    const response: UxDatatableResponse = await this.questionaryService.list(this.parameters);\n    this.parameters.tableData = response.data;\n    this.parameters.totalRecords = response.totalRecords;\n  }\n  \n  public async selectLanguage() {\n    if (this.selectedLanguageId) {\n      const language = this.languages.find(x => x.id === this.selectedLanguageId);\n      this.parameters.search = <SearchParams>{ LanguageId: language.id };\n      await this.bind();\n    }\n  }\n  \n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  public async deletemanager(model: Questionary ): Promise<any> {\n\n    if(model.isOriginal){\n     return await this.delete(model.id, model.name);\n    }\n    else {\n      return await this.deleteLoca(model.stringId, model.name);\n    }\n  }\n\n  public async delete(id: number, name: string) {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.questionaryService.delete(id)\n          .then(() => {\n            let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === id);\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"main.admin.pages.questionaries.messages.questionary_deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  public async deleteLoca(id: string, name: string) {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.questionaryService.deleteLocalization(id)\n          .then(() => {\n            //this.logger = LogManager.getLogger(\"deleteLoca;\" + id);\n            let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.stringId == id);\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"main.admin.pages.questionaries.messages.questionary_deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  public async changeState(item: Questionary): Promise<void> {\n    this.logger.debug(\"item.isActive\", item.isActive);\n    return await this.dialogService.open({\n      viewModel: ChangeStateConfirmation,\n      model: item.name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.questionaryService.changeState(item.id)\n          .then(() => {\n            this.notification.success(\"main.admin.pages.questionaries.messages.questionary_edited\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n      else{\n        item.isActive = !item.isActive;\n      }\n    });\n  }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class QuestionaryListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"QuestionaryListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./questionary-list\"),\n        name: \"questionaries\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.admin.pages.questionaries.title\"),\n      },\n\n      {\n        route: \"questionary/:questionaryId\",\n        moduleId: PLATFORM.moduleName(\"./questionary-child-router\"),\n        name: \"questionary-child-router\",\n        // nav: false,\n        // title: this.i18n.tr(\"main.admin.pages.questionaries.questionary\"),\n      },\n\n      {\n        route: \"questionary-localization/:questionaryId\",\n        moduleId: PLATFORM.moduleName(\"./questionary-translate-child-router\"),\n        name: \"questionary-translate-child-router\"\n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=./questionary-create-card.html></require> <require from=../../../../models/questionaries/questionaryTypeViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${'main.admin.pages.questionaries.title' & t}</h2> <p>${'main.admin.pages.questionaries.subtitle' & t}</p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=col-md-4> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <select class=form-control value.bind=selectedLanguageId change.delegate=selectLanguage()> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of languages\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-3 scope=col t=main.admin.pages.questionaries.name>Name</th> <th class=col-md-3 scope=col t=main.admin.pages.questionaries.language>Language</th> <th class=col-md-3 scope=col t=main.admin.pages.questionaries.type>Type</th> <th class=col-md-3 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-3 text-truncate\\\"><span title=${item.name}>${item.name}</span></td> <td class=\\\"col-md-3 text-truncate\\\"><span title=${item.languageName}>${item.languageName}</span></td> <td class=col-md-3>${'main.admin.pages.questionaries.questionary_type.' + QuestionaryType[item.questionaryType] & t}</td> <td class=\\\"col-md-3 d-flex\\\"> <a if.bind=item.isOriginal class=\\\"btn btn-link\\\" global-permission-show=\\\"can: QuestionaryUpdate\\\" route-href=\\\"route: questionary-child-router; params.bind: {questionaryId:item.id}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <a if.bind=!item.isOriginal class=\\\"btn btn-link\\\" global-permission-show=\\\"can: QuestionaryUpdate\\\" route-href=\\\"route: questionary-translate-child-router; params.bind: {questionaryId:item.id ,languageId: item.languageId}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: QuestionaryDelete\\\" click.delegate=deletemanager(item) title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> <span if.bind=item.isOriginal class=\\\"switch switch-sm pt-2\\\"> <input type=checkbox class=switch id=isActive_${$index} checked.bind=item.isActive change.delegate=changeState(item) global-permission-enable=\\\"can: QuestionaryActivate\\\"/> <label for=isActive_${$index} class=form-check-label>&nbsp;</label> </span> <a if.bind=item.isTranslatable class=\\\"btn btn-link\\\" global-permission-show=\\\"can: QuestionaryUpdate\\\" route-href=\\\"route: questionary-translate-child-router; params.bind: {questionaryId:item.id}\\\" title.bind=\\\"'commands.translate' & t\\\"> <i class=material-icons>translate</i> </a> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar global-permission-show=\\\"can: QuestionaryCreate\\\"> <questionary-create-card></questionary-create-card> </div> </div> </template> \";","import { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { Logger } from \"aurelia-logging\";\nimport { I18N } from \"aurelia-i18n\";\nimport { LogManager, autoinject } from \"aurelia-framework\";\n\n@autoinject\nexport class QuestionaryTranslateChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"QuestionaryTranslateChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    config.map([\n      {\n        route: \"\",\n        name: \"questionary-translation\",\n        moduleId: PLATFORM.moduleName(\"./questionary-create-translation\"),\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.questionaries.questions.translation_of_questionnarie\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.QuestionaryUpdate]\n          }\n        }\n      },\n\n      {\n        route: \"questions\",\n        name: \"question-list-child-router\",\n        moduleId: PLATFORM.moduleName(\"./questions/question-list-child-router\"),\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.questionaries.questions.title\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.QuestionaryUpdate]\n          }\n        }\n      },\n    ]);\n\n    this.router = router;\n  }\n\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","import { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { Logger } from \"aurelia-logging\";\nimport { I18N } from \"aurelia-i18n\";\nimport { LogManager, autoinject } from \"aurelia-framework\";\n\n@autoinject\nexport class QuestionChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"QuestionChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    config.map([\n\n      {\n        route: \"\",\n        name: \"question-edit\",\n        moduleId: PLATFORM.moduleName(\"./question-edit\"),\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.questionaries.questions.question\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.QuestionaryUpdate]\n          }\n        }\n      },\n      \n    ]);\n\n    this.router = router;\n  }\n\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","import { autoinject } from \"aurelia-framework\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { Question } from \"models/questions/question\";\n\n@autoinject()\nexport class QuestionConfigModal {\n\n  private model: Question = new Question();\n  private textSizeOptions: boolean;\n  private textSizeOptionSelected: number;\n\n  constructor(\n    private dialogController: DialogController) {\n  }\n\n  public activate(model: Question): void {\n    this.model = model;\n    this.toggleTextSize();\n  }\n\n  public async submit(): Promise<any> {\n    return await this.dialogController.ok();\n  }\n\n  public toggleTextSize(): void {\n    if (this.model.isTextSizeAvailable) {\n      this.textSizeOptions = true;\n      if (this.model.textSizeMin && this.model.textSizeMax) {\n        this.textSizeOptionSelected = 2;\n      } else {\n        this.textSizeOptionSelected = 1;\n      }\n    } else {\n      this.textSizeOptions = false;\n      this.textSizeOptionSelected = null;\n      this.model.textSize = null;\n      this.model.textSizeMin = null;\n      this.model.textSizeMax = null;\n    }\n  }\n\n  public toggleTextSizeDetail(): void {\n    if (this.textSizeOptionSelected === 1) {\n      this.model.textSizeMin = null;\n      this.model.textSizeMax = null;\n    } else {\n      this.model.textSize = null;\n    }\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../../models/questions/questionTypeViewEngineHooks></require> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'main.admin.pages.questionaries.questions.properties' & t}</h2> <form class=form submit.delegate=submit()> <div class=\\\"form-row form-check mb-3\\\" if.bind=\\\"model.questionType != QuestionType.DescriptiveText\\\"> <input type=checkbox value.bind=model.isMandatory id=isMandatory checked.bind=model.isMandatory> <label for=isMandatory> ${'main.admin.pages.questionaries.questions.is_mandatory' & t} </label> <small class=\\\"form-text text-muted\\\">${'main.admin.pages.questionaries.questions.is_mandatory_info' & t }</small> </div> <div class=\\\"form-row form-check mb-3\\\" if.bind=\\\"model.questionType != QuestionType.DescriptiveText && model.questionType != QuestionType.OpenAnswerQuestion\\\"> <input type=checkbox value.bind=model.hasRandomResponses id=hasRandomResponses checked.bind=model.hasRandomResponses> <label for=hasRandomResponses> ${'main.admin.pages.questionaries.questions.has_random_responses' & t} </label> <small class=\\\"form-text text-muted\\\">${'main.admin.pages.questionaries.questions.has_random_responses_info' & t}</small> </div> <div class=\\\"form-row form-check mb-3\\\"> <input type=checkbox value.bind=model.isDisable id=isDisable checked.bind=model.isDisable> <label for=isDisable> ${'main.admin.pages.questionaries.questions.is_disable' & t} </label> <small class=\\\"form-text text-muted\\\">${'main.admin.pages.questionaries.questions.is_disable_info' & t}</small> </div> <div class=\\\"form-row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.MultipleChoiceList || model.questionType == QuestionType.MultipleImageChoiceList\\\"> <label for=minNumberOfAnswers>${'main.admin.pages.questionaries.questions.min_number_of_answers' & t}</label> <input type=text value.bind=model.minNumberOfAnswers id=minNumberOfAnswers class=form-control> <small class=\\\"form-text text-muted\\\">${'main.admin.pages.questionaries.questions.min_number_of_answers_info' & t}</small> </div> <div class=\\\"form-row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.MultipleChoiceList || model.questionType == QuestionType.MultipleImageChoiceList\\\"> <label for=maxNumberOfAnswers>${'main.admin.pages.questionaries.questions.max_number_of_answers' & t}</label> <input type=text value.bind=model.maxNumberOfAnswers id=maxNumberOfAnswers class=form-control> <small class=\\\"form-text text-muted\\\">${'main.admin.pages.questionaries.questions.max_number_of_answers_info' & t}</small> </div> <div class=\\\"form-row form-check mb-3\\\" if.bind=\\\"model.questionType == QuestionType.Matrix\\\"> <input type=checkbox value.bind=model.allowOneResponseByColumn id=allowOneResponseByColumn checked.bind=model.allowOneResponseByColumn> <label for=allowOneResponseByColumn> ${'main.admin.pages.questionaries.questions.allow_one_response_by_column' & t} </label> <small class=\\\"form-text text-muted\\\">${'main.admin.pages.questionaries.questions.allow_one_response_by_column_info' & t}</small> </div> <div class=\\\"form-row form-check mb-3\\\" if.bind=\\\"model.questionType == QuestionType.Matrix\\\"> <input type=checkbox value.bind=model.allowOneResponseByRow id=allowOneResponseByRow checked.bind=model.allowOneResponseByRow> <label for=allowOneResponseByRow> ${'main.admin.pages.questionaries.questions.allow_one_response_by_row' & t} </label> <small class=\\\"form-text text-muted\\\">${'main.admin.pages.questionaries.questions.allow_one_response_by_row_info' & t}</small> </div> <div class=\\\"form-row form-check mb-3\\\" if.bind=\\\"model.questionType == QuestionType.Matrix\\\"> <input type=checkbox value.bind=model.allowRandomColumns id=allowRandomColumns checked.bind=model.allowRandomColumns> <label for=allowRandomColumns> ${'main.admin.pages.questionaries.questions.allow_random_columns' & t} </label> <small class=\\\"form-text text-muted\\\">${'main.admin.pages.questionaries.questions.allow_random_columns_info' & t}</small> </div> <div class=\\\"form-row form-check mb-3\\\" if.bind=\\\"model.questionType == QuestionType.OpenAnswerQuestion\\\"> <input type=checkbox id=isTextSizeAvailable checked.bind=model.isTextSizeAvailable change.delegate=toggleTextSize()> <label for=isTextSizeAvailable> ${'main.admin.pages.questionaries.questions.text_size' & t} </label> <div class=\\\"form-row form-inline\\\"> <div class=form-group> <input class=form-check-input type=radio name=textSizeOption disabled.bind=!textSizeOptions checked.bind=textSizeOptionSelected model.bind=1 change.delegate=toggleTextSizeDetail() id=textSizeOption1> <label class=\\\"mb-2 mr-sm-2\\\" for=textSize> ${'main.admin.pages.questionaries.questions.exactly' & t}</label> <input type=text class=\\\"form-control col-2 mb-2 mr-sm-2\\\" disabled.bind=\\\"!(textSizeOptionSelected===1)\\\" value.bind=model.textSize id=textSize> <label class=\\\"mb-2 mr-sm-2\\\">${'main.admin.pages.questionaries.questions.characters' & t}</label> </div> </div> <div class=\\\"form-row form-inline\\\"> <div class=form-group> <input type=radio class=form-check-input name=textSizeOption disabled.bind=!textSizeOptions checked.bind=textSizeOptionSelected model.bind=2 change.delegate=toggleTextSizeDetail() id=textSizeOption2> <label for=textSizeMin class=\\\"mb-2 mr-sm-2\\\"> ${'main.admin.pages.questionaries.questions.between' & t} </label> <input type=text class=\\\"form-control col-2 mb-2 mr-sm-2\\\" disabled.bind=\\\"!(textSizeOptionSelected===2)\\\" value.bind=model.textSizeMin id=textSizeMin> <label for=textSizeMax class=\\\"mb-2 mr-sm-2\\\"> ${'main.admin.pages.questionaries.questions.and' & t}</label> <input type=text class=\\\"form-control col-2 mb-2 mr-sm-2\\\" disabled.bind=\\\"!(textSizeOptionSelected===2)\\\" value.bind=model.textSizeMax id=textSizeMax> <label class=\\\"mb-2 mr-sm-2\\\"> ${'main.admin.pages.questionaries.questions.characters' & t}</label> </div> </div> </div> </form> </ux-dialog-body> <ux-dialog-footer> <button class=\\\"btn btn-default\\\" click.delegate=submit() t=commands.close>Close</button> </ux-dialog-footer> </ux-dialog> </template> \";","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\" global-permission-show=\\\"can: QuestionaryCreate\\\"> <div class=card-body> <h5 class=card-title t=main.admin.pages.questionaries.questions.create_card.title>title</h5> <p class=card-text t=[html]main.admin.pages.questionaries.questions.create_card.info>Create new question</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: question-create-type-selection\\\">${'commands.create' & t}</a> </div> </div> </template> \";","import { FileAcceptValidator } from 'common/utils/file-accept-validator';\nimport { Router } from \"aurelia-router\";\nimport { autoinject, LogManager} from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { QuestionService } from \"../../../services/questionaries/question-service\";\nimport { Question } from \"models/questions/question\";\nimport { QuestionType } from \"models/questions/questionType\";\nimport { QuestionUse } from \"models/questions/questionUse\";\nimport { QuestionConfigModal } from \"./question-config-modal\";\nimport { ResponseOption } from \"models/questions/response-option\";\nimport { CoreLanguageService } from 'main/admin/services/localizations/core-language-service';\nimport { Language } from 'models/localizations/language';\n@autoinject()\nexport class QuestionEdit {\n\n  private logger: Logger;\n  private model: Question = new Question();\n  private modelTranslated: Question = new Question();\n  //private translatedQuestionnaries: Question[] = [];\n  private languages: Language[] = [];\n  private isTranslation : boolean = false;\n  private questionLanguageId : number = 0;\n  private validationController: ValidationController;\n  private isAnUpdate: boolean = false;\n  private languageId: Language;\n  private questionId: number;\n  private formulation: string;\n  private responseOption: ResponseOption [] = [];\n  private responseOptionRules;\n  private isTheLastQuestion: boolean = false;\n  private languageIdDefault: number = 1;\n  constructor(\n    private questionService: QuestionService,\n    private dialogService: DialogService,\n    private notification: Notification,\n    public languagesService: CoreLanguageService,\n    private validationControllerFactory: ValidationControllerFactory,\n    private router: Router) {\n\n    this.logger = LogManager.getLogger(\"QuestionEdit\");\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"formulation\").displayName(\"main.admin.pages.questionaries.questions.question\").required()\n      .ensure(\"order\").displayName(\"main.admin.pages.questionaries.questions.order\").required().matches(/^[0-9]*$/)\n      .ensure(\"questionUse\").displayName(\"main.admin.pages.questionaries.questions.use\").required()\n      .ensure(\"code\").displayName(\"main.admin.pages.questionaries.questions.code\").required()\n      .on(this.model)\n  }\n\n  private async activate(params: any): Promise<void> {\n    try {\n      if (!isNaN(params.questionId)) {\n        this.questionId = params.questionId;\n        \n        /*if (params.isTranslation != undefined && params.languageId != undefined) {\n          this.isTranslation = JSON.parse(params.isTranslation);\n          this.questionLanguageId = JSON.parse(params.languageId);\n        }\n        else if (params.languageId != undefined){\n          this.questionLanguageId = JSON.parse(params.languageId);\n        }*/\n\n        if (params.isTranslation != undefined) {\n          this.isTranslation = JSON.parse(params.isTranslation);         \n        }\n        if (params.languageId != undefined){\n          this.questionLanguageId = JSON.parse(params.languageId);\n        }\n        \n        this.languages = await this.languagesService.getAll(); \n       // this.logger.info(\"Acticated for edit with id\", this.questionId);\n\n        this.model = await this.questionService.getById(this.questionId); \n        this.modelTranslated = JSON.parse(JSON.stringify(this.model));\n        if(this.isTranslation){\n          this.modelTranslated.languageId = this.questionLanguageId;\n          this.modelTranslated = await this.questionService.getQuestionOptionByQuestion(this.modelTranslated);\n          \n        // this.logger.info(\"que tiene this.modelTranslated\", this.modelTranslated);\n          if (this.modelTranslated === undefined || this.modelTranslated === null )\n          {\n            this.modelTranslated = this.model;\n            this.formulation = this.model.formulation;\n            this.responseOption = JSON.parse(JSON.stringify(this.modelTranslated.responseOptions));         \n            this.languages = this.languages.filter( x => x.id != this.questionLanguageId);\n          }\n          else{            \n            this.formulation = this.modelTranslated.formulation;\n            this.responseOption = this.modelTranslated.responseOptions;\n            this.isAnUpdate = true;\n            if (params.languageId != this.languageIdDefault){\n              this.languages = this.languages.filter( x => x.id == this.questionLanguageId);\n            }else{\n              this.languages = this.languages.filter( x => x.id != this.questionLanguageId);\n            }\n          }\n        }\n\n      } else if (!isNaN(params.questionaryId) && !isNaN(params.questionTypeId)) {\n\n        this.logger.debug(\"params.questionTypeId: \", params.questionTypeId);\n\n        this.model.questionaryId = <number>params.questionaryId;\n        this.model.questionType = <QuestionType>params.questionTypeId;\n\n        this.logger.debug(\"this.model.questionType: \", QuestionType[this.model.questionType]);\n\n        if (this.model.questionType == QuestionType.DescriptiveText || this.model.questionType == QuestionType.OpenAnswerQuestion) {\n          this.addResponseOption(true);\n        }\n      }\n\n      this.configureValidationRules();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public async openProperties(): Promise<void> {\n    this.logger.debug(\"openProperties\");\n    return await this.dialogService.open({\n      viewModel: QuestionConfigModal,\n      model: this.model\n    }).whenClosed(() => null);\n  }\n\n  getQuestionTypeValue(): string {\n    const questionType = QuestionType[this.model.questionType];\n    return questionType;\n  }\npublic async nextQuestion(): Promise<any> {\n  let nextQuestion = await this.questionService.getNextQuestion(this.model.id,this.model.questionaryId,this.questionLanguageId);\n    if (nextQuestion != null) {      \n      await this.router.navigateToRoute(\"question-child-router\", { questionId: nextQuestion.id ,isTranslation: this.isTranslation, languageId: this.questionLanguageId});\n      window.location.reload();\n    } else{\n      this.isTheLastQuestion = true;\n      this.notification.info(\"main.admin.pages.questionaries.questions.messages.no_more_questions\");\n    }\n}\n\n  public async submit(saveAndContinue: boolean): Promise<void> {\n    this.logger.debug(\"submit\");\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          if (this.model.responseOptions.length > 0 && this.model.questionType !== QuestionType.DescriptiveText) { //this.questionType.getIdByCode(\"descriptive.text\")\n            let validDescriptiveText: boolean = true;\n            if (validDescriptiveText) {\n              return await this.save(saveAndContinue);\n            }\n          } else {\n            return await this.save(saveAndContinue);\n          }\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.questionService.client.isRequesting;\n  }\n\n  public async save(saveAndContinue: boolean): Promise<any> {\n    this.logger.debug(\"save\");\n    if (this.modelTranslated.formulation !== undefined || this.model.formulation !== undefined) {\n      this.logger.debug(\"this.model\", this.model);\n    \n      if (this.isTranslation) {\n        this.modelTranslated.formulation = this.formulation;\n        this.modelTranslated.responseOptions = this.responseOption;\n        this.modelTranslated.languageId = this.languageId.id;\n        if (this.isAnUpdate) {\n          this.modelTranslated.id = this.questionId;\n          return this.executeActionWithNotification(\n            () => this.questionService.updateLocalization(this.modelTranslated),\n            \"main.admin.pages.questionaries.questions.messages.question_edited\",\n            saveAndContinue\n          );\n        } else {\n        return this.executeActionWithNotification(\n          () => this.questionService.createLocalization(this.modelTranslated),\n          \"main.admin.pages.questionaries.questions.messages.question_added\",\n          saveAndContinue\n        );\n      } \n      }\n      else if (this.model.id !== undefined) {\n        return this.executeActionWithNotification(\n          () => this.questionService.update(this.model),\n          \"main.admin.pages.questionaries.questions.messages.question_edited\",\n          saveAndContinue\n        );\n      }\n      else {\n        return this.executeActionWithNotification(\n          () => this.questionService.create(this.model),\n          \"main.admin.pages.questionaries.questions.messages.question_added\",\n          saveAndContinue\n        );\n      }\n    }\n  }\n  \n\n  private async executeActionWithNotification(action: () => Promise<Question>, successMessage: string, saveAndContinue: boolean) {\n    try {\n       \n      var questionId;\n      var languageId;\n      var question =await action()\n      if (question)          \n          questionId = question.id;         \n      else\n          questionId = this.model.id;             \n      if (this.languageId)\n          languageId = this.questionLanguageId;\n      else\n          languageId = 1 // Spanish default   \n      this.notification.success(successMessage);\n\n      if (!saveAndContinue) {\n        return this.router.navigateToRoute(\"questions\");\n      } else {      \n        return this.router.navigateToRoute(\"question-child-router\", { questionId: questionId , isTranslation: this.isTranslation, languageId:languageId});\n      }\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n    \n  // public cancel(): void {\n  //   this.logger.info(\"cancel\", this.router);\n  //   this.router.navigate(`questions`);\n  // }\n\n  public addResponseOption(isColumn: boolean): void {\n    this.logger.info(\"addReponseOption\");\n    let responseOption: ResponseOption = new ResponseOption();\n    responseOption.id = 0;\n    responseOption.order = this.model.responseOptions.length;\n    responseOption.isColumn = isColumn;\n    responseOption.option = \"\";\n    this.model.responseOptions.push(responseOption);\n\n    //validation\n    this.validationController.addObject(responseOption, this.responseOptionRules);\n  }\n\n  public deleteResponseOption(index: number) {\n    let responseOption = this.model.responseOptions[index];\n    //validation\n    this.validationController.removeObject(responseOption);\n    //delete\n    this.model.responseOptions.splice(index, 1);\n  }\n\n  public setFile($event: any, item: ResponseOption): void {\n    this.logger.debug(\"setFile\");\n    let file = <File>$event.target.files[0];\n    let fileValidator = FileAcceptValidator.parse(\"image/*\", 1024 * 300);\n    if (fileValidator.isValid(file)) {\n      let reader: FileReader = new FileReader();\n      reader.readAsDataURL(file);\n      reader.onload = () => {\n        let base64data: any = reader.result;\n        item.thumbnailImage = base64data;\n        item.option = file.name;\n        item.thumbnailImageUrl = URL.createObjectURL(file);\n      };\n    }\n    else {\n      this.notification.error(\"main.admin.pages.questionaries.questions.errors.error_bad_image\");\n\n    }\n  }\n\n  public unSetFile(item: ResponseOption): void {\n    item.option = null;\n    item.thumbnailImage = null;\n    item.thumbnailImageUrl = null;\n  }\n\n  public getQuestionUsesByQuestionType(): Array<any> {\n    this.logger.debug(\"getQuestionUsesByQuestionType\");\n    let result: Array<any> = [];\n    this.logger.debug(\"getQuestionUsesByQuestionType this.model.questionType\", this.model.questionType);\n    switch (+this.model.questionType) {\n      case QuestionType.SingleChoiceList:\n      case QuestionType.SingleImageChoiceList:\n      case QuestionType.SingleChoiceListWithComments:\n      case QuestionType.MultipleChoiceList:\n      case QuestionType.MultipleImageChoiceList:\n      case QuestionType.Matrix:\n        this.logger.debug(\"QuestionType.All\");\n        result = Object.keys(QuestionUse)\n          .filter(key => QuestionUse[key] === QuestionUse.Evaluation || QuestionUse[key] === QuestionUse.Example)\n          .map(key => ({ id: QuestionUse[key], name: key }));\n        break;\n      case QuestionType.DescriptiveText:\n        this.logger.debug(\"QuestionType.DescriptiveText\");\n        result = Object.keys(QuestionUse)\n          .filter(key => QuestionUse[key] === QuestionUse.Instruction || QuestionUse[key] === QuestionUse.Warning || QuestionUse[key] === QuestionUse.Farewell)\n          .map(key => ({ id: QuestionUse[key], name: key }));\n        break;\n      case QuestionType.OpenAnswerQuestion:\n        this.logger.debug(\"QuestionType.OpenAnswerQuestion\");\n        result = Object.keys(QuestionUse)\n          .filter(key => QuestionUse[key] === QuestionUse.Evaluation || QuestionUse[key] === QuestionUse.Example || QuestionUse[key] === QuestionUse.Warning)\n          .map(key => ({ id: QuestionUse[key], name: key }));\n        break;\n      default:\n        break;\n    }\n    this.logger.debug(\"getQuestionUsesByQuestionType result:\", result);\n    return result;\n  }\n\n  // public endDragAndDropResponseOption(customEvent: CustomEvent) {\n  //   let event = customEvent.detail;\n\n  //   this.logger.debug(\"endDragAndDropResponseOption event.oldIndex:\", event.oldIndex);\n  //   this.logger.debug(\"endDragAndDropResponseOption event.newIndex:\", event.newIndex);\n\n  // let movedItem = this.model.responseOptions.find((item, index) => index === event.oldIndex);\n  // let remainingItems = this.model.responseOptions.filter((item, index) => index !== event.oldIndex);\n\n  // let j: number = 0;\n  // for (let i: number = 0; i < remainingItems.length; i++) {\n  //   if (i === event.newIndex) {\n  //     movedItem.order = j;\n  //     j++;\n  //     remainingItems[i].order = j;\n  //   } else {\n  //     remainingItems[i].order = j;\n  //   }\n  //   this.logger.debug(\"endDragAndDropResponseOption i, j:\", i, j);\n  //   j++;      \n  // }\n\n  // if (event.newIndex === remainingItems.length) {\n  //   this.logger.debug(\"endDragAndDropResponseOption last:\");\n  //   movedItem.order = event.newIndex;\n  // }\n  // }\n\n}\n","module.exports = \"<template> <require from=../../../../../models/questions/questionTypeViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2 if.bind=!model.id>${'main.admin.pages.questionaries.questions.create' & t}</h2> <h2 if.bind=\\\"model.id && !isTranslation\\\">${'main.admin.pages.questionaries.questions.edit' & t}</h2> <h2 if.bind=\\\"model.id && isTranslation\\\">${'main.admin.pages.questionaries.questions.translation_of_question' & t}</h2> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-12> <h3>${'main.admin.pages.questionaries.questions.question_type.' + QuestionType[model.questionType] & t}</h3> </div> </div> <div class=\\\"row mb-3\\\" if.bind=!isTranslation> <div class=\\\"col-md-11 col-12\\\"> <p>${'main.admin.pages.questionaries.questions.edit_info' & t}</p> </div> <div class=\\\"col-md-1 col-12\\\"> <button type=button class=\\\"btn btn-primary btn-round btn-sm\\\" click.delegate=openProperties() style=float:right> <i class=material-icons>settings</i> </button> </div> </div> <div class=\\\"row mb-3\\\" if.bind=isTranslation> <div class=\\\"col-md-11 col-12\\\"> <p>${'main.admin.pages.questionaries.questions.translation_of_question' & t}</p> </div> <div class=\\\"col-md-11 col-12\\\"> <label for=localizationId t=main.admin.pages.questionaries.language>Language</label> <select value.bind=\\\"languageId.id & validate\\\" class=form-control id=languageId> <option if.bind=\\\"!modelTranslated.languageId  > 0\\\" t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"item of languages\\\" model.bind=item.id>${item.name}</option> </select> </div> </div> <div class=\\\"row mb-3\\\" if.bind=isTranslation> <div class=col-12> <div class=row style=margin-bottom:50px> <div class=col-12> <div class=form-group> <label for=Question t=main.admin.pages.questionaries.questions.original_formulation>${'main.admin.pages.questionaries.questions.original_formulation' & t}</label> <br> <label for=Formulation style=font-weight:700 innerhtml.bind=model.formulation> </label></div> <label for=Question t=main.admin.pages.questionaries.questions.translation_of_question>${'main.admin.pages.questionaries.questions.translation_of_question' & t}</label> <quill-editor value.bind=\\\"formulation & validate\\\"></quill-editor> </div> </div> <div class=clearfix></div> <div class=\\\"row mb-4\\\"> <div class=col-12> <p>&nbsp;</p> </div> </div> <div class=\\\"row mb-4\\\"> <div class=col-12> <p>&nbsp;</p> </div> </div> <div class=\\\"row mb-4\\\"> <div class=col-12> <p>&nbsp;</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=Order t=main.admin.pages.questionaries.questions.order>Order</label> <input type=number value.bind=\\\"model.order & validate\\\" class=form-control id=Order t=[placeholder]main.admin.pages.questionaries.questions.order disabled.bind=isTranslation> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=use t=main.admin.pages.questionaries.questions.use>Use</label> <input type=string value.bind=getQuestionTypeValue() class=form-control id=questionType t=\\\"\\\" disabled.bind=isTranslation>  </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=Code t=main.admin.pages.questionaries.questions.code>Code</label> <input type=text value.bind=\\\"model.code & validate\\\" class=form-control id=Code t=[placeholder]main.admin.pages.questionaries.questions.code disabled.bind=isTranslation> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=!isTranslation> <div class=col-12> <div class=row style=margin-bottom:50px> <div class=col-12> <label for=Question t=main.admin.pages.questionaries.questions.question>Question</label> <quill-editor value.bind=\\\"model.formulation & validate\\\"></quill-editor> </div> </div> <div class=clearfix></div> <div class=\\\"row mb-4\\\"> <div class=col-12> <p>&nbsp;</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=Order t=main.admin.pages.questionaries.questions.order>Order</label> <input type=number value.bind=\\\"model.order & validate\\\" class=form-control id=Order t=[placeholder]main.admin.pages.questionaries.questions.order> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=use t=main.admin.pages.questionaries.questions.use>Use</label> <select value.bind=\\\"model.questionUse & validate\\\" class=form-control id=use t=[placeholder]main.admin.admin.pages.questionaries.questions.use> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of getQuestionUsesByQuestionType(model.questionType)\\\" model.bind=option.id>${'main.admin.pages.questionaries.questions.question_use.' + option.name & t}</option> </select> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=Code t=main.admin.pages.questionaries.questions.code>Code</label> <input type=text value.bind=\\\"model.code & validate\\\" class=form-control id=Code t=[placeholder]main.admin.pages.questionaries.questions.code> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"(model.questionType == QuestionType.SingleChoiceList || model.questionType == QuestionType.MultipleChoiceList || model.questionType == QuestionType.SingleChoiceListWithComments)  && !isTranslation\\\"> <div class=col-12> <h4>${'main.admin.pages.questionaries.questions.responses' & t}</h4> <ul class=list-group> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\"> <div class=row> <div class=col-10> <div class=form-group> <input type=text name=item value.bind=item.option class=form-control /> </div> </div> <div class=col-2> <button type=button class=\\\"btn btn-link\\\" click.delegate=deleteResponseOption($index)> <i class=material-icons>archive</i> </button> </div> </div> </li> </ul> <br/> <button type=button class=\\\"btn btn-primary btn-round\\\" click.delegate=addResponseOption(false)> <i class=material-icons>add</i> </button> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"(model.questionType == QuestionType.SingleChoiceList || model.questionType == QuestionType.MultipleChoiceList || model.questionType == QuestionType.SingleChoiceListWithComments)  && isTranslation\\\"> <div class=col-12> <h4>${'main.admin.pages.questionaries.questions.responses' & t}</h4> <ul class=list-group> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\"> <div class=row> <div class=col-10> <div class=form-group> <h6>${'main.admin.pages.questionaries.questions.original' & t}</h6> <input type=text name=item value.bind=item.option class=form-control disabled.bind=isTranslation /> <br> <h6>${'main.admin.pages.questionaries.questions.translation' & t}</h6> <input type=text name=index value.bind=responseOption[$index].option class=form-control /> </div> </div> </div> </li> </ul> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"(model.questionType == QuestionType.SingleImageChoiceList || model.questionType == QuestionType.MultipleImageChoiceList)  && !isTranslation\\\"> <div class=col-12> <h4>${'main.admin.pages.questionaries.questions.responses' & t}</h4> <ul class=list-group> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\"> <div class=row> <div class=\\\"col-md-4 col-10\\\"> <div class=custom-file> <input type=file class=custom-file-input id=item.option accept=image/* change.delegate=\\\"setFile($event, item)\\\"> <label class=custom-file-label for=item.option>${item.option}</label> </div> <img if.bind=item.thumbnailImageUrl class=\\\"img-thumbnail w-50\\\" alt.bind=item.option src.bind=item.thumbnailImageUrl> </div> <div class=col-2> <button type=button class=\\\"btn btn-link\\\" click.delegate=deleteResponseOption($index)> <i class=material-icons>archive</i> </button> </div> </div> </li> </ul> <br/> <button type=button class=\\\"btn btn-primary btn-round\\\" click.delegate=addResponseOption(false)> <i class=material-icons>add</i> </button> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"(model.questionType == QuestionType.SingleImageChoiceList || model.questionType == QuestionType.MultipleImageChoiceList)  && isTranslation\\\"> <div class=col-12> <h4>${'main.admin.pages.questionaries.questions.responses' & t}</h4> <ul class=list-group> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\"> <div class=row> <div class=\\\"col-md-4 col-10\\\"> <div class=custom-file> <h6>${'main.admin.pages.questionaries.questions.original_image' & t}</h6> <input type=file class=custom-file-input id=item.option accept=image/* change.delegate=\\\"setFile($event, item)\\\" disabled.bind=isTranslation> <label class=custom-file-label for=item.option>${item.option}</label> <h6>${'main.admin.pages.questionaries.questions.new_image' & t}</h6> <input type=file class=custom-file-input id=responseOption[$index].option accept=image/* change.delegate=\\\"setFile($event, responseOption[$index])\\\"> <label class=custom-file-label for=responseOption[$index].option>${responseOption[$index].option}</label> </div> <img if.bind=item.thumbnailImageUrl class=\\\"img-thumbnail w-50\\\" alt.bind=item.option src.bind=item.thumbnailImageUrl> </div> </div> </li> </ul> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.Matrix && !isTranslation\\\"> <div class=col-12> <h4>${'main.admin.pages.questionaries.questions.responses' & t}</h4> <div class=row> <div class=\\\"col-12 col-md-6\\\"> <p>${'main.admin.pages.questionaries.questions.matrix_rows' & t}</p> <ul class=list-group> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\" if.bind=!item.isColumn> <div class=row> <div class=col-10> <div class=form-group> <input type=text name=item value.bind=item.option class=form-control disabled.bind=isTranslation> </div> </div> </div> </li> </ul> <br/> <button type=button class=\\\"btn btn-primary btn-round\\\" click.delegate=addResponseOption(false)> <i class=material-icons>add</i> </button> </div> <div class=\\\"col-12 col-md-6\\\"> <p>${'main.admin.pages.questionaries.questions.matrix_columns' & t}</p> <ul class=list-group> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\" if.bind=item.isColumn> <div class=row> <div class=col-10> <div class=form-group> <input type=text name=item value.bind=item.option class=form-control> </div> </div> <div class=col-2> <button type=button class=\\\"btn btn-link\\\" click.delegate=deleteResponseOption($index)> <i class=material-icons>archive</i> </button> </div> </div> </li> </ul> <br/> <button type=button class=\\\"btn btn-primary btn-round\\\" click.delegate=addResponseOption(true)> <i class=material-icons>add</i> </button> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.Matrix && isTranslation\\\"> <div class=col-12> <h4>${'main.admin.pages.questionaries.questions.responses' & t}</h4> <div class=row> <div class=\\\"col-12 col-md-6\\\"> <p>${'main.admin.pages.questionaries.questions.matrix_rows' & t}</p> <ul class=list-group> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\" if.bind=!item.isColumn> <div class=row> <div class=col-10> <div class=form-group> <label t=main.admin.pages.questionaries.questions.original>${'main.admin.pages.questionaries.questions.original' & t}</label> <input type=text name=item value.bind=item.option class=form-control disabled.bind=isTranslation> <label t=main.admin.pages.questionaries.questions.translation>${'main.admin.pages.questionaries.questions.translation' & t}</label> <input type=text name=index value.bind=responseOption[$index].option class=form-control disabled.bind=!isTranslation> </div> </div> </div> </li> </ul> </div> <div class=\\\"col-12 col-md-6\\\"> <p>${'main.admin.pages.questionaries.questions.matrix_columns' & t}</p> <ul class=list-group> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\"> <div class=row> <div class=col-10> <div class=form-group if.bind=item.isColumn> <label t=main.admin.pages.questionaries.questions.original>${'main.admin.pages.questionaries.questions.original' & t}</label> <input type=text name=item value.bind=item.option class=form-control disabled.bind=isTranslation> </div> <div class=form-group if.bind=item.isColumn> <label t=main.admin.pages.questionaries.questions.translation>${'main.admin.pages.questionaries.questions.translation' & t}</label> <input type=text name=item value.bind=responseOption[$index].option class=form-control disabled.bind=!isTranslation> </div> </div> </div> </li> </ul> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.DescriptiveText && !isTranslation\\\"> <div class=col-12> <h4>${'main.admin.pages.questionaries.questions.descriptive_text_image' & t}</h4> <ul class=list-group> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\"> <div class=row> <div class=\\\"col-md-4 col-10\\\"> <div class=custom-file> <input type=file class=custom-file-input id=item.option accept=image/* change.delegate=\\\"setFile($event, item)\\\"> <label class=custom-file-label for=item.option>${item.option}</label> </div> <img if.bind=item.thumbnailImageUrl class=\\\"img-thumbnail w-50\\\" alt.bind=item.option src.bind=item.thumbnailImageUrl> </div> <div class=col-2> <div class=form-group if.bind=item.option> <button type=button class=\\\"btn btn-link\\\" click.delegate=unSetFile(item)> <i class=material-icons>archive</i> </button> </div> </div> </div> </li> </ul> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.DescriptiveText && isTranslation\\\"> <div class=col-12> <h4>${'main.admin.pages.questionaries.questions.descriptive_text_image' & t}</h4> <ul class=list-group> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\"> <div class=row> <div class=\\\"col-md-4 col-10\\\"> <div class=custom-file> <h6>${'main.admin.pages.questionaries.questions.original_image' & t}</h6> <input type=file class=custom-file-input id=item.option accept=image/* change.delegate=\\\"setFile($event, item)\\\" disabled.bind=isTranslation> <label class=custom-file-label for=item.option>${item.option}</label> <h6>${'main.admin.pages.questionaries.questions.new_image' & t}</h6> <input type=file class=custom-file-input id=responseOption[$index].option accept=image/* change.delegate=\\\"setFile($event, responseOption[$index])\\\"> <label class=custom-file-label for=responseOption[$index].option>${responseOption[$index].option}</label> </div> <img if.bind=item.thumbnailImageUrl class=\\\"img-thumbnail w-50\\\" alt.bind=item.option src.bind=item.thumbnailImageUrl> </div> <div class=col-2> </div> </div> </li> </ul> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.OpenAnswerQuestion && !isTranslation\\\"> <div class=col-12> <h4>${'main.admin.pages.questionaries.questions.ideal_response' & t}</h4> <div class=form-group> <input type=text value.bind=model.responseOptions[0].option name=item class=form-control> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.OpenAnswerQuestion && isTranslation\\\"> <div class=col-12> <h4>${'main.admin.pages.questionaries.questions.ideal_response' & t}</h4> <div class=form-group> <h6>${'main.admin.pages.questionaries.questions.original' & t}</h6> <input type=text value.bind=model.responseOptions[0].option name=item class=form-control disabled.bind=isTranslation> <h6>${'main.admin.pages.questionaries.questions.translation' & t}</h6> <input type=text value.bind=responseOption[0].option name=index class=form-control disabled.bind=!isTranslation> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-actions> <button type=button click.delegate=submit(true) class=\\\"btn btn-primary btn-round\\\" t=commands.save_and_continue disabled.bind=!canSave>Save and edit</button> <button type=button click.delegate=submit(false) class=\\\"btn btn-primary btn-round\\\" t=commands.save disabled.bind=!canSave>Save</button> <button type=button click.delegate=nextQuestion() class=\\\"btn btn-primary btn-round\\\" t=commands.next disabled.bind=isTheLastQuestion>Next</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: questions;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </div> </template> \";","import { Router } from \"aurelia-router\";\nimport { bindable } from \"aurelia-framework\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { QuestionService } from \"../../../services/questionaries/question-service\";\nimport { QuestionType } from \"models/questions/questionType\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse} from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { DeleteConfirmation } from \"../../../../components/delete-confirmation\";\nimport { Language } from \"models/localizations/language\";\nimport { CoreLanguageService } from \"main/admin/services/localizations/core-language-service\";\nimport { QuestionaryService } from \"main/admin/services/questionaries/questionary-service\";\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { SearchParams } from \"models/questionaries/searchParams\";\n\n@autoinject()\nexport class QuestionList {\n\n  @bindable public questionaryId: number;\n\n  private logger: Logger;\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n  private languages: Language[] = [];\n  private selectedLanguageId: number;\n  private questionary: Questionary = new Questionary();\n\n  constructor(\n    private dialogService: DialogService,\n    private questionService: QuestionService,\n    private questionaryService: QuestionaryService,\n    public languageService: CoreLanguageService,\n    private notification: Notification,\n    public questionType: QuestionType) {\n\n    this.logger = LogManager.getLogger(\"QuestionList\");\n\n  }\n\n  private async activate(params: any): Promise<void> {\n    this.logger.debug(\"activated this.questionaryId\", params  .questionaryId);\n    if (!isNaN(params.questionaryId)) {\n      this.questionaryId = +params.questionaryId;\n      this.questionary = await this.questionaryService.getById(this.questionaryId);\n      this.selectedLanguageId = this.questionary.languageId;\n      this.languages = await this.languageService.getAll();\n      this.selectLanguage();\n    }\n  }\n\n  private async bind(): Promise<any> {\n  }\n\n  /*public async attached(): Promise<void> {\n    this.logger.info(\"attached questionaryId\", this.questionaryId);\n    if (this.questionaryId) {\n      return await this.databind();\n    }\n  }*/\n\n  public async selectLanguage() {\n    if (this.selectedLanguageId) {\n      const language = this.languages.find(x => x.id === this.selectedLanguageId);\n      this.parameters.search = <SearchParams>{ LanguageId: language.id };\n      await this.databind();\n      // Resto de tu lógica\n    }\n  }\n\n  public async databind(): Promise<void> {\n    this.languages = await this.languageService.getAll();\n    this.logger.info(\"databind\");\n    return await this.questionService.list(this.questionaryId, this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.parameters.totalRecords = response.totalRecords;\n        this.parameters.tableData = response.data;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private refresh = (): Promise<UxDatatableResponse> => {\n    // this.logger.info(\"refreshing\");\n    return this.questionService.list(this.questionaryId, this.parameters);\n  }\n\n  private async delete(id: number, name: string, isOriginal: boolean, languageId: number): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled && isOriginal) {\n        return await this.questionService.delete(id)\n          .then(() => {\n            let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === id);\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"main.admin.pages.questionaries.questions.question_deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }else if (!response.wasCancelled && !isOriginal){\n        return await this.questionService.deleteLocalization(id,languageId)\n          .then(() => {\n            let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === id);\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"main.admin.pages.questionaries.questions.question_deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class UserListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"UserListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./question-list\"),\n        name: \"questions\"\n      },\n\n      {\n        route: \":questionId/:isTranslation/:languageId\",\n        moduleId: PLATFORM.moduleName(\"./question-child-router\"),\n        name: \"question-child-router\",\n      },\n\n      {\n        route: \"create\",\n        name: \"question-create-type-selection\",\n        moduleId: PLATFORM.moduleName(\"./question-type-selection\"),\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.questionaries.questions.create_info\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.QuestionaryUpdate]\n          }\n        }\n      },\n      \n      {\n        route: [\"create/:questionTypeId\"],\n        name: \"question-create\",\n        moduleId: PLATFORM.moduleName(\"./question-child-router\"),\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.questionaries.questions.create\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.QuestionaryUpdate]\n          }\n        }\n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=./question-create-card.html></require> <require from=../../../../../models/questions/questionTypeViewEngineHooks></require> <div if.bind=!questionaryId> <h2>${'main.admin.pages.questionaries.new' & t}</h2> <p> ${'main.admin.pages.questionaries.questions.notification_new_question' & t} </p> </div> <div if.bind=questionaryId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${'main.admin.pages.questionaries.questions.title' & t}</h2> <p>${'main.admin.pages.questionaries.questions.info' & t}</p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> <div class=\\\"col-12 col-md-4\\\"> <select class=form-control value.bind=selectedLanguageId change.delegate=selectLanguage()> <option repeat.for=\\\"option of languages\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-6 scope=col t=main.admin.pages.questionaries.questions.question>Question</th> <th class=col-md-2 scope=col t=main.admin.pages.questionaries.questions.type>Type</th> <th class=col-md-2 scope=col t=main.admin.pages.questionaries.questions.state>State</th> <th class=col-md-2 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=col-md-6 style=height:100px> <p innerhtml.bind=\\\"item.formulation | sanitizeHTML\\\"></p> </td> <td class=col-md-2>${'main.admin.pages.questionaries.questions.question_type.' + QuestionType[item.questionType] & t} </td> <td class=col-md-2>${item.isDisable ? 'Unactive' : 'Active' }</td> <td class=\\\"col-md-4 d-flex\\\"> <a if.bind=item.isOriginal class=\\\"btn btn-link\\\" global-permission-show=\\\"can: QuestionUpdate\\\" route-href=\\\"route: question-child-router; params.bind: {questionId:item.id, isTranslation:false, languageId: item.languageId}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <a if.bind=!item.isOriginal class=\\\"btn btn-link\\\" global-permission-show=\\\"can: QuestionUpdate\\\" route-href=\\\"route: question-child-router; params.bind: {questionId:item.id, isTranslation:true, languageId: item.languageId}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: QuestionDelete\\\" click.delegate=\\\"delete(item.id, item.name, item.isOriginal, item.languageId)\\\" title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> <a class=\\\"btn btn-link\\\" global-permission-show=\\\"can: QuestionaryUpdate\\\" if.bind=item.isOriginal route-href=\\\"route: question-child-router; params.bind: {questionId:item.id, isTranslation:true, languageId: item.languageId}\\\" title.bind=\\\"'commands.translate' & t\\\"> <i class=material-icons>translate</i> </a> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> <question-create-card></question-create-card> </div> </div> </div> </template> \";","import { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Notification } from \"common/services/notification\";\nimport { QuestionType } from \"models/questions/questionType\";\n\n@autoinject()\nexport class QuestionTypeSelection {\n\n  private logger: Logger;\n  private questionaryId: number;\n  private tabItem: string;\n\n  constructor(\n    private router: Router,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"QuestionTypeSelection\");\n    this.tabItem = \"selectionList\";\n\n  }\n\n  public activate(params: any): any {\n    this.logger.info(\"Activated with questionaryId\", params.questionaryId);\n    if (!isNaN(params.questionaryId)) {\n      this.questionaryId = +params.questionaryId;\n    } else {\n      this.router.navigate(\"questionaries\");\n    }\n  }\n\n  public createQuestion(type: QuestionType): any {\n    this.logger.info(\"create question with type:\", type);\n    this.router.navigate(`create/${type}`);\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../../models/questions/questionTypeViewEngineHooks></require> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-2\\\"> <div class=\\\"nav flex-column nav-pills\\\" id=v-pills-tab role=tablist aria-orientation=vertical> <a class=\\\"nav-link active\\\" id=v-pills-list-tab data-toggle=pill role=tab aria-controls=nav-list aria-selected=true href=#nav-list>${'main.admin.pages.questionaries.questions.choice_list' & t}</a> <a class=nav-link id=v-pills-image-tab data-toggle=pill role=tab aria-controls=nav-image aria-selected=false href=#nav-image>${'main.admin.pages.questionaries.questions.choice_images' & t}</a> <a class=nav-link id=v-pills-matrix-tab data-toggle=pill role=tab aria-controls=nav-matrix aria-selected=false href=#nav-matrix>${'main.admin.pages.questionaries.questions.matrix' & t}</a> <a class=nav-link id=v-pills-others-tab data-toggle=pill role=tab aria-controls=nav-others aria-selected=false href=#nav-others>${'main.admin.pages.questionaries.questions.others' & t}</a> </div> </div> <div class=\\\"col-12 col-md-10\\\"> <div class=tab-content id=v-pills-tabContent> <h2>${'main.admin.pages.questionaries.questions.create' & t}</h2> <p>${'main.admin.pages.questionaries.questions.create_info' & t}</p> <hr> <div class=\\\"tab-pane fade show active\\\" id=nav-list role=tabpanel aria-labelledby=v-pills-list-tab> <h2>${'main.admin.pages.questionaries.questions.single_choice_list' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.single_choice_list_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.SingleChoiceList) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> <h2>${'main.admin.pages.questionaries.questions.multiple_choice_list' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.multiple_choice_list_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.MultipleChoiceList) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> <h2>${'main.admin.pages.questionaries.questions.single_choice_list_with_comments' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.single_choice_list_with_comments_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.SingleChoiceListWithComments) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=nav-image role=tabpanel aria-labelledby=v-pills-image-tab> <h2>${'main.admin.pages.questionaries.questions.single_choice_images' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.single_choice_images_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.SingleImageChoiceList) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> <h2>${'main.admin.pages.questionaries.questions.multiple_choice_images' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.multiple_choice_images_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.MultipleImageChoiceList) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=nav-matrix role=tabpanel aria-labelledby=v-pills-matrix-tab> <h2>${'main.admin.pages.questionaries.questions.matrix' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.matrix_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.Matrix) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=nav-others role=tabpanel aria-labelledby=v-pills-others-tab> <h2>${'main.admin.pages.questionaries.questions.descriptive_text' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.descriptive_text_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.DescriptiveText) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> <h2>${'main.admin.pages.questionaries.questions.open_answer_questions' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.open_answer_questions_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.OpenAnswerQuestion) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> </div> </div> </div> </div></template> \";","\nimport { Router } from \"aurelia-router\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController, DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { DeleteConfirmation } from \"../../../components/delete-confirmation\";\nimport { Notification } from \"common/services/notification\";\nimport { ScaleService } from \"../../services/scales/scale-service\";\nimport { Scale } from \"models/scales/scale\";\nimport { ScaleModal } from \"./scale-modal\";\nimport { EducationalLevel } from \"models/catalogs/educationalLevel\";\nimport { AgeRange } from \"models/catalogs/ageRange\";\nimport { Genre } from \"models/catalogs/genre\";\n\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n\ninterface SearchParams {\n  Genre: Genre,\n  EducationalLevel: EducationalLevel,\n  AgeRange: AgeRange\n}\n\n@autoinject()\nexport class ScaleList {\n\n  private thematicVariableId: number;\n\n  private logger: Logger;\n  private model: Scale = new Scale();\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  constructor(\n    private scaleService: ScaleService,\n    private dialogController: DialogController,\n    private dialogService: DialogService,\n    private notification: Notification,\n    private router: Router) {\n\n    this.logger = LogManager.getLogger(\"ScaleList\");\n\n  }\n\n  private async activate(params: any): Promise<void> {\n    this.logger.debug(\"activate\");\n    if (!isNaN(params.thematicVariableId)) {\n      this.thematicVariableId = +params.thematicVariableId;\n      //this.parameters.search = <SearchParams>{ Genre: null, EducationalLevel: null, AgeRange: null };\n    }\n  }\n\n  private async bind(): Promise<any> {\n    return this.databind();\n  }\n\n  private async databind(): Promise<any> {\n    if (this.thematicVariableId) {\n      return await this.scaleService.list(this.thematicVariableId, this.parameters)\n        .then((response: UxDatatableResponse) => {\n          this.parameters.tableData = response.data;\n          this.parameters.totalRecords = response.totalRecords;\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    }\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private refresh = (): Promise<UxDatatableResponse> => {\n    // this.logger.info(\"refreshing\");\n    // this.logger.info(\"refreshing\", this.parameters.search.Genre);\n    return this.scaleService.list(this.thematicVariableId, this.parameters);\n  }\n\n  private async edit(item: Scale): Promise<void> {\n    let orginialItem = JSON.parse(JSON.stringify(item));\n    return await this.dialogService.open({\n      viewModel: ScaleModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        // this.databind();\n        return await this.scaleService.update(item)\n          .then(() => {\n            this.notification.success(\"notifications.item_added\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n      else {\n        Object.assign(item, orginialItem);\n      }\n    });\n  }\n\n  private async create(): Promise<void> {\n    let item: Scale = new Scale();\n    item.thematicVariableId = this.thematicVariableId;\n    // item.genre = null;\n    // item.educationalLevel = null;\n    // item.ageRange = null;\n\n    if (this.parameters.search.Genre >= 0) {\n      item.genre = <Genre>this.parameters.search.Genre;      \n    }\n\n    if (this.parameters.search.EducationalLevel >= 0) {\n      item.educationalLevel = <EducationalLevel>this.parameters.search.EducationalLevel;\n    }\n\n    if (this.parameters.search.AgeRange >= 0) {\n      item.ageRange = <AgeRange>this.parameters.search.AgeRange;\n    }\n\n    return await this.dialogService.open({\n      viewModel: ScaleModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        // this.databind();\n        return await this.scaleService.create(item)\n          .then(async (model: Scale) => {\n            // item.id = model.id;\n\n            // this.logger.debug(\"item: \", item.genre);\n\n            this.parameters.tableData.unshift(model);\n            this.parameters.totalRecords++;\n            this.notification.success(\"notifications.item_added\");\n            // return await this.databind();\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private async delete(id: number, name: string): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.scaleService.delete(id)\n          .then(() => {\n            let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === id);\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"main.admin.pages.questionaries.messages.questionary_deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class ScaleListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"ScaleListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./scale-list\"),\n        name: \"scale-list\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.admin.pages.scales.title\"),\n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=../../../../models/catalogs/genreViewEngineHooks></require> <require from=../../../../models/catalogs/educationalLevelViewEngineHooks></require> <require from=../../../../models/catalogs/ageRangeViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${'main.admin.pages.scales.title' & t}</h2> <p> ${'main.admin.pages.scales.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-3> <div class=form-group> <label for=genre>${'main.catalog.genre.title' & t}</label> <select id=genre change.delegate=\\\"databind() & debounce:100\\\" value.bind=parameters.search.Genre class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of Genres\\\" model.bind=Genre[option]>${'main.catalog.genre.' + option & t} </option> </select> </div> </div> <div class=col-3> <div class=form-group> <label for=educationalLevel>${'main.catalog.educational_level.title' & t}</label> <select id=educationalLevel change.delegate=\\\"databind() & debounce:100\\\" value.bind=parameters.search.EducationalLevel class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of EducationalLevels\\\" model.bind=EducationalLevel[option]> ${'main.catalog.educational_level.' + option & t} </option> </select> </div> </div> <div class=col-3> <div class=form-group> <label for=ageRange>${'main.catalog.age_range.title' & t}</label> <select id=ageRange change.delegate=\\\"databind() & debounce:100\\\" value.bind=parameters.search.AgeRange class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of AgeRanges\\\" model.bind=AgeRange[option]>${'main.catalog.age_range.' + option & t} </option> </select> </div> </div> <div class=col-3> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-2 scope=col t=main.catalog.genre.title>Genre</th> <th class=col-md-2 scope=col t=main.catalog.educational_level.title>Educational level</th> <th class=col-md-2 scope=col t=main.catalog.age_range.title>Age range</th> <th class=col-md-2 scope=col t=main.admin.pages.scales.raw_score>Raw score</th> <th class=col-md-2 scope=col t=main.admin.pages.scales.equivalent_score>Equivalent score</th> <th class=col-md-2 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=col-md-2 t=\\\"${item.genre !== null && item.genre !== '' ? 'main.catalog.genre.' + Genre[item.genre] : ''}\\\">genre </td> <td class=col-md-2 t=\\\"${item.educationalLevel !== null && item.educationalLevel !== '' ? 'main.catalog.educational_level.' + EducationalLevel[item.educationalLevel] : ''}\\\"> el</td> <td class=col-md-2 t=\\\"${item.ageRange !== null && item.ageRange !== '' ? 'main.catalog.age_range.' + AgeRange[item.ageRange] : ''}\\\"> age</td> <td class=col-md-2>${item.rawValuesRange}</td> <td class=col-md-2>${item.equivalentValue}</td> <td class=\\\"col-md-2 d-flex\\\"> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: ScaleUpdate\\\" click.delegate=edit(item) title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </button> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: ScaleDelete\\\" click.delegate=\\\"delete(item.id, item.name)\\\" title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar global-permission-show=\\\"can: ScaleCreate\\\"> <div class=row> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=commands.create>title</h5> <p class=card-text t=[html]main.admin.pages.scales.create_info>Lorem</p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create() t=commands.create>Cretae</button> </div> </div> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager, NewInstance } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { Scale } from \"models/scales/scale\";\nimport { ScaleService } from \"../../services/scales/scale-service\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\n\n@autoinject()\nexport class ScaleModal {\n\n  private model: Scale = new Scale();\n  private thematicGroupId: number;\n\n  private validationController: ValidationController;\n  private logger: Logger;\n\n  constructor(\n    private dialogController: DialogController,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private scaleService: ScaleService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ScaleModal\");\n  }\n\n  private async activate(model: Scale): Promise<void> {\n    this.logger.debug(\"activate\");\n    this.model = model;\n    this.configureValidationRules();\n  }\n\n  configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"rawValuesRange\").displayName(\"main.admin.pages.scales.raw_score\").required().matches(/^\\d+-\\d+$/)\n      .ensure(\"equivalentValue\").displayName(\"main.admin.pages.scales.equivalent_score\").required().matches(/^[1-9][0-9]?$|^100$/)\n      .on(this.model);\n  }\n\n  public async submit(): Promise<void> {\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  public async save(): Promise<any> {\n    return await this.dialogController.ok();\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../models/catalogs/genreViewEngineHooks></require> <require from=../../../../models/catalogs/educationalLevelViewEngineHooks></require> <require from=../../../../models/catalogs/ageRangeViewEngineHooks></require> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'main.admin.pages.scales.title' & t}</h2> <form> <div class=form-group> <label for=genre>${'main.catalog.genre.title' & t}</label> <select id=genre value.bind=model.genre class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of Genres\\\" model.bind=Genre[option]>${'main.catalog.genre.' + option & t} </option> </select> </div> <div class=form-group> <label for=educationalLevel>${'main.catalog.educational_level.title' & t}</label> <select id=educationalLevel value.bind=model.educationalLevel class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of EducationalLevels\\\" model.bind=EducationalLevel[option]>${'main.catalog.educational_level.' + option & t} </option> </select> </div> <div class=form-group> <label for=ageRange>${'main.catalog.age_range.title' & t}</label> <select id=ageRange value.bind=model.ageRange class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of AgeRanges\\\" model.bind=AgeRange[option]>${'main.catalog.age_range.' + option & t} </option> </select> </div> <div class=form-group> <input attach-focus=true type=text value.bind=\\\"model.rawValuesRange & validate\\\" class=form-control id=rawScore t=[placeholder]main.admin.pages.scales.raw_score> </div> <div class=form-group> <input type=text value.bind=\\\"model.equivalentValue & validate\\\" class=form-control id=equivalentScore t=[placeholder]main.admin.pages.scales.equivalent_score> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel() t=commands.cancel>Cancel</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","export class ScaleQuestionaries {\n\n}\n","module.exports = \"<template> <require from=../questionaries/questionary-kanban></require> <h2> ${'main.admin.pages.scales.title' & t} </h2> <p> ${'main.admin.pages.scales.questionary_select' & t} </p> <hr/> <questionary-kanban route-name=scale-thematic-group-list-child-router> </questionary-kanban> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class ScaleQuestionaryListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"ScaleQuestionaryListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./scale-questionaries\"),\n        name: \"select-questionary\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.admin.pages.thematic_groups.questionary_select_title\"),\n      },\n\n      {\n        route: \"questionary/:questionaryId\",\n        moduleId: PLATFORM.moduleName(\"./scale-thematic-group-list-child-router\"),\n        name: \"scale-thematic-group-list-child-router\",\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.thematic_groups.title\"),\n      },\n      \n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class ThematicGroupListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"ThematicGroupListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./scale-thematic-groups\"),\n        name: \"select-thematic-groups\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.admin.pages.thematic_groups.title\"),\n      },\n\n      {\n        route: \"thematic-group/:thematicGroupId\",\n        moduleId: PLATFORM.moduleName(\"./scale-thematic-variable-list-child-router\"),\n        name: \"scale-thematic-variable-list-child-router\",\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.thematic_groups.thematic_variables.title\"),\n      },\n      \n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\n@autoinject\nexport class ScaleThematicGroups {\n\n  private logger: Logger; \n  private questionaryId: number; \n\n  constructor() {\n    this.logger = LogManager.getLogger(\"ScaleThematicGroups\");\n  }\n\n  private async activate(params: any): Promise<void> {\n    this.logger.info(\"activated\");\n\n    if (!isNaN(params.questionaryId)) {\n      this.questionaryId = +params.questionaryId;\n    }\n\n  }\n\n}\n","module.exports = \"<template> <require from=../thematic-groups/thematic-group-list></require> <h2> ${'main.admin.pages.scales.title' & t} </h2> <p> ${'main.admin.pages.scales.thematic_group_select' & t} </p> <hr/> <thematic-group-list is-attached=true questionary-id.bind=questionaryId route-name=scale-thematic-variable-list-child-router> </thematic-group-list> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class ThematicVariableListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"ThematicVariableListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./scale-thematic-variables\"),\n        name: \"select-thematic-variables\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.admin.pages.thematic_groups.thematic_variables.title\"),\n      },\n\n      {\n        route: \"thematic-variable/:thematicVariableId\",\n        moduleId: PLATFORM.moduleName(\"./scale-list-child-router\"),\n        name: \"scale-list-child-router\",\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.scales.scale\"),\n      },\n      \n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\n@autoinject\nexport class ScaleThematicVariables {\n\n  private logger: Logger; \n  private thematicGroupId: number; \n\n  constructor() {\n    this.logger = LogManager.getLogger(\"ScaleThematicGroups\");\n  }\n\n  private async activate(params: any): Promise<void> {\n    this.logger.info(\"activated\");\n\n    if (!isNaN(params.thematicGroupId)) {\n      this.thematicGroupId = +params.thematicGroupId;\n    }\n\n  }\n\n}\n","module.exports = \"<template> <require from=../thematic-groups/thematic-variables/thematic-variable-list></require> <h2> ${'main.admin.pages.scales.title' & t} </h2> <p> ${'main.admin.pages.scales.thematic_variable_select' & t} </p> <hr/> <thematic-variable-list is-attached=true thematic-group-id.bind=thematicGroupId route-name=scale-list-child-router> </thematic-variable-list> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { DialogService } from 'aurelia-dialog';\nimport { Router, RouteConfig } from 'aurelia-router';\nimport { Notification } from \"common/services/notification\";\nimport { BulkTalentsExportService } from \"main/admin/services/talents/bulk-talents-export-service\";\n@autoinject\nexport class BulkTalentsExportList {\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.bulkTalentsExportService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n  constructor(\n    private router: Router,\n    private bulkTalentsExportService: BulkTalentsExportService,\n    private notification: Notification,\n    private dialogService: DialogService) {\n\n    this.logger = LogManager.getLogger(\"BulkTalentsExportList\");\n  }\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.params = params;\n  }\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n      this.companyId = +this.params.companyId;\n\n      this.bulkTalentsExportService.client.currentCompanyId = this.companyId;\n\n      return await this.databind();\n\n    }\n  }\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async getPrivateMedia(id: number) {\n    try {\n      let privateUrl = await this.bulkTalentsExportService.getMediaByBulkActivationId(id);\n      if (privateUrl != null) {\n        return this.router.navigate(privateUrl);\n      }\n    } catch (error){\n      this.notification.error(error);\n    }\n  }\n}\n","module.exports = \"<template> <require from=../../../../models/talents/exportTransactionTypeViewEngineHooks></require> <require from=../../../../models/talents/transactionTypeViewEngineHooks></require> <require from=./talent-export-card></require> <div if.bind=!companyId> <h2>${'main.admin.pages.talents.title' & t}</h2> <p> ${'main.admin.pages.talents.notification_new_company' & t} </p> </div> <div if.bind=companyId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2> ${'main.test.pages.people.export_results.info.title' & t} </h2> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.test.pages.people.export_results.description' & t} </p> </div> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=col-2> <ux-datatable-info parameters.bind=parameters t=[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-2 col-12\\\" if.bind=\\\"item.exportTransactionTypeId == ExportTransactionType\\\"> <label class=d-block> <small class=text-muted>${'main.talents.pages.export_talents.tittle' & t}</small> </label> ${item.exportTransactionTypeId} </div> <div class=\\\"col-md-2 col-12\\\" if.bind=\\\"item.exportTransactionTypeId != ExportTransactionType\\\"> <label class=d-block> <small class=text-muted>${'main.talents.pages.export_talents.tittle' & t}</small> </label> ${'main.admin.pages.talents.exportTransactionType.' + ExportTransactionType[item.exportTransactionTypeId] & t} </div> <div class=\\\"col-md-2 col-12\\\"> <label class=d-block> <small class=text-muted> ${'main.test.pages.people.export_results.created_on' & t} </small> </label> ${item.createdOn | dateTimeFormat} </div> <div class=\\\"col-md-2 col-12 text-truncate\\\"> <label class=d-block> <small class=text-muted> ${'main.testperson.pages.person.bulk_results_total_results' & t} </small> </label> <span title=${item.totalResults}>${item.totalResults}</span> </div> <div class=\\\"col-md-5 col-12\\\" if.bind=\\\"item.transactionTypeId != TransactionType\\\"> <label class=d-block> <small class=text-muted>${'main.admin.pages.talents.transactionType.title' & t}</small> </label> <p if.bind=\\\"item.transactionTypeId > 0\\\"> ${'main.admin.pages.talents.transactionType.' + TransactionType[item.transactionTypeId] & t} </p> </div> <div class=\\\"col-md-1 col-12\\\"> <a class=\\\"btn btn-link\\\" href=# if.bind=\\\"item.logFileUrl.indexOf('no-image') < 0\\\" title=\\\"${'main.test.pages.people.resume' & t}\\\" click.delegate=getPrivateMedia(item.id)> <i class=material-icons style=font-size:x-large>cloud_download</i> </a> </div> </div> </li> </ul> </div> </div> </div> </div> </div> </template> \";","import { Notification } from 'common/services/notification';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { WalletService } from 'main/admin/services/talents/wallet-service';\n\n@autoinject()\nexport class HasLowBalanceModal {\n\n  private talents: number;\n  private companyId: number;\n  private logger: Logger;\n\n  constructor(\n    private dialogController: DialogController,\n    private notification: Notification,\n    private walletService: WalletService) {\n\n    this.logger = LogManager.getLogger(\"HasLowBalanceModal\");\n    \n  }\n\n  public async activate(model: { talents: number, companyId: number }): Promise<any> {\n    this.talents = model.talents;\n    this.companyId = model.companyId;\n  }\n\n  public async hasSeenLowBalanceMessage(): Promise<void> {\n    return await this.walletService.hasSeenLowBalanceMessage(this.companyId)\n      .then(() => {\n        this.dialogController.ok();\n      })\n  }\n\n\n\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> </div> </div> <h2 class=mb-3> ${'main.test_reports.pages.reports.low_balance.title' & t} </h2> <div class=\\\"row mb-3\\\"> <div class=col-12> <p t=main.test_reports.pages.reports.low_balance.information t-params.bind=\\\"{talentsQuantity: talents}\\\"> Low balance information </p> </div> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=hasSeenLowBalanceMessage()>${'commands.accept' & t}</button> </div> </ux-dialog-body> </ux-dialog> </template> \";","import { TransactionService } from '../../services/talents/transaction-service';\nimport { Transaction } from 'models/talents/transaction';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { TalentModal } from \"./talent-modal\";\n\nimport { Notification } from \"common/services/notification\";\nimport { EventAggregator } from 'aurelia-event-aggregator';\nimport { TalentAssignmentMessage } from 'messages/talentAssigmentMessage';\n\n\n@autoinject()\nexport class TalentAssignmentCard {\n\n  private logger: Logger;\n\n  constructor(\n    private router: Router,\n    private dialogService: DialogService,\n    private transactionService: TransactionService,\n    private notification: Notification,\n    private ea: EventAggregator,) {\n\n    this.logger = LogManager.getLogger(\"TalentAssignmentCard\");\n  }\n\n  private async create(): Promise<any> {\n    let item: Transaction = new Transaction();\n    return await this.dialogService.open({\n      viewModel: TalentModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        // this.logger.debug(\"response.output\", response.output);\n        return await this.transactionService.assign(item)\n          .then(async() => {                       \n\n            this.ea.publish(new TalentAssignmentMessage());\n\n            this.notification.success(\"notifications.item_added\");\n            // return await this.router.navigateToRoute(\"talent-main\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n \n}\n","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.talents.assign.title' & t}</h5> <p t=[html]main.admin.pages.talents.assign.info>Create new core group</p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create()>${'commands.assign' & t}</button> </div> </div> </template> \";","import { TransactionService } from '../../services/talents/transaction-service';\nimport { autoinject, bindable, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { RouteConfig } from \"aurelia-router\";\nimport { Notification } from \"common/services/notification\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { User } from \"models/security/user\";\nimport { Company } from \"models/companies/company\";\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\nimport { WalletService } from 'main/admin/services/talents/wallet-service';\n\ninterface SearchParams {\n  EndDate: Date,\n  UserId: number\n}\n\n@autoinject()\nexport class TalentBalancesList {\n\n  private logger: Logger;\n  @bindable\n  private params: any = {};\n  public total_balance: number;\n  public companyId: number;\n  private company: Company;\n  private users: User[];\n\n\n  @bindable\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private state: State;\n  private isLoaded: boolean = false;\n\n  constructor(\n    private store: StoreService,\n    private transactionService: TransactionService,\n    private walletService: WalletService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"TalentBalancesList\");\n    this.total_balance = 0;\n\n    this.state = this.store.state;\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");    \n    return await this.walletService.balancesList(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.total_balance = 0;\n        response.data.forEach(x => this.total_balance += x.talent);\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    //this.params = params;\n    var today = new Date();\n    this.parameters.search = <SearchParams>{ EndDate: today };\n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n  }\n\n  private async bind(): Promise<any> {\n\n    try {\n\n      if (!isNaN(this.params.companyId)) {\n\n        this.companyId = +this.params.companyId;\n\n        if (this.companyId) {\n\n          this.transactionService.client.currentCompanyId = this.companyId;\n          this.walletService.client.currentCompanyId = this.companyId;\n\n          this.company = this.state.companies.find(x => x.id == this.companyId);\n\n          this.users = await this.transactionService.getUserByCompany();\n\n          this.isLoaded = true;\n          return await this.databind();\n        }\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n}\n","module.exports = \"<template> <require from=./talent-assignment-card></require> <require from=./talent-remove-card.html></require> <require from=./talent-transfer-card.html></require> <require from=./talent-plans-card></require> <require from=./talent-export-card></require> <require from=../../../../models/talents/exportTransactionTypeViewEngineHooks></require> <div if.bind=!companyId> <h2>${'main.admin.pages.talents.title' & t}</h2> <p> ${'main.admin.pages.talents.notification_new_company' & t} </p> </div> <div if.bind=companyId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${company.name} / ${'main.admin.pages.talents.balances.title' & t} <talent-plans-card></talent-plans-card> </h2> <p> ${'main.admin.pages.talents.balances_info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-4> <div class=form-group> <label>${'main.admin.pages.talents.user' & t}</label> <select class=form-control value.bind=parameters.search.UserId change.delegate=\\\"databind() & debounce:100\\\"> <option value=0 selected=selected t=forms.select_option>select an item</option> <option value=\\\"\\\" t=main.admin.pages.talents.bag>select an item</option> <option repeat.for=\\\"option of users\\\" model.bind=option.id>${option.fullName}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-6 scope=col>${'main.admin.pages.talents.user' & t}</th> <th class=col-md-6 scope=col>${'main.admin.pages.talents.talent' & t}</th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-6 text-truncate\\\"><span title=${item.user.fullName}>${item.user.fullName}</span></td> <td class=col-md-6>${item.talent}</td> </tr> <tr class=d-flex> <td class=\\\"col-md-6 text-right\\\"> <label for=current_balance t=main.admin.pages.talents.remove.total_balance></label> </td> <td class=col-md-6> <label for=total_balance> <strong>${total_balance}</strong> </label> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\"> <div class=col-12> <talent-assignment-card global-permission-show=\\\"can: TalentAsign\\\"></talent-assignment-card> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <talent-remove-card global-permission-show=\\\"can: TalentRemove\\\"></talent-remove-card> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <talent-transfer-card global-permission-show=\\\"can: TalentTransfer\\\"></talent-transfer-card> </div> </div> <talent-export-card parameters.bind=parameters export-transaction-type-id.bind=ExportTransactionType.Balance></talent-export-card> </div> </div> </div> </template> \";","import { TransactionService } from '../../services/talents/transaction-service';\nimport { autoinject, bindable, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { RouteConfig } from \"aurelia-router\";\nimport { Notification } from \"common/services/notification\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { User } from \"models/security/user\";\nimport { Company } from \"models/companies/company\";\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\nimport { normalizeSearchDateRange } from 'common/utils/utility';\n\ninterface SearchParams {\n  StartDate: Date,\n  EndDate: Date,\n  UserId: number,\n  TransactionId: number\n}\n\n@autoinject()\nexport class TalentConsolidatedList {\n\n  private logger: Logger;\n  @bindable\n  private params: any = {};\n  private users: User[];\n  public companyId: number;\n  private company: Company;\n\n\n  @bindable\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n\n  private state: State;\n  private isLoaded: boolean = false;\n\n  constructor(\n    private store: StoreService,\n    private transactionService: TransactionService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"TalentConsolidatedList\");\n\n    this.state = this.store.state;\n\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    normalizeSearchDateRange(this.parameters.search);\n    return await this.transactionService.consolidatedList(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    //this.params = params;\n    var today = new Date();\n    var startDate = new Date();\n    this.parameters.search = <SearchParams>{ StartDate: new Date(startDate.setDate(startDate.getDate() - 30)), EndDate: today };\n\n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n\n      this.companyId = +this.params.companyId;\n\n      if (this.companyId) {\n\n        this.transactionService.client.currentCompanyId = this.companyId;\n\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n\n        this.users = await this.transactionService.getUserByCompany();\n\n        this.isLoaded = true;\n        return await this.databind();\n      }\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  // private async getMore(scrollContext: any): Promise<void> {\n  //   return await this.uxDatatable.getMoreItems(scrollContext);\n  // }\n\n}\n","module.exports = \"<template> <require from=../../../../models/talents/transactionTypeViewEngineHooks></require> <require from=./talent-assignment-card></require> <require from=./talent-remove-card.html></require> <require from=./talent-transfer-card.html></require> <require from=./talent-plans-card></require> <require from=./talent-export-card></require> <require from=../../../../models/talents/exportTransactionTypeViewEngineHooks></require> <div if.bind=!companyId> <h2>${'main.admin.pages.talents.title' & t}</h2> <p> ${'main.admin.pages.talents.notification_new_company' & t} </p> </div> <div if.bind=companyId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${company.name} / ${'main.admin.pages.talents.consolidated.title' & t} <talent-plans-card></talent-plans-card> </h2> <p> ${'main.admin.pages.talents.consolidated_info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-4> <div class=form-group> <label for=startDate t=main.admin.pages.talents.dateStart>Start_Date</label> <ux-date-picker value.bind=parameters.search.StartDate change.delegate=\\\"databind() & debounce:100\\\" id=startDate></ux-date-picker> </div> </div> <div class=col-4> <div class=form-group> <label for=endDate t=main.admin.pages.talents.dateEnd>Start_Date</label> <ux-date-picker value.bind=parameters.search.EndDate change.delegate=\\\"databind() & debounce:100\\\" id=endDate></ux-date-picker> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-4> <div class=form-group> <label>${'main.admin.pages.talents.user' & t}</label> <select class=form-control value.bind=parameters.search.UserId change.delegate=\\\"databind() & debounce:100\\\"> <option value=0 selected=selected t=forms.select_option>select an item</option> <option value=\\\"\\\" t=main.admin.pages.talents.bag>select an item</option> <option repeat.for=\\\"option of users\\\" model.bind=option.id>${option.fullName}</option> </select> </div> </div> <div class=col-4> <div class=form-group> <label>${'main.admin.pages.talents.transactionType.title' & t}</label> <select value.bind=parameters.search.TransactionId class=form-control change.delegate=\\\"databind() & debounce:100\\\"> <option t=forms.select_option value=0></option> <option repeat.for=\\\"option of TransactionTypes\\\" model.bind=TransactionType[option]> ${'main.admin.pages.talents.transactionType.' + option & t}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <tr class=d-flex> <th class=col-md-3 scope=col>${'main.admin.pages.talents.transactionType.title' & t}</th> <th class=col-md-2 scope=col>${'main.admin.pages.talents.amount' & t}</th> <th class=col-md-1 scope=col>${'main.admin.pages.talents.debit' & t}</th> <th class=col-md-1 scope=col>${'main.admin.pages.talents.credit' & t}</th> <th class=col-md-5 scope=col>${'main.admin.pages.talents.description' & t}</th> </tr> <tr class=d-flex repeat.for=\\\"item of parameters.tableData\\\"> <td class=col-md-3>${'main.admin.pages.talents.transactionType.' + TransactionType[item.transactionTypeId] & t}</td> <td class=col-md-2>${item.amount}</td> <td class=col-md-1>${item.debit}</td> <td class=col-md-1>${item.credit}</td> <td class=\\\"col-md-5 text-truncate\\\"><span title=${item.description}>${item.description}</span></td> </tr> </table> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\"> <div class=col-12> <talent-assignment-card global-permission-show=\\\"can: TalentAsign\\\"></talent-assignment-card> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <talent-remove-card global-permission-show=\\\"can: TalentRemove\\\"></talent-remove-card> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <talent-transfer-card global-permission-show=\\\"can: TalentTransfer\\\"></talent-transfer-card> </div> </div> <talent-export-card parameters.bind=parameters export-transaction-type-id.bind=ExportTransactionType.Consolidated></talent-export-card> </div> </div> </div> </template> \";","\nimport { autoinject, bindable, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { UxDatatableParameters } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { BulkTalentsExport } from \"models/talents/bulkTalentsExport\";\nimport { ExportTransactionType } from \"models/talents/export-transaction-type\";\nimport { BulkTalentsExportService } from \"main/admin/services/talents/bulk-talents-export-service\";\nimport { RouteConfig, Router } from \"aurelia-router\";\nimport { TalentExportConfirmation } from \"main/components/talent-export-confirmation\";\n\n\n@autoinject()\nexport class TalentExportCard {\n\n  private logger: Logger;\n  public companyId: number;\n  @bindable\n  private parameters = new UxDatatableParameters();\n  @bindable\n  private exportTransactionTypeId : number = 0;\n  private model : BulkTalentsExport = new BulkTalentsExport();\n\n  constructor(\n    private dialogService: DialogService,\n    private router: Router,\n    private bulkTalentsExportService : BulkTalentsExportService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"TalentExportCard\");\n  }\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.logger.debug(\"activate\");\n  }\n\n  private async create(totalResults: number): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: TalentExportConfirmation,\n      model: totalResults\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        try\n        {\n          if (this.parameters.totalRecords > 1000){\n            this.notification.warning(\"main.test.pages.people.errors.total_records\");\n          }\n          else if(this.parameters.totalRecords == 0){\n            this.notification.warning(\"main.talents.pages.export_talents.zero.total_records\");\n          }\n          else\n          {\n            this.model.exportTransactionTypeId = this.exportTransactionTypeId;\n            this.model.transactionTypeId = this.parameters.search.TransactionId;\n            if(this.exportTransactionTypeId==(ExportTransactionType.Transfers))\n            this.model.transactionTypeId = this.exportTransactionTypeId;\n            this.model.startDate = this.parameters.search.StartDate;\n            this.model.endDate = this.parameters.search.EndDate;\n            this.model.totalResults = this.parameters.totalRecords;\n            this.model.userId = this.parameters.search.UserId;\n            this.model = await this.bulkTalentsExportService.create(this.model);\n            this.notification.success(\"notifications.item_added\");\n            return await this.router.navigateToRoute(\"bulk-talents-export-list\");\n          }\n          \n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n    });\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\" global-permission-enable=\\\"can: TestPersonBulkResultsExportCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.plans.test_plan_items.export_results_card.title' & t}</h5> <p t=[html]main.admin.pages.export_talents.create_card_info> Create new talents export </p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create(parameters.totalRecords)>${'main.admin.pages.plans.test_plan_items.export_results_card.title' & t}</button> </div> </div> </div> </div> </template>\";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class TalentListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"TalentListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: [\"\"],\n        moduleId: PLATFORM.moduleName(\"./talent-main\"),\n        nav: true,\n        name: \"talent-main\",     \n        title: this.i18n.tr(\"main.admin.pages.talents.record.title\"),   \n      },\n\n  /*  {\n        route: \":talentId\",\n        moduleId: PLATFORM.moduleName(\"./talent-child-router\"),\n        name: \"talent-child-router\",        \n      },   */  \n      \n      {\n        route: \"transfer\",\n        moduleId: PLATFORM.moduleName(\"./talent-transfer-list\"),\n        nav: true,\n        name: \"talent-transfer-list\",        \n        title: this.i18n.tr(\"main.admin.pages.talents.transfer.title\"),\n      },\n      \n      {\n        route: \"balances\",\n        moduleId: PLATFORM.moduleName(\"./talent-balances-list\"),\n        name: \"talent-balances-list\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.talents.balances.title\"),\n      },\n      {\n        route: \"consolidated\",\n        moduleId: PLATFORM.moduleName(\"./talent-consolidated-list\"),\n        name: \"talent-consolidated-list\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.talents.consolidated.title\"),\n      },\n      {\n        route: \"export\",\n        moduleId: PLATFORM.moduleName(\"./bulk-talents-export-list\"),\n        name: \"bulk-talents-export-list\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.plans.test_plan_items.export_results_card.title\")\n      },\n\n      {\n        route: \"talent-remove\",\n        moduleId: PLATFORM.moduleName(\"./talent-remove\"),\n        name: \"talent-remove\",\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.talents.remove.title\"),\n      },\n\n      {\n        route: \"talent-transfer\",\n        moduleId: PLATFORM.moduleName(\"./talent-transfer\"),\n        name: \"talent-transfer\",\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.talents.transfer.title\"),\n      }\n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <router-view></router-view> </template> \";","import { autoinject, LogManager, Disposable, bindable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { RouteConfig } from \"aurelia-router\";\nimport { Notification } from \"common/services/notification\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { User } from \"models/security/user\";\nimport { Company } from \"models/companies/company\";\nimport { TransactionService } from '../../services/talents/transaction-service';\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\nimport { EventAggregator } from 'aurelia-event-aggregator';\nimport { TalentAssignmentMessage } from 'messages/talentAssigmentMessage';\nimport { normalizeSearchDateRange } from 'common/utils/utility';\n\ninterface SearchParams {\n  StartDate: Date,\n  EndDate: Date,\n  UserId: number,\n  TransactionId: number\n}\n\n@autoinject()\nexport class TalentMain {\n\n  private logger: Logger;\n  @bindable\n  private params: any = {};\n  public companyId: number;\n  private company: Company;\n  private users: User[];\n  @bindable\n  private parameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private state: State;\n  private isLoaded: boolean = false;\n\n  private subscriptions: Disposable[] = [];\n\n  constructor(\n    private store: StoreService,\n    private transactionService: TransactionService,\n    private notification: Notification,\n    private ea: EventAggregator,\n  ) {\n\n    this.logger = LogManager.getLogger(\"TalentMain\");\n\n    this.state = this.store.state;\n\n    this.subscriptions.push(this.ea.subscribe(TalentAssignmentMessage, this.bind.bind(this)));\n\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    normalizeSearchDateRange(this.parameters.search);\n    return await this.transactionService.recordList(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n\n    this.logger.debug(\"activate\");\n\n    //this.params = params;\n\n\n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n\n  }\n\n  private async bind(): Promise<any> {\n\n    try {\n\n      if (!isNaN(this.params.companyId)) {\n\n        this.companyId = +this.params.companyId;\n\n        if (this.companyId) {\n\n          var today = new Date();\n          var startDate = new Date();\n          \n          this.parameters.search = <SearchParams>{ StartDate: new Date(startDate.setDate(startDate.getDate() - 30)), EndDate: today };\n\n          this.transactionService.client.currentCompanyId = this.companyId;\n\n          this.company = this.state.companies.find(x => x.id == this.companyId);\n\n          this.users = await this.transactionService.getUserByCompany();\n\n          this.isLoaded = true;\n\n          return await this.databind();\n        }\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async databind(): Promise<any> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n\n\n}\n","module.exports = \"<template> <require from=../../../../models/talents/transactionTypeViewEngineHooks></require> <require from=../../../../models/talents/exportTransactionTypeViewEngineHooks></require> <require from=./talent-assignment-card></require> <require from=./talent-remove-card.html></require> <require from=./talent-transfer-card.html></require> <require from=./talent-plans-card></require> <require from=./talent-export-card></require> <div if.bind=!companyId> <h2>${'main.admin.pages.talents.title' & t}</h2> <p> ${'main.admin.pages.talents.notification_new_company' & t} </p> </div> <div if.bind=companyId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${company.name} / ${'main.admin.pages.talents.record.title' & t} <talent-plans-card></talent-plans-card> </h2> <p> ${'main.admin.pages.talents.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-4> <div class=form-group> <label for=startDate t=main.admin.pages.talents.dateStart>Start_Date</label> <ux-date-picker value.bind=parameters.search.StartDate change.delegate=\\\"databind() & debounce:100\\\" id=startDate></ux-date-picker> </div> </div> <div class=col-4> <div class=form-group> <label for=endDate t=main.admin.pages.talents.dateEnd>Start_Date</label> <ux-date-picker value.bind=parameters.search.EndDate change.delegate=\\\"databind() & debounce:100\\\" id=endDate></ux-date-picker> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-4> <div class=form-group> <label>${'main.admin.pages.talents.user' & t}</label> <select class=form-control value.bind=parameters.search.UserId change.delegate=\\\"databind() & debounce:100\\\"> <option value=0 selected=selected t=forms.select_option>Select</option> <option value=\\\"\\\" t=main.admin.pages.talents.bag>General bag</option> <option repeat.for=\\\"option of users\\\" model.bind=option.id>${option.fullName}</option> </select> </div> </div> <div class=col-4> <div class=form-group> <label>${'main.admin.pages.talents.transactionType.title' & t}</label> <select value.bind=parameters.search.TransactionId class=form-control change.delegate=\\\"databind() & debounce:100\\\"> <option t=forms.select_option value=0></option> <option repeat.for=\\\"option of TransactionTypes\\\" model.bind=TransactionType[option]> ${'main.admin.pages.talents.transactionType.' + option & t}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-2 scope=col>${'main.admin.pages.talents.date' & t}</th> <th class=col-md-1 scope=col>${'main.admin.pages.talents.transactionType.title' & t}</th> <th class=col-md-1 scope=col>${'main.admin.pages.talents.talentsBefore' & t}</th> <th class=col-md-1 scope=col>${'main.admin.pages.talents.talentsAfter' & t}</th> <th class=col-md-2 scope=col>${'main.admin.pages.talents.user' & t}</th> <th class=col-md-1 scope=col>${'main.admin.pages.talents.debit' & t}</th> <th class=col-md-1 scope=col>${'main.admin.pages.talents.credit' & t}</th> <th class=col-md-3 scope=col>${'main.admin.pages.talents.observation' & t}</th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=col-md-2>${item.createdOn | dateTimeFormat} </td> <td class=col-md-1>${'main.admin.pages.talents.transactionType.' + TransactionType[item.transactionTypeId] & t}</td> <td class=col-md-1>${item.talentsBefore}</td> <td class=col-md-1>${item.talentsAfter}</td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.wallet.user.fullName}>${item.wallet.user.fullName}</span></td> <td class=col-md-1>${item.debit}</td> <td class=col-md-1>${item.credit}</td> <td class=\\\"col-md-3 text-truncate\\\"><span title=${item.observation}>${item.observation}</span></td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\"> <div class=col-12> <talent-assignment-card global-permission-show=\\\"can: TalentAsign\\\"></talent-assignment-card> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <talent-remove-card global-permission-show=\\\"can: TalentRemove\\\"></talent-remove-card> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <talent-transfer-card global-permission-show=\\\"can: TalentTransfer\\\"></talent-transfer-card> </div> </div> <talent-export-card parameters.bind=parameters export-transaction-type-id.bind=ExportTransactionType.Historical></talent-export-card> </div> </div> </div> </template> \";","import { User } from 'models/security/user';\nimport { TransactionService } from '../../services/talents/transaction-service';\nimport { Transaction } from 'models/talents/transaction';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\n\n@autoinject\nexport class TalentModal {\n\n  private logger: Logger;\n  private model: Transaction;\n  private validationController: ValidationController;\n  private users: User[];\n\n  constructor(\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory,\n    private transactionService: TransactionService,\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"TalentModal\");\n\n  }\n\n  public async bind(): Promise<any> {   \n    await this.transactionService.getUserByCompany().then(users => this.users = users);\n  }\n\n  public activate(model: Transaction): void {   \n    this.model = model;\n    this.configureValidationRules();    \n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"talentsAfter\").displayName(\"main.admin.pages.talents.talent\").matches(/^[0-9]*$/).required()\n      .ensure(\"userId\").displayName(\"main.admin.pages.talents.user\").required()   \n      .on(this.model);\n  }\n\n  public async submit(userId: number): Promise<void> {  \n    this.model.wallet.userId = userId;\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  public async save(): Promise<any> {\n    return await this.dialogController.ok();       \n  }  \n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h3>${'main.admin.pages.talents.talent' & t}</h3> <form> <div class=form-group> <label>${'main.admin.pages.talents.value' & t}</label> <input type=text class=form-control id=model.talentsAfter t=[placeholder]main.admin.pages.talents.value value.bind=\\\"model.talentsAfter & validate\\\"> </div> <div class=form-group> <label>${'main.admin.pages.talents.user' & t}</label> <select class=form-control value.bind=\\\"model.wallet.userId & validate\\\"> <option value=0 disabled=disabled selected=selected t=forms.select_option>select an item</option> <option value=\\\"\\\" t=main.admin.pages.talents.bag>select an item</option> <option repeat.for=\\\"option of users\\\" model.bind=option.id>${option.fullName}</option> </select> </div> <div class=form-group> <label>${'main.admin.pages.talents.observation' & t}</label> <textarea class=form-control id=model.observation t=[placeholder]main.admin.pages.talents.observation value.bind=\\\"model.observation & validate\\\" id=exampleFormControlTextarea1 rows=3></textarea> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit(model.wallet.userId)>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel() t=commands.cancel>Cancel</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { TalentPlanItemsModal } from \"./talent-test-plan-items-modal\";\n\n\n@autoinject()\nexport class TalentPlansCard {\n\n  private logger: Logger;\n  public companyId: number;\n\n  constructor(\n    private dialogService: DialogService) {\n\n    this.logger = LogManager.getLogger(\"TalentPlansCard\");\n  }\n\n  private async bind(params: any): Promise<any> {\n    if (!isNaN(params.companyId)) {\n      this.companyId = +params.companyId;\n    }\n  }\n\n  private async viewTestPlanItems(): Promise<void> {\n    this.logger.info(\"PlanDetailsPopup\");\n\n    return await this.dialogService.open({\n      viewModel: TalentPlanItemsModal,\n    }).whenClosed(async (response: DialogCloseResult) => null);\n  }\n\n}\n","module.exports = \"<template> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=viewTestPlanItems()>${'main.admin.pages.talents.plans' & t}</button> </template> \";","import { TransactionService } from '../../services/talents/transaction-service';\nimport { Wallet } from 'models/talents/wallet';\nimport { WalletService } from '../../services/talents/wallet-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { Notification } from \"common/services/notification\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Company } from \"models/companies/company\";\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\n\n\n@autoinject()\nexport class TalentRemove {\n\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n  private company: Company;\n  private validationController: ValidationController;\n  private model: Wallet[] = [];\n  public current_balance: number;\n  public remaining_balance: number;\n  public balance_removed: number;\n  public observationRemove: string;\n  public ban: boolean;\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private state: State;\n  private isLoaded: boolean = false;\n\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    // private coreCompanyService: CoreCompanyService,\n    private walletService: WalletService,\n    private transactionService: TransactionService,\n    // private dialogService: DialogService,\n    private validationControllerFactory: ValidationControllerFactory,\n    private notification: Notification) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n    this.logger = LogManager.getLogger(\"TalentRemove\");\n\n    this.state = this.store.state;\n\n\n    this.current_balance = 0;\n    this.remaining_balance = 0;\n    this.balance_removed = 0;\n    this.observationRemove = \"\";\n    this.ban = false;\n\n\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"amount\").displayName(\"main.admin.pages.talents.amount\").matches(/^[0-9]*$/).required()\n      .on(this.model);\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.walletService.balancesList(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.current_balance = 0;\n        this.remaining_balance = 0;\n        this.balance_removed = 0;\n        this.ban = false;\n        response.data.forEach(x => this.current_balance += x.talent);\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    //this.params = params;\n\n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n  }\n\n  private async getSum(total, num) {\n    return total + num;\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n\n      this.companyId = +this.params.companyId;\n\n      if (this.companyId) {\n\n        this.walletService.client.currentCompanyId = this.companyId;\n        this.transactionService.client.currentCompanyId = this.companyId;\n\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n\n        this.isLoaded = true;\n        return await this.databind();\n      }\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  public async calcular(item: Wallet): Promise<void> {\n\n    if (item.canDiscountGeneralWallet) {\n      if (item.talent >= item.amount)\n        this.ban = true;\n      else this.ban = false;\n\n      this.balance_removed = 0;\n      this.parameters.tableData.forEach(x => this.balance_removed += parseInt((x.amount == '' || x.amount == null) ? \"0\" : x.amount));\n      this.remaining_balance = this.current_balance - this.balance_removed;\n\n    }\n  }\n\n  public async filterLockout(item: Wallet): Promise<void> {\n\n    if (!item.canDiscountGeneralWallet) {\n      item.amount = 0;\n      this.balance_removed = 0;\n      item.observation = \"\";\n      this.parameters.tableData.forEach(x => this.balance_removed += parseInt((x.amount == '' || x.amount == null) ? \"0\" : x.amount));\n      this.remaining_balance = this.current_balance - this.balance_removed;\n\n    }\n  }\n\n  get canSave() {\n    return !this.transactionService.client.isRequesting;\n  }\n\n  public async save(): Promise<any> {\n    var list = [];\n    var obs = this.observationRemove;\n    this.parameters.tableData.forEach(function (item: Wallet) {\n      if (item.canDiscountGeneralWallet) {\n        item.observation = obs;\n        list.push(item);\n      }\n    });\n\n    return await this.transactionService.remove(list)\n      .then(async () => {\n        this.notification.success(\"notifications.item_edited\");\n\n        return await this.router.navigateToRoute(\"talent-main\");\n\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n}\n","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.talents.remove.title' & t}</h5> <p t=[html]main.admin.pages.talents.remove.info>Create</p> <a class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: TalentRemove\\\" route-href=\\\"route: talent-remove\\\">${'commands.remove' & t}</a> </div> </div> </template> \";","module.exports = \"<template> <require from=./talent-assignment-card></require> <require from=./talent-remove-card.html></require> <require from=./talent-transfer-card.html></require> <div if.bind=!companyId> <h2>${'main.admin.pages.talents.title' & t}</h2> <p> ${'main.admin.pages.talents.notification_new_company' & t} </p> </div> <div if.bind=companyId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${company.name} / ${'main.admin.pages.talents.remove.title' & t}</h2> <p> ${'main.admin.pages.talents.remove_info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <form> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-1 scope=col></th> <th class=col-md-5 scope=col>${'main.admin.pages.talents.user' & t}</th> <th class=col-md-1 scope=col>${'main.admin.pages.talents.talent' & t}</th> <th class=col-md-5 scope=col>${'main.admin.pages.talents.amount' & t}</th> </tr> </thead> <tbody> <tr class=d-flex repeat.for=\\\"item of parameters.tableData\\\"> <td class=col-md-1> <div class=\\\"custom-control custom-checkbox\\\"> <input class=custom-control-input type=checkbox checked.bind=item.canDiscountGeneralWallet id=to_remove_${$index} model.bind=item.canDiscountGeneralWallet change.delegate=filterLockout(item)> <label class=custom-control-label for=to_remove_${$index}>&nbsp;</label> </div> </td> <td class=\\\"col-md-5 text-truncate\\\"><span title=${item.user.fullName}>${item.user.fullName}</span></td> <td class=col-md-1>${item.talent}</td> <td class=col-md-5> <input type=number disabled.bind=!item.canDiscountGeneralWallet value.bind=\\\"item.amount & validate\\\" if.bind=item.canDiscountGeneralWallet model.bind=item.amount max.bind=item.talent min=1 required change.delegate=calcular(item) class=form-control id=item.amount t=[placeholder]main.admin.pages.talents.amount> </td> </tr> <tr class=d-flex> <td class=col-md-6 colspan=2> <div class=form-group> <label for=comments t=main.admin.pages.talents.observation>comments</label> <textarea value.bind=observationRemove class=form-control id=comments t=[placeholder]main.admin.pages.talents.observation>\\n                        </textarea> </div> </td> <td class=col-md-3> <div class=form-group> <label for=current_balance t=main.admin.pages.talents.remove.current_balance></label> </div> <div class=form-group> <label for=comments t=main.admin.pages.talents.remove.balance_removed></label> </div> <div class=form-group> <label for=comments t=main.admin.pages.talents.remove.remaining_balance></label> </div> </td> <td class=col-md-3> <div class=form-group> <label for=current_balance> <strong>${current_balance}</strong> </label> </div> <div class=form-group> <label class=control-label> <strong>${balance_removed}</strong> </label> </div> <div class=form-group> <label for=remaining_balance> <strong>${remaining_balance}</strong> </label> </div> </td> </tr> </tbody> </table> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=save() if.bind=\\\"balance_removed>0 && ban\\\">${'commands.save' & t} </button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: talent-main;\\\" t=commands.cancel>Cancel</a> </div> </form> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\"> <div class=col-12> <talent-assignment-card global-permission-show=\\\"can: TalentAsign\\\"></talent-assignment-card> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <talent-transfer-card global-permission-show=\\\"can: TalentTransfer\\\"></talent-transfer-card> </div> </div> </div> </div> </div> </template> \";","import { Notification } from \"common/services/notification\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult, DialogCancelableOperationResult, DialogController } from \"aurelia-dialog\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { TalentPlanService } from \"main/admin/services/talents/talent-plan-service\";\n\n@autoinject()\nexport class TalentPlanItemsModal {\n\n  private logger: Logger;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  constructor(\n    private talentPlanService: TalentPlanService,\n    private dialogController: DialogController,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"TalentPlanItemsModal\");\n  }\n\n  public async activate(): Promise<void> {\n\n\n  }\n\n  public async bind(): Promise<void> {\n    this.logger.info(\"databind\");\n\n    try {\n\n      let response = await this.talentPlanService.getTestPlanItemsByPlanId(this.parameters)\n\n      this.parameters.tableData = response.data;\n      this.parameters.totalRecords = response.totalRecords;\n\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n\n  }\n\n  private refresh = async (): Promise<UxDatatableResponse> => {\n    return await this.talentPlanService.getTestPlanItemsByPlanId(this.parameters);\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../models/plans/testPlanItemTypeViewEngineHooks></require> <require from=../../../../models/plans/spendModeViewEngineHooks></require> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2> <h2>${'main.admin.pages.plans.test_plan_items.title' & t}</h2> </h2> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <tr> <th scope=col t=main.admin.pages.plans.test_plan_items.name>Name</th> <th scope=col t=main.admin.pages.plans.test_plan_items.item_type>Type</th> <th scope=col t=main.admin.pages.plans.test_plan_items.spend_mode>Spend mode</th> <th scope=col t=main.admin.pages.plans.test_plan_items.talentsPrice>Talents</th> </tr> <tr virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td if.bind=item.questionaryId>${item.questionaryName}</td> <td if.bind=item.reportTemplateId>${item.reportTemplateName & t}</td> <td if.bind=item.sheetId>${item.sheetName & t}</td> <td>${'main.admin.pages.plans.test_plan_items.test_plan_item_types.' + TestPlanItemType[item.testPlanItemType] & t}</td> <td if.bind=\\\"item.questionaryId || item.reportTemplateId\\\"> ${'main.admin.pages.plans.test_plan_items.spend_modes.' + SpendMode[item.spendMode] & t}</td> <td if.bind=item.sheetId>&nbsp;</td> <td>${item.talentsPrice}</td> </tr> </table> </div> </div> <div class=\\\"row mb-3 text-rigth\\\"> <div class=col-12> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.ok' & t}</button> </div> </div> </ux-dialog-body> </ux-dialog> </template> \";","import { Transaction } from 'models/talents/transaction';\nimport { TransactionService } from '../../services/talents/transaction-service';\nimport { Wallet } from 'models/talents/wallet';\nimport { WalletService } from '../../services/talents/wallet-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\n\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\n// import { DialogService } from \"aurelia-dialog\";\n\nimport { Notification } from \"common/services/notification\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\n\nimport { Company } from \"models/companies/company\";\n// import { CoreCompanyService } from '../../services/companies/core-company-service';\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\n\n\n@autoinject()\nexport class TalentTransfer {\n\n  private logger: Logger;\n  private params: any = {};\n  private model: Wallet[] = [];\n  public companyId: number;\n  private company: Company;\n  private validationController: ValidationController;\n  public transfer_balance: number;\n\n  public observationRemove: string;\n\n  private wallets: Wallet[];\n  private parameters: Wallet[];\n  private tempWallet: Wallet[];\n\n  public selectWallet: number;\n  public balance_user: number;\n\n  private state: State;\n  private isLoaded: boolean = false;\n\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private transactionService: TransactionService,\n    private walletService: WalletService,\n    private validationControllerFactory: ValidationControllerFactory,\n    private notification: Notification) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n    this.logger = LogManager.getLogger(\"TalentTransfer\");\n    this.transfer_balance = 0;\n    this.observationRemove = \"\";\n    this.selectWallet = null;\n    this.balance_user = 0;\n\n    this.state = this.store.state;\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"requiredLength\").displayName(\"main.admin.pages.companies.password_policy.requiredLength\").matches(/^[0-9]*$/).required()\n      .ensure(\"lockoutMaxFailedAccessAttempts\").displayName(\"main.admin.pages.companies.password_policy.lockoutMaxFailedAccessAttempts\").matches(/^[0-9]*$/).required()\n\n      .on(this.model);\n  }\n\n  public async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n  }\n\n  public async bind(): Promise<any> {\n\n    if (!isNaN(this.params.companyId)) {\n\n      this.companyId = +this.params.companyId;\n\n      if (this.companyId) {\n\n        this.transactionService.client.currentCompanyId = this.companyId;\n\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n\n        this.isLoaded = true;\n\n        try {\n          let wallets: Wallet[] = await this.walletService.getAll();\n          this.wallets = wallets.filter(x => x.id > 0);\n          this.parameters = wallets;\n          this.tempWallet = wallets;\n        } catch (error) {\n          this.notification.error(error);\n        }\n      }\n    }\n  }\n\n  public async calcular(item: Wallet): Promise<void> {\n    if (item.canDiscountGeneralWallet) {\n      this.transfer_balance = 0;\n      this.parameters.forEach(x => this.transfer_balance += parseInt((x.amount.toString() == '' || x.amount.toString() == null) ? \"0\" : x.amount.toString()));\n    }\n  }\n\n  public async filterUser(item: number): Promise<void> {\n    this.parameters = this.tempWallet.filter(x => x.id != item);\n    this.parameters.forEach(x => x.amount = 0);\n    this.parameters.forEach(x => x.canDiscountGeneralWallet = false);\n    this.transfer_balance = 0;\n    this.balance_user = ((item == 0) ? 0 : this.wallets.find(x => x.id == item).talent);\n  }\n\n  public async filterLockout(item: Wallet): Promise<void> {\n    if (!item.canDiscountGeneralWallet) {\n      this.transfer_balance = 0;\n      this.parameters.forEach(x => this.transfer_balance += parseInt((x.amount.toString() == '' || x.amount.toString() == null) ? \"0\" : x.amount.toString()));\n    }\n  }\n\n  get canSave() {\n    return !this.transactionService.client.isRequesting;\n  }\n\n  public async save(): Promise<any> {\n    var list = [];\n    var tran = new Transaction();\n    var obs = this.observationRemove;\n    var sourceUserId = this.wallets.find(x => x.id == this.selectWallet).user.id;\n    this.parameters.forEach(function (item: Wallet) {\n      if (item.canDiscountGeneralWallet) {\n        tran = new Transaction();\n        tran.wallet = item;\n        tran.sourceUserId = sourceUserId;\n        tran.targetUserId = item.user.id;\n        tran.observation = obs;\n        list.push(tran);\n      }\n    });\n\n    try {\n\n      await this.transactionService.transfer(list);\n\n      this.notification.success(\"notifications.item_edited\");\n\n      return await this.router.navigateToRoute(\"talent-main\");\n\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n}\n","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.talents.transfer.title' & t}</h5> <p t=[html]main.admin.pages.talents.transfer.info>Create</p> <a class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: TalentTransfer\\\" route-href=\\\"route: talent-transfer\\\">${'commands.transfer' & t}</a> </div> </div> </template> \";","import { TransactionService } from '../../services/talents/transaction-service';\nimport { autoinject, bindable, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { RouteConfig } from \"aurelia-router\";\nimport { Notification } from \"common/services/notification\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { User } from \"models/security/user\";\nimport { Company } from \"models/companies/company\";\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\nimport { normalizeSearchDateRange } from 'common/utils/utility';\n\ninterface SearchParams {\n  StartDate: Date,\n  EndDate: Date,\n  UserId: number,\n  TransactionId: number\n}\n\n@autoinject()\nexport class TalentTransferList {\n\n  private logger: Logger;\n  @bindable\n  private params: any = {};\n  private users: User[];\n  public companyId: number;\n  private company: Company;\n\n\n  @bindable\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private state: State;\n  private isLoaded: boolean = false;\n\n  constructor(\n    private store: StoreService,\n    private transactionService: TransactionService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"TalentTransferList\");\n\n    this.state = this.store.state;\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    normalizeSearchDateRange(this.parameters.search);\n    return await this.transactionService.transferList(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    //this.params = params;\n\n    var today = new Date();\n    var startDate = new Date();\n    this.parameters.search = <SearchParams>{ StartDate: new Date(startDate.setDate(startDate.getDate() - 30)), EndDate: today };\n\n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n  }\n\n  private async bind(): Promise<any> {\n\n    try {\n\n      if (!isNaN(this.params.companyId)) {\n\n        this.companyId = +this.params.companyId;\n\n        if (this.companyId) {\n\n          this.transactionService.client.currentCompanyId = this.companyId;\n\n          this.company = this.state.companies.find(x => x.id == this.companyId);\n\n          this.users = await this.transactionService.getUserByCompany();\n\n          this.isLoaded = true;\n          return await this.databind();\n        }\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../models/talents/transactionTypeViewEngineHooks></require> <require from=../../../../models/talents/exportTransactionTypeViewEngineHooks></require> <require from=./talent-assignment-card></require> <require from=./talent-remove-card.html></require> <require from=./talent-transfer-card.html></require> <require from=./talent-plans-card></require> <require from=./talent-export-card></require> <div if.bind=!companyId> <h2>${'main.admin.pages.talents.title' & t}</h2> <p> ${'main.admin.pages.talents.notification_new_company' & t} </p> </div> <div if.bind=companyId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${company.name} / ${'main.admin.pages.talents.transfer.title' & t} <talent-plans-card></talent-plans-card> </h2> <p> ${'main.admin.pages.talents.transfer_list_info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-4> <div class=form-group> <label for=startDate t=main.admin.pages.talents.dateStart>Start_Date</label> <ux-date-picker value.bind=parameters.search.StartDate change.delegate=\\\"databind() & debounce:100\\\" id=startDate></ux-date-picker> </div> </div> <div class=col-4> <div class=form-group> <label for=endDate t=main.admin.pages.talents.dateEnd>Start_Date</label> <ux-date-picker value.bind=parameters.search.EndDate change.delegate=\\\"databind() & debounce:100\\\" id=endDate></ux-date-picker> </div> </div> <div class=col-4> <div class=form-group> <label>${'main.admin.pages.talents.user' & t}</label> <select class=form-control value.bind=parameters.search.UserId change.delegate=\\\"databind() & debounce:100\\\"> <option value=0 selected=selected t=forms.select_option>select an item</option> <option value=\\\"\\\" t=main.admin.pages.talents.bag>select an item</option> <option repeat.for=\\\"option of users\\\" model.bind=option.id>${option.fullName}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-2 scope=col>${'main.admin.pages.talents.date' & t}</th> <th class=col-md-2 scope=col>${'main.admin.pages.talents.user' & t}</th> <th class=col-md-2 scope=col>${'main.admin.pages.talents.sourceUser' & t}</th> <th class=col-md-2 scope=col>${'main.admin.pages.talents.targetUser' & t}</th> <th class=col-md-1 scope=col>${'main.admin.pages.talents.debit' & t}</th> <th class=col-md-1 scope=col>${'main.admin.pages.talents.credit' & t}</th> <th class=col-md-2 scope=col>${'main.admin.pages.talents.observation' & t}</th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-2 text-truncate\\\"><span title=\\\"${item.createdOn | dateTimeFormat}\\\">${item.createdOn | dateTimeFormat}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.wallet.user.fullName}>${item.wallet.user.fullName}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.sourceUser.fullName}>${item.sourceUser.fullName}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.targetUser.fullName}>${item.targetUser.fullName}</span></td> <td class=col-md-1>${item.debit}</td> <td class=col-md-1>${item.credit}</td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.observation}>${item.observation}</span></td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\"> <div class=col-12> <talent-assignment-card global-permission-show=\\\"can: TalentAsign\\\"></talent-assignment-card> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <talent-remove-card global-permission-show=\\\"can: TalentRemove\\\"></talent-remove-card> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <talent-transfer-card global-permission-show=\\\"can: TalentReasign\\\"></talent-transfer-card> </div> </div> <talent-export-card parameters.bind=parameters export-transaction-type-id.bind=ExportTransactionType.Transfers></talent-export-card> </div> </div> </div> </template> \";","module.exports = \"<template> <form> <require from=./talent-assignment-card></require> <require from=./talent-remove-card.html></require> <require from=./talent-transfer-card.html></require> <div if.bind=!companyId> <h2>${'main.admin.pages.talents.title' & t}</h2> <p> ${'main.admin.pages.talents.notification_new_company' & t} </p> </div> <div if.bind=companyId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${company.name} / ${'main.admin.pages.talents.transfer.title' & t}</h2> <p> ${'main.admin.pages.talents.transfer_info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-4> <div class=form-group> <label>${'main.admin.pages.talents.user' & t}</label> <select class=form-control value.bind=\\\"selectWallet & validate\\\" required change.delegate=filterUser(selectWallet)> <option value=0 selected=selected t=forms.select_option>select an item</option> <option repeat.for=\\\"option of wallets\\\" model.bind=option.id>${option.user.fullName & t}</option> </select> </div> </div> <div class=col-4> <div class=form-group> <label for=balance>${'main.admin.pages.talents.transfer.balance_user' & t}</label> <label for=balance_user> <strong>${balance_user}</strong> </label> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\"> <thead> <tr class=d-flex> <th class=col-md-1 scope=col></th> <th class=col-md-5 scope=col>${'main.admin.pages.talents.user' & t}</th> <th class=col-md-1 scope=col>${'main.admin.pages.talents.talent' & t}</th> <th class=col-md-5 scope=col>${'main.admin.pages.talents.amount' & t}</th> </tr> </thead> <tbody> <tr class=d-flex repeat.for=\\\"item of parameters\\\"> <td class=col-md-1> <div class=\\\"custom-control custom-checkbox\\\"> <input type=checkbox class=custom-control-input checked.bind=item.canDiscountGeneralWallet id=to_transfer_${$index} model.bind=item.canDiscountGeneralWallet change.delegate=filterLockout(item) /> <label class=custom-control-label for=to_transfer_${$index}>&nbsp;</label> </div> </td> <td class=\\\"col-md-5 text-truncate\\\"><span title=${item.user.fullName}>${item.user.fullName}</span></td> <td class=col-md-1>${item.talent}</td> <td class=col-md-5> <input type=number disabled.bind=!item.canDiscountGeneralWallet value.bind=\\\"item.amount & validate\\\" if.bind=item.canDiscountGeneralWallet model.bind=item.amount max.bind=item.talent min=1 change.delegate=calcular(item) class=form-control id=item.amount_${$index} t=[placeholder]main.admin.pages.talents.amount> </td> </tr> <tr class=d-flex> <td class=col-md-6 colspan=2> <div class=form-group> <label for=comments t=main.admin.pages.talents.observation>comments</label> <textarea value.bind=observationRemove class=form-control id=comments t=[placeholder]main.admin.pages.talents.observation>\\n                          </textarea> </div> </td> <td class=col-md-3> <div class=form-group> <label for=current_balance t=main.admin.pages.talents.transfer.transfer_balance></label> </div> </td> <td class=col-md-3> <div class=form-group> <label for=transfer_balance> <strong>${transfer_balance}</strong> </label> </div> </td> </tr> </tbody> </table> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=save() if.bind=\\\"selectWallet>0 && transfer_balance>0 && balance_user >=transfer_balance\\\">${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: talent-main;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\"> <div class=col-12> <talent-assignment-card global-permission-show=\\\"can: TalentAsign\\\"></talent-assignment-card> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <talent-remove-card global-permission-show=\\\"can: TalentRemove\\\"></talent-remove-card> </div> </div> </div> </div> </div> </form> </template> \";","import { I18N } from 'aurelia-i18n';\nimport { StoreService } from 'common/store/store-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { State } from 'common/store/store-model';\nimport { Company } from 'models/companies/company';\nimport { CoreCompanyCompetenceService } from '../../../services/test-core/core-company-competence-service';\nimport { CompanyCompetence } from 'models/test-core/competences/company-competence';\nimport { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { ChangeStateConfirmation } from 'main/components/change-state-confirmation';\nimport { DichotomousCoupleListModal } from './dichotomous-couple-list-modal';\nimport { CoreCompanyService } from 'main/admin/services/companies/core-company-service';\nimport { QuestionaryService } from 'main/admin/services/questionaries/questionary-service';\nimport { Questionary } from 'models/questionaries/questionary';\nimport { Tests } from 'models/test-person/tests';\nimport { CheckStatusCompanyCompetence } from 'models/test-core/competences/check-status-company-competence';\nimport { Language } from 'models/localizations/language';\nimport { CoreLanguageService } from 'main/admin/services/localizations/core-language-service';\nimport { Languages } from 'models/localizations/languages';\n\n\n\n@autoinject()\nexport class CompanyCompetenceList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n  private company: Company;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private state: State;\n\n  private isLoaded: boolean = false;\n  private competenceQuestionary: Questionary;\n  private questionaryId: number;\n  private isAllActivate: boolean = false;\n  private isCheckActivate: boolean = false;\n  private hasDimension: boolean = true;\n  private hasSelectLanguage: boolean = false;\n  public languageList: Language[] = [];\n  public languageId: number;\n  constructor(\n    private i18n: I18N,\n    private dialogService: DialogService,\n    private store: StoreService,\n    private companyCompetenceService: CoreCompanyCompetenceService,\n    private notification: Notification,\n    private languageService: CoreLanguageService,\n    private coreCompanyService: CoreCompanyService,\n    private questionaryService: QuestionaryService) {\n\n    this.logger = LogManager.getLogger(\"CompanyCompetenceList\");\n\n    this.state = this.store.state;\n\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    // this.logger.debug(\"refreshing\");\n    return await this.companyCompetenceService.list(this.parameters, this.questionaryId, this.languageId);\n  }\n\n  private async activate(params: any): Promise<void> {\n    this.logger.debug(\"activate\");\n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n  }\n\n\n  private async bind(): Promise<any> {\n    // this.logger.debug(\"bind\");\n\n    if (!isNaN(this.params.companyId)) {     \n      this.companyId = +this.params.companyId;\n      if (this.companyId) {\n\n        this.companyCompetenceService.client.currentCompanyId = this.companyId;\n\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n\n        let settings = await this.coreCompanyService.getSettingsById(this.companyId);\n        this.questionaryId = settings.competencesQuestionaryId;\n\n        if (this.questionaryId == 0)\n          this.questionaryId = Tests['Competences'];\n\n        if (this.questionaryId != Tests['Competences'])\n        {\n          this.hasDimension = false;\n          this.hasSelectLanguage = true;   \n        }else{  \n          this.hasSelectLanguage = false;\n          this.languageId = Languages.Spanish;\n        }    \n\n\n        this.competenceQuestionary = await this.questionaryService.getById(this.questionaryId);\n       \n        this.isLoaded = true;\n\n        this.languageList = await this.languageService.getAll();\n        this.setUserLanguage();\n\n        return await this.databind();\n      }\n    }\n  }\n\n  private async databind(): Promise<any> {\n    this.logger.debug(\"databind\");\n\n    return await this.refresh()\n      .then(async (response: UxDatatableResponse) => {\n        this.logger.debug(\"refresh\", response);\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n        await this.checkAllActivate();\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n\n  }\n  private async checkAllActivate(): Promise<void> {\n    let status = await this.companyCompetenceService.getHasAllActivateCompanyCompetences(this.questionaryId);\n\n    switch (status) {\n      case CheckStatusCompanyCompetence.Active:\n        this.isAllActivate = true;\n        this.isCheckActivate = true;\n        break;\n      case CheckStatusCompanyCompetence.Inactive:\n        this.isAllActivate = false;\n        this.isCheckActivate = true;\n        break;\n      case CheckStatusCompanyCompetence.Pending:\n        this.isAllActivate = false;\n        this.isCheckActivate = false;\n        break;\n    }\n\n\n  }\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async save(item: CompanyCompetence): Promise<void> {\n    item.languageId = this.languageId;\n    return await this.companyCompetenceService.update(item)\n      .then((model: CompanyCompetence) => {\n\n        this.logger.debug(\"model.id\", model.id);\n        item.id = model.id;\n\n        this.notification.success(\"main.admin.pages.test_core.company_competences.notifications.edited\");\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n\n  }\n\n  public async changeAllState(): Promise<void> {\n    try {\n      await this.companyCompetenceService.changeAllState(this.questionaryId);\n      this.notification.success(\"main.admin.pages.test_core.company_competences.notifications.all_competences_edited\");\n      return await this.databind();\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public async changeState(item: CompanyCompetence): Promise<void> {\n    this.logger.debug(\"item.isActive\", item.isActive);\n    return await this.dialogService.open({\n      viewModel: ChangeStateConfirmation,\n      model: this.i18n.tr(item.competenceName)\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.companyCompetenceService.changeState(item)\n          .then(async (model: CompanyCompetence) => {\n\n            this.logger.debug(\"model.id\", model.id);\n            item.id = model.id;\n\n            this.notification.success(\"main.admin.pages.test_core.company_competences.notifications.edited\");\n            return await this.checkAllActivate();\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n\n      }\n      else {\n        item.isActive = !item.isActive;\n      }\n\n    });\n\n  }\n\n  public async view(item: CompanyCompetence): Promise<void> {\n    this.logger.debug(\"viewDichotomousCouples\");\n\n    // Load dichotomous couples on demand to avoid loading them for all competences in the list\n    if (!item.dichotomousCouples || item.dichotomousCouples.length === 0) {\n      try {\n        item.dichotomousCouples = await this.companyCompetenceService.getDichotomousCouples(item.competenceId, this.questionaryId);\n      } catch (error) {\n        this.notification.error(error);\n        return;\n      }\n    }\n\n    return await this.dialogService.open({\n      viewModel: DichotomousCoupleListModal,\n      model: item\n    }).whenClosed(() => null);\n  }\n  public setUserLanguage() {    \n    this.logger.debug(\"setUserLanguage\");\n    if (this.state && this.state.userBasicInfo) {      \n      let activeCulture = this.state.userBasicInfo.culture;\n      let activeLang = this.languageList.find((lg: { culture: string; }) => lg.culture === activeCulture);\n      if (activeLang) {\n        this.languageId = activeLang.id;             \n      }\n    }\n  }\n  public async changeLanguage (){  \n    await this.databind();\n    }\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\n\n@autoinject\nexport class SheetListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor() {\n    this.logger = LogManager.getLogger(\"SheetListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./company-competence-list\"),\n        name: \"company-competence-list\",\n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${company.name} / ${'main.admin.pages.test_core.company_competences.title' & t} / ${competenceQuestionary.name} </h2> <p> ${'main.admin.pages.test_core.company_competences.info' & t} </p> <hr/> <div class=row if.bind=hasSelectLanguage> <div class=col-md-4> <th class=col-md-4 scope=col>${'main.admin.pages.languages.title' & t}</th> <br><br> <select value.bind=languageId class=form-control change.delegate=changeLanguage()> <option repeat.for=\\\"item of languageList\\\" model.bind=item.id>${item.name & t}</option> </select> </div> </div> <br><br> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> <div class=\\\"col-12 col-md-4\\\" if.bind=isCheckActivate> <span class=\\\"switch switch-sm pt-2\\\"> <a>${'main.admin.pages.test_core.company_competences.all_competences_activate' & t}</a> <input type=checkbox class=switch id=isActive_${$index} checked.bind=isAllActivate change.delegate=changeAllState() global-permission-enable=\\\"can: TestCoreCompetencesUpdate\\\"/> <label for=isActive_${$index} class=form-check-label>&nbsp;</label> </span> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-2 scope=col>${'main.admin.pages.test_core.company_competences.competence_name' & t}</th> <th class=col-md-4 scope=col>${'main.admin.pages.test_core.company_competences.competence_description' & t}</th> <th class=col-md-3 scope=col>${'main.admin.pages.test_core.company_competences.name' & t}</th> <th class=col-md-1 scope=col>${'main.admin.pages.test_core.company_competences.is_active' & t}</th> <th class=col-md-2 scope=col>&nbsp;</th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.competenceName}>${item.competenceName}</span></td> <td class=col-md-4 style=height:100px><span title=${item.competenceDescription}>${item.competenceDescription}</span></td> <td class=col-md-3> <input type=text value.bind=item.name class=form-control id=name_${$index} change.delegate=save(item) global-permission-enable=\\\"can: TestCoreCompetencesUpdate\\\"/> </td> <td class=col-md-1> <span class=\\\"switch switch-sm pt-2\\\"> <input type=checkbox class=switch id=isActive_${$index} checked.bind=item.isActive change.delegate=changeState(item) global-permission-enable=\\\"can: TestCoreCompetencesUpdate\\\"/> <label for=isActive_${$index} class=form-check-label>&nbsp;</label> </span> </td> <td class=\\\"col-md-2 d-flex\\\"> <button if.bind=hasDimension class=\\\"btn btn-link\\\" click.delegate=view(item)> <i class=material-icons>visibility</i> </button> </td> </tr> </tbody> </table> </div> </div> </div> </div> </template> \";","import { autoinject } from \"aurelia-framework\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { CompanyCompetence } from \"models/test-core/competences/company-competence\";\n\n@autoinject()\nexport class DichotomousCoupleListModal {\n\n  private model: CompanyCompetence;\n\n  constructor(\n    private dialogController: DialogController) {\n  }\n\n  public activate(model: CompanyCompetence): void {\n    this.model = model;\n  }\n\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <div class=\\\"row justify-content-md-center\\\"> <div class=\\\"col-md-10 col-12\\\"> <div class=row> <div class=col-12> <h2>${model.competenceName & t}</h2> <p>${model.competenceDescription & t}</p> <div class=\\\"row mb-3\\\" repeat.for=\\\"item of model.dichotomousCouples\\\"> <div class=col> <h5>${item.leftThesis.name & t}</h5> <p>${item.leftThesis.description & t}</p> </div> <div class=col> <p>${item.value}</p> <ux-range-input value.bind=item.value disabled=disabled></ux-range-input> </div> <div class=col> <h5>${item.rightThesis.name & t}</h5> <p>${item.rightThesis.description & t}</p> </div> </div> </div> </div> </div> </div> </ux-dialog-body> <ux-dialog-footer> <button class=\\\"btn btn-default\\\" click.delegate=dialogController.ok() t=commands.close>Close</button> </ux-dialog-footer> </ux-dialog> </template> \";","import { DialogCloseResult, DialogService } from \"aurelia-dialog\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { I18N } from \"aurelia-i18n\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { UxDatatableCustomAttribute, UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from \"common/store/store-service\";\nimport { AgreementService } from \"main/admin/services/agreements/agreement-service\";\nimport { CoreCompanyService } from \"main/admin/services/companies/core-company-service\";\nimport { PlanService } from \"main/admin/services/plans/plan-service\";\nimport { InboxByUserService } from \"main/admin/services/test-core/inbox-by-user-service\";\nimport { InboxService } from \"main/admin/services/test-core/inbox-service\";\nimport { NewsService } from \"main/admin/services/test-core/news-service\";\nimport { Company } from \"models/companies/company\";\nimport { Plan } from \"models/plans/plan\";\nimport { Inbox } from \"models/test-core/inbox/inbox\";\nimport { InboxByUser } from \"models/test-core/inbox/inboxByUser\";\nimport { InboxByUserStatus } from \"models/test-core/inbox/inboxByUserStatus\";\nimport { News } from \"models/test-core/news/news\";\n@autoinject()\nexport class InboxByUserList {\n\n  private logger: Logger;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n  private inboxList: Inbox[] = [];\n  private params: any = {};\n  private companyId: number;\n  private state: State;\n  private inbox: Inbox = new Inbox();\n  private inboxId: number;\n  private bodyText: string;\n  private userId: number;\n  private company: Company;\n  private unRead: number;\n  public isDisable: boolean = false;\n  public subjectText: string;\n  constructor(\n    private i18n: I18N,\n    private router: Router,\n    private store: StoreService,\n    private inboxService: InboxService,\n    private dialogService: DialogService,\n    private notification: Notification,\n    private planService: PlanService,\n    private agreementService: AgreementService,\n    private coreCompanyService: CoreCompanyService,\n    private inboxByUserService: InboxByUserService) {\n\n    this.logger = LogManager.getLogger(\"InboxByUserList\");\n    this.state = this.store.state;\n  }\n  \n\n  public async activate(params: any) { \n\n\n    this.params = params;\n    if (!isNaN(this.params.companyId)) {\n      this.companyId = this.params.companyId;  \n\n      if (this.companyId) {\n\n        this.company = this.state.companies.find(x => x.id == this.companyId);        \n        await this.getInboxByCurrentCompany(this.companyId)\n      \n      }  \n    }\n    else{\n      this.companyId = this.state.currentCompany.id;\n    }\n  }\n  private async getInboxByCurrentCompany(companyId: number){\n    try {\n      \n      let planIdsTest = (await this.agreementService.getAgreementsByCompanyId(companyId,false)).map(x=> x.id);\n       let planIdsSelection = (await this.agreementService.getAgreementsByCompanyId(companyId,true)).map(x=> x.id);\n  \n      if (planIdsTest.length > 0 )\n        this.inbox.planTest = planIdsTest;\n      if (planIdsSelection.length > 0)\n        this.inbox.planSelection = planIdsSelection;\n      \n\n      this.inboxList = await this.inboxService.getAllByCompany(companyId,this.inbox);\n     \n      this.unRead =  this.inboxList.filter(x=> x.inboxByUserStatus == InboxByUserStatus.Received).length;\n       \n      if (this.unRead > 99)       \n      this.unRead = 99;  \n\n      if (this.unRead == 0)\n      this.isDisable = true;\n      \n    } catch (error) {\n    \n      this.notification.error(error);\n    }\n  }\n  private async selectInbox(item: Inbox): Promise<any> {\n    // this.logger.debug(\"selectFranshise\", franchiseId);\n    this.inboxId = item.id;\n    this.bodyText = item.body;\n    this.subjectText = item.subject;\n    let modelInboxByUser = new InboxByUser();\n    modelInboxByUser.inboxId = item.id;\n    modelInboxByUser.inboxByUserStatus = item.inboxByUserStatus;\n  \n    await this.inboxByUserService.create(modelInboxByUser)\n    await this.getInboxByCurrentCompany(this.companyId)\n   // return await this.databind();\n  }\n \n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class InboxViewChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N\n  ) {\n\n    this.logger = LogManager.getLogger(\"InboxViewChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./inbox-user-list\"),\n        name: \"inbox-user-list\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.test_core.inbox.view\"),\n        // settings: {\n        //   permission: {\n        //     only: [PredefinedPermissions.TestCoreNewsView]\n        //   }\n        // }\n      },\n     \n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=../../../../../../models/test-core/inbox/inboxByUserStatusViewEngineHooks></require> <require from=../../../../../components/inbox-notification></require> <h2>${company.name} / ${'main.admin.pages.test_core.inbox.view' & t}</h2> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-5 col-12\\\"> <button class=\\\"notifications btn btn-badge btn-link\\\"> <label if.bind=isDisable>${'main.admin.pages.inbox.notifications_off' & t}</label> <i if.bind=!isDisable class=material-icons>notifications</i> <i if.bind=isDisable class=material-icons>notifications_off</i> <span if.bind=!isDisable class=\\\"badge badge-light badge-icon\\\">${unRead} </span> <span class=sr-only>notificaciones sin leer</span> </button> </div> <div class=\\\"col-md-7 col-12\\\" if.bind=subjectText> <h3> ${subjectText}</h3> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-5 col-12\\\"> <div class=card> <div class=\\\"nav flex-column nav-pills\\\" id=v-pills-tab role=tablist aria-orientation=vertical> <ul class=\\\"list-group pre-scrollable card p-3\\\"> <a repeat.for=\\\"item of inboxList\\\" href=# class=\\\"nav-link ${item.id == inboxId ? 'active' : ''} au-animate\\\" click.delegate=selectInbox(item)> <li class=\\\"${item.inboxByUserStatus == InboxByUserStatus.Received ? 'font-weight-bold' : ''} list-group-item\\\"> <div class=row> <div class=\\\"col-md-5 col-12 text-truncate minh-40 mb-2\\\"> <label class=d-block><small class=text-muted>${'main.admin.pages.inbox.subject' & t}</small></label> <span title=${item.subject}>${item.subject}</span> </div> <div class=\\\"col-md-7 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'main.admin.pages.inbox.created_on' & t}</small></label> <span title=\\\"${item.createdOn | dateTimeFormat}\\\">${item.createdOn | dateTimeFormat}</span> </div> </div> </li> </a> </ul> </div> </div> </div> <div class=\\\"col-md-7 col-12\\\"> <div class=card if.bind=!bodyText style=height:345px;width:100%;justify-content:center;align-items:center> <button class=\\\"notifications btn btn-badge btn-link\\\"> <span class=material-icons> mail </span> </button> <h4>${'main.admin.pages.inbox.empty' & t}</h4> </div> <div class=card if.bind=bodyText> <div innerhtml.bind=\\\"bodyText | sanitizeHTML\\\" style=height:400px;width:100% class=\\\"pre-scrollable card p-3\\\"> </div> </div> </div> </div> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class InboxChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N\n  ) {\n\n    this.logger = LogManager.getLogger(\"InboxChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./inbox-edit\"),\n        name: \"inbox-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.test_core.inbox.title\"),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestCoreNewsView]\n          }\n        }\n      },\n     \n    ]);\n  }\n}\n","module.exports = \"<template> <require from=./inbox-create-card.html></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <router-view></router-view> </div> </div> </template> \";","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\" global-permission-show=\\\"can: TestCoreInboxCreate\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.inbox.create_card.title' & t}</h5> <p t=[html]main.admin.pages.inbox.create_card.info>Create new profile</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: inbox-child-router; params.bind: {inboxId:'create'}\\\">${'commands.create' & t}</a> </div> </div> </template> \";","import { StoreService } from 'common/store/store-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig, RoutableComponentDetermineActivationStrategy, activationStrategy } from \"aurelia-router\";\nimport { I18N } from \"aurelia-i18n\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { User } from \"models/security/user\";\nimport { Group } from \"models/groups/group\";\nimport { Company } from \"models/companies/company\";\nimport { SessionService } from \"common/services/session-service\";\nimport { UserState } from \"models/security/userState\";\nimport { Role } from \"models/security/role\";\nimport { State } from \"common/store/store-model\";\nimport { News } from 'models/test-core/news/news';\nimport { CoreCompanyService } from 'main/admin/services/companies/core-company-service';\nimport { FileAcceptValidator } from 'common/utils/file-accept-validator';\nimport { NewsService } from 'main/admin/services/test-core/news-service';\nimport { PlanService } from 'main/admin/services/plans/plan-service';\nimport { Plan } from 'models/plans/plan';\nimport { AgreementPlanService } from 'main/admin/services/agreements/agreement-plan-service';\nimport { InboxService } from 'main/admin/services/test-core/inbox-service';\nimport { Inbox } from 'models/test-core/inbox/inbox';\nimport { AgreementService } from 'main/admin/services/agreements/agreement-service';\n@autoinject()\n// @connectTo()\nexport class InboxEdit {\n\n  private logger: Logger;\n  private model: Inbox;\n  private validationController: ValidationController;\n\n  public state: State;\n\n  private masterFranchises: Company[];\n  private franchises: Company[];\n  private companies: Company[] = [];\n  private plansTest: Plan[] = [];\n  private plansSelection: Plan[] = [];\n  private isDisable: boolean = false;\n  private companyId: number;\n  private companieFilter: string;\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private inboxService: InboxService,\n\n    private coreCompanyService: CoreCompanyService,\n    private planService: PlanService,\n    private agreementPlanService: AgreementPlanService,\n    private agreementService: AgreementService,\n    private i18n: I18N,\n    private sessionService: SessionService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"Edit\");\n    this.state = this.store.state;\n\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<void> {\n    // this.logger.debug(\"Activated id:\", params.coreUserId);\n    try {\n      this.masterFranchises = await this.coreCompanyService.getByRoleId(Role.MasterFranchise);\n\n      this.franchises = await this.coreCompanyService.getByRoleId(Role.Franchise);\n  \n      if (!isNaN(params.companyId)) {\n    this.companyId = +params.companyId;\n      }\n      if (!isNaN(params.inboxId)) {\n        this.model = await this.inboxService.getById(+params.inboxId);\n        this.initHieranchyLevelCompanyIdByRole();\n        this.isDisable = true;\n      }\n      else {\n        this.model = new Inbox();\n      }\n      this.configureValidationRules();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n\n  }\n  private reset() {\n    this.model.franchise = null;\n    this.model.planTest = null;\n    this.model.planSelection = null\n  }\n  private async plansList() {\n\n    this.plansTest = [];\n    this.plansSelection = [];\n    let listPlansTest = (await this.planService.getAll(false)).filter(x => x.isActive);\n    this.model.franchise.forEach(async (item) => {\n      this.plansTest = this.plansTest.concat(listPlansTest.filter(x => x.companyId == item));\n    });\n  }\n  private async companiesList() {\n    this.companies = [];\n    try {\n      let listAgreement = await this.agreementService.getAll(this.companyId);\n      this.model.planTest.forEach((item) => {      \n        this.companies = this.companies.concat(listAgreement.filter(x=> x.planId == item).map(x=>x.company))\n    });\n    } catch (error) {\n      this.notification.error(error);\n    }\n}\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"subject\").displayName(\"main.admin.pages.inbox.title\").required()\n      .ensure(\"roleId\").displayName(\"main.admin.pages.users.levels.title\").required()\n      .on(this.model);\n  }\n\n  private async submit(saveAndContinue: boolean): Promise<any> {\n    let result = await this.validationController.validate();\n    if (result.valid) {\n      if (!this.model.roleId) {\n        this.notification.warning(this.i18n.tr(\"main.admin.pages.users.errors.role_is_required\"));\n      }\n      else {\n        return await this.save(saveAndContinue);\n      }\n    }\n\n  }\n\n\n  private async save(saveAndContinue: boolean): Promise<any> {\n    if (!this.model.id) {\n\n      return await this.inboxService.create(this.model)\n        .then(async (model: Inbox) => {\n          this.notification.success(\"notifications.item_added\");\n          if (!saveAndContinue) {\n            return await this.router.navigateToRoute(\"inbox-list\");\n          } else {\n            return await this.router.navigateToRoute(\"inbox-child-router\", { inboxId: model.id });\n          }\n\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    } else {\n      return await this.inboxService.update(this.model)\n        .then(async () => {\n          this.notification.success(\"notifications.item_edited\");\n          if (!saveAndContinue) {\n            return await this.router.navigateToRoute(\"inbox-list\");\n          }\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    }\n  }\n\n  private initHieranchyLevelCompanyIdByRole(): void {\n    switch (this.model.roleId) {\n      case 1:\n      case 2:\n        break;\n      case 3:\n      case 4:\n        this.plansList();\n        this.companiesList();\n        break;\n      default:\n        break;\n    }\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../../models/security/userStateViewEngineHooks></require> <require from=../../../../../models/security/roleViewEngineHooks></require> <form class=form> <h2>${'main.admin.pages.inbox.title' & t}</h2> <p> ${'main.admin.pages.inbox.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label>${'main.admin.pages.inbox.subject' & t}</label> <input disabled.bind=isDisable type=text class=form-control id=model.subject t=[placeholder]main.admin.pages.inbox.subject value.bind=\\\"model.subject & validate\\\"> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <h3>${'main.admin.pages.users.levels.title' & t}</h3> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-3 col-12\\\"> <span class=\\\"switch switch-sm\\\"> <input disabled.bind=isDisable type=radio class=switch id=role1 name=role model.bind=Role.Admin checked.bind=model.roleId> <label for=role1>${'main.admin.pages.users.levels.admin' & t}</label> </span> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <span class=\\\"switch switch-sm\\\"> <input disabled.bind=isDisable type=radio class=switch id=role2 name=role model.bind=Role.Core checked.bind=model.roleId> <label for=role2>${'main.admin.pages.users.levels.core' & t}</label> </span> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <span class=\\\"switch switch-sm\\\"> <input disabled.bind=isDisable type=radio class=switch id=role3 name=role model.bind=Role.MasterFranchise checked.bind=model.roleId> <label for=role3>${'main.admin.pages.users.levels.master_franchise' & t}</label> </span> </div> <div class=\\\"col-md-6 col-12\\\" if.bind=\\\"model.roleId == Role.MasterFranchise\\\"> <select disabled.bind=isDisable multiple=multiple value.bind=model.franchiseMaster class=form-control> <option repeat.for=\\\"option of masterFranchises\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <span class=\\\"switch switch-sm\\\"> <input disabled.bind=isDisable type=radio class=switch id=role4 name=role model.bind=Role.Franchise checked.bind=model.roleId> <label for=role4>${'main.admin.pages.users.levels.franchise' & t}</label> </span> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"model.roleId == Role.Franchise\\\"> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=role4>${'main.admin.pages.news.franchise' & t}</label> <select disabled.bind=isDisable multiple=multiple value.bind=model.franchise class=form-control change.delegate=plansList()> <option repeat.for=\\\"option of franchises\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label>${'main.admin.pages.news.plan_test' & t}</label> <select disabled.bind=isDisable multiple=multiple value.bind=model.planTest class=form-control change.delegate=companiesList()> <option repeat.for=\\\"option of plansTest\\\" model.bind=option.id>${option.company.name} - ${option.name}</option> </select> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label>${'main.admin.pages.inbox.companies' & t}</label> <select disabled.bind=isDisable multiple=multiple value.bind=model.company class=form-control> <option repeat.for=\\\"option of companies\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> </div> <div class=row style=margin-bottom:50px> <div class=col> <label>${'main.admin.pages.inbox.body' & t}</label> <quill-editor value.bind=\\\"model.body & validate\\\"></quill-editor> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestCoreInboxCreate\\\" click.delegate=submit(false)>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: inbox-list;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </template> \";","import { DialogCloseResult, DialogService } from \"aurelia-dialog\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { UxDatatableCustomAttribute, UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { CoreCompanyService } from \"main/admin/services/companies/core-company-service\";\nimport { PlanService } from \"main/admin/services/plans/plan-service\";\nimport { InboxService } from \"main/admin/services/test-core/inbox-service\";\nimport { NewsService } from \"main/admin/services/test-core/news-service\";\nimport { Company } from \"models/companies/company\";\nimport { Plan } from \"models/plans/plan\";\nimport { Inbox } from \"models/test-core/inbox/inbox\";\nimport { News } from \"models/test-core/news/news\";\nimport { ChangeStateConfirmation } from \"../../../../components/change-state-confirmation\";\n@autoinject()\nexport class InboxList {\n\n  private logger: Logger;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n  private inboxList: Inbox[] = [];\n\n \n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n     return await this.inboxService.list(this.parameters)\n       .then(async (response: UxDatatableResponse) => {            \n        return response;\n       })\n       \n       .catch(error => {\n         this.notification.error(error);\n       });\n  }\n\n  constructor(\n    private router: Router,\n    private inboxService: InboxService,\n    private dialogService: DialogService,\n    private notification: Notification,\n    private planService: PlanService,\n    private coreCompanyService: CoreCompanyService) {\n\n    this.logger = LogManager.getLogger(\"NewsList\");\n\n  }\n\n  public async bind(): Promise<void> {   \n    return await this.databind();\n  }\n\n\n  private async databind(): Promise<void> {\n    return await this.refresh()\n      .then(async (response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords; \n        this.inboxList = this.parameters.tableData;\n       await this.getListPlans();\n        await this.getListFranchises();\n        await this.getListCompanies();\n      })      \n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  public async changeState(item: News): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: ChangeStateConfirmation,\n      model: item.name\n    })\n      .whenClosed(async (response: DialogCloseResult) => {\n        if (!response.wasCancelled) {\n          return await this.inboxService.changeState(item.id)\n            .then(() => {           \n              this.notification.success(\"notifications.item_edited\");\n            })\n            .catch(error => {\n              this.notification.error(error);\n            });\n        }\n        else{\n          this.logger.debug(\"response canceled\")\n        }\n        \n      });\n  }\n  public async getListPlans(){\n    try {   \n      this.inboxList.forEach(x=> {  \n        let planTestList: string[] =  [];   \n        let planSelectionList: string[] =  [];\n        if (x.planTest){\n          x.planTest.forEach(async (item: number) =>{\n            let plan: Plan = new Plan();\n            plan = await this.planService.getById(item);\n            planTestList.push(plan.name);\n          })\n        }          \n          x.plansTest = planTestList;   \n          \n          if (x.planSelection){\n            x.planSelection.forEach(async (item: number) =>{\n              let plan: Plan = new Plan();\n              plan = await this.planService.getById(item);\n              planSelectionList.push(plan.name);\n            })\n          }          \n            x.plansSelection = planSelectionList;  \n          \n      });\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n  public async getListCompanies(){\n    try {   \n      this.inboxList.forEach(x=> {  \n        let companiesList: string[] =  [];   \n        //let planSelectionList: string[] =  [];\n        if (x.company){\n          x.company.forEach(async (item: number) =>{\n            let company: Company = new Company();\n            company = await this.coreCompanyService.getById(item);\n            companiesList.push(company.name);\n          })\n        }          \n          x.companiesName = companiesList;   \n          \n          // if (x.planSelection){\n          //   x.planSelection.forEach(async (item: number) =>{\n          //     let plan: Plan = new Plan();\n          //     plan = await this.planService.getById(item);\n          //     planSelectionList.push(plan.name);\n          //   })\n          // }          \n          //   x.plansSelection = planSelectionList;  \n          \n      });\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n  public async getListFranchises(){\n    try {   \n      this.inboxList.forEach(x=> {  \n        let franchiseMasterList: string[] =  [];   \n        let franchiseList: string[] =  [];\n        if (x.franchiseMaster){\n          x.franchiseMaster.forEach(async (item: number) =>{\n            let franchise: Company = new Company();\n            franchise = await this.coreCompanyService.getById(item);\n            franchiseMasterList.push(franchise.name);\n          })\n        }          \n          x.franchisesMaster = franchiseMasterList;   \n          \n          if (x.franchise){\n            x.franchise.forEach(async (item: number) =>{\n              let franchise: Company = new Company();\n              franchise = await this.coreCompanyService.getById(item);\n              franchiseList.push(franchise.name);\n            })\n          }          \n            x.franchises = franchiseList;  \n          \n      });\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\n\n@autoinject\nexport class InboxListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor() {\n    this.logger = LogManager.getLogger(\"InboxListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./inbox-list\"),\n        name: \"inbox-list\",\n      },\n\n      {\n        route: \"inbox/:inboxId\",\n        moduleId: PLATFORM.moduleName(\"./inbox-child-router\"),\n        name: \"inbox-child-router\",        \n      },     \n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=./inbox-create-card.html></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${'main.admin.pages.inbox.title' & t}</h2> <p> ${'main.admin.pages.inbox.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-2 scope=col>${'main.admin.pages.inbox.subject' & t}</th> <th class=col-md-1 scope=col>${'main.admin.pages.news.created_on' & t}</th> <th class=col-md-2 scope=col>${'main.admin.pages.news.franchise_master' & t}</th> <th class=col-md-2 scope=col>${'main.admin.pages.news.franchise' & t}</th> <th class=col-md-2 scope=col>${'main.admin.pages.news.plan_test' & t}</th> <th class=col-md-2 scope=col>${'main.admin.pages.inbox.companies' & t}</th> <th class=col-md-2 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of inboxList\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.name}>${item.subject}</span></td> <td class=\\\"col-md-1 text-truncate\\\"><span title=\\\"${item.createdOn | dateFormat}\\\">${item.createdOn | dateFormat}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.franchisesMaster}>${item.franchisesMaster}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.franchises}>${item.franchises}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.plansTest}>${item.plansTest}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.companiesName}>${item.companiesName}</span></td> <td class=\\\"col-md-2 d-flex\\\"> <a class=\\\"btn btn-link\\\" global-permission-show=\\\"can: TestCoreInboxUpdate\\\" route-href=\\\"route: inbox-child-router; params.bind: {inboxId:item.id}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <span class=\\\"switch switch-sm pt-2\\\"> <input type=checkbox class=switch id=isActive_${$index} checked.bind=item.isActive change.delegate=changeState(item) global-permission-enable=\\\"can: TestCoreInboxActivate\\\"/> <label for=isActive_${$index} class=form-check-label>&nbsp;</label> </span> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> <inbox-create-card global-permission-show=\\\"can: TestCoreInboxCreate\\\"></inbox-create-card> </div> </div> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class NewsChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N\n  ) {\n\n    this.logger = LogManager.getLogger(\"NewsChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./news-edit\"),\n        name: \"news-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.test_core.news.title\"),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestCoreNewsView]\n          }\n        }\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <require from=./news-create-card.html></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <router-view></router-view> </div> </div> </template> \";","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\" global-permission-show=\\\"can: TestCoreNewsCreate\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.news.create_card.title' & t}</h5> <p t=[html]main.admin.pages.news.create_card.info>Create new profile</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: news-child-router; params.bind: {newsId:'create'}\\\">${'commands.create' & t}</a> </div> </div> </template> \";","import { StoreService } from 'common/store/store-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig, RoutableComponentDetermineActivationStrategy, activationStrategy } from \"aurelia-router\";\nimport { I18N } from \"aurelia-i18n\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { User } from \"models/security/user\";\nimport { Group } from \"models/groups/group\";\nimport { Company } from \"models/companies/company\";\nimport { SessionService } from \"common/services/session-service\";\nimport { UserState } from \"models/security/userState\";\nimport { Role } from \"models/security/role\";\nimport { State } from \"common/store/store-model\";\nimport { News } from 'models/test-core/news/news';\nimport { CoreCompanyService } from 'main/admin/services/companies/core-company-service';\nimport { FileAcceptValidator } from 'common/utils/file-accept-validator';\nimport { NewsService } from 'main/admin/services/test-core/news-service';\nimport { PlanService } from 'main/admin/services/plans/plan-service';\nimport { Plan } from 'models/plans/plan';\nimport { AgreementPlanService } from 'main/admin/services/agreements/agreement-plan-service';\n@autoinject()\n// @connectTo()\nexport class NewsEdit {\n\n  private logger: Logger;\n  private model: News;\n  private validationController: ValidationController;\n\n  public state: State;\n\n  private masterFranchises: Company[];\n  private franchises: Company[];\n  private plansTest: Plan[] = [];\n  private plansSelection: Plan[] = [];\n  private isDisable: boolean = false;\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private newsService: NewsService,\n\n    private coreCompanyService: CoreCompanyService,\n    private planService: PlanService,\n    private agreementPlanService: AgreementPlanService,\n    private i18n: I18N,\n    private sessionService: SessionService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"Edit\");\n    this.state = this.store.state;\n\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<void> {\n    // this.logger.debug(\"Activated id:\", params.coreUserId);\n    try {\n      this.masterFranchises = await this.coreCompanyService.getByRoleId(Role.MasterFranchise);\n\n      this.franchises = await this.coreCompanyService.getByRoleId(Role.Franchise);\n  \n\n      if (!isNaN(params.newsId)) {\n        this.model = await this.newsService.getById(+params.newsId);\n        this.initHieranchyLevelCompanyIdByRole();\n        this.isDisable = true;\n      }\n      else {\n        this.model = new News();\n      }\n      this.configureValidationRules();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n\n  }\n  private reset() {\n\n    this.model.franchise = null;\n    this.model.planTest = null;\n    this.model.planSelection = null\n  }\n  private async plansList() {\n\n    this.plansTest = [];\n    this.plansSelection = [];\n    let listPlansTest = (await this.planService.getAll(false)).filter(x => x.isActive);\n    this.model.franchise.forEach(async (item) => {\n      this.plansTest = this.plansTest.concat(listPlansTest.filter(x => x.companyId == item));\n    });\n\n    let listPlansSelection = (await this.planService.getAll(true)).filter(x => x.isActive);\n    this.model.franchise.forEach(async (item) => {\n      this.plansSelection = this.plansSelection.concat(listPlansSelection.filter(x => x.companyId == item));\n    });\n\n\n  }\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.news.name\").required()\n      .ensure(\"roleId\").displayName(\"main.admin.pages.users.levels.title\").required()\n      .ensure(\"fileName\").displayName(\"main.admin.pages.news.image\").required()\n      .on(this.model);\n  }\n\n  private async submit(saveAndContinue: boolean): Promise<any> {\n    let result = await this.validationController.validate();\n    if (result.valid) {\n      if (!this.model.roleId) {\n        this.notification.warning(this.i18n.tr(\"main.admin.pages.users.errors.role_is_required\"));\n      }\n      else {\n        return await this.save(saveAndContinue);\n      }\n    }\n\n  }\n\n\n  private async save(saveAndContinue: boolean): Promise<any> {\n    if (!this.model.id) {\n\n      return await this.newsService.create(this.model)\n        .then(async (model: News) => {\n          this.notification.success(\"notifications.item_added\");\n          if (!saveAndContinue) {\n            return await this.router.navigateToRoute(\"news-list\");\n          } else {\n            return await this.router.navigateToRoute(\"news-child-router\", { newsId: model.id });\n          }\n\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    } else {\n      return await this.newsService.update(this.model)\n        .then(async () => {\n          this.notification.success(\"notifications.item_edited\");\n          if (!saveAndContinue) {\n            return await this.router.navigateToRoute(\"news-list\");\n          }\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    }\n  }\n\n\n\n  private initHieranchyLevelCompanyIdByRole(): void {\n    switch (this.model.roleId) {\n      case 1:\n      case 2:\n        break;\n      case 3:\n      case 4:\n        this.plansList();\n        break;\n      default:\n        break;\n    }\n  }\n\n\n  public unSetFile(): void {\n    this.model.fileName = null;\n    this.model.thumbnailImageUrl = null;\n  }\n  public determineActivationStrategy(): any {\n    return activationStrategy.replace;\n  }\n  public setFile($event: any, item: News): void {\n    this.logger.debug(\"setFile\");\n    let file = <File>$event.target.files[0];\n    let fileValidator = FileAcceptValidator.parse(\"image/*\", 1080 * 566);\n    if (fileValidator.isValid(file)) {\n      let reader: FileReader = new FileReader();\n      reader.readAsDataURL(file);\n      reader.onload = () => {\n        let base64data: any = reader.result;\n        item.thumbnailImage = base64data;\n        item.fileName = file.name;\n        item.thumbnailImageUrl = URL.createObjectURL(file);\n      };\n    }\n    else {\n      this.notification.error(\"main.admin.pages.questionaries.questions.errors.error_bad_image\");\n\n    }\n  }\n\n\n\n\n}\n","module.exports = \"<template> <require from=../../../../../models/security/userStateViewEngineHooks></require> <require from=../../../../../models/security/roleViewEngineHooks></require> <form class=form> <h2>${'main.admin.pages.test_core.news.title' & t}</h2> <p> ${'main.admin.pages.test_core.news.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label>${'main.admin.pages.news.title' & t}</label> <input disabled.bind=isDisable type=text class=form-control id=model.name t=[placeholder]main.admin.pages.news.title value.bind=\\\"model.name & validate\\\"> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label>${'main.admin.pages.news.image' & t}</label> <div class=custom-file> <input type=file class=custom-file-input id=model.fileName accept=image/* change.delegate=\\\"setFile($event, model)\\\"> <label class=custom-file-label for=model.fileName>${model.fileName}</label> <button if.bind=model.thumbnailImageUrl type=button class=\\\"btn btn-link\\\" click.delegate=unSetFile()> ${ 'commands.clear' & t } </button> </div> <img if.bind=model.thumbnailImageUrl class=\\\"img-thumbnail w-50\\\" alt.bind=model.fileName src.bind=model.thumbnailImageUrl> </div> </div> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label>${'main.admin.pages.news.url_redirect' & t}</label> <input type=url class=form-control id=model.urlRedirect t=[placeholder]main.admin.pages.news.url_redirect value.bind=\\\"model.urlRedirect & validate\\\"> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <h3>${'main.admin.pages.users.levels.title' & t}</h3> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-3 col-12\\\"> <span class=\\\"switch switch-sm\\\"> <input disabled.bind=isDisable type=radio class=switch id=role1 name=role model.bind=Role.Admin checked.bind=model.roleId> <label for=role1>${'main.admin.pages.users.levels.admin' & t}</label> </span> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <span class=\\\"switch switch-sm\\\"> <input disabled.bind=isDisable type=radio class=switch id=role2 name=role model.bind=Role.Core checked.bind=model.roleId> <label for=role2>${'main.admin.pages.users.levels.core' & t}</label> </span> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <span class=\\\"switch switch-sm\\\"> <input disabled.bind=isDisable type=radio class=switch id=role3 name=role model.bind=Role.MasterFranchise checked.bind=model.roleId> <label for=role3>${'main.admin.pages.users.levels.master_franchise' & t}</label> </span> </div> <div class=\\\"col-md-6 col-12\\\" if.bind=\\\"model.roleId == Role.MasterFranchise\\\"> <select disabled.bind=isDisable multiple=multiple value.bind=model.franchiseMaster class=form-control> <option repeat.for=\\\"option of masterFranchises\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <span class=\\\"switch switch-sm\\\"> <input disabled.bind=isDisable type=radio class=switch id=role4 name=role model.bind=Role.Franchise checked.bind=model.roleId> <label for=role4>${'main.admin.pages.users.levels.franchise' & t}</label> </span> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"model.roleId == Role.Franchise\\\"> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=role4>${'main.admin.pages.news.franchise_title' & t}</label> <select disabled.bind=isDisable multiple=multiple value.bind=model.franchise class=form-control change.delegate=plansList()> <option repeat.for=\\\"option of franchises\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label>${'main.admin.pages.news.plans' & t}</label> <select disabled.bind=isDisable multiple=multiple value.bind=model.planTest class=form-control> <option repeat.for=\\\"option of plansTest\\\" model.bind=option.id>${option.company.name} - ${option.name}</option> </select> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label>${'main.admin.pages.news.plans_selection' & t}</label> <select disabled.bind=isDisable multiple=multiple value.bind=model.planSelection class=form-control> <option repeat.for=\\\"option of plansSelection\\\" model.bind=option.id>${option.company.name} - ${option.name}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestCoreNewsCreate\\\" click.delegate=submit(true)>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestCoreNewsCreate\\\" click.delegate=submit(false)>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: news-list;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </template> \";","import { DialogCloseResult, DialogService } from \"aurelia-dialog\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { UxDatatableCustomAttribute, UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { CoreCompanyService } from \"main/admin/services/companies/core-company-service\";\nimport { PlanService } from \"main/admin/services/plans/plan-service\";\nimport { NewsService } from \"main/admin/services/test-core/news-service\";\nimport { Company } from \"models/companies/company\";\nimport { Plan } from \"models/plans/plan\";\nimport { News } from \"models/test-core/news/news\";\nimport { ChangeStateConfirmation } from \"../../../../components/change-state-confirmation\";\n@autoinject()\nexport class NewsList {\n\n  private logger: Logger;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n  private newsList: News[] = [];\n\n \n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n     return await this.newsService.list(this.parameters)\n       .then(async (response: UxDatatableResponse) => {            \n        return response;\n       })\n       \n       .catch(error => {\n         this.notification.error(error);\n       });\n  }\n\n  constructor(\n    private router: Router,\n    private newsService: NewsService,\n    private dialogService: DialogService,\n    private notification: Notification,\n    private planService: PlanService,\n    private coreCompanyService: CoreCompanyService) {\n\n    this.logger = LogManager.getLogger(\"NewsList\");\n\n  }\n\n  public async bind(): Promise<void> {   \n    return await this.databind();\n  }\n\n\n  private async databind(): Promise<void> {\n    return await this.refresh()\n      .then(async (response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords; \n        this.newsList = this.parameters.tableData;\n        this.getListPlans();\n        this.getListFranchises();\n      })      \n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  public async changeState(item: News): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: ChangeStateConfirmation,\n      model: item.name\n    })\n      .whenClosed(async (response: DialogCloseResult) => {\n        if (!response.wasCancelled) {\n          return await this.newsService.changeState(item.id)\n            .then(() => {           \n              this.notification.success(\"notifications.item_edited\");\n            })\n            .catch(error => {\n              this.notification.error(error);\n            });\n        }\n        else{\n          this.logger.debug(\"response canceled\")\n        }\n        \n      });\n  }\n  public async getListPlans(){\n    try {   \n      this.newsList.forEach(x=> {  \n        let planTestList: string[] =  [];   \n        let planSelectionList: string[] =  [];\n        if (x.planTest){\n          x.planTest.forEach(async (item: number) =>{\n            let plan: Plan = new Plan();\n            plan = await this.planService.getById(item);\n            planTestList.push(plan.name);\n          })\n        }          \n          x.plansTest = planTestList;   \n          \n          if (x.planSelection){\n            x.planSelection.forEach(async (item: number) =>{\n              let plan: Plan = new Plan();\n              plan = await this.planService.getById(item);\n              planSelectionList.push(plan.name);\n            })\n          }          \n            x.plansSelection = planSelectionList;  \n          \n      });\n    } catch (error) {\n      \n    }\n  }\n  public async getListFranchises(){\n    try {   \n      this.newsList.forEach(x=> {  \n        let franchiseMasterList: string[] =  [];   \n        let franchiseList: string[] =  [];\n        if (x.franchiseMaster){\n          x.franchiseMaster.forEach(async (item: number) =>{\n            let franchise: Company = new Company();\n            franchise = await this.coreCompanyService.getById(item);\n            franchiseMasterList.push(franchise.name);\n          })\n        }          \n          x.franchisesMaster = franchiseMasterList;   \n          \n          if (x.franchise){\n            x.franchise.forEach(async (item: number) =>{\n              let franchise: Company = new Company();\n              franchise = await this.coreCompanyService.getById(item);\n              franchiseList.push(franchise.name);\n            })\n          }          \n            x.franchises = franchiseList;  \n          \n      });\n    } catch (error) {\n      \n    }\n  }\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\n\n@autoinject\nexport class NewsListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor() {\n    this.logger = LogManager.getLogger(\"NewsListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./news-list\"),\n        name: \"news-list\",\n      },\n\n      {\n        route: \"news/:newsId\",\n        moduleId: PLATFORM.moduleName(\"./news-child-router\"),\n        name: \"news-child-router\",        \n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=./news-create-card.html></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${'main.admin.pages.news.title' & t}</h2> <p> ${'main.admin.pages.news.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-2 scope=col>${'main.admin.pages.news.title' & t}</th> <th class=col-md-1 scope=col>${'main.admin.pages.news.created_on' & t}</th> <th class=col-md-2 scope=col>${'main.admin.pages.news.franchise_master' & t}</th> <th class=col-md-2 scope=col>${'main.admin.pages.news.franchise' & t}</th> <th class=col-md-2 scope=col>${'main.admin.pages.news.plan_test' & t}</th> <th class=col-md-2 scope=col>${'main.admin.pages.news.plan_selection' & t}</th> <th class=col-md-2 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of newsList\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.name}>${item.name}</span></td> <td class=\\\"col-md-1 text-truncate\\\"><span title=\\\"${item.createdOn | dateFormat}\\\">${item.createdOn | dateFormat}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.franchisesMaster}>${item.franchisesMaster}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.franchises}>${item.franchises}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.plansTest}>${item.plansTest}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.plansSelection}>${item.plansSelection}</span></td> <td class=\\\"col-md-2 d-flex\\\"> <a class=\\\"btn btn-link\\\" global-permission-show=\\\"can: TestCoreNewsUpdate\\\" route-href=\\\"route: news-child-router; params.bind: {newsId:item.id}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <span class=\\\"switch switch-sm pt-2\\\"> <input type=checkbox class=switch id=isActive_${$index} checked.bind=item.isActive change.delegate=changeState(item) global-permission-enable=\\\"can: TestCoreNewsActivate\\\"/> <label for=isActive_${$index} class=form-check-label>&nbsp;</label> </span> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> <news-create-card global-permission-show=\\\"can: TestCoreNewsCreate\\\"></news-create-card> </div> </div> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class ServiceRatingChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N\n  ) {\n\n    this.logger = LogManager.getLogger(\"ServiceRatingRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([     \n\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./service-rating-edit\"),\n        name: \"service-rating-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.test_core.service_rating.title\"),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestCoreNewsView]\n          }\n        }\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","import { StoreService } from 'common/store/store-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig, RoutableComponentDetermineActivationStrategy, activationStrategy } from \"aurelia-router\";\nimport { I18N } from \"aurelia-i18n\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { SessionService } from \"common/services/session-service\";\nimport { UserState } from \"models/security/userState\";\nimport { Role } from \"models/security/role\";\nimport { State } from \"common/store/store-model\";\nimport { ServiceRatingService } from 'main/admin/services/service-rating/service-rating-service';\nimport { ServiceRating } from 'models/service-rating/service-rating';\n@autoinject()\n// @connectTo()\nexport class UserSettingEdit {\n\n  private logger: Logger;\n  private model: ServiceRating;\n  private validationController: ValidationController;\n  public state: State;\n\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,    \n    private i18n: I18N,\n    private sessionService: SessionService,\n    private serviceRatingService: ServiceRatingService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ServiceRatingEdit\");\n    this.state = this.store.state;\n\n  }\n\n  private async activate(): Promise<void> {\n    // this.logger.debug(\"Activated id:\", params.coreUserId);\n    try {    \n        this.model = await this.serviceRatingService.getServiceRatingSettings();     \n      this.configureValidationRules();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"value\").displayName(\"main.admin.pages.service-rating_value\").required()\n      .on(this.model);\n  }\n\n  private async submit(saveAndContinue: boolean): Promise<any> {\n    let result = await this.validationController.validate();\n    if (result.valid) {\n      return await this.save(saveAndContinue);\n    }\n\n  }\n\n  private async save(saveAndContinue: boolean): Promise<any> {\n    return await this.serviceRatingService.update(this.model)\n      .then(async () => {\n        this.notification.success(\"notifications.item_edited\");\n        if (!saveAndContinue) {\n          return await this.router.navigateToRoute(\"service-rating-list\");\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n\n  }\n}\n","module.exports = \"<template> <form class=form> <h2>${'main.admin.pages.test_core.service_rating.title' & t}</h2> <p> ${'main.admin.pages.test_core.service_rating.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label>${'main.admin.pages.user_setting.value' & t}</label> <input type=url class=form-control id=model.value t=[placeholder]main.admin.pages.service-rating.value value.bind=\\\"model.value & validate\\\"> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestCoreNewsCreate\\\" click.delegate=submit(true)>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestCoreNewsCreate\\\" click.delegate=submit(false)>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: service-rating-list;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </template> \";","import { DialogService } from \"aurelia-dialog\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { ServiceRatingService } from \"main/admin/services/service-rating/service-rating-service\";\nimport { ServiceRating } from \"models/service-rating/service-rating\";\n@autoinject()\nexport class UserSettingList {\n\n  private logger: Logger;\n  private serviceRating: ServiceRating;\n\n  constructor(\n    private router: Router,\n    private serviceRatingService: ServiceRatingService) \n    {\n\n    this.logger = LogManager.getLogger(\"ServiceRatingList\");\n  }\n  public async activate() {\n    this.serviceRating = await this.serviceRatingService.getServiceRatingSettings();\n  }\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\n\n@autoinject\nexport class NewsListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor() {\n    this.logger = LogManager.getLogger(\"ServiceRatingListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./service-rating-list\"),\n        name: \"service-rating-list\",\n      },\n\n      {\n        route: \"service-rating\",\n        moduleId: PLATFORM.moduleName(\"./service-rating-child-router\"),\n        name: \"service-rating-child-router\",\n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${'main.admin.pages.test_core.service_rating.title' & t}</h2> <p> ${'main.admin.pages.test_core.service_rating.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\"> <thead> <tr class=d-flex> <th class=col-md-2 scope=col>${'main.admin.pages.user_setting.keyName' & t}</th> <th class=col-md-3 scope=col>${'main.admin.pages.user_setting.value' & t}</th> <th class=col-md-3 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex> <td class=\\\"col-md-2 text-truncate\\\"><span title=${serviceRating.key}>${serviceRating.key}</span></td> <td class=\\\"col-md-3 text-truncate\\\"><span title=${serviceRating.value}>${serviceRating.value}</span></td> <td class=\\\"col-md-3 d-flex\\\"> <a class=\\\"btn btn-link\\\" global-permission-show=\\\"can: TestCoreNewsUpdate\\\" route-href=\\\"route: service-rating-child-router\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> </div> </div> </template> \";","import { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { Sheet } from \"models/test-core/sheets/sheet\";\nimport { bindable, LogManager, bindingMode, autoinject, Disposable, BindingEngine } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { SheetFullDescriptionModal } from './sheet-full-description-modal';\n\n@autoinject\nexport class SheetCard {\n\n  protected logger: Logger;\n\n  @bindable\n  public sheet: Sheet;\n\n  @bindable({ defaultBindingMode: bindingMode.twoWay })\n  public checked: any[] = undefined; // public: any[]\n\n  @bindable\n  public value: any = null;    // public: any\n\n  @bindable\n  public disabled: boolean = false;// public: boolean\n\n  @bindable\n  public selectable: boolean = true;\n\n  @bindable\n  public showDimensions: boolean = false;\n\n  @bindable\n  public dimensionClick: Function = null;\n\n  // @bindable tabIndex = 0;    // public: number\n  // element;                   // private: Element\n  // bindingEngine;             // private: BindingEngine\n  protected subscription: Disposable = null;       // private: Disposable|null\n  protected state: boolean = false;             // private: boolean\n  styleString: string = '';\n\n\n  constructor(\n\n    private dialogService: DialogService,\n    public element: Element,\n    public bindingEngine: BindingEngine) {\n    this.logger = LogManager.getLogger(\"SheetCard\");\n\n    // this.element = element;\n    // this.bindingEngine = bindingEngine;\n  }\n\n  public checkedChanged() { // public: Array|undefined, Array|undefined\n    // unsubscribe from the previous array's mutation (eg push/pop/splice)\n    this.disposeSubscription();\n    // subscribe to the current array's mutation\n    if (Array.isArray(this.checked)) {\n      this.subscription = this.bindingEngine.collectionObserver(this.checked)\n        .subscribe(() => this.synchronizeView());\n    }\n    this.synchronizeView();\n\n    // this.logger.debug(\"checkedChanged checked\", this.checked);\n  }\n\n  public valueChanged() {\n    this.synchronizeView();\n  }\n\n  // clicked() {\n  //   if (this.disabled) {\n  //     return;\n  //   }\n  //   this.state = !this.state;\n\n  //   // this.logger.debug(\"this.state\", this.state);\n  //   this.synchronizeModel();\n  // }\n\n  // keypress(event) { // private event: KeyboardEvent\n  //   if (this.disabled || event.ctrlKey || event.altKey || event.shiftKey || event.metaKey || event.which !== 32) {\n  //     return;\n  //   }\n\n  //   // space key was pressed...\n  //   this.state = !this.state;\n  //   this.synchronizeModel();\n  // }\n\n  public synchronizeView() { // private\n    if (Array.isArray(this.checked)) {\n      // this.logger.debug(\"synchronizeView value\", this.value);\n      // this.logger.debug(\"synchronizeView checked\", this.checked);\n      this.state = this.checked.indexOf(this.value) !== -1;\n    } else {\n      this.state = false;\n    }\n    if (this.sheet.warning === true) {\n      this.styleString = 'opacity: 0.3;';\n    }\n\n  }\n\n  public synchronizeModel() {\n    // this.logger.debug(\"synchronizeModel this.checked\", this.checked);\n    if (!Array.isArray(this.checked)) {\n      return;\n    }\n    if (this.state && this.checked.indexOf(this.value) === -1) {\n      this.checked.push(this.value);\n    } else if (!this.state) {\n      const index = this.checked.indexOf(this.value);\n      if (index !== -1) {\n        this.checked.splice(index, 1);\n      }\n    }\n    // this.logger.debug(\"this.checked\", this.checked);\n  }\n\n  public disposeSubscription() {\n    if (this.subscription !== null) {\n      this.subscription.dispose();\n      this.subscription = null;\n    }\n  }\n\n  public unbind() {\n    this.disposeSubscription();\n  }\n\n  private async viewFullDescription(): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: SheetFullDescriptionModal,\n      model: this.sheet\n    }).whenClosed(async (response: DialogCloseResult) => {\n      return true;\n    });\n  }\n}\n","import { Sheet } from \"models/test-core/sheets/sheet\";\nimport { bindable, LogManager, bindingMode, autoinject, Disposable, BindingEngine } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { SheetFullDescriptionModal } from \"./sheet-full-description-modal\";\nimport { DialogCloseResult, DialogService } from \"aurelia-dialog\";\n\n@autoinject\nexport class SheetCardSmall {\n\n  protected logger: Logger;\n\n  @bindable\n  public sheet: Sheet;\n\n  @bindable({ defaultBindingMode: bindingMode.twoWay })\n  public checked: any[] = undefined; // public: any[]\n\n  @bindable\n  public value: any = null;    // public: any\n\n  @bindable\n  public disabled: boolean = false;// public: boolean\n\n  @bindable\n  public selectable: boolean = true;\n\n  @bindable\n  public showDimensions: boolean = false;\n\n  @bindable\n  public dimensionClick: Function = null;\n\n  protected subscription: Disposable = null;       // private: Disposable|null\n  protected state: boolean = false;             // private: boolean\n  styleString: string = '';\n  constructor(\n    private dialogService: DialogService,\n    public element: Element,\n    public bindingEngine: BindingEngine) {\n    this.logger = LogManager.getLogger(\"SheetCardSmall\");\n\n    // this.element = element;\n    // this.bindingEngine = bindingEngine;\n  }\n\n  public checkedChanged() { // public: Array|undefined, Array|undefined\n    // unsubscribe from the previous array's mutation (eg push/pop/splice)\n    this.disposeSubscription();\n    // subscribe to the current array's mutation\n    if (Array.isArray(this.checked)) {\n      this.subscription = this.bindingEngine.collectionObserver(this.checked)\n        .subscribe(() => this.synchronizeView());\n    }\n    this.synchronizeView();\n\n    // this.logger.debug(\"checkedChanged checked\", this.checked);\n  }\n\n  public valueChanged() {\n    this.synchronizeView();\n  }\n\n  // clicked() {\n  //   if (this.disabled) {\n  //     return;\n  //   }\n  //   this.state = !this.state;\n\n  //   // this.logger.debug(\"this.state\", this.state);\n  //   this.synchronizeModel();\n  // }\n\n  // keypress(event) { // private event: KeyboardEvent\n  //   if (this.disabled || event.ctrlKey || event.altKey || event.shiftKey || event.metaKey || event.which !== 32) {\n  //     return;\n  //   }\n\n  //   // space key was pressed...\n  //   this.state = !this.state;\n  //   this.synchronizeModel();\n  // }\n\n  public synchronizeView() { // private\n    if (Array.isArray(this.checked)) {\n      // this.logger.debug(\"synchronizeView value\", this.value);\n      // this.logger.debug(\"synchronizeView checked\", this.checked);\n      this.state = this.checked.indexOf(this.value) !== -1;\n    } else {\n      this.state = false;\n    }\n    if (this.sheet.warning === true) {\n      this.styleString = 'opacity: 0.3;';\n    }\n\n  }\n\n  public synchronizeModel() {\n    // this.logger.debug(\"synchronizeModel this.checked\", this.checked);\n    if (!Array.isArray(this.checked)) {\n      return;\n    }\n    if (this.state && this.checked.indexOf(this.value) === -1) {\n      this.checked.push(this.value);\n    } else if (!this.state) {\n      const index = this.checked.indexOf(this.value);\n      if (index !== -1) {\n        this.checked.splice(index, 1);\n      }\n    }\n\n    // this.logger.debug(\"this.checked\", this.checked);\n  }\n\n  public disposeSubscription() {\n    if (this.subscription !== null) {\n      this.subscription.dispose();\n      this.subscription = null;\n    }\n  }\n\n  public unbind() {\n    this.disposeSubscription();\n  }\n\n  private async viewFullDescription(): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: SheetFullDescriptionModal,\n      model: this.sheet\n    }).whenClosed(async (response: DialogCloseResult) => {\n      return true;\n    });\n  }\n}\n","module.exports = \"<template> <div class=\\\"card-draggable card card-shadow\\\" style=width:8rem> <div class=drag-handle> <img style.bind=styleString class=\\\"card-img-top d-block\\\" src.bind=sheet.sheetLanguages[0].thumbnailImageUrl /> <img if.bind=\\\"sheet.warning == true\\\" class=war-sheet-plan-sm src=\" + require(\"../../../../../../assets/images/tht_Adv_hrr_no_adq.png\") + \" /> <strong if.bind=\\\"sheet.warning == true\\\" class=war-sheet-plan-sm-strong> ${'main.admin.pages.test_core.sheets.warning' & t} <span class=\\\"badge badge-primary war-sheet-plan-sm-span\\\">${'main.admin.pages.test_core.sheets.contact' & t}</span> </strong> <div class=card-body> <p class=card-text> ${ sheet.name & t } </p> <small class=text-muted>${'main.admin.pages.test_management.report_templates.sheets.talent_cost' & t}: ${sheet.talentsPrice || 0}</small> </div> </div> <div class=\\\"card-footer d-flex\\\"> <div show.bind=selectable class=\\\"form-check custom-control custom-checkbox\\\"> <input type=checkbox class=\\\"form-check-input custom-control-input\\\" id=${sheet.id} checked.bind=state change.delegate=synchronizeModel() disabled.bind=disabled /> <label for=${sheet.id} class=\\\"form-check-label custom-control-label\\\">&nbsp;</label> </div> <button class=\\\"btn btn-link p-0\\\" if.bind=showDimensions click.delegate=dimensionClick() title=\\\"${'main.admin.pages.questionaries.questions.dimensions' & t}\\\"> <i class=material-icons>visibility</i> </button> <button class=\\\"btn btn-link text-right\\\" click.delegate=viewFullDescription()> <i class=material-icons> more_horiz </i> </button> </div> </div>  </template> \";","module.exports = \"<template> <div class=\\\"card-draggable card card-shadow\\\" style=width:10rem> <div class=drag-handle> <img style.bind=styleString class=\\\"card-img-top d-block\\\" src.bind=sheet.sheetLanguages[0].thumbnailImageUrl /> <img if.bind=\\\"sheet.warning == true\\\" class=war-sheet-plan src=\" + require(\"../../../../../../assets/images/tht_Adv_hrr_no_adq.png\") + \" /> <strong if.bind=\\\"sheet.warning == true\\\" class=war-sheet-plan-strong> ${'main.admin.pages.test_core.sheets.warning' & t} <span class=\\\"badge badge-primary war-sheet-plan-span\\\">${'main.admin.pages.test_core.sheets.contact' & t}</span> </strong> <div class=card-body> <p class=card-text> ${sheet.name & t} </p> <small class=text-muted>${'main.admin.pages.test_management.report_templates.sheets.talent_cost' & t}: ${sheet.talentsPrice || 0}</small> </div> </div> <div class=\\\"card-footer d-flex\\\"> <div show.bind=selectable class=\\\"form-check custom-control custom-checkbox\\\"> <input type=checkbox class=\\\"form-check-input custom-control-input\\\" id=${sheet.id} checked.bind=state change.delegate=synchronizeModel() disabled.bind=disabled /> <label for=${sheet.id} class=\\\"form-check-label custom-control-label\\\">&nbsp;</label> </div> <button class=\\\"btn btn-link p-0\\\" if.bind=showDimensions click.delegate=dimensionClick() title=\\\"${'main.admin.pages.questionaries.questions.dimensions' & t}\\\"> <i class=material-icons>visibility</i> </button> <button class=\\\"btn btn-link text-right\\\" click.delegate=viewFullDescription() title=\\\"${'commands.view_more' & t}\\\"> ${'commands.view_more' & t} <i class=material-icons> more_horiz </i> </button> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { Sheet } from \"models/test-core/sheets/sheet\";\nimport { Notification } from \"common/services/notification\";\nimport { CoreSheetService } from \"main/admin/services/test-core/core-sheet-service\";\n\n@autoinject()\nexport class SheetFullDescriptionModal {\n\n  private model: Sheet = new Sheet();\n  private logger: Logger;\n\n  constructor(\n    private coreSheetService: CoreSheetService,\n    private notification: Notification,\n    private dialogController: DialogController) {\n\n    this.logger = LogManager.getLogger(\"SheetFullDescriptionModal\");\n\n  }\n\n  private async activate(sheet: any): Promise<void> {\n    this.logger.debug(\"activate\");\n    this.model = await this.getItem(sheet.id);\n    this.model.sheetLanguages = sheet.sheetLanguages;\n  }\n\n  private async getItem(id: number): Promise<Sheet> {\n    return await this.coreSheetService.getById(id);\n  }\n\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <div class=row> <div class=\\\"col-12 text-center\\\"> <div innerhtml.bind=\\\"model.fullDescription & t\\\"></div> <img class=\\\"img-thumbnail rounded mx-auto d-block\\\" src.bind=model.sheetLanguages[0].imageUrl alt.bind=model.name /> </div> </div> <hr/> </ux-dialog-body> <ux-dialog-footer> <button click.trigger=dialogController.cancel()>${'commands.cancel' & t}</button> </ux-dialog-footer> </ux-dialog> </template> \";","import { DialogController } from \"aurelia-dialog\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { FileAcceptValidator } from \"common/utils/file-accept-validator\";\nimport { Sheet } from \"models/test-core/sheets/sheet\";\nimport { SheetLanguage } from \"models/test-core/sheets/sheetLanguage\";\n\n@autoinject()\nexport class SheetLanguageModal {\n\n  private model: SheetLanguage = new SheetLanguage();\n  private logger: Logger;\n\n  public name: string;\n  public description: string;\n\n  constructor(\n    private notification: Notification,\n    private dialogController: DialogController) {\n\n    this.logger = LogManager.getLogger(\"SheetLanguageModal\");\n\n  }\n\n  async activate(model: Sheet): Promise<void> {\n    this.logger.debug(\"activate\");\n    this.model = model.sheetLanguages[0];\n    this.name = model.name;\n    this.description = model.description;\n  }\n\n\n  public setThumbnailImage($event: any): void {\n    this.logger.debug(\"setFile\");\n    let file = <File>$event.target.files[0];\n\n    // this.logger.debug(\"file\", file);\n\n    let fileValidator = FileAcceptValidator.parse(\"image/*\", 1024 * 300);\n    if (fileValidator.isValid(file)) {\n      let reader: FileReader = new FileReader();\n      reader.readAsDataURL(file);\n      reader.onload = () => {\n        this.model.thumbnailImageFileName = file.name;\n        this.model.thumbnailImageUrl = URL.createObjectURL(file);\n      };\n    }\n    else {\n      this.notification.error(\"main.admin.pages.test_core.sheets.errors.error_bad_image\");\n\n    }\n  }\n\n  public setImage($event: any): void {\n    this.logger.debug(\"setFile\");\n    let file = <File>$event.target.files[0];\n\n    // this.logger.debug(\"file\", file);\n\n    let fileValidator = FileAcceptValidator.parse(\"image/*\", 1024 * 500);\n    if (fileValidator.isValid(file)) {\n      let reader: FileReader = new FileReader();\n      reader.readAsDataURL(file);\n      reader.onload = () => {\n        this.model.imageFileName = file.name;\n        this.model.imageUrl = URL.createObjectURL(file);\n      };\n    }\n    else {\n      this.notification.error(\"main.admin.pages.test_core.sheets.errors.error_bad_image\");\n\n    }\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'main.admin.pages.test_core.sheets.title' & t}</h2> <form class=form> <div class=\\\"row mb-3\\\"> <div class=col> <h5> ${name & t}</h5> <p> ${description & t} </p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> <div class=form-group> <label>${'main.admin.pages.test_core.sheets.thumbnailImage' & t}</label> <div class=custom-file> <input type=file class=custom-file-input id=model.thumbnailImage files.bind=model.thumbnailImage accept=image/* change.delegate=setThumbnailImage($event)> <label class=custom-file-label for=model.thumbnailImage>${model.thumbnailImageFileName}</label> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-6> <img if.bind=model.thumbnailImageUrl class=\\\"img-thumbnail w-50\\\" alt.bind=name src.bind=model.thumbnailImageUrl> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> <div class=form-group> <label>${'main.admin.pages.test_core.sheets.image' & t}</label> <div class=custom-file> <input type=file class=custom-file-input id=model.image files.bind=model.image accept=image/* change.delegate=setImage($event)> <label class=custom-file-label for=model.image>${model.imageFileName}</label> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-6> <img if.bind=model.imageUrl class=\\\"img-thumbnail w-50\\\" alt.bind=name src.bind=model.imageUrl> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=dialogController.ok()>${'commands.save' & t} </button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </div> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { DialogCloseResult, DialogService } from \"aurelia-dialog\";\nimport { autoinject, bindable, LogManager } from \"aurelia-framework\";\nimport { I18N } from 'aurelia-i18n';\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableCustomAttribute, UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\nimport { LanguageService } from 'main/admin/services/localizations/language-service';\nimport { Sheet } from 'models/test-core/sheets/sheet';\nimport { SheetLanguage } from 'models/test-core/sheets/sheetLanguage';\nimport { ChangeStateConfirmation } from \"../../../../components/change-state-confirmation\";\nimport { CoreSheetLanguageService } from '../../../services/test-core/core-sheet-language-service';\nimport { CoreSheetService } from '../../../services/test-core/core-sheet-service';\nimport { SheetLanguageModal } from \"./sheet-language-modal\";\n\n\n@autoinject()\nexport class SheetList {\n\n  private logger: Logger;\n  private languages;\n\n  @bindable\n  public languageId;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  public state: State;\n\n  constructor(\n    private store: StoreService,\n    private languageService: LanguageService,\n    private i18n: I18N,\n    private coreSheetService: CoreSheetService,\n    private coreSheetLanguageService: CoreSheetLanguageService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"SheetList\");\n\n    this.state = this.store.state;\n\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    return await this.coreSheetService.list(this.languageId, this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async activate(params: any): Promise<void> {\n\n\n  }\n\n\n  private async bind(): Promise<any> {\n    this.logger.debug(\"bind\");\n\n    this.languages = await this.languageService.getAll();\n    this.setUserLanguage();\n\n    return await this.databind();\n\n  }\n\n  public setUserLanguage() {\n    this.logger.debug(\"setUserLanguage\");\n    if (this.state && this.state.userBasicInfo) {\n      let activeCulture = this.state.userBasicInfo.culture;\n      let activeLang = this.languages.find((lg: { culture: string; }) => lg.culture === activeCulture);\n      if (activeLang) {\n        this.languageId = activeLang.id;\n      }\n    }\n  }\n\n  private async databind(): Promise<any> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.logger.debug(\"refresh\", response);\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async edit(item: Sheet): Promise<void> {\n    let orginialItem = JSON.parse(JSON.stringify(item));\n\n    return await this.dialogService.open({\n      viewModel: SheetLanguageModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.coreSheetLanguageService.update(item, this.languageId)\n          .then(async (model: SheetLanguage) => {\n\n            this.logger.debug(\"model.id\", model.id);\n            // item.id = model.id;\n            item.sheetLanguages[0].thumbnailImageUrl = model.thumbnailImageUrl;\n            this.notification.success(\"main.admin.pages.test_core.sheets.notifications.edited\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n      else {\n        Object.assign(item, orginialItem);\n      }\n    });\n  }\n\n  private async changeState(item: Sheet): Promise<void> {\n\n    return await this.dialogService.open({\n      viewModel: ChangeStateConfirmation,\n      model: this.i18n.tr(item.name)\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.coreSheetService.changeState(item.id)\n          .then(() => {\n\n            // sheet.isActive = !sheet.isActive;\n            this.notification.success(\"main.admin.pages.test_core.sheets.notifications.state_changed\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n      else {\n        item.isActive = !item.isActive;\n      }\n    });\n  }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\n\n@autoinject\nexport class SheetListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor() {\n    this.logger = LogManager.getLogger(\"SheetListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./sheet-list\"),\n        name: \"sheet-list\",\n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${'main.admin.pages.test_core.sheets.title' & t}</h2> <p> ${'main.admin.pages.test_core.sheets.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> <div class=\\\"col-10 col-md-4\\\"> <div class=form-group> <label for=languageId>${'main.admin.pages.archetypes.localization' & t}</label> <select value.bind=languageId class=form-control id=languageId change.delegate=\\\"databind() & debounce:100\\\"> <option repeat.for=\\\"option of languages\\\" model.bind=option.id>${option.name & t}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-6 scope=col>${'main.admin.pages.test_core.sheets.tile' & t}</th> <th class=col-md-4 scope=col>${'main.admin.pages.test_core.sheets.name' & t}</th> <th class=col-md-2 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=col-md-6><img if.bind=item.sheetLanguages[0].thumbnailImageUrl class=\\\"img-thumbnail w-20\\\" src.bind=item.sheetLanguages[0].thumbnailImageUrl>&nbsp;</td> <td class=\\\"col-md-4 text-truncate\\\"><span title=\\\"${item.name & t}\\\">${item.name & t}</span></td> <td class=\\\"col-md-2 d-flex\\\"> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: SheetUpdate\\\" click.delegate=edit(item)> <i class=material-icons>edit</i> </button> <span class=\\\"switch switch-sm pt-2\\\"> <input type=checkbox class=switch id=isActive_${$index} checked.bind=item.isActive change.delegate=changeState(item) global-permission-enable=\\\"can: SheetActivate\\\"/> <label for=isActive_${$index} class=form-check-label>&nbsp;</label> </span> </td> </tr> </tbody> </table> </div> </div> </div> </div> </template> \";","import { AuthorizationService } from 'aurelia-permission';\n\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class TestCoreChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n    this.logger = LogManager.getLogger(\"TestCoreChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./test-core-home\"),\n        name: \"test-core-home\",\n        title: this.i18n.tr(\"main.admin.pages.test_core.title\"),\n        settings: {\n          isHome: true\n        }\n      },\n            \n      {\n        route: \"core-company-competences\",\n        moduleId: PLATFORM.moduleName(\"./company-competences/company-competence-list-child-router\"),\n        name: \"core-company-competences-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.test_core.company_competences.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestCoreCompetencesView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestCoreCompetencesView]\n          },\n          info: this.i18n.tr(\"main.admin.pages.test_core.company_competences.info\")\n        }\n      },\n      \n      {\n        route: \"sheets\",\n        moduleId: PLATFORM.moduleName(\"./sheets/sheet-list-child-router\"),\n        name: \"sheet-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.test_core.sheets.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.SheetView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.SheetView]\n          },\n          info: this.i18n.tr(\"main.admin.pages.test_core.sheets.info\")\n        }\n      },\n\n      {\n        route: \"news\",\n        moduleId: PLATFORM.moduleName(\"./news/news-list-child-router\"),\n        name: \"news-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.test_core.news.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestCoreNewsView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestCoreNewsView]\n          },\n          info: this.i18n.tr(\"main.admin.pages.test_core.news.info\")\n        }\n      },\n\n      {\n        route: \"service-rating\",\n        moduleId: PLATFORM.moduleName(\"./service-rating/service-rating-list-child-router\"),\n        name: \"service-rating-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.test_core.service_rating.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestCoreNewsView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestCoreNewsView]\n          },\n          info: this.i18n.tr(\"main.admin.pages.test_core.service_rating.info\")\n        }\n      },\n\n      {\n        route: \"inbox\",\n        moduleId: PLATFORM.moduleName(\"./inbox/inbox-list-child-router\"),\n        name: \"inbox-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.inbox.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestCoreInboxView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestCoreInboxView]\n          },\n          info: this.i18n.tr(\"main.admin.pages.inbox.info\")\n        }\n      },\n\n\n\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","import { Router } from 'aurelia-router';\nimport { autoinject } from \"aurelia-framework\";\n\n@autoinject\nexport class TestManagementHome {\n\n  constructor(private router: Router) {\n\n  }\n\n\n}\n","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <section> <div class=\\\"row mb-4 text-center\\\"> <div class=col-12> <h1 class=display-4>${'main.admin.pages.test_core.title' & t}</h1> <p class=lead>${'main.admin.pages.test_core.info' & t}</p> </div> </div> </section> <section> <ul class=\\\"list-group list-group-flush\\\"> <li repeat.for=\\\"route of router.navigation\\\" if.bind=!route.settings.isHome class=\\\"list-group-item justify-content-between\\\"> <div class=\\\"row mb-3\\\"> <div class=col-10> <h3>${route.title}</h3> <p>${route.settings.info}</p> </div> <div class=\\\"col-2 text-right\\\"> <a class=\\\"btn btn-secondary\\\" href.bind=route.href>${'commands.config' & t}</a> </div> </div> </li> </ul> </section> </div> </div> </template> \";","import { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { Logger } from \"aurelia-logging\";\nimport { I18N } from \"aurelia-i18n\";\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { CustomCompanyModularQuestionaryService } from \"main/admin/services/questionaries/custom-company-modular-questionary-service\";\nimport { NoDiscType } from \"models/questionaries/noDiscType\";\nimport { Notification } from \"common/services/notification\";\nimport { AuthorizationService } from \"aurelia-permission\";\n\n@autoinject\nexport class CustomCompanyModularQuestionaryChild {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private customCompanyModularQuestionaryService: CustomCompanyModularQuestionaryService,\n    private notification: Notification,\n    private authorizationService: AuthorizationService,\n  ) {\n\n    this.logger = LogManager.getLogger(\"GroupChildRouter\");\n  }\n\n  private async activate(params: any): Promise<void> {\n    try {\n      if (!isNaN(params.companyId)) {\n        this.customCompanyModularQuestionaryService.client.currentCompanyId = +params.companyId;\n      }\n\n      if (!isNaN(params.questionaryId)) {\n        const questionary = await this.customCompanyModularQuestionaryService.getById(+params.questionaryId);\n\n        if (questionary && questionary.noDiscType === NoDiscType.Performance) {\n          const scalesRoute = this.router.navigation.find(n => n.config.name === \"modular-scale-list-child-router\");\n          if (scalesRoute) {\n            scalesRoute.config.nav = false;\n            this.router.navigation = this.router.navigation.filter(n => n.config.nav !== false);\n          }\n        }\n      }\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    config.map([\n\n      {\n        route: \"\",\n        name: \"custom-company-modular-questionary-edit\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-modular-questionary-edit\"),\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.questionaries.modular-questionary\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.TestManagementCustomCompanyModularQuestionaryView]\n          }\n        }\n      },\n      {\n        route: \"custom-company-modular-questions\",\n        name: \"custom-company-modular-question-list-child-router\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-modular-questions/custom-company-modular-question-list-child-router\"),\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.modular-questionaries.questions.title\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.TestManagementCustomCompanyModularQuestionaryView]\n          }\n        }\n      },\n      {\n        route: \"modular-scales\",\n        name: \"modular-scale-list-child-router\",\n        moduleId: PLATFORM.moduleName(\"../../modular-scales/modular-scale-list-child-router\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.QuestionaryView),\n        title: this.i18n.tr(\"main.admin.pages.modular-questionaries.scales.title\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.QuestionaryView]\n          }\n        }\n      },\n    ]);\n\n    this.router = router;\n  }\n\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.modular-questionaries.create_card.title' & t}</h5> <p t=[html]main.admin.pages.modular-questionaries.create_card.info>Create new questionaries</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: custom-company-modular-questionary-child-router; params.bind: {questionaryId:'create'}\\\">${'commands.create' & t}</a> </div> </div> </template> \";","import { Router } from \"aurelia-router\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { ItemToQualify } from \"models/questionaries/itemToQualify\";\nimport { QuestionaryType } from \"models/questionaries/questionaryType\";\nimport { Language } from \"models/localizations/language\";\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { CoreLanguageService } from \"main/admin/services/localizations/core-language-service\";\nimport { Company } from \"models/companies/company\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from 'common/store/store-service';\nimport { NoDiscType } from \"models/questionaries/noDiscType\";\nimport { I18N } from \"aurelia-i18n\";\nimport { CustomCompanyModularQuestionaryService } from 'main/admin/services/questionaries/custom-company-modular-questionary-service';\n@autoinject()\nexport class CustomCompanyModularQuestionaryEdit {\n\n  private logger: Logger;\n  public companyId: number;\n  private company: Company;\n  private parameters = new UxDatatableParameters();\n  private model: Questionary = new Questionary();\n  private languages: Language[] = [];\n  private order: number = 1;\n  private validationController: ValidationController;\n  public isDisabled: boolean;\n  private state: State;\n  \n  constructor(\n    private store: StoreService,\n    private customCompanyModularQuestionaryService: CustomCompanyModularQuestionaryService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private router: Router,\n    public languagesService: CoreLanguageService,\n    public questionaryType: QuestionaryType,\n    public itemToQualify: ItemToQualify,\n    private i18n: I18N\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n    this.logger = LogManager.getLogger(\"CustomCompanyModularQuestionaryEdit\");\n    this.state = this.store.state;\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.modular-questionaries.name\").required()\n      .ensure(\"noDiscType\").displayName(\"main.admin.pages.modular-questionaries.team_types.title\").required()\n      .ensure(\"languageId\").displayName(\"main.admin.pages.modular-questionaries.language\").required()\n      .ensure(\"itemToQualify\").displayName(\"main.admin.pages.modular-questionaries.item_to_qualify\").required()\n      .on(this.model);\n  }\n\n  private async activate(params: any): Promise<void> {\n    try {\n      this.isDisabled = true;\n\n      this.languages = await this.languagesService.getAll();\n      if (!isNaN(params.companyId)) {\n        this.companyId = +params.companyId;\n        this.customCompanyModularQuestionaryService.client.currentCompanyId = this.companyId;\n        this.company = this.state.companies.find(x => x.id == this.companyId);     \n        this.isDisabled = false;\n\n        if (!isNaN(params.questionaryId)) {\n          this.model = await this.customCompanyModularQuestionaryService.getById(+params.questionaryId);\n        }\n        this.configureValidationRules();\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(keepEditing);\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n  \n  public changeItemToQualify() {   \n    if (this.model.noDiscType == NoDiscType.General) {\n      this.isDisabled = false;\n    }\n    \n    if (this.model.noDiscType == NoDiscType.Performance) {\n      this.model.itemToQualify = ItemToQualify.Observed;\n      this.isDisabled = true;\n    }\n  }\n\n  get canSave() {\n    return !this.customCompanyModularQuestionaryService.client.isRequesting;\n  }\n  \n  public async save(keepEditing: boolean): Promise<any> {\n    this.logger.info(\"save\");\n    try {\n      if (!this.model.id) {\n        this.model.questionaryType = QuestionaryType.NoDisc;\n        this.model.order = this.order;\n        let response: Questionary = await this.customCompanyModularQuestionaryService.create(this.model);      \n        this.model.id = response.id;\n        this.notification.success(\"main.admin.pages.questionaries.messages.questionary_added\");\n\n        if (!keepEditing) {\n          return await this.router.navigateToRoute(\"custom-company-modular-questionary-list\");\n        } else {\n          return await this.router.navigateToRoute(\"custom-company-modular-questionary-child-router\", { questionaryId: this.model.id });\n        }\n\n      } else {\n        await this.customCompanyModularQuestionaryService.update(this.model);\n        this.notification.success(\"main.admin.pages.questionaries.messages.questionary_edited\");\n\n        if (!keepEditing) {\n          return await this.router.navigateToRoute(\"custom-company-modular-questionary-list\");\n        }\n      }\n\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../../models/questionaries/questionaryTypeViewEngineHooks></require> <require from=../../../../../models/questionaries/itemToQualifyViewEngineHooks></require> <require from=../../../../../models/questionaries/organizationTypeViewEngineHooks></require> <require from=../../../../../models/questionaries/modularQuestionaryNoDiscTypeViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2 if.bind=!model.id>${'main.admin.pages.modular-questionaries.new' & t}</h2> <h2 if.bind=model.id>${model.name}</h2> <p>${'main.admin.pages.modular-questionaries.editing_info' & t}</p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <label for=Name t=main.admin.pages.modular-questionaries.name>Name</label> <input type=text value.bind=\\\"model.name & validate\\\" class=form-control id=Name t=[placeholder]main.admin.pages.modular-questionaries.name> </div> </div> <div class=form-group if.bind=!model.id> <label for=noDiscType t=main.admin.pages.modular-questionaries.team_types.title>No Disc type</label> <select value.bind=\\\"model.noDiscType & validate\\\" class=form-control id=noDiscType change.delegate=changeItemToQualify() disabled.bind=isDisabled> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of NoDiscTypes\\\" model.bind=NoDiscType[option]> ${'main.admin.pages.questionaries.no_disc_type.' + option & t} </option> </select> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group if.bind=!model.id> <label for=itemToQualify t=main.admin.pages.modular-questionaries.item_to_qualify>Item to qualify</label> <select value.bind=model.itemToQualify class=form-control id=itemToQualify disabled.bind=isDisabled> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of ItemsToQualify\\\" model.bind=ItemToQualify[option]> ${'main.admin.pages.questionaries.items_to_qualify.' + option & t} </option> </select> </div> <div class=form-group if.bind=\\\"model.id && model.questionaryType == QuestionaryType.NoDisc\\\"> <label for=noDiscType t=main.admin.pages.modular-questionaries.team_types.title>Team type</label> <p>${'main.admin.pages.questionaries.no_disc_type.' + NoDiscType[model.noDiscType] & t}</p> </div> <div class=form-group if.bind=\\\"model.id && model.questionaryType == QuestionaryType.NoDisc\\\"> <label for=itemToQualify t=main.admin.pages.modular-questionaries.item_to_qualify>Team type</label> <p>${'main.admin.pages.questionaries.items_to_qualify.' + ItemToQualify[model.itemToQualify] & t}</p> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <label for=localizationId t=main.admin.pages.modular-questionaries.language>Language</label> <select value.bind=\\\"model.languageId & validate\\\" class=form-control id=languageId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"item of languages\\\" model.bind=item.id>${item.name}</option> </select> </div> </div> </div> <div class=\\\"row mb-3 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=endButton checked.bind=model.hasEndButton /> <label for=endButton class=form-check-label> ${'main.admin.pages.modular-questionaries.end_button' & t} </label> </span> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button type=button click.delegate=submit(true) global-permission-show=\\\"can: TestManagementCustomCompanyModularQuestionaryCreate\\\" class=\\\"btn btn-primary btn-round\\\" t=commands.save_and_continue disabled.bind=!canSave> Save and edit </button> <button type=button click.delegate=submit(false) global-permission-show=\\\"can: TestManagementCustomCompanyModularQuestionaryCreate\\\" class=\\\"btn btn-primary btn-round\\\" t=commands.save disabled.bind=!canSave> Save </button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: custom-company-modular-questionary-list;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </div> </template> \";","import { Router } from \"aurelia-router\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { Notification } from \"common/services/notification\";\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { QuestionaryType } from \"models/questionaries/questionaryType\";\nimport { DeleteConfirmation } from \"../../../../components/delete-confirmation\";\nimport { ChangeStateConfirmation } from \"../../../../components/change-state-confirmation\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { State } from \"common/store/store-model\";\nimport { Company } from \"models/companies/company\";\nimport { StoreService } from \"common/store/store-service\";\nimport { CustomCompanyModularQuestionaryService } from \"main/admin/services/questionaries/custom-company-modular-questionary-service\";\n\n@autoinject()\nexport class CustomCompanyModularQuestionaryList {\n\n  private logger: Logger;\n  private params: any = {};\n  public companyId: number;\n  public company: Company;\n  private parameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n  private isLoaded: boolean = false;\n  private state: State;\n\n  constructor(\n    private store: StoreService,\n    private customCompanyModularQuestionaryService: CustomCompanyModularQuestionaryService,\n    private dialogService: DialogService,\n    private router: Router,\n    private notification: Notification,\n    public questionaryType: QuestionaryType) {\n\n    this.logger = LogManager.getLogger(\"CustomCompanyModularQuestionaryList\");\n    this.state = this.store.state;\n  }\n\n  private async activate(params: any): Promise<void> {\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n      this.companyId = +this.params.companyId;\n      if (this.companyId) {\n        this.customCompanyModularQuestionaryService.client.currentCompanyId = this.companyId;\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n        this.isLoaded = true;\n        return await this.databind();\n      }\n    }\n  }\n\n  private async databind(): Promise<any> {\n    this.logger.debug(\"databind\");\n\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.logger.debug(\"refresh\", response);\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n\n  }\n\n  private refresh = (): Promise<UxDatatableResponse> => {\n    return this.customCompanyModularQuestionaryService.list(this.parameters);\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  public async delete(id: number, name: string): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.customCompanyModularQuestionaryService.delete(id)\n          .then(() => {\n            let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === id);\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"main.admin.pages.questionaries.messages.questionary_deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  public async changeState(item: Questionary): Promise<void> {\n    this.logger.debug(\"item.isActive\", item.isActive);\n    return await this.dialogService.open({\n      viewModel: ChangeStateConfirmation,\n      model: item.name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.customCompanyModularQuestionaryService.changeState(item.id)\n          .then(() => {\n            this.notification.success(\"main.admin.pages.questionaries.messages.questionary_activation_changed\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n      else{\n        item.isActive = !item.isActive;\n      }\n    });\n  }\n\n  private async getPrivateMedia(privateUrl: string) {\n    try {\n      if (privateUrl != null) {\n        return this.router.navigate(privateUrl);\n      }\n    } catch (error){\n      this.notification.error(error);\n    }\n  }\n}\n","\nimport { LogManager } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\n\nexport class CustomCompanyModularQuestionaryListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor() {\n    this.logger = LogManager.getLogger(\"CustomCompanyModularQuestionaryListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-modular-questionary-list\"),\n        name: \"custom-company-modular-questionary-list\",\n\n      },\n\n      {\n        route: \"custom-company-modular-questionary/:questionaryId\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-modular-questionary-child-router\"),\n        name: \"custom-company-modular-questionary-child-router\",\n\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=./custom-company-modular-questionary-create-card.html></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <div> <h2>${company.name} / ${'main.admin.pages.modular-questionaries.title' & t}</h2> <p>${'main.admin.pages.modular-questionaries.subtitle' & t}</p> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-4 scope=col t=main.admin.pages.modular-questionaries.name>Name</th> <th class=col-md-4 scope=col t=main.admin.pages.modular-questionaries.language>Language</th> <th class=col-md-4 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-4 text-truncate\\\"><span title=${item.name}>${item.name}</span></td> <td class=\\\"col-md-4 text-truncate\\\"><span title=${item.languageName}>${item.languageName}</span></td> <td class=\\\"col-md-4 d-flex\\\"> <a class=\\\"btn btn-link\\\" global-permission-show=\\\"can: TestManagementCustomCompanyModularQuestionaryView\\\" route-href=\\\"route: custom-company-modular-questionary-child-router; params.bind: {questionaryId:item.id}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: TestManagementCustomCompanyModularQuestionaryDelete\\\" click.delegate=\\\"delete(item.id, item.name)\\\" title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> <a href=# class=\\\"btn btn-link\\\" click.delegate=getPrivateMedia(item.logFileUrl) if.bind=\\\"item.logFileUrl && item.logFileUrl != ''\\\" global-permission-show=\\\"can: TestManagementCustomCompanyModularQuestionaryView\\\" title=\\\"${'commands.view' & t}\\\"> <i class=material-icons style=font-size:x-large>cloud_download</i> </a> <span class=\\\"switch switch-sm pt-2 btn\\\"> <input type=checkbox class=switch id=isActive_${$index} checked.bind=item.isActive change.delegate=changeState(item) global-permission-enable=\\\"can: TestManagementCustomCompanyModularQuestionaryUpdate\\\"/> <label for=isActive_${$index} class=form-check-label>&nbsp;</label> </span> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> <div class=mb-3 global-permission-show=\\\"can: TestManagementCustomCompanyModularQuestionaryCreate\\\"> <custom-company-modular-questionary-create-card></custom-company-modular-questionary-create-card> </div> </div> </div> </template> \";","import { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { Logger } from \"aurelia-logging\";\nimport { I18N } from \"aurelia-i18n\";\nimport { LogManager, autoinject } from \"aurelia-framework\";\n\n@autoinject\nexport class CustomCompanyModularQuestionChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"CustomCompanyModularQuestionChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    config.map([\n\n      {\n        route: \"\",\n        name: \"custom-company-modular-question-edit\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-modular-question-edit\"),\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.modular-questionaries.question.title\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.TestManagementCustomCompanyModularQuestionaryView]\n          }\n        }\n      },\n      \n    ]);\n\n    this.router = router;\n  }\n\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=main.admin.pages.questionaries.questions.create_card.title>title</h5> <p class=card-text t=[html]main.admin.pages.questionaries.questions.create_card.info>Create new question</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: custom-company-modular-question-create-type-selection\\\">${'commands.create' & t}</a> </div> </div> </template> \";","import { FileAcceptValidator } from 'common/utils/file-accept-validator';\nimport { Router } from \"aurelia-router\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { Question } from \"models/questions/question\";\nimport { QuestionType } from \"models/questions/questionType\";\nimport { QuestionUse } from \"models/questions/questionUse\";\nimport { QuestionHistoryModal } from 'main/components/question-history-modal';\nimport { ResponseOption } from \"models/questions/response-option\";\nimport { State } from 'common/store/store-model';\nimport { Company } from 'models/companies/company';\nimport { StoreService } from 'common/store/store-service';\nimport { ThematicAssociationService } from 'main/admin/services/thematic-groups/thematic-association-service';\nimport { CustomCompanyModularQuestionService } from 'main/admin/services/questionaries/custom-company-modular-question-service';\nimport { QuestionHistoryService } from 'main/admin/services/questionaries/question-history-service';\nimport { QuestionHistory } from 'models/questions/questionHistory';\nimport { AuthorizationService } from 'aurelia-permission';\nimport PredefinedPermissions from 'config/predefined-permissions';\nimport { I18N } from 'aurelia-i18n';\n@autoinject()\nexport class CustomCompanyModularQuestionEdit {\n\n  private logger: Logger;\n  private model: Question = new Question();\n  private validationController: ValidationController;\n  private params: any = {};\n  public companyId: number;\n  public company: Company;\n  private state: State;\n  public isDisabled: boolean;\n  private countOfQuestion: number = 1;\n  public observation: string = \"\";\n\n  constructor(\n    private store: StoreService,\n    private customCompanyModularQuestionService: CustomCompanyModularQuestionService,\n    private dialogService: DialogService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private thematicAssociationService: ThematicAssociationService,\n    private questionHistoryService: QuestionHistoryService,\n    private router: Router,\n     private i18n: I18N,\n    private authorizationService: AuthorizationService) {\n      this.logger = LogManager.getLogger(\"CustomCompanyModularQuestionEdit\");\n      this.validationController = this.validationControllerFactory.createForCurrentScope();\n      this.validationController.addRenderer(new BootstrapFormRenderer());\n      this.state = this.store.state;\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"formulation\").displayName(\"main.admin.pages.modular-questionaries.questions.question\").required()\n      .ensure(\"questionUse\").displayName(\"main.admin.pages.modular-questionaries.questions.use\").required()\n      .on(this.model); \n    this.model.responseOptions.forEach(option => {\n      this.applyWeightValidation(option);\n    });\n  }\n\n  private applyWeightValidation(option: ResponseOption): void {\n    ValidationRules\n      .ensure(\"weight\")\n      .displayName(\"main.admin.pages.modular-questionaries.questions.weight\")\n      .required()\n      .satisfies(value => value >= 0 && value <= 100)\n      .withMessage(this.i18n.tr(\"main.admin.pages.modular-questionaries.questions.range\"))\n      .on(option);\n  }\n\n  private async activate(params: any): Promise<void> {\n\n    try {\n\n      if (!isNaN(params.companyId)) {\n        this.logger.info(\"Activated for edit with id\", params.questionId);\n        this.companyId = +params.companyId;\n        this.customCompanyModularQuestionService.client.currentCompanyId = this.companyId;\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n        if (!isNaN(params.questionId)) {\n          this.model = await this.customCompanyModularQuestionService.getById(+params.questionId);\n\n          // Independent request to show response options weights\n          if (this.authorizationService.isAuthorized(PredefinedPermissions.QuestionaryView)) {\n            let associationWeights = await this.thematicAssociationService.getWeightByQuestionId(this.model.id);\n            this.assignWeightsToResponseOptions(associationWeights);\n          }\n        }\n        else if (!isNaN(params.questionaryId) && !isNaN(params.questionTypeId)) {\n          this.logger.debug(\"params.questionTypeId: \", params.questionTypeId);\n          this.model.questionaryId = <number>params.questionaryId;\n          this.model.questionType = <QuestionType>params.questionTypeId;\n          this.logger.debug(\"this.model.questionType: \", QuestionType[this.model.questionType]);                               \n          this.countOfQuestion = Number(params.order);\n\n          if (this.model.questionType == QuestionType.DescriptiveText || this.model.questionType == QuestionType.OpenAnswerQuestion) {\n            this.addResponseOption(true);\n          }\n        }\n      }\n      this.configureValidationRules();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public async openHistory(): Promise<void> {\n    try {\n      let histories = await this.questionHistoryService.getByQuestionId(this.model.id);\n      return await this.dialogService.open({\n        viewModel: QuestionHistoryModal,\n        model: histories\n      }).whenClosed(() => null);\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public async CodeRandom(): Promise<string> {\n    let length: number = 5;\n    let result: string = '';\n    let characters: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n    let charactersLength: number = characters.length;\n    for (var i = 0; i < length; i++) {\n      result += characters.charAt(Math.floor(Math.random() * charactersLength));\n    }\n    return result;\n  }\n\n  public async submit(saveAndContinue: boolean): Promise<void> {\n    this.logger.debug(\"submit\");\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          if (this.model.responseOptions.length > 0 && this.model.questionType !== QuestionType.DescriptiveText) {\n            let validDescriptiveText: boolean = true;\n            if (validDescriptiveText) {\n              return await this.save(saveAndContinue);\n            }\n          } else {\n            return await this.save(saveAndContinue);\n          }\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.customCompanyModularQuestionService.client.isRequesting;\n  }\n\n  public async save(saveAndContinue: boolean): Promise<any> {\n    this.logger.debug(\"save\");\n    if (!this.model.id) {\n\n      this.model.code = (this.model.code && this.model.code.trim() !== \"\") ? this.model.code : await this.CodeRandom();\n      this.model.order = this.model.order;\n      this.model.questionUse = this.model.questionUse;\n      this.model.allowOneResponseByColumn = this.model.questionType == QuestionType.Matrix ? true : null;\n      this.model.allowOneResponseByRow = this.model.questionType == QuestionType.Matrix ? true : null;\n      this.model.isTextSizeAvailable = (this.model.questionType == QuestionType.OpenAnswerQuestion || this.model.questionType == QuestionType.SingleChoiceListWithComments) ? true : null;\n      this.model.textSizeMin = this.model.questionType == QuestionType.OpenAnswerQuestion ? 1 : null;\n      this.model.textSizeMax = (this.model.questionType == QuestionType.OpenAnswerQuestion || this.model.questionType == QuestionType.SingleChoiceListWithComments) ? 5000 : null;\n      this.model.textSizeMin = this.model.questionType == QuestionType.SingleChoiceListWithComments ? 0 : null;\n\n      return await this.customCompanyModularQuestionService.create(this.model)\n        .then(async (question: Question) => {\n          this.notification.success(\"main.admin.pages.questionaries.questions.messages.question_added\");\n          if (!saveAndContinue) {\n            return await this.router.navigateToRoute(\"custom-company-modular-questions\");\n          }\n          else {\n            return await this.router.navigateToRoute(\"custom-company-modular-question-child-router\", { questionId: question.id });\n          }\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    } else {\n\n      if (this.observation.trim() != \"\") {\n        let questionHistory: QuestionHistory = new QuestionHistory();\n        questionHistory.id = 0;\n        questionHistory.observation = this.observation;\n        questionHistory.questionId = this.model.id;\n        if (!this.model.questionHistories) {\n          this.model.questionHistories = new Array<QuestionHistory>();\n        }\n        this.model.questionHistories.push(questionHistory);\n      }\n\n      return await this.customCompanyModularQuestionService.update(this.model)\n        .then(async (model: Question) => {\n          this.notification.success(\"main.admin.pages.questionaries.questions.messages.question_edited\");\n          this.model.questionHistories = new Array<QuestionHistory>();\n          this.observation = \"\";\n          if (!saveAndContinue) {\n            return await this.router.navigateToRoute(\"custom-company-modular-questions\");\n          }\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    }\n  }\n\n  public addResponseOption(isColumn: boolean): void {\n    this.logger.info(\"addReponseOption\");\n    let responseOption: ResponseOption = new ResponseOption();\n    responseOption.id = 0;\n    responseOption.order = this.model.responseOptions.length;\n    responseOption.isColumn = isColumn;\n    responseOption.option = \"\";\n    responseOption.weight = 0;\n    this.model.responseOptions.push(responseOption);\n    this.applyWeightValidation(responseOption);\n  }\n\n  public deleteResponseOption(index: number) {\n    let responseOption = this.model.responseOptions[index];\n    //validation\n    this.validationController.removeObject(responseOption);\n    //delete\n    this.model.responseOptions.splice(index, 1);\n  }\n\n  public setFile($event: any, item: ResponseOption): void {\n    this.logger.debug(\"setFile\");\n    let file = <File>$event.target.files[0];\n    let fileValidator = FileAcceptValidator.parse(\"image/*\", 1024 * 300);\n    if (fileValidator.isValid(file)) {\n      let reader: FileReader = new FileReader();\n      reader.readAsDataURL(file);\n      reader.onload = () => {\n        let base64data: any = reader.result;\n        item.thumbnailImage = base64data;\n        item.option = file.name;\n        item.thumbnailImageUrl = URL.createObjectURL(file);\n      };\n    }\n    else {\n      this.notification.error(\"main.admin.pages.questionaries.questions.errors.error_bad_image\");\n\n    }\n  }\n\n  public unSetFile(item: ResponseOption): void {\n    item.option = null;\n    item.thumbnailImage = null;\n    item.thumbnailImageUrl = null;\n  }\n\n  public getQuestionUsesByQuestionType(): Array<any> {\n    this.logger.debug(\"getQuestionUsesByQuestionType\");\n    let result: Array<any> = [];\n    this.logger.debug(\"getQuestionUsesByQuestionType this.model.questionType\", this.model.questionType);\n    switch (+this.model.questionType) {\n      case QuestionType.SingleChoiceList:\n      case QuestionType.SingleImageChoiceList:\n      case QuestionType.SingleChoiceListWithComments:\n      case QuestionType.MultipleChoiceList:\n      case QuestionType.MultipleImageChoiceList:\n      case QuestionType.Matrix:\n        this.logger.debug(\"QuestionType.All\");\n        result = Object.keys(QuestionUse)\n          .filter(key => QuestionUse[key] === QuestionUse.Evaluation || QuestionUse[key] === QuestionUse.Example)\n          .map(key => ({ id: QuestionUse[key], name: key }));\n        break;\n      case QuestionType.DescriptiveText:\n        this.logger.debug(\"QuestionType.DescriptiveText\");\n        result = Object.keys(QuestionUse)\n          .filter(key => QuestionUse[key] === QuestionUse.Instruction || QuestionUse[key] === QuestionUse.Warning || QuestionUse[key] === QuestionUse.Farewell)\n          .map(key => ({ id: QuestionUse[key], name: key }));\n        break;\n      case QuestionType.OpenAnswerQuestion:\n        this.logger.debug(\"QuestionType.OpenAnswerQuestion\");\n        result = Object.keys(QuestionUse)\n          .filter(key => QuestionUse[key] === QuestionUse.Evaluation || QuestionUse[key] === QuestionUse.Example || QuestionUse[key] === QuestionUse.Warning)\n          .map(key => ({ id: QuestionUse[key], name: key }));\n        break;\n      default:\n        break;\n    }\n    this.logger.debug(\"getQuestionUsesByQuestionType result:\", result);\n    return result;\n  }\n\n  private assignWeightsToResponseOptions(weights: any[]): void {\n    if (!Array.isArray(weights)) return;\n    for (const weightObj of weights) {\n      const option = this.model.responseOptions.find(o => o.id === weightObj.id);\n      if (option) {\n        option.weight = weightObj.weight;\n      }\n    }\n  }\n}\n","module.exports = \"<template> <require from=../../../../../../models/questions/questionTypeViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2 if.bind=!model.id>${'main.admin.pages.modular-questionaries.questions.create' & t}</h2> <h2 if.bind=model.id>${'main.admin.pages.modular-questionaries.questions.edit' & t}</h2> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-12> <h3>${'main.admin.pages.questionaries.questions.question_type.' + QuestionType[model.questionType] & t}</h3> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-11 col-12\\\"> <p>${'main.admin.pages.modular-questionaries.questions.edit_info' & t}</p> </div> <div class=\\\"col-md-1 col-12 d-flex justify-content-end\\\"> <button if.bind=model.id type=button class=\\\"btn btn-primary btn-round btn-sm\\\" click.delegate=openHistory()> <i class=material-icons>history</i> </button> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=row style=margin-bottom:50px> <div class=col-12> <label for=Question t=main.admin.pages.modular-questionaries.questions.question>Question</label> <quill-editor value.bind=\\\"model.formulation & validate\\\"></quill-editor> </div> </div> <div class=clearfix></div> <div class=\\\"row mb-4\\\"> <div class=col-12> <p>&nbsp;</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=Order t=main.admin.pages.modular-questionaries.questions.order>Order</label> <input type=number value.bind=\\\"model.order & validate\\\" class=form-control id=Order t=[placeholder]main.admin.pages.modular-questionaries.questions.order disabled.bind=isDisabled> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=use t=main.admin.pages.modular-questionaries.questions.use>Use</label> <select value.bind=\\\"model.questionUse & validate\\\" class=form-control id=use t=[placeholder]main.admin.pages.modular-questionaries.questions.use disabled.bind=isDisabled> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of getQuestionUsesByQuestionType(model.questionType)\\\" model.bind=option.id> ${'main.admin.pages.questionaries.questions.question_use.' + option.name & t} </option> </select> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=Code t=main.admin.pages.modular-questionaries.questions.code>Code</label> <input type=text value.bind=\\\"model.code & validate\\\" class=form-control id=Code t=[placeholder]main.admin.pages.modular-questionaries.questions.code> </div> </div> </div> <div if.bind=model.id class=row> <div class=col> <p>${'main.admin.pages.modular-questionaries.questions.observations' & t}</p> </div> </div> <div if.bind=model.id class=row> <div class=col> <div class=form-group> <input value.bind=observation class=form-control type=text t=[placeholder]main.admin.pages.modular-questionaries.questions.observation.info /> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.SingleChoiceList || model.questionType == QuestionType.MultipleChoiceList || model.questionType == QuestionType.SingleChoiceListWithComments\\\"> <div class=col-12> <h4>${'main.admin.pages.modular-questionaries.questions.responses' & t}</h4> <ul class=list-group> <li class=list-group-item if.bind=\\\"model.responseOptions.length > 0\\\"> <div class=row> <div class=col-8> </div> <div class=\\\"col-2 text-center\\\"> <strong global-permission-show=\\\"can: QuestionaryView\\\">${'main.admin.pages.modular-questionaries.questions.weight' & t}</strong> </div> <div class=col-2> </div> </div> </li> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\"> <div class=row> <div class=col-8> <div class=form-group> <input type=text name=item value.bind=item.option class=form-control /> </div> </div> <div class=col-2> <div class=form-group> <input global-permission-show=\\\"can: QuestionaryView\\\" type=number name=item-weight value.bind=\\\"item.weight & validate\\\" min=0 max=100 class=form-control /> </div> </div> <div class=col-2> <button type=button class=\\\"btn btn-link\\\" click.delegate=deleteResponseOption($index)> <i class=material-icons>archive</i> </button> </div> </div> </li> </ul> <br/> <button type=button class=\\\"btn btn-primary btn-round\\\" click.delegate=addResponseOption(false)> <i class=material-icons>add</i> </button> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.SingleImageChoiceList || model.questionType == QuestionType.MultipleImageChoiceList\\\"> <div class=col-12> <h4>${'main.admin.pages.modular-questionaries.questions.responses' & t}</h4> <ul class=list-group> <li class=list-group-item if.bind=\\\"model.responseOptions.length > 0\\\"> <div class=row> <div class=\\\"col-md-4 col-8\\\"> </div> <div class=\\\"col-2 text-center\\\"> <strong global-permission-show=\\\"can: QuestionaryView\\\">${'main.admin.pages.modular-questionaries.questions.weight' & t}</strong> </div> <div class=col-2> </div> </div> </li> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\"> <div class=row> <div class=\\\"col-md-4 col-8\\\"> <div class=custom-file> <input type=file class=custom-file-input id=item.option accept=image/* change.delegate=\\\"setFile($event, item)\\\"> <label class=custom-file-label for=item.option>${item.option}</label> </div> <img if.bind=item.thumbnailImageUrl class=\\\"img-thumbnail w-50\\\" alt.bind=item.option src.bind=item.thumbnailImageUrl> </div> <div class=col-2> <div class=form-group> <input global-permission-show=\\\"can: QuestionaryView\\\" type=number name=item-weight value.bind=\\\"item.weight & validate\\\" min=0 max=100 class=form-control /> </div> </div> <div class=col-2> <button type=button class=\\\"btn btn-link\\\" click.delegate=deleteResponseOption($index)> <i class=material-icons>archive</i> </button> </div> </div> </li> </ul> <br/> <button type=button class=\\\"btn btn-primary btn-round\\\" click.delegate=addResponseOption(false)> <i class=material-icons>add</i> </button> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.DescriptiveText\\\"> <div class=col-12> <h4>${'main.admin.pages.modular-questionaries.questions.descriptive_text_image' & t}</h4> <ul class=list-group> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\"> <div class=row> <div class=\\\"col-md-4 col-10\\\"> <div class=custom-file> <input type=file class=custom-file-input id=item.option accept=image/* change.delegate=\\\"setFile($event, item)\\\"> <label class=custom-file-label for=item.option>${item.option}</label> </div> <img if.bind=item.thumbnailImageUrl class=\\\"img-thumbnail w-50\\\" alt.bind=item.option src.bind=item.thumbnailImageUrl> </div> <div class=col-2> <div class=form-group if.bind=item.option> <button type=button class=\\\"btn btn-link\\\" click.delegate=unSetFile(item)> <i class=material-icons>archive</i> </button> </div> </div> </div> </li> </ul> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.OpenAnswerQuestion\\\"> <div class=col-12> <h4>${'main.admin.pages.modular-questionaries.questions.ideal_response' & t}</h4> <div class=form-group> <input type=text value.bind=model.responseOptions[0].option name=item class=form-control> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-actions> <button global-permission-show=\\\"can: TestManagementCustomCompanyModularQuestionaryCreate\\\" type=button click.delegate=submit(true) class=\\\"btn btn-primary btn-round\\\" t=commands.save_and_continue disabled.bind=!canSave> Save and edit </button> <button global-permission-show=\\\"can: TestManagementCustomCompanyModularQuestionaryCreate\\\" type=button click.delegate=submit(false) class=\\\"btn btn-primary btn-round\\\" t=commands.save disabled.bind=!canSave> Save </button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: custom-company-modular-questions;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </div> </template> \";","import config from 'config.js';\nimport { Router } from \"aurelia-router\";\nimport { bindable } from \"aurelia-framework\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { QuestionType } from \"models/questions/questionType\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { DeleteConfirmation } from \"../../../../../components/delete-confirmation\";\nimport { State } from \"common/store/store-model\";\nimport { Company } from \"models/companies/company\";\nimport { StoreService } from \"common/store/store-service\";\nimport { CustomCompanyModularQuestionService } from \"main/admin/services/questionaries/custom-company-modular-question-service\";\nimport { Question } from \"models/questions/question\";\nimport { QuestionaryConfigurationService } from \"main/admin/services/test-management/questionary-configuration-service\";\nimport { QuestionaryConfiguration } from \"models/test-management/questionaries-configuration/questionary-configuration\";\nimport { CustomCompanyModularQuestionaryService } from 'main/admin/services/questionaries/custom-company-modular-questionary-service';\n@autoinject()\nexport class CustomCompanyModularQuestionList {\n\n  @bindable public questionaryId: number;\n  private logger: Logger;\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n  private params: any = {};\n  public companyId: number;\n  public company: Company;\n  private questionaryConfiguration : QuestionaryConfiguration;\n  private isLoaded: boolean = false;\n  private state: State;\n  private xlsxExampleUrl: string = config.URLS_BACKEND + \"/person-content/custom-company-bulk-question-example.xlsx\";\n\n\n  constructor(\n    private store: StoreService,\n    private dialogService: DialogService,\n    private customCompanyModularQuestionService: CustomCompanyModularQuestionService,\n    private customCompanyModularQuestionaryService : CustomCompanyModularQuestionaryService,\n    private questionaryConfigurationService: QuestionaryConfigurationService,\n    private router: Router,\n    private notification: Notification,\n    public questionType: QuestionType) {\n      this.logger = LogManager.getLogger(\"CustomCompanyModularQuestionList\");\n      this.state = this.store.state;\n  }\n\n  private async activate(params: any): Promise<void> {\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n\n    this.logger.debug(\"activated this.questionaryId\", params.questionaryId);\n    if (!isNaN(params.questionaryId)) {\n      this.questionaryId = +params.questionaryId;\n    }\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n      this.companyId = +this.params.companyId;\n      if (this.companyId) {\n        this.customCompanyModularQuestionService.client.currentCompanyId = this.companyId;\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n        this.isLoaded = true;\n        this.questionaryConfiguration = await this.questionaryConfigurationService.getConfigurationByQuestionaryId(this.questionaryId);\n        return await this.databind();\n      }\n    }\n  }\n\n  public async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    this.parameters.currentPage = 1;\n    this.parameters.skip = 0;\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.logger.debug(\"refresh\", response);\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private refresh = (): Promise<UxDatatableResponse> => {\n    return this.customCompanyModularQuestionService.list(this.questionaryId, this.parameters);\n  }\n\n  private async delete(id: number, name: string): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.customCompanyModularQuestionService.delete(id)\n          .then(() => {\n            let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === id);\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"main.admin.pages.questionaries.questions.question_deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private async updateConfigurations(item: QuestionaryConfiguration) {\n    return await this.questionaryConfigurationService.update(item)\n        .then(async (model: QuestionaryConfiguration) => {\n          this.logger.debug(\"model.id\", model.id);\n          item.id = model.id\n          this.notification.success(\"main.admin.pages.test_management.questionaries_configuration.notifications.edited\");\n        })\n        .catch(async error => {\n          await this.databind();\n          this.notification.error(error);\n        });\n  }\n\n  public async changeState(item: Question): Promise<void> {\n      this.logger.debug(\"item.isDisable\", item.isDisable);\n      return await this.customCompanyModularQuestionService.changeState(item.id)\n        .then(() => {\n          this.notification.success(\"main.admin.pages.questionaries.messages.question_activation_changed\");\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n  }\n\n  public async uploadBulk(questionaryId: number, file: File): Promise<any> {\n    const result = await this.customCompanyModularQuestionService.bulkUpload(questionaryId, file);\n    return result;\n  }\n\n  public async createLogFile(questionaryId: number): Promise<void> {\n    if (!questionaryId) return;\n      await this.customCompanyModularQuestionaryService.createLogFile(questionaryId);\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class CustomCompanyModularQuestionListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"CustomCompanyModularQuestionListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-modular-question-list\"),\n        name: \"custom-company-modular-questions\"\n      },\n\n      {\n        route: \":questionId\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-modular-question-child-router\"),\n        name: \"custom-company-modular-question-child-router\",\n      },\n\n      {\n        route: \"create\",\n        name: \"custom-company-modular-question-create-type-selection\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-modular-question-type-selection\"),\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.questionaries.questions.create_info\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.TestManagementCustomCompanyModularQuestionaryView]\n          }\n        }\n      },\n      \n      {\n        route: [\"create/:questionTypeId\"],\n        name: \"custom-company-modular-question-create\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-modular-question-child-router\"),\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.questionaries.questions.create\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.TestManagementCustomCompanyModularQuestionaryView]\n          }\n        }\n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=./custom-company-modular-question-create-card.html></require> <require from=../../../../../../models/questions/questionTypeViewEngineHooks></require> <require from=../../../../../components/bulk-upload-question-card></require> <require from=../../../../../components/export-questionary-questions-card></require> <div if.bind=!questionaryId> <h2>${'main.admin.pages.modular-questionaries.new' & t}</h2> <p> ${'main.admin.pages.modular-questionaries.questions.notification_new_question' & t} </p> </div> <div if.bind=questionaryId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <div class=row> <div class=col> <h2>${'main.admin.pages.modular-questionaries.questions.title' & t}</h2> <p>${'main.admin.pages.modular-questionaries.questions.info' & t}</p> </div> <div class=col> <span class=\\\"switch switch-sm pt-2 mr-4\\\"> <input type=checkbox class=switch id=randomquestions checked.bind=questionaryConfiguration.hasRandomQuestions change.delegate=updateConfigurations(questionaryConfiguration) global-permission-enable=\\\"can: TestManagementCustomCompanyModularQuestionaryUpdate\\\"/> <label for=randomquestions class=form-check-label>${'main.admin.pages.modular-questionaries.questions.random_questions' & t}</label> </span> <span class=\\\"switch switch-sm pt-2\\\"> <input type=checkbox class=switch id=randomresponses checked.bind=questionaryConfiguration.hasRandomResponses change.delegate=updateConfigurations(questionaryConfiguration) global-permission-enable=\\\"can: TestManagementCustomCompanyModularQuestionaryUpdate\\\"/> <label for=randomresponses class=form-check-label>${'main.admin.pages.modular-questionaries.questions.random_responses' & t}</label> </span> </div> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-1 scope=col t=main.admin.pages.modular-questionaries.questions.code>Code</th> <th class=col-md-4 scope=col t=main.admin.pages.modular-questionaries.questions.question>Question</th> <th class=col-md-1 scope=col t=main.admin.pages.modular-questionaries.questions.order>Order</th> <th class=col-md-3 scope=col t=main.admin.pages.modular-questionaries.questions.type>Type</th> <th class=col-md-3 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=col-md-1>${item.code}</td> <td class=col-md-4> <p innerhtml.bind=\\\"item.formulation | sanitizeHTML\\\"></p> </td> <td class=col-md-1>${item.order}</td> <td class=col-md-3>${'main.admin.pages.questionaries.questions.question_type.' + QuestionType[item.questionType] & t} </td> <td class=\\\"col-md-3 d-flex\\\"> <a class=\\\"btn btn-link\\\" global-permission-show=\\\"can: TestManagementCustomCompanyModularQuestionaryView\\\" route-href=\\\"route: custom-company-modular-question-child-router; params.bind: {questionId:item.id}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <span> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: TestManagementCustomCompanyModularQuestionaryUpdate\\\" click.delegate=\\\"delete(item.id, item.name)\\\" title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> </span> <span class=\\\"switch switch-sm pt-2\\\"> <input type=checkbox class=switch id=isDisable_${$index} checked.bind=!item.isDisable change.delegate=changeState(item) global-permission-enable=\\\"can: TestManagementCustomCompanyModularQuestionaryUpdate\\\"/> <label for=isDisable_${$index} class=form-check-label>&nbsp;</label> </span> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> <custom-company-modular-question-create-card global-permission-show=\\\"can: TestManagementCustomCompanyModularQuestionaryUpdate\\\"></custom-company-modular-question-create-card> <div global-permission-show=\\\"can: TestManagementCustomCompanyModularQuestionaryUpdate\\\"> <bulk-upload-question-card questionary-id.bind=questionaryId xlsx-example-url.bind=xlsxExampleUrl upload-function.call=\\\"uploadBulk(questionaryId, file)\\\" on-uploaded.call=databind()> </bulk-upload-question-card> </div> <div global-permission-show=\\\"can: TestManagementCustomCompanyModularQuestionaryView\\\"> <export-questionary-questions-card questionary-id.bind=questionaryId export-function.call=createLogFile(questionaryId)></export-questionary-questions-card> </div> </div> </div> </div> </template> \";","import { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Notification } from \"common/services/notification\";\nimport { QuestionType } from \"models/questions/questionType\";\n\n@autoinject()\nexport class CustomCompanyModularQuestionTypeSelection {\n\n  private logger: Logger;\n  private questionaryId: number;\n  private tabItem: string;\n\n  constructor(\n    private router: Router,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"CustomCompanyModularQuestionTypeSelection\");\n    this.tabItem = \"selectionList\";\n\n  }\n\n  public activate(params: any): any {\n    this.logger.info(\"Activated with questionaryId\", params.questionaryId);\n    if (!isNaN(params.questionaryId)) {\n      this.questionaryId = +params.questionaryId;\n    } else {\n      this.router.navigate(\"custom-company-modular-questionaries\");\n    }\n  }\n\n  public createQuestion(type: QuestionType): any {\n    this.logger.info(\"create question with type:\", type);\n    this.router.navigate(`create/${type}`);\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../../../models/questions/questionTypeViewEngineHooks></require> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-2\\\"> <div class=\\\"nav flex-column nav-pills\\\" id=v-pills-tab role=tablist aria-orientation=vertical> <a class=\\\"nav-link active\\\" id=v-pills-list-tab data-toggle=pill role=tab aria-controls=nav-list aria-selected=true href=#nav-list>${'main.admin.pages.questionaries.questions.choice_list' & t}</a> <a class=nav-link id=v-pills-image-tab data-toggle=pill role=tab aria-controls=nav-image aria-selected=false href=#nav-image>${'main.admin.pages.questionaries.questions.choice_images' & t}</a> <a class=nav-link id=v-pills-others-tab data-toggle=pill role=tab aria-controls=nav-others aria-selected=false href=#nav-others>${'main.admin.pages.questionaries.questions.others' & t}</a> </div> </div> <div class=\\\"col-12 col-md-10\\\"> <div class=tab-content id=v-pills-tabContent> <h2>${'main.admin.pages.questionaries.questions.create' & t}</h2> <p>${'main.admin.pages.questionaries.questions.create_info' & t}</p> <hr> <div class=\\\"tab-pane fade show active\\\" id=nav-list role=tabpanel aria-labelledby=v-pills-list-tab> <h2>${'main.admin.pages.questionaries.questions.single_choice_list' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.single_choice_list_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.SingleChoiceList) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> <h2>${'main.admin.pages.questionaries.questions.multiple_choice_list' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.multiple_choice_list_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.MultipleChoiceList) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> <h2>${'main.admin.pages.questionaries.questions.single_choice_list_with_comments' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.single_choice_list_with_comments_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.SingleChoiceListWithComments) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=nav-image role=tabpanel aria-labelledby=v-pills-image-tab> <h2>${'main.admin.pages.questionaries.questions.single_choice_images' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.single_choice_images_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.SingleImageChoiceList) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> <h2>${'main.admin.pages.questionaries.questions.multiple_choice_images' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.multiple_choice_images_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.MultipleImageChoiceList) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=nav-others role=tabpanel aria-labelledby=v-pills-others-tab> <h2>${'main.admin.pages.questionaries.questions.descriptive_text' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.descriptive_text_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.DescriptiveText) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> <h2>${'main.admin.pages.questionaries.questions.open_answer_questions' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.open_answer_questions_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.OpenAnswerQuestion) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> </div> </div> </div> </div></template> \";","import { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { Logger } from \"aurelia-logging\";\nimport { I18N } from \"aurelia-i18n\";\nimport { LogManager, autoinject } from \"aurelia-framework\";\n\n@autoinject\nexport class CustomCompanyQuestionaryChild {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"GroupChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    config.map([\n\n      {\n        route: \"\",\n        name: \"custom-company-questionary-edit\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-questionary-edit\"),\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.questionaries.questionary\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.TestManagementCustomCompanyQuestionaryUpdate]\n          }\n        }\n      },\n\n      {\n        route: \"custom-company-questions\",\n        name: \"custom-company-question-list-child-router\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-questions/custom-company-question-list-child-router\"),\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.questionaries.questions.title\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.TestManagementCustomCompanyQuestionaryUpdate]\n          }\n        }\n      },\n\n    ]);\n\n    this.router = router;\n  }\n\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.questionaries.create_card.title' & t}</h5> <p t=[html]main.admin.pages.questionaries.create_card.info>Create new questionaries</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: custom-company-questionary-child-router; params.bind: {questionaryId:'create',isVideoInterview: false}\\\">${'commands.create' & t}</a> </div> </div> </template> \";","import { ResponseOption } from 'models/questions/response-option';\nimport { Question } from './../../../../../models/questions/question';\n\n\nimport { Router } from \"aurelia-router\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\n\nimport { Logger } from \"aurelia-logging\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { Questionary } from \"models/questionaries/questionary\";\n\nimport { ItemToQualify } from \"models/questionaries/itemToQualify\";\nimport { QuestionaryType } from \"models/questionaries/questionaryType\";\nimport { Language } from \"models/localizations/language\";\n\nimport { UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { CoreLanguageService } from \"main/admin/services/localizations/core-language-service\";\nimport { CustomCompanyQuestionaryService } from \"main/admin/services/questionaries/custom-company-questionary-service\";\nimport { Company } from \"models/companies/company\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from 'common/store/store-service';\nimport { NoDiscType } from \"models/questionaries/noDiscType\";\nimport { isDebuggerStatement } from \"typescript\";\nimport { CustomCompanyQuestionService } from \"main/admin/services/questionaries/custom-company-question-service\";\nimport { QuestionUse } from 'models/questions/questionUse';\nimport { QuestionType } from 'models/questions/questionType';\nimport { I18N } from \"aurelia-i18n\";\n@autoinject()\nexport class CustomCompanyQuestionaryEdit {\n\n  private logger: Logger;\n\n  public companyId: number;\n  private company: Company;\n\n  private parameters = new UxDatatableParameters();\n  private model: Questionary = new Questionary();\n  private languages: Language[] = [];\n  private responseOptions: ResponseOption[] = [];\n\n  private averageTime: number = 10;\n  private order: number = 1;\n\n  private validationController: ValidationController;\n\n  public isDisabled: boolean;\n  private state: State;\n  public isVideoInterview: boolean = false;\n  constructor(\n    private store: StoreService,\n    private customCompanyQuestionaryService: CustomCompanyQuestionaryService,\n    private customCompanyQuestionService: CustomCompanyQuestionService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private router: Router,\n    private questionWarning: Question,\n    private questionExample: Question,\n    private questionFarewell: Question,\n    public languagesService: CoreLanguageService,\n    public questionaryType: QuestionaryType,\n    public itemToQualify: ItemToQualify,\n    private i18n: I18N,\n    private response: ResponseOption\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"CustomCompanyQuestionaryEdit\");\n\n    this.state = this.store.state;\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.questionaries.name\").required()\n      .ensure(\"noDiscType\").displayName(\"main.admin.pages.questionaries.type\").required()\n      .ensure(\"languageId\").displayName(\"main.admin.pages.questionaries.language\").required()\n      .ensure(\"itemToQualify\").displayName(\"main.admin.pages.questionaries.item_to_qualify\").required()\n      .on(this.model);\n  }\n\n  private async activate(params: any): Promise<void> {\n    try {\n      this.isDisabled = true;\n\n      this.languages = await this.languagesService.getAll();\n      if (!isNaN(params.companyId)) {\n        this.companyId = +params.companyId;\n        this.customCompanyQuestionaryService.client.currentCompanyId = this.companyId;\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n\n        if (params.isVideoInterview != undefined) {\n          this.isVideoInterview = JSON.parse(params.isVideoInterview);\n        }       \n        this.validateIsVideoInterview(this.isVideoInterview);\n\n        if (!isNaN(params.questionaryId)) {\n          this.model = await this.customCompanyQuestionaryService.getById(+params.questionaryId);\n        }\n        this.configureValidationRules();\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n    if (this.model.noDiscType == NoDiscType.VideoInterview) {\n      this.itemToQualify == ItemToQualify.Person;\n    }\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(keepEditing);\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n  public validateIsVideoInterview(isVideoInterview: boolean) {\n    if (isVideoInterview) {\n      this.model.noDiscType = NoDiscType.VideoInterview;\n      this.model.itemToQualify = ItemToQualify.Person;\n      this.isDisabled = true;\n    }\n    else\n      this.isDisabled = false;\n  }\n  public changeItemToQualify() {   \n    if (this.model.noDiscType == NoDiscType.General) {\n      this.isDisabled = false;\n    }\n    if (this.model.noDiscType == NoDiscType.VideoInterview || this.model.noDiscType == NoDiscType.Curriculum) {\n      this.model.itemToQualify = ItemToQualify.Person;\n      this.isDisabled = true;\n    }\n    if (this.model.noDiscType == NoDiscType.ExpectationsTeam || this.model.noDiscType == NoDiscType.JobProspects) {\n      this.model.itemToQualify = ItemToQualify.Team;\n      this.isDisabled = true;\n    }\n    if (this.model.noDiscType == NoDiscType.Performance) {\n      this.model.itemToQualify = ItemToQualify.Observed;\n      this.isDisabled = true;\n    }\n\n  }\n\n\n  get canSave() {\n    return !this.customCompanyQuestionaryService.client.isRequesting;\n  }\n  public async CodeRandom(): Promise<string> {\n    const length: number = 5;\n    let result: string = '';\n    const characters: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n    const charactersLength: number = characters.length;\n    for (let i = 0; i < length; i++) {\n      result += characters.charAt(Math.floor(Math.random() * charactersLength));\n    }\n    return result;\n  }\n  public async addDefaultQuestions(questionaryId: number) {\n    this.questionWarning.questionUse = QuestionUse.Warning;\n    this.questionWarning.questionType = QuestionType.DescriptiveText;\n    this.questionWarning.order = 2;\n    this.questionWarning.formulation = this.i18n.tr(\"main.admin.pages.questionaries.questions.question_warning\");\n    this.questionWarning.code = await this.CodeRandom();\n    this.questionWarning.questionaryId = questionaryId;\n    await this.customCompanyQuestionService.create(this.questionWarning);\n\n    this.questionFarewell.questionUse = QuestionUse.Farewell\n    this.questionFarewell.questionType = QuestionType.DescriptiveText;\n    this.questionFarewell.order = 1;\n    this.questionFarewell.formulation = this.i18n.tr(\"main.admin.pages.questionaries.questions.question_farewell\");\n    this.questionFarewell.code = await this.CodeRandom();\n    this.questionFarewell.questionaryId = questionaryId;\n    await this.customCompanyQuestionService.create(this.questionFarewell);\n\n    this.questionExample.questionUse = QuestionUse.Example;\n    this.questionExample.questionType = QuestionType.OpenAnswerQuestion;\n    this.response.order = 0;\n    this.response.option = \",\";\n    this.response.isColumn = false;\n    this.responseOptions = [this.response];\n    this.questionExample.responseOptions = this.responseOptions;\n    this.questionExample.order = 1;\n    this.questionExample.formulation = this.i18n.tr(\"main.admin.pages.questionaries.questions.question_example\");\n    this.questionExample.code = await this.CodeRandom();\n    this.questionExample.questionaryId = questionaryId;\n    await this.customCompanyQuestionService.create(this.questionExample);\n\n\n  }\n  public async save(keepEditing: boolean): Promise<any> {\n    this.logger.info(\"save\");\n    try {\n\n      if (!this.model.id) {\n        this.model.questionaryType = QuestionaryType.NoDisc;\n        this.model.averageTime = this.averageTime;\n        this.model.order = this.order;\n\n        let response: Questionary = await this.customCompanyQuestionaryService.create(this.model);      \n        if (this.isVideoInterview && keepEditing) {\n          this.addDefaultQuestions(response.id);\n          return await this.router.navigateToRoute(\"custom-company-question-create\", { questionTypeId: QuestionType.OpenAnswerQuestion, questionaryId: response.id, isVideoInterview: true, order: 1 });\n        }\n        this.model.id = response.id;\n\n        this.notification.success(\"main.admin.pages.questionaries.messages.questionary_added\");\n\n        if (!keepEditing) {\n          return await this.router.navigateToRoute(\"custom-company-questionary-list\");\n        } else {\n          return await this.router.navigateToRoute(\"custom-company-questionary-child-router\", { questionaryId: this.model.id });\n        }\n\n      } else {\n\n        await this.customCompanyQuestionaryService.update(this.model);\n\n        this.notification.success(\"main.admin.pages.questionaries.messages.questionary_edited\");\n\n        if (!keepEditing) {\n          return await this.router.navigateToRoute(\"custom-company-questionary-list\");\n        }\n\n      }\n\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../../models/questionaries/questionaryTypeViewEngineHooks></require> <require from=../../../../../models/questionaries/itemToQualifyViewEngineHooks></require> <require from=../../../../../models/questionaries/organizationTypeViewEngineHooks></require> <require from=../../../../../models/questionaries/noDiscTypeViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2 if.bind=!model.id>${'main.admin.pages.questionaries.new' & t}</h2> <h2 if.bind=model.id>${model.name}</h2> <p>${'main.admin.pages.questionaries.editing_info' & t}</p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <label for=Name t=main.admin.pages.questionaries.name>Name</label> <input type=text value.bind=\\\"model.name & validate\\\" class=form-control id=Name t=[placeholder]main.admin.pages.questionaries.name> </div> </div> <div class=form-group if.bind=!model.id> <label for=noDiscType t=main.admin.pages.questionaries.team_types.title>No Disc type</label> <select value.bind=\\\"model.noDiscType & validate\\\" class=form-control id=noDiscType change.delegate=changeItemToQualify() disabled.bind=isDisabled> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of NoDiscTypes\\\" model.bind=NoDiscType[option]> ${'main.admin.pages.questionaries.no_disc_type.' + option & t} </option> </select> </div> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group if.bind=!model.id> <label for=itemToQualify t=main.admin.pages.questionaries.item_to_qualify>Item to qualify</label> <select value.bind=model.itemToQualify class=form-control id=itemToQualify disabled.bind=isDisabled> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of ItemsToQualify\\\" model.bind=ItemToQualify[option]> ${'main.admin.pages.questionaries.items_to_qualify.' + option & t} </option> </select> </div> <div class=form-group if.bind=\\\"model.id && model.questionaryType == QuestionaryType.NoDisc\\\"> <label for=noDiscType t=main.admin.pages.questionaries.team_types.title>Team type</label> <p>${'main.admin.pages.questionaries.no_disc_type.' + NoDiscType[model.noDiscType] & t}</p> </div> <div class=form-group if.bind=\\\"model.id && model.questionaryType == QuestionaryType.NoDisc\\\"> <label for=itemToQualify t=main.admin.pages.questionaries.item_to_qualify>Team type</label> <p>${'main.admin.pages.questionaries.items_to_qualify.' + ItemToQualify[model.itemToQualify] & t}</p> </div> <div class=form-group if.bind=\\\"!model.id && model.questionaryType == QuestionaryType.Disc && model.itemToQualify == ItemToQualify.Organization\\\"> <label for=organizationType t=main.admin.pages.questionaries.organization_types.title> Organization type </label> <select value.bind=\\\"model.organizationType & validate\\\" class=form-control id=organizationType> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of OrganizationTypes\\\" model.bind=OrganizationType[option]> ${'main.admin.pages.questionaries.organization_types.' + option & t} </option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-3 col-12\\\"> <div class=form-group> <label for=localizationId t=main.admin.pages.questionaries.language>Language</label> <select value.bind=\\\"model.languageId & validate\\\" class=form-control id=languageId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"item of languages\\\" model.bind=item.id>${item.name}</option> </select> </div> </div> </div> <div class=\\\"row mb-3 col-12\\\" if.bind=!isVideoInterview> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=endButton checked.bind=model.hasEndButton /> <label for=endButton class=form-check-label> ${'main.admin.pages.questionaries.end_button' & t} </label> </span> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group if.bind=!isVideoInterview> <button type=button click.delegate=submit(true) global-permission-show=\\\"can: CustomCompanyQuestionaryCreate\\\" class=\\\"btn btn-primary btn-round\\\" t=commands.save_and_continue disabled.bind=!canSave> Save and edit </button> <button type=button click.delegate=submit(false) global-permission-show=\\\"can: CustomCompanyQuestionaryCreate\\\" class=\\\"btn btn-primary btn-round\\\" t=commands.save disabled.bind=!canSave> Save </button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: custom-company-questionary-list;\\\" t=commands.cancel>Cancel</a> </div> <div class=form-group if.bind=isVideoInterview> <button type=button click.delegate=submit(true) global-permission-show=\\\"can: CustomCompanyQuestionaryCreate\\\" class=\\\"btn btn-primary btn-round\\\" t=commands.save_and_continue disabled.bind=!canSave> Save and edit </button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: custom-company-questionary-list;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </div> </template> \";","import { Router } from \"aurelia-router\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { Notification } from \"common/services/notification\";\nimport { CustomCompanyQuestionaryService } from \"../../../services/questionaries/custom-company-questionary-service\";\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { QuestionaryType } from \"models/questionaries/questionaryType\";\nimport { DeleteConfirmation } from \"../../../../components/delete-confirmation\";\nimport { ChangeStateConfirmation } from \"../../../../components/change-state-confirmation\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { State } from \"common/store/store-model\";\nimport { Company } from \"models/companies/company\";\nimport { StoreService } from \"common/store/store-service\";\n\n@autoinject()\nexport class CustomCompanyQuestionaryList {\n\n  private logger: Logger;\n\n  private params: any = {};\n  public companyId: number;\n  public company: Company;\n\n  private parameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private isLoaded: boolean = false;\n  private state: State;\n  public isVideoInterviewTest: boolean = false;\n\n  constructor(\n    private store: StoreService,\n    private customCompanyQuestionaryService: CustomCompanyQuestionaryService,\n    private dialogService: DialogService,\n    private router: Router,\n    private notification: Notification,\n    public questionaryType: QuestionaryType) {\n\n    this.logger = LogManager.getLogger(\"CustomCompanyQuestionaryList\");\n\n    this.state = this.store.state;\n  }\n\n  private async activate(params: any): Promise<void> {\n\n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n  }\n\n  \n  private refresh = (): Promise<UxDatatableResponse> => {\n    this.isVideoInterviewTest = this.router.parent.currentInstruction.config.settings.isVideoInterViewTest;\n    return this.customCompanyQuestionaryService.list(this.parameters,this.isVideoInterviewTest);\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n      this.companyId = +this.params.companyId;\n      if (this.companyId) {\n        this.customCompanyQuestionaryService.client.currentCompanyId = this.companyId;\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n        this.isLoaded = true;\n        return await this.databind();\n      }\n    }\n  }\n\n  private async databind(): Promise<any> {\n    this.logger.debug(\"databind\");\n\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.logger.debug(\"refresh\", response);\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  public async delete(id: number, name: string): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.customCompanyQuestionaryService.delete(id)\n          .then(() => {\n            let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === id);\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"main.admin.pages.questionaries.messages.questionary_deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  public async changeState(item: Questionary): Promise<void> {\n    this.logger.debug(\"item.isActive\", item.isActive);\n    return await this.dialogService.open({\n      viewModel: ChangeStateConfirmation,\n      model: item.name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.customCompanyQuestionaryService.changeState(item.id)\n          .then(() => {\n            // item.isActive = !item.isActive;\n            this.notification.success(\"main.admin.pages.educational_levels_country.notifications.activation_changed\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n      else{\n        item.isActive = !item.isActive;\n      }\n    });\n  }\n\n}\n","\nimport { LogManager } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\n\nexport class CustomCompanyQuestionaryListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor() {\n    this.logger = LogManager.getLogger(\"CustomCompanyQuestionaryListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-questionary-list\"),\n        name: \"custom-company-questionary-list\",\n\n      },\n\n      {\n        route: \"custom-company-questionary/:questionaryId\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-questionary-child-router\"),\n        name: \"custom-company-questionary-child-router\",\n\n      },\n      {\n        route: \"create/question/:questionTypeId\",\n        name: \"custom-company-question-create\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-questions/custom-company-question-child-router\"),\n        nav: false\n        //title: this.i18n.tr(\"main.admin.pages.questionaries.questions.create\"),\n       \n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=./custom-company-questionary-create-card.html></require> <require from=./custom-company-questionary-videointerview-create-card.html></require> <require from=../../../../../models/questionaries/questionaryTypeViewEngineHooks></require> <require from=../../../../../models/questionaries/noDiscTypeViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <div if.bind=!isVideoInterviewTest> <h2>${company.name} / ${'main.admin.pages.questionaries.title' & t}</h2> <p>${'main.admin.pages.questionaries.subtitle' & t}</p> </div> <div if.bind=isVideoInterviewTest> <h2>${company.name} / ${'main.admin.pages.questionaries_videointerview.title' & t}</h2> <p>${'main.admin.pages.questionaries_videointerview.subtitle' & t}</p> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-4 scope=col t=main.admin.pages.questionaries.name>Name</th> <th class=col-md-4 scope=col t=main.admin.pages.questionaries.language>Language</th> <th class=col-md-4 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-4 text-truncate\\\"><span title=${item.name}>${item.name}</span></td> <td class=\\\"col-md-4 text-truncate\\\"><span title=${item.languageName}>${item.languageName}</span></td> <td class=\\\"col-md-4 d-flex\\\"> <a if.bind=\\\"item.noDiscType != NoDiscType.VideoInterview\\\" class=\\\"btn btn-link\\\" global-permission-show=\\\"can: CustomCompanyQuestionaryUpdate\\\" route-href=\\\"route: custom-company-questionary-child-router; params.bind: {questionaryId:item.id, isVideoInterview: false}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <a if.bind=\\\"item.noDiscType == NoDiscType.VideoInterview\\\" class=\\\"btn btn-link\\\" global-permission-show=\\\"can: CustomCompanyQuestionaryUpdate\\\" route-href=\\\"route: custom-company-questionary-child-router; params.bind: {questionaryId:item.id,isVideoInterview: true}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: CustomCompanyQuestionaryDelete\\\" click.delegate=\\\"delete(item.id, item.name)\\\" title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> <span class=\\\"switch switch-sm pt-2\\\"> <input type=checkbox class=switch id=isActive_${$index} checked.bind=item.isActive change.delegate=changeState(item) global-permission-enable=\\\"can: CustomCompanyQuestionaryActivate\\\"/> <label for=isActive_${$index} class=form-check-label>&nbsp;</label> </span> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar global-permission-show=\\\"can: CustomCompanyQuestionaryCreate\\\"> <div if.bind=!isVideoInterviewTest class=mb-3> <custom-company-questionary-create-card></custom-company-questionary-create-card> </div> <div if.bind=isVideoInterviewTest class=mb-3> <custom-company-questionary-videointerview-create-card></custom-company-questionary-videointerview-create-card> </div> </div> </div> </template> \";","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.questionaries.videointerview_create_card.title' & t}</h5> <p t=[html]main.admin.pages.questionaries.create_card.info>Create new questionaries</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: custom-company-questionary-child-router; params.bind: {questionaryId:'create', isVideoInterview: true}\\\">${'commands.create' & t}</a> </div> </div> </template> \";","import { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { Logger } from \"aurelia-logging\";\nimport { I18N } from \"aurelia-i18n\";\nimport { LogManager, autoinject } from \"aurelia-framework\";\n\n@autoinject\nexport class CustomCompanyQuestionChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"CustomCompanyQuestionChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    config.map([\n\n      {\n        route: \"\",\n        name: \"custom-company-question-edit\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-question-edit\"),\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.questionaries.questions.question\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.TestManagementCustomCompanyQuestionaryUpdate]\n          }\n        }\n      },\n      \n    ]);\n\n    this.router = router;\n  }\n\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","import { autoinject } from \"aurelia-framework\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { Question } from \"models/questions/question\";\n\n@autoinject()\nexport class CustomCompanyQuestionConfigModal {\n\n  private model: Question = new Question();\n  private textSizeOptions: boolean;\n  private textSizeOptionSelected: number;\n\n  constructor(\n    private dialogController: DialogController) {\n  }\n\n  public activate(model: Question): void {\n    this.model = model;\n    this.toggleTextSize();\n  }\n\n  public async submit(): Promise<any> {\n    return await this.dialogController.ok();\n  }\n\n  public toggleTextSize(): void {\n    if (this.model.isTextSizeAvailable) {\n      this.textSizeOptions = true;\n      if (this.model.textSizeMin && this.model.textSizeMax) {\n        this.textSizeOptionSelected = 2;\n      } else {\n        this.textSizeOptionSelected = 1;\n      }\n    } else {\n      this.textSizeOptions = false;\n      this.textSizeOptionSelected = null;\n      this.model.textSize = null;\n      this.model.textSizeMin = null;\n      this.model.textSizeMax = null;\n    }\n  }\n\n  public toggleTextSizeDetail(): void {\n    if (this.textSizeOptionSelected === 1) {\n      this.model.textSizeMin = null;\n      this.model.textSizeMax = null;\n    } else {\n      this.model.textSize = null;\n    }\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../../../models/questions/questionTypeViewEngineHooks></require> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'main.admin.pages.questionaries.questions.properties' & t}</h2> <form class=form submit.delegate=submit()> <div class=\\\"form-row form-check mb-3\\\" if.bind=\\\"model.questionType != QuestionType.DescriptiveText\\\"> <input type=checkbox value.bind=model.isMandatory id=isMandatory checked.bind=model.isMandatory> <label for=isMandatory> ${'main.admin.pages.questionaries.questions.is_mandatory' & t} </label> <small class=\\\"form-text text-muted\\\">${'main.admin.pages.questionaries.questions.is_mandatory_info' & t }</small> </div> <div class=\\\"form-row form-check mb-3\\\" if.bind=\\\"model.questionType != QuestionType.DescriptiveText && model.questionType != QuestionType.OpenAnswerQuestion\\\"> <input type=checkbox value.bind=model.hasRandomResponses id=hasRandomResponses checked.bind=model.hasRandomResponses> <label for=hasRandomResponses> ${'main.admin.pages.questionaries.questions.has_random_responses' & t} </label> <small class=\\\"form-text text-muted\\\">${'main.admin.pages.questionaries.questions.has_random_responses_info' & t}</small> </div> <div class=\\\"form-row form-check mb-3\\\"> <input type=checkbox value.bind=model.isDisable id=isDisable checked.bind=model.isDisable> <label for=isDisable> ${'main.admin.pages.questionaries.questions.is_disable' & t} </label> <small class=\\\"form-text text-muted\\\">${'main.admin.pages.questionaries.questions.is_disable_info' & t}</small> </div> <div class=\\\"form-row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.MultipleChoiceList || model.questionType == QuestionType.MultipleImageChoiceList\\\"> <label for=minNumberOfAnswers>${'main.admin.pages.questionaries.questions.min_number_of_answers' & t}</label> <input type=text value.bind=model.minNumberOfAnswers id=minNumberOfAnswers class=form-control> <small class=\\\"form-text text-muted\\\">${'main.admin.pages.questionaries.questions.min_number_of_answers_info' & t}</small> </div> <div class=\\\"form-row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.MultipleChoiceList || model.questionType == QuestionType.MultipleImageChoiceList\\\"> <label for=maxNumberOfAnswers>${'main.admin.pages.questionaries.questions.max_number_of_answers' & t}</label> <input type=text value.bind=model.maxNumberOfAnswers id=maxNumberOfAnswers class=form-control> <small class=\\\"form-text text-muted\\\">${'main.admin.pages.questionaries.questions.max_number_of_answers_info' & t}</small> </div> <div class=\\\"form-row form-check mb-3\\\" if.bind=\\\"model.questionType == QuestionType.Matrix\\\"> <input type=checkbox value.bind=model.allowOneResponseByColumn id=allowOneResponseByColumn checked.bind=model.allowOneResponseByColumn> <label for=allowOneResponseByColumn> ${'main.admin.pages.questionaries.questions.allow_one_response_by_column' & t} </label> <small class=\\\"form-text text-muted\\\">${'main.admin.pages.questionaries.questions.allow_one_response_by_column_info' & t}</small> </div> <div class=\\\"form-row form-check mb-3\\\" if.bind=\\\"model.questionType == QuestionType.Matrix\\\"> <input type=checkbox value.bind=model.allowOneResponseByRow id=allowOneResponseByRow checked.bind=model.allowOneResponseByRow> <label for=allowOneResponseByRow> ${'main.admin.pages.questionaries.questions.allow_one_response_by_row' & t} </label> <small class=\\\"form-text text-muted\\\">${'main.admin.pages.questionaries.questions.allow_one_response_by_row_info' & t}</small> </div> <div class=\\\"form-row form-check mb-3\\\" if.bind=\\\"model.questionType == QuestionType.Matrix\\\"> <input type=checkbox value.bind=model.allowRandomColumns id=allowRandomColumns checked.bind=model.allowRandomColumns> <label for=allowRandomColumns> ${'main.admin.pages.questionaries.questions.allow_random_columns' & t} </label> <small class=\\\"form-text text-muted\\\">${'main.admin.pages.questionaries.questions.allow_random_columns_info' & t}</small> </div> <div class=\\\"form-row form-check mb-3\\\" if.bind=\\\"model.questionType == QuestionType.OpenAnswerQuestion\\\"> <input type=checkbox id=isTextSizeAvailable checked.bind=model.isTextSizeAvailable change.delegate=toggleTextSize()> <label for=isTextSizeAvailable> ${'main.admin.pages.questionaries.questions.text_size' & t} </label> <div class=\\\"form-row form-inline\\\"> <div class=form-group> <input class=form-check-input type=radio name=textSizeOption disabled.bind=!textSizeOptions checked.bind=textSizeOptionSelected model.bind=1 change.delegate=toggleTextSizeDetail() id=textSizeOption1> <label class=\\\"mb-2 mr-sm-2\\\" for=textSize> ${'main.admin.pages.questionaries.questions.exactly' & t}</label> <input type=text class=\\\"form-control col-2 mb-2 mr-sm-2\\\" disabled.bind=\\\"!(textSizeOptionSelected===1)\\\" value.bind=model.textSize id=textSize> <label class=\\\"mb-2 mr-sm-2\\\">${'main.admin.pages.questionaries.questions.characters' & t}</label> </div> </div> <div class=\\\"form-row form-inline\\\"> <div class=form-group> <input type=radio class=form-check-input name=textSizeOption disabled.bind=!textSizeOptions checked.bind=textSizeOptionSelected model.bind=2 change.delegate=toggleTextSizeDetail() id=textSizeOption2> <label for=textSizeMin class=\\\"mb-2 mr-sm-2\\\"> ${'main.admin.pages.questionaries.questions.between' & t} </label> <input type=text class=\\\"form-control col-2 mb-2 mr-sm-2\\\" disabled.bind=\\\"!(textSizeOptionSelected===2)\\\" value.bind=model.textSizeMin id=textSizeMin> <label for=textSizeMax class=\\\"mb-2 mr-sm-2\\\"> ${'main.admin.pages.questionaries.questions.and' & t}</label> <input type=text class=\\\"form-control col-2 mb-2 mr-sm-2\\\" disabled.bind=\\\"!(textSizeOptionSelected===2)\\\" value.bind=model.textSizeMax id=textSizeMax> <label class=\\\"mb-2 mr-sm-2\\\"> ${'main.admin.pages.questionaries.questions.characters' & t}</label> </div> </div> </div> </form> </ux-dialog-body> <ux-dialog-footer> <button class=\\\"btn btn-default\\\" click.delegate=submit() t=commands.close>Close</button> </ux-dialog-footer> </ux-dialog> </template> \";","import { autoinject, bindable } from \"aurelia-framework\";\nimport { Router } from \"aurelia-router\";\nimport { QuestionType } from \"models/questions/questionType\";\n\n@autoinject\nexport class CustomCompanyQuestionCreateCard {\n\n  @bindable public questionaryId: number;\n  @bindable public effectiveEvaluationQuestionCount: number = 0;\n  @bindable public isVideoInterview: boolean = false;\n  @bindable public canCreate: boolean = true;\n\n  constructor(private router: Router) {\n  }\n\n  public createQuestion() {\n    if (!this.canCreate) {\n      return Promise.resolve(false);\n    }\n\n    if (!this.isVideoInterview) {\n      return this.router.navigateToRoute(\"custom-company-question-create-type-selection\");\n    }\n\n    return this.router.navigateToRoute(\"custom-company-question-create\", {\n      questionTypeId: QuestionType.OpenAnswerQuestion,\n      questionaryId: this.questionaryId,\n      isVideoInterview: true,\n      order: this.effectiveEvaluationQuestionCount + 1\n    });\n  }\n}\n","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\" global-permission-show=\\\"can: CustomCompanyQuestionaryCreate\\\"> <div class=card-body> <h5 class=card-title t=main.admin.pages.questionaries.questions.create_card.title>title</h5> <p class=card-text t=[html]main.admin.pages.questionaries.questions.create_card.info>Create new question</p> <button type=button class=\\\"btn btn-primary btn-round\\\" click.delegate=createQuestion() disabled.bind=!canCreate>${'commands.create' & t}</button> </div> </div> </template>\";","import { FileAcceptValidator } from 'common/utils/file-accept-validator';\nimport { Router } from \"aurelia-router\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { I18N } from 'aurelia-i18n';\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { CustomCompanyQuestionService } from 'main/admin/services/questionaries/custom-company-question-service';\nimport { Question } from \"models/questions/question\";\nimport { QuestionType } from \"models/questions/questionType\";\nimport { QuestionUse } from \"models/questions/questionUse\";\nimport { CustomCompanyQuestionConfigModal } from './custom-company-question-config-modal';\nimport { ResponseOption } from \"models/questions/response-option\";\nimport { State } from 'common/store/store-model';\nimport { Company } from 'models/companies/company';\nimport { StoreService } from 'common/store/store-service';\nimport { VideoInterviewSettings } from 'models/questions/video-interview-settings';\n\n@autoinject()\nexport class CustomCompanyQuestionEdit {\n  private logger: Logger;\n  private model: Question = new Question();\n\n  private validationController: ValidationController;\n\n  private params: any = {};\n  public companyId: number;\n  public company: Company;\n\n  private state: State;\n  public isVideoInterview: boolean = false;\n  public isDisabled: boolean;\n  public videoInterviewEvaluationRangeInfo: string = '';\n  private maximumVideoInterviewEvaluationQuestions: number;\n  private countOfQuestion: number = 1;\n  constructor(\n    private store: StoreService,\n    private customCompanyQuestionService: CustomCompanyQuestionService,\n    private dialogService: DialogService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private router: Router,\n    private i18n: I18N) {\n\n    this.logger = LogManager.getLogger(\"CustomCompanyQuestionEdit\");\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.state = this.store.state;\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"formulation\").displayName(\"main.admin.pages.questionaries.questions.question\").required()\n      .on(this.model);\n  }\n\n  private async activate(params: any): Promise<void> {\n\n    try {\n\n      if (!isNaN(params.companyId)) {\n        this.logger.info(\"Acticated for edit with id\", params.questionId);\n        this.companyId = +params.companyId;\n        this.customCompanyQuestionService.client.currentCompanyId = this.companyId;\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n        if (!isNaN(params.questionId)) {\n          this.model = await this.customCompanyQuestionService.getById(+params.questionId);\n        }\n        else if (!isNaN(params.questionaryId) && !isNaN(params.questionTypeId)) {\n\n          this.logger.debug(\"params.questionTypeId: \", params.questionTypeId);\n\n          this.model.questionaryId = <number>params.questionaryId;\n          this.model.questionType = <QuestionType>params.questionTypeId;\n\n          this.logger.debug(\"this.model.questionType: \", QuestionType[this.model.questionType]);\n\n          if (params.isVideoInterview != undefined) {\n            this.isVideoInterview = JSON.parse(params.isVideoInterview);\n          }\n          if (this.isVideoInterview) {\n            await this.loadVideoInterviewSettings();\n          }\n          this.countOfQuestion = Number(params.order);\n          this.validateIsVideoInterview(this.isVideoInterview);\n\n\n          if (this.model.questionType == QuestionType.DescriptiveText || this.model.questionType == QuestionType.OpenAnswerQuestion) {\n            this.addResponseOption(true);\n          }\n        }\n      }\n      this.configureValidationRules();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async loadVideoInterviewSettings(): Promise<void> {\n    const settings: VideoInterviewSettings = await this.customCompanyQuestionService.getVideoInterviewSettings();\n    this.maximumVideoInterviewEvaluationQuestions = settings.maximumEvaluationQuestionCount;\n    this.videoInterviewEvaluationRangeInfo = this.i18n.tr(\n      'main.admin.pages.questionaries.questions.videointerview_evaluation_range_info',\n      { maximum: this.maximumVideoInterviewEvaluationQuestions });\n  }\n\n  public validateIsVideoInterview(isVideoInterview: boolean) {\n    if (isVideoInterview) {\n      this.model.questionUse = QuestionUse.Evaluation;\n      this.isDisabled = true;\n      this.model.order = this.countOfQuestion;\n    }\n    else\n      this.isDisabled = false;\n  }\n\n  public async openProperties(): Promise<void> {\n    this.logger.debug(\"openProperties\");\n    return await this.dialogService.open({\n      viewModel: CustomCompanyQuestionConfigModal,\n      model: this.model\n    }).whenClosed(() => null);\n  }\n\n  public async CodeRandom(): Promise<string> {\n    let length: number = 5;\n    let result: string = '';\n    let characters: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n    let charactersLength: number = characters.length;\n    for (var i = 0; i < length; i++) {\n      result += characters.charAt(Math.floor(Math.random() * charactersLength));\n    }\n    return result;\n  }\n\n  public async submit(saveAndContinue: boolean): Promise<void> {\n    this.logger.debug(\"submit\");\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          if (this.model.responseOptions.length > 0 && this.model.questionType !== QuestionType.DescriptiveText) { //this.questionType.getIdByCode(\"descriptive.text\")\n            let validDescriptiveText: boolean = true;\n            // this.logger.debug(\"-->\", validDescriptiveText);\n            if (validDescriptiveText) {\n              return await this.save(saveAndContinue);\n            }\n          } else {\n            return await this.save(saveAndContinue);\n          }\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.customCompanyQuestionService.client.isRequesting;\n  }\n\n  public async save(saveAndContinue: boolean): Promise<any> {\n    this.logger.debug(\"save\");\n    if (!this.model.id) {\n\n      this.model.code = await this.CodeRandom();\n      this.model.order = this.model.order;\n      this.model.questionUse = this.model.questionUse;\n      this.model.allowOneResponseByColumn = this.model.questionType == QuestionType.Matrix ? true : null;\n      this.model.allowOneResponseByRow = this.model.questionType == QuestionType.Matrix ? true : null;\n      this.model.isTextSizeAvailable = (this.model.questionType == QuestionType.OpenAnswerQuestion || this.model.questionType == QuestionType.SingleChoiceListWithComments) ? true : null;\n      this.model.textSizeMin = this.model.questionType == QuestionType.OpenAnswerQuestion ? 1 : null;\n      this.model.textSizeMax = (this.model.questionType == QuestionType.OpenAnswerQuestion || this.model.questionType == QuestionType.SingleChoiceListWithComments) ? 5000 : null;\n      this.model.textSizeMin = this.model.questionType == QuestionType.SingleChoiceListWithComments ? 0 : null;\n\n      return await this.customCompanyQuestionService.create(this.model)\n        .then(async (question: Question) => {\n          // this.validationController.reset();\n          this.notification.success(\"main.admin.pages.questionaries.questions.messages.question_added\");\n\n          if (!saveAndContinue) {\n            return await this.navigateToQuestionList();\n          }\n          else if (this.isVideoInterview && saveAndContinue) {\n            this.countOfQuestion = this.countOfQuestion + 1;\n            this.model.order = this.countOfQuestion;\n            this.model.formulation = \"\";\n            if (this.countOfQuestion > this.maximumVideoInterviewEvaluationQuestions) {\n              this.notification.warning(\"main.admin.pages.questionaries.questions.errors.videointerview_max_evaluation_questions\");\n              return await this.router.navigateToRoute(\"custom-company-questionary-list\");\n            }\n            return await this.router.navigateToRoute(\"custom-company-question-create\", { questionTypeId: QuestionType.OpenAnswerQuestion, questionaryId: this.model.questionaryId, isVideoInterview: true, order: this.countOfQuestion });\n          }\n          else {\n            return await this.router.navigateToRoute(\"custom-company-question-child-router\", { questionId: question.id });\n          }\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    } else {\n      return await this.customCompanyQuestionService.update(this.model)\n        .then(async (model: Question) => {\n          // this.model = model;\n          this.notification.success(\"main.admin.pages.questionaries.questions.messages.question_edited\");\n\n          if (!saveAndContinue) {\n            return await this.navigateToQuestionList();\n          }\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    }\n\n  }\n\n  // Redirects to the questionary's question list. In the new-questionary flow the question is mounted\n  // directly under the questionary list router, where the \"custom-company-questions\" route is not in scope.\n  private async navigateToQuestionList(): Promise<any> {\n    try {\n      return await this.router.navigateToRoute(\"custom-company-questions\");\n    } catch (error) {\n      const questionListUrl: string = this.router.generate(\"custom-company-questionary-child-router\", { questionaryId: this.model.questionaryId }) + \"/custom-company-questions\";\n      return await this.router.navigate(questionListUrl);\n    }\n  }\n\n  // public cancel(): void {\n  //   this.logger.info(\"cancel\", this.router);\n  //   this.router.navigate(`questions`);\n  // }\n\n  public addResponseOption(isColumn: boolean): void {\n    this.logger.info(\"addReponseOption\");\n    let responseOption: ResponseOption = new ResponseOption();\n    responseOption.id = 0;\n    responseOption.order = this.model.responseOptions.length;\n    responseOption.isColumn = isColumn;\n    responseOption.option = \"\";\n    this.model.responseOptions.push(responseOption);\n  }\n\n  public deleteResponseOption(index: number) {\n    let responseOption = this.model.responseOptions[index];\n    //validation\n    this.validationController.removeObject(responseOption);\n    //delete\n    this.model.responseOptions.splice(index, 1);\n  }\n\n  public setFile($event: any, item: ResponseOption): void {\n    this.logger.debug(\"setFile\");\n    let file = <File>$event.target.files[0];\n    let fileValidator = FileAcceptValidator.parse(\"image/*\", 1024 * 300);\n    if (fileValidator.isValid(file)) {\n      let reader: FileReader = new FileReader();\n      reader.readAsDataURL(file);\n      reader.onload = () => {\n        let base64data: any = reader.result;\n        item.thumbnailImage = base64data;\n        item.option = file.name;\n        item.thumbnailImageUrl = URL.createObjectURL(file);\n      };\n    }\n    else {\n      this.notification.error(\"main.admin.pages.questionaries.questions.errors.error_bad_image\");\n\n    }\n  }\n\n  public unSetFile(item: ResponseOption): void {\n    item.option = null;\n    item.thumbnailImage = null;\n    item.thumbnailImageUrl = null;\n  }\n\n  public getQuestionUsesByQuestionType(): Array<any> {\n    this.logger.debug(\"getQuestionUsesByQuestionType\");\n    let result: Array<any> = [];\n    this.logger.debug(\"getQuestionUsesByQuestionType this.model.questionType\", this.model.questionType);\n    switch (+this.model.questionType) {\n      case QuestionType.SingleChoiceList:\n      case QuestionType.SingleImageChoiceList:\n      case QuestionType.SingleChoiceListWithComments:\n      case QuestionType.MultipleChoiceList:\n      case QuestionType.MultipleImageChoiceList:\n      case QuestionType.Matrix:\n        this.logger.debug(\"QuestionType.All\");\n        result = Object.keys(QuestionUse)\n          .filter(key => QuestionUse[key] === QuestionUse.Evaluation || QuestionUse[key] === QuestionUse.Example)\n          .map(key => ({ id: QuestionUse[key], name: key }));\n        break;\n      case QuestionType.DescriptiveText:\n        this.logger.debug(\"QuestionType.DescriptiveText\");\n        result = Object.keys(QuestionUse)\n          .filter(key => QuestionUse[key] === QuestionUse.Instruction || QuestionUse[key] === QuestionUse.Warning || QuestionUse[key] === QuestionUse.Farewell)\n          .map(key => ({ id: QuestionUse[key], name: key }));\n        break;\n      case QuestionType.OpenAnswerQuestion:\n        this.logger.debug(\"QuestionType.OpenAnswerQuestion\");\n        result = Object.keys(QuestionUse)\n          .filter(key => QuestionUse[key] === QuestionUse.Evaluation || QuestionUse[key] === QuestionUse.Example || QuestionUse[key] === QuestionUse.Warning)\n          .map(key => ({ id: QuestionUse[key], name: key }));\n        break;\n      default:\n        break;\n    }\n    this.logger.debug(\"getQuestionUsesByQuestionType result:\", result);\n    return result;\n  }\n\n  // public endDragAndDropResponseOption(customEvent: CustomEvent) {\n  //   let event = customEvent.detail;\n\n  //   this.logger.debug(\"endDragAndDropResponseOption event.oldIndex:\", event.oldIndex);\n  //   this.logger.debug(\"endDragAndDropResponseOption event.newIndex:\", event.newIndex);\n\n  // let movedItem = this.model.responseOptions.find((item, index) => index === event.oldIndex);\n  // let remainingItems = this.model.responseOptions.filter((item, index) => index !== event.oldIndex);\n\n  // let j: number = 0;\n  // for (let i: number = 0; i < remainingItems.length; i++) {\n  //   if (i === event.newIndex) {\n  //     movedItem.order = j;\n  //     j++;\n  //     remainingItems[i].order = j;\n  //   } else {\n  //     remainingItems[i].order = j;\n  //   }\n  //   this.logger.debug(\"endDragAndDropResponseOption i, j:\", i, j);\n  //   j++;      \n  // }\n\n  // if (event.newIndex === remainingItems.length) {\n  //   this.logger.debug(\"endDragAndDropResponseOption last:\");\n  //   movedItem.order = event.newIndex;\n  // }\n  // }\n\n}\n","module.exports = \"<template> <require from=../../../../../../models/questions/questionTypeViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2 if.bind=!model.id>${'main.admin.pages.questionaries.questions.create' & t}</h2> <h2 if.bind=model.id>${'main.admin.pages.questionaries.questions.edit' & t}</h2> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-12> <h3>${'main.admin.pages.questionaries.questions.question_type.' + QuestionType[model.questionType] & t}</h3> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-11 col-12\\\"> <p>${'main.admin.pages.questionaries.questions.edit_info' & t}</p> <p if.bind=isVideoInterview class=\\\"alert alert-info\\\"> ${videoInterviewEvaluationRangeInfo} </p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=row style=margin-bottom:50px> <div class=col-12> <label for=Question t=main.admin.pages.questionaries.questions.question>Question</label> <quill-editor value.bind=\\\"model.formulation & validate\\\"></quill-editor> </div> </div> <div class=clearfix></div> <div class=\\\"row mb-4\\\"> <div class=col-12> <p>&nbsp;</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=Order t=main.admin.pages.questionaries.questions.order>Order</label> <input type=number value.bind=\\\"model.order & validate\\\" class=form-control id=Order t=[placeholder]main.admin.pages.questionaries.questions.order disabled.bind=isDisabled> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label for=use t=main.admin.pages.questionaries.questions.use>Use</label> <select value.bind=\\\"model.questionUse & validate\\\" class=form-control id=use t=[placeholder]main.admin.admin.pages.questionaries.questions.use disabled.bind=isDisabled> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of getQuestionUsesByQuestionType(model.questionType)\\\" model.bind=option.id> ${'main.admin.pages.questionaries.questions.question_use.' + option.name & t} </option> </select> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.SingleChoiceList || model.questionType == QuestionType.MultipleChoiceList || model.questionType == QuestionType.SingleChoiceListWithComments\\\"> <div class=col-12> <h4>${'main.admin.pages.questionaries.questions.responses' & t}</h4> <ul class=list-group> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\"> <div class=row> <div class=col-10> <div class=form-group> <input type=text name=item value.bind=item.option class=form-control /> </div> </div> <div class=col-2> <button type=button class=\\\"btn btn-link\\\" click.delegate=deleteResponseOption($index)> <i class=material-icons>archive</i> </button> </div> </div> </li> </ul> <br/> <button type=button class=\\\"btn btn-primary btn-round\\\" click.delegate=addResponseOption(false)> <i class=material-icons>add</i> </button> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.SingleImageChoiceList || model.questionType == QuestionType.MultipleImageChoiceList\\\"> <div class=col-12> <h4>${'main.admin.pages.questionaries.questions.responses' & t}</h4> <ul class=list-group> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\"> <div class=row> <div class=\\\"col-md-4 col-10\\\"> <div class=custom-file> <input type=file class=custom-file-input id=item.option accept=image/* change.delegate=\\\"setFile($event, item)\\\"> <label class=custom-file-label for=item.option>${item.option}</label> </div> <img if.bind=item.thumbnailImageUrl class=\\\"img-thumbnail w-50\\\" alt.bind=item.option src.bind=item.thumbnailImageUrl> </div> <div class=col-2> <button type=button class=\\\"btn btn-link\\\" click.delegate=deleteResponseOption($index)> <i class=material-icons>archive</i> </button> </div> </div> </li> </ul> <br/> <button type=button class=\\\"btn btn-primary btn-round\\\" click.delegate=addResponseOption(false)> <i class=material-icons>add</i> </button> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.Matrix\\\"> <div class=col-12> <h4>${'main.admin.pages.questionaries.questions.responses' & t}</h4> <div class=row> <div class=\\\"col-12 col-md-6\\\"> <p>${'main.admin.pages.questionaries.questions.matrix_rows' & t}</p> <ul class=list-group> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\" if.bind=!item.isColumn> <div class=row> <div class=col-10> <div class=form-group> <input type=text name=item value.bind=item.option class=form-control> </div> </div> <div class=col-2> <button type=button class=\\\"btn btn-link\\\" click.delegate=deleteResponseOption($index)> <i class=material-icons>archive</i> </button> </div> </div> </li> </ul> <br/> <button type=button class=\\\"btn btn-primary btn-round\\\" click.delegate=addResponseOption(false)> <i class=material-icons>add</i> </button> </div> <div class=\\\"col-12 col-md-6\\\"> <p>${'main.admin.pages.questionaries.questions.matrix_columns' & t}</p> <ul class=list-group> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\" if.bind=item.isColumn> <div class=row> <div class=col-10> <div class=form-group> <input type=text name=item value.bind=item.option class=form-control> </div> </div> <div class=col-2> <button type=button class=\\\"btn btn-link\\\" click.delegate=deleteResponseOption($index)> <i class=material-icons>archive</i> </button> </div> </div> </li> </ul> <br/> <button type=button class=\\\"btn btn-primary btn-round\\\" click.delegate=addResponseOption(true)> <i class=material-icons>add</i> </button> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.DescriptiveText\\\"> <div class=col-12> <h4>${'main.admin.pages.questionaries.questions.descriptive_text_image' & t}</h4> <ul class=list-group> <li class=list-group-item repeat.for=\\\"item of model.responseOptions\\\"> <div class=row> <div class=\\\"col-md-4 col-10\\\"> <div class=custom-file> <input type=file class=custom-file-input id=item.option accept=image/* change.delegate=\\\"setFile($event, item)\\\"> <label class=custom-file-label for=item.option>${item.option}</label> </div> <img if.bind=item.thumbnailImageUrl class=\\\"img-thumbnail w-50\\\" alt.bind=item.option src.bind=item.thumbnailImageUrl> </div> <div class=col-2> <div class=form-group if.bind=item.option> <button type=button class=\\\"btn btn-link\\\" click.delegate=unSetFile(item)> <i class=material-icons>archive</i> </button> </div> </div> </div> </li> </ul> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"model.questionType == QuestionType.OpenAnswerQuestion\\\"> <div class=col-12> <h4>${'main.admin.pages.questionaries.questions.ideal_response' & t}</h4> <div class=form-group> <input type=text value.bind=model.responseOptions[0].option name=item class=form-control> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=!isVideoInterview> <div class=col-12> <div class=form-actions> <button type=button click.delegate=submit(true) class=\\\"btn btn-primary btn-round\\\" t=commands.save_and_continue disabled.bind=!canSave> Save and edit </button> <button type=button click.delegate=submit(false) class=\\\"btn btn-primary btn-round\\\" t=commands.save disabled.bind=!canSave> Save </button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: custom-company-questions;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=isVideoInterview> <div class=col-12> <div class=form-actions> <button type=button click.delegate=submit(true) class=\\\"btn btn-primary btn-round\\\" t=commands.save_and_continue disabled.bind=!canSave> Save and edit </button> <button type=button click.delegate=submit(false) class=\\\"btn btn-primary btn-round\\\" t=commands.save disabled.bind=!canSave> Save </button> </div> </div> </div> </form> </div> </template>\";","import { Router } from \"aurelia-router\";\nimport { bindable } from \"aurelia-framework\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { I18N } from 'aurelia-i18n';\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { CustomCompanyQuestionService } from \"main/admin/services/questionaries/custom-company-question-service\";\nimport { QuestionType } from \"models/questions/questionType\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport {\n  UxDatatableParameters,\n  UxDatatableCustomAttribute\n} from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { DeleteConfirmation } from \"../../../../../components/delete-confirmation\";\nimport { State } from \"common/store/store-model\";\nimport { Company } from \"models/companies/company\";\nimport { StoreService } from \"common/store/store-service\";\nimport { CustomCompanyQuestionListResponse } from 'models/questions/custom-company-question-list-response';\nimport { VideoInterviewConfigurationStatus } from 'models/questions/video-interview-configuration-status';\n\n@autoinject()\nexport class QuestionList {\n\n  @bindable public questionaryId: number;\n\n  private logger: Logger;\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n\n  private params: any = {};\n  public companyId: number;\n  public company: Company;\n\n  private isLoaded: boolean = false;\n  private state: State;\n  public effectiveEvaluationQuestionCount: number = 0;\n  public hasRequiredVideoInterviewQuestions: boolean = null;\n  public videoInterviewMaximumReachedMessage: string = '';\n  public videoInterviewConfigurationStatus: VideoInterviewConfigurationStatus = null;\n  public VideoInterviewConfigurationStatus = VideoInterviewConfigurationStatus;\n\n  public get isVideoInterview(): boolean {\n    return this.videoInterviewConfigurationStatus != null;\n  }\n\n  public get canCreateQuestion(): boolean {\n    return this.videoInterviewConfigurationStatus !== VideoInterviewConfigurationStatus.MaximumReached;\n  }\n\n  constructor(\n    private store: StoreService,\n    private dialogService: DialogService,\n    private customCompanyQuestionService: CustomCompanyQuestionService,\n    private router: Router,\n    private notification: Notification,\n    private i18n: I18N,\n    public questionType: QuestionType) {\n\n    this.logger = LogManager.getLogger(\"QuestionList\");\n\n    this.state = this.store.state;\n\n  }\n\n  private async activate(params: any): Promise<void> {\n\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n\n\n\n    this.logger.debug(\"activated this.questionaryId\", params.questionaryId);\n    if (!isNaN(params.questionaryId)) {\n      this.questionaryId = +params.questionaryId;\n    }\n  }\n\n  private async bind(): Promise<any> {\n\n    if (!isNaN(this.params.companyId)) {\n      this.companyId = +this.params.companyId;\n      if (this.companyId) {\n        this.customCompanyQuestionService.client.currentCompanyId = this.companyId;\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n        this.isLoaded = true;\n        return await this.databind();\n      }\n    }\n\n\n  }\n\n  public async databind(): Promise<void> {\n\n    this.logger.debug(\"databind\");\n\n    return await this.refresh()\n      .then((response: CustomCompanyQuestionListResponse) => {\n        this.logger.debug(\"refresh\", response);\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private refresh = (): Promise<CustomCompanyQuestionListResponse> => {\n    return this.customCompanyQuestionService.list(this.questionaryId, this.parameters)\n      .then((response: CustomCompanyQuestionListResponse) => {\n        this.effectiveEvaluationQuestionCount = response.effectiveEvaluationQuestionCount;\n        this.hasRequiredVideoInterviewQuestions = response.hasRequiredVideoInterviewQuestions;\n        this.videoInterviewConfigurationStatus = response.videoInterviewConfigurationStatus;\n        this.videoInterviewMaximumReachedMessage = this.i18n.tr(\n          'main.admin.pages.questionaries.questions.status.videointerview_maximum_reached',\n          { maximum: response.maximumEvaluationQuestionCount });\n        return response;\n      });\n  }\n\n  private async delete(id: number, name: string): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.customCompanyQuestionService.delete(id)\n          .then(async () => {\n            this.notification.success(\"main.admin.pages.questionaries.questions.question_deleted\");\n            return await this.databind();\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class UserListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"UserListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-question-list\"),\n        name: \"custom-company-questions\"\n      },\n\n      {\n        route: \":questionId\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-question-child-router\"),\n        name: \"custom-company-question-child-router\",\n      },\n\n      {\n        route: \"create\",\n        name: \"custom-company-question-create-type-selection\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-question-type-selection\"),\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.questionaries.questions.create_info\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.TestManagementCustomCompanyQuestionaryUpdate]\n          }\n        }\n      },\n      \n      {\n        route: [\"create/:questionTypeId\"],\n        name: \"custom-company-question-create\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-question-child-router\"),\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.questionaries.questions.create\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.TestManagementCustomCompanyQuestionaryUpdate]\n          }\n        }\n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=./custom-company-question-create-card></require> <require from=../../../../../../models/questions/questionTypeViewEngineHooks></require> <div if.bind=!questionaryId> <h2>${'main.admin.pages.questionaries.new' & t}</h2> <p> ${'main.admin.pages.questionaries.questions.notification_new_question' & t} </p> </div> <div if.bind=questionaryId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${'main.admin.pages.questionaries.questions.title' & t}</h2> <p>${'main.admin.pages.questionaries.questions.info' & t}</p> <div class=\\\"alert alert-danger\\\" role=alert if.bind=\\\"videoInterviewConfigurationStatus == VideoInterviewConfigurationStatus.NoEvaluationQuestions\\\"> ${'main.admin.pages.questionaries.questions.status.videointerview_incomplete' & t} </div> <div class=\\\"alert alert-danger\\\" role=alert if.bind=\\\"isVideoInterview && !hasRequiredVideoInterviewQuestions\\\"> ${'main.admin.pages.questionaries.questions.status.videointerview_required_questions_incomplete' & t} </div> <div class=\\\"alert alert-success\\\" role=status if.bind=\\\"hasRequiredVideoInterviewQuestions && videoInterviewConfigurationStatus == VideoInterviewConfigurationStatus.ValidConfiguration\\\"> ${'main.admin.pages.questionaries.questions.status.videointerview_valid' & t} </div> <div class=\\\"alert alert-info\\\" role=status if.bind=\\\"hasRequiredVideoInterviewQuestions && videoInterviewConfigurationStatus == VideoInterviewConfigurationStatus.MaximumReached\\\"> ${videoInterviewMaximumReachedMessage} </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-6 scope=col t=main.admin.pages.questionaries.questions.question>Question</th> <th class=col-md-3 scope=col t=main.admin.pages.questionaries.questions.type>Type</th> <th class=col-md-3 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=col-md-6 style=height:100px> <p innerhtml.bind=\\\"item.formulation | sanitizeHTML\\\"></p> </td> <td class=col-md-3>${'main.admin.pages.questionaries.questions.question_type.' + QuestionType[item.questionType] & t} </td> <td class=\\\"col-md-3 d-flex\\\"> <a class=\\\"btn btn-link\\\" global-permission-show=\\\"can: QuestionUpdate\\\" route-href=\\\"route: custom-company-question-child-router; params.bind: {questionId:item.id}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: QuestionDelete\\\" click.delegate=\\\"delete(item.id, item.name)\\\" title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> <custom-company-question-create-card questionary-id.bind=questionaryId effective-evaluation-question-count.bind=effectiveEvaluationQuestionCount is-video-interview.bind=isVideoInterview can-create.bind=canCreateQuestion> </custom-company-question-create-card> </div> </div> </div> </template>\";","import { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Notification } from \"common/services/notification\";\nimport { QuestionType } from \"models/questions/questionType\";\n\n@autoinject()\nexport class CustomCompanyQuestionTypeSelection {\n\n  private logger: Logger;\n  private questionaryId: number;\n  private tabItem: string;\n\n  constructor(\n    private router: Router,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"CustomCompanyQuestionTypeSelection\");\n    this.tabItem = \"selectionList\";\n\n  }\n\n  public activate(params: any): any {\n    this.logger.info(\"Activated with questionaryId\", params.questionaryId);\n    if (!isNaN(params.questionaryId)) {\n      this.questionaryId = +params.questionaryId;\n    } else {\n      this.router.navigate(\"questionaries\");\n    }\n  }\n\n  public createQuestion(type: QuestionType): any {\n    this.logger.info(\"create question with type:\", type);\n    this.router.navigate(`create/${type}`);\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../../../models/questions/questionTypeViewEngineHooks></require> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-2\\\"> <div class=\\\"nav flex-column nav-pills\\\" id=v-pills-tab role=tablist aria-orientation=vertical> <a class=\\\"nav-link active\\\" id=v-pills-list-tab data-toggle=pill role=tab aria-controls=nav-list aria-selected=true href=#nav-list>${'main.admin.pages.questionaries.questions.choice_list' & t}</a> <a class=nav-link id=v-pills-image-tab data-toggle=pill role=tab aria-controls=nav-image aria-selected=false href=#nav-image>${'main.admin.pages.questionaries.questions.choice_images' & t}</a> <a class=nav-link id=v-pills-matrix-tab data-toggle=pill role=tab aria-controls=nav-matrix aria-selected=false href=#nav-matrix>${'main.admin.pages.questionaries.questions.matrix' & t}</a> <a class=nav-link id=v-pills-others-tab data-toggle=pill role=tab aria-controls=nav-others aria-selected=false href=#nav-others>${'main.admin.pages.questionaries.questions.others' & t}</a> </div> </div> <div class=\\\"col-12 col-md-10\\\"> <div class=tab-content id=v-pills-tabContent> <h2>${'main.admin.pages.questionaries.questions.create' & t}</h2> <p>${'main.admin.pages.questionaries.questions.create_info' & t}</p> <hr> <div class=\\\"tab-pane fade show active\\\" id=nav-list role=tabpanel aria-labelledby=v-pills-list-tab> <h2>${'main.admin.pages.questionaries.questions.single_choice_list' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.single_choice_list_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.SingleChoiceList) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> <h2>${'main.admin.pages.questionaries.questions.multiple_choice_list' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.multiple_choice_list_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.MultipleChoiceList) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> <h2>${'main.admin.pages.questionaries.questions.single_choice_list_with_comments' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.single_choice_list_with_comments_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.SingleChoiceListWithComments) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=nav-image role=tabpanel aria-labelledby=v-pills-image-tab> <h2>${'main.admin.pages.questionaries.questions.single_choice_images' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.single_choice_images_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.SingleImageChoiceList) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> <h2>${'main.admin.pages.questionaries.questions.multiple_choice_images' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.multiple_choice_images_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.MultipleImageChoiceList) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=nav-matrix role=tabpanel aria-labelledby=v-pills-matrix-tab> <h2>${'main.admin.pages.questionaries.questions.matrix' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.matrix_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.Matrix) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=nav-others role=tabpanel aria-labelledby=v-pills-others-tab> <h2>${'main.admin.pages.questionaries.questions.descriptive_text' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.descriptive_text_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.DescriptiveText) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> <h2>${'main.admin.pages.questionaries.questions.open_answer_questions' & t}</h2> <div class=row> <div class=col-8> <div class=form-group> <p>${'main.admin.pages.questionaries.questions.open_answer_questions_info' & t}</p> </div> </div> <div class=col-4> <div class=form-group> <button type=button click.delegate=createQuestion(QuestionType.OpenAnswerQuestion) class=\\\"btn btn-primary btn-round\\\" t=commands.select>Select</button> </div> </div> </div> </div> </div> </div> </div></template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject()\nexport class DefaultColorsReportChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"DefaultColorsReportChildRouter\");\n  }\n\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./default-colors-report-edit\"),\n        name: \"default-colors-report-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.test_management.report_templates.report_template\"),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestManagementReportPredictorView]\n          }\n        }\n      },\n\n      {\n        route: \"default-colors-report-sheets\",\n        moduleId: PLATFORM.moduleName(\"./default-colors-report-sheet-list-edit\"),\n        name: \"default-colors-report-sheet-list-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.test_management.report_templates.sheets.title\"),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestManagementReportPredictorView]\n          }\n        }\n      }\n    ]);\n  }\n}","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template>\";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from 'common/store/store-service';\nimport { Company } from \"models/companies/company\";\nimport { ReportTemplateService } from \"../../../services/test-management/report-template-service\";\nimport { ReportTemplate } from \"models/test-core/report-templates/report-template\";\nimport { CoreLanguageService } from \"main/admin/services/localizations/core-language-service\";\n\n@autoinject()\nexport class DefaultColorsReportEdit {\n\n  private logger: Logger;\n\n  public companyId: number;\n  private company: Company;\n\n  public languageId;\n\n  private languages;\n\n  private model: ReportTemplate = new ReportTemplate();\n  private saveAndContinue: boolean = false;\n  private validationController: ValidationController;\n\n  private state: State;\n\n  constructor(\n    private store: StoreService,\n    private languageService: CoreLanguageService,\n    private router: Router,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private reportTemplateService: ReportTemplateService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"DefaultColorsReportEdit\");\n\n    this.state = this.store.state;\n\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.logger.debug(\"activate\");\n\n    if (!isNaN(params.companyId)) {\n\n      this.companyId = +params.companyId;\n\n      this.languages = await this.languageService.getAll();\n      this.setUserLanguage();\n\n      this.reportTemplateService.client.currentCompanyId = this.companyId;\n\n      this.company = this.state.companies.find(x => x.id == this.companyId);\n\n      if (!isNaN(params.reportTemplateId)) {\n        try {\n          this.model = await this.reportTemplateService.getById(+params.reportTemplateId);\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n      this.configureValidationRules();\n    }\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.test_management.questionary_groups.name\").required()\n      .ensure(\"itemToQualify\").displayName(\"main.admin.pages.questionaries.item_to_qualify\").required()\n      .ensure(\"languageId\").displayName(\"main.admin.pages.questionaries.item_to_qualify\").required()\n      .on(this.model);\n  }\n\n  public setUserLanguage() {\n    this.logger.debug(\"setUserLanguage\");\n    if (this.state && this.state.userBasicInfo) {\n      let activeCulture = this.state.userBasicInfo.culture;\n      let activeLang = this.languages.find((lg: { culture: string; }) => lg.culture === activeCulture);\n      if (activeLang) {\n        this.languageId = activeLang.id;\n        this.model.languageId = this.languageId;\n      }\n    }\n  }\n\n  private async submit(saveAndContinue: boolean): Promise<void> {\n    this.saveAndContinue = saveAndContinue;\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.reportTemplateService.client.isRequesting;\n  }\n\n  private async save(): Promise<any> {\n    try {\n      if (!this.model.id) {\n        this.model = await this.reportTemplateService.create(this.model);\n        this.notification.success(\"notifications.item_added\");\n\n        if (!this.saveAndContinue) {\n          return await this.router.navigateToRoute(\"default-colors-reports\");\n        } else {\n          return await this.router.navigateToRoute(\"default-colors-report-child-router\", { reportTemplateId: this.model.id });\n        }\n\n      } else {\n        await this.reportTemplateService.update(this.model);\n\n        this.notification.success(\"notifications.item_edited\");\n\n        if (!this.saveAndContinue) {\n          return await this.router.navigateToRoute(\"default-colors-reports\");\n        }\n\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n}","module.exports = \"<template> <require from=../../../../../models/questionaries/itemToQualifyViewEngineHooks></require> <require from=../../../../../models/questionaries/organizationTypeViewEngineHooks></require> <require from=../report-templates/report-template-create-card.html></require> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2 if.bind=!model.id>${'main.admin.pages.test_management.report_templates.create' & t}</h2> <h2 if.bind=model.id>${company.name} / ${model.name}</h2> <p> ${'main.admin.pages.test_management.report_templates.info_editing' & t} </p> <hr/> <div class=form-group> <label>${'main.admin.pages.test_management.report_templates.name' & t}</label> <input type=text class=form-control id=model.name t=[placeholder]main.admin.pages.test_management.report_templates.name value.bind=\\\"model.name & validate\\\"> </div> <div class=form-group if.bind=!model.id> <label for=itemToQualify t=main.admin.pages.test_management.report_templates.type>type</label> <select value.bind=\\\"model.itemToQualify & validate\\\" class=form-control id=itemToQualify disabled.bind=model.id> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of ItemsToQualify\\\" model.bind=ItemToQualify[option]> ${'main.admin.pages.questionaries.items_to_qualify.'+ option & t}</option> </select> </div> <div class=form-group if.bind=model.id> <label for=itemToQualify t=main.admin.pages.test_management.report_templates.type>Organization type</label> <p><strong>${'main.admin.pages.questionaries.items_to_qualify.' + ItemToQualify[model.itemToQualify] & t}</strong></p> </div> <div class=form-group if.bind=\\\"!model.id && model.itemToQualify == ItemToQualify.Organization\\\"> <label for=organizationType t=main.admin.pages.questionaries.organization_types.title>Organization type</label> <select value.bind=\\\"model.organizationType & validate\\\" class=form-control id=organizationType> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of OrganizationTypes\\\" model.bind=OrganizationType[option]> ${'main.admin.pages.questionaries.organization_types.' + option & t}</option> </select> </div> <div class=form-group if.bind=\\\"model.id && model.itemToQualify == ItemToQualify.Organization\\\"> <label for=organizationType t=main.admin.pages.questionaries.organization_types.title>Organization type</label> <p><strong>${'main.admin.pages.questionaries.organization_types.' + OrganizationType[model.organizationType] & t}</strong></p> </div> <div class=form-group if.bind=!model.id> <label for=languageId>${'main.admin.pages.questionaries.language' & t}</label> <select value.bind=model.languageId class=form-control id=languageId disabled.bind=model.id change.delegate=\\\"databind() & debounce:100\\\"> <option repeat.for=\\\"option of languages\\\" model.bind=option.id>${option.name & t}</option> </select> </div> <div class=form-group if.bind=model.id> <label for=languageId t=main.admin.pages.questionaries.language>idioma</label> <p><strong>${model.languageName & t}</strong></p> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-enable=\\\"can: TestManagementReportPredictorUpdate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-enable=\\\"can: TestManagementReportPredictorUpdate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: default-colors-reports;\\\" t=commands.cancel>Cancel</a> </div> </form> </div> </template>\";","import { StoreService } from 'common/store/store-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { RouteConfig } from \"aurelia-router\";\nimport {\n  UxDatatableParameters,\n  UxDatatableCustomAttribute,\n  UxDatatableResponse\n} from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { Company } from \"models/companies/company\";\nimport { State } from \"common/store/store-model\";\nimport { QuestionaryGroup } from 'models/test-management/questionary-groups/questionaryGroup';\nimport { DeleteConfirmation } from 'main/components/delete-confirmation';\nimport { DefaultColorsReportsService } from '../../../services/test-management/default-colors-reports-service';\nimport { ReportTemplate } from 'models/test-core/report-templates/report-template';\nimport { CompanySettings } from 'models/companies/company-settings';\nimport { CompanySettingsService } from 'main/admin/services/companies/company-settings-service';\nimport { Language } from 'models/localizations/language';\nimport { CoreLanguageService } from 'main/admin/services/localizations/core-language-service';\n\n@autoinject()\nexport class DefaultColorsReportList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n  private company: Company;\n\n  private languageId: number;\n  private languages: Language[];\n  private toggle: HTMLInputElement;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private state: State;\n  private isLoaded: boolean = false;\n  private companySettings: CompanySettings = new CompanySettings();\n\n  constructor(\n    private store: StoreService,\n    private languageService: CoreLanguageService,\n    private companySettingsService: CompanySettingsService,\n    private generalReportService: DefaultColorsReportsService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"DefaultColorsReportList\");\n\n    this.state = this.store.state;\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    let search = this.parameters.search.Query;\n    sessionStorage.setItem('defaultColorsReportListSearch', search == null ? '' : search);\n\n    return await this.generalReportService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    // this.logger.debug(\"activate\");\n    this.parameters.search.Query = sessionStorage.getItem('defaultColorsReportListSearch');\n\n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n\n  }\n\n  private async bind(): Promise<any> {\n    // this.logger.debug(\"bind\");\n\n    if (!isNaN(this.params.companyId)) {\n\n      this.companyId = +this.params.companyId;\n\n      if (this.companyId) {\n\n\n        this.languages = await this.languageService.getAll();\n        this.setUserLanguage();\n\n        this.generalReportService.client.currentCompanyId = this.companyId;\n\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n\n        this.companySettings = await this.companySettingsService.getById(this.companyId);\n\n        this.isLoaded = true;\n        return await this.databind();\n      }\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async clearFilters(): Promise<any> {\n    this.parameters.search.Query = null;\n    await this.databind();\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async delete(item: ReportTemplate): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: item.name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        return await this.generalReportService.delete(item.id)\n          .then(() => {\n\n            let indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(item.id.toString());\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"notifications.item_deleted\");\n\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n\n      }\n    });\n  }\n\n  public setUserLanguage() {\n    this.logger.debug(\"setUserLanguage\");\n    if (this.state && this.state.userBasicInfo) {\n      let activeCulture = this.state.userBasicInfo.culture;\n      let activeLang = this.languages.find((lg: { culture: string; }) => lg.culture === activeCulture);\n      if (activeLang) {\n        this.languageId = activeLang.id;\n      }\n    }\n  }\n\n  public async updateCompanySettings(item: CompanySettings): Promise<any> {\n    this.toggle.disabled = true;\n    await this.companySettingsService.update(item)\n      .then(async () => {\n        return await this.change(item);\n      })\n      .catch((error) => {\n        this.notification.error(error);\n      });\n  }\n\n  public async change(item: CompanySettings): Promise<any> {\n    await this.generalReportService.changeState(this.languageId, item.hasDefaultReports)\n      .then(async () => {\n        this.notification.success(\"main.admin.pages.test_management.questionaries_configuration.notifications.edited\");\n        this.toggle.disabled = false;\n        return await this.databind();\n      })\n      .catch((error) => {\n        this.notification.error(error);\n      });\n  }\n\n}","import { LogManager } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\n\nexport class DefaultColorsReportListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor() {\n    this.logger = LogManager.getLogger(\"DefaultColorsReportListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./default-colors-report-list\"),\n        name: \"default-colors-reports\",\n\n      },\n\n      {\n        route: \"default-colors-report/:reportTemplateId\",\n        moduleId: PLATFORM.moduleName(\"./default-colors-report-child-router\"),\n        name: \"default-colors-report-child-router\",\n      },\n    ]);\n  }\n}","module.exports = \"<template> <router-view></router-view> </template>\";","module.exports = \"<template> <require from=../../../../../models/questionaries/itemToQualifyViewEngineHooks></require> <require from=../report-templates/report-template-create-card.html></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${company.name} / ${'main.admin.pages.test_management.default_colors_reports.title' & t}</h2> <p> ${'main.admin.pages.test_management.default_colors_reports.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-2 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> <div class=\\\"col-md-2 col-12\\\"> <button class=\\\"btn btn-link\\\" click.delegate=clearFilters()> <i class=material-icons>clear</i> ${'commons.clear_filters' & t} </button> </div> <div class=\\\"col-md-3 col-12\\\" global-permission-show=\\\"can: CompanyUpdate\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox ref=toggle id=companySettings.hasDefaultReports class=switch checked.bind=companySettings.hasDefaultReports change.delegate=updateCompanySettings(companySettings)> <label for=companySettings.hasDefaultReports>${'main.admin.pages.companies.company_settings.has_default_reports' & t}</label> <br/> <p>${'main.admin.pages.companies.company_settings.has_default_reports.info' & t}</p> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-4 scope=col t=main.admin.pages.test_management.report_templates.name_title>Name</th> <th class=col-md-2 scope=col t=main.admin.pages.test_management.report_templates.type_title>Type</th> <th class=col-md-2 scope=col t=commons.created_on>Created on</th> <th class=col-md-2 scope=col t=commons.created_by>Created by</th> <th class=col-md-2 scope=col>&nbsp;</th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-4 text-truncate\\\" if.bind=item.isDefault><span title=\\\"${item.name & t}\\\">${item.name & t}</span></td> <td class=\\\"col-md-4 text-truncate\\\" if.bind=!item.isDefault><span title=${item.name}>${item.name}</span></td> <td class=col-md-2>${'main.admin.pages.questionaries.items_to_qualify.' + ItemToQualify[item.itemToQualify] & t}</td> <td class=col-md-2>${item.createdOn | dateFormat}</td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.createdBy}>${item.createdBy}</span></td> <td class=\\\"col-md-2 d-flex\\\"> <a if.bind=!item.isDefault class=\\\"btn btn-link\\\" global-permission-show=\\\"can: TestManagementReportPredictorUpdate\\\" route-href=\\\"route: default-colors-report-child-router; params.bind: {reportTemplateId:item.id}\\\" data-placement=top title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> </td> </tr> </tbody> </table> </div> </div> </div> </div> </template>\";","import { CompanyCompetenceService } from './../../../services/test-management/company-competence-service';\nimport { CompanyCompetence } from './../../../../../models/test-core/competences/company-competence';\nimport { DialogService } from 'aurelia-dialog';\nimport { DialogCloseResult } from 'aurelia-dialog';\nimport { CompanyCompetenceModal } from '../../../../test/pages/people-competence/company-competence-modal';\nimport { QuestionaryType } from './../../../../../models/questionaries/questionaryType';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from 'common/store/store-service';\nimport { Company } from 'models/companies/company';\nimport { ReportTemplate } from 'models/test-core/report-templates/report-template';\nimport { ReportTemplateService } from '../../../services/test-management/report-template-service';\nimport { CompanySheetService } from 'main/admin/services/test-management/company-sheet-service';\nimport { Sheet } from 'models/test-core/sheets/sheet';\nimport { Category } from 'models/test-core/sheets/category';\nimport { CategorySheetService } from 'main/admin/services/test-management/category-sheet-service';\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { CarouselConfig } from \"common/resources/elements/ux/carousel/carousel\";\nimport * as $ from \"jquery\";\nimport { Tests } from 'models/test-person/tests';\nimport { CoreCompanyService } from 'main/admin/services/companies/core-company-service';\n\ninterface SheetAvailable {\n  [id: number]: boolean;\n}\n\n@autoinject()\nexport class DefaultColorsReportSheetListEdit {\n\n  private logger: Logger;\n\n  public companyId: number;\n  private company: Company;\n\n  private validationController: ValidationController;\n\n  private reportTemplateId: number;\n  private languageId: number;\n  private model: ReportTemplate = new ReportTemplate();\n\n  private categories: Category[] = [];\n  private sheets: Sheet[] = [];\n\n  private state: State;\n\n  private search: string = null;\n\n  private questionariesCount: number = 0;\n  private duration: number = 0;\n  private price: number = 0;\n\n  private sheetIds: number[] = [];\n  private sheetIdsWithCompetencesEnabled: number[] = [];\n  private sheetIdsWithCompetences: number[] = [];\n\n  private sheetAvailable: SheetAvailable = {};\n  private isCompetenceActive: boolean = false;\n  private companyCompetences: CompanyCompetence[] = [];\n\n  private options = <CarouselConfig>{\n    duration: 600,\n    perPage: {\n      640: 1,\n      768: 2,\n      1080: 3\n    },\n    draggable: false,\n    loop: false,\n    autoPlay: true,\n    autoPlayInterval: 2500\n  };\n  private questionaryId: number;\n\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private notification: Notification,\n    private dialogService: DialogService,\n    private validationControllerFactory: ValidationControllerFactory,\n    private reportTemplateService: ReportTemplateService,\n    private companySheetService: CompanySheetService,\n    private categorySheetService: CategorySheetService,\n    private companyCompetenceService: CompanyCompetenceService,\n    private coreCompanyService: CoreCompanyService\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"DefaultColorsReportSheetListEdit\");\n    this.state = this.store.state;\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.logger.debug(\"activate\");\n\n    if (!isNaN(params.companyId)) {\n      this.companyId = +params.companyId;\n      this.reportTemplateId = +params.reportTemplateId;\n\n      this.reportTemplateService.client.currentCompanyId = this.companyId;\n      this.companySheetService.client.currentCompanyId = this.companyId;\n      this.categorySheetService.client.currentCompanyId = this.companyId;\n      this.companyCompetenceService.client.currentCompanyId = this.companyId;\n\n      this.company = this.state.companies.find(x => x.id == this.companyId);\n\n      try {\n        let settings = await this.coreCompanyService.getSettingsById(this.companyId);\n        this.questionaryId = settings.competencesQuestionaryId;\n\n        if (this.questionaryId == 0)\n          this.questionaryId = Tests['Competences'];\n\n        this.companyCompetences = await this.companyCompetenceService.getAll(this.questionaryId);\n        this.sheets = await this.companySheetService.getAll();\n        this.setSheetIdsWhitCompetences();\n\n        if (!isNaN(params.reportTemplateId)) {\n          this.model = await this.reportTemplateService.getById(this.reportTemplateId);\n          this.languageId = this.model.languageId;\n\n          this.fillSheetIdsWithCompetencesEnabled();\n          this.setDurationAndPrice();\n\n          // update sheet available\n          this.setSheetAvailable();\n\n          return await this.databind();\n        }\n\n      } catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n  private async databind(): Promise<any> {\n    this.logger.debug(\"databind\");\n    try {\n      this.categories = await this.categorySheetService.list(this.reportTemplateId, this.languageId, this.search);\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  get canSave() {\n    return !this.reportTemplateService.client.isRequesting;\n  }\n\n  public async save(saveAndContinue: boolean): Promise<any> {\n    this.logger.debug(\"sheetIds\", this.model.sheetIds);\n\n    return await this.reportTemplateService.update(this.model)\n      .then(async () => {\n        this.notification.success(\"notifications.item_edited\");\n\n        if (!saveAndContinue) {\n          return await this.router.navigateToRoute(\"default-colors-reports\");\n        }\n\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n    this.logger.debug(\"isCompetenceActive: \", this.isCompetenceActive);\n    if (this.model.sheetIds.length == 0) {\n      this.notification.warning(\"main.test.pages.people.errors.no_sheet_selected\");\n      return;\n    }\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          if (this.companyCompetences.length > 0 && this.isCompetenceActive && this.model.companyCompetenceIds.length == 0) {\n            this.notification.warning(\"main.test.pages.people.errors.no_competences_selected\");\n          }\n          else {\n            return await this.save(keepEditing);\n          }\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private changeSheetState(sheet: Sheet) {\n    const index = this.model.sheetIds.indexOf(sheet.id);\n\n    if (index !== -1) {\n      this.model.sheets.push(sheet);\n    }\n    else {\n      const index2 = this.model.sheets.findIndex(x => x.id === sheet.id);\n      if (index2 !== -1) {\n        this.model.sheets.splice(index2, 1);\n      }\n    }\n\n    if (this.companyCompetences.length > 0 && this.changeSheetIdsWithCompetencesEnabled(sheet.id) && this.isCompetenceActive) {\n      this.selectCompanyCompetence();\n    }\n\n    // update duration label\n    this.setDurationAndPrice();\n\n    // update sheet available\n    this.setSheetAvailable();\n  }\n\n  private setDurationAndPrice() {\n    let questionaries: Questionary[] = [];\n    let duration = 0;\n    let price = 0;\n    this.model.sheetIds.forEach(x => {\n      let sheet = this.sheets.find(y => y.id === x);\n      if (sheet) {\n        price += +sheet.talentsPrice;\n        sheet.questionaries.forEach(q => {\n          if (!questionaries.find(z => z.id === q.id)) {\n            questionaries.push(q);\n            duration += +q.averageTime;\n          }\n        });\n      }\n    });\n\n    this.questionariesCount = questionaries.length;\n    this.duration = duration;\n    this.price = price;\n  }\n\n  private isCompetenceType(sheets: Sheet[]): boolean {\n    let res: boolean = false;\n    sheets.forEach(x => {\n      let sheet = this.sheets.find(y => y.id === x.id);\n      if (sheet) {\n        let questionary = sheet.questionaries.find(q => q.questionaryType == QuestionaryType.Competences);\n        if (questionary) {\n          res = true;\n        }\n      }\n    });\n    return res;\n  }\n\n  private setSheetAvailable() {\n    this.sheets.forEach(x => {\n      if (this.model.sheetIds.indexOf(x.id) !== -1) {\n        this.sheetAvailable[x.id] = false;\n      }\n      else {\n        this.sheetAvailable[x.id] = true;\n      }\n    });\n  }\n\n  public orderChanged(orderedItems) {\n    this.model.sheets = orderedItems;\n    this.model.sheetIds = orderedItems.map(x => x.id);\n\n    // update duration label\n    this.setDurationAndPrice();\n\n    // update sheet available\n    this.setSheetAvailable();\n\n    let hasAddsheetIds = false;\n\n    orderedItems.forEach(x => {\n      if (this.changeSheetIdsWithCompetencesEnabled(x.id)) {\n        hasAddsheetIds = true;\n      }\n    });\n\n    if (hasAddsheetIds && this.companyCompetences.length > 0 && this.isCompetenceActive) {\n      this.selectCompanyCompetence();\n    }\n  }\n\n  private setSheetIdsWhitCompetences() {\n    this.sheets.forEach(x => {\n      x.questionaries.forEach(q => {\n        if (q.questionaryType == QuestionaryType.Competences) {\n          this.sheetIdsWithCompetences.push(x.id);\n        }\n      });\n    });\n  }\n\n  public async selectCompanyCompetence() {\n    let dialogModel = {\n      companyCompetences: this.companyCompetences,\n      selectedCompanyCompetenceIds: this.model.companyCompetenceIds,\n      sheetIds: this.sheetIdsWithCompetencesEnabled\n    };\n\n    this.dialogService.open({ viewModel: CompanyCompetenceModal, model: dialogModel })\n      .whenClosed((result: DialogCloseResult) => {\n        if (!result.wasCancelled) {\n          this.model.companyCompetenceIds = result.output || [];\n        }\n      });\n  }\n\n  private changeSheetIdsWithCompetencesEnabled(idSheet: number): boolean {\n    let sheetIdsWithCompentenceChanged: boolean = false;\n    const indexCompetenceSheetIds = this.sheetIdsWithCompetences.indexOf(idSheet);\n    const indexModelSheetIds = this.model.sheetIds.indexOf(idSheet);\n\n    if (indexCompetenceSheetIds !== -1) {\n      const indexCompetenceEnabledSheetIds = this.sheetIdsWithCompetencesEnabled.indexOf(idSheet);\n      if (indexModelSheetIds !== -1) {\n        if (indexCompetenceEnabledSheetIds === -1) {\n          this.sheetIdsWithCompetencesEnabled.push(idSheet);\n          sheetIdsWithCompentenceChanged = true;\n        }\n      } else {\n        if (indexCompetenceEnabledSheetIds !== -1) {\n          this.sheetIdsWithCompetencesEnabled.splice(indexCompetenceEnabledSheetIds, 1);\n          sheetIdsWithCompentenceChanged = true;\n        }\n      }\n    }\n\n    if (this.companyCompetences.length > 0 && this.sheetIdsWithCompetencesEnabled.length > 0) {\n      this.isCompetenceActive = true;\n    } else {\n      this.isCompetenceActive = false;\n      this.model.companyCompetenceIds = [];\n    }\n\n    return sheetIdsWithCompentenceChanged;\n  }\n\n  private fillSheetIdsWithCompetencesEnabled() {\n    this.sheetIdsWithCompetencesEnabled = [];\n    this.model.sheetIds.forEach(x => {\n      const indexCompetenceSheetIds = this.sheetIdsWithCompetences.indexOf(x);\n\n      if (indexCompetenceSheetIds !== -1) {\n        const indexCompetenceEnabledSheetIds = this.sheetIdsWithCompetencesEnabled.indexOf(x);\n        if (indexCompetenceEnabledSheetIds === -1) {\n          this.sheetIdsWithCompetencesEnabled.push(x);\n        }\n      }\n    });\n\n    this.logger.debug(\"sheetIdsWithCompetencesEnabled.length: \", this.sheetIdsWithCompetencesEnabled.length);\n\n    if (this.companyCompetences.length > 0 && this.sheetIdsWithCompetencesEnabled.length > 0) {\n      this.isCompetenceActive = true;\n    } else {\n      this.isCompetenceActive = false;\n      this.model.companyCompetenceIds = [];\n    }\n\n    this.logger.debug(\"isCompetenceActive: \", this.isCompetenceActive);\n  }\n\n}","module.exports = \"<template> <require from=../../test-core/sheets/sheet-card></require> <require from=../../test-core/sheets/sheet-card-small></require> <require from=common/resources/elements/ux/carousel/carousel></require> <div if.bind=!reportTemplateId> <h2>${'main.admin.pages.test_management.report_templates.new' & t}</h2> <p> ${'main.admin.pages.test_management.report_templates.new_info' & t} </p> </div> <div if.bind=reportTemplateId> <h2>${'main.admin.pages.test_management.report_templates.sheets.title' & t}</h2> <div class=\\\"row mb-3\\\"> <form class=content-main> <div class=\\\"row mb-3\\\"> <div class=col-12> <h4>${company.name} / ${model.name}</h4> <p>${'main.admin.pages.test_management.report_templates.sheets.info' & t}</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-10> <input type=text class=form-control value.bind=search t=[placeholder]ux_datatable.search_placeholder keyup.delegate=\\\"databind() & debounce:100\\\"> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <p t=main.admin.pages.test_management.questionary_groups.questionaries_info t-params.bind=\\\"{quantity: questionariesCount, duration: duration}\\\">Questionaries quantity </p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <span repeat.for=\\\"item of categories\\\" ref=$root model.bind=model> <div class=row> <div class=col-12> <a class=\\\"btn btn-link d-inline\\\" data-toggle=collapse href=#collapseSheets_${$index} role=button aria-expanded=false aria-controls=collapseSheets_${$index}> <i class=material-icons> arrow_drop_down </i> </a> <h5 class=d-inline> ${item.name & t} <small>${item.description & t }</small> </h5> <button class=\\\"btn btn-link\\\" if.bind=\\\"isCompetenceType(item.sheets) && isCompetenceActive\\\" click.delegate=selectCompanyCompetence() title=\\\"${'commands.view_competences' & t}\\\"> <i class=material-icons>visibility</i> </button> <p>${item.sheets.length} ${'commons.pages' & t}</p> </div> </div> <div class=\\\"row mb-1\\\"> <div class=col-12> <div class=\\\"collapse show\\\" id=collapseSheets_${$index}> <div class=\\\"card card-body\\\" reorderable-group-for.bind=item.sheets> <ux-carousel options.bind=options> <sheet-card reorderable-repeat.for=\\\"sheet of item.sheets\\\" reorderable-group=tht sheet.bind=sheet checked.bind=$root.model.sheetIds value.bind=sheet.id change.delegate=changeSheetState(sheet) show.bind=sheetAvailable[sheet.id]> </sheet-card> </ux-carousel> </div> </div> </div> </div> </span> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: TestManagementReportUpdate\\\" type=submit click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: TestManagementReportUpdate\\\" type=submit click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: default-colors-reports;\\\" t=commands.cancel>Cancel</a> </div> </div> </form> <div class=\\\"content-sidebar bg-light\\\" reorderable-group-for.bind=model.sheets> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-primary\\\" role=alert> <h4>${'main.admin.pages.test_management.report_templates.sheets.price' & t} <strong>${price}</strong></h4> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <sheet-card-small reorderable-repeat.for=\\\"sheet of model.sheets\\\" reorderable-group=tht reorderable-after-reordering=orderChanged ref=$root model.bind=model sheet.bind=sheet checked.bind=$root.model.sheetIds value.bind=sheet.id change.delegate=changeSheetState(sheet)> </sheet-card-small> </div> </div> </div> </div> </div> </template>\";","import { Language } from './../../../../../models/localizations/language';\nimport { StoreService } from 'common/store/store-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { State } from 'common/store/store-model';\nimport { Company } from 'models/companies/company';\nimport { CompanyDiscProfileService } from 'main/admin/services/test-management/company-disc-profile-service';\nimport { Router } from 'aurelia-router';\nimport { ValidationControllerFactory, ValidationController, ValidationRules, ControllerValidateResult } from 'aurelia-validation';\nimport { CompanyDiscProfile } from 'models/test-management/disc-profiles/company-disc-profile';\nimport { BootstrapFormRenderer } from 'common/services/bootstrap-form-renderer';\nimport { CoreLanguageService } from 'main/admin/services/localizations/core-language-service';\n\n\n@autoinject()\nexport class CompanyDiscProfileList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n  private company: Company;\n\n  public languageList: Language[] = [];\n  public selectedLanguageId: number;\n  public languageId: number;\n  \n  private state: State;\n  private isLoaded: boolean = false;\n\n  private model: CompanyDiscProfile = new CompanyDiscProfile();\n  private validationController: ValidationController;\n\n  constructor(\n    private store: StoreService,\n    private companyDiscProfileService: CompanyDiscProfileService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private router: Router,\n    private coreLanguageService: CoreLanguageService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"CompanyDiscProfileList\");\n\n    this.state = this.store.state;\n \n\n    \n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"d\").displayName(\"main.admin.pages.test_management.disc_profiles.names.D\").required()\n      .ensure(\"i\").displayName(\"main.admin.pages.test_management.disc_profiles.names.I\").required()\n      .ensure(\"s\").displayName(\"main.admin.pages.test_management.disc_profiles.names.S\").required()\n      .ensure(\"c\").displayName(\"main.admin.pages.test_management.disc_profiles.names.C\").required()\n      .on(this.model);\n  }\n\n  private async activate(params: any): Promise<void> {\n\n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n            return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n  }\n\n  public setUserLanguage() {    \n    this.logger.debug(\"setUserLanguage\");\n    if (this.state && this.state.userBasicInfo) {      \n      let activeCulture = this.state.userBasicInfo.culture;\n      let activeLang = this.languageList.find((lg: { culture: string; }) => lg.culture === activeCulture);\n      if (activeLang) {\n        this.languageId = activeLang.id;       \n      }\n    }\n  }\n\n  public async changeLanguage (){        \n    this.model = await this.companyDiscProfileService.getDiscByLanguage(this.languageId);\n  }\n\n  private async bind(): Promise<any> {\n    // this.logger.debug(\"bind\");\n\n    try {\n\n      if (!isNaN(this.params.companyId)) {\n\n        this.companyId = +this.params.companyId;\n        this.languageList = await this.coreLanguageService.getAll();\n        this.setUserLanguage();\n        if (this.companyId) {\n\n          this.companyDiscProfileService.client.currentCompanyId = this.companyId;\n\n          this.company = this.state.companies.find(x => x.id == this.companyId);\n\n          this.isLoaded = true;\n\n\n          // this.model = await this.companyDiscProfileService.get();\n\n          this.model = await this.companyDiscProfileService.getDiscByLanguage(this.languageId);\n          this.configureValidationRules();\n        }\n\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    };\n  }\n  \n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(keepEditing);\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.companyDiscProfileService.client.isRequesting;\n  }\n\n  public async save(keepEditing: boolean): Promise<any> {\n    this.logger.info(\"save\");\n\n    return await this.companyDiscProfileService.update(this.languageId, this.model)\n      .then(async () => {\n        this.notification.success(\"main.admin.pages.test_management.disc_profiles.messages.edited\");\n\n        if (!keepEditing) {\n          return await this.router.navigateToRoute(\"test-management-home\");\n        }\n\n      })\n      .catch((error) => {\n        this.notification.error(error);\n      });\n\n  }\n\n}\n","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2>${company.name} / ${'main.admin.pages.test_management.disc_profiles.title' & t}</h2> <p> ${'main.admin.pages.test_management.disc_profiles.info' & t} </p> <hr/> <div class=row> <div class=col-md-4> <th class=col-md-4 scope=col>${'main.admin.pages.languages.title' & t}</th> <br><br> <select value.bind=languageId class=form-control change.delegate=changeLanguage()> <option repeat.for=\\\"item of languageList\\\" model.bind=item.id>${item.name & t}</option> </select> </div> </div> <br><br> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-1\\\"> D </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <input type=text value.bind=\\\"model.d & t & validate\\\" class=form-control id=mode.d t=[placeholder]main.admin.pages.test_management.disc_profiles.names.D> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-1\\\"> I </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <input type=text value.bind=\\\"model.i & t & validate \\\" class=form-control id=mode.i t=[placeholder]main.admin.pages.test_management.disc_profiles.names.I> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-1\\\"> S </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <input type=text value.bind=\\\"model.s & t & validate\\\" class=form-control id=mode.s t=[placeholder]main.admin.pages.test_management.disc_profiles.names.S> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-1\\\"> C </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <input type=text value.bind=\\\"model.c & t & validate\\\" class=form-control id=mode.c t=[placeholder]main.admin.pages.test_management.disc_profiles.names.C> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-actions> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: TestManagementDiscProfileUpdate\\\" type=submit click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: TestManagementDiscProfileUpdate\\\" type=submit click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: test-management-home;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </div> </template> \";","import { StoreService } from 'common/store/store-service';\nimport { Language } from './../../../../../models/localizations/language';\nimport { CompanyDiscStyleModal } from './disc-style-modal';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { Notification } from \"common/services/notification\";\n\nimport {\n  UxDatatableParameters,\n  UxDatatableCustomAttribute,\n  UxDatatableResponse\n} from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { CompanyDiscStyleService } from '../../../services/test-management/company-disc-style-service';\nimport { State } from 'common/store/store-model';\nimport { Company } from 'models/companies/company';\nimport { CompanyDiscStyle } from 'models/test-management/disc-styles/company-disc-style';\nimport { CoreLanguageService } from 'main/admin/services/localizations/core-language-service';\nimport { LanguageService } from \"../../../services/localizations/language-service\";\n\n\n@autoinject()\nexport class CompanyDiscStyleList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n  private company: Company;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n  private model1: CompanyDiscStyle = new CompanyDiscStyle();\n\n  public languageList: Language[] = [];\n  public selectedLanguageId: number;\n  public languageId: number;\n\n  private state: State;\n  private isLoaded: boolean = false;\n\n  constructor(\n    private store: StoreService,\n    private companyDiscStyleService: CompanyDiscStyleService,\n    private dialogService: DialogService,\n    private coreLanguageService: CoreLanguageService,\n    private languageService: CoreLanguageService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"CompanyDiscStyleList\");\n\n    this.state = this.store.state;\n\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.companyDiscStyleService.list(this.languageId, this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async activate(params: any): Promise<void> {\n\n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n  }\n\n  public setUserLanguage() {    \n    this.logger.debug(\"setUserLanguage\");\n    if (this.state && this.state.userBasicInfo) {      \n      let activeCulture = this.state.userBasicInfo.culture;\n      let activeLang = this.languageList.find((lg: { culture: string; }) => lg.culture === activeCulture);\n      if (activeLang) {\n        this.languageId = activeLang.id;             \n      }\n    }\n  }\n\n   public async changeLanguage (){       \n    // this.parameters = await this.companyDiscStyleService.list(this.languageId, this.parameters);\n    await this.databind();\n    }\n  \n  private async bind(): Promise<any> {\n    // this.logger.debug(\"bind\");\n\n    \n    if (!isNaN(this.params.companyId)) {\n\n      this.languageList = await this.languageService.getAll();\n      this.setUserLanguage();\n      this.companyId = +this.params.companyId;\n\n      if (this.companyId) {\n\n        this.companyDiscStyleService.client.currentCompanyId = this.companyId;\n\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n        // this.model1  = await this.companyDiscStyleService.list(this.languageId, this.parameters);\n        this.isLoaded = true;\n        return await this.databind();\n      }\n    }\n  }\n\n  private async databind(): Promise<any> {\n    this.logger.debug(\"databind\");\n\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.logger.debug(\"refresh\", response);\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async edit( item: CompanyDiscStyle): Promise<void> {\n    let orginialItem = JSON.parse(JSON.stringify(item));\n    return await this.dialogService.open({\n      viewModel: CompanyDiscStyleModal,\n      model: item\n      \n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        item.languageId = this.languageId;\n        return await this.companyDiscStyleService.update( item )\n          .then(async (model: CompanyDiscStyle) => {\n\n            this.logger.debug(\"model.id\", model.id);\n            item.id = model.id;\n\n            this.notification.success(\"main.admin.pages.test_management.disc_styles.notifications.edited\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n      else {\n        Object.assign(item, orginialItem);\n      }\n    });\n  }\n\n\n}\n","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${company.name} / ${'main.admin.pages.test_management.disc_styles.title' & t}</h2> <p> ${'main.admin.pages.test_management.disc_styles.info' & t} </p> <hr/> <div class=row> <div class=col-md-4> <th class=col-md-4 scope=col>${'main.admin.pages.languages.title' & t}</th> <br><br> <select value.bind=languageId class=form-control change.delegate=changeLanguage()> <option repeat.for=\\\"item of languageList\\\" model.bind=item.id>${item.name & t}</option> </select> </div> </div> <br><br> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-2 scope=col>${'main.admin.pages.test_management.disc_styles.discStyleName' & t}</th> <th class=col-md-4 scope=col>${'main.admin.pages.test_management.disc_styles.discStyleDescription' & t}</th> <th class=col-md-4 scope=col>${'main.admin.pages.test_management.disc_styles.name' & t}</th> <th class=col-md-2 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-2 text-truncate\\\"><span title=\\\"${item.discStyleName & t}\\\">${item.discStyleName & t}</span></td> <td class=col-md-4 style=height:100px><span title=\\\"${item.discStyleDescription & t}\\\">${item.discStyleDescription & t}</span></td> <td class=\\\"col-md-4 text-truncate\\\"><span title=${item.name}>${item.name}</span></td> <td class=\\\"col-md-2 d-flex\\\"> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: TestManagementDiscStyleUpdate\\\" click.delegate=edit(item)> <i class=material-icons>edit</i> </button> </td> </tr> </tbody> </table> </div> </div> </div> </div> </template> \";","import { EducationalLevelCountry } from 'models/educational-levels-by-country/educational-level-country';\nimport { autoinject, LogManager, NewInstance } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { CompanyDiscStyle } from 'models/test-management/disc-styles/company-disc-style';\n\n@autoinject()\nexport class CompanyDiscStyleModal {\n\n  private model: CompanyDiscStyle = new CompanyDiscStyle();\n\n  private validationController: ValidationController;\n  private logger: Logger;\n\n  constructor(\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"CompanyDiscStyleModal\");\n\n  }\n\n  async activate(model: CompanyDiscStyle): Promise<void> {\n    this.logger.debug(\"activate\");\n    this.model = model;\n    this.configureValidationRules();\n  }\n\n  configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.test_management.disc_styles.name\").required()\n      .on(this.model);\n  }\n\n  public async submit(): Promise<void> {\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n  \n  public async save(): Promise<any> {\n    return await this.dialogController.ok();\n  }\n\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'main.admin.pages.test_management.disc_styles.title' & t}</h2> <div class=\\\"row mb-3\\\"> <div class=col-12> <h5> ${model.discStyleName & t}</h5> <p> ${model.discStyleDescription & t} </p> </div> </div> <form> <div class=form-group> <input type=text value.bind=\\\"model.name & validate\\\" class=form-control id=name t=[placeholder]main.admin.pages.test_management.disc_styles.name> </div> <div class=form-group> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { StoreService } from 'common/store/store-service';\nimport { QuestionaryConfigurationModal } from './questionary-configuration-modal';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { Notification } from \"common/services/notification\";\n\nimport {\n  UxDatatableParameters,\n  UxDatatableCustomAttribute,\n  UxDatatableResponse\n} from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { State } from 'common/store/store-model';\nimport { Company } from 'models/companies/company';\nimport { QuestionaryConfigurationService } from '../../../services/test-management/questionary-configuration-service';\nimport { QuestionaryConfiguration } from 'models/test-management/questionaries-configuration/questionary-configuration';\nimport { AgreementService } from 'main/admin/services/agreements/agreement-service';\n\n\n@autoinject()\nexport class QuestionaryConfigurationList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n  private company: Company;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private state: State;\n  private isLoaded: boolean = false;\n\n  private companyHasTestControl: boolean = false;\n\n  constructor(\n    private store: StoreService,\n    private questionaryConfigurationService: QuestionaryConfigurationService,\n    private dialogService: DialogService,\n    private agreementService: AgreementService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"QuestionaryConfigurationList\");\n\n    this.state = this.store.state;\n\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.questionaryConfigurationService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async activate(params: any): Promise<void> {\n    // Show or hide test control column based on company has test control\n    let companySettings = await this.agreementService.getTestControlCompanySettingsByCompanyId(params.companyId);\n    this.companyHasTestControl = companySettings != null ? companySettings.hasTestControl : false;\n\n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n  }\n\n\n  private async bind(): Promise<any> {\n    // this.logger.debug(\"bind\");\n\n    if (!isNaN(this.params.companyId)) {\n\n      this.companyId = +this.params.companyId;\n\n      if (this.companyId) {\n\n        this.questionaryConfigurationService.client.currentCompanyId = this.companyId;\n\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n\n        this.isLoaded = true;\n        return await this.databind();\n      }\n    }\n  }\n\n  private async databind(): Promise<any> {\n    this.logger.debug(\"databind\");\n\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.logger.debug(\"refresh\", response);\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  // private async edit(item: QuestionaryConfiguration): Promise<void> {\n  //   let orginialItem = JSON.parse(JSON.stringify(item));\n  //   return await this.dialogService.open({\n  //     viewModel: QuestionaryConfigurationModal,\n  //     model: item\n  //   }).whenClosed(async (response: DialogCloseResult) => {\n  //     if (!response.wasCancelled) {\n  //       return await this.questionaryConfigurationService.update(item)\n  //         .then(async (model: QuestionaryConfiguration) => {\n\n  //           this.logger.debug(\"model.id\", model.id);\n  //           item.id = model.id;\n\n  //           this.notification.success(\"main.admin.pages.test_management.disc_styles.notifications.edited\");\n  //         })\n  //         .catch(error => {\n  //           this.notification.error(error);\n  //         });\n  //     }\n  //     else {\n  //       Object.assign(item, orginialItem);\n  //     }\n  //   });\n  // }\n\n  private async save(item: QuestionaryConfiguration): Promise<void> {\n\n    if (this.isDaysBetween0And365(item.daysForDeadline)) {\n\n      return await this.questionaryConfigurationService.update(item)\n        .then(async (model: QuestionaryConfiguration) => {\n\n          this.logger.debug(\"model.id\", model.id);\n          item.id = model.id;\n\n          this.notification.success(\"main.admin.pages.test_management.questionaries_configuration.notifications.edited\");\n        })\n        .catch(async error => {\n          await this.databind();\n          this.notification.error(error);\n        });\n\n    }\n    else {\n      this.notification.warning(\"main.admin.pages.test_management.questionaries_configuration.notifications.days_for_deadline_wrong\");\n    }\n  }\n\n\n  private isDaysBetween0And365(n) {\n    return /^(?:36[0-5]|3[0-5]\\d|[12]\\d{2}|[1-9]\\d?)$/.test(n);\n  }\n}\n","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${company.name} / ${'main.admin.pages.test_management.questionaries_configuration.title' & t}</h2> <p> ${'main.admin.pages.test_management.questionaries_configuration.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-5 scope=col> ${'main.admin.pages.test_management.questionaries_configuration.questionary_name' & t} </th> <th class=col-md-1 scope=col> ${'main.admin.pages.test_management.questionaries_configuration.has_random_questions' & t}</th> <th class=col-md-1 scope=col> ${'main.admin.pages.test_management.questionaries_configuration.has_random_responses' & t}</th> <th class=col-md-1 scope=col> ${'main.admin.pages.test_management.questionaries_configuration.has_chronometer' & t}</th> <th class=col-md-1 scope=col> ${'main.admin.pages.test_management.questionaries_configuration.show_results_at_end' & t} </th> <th if.bind=companyHasTestControl class=col-md-1 scope=col> ${'main.admin.pages.test_management.questionaries_configuration.has_test_control' & t} </th> <th class=col-md-2 scope=col> ${'main.admin.pages.test_management.questionaries_configuration.days_for_deadline' & t} </th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-5 text-truncate\\\"><span title=${item.questionaryName}>${item.questionaryName}</span></td> <td class=col-md-1> <span class=\\\"switch switch-sm\\\"> <input global-permission-enable=\\\"can: TestManagementQuestionaryConfigurationUpdate\\\" type=checkbox class=switch id=hasRandomQuestions_${$index} checked.bind=item.hasRandomQuestions change.delegate=save(item) /> <label for=hasRandomQuestions_${$index} class=form-check-label>&nbsp;</label> </span> </td> <td class=col-md-1> <span class=\\\"switch switch-sm\\\"> <input global-permission-enable=\\\"can: TestManagementQuestionaryConfigurationUpdate\\\" type=checkbox class=switch id=hasRandomResponses_${$index} checked.bind=item.hasRandomResponses change.delegate=save(item) /> <label for=hasRandomResponses_${$index} class=form-check-label>&nbsp;</label> </span> </td> <td class=col-md-1> <span class=\\\"switch switch-sm\\\"> <input global-permission-enable=\\\"can: TestManagementQuestionaryConfigurationUpdate\\\" type=checkbox class=switch id=hasChronometer_${$index} checked.bind=item.hasChronometer change.delegate=save(item) /> <label for=hasChronometer_${$index} class=form-check-label>&nbsp;</label> </span> </td> <td class=col-md-1> <span class=\\\"switch switch-sm\\\"> <input global-permission-enable=\\\"can: TestManagementQuestionaryConfigurationUpdate\\\" type=checkbox class=switch id=showResultsAtEnd_${$index} checked.bind=item.showResultsAtEnd change.delegate=save(item) /> <label for=showResultsAtEnd_${$index} class=form-check-label>&nbsp;</label> </span> </td> <td if.bind=companyHasTestControl class=col-md-1> <span class=\\\"switch switch-sm\\\"> <input global-permission-enable=\\\"can: TestManagementQuestionaryConfigurationUpdate\\\" type=checkbox class=switch id=hasTestControl_${$index} checked.bind=item.hasTestControl change.delegate=save(item) /> <label for=hasTestControl_${$index} class=form-check-label>&nbsp;</label> </span> </td> <td class=col-md-2> <input global-permission-enable=\\\"can: TestManagementQuestionaryConfigurationUpdate\\\" type=number value.bind=item.daysForDeadline class=form-control id=daysForDeadline_${$index} change.delegate=save(item) /> </td> </tr> </tbody> </table> </div> </div> </div> </div> </template> \";","\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject()\nexport class QuestionaryGroupChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"QuestionaryGroupChildRouter\");\n  }\n\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./questionary-group-edit\"),\n        name: \"questionary-groups-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.test_management.questionary_groups.questionary_group\"),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestManagementQuestionaryGroupView]\n          }\n        }\n      }\n      \n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.test_management.questionary_groups.create_card.title' & t}</h5> <p t=[html]main.admin.pages.test_management.questionary_groups.create_card.info>Create new core group</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: questionary-group-child-router; params.bind: {questionaryGroupId:'create'}\\\">${'commands.create' & t}</a> </div> </div> </template> \";","import { ThematicGroupService } from 'main/admin/services/thematic-groups/thematic-group-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from 'common/store/store-service';\nimport { Company } from \"models/companies/company\";\nimport { QuestionaryGroup } from \"models/test-management/questionary-groups/questionaryGroup\";\nimport { QuestionaryGroupService } from \"main/admin/services/test-management/questionary-group-service\";\nimport { DialogService } from 'aurelia-dialog';\nimport { CoreLanguageService } from \"main/admin/services/localizations/core-language-service\";\nimport { Language } from \"models/localizations/language\";\nimport { CompanyQuestionaryService } from 'main/admin/services/test-management/company-questionary-service';\nimport { TestQuestionary } from 'models/test-core/test-questionary';\nimport { QuestionaryType } from 'models/questionaries/questionaryType';\nimport { ItemToQualify } from '../../../../../models/questionaries/itemToQualify';\nimport { NoDiscType } from 'models/questionaries/noDiscType';\nimport { QuestionaryLanguage } from 'models/questionaries/questionaryLanguage';\nimport { CompanyCompetenceModal } from '../../../../test/pages/people-competence/company-competence-modal';\nimport { BukProcess } from \"models/test-person/bukProcess\";\nimport { BukService } from \"main/test/services/buk/buk-service\";\nimport { DimensionSelectorModal, DimensionSelectorModel } from 'main/components/dimension-selector-modal';\nimport { QuestionaryGroupThematicAssociate } from 'models/test-management/questionary-groups/questionary-group-thematic-associate';\n\n@autoinject()\nexport class QuestionaryGroupEdit {\n\n  private logger: Logger;\n\n  public companyId: number;\n  private company: Company;\n\n  private model: QuestionaryGroup = new QuestionaryGroup();\n  private validationController: ValidationController;\n  private modularThematicTimes: Map<number, number> = new Map();\n  private state: State;\n\n  // Properties for questionary management\n  public languageList: Language[] = [];\n  public selectedLanguageId: number;\n  private questionaries: TestQuestionary[] = [];\n  private questionaries2: TestQuestionary[] = [];\n  private discs: TestQuestionary[] = [];\n  private noDiscs: TestQuestionary[] = [];\n  private engineersTest: TestQuestionary[] = [];\n  private modularTests: TestQuestionary[] = [];\n  private search: string = null;\n  private duration: number = 0;\n  private isCompetenceActive: boolean = false;\n  private isModularActive: boolean = false;\n  private hasBukActivationTest: boolean = false;\n \n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private questionaryGroupService: QuestionaryGroupService,\n    private dialogService: DialogService,\n    private languageService: CoreLanguageService,\n    private companyQuestionaryService: CompanyQuestionaryService,\n    private ThematicGroupService: ThematicGroupService,\n    private bukService: BukService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"QuestionaryGroupEdit\");\n\n    this.state = this.store.state;\n\n  }\n  public async validBukCompanyIntegration(){\n   this.hasBukActivationTest = await this.bukService.hasBukConnection();   \n   this.logger.info(\"validBukCompanyIntegration\", this.hasBukActivationTest);\n  }\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.logger.debug(\"activate\");\n\n    try {\n\n      if (!isNaN(params.companyId)) {\n        this.validBukCompanyIntegration();\n        this.companyId = +params.companyId;\n\n        this.questionaryGroupService.client.currentCompanyId = this.companyId;\n\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n\n        // Initialize questionaries and languages\n        this.questionaries = await this.companyQuestionaryService.getAll();\n        this.questionaries2 = this.questionaries;\n        this.languageList = await this.languageService.getAll();\n        \n        this.setUserLanguage();\n        this.filter();\n\n        if (!isNaN(params.questionaryGroupId)) {\n          this.model = await this.questionaryGroupService.getById(+params.questionaryGroupId);\n          this.cleanupObsoleteQuestionaries();\n          this.setDuration(false);          \n         // await this.loadDimensionsForSelectedModularTests();\n        } else {\n          // For new groups, initialize empty questionary selection\n          this.model.questionaryIds = [];\n        }\n\n        this.configureValidationRules();\n\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.test_management.questionary_groups.name\").required()\n      .on(this.model);\n  }\n\n  public setUserLanguage() {\n    this.logger.debug(\"setUserLanguage\");\n    if (this.state && this.state.userBasicInfo) {\n      let activeCulture = this.state.userBasicInfo.culture;\n      let activeLang = this.languageList.find(\n        (lg: { culture: string }) => lg.culture === activeCulture\n      );\n      if (activeLang) {\n        this.selectedLanguageId = activeLang.id;\n      }\n    }\n  }\n\n  get canSave() {\n    return !this.questionaryGroupService.client.isRequesting;\n  }\n\n  get canSaveWithQuestionaries() {\n    return this.model && this.model.questionaryIds && this.model.questionaryIds.length > 0;\n  }\n\n  public async submitComplete(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submitComplete\");\n    \n    try {\n      // First validate the basic form\n      const result: ControllerValidateResult = await this.validationController.validate();\n      \n      if (!result.valid) {\n        this.logger.debug(\"validation failed:\", result.results);\n        this.notification.warning(\"forms.validation_errors\");\n        return;\n      }\n       if (this.model.isExternalBukActivationTest && this.model.processBukIds != null ) {\n        let bukProcess = await this.bukService.getByProcessName(this.model.processBukIds);\n       if (bukProcess != null) {\n        this.model.processStageBukIds = bukProcess.processStageIds;\n        this.model.processBukNames = bukProcess.nameProcesses;        \n       }\n       }\n\n      // Validate questionary selection\n      if (this.model.questionaryIds.length == 0) {\n        this.notification.warning(\"main.test.pages.people.errors.no_questionaries_selected\");\n        return;\n      }\n\n      // Validate that all selected ACTIVE questionaries belong to the same language\n      // (inactive questionaries are ignored so legacy/disabled items don't block saving)\n      const selectedLanguageIds = this.model.questionaryIds\n        .map(qId => this.questionaries2.find(q => q.stringId == qId.stringId))\n        .filter(q => q != null && q.isActive && q.languageId != null)\n        .map(q => q!.languageId);\n      const uniqueLanguageIds = Array.from(new Set(selectedLanguageIds));\n      if (uniqueLanguageIds.length > 1) {\n        this.notification.warning(\n          \"main.admin.pages.test_management.questionary_groups.errors.cannot_mix_different_languages\"\n        );\n        return;\n      }\n\n      // Validate competences if needed\n      if (this.isCompetenceActive && this.model.companyCompetenceIds.length == 0) {\n        this.notification.warning(\"main.test.pages.people.errors.no_competences_selected\");\n        return;\n      }\n\n      // Validate modular if needed\n   if (this.isModularActive && (!this.model.questionaryGroupThematicAssociates || this.model.questionaryGroupThematicAssociates.length === 0)) {\n        this.notification.warning(\"main.test.pages.people.errors.no_thematic_groupid_selected\");\n        return;\n      }\n     // Validate no mix of modular and non-modular questionaries\n      if (this.model.questionaryIds.length > 0) {\n      const selectedIds = this.model.questionaryIds.map(qId => {\n      const q = this.questionaries2.find(y => y.stringId == qId.stringId);\n          return q ? q.id : 0;\n        }).filter(id => id > 0);\n\n        for (let i = 0; i < selectedIds.length; i++) {\n          const q = this.questionaries2.find(y => y.id === selectedIds[i]);\n          if (q && q.questionaryIncompatibilities && q.questionaryIncompatibilities.length > 0) {\n            for (let j = 0; j < q.questionaryIncompatibilities.length; j++) {\n              const incompatibleId = q.questionaryIncompatibilities[j].incompatibleQuestionaryId;\n              if (selectedIds.indexOf(incompatibleId) !== -1) {\n                const incompatibleQ = this.questionaries2.find(y => y.id === incompatibleId);\n                this.notification.warning(\n                  `${q.name} main.admin.pages.test_management.questionary_groups.errors.incompatible_with ${incompatibleQ ? incompatibleQ.name : incompatibleId}`\n                );\n                return;\n              }\n            }\n          }\n        }\n\n      }\n            // If it's a new group, create it first\n      if (!this.model.id) {\n        this.logger.debug(\"Creating new questionary group...\");\n        this.model = await this.questionaryGroupService.create(this.model);\n        this.logger.debug(\"Questionary group created with ID:\", this.model.id);\n        this.notification.success(\"notifications.item_added\");\n      }\n      \n      // Update the group with questionaries\n      await this.questionaryGroupService.update(this.model);\n      this.notification.success(\"notifications.item_edited\");\n\n      // Navigate only if not keeping editing\n      if (!keepEditing) {\n        await this.router.navigateToRoute(\"questionary-groups\");\n      }\n    } catch (error) {\n      this.logger.error(\"submitComplete error:\", error);\n      this.notification.error(error);\n    }\n  }\n\n  private filter(search?: string) {\n    if (search) {\n      this.questionaries = this.questionaries2.filter(\n        (x) => x.name.toLowerCase().indexOf(search.toLowerCase()) !== -1\n      );\n    } else {\n      this.questionaries = this.questionaries2;\n    }\n\n    if (this.selectedLanguageId == 0 || this.selectedLanguageId == null) {\n      this.discs = this.questionaries\n        .filter(\n          (x) =>\n            x.questionaryType === QuestionaryType.Disc &&\n            x.itemToQualify === ItemToQualify.Person && \n            !x.isModular\n        )\n        .sort((x, y) => x.order - y.order);\n\n      this.noDiscs = this.questionaries\n        .filter(\n          (x) =>\n            x.questionaryType !== QuestionaryType.Disc &&\n            x.noDiscType !== NoDiscType.EngineersTest &&\n            x.noDiscType !== NoDiscType.Potential &&\n            !x.isModular\n        )\n        .sort((x, y) => x.order - y.order);\n\n        this.modularTests = this.questionaries\n        .filter(\n          (x) =>\n            x.questionaryType !== QuestionaryType.Disc &&\n            x.noDiscType !== NoDiscType.EngineersTest &&\n            x.noDiscType !== NoDiscType.Potential &&\n            x.noDiscType !== NoDiscType.Performance &&\n            x.isModular\n        )\n        .sort((x, y) => x.order - y.order);\n\n      this.engineersTest = this.questionaries\n        .filter(\n          (x) =>\n            x.questionaryType !== QuestionaryType.Disc &&\n            x.noDiscType == NoDiscType.EngineersTest &&\n            !x.isModular\n        )\n        .sort((x, y) => x.order - y.order);\n    } else {\n      this.discs = this.questionaries\n        .filter(\n          (x) =>\n            x.questionaryType === QuestionaryType.Disc &&\n            x.languageId === this.selectedLanguageId &&\n            x.itemToQualify === ItemToQualify.Person &&\n            !x.isModular\n        )\n        .sort((x, y) => x.order - y.order);\n\n      this.noDiscs = this.questionaries\n        .filter(\n          (x) =>\n            x.questionaryType !== QuestionaryType.Disc &&\n            x.noDiscType !== NoDiscType.EngineersTest &&\n            x.noDiscType !== NoDiscType.Potential &&\n            x.languageId === this.selectedLanguageId &&\n            !x.isModular\n        )\n        .sort((x, y) => x.order - y.order);\n\n       this.modularTests = this.questionaries\n        .filter(\n          (x) =>\n            x.questionaryType !== QuestionaryType.Disc &&\n            x.noDiscType !== NoDiscType.EngineersTest &&\n            x.noDiscType !== NoDiscType.Potential &&\n            x.noDiscType !== NoDiscType.Performance &&\n            x.languageId === this.selectedLanguageId &&\n            x.isModular\n        )\n        .sort((x, y) => x.order - y.order); \n\n      this.engineersTest = this.questionaries\n        .filter(\n          (x) =>\n            x.questionaryType !== QuestionaryType.Disc &&\n            x.languageId === this.selectedLanguageId &&\n            x.noDiscType == NoDiscType.EngineersTest &&\n            !x.isModular\n        )\n        .sort((x, y) => x.order - y.order);\n    }\n  }\n\n  private async setDuration(showCompetences: boolean, newModularQuestionaryId: number = null){\n    this.logger.debug(\"ShowCompetence:\", showCompetences);\n    let aux = 0;\n    this.isCompetenceActive = false;\n    this.isModularActive = false;\n    for (const x of this.model.questionaryIds) {\n      let q = this.questionaries2.find((y) => y.stringId == x.stringId);\n      if (q) {\n        aux += +q.averageTime;\n        if (q.questionaryType == QuestionaryType.Competences) {\n          this.isCompetenceActive = true;\n          if (showCompetences) {\n            this.selectCompanyCompetence();\n          }\n        }\n        if (q.isModular) {\n          this.isModularActive = true;    \n       \n          if (newModularQuestionaryId != null && q.id === newModularQuestionaryId) {\n            this.selectThematics(q.id, q.name);\n          }\n           if (this.model.questionaryGroupThematicAssociates != null && this.model.questionaryGroupThematicAssociates.length > 0) {\n            let availableThematics = await this.companyQuestionaryService.getAvailableByQuestionaryId(q.id);\n            let associatesForQuestionary = this.model.questionaryGroupThematicAssociates.filter(a => a.questionaryId === q.id);\n            for (const associate of associatesForQuestionary) {\n              let thematic = availableThematics.find(v => v.id === associate.thematicGroupId);\n              aux += +(thematic && thematic.averageTime ? thematic.averageTime : 0);\n            }\n          }   \n        }\n      }\n    };\n\n    this.duration = aux;\n    this.logger.debug(\"duration\", this.duration);\n  }\n\n  private cleanupObsoleteQuestionaries(): void {\n    this.logger.debug(\"cleanupObsoleteQuestionaries - Before cleanup:\", this.model.questionaryIds.length);\n    \n    const originalCount = this.model.questionaryIds.length;\n    \n    // Filter out questionaries that no longer exist in the available questionaries list\n    const validQuestionaryIds = this.model.questionaryIds.filter(qId => {\n      const exists = this.questionaries2.some(q => q.stringId === qId.stringId);\n      if (!exists) {\n        this.logger.debug(\"Removing obsolete questionary:\", qId.stringId);\n      }\n      return exists;\n    });\n\n    // Update the model if any questionaries were removed\n    if (validQuestionaryIds.length !== originalCount) {\n      this.model.questionaryIds = validQuestionaryIds;\n      this.logger.debug(\"cleanupObsoleteQuestionaries - After cleanup:\", this.model.questionaryIds.length);\n    }\n  }\n\n  private async selectCompanyCompetence(): Promise<void> {\n    this.logger.debug(\"model.companyCompetenceIds\");\n    return await this.dialogService\n      .open({\n        viewModel: CompanyCompetenceModal,\n        model: this.model.companyCompetenceIds,\n      })\n      .whenClosed(async (response: any) => {\n        if (!response.wasCancelled) {\n          if (\n            this.isCompetenceActive &&\n            this.model.companyCompetenceIds.length == 0\n          ) {\n            this.notification.warning(\n              \"main.test.pages.people.errors.no_competences_selected\"\n            );\n          }\n        }\n      });\n  }\nprivate async selectThematics(questionaryId: number, questionaryName: string): Promise<void> {\n    this.logger.debug(\"model.questionaryGroupThematicAssociates\", this.model.questionaryGroupThematicAssociates);\n\n    // Ensure the array is initialized\n    if (!this.model.questionaryGroupThematicAssociates) {\n      this.model.questionaryGroupThematicAssociates = [];\n    }\n\n    // Get available dimensions and filter disabled ones\n    const allDimensions = await this.companyQuestionaryService.getAvailableByQuestionaryId(questionaryId);\n    const enabledDimensions = allDimensions.filter(d => !d.isDisabled);\n\n    // Check if the questionary is transversal (companyId == null)\n    const questionary = this.questionaries2.find(q => q.id === questionaryId);\n    \n    if (questionary && questionary.companyId != null && enabledDimensions.length > 0) {\n      \n      // Auto-select ALL dimensions for company questionaries\n      const newAssociates: QuestionaryGroupThematicAssociate[] = enabledDimensions.map(dim => {\n        let associate = new QuestionaryGroupThematicAssociate();\n        associate.questionaryId = questionaryId;\n        associate.thematicGroupId = dim.id;\n        associate.thematicVariableId = dim.thematicVariableId;\n        return associate;\n      });\n\n      const remaining = this.model.questionaryGroupThematicAssociates\n        .filter(a => a.questionaryId !== questionaryId);\n      this.model.questionaryGroupThematicAssociates = remaining.concat(newAssociates);\n\n      await this.setDuration(false);\n      return;\n    }\n\n    const modalModel: DimensionSelectorModel = {\n      questionaryId: questionaryId,\n      questionaryName: questionaryName,\n      questionaryGroupThematicAssociates: [...this.model.questionaryGroupThematicAssociates]\n    };\n\n    return await this.dialogService\n      .open({\n        viewModel: DimensionSelectorModal,\n        model: modalModel,\n      })\n      .whenClosed(async (response: any) => {\n        if (!response.wasCancelled && response.output) {\n          // Remove existing associates for this questionary and add the new ones\n          const remaining = this.model.questionaryGroupThematicAssociates\n            .filter(a => a.questionaryId !== questionaryId);\n          this.model.questionaryGroupThematicAssociates = remaining.concat(response.output.associates);\n          \n          await this.setDuration(false);\n          this.logger.debug(\"Updated questionaryGroupThematicAssociates:\", \n            this.model.questionaryGroupThematicAssociates.length);\n        }\n        if (\n          this.isModularActive && \n          (!this.model.questionaryGroupThematicAssociates || \n          this.model.questionaryGroupThematicAssociates.length === 0)\n        ) {\n          this.notification.warning(\n            \"main.test.pages.people.errors.no_thematics_selected\"\n          );\n        }\n      });\n  }\n\n  private isSelected(questionary: TestQuestionary): boolean {\n    const filteredQuestionaries = this.model.questionaryIds.filter(\n      (x) => x.stringId == questionary.stringId\n    );\n    return filteredQuestionaries.length > 0;\n  }\n\n  private addRemoveQuestionary(\n    showCompetences: boolean,\n    questionary: TestQuestionary,\n    showThematics : boolean = false\n  ) {\n    const index = this.model.questionaryIds.findIndex(\n      (x) => x.stringId == questionary.stringId\n    );\n    let isAdding = index === -1;\n    if (index !== -1) {\n      this.model.questionaryIds.splice(index, 1);\n    } else {\n      let questionaryLanguage: QuestionaryLanguage = new QuestionaryLanguage();\n      questionaryLanguage.languageId = questionary.languageId;\n      questionaryLanguage.questionaryId = questionary.id;\n      questionaryLanguage.stringId = questionary.stringId;\n      this.model.questionaryIds.push(questionaryLanguage);\n    }\n\n    const newModularId = (isAdding && showThematics && questionary.isModular) ? questionary.id : null;\n    this.setDuration(showCompetences, newModularId);\n  }\n  public notificationInfo(message:string){\n    this.notification.info(message);\n  } \n}\n","module.exports = \"<template> <require from=../../test-core/sheets/sheet-card></require> <div class=\\\"content-container row mb-3\\\"> <form class=col-12> <h2 if.bind=!model.id>${'main.admin.pages.test_management.questionary_groups.create' & t}</h2> <h2 if.bind=model.id>${company.name} / ${model.name}</h2> <p> ${'main.admin.pages.test_management.questionary_groups.info_editing' & t} </p> <hr/> <div class=form-group> <label>${'main.admin.pages.test_management.questionary_groups.name' & t}</label> <input type=text class=form-control id=model.name t=[placeholder]main.admin.pages.test_management.questionary_groups.name value.bind=\\\"model.name & validate\\\"> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </form> </div> <div class=\\\"content-container row mb-3\\\"> <div class=col-12> <div class=\\\"row mb-3\\\"> <div class=col-12> <p>${'main.admin.pages.test_management.questionary_groups.questionaries.info' & t}</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-10> <input type=text class=form-control value.bind=search t=[placeholder]ux_datatable.search_placeholder keyup.delegate=\\\"filter(search) & debounce:100\\\"> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <p t=main.admin.pages.test_management.questionary_groups.questionaries_info t-params.bind=\\\"{quantity: model.questionaryIds.length, duration: duration}\\\"> Questionaries quantity </p> </div> </div> <div class=row> <div class=col-md-4> <th class=col-md-4 scope=col>${'main.admin.pages.languages.title' & t}</th> <br><br> <select value.bind=selectedLanguageId class=form-control change.delegate=filter(search)> <option repeat.for=\\\"item of languageList\\\" model.bind=item.id>${item.name & t}</option> </select> </div> </div> <br><br> <div class=row if.bind=hasBukActivationTest> <div class=col-md-4> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=model.isExternalBukActivationTest checked.bind=\\\"model.isExternalBukActivationTest & validate\\\"/> <label for=model.isExternalBukActivationTest class=form-check-label>${'main.testperson.pages.person.external_activation_test' & t} <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.test.pages.people.external_activation_test')\\\" role=button> <i class=material-icons>info_outline</i> </a> </label> </span> </div> </div> </div> <div class=row if.bind=model.isExternalBukActivationTest> <div class=col-md-4> <div class=form-group> <label for=model.processBukIds>${'main.test.pages.people.name_process_buk' & t}</label> <span class=\\\"badge badge-pill badge-dark\\\" repeat.for=\\\"item of model.processBukIds.split(',')\\\">${item}</span> <company-tags-input value.bind=model.processBukIds /> </div> </div> </div> <br><br> <div class=\\\"row mb-3\\\"> <div class=col-12> <h4>${'main.admin.pages.test_management.questionary_groups.disc' & t}</h4> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <span repeat.for=\\\"item of discs\\\"> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"form-check custom-control custom-checkbox d-inline\\\"> <input type=checkbox class=\\\"form-check-input custom-control-input\\\" id=disc_${item.stringId} model.bind=item.stringId checked.bind=isSelected(item) change.delegate=addRemoveQuestionary(false,item) /> <label for=disc_${item.stringId} class=\\\"form-check-label custom-control-label\\\">${item.name}</label> <img if.bind=item.isNewTest style=width:1rem src=\" + require(\"../../../../../../assets/images/featured_star.svg\") + \"> <label for=disc_${item.stringId} if.bind=item.isNewTest style=color:#ff8c00>${'commands.new' & t}</label> </div> </div> </div> </span> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"modularTests && modularTests.length > 0\\\"> <div class=col-12> <h4>${'main.admin.pages.test_management.questionary_groups.modular_tests' & t}</h4> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"modularTests && modularTests.length > 0\\\"> <div class=col-12> <span repeat.for=\\\"item of modularTests\\\"> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"form-check custom-control custom-checkbox d-inline\\\"> <input type=checkbox class=\\\"form-check-input custom-control-input\\\" id=modular_${item.stringId} model.bind=item.stringId checked.bind=isSelected(item) change.delegate=addRemoveQuestionary(false,item,true) /> <label for=modular_${item.stringId} class=\\\"form-check-label custom-control-label\\\">${item.name}</label> <img if.bind=item.isNewTest style=width:1rem src=\" + require(\"../../../../../../assets/images/featured_star.svg\") + \"> <label for=modular_${item.stringId} if.bind=item.isNewTest style=color:#ff8c00>${'commands.new' & t}</label> </div> <button class=\\\"btn btn-link btn-lg\\\" if.bind=\\\"item.isModular && isModularActive && item.companyId == null\\\" click.delegate=\\\"selectThematics(item.id, item.name)\\\" title=\\\"${'main.admin.pages.questionaries.questions.dimensions' & t}\\\"> <i class=material-icons>visibility</i> </button> </div> </div> </span> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <h4>${'main.admin.pages.test_management.questionary_groups.other_tests' & t}</h4> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <span repeat.for=\\\"item of noDiscs\\\"> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"form-check custom-control custom-checkbox d-inline\\\"> <input type=checkbox class=\\\"form-check-input custom-control-input\\\" id=no_disc_${item.stringId} model.bind=item.stringId checked.bind=isSelected(item) value.bind=model.questionaryIds change.delegate=\\\"addRemoveQuestionary(item.questionaryType == 2, item)\\\"/> <label for=no_disc_${item.stringId} class=\\\"form-check-label custom-control-label\\\">${item.name}</label> </div> <button class=\\\"btn btn-link btn-lg\\\" if.bind=\\\"item.questionaryType == 2 && isCompetenceActive\\\" click.delegate=selectCompanyCompetence() title=\\\"${'commands.view_competences' & t}\\\"> <i class=material-icons>visibility</i> </button> <img if.bind=item.isNewTest style=width:1rem src=\" + require(\"../../../../../../assets/images/featured_star.svg\") + \"> <label for=no_disc_${item.stringId} if.bind=item.isNewTest style=color:#ff8c00>${'commands.new' & t}</label> </div> </div> </span> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <h4>${'main.admin.pages.questionaries.no_disc_type.EngineersTest' & t}</h4> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <span repeat.for=\\\"item of engineersTest\\\"> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"form-check custom-control custom-checkbox d-inline\\\"> <input type=checkbox class=\\\"form-check-input custom-control-input\\\" id=engineersTest_${item.stringId} model.bind=item.stringId checked.bind=isSelected(item) change.delegate=addRemoveQuestionary(false,item) /> <label for=engineersTest_${item.stringId} class=\\\"form-check-label custom-control-label\\\">${item.name}</label> <img if.bind=item.isNewTest style=width:1rem src=\" + require(\"../../../../../../assets/images/featured_star.svg\") + \"> <label for=engineersTest_${item.stringId} if.bind=item.isNewTest style=color:#ff8c00>${'commands.new' & t}</label> </div> </div> </div> </span> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: QuestionaryGroupUpdate\\\" type=button click.delegate=submitComplete(true) disabled.bind=\\\"!canSave || !canSaveWithQuestionaries\\\"> ${'commands.save_and_continue' & t} </button> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: QuestionaryGroupUpdate\\\" type=button click.delegate=submitComplete(false) disabled.bind=\\\"!canSave || !canSaveWithQuestionaries\\\"> ${'commands.save' & t} </button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: questionary-groups;\\\" t=commands.cancel>Cancel</a> <div class=mt-2 if.bind=!canSaveWithQuestionaries> <small class=text-muted> <i class=material-icons style=font-size:16px;vertical-align:middle>info_outline</i> ${'main.test.pages.people.errors.no_questionaries_selected' & t} </small> </div> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { StoreService } from 'common/store/store-service';\n\nimport { DialogCloseResult, DialogService } from \"aurelia-dialog\";\nimport { RouteConfig } from \"aurelia-router\";\nimport {\n  UxDatatableCustomAttribute,\n  UxDatatableParameters,\n  UxDatatableResponse\n} from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { State } from \"common/store/store-model\";\nimport { QuestionaryGroupService } from 'main/admin/services/test-management/questionary-group-service';\nimport { ActivationLinkModal } from 'main/components/activation-link-modal';\nimport { DeleteConfirmation } from 'main/components/delete-confirmation';\nimport { Company } from \"models/companies/company\";\nimport { QuestionaryGroup } from 'models/test-management/questionary-groups/questionaryGroup';\nimport { ActivationRequest } from 'models/test-person/activationRequest';\nimport { TypeActivationUrl } from 'models/test-person/typeActivationUrl';\nimport { DimensionActivatedModal, DimensionActivatedModel } from 'main/components/dimension-activated-modal';\nimport { QuestionaryGroupThematicAssociate } from 'models/test-management/questionary-groups/questionary-group-thematic-associate';\n\n@autoinject()\nexport class QuestionaryGroupList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n  private company: Company;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private state: State;\n  private isLoaded: boolean = false;\n\n  constructor(\n    private store: StoreService,\n    private questionaryGroupService: QuestionaryGroupService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"QuestionaryGroupList\");\n\n    this.state = this.store.state;\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    let search = this.parameters.search.Query;\n    sessionStorage.setItem('questionaryGroupListSearch', search == null ? '' : search);\n\n    return await this.questionaryGroupService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    // this.logger.debug(\"activate\");    \n    this.parameters.search.Query = sessionStorage.getItem('questionaryGroupListSearch');\n\n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n\n  }\n\n  private async bind(): Promise<any> {\n    // this.logger.debug(\"bind\");\n\n    if (!isNaN(this.params.companyId)) {\n\n      this.companyId = +this.params.companyId;\n\n      if (this.companyId) {\n\n        this.questionaryGroupService.client.currentCompanyId = this.companyId;\n\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n\n        this.isLoaded = true;\n        return await this.databind();\n      }\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async clearFilters(): Promise<any> {\n    this.parameters.search.Query = null;\n    await this.databind();\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async delete(item: QuestionaryGroup): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: item.name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        return await this.questionaryGroupService.delete(item.id)\n          .then(() => {\n\n            let indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(item.id.toString());\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"notifications.item_deleted\");\n\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n\n      }\n    });\n  }\n\n  private async seeActivatedDimensions(selectedThematicAssociates: QuestionaryGroupThematicAssociate[]): Promise<void> {\n    const model: DimensionActivatedModel = {\n      source: 'questionary-group',\n      questionaryGroupThematicAssociates: selectedThematicAssociates\n    };\n\n    await this.dialogService.open({ viewModel: DimensionActivatedModal, model: model });\n  }\n\n  private async share(item: QuestionaryGroup): Promise<void> {\n    let model: ActivationRequest = {\n      type: TypeActivationUrl.IdQuestionaryGroup,\n      id: item.id,\n      companyId: this.companyId,\n      userId: this.state.userBasicInfo.id\n    };\n    await this.dialogService.open({\n      viewModel: ActivationLinkModal,\n      model: model\n    });\n  }\n\n}\n","\nimport { LogManager } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\n\nexport class QuestionaryGroupListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor() {\n    this.logger = LogManager.getLogger(\"QuestionaryGroupListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./questionary-group-list\"),\n        name: \"questionary-groups\",\n\n      },\n\n      {\n        route: \"questionary-group/:questionaryGroupId\",\n        moduleId: PLATFORM.moduleName(\"./questionary-group-child-router\"),\n        name: \"questionary-group-child-router\",\n\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=./questionary-group-create-card.html></require> <h2>${company.name} / ${'main.admin.pages.test_management.questionary_groups.title' & t}</h2> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.admin.pages.test_management.questionary_groups.info' & t} </p> </div> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> <div class=\\\"col-md-4 col-12\\\"> <button class=\\\"btn btn-link\\\" click.delegate=clearFilters()> <i class=material-icons>clear</i> ${'commons.clear_filters' & t} </button> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-6 scope=col t=main.admin.pages.test_management.questionary_groups.name_title>Name </th> <th class=col-md-2 scope=col t=commons.created_on>Created on</th> <th class=col-md-2 scope=col t=commons.created_by>Created by</th> <th class=col-md-2 scope=col>&nbsp;</th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-6 text-truncate\\\"><span title=${item.name}>${item.name}</span></td> <td class=col-md-2>${item.createdOn | dateFormat}</td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.createdBy}>${item.createdBy}</span></td> <td class=\\\"col-md-2 d-flex\\\"> <a class=\\\"btn btn-link\\\" global-permission-show=\\\"can: TestManagementQuestionaryGroupUpdate\\\" route-href=\\\"route: questionary-group-child-router; params.bind: {questionaryGroupId:item.id}\\\" data-placement=top title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: TestManagementQuestionaryGroupDelete\\\" click.delegate=delete(item) title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: TestManagementQuestionaryGroupShare\\\" click.delegate=share(item) title.bind=\\\"'commands.share' & t\\\"> <i class=material-icons>share</i> </button> <a href=# if.bind=\\\"item.questionaryGroupThematicAssociates.length > 0\\\" global-permission-show=\\\"can: TestManagementQuestionaryGroupUpdate\\\" title=\\\"${'commands.view' & t}\\\" click.delegate=seeActivatedDimensions(item.questionaryGroupThematicAssociates)> <i class=material-icons>visibility</i> </a> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\"> <div class=col-12> <questionary-group-create-card></questionary-group-create-card> </div> </div> </div> </div> </template> \";","\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject()\nexport class ReportPredictorChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"ReportPredictorChildRouter\");\n  }\n\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./report-template-predictor-edit\"),\n        name: \"report-template-predictor-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.test_management.report_templates.report_template\"),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestManagementReportPredictorView]\n          }\n        }\n      },\n\n      {\n        route: \"sheets-predictor\",\n        moduleId: PLATFORM.moduleName(\"./sheet-predictor-list-edit\"),\n        name: \"sheet-predictor-list-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.test_management.report_templates.sheets.title\"),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestManagementReportPredictorView]\n          }\n        }\n      }\n      \n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from 'common/store/store-service';\nimport { Company } from \"models/companies/company\";\nimport { ReportTemplateService } from \"../../../services/test-management/report-template-service\";\nimport { ReportTemplate } from \"models/test-core/report-templates/report-template\";\nimport { CoreLanguageService } from \"main/admin/services/localizations/core-language-service\";\n\n@autoinject()\nexport class ReportPredictorEdit {\n\n  private logger: Logger;\n\n  public companyId: number;\n  private company: Company;\n\n  public languageId;\n\n  private languages;\n\n  private model: ReportTemplate = new ReportTemplate();\n  private saveAndContinue: boolean = false;\n  private validationController: ValidationController;\n\n  private state: State;\n\n  constructor(\n    private store: StoreService,\n    private languageService: CoreLanguageService,\n    private router: Router,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private reportTemplateService: ReportTemplateService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ReportPredictorEdit\");\n\n    this.state = this.store.state;\n\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.logger.debug(\"activate\");\n\n    if (!isNaN(params.companyId)) {\n\n      this.companyId = +params.companyId;\n\n      this.languages = await this.languageService.getAll();\n      this.setUserLanguage();\n\n      this.reportTemplateService.client.currentCompanyId = this.companyId;\n\n      this.company = this.state.companies.find(x => x.id == this.companyId);\n\n      if (!isNaN(params.reportTemplateId)) {\n        try {\n          this.model = await this.reportTemplateService.getById(+params.reportTemplateId);\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n      this.configureValidationRules();\n    }\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.test_management.questionary_groups.name\").required()\n      .ensure(\"itemToQualify\").displayName(\"main.admin.pages.questionaries.item_to_qualify\").required()\n      .ensure(\"languageId\").displayName(\"main.admin.pages.questionaries.item_to_qualify\").required()\n      .on(this.model);\n  }\n\n  public setUserLanguage() {\n    this.logger.debug(\"setUserLanguage\");\n    if (this.state && this.state.userBasicInfo) {\n      let activeCulture = this.state.userBasicInfo.culture;\n      let activeLang = this.languages.find((lg: { culture: string; }) => lg.culture === activeCulture);\n      if (activeLang) {\n        this.languageId = activeLang.id;\n        this.model.languageId = this.languageId;\n      }\n    }\n  }\n\n  private async submit(saveAndContinue: boolean): Promise<void> {\n    this.saveAndContinue = saveAndContinue;\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.reportTemplateService.client.isRequesting;\n  }\n\n  private async save(): Promise<any> {\n    try {\n      if (!this.model.id) {\n        this.model = await this.reportTemplateService.create(this.model);\n        this.notification.success(\"notifications.item_added\");\n\n        if (!this.saveAndContinue) {\n          return await this.router.navigateToRoute(\"report-templates-predictor\");\n        } else {\n          return await this.router.navigateToRoute(\"report-template-predictor-child-router\", { reportTemplateId: this.model.id });\n        }\n\n      } else {\n        await this.reportTemplateService.update(this.model);\n\n        this.notification.success(\"notifications.item_edited\");\n\n        if (!this.saveAndContinue) {\n          return await this.router.navigateToRoute(\"report-templates-predictor\");\n        }\n\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../../models/questionaries/itemToQualifyViewEngineHooks></require> <require from=../../../../../models/questionaries/organizationTypeViewEngineHooks></require> <require from=../report-templates/report-template-create-card.html></require> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2 if.bind=!model.id>${'main.admin.pages.test_management.report_templates.create' & t}</h2> <h2 if.bind=model.id>${company.name} / ${model.name}</h2> <p> ${'main.admin.pages.test_management.report_templates.info_editing' & t} </p> <hr/> <div class=form-group> <label>${'main.admin.pages.test_management.report_templates.name' & t}</label> <input type=text class=form-control id=model.name t=[placeholder]main.admin.pages.test_management.report_templates.name value.bind=\\\"model.name & validate\\\"> </div> <div class=form-group if.bind=!model.id> <label for=itemToQualify t=main.admin.pages.test_management.report_templates.type>type</label> <select value.bind=\\\"model.itemToQualify & validate\\\" class=form-control id=itemToQualify disabled.bind=model.id> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of ItemsToQualify\\\" model.bind=ItemToQualify[option]> ${'main.admin.pages.questionaries.items_to_qualify.'+ option & t}</option> </select> </div> <div class=form-group if.bind=model.id> <label for=itemToQualify t=main.admin.pages.test_management.report_templates.type>Organization type</label> <p><strong>${'main.admin.pages.questionaries.items_to_qualify.' + ItemToQualify[model.itemToQualify] & t}</strong></p> </div> <div class=form-group if.bind=\\\"!model.id && model.itemToQualify == ItemToQualify.Organization\\\"> <label for=organizationType t=main.admin.pages.questionaries.organization_types.title>Organization type</label> <select value.bind=\\\"model.organizationType & validate\\\" class=form-control id=organizationType> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of OrganizationTypes\\\" model.bind=OrganizationType[option]> ${'main.admin.pages.questionaries.organization_types.' + option & t}</option> </select> </div> <div class=form-group if.bind=\\\"model.id && model.itemToQualify == ItemToQualify.Organization\\\"> <label for=organizationType t=main.admin.pages.questionaries.organization_types.title>Organization type</label> <p><strong>${'main.admin.pages.questionaries.organization_types.' + OrganizationType[model.organizationType] & t}</strong></p> </div> <div class=form-group if.bind=!model.id> <label for=languageId>${'main.admin.pages.questionaries.language' & t}</label> <select value.bind=model.languageId class=form-control id=languageId disabled.bind=model.id change.delegate=\\\"databind() & debounce:100\\\"> <option repeat.for=\\\"option of languages\\\" model.bind=option.id>${option.name & t}</option> </select> </div> <div class=form-group if.bind=model.id> <label for=languageId t=main.admin.pages.questionaries.language>idioma</label> <p><strong>${model.languageName & t}</strong></p> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-enable=\\\"can: TestManagementReportPredictorUpdate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-enable=\\\"can: TestManagementReportPredictorUpdate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: report-templates-predictor;\\\" t=commands.cancel>Cancel</a> </div> </form> </div> </template> \";","import { StoreService } from 'common/store/store-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { RouteConfig } from \"aurelia-router\";\nimport {\n  UxDatatableParameters,\n  UxDatatableCustomAttribute,\n  UxDatatableResponse\n} from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { Company } from \"models/companies/company\";\nimport { State } from \"common/store/store-model\";\nimport { QuestionaryGroup } from 'models/test-management/questionary-groups/questionaryGroup';\nimport { DeleteConfirmation } from 'main/components/delete-confirmation';\nimport { ReportTemplatePredictorService } from '../../../services/test-management/report-template-predictor-service';\nimport { ReportTemplate } from 'models/test-core/report-templates/report-template';\nimport { CompanySettings } from 'models/companies/company-settings';\nimport { CompanySettingsService } from 'main/admin/services/companies/company-settings-service';\nimport { Language } from 'models/localizations/language';\nimport { CoreLanguageService } from 'main/admin/services/localizations/core-language-service';\n\n@autoinject()\nexport class ReportPredictorList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n  private company: Company;\n\n  private languageId: number;\n  private languages: Language[];\n  private toggle: HTMLInputElement;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private state: State;\n  private isLoaded: boolean = false;\n  private companySettings: CompanySettings = new CompanySettings();\n\n  constructor(\n    private store: StoreService,\n    private languageService: CoreLanguageService,\n    private companySettingsService: CompanySettingsService,\n    private reportTemplatePredictorService: ReportTemplatePredictorService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"ReportPredictorList\");\n\n    this.state = this.store.state;\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    let search = this.parameters.search.Query;\n    sessionStorage.setItem('reportTemplatePredictorListSearch', search == null ? '' : search);\n\n    return await this.reportTemplatePredictorService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    // this.logger.debug(\"activate\");\n    this.parameters.search.Query = sessionStorage.getItem('reportTemplatePredictorListSearch');\n\n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n\n  }\n\n  private async bind(): Promise<any> {\n    // this.logger.debug(\"bind\");\n\n    if (!isNaN(this.params.companyId)) {\n\n      this.companyId = +this.params.companyId;\n\n      if (this.companyId) {\n\n\n        this.languages = await this.languageService.getAll();\n        this.setUserLanguage();\n\n        this.reportTemplatePredictorService.client.currentCompanyId = this.companyId;\n\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n\n        this.companySettings = await this.companySettingsService.getById(this.companyId);\n\n        this.isLoaded = true;\n        return await this.databind();\n      }\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async clearFilters(): Promise<any> {\n    this.parameters.search.Query = null;\n    await this.databind();\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async delete(item: ReportTemplate): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: item.name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        return await this.reportTemplatePredictorService.delete(item.id)\n          .then(() => {\n\n            let indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(item.id.toString());\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"notifications.item_deleted\");\n\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n\n      }\n    });\n  }\n\n  public setUserLanguage() {\n    this.logger.debug(\"setUserLanguage\");\n    if (this.state && this.state.userBasicInfo) {\n      let activeCulture = this.state.userBasicInfo.culture;\n      let activeLang = this.languages.find((lg: { culture: string; }) => lg.culture === activeCulture);\n      if (activeLang) {\n        this.languageId = activeLang.id;\n      }\n    }\n  }\n\n  public async updateCompanySettings(item: CompanySettings): Promise<any> {\n    this.toggle.disabled = true;\n    await this.companySettingsService.update(item)\n      .then(async () => {\n        return await this.change(item);\n      })\n      .catch((error) => {\n        this.notification.error(error);\n      });\n  }\n\n  public async change(item: CompanySettings): Promise<any> {\n    await this.reportTemplatePredictorService.changeState(this.languageId, item.hasPredictor)\n      .then(async () => {\n        this.notification.success(\"main.admin.pages.test_management.questionaries_configuration.notifications.edited\");\n        this.toggle.disabled = false;\n        return await this.databind();\n      })\n      .catch((error) => {\n        this.notification.error(error);\n      });\n  }\n\n}\n","\nimport { LogManager } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\n\nexport class ReportListPredictorChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor() {\n    this.logger = LogManager.getLogger(\"ReportListPredictorChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./report-template-predictor-list\"),\n        name: \"report-templates-predictor\",\n\n      },\n\n      {\n        route: \"report-template-predictor/:reportTemplateId\",\n        moduleId: PLATFORM.moduleName(\"./report-template-predictor-child-router\"),\n        name: \"report-template-predictor-child-router\",\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=../../../../../models/questionaries/itemToQualifyViewEngineHooks></require> <require from=../report-templates/report-template-create-card.html></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${company.name} / ${'main.admin.pages.test_management.report_templates_predictor.title' & t}</h2> <p> ${'main.admin.pages.test_management.report_templates_predictor.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-2 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> <div class=\\\"col-md-2 col-12\\\"> <button class=\\\"btn btn-link\\\" click.delegate=clearFilters()> <i class=material-icons>clear</i> ${'commons.clear_filters' & t} </button> </div> <div class=\\\"col-md-3 col-12\\\" global-permission-show=\\\"can: CompanyUpdate\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox ref=toggle id=companySettings.hasPredictor class=switch checked.bind=companySettings.hasPredictor change.delegate=updateCompanySettings(companySettings)> <label for=companySettings.hasPredictor>${'main.admin.pages.companies.company_settings.has_predictor' & t}</label> <br/> <p>${'main.admin.pages.companies.company_settings.has_predictor.info' & t}</p> </span> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-4 scope=col t=main.admin.pages.test_management.report_templates.name_title>Name</th> <th class=col-md-2 scope=col t=main.admin.pages.test_management.report_templates.type_title>Type</th> <th class=col-md-2 scope=col t=commons.created_on>Created on</th> <th class=col-md-2 scope=col t=commons.created_by>Created by</th> <th class=col-md-2 scope=col>&nbsp;</th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-4 text-truncate\\\" if.bind=item.isDefault><span title=\\\"${item.name & t}\\\">${item.name & t}</span></td> <td class=\\\"col-md-4 text-truncate\\\" if.bind=!item.isDefault><span title=${item.name}>${item.name}</span></td> <td class=col-md-2>${'main.admin.pages.questionaries.items_to_qualify.' + ItemToQualify[item.itemToQualify] & t}</td> <td class=col-md-2>${item.createdOn | dateFormat}</td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.createdBy}>${item.createdBy}</span></td> <td class=\\\"col-md-2 d-flex\\\"> <a if.bind=!item.isDefault class=\\\"btn btn-link\\\" global-permission-show=\\\"can: TestManagementReportPredictorUpdate\\\" route-href=\\\"route: report-template-predictor-child-router; params.bind: {reportTemplateId:item.id}\\\" data-placement=top title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> </td> </tr> </tbody> </table> </div> </div> </div> </div> </template> \";","import { CompanyCompetenceService } from './../../../services/test-management/company-competence-service';\nimport { CompanyCompetence } from './../../../../../models/test-core/competences/company-competence';\nimport { DialogService } from 'aurelia-dialog';\nimport { DialogCloseResult } from 'aurelia-dialog';\nimport { CompanyCompetenceModal } from '../../../../test/pages/people-competence/company-competence-modal';\nimport { QuestionaryType } from './../../../../../models/questionaries/questionaryType';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from 'common/store/store-service';\nimport { Company } from 'models/companies/company';\nimport { ReportTemplate } from 'models/test-core/report-templates/report-template';\nimport { ReportTemplateService } from '../../../services/test-management/report-template-service';\nimport { CompanySheetService } from 'main/admin/services/test-management/company-sheet-service';\nimport { Sheet } from 'models/test-core/sheets/sheet';\nimport { Category } from 'models/test-core/sheets/category';\nimport { CategorySheetService } from 'main/admin/services/test-management/category-sheet-service';\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { CarouselConfig } from \"common/resources/elements/ux/carousel/carousel\";\nimport * as $ from \"jquery\";\nimport { isReturnStatement } from \"typescript\";\nimport { Tests } from 'models/test-person/tests';\nimport { CoreCompanyService } from 'main/admin/services/companies/core-company-service';\n\ninterface SheetAvailable {\n  [id: number]: boolean;\n}\n\n@autoinject()\nexport class SheetPredictorListEdit {\n\n  private logger: Logger;\n\n  public companyId: number;\n  private company: Company;\n\n  private validationController: ValidationController;\n\n  private reportTemplateId: number;\n  private languageId: number;\n  private model: ReportTemplate = new ReportTemplate();\n\n  private categories: Category[] = [];\n  private sheets: Sheet[] = [];\n\n  private state: State;\n\n  private search: string = null;\n\n  private questionariesCount: number = 0;\n  private duration: number = 0;\n  private price: number = 0;\n\n  private sheetIds: number[] = [];\n  private sheetIdsWithCompetencesEnabled: number[] = [];\n  private sheetIdsWithCompetences: number[] = [];\n\n  private sheetAvailable: SheetAvailable = {};\n  private isCompetenceActive: boolean = false;\n  private companyCompetences: CompanyCompetence[] = [];\n\n  private options = <CarouselConfig>{\n    duration: 600,\n    perPage: {\n      640: 1,\n      768: 2,\n      1080: 3\n    },\n    draggable: false,\n    loop: false,\n    autoPlay: true,\n    autoPlayInterval: 2500\n  };\n  private questionaryId: number;\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private notification: Notification,\n    private dialogService: DialogService,\n    private validationControllerFactory: ValidationControllerFactory,\n    private reportTemplateService: ReportTemplateService,\n    private companySheetService: CompanySheetService,\n    private categorySheetService: CategorySheetService,\n    private companyCompetenceService: CompanyCompetenceService,\n    private coreCompanyService: CoreCompanyService\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"SheetPredictorListEdit\");\n    this.state = this.store.state;\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.logger.debug(\"activate\");\n\n    if (!isNaN(params.companyId)) {\n\n      this.companyId = +params.companyId;\n      this.reportTemplateService.client.currentCompanyId = +params.companyId;\n      this.company = this.state.companies.find(x => x.id == this.companyId);\n\n      this.companyCompetenceService.client.currentCompanyId = this.companyId;\n\n      try {\n        let settings = await this.coreCompanyService.getSettingsById(this.companyId);\n        this.questionaryId = settings.competencesQuestionaryId;\n\n        if (this.questionaryId == 0)\n          this.questionaryId = Tests['Competences'];\n        this.companyCompetences = await this.companyCompetenceService.getAll(this.questionaryId);\n        this.sheets = await this.companySheetService.getAll();\n        this.setSheetIdsWhitCompetences();\n\n        if (!isNaN(params.reportTemplateId)) {\n          this.reportTemplateId = +params.reportTemplateId;\n          this.model = await this.reportTemplateService.getById(this.reportTemplateId);\n          this.languageId = this.model.languageId;\n\n          this.fillSheetIdsWithCompetencesEnabled();\n          this.setDurationAndPrice();\n\n          // update sheet available\n          this.setSheetAvailable();\n\n          return await this.databind();\n        }\n\n      } catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n\n  private async databind(): Promise<any> {\n    this.logger.debug(\"databind\");\n    try {\n      this.categories = await this.categorySheetService.list(this.reportTemplateId, this.languageId, this.search);\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  get canSave() {\n    return !this.reportTemplateService.client.isRequesting;\n  }\n\n  public async save(saveAndContinue: boolean): Promise<any> {\n    this.logger.debug(\"sheetIds\", this.model.sheetIds);\n\n    return await this.reportTemplateService.update(this.model)\n      .then(async () => {\n        this.notification.success(\"notifications.item_edited\");\n\n        if (!saveAndContinue) {\n          return await this.router.navigateToRoute(\"report-templates-predictor\");\n        }\n\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n    this.logger.debug(\"isCompetenceActive: \", this.isCompetenceActive);\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          if (this.companyCompetences.length > 0 && this.isCompetenceActive && this.model.companyCompetenceIds.length == 0) {\n            this.notification.warning(\"main.test.pages.people.errors.no_competences_selected\");\n          }\n          else {\n            return await this.save(keepEditing);\n          }\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private changeSheetState(sheet: Sheet) {\n    const index = this.model.sheetIds.indexOf(sheet.id);\n\n    if (index !== -1) {\n      this.model.sheets.push(sheet);\n    }\n    else {\n      const index2 = this.model.sheets.findIndex(x => x.id === sheet.id);\n      if (index2 !== -1) {\n        this.model.sheets.splice(index2, 1);\n\n        // add sheets to general list\n        // this.categories.find(x => x.id === sheet.catergoryId).sheets.push(sheet);\n\n      }\n\n    }\n\n    if (this.companyCompetences.length > 0 && this.changeSheetIdsWithCompetencesEnabled(sheet.id) && this.isCompetenceActive) {\n      this.selectCompanyCompetence();\n    }\n\n    // update duration label\n    this.setDurationAndPrice();\n\n    // update sheet available\n    this.setSheetAvailable();\n  }\n\n  // private showSheet(id: number){\n  //   const index = this.model.sheetIds.indexOf(id);\n  //   return index === -1;\n  // }\n\n  private setDurationAndPrice() {\n    let questionaries: Questionary[] = [];\n    let duration = 0;\n    let price = 0;\n    this.model.sheetIds.forEach(x => {\n      let sheet = this.sheets.find(y => y.id === x);\n      if (sheet) {\n        price += +sheet.talentsPrice;\n        sheet.questionaries.forEach(q => {\n          if (!questionaries.find(z => z.id === q.id)) {\n            questionaries.push(q);\n            duration += +q.averageTime;\n          }\n        });\n      }\n    });\n\n    this.questionariesCount = questionaries.length;\n\n    this.duration = duration;\n    this.price = price;\n\n  }\n\n  private isCompetenceType(sheets: Sheet[]): boolean {\n    let res: boolean = false;\n    sheets.forEach(x => {\n      let sheet = this.sheets.find(y => y.id === x.id);\n      if (sheet) {\n        let questionary = sheet.questionaries.find(q => q.questionaryType == QuestionaryType.Competences);\n        if (questionary) {\n          res = true;\n        }\n      }\n    });\n    return res;\n  }\n\n  private setSheetAvailable() {\n    this.sheets.forEach(x => {\n      if (this.model.sheetIds.indexOf(x.id) !== -1) {\n        this.sheetAvailable[x.id] = false;\n      }\n      else {\n        this.sheetAvailable[x.id] = true;\n      }\n\n    });\n  }\n\n\n  public orderChanged(orderedItems) {\n\n    // this.logger.debug('Ordered sheet: ', orderedItems.map(x => x.id));\n    this.model.sheets = orderedItems;\n    this.model.sheetIds = orderedItems.map(x => x.id);\n\n    // this.logger.debug('Model sheets: ', this.model.sheets.map(x => x.id));\n    // this.logger.debug('Model sheetIds: ', this.model.sheetIds);\n\n    // update duration label\n    this.setDurationAndPrice();\n\n    // update sheet available\n    this.setSheetAvailable();\n\n    //this.logger.debug('orderedItems: ', orderedItems);\n    let hasAddsheetIds = false;\n\n    orderedItems.forEach(x => {\n      if (this.changeSheetIdsWithCompetencesEnabled(x.id)) {\n        hasAddsheetIds = true;\n      }\n    });\n\n    if (!hasAddsheetIds) {\n      let copysheetIdsWithCompetencesEnabled: number[] = this.sheetIdsWithCompetencesEnabled;\n      copysheetIdsWithCompetencesEnabled.forEach(x => {\n        this.changeSheetIdsWithCompetencesEnabled(x);\n      })\n    }\n\n    this.logger.debug('this.model.sheetIds: ', this.model.sheetIds);\n    this.logger.debug('sheetIdsWithCompetencesEnabled: ', this.sheetIdsWithCompetencesEnabled);\n\n    if (this.companyCompetences.length > 0 && hasAddsheetIds && this.isCompetenceActive) {\n      this.selectCompanyCompetence();\n    }\n  }\n\n  // public drawPreview(sheet) {\n  //   this.logger.debug('Sheet: ', sheet);\n  //   const jq = $('<div class=\"er4-drag-person\"></div>');\n  //   jq.text('sheet.name'); //\n  //   return jq.get(0);\n  // }\n\n  private async selectCompanyCompetence(): Promise<void> {\n    // this.logger.debug(\"model.companyCompetenceIds\")\n    return await this.dialogService.open({\n      viewModel: CompanyCompetenceModal,\n      model: this.model.companyCompetenceIds\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        if (this.companyCompetences.length > 0 && this.isCompetenceActive && this.model.companyCompetenceIds.length == 0) {\n          this.notification.warning(\"main.test.pages.people.errors.no_competences_selected\");\n        }\n      }\n    });\n  }\n\n  private setSheetIdsWhitCompetences() {\n    this.sheets.forEach(x => {\n      x.questionaries.forEach(q => {\n        if (q.questionaryType == QuestionaryType.Competences) {\n          const index = this.sheetIdsWithCompetences.indexOf(x.id);\n          if (index === -1) {\n            this.sheetIdsWithCompetences.push(x.id);\n          }\n        }\n      });\n    });\n  }\n\n  private changeSheetIdsWithCompetencesEnabled(idSheet: number): boolean {\n    let sheetIdsWithCompentenceChanged: boolean = false;\n    const indexCompetenceSheetIds = this.sheetIdsWithCompetences.indexOf(idSheet);\n    const indexModelSheetIds = this.model.sheetIds.indexOf(idSheet);\n\n    if (indexCompetenceSheetIds !== -1) {\n      const indexCompetenceEnabledSheetIds = this.sheetIdsWithCompetencesEnabled.indexOf(idSheet);\n      if (indexModelSheetIds !== -1) {\n        if (indexCompetenceEnabledSheetIds === -1) {\n          this.sheetIdsWithCompetencesEnabled.push(idSheet);\n          sheetIdsWithCompentenceChanged = true;\n        }\n      } else {\n        if (indexCompetenceEnabledSheetIds !== -1) {\n          this.sheetIdsWithCompetencesEnabled.splice(indexCompetenceEnabledSheetIds, 1);\n          sheetIdsWithCompentenceChanged = true;\n        }\n      }\n    }\n\n    if (this.companyCompetences.length > 0 && this.sheetIdsWithCompetencesEnabled.length > 0) {\n      this.isCompetenceActive = true;\n    } else {\n      this.isCompetenceActive = false;\n      this.model.companyCompetenceIds = [];\n    }\n\n    return sheetIdsWithCompentenceChanged;\n  }\n\n  private fillSheetIdsWithCompetencesEnabled() {\n    this.sheetIdsWithCompetencesEnabled = [];\n    this.model.sheetIds.forEach(x => {\n      const indexCompetenceSheetIds = this.sheetIdsWithCompetences.indexOf(x);\n\n      if (indexCompetenceSheetIds !== -1) {\n        const indexCompetenceEnabledSheetIds = this.sheetIdsWithCompetencesEnabled.indexOf(x);\n        if (indexCompetenceEnabledSheetIds === -1) {\n          this.sheetIdsWithCompetencesEnabled.push(x);\n        }\n      }\n    });\n\n    this.logger.debug(\"sheetIdsWithCompetencesEnabled.length: \", this.sheetIdsWithCompetencesEnabled.length);\n\n    if (this.companyCompetences.length > 0 && this.sheetIdsWithCompetencesEnabled.length > 0) {\n      this.isCompetenceActive = true;\n    } else {\n      this.isCompetenceActive = false;\n      this.model.companyCompetenceIds = [];\n\n    }\n\n    this.logger.debug(\"isCompetenceActive: \", this.isCompetenceActive);\n\n  }\n\n}\n","module.exports = \"<template> <require from=../../test-core/sheets/sheet-card></require> <require from=../../test-core/sheets/sheet-card-small></require> <div if.bind=!reportTemplateId> <h2>${'main.admin.pages.test_management.report_templates.new' & t}</h2> <p> ${'main.admin.pages.test_management.report_templates.new_info' & t} </p> </div> <div if.bind=reportTemplateId> <h2>${'main.admin.pages.test_management.report_templates.sheets.title' & t}</h2> <div class=\\\"row mb-3\\\"> <form class=content-main> <div class=\\\"row mb-3\\\"> <div class=col-12> <h4>${company.name} / ${model.name}</h4> <p>${'main.admin.pages.test_management.report_templates.sheets.info' & t}</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-10> <input type=text class=form-control value.bind=search t=[placeholder]ux_datatable.search_placeholder keyup.delegate=\\\"databind() & debounce:100\\\"> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <p t=main.admin.pages.test_management.questionary_groups.questionaries_info t-params.bind=\\\"{quantity: questionariesCount, duration: duration}\\\">Questionaries quantity </p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <span repeat.for=\\\"item of categories\\\" ref=$root model.bind=model> <div class=row> <div class=col-12> <a class=\\\"btn btn-link d-inline\\\" data-toggle=collapse href=#collapseSheets_${$index} role=button aria-expanded=false aria-controls=collapseSheets_${$index}> <i class=material-icons> arrow_drop_down </i> </a> <h5 class=d-inline> ${item.name & t} <small>${item.description & t }</small> </h5> <button class=\\\"btn btn-link\\\" if.bind=\\\"isCompetenceType(item.sheets) && isCompetenceActive\\\" click.delegate=selectCompanyCompetence() title=\\\"${'commands.view_competences' & t}\\\"> <i class=material-icons>visibility</i> </button> <p>${item.sheets.length} ${'commons.pages' & t}</p> </div> </div> <div class=\\\"row mb-1\\\"> <div class=col-12> <div class=\\\"collapse show\\\" id=collapseSheets_${$index}> <div class=\\\"card card-body\\\" reorderable-group-for.bind=item.sheets> <ux-carousel options.bind=options> <sheet-card reorderable-repeat.for=\\\"sheet of item.sheets\\\" reorderable-group=tht sheet.bind=sheet checked.bind=$root.model.sheetIds value.bind=sheet.id change.delegate=changeSheetState(sheet) show.bind=sheetAvailable[sheet.id]> </sheet-card> </ux-carousel> </div> </div> </div> </div> </span> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: TestManagementReportPredictorUpdate\\\" type=submit click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: TestManagementReportPredictorUpdate\\\" type=submit click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: report-templates-predictor;\\\" t=commands.cancel>Cancel</a> </div> </div> </form> <div class=\\\"content-sidebar bg-light\\\" reorderable-group-for.bind=model.sheets> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-primary\\\" role=alert> <h4>${'main.admin.pages.test_management.report_templates.sheets.price' & t} <strong>${price}</strong></h4> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <sheet-card-small reorderable-repeat.for=\\\"sheet of model.sheets\\\" reorderable-group=tht reorderable-after-reordering=orderChanged ref=$root model.bind=model sheet.bind=sheet checked.bind=$root.model.sheetIds value.bind=sheet.id change.delegate=changeSheetState(sheet)> </sheet-card-small> </div> </div> </div> </div> </div> </template> \";","import { autoinject } from 'aurelia-framework';\nimport { DialogController } from 'aurelia-dialog';\nimport { DiscQuestionaryOption } from 'models/test-core/report-templates/disc-selection-options/disc-questionary-option';\n\nexport interface DiscSelectionModalModel {\n  options: DiscQuestionaryOption[];\n  selectedId?: number;\n}\n\n@autoinject()\nexport class DiscSelectionModal {\n  public options: DiscQuestionaryOption[] = [];\n  public selectedId: number = null;\n\n  constructor(private dialogController: DialogController) { }\n\n  public activate(model: DiscSelectionModalModel): void {\n    this.options = (model && model.options) ? model.options : [];\n    this.selectedId = model && model.selectedId ? model.selectedId : null;\n  }\n\n  public accept(): void {\n    if (!this.selectedId) {\n      return;\n    }\n\n    this.dialogController.ok(this.selectedId);\n  }\n\n  public cancel(): void {\n    this.dialogController.cancel();\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=cancel()> <i class=material-icons>close</i> </button> </div> </div> <div class=\\\"row mb-2\\\"> <div class=col-12> <h4 class=mb-1>${'main.admin.pages.test_management.questionary_groups.disc' & t}</h4> <p class=\\\"text-muted mb-0\\\">${'forms.select_option' & t}</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info mb-0\\\" role=alert> <div class=\\\"d-flex align-items-center\\\"> <i class=\\\"material-icons mr-2\\\">info</i> <span>${'forms.select_option' & t}</span> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"options.length === 0\\\"> <div class=col-12> <div class=\\\"alert alert-warning mb-0\\\" role=alert> <span>${'common.empty_result' & t}</span> </div> </div> </div> <div class=\\\"row mb-2\\\" if.bind=\\\"options.length > 0\\\"> <div class=col-12> <div class=list-group> <label class=\\\"list-group-item d-flex align-items-center justify-content-between\\\" repeat.for=\\\"option of options\\\" class.bind=\\\"selectedId === option.id ? 'list-group-item d-flex align-items-center justify-content-between active' : 'list-group-item d-flex align-items-center justify-content-between'\\\"> <div class=\\\"custom-control custom-radio\\\"> <input type=radio class=custom-control-input name=disc-option id=disc_option_${option.id} model.bind=option.id checked.bind=selectedId /> <label class=custom-control-label for=disc_option_${option.id}>${option.name}</label> </div> </label> </div> </div> </div> </ux-dialog-body> <ux-dialog-footer> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=cancel() t=commands.cancel>Cancel</button> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=accept() disabled.bind=!selectedId t=commands.accept>Accept</button> </ux-dialog-footer> </ux-dialog> </template> \";","\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject()\nexport class ReportChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"ReportChildRouter\");\n  }\n\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./report-template-edit\"),\n        name: \"report-template-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.test_management.report_templates.report_template\"),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestManagementReportView]\n          }\n        }\n      }\n      \n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.test_management.report_templates.create_card.title' & t}</h5> <p t=[html]main.admin.pages.test_management.report_templates.create_card.info>Create new core group</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: report-template-child-router; params.bind: {reportTemplateId:'create'}\\\">${'commands.create' & t}</a> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from 'common/store/store-service';\nimport { Company } from \"models/companies/company\";\nimport { ReportTemplateService } from \"../../../services/test-management/report-template-service\";\nimport { ReportTemplate } from \"models/test-core/report-templates/report-template\";\nimport { CoreLanguageService } from \"main/admin/services/localizations/core-language-service\";\nimport { CompanySheetService } from 'main/admin/services/test-management/company-sheet-service';\nimport { Sheet } from 'models/test-core/sheets/sheet';\nimport { Category } from 'models/test-core/sheets/category';\nimport { CategorySheetService } from 'main/admin/services/test-management/category-sheet-service';\nimport { CompanyCompetenceService } from '../../../services/test-management/company-competence-service';\nimport { CompanyCompetence } from '../../../../../models/test-core/competences/company-competence';\nimport { CoreCompanyService } from 'main/admin/services/companies/core-company-service';\nimport { Tests } from 'models/test-person/tests';\nimport { DialogService } from 'aurelia-dialog';\nimport { QuestionaryType } from '../../../../../models/questionaries/questionaryType';\nimport { ItemToQualify } from '../../../../../models/questionaries/itemToQualify';\nimport { OrganizationType } from '../../../../../models/questionaries/organizationType';\nimport { CarouselConfig } from \"common/resources/elements/ux/carousel/carousel\";\nimport { CompanyQuestionaryService } from 'main/admin/services/test-management/company-questionary-service';\nimport { TestQuestionary } from 'models/test-core/test-questionary';\nimport { DimensionSelectorModal, DimensionSelectorModel } from 'main/components/dimension-selector-modal';\nimport { ReportTemplateThematicAssociate } from 'models/test-core/report-templates/report-template-thematic-associate';\nimport { DiscQuestionaryOption } from 'models/test-core/report-templates/disc-selection-options/disc-questionary-option';\nimport { DiscSelectionOptions } from 'models/test-core/report-templates/disc-selection-options/disc-selection-options';\nimport { DiscSelectionReasonCode } from 'models/test-core/report-templates/disc-selection-options/disc-selection-reason-code';\nimport { DiscSelectionOptionsRequest } from 'models/test-core/report-templates/disc-selection-options/disc-selection-options-request';\nimport { DiscSelectionModal, DiscSelectionModalModel } from './disc-selection-modal';\n\ninterface SheetAvailable {\n  [id: number]: boolean;\n}\n\n@autoinject()\nexport class ReportEdit {\n\n  private logger: Logger;\n\n  public companyId: number;\n  private company: Company;\n\n  public languageId;\n\n  private languages;\n\n  private model: ReportTemplate = new ReportTemplate();\n  private validationController: ValidationController;\n\n  private state: State;\n\n  // Properties for sheet management\n  private categories: Category[] = [];\n  private sheets: Sheet[] = [];\n  private search: string = null;\n  private questionariesCount: number = 0;\n  private questionariesNames: string = '';\n  private questionaries: TestQuestionary[] = [];\n  private duration: number = 0;\n  private price: number = 0;\n  private sheetIds: number[] = [];\n  private sheetIdsWithCompetencesEnabled: number[] = [];\n  private sheetIdsWithCompetences: number[] = [];\n  private sheetAvailable: SheetAvailable = {};\n  private sheetDimensionsVisible: { [id: number]: boolean } = {};\n  private isCompetenceActive: boolean = false;\n  private isModularActive: boolean = false;\n  private companyCompetences: CompanyCompetence[] = [];\n  private questionaryId: number;\n  private selectedDiscQuestionaryId: number = null;\n  private discPopupOpenedOnce: boolean = false;\n  private discOptions: DiscQuestionaryOption[] = [];\n  private lastSavedSheetSignature: string = '';\n  private discPromptShownForCurrentSheetChange: boolean = false;\n\n  // Enum references for the template\n  public ItemToQualify = ItemToQualify;\n  public OrganizationType = OrganizationType;\n  public ItemsToQualify = Object.keys(ItemToQualify).filter(k => isNaN(Number(k)));\n  public OrganizationTypes = Object.keys(OrganizationType).filter(k => isNaN(Number(k)));\n\n  public get languageName(): string {\n    if (this.model.languageId && this.languages) {\n      const language = this.languages.find(l => l.id === this.model.languageId);\n      return language ? language.name : '';\n    }\n    return '';\n  }\n\n  public get hasSheetsSelected(): boolean {\n    return this.model && this.model.sheetIds && this.model.sheetIds.length > 0;\n  }\n\n  // Carousel options\n  private options = <CarouselConfig>{\n    duration: 600,\n    perPage: {\n      640: 1,\n      768: 2,\n      1080: 3\n    },\n    draggable: false,\n    loop: false,\n    autoPlay: true,\n    autoPlayInterval: 2500\n  };\n\n  constructor(\n    private store: StoreService,\n    private languageService: CoreLanguageService,\n    private router: Router,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private reportTemplateService: ReportTemplateService,\n    private companySheetService: CompanySheetService,\n    private categorySheetService: CategorySheetService,\n    private companyCompetenceService: CompanyCompetenceService,\n    private coreCompanyService: CoreCompanyService,\n    private dialogService: DialogService,\n    private companyQuestionaryService: CompanyQuestionaryService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ReportEdit\");\n\n    this.state = this.store.state;\n\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.logger.debug(\"activate\");\n\n    if (!isNaN(params.companyId)) {\n\n      this.companyId = +params.companyId;\n\n      this.languages = await this.languageService.getAll();\n      this.setUserLanguage();\n\n      this.reportTemplateService.client.currentCompanyId = this.companyId;\n      this.companyCompetenceService.client.currentCompanyId = this.companyId;\n\n      this.company = this.state.companies.find(x => x.id == this.companyId);\n\n      try {\n        // Initialize competences and sheets\n        let settings = await this.coreCompanyService.getSettingsById(this.companyId);\n        this.questionaryId = settings.competencesQuestionaryId;\n\n        if (this.questionaryId == 0)\n          this.questionaryId = Tests['Competences'];\n\n        this.companyCompetences = await this.companyCompetenceService.getAll(this.questionaryId);\n        this.sheets = await this.companySheetService.getAll();\n        this.questionaries = await this.companyQuestionaryService.getAll();\n        this.setSheetIdsWhitCompetences();\n\n        if (!isNaN(params.reportTemplateId)) {\n          this.model = await this.reportTemplateService.getById(+params.reportTemplateId);\n          if (this.model.reportTemplateQuestionaryIds && this.model.reportTemplateQuestionaryIds.length > 0) {\n            this.selectedDiscQuestionaryId = this.model.reportTemplateQuestionaryIds[0];\n            this.discPopupOpenedOnce = true;\n          }\n          this.cleanupObsoleteSheets();\n          this.fillSheetIdsWithCompetencesEnabled();\n          this.setDurationAndPrice();\n          this.setSheetAvailable();\n          this.updateSheetDimensionsVisible();\n        } else {\n          // For new templates, set default values and initialize sheet selection\n          this.model.itemToQualify = this.ItemToQualify.Person; // Default to Person type\n          this.setSheetAvailable();\n        }\n\n        this.lastSavedSheetSignature = this.getSheetSignature(this.model.sheetIds);\n        this.discPromptShownForCurrentSheetChange = false;\n\n        await this.databindSheets();\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n\n      this.configureValidationRules();\n\n      this.logger.debug(\"Activation completed. Model:\", this.model);\n    }\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.test_management.questionary_groups.name\").required()\n      .ensure(\"itemToQualify\").displayName(\"main.admin.pages.questionaries.item_to_qualify\").required()\n      .ensure(\"languageId\").displayName(\"main.admin.pages.questionaries.language\").required()\n      .on(this.model);\n  }\n\n  public setUserLanguage() {\n    this.logger.debug(\"setUserLanguage\");\n    if (this.state && this.state.userBasicInfo) {\n      let activeCulture = this.state.userBasicInfo.culture;\n      let activeLang = this.languages.find((lg: { culture: string; }) => lg.culture === activeCulture);\n      if (activeLang) {\n        this.languageId = activeLang.id;\n        this.model.languageId = this.languageId;\n        this.logger.debug(\"Language set to:\", activeLang.name, \"ID:\", this.languageId);\n      } else {\n        this.logger.warn(\"No matching language found for culture:\", activeCulture);\n      }\n    } else {\n      this.logger.warn(\"No user basic info available\");\n    }\n  }\n\n  get canSave() {\n    return !this.reportTemplateService.client.isRequesting;\n  }\n\n  get canSaveWithSheets() {\n    return this.model && this.model.sheetIds && this.model.sheetIds.length > 0;\n  }\n\n  private async initializeSheetData(): Promise<void> {\n    try {\n      let settings = await this.coreCompanyService.getSettingsById(this.companyId);\n      this.questionaryId = settings.competencesQuestionaryId;\n\n      if (this.questionaryId == 0)\n        this.questionaryId = Tests['Competences'];\n\n      this.companyCompetences = await this.companyCompetenceService.getAll(this.questionaryId);\n      this.sheets = await this.companySheetService.getAll();\n      this.setSheetIdsWhitCompetences();\n      this.setSheetAvailable();\n      await this.databindSheets();\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async databindSheets(): Promise<any> {\n    this.logger.debug(\"databindSheets\");\n    try {\n      if (!this.model.id) {\n        // For new templates, use the new endpoint with itemToQualify filtering\n        await this.databindSheetsForNewTemplate();\n      } else {\n        // For existing templates, use the original method\n        this.categories = await this.categorySheetService.list(this.model.id, this.model.languageId, this.search);\n      }\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async databindSheetsForNewTemplate(): Promise<void> {\n    this.logger.debug(\"databindSheetsForNewTemplate\");\n\n    if (!this.model.languageId || this.model.itemToQualify === undefined) {\n      this.logger.debug(\"Skipping databindSheetsForNewTemplate - missing required data\");\n      this.categories = [];\n      return;\n    }\n\n    // Use the new endpoint that filters by itemToQualify\n    this.categories = await this.categorySheetService.listByItemToQualify(\n      this.model.itemToQualify,\n      this.model.languageId,\n      this.search,\n      this.model.organizationType\n    );\n  }\n\n  public onItemToQualifyChange(): void {\n    this.logger.debug(\"onItemToQualifyChange\", this.model.itemToQualify);\n\n    // Clear sheetIds when changing itemToQualify to avoid invalid selections\n    this.model.sheetIds = [];\n\n    // Reset organizationType if not Organization type\n    if (this.model.itemToQualify !== this.ItemToQualify.Organization) {\n      this.model.organizationType = undefined;\n    }\n\n    // Refresh the sheet list\n    this.databindSheets();\n  }\n\n  public onOrganizationTypeChange(): void {\n    this.logger.debug(\"onOrganizationTypeChange\", this.model.organizationType);\n\n    // Clear sheetIds when changing organizationType to avoid invalid selections\n    this.model.sheetIds = [];\n\n    // Refresh the sheet list\n    this.databindSheets();\n  }\n\n  public async submitComplete(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submitComplete\");\n\n    try {\n      // First validate the basic form\n      const result: ControllerValidateResult = await this.validationController.validate();\n\n      if (!result.valid) {\n        this.logger.debug(\"validation failed:\", result.results);\n        this.notification.warning(\"forms.validation_errors\");\n        return;\n      }\n\n      // If it's a new template, create it first\n      if (!this.model.id) {\n        this.logger.debug(\"Creating new template...\");\n        this.model = await this.reportTemplateService.create(this.model);\n        this.logger.debug(\"Template created with ID:\", this.model.id);\n        this.notification.success(\"notifications.item_added\");\n\n        // Initialize sheet data for new template\n        await this.initializeSheetData();\n      }\n\n      // Validate sheet selection\n      if (this.model.sheetIds.length == 0) {\n        this.notification.warning(\"main.test.pages.people.errors.no_sheet_selected\");\n        return;\n      }\n\n      // Validate competences if needed\n      if (this.companyCompetences.length > 0 && this.isCompetenceActive && this.model.companyCompetenceIds.length == 0) {\n        this.notification.warning(\"main.test.pages.people.errors.no_competences_selected\");\n        return;\n      }\n\n      // Validate modular thematic associates if needed\n      if (this.isModularActive && (!this.model.reportTemplateThematicAssociates || this.model.reportTemplateThematicAssociates.length === 0)) {\n        this.notification.warning(\"main.test.pages.people.errors.no_thematic_groupid_selected\");\n        return;\n      }\n\n      // Update the template with sheets\n      this.syncReportTemplateQuestionaryIds();\n      await this.reportTemplateService.update(this.model);\n      this.notification.success(\"notifications.item_edited\");\n      this.markDiscStateAsSaved();\n\n      // Navigate only if not keeping editing\n      if (!keepEditing) {\n        await this.router.navigateToRoute(\"report-templates\");\n      }\n    } catch (error) {\n      this.logger.error(\"submitComplete error:\", error);\n      this.notification.error(error);\n    }\n  }\n\n  public async submitSheets(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submitSheets\");\n    if (this.model.sheetIds.length == 0) {\n      this.notification.warning(\"main.test.pages.people.errors.no_sheet_selected\");\n      return;\n    }\n\n    if (this.companyCompetences.length > 0 && this.isCompetenceActive && this.model.companyCompetenceIds.length == 0) {\n      this.notification.warning(\"main.test.pages.people.errors.no_competences_selected\");\n      return;\n    }\n\n    if (this.isModularActive && (!this.model.reportTemplateThematicAssociates || this.model.reportTemplateThematicAssociates.length === 0)) {\n      this.notification.warning(\"main.test.pages.people.errors.no_thematic_groupid_selected\");\n      return;\n    }\n\n    try {\n      this.syncReportTemplateQuestionaryIds();\n      await this.reportTemplateService.update(this.model);\n      this.notification.success(\"notifications.item_edited\");\n      this.markDiscStateAsSaved();\n\n      if (!keepEditing) {\n        await this.router.navigateToRoute(\"report-templates\");\n      }\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async changeSheetState(sheet: Sheet) {\n    const index = this.model.sheetIds.indexOf(sheet.id);\n\n    if (index !== -1) {\n      this.model.sheets.push(sheet);\n    }\n    else {\n      const index2 = this.model.sheets.findIndex(x => x.id === sheet.id);\n      if (index2 !== -1) {\n        this.model.sheets.splice(index2, 1);\n      }\n    }\n\n    if (this.companyCompetences.length > 0 && this.changeSheetIdsWithCompetencesEnabled(sheet.id) && this.isCompetenceActive) {\n      this.selectCompanyCompetence();\n    }\n\n    this.setDurationAndPrice();\n    this.setSheetAvailable();\n\n    // If sheet was removed, clean up thematic associates for modular questionaries\n    // that no longer have any selected sheet\n    const wasRemoved = this.model.sheetIds.indexOf(sheet.id) === -1;\n\n    // Only prompt DISC when the added sheet actually contributes a DISC questionary.\n    const changedSheet = this.sheets.find(s => s.id === sheet.id);\n    const sheetHasDisc = changedSheet ? changedSheet.questionaries.some(q => this.isDiscQuestionary(q)) : false;\n\n    // DISC selection is validated on sheet changes (add/remove), not on save.\n    const discOk = await this.evaluateDiscSelection(!wasRemoved && sheetHasDisc);\n    if (!discOk) {\n      return;\n    }\n\n    if (wasRemoved) {\n      const fullSheet = this.sheets.find(s => s.id === sheet.id);\n      if (fullSheet) {\n        const modularQuestionaries = fullSheet.questionaries.filter(q => q.isModular);\n        for (const mq of modularQuestionaries) {\n          // Check if any other selected sheet still has this modular questionary\n          const stillHasSheet = this.model.sheetIds.some(sid => {\n            const s = this.sheets.find(x => x.id === sid);\n            return s && s.questionaries.some(q => q.id === mq.id);\n          });\n          if (!stillHasSheet) {\n            this.model.reportTemplateThematicAssociates = this.model.reportTemplateThematicAssociates\n              .filter(a => a.questionaryId !== mq.id);\n          }\n        }\n      }\n      this.updateSheetDimensionsVisible();\n    }\n\n    // If sheet was added and contains modular questionaries, trigger dimension selection\n    if (!wasRemoved) {\n      const fullSheet = this.sheets.find(s => s.id === sheet.id);\n      if (fullSheet) {\n        const modularQuestionaries = fullSheet.questionaries.filter(q => q.isModular);\n        for (const mq of modularQuestionaries) {\n          await this.selectThematics(mq.id, mq.name, sheet);\n        }\n      }\n    }\n  }\n\n  private isCompetenceType(sheets: Sheet[]): boolean {\n    let res: boolean = false;\n    sheets.forEach(x => {\n      let sheet = this.sheets.find(y => y.id === x.id);\n      if (sheet) {\n        let questionary = sheet.questionaries.find(q => q.questionaryType == QuestionaryType.Competences);\n        if (questionary) {\n          res = true;\n        }\n      }\n    });\n    return res;\n  }\n\n  private async setDurationAndPrice() {\n    let questionaries: any[] = this.getEffectiveQuestionariesFromSelectedSheets();\n    let duration = 0;\n    let price = 0;\n    this.isModularActive = false;\n    this.model.sheetIds.forEach(x => {\n      let sheet = this.sheets.find(y => y.id === x);\n      if (sheet) {\n        price += +sheet.talentsPrice;\n      }\n    });\n\n    this.isModularActive = questionaries.some(q => q.isModular);\n\n    // Calculate duration: modular questionaries use dimension time, others use averageTime\n    duration = 0;\n    for (const q of questionaries) {\n      if (q.isModular) {\n        const associatesForQ = (this.model.reportTemplateThematicAssociates || [])\n          .filter(a => a.questionaryId === q.id);\n        if (associatesForQ.length > 0) {\n          const availableThematics = await this.companyQuestionaryService.getAvailableByQuestionaryId(q.id);\n          for (const associate of associatesForQ) {\n            const thematic = availableThematics.find(v => v.id === associate.thematicGroupId);\n            duration += (thematic && thematic.averageTime ? +thematic.averageTime : 0);\n          }\n        }\n      } else {\n        duration += +q.averageTime;\n      }\n    }\n\n    this.questionariesCount = questionaries.length;\n    this.questionariesNames = questionaries.length > 0\n      ? questionaries.map(q => this.getLocalizedQuestionaryName(q)).join(', ')\n      : '';\n    this.duration = duration;\n    this.price = price;\n  }\n\n  private getLocalizedQuestionaryName(questionary: TestQuestionary): string {\n    const localizedQuestionary = this.questionaries.find(q =>\n      q.id === questionary.id && q.languageId === this.model.languageId);\n\n    return localizedQuestionary\n      ? localizedQuestionary.name\n      : questionary.name + ' (?)';\n  }\n\n  private isDiscQuestionary(questionary: any): boolean {\n    return questionary && questionary.noDiscType === null && questionary.questionaryType === QuestionaryType.Disc;\n  }\n\n  private syncReportTemplateQuestionaryIds(): void {\n    if (!this.model) {\n      return;\n    }\n\n    const effectiveQuestionaries = this.getEffectiveQuestionariesFromSelectedSheets();\n    this.model.reportTemplateQuestionaryIds = effectiveQuestionaries.map(q => q.id);\n  }\n\n  private getEffectiveQuestionariesFromSelectedSheets(): any[] {\n    let questionaries: any[] = [];\n\n    if (!this.model || !this.model.sheetIds || !this.sheets) {\n      return questionaries;\n    }\n\n    this.model.sheetIds.forEach(sheetId => {\n      let sheet = this.sheets.find(s => s.id === sheetId);\n      if (sheet) {\n        sheet.questionaries.forEach(q => {\n          if (!questionaries.find(existing => existing.id === q.id)) {\n            questionaries.push(q);\n          }\n        });\n      }\n    });\n\n    // Keep only one DISC effective questionary while preserving all other types.\n    const discQuestionaries = questionaries.filter(q => this.isDiscQuestionary(q));\n    if (discQuestionaries.length > 0) {\n      const discByLanguage = discQuestionaries.filter(q => q.languageId === this.model.languageId);\n      const discCandidates = discByLanguage.length > 0 ? discByLanguage : discQuestionaries;\n      const effectiveDiscQuestionary = this.resolveEffectiveDiscQuestionary(discCandidates);\n\n      questionaries = questionaries.filter(q => !this.isDiscQuestionary(q));\n      if (effectiveDiscQuestionary) {\n        questionaries.push(effectiveDiscQuestionary);\n      }\n    }\n\n    return questionaries;\n  }\n\n  private resolveEffectiveDiscQuestionary(discQuestionaries: any[]): any {\n    if (!discQuestionaries || discQuestionaries.length === 0) {\n      return null;\n    }\n\n    if (this.selectedDiscQuestionaryId) {\n      const selected = discQuestionaries.find(q => q.id === this.selectedDiscQuestionaryId);\n      if (selected) {\n        return selected;\n      }\n    }\n\n    const ordered = discQuestionaries.slice().sort((a, b) => a.id - b.id);\n    return ordered[0];\n  }\n\n  private cleanupObsoleteSheets(): void {\n    this.logger.debug(\"cleanupObsoleteSheets - Before cleanup:\", this.model.sheetIds.length);\n\n    const originalCount = this.model.sheetIds.length;\n\n    // Filter out sheets that no longer exist in the available sheets list\n    const validSheetIds = this.model.sheetIds.filter(sheetId => {\n      const exists = this.sheets.some(sheet => sheet.id === sheetId);\n      if (!exists) {\n        this.logger.debug(\"Removing obsolete sheet:\", sheetId);\n      }\n      return exists;\n    });\n\n    // Filter out sheets from the sheets array as well\n    const validSheets = this.model.sheets.filter(sheet => {\n      const exists = this.sheets.some(s => s.id === sheet.id);\n      return exists;\n    });\n\n    // Update the model if any sheets were removed\n    if (validSheetIds.length !== originalCount || validSheets.length !== this.model.sheets.length) {\n      this.model.sheetIds = validSheetIds;\n      this.model.sheets = validSheets;\n      this.logger.debug(\"cleanupObsoleteSheets - After cleanup:\", this.model.sheetIds.length);\n\n    }\n  }\n\n  private setSheetAvailable() {\n    this.sheets.forEach(x => {\n      if (this.model.sheetIds.indexOf(x.id) !== -1) {\n        this.sheetAvailable[x.id] = false;\n      }\n      else {\n        this.sheetAvailable[x.id] = true;\n      }\n    });\n  }\n\n  public async orderChanged(orderedItems) {\n    const previousSheetIds = this.model.sheetIds.slice();\n    this.model.sheets = orderedItems;\n    this.model.sheetIds = orderedItems.map(x => x.id);\n    const hasSheetSetChanged = this.getSheetSignature(previousSheetIds) !== this.getSheetSignature(this.model.sheetIds);\n\n    this.setDurationAndPrice();\n    this.setSheetAvailable();\n\n    let hasAddsheetIds = false;\n    orderedItems.forEach(x => {\n      if (this.changeSheetIdsWithCompetencesEnabled(x.id)) {\n        hasAddsheetIds = true;\n      }\n    });\n\n    if (!hasAddsheetIds) {\n      let copysheetIdsWithCompetencesEnabled: number[] = this.sheetIdsWithCompetencesEnabled;\n      copysheetIdsWithCompetencesEnabled.forEach(x => {\n        this.changeSheetIdsWithCompetencesEnabled(x);\n      })\n    }\n\n    if (this.companyCompetences.length > 0 && hasAddsheetIds && this.isCompetenceActive) {\n      this.selectCompanyCompetence();\n    }\n\n    // Open dimension modal for newly added modular sheets\n    const addedSheetIds = this.model.sheetIds.filter(id => !previousSheetIds.includes(id));\n    if (hasSheetSetChanged) {\n      const shouldOpenDiscModal = addedSheetIds.length > 0;\n      await this.evaluateDiscSelection(shouldOpenDiscModal);\n    }\n\n    if (addedSheetIds.length > 0) {\n      await this.handleAddedModularSheets(addedSheetIds);\n    }\n\n    this.updateSheetDimensionsVisible();\n  }\n\n  private isDiscSelectorApplicable(): boolean {\n    return this.model &&\n      this.model.itemToQualify === ItemToQualify.Person;\n  }\n\n  private async evaluateDiscSelection(openModalIfNeeded: boolean): Promise<boolean> {\n    if (!this.model || !this.model.languageId || !this.model.sheetIds || this.model.sheetIds.length === 0) {\n      return true;\n    }\n\n    if (!this.isDiscSelectorApplicable()) {\n      this.selectedDiscQuestionaryId = null;\n      this.discPopupOpenedOnce = false;\n      this.discOptions = [];\n      this.syncReportTemplateQuestionaryIds();\n      return true;\n    }\n\n    const currentSheetSignature = this.getSheetSignature(this.model.sheetIds);\n    const hasSheetChangeFromSavedState = currentSheetSignature !== this.lastSavedSheetSignature;\n    const hasDiscContext = this.hasDiscSelectionContext();\n    if (!hasSheetChangeFromSavedState) {\n      this.discPromptShownForCurrentSheetChange = false;\n    }\n\n    const shouldReaskOnSheetChange = hasSheetChangeFromSavedState\n      && !this.discPromptShownForCurrentSheetChange\n      && hasDiscContext;\n\n    if (shouldReaskOnSheetChange) {\n      this.discPopupOpenedOnce = false;\n      this.discPromptShownForCurrentSheetChange = true;\n    }\n\n    const request: DiscSelectionOptionsRequest = {\n      languageId: this.model.languageId,\n      itemToQualify: this.model.itemToQualify,\n      sheetIds: this.model.sheetIds.slice(),\n      selectedQuestionaryId: this.discPopupOpenedOnce ? this.selectedDiscQuestionaryId : undefined\n    };\n\n    this.logger.debug('DISC evaluate request', {\n      languageId: request.languageId,\n      itemToQualify: request.itemToQualify,\n      sheetIds: request.sheetIds,\n      selectedQuestionaryId: request.selectedQuestionaryId,\n      discPopupOpenedOnce: this.discPopupOpenedOnce\n    });\n\n    const response: DiscSelectionOptions = await this.reportTemplateService.getDiscSelectionOptions(request);\n    this.discOptions = response.availableQuestionaries || [];\n\n    this.logger.debug('DISC evaluate response', {\n      requiresPopup: response.requiresPopup,\n      reasonCode: response.reasonCode,\n      availableCount: this.discOptions.length,\n      availableIds: this.discOptions.map(x => x.id),\n      isSelectionStillValid: response.isSelectionStillValid,\n      effectiveSelectedQuestionaryId: response.effectiveSelectedQuestionaryId\n    });\n\n    const shouldOpenModalByOptions = !this.discPopupOpenedOnce && this.discOptions.length > 1;\n    const requiresPopup = response.requiresPopup || shouldOpenModalByOptions;\n\n    if (!requiresPopup) {\n      const resolvedDiscSelectionId = this.resolveDiscSelectionCandidate(response, false);\n      if (resolvedDiscSelectionId) {\n        this.selectedDiscQuestionaryId = resolvedDiscSelectionId;\n      } else {\n        this.selectedDiscQuestionaryId = null;\n        this.discPopupOpenedOnce = false;\n      }\n      this.syncReportTemplateQuestionaryIds();\n      return true;\n    }\n\n    if (!openModalIfNeeded) {\n      if (requiresPopup) {\n        const hasCurrentSelection = !!this.selectedDiscQuestionaryId;\n        const isCurrentSelectionStillAvailable = hasCurrentSelection\n          && this.discOptions.some(x => x.id === this.selectedDiscQuestionaryId);\n\n        if (!isCurrentSelectionStillAvailable) {\n          const resolvedDiscSelectionId = this.resolveDiscSelectionCandidate(response, true);\n          if (resolvedDiscSelectionId) {\n            this.selectedDiscQuestionaryId = resolvedDiscSelectionId;\n          } else {\n            this.selectedDiscQuestionaryId = null;\n            this.discPopupOpenedOnce = false;\n          }\n        }\n\n        this.syncReportTemplateQuestionaryIds();\n      }\n      return true;\n    }\n\n    if (this.discPopupOpenedOnce && response.isSelectionStillValid) {\n      return true;\n    }\n\n    if (hasSheetChangeFromSavedState) {\n      this.discPromptShownForCurrentSheetChange = true;\n    }\n\n    const selected = await this.openDiscSelectionModal(this.discOptions, this.selectedDiscQuestionaryId);\n    if (!selected) {\n      this.notification.warning('forms.validation_errors');\n      return false;\n    }\n\n    this.selectedDiscQuestionaryId = selected;\n    this.discPopupOpenedOnce = true;\n    this.syncReportTemplateQuestionaryIds();\n    return true;\n  }\n\n  private getSheetSignature(sheetIds: number[]): string {\n    if (!sheetIds || sheetIds.length === 0) {\n      return '';\n    }\n\n    return sheetIds.slice().sort((a, b) => a - b).join(',');\n  }\n\n  private hasDiscSelectionContext(): boolean {\n    if (this.selectedDiscQuestionaryId) {\n      return true;\n    }\n\n    const effectiveQuestionaries = this.getEffectiveQuestionariesFromSelectedSheets();\n    return effectiveQuestionaries.some(q => this.isDiscQuestionary(q));\n  }\n\n  private markDiscStateAsSaved(): void {\n    this.lastSavedSheetSignature = this.getSheetSignature(this.model.sheetIds);\n    this.discPromptShownForCurrentSheetChange = false;\n  }\n\n  private resolveDiscSelectionCandidate(response: DiscSelectionOptions, allowFirstAvailableFallback: boolean): number {\n    if (response.effectiveSelectedQuestionaryId) {\n      return response.effectiveSelectedQuestionaryId;\n    }\n\n    if (response.defaultQuestionaryId && response.reasonCode === DiscSelectionReasonCode.DefaultLanguageFallback) {\n      return response.defaultQuestionaryId;\n    }\n\n    if (allowFirstAvailableFallback && this.discOptions && this.discOptions.length > 0) {\n      return this.discOptions[0].id;\n    }\n\n    return null;\n  }\n\n  private async openDiscSelectionModal(options: DiscQuestionaryOption[], currentSelection: number): Promise<number> {\n    if (!options || options.length === 0) {\n      return null;\n    }\n\n    if (options.length === 1) {\n      return options[0].id;\n    }\n\n    const model: DiscSelectionModalModel = {\n      options: options,\n      selectedId: currentSelection\n    };\n\n    const result = await this.dialogService.open({\n      viewModel: DiscSelectionModal,\n      model: model,\n      lock: true\n    }).whenClosed();\n\n    if (result.wasCancelled || !result.output) {\n      return null;\n    }\n\n    return result.output;\n  }\n\n  private async handleAddedModularSheets(addedSheetIds: number[]): Promise<void> {\n    for (const addedId of addedSheetIds) {\n      const fullSheet = this.sheets.find(s => s.id === addedId);\n      if (fullSheet) {\n        const modularQuestionaries = fullSheet.questionaries.filter(q => q.isModular);\n        for (const mq of modularQuestionaries) {\n          const hasExistingDimensions = this.model.reportTemplateThematicAssociates\n            .some(a => a.questionaryId === mq.id);\n          if (!hasExistingDimensions) {\n            await this.selectThematics(mq.id, mq.name, fullSheet);\n          }\n        }\n      }\n    }\n    this.updateSheetDimensionsVisible();\n  }\n\n  private async selectCompanyCompetence(): Promise<void> {\n    // Import the modal when needed\n    const { CompanyCompetenceModal } = await import('../../../../test/pages/people-competence/company-competence-modal');\n\n    return await this.dialogService.open({\n      viewModel: CompanyCompetenceModal,\n      model: this.model.companyCompetenceIds\n    }).whenClosed(async (response: any) => {\n      if (!response.wasCancelled) {\n        if (this.companyCompetences.length > 0 && this.isCompetenceActive && this.model.companyCompetenceIds.length == 0) {\n          this.notification.warning(\"main.test.pages.people.errors.no_competences_selected\");\n        }\n      }\n    });\n  }\n\n  private setSheetIdsWhitCompetences() {\n    this.sheets.forEach(x => {\n      x.questionaries.forEach(q => {\n        if (q.questionaryType == QuestionaryType.Competences) {\n          const index = this.sheetIdsWithCompetences.indexOf(x.id);\n          if (index === -1) {\n            this.sheetIdsWithCompetences.push(x.id);\n          }\n        }\n      });\n    });\n  }\n\n  private changeSheetIdsWithCompetencesEnabled(idSheet: number): boolean {\n    let sheetIdsWithCompentenceChanged: boolean = false;\n    const indexCompetenceSheetIds = this.sheetIdsWithCompetences.indexOf(idSheet);\n    const indexModelSheetIds = this.model.sheetIds.indexOf(idSheet);\n\n    if (indexCompetenceSheetIds !== -1) {\n      const indexCompetenceEnabledSheetIds = this.sheetIdsWithCompetencesEnabled.indexOf(idSheet);\n      if (indexModelSheetIds !== -1) {\n        if (indexCompetenceEnabledSheetIds === -1) {\n          this.sheetIdsWithCompetencesEnabled.push(idSheet);\n          sheetIdsWithCompentenceChanged = true;\n        }\n      } else {\n        if (indexCompetenceEnabledSheetIds !== -1) {\n          this.sheetIdsWithCompetencesEnabled.splice(indexCompetenceEnabledSheetIds, 1);\n          sheetIdsWithCompentenceChanged = true;\n        }\n      }\n    }\n\n    if (this.companyCompetences.length > 0 && this.sheetIdsWithCompetencesEnabled.length > 0) {\n      this.isCompetenceActive = true;\n    } else {\n      this.isCompetenceActive = false;\n      this.model.companyCompetenceIds = [];\n    }\n\n    return sheetIdsWithCompentenceChanged;\n  }\n\n  private fillSheetIdsWithCompetencesEnabled() {\n    this.sheetIdsWithCompetencesEnabled = [];\n    this.model.sheetIds.forEach(x => {\n      const indexCompetenceSheetIds = this.sheetIdsWithCompetences.indexOf(x);\n\n      if (indexCompetenceSheetIds !== -1) {\n        const indexCompetenceEnabledSheetIds = this.sheetIdsWithCompetencesEnabled.indexOf(x);\n        if (indexCompetenceEnabledSheetIds === -1) {\n          this.sheetIdsWithCompetencesEnabled.push(x);\n        }\n      }\n    });\n\n    if (this.companyCompetences.length > 0 && this.sheetIdsWithCompetencesEnabled.length > 0) {\n      this.isCompetenceActive = true;\n    } else {\n      this.isCompetenceActive = false;\n      this.model.companyCompetenceIds = [];\n    }\n  }\n\n  public notificationInfo(message: string) {\n    this.notification.info(message);\n  }\n\n  private isModularType(sheets: Sheet[]): boolean {\n    let res: boolean = false;\n    sheets.forEach(x => {\n      let sheet = this.sheets.find(y => y.id === x.id);\n      if (sheet) {\n        let questionary = sheet.questionaries.find(q => q.isModular);\n        if (questionary) {\n          res = true;\n        }\n      }\n    });\n    return res;\n  }\n\n  private updateSheetDimensionsVisible(): void {\n    this.sheets.forEach(sheet => {\n      const modularQuestionaries = sheet.questionaries.filter(q => q.isModular);\n      if (modularQuestionaries.length === 0) {\n        this.sheetDimensionsVisible[sheet.id] = false;\n        return;\n      }\n      this.sheetDimensionsVisible[sheet.id] = modularQuestionaries.some(mq =>\n        this.model.reportTemplateThematicAssociates &&\n        this.model.reportTemplateThematicAssociates.some(a => a.questionaryId === mq.id)\n      );\n    });\n  }\n\n  private async openSheetDimensions(sheet: Sheet): Promise<void> {\n    const fullSheet = this.sheets.find(s => s.id === sheet.id);\n    if (!fullSheet) return;\n    const modularQuestionaries = fullSheet.questionaries.filter(q => q.isModular);\n    for (const mq of modularQuestionaries) {\n      await this.selectThematics(mq.id, mq.name);\n    }\n  }\n\n  private getModularQuestionaries(): any[] {\n    let modularQuestionaries: any[] = [];\n    this.model.sheetIds.forEach(sheetId => {\n      let sheet = this.sheets.find(y => y.id === sheetId);\n      if (sheet) {\n        sheet.questionaries.forEach(q => {\n          if (q.isModular && !modularQuestionaries.find(m => m.id === q.id)) {\n            modularQuestionaries.push(q);\n          }\n        });\n      }\n    });\n    return modularQuestionaries;\n  }\n\n  private async selectThematics(questionaryId: number, questionaryName: string, triggerSheet?: Sheet): Promise<void> {\n    this.logger.debug(\"selectThematics\", questionaryId, questionaryName);\n\n    if (!this.model.reportTemplateThematicAssociates) {\n      this.model.reportTemplateThematicAssociates = [];\n    }\n\n    const allDimensions = await this.companyQuestionaryService.getAvailableByQuestionaryId(questionaryId);\n    const enabledDimensions = allDimensions.filter(d => !d.isDisabled);\n\n    // Auto-select all enabled dimensions for company-owned questionaries\n    const modularQuestionaries = this.getModularQuestionaries();\n    const questionary = modularQuestionaries.find(q => q.id === questionaryId);\n\n    if (questionary && questionary.companyId != null && enabledDimensions.length > 0) {\n      const newAssociates: ReportTemplateThematicAssociate[] = enabledDimensions.map(dim => {\n        let associate = new ReportTemplateThematicAssociate();\n        associate.questionaryId = questionaryId;\n        associate.thematicGroupId = dim.id;\n        associate.thematicVariableId = dim.thematicVariableId;\n        return associate;\n      });\n\n      const remaining = this.model.reportTemplateThematicAssociates\n        .filter(a => a.questionaryId !== questionaryId);\n      this.model.reportTemplateThematicAssociates = remaining.concat(newAssociates);\n      this.updateSheetDimensionsVisible();\n      this.setDurationAndPrice();\n      return;\n    }\n\n    const modalModel: DimensionSelectorModel = {\n      questionaryId: questionaryId,\n      questionaryName: questionaryName,\n      questionaryGroupThematicAssociates: [...this.model.reportTemplateThematicAssociates]\n    };\n\n    return await this.dialogService\n      .open({\n        viewModel: DimensionSelectorModal,\n        model: modalModel,\n      })\n      .whenClosed(async (response: any) => {\n        if (!response.wasCancelled && response.output && response.output.associates && response.output.associates.length > 0) {\n          const remaining = this.model.reportTemplateThematicAssociates\n            .filter(a => a.questionaryId !== questionaryId);\n          this.model.reportTemplateThematicAssociates = remaining.concat(response.output.associates);\n\n          this.logger.debug(\"Updated reportTemplateThematicAssociates:\",\n            this.model.reportTemplateThematicAssociates.length);\n          this.updateSheetDimensionsVisible();\n          this.setDurationAndPrice();\n        } else {\n          // Check if there are already dimensions for this questionary\n          const hasExistingDimensions = this.model.reportTemplateThematicAssociates\n            .some(a => a.questionaryId === questionaryId);\n\n          if (!hasExistingDimensions) {\n            // No dimensions at all for this questionary: deselect the triggering sheet\n            if (triggerSheet) {\n              this.deselectSheet(triggerSheet);\n            }\n            this.notification.warning(\n              \"main.test.pages.people.errors.no_thematics_selected\"\n            );\n          }\n        }\n      });\n  }\n\n  private deselectSheet(sheet: Sheet): void {\n    // Remove from sheetIds\n    const sheetIdIndex = this.model.sheetIds.indexOf(sheet.id);\n    if (sheetIdIndex !== -1) {\n      this.model.sheetIds.splice(sheetIdIndex, 1);\n    }\n\n    // Remove from sheets\n    const sheetIndex = this.model.sheets.findIndex(s => s.id === sheet.id);\n    if (sheetIndex !== -1) {\n      this.model.sheets.splice(sheetIndex, 1);\n    }\n\n    // Remove any thematic associates for questionaries in this sheet\n    if (sheet.questionaries) {\n      const questionaryIds = sheet.questionaries.filter(q => q.isModular).map(q => q.id);\n      this.model.reportTemplateThematicAssociates = this.model.reportTemplateThematicAssociates\n        .filter(a => !questionaryIds.includes(a.questionaryId));\n    }\n\n    this.changeSheetIdsWithCompetencesEnabled(sheet.id);\n    this.setDurationAndPrice();\n    this.setSheetAvailable();\n    this.updateSheetDimensionsVisible();\n  }\n}\n","module.exports = \"<template> <require from=../../../../../models/questionaries/itemToQualifyViewEngineHooks></require> <require from=../../../../../models/questionaries/organizationTypeViewEngineHooks></require> <require from=../../test-core/sheets/sheet-card></require> <require from=../../test-core/sheets/sheet-card-small></require> <div class=\\\"content-container row mb-3\\\"> <form class=col-12> <h2 if.bind=!model.id>${'main.admin.pages.test_management.report_templates.create' & t}</h2> <h2 if.bind=model.id>${company.name} / ${model.name}</h2> <p> ${'main.admin.pages.test_management.report_templates.info_editing' & t} </p> <hr/> <div class=form-group> <label>${'main.admin.pages.test_management.report_templates.name' & t} </label> <input type=text class=form-control id=model.name t=[placeholder]main.admin.pages.test_management.report_templates.name value.bind=\\\"model.name & validate\\\"> </div> <div class=form-group if.bind=!model.id> <label for=itemToQualify>${'main.admin.pages.test_management.report_templates.type' & t} <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.test.admin.report_templates.type')\\\" role=button> <i class=material-icons>info_outline</i> </a> </label> <select value.bind=\\\"model.itemToQualify & validate\\\" class=form-control id=itemToQualify disabled.bind=\\\"model.id || hasSheetsSelected\\\" change.delegate=onItemToQualifyChange()> <option repeat.for=\\\"option of ItemsToQualify\\\" model.bind=ItemToQualify[option]> ${('main.admin.pages.questionaries.items_to_qualify.' + option) & t} </option> </select> <div class=\\\"alert alert-info mt-3\\\" role=alert> <p if.bind=\\\"model.itemToQualify == ItemToQualify.Person\\\"> ${'main.admin.pages.test_management.report_templates.person_description' & t} </p> <p if.bind=\\\"model.itemToQualify == ItemToQualify.Position\\\"> ${'main.admin.pages.test_management.report_templates.position_description' & t} </p> <p if.bind=\\\"model.itemToQualify == ItemToQualify.Team\\\"> ${'main.admin.pages.test_management.report_templates.team_description' & t} </p> <p if.bind=\\\"model.itemToQualify == ItemToQualify.Organization\\\"> ${'main.admin.pages.test_management.report_templates.organization_description' & t} </p> <p if.bind=\\\"model.itemToQualify == ItemToQualify.Observed\\\"> ${'main.admin.pages.test_management.report_templates.observed_description' & t} </p> </div> </div> <div class=form-group if.bind=model.id> <label for=itemToQualify>${'main.admin.pages.test_management.report_templates.type' & t}</label> <p class=form-control-static> <strong>${'main.admin.pages.questionaries.items_to_qualify.' + ItemToQualify[model.itemToQualify] & t}</strong> </p> </div> <div class=form-group if.bind=\\\"!model.id && model.itemToQualify == ItemToQualify.Organization\\\"> <label for=organizationType t=main.admin.pages.questionaries.organization_types.title>Organization type</label> <select value.bind=\\\"model.organizationType & validate\\\" class=form-control id=organizationType disabled.bind=hasSheetsSelected change.delegate=onOrganizationTypeChange()> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of OrganizationTypes\\\" model.bind=OrganizationType[option]> ${('main.admin.pages.questionaries.organization_types.' + option) & t} </option> </select> </div> <div class=form-group if.bind=\\\"model.id && model.itemToQualify == ItemToQualify.Organization\\\"> <label for=organizationType t=main.admin.pages.questionaries.organization_types.title>Organization type</label> <p><strong>${'main.admin.pages.questionaries.organization_types.' + OrganizationType[model.organizationType] & t}</strong></p> </div> <div class=form-group if.bind=!model.id> <label for=languageId>${'main.admin.pages.questionaries.language' & t}</label> <select value.bind=model.languageId class=form-control id=languageId disabled.bind=model.id change.delegate=\\\"databindSheets() & debounce:100\\\"> <option repeat.for=\\\"option of languages\\\" model.bind=option.id>${option.name & t}</option> </select> </div> <div class=form-group if.bind=model.id> <label for=languageId t=main.admin.pages.questionaries.language>idioma</label> <p><strong>${languageName & t}</strong></p> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </form> </div> <div class=\\\"content-container row mb-3\\\"> <div class=col-8> <div class=\\\"row mb-3\\\"> <div class=col-12> <p>${'main.admin.pages.test_management.report_templates.sheets.info' & t}</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-10> <input type=text class=form-control value.bind=search t=[placeholder]ux_datatable.search_placeholder keyup.delegate=\\\"databindSheets() & debounce:100\\\"> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <p t=main.admin.pages.test_management.questionary_groups.questionaries_info t-params.bind=\\\"{quantity: questionariesCount, duration: duration}\\\"> Questionaries quantity </p> <p if.bind=questionariesNames>${questionariesNames}</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <span repeat.for=\\\"item of categories\\\" ref=$root model.bind=model> <div class=row> <div class=col-12> <a class=\\\"btn btn-link d-inline\\\" data-toggle=collapse href=#collapseSheets_${$index} role=button aria-expanded=false aria-controls=collapseSheets_${$index}> <i class=material-icons>arrow_drop_down</i> </a> <h5 class=d-inline> ${item.name & t} <small>${item.description & t}</small> </h5> <button class=\\\"btn btn-link\\\" if.bind=\\\"isCompetenceType(item.sheets) && isCompetenceActive\\\" click.delegate=selectCompanyCompetence() title=\\\"${'commands.view_competences' & t}\\\"> <i class=material-icons>visibility</i> </button> <p>${item.sheets.length} ${'commons.pages' & t}</p> </div> </div> <div class=\\\"row mb-1\\\"> <div class=col-12> <div class=\\\"collapse show\\\" id=collapseSheets_${$index}> <div class=\\\"card card-body\\\" reorderable-group-for.bind=item.sheets> <ux-carousel options.bind=options> <sheet-card reorderable-repeat.for=\\\"sheet of item.sheets\\\" reorderable-group=tht reorderable-dnd-handler-selector=.drag-handle sheet.bind=sheet checked.bind=$root.model.sheetIds value.bind=sheet.id change.delegate=changeSheetState(sheet) show.bind=sheetAvailable[sheet.id] show-dimensions.bind=sheetDimensionsVisible[sheet.id] dimension-click.call=openSheetDimensions(sheet)> </sheet-card> </ux-carousel> </div> </div> </div> </div> </span> </div> </div> </div> <div class=\\\"col-4 bg-light\\\" reorderable-group-for.bind=model.sheets> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-primary\\\" role=alert> <h4>${'main.admin.pages.test_management.report_templates.sheets.price' & t} <strong>${price}</strong></h4> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <sheet-card-small reorderable-repeat.for=\\\"sheet of model.sheets\\\" reorderable-group=tht reorderable-dnd-handler-selector=.drag-handle reorderable-after-reordering=orderChanged ref=$root model.bind=model sheet.bind=sheet checked.bind=$root.model.sheetIds value.bind=sheet.id change.delegate=changeSheetState(sheet) show-dimensions.bind=sheetDimensionsVisible[sheet.id] dimension-click.call=openSheetDimensions(sheet)> </sheet-card-small> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: TestManagementReportUpdate\\\" type=button click.delegate=submitComplete(true) disabled.bind=\\\"!canSave || !canSaveWithSheets\\\"> ${'commands.save_and_continue' & t} </button> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: TestManagementReportUpdate\\\" type=button click.delegate=submitComplete(false) disabled.bind=\\\"!canSave || !canSaveWithSheets\\\"> ${'commands.save' & t} </button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: report-templates;\\\" t=commands.cancel>Cancel</a> <div class=mt-2 if.bind=!canSaveWithSheets> <small class=text-muted> <i class=material-icons style=font-size:16px;vertical-align:middle>info_outline</i> ${'main.test.pages.people.errors.no_sheet_selected' & t} </small> </div> </div> </div>  </template>\";","import { StoreService } from 'common/store/store-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport {\n  UxDatatableParameters,\n  UxDatatableCustomAttribute,\n  UxDatatableResponse\n} from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { Company } from \"models/companies/company\";\nimport { State } from \"common/store/store-model\";\nimport { DeleteConfirmation } from 'main/components/delete-confirmation';\nimport { ReportTemplateService } from '../../../services/test-management/report-template-service';\nimport { ReportTemplate } from 'models/test-core/report-templates/report-template';\nimport { CompanyCompetence } from 'models/test-core/competences/company-competence';\nimport { CompetenceActivatedModal } from 'main/test/pages/people-competence/competence-activated-modal';\nimport { ActivationRequest } from 'models/test-person/activationRequest';\nimport { TypeActivationUrl } from 'models/test-person/typeActivationUrl';\nimport { ActivationLinkModal } from 'main/components/activation-link-modal';\n\n@autoinject()\nexport class ReportList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n  private company: Company;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private state: State;\n  private isLoaded: boolean = false;\n\n  // Duplicate report\n  public duplicateTemplates: ReportTemplate[] = [];\n  public searchDuplicateTemplates: ReportTemplate[] = [];\n  public duplicateFilter: string = '';\n  public selectedDuplicateId: number = null;\n  public isDuplicating: boolean = false;\n\n  constructor(\n    private router: Router,\n    private store: StoreService,\n    private reportTemplateService: ReportTemplateService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"ReportList\");\n\n    this.state = this.store.state;\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    let search = this.parameters.search.Query;\n    sessionStorage.setItem('reportTemplateListSearch', search == null ? '' : search);\n\n    return await this.reportTemplateService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    // this.logger.debug(\"activate\");\n    this.parameters.search.Query = sessionStorage.getItem('reportTemplateListSearch');\n\n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n\n  }\n\n  private async bind(): Promise<any> {\n    // this.logger.debug(\"bind\");\n\n    if (!isNaN(this.params.companyId)) {\n\n      this.companyId = +this.params.companyId;\n\n      if (this.companyId) {\n\n        this.reportTemplateService.client.currentCompanyId = this.companyId;\n\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n\n        this.isLoaded = true;\n\n        return await this.databind();\n      }\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n        this.updateDuplicateTemplates();\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async clearFilters(): Promise<any> {\n    this.parameters.search.Query = null;\n    await this.databind();\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private updateDuplicateTemplates(): void {\n    this.duplicateTemplates = (this.parameters.tableData || []).filter(x => !x.isDefault);\n    this.searchDuplicateTemplates = this.duplicateTemplates;\n    this.duplicateFilter = '';\n    this.selectedDuplicateId = null;\n  }\n\n  private async delete(item: ReportTemplate): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: item.name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        return await this.reportTemplateService.delete(item.id)\n          .then(() => {\n\n            let indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(item.id.toString());\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"notifications.item_deleted\");\n\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n\n      }\n    });\n  }\n\n  private async seeActivatedCompetences(companyCompetence: CompanyCompetence[]): Promise<void> {\n    await this.dialogService.open({\n      viewModel: CompetenceActivatedModal,\n      model: companyCompetence\n    })\n  }\n\n  public onChangeDuplicateFilter(): void {\n    if (this.duplicateFilter && this.duplicateFilter.length > 0) {\n      this.searchDuplicateTemplates = this.duplicateTemplates.filter(\n        q => q.name.toLowerCase().includes(this.duplicateFilter.toLowerCase())\n      );\n      if (this.searchDuplicateTemplates.length > 0) {\n        this.selectedDuplicateId = this.searchDuplicateTemplates[0].id;\n      }\n    } else {\n      this.searchDuplicateTemplates = this.duplicateTemplates;\n      this.selectedDuplicateId = null;\n    }\n  }\n\n  public async duplicateReport(): Promise<void> {\n    if (!this.selectedDuplicateId) {\n      this.notification.warning('main.admin.pages.test_management.report_templates.duplicate_card.select_required');\n      return;\n    }\n\n    try {\n      this.isDuplicating = true;\n      let cloned: ReportTemplate = await this.reportTemplateService.duplicate(this.selectedDuplicateId);\n      this.notification.success('notifications.item_added');\n      this.router.navigateToRoute('report-template-child-router', { reportTemplateId: cloned.id });\n    } catch (error) {\n      this.notification.error(error);\n    } finally {\n      this.isDuplicating = false;\n    }\n  }\n\n    private async share(item: ReportTemplate): Promise<void> {\n      let model: ActivationRequest = {\n        type: TypeActivationUrl.ReportTemplate,\n        id: item.id,\n        companyId: this.companyId,\n        userId: this.state.userBasicInfo.id\n      };\n      await this.dialogService.open({\n        viewModel: ActivationLinkModal,\n        model: model\n      });\n    }\n\n\n}\n","\nimport { LogManager } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\n\nexport class ReportListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor() {\n    this.logger = LogManager.getLogger(\"ReportListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./report-template-list\"),\n        name: \"report-templates\",\n\n      },\n\n      {\n        route: \"report-template/:reportTemplateId\",\n        moduleId: PLATFORM.moduleName(\"./report-template-child-router\"),\n        name: \"report-template-child-router\",\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=../../../../../models/questionaries/itemToQualifyViewEngineHooks></require> <require from=./report-template-create-card.html></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${company.name} / ${'main.admin.pages.test_management.report_templates.title' & t}</h2> <p> ${'main.admin.pages.test_management.report_templates.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> <div class=\\\"col-md-4 col-12\\\"> <button class=\\\"btn btn-link\\\" click.delegate=clearFilters()> <i class=material-icons>clear</i> ${'commons.clear_filters' & t} </button> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-4 col-4 mb-2\\\" if.bind=item.isDefault> <span title=\\\"${item.name & t}\\\">${item.name & t}</span> </div> <div class=\\\"col-md-4 col-4 mb-2\\\" if.bind=!item.isDefault> <span title=${item.name}>${item.name}</span> </div> <div class=\\\"col-md-2 col-4 text-truncate minh-40 mb-2\\\"> <label class=d-block><small class=text-muted>${'main.admin.pages.test_management.report_templates.type_title' & t}</small></label> <span>${'main.admin.pages.questionaries.items_to_qualify.' + ItemToQualify[item.itemToQualify] & t}</span> </div> <div class=\\\"col-md-2 col-4 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'commons.created_on' & t}</small></label> <span title=\\\"${item.createdOn | dateFormat}\\\">${item.createdOn | dateFormat}</span> </div> <div class=\\\"col-md-2 col-4 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'commons.created_by' & t}</small></label> <span title=${item.createdBy}>${item.createdBy}</span> </div> <div class=\\\"col-md-2 col-12 pull-right vertical-align\\\"> <a href=# if.bind=!item.isDefault global-permission-show=\\\"can: TestManagementReportUpdate\\\" route-href=\\\"route: report-template-child-router; params.bind: {reportTemplateId:item.id}\\\" data-placement=top title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <a href=# if.bind=!item.isDefault global-permission-show=\\\"can: TestManagementReportDelete\\\" click.delegate=delete(item) title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </a> <a href=# if.bind=\\\"item.companyCompetences.length > 0\\\" global-permission-show=\\\"can: TestManagementReportView\\\" title=\\\"${'commands.view' & t}\\\" click.delegate=seeActivatedCompetences(item.companyCompetences)> <i class=material-icons>visibility</i> </a> <a href=# if.bind=!item.isDefault global-permission-show=\\\"can: TestManagementReportShare\\\" click.delegate=share(item) title.bind=\\\"'commands.share' & t\\\"> <i class=material-icons>share</i> </a> </div> </div> </li> </ul> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\"> <div class=col-12> <report-template-create-card></report-template-create-card> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.test_management.report_templates.duplicate_card.title' & t}</h5> <p>${'main.admin.pages.test_management.report_templates.duplicate_card.info' & t}</p> <div class=\\\"form-group mb-2\\\"> <label>${'main.admin.pages.test_management.report_templates.duplicate_card.search_label' & t}</label> <input type=text class=form-control input.delegate=onChangeDuplicateFilter() t=[placeholder]ux_datatable.search_placeholder value.bind=duplicateFilter> </div> <div class=\\\"form-group mb-2\\\"> <select class=form-control value.bind=selectedDuplicateId> <option value=\\\"\\\" t=forms.select_option>select an item</option> <option repeat.for=\\\"tpl of searchDuplicateTemplates\\\" model.bind=tpl.id> ${tpl.name} </option> </select> </div> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=duplicateReport() disabled.bind=\\\"isDuplicating || !selectedDuplicateId\\\"> ${'commands.create' & t} </button> </div> </div> </div> </div> </div> </div> </template>\";","import { AuthorizationService } from 'aurelia-permission';\n\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class TestManagementChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n    this.logger = LogManager.getLogger(\"TestManagementChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./test-management-home\"),\n        name: \"test-management-home\",\n        title: this.i18n.tr(\"main.admin.pages.test_management.title\"),\n        settings: {\n          isHome: true\n        }\n      },\n                              \n      {\n        route: \"report-templates\",\n        moduleId: PLATFORM.moduleName(\"./report-templates/report-template-list-child-router\"),\n        name: \"report-template-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.test_management.report_templates.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestManagementReportView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestManagementReportView]\n          },\n          info: this.i18n.tr(\"main.admin.pages.test_management.report_templates.info\")\n        }\n      },\n\n      {\n        route: \"questionary-groups\",\n        moduleId: PLATFORM.moduleName(\"./questionary-groups/questionary-group-list-child-router\"),\n        name: \"questionary-group-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.test_management.questionary_groups.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestManagementQuestionaryGroupView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestManagementQuestionaryGroupView]\n          },\n          info: this.i18n.tr(\"main.admin.pages.test_management.questionary_groups.info\")\n        }\n      },\n\n      {\n        route: \"disc-profiles\",\n        moduleId: PLATFORM.moduleName(\"./disc-profiles/disc-profile-edit\"),\n        name: \"disc-style-edit\",\n        title: this.i18n.tr(\"main.admin.pages.test_management.disc_profiles.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestManagementDiscProfileView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestManagementDiscProfileView]\n          },\n          info: this.i18n.tr(\"main.admin.pages.test_management.disc_profiles.info\")\n        }\n      },\n\n      {\n        route: \"disc-styles\",\n        moduleId: PLATFORM.moduleName(\"./disc-styles/disc-style-list\"),\n        name: \"disc-style-list\",\n        title: this.i18n.tr(\"main.admin.pages.test_management.disc_styles.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestManagementDiscStyleView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestManagementDiscStyleView]\n          },\n          info: this.i18n.tr(\"main.admin.pages.test_management.disc_styles.info\")\n        }\n      },\n\n      {\n        route: \"questionaries-configuration\",\n        moduleId: PLATFORM.moduleName(\"./questionaries-configuration/questionary-configuration-list\"),\n        name: \"questionary-configuration-list\",\n        title: this.i18n.tr(\"main.admin.pages.test_management.questionary_configuration.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestManagementQuestionaryConfigurationView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestManagementQuestionaryConfigurationView]\n          },\n          info: this.i18n.tr(\"main.admin.pages.test_management.questionary_configuration.info\")\n        }\n      },\n      \n      {\n        route: \"custom-company-questionaries\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-questionaries/custom-company-questionary-list-child-router\"),\n        name: \"custom-company-questionary-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.questionaries.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestManagementCustomCompanyQuestionaryView),\n        settings: {\n          isVideoInterViewTest: false,\n          permission: {\n            only: [PredefinedPermissions.TestManagementCustomCompanyQuestionaryView]\n          },\n          info: this.i18n.tr(\"main.admin.pages.test_management.custom_company_questionary_configuration.info\")\n          // icon: \"ticon-cuestionarios\"\n        }\n      },\n\n      {\n        route: \"custom-company-modular-questionaries\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-modular-questionaries/custom-company-modular-questionary-list-child-router\"),\n        name: \"custom-company-modular-questionary-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.modular-questionaries.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestManagementCustomCompanyModularQuestionaryView),\n        settings: {\n          // isVideoInterViewTest: false,\n          permission: {\n            only: [PredefinedPermissions.TestManagementCustomCompanyModularQuestionaryView]\n          },\n          info: this.i18n.tr(\"main.admin.pages.test_management.custom_company_modular_questionary_configuration.info\")\n        }\n      },\n      \n      {\n        route: \"custom-company-video-enterview\",\n        moduleId: PLATFORM.moduleName(\"./custom-company-questionaries/custom-company-questionary-list-child-router\"),\n        name: \"custom-company-questionary-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.questionaries_videointerview.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestManagementCustomCompanyQuestionaryView),\n        settings: {\n          isVideoInterViewTest: true,\n          permission: {\n            only: [PredefinedPermissions.TestManagementCustomCompanyQuestionaryView]\n          },\n          info: this.i18n.tr(\"main.admin.pages.test_management.custom_company_questionary_videointerview_configuration.info\")\n        }\n      },\n                  \n      // {\n      //   route: \"company-competences\",\n      //   moduleId: PLATFORM.moduleName(\"./company-competences/company-competence-list\"),\n      //   name: \"company-competences-list\",\n      //   title: this.i18n.tr(\"main.admin.pages.test_management.company_competences.title\"),\n      //   nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestManagementCompetencesView),\n      //   settings: {\n      //     permission: {\n      //       only: [PredefinedPermissions.TestManagementCompetencesView]\n      //     },\n      //     info: this.i18n.tr(\"main.admin.pages.test_management.company_competences.info\")\n      //   }\n      // },\n                              \n      {\n        route: \"report-templates-predictor\",\n        moduleId: PLATFORM.moduleName(\"./report-templates-predictor/report-template-predictor-list-child-router\"),\n        name: \"report-template-predictor-list-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.test_management.report_templates_predictor.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestManagementReportPredictorView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestManagementReportPredictorView]\n          },\n          info: this.i18n.tr(\"main.admin.pages.test_management.report_templates_predictor.info\")\n        }\n      },\n\n      {\n        route: \"default-colors-reports\",\n        moduleId: PLATFORM.moduleName(\"./default-colors-reports/default-colors-report-list-child-router\"),\n        name: \"default-colors-reports-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.test_management.default_colors_reports.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestManagementReportPredictorView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestManagementReportPredictorView]\n          },\n          info: this.i18n.tr(\"main.admin.pages.test_management.default_colors_reports.info\")\n        }\n      },\n\n\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","import { Router } from 'aurelia-router';\nimport { autoinject } from \"aurelia-framework\";\n\n@autoinject\nexport class TestManagementHome {\n\n  constructor(private router: Router) {\n\n  }\n\n\n}\n","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <section> <div class=\\\"row mb-4 text-center\\\"> <div class=col-12> <h1 class=display-4>${'main.admin.pages.test_management.title' & t}</h1> <p class=lead>${'main.admin.pages.test_management.info' & t}</p> </div> </div> </section> <section> <ul class=\\\"list-group list-group-flush\\\"> <li repeat.for=\\\"route of router.navigation\\\" if.bind=!route.settings.isHome class=\\\"list-group-item justify-content-between\\\"> <div class=\\\"row mb-3\\\"> <div class=col-10> <h3>${route.title}</h3> <p>${route.settings.info}</p> </div> <div class=\\\"col-2 text-right\\\"> <a class=\\\"btn btn-secondary\\\" href.bind=route.href>${'commands.config' & t}</a> </div> </div> </li> </ul> </section> </div> </div> </template> \";","import { autoinject, LogManager, observable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { DialogService, DialogCloseResult, DialogCancelableOperationResult } from \"aurelia-dialog\";\nimport { ThematicAssociationService } from \"../../../services/thematic-groups/thematic-association-service\";\nimport { ThematicAssociationModal } from \"./thematic-association-modal\";\nimport { Notification } from \"common/services/notification\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { QuestionAssociation } from \"models/thematic-groups/question-association\";\n\n@autoinject()\nexport class ThematicAssociationList {\n\n  private logger: Logger;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n  private thematicGroupId: number;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.thematicAssociationService.list(this.thematicGroupId, this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  constructor(\n    private router: Router,\n    private thematicAssociationService: ThematicAssociationService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"ThematicAssociationList\");\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async activate(params: any): Promise<void> {\n    this.logger.info(\"activate\");\n    if (!isNaN(params.thematicGroupId)) {\n      this.thematicGroupId = +params.thematicGroupId;\n      // return await this.databind();\n    }\n  }\n\n  private async bind(): Promise<any> {\n    if (this.thematicGroupId) {\n      return await this.refresh()\n        .then((response: UxDatatableResponse) => {\n          this.parameters.tableData = response.data;\n          this.parameters.totalRecords = response.totalRecords;\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    }\n  }\n\n  public async edit(item: QuestionAssociation): Promise<any> {\n    let orginialItem = JSON.parse(JSON.stringify(item));\n    return await this.dialogService.open({\n      viewModel: ThematicAssociationModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.thematicAssociationService.update(item)\n          .then((questionAssociation: QuestionAssociation) => {\n            let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === item.id);\n            this.parameters.tableData.splice(indexOfEditedModel, 1, questionAssociation);\n            // this.parameters.totalRecords--;\n            this.notification.success(\"notifications.item_edited\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n      else {\n        this.logger.debug(\"edition cancelled\");\n        // let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === item.id);\n        // this.parameters.tableData.splice(indexOfEditedModel, 1, orginialItem);\n        Object.assign(item, orginialItem);\n      }\n    });\n  }\n}\n","module.exports = \"<template> <div if.bind=!thematicGroupId> <h2>${'main.admin.pages.thematic_groups.thematic_associations.title' & t}</h2> <p> ${'main.admin.pages.thematic_groups.thematic_associations.notification_new_group' & t} </p> </div> <div if.bind=thematicGroupId> <div class=\\\"row mb-3\\\"> <div class=col-12> <h2>${'main.admin.pages.thematic_groups.thematic_associations.title' & t}</h2> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.admin.pages.thematic_groups.thematic_associations.editing_info' & t} </p> </div> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'main.admin.pages.thematic_groups.thematic_associations.question' & t}</small></label> </div> <div class=row> <div class=col-md-5> <p innerhtml.bind=\\\"item.formulation | sanitizeHTML\\\"></p> </div> <div class=col-md-6> <ul class=list-group-item> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'main.admin.pages.thematic_groups.thematic_associations.features' & t}</small></label> </div> <li class=row repeat.for=\\\"response of item.responseOptions\\\"> <div class=\\\"col-md-5 minh-60\\\">${response.responseOption}</div> <div class=col-md-5>${response.thematicVariable}</div> <div class=col-md-2>${response.weight}</div> </li> </ul> </div> <div class=col-md-1> <a href=# global-permission-show=\\\"can: QuestionaryUpdate\\\" click.delegate=edit(item) title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> </div> </div> </li> </ul> </div> </div> </div> </template> \";","import { ResponseOption } from 'models/questions/response-option';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ThematicVariablesService } from \"../../../services/thematic-groups/thematic-variables-service\";\nimport { QuestionAssociation } from \"models/thematic-groups/question-association\";\nimport { ThematicVariable } from \"models/thematic-groups/thematic-variable\";\nimport { Notification } from \"common/services/notification\";\n\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult, Rule } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\n\n@autoinject()\nexport class ThematicAssociationModal {\n\n  private logger: Logger;\n  private saveAndContinue: boolean = false;\n  private model: QuestionAssociation;\n  private thematicVariables: ThematicVariable[] = [];\n\n  private validationController: ValidationController;\n  private responseOptionRules: any;\n\n  constructor(\n    private dialogController: DialogController,\n    private thematicVariableService: ThematicVariablesService,\n    private validationControllerFactory: ValidationControllerFactory,\n    private notification: Notification,\n  ) {\n\n    this.logger = LogManager.getLogger(\"ThematicAssociationModal\");\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n  }\n\n  private async activate(model: QuestionAssociation): Promise<any> {\n    // this.model = Object.assign({}, model);\n    this.model = model;\n    return await this.thematicVariableService.getAll(model.thematicGroupId)\n      .then((thematicVariables: ThematicVariable[]) => {\n        this.thematicVariables = thematicVariables;\n        this.bindValidationRules();\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private bindValidationRules() {\n    this.responseOptionRules = ValidationRules\n      // .ensure('thematicVariableId')\n      .ensure('weight').matches(/^[0-9][0-9]?$|^100$/)\n      .rules; // get a ruleset we can apply to objects later\n\n    this.model.responseOptions.forEach(response => {\n      this.validationController.addObject(response, this.responseOptionRules);\n    });\n  }\n\n  private unbindValidationRules() {\n    this.model.responseOptions.forEach(response => {\n      this.validationController.removeObject(response);\n    });\n  }\n\n  private async submit(): Promise<void> {\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  private async save(): Promise<any> {\n    this.unbindValidationRules();\n    return await this.dialogController.ok();\n  }\n\n  // private deactivate(){\n  //   this.model = null;\n  // }\n}\n\n// ValidationRules.customRule(\n//   'numberProperty',\n//   (value, obj) => value === null || value === undefined || !isNaN(value),\n//   \"errorMessages.matches\"\n// );\n// ValidationRules.customRule(\n//   'integerRange',\n//   (value, obj, min, max) => value === null || value === undefined\n//     || Number.isInteger(value) && value >= min && value <= max,\n//   `\\${$displayName} must be an integer between \\${$config.min} and \\${$config.max}.`,\n//   (min, max) => ({ min, max })\n// );\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h3>${'main.admin.pages.thematic_groups.thematic_associations.title' & t}</h3> <form> <div class=\\\"row mb-3\\\"> <div class=col-12> <div innerhtml.bind=\\\"model.formulation | sanitizeHTML\\\"></div> </div> </div> <div class=\\\"row mb-1\\\" repeat.for=\\\"response of model.responseOptions\\\"> <div class=\\\"col-md-5 col-12\\\"> <div class=form-group> ${response.responseOption} </div> </div> <div class=\\\"col-md-5 col-12\\\"> <div class=form-group> <label>${'main.admin.pages.thematic_groups.thematic_associations.thematic_variable' & t}</label> <select class=form-control value.bind=\\\"response.thematicVariableId & validate\\\"> <option value=\\\"\\\" selected=selected t=forms.select_option>select an item</option> <option repeat.for=\\\"option of thematicVariables\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> <div class=\\\"col-md-2 col-12\\\"> <div class=form-group> <label>${'main.admin.pages.thematic_groups.thematic_associations.weight' & t}</label> <input type=number min=0 max=100 class=form-control id=response.weight t=[placeholder]main.admin.pages.thematic_groups.thematic_associations.weight value.bind=\\\"response.weight & validate\\\"> </div> </div> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","\nimport { autoinject } from \"aurelia-dependency-injection\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\nimport { I18N } from \"aurelia-i18n\";\nimport { LogManager } from \"aurelia-framework\";\nimport PredefinedPermissions from 'config/predefined-permissions';\n\n@autoinject()\nexport class ThematicGroupChildRouter {\n  \n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"ThematicGroupChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    config.map([\n      {\n        route: \"\",\n        name: \"thematic-group-edit\",\n        moduleId: PLATFORM.moduleName(\"./thematic-group-edit\"),\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.thematic_groups.thematic_group\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.QuestionaryView]\n          }\n        }\n      },\n\n      {\n        route: \"thematic-variables\",\n        name: \"thematic-variable-list\",\n        moduleId: PLATFORM.moduleName(\"./thematic-variables/thematic-variable-list\"),\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.thematic_groups.thematic_variables.title\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.QuestionaryView]\n          }\n        }\n      },\n      \n      {\n        route: \"thematic-associations\",\n        name: \"thematic-association-list\",\n        moduleId: PLATFORM.moduleName(\"./thematic-associations/thematic-association-list\"),\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.thematic_groups.thematic_associations.title\"),\n        settings: {\n          Permission: {\n            only: [PredefinedPermissions.QuestionaryView]\n          }\n        }\n      }\n    ]);\n\n    this.router = router;\n  }\n\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","\nimport { autoinject, LogManager, observable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\n\nimport {\n  ValidationController,\n  ValidationControllerFactory,\n  ValidationRules,\n  ControllerValidateResult\n} from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { ThematicGroupService } from \"../../services/thematic-groups/thematic-group-service\";\nimport { ThematicGroup } from \"models/thematic-groups/thematic-group\";\nimport { QuestionService } from \"../../services/questionaries/question-service\";\nimport { Question } from \"models/questions/question\";\n\ninterface ItemSetMap {\n  [id: number]: boolean;\n}\n\n@autoinject()\nexport class ThematicGroupEdit {\n\n  private logger: Logger;\n  private validationController: ValidationController;\n\n  private model: ThematicGroup = new ThematicGroup();\n\n  private questions: Question[];\n  private leftQuestions: Question[] = [];\n  private rightQuestions: Question[] = [];\n\n  @observable\n  private leftSearch: string = \"\";\n\n  @observable\n  private rightSearch: string = \"\";\n\n  private questionsToInclude: ItemSetMap = {};\n  private questionsToExclude: ItemSetMap = {};\n\n  private selectAllLeft: boolean = false;\n  private selectAllRight: boolean = false;\n\n  constructor(\n    private thematicGroupService: ThematicGroupService,\n    private questionService: QuestionService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private router: Router) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ThematicGroupEdit\");\n\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.thematic_groups.name\").required()\n      .on(this.model);\n  }\n\n  private async activate(params: any): Promise<void> {\n    this.logger.debug(\"activated with params: \", params);\n\n    try {\n\n      if (!isNaN(params.questionaryId)) {\n        this.questions = await this.questionService.getAll(+params.questionaryId);\n\n        if (!isNaN(params.thematicGroupId)) {\n\n          this.model = await this.thematicGroupService.getById(+params.thematicGroupId);\n          this.configureValidationRules();\n        }\n        else {\n          this.logger.debug(\"creating thematic group\");\n          this.model.questionaryId = +params.questionaryId;\n        }\n        this.chargeQuestionList();\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public chargeQuestionList(): void {\n    // if (this.model.questions.length > 0) {\n    this.rightQuestions = this.questions.filter(e =>\n      this.model.questions.find(x => x === e.id)\n    );\n\n    this.leftQuestions = this.questions.filter(e =>\n      !(this.model.questions.find(x => x === e.id))\n    );\n\n  }\n\n  public filterLeftQuestions() {\n    this.logger.debug(\"filterLeftQuestions this.leftSearch:\", this.leftSearch);\n    this.leftQuestions = this.questions.filter(e =>\n      !(this.model.questions.find(x => x === e.id))\n      &&\n      (\n        (e.formulation && e.formulation.toLowerCase().indexOf(this.leftSearch.toLowerCase()) !== -1)\n        ||\n        (e.code && e.code.toLowerCase().indexOf(this.leftSearch.toLowerCase()) !== -1)\n      )\n    );\n  }\n\n  public filterRightQuestions() {\n    this.logger.debug(\"filterRightQuestions this.rightSearch:\", this.rightSearch);\n    this.rightQuestions = this.questions.filter(e =>\n      this.model.questions.find(x => x === e.id)\n      &&\n      (\n        (e.formulation && e.formulation.toLowerCase().indexOf(this.rightSearch.toLowerCase()) !== -1)\n        ||\n        (e.code && e.code.toLowerCase().indexOf(this.rightSearch.toLowerCase()) !== -1)\n      )\n    );\n  }\n\n  public includeSelectedQuestions(): void {\n    this.leftQuestions\n      .filter(x => this.questionsToInclude[x.id])\n      .forEach((question, index) => {\n        this.logger.debug(\"includeSelectedQuestions question.id:\", question.id);\n        if (this.model.questions.findIndex(x => x === question.id) < 0) {\n          this.model.questions.push(question.id);\n        }\n        this.rightQuestions.push(question);\n        this.questionsToInclude[question.id] = false;\n        this.leftQuestions.splice(this.leftQuestions.findIndex(x => x.id === question.id), 1);\n      });\n\n    this.logger.debug(\"includeSelectedQuestions this.leftQuestions:\", this.leftQuestions);\n  }\n\n  public excludeSelectedQuestions(): void {\n    this.rightQuestions\n      .filter(x => this.questionsToExclude[x.id])\n      .forEach((question, index) => {\n        this.model.questions.splice(this.model.questions.findIndex(x => x === question.id), 1);\n        this.leftQuestions.push(question);\n        this.questionsToExclude[question.id] = false;\n        this.rightQuestions.splice(this.rightQuestions.findIndex(x => x.id === question.id), 1);\n      });\n  }\n\n  public selectLeftQuestion(selectedIndex: number): void {\n    this.logger.debug(\"selectedLeftQuestions index:\", selectedIndex);\n    if (selectedIndex !== -1) {\n      let questionId = this.leftQuestions[selectedIndex].id;\n      this.questionsToInclude[questionId] = this.questionsToInclude[questionId] === undefined ? true : !this.questionsToInclude[questionId];\n      // this.logger.debug(\"selectedLeftQuestions this.questionsToInclude[questionId]:\", this.questionsToInclude[questionId]);\n    } else {\n      this.leftQuestions.forEach((question, index) => {\n        this.questionsToInclude[question.id] = this.selectAllLeft;\n      });\n    }\n\n  }\n\n  public selectRightQuestion(selectedIndex: number): void {\n    this.logger.debug(\"selectedRightQuestions index:\", selectedIndex);\n    if (selectedIndex !== -1) {\n      let questionId = this.rightQuestions[selectedIndex].id;\n      this.questionsToExclude[questionId] = this.questionsToExclude[questionId] === undefined ? true : !this.questionsToExclude[questionId];\n      // this.logger.debug(\"selectedLeftQuestions this.questionsToExclude[questionId]:\", this.questionsToExclude[questionId]);\n    } else {\n      this.rightQuestions.forEach((question, index) => {\n        this.questionsToExclude[question.id] = this.selectAllRight;\n      });\n    }\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save(keepEditing);\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.thematicGroupService.client.isRequesting;\n  }\n\n  public async save(keepEditing: boolean): Promise<any> {\n    this.logger.info(\"save\");\n    if (!this.model.id) {\n      return await this.thematicGroupService.create(this.model)\n        .then(async (response: ThematicGroup) => {\n          this.model.id = response.id;\n\n          this.notification.success(\"notifications.item_added\");\n\n          if (!keepEditing) {\n            return await this.router.navigateToRoute(\"thematic-groups\");\n          } else {\n            return await this.router.navigateToRoute(\"thematic-group-child-router\", { thematicGroupId: this.model.id });\n          }\n\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    } else {\n      return await this.thematicGroupService.update(this.model)\n        .then(async (response: ThematicGroup) => {\n          // this.model = Object.assign(this.model, response);\n          this.notification.success(\"notifications.item_edited\");\n\n          if (!keepEditing) {\n            return await this.router.navigateToRoute(\"thematic-groups\");\n          }\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    }\n  }\n\n  // public cancel(): void {\n  //   this.logger.info(\"cancel\", this.router);\n  //   this.router.parent.navigate(`thematic-group-questionary/${this.model.questionaryId}/thematic-groups`);\n  // }\n\n  // public printName(): void {\n  //   this.logger.debug(\"mode.name\", this.model.name);\n  //   if (!this.model.name) {\n  //     this.logger.debug(\"El nombre está vacío\");\n  //   } else {\n  //     this.logger.debug(\"El nombre es valido\");\n  //   }\n  // }\n\n}\n","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2 if.bind=!model.id>${'main.admin.pages.thematic_groups.create' & t}</h2> <h2 if.bind=model.id>${model.name}</h2> <p> ${'main.admin.pages.thematic_groups.edit_info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-12> <button type=button click.delegate=submit(true) class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: QuestionaryCreate\\\" t=commands.save_and_continue disabled.bind=!canSave>Save and continue</button> <button type=button click.delegate=submit(false) class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: QuestionaryCreate\\\" t=commands.save disabled.bind=!canSave>Save</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: thematic-groups; params.bind: {questionaryId:model.questionaryId}\\\" t=commands.cancel>Cancel</a> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <label>${'main.admin.pages.thematic_groups.name_description' & t}</label> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <input type=text value.bind=\\\"model.name & validate\\\" class=form-control id=name t=[placeholder]main.admin.pages.thematic_groups.name disabled.bind=model.isDiscQuestionary> </div> <div class=form-group> <input type=text value.bind=\\\"model.description & validate\\\" class=form-control id=name t=[placeholder]main.admin.pages.thematic_groups.description> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-5\\\"> <div class=card> <div class=\\\"row p-3\\\"> <div class=\\\"col-12 d-flex\\\"> <div class=\\\"custom-control custom-checkbox\\\"> <input type=checkbox class=custom-control-input id=selectAllLeft checked.bind=selectAllLeft change.delegate=selectLeftQuestion(-1)> <label class=custom-control-label for=selectAllLeft>&nbsp;</label> </div> <input type=text name=searchLeftItems class=form-control t=[placeholder]ux_datatable.search_placeholder value.bind=leftSearch keyup.delegate=\\\"filterLeftQuestions() & debounce:100\\\"> </div> </div> <ul class=\\\"list-group list-group-flush\\\"> <li repeat.for=\\\"item of leftQuestions\\\" class=\\\"list-group-item ${questionsToInclude[item.id] ? 'active' : ''}\\\" click.delegate=selectLeftQuestion($index)> <div innerhtml.bind=\\\"item.formulation | sanitizeHTML\\\"></div> </li> </ul> </div> </div> <div class=\\\"col-12 col-md-1 list-arrows text-center\\\"> <div> <button type=button class=\\\"btn btn-outline-secondary btn-round btn-sm move-right\\\" click.delegate=includeSelectedQuestions()> <i class=material-icons> navigate_next </i> </button> </div> <div> <button type=button class=\\\"btn btn-outline-secondary btn-round btn-sm move-left\\\" click.delegate=excludeSelectedQuestions()> <i class=material-icons> navigate_before </i> </button> </div> </div> <div class=\\\"col-12 col-md-5\\\"> <div class=card> <div class=\\\"row p-3\\\"> <div class=\\\"col-12 d-flex\\\"> <div class=\\\"custom-control custom-checkbox\\\"> <input type=checkbox class=custom-control-input id=selectAllRight checked.bind=selectAllRight change.delegate=selectRightQuestion(-1)> <label class=custom-control-label for=selectAllRight>&nbsp;</label> </div> <input type=text name=searchLeftItems class=form-control t=[placeholder]ux_datatable.search_placeholder value.bind=rightSearch keyup.delegate=\\\"filterRightQuestions() & debounce:100\\\"> </div> </div> <ul class=\\\"list-group list-group-flush\\\"> <li repeat.for=\\\"item of rightQuestions\\\" class=\\\"list-group-item ${questionsToExclude[item.id] ? 'active' : ''}\\\" click.delegate=selectRightQuestion($index)> <div innerhtml.bind=\\\"item.formulation | sanitizeHTML\\\"></div> </li> </ul> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <button type=button click.delegate=submit(true) class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: QuestionaryCreate\\\" t=commands.save_and_continue disabled.bind=!canSave>Save and continue</button> <button type=button click.delegate=submit(false) class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: QuestionaryCreate\\\" t=commands.save disabled.bind=!canSave>Save</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: thematic-groups; params.bind: {questionaryId:model.questionaryId}\\\" t=commands.cancel>Cancel</a> </div> </div> </form> </div> </template> \";","\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { bindable } from \"aurelia-framework\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogService, DialogCloseResult, DialogCancelableOperationResult } from \"aurelia-dialog\";\nimport { Notification } from \"common/services/notification\";\nimport { QuestionaryService } from '../../services/questionaries/questionary-service';\nimport { ThematicGroupService } from \"../../services/thematic-groups/thematic-group-service\";\nimport { DeleteConfirmation } from \"../../../components/delete-confirmation\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Questionary } from \"models/questionaries/questionary\";\n\n@autoinject()\nexport class ThematicGroupList {\n\n  @bindable\n  private questionaryId: number;\n\n  @bindable\n  private routeName: string;\n\n  @bindable\n  private isAttached: boolean = false;\n\n  private logger: Logger;\n  private questionary: Questionary;\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.thematicGroupService.list(this.questionaryId, this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  constructor(\n    private questionaryService: QuestionaryService,\n    private thematicGroupService: ThematicGroupService,\n    private dialogService: DialogService,\n    private router: Router,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"ThematicGroupList\");\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<void> {\n    this.logger.info(\"activate\");\n    if (!isNaN(params.questionaryId)) {\n      this.questionaryId = +params.questionaryId;\n    }\n  }\n\n  private async bind(): Promise<any> {\n    try {\n      this.questionary = await this.questionaryService.getById(this.questionaryId);\n      return await this.databind();\n    }\n    catch (error) {\n      return this.notification.error(error);\n    }\n  }\n\n  public async databind(): Promise<void> {\n    this.logger.info(\"databind\");\n    return await this.thematicGroupService.list(this.questionaryId, this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async select(thematicGroupId: number): Promise<any> {\n    this.logger.debug(\"navigating to thematicGroupId:\", thematicGroupId);\n    return await this.router.navigateToRoute(this.routeName, { thematicGroupId: thematicGroupId });\n  }\n\n  public async delete(id: number, name: string): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.thematicGroupService.delete(id)\n          .then(() => {\n            let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === id);\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"main.admin.pages.thematic_groups.messages.thematic_group_deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class ThematicGroupListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"ThematicGroupListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./thematic-group-list\"),\n        name: \"thematic-groups\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.admin.pages.thematic_groups.title\"),\n      },\n\n      {\n        route: \"thematic-group/:thematicGroupId\",\n        moduleId: PLATFORM.moduleName(\"./thematic-group-child-router\"),\n        name: \"thematic-group-child-router\",\n        // nav: false,\n        // title: this.i18n.tr(\"main.admin.pages.thematic_groups.thematic_group\"),\n      },\n      \n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <h2>${questionary.name} / ${'main.admin.pages.thematic_groups.title' & t}</h2> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.admin.pages.thematic_groups.subtitle' & t} </p> </div> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=col-3> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-4 scope=col t=main.admin.pages.thematic_groups.name>Name</th> <th class=col-md-6 scope=col t=main.admin.pages.thematic_groups.description>Description</th> <th class=col-md-2 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-4 text-truncate\\\" if.bind=!isAttached><span title=${item.name}>${item.name}</span> </td> <td class=col-md-4 if.bind=isAttached> <a href=# click.delegate=select(item.id) title=${item.name}> ${item.name} </a> </td> <td class=col-md-6 style=height:100px> <p title=${item.description}> ${item.description} </p> </td> <td class=\\\"col-md-2 d-flex\\\"> <a if.bind=!isAttached class=\\\"btn btn-link\\\" global-permission-show=\\\"can: QuestionaryUpdate\\\" route-href=\\\"route: thematic-group-child-router; params.bind: {thematicGroupId:item.id}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <button if.bind=!isAttached class=\\\"btn btn-link\\\" if.one-time=!item.isDiscQuestionary global-permission-show=\\\"can: QuestionaryUpdate\\\" click.delegate=\\\"delete(item.id, item.name)\\\" title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> <div class=row if.bind=!isAttached global-permission-show=\\\"can: QuestionaryCreate\\\"> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=main.admin.pages.thematic_groups.create_card.title>title</h5> <p class=card-text t=[html]main.admin.pages.thematic_groups.create_card.info>Lorem</p> <a class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: ThematicGroupCreate\\\" route-href=\\\"route: thematic-group-child-router; params.bind: {thematicGroupId:'create'}\\\" t=commands.create>Create</a> </div> </div> </div> </div> </div> </div> </template> \";","export class ThematicGroupQuestionaries {\n\n}\n","module.exports = \"<template> <require from=../questionaries/questionary-kanban></require> <h2> ${'main.admin.pages.thematic_groups.title' & t} </h2> <p> ${'main.admin.pages.thematic_groups.questionary_select' & t} </p> <hr/> <questionary-kanban route-name=thematic-group-list-child-router> </questionary-kanban> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class ThematicGroupQuestionaryListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"ThematicGroupQuestionaryListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./thematic-group-questionaries\"),\n        name: \"select-questionary\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.admin.pages.thematic_groups.questionary_select_title\"),\n      },\n\n      {\n        route: \"questionary/:questionaryId\",\n        moduleId: PLATFORM.moduleName(\"./thematic-group-list-child-router\"),\n        name: \"thematic-group-list-child-router\",\n        nav: false,\n        title: this.i18n.tr(\"main.admin.pages.thematic_groups.title\"),\n      },\n      \n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","import { autoinject, LogManager, bindable } from \"aurelia-framework\";\nimport { Router } from \"aurelia-router\";\nimport { DialogService, DialogCloseResult, DialogCancelableOperationResult } from \"aurelia-dialog\";\nimport { ThematicVariableModal } from \"./thematic-variable-modal\";\nimport { ThematicVariablesService } from \"../../../services/thematic-groups/thematic-variables-service\";\nimport { ThematicGroupService } from \"../../../services/thematic-groups/thematic-group-service\";\nimport { ThematicGroup } from \"models/thematic-groups/thematic-group\";\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { ThematicVariable } from \"models/thematic-groups/thematic-variable\";\nimport { DeleteConfirmation } from \"../../../../components/delete-confirmation\";\nimport {\n  UxDatatableParameters,\n  UxDatatableCustomAttribute,\n  UxDatatableResponse\n} from \"common/resources/elements/ux/datatable/ux-datatable\";\n\n@autoinject()\nexport class ThematicVariableList {\n\n  private logger: Logger;\n\n  @bindable\n  private routeName: string;\n\n  @bindable\n  private thematicGroupId: number;\n\n  @bindable\n  private isAttached: boolean = false;\n\n  private thematicGroup: ThematicGroup = new ThematicGroup();\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  constructor(\n    private dialogService: DialogService,\n    private thematicVariablesService: ThematicVariablesService,\n    private thematicGroupService: ThematicGroupService,\n    private router: Router,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"ThematicVariableList\");\n  }\n\n  private async activate(params: any): Promise<void> {\n    if (!isNaN(params.thematicGroupId)) {\n      this.thematicGroupId = +params.thematicGroupId;\n    }\n  }\n\n  private async bind(): Promise<any> {\n    return await this.databind();\n  }\n\n  private async databind(): Promise<any> {\n    if (this.thematicGroupId) {\n      try {\n        this.thematicGroup = await this.thematicGroupService.getById(this.thematicGroupId);\n        let response = await this.thematicVariablesService.list(this.thematicGroupId, this.parameters);\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n  private refresh = (): Promise<UxDatatableResponse> => {\n    this.logger.info(\"refreshing\");\n    return this.thematicVariablesService.list(this.thematicGroupId, this.parameters);\n  }\n\n  private async edit(item: ThematicVariable): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: ThematicVariableModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        // this.databind();\n        return await this.thematicVariablesService.update(item)\n          .then(async () => {\n            this.notification.success(\"notifications.item_edited\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private async create(): Promise<void> {\n    let item: ThematicVariable = new ThematicVariable();\n    item.thematicGroupId = this.thematicGroupId;\n\n    return await this.dialogService.open({\n      viewModel: ThematicVariableModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.thematicVariablesService.create(item)\n          .then(async (model: ThematicVariable) => {\n            item.id = model.id;\n            this.parameters.tableData.unshift(item);\n            this.parameters.totalRecords++;\n            this.notification.success(\"notifications.item_added\");\n            // return this.databind();\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private async select(thematicVariableId: number): Promise<any> {\n    // this.logger.debug(\"navigating to thematicVariableId:\", thematicVariableId);\n    return await this.router.navigateToRoute(this.routeName, { thematicVariableId: thematicVariableId });\n  }\n\n  private async delete(id: number, name: string): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.thematicVariablesService.delete(id)\n          .then(() => {\n            let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === id);\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"notifications.item_deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n}\n","module.exports = \"<template> <div if.bind=!thematicGroupId> <h2>${'main.admin.pages.thematic_groups.thematic_variables.title' & t}</h2> <p> ${'main.admin.pages.thematic_groups.thematic_variables.notification_new_group' & t} </p> </div> <div if.bind=thematicGroupId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <div class=\\\"row mb-3\\\"> <div class=col-12> <h2>${'main.admin.pages.thematic_groups.thematic_variables.title' & t}</h2> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.admin.pages.thematic_groups.thematic_variables.editing_info' & t} </p> </div> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-4 scope=col t=main.admin.pages.thematic_groups.thematic_variables.name>Variable name</th> <th class=col-md-6 scope=col t=main.admin.pages.thematic_groups.thematic_variables.description> Description</th> <th class=col-md-2 scope=col>&nbsp;</th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=col-md-4 if.bind=!isAttached>${item.name}</td> <td class=col-md-4 if.bind=isAttached> <a href=# click.delegate=select(item.id)> ${item.name} </a> </td> <td class=col-md-6> <p>${item.description}</p> </td> <td class=\\\"col-md-2 d-flex\\\"> <div if.bind=!thematicGroup.isDiscQuestionary> <button if.bind=!isAttached class=\\\"btn btn-link\\\" global-permission-show=\\\"can: QuestionaryUpdate\\\" click.delegate=edit(item) title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </button> <button if.bind=!isAttached class=\\\"btn btn-link\\\" if.bind=!item.isDiscQuestionary global-permission-show=\\\"can: QuestionaryUpdate\\\" click.delegate=\\\"delete(item.id, item.name)\\\" title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar> <div class=row if.bind=\\\"!thematicGroup.isDiscQuestionary && !isAttached\\\" global-permission-show=\\\"can: ThematicVariableUpdate\\\"> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=commands.create>title</h5> <p class=card-text t=[html]main.admin.pages.thematic_groups.thematic_variables.create_info></p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create() t=commands.create>Create</button> </div> </div> </div> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager, NewInstance } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { ThematicVariable } from \"models/thematic-groups/thematic-variable\";\nimport { ThematicVariablesService } from \"../../../services/thematic-groups/thematic-variables-service\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\n\n@autoinject()\nexport class ThematicVariableModal {\n\n  private model: ThematicVariable = new ThematicVariable();\n  private validationController: ValidationController;\n  private logger: Logger;\n\n  constructor(\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ThematicVariableModal\");\n\n  }\n\n  private async activate(model: ThematicVariable): Promise<void> {\n\n    this.logger.debug(\"Activated with model:\", model);\n    this.model = model;\n    this.configureValidationRules();\n  }\n\n  private configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.thematic_groups.thematic_variables.name\").required()\n      .on(this.model);\n  }\n\n  private async submit(): Promise<void> {\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  private async save(): Promise<any> {\n    return await this.dialogController.ok();\n  }\n\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'main.admin.pages.thematic_groups.variables' & t}</h2> <form> <div class=form-group> <input attach-focus=true type=text value.bind=\\\"model.name & validate\\\" class=form-control id=name t=[placeholder]main.admin.pages.thematic_groups.thematic_variables.name> </div> <div class=form-group> <input type=text value.bind=model.description class=form-control id=description t=[placeholder]main.admin.pages.thematic_groups.thematic_variables.description> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel() t=commands.cancel>Cancel</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class UserApiApplicationChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"ThematicGroupChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./user-api-application-edit\"),\n        name: \"user-api-application-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.user_api_applications.user_api_application\"),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.UserUpdate]\n          }\n        }\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-10> <router-view></router-view> </div> </div> </template> \";","\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { RouteConfig } from \"aurelia-router\";\nimport { Notification } from \"common/services/notification\";\nimport { UserService } from \"../../services/users/user-service\";\nimport { User } from \"models/security/user\";\nimport { UserApiApplication } from \"models/security/userApiApplication\";\nimport { UserApiApplicationService } from \"../../services/users/user-api-application-service\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { PasswordValidationModal } from \"../users/password-validation-modal\";\n\n@autoinject()\nexport class UserApiApplicationEdit {\n\n  private logger: Logger;\n\n  private companyId: number;\n\n  private user: User;\n\n  private model: UserApiApplication = new UserApiApplication();\n\n  constructor(\n    private notification: Notification,\n    private userService: UserService,\n    private userApiApplicationService: UserApiApplicationService,\n    private dialogService: DialogService, ) {\n\n    this.logger = LogManager.getLogger(\"UserApiApplicationEdit\");\n\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<void> {\n\n    // this.logger.debug(\"Activated id:\", params.userId);\n    try {\n      if (!isNaN(params.companyId)) {\n        this.companyId = +params.companyId;\n        if (!isNaN(params.companyDetailId)) {\n          this.companyId = +params.companyDetailId;\n        }\n        this.userApiApplicationService.client.currentCompanyId = this.companyId;\n        if (!isNaN(params.userId)) {\n          this.user = await this.userService.getById(+params.userId);\n          this.model = await this.userApiApplicationService.getById(+params.userId);\n        } else {\n          this.logger.debug(\"creating user api application\");\n        }\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async validateUser(): Promise<boolean> {\n    return await this.dialogService.open({\n      viewModel: PasswordValidationModal\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        if (response.output) {\n          let result: boolean = <boolean>response.output;\n          this.logger.debug(\"validate ok: \", result);\n          return result;\n        } else {\n          return false;\n        }\n      } else {\n        return false;\n      }\n    });\n  }\n\n  get canSave() {\n    return !this.userApiApplicationService.client.isRequesting;\n  }\n\n  private async generate(): Promise<any> {\n    this.logger.debug(\"generating\");\n    return await this.validateUser()\n      .then(async (result: boolean) => {\n        if (result) {\n          return await this.userApiApplicationService.generate(this.user.id);\n        }\n        else {\n          return;\n        }\n      })\n      .then(async (model: UserApiApplication) => {\n        if (model) {\n          this.model = model;\n          this.notification.success(\"main.admin.pages.user_api_applications.notifications.generation_success\");\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../models/security/userStateViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${user.fullName} / ${'main.admin.pages.user_api_applications.user_api_application' & t}</h2> <div if.bind=!model.id> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.admin.pages.user_api_applications.generate_info' & t} </p> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: UserApiTokenGeneration\\\" click.delegate=generate()>${'main.admin.pages.user_api_applications.buttons.generate' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: user-api-application-users;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> <div if.bind=model.id> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <label> <strong>${'main.admin.pages.user_api_applications.client_id' & t}</strong> </label> <p>${model.clientId}</p> </div> <div class=form-group if.bind=model.clientSecret> <label> <strong>${'main.admin.pages.user_api_applications.client_secret' & t}</strong> </label> <div class=\\\"alert alert-primary\\\" role=alert> ${'main.admin.pages.user_api_applications.client_secret_warning' & t} </div> <textarea class=form-control value.bind=model.clientSecret rows=3></textarea> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-6 col-md-3\\\"> <label> ${model.createdOn | dateFormat} <br/> <small>${'commons.created_on' & t}</small> </label> </div> <div class=\\\"col-6 col-md-3\\\" if.bind=model.updatedOn> <label> ${model.updatedOn | dateFormat} <br/> <small>${'commons.updated_on' & t}</small> </label> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.admin.pages.user_api_applications.regenerate_info' & t} </p> <div class=\\\"alert alert-info\\\" role=alert> ${'main.admin.pages.user_api_applications.regenerate_warning' & t} </div> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: UserApiTokenGeneration\\\" click.delegate=generate() disabled.bind=!canSave>${'main.admin.pages.user_api_applications.buttons.regenerate' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: user-api-application-users;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </div> </div> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class UserApiApplicationListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N) {\n    this.logger = LogManager.getLogger(\"UserApiApplicationListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./user-list\"),\n        name: \"user-api-application-users\",\n      },\n\n      {\n        route: \"user-api-application/:userId\",\n        moduleId: PLATFORM.moduleName(\"./user-api-application-child-router\"),\n        name: \"user-api-application-child-router\",\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","import { EventAggregator } from 'aurelia-event-aggregator';\nimport { Disposable } from 'aurelia-binding';\nimport { autoinject, LogManager } from \"aurelia-framework\";\n\nimport { Logger } from \"aurelia-logging\";\nimport { RouteConfig } from \"aurelia-router\";\nimport { Notification } from \"common/services/notification\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { UserService } from \"../../services/users/user-service\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from 'common/store/store-service';\nimport { Company } from 'models/companies/company';\n\n@autoinject()\nexport class UserApiApplicationUserList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n  private company: Company;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private state: State;\n  \n  private isLoaded: boolean = false;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.userService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  constructor(\n    private store: StoreService,\n    private ea: EventAggregator,\n    private userService: UserService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"UserApiApplicationUserList\");\n\n    this.state = this.store.state;\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n\n      this.companyId = +this.params.companyId;\n\n      if (this.params.companyDetailId && this.params.companyDetailId === 'create') {\n        this.companyId = null;\n      }\n      else if (!isNaN(this.params.companyDetailId)) {\n        this.companyId = +this.params.companyDetailId;\n      }\n\n      if (this.companyId) {\n\n        this.userService.client.currentCompanyId = this.companyId;\n\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n\n        this.isLoaded;\n\n        return await this.databind();\n      }\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../models/security/userStateViewEngineHooks></require> <require from=../../../../models/security/roleViewEngineHooks></require> <div if.bind=!companyId> <h2>${'main.admin.pages.user_api_applications.title' & t}</h2> <p> ${'main.admin.pages.user_api_applications.notification_new_company' & t} </p> </div> <div if.bind=companyId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${company.name} / ${'main.admin.pages.user_api_applications.title' & t}</h2> <p> ${'main.admin.pages.user_api_applications.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-3 scope=col>${'main.admin.pages.users.full_name' & t}</th> <th class=col-md-3 scope=col>${'main.admin.pages.users.user_name' & t}</th> <th class=col-md-3 scope=col>${'main.admin.pages.users.user_state.title' & t}</th> <th class=col-md-3 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=col-md-3><span title=${item.fullName}>${item.fullName}</span></td> <td class=col-md-3><span title=${item.userName}>${item.userName}</span></td> <td class=col-md-3>${'main.admin.pages.users.user_state.'+ UserState[item.userState] & t}</td> <td class=col-md-3> <a class=\\\"btn btn-link\\\" route-href=\\\"route: user-api-application-child-router; params.bind: {userId:item.id}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> </td> </tr> </tbody> </table> </div> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\n\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\n\nimport { Notification } from \"common/services/notification\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { PasswordValidation } from \"models/security/password-validation\";\nimport { UserService } from \"../../services/users/user-service\";\n\n@autoinject()\nexport class PasswordValidationModal {\n\n  private logger: Logger;\n  private model: PasswordValidation = new PasswordValidation();\n  private validationController: ValidationController;\n\n  constructor(\n    private dialogController: DialogController,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private userService: UserService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"PasswordValidationModal\");\n    this.configureValidationRules();\n  }\n\n  public activate(): void {\n    this.logger.debug(\"activate\");\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"password\").displayName(\"main.admin.pages.users.user_validation.password\").required()\n      .on(this.model);\n  }\n\n  public async submit(): Promise<void> {\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.validate();\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.userService.client.isRequesting;\n  }\n\n\n  public async validate(): Promise<any> {\n    return await this.userService.validate(this.model)\n      .then(async (model: boolean) => {\n        if (model) {\n          this.notification.success(\"main.admin.pages.users.user_validation.notifications.success\");\n        } else {\n          this.notification.error(\"main.admin.pages.users.user_validation.notifications.error\");\n        }\n        return await this.dialogController.ok(model);\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h3>${'main.admin.pages.users.user_validation.title' & t}</h3> <p> ${'main.admin.pages.users.user_validation.info' & t} </p> <form> <div class=form-group> <label for=password>${'main.admin.pages.users.user_validation.password' & t}</label> <input type=password class=form-control value.bind=\\\"model.password & validate\\\"> </div> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit() disabled.bind=!canSave>${'main.admin.pages.users.user_validation.validate' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\n\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\n\n\nimport { Notification } from \"common/services/notification\";\n\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\nimport { RestoreConfirmation } from \"../../../components/restore-confirmation\";\nimport { User } from \"models/security/user\";\n\nimport { UserService } from \"../../services/users/user-service\";\nimport { MasterUserService } from \"../../services/users/master-user-service\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from 'common/store/store-service';\nimport { Company } from 'models/companies/company';\n\n@autoinject()\nexport class UserArchiveList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n  private company: Company;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private state: State;\n\n  private isLoaded: boolean = false;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.userService.listArchive(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  constructor(\n    private store: StoreService,\n    private userService: UserService,\n    private dialogService: DialogService,\n    private notification: Notification,\n    //private router: Router,\n    private masterUserService: MasterUserService) {\n\n    this.logger = LogManager.getLogger(\"UserList\");\n\n    this.state = this.store.state;\n\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n\n      this.companyId = +this.params.companyId;\n\n      if (this.params.companyDetailId && this.params.companyDetailId === 'create') {\n        this.companyId = null;\n      }\n      else if (!isNaN(this.params.companyDetailId)) {\n        this.companyId = +this.params.companyDetailId;\n      }\n\n      if (this.companyId) {\n\n        this.userService.client.currentCompanyId = this.companyId;\n\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n\n        this.isLoaded = true;\n\n        return await this.databind();\n      }\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  public async update(item: User): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: RestoreConfirmation,\n      model: item.fullName\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        try {\n          await this.userService.userRestore(item);\n\n          let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === item.id);\n          this.parameters.tableData.splice(indexOfEditedModel, 1);\n          this.parameters.totalRecords--;\n\n          this.notification.success(\"main.admin.pages.archive.notifications.change_state\");\n        } catch (error) {\n          this.notification.error(error);\n        }\n      }\n    });\n  }\n\n\n}\n\n","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.users.archive.title' & t}</h5> <p t=[html]main.admin.pages.users.archive.info>Archive</p> <a class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: UserCreate\\\" route-href=\\\"route: user-archive-router\\\">${'main.test.pages.archive.title' & t}</a> </div> </div> </template> \";","module.exports = \"<template> <div> <h2> ${'main.test.pages.archive.title' & t} </h2> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-1 d-flex\\\"><i class=\\\"material-icons large ticon-persona\\\"></i></div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.admin.pages.users.first_name' & t}</small> </label> ${item.firstName} </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.admin.pages.users.last_name' & t}</small> </label> ${item.lastName} </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.admin.pages.users.email' & t}</small> </label> ${item.email} </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.admin.pages.users.user_name' & t}</small> </label> ${item.userName} </div> <div class=\\\"col-md-1 col-12 mb-2\\\"> <a href=# global-permission-show=\\\"can: UserCreate\\\" click.delegate=update(item) title.bind=\\\"'main.test.pages.archives.restore' & t\\\" role=button> <i class=material-icons>restore</i> </a> </div> </div> </li> </ul> </div> </div> </div> </div> </div> </template> \";","import { Notification } from 'common/services/notification';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { Role } from \"models/security/role\";\nimport { Company } from 'models/companies/company';\nimport { CoreCompanyService } from 'main/admin/services/companies/core-company-service';\nimport { Group } from 'models/groups/group';\nimport { GroupService } from 'main/admin/services/groups/group-service';\nimport { User } from 'models/security/user';\nimport { ControllerValidateResult, ValidationController, ValidationControllerFactory, ValidationRules } from 'aurelia-validation';\nimport { BootstrapFormRenderer } from 'common/services/bootstrap-form-renderer';\nimport { CompanyChange } from 'models/companies/company-change';\n\n@autoinject()\nexport class UserChangeCompanyModal {\n\n  private validationController: ValidationController;\n  private logger: Logger;\n  private newModelUser: User;\n  private model: CompanyChange;\n  private masterFranchises: Company[];\n  private franchises: Company[];\n  private masterCompanies: Company[];\n  private companies: Company[];\n  private groups: Group[];\n  private response: Company[];\n\n  constructor(\n    private coreCompanyService: CoreCompanyService,\n    private groupService: GroupService,\n    private notification: Notification,\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"UserChangeCompanyModal\");\n\n  }\n\n  public async activate(item: User): Promise<any> {\n    this.logger.debug(\"activate\", item);\n    this.newModelUser = item;\n    this.model = new CompanyChange();\n    try {\n      this.response = await this.coreCompanyService.getAll();\n\n      this.masterFranchises = this.response.filter(x => x.roleId == Role.MasterFranchise);\n\n      this.masterFranchises.sort((a, b) => a.name.localeCompare(b.name));\n      this.configureValidationRules();\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"masterFranchiseId\").displayName(\"main.admin.pages.users.master_franchise\").required()\n      .ensure(\"franchiseId\").displayName(\"main.admin.pages.users.franchise\").required()\n      .ensure(\"masterCompanyId\").displayName(\"main.admin.pages.users.parent_company\").required()\n      .ensure(\"companyId\").displayName(\"main.admin.pages.users.company\").required()\n      .ensure(\"groupId\").displayName(\"main.admin.pages.users.group_users\").required()\n      .on(this.model);\n  }\n\n  public async franchiseList() {\n    this.franchises = this.response.filter(x => x.parentId == this.model.masterFranchiseId);\n    this.franchises.sort((a, b) => a.name.localeCompare(b.name));\n  }\n\n  public async masterCompanyList() {\n    this.masterCompanies = this.response.filter(x => x.roleId == Role.Master && x.parentId == this.model.franchiseId);\n    this.masterCompanies.sort((a, b) => a.name.localeCompare(b.name));\n  }\n\n  public async companyList() {\n    this.companies = this.response.filter(x => x.roleId == Role.Customer && x.parentId == this.model.masterCompanyId);\n    this.companies.sort((a, b) => a.name.localeCompare(b.name));\n  }\n\n  public async groupList() {\n    this.groups = await this.groupService.getByCompanyId(this.model.companyId);\n    this.groups.sort((a, b) => a.name.localeCompare(b.name));\n  }\n\n  public async submit(): Promise<void> {\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          this.newModelUser.groupId = this.model.groupId;\n          this.newModelUser.companyId = this.model.companyId;\n          let companyName = this.companies.find(x => x.id == this.model.companyId);\n          this.newModelUser.lastName = companyName.businessName;\n          return await this.save();\n        }\n      });\n  }\n\n  public async save(): Promise<any> {\n    return await this.dialogController.ok();\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h3> ${'main.admin.pages.users.move_user_company' & t} </h3> <div class=\\\"row mb-3\\\"> <form class=\\\"col-12 mt-5\\\"> <div class=row style=width:27rem> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label>${'main.admin.pages.users.master_franchise' & t}</label> <select id=model.masterFranchiseId value.bind=\\\"model.masterFranchiseId & validate\\\" class=form-control change.delegate=franchiseList()> <option value=\\\"\\\" t=forms.select_option></option> <option repeat.for=\\\"option of masterFranchises\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label>${'main.admin.pages.users.franchise' & t}</label> <select id=model.franchiseId value.bind=\\\"model.franchiseId & validate\\\" class=form-control change.delegate=masterCompanyList()> <option value=\\\"\\\" t=forms.select_option></option> <option repeat.for=\\\"option of franchises\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> </div> <div class=row style=width:27rem> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label>${'main.admin.pages.users.parent_company' & t}</label> <select id=model.masterCompanyId value.bind=\\\"model.masterCompanyId & validate\\\" class=form-control change.delegate=companyList()> <option value=\\\"\\\" t=forms.select_option></option> <option repeat.for=\\\"option of masterCompanies\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label>${'main.admin.pages.users.company' & t}</label> <select id=model.companyId value.bind=\\\"model.companyId & validate\\\" class=form-control change.delegate=groupList()> <option value=\\\"\\\" t=forms.select_option></option> <option repeat.for=\\\"option of companies\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> </div> <div class=row style=width:27rem> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label>${'main.admin.pages.users.group_users' & t}</label> <select id=model.groupId value.bind=\\\"model.groupId & validate\\\" class=form-control> <option value=\\\"\\\" t=forms.select_option></option> <option repeat.for=\\\"option of groups\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mt-6\\\"> <div class=col-12> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel() t=commands.cancel>Cancel</button> </div> </div> </div> </form> </div> </ux-dialog-body> </ux-dialog> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class UserChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"UserChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./user-edit\"),\n        name: \"users-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.users.user\"),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.UserUpdate]\n          }\n        }\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <require from=./user-create-card.html></require> <require from=./user-archive-list-card.html></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <router-view></router-view> </div> <div class=content-sidebar> <user-create-card global-permission-show=\\\"can: UserCreate\\\"></user-create-card> </div> <div class=content-sidebar> <user-archive-list-card global-permission-show=\\\"can: UserDelete\\\"></user-archive-list-card> </div> </div> </template> \";","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.users.create_card.title' & t}</h5> <p t=[html]main.admin.pages.users.create_card.info>Create</p> <a class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: UserCreate\\\" route-href=\\\"route: user-child-router; params.bind: {userId:'create'}\\\">${'commands.create' & t}</a> </div> </div> </template> \";","\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig, activationStrategy } from \"aurelia-router\";\n\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\n\nimport { Notification } from \"common/services/notification\";\nimport { UserService } from \"../../services/users/user-service\";\nimport { User } from \"models/security/user\";\nimport { GroupService } from \"../../services/groups/group-service\";\nimport { Group } from \"models/groups/group\";\nimport { UserState } from \"models/security/userState\";\nimport { Profile } from \"models/profiles/profile\";\nimport { ProfileService } from \"../../services/profiles/profile-service\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from \"common/store/store-service\";\nimport { Company } from \"models/companies/company\";\n\n@autoinject()\nexport class UserEdit {\n\n  private logger: Logger;\n\n  public companyId: number;\n  private company: Company;\n\n  private model: User = new User();\n  private saveAndContinue: boolean = false;\n  private validationController: ValidationController;\n\n  private profiles: Profile[];\n  private groups: Group[];\n\n  private state: State;\n\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private userService: UserService,\n    private groupService: GroupService,\n    private profileService: ProfileService\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"UserEdit\");\n\n    this.state = this.store.state;\n\n  }\n\n  public async activate(params: any, routeConfig: RouteConfig): Promise<void> {\n\n    this.logger.debug(\"Activated id:\", params.userId);\n\n    try {\n\n      if (!isNaN(params.companyId)) {\n\n        this.companyId = +params.companyId;\n\n        if (!isNaN(params.companyDetailId)) {\n          this.companyId = +params.companyDetailId;\n        }\n\n        this.userService.client.currentCompanyId = this.companyId;\n\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n\n        this.groups = await this.groupService.getAll();\n\n        this.profiles = await this.profileService.getAll();\n\n        if (!isNaN(params.userId)) {\n          this.model = await this.userService.getById(+params.userId);\n        } else {\n          this.model.userState = UserState.Pending;          \n        }\n        this.configureValidationRules();\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    };\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"firstName\").displayName(\"main.admin.pages.users.first_name\").required()\n      .ensure(\"lastName\").displayName(\"main.admin.pages.users.last_name\").required()\n      .ensure(\"email\").displayName(\"main.admin.pages.users.email\").email().required()\n      .ensure(\"groupId\").displayName(\"main.admin.pages.users.group_id\").required()\n      .ensure(\"companyId\").displayName(\"main.admin.pages.users.company_id\").required()\n      .on(this.model);\n  }\n\n  private async submit(saveAndContinue: boolean): Promise<void> {\n    this.saveAndContinue = saveAndContinue;\n    return this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.userService.client.isRequesting;\n  }\n\n  private async save(): Promise<any> {\n    if (!this.model.id) {\n      return await this.userService.create(this.model)\n        .then(async (model: User) => {\n          this.notification.success(\"notifications.item_added\");\n\n          if (!this.saveAndContinue) {\n            return await this.router.navigateToRoute(\"users\");\n          } else {\n            return await this.router.navigateToRoute(\"user-child-router\", { userId: model.id });\n          }\n\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    } else {\n      return await this.userService.update(this.model)\n        .then(async () => {\n          this.notification.success(\"notifications.item_edited\");\n          if (!this.saveAndContinue) {\n            return await this.router.navigateToRoute(\"users\");\n          }\n        })\n        .catch(error => {\n          this.notification.error(error);\n        });\n    }\n  }\n\n\n  determineActivationStrategy() {\n    return activationStrategy.replace;\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../models/security/userStateViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2 if.bind=!model.id>${'main.admin.pages.users.create' & t}</h2> <h2 if.bind=model.id>${company.name} / ${model.fullName}</h2> <p> ${'main.admin.pages.users.editing_info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label>${'main.admin.pages.users.first_name' & t}</label> <input type=text class=form-control id=model.firstName t=[placeholder]main.admin.pages.users.first_name value.bind=\\\"model.firstName & validate\\\"> </div> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label>${'main.admin.pages.users.last_name' & t}</label> <input type=text class=form-control id=model.lastName t=[placeholder]main.admin.pages.users.last_name value.bind=\\\"model.lastName & validate\\\"> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label>${'main.admin.pages.users.email' & t}</label> <input type=text class=form-control id=model.email t=[placeholder]main.admin.pages.users.email value.bind=\\\"model.email & validate\\\" disabled.bind=\\\"model.userState == UserState.Active\\\"> </div> </div> <div class=\\\"col-12 col-md-4\\\" show.bind=\\\"state && state.currentCompany && state.currentCompany.companySettings && state.currentCompany.companySettings.hasGroupManagement\\\"> <div class=form-group> <label>${'main.admin.pages.users.group_id' & t}</label> <select class=form-control value.bind=\\\"model.groupId & validate\\\"> <option repeat.for=\\\"option of groups\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\" show.bind=\\\"state && state.currentCompany && state.currentCompany.companySettings && state.currentCompany.companySettings.hasProfileManagement\\\"> <div class=\\\"col-12 col-md-4\\\"> <div class=form-group> <label>${'main.admin.pages.users.profile_id' & t}</label> <select class=form-control value.bind=\\\"model.profileId & validate\\\"> <option repeat.for=\\\"option of profiles\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: UserCreate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: UserCreate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: users;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </div> </template> \";","import { Wallet } from '../../../../models/talents/wallet';\nimport { WalletService } from '../../services/talents/wallet-service';\n\nimport { Disposable } from 'aurelia-binding';\nimport { autoinject, LogManager } from \"aurelia-framework\";\n\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { UserLoginInfoModal } from '../users/user-login-info-modal';\n\nimport { DeleteConfirmation } from \"../../../components/delete-confirmation\";\nimport { ConvertMasterConfirmation } from \"../../../components/convert-master-confirmation\";\nimport { Notification } from \"common/services/notification\";\n\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\n\nimport { ChangeStateConfirmation } from \"../../../components/change-state-confirmation\";\nimport { User } from \"models/security/user\";\nimport { UserState } from \"models/security/userState\";\nimport { UserService } from \"../../services/users/user-service\";\nimport { MasterUserService } from \"../../services/users/master-user-service\";\nimport { UserExportStatus } from \"models/security/userExportStatus\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from 'common/store/store-service';\nimport { Company } from 'models/companies/company';\nimport { I18N } from \"aurelia-i18n\";\nimport { UserChangeCompanyModal } from './user-change-company-modal';\nimport { Transaction } from 'models/talents/transaction';\nimport { TransactionService } from 'main/admin/services/talents/transaction-service';\n\n@autoinject()\nexport class UserList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n  private company: Company;\n  private wallet: Wallet;\n  private message: string;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private state: State;\n\n  private isLoaded: boolean = false;\n  public exportStatus: UserExportStatus = UserExportStatus.None;\n  public isExporting: boolean = false;\n  public UserExportStatus = UserExportStatus;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.userService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  constructor(\n    private i18n: I18N,\n    private store: StoreService,\n    private userService: UserService,\n    private dialogService: DialogService,\n    private notification: Notification,\n    //private router: Router,\n    private masterUserService: MasterUserService,\n    private transactionService: TransactionService,\n    private WalletService: WalletService) {\n\n    this.logger = LogManager.getLogger(\"UserList\");\n\n    this.state = this.store.state;\n\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n\n      this.companyId = +this.params.companyId;\n\n      if (this.params.companyDetailId && this.params.companyDetailId === 'create') {\n        this.companyId = null;\n      }\n      else if (!isNaN(this.params.companyDetailId)) {\n        this.companyId = +this.params.companyDetailId;\n      }\n\n      if (this.companyId) {\n\n        this.userService.client.currentCompanyId = this.companyId;\n\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n\n        this.isLoaded = true;\n\n        await this.checkExportStatus();\n\n        return await this.databind();\n      }\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async changeState(item: User): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: ChangeStateConfirmation,\n      model: item.fullName\n    })\n      .whenClosed(async (response: DialogCloseResult) => {\n        if (!response.wasCancelled) {\n          return await this.userService.changeState(item.id)\n            .then(() => {\n              // this.databind();\n              switch (item.userState) {\n                case UserState.Active:\n                  item.userState = UserState.Inactive;\n                  break;\n                case UserState.Inactive:\n                  item.userState = UserState.Active;\n                  break;\n                default:\n                  break;\n              }\n              this.notification.success(\"notifications.item_edited\");\n            })\n            .catch(error => {\n              this.notification.error(error);\n            });\n        }\n      });\n  }\n\n  private async viewLoginInfo(userId: number): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: UserLoginInfoModal,\n      model: userId\n    });\n  }\n\n  private async resendActivationMessage(id: number): Promise<void> {\n    return await this.userService.resendActivationMessage(id)\n      .then(() => {\n        this.notification.success(\"main.admin.pages.users.resend_activation_completed\");\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async delete(item: User): Promise<void> {\n\n    this.wallet = await this.WalletService.getByUserId(item.id);\n    this.message = this.i18n.tr(\"main.admin.pages.users.transfer_talents\").replace('{0}', this.wallet.talent.toString())\n\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: this.wallet.talent > 0 ? item.fullName + this.message : item.fullName\n    }).whenClosed((response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        this.userService.delete(item.id)\n          .then(async () => {\n            let indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(item.id.toString());\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.success(\"notifications.item_deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private async changeCompanyUser(item: User): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: UserChangeCompanyModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        try {\n          let wallets: Wallet[] = await this.WalletService.getAll();\n          let userWallet = wallets.filter(x => x.userId == item.id);\n          if(userWallet.length > 0){\n            var list = [];\n            var tran = new Transaction();\n            tran = new Transaction();\n            tran.wallet.amount = userWallet[0].talent;\n            tran.sourceUserId = item.id;\n            tran.targetUserId = 0;\n            \n            tran.observation = this.i18n.tr(\"main.admin.pages.users.transfer_talents_by_change_company\").replace('{0}', this.state.userBasicInfo.userName).replace('{1}',item.userName).replace('{2}',item.lastName)\n\n            tran.wallet.canDiscountGeneralWallet = true;\n            list.push(tran);\n            await this.transactionService.transfer(list);\n          }\n          await this.masterUserService.changeUserCompany(item);\n          let indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(item.id.toString());\n          this.parameters.tableData.splice(indexOfEditedModel, 1);\n          this.parameters.totalRecords--;\n          this.notification.success(\"notifications.item_edited\");\n        } catch (error) {\n          this.notification.error(error);\n        }\n      }\n    });\n  }\n\n  private async convertMaster(item: User): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: ConvertMasterConfirmation,\n      model: item.fullName\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        try {\n          let model: User = await this.masterUserService.convert(item);\n          let indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(item.id.toString());\n          this.parameters.tableData.splice(indexOfEditedModel, 1);\n          this.parameters.totalRecords--;\n          this.notification.success(\"notifications.item_added\");\n\n        } catch (error) {\n          this.notification.error(error);\n        }\n      }\n    });\n  }\n\n  public async exportUsers(): Promise<void> {\n    try {\n      this.isExporting = true;\n      this.exportStatus = UserExportStatus.Processing;\n      await this.userService.generateExport();\n    } catch (e) {\n      this.notification.error(e);\n      this.exportStatus = UserExportStatus.None;\n    } finally {\n      this.isExporting = false;\n    }\n  }\n\n  public async downloadExport(): Promise<void> {\n    try {\n      const url = await this.userService.getExportDownloadUrl();\n      if (url) {\n        window.open(url, '_blank');\n      }\n    } catch (e) {\n      this.notification.error(e);\n    }\n  }\n\n  public async checkExportStatus(): Promise<void> {\n    try {\n      this.exportStatus = await this.userService.getExportStatus();\n    } catch (e) {\n      this.exportStatus = UserExportStatus.None;\n    }\n  }\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class UserListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService) {\n    this.logger = LogManager.getLogger(\"UserListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./user-list\"),\n        name: \"users\",\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.UserView),\n        title: this.i18n.tr(\"main.admin.pages.users.title\"),\n      },\n\n      {\n        route: \"user/:userId\",\n        moduleId: PLATFORM.moduleName(\"./user-child-router\"),\n        name: \"user-child-router\",\n        // nav: false,\n        // title: this.i18n.tr(\"main.admin.pages.users.user\"),\n      },\n\n      {\n        route: \"user-archive\",\n        moduleId: PLATFORM.moduleName(\"./user-archive-list\"),\n        name: \"user-archive-router\",\n        nav: false,\n        title: this.i18n.tr(\"main.test.pages.archive.title\"),\n      },\n      {\n        route: \"master-users\",\n        moduleId: PLATFORM.moduleName(\"./user-master-list\"),\n        name: \"master-users\",\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.CompanyGroupView),\n        title: this.i18n.tr(\"main.admin.pages.master_users.title\"),\n      },\n      {\n        route: \"master-users/:masterUserId\",\n        moduleId: PLATFORM.moduleName(\"../master-users/master-user-child-router\"),\n        name: \"master-user-child-router\",\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","module.exports = \"<template> <require from=./user-create-card.html></require> <require from=./user-archive-list-card.html></require> <require from=../../../../models/security/userStateViewEngineHooks></require> <div if.bind=!companyId> <h2>${'main.admin.pages.users.title' & t}</h2> <p> ${'main.admin.pages.users.notification_new_company' & t} </p> </div> <div if.bind=companyId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${state.currentCompany.name} / ${'main.admin.pages.users.title' & t}</h2> <p> ${'main.admin.pages.users.info' & t} </p> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-1 scope=col>${'main.admin.pages.users.first_name' & t}</th> <th class=col-md-1 scope=col>${'main.admin.pages.users.last_name' & t}</th> <th class=col-md-2 scope=col>${'main.admin.pages.users.email' & t}</th> <th class=col-md-3 scope=col>${'main.admin.pages.users.user_name' & t}</th> <th class=col-md-1 scope=col>${'main.admin.pages.users.user_state.title' & t}</th> <th class=col-md-4 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <td class=\\\"col-md-1 text-truncate\\\"><span title=${item.firstName}>${item.firstName}</span></td> <td class=\\\"col-md-1 text-truncate\\\"><span title=${item.lastName}>${item.lastName}</span></td> <td class=\\\"col-md-2 text-truncate\\\"><span title=${item.email}>${item.email}</span></td> <td class=\\\"col-md-3 text-truncate\\\"><span title=${item.userName}>${item.userName}</span></td> <td class=col-md-1>${'main.admin.pages.users.user_state.'+ UserState[item.userState] & t}</td> <td class=\\\"col-md-4 d-flex\\\"> <a class=\\\"btn btn-link\\\" global-permission-show=\\\"can: UserUpdate\\\" route-href=\\\"route: user-child-router; params.bind: {userId:item.id}\\\" title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </a> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: UserDelete\\\" click.delegate=delete(item) title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons>archive</i> </button> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: UserUpdate\\\" click.delegate=resendActivationMessage(item.id) title.bind=\\\"'main.admin.pages.users.resend_activation_message' & t\\\"> <i class=material-icons>email</i> </button> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: CoreUserView\\\" click.delegate=viewLoginInfo(item.id) title.bind=\\\"'commands.link' & t\\\"> <i class=material-icons>link</i> </button> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: UserSwap\\\" click.delegate=changeCompanyUser(item) title.bind=\\\"'commands.move' & t\\\"> <i class=material-icons>swap_horiz</i> </button> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: UserConvert\\\" click.delegate=convertMaster(item) title.bind=\\\"'commands.convert' & t\\\"> <i class=material-icons>supervisor_account</i> </button> <button if.bind=\\\"item.userState !== UserState.Pending\\\" class=\\\"btn btn-link\\\" global-permission-show=\\\"can: UserUpdate\\\" click.delegate=changeState(item) t=\\\"${item.userState === UserState.Active ? 'commands.unactivate' : 'commands.activate'}\\\">Activate</button> </td> </tr> </tbody> </table> </div> </div> </div> <div class=content-sidebar global-permission-show=\\\"can: UserCreate\\\"> <div class=\\\"row mb-3\\\"> <user-create-card></user-create-card> </div> <div class=\\\"row mb-3\\\"> <user-archive-list-card>  </user-archive-list-card></div> <div class=\\\"row mb-3\\\"> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.users.export.title' & t}</h5> <p class=card-text> ${'main.admin.pages.users.export.async_description' & t} </p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=exportUsers() disabled.bind=\\\"exportStatus === UserExportStatus.Processing\\\"> <span if.bind=\\\"exportStatus !== UserExportStatus.Ready\\\">${'main.admin.pages.users.export.generate' & t}</span> <span if.bind=\\\"exportStatus === UserExportStatus.Ready\\\">${'main.admin.pages.users.export.regenerate' & t}</span> </button> <button if.bind=\\\"exportStatus === UserExportStatus.Processing\\\" class=\\\"btn btn-link\\\" click.delegate=checkExportStatus() title.bind=\\\"'commands.refresh' & t\\\"> <i class=material-icons>refresh</i> </button> <button if.bind=\\\"exportStatus === UserExportStatus.Ready\\\" class=\\\"btn btn-primary btn-round\\\" click.delegate=downloadExport()> ${'main.admin.pages.users.export.download' & t} </button> </div> </div> </div> </div> </div> </div> </template> \";","import { UserLoginInfo } from '../../../../models/security/user-login-info';\nimport { Notification } from 'common/services/notification';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { UserService } from 'main/admin/services/users/user-service';\n\n@autoinject()\nexport class UserLoginInfoModal {\n\n  private logger: Logger;\n\n  private loginInfo: UserLoginInfo;\n  private directLoginUrlElement: HTMLElement;\n\n  constructor(\n    private userService: UserService,\n    private dialogController: DialogController,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"UserLoginInfoModal\");\n    \n  }\n\n  public async activate(userId: number): Promise<any> {\n    this.logger.debug(\"activate\", userId);\n\n    try {\n      this.loginInfo = await this.userService.getLoginInfoById(userId);\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private focus() {\n    if (this.directLoginUrlElement) { \n      this.directLoginUrlElement.focus();\n    }\n  }\n\n\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2> ${'main.test.pages.person.login_info.title' & t} </h2> <div class=row> <div class=col-12> <dl class=row> <dt class=col-sm-3>${'main.test.pages.person.login_info.user_name' & t}</dt> <dd class=col-sm-9>${loginInfo.userName}</dd> <dt if.bind=loginInfo.password class=col-sm-3>${'main.test.pages.person.login_info.password' & t }</dt> <dd if.bind=loginInfo.password class=col-sm-9>${loginInfo.password}</dd> <dt class=col-sm-3>${'main.test.pages.person.login_info.activation_url' & t }</dt> <dd class=col-sm-9> <input type=text class=form-control value.bind=loginInfo.loginUrl ref=directLoginUrlElement> </dd> </dl> </div> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" ux-clipboard=${loginInfo.loginUrl} click.delegate=focus()><i class=material-icons>file_copy</i>${'commands.copy' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </ux-dialog-body> </ux-dialog> </template> \";","\nimport { autoinject, bindable, LogManager } from \"aurelia-framework\";\n\nimport { Logger } from \"aurelia-logging\";\nimport { RouteConfig } from \"aurelia-router\";\nimport { CompanyDetailService } from \"main/admin/services/companies/company-detail-service\";\nimport { CompanyDetail } from \"models/companies/company-detail\";\n\n@autoinject()\nexport class UserMasterList {\n\n  private logger: Logger;\n  @bindable\n  private params: any = {};\n  private companyId: number;\n  private companyGroupId: number;\n  private companyDetail: CompanyDetail;\n\n  constructor(\n    private companyDetailService: CompanyDetailService) {\n    this.logger = LogManager.getLogger(\"UserMasterList\");\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.params = params;\n\n    if (!isNaN(this.params.companyId)) {\n        this.companyId = +this.params.companyId;\n        this.companyDetail = await this.companyDetailService.getById(this.companyId);\n        this.companyGroupId = this.companyDetail.company.parentId;\n        this.params.companyGroupId = this.companyGroupId;\n    }\n  }\n}\n","module.exports = \"<template> <require from=../master-users/master-user-list></require> <require from=../../../../models/security/userStateViewEngineHooks></require> <div if.bind=\\\"companyId && companyGroupId\\\"> <master-user-list current-company.bind=companyId current-company-group.bind=companyGroupId></master-user-list> </div> </template> \";","import { autoinject } from 'aurelia-framework';\nimport { DialogController } from \"aurelia-dialog\";\n\n@autoinject()\nexport class ActivationConfirmation {\n  private name: string;\n\n  constructor(private dialogController: DialogController) {\n  }\n\n  public activate(name: string) {\n    this.name = name;\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <div class=row> <div class=col-12> <p t=modals.activation_confirmation.message>ActivationQuestionary?</p> </div> </div> </ux-dialog-body> <ux-dialog-footer> <button class=\\\"btn btn-primary btn-round\\\" attach-focus=true click.delegate=dialogController.ok() t=commands.accept>Accept</button> <button class=\\\"btn btn-default\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </ux-dialog-footer> </ux-dialog> </template> \";","import { autoinject } from 'aurelia-framework';\nimport { DialogController } from \"aurelia-dialog\";\nimport { ActivationService } from 'main/test/services/people/activation-service';\nimport { ActivationRequest } from 'models/test-person/activationRequest';\nimport { Notification } from 'common/services/notification';\nimport { I18N } from 'aurelia-i18n';\n\n@autoinject()\nexport class ActivationLinkModal {\n  public activationLink: string | null = null;\n  public activationError: string | null = null;\n\n  constructor(\n    private dialogController: DialogController,\n    private activationService: ActivationService,\n    private notification: Notification,\n    private i18n: I18N\n  ) {\n  }\n\n  public async activate(model: ActivationRequest) {\n    try {\n      const response = await this.activationService.getActivationLink(model);\n      this.activationLink = response;\n      this.activationError = null;\n    } catch (error) {\n      this.activationLink = null;\n      this.activationError = error ? this.i18n.tr(error) : this.i18n.tr('modals.activation_link.message.error-general');\n    }\n  }\n\n  public async copyActivationLink() {\n    if (this.activationLink) {\n      try {\n        if (navigator && (navigator as any).clipboard && typeof (navigator as any).clipboard.writeText === 'function') {\n          await (navigator as any).clipboard.writeText(this.activationLink);\n        } else {\n          const input = document.createElement('input');\n          input.value = this.activationLink;\n          document.body.appendChild(input);\n          input.select();\n          document.execCommand('copy');\n          document.body.removeChild(input);\n        }\n        this.notification.success(this.i18n.tr('messages.link_copied'));\n      } catch (error) {\n        this.notification.error(this.i18n.tr('messages.copy_failed'));\n      }\n    }\n  }\n\n}\n","module.exports = \"<template> <ux-dialog class=\\\"modal-lg activation-link-modal\\\"> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <div if.bind=activationLink> <h2 class=mb-4>${'modals.activation_link.message-title' & t}</h2> <div class=row> <div class=col-12> <div class=\\\"mt-4 d-flex align-items-center gap-3\\\"> <p class=\\\"mb-0 text-nowrap mx-2 font-weight-bold\\\" t=commands.activation_link>:</p> <span class=\\\"form-control flex-grow-1 text-truncate\\\"> ${activationLink} </span> </div> </div> </div> </div> <div if.bind=activationError> <h2 class=mb-4>${'modals.activation_link.error-message' & t}</h2> <div class=row> <div class=col-12> <p class=\\\"mb-0 text-nowrap mx-2 font-weight-bold\\\">${activationError}</p> </div> </div> </div> </ux-dialog-body> <ux-dialog-footer class=\\\"d-flex justify-content-end gap-2\\\"> <button if.bind=activationLink class=\\\"btn btn-primary btn-round d-flex align-items-center gap-1\\\" attach-focus=true click.delegate=copyActivationLink()> <i class=material-icons> content_copy </i> <span>${'commands.copy' & t}</span> </button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </ux-dialog-footer> </ux-dialog> </template>\";","import { bindable } from \"aurelia-framework\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { FileAcceptValidator } from \"common/utils/file-accept-validator\";\n\n@autoinject()\nexport class BulkUploadQuestionCard {\n\n  @bindable public questionaryId: number;\n  @bindable public xlsxExampleUrl: string;\n  @bindable public uploadFunction: (params: { questionaryId: number, file: File }) => Promise<any>;\n  @bindable public onUploaded: () => Promise<void>;\n  @bindable public successMessage: string = \"main.admin.pages.modular-questionaries.questions.questions_created\";\n\n  private logger: Logger;\n  private bulkFile: File = null;\n  private bulkFileName: string = '';\n  private isBulkUploading: boolean = false;\n\n  constructor(\n    private notification: Notification\n  ) {\n    this.logger = LogManager.getLogger(\"BulkUploadCard\");\n  }\n\n  public setBulkFile($event: any): void {\n    let file = <File>$event.target.files[0];\n    let fileValidator = FileAcceptValidator.parse(\"csv, xls, xlsx\", 1024 * 1024 * 5);\n    if (fileValidator.isValid(file)) {\n      this.bulkFile = file;\n      this.bulkFileName = file.name;\n    } else {\n      this.bulkFile = null;\n      this.bulkFileName = '';\n      this.resetFileInput();\n      this.notification.error(\"main.admin.pages.modular-questionaries.questions.errors.bad_file_format\");\n    }\n  }\n\n  public async bulkUpload(): Promise<void> {\n    if (!this.bulkFile) return;\n\n    this.isBulkUploading = true;\n    try {\n      await this.uploadFunction({ questionaryId: this.questionaryId, file: this.bulkFile });\n      this.notification.success(this.successMessage);\n      if (this.onUploaded) {\n        await this.onUploaded();\n      }\n    } catch (error) {\n      this.notification.error(error);\n    } finally {\n      this.isBulkUploading = false;\n      this.bulkFile = null;\n      this.bulkFileName = '';\n      this.resetFileInput();\n    }\n  }\n\n  private resetFileInput(): void {\n    const fileInput = document.getElementById('bulkUploadFile') as HTMLInputElement;\n    if (fileInput) {\n      fileInput.value = '';\n    }\n  }\n}\n","module.exports = \"<template> <div class=\\\"card card-shadow card-round mt-3\\\"> <div class=card-body> <h5 class=card-title t=main.admin.pages.modular-questionaries.questions.bulk_upload_card.title>Bulk Upload</h5> <p class=card-text t=[html]main.admin.pages.modular-questionaries.questions.bulk_upload_card.info>Upload an Excel file with questions and response options</p> <div class=row> <div class=col> <i class=\\\"fa fa-file-excel-o\\\" aria-hidden=true></i> <a href=${xlsxExampleUrl}>${'main.admin.pages.modular-questionaries.questions.download_xlsx_file_text' & t}</a> </div> </div> <div class=\\\"row mt-3\\\"> <div class=col> <div class=\\\"custom-file mb-3\\\"> <input type=file class=custom-file-input id=bulkUploadFile accept=\\\".csv, .xls, .xlsx, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\\\" change.delegate=setBulkFile($event)> <label class=custom-file-label for=bulkUploadFile>${ bulkFileName ? bulkFileName : 'commons.file' & t}</label> </div> </div> </div> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=bulkUpload() disabled.bind=\\\"!bulkFile || isBulkUploading\\\"> <span if.bind=isBulkUploading><i class=\\\"fa fa-spinner fa-spin\\\"></i></span> <span if.bind=!isBulkUploading t=commands.upload>Upload</span> </button> </div> </div> </template> \";","import { bindable } from \"aurelia-framework\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { I18N } from \"aurelia-i18n\";\nimport { Notification } from \"common/services/notification\";\nimport { FileAcceptValidator } from \"common/utils/file-accept-validator\";\n\n@autoinject()\nexport class BulkUploadScaleCard {\n\n  @bindable public thematicVariableId: number;\n  @bindable public xlsxExampleUrl: string;\n  @bindable public uploadFunction: (params: { thematicVariableId: number, file: File }) => Promise<any>;\n  @bindable public onUploaded: () => Promise<void>;\n  @bindable public successMessage: string = \"main.admin.pages.modular-questionaries.scales.scales_created\";\n\n  private logger: Logger;\n  private bulkFile: File = null;\n  private bulkFileName: string = '';\n  private isBulkUploading: boolean = false;\n\n  constructor(\n    private notification: Notification,\n    private i18n: I18N\n  ) {\n    this.logger = LogManager.getLogger(\"BulkUploadScaleCard\");\n  }\n\n  public setBulkFile($event: any): void {\n    let file = <File>$event.target.files[0];\n    let fileValidator = FileAcceptValidator.parse(\"csv, xls, xlsx\", 1024 * 1024 * 5);\n    if (fileValidator.isValid(file)) {\n      this.bulkFile = file;\n      this.bulkFileName = file.name;\n    } else {\n      this.bulkFile = null;\n      this.bulkFileName = '';\n      this.resetFileInput();\n      this.notification.error(\"main.admin.pages.modular-questionaries.scales.errors.bad_file_format\");\n    }\n  }\n\n  public async bulkUpload(): Promise<void> {\n    if (!this.bulkFile) return;\n\n    this.isBulkUploading = true;\n    try {\n      const result = await this.uploadFunction({ thematicVariableId: this.thematicVariableId, file: this.bulkFile });\n      if (result && (result.created !== undefined || result.updated !== undefined)) {\n        if (result.created > 0) {\n          this.notification.success(this.i18n.tr(\"main.admin.pages.modular-questionaries.scales.scales_created_count\", { qtyCreated: result.created }));\n        }\n        if (result.updated > 0) {\n          this.notification.success(this.i18n.tr(\"main.admin.pages.modular-questionaries.scales.scales_updated_count\", { qtyUpdated: result.updated }));\n        }\n      } else {\n        this.notification.success(this.successMessage);\n      }\n      if (this.onUploaded) {\n        await this.onUploaded();\n      }\n    } catch (error) {\n      this.notification.error(error);\n    } finally {\n      this.isBulkUploading = false;\n      this.bulkFile = null;\n      this.bulkFileName = '';\n      this.resetFileInput();\n    }\n  }\n\n  private resetFileInput(): void {\n    const fileInput = document.getElementById('bulkUploadScaleFile') as HTMLInputElement;\n    if (fileInput) {\n      fileInput.value = '';\n    }\n  }\n}\n","module.exports = \"<template> <div class=\\\"card card-shadow card-round mt-3\\\"> <div class=card-body> <h5 class=card-title t=main.admin.pages.modular-questionaries.scales.bulk_upload_card.title>Bulk Upload</h5> <p class=card-text t=[html]main.admin.pages.modular-questionaries.scales.bulk_upload_card.info>Upload an Excel file with scales</p> <div class=row> <div class=col> <i class=\\\"fa fa-file-excel-o\\\" aria-hidden=true></i> <a href=${xlsxExampleUrl}>${'main.admin.pages.modular-questionaries.scales.download_xlsx_file_text' & t}</a> </div> </div> <div class=\\\"row mt-3\\\"> <div class=col> <div class=\\\"custom-file mb-3\\\"> <input type=file class=custom-file-input id=bulkUploadScaleFile accept=\\\".csv, .xls, .xlsx, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\\\" change.delegate=setBulkFile($event)> <label class=custom-file-label for=bulkUploadScaleFile>${ bulkFileName ? bulkFileName : 'commons.file' & t}</label> </div> </div> </div> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=bulkUpload() disabled.bind=\\\"!bulkFile || isBulkUploading\\\"> <span if.bind=isBulkUploading><i class=\\\"fa fa-spinner fa-spin\\\"></i></span> <span if.bind=!isBulkUploading t=commands.upload>Upload</span> </button> </div> </div> </template> \";","import {autoinject, bindable, bindingMode, observable, TaskQueue} from 'aurelia-framework';\nimport { News } from 'models/test-core/news/news';\nimport $ from \"jquery\";\n@autoinject()\nexport class CarouselNewsCustomElement {\n  // @bindable({ defaultBindingMode: bindingMode.twoWay }) value = [];\n  @bindable newsList: News[] = []; \n\n  constructor() {   \n  } \n  public attached() {   \n   \n  }\n}\n","module.exports = \"<template> <div id=carousel-indicators-tht class=\\\"carousel slide\\\" data-ride=carousel data-interval=5000> <ol class=carousel-indicators> <li repeat.for=\\\"itm of newsList\\\" data-target=#carousel-indicators-tht data-slide-to.bind=$index class.bind=\\\"itm.isClassActivate ? 'active' : ''\\\"></li> </ol> <div class=\\\"list-group carousel-inner\\\"> <div repeat.for=\\\"itm of newsList\\\" class.bind=\\\"itm.isClassActivate ? 'carousel-item active' : 'carousel-item'\\\"> <a href.bind=itm.urlRedirect target=_blank><img class=\\\"d-block w-100\\\" src.bind=itm.thumbnailImageUrl></a> </div> </div> <a class=carousel-control-prev href=#carousel-indicators-tht role=button data-slide=prev> <span class=carousel-control-prev-icon style=width:50px;height:50px;background-color:#000 aria-hidden=true></span> <span class=sr-only>Previous</span> </a> <a class=carousel-control-next href=#carousel-indicators-tht role=button data-slide=next> <span class=carousel-control-next-icon style=width:50px;height:50px;background-color:#000 aria-hidden=true></span> <span class=sr-only>Next</span> </a> </div> </template> \";","import { DialogController } from \"aurelia-dialog\";\nimport { autoinject } from \"aurelia-framework\";\n\n@autoinject()\nexport class ChangeStateConfirmation {\n  private name: string;\n\n  constructor(private dialogController: DialogController) {\n    this.name = null;\n  }\n\n  public activate(name: string) {\n    this.name = name;\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2 t=commands.change_state>Change state</h2> <p t=modals.change_state_confirmation.message t-params.bind=\\\"{name: name}\\\">Change state?</p> </ux-dialog-body> <ux-dialog-footer> <button attach-focus=true class=\\\"btn btn-primary btn-round\\\" click.delegate=dialogController.ok() t=commands.accept>Accept</button> <button class=\\\"btn btn-default\\\" click.delegate=dialogController.cancel() t=commands.cancel>Cancel</button> </ux-dialog-footer> </ux-dialog> </template> \";","import { Logger } from 'aurelia-logging';\nimport { autoinject, bindable, LogManager, observable } from 'aurelia-framework';\nimport { Company } from 'models/companies/company';\nimport { CompanyInfoService } from '../services/companies/company-info-service';\nimport { Person } from 'models/test-person/person';\n\n@autoinject()\nexport class CompanyLogo {\n  private logger: Logger;\n\n  @bindable\n  @observable\n  private currentCompany: Company;\n\n  @bindable\n  @observable\n  private currentPerson: Person;\n\n  @bindable\n  @observable\n  private externalLogoUrl: string;\n\n  private logoUrl: string;\n\n\n  constructor(\n    private companyInfoService: CompanyInfoService,\n  ) {\n\n    this.logger = LogManager.getLogger(\"CompanyLogo\");\n  }\n\n  public async currentCompanyChanged() {\n    if (!this.externalLogoUrl && this.currentCompany) {\n      this.logoUrl = await this.companyInfoService.getLogoUrl(this.currentCompany.id);\n    }\n  }\n\n  public async currentPersonChanged() {\n    if (!this.externalLogoUrl && this.currentPerson) {\n      this.logoUrl = await this.companyInfoService.getLogoUrl(this.currentPerson.companyId);\n    }\n  }\n\n  public externalLogoUrlChanged() {\n    if (this.externalLogoUrl) {\n      this.logoUrl = this.externalLogoUrl;\n\n      setTimeout(() => {\n        if (this.logoUrl !== this.externalLogoUrl) {\n          this.logoUrl = this.externalLogoUrl;\n        }\n      }, 100);\n\n    } else if (this.currentCompany) {\n      this.currentCompanyChanged();\n    } else if (this.currentPerson) {\n      this.currentPersonChanged();\n    }\n  }\n}\n","module.exports = \"<template> <img if.bind=!logoUrl class=logotype src=\" + require(\"../../../assets/images/logotype-2025.svg\") + \" alt=Tht> <img if.bind=logoUrl class=logotype src.bind=logoUrl alt=Tht> </template> \";","import { CoreCompanyService } from 'main/admin/services/companies/core-company-service';\n\nimport { autoinject, bindable, LogManager, Disposable } from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { EventAggregator } from 'aurelia-event-aggregator';\nimport { Router, NavigationInstruction } from 'aurelia-router';\nimport { Company } from 'models/companies/company';\nimport { Role } from 'models/security/role';\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\nimport { CompaniesLoadedMessage } from 'messages/companiesLoadedMessage';\n\n@autoinject()\nexport class CompanySelector {\n\n  private logger: Logger;\n\n  @bindable()\n  public state: State;\n\n  private rootCompany: Company;\n\n  private level1: string;\n  private level2: string;\n  private level3: string;\n  private level4: string;\n\n  private subscriptions: Disposable[] = [];\n\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private ea: EventAggregator,\n    private coreCompanyService: CoreCompanyService) {\n\n    this.logger = LogManager.getLogger('CompanySelector');\n\n    // this.state = this.store.state;\n\n    // event when router navigation is success\n    this.subscriptions.push(this.ea.subscribe('router:navigation:success', this.refresh.bind(this)));\n\n    this.subscriptions.push(this.ea.subscribe(CompaniesLoadedMessage, this.init.bind(this)));\n  }\n\n  public async attached(): Promise<any> {\n\n  }\n\n  public unbind() {\n    this.subscriptions.forEach(x => x.dispose());\n  }\n\n  private async init() {\n    // this.logger.debug(\"init\");\n    await this.setRootCompany();\n    await this.refresh();\n  }\n\n  private async refresh() {\n\n    let currentCompanyId: number;\n    let instruction: NavigationInstruction = this.router.currentInstruction;\n\n    if (instruction.params && instruction.params.companyId) {\n      currentCompanyId = +instruction.params.companyId;\n    }\n\n    if (this.state.currentCompany && this.state.currentCompany.id == currentCompanyId) {\n      return;\n    }\n\n    // this.logger.debug(\"refresh currentCompanyId:\", currentCompanyId);\n    return await this.loadCurrentCompany(currentCompanyId);\n\n  }\n\n  private setRootCompany() {\n    if (this.state && this.state.userBasicInfo && this.state.companies.length > 0) {\n      this.rootCompany = this.state.companies.find(x => x.id === this.state.userBasicInfo.companyId);\n      // this.logger.debug(\"rootCompany\", this.rootCompany);\n    }\n  }\n\n  private async loadCurrentCompany(currentCompanyId: number): Promise<any> {\n\n    if (currentCompanyId && this.state.companies.length > 0) {\n\n      let selectedCompany: Company;\n\n      if (currentCompanyId && this.state.companies.map(x => x.id.toString()).indexOf(currentCompanyId.toString()) < 0) {\n\n        this.logger.debug(\"companyId does not belong to user\");\n        // this.switchCompany(this.rootCompany);\n        selectedCompany = this.state.companies.filter(x => x.roleId == Role.Customer)[0];\n\n      } else {\n        // this.logger.debug(\"switchCompany to selected by url:\", currentCompanyId);\n        selectedCompany = this.state.companies.filter(x => x.id == currentCompanyId)[0];\n      }\n\n      // validate if selectedCompany is Customer level. User can only select a company with customer role.\n      if (selectedCompany.roleId != Role.Customer || !selectedCompany.isActive) {\n        selectedCompany = this.state.companies.filter(x => x.roleId == Role.Customer)[0];\n      }\n\n      if (selectedCompany) {\n        return await this.switchCompany(selectedCompany);\n      }\n    } else if (!currentCompanyId && this.state.currentCompany) {\n      return await this.switchCompany(null);\n    }\n\n  }\n\n  private async switchCompany(company: Company): Promise<any> {\n    // this.logger.debug(\"switchCompany company:\", company);\n\n    if (!company) {\n      return await this.store.setCurrentCompanyState(null);\n    }\n\n    if (this.state.currentCompany && this.state.currentCompany.id == company.id) {\n      return;\n    }\n\n    let settings = await this.coreCompanyService.getSettingsById(company.id);\n\n    // this.logger.debug(\"settings\", settings);\n\n    company.companySettings = settings;\n\n    await this.store.setCurrentCompanyState(company);\n\n    //update router url\n    let fragment = this.router.currentInstruction.fragment;\n\n    // this.logger.debug(\"fragment\", fragment);\n\n    if (fragment.length > 1 && fragment.startsWith(\"/company\")) {\n      let fragmentParts: string[] = fragment.split(\"/\");\n      fragmentParts.splice(2, 1, this.state.currentCompany.id.toString());\n      let newFragment: string = fragmentParts.join(\"/\");\n\n      if (fragment !== newFragment) {\n        this.router.navigate(newFragment);\n      }\n\n    } else {\n      return await this.router.navigateToRoute(\"main-child-router\", { companyId: this.state.currentCompany.id });\n    }\n\n  }\n\n  // private filterByParent(parentId: number, query: string): Company[] {\n  //   // this.logger.debug(\"filterByParent\", parentId);\n  //   let result: Company[] = [];\n  //   if (parentId) {\n  //     if (query) {\n  //       result = this.state.companies.filter(x => x.parentId == parentId && x.name.toLowerCase().indexOf(query.toLowerCase()) !== -1 && x.isActive);\n\n  //     } else {\n  //       result = this.state.companies.filter(x => x.parentId == parentId && x.isActive);\n  //       // this.logger.debug(\"result:\", result);\n  //     }\n  //   }\n\n  //   // this.logger.debug(\"filterByParent result\", result);\n  //   return result;\n\n  // }\n\n}\n","module.exports = \"<template> <div if.bind=\\\"state && state.companies && state.companies.length > 0\\\"> <template with.bind=state.currentCompany>${name}</template> <template if.bind=!state.currentCompany>${'commons.choose_company' & t}</template> </div> </template> \";","import { bindable, bindingMode, customElement, LogManager, autoinject, observable } from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { EventAggregator, Subscription } from 'aurelia-event-aggregator';\nimport { CurrentCompanyChangeMessage } from 'messages/currentCompanyChangeMessage';\nimport { StoreService } from 'common/store/store-service';\nimport { State } from 'common/store/store-model';\n\nimport $ from 'jquery';\nimport \"corejs-typeahead\";\nimport * as Bloodhound from 'corejs-typeahead/dist/bloodhound';\nimport config from 'config.js';\n\n@customElement(\"company-tags-input\")\n@autoinject()\nexport class CompanyTagsInput {\n\n  private logger: Logger;\n\n  private companySwitcherSubscriber: Subscription;\n\n  private backendUrl: string;\n\n  private state: State;\n\n  @observable()\n  private companyTags: any;\n\n  @bindable({ defaultBindingMode: bindingMode.twoWay })\n  public value;\n\n  // picker options\n  @bindable()\n  public options: any;\n\n  @bindable()\n  public disabled: boolean = false;\n\n\n\n  @observable()\n  public currentCompanyId: number;\n\n\n\n  constructor(\n    private element: Element,\n    private store: StoreService,\n    private ea: EventAggregator,\n    // private sessionService: SessionService\n  ) {\n\n    this.logger = LogManager.getLogger(\"CompanyTagsInput\");\n\n    this.state = this.store.state;\n\n    this.companySwitcherSubscriber = this.ea.subscribe(CurrentCompanyChangeMessage, (message: CurrentCompanyChangeMessage) => {\n      // this.companylogger.debug(\"event companySwitcher: \", message.currentCompanyId);\n      this.currentCompanyId = message.currentCompanyId;\n    });\n  }\n  \n  public detached() {\n    this.companySwitcherSubscriber.dispose();\n  }\n\n  private async currentCompanyIdChanged() {\n    if (this.currentCompanyId) {\n      await this.init();\n    }\n  }\n\n  public async bind() {\n    // this.logger.debug(\"currentCompanyId\", this.currentCompanyId);\n    if (this.state && this.state.currentCompany) {\n      this.currentCompanyId = this.state.currentCompany.id;\n    }\n  }\n\n  public async init() {\n    //base api\n    let apiUrl = config.URLS_BACKEND;\n    this.backendUrl = `${apiUrl}/api/v1/company/${this.currentCompanyId}/companytag`;\n\n    this.companyTags = new Bloodhound({\n      datumTokenizer: Bloodhound.tokenizers.obj.whitespace,\n      queryTokenizer: Bloodhound.tokenizers.whitespace,\n      remote: {\n        url: 'http://set-by-interceptor',//this.backendUrl,\n        prepare: (query, settings) => this.prepareQuery(query, settings),\n        rateLimitWait: 500 //ms\n      }\n    });\n\n    await this.companyTags.initialize();\n    // this.logger.debug(\"companyTags initialized\");\n  }\n\n  public companyTagsChanged() {\n    if (this.companyTags) {\n      // this.logger.debug(\"companyTagsChanged ok\");\n      this.options = {\n        typeaheadjs: {\n          name: 'tags',\n          async: true,\n          limit: 10, // needs to be same as whatever is fetched by api\n          display: res => res.name,\n          source: this.companyTags.ttAdapter()\n        }\n      };\n    }\n  }\n\n  public prepareQuery(query, settings: any) {\n    settings.url = this.backendUrl + '?queryString=' + encodeURIComponent(query);\n    settings.headers = {\n      'Accept': 'application/json',\n    }\n    return settings;\n  }\n\n\n}\n","module.exports = \"<template> <abp-tags-input if.bind=options element.bind=element value.bind=value options.bind=options disabled.bind=disabled></abp-tags-input> </template> \";","import { autoinject } from 'aurelia-framework';\nimport { DialogController } from \"aurelia-dialog\";\n\n@autoinject()\nexport class ConvertMasterConfirmation {\n  private name: string;\n\n  constructor(private dialogController: DialogController) {\n  }\n\n  public activate(name: string) {\n    this.name = name;\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'commands.convert' & t}</h2> <div class=row> <div class=col-12> <p t=modals.convert_master_confirmation.message t-params.bind=\\\"{name: name}\\\">Update?</p> </div> </div> </ux-dialog-body> <ux-dialog-footer> <button class=\\\"btn btn-danger btn-round\\\" attach-focus=true click.delegate=dialogController.ok() t=commands.convert>Update</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </ux-dialog-footer> </ux-dialog> </template> \";","import { autoinject, valueConverter } from 'aurelia-framework';\nimport { DialogController } from \"aurelia-dialog\";\nimport { State } from 'common/store/store-model';\nimport { Company } from 'models/companies/company';\nimport { idText } from 'typescript';\n@autoinject()\nexport class ConvertUserConfirmation {\n  private companyId: number;\n  private model: Company[];\n\n  constructor(private dialogController: DialogController) {\n  }\n\n  public activate(model: Company[]) {\n    this.model = model;    \n    this.companyId = this.model[0].id   \n  } \n  private async save(): Promise<any> {\n\n    return await this.dialogController.ok(this.companyId);\n\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'commands.convert' & t}</h2> <div class=row> <div class=col-12> <p t=modals.convert_master_to_user_confirmation.message t-params.bind=\\\"{name: name}\\\">Update?</p> </div> <div class=col-12> <div class=form-group> <div class=\\\"custom-control custom-radio\\\" repeat.for=\\\"item of model\\\"> <input class=custom-control-input type=radio name=groupCompany id=radio${$index} model.bind=item.id checked.bind=companyId> <label class=custom-control-label for=radio${$index}> ${item.name} </label> </div> </div> </div> </div> </ux-dialog-body> <ux-dialog-footer> <button class=\\\"btn btn-danger btn-round\\\" attach-focus=true click.delegate=save() t=commands.convert>Update</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </ux-dialog-footer> </ux-dialog> </template> \";","import { autoinject } from 'aurelia-framework';\nimport { DialogController } from \"aurelia-dialog\";\n\n@autoinject()\nexport class DeactivateConfirmation {\n  private model: string;\n\n  constructor(private dialogController: DialogController) {\n  }\n\n  public activate(model: string) {\n    this.model = model;\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'commands.confirm' & t}</h2> <div class=row> <div class=col-12> <p>${model & t}</p> </div> </div> </ux-dialog-body> <ux-dialog-footer> <button class=\\\"btn btn-warning btn-round\\\" attach-focus=true click.delegate=dialogController.ok() t=commands.confirm>Delete</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </ux-dialog-footer> </ux-dialog> </template> \";","import { autoinject } from 'aurelia-framework';\nimport { DialogController } from \"aurelia-dialog\";\n\n@autoinject()\nexport class DeleteConfirmation {\n  private name: string;\n\n  constructor(private dialogController: DialogController) {\n  }\n\n  public activate(name: string) {\n    this.name = name;\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'commands.archive' & t}</h2> <div class=row> <div class=col-12> <p t=modals.delete_confirmation.message t-params.bind=\\\"{name: name}\\\">Delete?</p> </div> </div> </ux-dialog-body> <ux-dialog-footer> <button class=\\\"btn btn-danger btn-round\\\" attach-focus=true click.delegate=dialogController.ok() t=commands.archive>Delete</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </ux-dialog-footer> </ux-dialog> </template> \";","import { DialogController } from 'aurelia-dialog';\nimport { Logger } from 'aurelia-logging';\nimport { LogManager, autoinject } from 'aurelia-framework';\nimport { ActivationThematicAssociateService } from 'main/test/services/people/activation-thematic-associete-service';\nimport { ActivationThematicAssociate } from 'models/test-person/activationThematicAssociate';\nimport { ThematicGroupService } from 'main/admin/services/thematic-groups/thematic-group-service';\nimport { ThematicGroup } from 'models/thematic-groups/thematic-group';\nimport { QuestionaryGroupThematicAssociate } from 'models/test-management/questionary-groups/questionary-group-thematic-associate';\nimport { QuestionaryService } from 'main/admin/services/questionaries/questionary-service';\nimport { CompanyQuestionaryService } from 'main/admin/services/test-management/company-questionary-service';\nimport { ReportTemplateThematicAssociate } from 'models/test-core/report-templates/report-template-thematic-associate';\n\nexport type DimensionSource = 'activation' | 'questionary-group' | 'report-template';\n\nexport interface DimensionActivatedModel {\n  source: DimensionSource;\n  questionaryId?: number;\n  activationId?: number;\n  questionaryGroupThematicAssociates?: QuestionaryGroupThematicAssociate[];\n  reportTemplateThematicAssociates?: ReportTemplateThematicAssociate[];\n}\n\n@autoinject()\nexport class DimensionActivatedModal {\n\n  private logger: Logger;\n  private dimensions: ThematicGroup[] = [];\n  private source: DimensionSource;\n  private groupedByQuestionary: { questionaryId: number; questionaryName: string; dimensions: ThematicGroup[] }[] = [];\n\n  constructor(\n    private dialogController: DialogController,\n    private activationThematicAssociateService: ActivationThematicAssociateService,\n    private thematicGroupService: ThematicGroupService,\n    private questionaryService: QuestionaryService,\n    private companyQuestionaryService: CompanyQuestionaryService\n  ) {\n    this.logger = LogManager.getLogger(\"DimensionActivatedModal\");\n  }\n\n  public async activate(model: DimensionActivatedModel): Promise<void> {\n    this.source = model.source;\n\n    if (model.source === 'activation') {\n      await this.loadFromActivation(model.activationId, model.questionaryId);\n    } else if (model.source === 'questionary-group') {\n      await this.loadFromQuestionaryGroup(model.questionaryGroupThematicAssociates);\n    } else if (model.source === 'report-template') {\n      await this.loadFromReportTemplate(model.reportTemplateThematicAssociates);\n    }\n  }\n\n  private async loadFromActivation(activationId: number, questionaryId: number): Promise<void> {\n    try {\n      const activationThematicAssociates: ActivationThematicAssociate[] =\n        await this.activationThematicAssociateService.getByActivationId(activationId);\n\n      if (activationThematicAssociates && activationThematicAssociates.length > 0) {\n        const allDimensions = await this.companyQuestionaryService.getAllByQuestionaryId(questionaryId);\n        this.dimensions = allDimensions.filter(d =>\n          activationThematicAssociates.some(a => a.thematicGroupId === d.id)\n        );\n      }\n    } catch (error) {\n      this.logger.error(\"Error loading dimensions from activation\", error);\n    }\n  }\n\n  private async loadFromQuestionaryGroup(\n    questionaryGroupThematicAssociates: QuestionaryGroupThematicAssociate[]\n  ): Promise<void> {\n    try {\n      if (!questionaryGroupThematicAssociates || questionaryGroupThematicAssociates.length === 0) {\n        return;\n      }\n\n      const grouped: { [key: number]: QuestionaryGroupThematicAssociate[] } = {};\n      for (const associate of questionaryGroupThematicAssociates) {\n        if (!grouped[associate.questionaryId]) {\n          grouped[associate.questionaryId] = [];\n        }\n        grouped[associate.questionaryId].push(associate);\n      }\n\n      this.groupedByQuestionary = [];\n\n      const questionaryIds = Object.keys(grouped);\n      for (let i = 0; i < questionaryIds.length; i++) {\n        const questionaryId = +questionaryIds[i];\n        const associates = grouped[questionaryId];\n\n        const allDimensions = await this.companyQuestionaryService.getAllByQuestionaryId(questionaryId);\n        const filteredDimensions = allDimensions.filter(d =>\n          associates.some(a => a.thematicGroupId === d.id)\n        );\n\n        let questionaryName = `${questionaryId}`;\n        try {\n          const questionary = await this.questionaryService.getById(questionaryId);\n          if (questionary) {\n            questionaryName = questionary.name;\n          }\n        } catch {\n\n        }\n\n        this.groupedByQuestionary.push({\n          questionaryId,\n          questionaryName,\n          dimensions: filteredDimensions\n        });\n      }\n    } catch (error) {\n      this.logger.error(\"Error loading dimensions from questionary group\", error);\n    }\n  }\n\n  private async loadFromReportTemplate(\n    reportTemplateThematicAssociates: ReportTemplateThematicAssociate[]\n  ): Promise<void> {\n    try {\n      if (!reportTemplateThematicAssociates || reportTemplateThematicAssociates.length === 0) {\n        return;\n      }\n\n      const grouped: { [key: number]: ReportTemplateThematicAssociate[] } = {};\n      for (const associate of reportTemplateThematicAssociates) {\n        if (!grouped[associate.questionaryId]) {\n          grouped[associate.questionaryId] = [];\n        }\n        grouped[associate.questionaryId].push(associate);\n      }\n\n      this.groupedByQuestionary = [];\n\n      const questionaryIds = Object.keys(grouped);\n      for (let i = 0; i < questionaryIds.length; i++) {\n        const questionaryId = +questionaryIds[i];\n        const associates = grouped[questionaryId];\n\n        const allDimensions = await this.companyQuestionaryService.getAllByQuestionaryId(questionaryId);\n        const filteredDimensions = allDimensions.filter(d =>\n          associates.some(a => a.thematicGroupId === d.id)\n        );\n\n        let questionaryName = `${questionaryId}`;\n        try {\n          const questionary = await this.questionaryService.getById(questionaryId);\n          if (questionary) {\n            questionaryName = questionary.name;\n          }\n        } catch {\n\n        }\n\n        this.groupedByQuestionary.push({\n          questionaryId,\n          questionaryName,\n          dimensions: filteredDimensions\n        });\n      }\n    } catch (error) {\n      this.logger.error(\"Error loading dimensions from report template\", error);\n    }\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"source === 'activation'\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> <h4>${'main.admin.pages.questionaries.questions.dimensions' & t}</h4> <ul> <li repeat.for=\\\"item of dimensions\\\">${item.name}</li> </ul> </div> </div> </div> </div> </div> <div if.bind=\\\"source === 'questionary-group'\\\"> <div class=\\\"row mb-3\\\" repeat.for=\\\"group of groupedByQuestionary\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> <h5><strong>${group.questionaryName}</strong></h5> <h6>${'main.admin.pages.questionaries.questions.dimensions' & t}</h6> <ul> <li repeat.for=\\\"dim of group.dimensions\\\">${dim.name}</li> </ul> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"groupedByQuestionary.length === 0\\\"> <div class=col-12> <div class=\\\"alert alert-warning\\\" role=alert> ${'main.admin.pages.questionaries.questions.no_dimensions' & t} </div> </div> </div> </div> </ux-dialog-body> <ux-dialog-footer> <button attach-focus=true class=\\\"btn btn-primary btn-round\\\" click.delegate=dialogController.ok() t=commands.accept>Accept</button> </ux-dialog-footer> </ux-dialog> </template> \";","import { LogManager, autoinject } from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { DialogController } from 'aurelia-dialog';\nimport { BindingEngine, Disposable } from 'aurelia-binding';\nimport { ThematicGroup } from 'models/thematic-groups/thematic-group';\nimport { ThematicGroupService } from 'main/admin/services/thematic-groups/thematic-group-service';\nimport { Notification } from 'common/services/notification';\nimport { QuestionaryGroupThematicAssociate } from 'models/test-management/questionary-groups/questionary-group-thematic-associate';\nimport { ActivationThematicAssociate } from 'models/test-person/activationThematicAssociate';\nimport { CompanyQuestionaryService } from 'main/admin/services/test-management/company-questionary-service';\n\nexport interface ThematicAssociateBase {\n  questionaryId: number;\n  thematicGroupId: number;\n  thematicVariableId: number;\n}\n\nexport interface DimensionSelectorModel {\n  questionaryId: number;\n  questionaryName: string;\n  questionaryGroupThematicAssociates: ThematicAssociateBase[];\n  isActivation?: boolean;\n}\n\nexport interface DimensionSelectorResult {\n  questionaryId: number;\n  questionaryName: string;\n  associates: QuestionaryGroupThematicAssociate[] | ActivationThematicAssociate[];\n  totalAverageTime: number;\n}\n\n@autoinject()\nexport class DimensionSelectorModal {\n  private logger: Logger;\n  private questionaryId: number;\n  private questionaryName: string;\n  private dimensions: ThematicGroup[] = [];\n  private selectedDimensionIds: number[] = [];\n  private selectedVariableIds: number[] = [];\n  private selectionLabels: string[] = [];\n  private totalAverageTime: number = 0;\n  private questionaryGroupThematicAssociates: ThematicAssociateBase[] = [];\n  private isActivation: boolean = false;\n  private subscription: Disposable;\n  private searchValue: string = \"\";\n  private definedColumns: string[] = [\"name\"];\n  constructor(\n    private dialogController: DialogController,\n    private thematicGroupService: ThematicGroupService,\n    private notification: Notification,\n    private bindingEngine: BindingEngine,\n    private companyQuestionaryService: CompanyQuestionaryService\n  ) {\n    this.logger = LogManager.getLogger('DimensionSelectorModal');\n  }\n\n  public async activate(model: DimensionSelectorModel): Promise<void> {\n    this.logger.debug('DimensionSelectorModal activate');\n    this.questionaryId = model.questionaryId;\n    this.questionaryName = model.questionaryName;\n    this.questionaryGroupThematicAssociates = model.questionaryGroupThematicAssociates || [];\n    this.isActivation = model.isActivation || false;\n\n    try {\n      let allDimensions = await this.companyQuestionaryService.getAvailableByQuestionaryId(this.questionaryId);\n      this.dimensions = allDimensions.filter(d => d.isDisabled == false);\n    } catch (error) {\n      this.notification.error(error);\n    }\n\n    const associatesForQuestionary = this.questionaryGroupThematicAssociates\n      .filter(a => a.questionaryId === this.questionaryId);\n    this.selectedDimensionIds = associatesForQuestionary.map(a => a.thematicGroupId);\n    this.selectedVariableIds = associatesForQuestionary\n      .filter(a => a.thematicVariableId != null)\n      .map(a => a.thematicVariableId);\n\n    this.logger.debug('selectedDimensionIds:', this.selectedDimensionIds);\n    this.logger.debug('selectedVariableIds:', this.selectedVariableIds);\n\n    this.updateSelectionLabels();\n\n    this.subscription = this.bindingEngine\n      .collectionObserver(this.selectedDimensionIds)\n      .subscribe(() => this.updateSelectionLabels());\n  }\n\n  private updateSelectionLabels(): void {\n    this.selectionLabels = [];\n    this.totalAverageTime = 0;\n    if (!this.selectedDimensionIds || !this.dimensions) return;\n    this.selectedDimensionIds.forEach(id => {\n      const dim = this.dimensions.find(d => d.id === id);\n      if (dim) {\n        this.selectionLabels.push(dim.name);\n        this.totalAverageTime += +(dim.averageTime || 0);\n      }\n    });\n    this.logger.debug('selectionLabels updated:', this.selectionLabels);\n    this.logger.debug('totalAverageTime updated:', this.totalAverageTime);\n  }\n\n  private buildAssociates(): QuestionaryGroupThematicAssociate[] | ActivationThematicAssociate[] {\n    if (!this.selectedDimensionIds) return [];\n\n    if (this.isActivation) {\n      let associates: ActivationThematicAssociate[] = [];\n      this.selectedDimensionIds.forEach(dimId => {\n        const dim = this.dimensions.find(d => d.id === dimId);\n        let associate = new ActivationThematicAssociate();\n        associate.questionaryId = this.questionaryId;\n        associate.thematicGroupId = dimId;\n        associate.thematicVariableId = dim ? dim.thematicVariableId : null;\n        associates.push(associate);\n      });\n      return associates;\n    } else {\n      let associates: QuestionaryGroupThematicAssociate[] = [];\n      this.selectedDimensionIds.forEach(dimId => {\n        const dim = this.dimensions.find(d => d.id === dimId);\n        let associate = new QuestionaryGroupThematicAssociate();\n        associate.questionaryId = this.questionaryId;\n        associate.thematicGroupId = dimId;\n        associate.thematicVariableId = dim ? dim.thematicVariableId : null;\n        associates.push(associate);\n      });\n      return associates;\n    }\n  }\n\n  public accept(): void {\n    const newAssociates = this.buildAssociates();\n    this.logger.debug('accept - associates count:', newAssociates.length);\n    this.logger.debug('accept - totalAverageTime:', this.totalAverageTime);\n    const result: DimensionSelectorResult = {\n      questionaryId: this.questionaryId,\n      questionaryName: this.questionaryName,\n      associates: newAssociates,\n      totalAverageTime: this.totalAverageTime\n    };\n    this.dialogController.ok(result);\n  }\n\n  public cancel(): void {\n    if (this.subscription) {\n      this.subscription.dispose();\n    }\n    this.dialogController.cancel();\n  }\n\n  public deactivate(): void {\n    if (this.subscription) {\n      this.subscription.dispose();\n    }\n  }\n}\n","module.exports = \"<template> <require from=./multiselector-dimensions></require> <require from=../../common/resources/value-converters/filter></require> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=cancel()> <i class=material-icons>close</i> </button> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <h4>${'main.admin.pages.questionaries.questions.dimensions' & t} - ${questionaryName}</h4> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <input type=text t=[placeholder]ux_datatable.search_placeholder name=searchValue class=form-control value.bind=\\\"searchValue & debounce:500\\\"/> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> ${'main.admin.pages.test_management.questionary_groups.selected_dimensions' & t} <ul> <li repeat.for=\\\"label of selectionLabels\\\">${label}</li> </ul> <strong>${'main.admin.pages.test_management.questionary_groups.total_average_time' & t}: ${totalAverageTime} min</strong> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <multiselector-dimensions items.bind=\\\"dimensions | genericFilter:searchValue:definedColumns:true\\\" id-prop=id name-prop=name variable-id-prop=thematicVariableId selected-ids.two-way=selectedDimensionIds selected-variable-ids.two-way=selectedVariableIds> </multiselector-dimensions> </div> </div> </ux-dialog-body> <ux-dialog-footer> <button attach-focus=true class=\\\"btn btn-primary btn-round\\\" click.delegate=accept() t=commands.accept>Accept</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=cancel() t=commands.cancel>Cancel</button> </ux-dialog-footer> </ux-dialog> </template> \";","module.exports = \"<template bindable=\\\"size, disc, pictureUrl, initials\\\"> <require from=../../models/questionaries/discViewEngineHooks></require> <span if.bind=pictureUrl> <span if.bind=\\\"disc === null\\\"> <span class=centered-photo> <img class=\\\"avatar rounded-circle\\\" alt=48x48 width.bind=size height.bind=size src.bind=pictureUrl> </span> </span> <span if.bind=\\\"disc >= 0\\\"> <span class=centered-photo> <img if.bind=\\\"disc === Disc.D\\\" class=\\\"determinated avatar rounded-circle\\\" alt.bind=disc width.bind=size height.bind=size src.bind=pictureUrl> <img if.bind=\\\"disc === Disc.I\\\" class=\\\"influencer avatar rounded-circle\\\" alt.bind=disc width.bind=size height.bind=size src.bind=pictureUrl> <img if.bind=\\\"disc === Disc.S\\\" class=\\\"serene avatar rounded-circle\\\" alt.bind=disc width.bind=size height.bind=size src.bind=pictureUrl> <img if.bind=\\\"disc === Disc.C\\\" class=\\\"conscientious avatar rounded-circle\\\" alt.bind=disc width.bind=size height.bind=size src.bind=pictureUrl> </span> </span> </span> <span if.bind=!pictureUrl> <span if.bind=\\\"disc === null\\\"> <svg class=\\\"avatar rounded-circle\\\" xmlns=http://www.w3.org/2000/svg pointer-events=none width.bind=size height.bind=size><text text-anchor=middle y=50% x=50% dy=0.35em pointer-events=auto fill=#ffffff font-family=\\\"HelveticaNeue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica, Arial,Lucida Grande, sans-serif\\\" style=font-weight:400;font-size:20px>${initials}</text></svg> </span> <span if.bind=\\\"disc >= 0\\\"> <svg if.bind=\\\"disc === Disc.D\\\" class=\\\"determinated avatar rounded-circle\\\" xmlns=http://www.w3.org/2000/svg pointer-events=none width.bind=size height.bind=size><text text-anchor=middle y=50% x=50% dy=0.35em pointer-events=auto fill=#ffffff font-family=\\\"HelveticaNeue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica, Arial,Lucida Grande, sans-serif\\\" style=font-weight:400;font-size:20px>${initials}</text></svg> <svg if.bind=\\\"disc === Disc.I\\\" class=\\\"influencer avatar rounded-circle\\\" xmlns=http://www.w3.org/2000/svg pointer-events=none width.bind=size height.bind=size><text text-anchor=middle y=50% x=50% dy=0.35em pointer-events=auto fill=#ffffff font-family=\\\"HelveticaNeue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica, Arial,Lucida Grande, sans-serif\\\" style=font-weight:400;font-size:20px>${initials}</text></svg> <svg if.bind=\\\"disc === Disc.S\\\" class=\\\"serene avatar rounded-circle\\\" xmlns=http://www.w3.org/2000/svg pointer-events=none width.bind=size height.bind=size><text text-anchor=middle y=50% x=50% dy=0.35em pointer-events=auto fill=#ffffff font-family=\\\"HelveticaNeue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica, Arial,Lucida Grande, sans-serif\\\" style=font-weight:400;font-size:20px>${initials}</text></svg> <svg if.bind=\\\"disc === Disc.C\\\" class=\\\"conscientious avatar rounded-circle\\\" xmlns=http://www.w3.org/2000/svg pointer-events=none width.bind=size height.bind=size><text text-anchor=middle y=50% x=50% dy=0.35em pointer-events=auto fill=#ffffff font-family=\\\"HelveticaNeue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica, Arial,Lucida Grande, sans-serif\\\" style=font-weight:400;font-size:20px>${initials}</text></svg> </span> </span> </template> \";","import { autoinject } from 'aurelia-framework';\n\n@autoinject()\nexport class EnvWarning {\n\n  private isStage: boolean = false;\n  private isDev: boolean = false;\n\n  constructor(\n  ) {\n\n    \n  }\n\n  public attached() {\n    this.isStage = window.location.href.indexOf(\"stage\") > 0;\n    this.isDev = window.location.href.indexOf(\"localhost\") > 0;\n  }\n}\n","module.exports = \"<template> <div if.bind=isStage class=\\\"alert alert-warning\\\" role=alert> <div class=\\\"row justify-content-center\\\"> <div class=\\\"col-md-2 col-12\\\"> Stage! </div> </div> </div> <div if.bind=isDev class=\\\"alert alert-warning\\\" role=alert> <div class=\\\"row justify-content-center\\\"> <div class=\\\"col-md-2 col-12\\\"> Development! </div> </div> </div> </template> \";","import { autoinject, bindable, bindingMode } from 'aurelia-framework';\nimport { ValidationController, ValidationRules } from 'aurelia-validation';\nimport { ResponseOption } from 'models/questions/response-option';\nimport { I18N } from 'aurelia-i18n';\n\n@autoinject()\nexport class EventReconstructionResponseOptions {\n  @bindable({ defaultBindingMode: bindingMode.twoWay }) items: ResponseOption[] = [];\n  @bindable isEvaluationQuestion: boolean = false;\n  @bindable validationController: ValidationController;\n\n  private i18n: I18N;\n\n  constructor(i18n: I18N) {\n    this.i18n = i18n;\n  }\n\n  attached(): void {\n    for (const option of this.items) {\n      this.applyOptionValidation(option);\n    }\n  }\n\n  addOption(): void {\n    const option = new ResponseOption();\n    option.id = 0;\n    option.order = this.items.length + 1;\n    option.isColumn = false;\n    option.option = \"\";\n    option.weight = 0;\n    option.children = [];\n    this.items.push(option);\n    this.applyOptionValidation(option);\n  }\n\n  deleteOption(index: number): void {\n    const option = this.items[index];\n    this.validationController.removeObject(option);\n    this.items.splice(index, 1);\n  }\n\n  validateBusinessRules(): string[] {\n    const errors: string[] = [];\n    if (this.items.length === 0) {\n      errors.push(\"main.admin.pages.modular-questionaries.questions.errors.create_at_least_one_question\");\n    }\n    // Validate unique orders\n    const orders = this.items.map(i => Number(i.order));\n    const uniqueOrders = new Set(orders);\n    if (orders.length > 0 && uniqueOrders.size !== orders.length) {\n      errors.push(\"main.admin.pages.modular_questionaries.questions.order_must_be_unique\");\n    }\n    // Validate all options have weight > 0 for evaluation questions\n    if (this.isEvaluationQuestion && this.items.length > 0) {\n      const allHaveWeight = this.items.every(i => i.weight > 0);\n      if (!allHaveWeight) {\n        errors.push(\"main.admin.pages.modular_questionaries.questions.errors.all_responses_must_have_weight\");\n      }\n    }\n    return errors;\n  }\n\n  private applyOptionValidation(option: ResponseOption): void {\n    ValidationRules\n      .ensure(\"option\")\n      .displayName(\"main.admin.pages.modular_questionaries.questions.response\")\n      .required()\n      .withMessage(this.i18n.tr(\"main.admin.pages.modular_questionaries.questions.response_required\"))\n      .ensure(\"order\")\n      .displayName(\"main.admin.pages.questionaries.questions.order\")\n      .required()\n      .withMessage(this.i18n.tr(\"main.admin.pages.modular_questionaries.questions.order_required\"))\n      .ensure(\"weight\")\n      .displayName(\"main.admin.pages.modular-questionaries.questions.weight\")\n      .required()\n      .satisfies(value => value >= 0 && value <= 100)\n      .withMessage(this.i18n.tr(\"main.admin.pages.modular-questionaries.questions.range\"))\n      .on(option);\n  }\n}\n","module.exports = \"<template> <h4>${'main.admin.pages.modular-questionaries.questions.responses' & t}</h4> <ul class=list-group> <li class=list-group-item if.bind=\\\"items.length > 0\\\"> <div class=\\\"row align-items-center\\\"> <div class=\\\"col-2 text-center\\\"> <strong>${'main.admin.pages.questionaries.questions.order' & t}</strong> </div> <div class=col-7></div> <div class=\\\"col-2 text-center\\\"> <strong>${'main.admin.pages.modular-questionaries.questions.weight' & t}</strong> </div> <div class=col-1></div> </div> </li> <li class=list-group-item repeat.for=\\\"item of items\\\"> <div class=\\\"row align-items-center\\\"> <div class=col-2> <input type=number value.bind=item.order class=\\\"form-control text-center\\\" min=0 /> </div> <div class=col-7> <input type=text value.bind=\\\"item.option & validate\\\" class=form-control t=[placeholder]main.admin.pages.modular_questionaries.questions.write_response /> </div> <div class=col-2> <input type=number value.bind=\\\"item.weight & validate\\\" min=0 max=100 class=\\\"form-control text-center\\\"/> </div> <div class=\\\"col-1 text-center\\\"> <button type=button class=\\\"btn btn-link p-0\\\" click.delegate=deleteOption($index)> <i class=material-icons>archive</i> </button> </div> </div> </li> </ul> <br/> <div class=\\\"row align-items-center\\\"> <div class=col-auto> <button type=button class=\\\"btn btn-primary btn-round\\\" click.delegate=addOption()> <i class=material-icons>add</i> </button> </div> </div> </template> \";","import { autoinject, bindable, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { QuestionaryService } from \"main/admin/services/questionaries/questionary-service\";\n\n@autoinject()\nexport class ExportQuestionaryQuestionsCard {\n  @bindable public questionaryId: number;\n  @bindable public exportFunction: (params: { questionaryId: number }) => Promise<any>;\n  @bindable public onExported: () => Promise<void>;\n  @bindable public xlsxExampleUrl: string;\n  @bindable public successMessage: string = \"main.admin.pages.modular-questionaries.question.questions_exported\";\n\n  public isExporting: boolean = false;\n  private logger: Logger;\n\n  constructor(\n    private notification: Notification,\n    private questionaryService: QuestionaryService\n  ) {\n    this.logger = LogManager.getLogger(\"ExportQuestionaryQuestionsCard\");\n  }\n\n  public async createLogFile(): Promise<void> {\n    if (!this.questionaryId) return;\n    this.isExporting = true;\n    try {\n      await this.exportFunction({ questionaryId: this.questionaryId });\n      this.notification.success(this.successMessage);\n      \n      if (this.onExported) {\n        await this.onExported();\n      }\n    } catch (error) {\n      this.notification.error(error);\n    } finally {\n      this.isExporting = false;\n    }\n  }\n}\n","module.exports = \"<template> <div class=\\\"card card-shadow card-round mt-3\\\"> <div class=card-body> <h5 class=card-title> ${'main.admin.pages.modular-questionaries.question.export_card_title' & t} </h5> <p t=[html]main.admin.pages.modular-questionaries.question.export_card_info>Export items</p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=createLogFile() disabled.bind=isExporting t=commands.export> New bulk activation </button> </div> </div> </template> \";","import { autoinject, bindable, bindingMode } from 'aurelia-framework';\nimport { ValidationController, ValidationRules } from 'aurelia-validation';\nimport { ResponseOption } from 'models/questions/response-option';\nimport { I18N } from 'aurelia-i18n';\n\n@autoinject()\nexport class IllustratedDialogueResponseOptions {\n  @bindable({ defaultBindingMode: bindingMode.twoWay }) items: ResponseOption[] = [];\n  @bindable isEvaluationQuestion: boolean = false;\n  @bindable validationController: ValidationController;\n\n  private i18n: I18N;\n\n  constructor(i18n: I18N) {\n    this.i18n = i18n;\n  }\n\n  attached(): void {\n    for (const option of this.items) {\n      this.applyOptionValidation(option);\n    }\n  }\n\n  addOption(): void {\n    const option = new ResponseOption();\n    option.id = 0;\n    option.order = this.items.length + 1;\n    option.isColumn = false;\n    option.option = \"\";\n    option.weight = 0;\n    option.children = [];\n    this.items.push(option);\n    this.applyOptionValidation(option);\n  }\n\n  deleteOption(index: number): void {\n    const option = this.items[index];\n    this.validationController.removeObject(option);\n    this.items.splice(index, 1);\n  }\n\n  validateBusinessRules(): string[] {\n    const errors: string[] = [];\n    if (this.items.length === 0) {\n      errors.push(\"main.admin.pages.modular-questionaries.questions.errors.create_at_least_one_question\");\n    }\n    // Validate unique orders\n    const orders = this.items.map(i => Number(i.order));\n    const uniqueOrders = new Set(orders);\n    if (orders.length > 0 && uniqueOrders.size !== orders.length) {\n      errors.push(\"main.admin.pages.modular_questionaries.questions.order_must_be_unique\");\n    }\n    // At least one option must have weight > 0 for evaluation questions\n    if (this.isEvaluationQuestion && this.items.length > 0) {\n      const hasPositiveWeight = this.items.some(i => i.weight > 0);\n      if (!hasPositiveWeight) {\n        errors.push(\"main.admin.pages.modular-questionaries.questions.errors.at_least_one_question_with_weight\");\n      }\n    }\n    return errors;\n  }\n\n  private applyOptionValidation(option: ResponseOption): void {\n    ValidationRules\n      .ensure(\"option\")\n      .displayName(\"main.admin.pages.modular_questionaries.questions.response\")\n      .required()\n      .withMessage(this.i18n.tr(\"main.admin.pages.modular_questionaries.questions.response_required\"))\n      .ensure(\"order\")\n      .displayName(\"main.admin.pages.questionaries.questions.order\")\n      .required()\n      .withMessage(this.i18n.tr(\"main.admin.pages.modular_questionaries.questions.order_required\"))\n      .ensure(\"weight\")\n      .displayName(\"main.admin.pages.modular-questionaries.questions.weight\")\n      .required()\n      .satisfies(value => value >= 0 && value <= 100)\n      .withMessage(this.i18n.tr(\"main.admin.pages.modular-questionaries.questions.range\"))\n      .on(option);\n  }\n}\n","module.exports = \"<template> <h4>${'main.admin.pages.modular-questionaries.questions.responses' & t}</h4> <ul class=list-group> <li class=list-group-item if.bind=\\\"items.length > 0\\\"> <div class=\\\"row align-items-center\\\"> <div class=\\\"col-2 text-center\\\"> <strong>${'main.admin.pages.questionaries.questions.order' & t}</strong> </div> <div class=col-7></div> <div class=\\\"col-2 text-center\\\"> <strong>${'main.admin.pages.modular-questionaries.questions.weight' & t}</strong> </div> <div class=col-1></div> </div> </li> <li class=list-group-item repeat.for=\\\"item of items\\\"> <div class=\\\"row align-items-center\\\"> <div class=col-2> <input type=number value.bind=item.order class=\\\"form-control text-center\\\" min=0 /> </div> <div class=col-7> <input type=text value.bind=\\\"item.option & validate\\\" class=form-control t=[placeholder]main.admin.pages.modular_questionaries.questions.write_response /> </div> <div class=col-2> <input type=number value.bind=\\\"item.weight & validate\\\" min=0 max=100 class=\\\"form-control text-center\\\"/> </div> <div class=\\\"col-1 text-center\\\"> <button type=button class=\\\"btn btn-link p-0\\\" click.delegate=deleteOption($index)> <i class=material-icons>archive</i> </button> </div> </div> </li> </ul> <br/> <div class=\\\"row align-items-center\\\"> <div class=col-auto> <button type=button class=\\\"btn btn-primary btn-round\\\" click.delegate=addOption()> <i class=material-icons>add</i> </button> </div> </div> </template> \";","import { Logger } from 'aurelia-logging';\nimport { autoinject, bindable, LogManager, observable } from 'aurelia-framework';\nimport { Company } from 'models/companies/company';\nimport { CompanyInfoService } from '../services/companies/company-info-service';\nimport { Person } from 'models/test-person/person';\nimport { Router } from 'aurelia-router';\nimport { InboxByUserStatus } from 'models/test-core/inbox/inboxByUserStatus';\nimport { Inbox } from 'models/test-core/inbox/inbox';\nimport { AgreementService } from 'main/admin/services/agreements/agreement-service';\nimport { InboxService } from 'main/admin/services/test-core/inbox-service';\nimport { Notification } from \"common/services/notification\";\n@autoinject()\nexport class InboxNotification {\n  private logger: Logger;\n\n  @bindable\n  @observable\n  private currentCompany: Company;\n\n  @bindable\n  @observable\n  private currentPerson: Person;\n\n  private logoUrl: string;\n\n  public isDisable: boolean = false;\n  public currentCompanyId: number;\n  private inbox: Inbox = new Inbox();\n  private inboxList: Inbox[] = [];\n  private unRead: number;\n  private buttonDisable: boolean = true;\n  constructor(\n    private companyInfoService: CompanyInfoService,\n    private agreementService: AgreementService,\n    private inboxService: InboxService,\n    private router: Router,\n    private notification: Notification,\n  ) {\n\n    this.logger = LogManager.getLogger(\"CompanyLogo\");\n  }\n\n  public async currentCompanyChanged() {\n    \n    if (this.currentCompany != null) {  \n      this.buttonDisable = false;   \n      this.currentCompanyId = this.currentCompany.id;\n      await this.getInboxByCurrentCompany(this.currentCompanyId);\n    } \n    else \n      this.buttonDisable = true;   \n  }\n\n  public async currentPersonChanged() {\n  \n    if (this.currentPerson != null) {\n      this.buttonDisable = false;\n      this.currentCompanyId = this.currentPerson.companyId;\n      await this.getInboxByCurrentCompany(this.currentCompanyId);\n    }\n    else \n      this.buttonDisable = true;  \n  }\n  \n  public submit(){\n    this.isDisable = true;\n    this.router.navigate(`company/${this.currentCompanyId}/admin/inbox`);\n  }\n\n\n  private async getInboxByCurrentCompany(companyId: number){\n    try {\n      \n      let planIdsTest = (await this.agreementService.getAgreementsByCompanyId(companyId,false)).map(x=> x.id);\n       let planIdsSelection = (await this.agreementService.getAgreementsByCompanyId(companyId,true)).map(x=> x.id);\n  \n      if (planIdsTest.length > 0 )\n        this.inbox.planTest = planIdsTest;\n      if (planIdsSelection.length > 0)\n        this.inbox.planSelection = planIdsSelection;  \n  \n        this.unRead = (await this.inboxService.getAllByCompany(companyId,this.inbox)).filter(x=> x.inboxByUserStatus == InboxByUserStatus.Received).length;\n       \n        if (this.unRead > 99)       \n        this.unRead = 99;  \n\n        if (this.unRead == 0)\n        this.isDisable = true;\n\n    } catch (error) { \n      this.notification.error(error);\n    }\n  }\n}\n","module.exports = \"<template> <button if.bind=!buttonDisable class=\\\"notifications btn btn-badge btn-link\\\" click.delegate=submit()> <i class=material-icons>notifications</i> <span if.bind=!isDisable class=\\\"badge badge-light badge-icon\\\">${unRead} </span> <span class=sr-only>notificaciones sin leer</span> </button> </template> \";","import {\n  FrameworkConfiguration,\n  PLATFORM\n} from 'aurelia-framework';\n\nexport function configure(config: FrameworkConfiguration) {\n  config.globalResources([\n\n    PLATFORM.moduleName('./env-warning'),\n\n    PLATFORM.moduleName('./disc-avatar.html'),\n    PLATFORM.moduleName('./company-tags-input'),\n  ]);\n}\n","import { autoinject } from 'aurelia-framework';\nimport { DialogController } from \"aurelia-dialog\";\n\n@autoinject()\nexport class InteractionTypeChangeConfirmation {\n\n  constructor(private dialogController: DialogController) {\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'main.admin.pages.modular_questionaries.questions.interaction_type_change_confirmation' & t}</h2> <p>${'main.admin.pages.modular_questionaries.questions.interaction_type_change_warning' & t}</p> </ux-dialog-body> <ux-dialog-footer> <button attach-focus=true class=\\\"btn btn-primary btn-round\\\" click.delegate=dialogController.ok() t=commands.accept>Accept</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel() t=commands.cancel>Cancel</button> </ux-dialog-footer> </ux-dialog> </template> \";","import { autoinject, bindable, bindingMode } from 'aurelia-framework';\nimport { ValidationController, ValidationRules } from 'aurelia-validation';\nimport { ResponseOption } from 'models/questions/response-option';\nimport { I18N } from 'aurelia-i18n';\n\n@autoinject()\nexport class MicrostoryResponseOptions {\n  @bindable({ defaultBindingMode: bindingMode.twoWay }) items: ResponseOption[] = [];\n  @bindable validationController: ValidationController;\n  @bindable isEvaluationQuestion: boolean = false;\n\n  private i18n: I18N;\n\n  constructor(i18n: I18N) {\n    this.i18n = i18n;\n  }\n\n  attached(): void {\n    // Apply validation to existing options (loaded from backend)\n    for (const parent of this.items) {\n      this.applyParentValidation(parent);\n      if (parent.children) {\n        parent.children.forEach(child => this.applyChildValidation(child, parent));\n      }\n    }\n  }\n\n  addRootOption(): void {\n    const option = new ResponseOption();\n    option.id = 0;\n    option.order = this.items.length;\n    option.isColumn = false;\n    option.option = \"\";\n    option.weight = 0;\n    option.children = [];\n    this.items.push(option);\n    this.applyParentValidation(option);\n  }\n\n  deleteRootOption(item: ResponseOption): void {\n    item.children.forEach(child => {\n      this.validationController.removeObject(child);\n    });\n    this.validationController.removeObject(item);\n    const idx = this.items.indexOf(item);\n    if (idx > -1) this.items.splice(idx, 1);\n  }\n\n  addChildOption(parent: ResponseOption): void {\n    const child = new ResponseOption();\n    child.id = 0;\n    child.order = parent.children.length;\n    child.isColumn = false;\n    child.option = \"\";\n    child.children = [];\n    child.parentId = parent.id;\n    child.weight = 0;\n    parent.children.push(child);\n    this.applyChildValidation(child, parent);\n  }\n\n  removeChildOption(parent: ResponseOption, childIndex: number): void {\n    const child = parent.children[childIndex];\n    this.validationController.removeObject(child);\n    parent.children.splice(childIndex, 1);\n  }\n\n  validateBusinessRules(): string[] {\n    const errors: string[] = [];\n    for (const parent of this.items) {\n      if (!parent.children || parent.children.length === 0) {\n        errors.push(\"main.admin.pages.modular_questionaries.questions.errors.response_requires_associated_responses\");\n      } else {\n        const hasPositiveWeight = parent.children.some(c => c.weight > 0);\n        if (!hasPositiveWeight && this.isEvaluationQuestion) {\n          errors.push(\"main.admin.pages.modular_questionaries.questions.errors.at_least_one_associated_response_with_weight\");\n        }\n      }\n    }\n    if (this.items.length === 0) {\n      errors.push(\"main.admin.pages.modular-questionaries.questions.errors.create_at_least_one_question\");\n    }\n    return errors;\n  }\n\n  private applyParentValidation(option: ResponseOption): void {\n    ValidationRules\n      .ensure(\"option\")\n      .displayName(\"main.admin.pages.modular_questionaries.questions.response\")\n      .required()\n      .withMessage(this.i18n.tr(\"main.admin.pages.modular_questionaries.questions.response_required\"))\n      .on(option);\n  }\n\n  private applyChildValidation(child: ResponseOption, parent: ResponseOption): void {\n    ValidationRules\n      .ensure(\"option\")\n      .displayName(\"main.admin.pages.modular_questionaries.questions.associated_response\")\n      .required()\n      .withMessage(this.i18n.tr(\"main.admin.pages.modular_questionaries.questions.associated_response_required\"))\n      .ensure(\"weight\")\n      .displayName(\"main.admin.pages.modular-questionaries.questions.weight\")\n      .required()\n      .satisfies(value => value >= 0 && value <= 100)\n      .withMessage(this.i18n.tr(\"main.admin.pages.modular-questionaries.questions.range\"))\n      .on(child);\n  }\n}\n","module.exports = \"<template> <h4>${'main.admin.pages.modular-questionaries.questions.responses' & t}</h4> <ul class=list-group> <li class=list-group-item if.bind=\\\"items.length > 0\\\"> <div class=\\\"row align-items-center\\\"> <div class=col-5></div> <div class=col-6> <div class=row> <div class=col-8></div> <div class=col-2><strong>${'main.admin.pages.modular-questionaries.questions.weight' & t}</strong></div> <div class=col-2></div> </div> </div> <div class=col-1></div> </div> </li> <li class=list-group-item repeat.for=\\\"item of items\\\"> <div class=\\\"row align-items-center\\\"> <div class=col-5> <input type=text value.bind=\\\"item.option & validate\\\" class=form-control t=[placeholder]main.admin.pages.modular_questionaries.questions.write_response /> </div> <div class=col-6> <button type=button class=\\\"btn btn-outline-primary btn-sm btn-round w-100\\\" if.bind=\\\"item.children.length === 0\\\" click.delegate=addChildOption(item)> <i class=material-icons>add</i> ${'main.admin.pages.modular_questionaries.questions.associate_responses' & t} </button> <div if.bind=\\\"item.children.length > 0\\\"> <div class=\\\"row mb-1\\\" repeat.for=\\\"child of item.children\\\"> <div class=col-8> <input type=text value.bind=\\\"child.option & validate\\\" class=\\\"form-control form-control-sm\\\" t=[placeholder]main.admin.pages.modular_questionaries.questions.associated_response /> </div> <div class=\\\"col-2 m-0 p-0\\\"> <input type=number value.bind=\\\"child.weight & validate\\\" min=0 max=100 class=\\\"form-control form-control-sm ml-1 text-center\\\"/> </div> <div class=\\\"col-2 m-0 p-0 text-center\\\"> <button type=button class=\\\"btn btn-link btn-sm p-0\\\" click.delegate=\\\"removeChildOption(item, $index)\\\"> <i class=material-icons>close</i> </button> </div> </div> <button type=button class=\\\"btn btn-outline-primary btn-sm btn-round mt-1\\\" click.delegate=addChildOption(item)> <i class=material-icons>add</i> </button> </div> </div> <div class=\\\"col-1 text-center\\\"> <button type=button class=\\\"btn btn-link p-0\\\" click.delegate=deleteRootOption(item)> <i class=material-icons>archive</i> </button> </div> </div> </li> </ul> <br/> <button type=button class=\\\"btn btn-primary btn-round\\\" click.delegate=addRootOption()> <i class=material-icons>add</i> </button> </template> \";","import { autoinject, bindable, bindingMode } from 'aurelia-framework';\nimport { ValidationController, ValidationRules } from 'aurelia-validation';\nimport { ResponseOption } from 'models/questions/response-option';\nimport { I18N } from 'aurelia-i18n';\n\n@autoinject()\nexport class MultipleChoiceListResponseOptions {\n  @bindable({ defaultBindingMode: bindingMode.twoWay }) items: ResponseOption[] = [];\n  @bindable validationController: ValidationController;\n  @bindable isEvaluationQuestion: boolean = false;\n\n  private i18n: I18N;\n\n  constructor(i18n: I18N) {\n    this.i18n = i18n;\n  }\n\n  attached(): void {\n    for (const option of this.items) {\n      this.applyOptionValidation(option);\n    }\n  }\n\n  addOption(): void {\n    const option = new ResponseOption();\n    option.id = 0;\n    option.order = this.items.length;\n    option.isColumn = false;\n    option.option = \"\";\n    option.weight = 0;\n    option.children = [];\n    this.items.push(option);\n    this.applyOptionValidation(option);\n  }\n\n  deleteOption(index: number): void {\n    const option = this.items[index];\n    this.validationController.removeObject(option);\n    this.items.splice(index, 1);\n  }\n\n  validateBusinessRules(): string[] {\n    const errors: string[] = [];\n    if (this.items.length === 0) {\n      errors.push(\"main.admin.pages.modular-questionaries.questions.errors.create_at_least_one_question\");\n    }\n    if (this.isEvaluationQuestion) {\n      const hasPositiveWeight = this.items.some(i => i.weight > 0);\n      if (!hasPositiveWeight && this.items.length > 0) {\n        errors.push(\"main.admin.pages.modular_questionaries.questions.weight_range_since_one\");\n      }\n    }\n    return errors;\n  }\n\n  private applyOptionValidation(option: ResponseOption): void {\n    ValidationRules\n      .ensure(\"option\")\n      .displayName(\"main.admin.pages.modular_questionaries.questions.response\")\n      .required()\n      .withMessage(this.i18n.tr(\"main.admin.pages.modular_questionaries.questions.response_required\"))\n      .ensure(\"weight\")\n      .displayName(\"main.admin.pages.modular-questionaries.questions.weight\")\n      .required()\n      .satisfies(value => value >= 0 && value <= 100)\n      .withMessage(this.i18n.tr(\"main.admin.pages.modular-questionaries.questions.range\"))\n      .on(option);\n  }\n}\n","module.exports = \"<template> <h4>${'main.admin.pages.modular-questionaries.questions.responses' & t}</h4> <ul class=list-group> <li class=list-group-item if.bind=\\\"items.length > 0\\\"> <div class=row> <div class=col-8></div> <div class=\\\"col-2 text-center\\\"> <strong>${'main.admin.pages.modular-questionaries.questions.weight' & t}</strong> </div> <div class=col-2></div> </div> </li> <li class=list-group-item repeat.for=\\\"item of items\\\"> <div class=row> <div class=col-8> <div class=form-group> <input type=text value.bind=\\\"item.option & validate\\\" class=form-control t=[placeholder]main.admin.pages.modular_questionaries.questions.write_response /> </div> </div> <div class=col-2> <div class=form-group> <input type=number value.bind=\\\"item.weight & validate\\\" min=0 max=100 class=form-control /> </div> </div> <div class=col-2> <button type=button class=\\\"btn btn-link\\\" click.delegate=deleteOption($index)> <i class=material-icons>archive</i> </button> </div> </div> </li> </ul> <br/> <button type=button class=\\\"btn btn-primary btn-round\\\" click.delegate=addOption()> <i class=material-icons>add</i> </button> </template> \";","import { autoinject, bindable, bindingMode } from 'aurelia-framework';\nimport { QuestionaryLanguage } from 'models/questionaries/questionaryLanguage';\nimport { TestQuestionary } from 'models/test-core/test-questionary';\n\n@autoinject()\nexport class MultiselectThtCustomElement {\n  @bindable({ defaultBindingMode: bindingMode.twoWay }) value: QuestionaryLanguage[] = [];\n  @bindable({ defaultBindingMode: bindingMode.twoWay }) genericFilter = [];\n  @bindable paramsList: TestQuestionary[] = [];\n\n  private checkedMap: { [key: string]: boolean } = {};\n\n  constructor() {\n  }\n\n  public attached() {\n    this.syncCheckedMap();\n  }\n\n  public valueChanged() {\n    this.syncCheckedMap();\n  }\n\n  public paramsListChanged() {\n    this.syncCheckedMap();\n  }\n\n  private syncCheckedMap() {\n    this.checkedMap = {};\n    if (this.paramsList && this.value) {\n      for (let i = 0; i < this.paramsList.length; i++) {\n        const option = this.paramsList[i];\n        const found = this.value.some(x => x.stringId == option.stringId);\n        this.checkedMap[option.stringId] = found;\n      }\n    }\n  }\n\n  private addRemoveQuestionary(questionary: TestQuestionary) {\n    const index = this.value.findIndex(x => x.stringId == questionary.stringId);\n    if (index !== -1) {\n      this.value.splice(index, 1);\n      this.checkedMap[questionary.stringId] = false;\n    } else {\n      let questionaryLanguage: QuestionaryLanguage = new QuestionaryLanguage();\n      questionaryLanguage.languageId = questionary.languageId;\n      questionaryLanguage.questionaryId = questionary.id;\n      questionaryLanguage.stringId = questionary.stringId;\n      this.value.push(questionaryLanguage);\n      this.checkedMap[questionary.stringId] = true;\n    }\n  }\n}\n","module.exports = \"<template> <div class=col-md-20 style=\\\"height:200px;border:1px solid #ced4da;border-radius:10px;overflow-y:scroll\\\"> <a class=\\\"dropdown-item form-check custom-control custom-checkbox\\\" repeat.for=\\\"option of paramsList\\\" style=background-color:#fff> <input type=checkbox id=multise_${option.stringId} checked.bind=checkedMap[option.stringId] change.delegate=addRemoveQuestionary(option)> <label if.bind=option.isNewTest>${option.name & t} ${'main.test.pages.people.is_new_test' & t}</label> <label if.bind=!option.isNewTest>${option.name & t}</label>  </a> </div> </template> \";","import { bindable, bindingMode } from 'aurelia-framework';\n\nexport class MultiselectorDimensions {\n  @bindable items = [];\n  @bindable idProp = 'id';\n  @bindable nameProp = 'name';\n  @bindable variableIdProp = 'thematicVariableId';\n  @bindable({ defaultBindingMode: bindingMode.twoWay }) selectedIds: number[] = [];\n  @bindable({ defaultBindingMode: bindingMode.twoWay }) selectedVariableIds: number[] = [];\n  @bindable showManipulationScale : boolean = false;\n\n  selectedMap: { [key: string]: boolean } = {};\n\n  attached() {\n    this.syncMap();\n  }\n\n  itemsChanged() {\n    this.syncMap();\n  }\n\n  selectedIdsChanged() {\n    this.syncMap();\n  }\n\n  selectedVariableIdsChanged() {\n    this.syncMap();\n  }\n\n  syncMap() {\n    this.selectedMap = {};\n    if (!this.items) return;\n    this.items.forEach(item => {\n      const id = item[this.idProp];\n      this.selectedMap[id] = Array.isArray(this.selectedIds) && this.selectedIds.indexOf(id) !== -1;\n    });\n  }\n\n  onChange(item) {\n    const id = item[this.idProp];\n    const variableId = item[this.variableIdProp];\n\n    if (!Array.isArray(this.selectedIds)) this.selectedIds = [];\n    if (!Array.isArray(this.selectedVariableIds)) this.selectedVariableIds = [];\n\n    if (this.selectedMap[id]) {\n      // Agregar\n      if (this.selectedIds.indexOf(id) === -1) {\n        this.selectedIds.push(id);\n      }\n      if (variableId != null && this.selectedVariableIds.indexOf(variableId) === -1) {\n        this.selectedVariableIds.push(variableId);\n      }\n    } else {\n      // Remover\n      const idx = this.selectedIds.indexOf(id);\n      if (idx !== -1) this.selectedIds.splice(idx, 1);\n\n      if (variableId != null) {\n        const vIdx = this.selectedVariableIds.indexOf(variableId);\n        if (vIdx !== -1) this.selectedVariableIds.splice(vIdx, 1);\n      }\n    }\n  }\n  get hasManipulationScaleSelected(): boolean {\n    if (!this.items || !this.selectedIds) return false;\n    return this.items.some(item => {\n      return item.isManipulationScale && this.selectedMap[item[this.idProp]];\n    });\n  }\n\n  get hasNonManipulationScaleSelected(): boolean {\n    if (!this.items || !this.selectedIds) return false;\n    return this.items.some(item => {\n      return !item.isManipulationScale && this.selectedMap[item[this.idProp]];\n    });\n  }\n}\n","module.exports = \"<template> <div class=form-group style=\\\"max-height:250px;overflow-y:auto;border:1px solid #dee2e6;border-radius:4px\\\"> <ul class=\\\"list-group list-group-flush\\\"> <li class=list-group-item repeat.for=\\\"item of items\\\" if.bind=\\\"showManipulationScale || !item.isManipulationScale\\\"> <div class=\\\"custom-control custom-checkbox\\\"> <input type=checkbox class=custom-control-input id=dimension_${item[idProp]} checked.bind=selectedMap[item[idProp]] change.delegate=onChange(item) disabled.bind=\\\"\\n                 (hasManipulationScaleSelected && !item.isManipulationScale) ||\\n                 (hasNonManipulationScaleSelected && item.isManipulationScale)\\n               \\\"/> <label class=custom-control-label for=dimension_${item[idProp]}>${item[nameProp]}</label> </div> </li> </ul> </div> </template> \";","import config from 'config.js';\nimport { autoinject, bindable, LogManager } from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { State } from 'common/store/store-model';\nimport { Router } from 'aurelia-router';\nimport { EventAggregator } from 'aurelia-event-aggregator';\n\n@autoinject()\nexport class NavBar {\n\n  private logger: Logger;\n  private manageUserUrl: string = \"\";\n  private micrositeUrl: string = \"\";\n  private publicPageCompanyLogo: string = \"\";\n  private isPublicActivationPage: boolean = false;\n\n  @bindable()\n  public state: State;\n\n  constructor(\n    private router: Router,\n    private ea: EventAggregator\n  ) {\n\n    this.logger = LogManager.getLogger('NavBar');\n\n    let backendUrl = config.URLS_BACKEND;\n    this.manageUserUrl = backendUrl + \"/user\";\n\n    let micrositeUrl = config.URLS_MICROSITE;\n    this.micrositeUrl = micrositeUrl;\n  }\n\n  public async attached() {\n    // Listen to router navigation events\n    this.ea.subscribe('router:navigation:success', () => {\n      this.checkIfPublicActivationPage();\n    });\n    \n    // Set event listener for public page company logo\n    this.ea.subscribe('public-company-logo-changed', (logoUrl: string) => {\n      console.log('NavBar received logo URL:', logoUrl);\n      this.setPublicCompanyLogo(logoUrl);\n    });\n    \n    // Check current route\n    this.checkIfPublicActivationPage();\n    console.log('Initial check - isPublicActivationPage:', this.isPublicActivationPage);\n    \n    // set an event when the user click the button logout and delete sessionStorage\n    let buttons = document.getElementsByTagName('button')\n    // TODO - best way to get that button\n    if (buttons.length > 2) {\n      buttons[2].addEventListener('click', () => sessionStorage.clear())\n    }\n  }\n  \n  public setPublicCompanyLogo(logoUrl: string): void {\n    console.log('Setting public company logo:', logoUrl);\n    this.publicPageCompanyLogo = logoUrl;\n    this.checkIfPublicActivationPage();\n    console.log('NavBar updated state - isPublicActivationPage:', this.isPublicActivationPage, 'logo:', this.publicPageCompanyLogo);\n  }\n  \n  private checkIfPublicActivationPage(): void {\n    const currentUrl = window.location.pathname;\n    const currentHash = window.location.hash;\n    \n    console.log('Checking URL - pathname:', currentUrl, 'hash:', currentHash);\n    \n    // Check both pathname and hash for manual-activation\n    this.isPublicActivationPage = currentUrl.includes('manual-activation') || \n                                 currentHash.includes('manual-activation') ||\n                                 currentUrl === '/manual-activation';\n                                 \n    console.log('Updated isPublicActivationPage to:', this.isPublicActivationPage);\n  }\n\n  // public async switchLanguage(language: Language): Promise<any> {\n  //   this.selectedLanguage = language;\n  //   return await this.i18n\n  //     .setLocale(this.selectedLanguage.culture);\n  // }\n\n  // selectModule(moduleName: string){\n  //   this.router.navigate(moduleName);\n  // }\n\n}\n","module.exports = \"<template> <require from=./company-selector></require> <require from=./company-logo></require> <require from=./view-wallet></require> <require from=./inbox-notification></require> <nav class=\\\"navbar sticky-top navbar-light align-items-center justify-content-between\\\"> <div class=\\\"navbar-nav nav align-items-center justify-content-start\\\"> <a class=navbar-brand href=/ > <company-logo if.bind=!isPublicActivationPage current-company.bind=state.currentCompany></company-logo> <company-logo if.bind=isPublicActivationPage external-logo-url.bind=publicPageCompanyLogo current-company.bind=state.currentCompany></company-logo> </a> <ul class=nav if.bind=!isPublicActivationPage> <li class=nav-item> <company-selector state.bind=state></company-selector> </li> </ul> </div> <div style=margin-right:72px;margin-left:auto class=\\\"navbar-nav nav align-items-center justify-content-start\\\"> <ul class=nav> <li class=nav-item> <view-wallet style=color:#005886 state.bind=state></view-wallet> </li> </ul> </div> <button class=navbar-toggler type=button data-toggle=collapse data-target=#navbarToggleSidebar aria-controls=navbarToggleSidebar aria-expanded=false aria-label=\\\"Toggle navigation\\\"> <span class=navbar-toggler-icon></span> </button> <div class=navbar-user> <inbox-notification current-company.bind=state.currentCompany></inbox-notification> <div class=nav-item> <a class=\\\"btn btn-link\\\" target=_blank href.bind=micrositeUrl> ${'main.components.navbar.microsite.title' & t}</a> </div> <div class=\\\"options nav-item dropdown\\\"> <a class=dropdown-toggle href=# id=userNavbarDropdownMenuLink data-toggle=dropdown aria-haspopup=true aria-expanded=false> <img if.bind=\\\"state.userBasicInfo && state.userBasicInfo.pictureUrl\\\" class=\\\"nav-avatar rounded-circle\\\" src.bind=state.userBasicInfo.pictureUrl> <img if.bind=\\\"!state.userBasicInfo || !state.userBasicInfo.pictureUrl\\\" class=\\\"nav-avatar rounded-circle\\\" src=\" + require(\"../../../assets/images/avatar.png\") + \"> </a> <div class=\\\"dropdown-menu dropdown-menu-right\\\" aria-labelledby=userNavbarDropdownMenuLink> <span class=dropdown-item> <h5>${state && state.userBasicInfo ? state.userBasicInfo.fullName : ''}</h5> </span> <a class=dropdown-item target=_self href.bind=manageUserUrl>${'main.components.navbar.manage_user' & t}</a> <open-id-connect-user-block></open-id-connect-user-block> </div> </div> </div> </nav> </template> \";","module.exports = \"<template bindable=navigation> <ul class=\\\"nav flex-column\\\"> <li class=nav-item repeat.for=\\\"route of navigation\\\"> <a class=\\\"nav-link ${route.isActive ? 'active' : ''}\\\" href.bind=route.href data-toggle=collapse data-target=#collapse_${route.config.name} aria-expanded=true aria-controls=collapse_${route.config.name}> <i class=\\\"material-icons-outlined ${route.settings.icon}\\\">${route.settings.icon.startsWith('t') ? '': route.settings.icon}</i> <span class=\\\"text ${route.title.length} ${route.title.length > 20 ? 'text-large' : ''}\\\">${route.title}</span> </a> <nav-menu if.bind=route.navigation navigation.bind=route.navigation id=collapse_${route.config.name} class=\\\"collapse collasible-content\\\"></nav-menu> </li> </ul> </template> \";","module.exports = \"<template bindable=organization> <require from=../../models/test-organization/organizationActivationTypeViewEngineHooks></require> <require from=../../models/questionaries/organizationTypeViewEngineHooks></require> <div if.bind=organization> <div class=row> <div class=col> <h3>${'main.test.pages.organizations.organization' & t}</h3> <h3> <a title=\\\"${'commands.view' & t}\\\" href=company/${organization.companyId}/test/organizations/organization/${organization.id}> ${organization.name} </a> </h3> </div> </div> <div class=row> <div class=col> <span if.bind=\\\"organization.highestDisc >= 0\\\" class=\\\"badge badge-pill badge-success\\\">${'main.test.pages.organizations.statuses.activated' & t}</span> <span if.bind=\\\"organization.highestDisc == null\\\" class=\\\"badge badge-pill badge-warning\\\">${'main.test.pages.organizations.statuses.processing' & t}</span> </div> </div> <div class=row> <div class=col> ${'main.test.pages.organizations.activation_types.title' & t}: ${'main.test.pages.organizations.activation_types.' + OrganizationActivationType[organization.organizationActivationType] & t} </div> </div> <div class=row> <div class=col> ${'main.test.pages.organizations.organization_types.title' & t}: ${'main.test.pages.organizations.organization_types.' + OrganizationType[organization.organizationType] & t} </div> </div> </div> </template> \";","module.exports = \"<template bindable=person> <div class=\\\"row mb-3\\\" if.bind=person> <div class=\\\"col-12 col-md-2\\\"> <disc-avatar size.bind=56 disc.bind=person.highestDisc picture-url.bind=person.pictureUrl initials.bind=person.initials></disc-avatar> </div> <div class=\\\"col-12 col-md-10\\\"> <div class=row> <div class=col> <h3> <a title=\\\"${'commands.view' & t}\\\" href=company/${person.companyId}/test/people/person/${person.id}> ${person.fullName} </a> </h3> </div> </div> <div class=row> <div class=col> ${'main.test.pages.people.document' & t}: ${person.document} </div> </div> <div class=row> <div class=col> ${'main.test.pages.people.email' & t}: <a class=\\\"btn btn-link p-0\\\" href=mailto:${person.email}>${person.email}</a> </div> </div> <div class=row> <div class=col> ${'main.test.pages.people.phone' & t}: ${person.phone} </div> </div> </div> </div> </template> \";","module.exports = \"<template bindable=\\\"companyNumber, position\\\"> <require from=../../models/test-position/positionActivationTypeViewEngineHooks></require> <div if.bind=position> <div class=row> <div class=col> <h3> ${'main.test.pages.position.position_edit.title' & t} </h3> <h3> <a title=\\\"${'commands.view' & t}\\\" href=company/${companyNumber}/test/positions/position/${position.id}> ${position.name} </a> </h3> </div> </div> <div class=row> <div class=col> <span if.bind=\\\"position.highestDisc >= 0\\\" class=\\\"badge badge-pill badge-success\\\">${'main.test.pages.position.position_list.statuses.activated' & t}</span> <span if.bind=\\\"position.highestDisc == null\\\" class=\\\"badge badge-pill badge-warning\\\">${'main.test.pages.position.position_list.statuses.processing' & t}</span> </div> </div> <div class=row> <div class=col> ${'main.test.pages.position.position_list.activation_type' & t}: ${'main.test.pages.position.position_edit.activation_type.' + PositionActivationType[position.positionActivationType] & t} </div> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { QuestionHistory } from \"models/questions/questionHistory\";\n\n@autoinject()\nexport class QuestionHistoryModal {\n\n  private logger: Logger;\n  private histories: Array<QuestionHistory> = [];\n\n  constructor(\n    private dialogController: DialogController\n  ) {\n    this.logger = LogManager.getLogger(\"QuestionHistoryModal\");\n  }\n\n  public activate(histories: Array<QuestionHistory>): void {\n    this.logger.info(\"activate\", histories);\n    this.histories = histories || [];\n  }\n\n  public close(): void {\n    this.dialogController.cancel();\n  }\n}\n","module.exports = \"<template> <require from=../../models/questions/reviewerStatusTypeViewEngineHooks></require> <ux-dialog class=custom-modal-container> <ux-dialog-body class=custom-modal-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=close()> <i class=material-icons>close</i> </button> </div> </div> <h2>${'main.admin.pages.questionaries.questions.question-history-modal.title' & t}</h2> <hr> <div if.bind=\\\"histories.length === 0\\\" class=\\\"text-center my-3\\\"> <p>${'main.admin.pages.questionaries.questions.question-history-modal.no_records' & t}</p> </div> <div class=\\\"pr-5 history-container\\\"> <div repeat.for=\\\"item of histories\\\"> <div class=mb-3> <p class=\\\"p-0 m-0\\\"><strong>${'main.admin.pages.questionaries.questions.question-history-modal.update_date' & t}:</strong> ${item.createdOn | dateFormat:'DD/MM/YYYY HH:mm'}</p> <p class=\\\"p-0 m-0\\\"><strong>${'main.admin.pages.questionaries.questions.question-history-modal.user' & t}:</strong> ${item.createdByName}</p> <p class=\\\"p-0 m-0\\\"><strong>${'main.admin.pages.questionaries.questions.question-history-modal.observation' & t}:</strong> ${item.observation}</p> <p class=\\\"p-0 m-0\\\" if.bind=\\\"item.reviewerStatusType != null\\\"><strong>${'main.admin.pages.questionaries.questions.question-history-modal.status' & t}:</strong> ${'main.admin.pages.questionaries.questions.question_state.' + ReviewerStatusType[item.reviewerStatusType] & t}</p> </div> </div> </div> </ux-dialog-body> <ux-dialog-footer> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=close() t=commands.close>Close</button> </ux-dialog-footer> </ux-dialog> </template> \";","export class QuestionaryIncompatibility {\n  questionaryId?: number;\n  incompatibleQuestionaryId: number;\n}\n","import { autoinject, bindable, bindingMode, observable } from 'aurelia-framework';\nimport { Questionary } from 'models/questionaries/questionary';\nimport { QuestionaryIncompatibility } from 'models/questionaries/questionaryIncompatibilty';\n\n@autoinject()\nexport class QuestionarySelectorCustomElement {\n  @bindable({ defaultBindingMode: bindingMode.twoWay }) value: QuestionaryIncompatibility[] = [];\n  @bindable paramsList: Questionary[] = [];\n  @bindable questionaryId: number = 0;\n\n  @observable private searchText: string = '';\n  private filteredList: Questionary[] = [];\n  private checkedMap: { [key: number]: boolean } = {};\n  private selectedItems: Questionary[] = [];\n\n  public attached() {\n    this.filterList();\n    this.syncCheckedMap();\n    this.updateSelectedItems();\n  }\n\n  public valueChanged() {\n    this.syncCheckedMap();\n    this.updateSelectedItems();\n  }\n\n  public paramsListChanged() {\n    this.filterList();\n    this.syncCheckedMap();\n    this.updateSelectedItems();\n  }\n\n  private searchTextChanged() {\n    this.filterList();\n  }\n\n  private filterList() {\n    if (!this.paramsList) {\n      this.filteredList = [];\n      return;\n    }\n    let list = this.paramsList.filter(q => q.id !== this.questionaryId);\n    if (this.searchText && this.searchText.trim() !== '') {\n      const search = this.searchText.toLowerCase().trim();\n      list = list.filter(q => q.name && q.name.toLowerCase().indexOf(search) !== -1);\n    }\n    this.filteredList = list;\n  }\n\n  private syncCheckedMap() {\n    this.checkedMap = {};\n    if (!this.paramsList || !this.value) return;\n    for (let i = 0; i < this.paramsList.length; i++) {\n      const id = this.paramsList[i].id;\n      this.checkedMap[id] = this.value.some(v => v.incompatibleQuestionaryId === id);\n    }\n  }\n\n  private updateSelectedItems() {\n    this.selectedItems = [];\n    if (!this.paramsList || !this.value) return;\n    for (let i = 0; i < this.value.length; i++) {\n      const q = this.paramsList.find(x => x.id === this.value[i].incompatibleQuestionaryId);\n      if (q) {\n        this.selectedItems.push(q);\n      }\n    }\n  }\n\n  private toggle(questionary: Questionary) {\n    if (!this.value) {\n      this.value = [];\n    }\n    const index = this.value.findIndex(v => v.incompatibleQuestionaryId === questionary.id);\n    if (index !== -1) {\n      this.value.splice(index, 1);\n      this.checkedMap[questionary.id] = false;\n    } else {\n      const incompatibility = new QuestionaryIncompatibility();\n      incompatibility.questionaryId = this.questionaryId;\n      incompatibility.incompatibleQuestionaryId = questionary.id;\n      this.value.push(incompatibility);\n      this.checkedMap[questionary.id] = true;\n    }\n    this.updateSelectedItems();\n  }\n}\n","module.exports = \"<template> <div> <div class=mb-2> <input type=text class=form-control t=[placeholder]main.admin.pages.questionaries.search value.bind=\\\"searchText & debounce:300\\\"> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"selectedItems.length > 0\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> <strong>${'main.admin.pages.questionaries.incompatibility_selected' & t}:</strong> <ul> <li repeat.for=\\\"item of selectedItems\\\">${item.name}</li> </ul> </div> </div> </div> </div> </div> <div style=\\\"height:200px;border:1px solid #ced4da;border-radius:10px;overflow-y:scroll;padding:5px\\\"> <div repeat.for=\\\"option of filteredList\\\" class=\\\"form-check custom-control custom-checkbox\\\"> <input type=checkbox class=form-check-input id=incomp_${option.id} checked.bind=checkedMap[option.id] change.delegate=toggle(option)> <label class=form-check-label for=incomp_${option.id}>${option.name}</label> </div> <div if.bind=\\\"filteredList.length === 0\\\" class=\\\"text-muted text-center p-2\\\"> ${'main.admin.pages.questionaries.no_results' & t} </div> </div> </div> </template> \";","import { DialogController } from \"aurelia-dialog\";\nimport { autoinject } from \"aurelia-framework\";\n\n@autoinject()\nexport class RestoreConfirmation {\n  private name: string;\n\n  constructor(private dialogController: DialogController) {\n    this.name = null;\n  }\n\n  public activate(name: string) {\n    this.name = name;\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2 t=main.test.pages.archives.restore>Change state</h2> <p t=main.test.pages.archives.restore_confirmation.message t-params.bind=\\\"{name: name}\\\">restore?</p> </ux-dialog-body> <ux-dialog-footer> <button attach-focus=true class=\\\"btn btn-primary btn-round\\\" click.delegate=dialogController.ok() t=commands.accept>Accept</button> <button class=\\\"btn btn-default\\\" click.delegate=dialogController.cancel() t=commands.cancel>Cancel</button> </ux-dialog-footer> </ux-dialog> </template> \";","import { PersonService } from '../test/services/people/person-service';\nimport { autoinject, LogManager, bindable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { Report } from \"models/test-reports/reports/report\";\nimport { Parameter } from 'models/test-reports/reports/parameter';\nimport { Person } from \"models/test-person/person\";\n\ninterface ItemAvailable {\n  [id: number]: boolean;\n}\n\n@autoinject()\nexport class SelectPeopleList {\n\n  private logger: Logger;\n\n  @bindable\n  private report: Report;\n\n  @bindable\n  private parameterCurrent: Parameter;\n\n  @bindable\n  private selectedAmount: number;\n\n  private selectedCurrent: number;\n\n  private banCheck: boolean;\n\n  private banIds: number[] = [];\n\n  private items: any[] = [];\n\n  private auxItems: any[] = [];\n\n  private itemAvailable: ItemAvailable = {};\n\n  private selectionLabel: string;\n\n  // private ActivationSource = PersonActivationSource;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    // this.logger.debug(\"refreshing\");\n    return await this.personService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        // console.log(response)\n        // response.data.forEach(x => {\n        //   this.itemAvailable[x.id] = false;\n        // });\n\n        this.checkAmount();\n\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  constructor(\n    private personService: PersonService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"SelectPersonList\");\n    this.selectedCurrent = 0;\n    this.banCheck = false;\n\n    this.parameters.pageSize = 50;\n  }\n\n  private async attached(): Promise<any> {\n\n    if (this.report.companyId) {\n      this.personService.client.currentCompanyId = this.report.companyId;\n      return await this.databind();\n    }\n  }\n\n\n  private async databind(): Promise<void> {\n    // this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private getSelectionLabel(): void {\n    this.selectionLabel = '';\n    this.items.forEach(x => {\n      if (this.selectionLabel !== '') {\n        this.selectionLabel += ', ';\n      }\n      this.selectionLabel += x.fullName;\n    });\n  }\n\n  public async selectParameter(item: Person): Promise<void> {\n\n    let banGeneral = this.banIds.findIndex(y => y === item.id);\n\n    if (banGeneral == -1) {\n      this.banIds.push(item.id);\n      this.selectedCurrent = ++this.selectedCurrent;\n      this.items.push(item);\n    } else {\n      this.banIds.splice(banGeneral, 1);\n      this.selectedCurrent = --this.selectedCurrent;\n      this.items.splice(banGeneral, 1);\n    }\n\n\n    this.checkAmount();\n\n    switch (this.parameterCurrent) {\n      case Parameter.OneOrTwoPeople: {\n        this.report.oneOrTwoPeopleIds = this.items.map(x => x.id);\n        break;\n      }\n      case Parameter.TwoPeople: {\n        this.report.twoPeopleIds = this.items.map(x => x.id);\n        break;\n      }\n      case Parameter.ThreePeople: {\n        this.report.threePeopleIds = this.items.map(x => x.id);\n        break;\n      }\n      case Parameter.Person: {\n        this.report.personId = this.items.map(x => x.id)[0];\n        break;\n      }\n      case Parameter.CompareToPerson: {\n        this.report.compareToPersonId = this.items.map(x => x.id)[0];\n        break;\n      }\n      case Parameter.People: {\n        this.report.peopleIds = this.items.map(x => x.id);\n        break;\n      }\n      case Parameter.Leader: {\n        this.report.personId = this.items.map(x => x.id)[0];\n        break;\n      }\n      default: {\n        break;\n      }\n    }\n\n    this.getSelectionLabel();\n\n  }\n\n  private checkAmount() {\n    if (this.selectedCurrent < +this.selectedAmount) {\n      this.banCheck = false;\n      this.parameters.tableData.forEach(x => {\n        this.itemAvailable[x.id] = false;\n      });\n\n    } else {\n      this.banCheck = true;\n      this.parameters.tableData.forEach(x => {\n        let ban = this.banIds.findIndex(y => y === x.id);\n        if (ban === -1)\n          this.itemAvailable[x.id] = true;\n        else\n          this.itemAvailable[x.id] = false;\n      });\n    }\n  }\n\n\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-auto\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> <div class=\\\"col-12 col-md-auto pt-1 pt-md-1\\\"> <span>${selectedCurrent} items</span> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> ${'main.test_reports.pages.reports.people.selected_people' & t} (${selectedCurrent}) ${selectionLabel} </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-1 col-1 mb-2\\\"> <div if.bind=!discRequired class=\\\"form-check custom-control custom-checkbox\\\"> <input class=\\\"form-check-input custom-control-input\\\" type=checkbox change.delegate=selectParameter(item) model.bind=item.id checked.bind=auxItems id=person_${parameterCurrent}_${item.id} disabled.bind=\\\"banCheck && itemAvailable[item.id]\\\"> <label for=person_${parameterCurrent}_${item.id} class=\\\"form-check-label custom-control-label\\\">&nbsp;</label> </div> </div> <div class=\\\"col-md-1 col-2 mb-2\\\"> <disc-avatar size.bind=36 disc.bind=item.highestDisc picture-url.bind=item.pictureUrl initials.bind=item.initials></disc-avatar> </div> <div class=\\\"col-md-6 col-9 text-truncate minh-40 mb-2\\\"> <span title=${item.fullName}>${item.fullName}</span> <br/> <small class=text-muted>${item.email}</small> </div> <div class=\\\"d-md-none col-3\\\"></div> <div class=\\\"col-md-4 col-9 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.testperson.pages.person.activation_date' & t}</small> </label> ${item.createdOn | dateTimeFormat} </div> </div> </li> </ul> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> ${'main.test_reports.pages.reports.people.selected_people' & t} (${selectedCurrent}) ${selectionLabel} </div> </div> </div> </div> </div> </template> \";","import { StoreService } from 'common/store/store-service';\nimport { bindable, customElement, autoinject, Disposable } from 'aurelia-framework';\nimport * as $ from 'jquery';\nimport { State } from 'common/store/store-model';\nimport { CompaniesLoadedMessage } from 'messages/companiesLoadedMessage';\nimport { EventAggregator } from 'aurelia-event-aggregator';\n\n@customElement('side-bar')\n@autoinject()\nexport class SideBar {\n\n  @bindable()\n  public navigation: any;\n\n  @bindable()\n  public title: string;\n\n  private state: State;\n\n  private showReturnHome: boolean = false;\n\n  private subscriptions: Disposable[] = [];\n\n  constructor(\n    private store: StoreService,\n    private ea: EventAggregator,\n  ) {\n    this.state = this.store.state;\n\n    this.showReturnHome = this.state && this.state.companies.length > 1;\n    \n    this.subscriptions.push(this.ea.subscribe(CompaniesLoadedMessage, this.updateShowReturnHome.bind(this)));\n    \n  }\n\n  public attached() {\n\n    var pushable = $('#main-content, #main-footer');\n    var sidebar = $('#navbarToggleSidebar');\n    var sidebarPin = $('#fixSideBar');\n    var sidebarToggler = $('.navbar-toggler');\n    var sidebarLink = $('.js-sidebar-link');\n\n    let init = () => {\n      $('.navbar-brand').addClass('hide');\n      pushable.addClass('content-sidebar--closed');\n      sidebarToggler.addClass('show');\n    };\n\n    let pinned = () => {\n      sidebarPin.click(() => {\n        pushable.toggleClass('content-sidebar--open');\n        sidebar.toggleClass('pinned');\n      });\n    }\n\n    $(document).ready(() => {\n      init();\n\n      // triggers\n      pinned();\n    });\n  }\n\n  private updateShowReturnHome(){\n    this.showReturnHome = this.state && this.state.companies.length > 1;\n  }\n}\n","module.exports = \"<template> <require from=./nav-menu.html></require> <nav class=sidebar id=navbarToggleSidebar> <button type=button class=\\\"close d-none d-lg-block\\\" aria-label=Close id=fixSideBar> <svg xmlns=http://www.w3.org/2000/svg viewBox=\\\"0 0 24 24\\\"> <path d=\\\"M9 6v1h.5v5L8 13v2h3.5v4h1v-4H16v-2l-1.5-1V7h.5V6H9z\\\" fill=#FFFFFF style=fill:#fff></path> </svg> </button> <ul class=\\\"nav flex-column\\\"> <li class=nav-item if.bind=showReturnHome> <a class=nav-link href=# onclick=\\\"return window.history.go(-1),!1\\\"> <i class=material-icons>arrow_back</i> ${'commands.returns' & t} </a> </li> <li class=nav-item repeat.for=\\\"route of navigation\\\"> <template if.bind=route.settings.isModuleTitle> <span class=nav-title>${route.title}</span> </template> <template if.bind=!route.settings.isModuleTitle> <a class=\\\"nav-link ${route.isActive ? 'active' : ''}\\\" href.bind=route.href> <i class=\\\"material-icons ${route.settings.icon}\\\"></i> <span class=\\\"text ${route.title.length} ${route.title.length > 20 ? 'text-large' : ''}\\\"> ${route.title} </span> </a> </template> <nav-menu if.bind=route.navigation navigation.bind=route.navigation></nav-menu> </li> </ul> </nav> </template> \";","import { autoinject, bindable, bindingMode } from 'aurelia-framework';\nimport { ValidationController, ValidationRules } from 'aurelia-validation';\nimport { ResponseOption } from 'models/questions/response-option';\nimport { I18N } from 'aurelia-i18n';\n\n@autoinject()\nexport class SingleChoiceListResponseOptions {\n  @bindable({ defaultBindingMode: bindingMode.twoWay }) items: ResponseOption[] = [];\n  @bindable validationController: ValidationController;\n  @bindable isEvaluationQuestion: boolean = false;\n\n  private i18n: I18N;\n\n  constructor(i18n: I18N) {\n    this.i18n = i18n;\n  }\n\n  attached(): void {\n    for (const option of this.items) {\n      this.applyOptionValidation(option);\n    }\n  }\n\n  addOption(): void {\n    const option = new ResponseOption();\n    option.id = 0;\n    option.order = this.items.length;\n    option.isColumn = false;\n    option.option = \"\";\n    option.weight = 0;\n    option.children = [];\n    this.items.push(option);\n    this.applyOptionValidation(option);\n  }\n\n  deleteOption(index: number): void {\n    const option = this.items[index];\n    this.validationController.removeObject(option);\n    this.items.splice(index, 1);\n  }\n\n  validateBusinessRules(): string[] {\n    const errors: string[] = [];\n    if (this.items.length === 0) {\n      errors.push(\"main.admin.pages.modular-questionaries.questions.errors.create_at_least_one_question\");\n    }\n    if (this.isEvaluationQuestion) {\n      const hasPositiveWeight = this.items.some(i => i.weight > 0);\n      if (!hasPositiveWeight && this.items.length > 0) {\n        errors.push(\"main.admin.pages.modular_questionaries.questions.weight_range_since_one\");\n      }\n    }\n    return errors;\n  }\n\n  private applyOptionValidation(option: ResponseOption): void {\n    ValidationRules\n      .ensure(\"option\")\n      .displayName(\"main.admin.pages.modular_questionaries.questions.response\")\n      .required()\n      .withMessage(this.i18n.tr(\"main.admin.pages.modular_questionaries.questions.response_required\"))\n      .ensure(\"weight\")\n      .displayName(\"main.admin.pages.modular-questionaries.questions.weight\")\n      .required()\n      .satisfies(value => value >= 0 && value <= 100)\n      .withMessage(this.i18n.tr(\"main.admin.pages.modular-questionaries.questions.range\"))\n      .on(option);\n  }\n}\n","module.exports = \"<template> <h4>${'main.admin.pages.modular-questionaries.questions.responses' & t}</h4> <ul class=list-group> <li class=list-group-item if.bind=\\\"items.length > 0\\\"> <div class=row> <div class=col-8></div> <div class=\\\"col-2 text-center\\\"> <strong>${'main.admin.pages.modular-questionaries.questions.weight' & t}</strong> </div> <div class=col-2></div> </div> </li> <li class=list-group-item repeat.for=\\\"item of items\\\"> <div class=row> <div class=col-8> <div class=form-group> <input type=text value.bind=\\\"item.option & validate\\\" class=form-control t=[placeholder]main.admin.pages.modular_questionaries.questions.write_response /> </div> </div> <div class=col-2> <div class=form-group> <input type=number value.bind=\\\"item.weight & validate\\\" min=0 max=100 class=form-control /> </div> </div> <div class=col-2> <button type=button class=\\\"btn btn-link\\\" click.delegate=deleteOption($index)> <i class=material-icons>archive</i> </button> </div> </div> </li> </ul> <br/> <button type=button class=\\\"btn btn-primary btn-round\\\" click.delegate=addOption()> <i class=material-icons>add</i> </button> </template> \";","import { DialogController } from \"aurelia-dialog\";\nimport { autoinject } from \"aurelia-framework\";\n\n@autoinject()\nexport class SuccessRegistrationModal {\n\n  constructor(\n    public dialogController: DialogController\n  ) {\n  }\n\n  public attached(): void {\n  }\n\n  public detached(): void {\n\n  }\n\n  public closeModal(): void {\n    this.dialogController.cancel();\n  }\n\n}","module.exports = \"<template> <ux-dialog class=\\\"modal-md success-registration-modal\\\"> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=closeModal()> <i class=material-icons> close </i> </button> </div> </div> <h2 class=\\\"mb-4 text-center\\\">${'main.test.pages.people.public_person_form.registration_successful' & t}</h2> <div class=row> <div class=col-12> <p class=text-center>${'main.test.pages.people.public_person_form.registration_completed' & t}</p> <p class=text-center>${'main.test.pages.people.public_person_form.registration_completed_description' & t}</p> </div> </div> </ux-dialog-body> <ux-dialog-footer> <button attach-focus=true class=\\\"btn btn-primary btn-round\\\" click.delegate=dialogController.ok() t=commands.accept>Accept</button> </ux-dialog-footer> </ux-dialog> </template>\";","import { autoinject, bindable } from 'aurelia-framework';\nimport { DialogController } from \"aurelia-dialog\";\n@autoinject()\nexport class TalentExportConfirmation {\n  @bindable\n  private totalResults : string = '0';\n  constructor(private dialogController: DialogController) {\n  }\n\n  public activate(totalResults: number) {\n    if(!isNaN(totalResults))\n    this.totalResults = totalResults.toString();\n  } \n  private async save(): Promise<any> {\n    return await this.dialogController.ok();\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'commands.export' & t}</h2> <div class=row> <div class=col-12> <p>${'modals.export_talents_confirmation.message' & t} ${totalResults}</p> </div> </div> </ux-dialog-body> <ux-dialog-footer> <button class=\\\"btn btn-danger btn-round\\\" attach-focus=true click.delegate=save() t=commands.convert>Update</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </ux-dialog-footer> </ux-dialog> </template> \";","module.exports = \"<template bindable=team> <div if.bind=team> <div class=row> <div class=col> <h3>${'main.test.pages.teams.team_edit.title' & t}</h3> <h3> <a title=\\\"${'commands.view' & t}\\\" href=company/${team.companyId}/test/teams/team/${team.id}> ${team.name} </a> </h3> </div> </div> </div></template> \";","module.exports = \"<template bindable=tags> <span class=\\\"badge badge-primary text-truncate mw-100\\\" repeat.for=\\\"item of tags.split(',').slice(0,3)\\\"><span title=${item}>${item}</span></span> </template> \";","import { CoreCompanyService } from 'main/admin/services/companies/core-company-service';\nimport { autoinject, bindable, LogManager, Disposable } from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { EventAggregator } from 'aurelia-event-aggregator';\nimport { Router, NavigationInstruction } from 'aurelia-router';\nimport { Company } from 'models/companies/company';\nimport { Role } from 'models/security/role';\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\nimport { CompaniesLoadedMessage } from 'messages/companiesLoadedMessage';\nimport { Wallet } from 'models/talents/wallet';\nimport { Notification } from 'common/services/notification';\nimport { SessionService } from 'common/services/session-service';\nimport { AgreementService } from 'main/admin/services/agreements/agreement-service';\nimport { WalletService } from 'main/admin/services/talents/wallet-service';\n\n@autoinject()\nexport class ViewWallet {\n\n  private logger: Logger;\n\n  @bindable()\n  public state: State;\n  public roleId: number;\n  public userId: number;\n  public wallet: Wallet;\n  public planIsViewWallet: boolean[];\n  public isViewWallet: boolean = false;\n  public generalWallet: Wallet;\n\n  private rootCompany: Company;\n\n  private subscriptions: Disposable[] = [];\n\n  constructor(\n    private store: StoreService,\n    private sessionService: SessionService,\n    private walletService: WalletService,\n    private agreementService: AgreementService,\n    private router: Router,\n    private ea: EventAggregator,\n    private notification: Notification,\n    private coreCompanyService: CoreCompanyService) {\n\n    this.logger = LogManager.getLogger('CompanySelector');\n\n    // event when router navigation is success\n    this.subscriptions.push(this.ea.subscribe('router:navigation:success', this.refresh.bind(this)));\n\n    this.subscriptions.push(this.ea.subscribe(CompaniesLoadedMessage, this.init.bind(this)));\n  }\n\n  public async attached(): Promise<any> {\n  }\n\n  public unbind() {\n    this.subscriptions.forEach(x => x.dispose());\n  }\n\n  private async init() {\n    await this.setRootCompany();\n    await this.refresh();\n  }\n\n  private async refresh() {\n    const publicRoutes = ['manual-activation'];\n    const currentRoute = window.location.pathname.replace(/^\\//, '').split('/')[0];\n    if (publicRoutes.includes(currentRoute)) {\n      return;\n    }\n\n    let currentCompanyId: number;\n    let instruction: NavigationInstruction = this.router.currentInstruction;\n\n    if (instruction.params && instruction.params.companyId) {\n      currentCompanyId = +instruction.params.companyId;\n    }\n\n    if (this.state.currentCompany && this.state.currentCompany.id == currentCompanyId) {\n      return;\n    }\n    await this.loadUserProfile();\n    if(this.state && this.state.userBasicInfo){\n      this.roleId = this.state.userBasicInfo.roleId;\n      this.userId = this.state.userBasicInfo.id;\n    }\n    if(currentCompanyId && (this.roleId == Role.Customer || this.roleId == Role.Master))\n    {\n      this.planIsViewWallet = (await this.agreementService.getAgreementsByCompanyId(currentCompanyId,false)).map(x=> x.isViewWallet);\n      this.isViewWallet = this.planIsViewWallet.find(element => element == true);\n\n      if(this.isViewWallet)\n      {\n        await this.walletByUserId(currentCompanyId,this.roleId,this.userId);\n        setInterval(async () => await this.walletByUserId(currentCompanyId,this.roleId,this.userId), 300000);\n      }\n    }\n    return await this.loadCurrentCompany(currentCompanyId);\n  }\n\n  private setRootCompany() {\n    if (this.state && this.state.userBasicInfo && this.state.companies.length > 0) {\n      this.rootCompany = this.state.companies.find(x => x.id === this.state.userBasicInfo.companyId);\n    }\n  }\n\n  private async loadUserProfile(): Promise<any> {\n    try {\n      const profile = await this.sessionService.getProfile();\n      if(profile)\n      await this.store.setUserBasicInfoState(profile.basic_info);\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async loadCurrentCompany(currentCompanyId: number): Promise<any> {\n\n    if (currentCompanyId && this.state.companies.length > 0) {\n\n      let selectedCompany: Company;\n\n      if (currentCompanyId && this.state.companies.map(x => x.id.toString()).indexOf(currentCompanyId.toString()) < 0) {\n\n        this.logger.debug(\"companyId does not belong to user\");\n        // this.switchCompany(this.rootCompany);\n        selectedCompany = this.state.companies.filter(x => x.roleId == Role.Customer)[0];\n\n      } else {\n        // this.logger.debug(\"switchCompany to selected by url:\", currentCompanyId);\n        selectedCompany = this.state.companies.filter(x => x.id == currentCompanyId)[0];\n      }\n\n      // validate if selectedCompany is Customer level. User can only select a company with customer role.\n      if (selectedCompany.roleId != Role.Customer || !selectedCompany.isActive) {\n        selectedCompany = this.state.companies.filter(x => x.roleId == Role.Customer)[0];\n      }\n\n      if (selectedCompany) {\n        return await this.switchCompany(selectedCompany);\n      }\n    } else if (!currentCompanyId && this.state.currentCompany) {\n      return await this.switchCompany(null);\n    }\n\n  }\n\n  private async switchCompany(company: Company): Promise<any> {\n\n    if (!company) {\n      return await this.store.setCurrentCompanyState(null);\n    }\n\n    if (this.state.currentCompany && this.state.currentCompany.id == company.id) {\n      return;\n    }\n\n    let settings = await this.coreCompanyService.getSettingsById(company.id);\n\n    company.companySettings = settings;\n\n    await this.store.setCurrentCompanyState(company);\n\n    //update router url\n    let fragment = this.router.currentInstruction.fragment;\n\n    if (fragment.length > 1 && fragment.startsWith(\"/company\")) {\n      let fragmentParts: string[] = fragment.split(\"/\");\n      fragmentParts.splice(2, 1, this.state.currentCompany.id.toString());\n      let newFragment: string = fragmentParts.join(\"/\");\n\n      if (fragment !== newFragment) {\n        this.router.navigate(newFragment);\n      }\n\n    } else {\n      return await this.router.navigateToRoute(\"main-child-router\", { companyId: this.state.currentCompany.id });\n    }\n\n  }\n  \n  public async walletByUserId(companyId: number, roleId: number, userId: number) {\n    try {\n      if(companyId != null && roleId != null && roleId == Role.Customer){\n      this.wallet = await this.walletService.getUserWallet(userId,companyId);\n      this.generalWallet = await this.walletService.getTotalBalanceByCompany(companyId);\n      }\n      else if(companyId != null && roleId != null && roleId == Role.Master){\n      this.generalWallet = await this.walletService.getTotalBalanceByCompany(companyId);\n      this.wallet = await this.walletService.getGeneralWallet(companyId);\n      }\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n}\n","module.exports = \"<template> <require from=../../models/security/roleViewEngineHooks></require> <div if.bind=\\\"state && (roleId == Role.Customer || roleId == Role.Master) && isViewWallet\\\"> <template if.bind=\\\"generalWallet.talent !== null && generalWallet.talent !== undefined\\\" with.bind=state.currentCompany>${'main.components.navbar.view_wallet.general_talents' & t}: ${generalWallet.talent} ${'main.components.navbar.view_wallet.talents' & t}</template> </div> <div if.bind=\\\"state && (roleId == Role.Customer || roleId == Role.Master) && isViewWallet\\\"> <template if.bind=\\\"wallet.talent !== null && wallet.talent !== undefined\\\" with.bind=state.currentCompany>${'main.components.navbar.view_wallet.my_talents' & t}: ${wallet.talent} ${'main.components.navbar.view_wallet.talents' & t}</template> </div> </template> \";","import { Router, RouterConfiguration, RouteConfig, NavModel } from 'aurelia-router';\nimport { relativeToFile } from 'aurelia-path';\nimport { CompositionEngine, CompositionContext } from 'aurelia-templating';\nimport { autoinject, PLATFORM, LogManager, Disposable, observable } from 'aurelia-framework';\nimport { Origin } from 'aurelia-metadata';\nimport { EventAggregator } from 'aurelia-event-aggregator';\nimport { Logger } from 'aurelia-logging';\nimport { I18N } from 'aurelia-i18n';\nimport { CurrentCompanyChangeMessage } from 'messages/currentCompanyChangeMessage';\nimport { StoreService } from 'common/store/store-service';\n\n@autoinject()\nexport class MainChildRouter {\n\n  private router: Router;\n  private logger: Logger;\n\n  private navigationMenu: any;\n\n  private subscriptions: Array<Disposable> = [];\n\n  @observable()\n  public currentCompanyId: number;\n\n  constructor(\n    private store: StoreService,\n    private i18n: I18N,\n    private compositionEngine: CompositionEngine,\n    private ea: EventAggregator\n  ) {\n\n    this.logger = LogManager.getLogger('MainChildRouter');\n\n    // this.currentCompanyId = this.store.state.currentCompany.id;\n\n    this.subscriptions.push(this.ea.subscribe('router:navigation:complete', response => { this.updateNavigationMenu(response.instruction, 0) }));\n\n    this.subscriptions.push(this.ea.subscribe(CurrentCompanyChangeMessage, (message: CurrentCompanyChangeMessage) => {\n      // this.logger.debug(\"event companySwitcher: \", message.currentCompanyId);\n      this.currentCompanyId = message.currentCompanyId;\n    }));\n\n  }\n\n  public async attached() {\n\n    await this.refresh();\n\n  }\n\n  public configureRouter(config: RouterConfiguration, router: Router) {\n\n    this.router = router;\n\n    config.map([\n      {\n        route: [\"\", \"main-home\"],\n        moduleId: PLATFORM.moduleName(\"./pages/home/main-home\"),\n        name: \"main-home\",\n        nav: true,\n        title: this.i18n.tr(\"main.pages.home.title\"),\n        settings: {\n          icon: \"ticon-home\"\n        }\n      },\n\n      {\n        route: \"test\",\n        moduleId: PLATFORM.moduleName(\"./test/test-child-router\"),\n        name: \"test-child-router\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.home.title\"),\n        settings: {\n          icon: \"ticon-modulo-test\",\n          isModuleTitle: true\n        }\n      },\n\n      {\n        route: \"test-reports\",\n        moduleId: PLATFORM.moduleName(\"./test-reports/test-report-child-router\"),\n        name: \"test-report-child-router\",\n        nav: false,\n        title: this.i18n.tr(\"main.test_reports.pages.home.title\"),\n        settings: {\n          icon: \"radio_button_checked\",\n          isModuleTitle: true\n        }\n      },\n\n      {\n        route: \"admin\",\n        moduleId: PLATFORM.moduleName(\"./admin/admin-child-router\"),\n        name: \"admin-child-router\",\n        nav: true,\n        title: this.i18n.tr(\"main.admin.pages.home.title\"),\n        settings: {\n          icon: \"ticon-modulo-admin\",\n          isModuleTitle: true\n        }\n      },\n\n      // {\n      //   route: \"user-info\",\n      //   moduleId: PLATFORM.moduleName(\"./pages/user-info/user-info\"),\n      //   name: \"userInfo\",\n      //   title: \"User Info\",\n      //   nav: true,\n      //   settings: {\n      //     t: \"main.pages.user_info.title\"\n      //   }\n      // },\n    ]);\n\n  }\n\n  public async refresh() {\n    this.logger.debug(\"refreshing...\");\n\n    this.navigationMenu = await this.mapNavigation(this.router);\n    await this.updateNavigationMenu(this.router.currentInstruction, 0);\n  }\n\n  // sidebar \n  public mapNavigation(router: Router, config?: RouteConfig) {\n    const promises = [];\n    const c = config ? config : { route: null };\n    router.navigation.forEach(nav => {\n      if (c.route !== nav.config.route) {\n        promises.push(this.mapNavigationItem(nav, router));\n      } else {\n        promises.push(Promise.resolve(nav));\n      }\n\n    })\n    return Promise.all(promises)\n  }\n\n  public async mapNavigationItem(nav: NavModel, router: Router) {\n\n    const config = <any>nav.config\n    const navModel: any = Object.assign({}, nav)\n\n    if (config.moduleId) {\n\n      const childContainer = router.container.createChild();\n      const instruction = {\n        viewModel: relativeToFile(config.moduleId, Origin.get((<any>router.container).viewModel.constructor).moduleId),\n        childContainer: childContainer,\n        view: config.view || config.viewStrategy,\n      };\n\n      let context: CompositionContext = await this.compositionEngine.ensureViewModel(<any>instruction);\n\n      if ('configureRouter' in context.viewModel) {\n\n        const childRouter = new Router(childContainer, router.history);\n        const childConfig = new RouterConfiguration();\n\n        context.viewModel.configureRouter(childConfig, childRouter);\n        childConfig.exportToRouter(childRouter);\n\n        childRouter.navigation.forEach(nav => {\n\n          let href = `${navModel.href}/${nav.config.href ? nav.config.href : nav.config.route}`;\n\n          // if (this.currentCompanyId) {\n          //   let fragmentParts: string[] = href.split(\"/\");\n          //   fragmentParts.splice(2, 1, this.currentCompanyId.toString());\n          //   href = fragmentParts.join(\"/\");\n          // }\n\n          // this.logger.debug(\"navModel.href\", navModel.href);\n\n          nav.href = href; //`${navModel.href}/${nav.config.href ? nav.config.href : nav.config.route}`;\n\n        });\n\n        navModel.navigation = await this.mapNavigation(childRouter, config);\n\n        return navModel;\n      }\n\n      return navModel;\n\n    }\n    return Promise.resolve(navModel);\n  }\n\n  public updateNavModels(navModels, instruction, instructionDepth, resetDepth) {\n    if (navModels) {\n      navModels.forEach(navModel => {\n        if (resetDepth >= instructionDepth)\n          navModel.isActive = false;\n        if (navModel.href === instruction.config.navModel.href)\n          navModel.isActive = true;\n        if (navModel.navigation) {\n          this.updateNavModels(navModel.navigation, instruction, instructionDepth, resetDepth + 1)\n        }\n      });\n    }\n  }\n\n  public updateNavigationMenu(instruction, depth) {\n    this.updateNavModels(this.navigationMenu, instruction, depth, 0)\n    if ('childNavigationInstruction' in instruction.viewPortInstructions.default) {\n      this.updateNavigationMenu(instruction.viewPortInstructions.default.childNavigationInstruction, depth + 1)\n    }\n  }\n\n  public async currentCompanyIdChanged(newValue, oldValue) {\n    // this.logger.debug(\"currentCompanyIdChanged:\", newValue);\n    if (newValue) {\n      this.currentCompanyId = newValue;\n      //base api\n      await this.refresh();\n    }\n  }\n\n  public detached() {\n    this.subscriptions.forEach(x => x.dispose());\n  }\n\n}\n","module.exports = \"<template> <require from=./components/side-bar></require> <side-bar navigation.bind=navigationMenu title.bind=textinfo.value></side-bar> <div class=\\\"row m-0\\\" role=main> <div class=col-12> <router-view swap-order=after></router-view> </div> </div> </template> \";","module.exports = \"<template> <div class=\\\"card card-outline-danger mb-3 text-center\\\"> <div class=card-body> <h1><i class=\\\"fa fa-exclamation-triangle\\\"></i> Not sure you should be here!</h1> <blockquote class=card-bodyquote> <p>We couldn't find the page you were looking for in this restricted area.</p> <footer>Please return <a route-href=\\\"route: home;\\\">home</a></footer> </blockquote> </div> </div> </template> \";","// import * as introJs from 'intro.js';\nimport { autoinject, LogManager } from 'aurelia-framework';\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\nimport { Logger } from 'aurelia-logging';\nimport { Wootric } from '../../components/wootric';\nimport { SessionService } from 'common/services/session-service';\nimport { OpenIdProfile } from 'models/security/open-id-profile';\nimport { WootricComponentName } from \"models/wootric/WootricComponentName\";\nimport { SalesIq } from '../../components/sales-iq'\nimport { Notification } from 'common/services/notification';\nimport { NewsService } from 'main/admin/services/test-core/news-service';\nimport { News } from 'models/test-core/news/news';\nimport { AgreementService } from 'main/admin/services/agreements/agreement-service';\nimport { ServiceRatingService } from 'main/admin/services/service-rating/service-rating-service';\nimport { ServiceRating } from 'models/service-rating/service-rating';\nimport { SalesIqModel } from 'models/sales-iq/sales-iq-model';\nimport config from 'config.js';\nimport { SurveyZoho } from 'main/components/survey-zoho';\nimport { DialogService } from 'aurelia-dialog';\nimport { ZohoSurveyModal } from 'main/components/zoho-survey-modal';\n@autoinject\nexport class MainHome {\n\n  private logger: Logger;\n  private state: State;\n  // Network\n  private imageAddr = \"https://s3.us-east-1.amazonaws.com/pro-s3-objectstore/488c1078-ace4-42c6-a5a5-c07b1955173f.png\" + \"?n=\" + Math.random();\n  private startTime: number;\n  private endTime: number;\n  private downloadSize = 1000000; \n  private download = new Image();\n  private newsList: Array<News> = [];\n  private newsNumber: number = 0;\n  private params: any = {};\n  private companyId: number;\n  private news: News = new News();\n  private urlServiceEvaluation: string = \"\";\n  private serviceRating: ServiceRating;\n  private salesIqSettings: SalesIqModel;\n  private surveyZohoSettings: SalesIqModel;\n  private companyJobsUrl: string = \"\";\n  public constructor(\n    private store: StoreService,\n    private salesIq: SalesIq,\n    private surveyZoho: SurveyZoho,\n    private notification: Notification,\n    private agreementService: AgreementService,\n    private newsService: NewsService,\n    private serviceRatingService: ServiceRatingService,\n    private dialogService: DialogService,\n    \n  ) {\n    this.logger = LogManager.getLogger('Home');\n\n    this.state = this.store.state;\n    let companyJobsUrl = config.URLS_ROBOTHUNTER;\n    this.companyJobsUrl = companyJobsUrl;\n\n  }\n\n  public async activate(params: any) {\n    \n    this.serviceRating = await this.serviceRatingService.getServiceRatingSettings();\n    this.salesIqSettings = await this.serviceRatingService.getSalesIqSettings();\n    this.surveyZohoSettings = await this.serviceRatingService.getSurveyZohoSettings();\n    this.urlServiceEvaluation = this.serviceRating.value;\n\n    if(this.salesIqSettings.isVisibleInCommonSettingPage){\n      this.salesIq.attached(this.salesIqSettings.value);\n    }\n\n    this.openZohoSurveyModal();\n\n\n    this.params = params;\n\n    if (!isNaN(this.params.companyId)) {\n      this.companyId = this.params.companyId;     \n    }\n    else{\n      this.companyId = this.state.currentCompany.id;\n    }\n    this.getNewsByCurrentCompany(this.companyId)\n\n    this.networkInfo(); \n    \n  }\n\n  private openZohoSurveyModal(){\n    try {\n      if (!this.surveyZohoSettings) {\n        this.logger.warn('Zoho survey settings not loaded yet');\n        return;\n      }\n      if (!this.surveyZohoSettings.isVisibleInCommonSettingPage) {\n        this.logger.info('Zoho survey not visible by settings');\n        return;\n      }     \n    } catch (e) {\n      this.logger.error('Failed opening Zoho survey modal', e);\n    }\n  }\n\n  private async getNewsByCurrentCompany(companyId: number){\n    try {\n      \n      let planIdsTest = (await this.agreementService.getAgreementsByCompanyId(companyId,false)).map(x=> x.id);\n       let planIdsSelection = (await this.agreementService.getAgreementsByCompanyId(companyId,true)).map(x=> x.id);\n  \n      if (planIdsTest.length > 0 )\n        this.news.planTest = planIdsTest;\n      if (planIdsSelection.length > 0)\n        this.news.planSelection = planIdsSelection;\n      \n\n      this.newsList = await this.newsService.getAllByCompany(companyId,this.news);\n      if(this.newsList){\n        this.newsNumber = Math.floor(Math.random() * this.newsList.length);\n        this.newsList.forEach((x,index)=>{\n          if (index == this.newsNumber)\n            x.isClassActivate =true\n          else\n            x.isClassActivate = false\n        });\n      }\n    } catch (error) {\n      \n    }\n  }\n  public networkInfo(){\n    this.download.onload = () =>{\n      this.endTime = (new Date()).getTime();\n      this.showNetworkResults();\n    }     \n    this.startTime = (new Date()).getTime();\n    this.download.src = this.imageAddr;     \n  }\n    public showNetworkResults(): any{  \n        let speedBps: number;\n        let speedKbps: number;\n        let duration = (this.endTime - this.startTime) / 1000;\n        let bitsLoaded = this.downloadSize * 8;\n        // Valores de carga de la imagen\n        speedBps = Number((bitsLoaded / duration).toFixed(2));\n        speedKbps = Number((speedBps / 1024).toFixed(2));\n        let speedMbps = Number((speedKbps / 1024).toFixed(2));\n        // Validacion a 0.5 Mbps de navegacion.\n       if (speedMbps < 5)     \n        this.notification.warning(\"main.test.pages.person.network_speed\"); \n    }\n\n  // public introStart() {\n  //   // intro.js\n  //   introJs().start();\n  // }\n\n}\n","module.exports = \"<template> <require from=../../admin/pages/agreements/agreements-to-approve></require> <require from=../../../models/security/roleViewEngineHooks></require> <require from=../../components/carousel-news></require> <section> <div class=\\\"row mb-4 text-center\\\"> <div class=col-12> <img class=mt-1 src=\" + require(\"../../../../assets/images/logo-tht-2025.svg\") + \" width=300 height=50 /> </div> </div> <div class=\\\"content-container row mb-3\\\"> <div class=\\\"content-main text-center\\\"> <carousel-news news-list.bind=newsList></carousel-news> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.news.selection_card.title' & t} </h5> <a class=\\\"btn btn-primary btn-round\\\" href.bind=companyJobsUrl target=_blank>${'commands.access' & t}</a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.news.service_evaluation_card.title' & t} </h5> <a class=\\\"btn btn-primary btn-round\\\" href.bind=urlServiceEvaluation target=_blank>${'commands.access' & t}</a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.home.binnacle' & t} </h5> <a class=\\\"btn btn-primary btn-round\\\" href=https://tht.company/BITACORA/ target=_blank>${'commands.access' & t}</a> </div> </div> </div> </div> </div> </div> </section> <section if.bind=\\\"state.userBasicInfo.roleId < Role.Customer\\\"> <agreements-to-approve></agreements-to-approve> </section> </template> \";","\nimport { autoinject, LogManager, bindable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { ReportTemplate } from 'models/test-core/report-templates/report-template';\nimport { Report } from 'models/test-reports/reports/report';\n\n@autoinject()\nexport class ReportParameter {\n\n  private logger: Logger;\n  private params: any = {};\n\n  @bindable\n  private model: Report = new Report();\n\n  @bindable\n  private isDisable: boolean;\n\n  @bindable\n  private isReportActivation: boolean;\n\n  @bindable\n  private reportTemplate: ReportTemplate;\n\n  @bindable\n  private showActivationParameter: boolean;\n  \n  public companyId: number;  \n\n  constructor(  \n  ) {  \n    this.logger = LogManager.getLogger(\"ReportParameter\");\n  \n  }\n\n}\n","module.exports = \"<template> <require from=../../../models/questionaries/discTypeViewEngineHooks></require> <require from=../../../models/questionaries/questionaryTypeViewEngineHooks></require> <require from=../../../models/test-reports/reports/parameterViewEngineHooks></require> <require from=./select-position-list></require> <require from=./select-person-list></require> <require from=./select-person-questionary-list></require> <require from=./select-observer-list></require> <require from=./select-organization-list></require> <require from=./select-team-list></require> <require from=./select-adjustment-list></require> <require from=./select-observation-list></require> <require from=./select-activation-list></require> <require from=./select-questionary-team-list></require> <form class=\\\"content-container row mb-3\\\"> <div class=content-main> <div if.bind=isDisable repeat.for=\\\"par of model.parameters\\\"> <div class=\\\"row mb-3\\\" if.one-time=\\\"Parameter.Questionary === par && isReportActivation\\\"> <div class=col-12 repeat.for=\\\"item of reportTemplate.questionaries | filter:'questionaryType':QuestionaryType.Disc && limit:0:1\\\"> <div class=\\\"card card-body\\\" if.bind=$first> <h3>${'main.admin.pages.questionaries.questionary_type.Disc' & t}</h3> <select-person-questionary-list report.bind=model parameter-current.bind=par selected-amount=1 value.bind=model.activationQuestionaryIds questionary-id.bind=item.id is-disc-type.bind=true></select-person-questionary-list> </div> </div> </div> <div class=\\\"row mb-3\\\" if.one-time=\\\"Parameter.Questionary === par && isReportActivation\\\"> <div class=col-12 repeat.for=\\\"item of reportTemplate.questionaries\\\"> <div class=\\\"card card-body\\\" if.bind=\\\"item.questionaryType !== QuestionaryType.Disc\\\"> <h3>${item.name}</h3> <select-person-questionary-list report.bind=model parameter-current.bind=par selected-amount=1 id=activationQuestionaryCompetenceIdSelector value.bind=model.activationQuestionaryIds questionary-id.bind=item.id is-disc-type.bind=false></select-person-questionary-list> </div> </div> </div> <div class=\\\"row mb-3\\\" if.one-time=\\\"Parameter.Observers === par && isReportActivation\\\"> <div class=col-12> <div class=\\\"card card-body\\\"> <h3 id=observations>${'main.testperson.pages.observation.title' & t}</h3> <select-observation-list id=observerIdSelector report.bind=model parameter-current.bind=par selected-amount=1 value.bind=model.observerIds> </select-observation-list> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"Parameter.DiscType === par\\\"> <div class=col-12> <div class=\\\"card card-body\\\"> <h3>${'main.test_reports.pages.reports.discType.title' & t} </h3> <div class=form-group> <label for=discType>${'main.test_reports.pages.reports.discType.title' & t}</label> <select value.bind=\\\"model.discType & validate\\\" class=form-control id=discType> <option repeat.for=\\\"option of DiscTypes\\\" model.bind=DiscType[option]> ${'main.test_reports.pages.reports.discType.' + option & t}</option> </select> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" if.one-time=\\\"Parameter.Position === par && !model.positionId\\\"> <div class=col-12> <div class=\\\"card card-body\\\"> <h3>${'main.test_reports.pages.reports.parameters.Position' & t} </h3> <select-position-list report.bind=model parameter-current.bind=par selected-amount=1 id=positionIdSelector value.bind=\\\"model.positionId & validate\\\"></select-position-list> </div> </div> </div> <div class=\\\"row mb-3\\\" if.one-time=\\\"Parameter.ZeroOrOnePosition === par && !model.positionId\\\"> <div class=col-12> <div class=\\\"card card-body\\\"> <h3>${'main.test_reports.pages.reports.parameters.Position' & t} </h3> <select-position-list report.bind=model parameter-current.bind=par selected-amount=1 id=zeroOrOnePositionIdSelector value.bind=model.positionId></select-position-list> </div> </div> </div> <div class=\\\"row mb-3\\\" if.one-time=\\\"Parameter.Team === par && !model.teamId\\\"> <div class=col-12> <div class=\\\"card card-body\\\"> <h3> ${'main.test_reports.pages.reports.parameters.Team' & t} </h3> <select-team-list report.bind=model parameter-current.bind=par selected-amount=1 id=teamIdSelector value.bind=\\\"model.teamId & validate\\\"></select-team-list> </div> </div> </div> <div class=\\\"row mb-3\\\" if.one-time=\\\"Parameter.Organization === par && !model.organizationId\\\"> <div class=col-12> <div class=\\\"card card-body\\\"> <h3> ${'main.test_reports.pages.reports.parameters.Organization' & t} </h3> <select-organization-list report.bind=model parameter-current.bind=par selected-amount=1 id=organizationIdSelector value.bind=\\\"model.organizationId & validate\\\"></select-organization-list> </div> </div> </div> <div class=\\\"row mb-3\\\" if.one-time=\\\"Parameter.Positions === par\\\"> <div class=col-12> <div class=\\\"card card-body\\\"> <h3> ${'main.test_reports.pages.reports.parameters.Positions' & t} </h3> <select-position-list report.bind=model parameter-current.bind=par selected-amount=1000 id=positionIdsSelector value.bind=\\\"model.positionIds & validate\\\"></select-position-list> </div> </div> </div> <div class=\\\"row mb-3\\\" if.one-time=\\\"Parameter.CompareToPosition === par\\\"> <div class=col-12> <div class=\\\"card card-body\\\"> <h3> ${'main.test_reports.pages.reports.parameters.ComparePosition' & t} </h3> <select-position-list report.bind=model parameter-current.bind=par selected-amount=1 id=compareToPositionIdSelector value.bind=\\\"model.compareToPositionId & validate\\\"> </select-position-list> </div> </div> </div> <div class=\\\"row mb-3\\\" if.one-time=\\\"Parameter.CompareToTeam === par\\\"> <div class=col-12> <div class=\\\"card card-body\\\"> <h3> ${'main.test_reports.pages.reports.parameters.CompareTeam' & t} </h3> <select-team-list report.bind=model parameter-current.bind=par selected-amount=1 id=compareToTeamIdSelector value.bind=\\\"model.compareToTeamId & validate\\\"></select-team-list> </div> </div> </div> <div class=\\\"row mb-3\\\" if.one-time=\\\"Parameter.CompareToOrganization === par\\\"> <div class=col-12> <div class=\\\"card card-body\\\"> <h3> ${'main.test_reports.pages.reports.parameters.CompareOrganization' & t} </h3> <select-organization-list report.bind=model parameter-current.bind=par selected-amount=1 id=compateToOrganizationIdSelector value.bind=\\\"model.compateToOrganizationId & validate\\\"> </select-organization-list> </div> </div> </div> <div class=\\\"row mb-3\\\" if.one-time=\\\"Parameter.Person === par && !model.personId && isReportActivation\\\"> <div class=col-12> <div class=\\\"card card-body\\\"> <h3>${'main.test_reports.pages.reports.parameters.Person' & t} </h3> <select-person-list report.bind=model parameter-current.bind=par selected-amount=1 id=personIdSelector value.bind=\\\"model.personId & validate\\\"></select-person-list> </div> </div> </div> <div class=\\\"row mb-3\\\" if.one-time=\\\"Parameter.Leader === par\\\"> <div class=col-12> <div class=\\\"card card-body\\\"> <h3>${'main.test_reports.pages.reports.parameters.Leader' & t} </h3> <select-person-list report.bind=model parameter-current.bind=par selected-amount=1 id=leaderIdSelector value.bind=\\\"model.personId & validate\\\"></select-person-list> </div> </div> </div> <div class=\\\"row mb-3\\\" if.one-time=\\\"Parameter.CompareToPerson === par\\\"> <div class=col-12> <div class=\\\"card card-body\\\"> <h3> ${'main.test_reports.pages.reports.parameters.ComparePerson' & t} </h3> <select-person-list report.bind=model parameter-current.bind=par selected-amount=1 id=compareToPersonIdSelector value.bind=\\\"model.compareToPersonId & validate\\\"></select-person-list> </div> </div> </div> <div class=\\\"row mb-3\\\" if.one-time=\\\"Parameter.OneOrTwoPeople === par\\\"> <div class=col-12> <div class=\\\"card card-body\\\"> <h3> ${'main.test_reports.pages.reports.parameters.People' & t} </h3> <select-person-list report.bind=model parameter-current.bind=par selected-amount=2 id=oneOrTwoPeopleIdsSelector value.bind=\\\"model.oneOrTwoPeopleIds & validate\\\"></select-person-list> </div> </div> </div> <div class=\\\"row mb-3\\\" if.one-time=\\\"Parameter.TwoPeople === par\\\"> <div class=col-12> <div class=\\\"card card-body\\\"> <h3> ${'main.test_reports.pages.reports.parameters.TwoPeople' & t} </h3> <select-person-list report.bind=model parameter-current.bind=par selected-amount=2 id=twoPeopleIdsSelector value.bind=\\\"model.twoPeopleIds & validate\\\"></select-person-list> </div> </div> </div> <div class=\\\"row mb-3\\\" if.one-time=\\\"Parameter.ThreePeople === par\\\"> <div class=col-12> <div class=\\\"card card-body\\\"> <h3> ${'main.test_reports.pages.reports.parameters.ThreePeople' & t} </h3> <select-person-list report.bind=model parameter-current.bind=par selected-amount=3 id=threePeopleIdsSelector value.bind=\\\"model.threePeopleIds & validate\\\"></select-person-list> </div> </div> </div> <div class=\\\"row mb-3\\\" if.one-time=\\\"Parameter.People === par\\\"> <div class=col-12> <div class=\\\"card card-body\\\"> <h3> ${'main.test_reports.pages.reports.parameters.People' & t} </h3> <select-person-list report.bind=model parameter-current.bind=par selected-amount=1000 id=peopleIdsSelector value.bind=\\\"model.peopleIds & validate\\\"></select-person-list> </div> </div> </div> <div class=\\\"row mb-3\\\" if.one-time=\\\"Parameter.Adjustment === par\\\"> <div class=col-12> <div class=\\\"card card-body\\\"> <h3> ${'main.test_reports.pages.reports.parameters.Adjustment' & t} </h3> <select-adjustment-list report.bind=model parameter-current.bind=par id=adjustmentsSelector value.bind=model.adjustments></select-adjustment-list> </div> </div> </div> <div class=\\\"row mb-3\\\" if.two-way=\\\"Parameter.Activation === par && model.activations.length > 0\\\"> <div class=col-12> <div class=\\\"card card-body\\\"> <h3> ${'main.test_reports.pages.reports.parameters.Activation' & t} </h3> <select-activation-list report.bind=model parameter-current.bind=par id=activationsSelector value.bind=model.activations></select-activation-list> </div> </div> </div> <div class=\\\"row mb-3\\\" if.two-way=\\\"Parameter.QuestionaryTeam === par\\\"> <div class=col-12> <div class=\\\"card card-body\\\"> <h3> ${'main.test_reports.pages.reports.parameters.Activation' & t} </h3> <select-questionary-team-list report.bind=model parameter-current.bind=par id=questionaryteamSelector value.bind=model.questionariesTeam></select-questionary-team-list> </div> </div> </div> </div> </div> </form> </template> \";","import { DialogController } from 'aurelia-dialog';\nimport { Logger } from 'aurelia-logging';\nimport { LogManager, autoinject } from 'aurelia-framework';\nimport { Notification } from 'common/services/notification';\nimport { ReportService } from 'main/test-reports/services/report-service';\nimport { ReportActivation } from 'models/test-reports/reports/reportActivation';\n\n@autoinject()\nexport class ReportWeightsModal {\n\n  private logger: Logger;\n  private items: ReportActivation[] = [];\n  private sumWeight: number = 0;\n\n  constructor(\n    private dialogController: DialogController,\n    private notification: Notification,\n    private reportService: ReportService) {\n    this.logger = LogManager.getLogger(\"ReportWeightsModal\");\n  }\n\n  public async activate(param: any): Promise<void> {\n    try {\n      let report = await this.reportService.getWeights(param.reportId);\n      this.items = (report && report.activations) ? report.activations : [];\n      this.sumWeight = this.items.reduce((sum, item) => sum + Number(item.weight), 0);\n    } catch (error) {\n      this.notification.error(error);\n      this.dialogController.cancel();\n    }\n  }\n}\n","module.exports = \"<template> <require from=../../../models/test-person/activationQuestionaryStatus></require> <require from=../../../models/test-person/activationQuestionaryStatusViewEngineHooks></require> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons>close</i> </button> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div> <h4>${'main.test_reports.pages.reports.report_activation.selected_activations' & t}</h4> <ul class=list-group> <li class=list-group-item repeat.for=\\\"item of items\\\"> <div class=row> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.activation_date' & t}</small> </label> ${item.activation.createdOn | dateTimeFormat} </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.admin.pages.questionaries.questionary' & t}</small> </label> <span if.bind=item.activationQuestionary>${item.activationQuestionary.questionary.name}</span> <span if.bind=\\\"!item.activationQuestionary && item.activation.questionary\\\">${item.activation.questionary.name}</span> </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\" if.bind=!item.activationQuestionary></div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\" if.bind=item.activationQuestionary> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.state' & t}</small> </label> <span if.bind=\\\"item.activationQuestionary.activationQuestionaryStatus == ActivationQuestionaryStatus.Finalized\\\" class=\\\"badge badge-pill badge-success\\\">${'main.test.pages.person.person_questionary_list.state_' + ActivationQuestionaryStatuses[item.activationQuestionary.activationQuestionaryStatus] & t}</span> <span if.bind=\\\"item.activationQuestionary.activationQuestionaryStatus != ActivationQuestionaryStatus.Finalized\\\" class=\\\"badge badge-pill badge-warning\\\">${'main.test.pages.person.person_questionary_list.state_' + ActivationQuestionaryStatuses[item.activationQuestionary.activationQuestionaryStatus] & t}</span> </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_evaluator_list.weight' & t}</small> </label> <input type=number class=form-control value.bind=item.weight readonly=readonly> </div> </div> </li> </ul> <ul class=list-group> <div class=\\\"col-md-4 offset-md-8 text-right pr-5\\\"><u>${sumWeight}</u></div> </ul> </div> </div> </div> </ux-dialog-body> <ux-dialog-footer> <button attach-focus=true class=\\\"btn btn-primary btn-round\\\" click.delegate=dialogController.ok() t=commands.accept>Accept</button> </ux-dialog-footer> </ux-dialog> </template> \";","import { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { autoinject, LogManager, bindable, Disposable, observable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { Report } from \"models/test-reports/reports/report\";\nimport { ReportActivation } from 'models/test-reports/reports/reportActivation';\nimport { CompetenceActivatedWeightModal } from \"main/test/pages/people-competence/competence-activated-weight-modal\";\n\n@autoinject()\nexport class SelectActivationList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  @bindable\n  @observable\n  private report: Report;\n\n  private sumWeight: number;\n\n  private items: ReportActivation[] = [];\n\n  constructor(\n    private notification: Notification,\n    private dialogService: DialogService) {\n    this.logger = LogManager.getLogger(\"SelectActivationList\");\n    this.sumWeight = 0;\n\n  }\n\n  private async bind(): Promise<any> {\n    this.logger.debug(\"bind\");\n    if (this.report) {\n      this.items = this.report.activations;\n      this.updateTotal();\n    }\n  }\n\n  private async updateTotal(): Promise<any> {\n    this.sumWeight = 0;\n    this.report.activations.forEach((reportactivation) => {\n      this.sumWeight += Number(reportactivation.weight);\n    });\n\n    if (this.sumWeight > 100) {\n      this.notification.error('main.test_reports.pages.reports.parameters.Activation_weight_required');\n    }\n  }\n\n  public async selectParameter(reportActivation: ReportActivation): Promise<void> {\n    this.logger.debug(\"selectParameter\");\n    let index = this.report.activations.findIndex(x => x.activationId == reportActivation.activationId && x.activationQuestionaryId == reportActivation.activationQuestionaryId);\n\n    if (!reportActivation.isAvailable) {\n      reportActivation.isAvailable = false;\n      reportActivation.weight = 0;\n    } else {\n      reportActivation.isAvailable = true;\n    }\n\n    this.report.activations[index] = reportActivation;\n    this.updateTotal();\n  }\n\n  public notificationInfo(message: string) {\n    this.notification.info(message);\n  }\n\n  private async seeActivatedCompetences(reportActivation: ReportActivation): Promise<void> {\n    let params: any = {\n      reportActivation: reportActivation,\n      report: this.report,\n    };\n    \n    await this.dialogService.open({\n      viewModel: CompetenceActivatedWeightModal,\n      model: params\n    }).whenClosed((response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        this.updateTotal();\n      }\n    });\n  }\n}\n","module.exports = \"<template> <require from=../../../models/test-person/activationQuestionaryStatus></require> <require from=../../../models/test-person/activationQuestionaryStatusViewEngineHooks></require> <require from=../../../models/questionaries/questionaryTypeViewEngineHooks></require> <require from=../../../models/questionaries/noDiscTypeViewEngineHooks></require> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> ${'main.test_reports.pages.reports.report_activation.selected_activations' & t}: </div> </div> </div> </div> </div> <div class=\\\"row mb-4\\\"> <div class=col-12> <ul class=list-group> <li class=list-group-item virtual-repeat.for=\\\"item of report.activations\\\"> <div class=row> <div class=\\\"col-md-1 mb-2\\\"> <div if.bind=item.activation.createdOn class=\\\"form-check custom-control custom-checkbox\\\"> <input class=\\\"form-check-input custom-control-input\\\" type=checkbox readonly.bind=\\\"item.activation.noDiscType == NoDiscType.Performance || item.activation.noDiscType == NoDiscType.Potential\\\" change.delegate=selectParameter(item) checked.bind=item.isAvailable id=activation_${parameterCurrent}_${item.activationId}__${item.activationQuestionaryId}> <label for=activation_${parameterCurrent}_${item.activationId}__${item.activationQuestionaryId} class=\\\"form-check-label custom-control-label\\\">&nbsp;</label> </div> </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'main.test.pages.person.person_questionary_list.activation_date' & t}</small></label> ${item.activation.createdOn | dateTimeFormat} </div> <div class=\\\"col-md-4 col-12 text-truncate mb-2\\\" if.bind=!item.activationQuestionary> <label class=d-block><small class=text-muted>${'tipo' & t}</small></label> ${item.activation.questionaryName} </div> <div class=\\\"col-md-4 col-12 text-truncate mb-2\\\" if.bind=item.activationQuestionary> <label class=d-block><small class=text-muted>${'tipo' & t}</small></label> ${item.activationQuestionary.questionary.name} <a href=# if.bind=\\\"item.activationQuestionary.questionary.questionaryType == QuestionaryType.Competences\\\" global-permission-show=\\\"can: TestPersonView\\\" title=\\\"${'commands.view' & t}\\\" click.delegate=seeActivatedCompetences(item)> <i class=material-icons>visibility</i> </a> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\" if.bind=\\\"item.activationQuestionary.activationQuestionaryStatus == ActivationQuestionaryStatus.Finalized\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.state' & t}</small> </label> <span class=\\\"badge badge-pill badge-success\\\">${'main.test.pages.person.person_questionary_list.state_' + ActivationQuestionaryStatuses[item.activationQuestionary.activationQuestionaryStatus] & t}</span> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\" if.bind=\\\"item.activationQuestionary.activationQuestionaryStatus != ActivationQuestionaryStatus.Finalized\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.state' & t}</small> </label> <span if.bind=item.activationQuestionary class=\\\"badge badge-pill badge-warning\\\">${'main.test.pages.person.person_questionary_list.state_' + ActivationQuestionaryStatuses[item.activationQuestionary.activationQuestionaryStatus] & t}</span> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-3\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_evaluator_list.weight' & t}</small> <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.reports.pages.selector.activation.data')\\\" role=button> <i class=material-icons>info_outline</i> </a> </label> <input type=number class=form-control id=weight readonly.bind=\\\"!item.isAvailable || item.activationQuestionary.questionary.questionaryType == QuestionaryType.Competences || item.activation.noDiscType == NoDiscType.Performance\\\" value.bind=\\\"item.weight & validate\\\" change.delegate=updateTotal() text> </div> </div> </li> </ul> <ul class=list-group> <div class=\\\"col-md-4 offset-md-10\\\"><u>${sumWeight}</u></div> </ul> </div> </div> </template> \";","import { autoinject, LogManager, bindable, observable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Report } from \"models/test-reports/reports/report\";\nimport { CompanyDiscProfileService } from 'main/admin/services/test-management/company-disc-profile-service';\nimport { CompanyDiscProfile } from 'models/test-management/disc-profiles/company-disc-profile';\nimport { Disc } from \"models/questionaries/disc\";\n\n@autoinject()\nexport class SelectAdjustmentList {\n\n  private logger: Logger;\n  private companyDisc: CompanyDiscProfile = new CompanyDiscProfile();\n\n  @bindable\n  @observable\n  private report: Report;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  constructor(\n    private companyDiscProfileService: CompanyDiscProfileService,\n  ) {\n    this.logger = LogManager.getLogger(\"SelectAdjustmentList\");\n    this.parameters.pageSize = 50;\n  }\n\n  private async bind(): Promise<any> {\n\n    this.companyDisc = await this.companyDiscProfileService.get()\n    if(this.report){\n\n      this.report.adjustments[0].value = null;\n      this.report.adjustments[1].value = null;\n      this.report.adjustments[2].value = null;\n      this.report.adjustments[3].value = null;\n\n      this.report.adjustments[0].operator = null;\n      this.report.adjustments[1].operator = null;\n      this.report.adjustments[2].operator = null;\n      this.report.adjustments[3].operator = null;\n\n      this.report.adjustments[0].disc = Disc.D;\n      this.report.adjustments[1].disc = Disc.I;\n      this.report.adjustments[2].disc = Disc.S;\n      this.report.adjustments[3].disc = Disc.C;\n\n    }\n    \n\n  }\n\n}\n","module.exports = \"<template> <require from=../../../models/adjustment/operatorViewEngineHooks></require> <require from=../../../models/questionaries/discViewEngineHooks></require> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group> <li class=list-group-item repeat.for=\\\"itm of Discs\\\"> <div class=row> <div class=\\\"col-md-2 col-12\\\"> <label class=d-block> <small class=text-muted>${'main.testperson.pages.adjustement.dimension' & t}</small> </label> ${$index == 0 ? companyDisc.d : \\\"\\\"} ${$index == 1 ? companyDisc.i : \\\"\\\"} ${$index == 2 ? companyDisc.s : \\\"\\\"} ${$index == 3 ? companyDisc.c : \\\"\\\"} </div> <div class=\\\"col-md-3 col-5\\\"> <label class=d-block> <small class=text-muted>${'main.testperson.pages.adjustement.operator' & t}</small> </label> <select value.bind=report.adjustments[$index].operator class=custom-select> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of Operators\\\" model.bind=option>${'main.admin.pages.adjustment.operator.' + option & t}</option> </select> </div> <div class=\\\"col-md-3 col-5\\\"> <label class=d-block> <small class=text-muted>${'main.testperson.pages.adjustement.value' & t}</small> </label> <input type=number min=0 class=form-control value.bind=report.adjustments[$index].value autocomplete=off> </div> </div> </li> </ul> </div> </div> </template> \";","import { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { autoinject, LogManager, bindable, Disposable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { ActivationService } from 'main/test/services/people/activation-service';\nimport { NoDiscType } from 'models/questionaries/noDiscType';\nimport { Activation } from 'models/test-person/activation';\nimport { PersonActivationType } from 'models/test-person/personActivationType';\nimport { Parameter } from 'models/test-reports/reports/parameter';\nimport { Report } from \"models/test-reports/reports/report\";\nimport moment from 'moment';\n\ninterface ItemAvailable {\n  [id: number]: boolean;\n}\n\n@autoinject()\nexport class SelectObservationList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  @bindable\n  private report: Report;\n\n  @bindable\n  private parameterCurrent: Parameter;\n\n  @bindable\n  private selectedAmount: number;\n\n  private selectedCurrent: number;\n  private banCheck: boolean;\n\n  private selectionLabel: string;\n  private items: any[] = [];\n  private banIds: number[] = [];\n  private itemAvailable: ItemAvailable = {};\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n\n  constructor(\n    private activationService: ActivationService,\n    private notification: Notification\n  ) {\n    this.logger = LogManager.getLogger(\"SelectObservationList\");\n    this.selectedCurrent = 0;\n    this.banCheck = false;\n\n    this.parameters.pageSize = 30;\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.activationService.listObserved(this.parameters, this.report.personId)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async attached(): Promise<any> {\n    if (this.report.companyId) {\n      this.activationService.client.currentCompanyId = this.report.companyId;\n\n      // filter activation by Observed\n      //this.parameters.search.PersonActivationType = PersonActivationType.Observed;\n\n      return await this.databind();\n    }\n  }\n\n  private async databind(): Promise<any> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<any> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private getSelectionLabel(): void {\n    this.selectionLabel = '';\n    this.items.forEach((x, index) => {\n      if (index > 0) {\n        this.selectionLabel += ', ';\n      }\n\n      const formattedDate = moment(x.createdOn).format('D/MM/YYYY h:mm a');\n      this.selectionLabel += formattedDate;\n    });\n  }\n\n  public async selectParameter(item: Activation): Promise<void> {\n    let banGeneral = this.banIds.findIndex(y => y === item.id);\n\n    if (banGeneral == -1) {\n      this.banIds.push(item.id);\n      this.selectedCurrent = ++this.selectedCurrent;\n      this.items.push(item);\n    }\n    else {\n      this.banIds.splice(banGeneral, 1);\n      this.selectedCurrent = --this.selectedCurrent;\n      this.items.splice(banGeneral, 1);\n    }\n\n    this.checkAmount();\n\n\n    switch (this.parameterCurrent) {\n      case Parameter.Observers:\n      case Parameter.TwoObservers: {\n        if (banGeneral == -1) {\n          this.report.observerIds.push(item.id);\n        } else {\n          this.report.observerIds.splice(banGeneral, 1);\n        }\n        break;\n      }\n      default: {\n        break;\n      }\n    }\n\n    this.getSelectionLabel();\n\n  }\n\n  // private checkAmount() {\n  //   if (this.selectedCurrent < +this.selectedAmount) {\n  //     this.banCheck = false;\n  //     this.parameters.tableData.forEach(x => {\n  //       this.itemAvailable[x.id] = false;\n  //     });\n\n  //   } else {\n  //     this.banCheck = true;\n  //     this.parameters.tableData.forEach(x => {\n  //       let ban = this.banIds.findIndex(y => y === x.id);\n  //       if (ban === -1)\n  //         this.itemAvailable[x.id] = true;\n  //       else\n  //         this.itemAvailable[x.id] = false;\n  //     });\n  //   }\n  // }\n  private checkAmount() {\n    const selectedPerformance = this.items.some(x => x.noDiscType === NoDiscType.Performance);\n    const selectedPotential = this.items.some(x => x.noDiscType === NoDiscType.Potential);\n\n    this.parameters.tableData.forEach(x => {\n      if (x.noDiscType === NoDiscType.Performance) {\n        // Si ya hay uno seleccionado de Performance y este no está seleccionado, ocultar el checkbox\n        this.itemAvailable[x.id] = selectedPerformance && !this.items.some(i => i.id === x.id);\n      } else if (x.noDiscType === NoDiscType.Potential) {\n        // Si ya hay uno seleccionado de Potential y este no está seleccionado, ocultar el checkbox\n        this.itemAvailable[x.id] = selectedPotential && !this.items.some(i => i.id === x.id);\n      } else {\n        // Otros tipos, mostrar normalmente\n        this.itemAvailable[x.id] = false;\n      }\n    });\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-8\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> ${'main.test_reports.pages.reports.person_questionary.selected_questionary' & t}: ${selectionLabel} </div> </div> </div> </div> </div> <div class=\\\"row mb-4\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-1 mb-2\\\"> <div if.bind=\\\"item.createdOn && item.isSelectable == true && !itemAvailable[item.id]\\\" class=\\\"form-check custom-control custom-checkbox\\\"> <input class=\\\"form-check-input custom-control-input\\\" type=checkbox change.delegate=selectParameter(item) model.bind=item.id checked.bind=auxItems id=activation_${parameterCurrent}_${item.id}> <label for=activation_${parameterCurrent}_${item.id} class=\\\"form-check-label custom-control-label\\\">&nbsp;</label> </div> </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'main.test.pages.person.person_questionary_list.activation_date' & t}</small></label> ${item.createdOn | dateTimeFormat} </div> <div class=\\\"col-md-4 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'tipo' & t}</small></label> ${item.questionaryName} </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'main.test.pages.person.person_questionary_list.evaluator' & t}</small></label> ${item.createdByName} </div> <div class=\\\"col-md-1 col-12 mb-2\\\"> <a global-permission-show=\\\"can: TestPersonObservationUpdate\\\" title=\\\"${'commands.view' & t}\\\" target=_blank href=company/${report.companyId}/test/people/person-observation/${report.personId}/observers/${item.id}> <i class=material-icons>visibility</i> </a> </div> </div> </li> </ul> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> ${'main.test_reports.pages.reports.person_questionary.selected_questionary' & t}: ${selectionLabel} </div> </div> </div> </div> </div> </template> \";","import { Activation } from 'models/test-person/activation';\nimport { autoinject, LogManager, bindable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { ValidationController, ValidationControllerFactory } from \"aurelia-validation\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Person } from \"models/test-person/person\";\nimport { PersonService } from \"../../test/services/people/person-service\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { Report } from \"models/test-reports/reports/report\";\nimport { Parameter } from \"models/test-reports/reports/parameter\";\nimport { ActivationService } from 'main/test/services/people/activation-service';\nimport { PersonObserver } from 'models/test-person/personObserver';\n\ninterface ItemAvailable {\n  [id: number]: boolean;\n}\n@autoinject()\nexport class SelectObserverList {\n\n  private logger: Logger;\n\n  @bindable\n  private model: Person = new Person();\n\n  @bindable\n  private report: Report;\n\n  @bindable\n  private parameterCurrent: Parameter;\n\n  @bindable\n  private selectedAmount: number;\n\n  private selectedCurrent: number;\n\n  private banCheck: boolean;\n\n  private banIds: number[] = [];\n\n  private itemAvailable: ItemAvailable = {};\n\n  private items: any[] = [];\n\n  private auxItems: any[] = [];\n\n  private selectionLabel: string;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private personId: number;\n  private validationController: ValidationController;\n\n  constructor(\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private activationService: ActivationService,\n    private personService: PersonService) {\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ObservationEdit\");\n\n    this.selectedCurrent = 0;\n    this.banCheck = false;\n\n    this.parameters.pageSize = 50;\n\n  }\n\n  private async attached(): Promise<any> {\n\n    if (this.report.companyId) {\n\n      this.personService.client.currentCompanyId = this.report.companyId;\n\n      if (!isNaN(this.report.personId)) {\n        this.personId = this.report.personId;\n        await this.databind();\n      }\n\n      return await this.databind();\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n     this.logger.debug(\"refreshing\");\n    //  return await this.personService.getByObservatedId(this.parameters, this.personId)\n    //    .then((response: UxDatatableResponse) => {\n    //      response.data.forEach(x => {\n    //        /// if(!this.observerAvailable[x.id])\n    //       //  this.observerAvailable[x.id] = false;\n    //     });\n    //     this.checkAmount();\n    \n    //      return response;\n    //    })\n    //    .catch(error => {\n    //      this.notification.error(error);\n    //    });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private getSelectionLabel(): void {\n    this.selectionLabel = '';\n    this.items.forEach(x => {\n      if (this.selectionLabel !== '') {\n        this.selectionLabel += ', ';\n      }\n      this.selectionLabel += `${x.observer.firstName} ${x.observer.lastName}`;\n    });\n  }\n\n  public async selectParameter(item: PersonObserver): Promise<void> {\n\n    let banGeneral = this.banIds.findIndex(y => y === item.id);\n\n    if (banGeneral == -1) {\n      this.banIds.push(item.id);\n      this.selectedCurrent = ++this.selectedCurrent;\n      this.items.push(item);\n    } else {\n      this.banIds.splice(banGeneral, 1);\n      this.selectedCurrent = --this.selectedCurrent;\n      this.items.splice(banGeneral, 1);\n    }\n\n    this.checkAmount();\n\n    // this.report.parameterSelect[this.parameterCurrent] =  this.banIds;   \n    switch (this.parameterCurrent) {\n      case Parameter.Observers: {\n        this.report.observerIds = this.items.map(x => x.id);\n        break;\n      }\n      default: {\n        break;\n      }\n    }\n\n    this.getSelectionLabel();\n\n  }\n\n  private checkAmount(){\n    if (this.selectedCurrent < +this.selectedAmount) {\n      this.banCheck = false;\n      this.parameters.tableData.forEach(x => {\n        this.itemAvailable[x.id] = false;\n      });\n\n    } else {\n      this.banCheck = true;\n      this.parameters.tableData.forEach(x => {\n        let ban = this.banIds.findIndex(y => y === x.id);\n        if (ban === -1)\n          this.itemAvailable[x.id] = true;\n        else\n          this.itemAvailable[x.id] = false;\n      });\n    }\n  }\n\n}\n","module.exports = \"<template> <require from=../../../models/test-person/activationQuestionaryStatusViewEngineHooks></require> <require from=../../../models/test-person/observerRoleViewEngineHooks></require> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-8\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> ${'main.test_reports.pages.reports.observers.selected_observer' & t} ${selectionLabel} </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <tr> <th scope=col></th> <th scope=col t=main.testperson.pages.observation_activation.observator_fields.observer>Observador</th> <th scope=col t=main.testperson.pages.observation_activation.observator_fields.role>Rol</th> <th scope=col t=main.testperson.pages.observation_activation.observator_fields.activation_date>Fecha de activación</th> <th scope=col t=main.testperson.pages.observation_activation.observator_fields.status>Estado</th> </tr> <tr virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext) class=\\\"${item.activationQuestionaryStatus != ActivationQuestionaryStatus.Finalized ? 'text-muted': ''}\\\"> <td> <div if.bind=\\\"item.activationQuestionaryStatus == ActivationQuestionaryStatus.Finalized\\\" class=\\\"form-check custom-control custom-checkbox\\\"> <input class=\\\"form-check-input custom-control-input\\\" type=checkbox change.delegate=selectParameter(item) model.bind=item.id checked.bind=auxItems id=observer_${parameterCurrent}_${item.id} disabled.bind=\\\"banCheck && itemAvailable[item.id]\\\"> <label for=observer_${parameterCurrent}_${item.id} class=\\\"form-check-label custom-control-label\\\">&nbsp;</label> </div> </td> <td> ${item.observer.firstName} ${item.observer.lastName} <small class=text-muted></small> </td> <td>${'main.test.pages.people.observer_roles.' + ObserverRoles[item.observerRole] & t}</td> <td>${item.createdOn | dateTimeFormat}</td> <td if.bind=\\\"item.activationQuestionaryStatus == ActivationQuestionaryStatus.Finalized\\\"> <span class=\\\"badge badge-pill badge-success\\\">${'main.test.pages.person.person_questionary_list.state_' + ActivationQuestionaryStatuses[item.activationQuestionaryStatus] & t}</span></td> <td if.bind=\\\"item.activationQuestionaryStatus != ActivationQuestionaryStatus.Finalized\\\"> <span class=\\\"badge badge-pill badge-warning\\\">${'main.test.pages.person.person_questionary_list.state_' + ActivationQuestionaryStatuses[item.activationQuestionaryStatus] & t}</span></td> </tr> </table> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> ${'main.test_reports.pages.reports.observers.selected_observer' & t} ${selectionLabel} </div> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager, bindable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { OrganizationService } from \"main/test/services/organization/organization-service\";\nimport { Report } from \"models/test-reports/reports/report\";\nimport { Parameter } from \"models/test-reports/reports/parameter\";\nimport { Organization } from \"models/test-organization/organization\";\n\ninterface ItemAvailable {\n  [id: number]: boolean;\n}\n@autoinject()\nexport class SelectOrganizationList {\n\n  private logger: Logger;\n\n  @bindable\n  private report: Report;\n\n  @bindable\n  private parameterCurrent: Parameter;\n\n  @bindable\n  private selectedAmount: number;\n\n  private selectedCurrent: number;\n\n  private banCheck: boolean;\n\n  private banIds: number[] = [];\n\n  private itemAvailable: ItemAvailable = {};\n\n  private items: any[] = [];\n\n  private auxItems: any[] = [];\n\n  private selectionLabel: string;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    // this.logger.debug(\"refreshing\");\n    return await this.organizationService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        // response.data.forEach(x => {\n        //   this.itemAvailable[x.id] = false;\n        // });\n\n        this.checkAmount();\n\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  constructor(\n    private organizationService: OrganizationService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"SelectOrganizationList\");\n    this.selectedCurrent = 0;\n    this.banCheck = false;\n\n    this.parameters.pageSize = 50;\n  }\n\n  private async attached(): Promise<any> {\n\n    if (this.report.companyId) {\n      this.organizationService.client.currentCompanyId = this.report.companyId;\n      return await this.databind();\n    }\n  }\n\n  private async databind(): Promise<void> {\n    // this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private getSelectionLabel(): void {\n    this.selectionLabel = '';\n    this.items.forEach(x => {\n      if (this.selectionLabel !== '') {\n        this.selectionLabel += ', ';\n      }\n      this.selectionLabel += x.name;\n    });\n  }\n\n  public async selectParameter(item: Organization): Promise<void> {\n\n    let banGeneral = this.banIds.findIndex(y => y === item.id);\n    if (banGeneral == -1) {\n      this.banIds.push(item.id);\n      this.selectedCurrent = ++this.selectedCurrent;\n      this.items.push(item);\n    } else {\n      this.banIds.splice(banGeneral, 1);\n      this.selectedCurrent = --this.selectedCurrent;\n      this.items.splice(banGeneral, 1);\n    }\n\n    this.checkAmount();\n\n    switch (this.parameterCurrent) {\n      case Parameter.Organization: {\n        this.report.organizationId = this.items.map(x => x.id)[0];\n        break;\n      }\n      case Parameter.CompareToOrganization: {\n        this.report.compateToOrganizationId = this.items.map(x => x.id)[0];\n        break;\n      }\n      default: {\n        break;\n      }\n    }\n\n    this.getSelectionLabel();\n\n  }\n\n  private checkAmount() {\n    if (this.selectedCurrent < +this.selectedAmount) {\n      this.banCheck = false;\n      this.parameters.tableData.forEach(x => {\n        this.itemAvailable[x.id] = false;\n      });\n\n    } else {\n      this.banCheck = true;\n      this.parameters.tableData.forEach(x => {\n        let ban = this.banIds.findIndex(y => y === x.id);\n        if (ban === -1)\n          this.itemAvailable[x.id] = true;\n        else\n          this.itemAvailable[x.id] = false;\n      });\n    }\n  }\n\n}\n","module.exports = \"<template> <require from=../../../models/test-organization/organizationActivationTypeViewEngineHooks></require> <require from=../../../models/questionaries/organizationTypeViewEngineHooks></require> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-8\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> ${'main.test_reports.pages.reports.organizations.selected_organization' & t} ${selectionLabel} </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable class=\\\"${item.highestDisc === null ? 'text-muted': ''}\\\"> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-1 col-1 mb-2\\\"> <div if.bind=\\\"item.highestDisc >= 0\\\" class=\\\"form-check custom-control custom-checkbox\\\"> <input class=\\\"form-check-input custom-control-input\\\" type=checkbox model.bind=item.id checked.bind=auxItems change.delegate=selectParameter(item) id=org_${parameterCurrent}_${item.id} disabled.bind=\\\"banCheck && itemAvailable[item.id]\\\"> <label for=org_${parameterCurrent}_${item.id} class=\\\"form-check-label custom-control-label\\\">&nbsp;</label> </div> </div> <div class=\\\"col-md-3 col-11 text-truncate minh-40 mb-2\\\"> <span title=${item.name}>${item.name}</span> </div> <div class=\\\"col-md-3 col-12 text-truncate minh-100 mb-2\\\"> <div class=mb-2> <label class=d-block> <small class=text-muted>${'main.test.pages.organizations.activation_types.title' & t}</small> </label> ${'main.test.pages.organizations.activation_types.' + OrganizationActivationType[item.organizationActivationType] & t} </div> <div> <label class=d-block> <small class=text-muted>${'main.test.pages.organizations.organization_types.title' & t}</small> </label> ${'main.test.pages.organizations.organization_types.' + OrganizationType[item.organizationType] & t} </div> </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.organizations.created_on' & t}</small> </label> ${item.createdOn | dateTimeFormat} </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\" if.bind=\\\"item.highestDisc >= 0\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.organizations.status.title' & t}</small> </label> <span class=\\\"badge badge-pill badge-success\\\">${'main.test.pages.organizations.statuses.activated' & t}</span> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\" if.bind=\\\"item.highestDisc == null\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.organizations.status.title' & t}</small> </label> <span class=\\\"badge badge-pill badge-warning\\\">${'main.test.pages.organizations.statuses.processing' & t}</span> </div> </div> </li> </ul> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> ${'main.test_reports.pages.reports.organizations.selected_organization' & t} ${selectionLabel} </div> </div> </div> </div> </div> </template> \";","\nimport { autoinject, LogManager, bindable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable-pagination\";\nimport { PersonService } from \"../../test/services/people/person-service\";\nimport { Notification } from \"common/services/notification\";\n// import { PersonActivationSource } from \"models/test-person/activationMode\";\nimport { Report } from \"models/test-reports/reports/report\";\nimport { Parameter } from 'models/test-reports/reports/parameter';\nimport { Person } from \"models/test-person/person\";\n\ninterface ItemAvailable {\n  [id: number]: boolean;\n}\n\n@autoinject()\nexport class SelectPersonList {\n\n  private logger: Logger;\n\n  @bindable\n  private report: Report;\n\n  @bindable\n  private parameterCurrent: Parameter;\n\n  @bindable\n  private selectedAmount: number;\n\n  private selectedCurrent: number;\n\n  private banCheck: boolean;\n\n  private banIds: number[] = [];\n\n  private items: any[] = [];\n\n  private auxItems: any[] = [];\n\n  private itemAvailable: ItemAvailable = {};\n\n  private selectionLabel: string;\n\n  // private ActivationSource = PersonActivationSource;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    // this.logger.debug(\"refreshing\");\n    return await this.personService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n\n        this.checkAmount();\n\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  constructor(\n    private personService: PersonService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"SelectPersonList\");\n    this.selectedCurrent = 0;\n    this.banCheck = false;\n\n    this.parameters.pageSize = 20;\n  }\n\n  private async attached(): Promise<any> {\n\n    if (this.report.companyId) {\n      this.personService.client.currentCompanyId = this.report.companyId;\n      return await this.databind();\n    }\n  }\n\n\n  private async databind(): Promise<void> {\n    // this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private getSelectionLabel(): void {\n    this.selectionLabel = '';\n    this.items.forEach(x => {\n      if (this.selectionLabel !== '') {\n        this.selectionLabel += ', ';\n      }\n      this.selectionLabel += x.fullName;\n    });\n  }\n\n  public async selectParameter(item: Person): Promise<void> {\n\n    let banGeneral = this.banIds.findIndex(y => y === item.id);\n\n    if (banGeneral == -1) {\n      this.banIds.push(item.id);\n      this.selectedCurrent = ++this.selectedCurrent;\n      this.items.push(item);\n    } else {\n      this.banIds.splice(banGeneral, 1);\n      this.selectedCurrent = --this.selectedCurrent;\n      this.items.splice(banGeneral, 1);\n    }\n\n\n    this.checkAmount();\n\n    switch (this.parameterCurrent) {\n      case Parameter.OneOrTwoPeople: {\n        this.report.oneOrTwoPeopleIds = this.items.map(x => x.id);\n        break;\n      }\n      case Parameter.TwoPeople: {\n        this.report.twoPeopleIds = this.items.map(x => x.id);\n        break;\n      }\n      case Parameter.ThreePeople: {\n        this.report.threePeopleIds = this.items.map(x => x.id);\n        break;\n      }\n      case Parameter.Person: {\n        this.report.personId = this.items.map(x => x.id)[0];\n        break;\n      }\n      case Parameter.CompareToPerson: {\n        this.report.compareToPersonId = this.items.map(x => x.id)[0];\n        break;\n      }\n      case Parameter.People: {\n        this.report.peopleIds = this.items.map(x => x.id);\n        break;\n      }\n      case Parameter.Leader: {\n        this.report.personId = this.items.map(x => x.id)[0];\n        break;\n      }\n      default: {\n        break;\n      }\n    }\n\n    this.getSelectionLabel();\n\n  }\n\n  private checkAmount() {\n    if (this.selectedCurrent < +this.selectedAmount) {\n      this.banCheck = false;\n      this.parameters.tableData.forEach(x => {\n        this.itemAvailable[x.id] = false;\n      });\n\n    } else {\n      this.banCheck = true;\n      this.parameters.tableData.forEach(x => {\n        let ban = this.banIds.findIndex(y => y === x.id);\n        if (ban === -1)\n          this.itemAvailable[x.id] = true;\n        else\n          this.itemAvailable[x.id] = false;\n      });\n    }\n  }\n\n\n}\n","module.exports = \"<template> <require from=../../../models/test-person/personActivationTypeViewEngineHooks></require> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-pagination-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-pagination-search> </div> <div class=\\\"col-12 col-md-8\\\"> <ux-datatable-pagination-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-pagination-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> ${'main.test_reports.pages.reports.people.selected_people' & t} ${selectionLabel} </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\"> <div class=row> <div class=\\\"col-md-1 col-1 mb-2\\\"> <div if.bind=!discRequired class=\\\"form-check custom-control custom-checkbox\\\"> <input class=\\\"form-check-input custom-control-input\\\" type=checkbox change.delegate=selectParameter(item) model.bind=item.id checked.bind=auxItems id=person_${parameterCurrent}_${item.id} disabled.bind=\\\"banCheck && itemAvailable[item.id]\\\"> <label for=person_${parameterCurrent}_${item.id} class=\\\"form-check-label custom-control-label\\\">&nbsp;</label> </div> </div> <div class=\\\"col-md-1 col-2 mb-2\\\"> <disc-avatar size.bind=36 disc.bind=item.highestDisc picture-url.bind=item.pictureUrl initials.bind=item.initials></disc-avatar> </div> <div class=\\\"col-md-6 col-9 text-truncate minh-40 mb-2\\\"> <span title=${item.fullName}>${item.fullName}</span> <br/> <small class=text-muted>${item.email}</small> </div> <div class=\\\"d-md-none col-3\\\"></div> <div class=\\\"col-md-4 col-9 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.testperson.pages.person.activation_date' & t}</small> </label> ${item.createdOn | dateTimeFormat} </div> </div> </li> </ul> <br> <ux-datatable-pagination-selector parameters.bind=parameters input-classes=form-control on-refresh.bind=refresh> </ux-datatable-pagination-selector> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> ${'main.test_reports.pages.reports.people.selected_people' & t} ${selectionLabel} </div> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager, bindable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { ActivationQuestionaryService } from \"../../test/services/people/activation-questionary-service\";\nimport { Report } from \"models/test-reports/reports/report\";\nimport { Parameter } from \"models/test-reports/reports/parameter\";\nimport { ActivationQuestionary } from \"models/test-person/activationQuestionary\";\nimport { DialogService } from \"aurelia-dialog\";\nimport { CompetenceActivatedModal } from \"main/test/pages/people-competence/competence-activated-modal\";\nimport { QuestionaryType } from \"models/questionaries/questionaryType\";\nimport { ActivationType } from \"models/test-person/activationType\";\n\ninterface ItemAvailable {\n  [id: number]: boolean;\n}\n@autoinject()\nexport class SelectPersonQuestionaryList {\n\n  private logger: Logger;\n\n  @bindable\n  private report: Report;\n\n  @bindable\n  private parameterCurrent: Parameter;\n\n  @bindable\n  private selectedAmount: number;\n\n  @bindable\n  public isDiscType: boolean;\n\n  private selectedCurrent: number;\n  private banCheck: boolean;\n  private banIds: number[] = [];\n\n  private itemAvailable: ItemAvailable = {};\n\n  private items: any[] = [];\n\n  private selectionLabel: string;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  @bindable\n  private questionaryId: number;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\"); \n    return await this.activationQuestionaryService.list(this.parameters, this.report.personId)\n      .then((response: UxDatatableResponse) => {\n        if(!this.isDiscType)\n        response.data = response.data.filter(x => x.questionaryId == this.questionaryId);\n        else\n        response.data = response.data.filter(x => x.questionaryType == QuestionaryType.Disc && (x.activationType == ActivationType.Person || x.activationType == ActivationType.Position));\n        response.totalRecords = response.data.length;\n        this.checkAmount();\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n\n  }\n\n\n  constructor(\n    private activationQuestionaryService: ActivationQuestionaryService,\n    private notification: Notification,\n    private dialogService: DialogService) {\n\n    this.logger = LogManager.getLogger(\"SelectPersonQuestionaryList\");\n    this.selectedCurrent = 0;\n    this.banCheck = false;\n  }\n\n  private async attached(): Promise<any> {\n\n    if (this.report.companyId) {\n      this.activationQuestionaryService.client.currentCompanyId = this.report.companyId;\n      return await this.databind();\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private getSelectionLabel(): void {\n    this.selectionLabel = '';\n    this.items.forEach(x => {\n      if (this.selectionLabel !== '') {\n        this.selectionLabel += ', ';\n      }\n      this.selectionLabel += x.applicationDate;\n    });\n  }\n\n  public async selectParameter(item: ActivationQuestionary): Promise<void> {\n    let banGeneral = this.banIds.findIndex(y => y === item.id);\n\n    if (banGeneral == -1) {\n      this.banIds.push(item.id);\n      this.selectedCurrent = ++this.selectedCurrent;\n      this.items.push(item);\n    }\n    else {\n      this.banIds.splice(banGeneral, 1);\n      this.selectedCurrent = --this.selectedCurrent;\n      this.items.splice(banGeneral, 1);\n    }\n\n    this.checkAmount();\n\n\n    switch (this.parameterCurrent) {\n      case Parameter.Questionary: {\n        if(banGeneral == -1){\n           this.report.activationQuestionaryIds.push(item.id);\n        }else{\n          this.report.activationQuestionaryIds.splice(banGeneral, 1);\n        }\n        break;\n      }\n      default: {\n        break;\n      }\n    }\n    \n    this.getSelectionLabel();\n\n  }\n\n  private checkAmount() {\n    if (this.selectedCurrent < +this.selectedAmount) {\n      this.banCheck = false;\n      this.parameters.tableData.forEach(x => {\n        this.itemAvailable[x.id] = false;\n      });\n\n    } else {\n      this.banCheck = true;\n      this.parameters.tableData.forEach(x => {\n        let ban = this.banIds.findIndex(y => y === x.id);\n        if (ban === -1)\n          this.itemAvailable[x.id] = true;\n        else\n          this.itemAvailable[x.id] = false;\n      });\n    }\n  }\n  \n\n  private async seeActivatedCompetences(id: number): Promise<void> {\n    await this.dialogService.open({\n      viewModel: CompetenceActivatedModal,\n      model: id\n    })\n  }\n\n}\n","module.exports = \"<template> <require from=../../../models/test-person/activationQuestionaryStatus></require> <require from=../../../models/test-person/activationQuestionaryStatusViewEngineHooks></require> <require from=../../../models/questionaries/questionaryTypeViewEngineHooks></require> <div if.bind=\\\"parameters.tableData.length > 0\\\"> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-8\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> ${'main.test_reports.pages.reports.person_questionary.selected_questionary' & t}: ${selectionLabel | dateTimeFormat} </div> </div> </div> </div> </div> <div class=\\\"row mb-4\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext) class=\\\"${item.applicationDate === null ? 'text-muted': ''}\\\"> <div class=row> <div class=\\\"col-md-1 mb-2\\\"> <div if.bind=item.applicationDate class=\\\"form-check custom-control custom-checkbox\\\"> <input class=\\\"form-check-input custom-control-input\\\" type=checkbox change.delegate=selectParameter(item) model.bind=item.id checked.bind=auxItems id=activationQuestionary_${parameterCurrent}_${item.id} disabled.bind=\\\"banCheck && itemAvailable[item.id]\\\"> <label for=activationQuestionary_${parameterCurrent}_${item.id} class=\\\"form-check-label custom-control-label\\\">&nbsp;</label> </div> </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.activation_date' & t}</small> </label> ${item.createdOn | dateTimeFormat} </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.application_date' & t}</small> </label> ${item.applicationDate | dateTimeFormat} </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\" if.bind=\\\"item.activationQuestionaryStatus == ActivationQuestionaryStatus.Finalized\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.state' & t}</small> </label> <span class=\\\"badge badge-pill badge-success\\\">${'main.test.pages.person.person_questionary_list.state_' + ActivationQuestionaryStatuses[item.activationQuestionaryStatus] & t}</span> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\" if.bind=\\\"item.activationQuestionaryStatus != ActivationQuestionaryStatus.Finalized\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.state' & t}</small> </label> <span class=\\\"badge badge-pill badge-warning\\\">${'main.test.pages.person.person_questionary_list.state_' + ActivationQuestionaryStatuses[item.activationQuestionaryStatus] & t}</span> </div> <div if.bind=\\\"item.questionaryType == QuestionaryType.Disc\\\" class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.test' & t}</small> </label> ${item.questionaryName} </div> <div if.bind=\\\"item.questionaryType != QuestionaryType.Disc\\\" class=\\\"d-felx align-items-center col-md-1 col-12 mb-2\\\"> <a href=# if.bind=\\\"item.questionaryType == QuestionaryType.Competences\\\" global-permission-show=\\\"can: TestPersonView\\\" title=\\\"${'commands.view' & t}\\\" click.delegate=seeActivatedCompetences(item.id)> <i class=material-icons>visibility</i> </a> </div> </div>  </li></ul> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> ${'main.test_reports.pages.reports.person_questionary.selected_questionary' & t}: ${selectionLabel | dateTimeFormat} </div> </div> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager, bindable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable-pagination\";\nimport { Notification } from \"common/services/notification\";\nimport { PositionService } from \"../../test/services/position/position-service\";\nimport { Report } from \"models/test-reports/reports/report\";\nimport { Parameter } from \"models/test-reports/reports/parameter\";\nimport { Position } from \"models/test-position/position\";\n\ninterface ItemAvailable {\n  [id: number]: boolean;\n}\n@autoinject()\nexport class SelectPositionList {\n\n  private logger: Logger;\n\n  @bindable\n  private report: Report;\n\n  @bindable\n  private parameterCurrent: Parameter;\n\n  @bindable\n  private selectedAmount: number;\n\n  private selectedCurrent: number;\n  private banCheck: boolean;\n  private banIds: number[] = [];\n\n  private itemAvailable: ItemAvailable = {};\n\n  private items: any[] = [];\n\n  private auxItems: any[] = [];\n\n  private selectionLabel: string;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private isReferencePosition: boolean = false;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    // this.logger.debug(\"refreshing\");\n    \n    if (!this.isReferencePosition){\n      return await this.positionService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.checkAmount();        \n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n    }\n    else{\n      return await this.positionService.listPositionReference(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        this.checkAmount();        \n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n    }\n  }\n\n  constructor(\n    private positionService: PositionService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"SelectPositionList\");\n    this.selectedCurrent = 0;\n    this.banCheck = false;\n\n    this.parameters.pageSize = 20;\n  }\n\n  private async attached(): Promise<any> {\n\n    if (this.report.companyId) {\n      this.positionService.client.currentCompanyId = this.report.companyId;\n      return await this.databind();\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n\n  private getSelectionLabel(): void {\n    this.selectionLabel = '';\n    this.items.forEach(x => {\n      if(this.selectionLabel !== ''){\n        this.selectionLabel += ', ';\n      }\n      this.selectionLabel += x.name;\n    });\n  }\n\n  public async selectParameter(item: Position): Promise<void> {\n\n    let banGeneral = this.banIds.findIndex(y => y === item.id);\n    \n    if (banGeneral == -1) {\n      this.banIds.push(item.id);\n      this.selectedCurrent = ++this.selectedCurrent;\n      this.items.push(item);\n    }\n    else {\n      this.banIds.splice(banGeneral, 1);\n      this.selectedCurrent = --this.selectedCurrent;\n      this.items.splice(banGeneral, 1);\n    }\n\n    this.checkAmount();\n\n\n    switch (this.parameterCurrent) {\n      case Parameter.Position:\n      case Parameter.ZeroOrOnePosition: {\n        this.report.positionId = this.items.map(x => x.id)[0];\n        break;\n      }\n      case Parameter.Positions: {\n        this.report.positionIds = this.items.map(x => x.id);\n        break;\n      }\n      case Parameter.CompareToPosition: {\n        this.report.compareToPositionId = this.items.map(x => x.id)[0];\n        break;\n      }\n      default: {\n        break;\n      }\n    }\n    this.getSelectionLabel();\n\n  }\n\n  private checkAmount(){\n    if (this.selectedCurrent < +this.selectedAmount) {\n      this.banCheck = false;\n      this.parameters.tableData.forEach(x => {\n        this.itemAvailable[x.id] = false;\n      });\n\n    } else {\n      this.banCheck = true;\n      this.parameters.tableData.forEach(x => {\n        let ban = this.banIds.findIndex(y => y === x.id);\n        if (ban === -1)\n          this.itemAvailable[x.id] = true;\n        else\n          this.itemAvailable[x.id] = false;\n      });\n    }\n  }\n  public async changeList(isCompany: boolean) {\n\n  if (!isCompany)  \n      this.isReferencePosition =true;\n  else\n      this.isReferencePosition = false;\n  \n   return await this.databind();\n  }\n}\n","module.exports = \"<template> <require from=../../../models/test-position/positionActivationTypeViewEngineHooks></require> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-pagination-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-pagination-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-pagination-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-pagination-info> </div> <div class=\\\"col-12 col-md-4\\\"> <div class=\\\"btn-group btn-group-toggle\\\" data-toggle=buttons> <label class=\\\"btn btn-primary active\\\" click.delegate=changeList(true)> <input type=radio name=options id=option1> ${'main.test_reports.pages.reports.positions.company' & t}  </label> <label class=\\\"btn btn-primary\\\" click.delegate=changeList(false)> <input type=radio name=options id=option2> ${'main.test.pages.position.position_edit.activation_type.Reference' & t}  </label> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> ${'main.test_reports.pages.reports.positions.selected_position' & t} ${selectionLabel} </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" class=\\\"${item.highestDisc === null ? 'text-muted': ''}\\\"> <div class=row> <div class=\\\"col-md-1 col-1 mb-2\\\"> <div if.bind=\\\"item.highestDisc >= 0\\\" class=\\\"form-check custom-control custom-checkbox\\\"> <input class=\\\"form-check-input custom-control-input\\\" type=checkbox change.delegate=selectParameter(item) model.bind=item.id checked.bind=auxItems id=position_${parameterCurrent}_${item.id} disabled.bind=\\\"banCheck && itemAvailable[item.id]\\\"> <label for=position_${parameterCurrent}_${item.id} class=\\\"form-check-label custom-control-label\\\">&nbsp;</label> </div> </div> <div class=\\\"col-md-4 col-11 text-truncate minh-40 mb-2\\\"> <span title=${item.name}>${item.name}</span> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_list.activation_type' & t}</small> </label> ${'main.test.pages.position.position_edit.activation_type.' + PositionActivationType[item.positionActivationType] & t} </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_list.date' & t}</small> </label> ${item.createdOn | dateTimeFormat} </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\" if.bind=\\\"item.highestDisc >= 0\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_list.status.title' & t}</small> </label> <span class=\\\"badge badge-pill badge-success\\\">${'main.test.pages.position.position_list.statuses.activated' & t}</span> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\" if.bind=\\\"item.highestDisc == null\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_list.status.title' & t}</small> </label> <span class=\\\"badge badge-pill badge-warning\\\">${'main.test.pages.position.position_list.statuses.processing' & t}</span> </div>  </div> </li> </ul> <br> <ux-datatable-pagination-selector parameters.bind=parameters input-classes=form-control on-refresh.bind=refresh> </ux-datatable-pagination-selector> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> ${'main.test_reports.pages.reports.positions.selected_position' & t} ${selectionLabel} </div> </div> </div> </div> </div> </template> \";","import { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { autoinject, LogManager, bindable, Disposable, observable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableCustomAttribute, UxDatatableParameters, UxDatatableResponse } from 'common/resources/elements/ux/datatable/ux-datatable';\nimport { Notification } from \"common/services/notification\";\nimport { forEach } from 'lodash';\nimport { CompetenceActivatedWeightModal } from 'main/test/pages/people-competence/competence-activated-weight-modal';\nimport { ActivationQuestionaryService } from 'main/test/services/people/activation-questionary-service';\nimport { TeamPersonService } from 'main/test/services/team/team-person-service';\nimport { ActivationQuestionaryCompetences } from 'models/test-core/competences/activation-questionary-competences';\nimport { Parameter } from 'models/test-reports/reports/parameter';\nimport { Report } from \"models/test-reports/reports/report\";\nimport { ReportActivation } from 'models/test-reports/reports/reportActivation';\nimport { ReportQuestionaryTeam } from 'models/test-reports/reports/reportQuestionaryTeam';\n\n\n@autoinject()\nexport class SelectQuestionaryTeamList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  @bindable\n  @observable\n  private report: Report;\n\n  @bindable\n  private parameterCurrent: Parameter;\n\n  private sumWeight: number;\n\n  private teamId: number;\n\n  //private items: ReportQuestionaryTeam[] = [];\n\n  private teamParameters: UxDatatableParameters = new UxDatatableParameters();\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n\n\n  constructor(\n    private notification: Notification,\n    private activationQuestionaryService: ActivationQuestionaryService,\n    private teamPersonService: TeamPersonService,\n    private dialogService: DialogService\n  ) {\n    this.logger = LogManager.getLogger(\"SelectQuestionaryTeamList\");\n    this.sumWeight = 0;\n    this.parameters.search.PersonIds = [];\n  }\n\n  private teamRefresh = async (): Promise<UxDatatableResponse> => {\n    this.logger.debug(\"refreshing team\");\n    return await this.teamPersonService.list(this.teamParameters, this.teamId);\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.activationQuestionaryService.getquestionnaires(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n\n  }\n\n  private async bind(): Promise<any> {\n    let a = this.report\n    if (this.report.teamId) {\n      this.teamId = this.report.teamId\n      this.activationQuestionaryService.client.currentCompanyId = this.report.companyId;\n      this.teamPersonService.client.currentCompanyId = this.report.companyId;\n\n      await this.teamDatabind();\n\n      await this.databind();\n\n      this.updateTotal();\n\n      this.notification.warning('main.test_reports.pages.reports.parameters.ReportQuestionaryTeam_notification');\n    }\n  }\n\n  private async databind(): Promise<any> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        if (response) {\n          this.parameters.tableData = response.data;\n          this.parameters.totalRecords = response.totalRecords;\n          this.parameters.tableData.forEach(questionary => {\n            let newReportQuestionaryTeam: ReportQuestionaryTeam = {\n              reportId: Number(this.report.questionariesTeam.length),\n              questionaryId: questionary.id,\n              questionary: questionary,\n              weight: 0,\n              isAvailable: true,\n              activationQuestionaryCompetences: questionary.activationQuestionaryCompetences\n            };\n            this.report.questionariesTeam.push(newReportQuestionaryTeam);\n          });\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async teamDatabind(): Promise<void> {\n    this.logger.debug(\"teamDatabind\");\n    try {\n      let response: UxDatatableResponse = await this.teamRefresh();\n      this.teamParameters.tableData = response.data;\n      this.teamParameters.totalRecords = response.totalRecords;\n      this.teamParameters.tableData.forEach(x => {\n        this.parameters.search.PersonIds.push(x.personId);\n      });\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async updateTotal(): Promise<any> {\n    this.sumWeight = 0;\n    this.report.questionariesTeam.forEach((reportQuestionaryTeam) => {\n      this.sumWeight += Number(reportQuestionaryTeam.weight);\n    });\n\n    if (this.sumWeight > 100) {\n      this.notification.error('main.test_reports.pages.reports.parameters.Activation_weight_required');\n    }\n  }\n\n  public async selectParameter(reportQuestionaryTeam: ReportQuestionaryTeam): Promise<void> {\n    this.logger.debug(\"selectParameter\");\n    let index = this.report.questionariesTeam.findIndex(x => x.questionaryId == reportQuestionaryTeam.questionaryId);\n\n    if (!reportQuestionaryTeam.isAvailable) {\n      reportQuestionaryTeam.isAvailable = false;\n      reportQuestionaryTeam.weight = 0;\n    } else {\n      reportQuestionaryTeam.isAvailable = true;\n    }\n    this.report.questionariesTeam[index] = reportQuestionaryTeam;\n    this.updateTotal();\n  }\n\n  public notificationInfo(message: string) {\n    this.notification.info(message);\n  }\n  private async seeActivatedCompetences(activationQuestionaryCompetences: ActivationQuestionaryCompetences): Promise<void> {     \n    let reportActivation: ReportActivation = new ReportActivation();\n    reportActivation.activationId = activationQuestionaryCompetences.activationId;\n    reportActivation.activationQuestionaryId = activationQuestionaryCompetences.activationQuestionaryId\n    let params: any = {\n      reportActivation: reportActivation,\n      report: this.report,\n      isTeam: true,\n    };\n    \n    await this.dialogService.open({\n      viewModel: CompetenceActivatedWeightModal,\n      model: params\n    }).whenClosed((response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        this.updateTotal();\n      }\n    });\n  }\n}\n","module.exports = \"<template> <require from=../../../models/questionaries/questionaryTypeViewEngineHooks></require> <div if.bind=\\\"parameters.tableData.length > 0\\\"> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> ${'main.test_reports.pages.reports.report_activation.selected_activations' & t}: </div> </div> </div> </div> </div> <div class=\\\"row mb-4\\\"> <div class=col-12> <ul class=list-group> <li class=list-group-item virtual-repeat.for=\\\"item of report.questionariesTeam\\\"> <div class=row> <div class=\\\"col-md-1 mb-2 align-content-center\\\"> <div if.bind=item class=\\\"form-check custom-control custom-checkbox\\\"> <input class=\\\"form-check-input custom-control-input\\\" type=checkbox change.delegate=selectParameter(item) checked.bind=item.isAvailable id=activation_${parameterCurrent}_${item.questionaryId}> <label for=activation_${parameterCurrent}_${item.questionaryId} class=\\\"form-check-label custom-control-label\\\">&nbsp;</label> </div> </div> <div class=\\\"col-md-9 col-12 text-truncate mb-2\\\" if.bind=item.questionary> <label class=d-block><small class=text-muted>${'tipo' & t}</small></label> ${item.questionary.name} <a href=# if.bind=\\\"item.questionary.questionaryType == QuestionaryType.Competences\\\" global-permission-show=\\\"can: TestPersonView\\\" title=\\\"${'commands.view' & t}\\\" click.delegate=seeActivatedCompetences(item.activationQuestionaryCompetences)> <i class=material-icons>visibility</i> </a> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-3\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_evaluator_list.weight' & t}</small> <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.reports.pages.selector.activation.data')\\\" role=button> <i class=material-icons>info_outline</i> </a></label>  <input type=number class=form-control id=weight readonly.bind=\\\"!item.isAvailable  || item.questionary.questionaryType == QuestionaryType.Competences\\\" value.bind=\\\"item.weight & validate\\\" change.delegate=updateTotal() text> </div> </div> </li> </ul> <ul class=list-group> <div class=\\\"col-md-4 offset-md-10\\\"><u>${sumWeight}</u></div> </ul> </div> </div> </div> </template> \";","import { autoinject, LogManager, bindable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { Company } from \"models/companies/company\";\nimport { TeamService } from \"main/test/services/team/team-service\";\nimport { Report } from \"models/test-reports/reports/report\";\nimport { Parameter } from \"models/test-reports/reports/parameter\";\nimport { Team } from \"models/team/team\";\n\ninterface ItemAvailable {\n  [id: number]: boolean;\n}\n@autoinject()\nexport class SelectTeamList {\n\n  private logger: Logger;\n  private params: any = {};\n  public companyId: number;\n  private company: Company;\n\n  @bindable\n  private report: Report;\n\n  @bindable\n  private parameterCurrent: Parameter;\n\n  @bindable\n  private selectedAmount: number;\n\n  private selectedCurrent: number;\n\n  private banCheck: boolean;\n  \n  private banIds: number[] = [];\n\n  private itemAvailable: ItemAvailable = {};\n\n  private items: any[] = [];\n\n  private auxItems: any[] = [];\n\n  private selectionLabel: string;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    // this.logger.debug(\"refreshing\");\n    return await this.teamService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        // response.data.forEach(x => {\n        //   this.teamAvailable[x.id] = false;\n        // });\n\n        this.checkAmount();\n\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  constructor(\n    private teamService: TeamService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"SelectTeamList\");\n    this.selectedCurrent = 0;\n    this.banCheck = false;\n\n    this.parameters.pageSize = 50;\n\n  }\n\n  private async attached(): Promise<any> {\n    if (this.report.companyId) {\n      this.teamService.client.currentCompanyId = this.report.companyId;\n      return await this.databind();\n    }\n  }\n\n  private async databind(): Promise<void> {\n    // this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private getSelectionLabel(): void {\n    this.selectionLabel = '';\n    this.items.forEach(x => {\n      if (this.selectionLabel !== '') {\n        this.selectionLabel += ', ';\n      }\n      this.selectionLabel += x.name;\n    });\n  }\n\n  public async selectParameter(item: Team): Promise<void> {\n\n    let banGeneral = this.banIds.findIndex(y => y === item.id);\n\n    if (banGeneral == -1) {\n      this.banIds.push(item.id);\n      this.selectedCurrent = ++this.selectedCurrent;\n      this.items.push(item);\n    }\n    else {\n      this.banIds.splice(banGeneral, 1);\n      this.selectedCurrent = --this.selectedCurrent;\n      this.items.splice(banGeneral, 1);\n    }\n\nthis.checkAmount();\n\n    switch (this.parameterCurrent) {\n      case Parameter.Team: {\n        this.report.teamId = this.items.map(x => x.id)[0];\n        break;\n      }\n      case Parameter.CompareToTeam: {\n        this.report.compareToTeamId = this.items.map(x => x.id)[0];\n        break;\n      }\n      default: {\n        break;\n      }\n    }\n    this.getSelectionLabel();\n  }\n\n  private checkAmount(){\n    if (this.selectedCurrent < +this.selectedAmount) {\n      this.banCheck = false;\n      this.parameters.tableData.forEach(x => {\n        this.itemAvailable[x.id] = false;\n      });\n\n    } else {\n      this.banCheck = true;\n      this.parameters.tableData.forEach(x => {\n        let ban = this.banIds.findIndex(y => y === x.id);\n        if (ban === -1)\n          this.itemAvailable[x.id] = true;\n        else\n          this.itemAvailable[x.id] = false;\n      });\n    }\n  }\n\n}\n","module.exports = \"<template> <require from=../../../models/test-position/positionActivationTypeViewEngineHooks></require> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-8\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> ${'main.test_reports.pages.reports.teams.selected_team' & t} ${selectionLabel} </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-1 col-1 mb-2\\\"> <div class=\\\"form-check custom-control custom-checkbox\\\"> <input class=\\\"form-check-input custom-control-input\\\" type=checkbox change.delegate=selectParameter(item) model.bind=item.id checked.bind=auxItems id=team_${parameterCurrent}_${item.id} disabled.bind=\\\"banCheck && itemAvailable[item.id]\\\"> <label for=team_${parameterCurrent}_${item.id} class=\\\"form-check-label custom-control-label\\\">&nbsp;</label> </div> </div> <div class=\\\"col-md-7 col-11 text-truncate minh-40 mb-2\\\"> <span title=${item.name}>${item.name}</span> </div> <div class=\\\"col-md-4 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.teams.created_on' & t}</small> </label> ${item.createdOn | dateTimeFormat} </div> </div> </li> </ul> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> ${'main.test_reports.pages.reports.teams.selected_team' & t} ${selectionLabel} </div> </div> </div> </div> </div> </template> \";","import { Router } from 'aurelia-router';\nimport { autoinject } from \"aurelia-framework\";\n\n@autoinject\nexport class ReportHome {\n\n  constructor(private router: Router) {\n\n  }\n\n\n}\n","module.exports = \"<template> <section> <div class=\\\"row mb-4 text-center\\\"> <div class=col-12> <h1 class=display-4>${'main.reports.pages.home.title' & t}</h1> <p class=lead>${'main.reports.pages.home.info' & t}</p> </div> </div> </section> <section> <div class=\\\"row mb-4\\\"> <div class=\\\"col-xs-6 col-md-3\\\" repeat.for=\\\"route of router.navigation\\\" if.bind=!route.settings.isHome> <div class=\\\"card-selector card mb-4 card-shadow card-round\\\"> <a href.bind=route.href> <i class=\\\"material-icons large ${route.settings.icon}\\\">${route.settings.icon.startsWith('t') ? '': route.settings.icon}</i> <div class=card-body> <h5 class=card-title>${route.title}</h5> </div> </a> </div> </div> </div> </section> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class ReportChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"ReportChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./report-edit\"),\n        name: \"report-edit\",\n        nav: false,\n        title: this.i18n.tr(\"main.test_reports.pages.reports.title\"),\n      }, \n\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","import { ActivationQuestionary } from 'models/test-person/activationQuestionary';\nimport { ReportActivation } from './../../../../models/test-reports/reports/reportActivation';\nimport { QuestionaryType } from './../../../../models/questionaries/questionaryType';\nimport { TestReportChildRouter } from './../../test-report-child-router';\nimport { OrganizationType } from './../../../../models/questionaries/organizationType';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { RouteConfig, Router } from \"aurelia-router\";\nimport { Notification } from \"common/services/notification\";\nimport { Company } from \"models/companies/company\";\nimport { ReportTemplateService } from '../../../admin/services/test-management/report-template-service';\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\nimport { ReportTemplate } from 'models/test-core/report-templates/report-template';\nimport { Person } from \"models/test-person/person\";\nimport { PersonService } from \"../../../test/services/people/person-service\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from 'aurelia-validation';\nimport { BootstrapFormRenderer } from 'common/services/bootstrap-form-renderer';\nimport { Report } from 'models/test-reports/reports/report';\nimport { ReportService } from '../../services/report-service';\nimport { ItemToQualify } from 'models/questionaries/itemToQualify';\nimport { addSlash } from 'common/utils/utility';\nimport { SelectSheetModal } from './select-sheet-modal';\nimport { Organization } from 'models/test-organization/organization';\nimport { Team } from 'models/team/team';\nimport { PositionService } from 'main/test/services/position/position-service';\nimport { OrganizationService } from 'main/test/services/organization/organization-service';\nimport { TeamService } from 'main/test/services/team/team-service';\nimport { Position } from \"models/test-position/position\";\nimport { Sheet } from 'models/test-core/sheets/sheet';\nimport { Parameter } from 'models/test-reports/reports/parameter';\nimport { NoDiscType } from 'models/questionaries/noDiscType';\nimport { ActivationQuestionaryService } from 'main/test/services/people/activation-questionary-service';\nimport { Questionary } from 'models/questionaries/questionary';\nimport { ActivationQuestionaryStatus } from '../../../../models/test-person/activationQuestionaryStatus';\nimport config from 'config.js';\nimport { ActivationService } from 'main/test/services/people/activation-service';\nimport { ActivationType } from 'models/test-person/activationType';\nimport { Activation } from 'models/test-person/activation';\n@autoinject()\nexport class ReportEdit {\n\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n  private company: Company;\n\n  private sheets: Sheet[];\n\n  private reportTemplates: ReportTemplate[];\n  private searchReportTemplates: ReportTemplate[];\n  private reportFilter: string;\n\n  private reportTemplate: ReportTemplate;\n\n  private state: State;\n  private isDisable: boolean;\n  private isReport: boolean = true;\n\n  private model: Report = new Report();\n\n  private person: Person;\n  private position: Position;\n  private organization: Organization;\n  private team: Team;\n  private showActivationParameter: boolean = false;\n  private personActivationQuestionaries: ActivationQuestionary[];\n\n   private companySheets: Sheet[] = [];\n  private calculatedPrice: number = 0;\n\n  public get totalPrice(): number {\n    return this.calculatedPrice;\n  }\n\n  private validationController: ValidationController;\n\n  constructor(\n    private router: Router,\n    private store: StoreService,\n    private reportTemplateService: ReportTemplateService,\n    private reportService: ReportService,\n    private personService: PersonService,\n    private positionService: PositionService,\n    private organizationService: OrganizationService,\n    private activationQuestionaryService: ActivationQuestionaryService,\n    private activationService: ActivationService,\n    private teamService: TeamService,\n    private dialogService: DialogService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ReportEdit\");\n\n    this.state = this.store.state;\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n\n    // this.logger.debug(\"activate\");\n\n    this.params = params;\n\n    this.configureValidationRules();\n\n    if (!isNaN(params.companyId)) {\n\n      this.companyId = +params.companyId;\n\n      if (this.companyId) {\n        this.model.companyId = this.companyId;\n        this.reportTemplateService.client.currentCompanyId = this.companyId;\n        this.personService.client.currentCompanyId = this.companyId;\n        this.activationQuestionaryService.client.currentCompanyId = this.companyId;\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n\n        try {\n          this.reportTemplates = await this.reportTemplateService.getAll();\n\n          if (!isNaN(params.personId)) {\n            this.model.personId = +params.personId;\n            this.person = await this.personService.getById(this.model.personId);\n          }\n\n          // filter by position\n          if (!isNaN(params.positionId)) {\n            this.model.positionId = +params.positionId;\n            this.position = await this.positionService.getById(+this.params.positionId);\n          }\n\n          // filter by organization\n          if (!isNaN(params.organizationId)) {\n            this.model.organizationId = +params.organizationId;\n            this.organization = await this.organizationService.getById(+this.params.organizationId);\n          }\n\n          // filter by team\n          if (!isNaN(params.teamId)) {\n            this.model.teamId = +params.teamId;\n            this.team = await this.teamService.getById(+this.params.teamId);\n          }\n\n          if (!this.organization) {\n            this.filterReportTemplates(params.itemToQualify);\n          } else {\n            this.logger.debug(\"filtering by organization type:\", this.organization.organizationType);\n            this.filterReportTemplates(params.itemToQualify, this.organization.organizationType);\n          }\n\n          this.searchReportTemplates = this.reportTemplates;\n\n        } catch (error) {\n          this.notification.error(error);\n        }\n      }\n    }\n\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"reportTemplateId\").displayName(\"main.test_reports.pages.reports.report_template\").required()\n      .ensure(\"discType\").displayName(\"main.test_reports.pages.reports.discType.title\").required()\n      .ensure(\"zeroOrOnePositionId\").displayName(\"main.test_reports.pages.reports.parameters.ZeroOrOnePosition\").maxItems(1)\n      .ensure(\"positionId\").displayName(\"main.test_reports.pages.reports.parameters.Position\").required()\n      .ensure(\"teamId\").displayName(\"main.test_reports.pages.reports.parameters.Team\").required()\n      .ensure(\"organizationId\").displayName(\"main.test_reports.pages.reports.parameters.Organization\").required()\n      .ensure(\"positionIds\").displayName(\"main.test_reports.pages.reports.parameters.Positions\").required().minItems(1).maxItems(1000)\n      .ensure(\"compareToPositionId\").displayName(\"main.test_reports.pages.reports.parameters.ComparePosition\").required()\n      .ensure(\"compareToTeamId\").displayName(\"main.test_reports.pages.reports.parameters.CompareTeam\").required()\n      .ensure(\"compateToOrganizationId\").displayName(\"main.test_reports.pages.reports.parameters.CompareOrganization\").required()\n      .ensure(\"compareToPersonId\").displayName(\"main.test_reports.pages.reports.parameters.ComparePerson\").required()\n      .ensure(\"personId\").displayName(\"main.test_reports.pages.reports.parameters.Person\").required()\n      .ensure(\"personId\").displayName(\"main.test_reports.pages.reports.parameters.Leader\").required()\n      .ensure(\"peopleIds\").displayName(\"main.test_reports.pages.reports.parameters.People\").required().minItems(1)\n      .ensure(\"oneOrTwoPeopleIds\").displayName(\"main.test_reports.pages.reports.parameters.OneOrTwoPeople\").required().minItems(1).maxItems(2)\n      .ensure(\"twoPeopleIds\").displayName(\"main.test_reports.pages.reports.parameters.TwoPeople\").required().minItems(2)\n      .ensure(\"threePeopleIds\").displayName(\"main.test_reports.pages.reports.parameters.ThreePeople\").required().minItems(1).maxItems(3)\n      .ensure(\"observerIds\").displayName(\"main.test_reports.pages.reports.parameters.Observers\").required().minItems(1).maxItems(1000)\n      .on(this.model);\n  }\n\n  private OnChangeReportFilter(): void {\n    if (this.reportFilter && this.reportFilter.length > 0) {\n      this.searchReportTemplates = this.reportTemplates.filter(\n        q => q.name.toLowerCase().includes(this.reportFilter.toLowerCase())\n      );\n      if (this.searchReportTemplates.length > 0) {\n        this.model.reportTemplateId = this.searchReportTemplates[0].id;\n        this.changeReport();\n      }\n    } else {\n      this.searchReportTemplates = this.reportTemplates;\n      this.model.reportTemplateId = null;\n    }\n  }\n\n  private filterReportTemplates(itemToQualify: ItemToQualify, organizationType?: OrganizationType) {\n    if (!isNaN(itemToQualify)) {\n      this.reportTemplates = this.reportTemplates.filter(x => x.itemToQualify == itemToQualify);\n    }\n\n    if (!isNaN(organizationType)) {\n      this.logger.debug(\"filtering by organization type\");\n      this.reportTemplates = this.reportTemplates.filter(x => x.organizationType == organizationType || x.organizationType == null);\n    }\n  }\n\n  public async showParameters(): Promise<any> {\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid)\n            this.isDisable = true;\n      });\n\n  }\n\n  public async hideParameters(): Promise<any> {\n    this.isDisable = false;\n  }\n\n  public async changeReport(): Promise<any> {\n\n    this.logger.debug(\"changeReport\");\n\n    try {\n      this.reportTemplate = await this.reportTemplateService.getById(this.model.reportTemplateId);\n\n      // add language\n      this.model.languageId = this.reportTemplate.languageId;\n      this.companySheets = this.reportTemplate.sheets || [];\n\n      this.personActivationQuestionaries = await this.activationQuestionaryService.getAll(this.model.personId);\n\n      this.model.sheets = this.reportTemplate.sheets;\n      this.setParameters(this.model.sheets.map(x => x.id));\n\n      //Include all questionaries by questionaryActivation when Parameter is Activation OR Questionary\n      const activationParameterIndex = this.model.parameters.findIndex(x => x === Parameter.Activation);\n      const questionaryParameterIndex = this.model.parameters.findIndex(x => x === Parameter.Questionary);\n      const questionariesByActivations: Questionary[] = [];\n\n      if (activationParameterIndex !== -1 || questionaryParameterIndex !== -1) {\n        \n        const finalizedActivationQuestionaries = this.personActivationQuestionaries.filter(\n          x => x.activationQuestionaryStatus === ActivationQuestionaryStatus.Finalized && x.questionary.itemToQualify !== ItemToQualify.Observed\n        );\n\n        finalizedActivationQuestionaries.forEach((activationQuestionaryItem) => {\n          const { questionary } = activationQuestionaryItem;\n          const existingIndex = questionariesByActivations.findIndex(x => x.id === questionary.id);\n\n          if (existingIndex === -1) {\n            questionariesByActivations.push(questionary);\n          }\n\n          //Remove Questionary By Company\n          if (questionary.companyId !== null) {\n            this.removeQuestionaryById(questionariesByActivations, questionary.id);\n          }\n\n          // Remove Observed\n          if (questionary.itemToQualify === ItemToQualify.Observed) {\n            this.removeQuestionaryById(questionariesByActivations, questionary.id);\n          }\n\n          // Remove Questionaries based on conditions\n          if ([NoDiscType.EngineersTest, NoDiscType.ExpectationsTeam, NoDiscType.Potential, NoDiscType.Performance, NoDiscType.VideoInterview].includes(questionary.noDiscType)) {\n            this.removeQuestionaryById(questionariesByActivations, questionary.id);\n          }\n\n        });\n     \n        // Filter questionaries to keep only those present in both original report and activations\n        const originalQuestionaryIds = this.reportTemplate.questionaries.map(q => q.id);\n        const validQuestionaries = questionariesByActivations.filter(q => originalQuestionaryIds.includes(q.id));\n        \n        this.reportTemplate.questionaries = validQuestionaries;\n      }\n\n\n      let questionaries: Questionary[] = [];\n      Object.assign(questionaries, this.reportTemplate.questionaries);\n\n      let discTypeCount: number = 0;\n      let questionariesToRemove: number[] = [];\n      \n      questionaries.forEach((item, index) => {\n\n        //curriculum\n        if (item.questionaryType === QuestionaryType.NoDisc && item.noDiscType === NoDiscType.Curriculum) {\n          questionariesToRemove.push(item.id);\n        }\n        else if (item.questionaryType !== QuestionaryType.Disc) {\n          // delete all questionaries selector when only have 1 or none\n          let questionaryActivations = this.personActivationQuestionaries.filter(x => x.questionaryId === item.id\n            && x.activationQuestionaryStatus === ActivationQuestionaryStatus.Finalized);\n\n          if (questionaryActivations.length < 2) {\n            questionariesToRemove.push(item.id);\n          }\n        }\n        else {\n          // count ALL DISC questionaries together (DISC, ColorGame, DISC 2.0, etc.)\n          discTypeCount = discTypeCount + this.personActivationQuestionaries.filter(x => x.questionary.questionaryType === QuestionaryType.Disc\n            && x.activationQuestionaryStatus === ActivationQuestionaryStatus.Finalized).length;\n        }\n      });\n\n      // Remove questionaries that should be excluded (avoiding index issues)\n      this.reportTemplate.questionaries = this.reportTemplate.questionaries.filter(q => !questionariesToRemove.includes(q.id));\n\n      // Handle DISC questionaries - remove if less than 2 tests total across ALL DISC types\n      if (questionaries.some(x => x.questionaryType === QuestionaryType.Disc)) {\n        if (discTypeCount < 2) {\n          // Remove all DISC questionaries if less than 2 total DISC tests\n          this.reportTemplate.questionaries = this.reportTemplate.questionaries.filter(q => q.questionaryType !== QuestionaryType.Disc);\n        }\n      }\n\n      this.calculateTemplatePrice();\n\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private setParameters(sheetIds: number[]) {\n    // reset variable\n    this.model.parameters = [];\n\n    this.model.sheets.forEach(sheet => {\n      const index = sheetIds.findIndex(x => x == sheet.id);\n      if (index !== -1) {\n        for (let par of sheet.parameters) {\n          const index1 = this.model.parameters.findIndex(x => x === par.parameter);\n          if (index1 === -1) {\n            this.model.parameters.push(par.parameter);\n          }\n        }\n      }\n    });\n\n    this.logger.debug(\"Parameters: \", this.model.parameters);\n  }\n\n  public async sheetSelect(): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: SelectSheetModal, //SheetSelectModal,\n      model: this.model\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        this.setParameters(this.model.sheetIds);\n      } else {\n        this.model.sheetIds = [];\n      }\n    });\n  }\n\n  private async submit(): Promise<any> {\n\n    const indexQuestionary = this.model.parameters.findIndex(x => x == Parameter.Questionary);\n    \n    if (indexQuestionary !== -1) {\n      let questioesDisc = this.reportTemplate.questionaries.filter(x => x.questionaryType === QuestionaryType.Disc);\n      let questioesNoDisc = this.reportTemplate.questionaries.filter(x => x.questionaryType !== QuestionaryType.Disc);\n      let numberQuestionaries = questioesNoDisc.length;\n      if (questioesDisc.length > 0) {\n        numberQuestionaries++;\n      }\n      \n      if (numberQuestionaries > this.model.activationQuestionaryIds.length) {\n        this.notification.error('main.test_reports.pages.reports.parameters.Questionary_required');\n        return;\n      }\n    }\n\n    const indexObservers = this.model.parameters.findIndex(x => x == Parameter.Observers);\n\n    if (indexObservers !== -1) {\n\n      if (this.model.observerIds.length <= 0) {\n        this.notification.error('main.test_reports.pages.reports.parameters.Observer_required');\n        return;\n      }\n    }\n\n    const indexTwoObservers = this.model.parameters.findIndex(x => x == Parameter.TwoObservers);\n\n    if (indexTwoObservers !== -1) {\n\n      if (this.model.observerIds.length <= 1) {\n        this.notification.error('main.test_reports.pages.reports.parameters.Observer_required');\n        return;\n      }\n    }\n\n    //evaluate the activation parameter\n    const indexActivation = this.model.parameters.findIndex(x => x == Parameter.Activation);\n\n    if (indexActivation !== -1) {\n      if (this.model.activations.length <= 0) {\n        this.showActivationParameter = true;\n        await this.processActivationQuestionaries();\n        await this.processObserverActivations();\n\n        this.notification.warning('main.test_reports.pages.reports.parameters.Activation_required');\n        this.showParameters();\n        return;\n      }\n\n      if (this.model.activations.length > 0) {\n        let sumWeight = 0;\n        let isThereDisc = false;\n\n        for (const reportActivation of this.model.activations) {\n          sumWeight += Number(reportActivation.weight);\n          const activationQuestionary = reportActivation.activationQuestionary;\n          if (activationQuestionary && reportActivation.weight > 0) {\n            const isInActivationQuestionaryIds = this.model.activationQuestionaryIds.includes(activationQuestionary.id);\n            if (!isInActivationQuestionaryIds) {\n              this.model.activationQuestionaryIds.push(activationQuestionary.id);\n            }\n            if (activationQuestionary.questionary.questionaryType === QuestionaryType.Disc) {\n              isThereDisc = true;\n            }\n          }\n        }\n\n        if (sumWeight !== 100) {\n          this.notification.error('main.test_reports.pages.reports.parameters.Activation_weight_required');\n          return;\n        }\n\n        if (isThereDisc && this.model.positionId === undefined) {\n          this.notification.error('main.test_reports.pages.reports.parameters.Position_required');\n          return;\n        }\n      }\n\n    }\n\n    const indexQuestionaryTeam = this.model.parameters.findIndex(x => x == Parameter.QuestionaryTeam);\n\n    if (indexQuestionaryTeam !== -1) {\n\n      if (this.model.questionariesTeam.length < 1) {\n        this.notification.error('main.test_reports.pages.reports.parameters.Questionary_required');\n        return;\n      }\n\n      let sumWeight = 0;\n      this.model.questionariesTeam.forEach((reportQuestionaryTeam) => {\n        sumWeight += Number(reportQuestionaryTeam.weight);\n      });\n\n      if (sumWeight < 100 || sumWeight > 100) {\n        this.notification.error('main.test_reports.pages.reports.parameters.Activation_weight_required');\n        return;\n      }\n\n    }\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  get canSave() {\n    return !this.reportService.client.isRequesting;\n  }\n\n  private async save(): Promise<any> {\n    try {\n      let response: Report = await this.reportService.create(this.model);\n\n      let testReportsUrl = config.URLS_REPORTS;\n\n      const url = addSlash(testReportsUrl) + \"test-reports/\" + response.id;\n\n      window.open(url, \"_blank\");\n\n      return await this.router.navigateToRoute(\"reports\", this.params);\n\n    } catch (error) {\n      this.notification.error(error);\n    }\n\n  }\n\n  private filterByQuestionary(activationQuestionaryList: ActivationQuestionary[], activationQuestionary: ActivationQuestionary): ActivationQuestionary[] {\n    try {\n      let actQuesFiltered = activationQuestionaryList.filter(x => x.questionaryId !== activationQuestionary.questionaryId);\n      return actQuesFiltered;\n    } catch (error) {\n      return activationQuestionaryList;\n    }\n  }\n\n  private filterByDISC(activationQuestionaryList: ActivationQuestionary[]): ActivationQuestionary[] {\n    try {\n      let actQuesFiltered = activationQuestionaryList.filter(x => x.questionary.questionaryType !== QuestionaryType.Disc);\n      return actQuesFiltered;\n    } catch (error) {\n      return activationQuestionaryList;\n    }\n  }\n\n  private removeQuestionaryById(questionaries: Questionary[], id: number): void {\n    const index = questionaries.findIndex(x => x.id === id);\n    if (index !== -1) {\n      questionaries.splice(index, 1);\n    }\n  }\n\n  private async processActivationQuestionaries(this: ReportEdit) {\n    let actQuestionarySelected: ActivationQuestionary[] = [];\n\n    for (const activationQuestionaryId of this.model.activationQuestionaryIds) {\n      const activationQuestionarie = this.personActivationQuestionaries.find(x => x.id === activationQuestionaryId)\n      if (!activationQuestionarie) continue;\n\n      const activation = await this.activationService.getById(activationQuestionarie.activationId)\n      if (!activation) continue;\n\n      const newReportActivation = this.buildNewReportActivation(activationQuestionarie, activation);\n\n      actQuestionarySelected.push(activationQuestionarie);\n      this.model.activations.push(newReportActivation);\n    }\n\n    //Filter ActivationQuestionnaire with 1 existence but not included on model.activationQuestionaryIds\n    const finalizedActivationQuestionaries = this.personActivationQuestionaries.filter(\n      x => x.activationQuestionaryStatus === ActivationQuestionaryStatus.Finalized && x.questionary.itemToQualify !== ItemToQualify.Observed\n    );\n\n    const generalQuestionariesActivation = finalizedActivationQuestionaries.filter(x => x.questionary.companyId === null);\n\n    let filteredQuestionaryActivation = generalQuestionariesActivation.filter(x => ![NoDiscType.EngineersTest, NoDiscType.ExpectationsTeam,\n    NoDiscType.Potential, NoDiscType.Performance, NoDiscType.VideoInterview].includes(x.questionary.noDiscType))\n\n    const hasDiscQuestionary = actQuestionarySelected.some((itemActQuestionary) => {\n      return itemActQuestionary.questionary.questionaryType === QuestionaryType.Disc;\n    });\n\n    if (hasDiscQuestionary) {\n      filteredQuestionaryActivation = this.filterByDISC(filteredQuestionaryActivation);\n    }\n\n    actQuestionarySelected.forEach((itemActQuestionary) => {\n      filteredQuestionaryActivation = this.filterByQuestionary(filteredQuestionaryActivation, itemActQuestionary);\n    });\n\n    for (const activationQuestionaryItem of filteredQuestionaryActivation) {\n      const activation = await this.activationService.getById(activationQuestionaryItem.activationId);\n      if (!activation) continue;\n\n      const newReportActivation = this.buildNewReportActivation(activationQuestionaryItem, activation);\n\n      this.model.activations.push(newReportActivation);\n    }\n  }\n\n  private async processObserverActivations(this: ReportEdit) {\n    // Process observer activations...\n    for (const observerActivationId of this.model.observerIds) {\n      const activation = await this.activationService.getById(observerActivationId);\n      if (!activation) continue;\n      \n      const newObserverReportActivation: ReportActivation = {\n        reportId: Number(this.model.activations.length),\n        activationId: activation.id,\n        activation: activation,\n        weight: 0,\n        isAvailable: true,\n      };\n\n      this.model.activations.push(newObserverReportActivation);\n    }\n  }\n\n  private buildNewReportActivation(activationQuestionarie: ActivationQuestionary, activation: Activation): ReportActivation {\n    const newReportActivation: ReportActivation = {\n      reportId: Number(this.model.activations.length),\n      activationId: activationQuestionarie.activationId,\n      activation: activation,\n      activationQuestionaryId: activationQuestionarie.id,\n      activationQuestionary: activationQuestionarie,\n      weight: 0,\n      isAvailable: true,\n    };\n\n    return newReportActivation;\n  }\n\n  private calculateTemplatePrice(): void {\n    let price = 0;\n\n    if (this.model.sheets && this.model.sheets.length > 0) {\n      this.model.sheets.forEach(templateSheet => {\n        const companySheet = this.companySheets.find(cs => cs.id === templateSheet.id);\n        if (companySheet && companySheet.talentsPrice) {\n          price += +companySheet.talentsPrice;\n        }\n      });\n    }\n\n    this.calculatedPrice = price;\n  }\n\n}\n","module.exports = \"<template> <require from=../../../components/person-header.html></require> <require from=../../../components/position-header.html></require> <require from=../../../components/organization-header.html></require> <require from=../../../components/team-header.html></require> <require from=../../components/report-parameter></require> <require from=../../../admin/pages/test-management/report-templates/report-template-create-card.html></require> <form class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2> ${'main.test_reports.pages.reports.title' & t} </h2> <person-header person.bind=person></person-header> <position-header position.bind=position company-number.bind=model.companyId></position-header> <organization-header organization.bind=organization></organization-header> <team-header team.bind=team></team-header> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-8 col-12\\\"> <div class=form-group> <label for=reportTemplateId> ${'main.test_reports.pages.reports.report_template' & t} </label> <div class=row> <div class=col-8> <div class=form-group if.bind=!isDisable> <input type=text class=form-control id=reportTemplateFilter input.delegate=OnChangeReportFilter() t=[placeholder]ux_datatable.search_placeholder value.bind=reportFilter> </div> <select class=\\\"form-control flex-grow-1 me-2\\\" value.bind=\\\"model.reportTemplateId & validate\\\" id=reportTemplateId disabled.bind=isDisable change.trigger=changeReport()> <option value=\\\"\\\" t=forms.select_option>select an item</option> <option repeat.for=\\\"option of searchReportTemplates\\\" model.bind=option.id> ${option.name & t} </option> </select> </div> <div class=\\\"col-4 pt-2\\\"> <span if.bind=\\\"model.reportTemplateId && totalPrice > 0\\\" class=\\\"fw-bold text-primary text-nowrap flex-shrink-0 ms-3\\\"> <h5 class=\\\"mb-0 d-inline\\\">${totalPrice} ${'main.test_reports.pages.reports.talents_unit' & t}</h5> </span> </div> </div> <button if.bind=!isDisable class=\\\"btn btn-link\\\" show.bind=model.reportTemplateId click.delegate=sheetSelect() t=main.test-reports.pages.reports.view_sheets>view-sheet</button> </div> </div> </div> <hr/> <div if.bind=!isDisable class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div if.bind=!isDisable class=\\\"row mb-3\\\"> <div class=col-12> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=showParameters() disabled.bind=isDisable>${'commands.select' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: reports;params.bind:params\\\" t=commands.cancel>Cancel</a> <button show.bind=isDisable class=\\\"btn btn-link\\\" title.bind=\\\"'commands.clear' & t\\\" click.delegate=hideParameters()> <i class=material-icons>clear</i> </button> </div> </div> <report-parameter is-disable.bind=isDisable model.bind=model report-template.bind=reportTemplate is-report-activation.bind=true show-activation-parameter.bind=showActivationParameter></report-parameter> <div if.bind=isDisable class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit() show.bind=isDisable disabled.bind=!canSave>${'commands.generate' & t} </button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: reports;\\\" t=commands.cancel show.bind=isDisable>Cancel</a> </div> </div> </div> </div> <div class=content-sidebar if.bind=isDisable> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit() disabled.bind=!canSave>${'commands.generate' & t} </button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: reports;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </div> </div> </div> </div> </form> </template> \";","import { ActivationQuestionary } from 'models/test-person/activationQuestionary';\nimport { ReportActivation } from './../../../../models/test-reports/reports/reportActivation';\nimport { QuestionaryType } from './../../../../models/questionaries/questionaryType';\nimport { OrganizationType } from './../../../../models/questionaries/organizationType';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { WalletService } from 'main/admin/services/talents/wallet-service';\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { ReportService } from \"../../services/report-service\";\nimport { Notification } from \"common/services/notification\";\nimport { Company } from \"models/companies/company\";\nimport { ReportTemplateService } from '../../../admin/services/test-management/report-template-service';\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from \"common/store/store-service\";\nimport { addSlash } from \"common/utils/utility\";\nimport { ItemToQualify } from \"models/questionaries/itemToQualify\";\nimport { ReportTemplate } from 'models/test-core/report-templates/report-template';\nimport { Report } from 'models/test-reports/reports/report';\nimport { Sheet } from 'models/test-core/sheets/sheet';\nimport { Parameter } from 'models/test-reports/reports/parameter';\nimport { NoDiscType } from 'models/questionaries/noDiscType';\nimport { Questionary } from 'models/questionaries/questionary';\nimport { ActivationQuestionaryStatus } from '../../../../models/test-person/activationQuestionaryStatus';\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from 'aurelia-validation';\nimport { BootstrapFormRenderer } from 'common/services/bootstrap-form-renderer';\nimport { SelectSheetModal } from './select-sheet-modal';\nimport { ReportWeightsModal } from 'main/test-reports/components/report-weights-modal';\nimport { ActivationQuestionaryService } from 'main/test/services/people/activation-questionary-service';\nimport { ActivationService } from 'main/test/services/people/activation-service';\nimport { Activation } from 'models/test-person/activation';\n\nimport { Person } from \"models/test-person/person\";\nimport { PersonService } from 'main/test/services/people/person-service';\nimport { Position } from \"models/test-position/position\";\nimport { PositionService } from 'main/test/services/position/position-service';\nimport { Organization } from './../../../../models/test-organization/organization';\nimport { OrganizationService } from 'main/test/services/organization/organization-service';\nimport { Team } from 'models/team/team';\nimport { TeamService } from 'main/test/services/team/team-service';\nimport config from 'config.js';\nimport { HasLowBalanceModal } from 'main/admin/pages/talents/has-low-balance-modal';\nimport { RequestSequencer } from 'common/utils/request-sequencer';\n\n@autoinject()\nexport class ReportList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n  private company: Company;\n\n  private state: State;\n\n  private isLoaded: boolean = false;\n\n  // Report list (downloaded reports)\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private person: Person;\n  private position: Position;\n  private organization: Organization;\n  private team: Team;\n\n  // Report generation (migrated from report-edit)\n  private reportTemplates: ReportTemplate[];\n  private searchReportTemplates: ReportTemplate[];\n  private reportFilter: string;\n  private reportTemplate: ReportTemplate;\n  private isDisable: boolean;\n  private model: Report = new Report();\n  private showActivationParameter: boolean = false;\n  private personActivationQuestionaries: ActivationQuestionary[];\n  private companySheets: Sheet[] = [];\n  private calculatedPrice: number = 0;\n  private validationController: ValidationController;\n  private reportChangeSequencer: RequestSequencer = new RequestSequencer();\n\n  private isChangingReport: boolean = false;\n  // Tracks the in-flight changeReport load so it can be awaited before revealing parameters.\n  private reportChangePromise: Promise<any> = Promise.resolve();\n\n  public get totalPrice(): number {\n    return this.calculatedPrice;\n  }\n\n  get canSave() {\n    return !this.reportService.client.isRequesting;\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.reportService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  constructor(\n    private router: Router,\n    private store: StoreService,\n    private reportService: ReportService,\n    private reportTemplateService: ReportTemplateService,\n    private notification: Notification,\n    private personService: PersonService,\n    private positionService: PositionService,\n    private organizationService: OrganizationService,\n    private activationQuestionaryService: ActivationQuestionaryService,\n    private activationService: ActivationService,\n    private teamService: TeamService,\n    private dialogService: DialogService,\n    private validationControllerFactory: ValidationControllerFactory,\n    private walletService: WalletService\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ReportList\");\n\n    this.state = this.store.state;\n\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n\n  }\n\n  private async bind(): Promise<any> {\n\n    if (!isNaN(this.params.companyId)) {\n\n      this.companyId = +this.params.companyId;\n\n      if (this.companyId) {\n        var wallet = await this.walletService.getTotalBalanceByCompany(this.companyId);\n        if (wallet && wallet.hasLowBalance && !wallet.user.hasSeenLowBalanceMessage) {\n          await this.showHasLowBalanceModal(wallet.talent);\n        }\n\n        this.reportService.client.currentCompanyId = this.companyId;\n        this.reportTemplateService.client.currentCompanyId = this.companyId;\n        this.personService.client.currentCompanyId = this.companyId;\n        this.activationQuestionaryService.client.currentCompanyId = this.companyId;\n\n        this.company = this.state.companies.find(x => x.id == this.companyId);\n        this.model.companyId = this.companyId;\n\n        // filter by person\n        if (!isNaN(this.params.personId)) {\n          this.parameters.search.PersonId = +this.params.personId;\n          this.model.personId = +this.params.personId;\n          this.person = await this.personService.getById(+this.params.personId);\n        }\n\n        // filter by position\n        if (!isNaN(this.params.positionId)) {\n          this.parameters.search.PositionId = +this.params.positionId;\n          this.model.positionId = +this.params.positionId;\n          this.position = await this.positionService.getById(+this.params.positionId);\n        }\n\n        // filter by organization\n        if (!isNaN(this.params.organizationId)) {\n          this.parameters.search.OrganizationId = +this.params.organizationId;\n          this.model.organizationId = +this.params.organizationId;\n          this.organization = await this.organizationService.getById(+this.params.organizationId);\n        }\n\n        // filter by team\n        if (!isNaN(this.params.teamId)) {\n          this.parameters.search.TeamId = +this.params.teamId;\n          this.model.teamId = +this.params.teamId;\n          this.team = await this.teamService.getById(+this.params.teamId);\n        }\n\n        // Load report templates for generation\n        try {\n          this.reportTemplates = await this.reportTemplateService.getAll();\n\n          let itemToQualify: ItemToQualify;\n          if (!isNaN(this.params.personId)) {\n            itemToQualify = ItemToQualify.Person;\n          } else if (!isNaN(this.params.positionId)) {\n            itemToQualify = ItemToQualify.Position;\n          } else if (!isNaN(this.params.teamId)) {\n            itemToQualify = ItemToQualify.Team;\n          } else if (!isNaN(this.params.organizationId)) {\n            itemToQualify = ItemToQualify.Organization;\n          }\n\n          if (!this.organization) {\n            this.filterReportTemplates(itemToQualify);\n          } else {\n            this.filterReportTemplates(itemToQualify, this.organization.organizationType);\n          }\n\n          this.searchReportTemplates = this.reportTemplates;\n        } catch (error) {\n          this.notification.error(error);\n        }\n\n        this.configureValidationRules();\n\n        this.isLoaded = true;\n\n        return await this.databind();\n      }\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async showHasLowBalanceModal(talentsQuantity: number): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: HasLowBalanceModal,\n      model: { talents: talentsQuantity, companyId: this.companyId }\n    });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private viewReport(id: number): void {\n    let testReportsUrl = config.URLS_REPORTS;\n    const url = addSlash(testReportsUrl) + \"test-reports/\" + id;\n    window.open(url, \"_blank\");\n  }\n\n  public async viewWeights(id: number): Promise<void> {\n    await this.dialogService.open({\n      viewModel: ReportWeightsModal,\n      model: { reportId: id }\n    });\n  }\n\n  // --- Report generation (migrated from report-edit) ---\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"reportTemplateId\").displayName(\"main.test_reports.pages.reports.report_template\").required()\n      .ensure(\"discType\").displayName(\"main.test_reports.pages.reports.discType.title\").required()\n      .ensure(\"zeroOrOnePositionId\").displayName(\"main.test_reports.pages.reports.parameters.ZeroOrOnePosition\").maxItems(1)\n      .ensure(\"positionId\").displayName(\"main.test_reports.pages.reports.parameters.Position\").required()\n      .ensure(\"teamId\").displayName(\"main.test_reports.pages.reports.parameters.Team\").required()\n      .ensure(\"organizationId\").displayName(\"main.test_reports.pages.reports.parameters.Organization\").required()\n      .ensure(\"positionIds\").displayName(\"main.test_reports.pages.reports.parameters.Positions\").required().minItems(1).maxItems(1000)\n      .ensure(\"compareToPositionId\").displayName(\"main.test_reports.pages.reports.parameters.ComparePosition\").required()\n      .ensure(\"compareToTeamId\").displayName(\"main.test_reports.pages.reports.parameters.CompareTeam\").required()\n      .ensure(\"compateToOrganizationId\").displayName(\"main.test_reports.pages.reports.parameters.CompareOrganization\").required()\n      .ensure(\"compareToPersonId\").displayName(\"main.test_reports.pages.reports.parameters.ComparePerson\").required()\n      .ensure(\"personId\").displayName(\"main.test_reports.pages.reports.parameters.Person\").required()\n      .ensure(\"personId\").displayName(\"main.test_reports.pages.reports.parameters.Leader\").required()\n      .ensure(\"peopleIds\").displayName(\"main.test_reports.pages.reports.parameters.People\").required().minItems(1)\n      .ensure(\"oneOrTwoPeopleIds\").displayName(\"main.test_reports.pages.reports.parameters.OneOrTwoPeople\").required().minItems(1).maxItems(2)\n      .ensure(\"twoPeopleIds\").displayName(\"main.test_reports.pages.reports.parameters.TwoPeople\").required().minItems(2)\n      .ensure(\"threePeopleIds\").displayName(\"main.test_reports.pages.reports.parameters.ThreePeople\").required().minItems(1).maxItems(3)\n      .ensure(\"observerIds\").displayName(\"main.test_reports.pages.reports.parameters.Observers\").required().minItems(1).maxItems(1000)\n      .on(this.model);\n  }\n\n  private OnChangeReportFilter(): void {\n    if (this.reportFilter && this.reportFilter.length > 0) {\n      this.searchReportTemplates = this.reportTemplates.filter(\n        q => q.name.toLowerCase().includes(this.reportFilter.toLowerCase())\n      );\n      if (this.searchReportTemplates.length > 0) {\n        this.model.reportTemplateId = this.searchReportTemplates[0].id;\n        this.changeReport();\n      }\n    } else {\n      this.searchReportTemplates = this.reportTemplates;\n      this.model.reportTemplateId = null;\n    }\n  }\n\n  private filterReportTemplates(itemToQualify: ItemToQualify, organizationType?: OrganizationType) {\n    if (!isNaN(itemToQualify)) {\n      this.reportTemplates = this.reportTemplates.filter(x => x.itemToQualify == itemToQualify);\n    }\n\n    if (!isNaN(organizationType)) {\n      this.reportTemplates = this.reportTemplates.filter(x => x.organizationType == organizationType || x.organizationType == null);\n    }\n  }\n\n  public async showParameters(): Promise<any> {\n    // Wait for changeReport to finish populating model.parameters before revealing the cards.\n    await this.reportChangePromise;\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid)\n          this.isDisable = true;\n      });\n  }\n\n  public async hideParameters(): Promise<any> {\n    this.isDisable = false;\n  }\n\n  public async changeReport(): Promise<any> {\n    this.isChangingReport = true;\n    this.reportChangePromise = this.doChangeReport();\n\n    try {\n      return await this.reportChangePromise;\n    } finally {\n      this.isChangingReport = false;\n    }\n  }\n\n  private async doChangeReport(): Promise<any> {\n    this.logger.debug(\"changeReport\");\n\n    const token = this.reportChangeSequencer.next();\n\n    // Hide the previous talents amount while the latest selection is loading.\n    this.calculatedPrice = 0;\n\n    try {\n      const reportTemplate = await this.reportTemplateService.getById(this.model.reportTemplateId);\n      const personActivationQuestionaries = await this.activationQuestionaryService.getAll(this.model.personId);\n\n      // Discard stale response: only the latest report selection commits state.\n      if (!this.reportChangeSequencer.isLatest(token)) {\n        return;\n      }\n\n      this.model.languageId = reportTemplate.languageId;\n      this.companySheets = reportTemplate.sheets || [];\n      this.personActivationQuestionaries = personActivationQuestionaries;\n\n      this.model.sheets = reportTemplate.sheets;\n      this.setParameters(this.model.sheets.map(x => x.id));\n\n      const activationParameterIndex = this.model.parameters.findIndex(x => x === Parameter.Activation);\n      const questionaryParameterIndex = this.model.parameters.findIndex(x => x === Parameter.Questionary);\n      const questionariesByActivations: Questionary[] = [];\n\n      if (activationParameterIndex !== -1 || questionaryParameterIndex !== -1) {\n\n        const finalizedActivationQuestionaries = personActivationQuestionaries.filter(\n          x => x.activationQuestionaryStatus === ActivationQuestionaryStatus.Finalized && x.questionary.itemToQualify !== ItemToQualify.Observed\n        );\n\n        finalizedActivationQuestionaries.forEach((activationQuestionaryItem) => {\n          const { questionary } = activationQuestionaryItem;\n          const existingIndex = questionariesByActivations.findIndex(x => x.id === questionary.id);\n\n          if (existingIndex === -1) {\n            questionariesByActivations.push(questionary);\n          }\n\n          if (questionary.companyId !== null) {\n            this.removeQuestionaryById(questionariesByActivations, questionary.id);\n          }\n\n          if (questionary.itemToQualify === ItemToQualify.Observed) {\n            this.removeQuestionaryById(questionariesByActivations, questionary.id);\n          }\n\n          if ([NoDiscType.EngineersTest, NoDiscType.ExpectationsTeam, NoDiscType.Potential, NoDiscType.Performance, NoDiscType.VideoInterview].includes(questionary.noDiscType)) {\n            this.removeQuestionaryById(questionariesByActivations, questionary.id);\n          }\n        });\n\n        const originalQuestionaryIds = reportTemplate.questionaries.map(q => q.id);\n        const validQuestionaries = questionariesByActivations.filter(q => originalQuestionaryIds.includes(q.id));\n\n        reportTemplate.questionaries = validQuestionaries;\n      }\n\n      let questionaries: Questionary[] = [];\n      Object.assign(questionaries, reportTemplate.questionaries);\n\n      let discTypeCount: number = 0;\n      let questionariesToRemove: number[] = [];\n\n      questionaries.forEach((item) => {\n        if (item.questionaryType === QuestionaryType.NoDisc && item.noDiscType === NoDiscType.Curriculum) {\n          questionariesToRemove.push(item.id);\n        }\n        else if (item.questionaryType !== QuestionaryType.Disc) {\n          let questionaryActivations = personActivationQuestionaries.filter(x => x.questionaryId === item.id\n            && x.activationQuestionaryStatus === ActivationQuestionaryStatus.Finalized);\n\n          if (questionaryActivations.length < 2) {\n            questionariesToRemove.push(item.id);\n          }\n        }\n        else {\n          discTypeCount = discTypeCount + personActivationQuestionaries.filter(x => x.questionary.questionaryType === QuestionaryType.Disc\n            && x.activationQuestionaryStatus === ActivationQuestionaryStatus.Finalized).length;\n        }\n      });\n\n      reportTemplate.questionaries = reportTemplate.questionaries.filter(q => !questionariesToRemove.includes(q.id));\n\n      if (questionaries.some(x => x.questionaryType === QuestionaryType.Disc)) {\n        if (discTypeCount < 2) {\n          reportTemplate.questionaries = reportTemplate.questionaries.filter(q => q.questionaryType !== QuestionaryType.Disc);\n        }\n      }\n\n      this.reportTemplate = reportTemplate;\n      this.calculateTemplatePrice();\n\n    } catch (error) {\n      // Do not notify errors from already discarded requests.\n      if (!this.reportChangeSequencer.isLatest(token)) {\n        return;\n      }\n      this.notification.error(error);\n    }\n  }\n\n  private setParameters(sheetIds: number[]) {\n    this.model.parameters = [];\n\n    this.model.sheets.forEach(sheet => {\n      const index = sheetIds.findIndex(x => x == sheet.id);\n      if (index !== -1) {\n        for (let par of sheet.parameters) {\n          const index1 = this.model.parameters.findIndex(x => x === par.parameter);\n          if (index1 === -1) {\n            this.model.parameters.push(par.parameter);\n          }\n        }\n      }\n    });\n  }\n\n  public async sheetSelect(): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: SelectSheetModal,\n      model: this.model\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        this.setParameters(this.model.sheetIds);\n      } else {\n        this.model.sheetIds = [];\n      }\n    });\n  }\n\n  private async submit(): Promise<any> {\n    const indexQuestionary = this.model.parameters.findIndex(x => x == Parameter.Questionary);\n\n    if (indexQuestionary !== -1) {\n      let questioesDisc = this.reportTemplate.questionaries.filter(x => x.questionaryType === QuestionaryType.Disc);\n      let questioesNoDisc = this.reportTemplate.questionaries.filter(x => x.questionaryType !== QuestionaryType.Disc);\n      let numberQuestionaries = questioesNoDisc.length;\n      if (questioesDisc.length > 0) {\n        numberQuestionaries++;\n      }\n\n      if (numberQuestionaries > this.model.activationQuestionaryIds.length) {\n        this.notification.error('main.test_reports.pages.reports.parameters.Questionary_required');\n        return;\n      }\n    }\n\n    const indexObservers = this.model.parameters.findIndex(x => x == Parameter.Observers);\n\n    if (indexObservers !== -1) {\n      if (this.model.observerIds.length <= 0) {\n        this.notification.error('main.test_reports.pages.reports.parameters.Observer_required');\n        return;\n      }\n    }\n\n    const indexTwoObservers = this.model.parameters.findIndex(x => x == Parameter.TwoObservers);\n\n    if (indexTwoObservers !== -1) {\n      if (this.model.observerIds.length <= 1) {\n        this.notification.error('main.test_reports.pages.reports.parameters.Observer_required');\n        return;\n      }\n    }\n\n    const indexActivation = this.model.parameters.findIndex(x => x == Parameter.Activation);\n\n    if (indexActivation !== -1) {\n      if (this.model.activations.length <= 0) {\n        this.showActivationParameter = true;\n        await this.processActivationQuestionaries();\n        await this.processObserverActivations();\n\n        this.notification.warning('main.test_reports.pages.reports.parameters.Activation_required');\n        this.showParameters();\n        return;\n      }\n\n      if (this.model.activations.length > 0) {\n        let sumWeight = 0;\n        let isThereDisc = false;\n\n        for (const reportActivation of this.model.activations) {\n          sumWeight += Number(reportActivation.weight);\n          const activationQuestionary = reportActivation.activationQuestionary;\n          if (activationQuestionary && reportActivation.weight > 0) {\n            const isInActivationQuestionaryIds = this.model.activationQuestionaryIds.includes(activationQuestionary.id);\n            if (!isInActivationQuestionaryIds) {\n              this.model.activationQuestionaryIds.push(activationQuestionary.id);\n            }\n            if (activationQuestionary.questionary.questionaryType === QuestionaryType.Disc) {\n              isThereDisc = true;\n            }\n          }\n        }\n\n        if (sumWeight !== 100) {\n          this.notification.error('main.test_reports.pages.reports.parameters.Activation_weight_required');\n          return;\n        }\n\n        if (isThereDisc && this.model.positionId === undefined) {\n          this.notification.error('main.test_reports.pages.reports.parameters.Position_required');\n          return;\n        }\n      }\n    }\n\n    const indexQuestionaryTeam = this.model.parameters.findIndex(x => x == Parameter.QuestionaryTeam);\n\n    if (indexQuestionaryTeam !== -1) {\n      if (this.model.questionariesTeam.length < 1) {\n        this.notification.error('main.test_reports.pages.reports.parameters.Questionary_required');\n        return;\n      }\n\n      let sumWeight = 0;\n      this.model.questionariesTeam.forEach((reportQuestionaryTeam) => {\n        sumWeight += Number(reportQuestionaryTeam.weight);\n      });\n\n      if (sumWeight < 100 || sumWeight > 100) {\n        this.notification.error('main.test_reports.pages.reports.parameters.Activation_weight_required');\n        return;\n      }\n    }\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      });\n  }\n\n  private async save(): Promise<any> {\n    try {\n      let response: Report = await this.reportService.create(this.model);\n\n      let testReportsUrl = config.URLS_REPORTS;\n      const url = addSlash(testReportsUrl) + \"test-reports/\" + response.id;\n      window.open(url, \"_blank\");\n\n      // Reset generation form and refresh downloaded reports list\n      this.model = new Report();\n      this.model.companyId = this.companyId;\n      if (this.person) this.model.personId = this.person.id;\n      if (this.position) this.model.positionId = this.position.id;\n      if (this.organization) this.model.organizationId = this.organization.id;\n      if (this.team) this.model.teamId = this.team.id;\n      this.isDisable = false;\n      this.reportTemplate = null;\n      this.configureValidationRules();\n\n      return await this.databind();\n\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private filterByQuestionary(activationQuestionaryList: ActivationQuestionary[], activationQuestionary: ActivationQuestionary): ActivationQuestionary[] {\n    try {\n      let actQuesFiltered = activationQuestionaryList.filter(x => x.questionaryId !== activationQuestionary.questionaryId);\n      return actQuesFiltered;\n    } catch (error) {\n      return activationQuestionaryList;\n    }\n  }\n\n  private filterByDISC(activationQuestionaryList: ActivationQuestionary[]): ActivationQuestionary[] {\n    try {\n      let actQuesFiltered = activationQuestionaryList.filter(x => x.questionary.questionaryType !== QuestionaryType.Disc);\n      return actQuesFiltered;\n    } catch (error) {\n      return activationQuestionaryList;\n    }\n  }\n\n  private removeQuestionaryById(questionaries: Questionary[], id: number): void {\n    const index = questionaries.findIndex(x => x.id === id);\n    if (index !== -1) {\n      questionaries.splice(index, 1);\n    }\n  }\n\n  private async processActivationQuestionaries(): Promise<void> {\n    let actQuestionarySelected: ActivationQuestionary[] = [];\n\n    for (const activationQuestionaryId of this.model.activationQuestionaryIds) {\n      const activationQuestionarie = this.personActivationQuestionaries.find(x => x.id === activationQuestionaryId)\n      if (!activationQuestionarie) continue;\n\n      const activation = await this.activationService.getById(activationQuestionarie.activationId)\n      if (!activation) continue;\n\n      const newReportActivation = this.buildNewReportActivation(activationQuestionarie, activation);\n\n      actQuestionarySelected.push(activationQuestionarie);\n      this.model.activations.push(newReportActivation);\n    }\n\n    const finalizedActivationQuestionaries = this.personActivationQuestionaries.filter(\n      x => x.activationQuestionaryStatus === ActivationQuestionaryStatus.Finalized && x.questionary.itemToQualify !== ItemToQualify.Observed\n    );\n\n    const generalQuestionariesActivation = finalizedActivationQuestionaries.filter(x => x.questionary.companyId === null);\n\n    let filteredQuestionaryActivation = generalQuestionariesActivation.filter(x => ![NoDiscType.EngineersTest, NoDiscType.ExpectationsTeam,\n    NoDiscType.Potential, NoDiscType.Performance, NoDiscType.VideoInterview].includes(x.questionary.noDiscType))\n\n    const hasDiscQuestionary = actQuestionarySelected.some((itemActQuestionary) => {\n      return itemActQuestionary.questionary.questionaryType === QuestionaryType.Disc;\n    });\n\n    if (hasDiscQuestionary) {\n      filteredQuestionaryActivation = this.filterByDISC(filteredQuestionaryActivation);\n    }\n\n    actQuestionarySelected.forEach((itemActQuestionary) => {\n      filteredQuestionaryActivation = this.filterByQuestionary(filteredQuestionaryActivation, itemActQuestionary);\n    });\n\n    for (const activationQuestionaryItem of filteredQuestionaryActivation) {\n      const activation = await this.activationService.getById(activationQuestionaryItem.activationId);\n      if (!activation) continue;\n\n      const newReportActivation = this.buildNewReportActivation(activationQuestionaryItem, activation);\n\n      this.model.activations.push(newReportActivation);\n    }\n  }\n\n  private async processObserverActivations(): Promise<void> {\n    for (const observerActivationId of this.model.observerIds) {\n      const activation = await this.activationService.getById(observerActivationId);\n      if (!activation) continue;\n\n      const newObserverReportActivation: ReportActivation = {\n        reportId: Number(this.model.activations.length),\n        activationId: activation.id,\n        activation: activation,\n        weight: 0,\n        isAvailable: true,\n      };\n\n      this.model.activations.push(newObserverReportActivation);\n    }\n  }\n\n  private buildNewReportActivation(activationQuestionarie: ActivationQuestionary, activation: Activation): ReportActivation {\n    const newReportActivation: ReportActivation = {\n      reportId: Number(this.model.activations.length),\n      activationId: activationQuestionarie.activationId,\n      activation: activation,\n      activationQuestionaryId: activationQuestionarie.id,\n      activationQuestionary: activationQuestionarie,\n      weight: 0,\n      isAvailable: true,\n    };\n\n    return newReportActivation;\n  }\n\n  private calculateTemplatePrice(): void {\n    let price = 0;\n\n    if (this.model.sheets && this.model.sheets.length > 0) {\n      this.model.sheets.forEach(templateSheet => {\n        const companySheet = this.companySheets.find(cs => cs.id === templateSheet.id);\n        if (companySheet && companySheet.talentsPrice) {\n          price += +companySheet.talentsPrice;\n        }\n      });\n    }\n\n    this.calculatedPrice = price;\n  }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { I18N } from \"aurelia-i18n\";\nimport { AuthorizationService } from \"aurelia-permission\";\n\n@autoinject\nexport class ReportListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n\n    this.logger = LogManager.getLogger(\"ReportListChildRouter\");\n  }\n\n  public configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./report-list\"),\n        name: \"reports\",\n      },\n\n      {\n        route: \"report/:itemToQualify?\",\n        moduleId: PLATFORM.moduleName(\"./report-child-router\"),\n        name: \"report-child-router\",\n      },\n\n\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=../../../components/person-header.html></require> <require from=../../../components/position-header.html></require> <require from=../../../components/organization-header.html></require> <require from=../../../components/team-header.html></require> <require from=../../components/report-parameter></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${company.name} / ${'main.test_reports.pages.reports.title' & t}</h2> <person-header person.bind=person></person-header> <position-header position.bind=position company-number.bind=companyId></position-header> <organization-header organization.bind=organization></organization-header> <team-header team.bind=team></team-header> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-12> <h4>${'commands.generate' & t}</h4> </div> </div> <div class=\\\"row mb-2\\\"> <div class=\\\"col-md-4 col-12\\\"> <label for=reportTemplateId> ${'main.test_reports.pages.reports.report_template' & t} </label> <div if.bind=!isDisable class=form-group> <input type=text class=form-control id=reportTemplateFilter input.delegate=OnChangeReportFilter() t=[placeholder]ux_datatable.search_placeholder value.bind=reportFilter> </div> </div> </div> <div class=\\\"row mb-2\\\"> <div class=\\\"col-md-4 col-12\\\"> <select class=form-control value.bind=\\\"model.reportTemplateId & validate\\\" id=reportTemplateId disabled.bind=isDisable change.trigger=changeReport()> <option value=\\\"\\\" t=forms.select_option>select an item</option> <option repeat.for=\\\"option of searchReportTemplates\\\" model.bind=option.id> ${option.name & t} </option> </select> </div> <div class=\\\"col-md-auto col-12 d-flex align-items-center gap-2\\\"> <button if.bind=!isDisable class=\\\"btn btn-primary btn-round px-3 py-1\\\" click.delegate=showParameters() disabled.bind=\\\"isDisable || isChangingReport\\\"> <span if.bind=isChangingReport><i class=\\\"fa fa-spinner fa-spin\\\"></i></span> <span if.bind=!isChangingReport>${'commands.generate' & t}</span> </button> <button show.bind=isDisable class=\\\"btn btn-link\\\" title.bind=\\\"'commands.clear' & t\\\" click.delegate=hideParameters()> <i class=material-icons>clear</i> </button> </div> <div class=\\\"col-md-3 col-12 d-flex align-items-center\\\" if.bind=\\\"model.reportTemplateId && totalPrice > 0\\\"> <span class=\\\"fw-bold text-primary text-nowrap\\\"> <h5 class=\\\"mb-0 d-inline\\\">${totalPrice} ${'main.test_reports.pages.reports.talents_unit' & t}</h5> </span> </div> </div> <div class=\\\"row mb-2\\\" if.bind=\\\"!isDisable && model.reportTemplateId\\\"> <div class=\\\"col-md-4 col-12\\\"> <button class=\\\"btn btn-link\\\" click.delegate=sheetSelect() t=main.test-reports.pages.reports.view_sheets>view-sheet</button> </div> </div> <report-parameter is-disable.bind=isDisable model.bind=model report-template.bind=reportTemplate is-report-activation.bind=true show-activation-parameter.bind=showActivationParameter></report-parameter> <div if.bind=isDisable class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit() show.bind=isDisable disabled.bind=!canSave>${'commands.generate' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" show.bind=isDisable click.delegate=hideParameters()>${'commands.cancel' & t}</button> </div> </div> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-12> <h4>${'main.test_reports.pages.reports.downloaded_reports' & t}</h4> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-5 text-truncate mb-2\\\"> <span title=\\\"${item.reportTemplateName & t}\\\">${item.reportTemplateName & t}</span> </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test_reports.pages.reports.created_by' & t}</small> </label> ${item.createdByName} </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test_reports.pages.reports.created_on' & t}</small> </label> ${item.createdOn | dateTimeFormat} </div> <div class=\\\"col-md-2 col-12 mb-2\\\"> <a href=# title.bind=\\\"'commands.assessment' & t\\\" click.delegate=viewReport(item.id) role=button> <i class=material-icons>assessment</i> </a> <a href=# if.bind=item.hasPotential title.bind=\\\"'commands.view' & t\\\" click.delegate=viewWeights(item.id) role=button> <i class=material-icons>visibility</i> </a> </div> </div> </li> </ul> </div> </div> </div> </div> </template> \";","import { Notification } from './../../../../common/services/notification';\nimport { DialogController } from \"aurelia-dialog\";\nimport { Report } from \"models/test-reports/reports/report\";\nimport { Logger } from \"aurelia-logging\";\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { CarouselConfig } from \"common/resources/elements/ux/carousel/carousel\";\n\n@autoinject\nexport class SelectSheetModal {\n\n  private logger: Logger;\n\n  // static inject = [DialogController];\n\n  private model: Report;\n\n  private selectedSheetIds: number[] = [];\n\n  private options = <CarouselConfig>{\n    duration: 600,\n    perPage: {\n      640: 1,\n      768: 2,\n      1080: 3\n    },\n    draggable: true,\n    loop: false,\n    autoPlay: true,\n    autoPlayInterval: 2500\n  };\n\n\n  constructor(\n    private dialogController: DialogController,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"SelectSheetModal\");\n  }\n\n  private activate(model: Report) {\n\n    this.model = model;\n\n    if (this.model.sheetIds.length == 0) {\n      this.selectedSheetIds = this.model.sheets.map(x => x.id);\n    }\n    else {\n      this.selectedSheetIds = this.model.sheetIds;\n    }\n\n  }\n\n  private async select(): Promise<any> {\n\n    if (this.selectedSheetIds.length == 0) {\n      this.notification.warning(\"main.test_reports.pages.reports.errors.no_selected_sheets\");\n    }\n    else {\n      this.model.sheetIds = this.selectedSheetIds;\n      return await this.dialogController.ok();\n    }\n\n  }\n}\n","module.exports = \"<template> <ux-dialog style=width:50rem> <ux-dialog-body> <require from=../../../admin/pages/test-core/sheets/sheet-card></require> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${model.reportTemplateName}</h2> <div class=\\\"row mb-3\\\"> <div class=col-12> <p>${'main.admin.pages.test_management.reports.sheets.info' & t}</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"card card-body\\\" style=width:48rem> <ux-carousel options.bind=options> <sheet-card repeat.for=\\\"sheet of model.sheets\\\" sheet.bind=sheet checked.bind=selectedSheetIds value.bind=sheet.id> </sheet-card> </ux-carousel> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=select()>${'commands.select' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel() t=commands.cancel>Cancel</button> </div> </div> </ux-dialog-body> </ux-dialog> </template> \";","import { I18N } from 'aurelia-i18n';\nimport { autoinject, LogManager } from \"aurelia-framework\";\n\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration, RouteConfig } from \"aurelia-router\";\nimport { PLATFORM } from \"aurelia-pal\";\n\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\n\n@autoinject()\nexport class TestReportChildRouter {\n\n  private logger: Logger;\n\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService) {\n\n    this.logger = LogManager.getLogger(\"TestReportChildRouter\");\n  }\n\n  public configureRouter(config: RouterConfiguration, router: Router) {\n\n    config.map([\n      {\n        route: [\"\", \"report-home\"],\n        moduleId: PLATFORM.moduleName(\"./pages/home/home\"),\n        name: \"test-report-home\",\n        nav: true,\n        title: this.i18n.tr(\"main.test_reports.pages.home.title\"),\n        settings: {\n          icon: \"ticon-modulo-report\",\n          isHome: true\n        }\n      },\n\n     {\n        route: \"reports\",\n        moduleId: PLATFORM.moduleName(\"./pages/reports/report-list-child-router\"),\n        name: \"report-list-child-router\",\n        nav: false,\n        title: this.i18n.tr(\"main.test_reports.pages.reports.title\")\n      },\n/*\n      {\n        route: \"positions\",\n        moduleId: PLATFORM.moduleName(\"./pages/position/position-list-child-router\"),\n        name: \"position-list-child-router\",\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestPositionView),\n        title: this.i18n.tr(\"main.test.pages.position.position.menu_option\"),\n        settings: {\n          icon: \"ticon-persona\"\n        }\n      },*/\n\n    ]);\n\n    this.router = router;\n  }\n\n}\n","module.exports = \"<template> <router-view swap-order=after></router-view> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { ArchiveService } from \"main/test/services/archive/archive-service\";\n\nimport { Archive } from \"models/test-archive/archive\";\nimport { RestoreConfirmation } from \"../../../components/restore-confirmation\";\n\n@autoinject()\nexport class TeamList {\n\n  private logger: Logger;\n  private params: any = {};\n  public companyId: number;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  constructor(\n    private router: Router,\n    private archiveService: ArchiveService,\n    private notification: Notification,\n    private dialogService: DialogService,\n  ) {\n\n    this.logger = LogManager.getLogger(\"ArchiveList\");\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    let search = this.parameters.search.Query;\n    sessionStorage.setItem('archiveListSearch', search == null ? '' : search);\n\n    return await this.archiveService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.parameters.search.Query = sessionStorage.getItem('archiveListSearch');\n    this.params = params;\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n      this.logger.debug(\"activate companyId:\", this.params.companyId);\n      this.companyId = +this.params.companyId;\n      this.archiveService.client.currentCompanyId = this.companyId;\n      return await this.databind();\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async clearFilters() {\n    this.parameters.search.Query = this.parameters.search.StartDate = this.parameters.search.EndDate = null;\n    return await this.databind();\n  }\n\n  public async update(item: Archive): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: RestoreConfirmation,\n      model: item.name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        try {\n          await this.archiveService.changeState(item);\n\n          let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === item.id);\n          this.parameters.tableData.splice(indexOfEditedModel, 1);\n          this.parameters.totalRecords--;\n\n          this.notification.success(\"main.admin.pages.archive.notifications.change_state\");\n        } catch (error) {\n          this.notification.error(error);\n        }\n      }\n    });\n  }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { I18N } from \"aurelia-i18n\";\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\n\n@autoinject\nexport class ArchiveListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor (\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n\n    this.logger = LogManager.getLogger( \"ArchiveListChildRouter\" );\n  }\n\n  public configureRouter ( config: RouterConfiguration, router: Router ): void {\n    this.router = router;\n    config.map( [\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./archive-list\"),\n        name: \"archive-list\",\n      },\n    ] );\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","module.exports = \"<template> <require from=../../../components/three-tags.html></require> <require from=../../../../models/test-archive/archiveTypeViewEngineHooks></require> <h2> ${'main.test.pages.archive.title' & t} </h2> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div if.bind=\\\"item.type == archiveType.Person\\\" class=\\\"col-md-1 d-flex\\\"><i class=\\\"material-icons large ticon-persona\\\"></i></div> <div if.bind=\\\"item.type == archiveType.Position\\\" class=\\\"col-md-1 d-flex\\\"><i class=\\\"material-icons large ticon-puesto\\\"></i></div> <div if.bind=\\\"item.type == archiveType.Team\\\" class=\\\"col-md-1 d-flex\\\"><i class=\\\"material-icons large ticon-equipo\\\"></i></div> <div if.bind=\\\"item.type == archiveType.Organization\\\" class=\\\"col-md-1 d-flex\\\"><i class=\\\"material-icons large ticon-organizacion\\\"></i></div> <div if.bind=\\\"item.type == archiveType.ReportTemplate\\\" class=\\\"col-md-1 d-flex\\\"><i class=\\\"material-icons-outlined large md-light\\\">assessment</i></div> <div if.bind=\\\"item.type == archiveType.QuestionaryGroup\\\" class=\\\"col-md-1 d-flex\\\"><i class=\\\"material-icons-outlined large md-light\\\">folder</i></div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <span title=${item.name}>${item.name}</span> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.archives.created_on' & t}</small> </label> ${item.createdOn | dateTimeFormat} </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.archives.evaluator' & t}</small> </label> <span title=${item.createdByName}>${item.createdByName}</span> </div> <div class=\\\"col-md-2 col-12 minh-90 mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.archives.tags' & t}</small> </label> <three-tags tags.bind=item.tags></three-tags> </div> <div class=\\\"col-md-2 col-12 mb-2\\\"> <a href=# global-permission-show=\\\"can: TestArchiveUpdate\\\" click.delegate=update(item) title.bind=\\\"'main.test.pages.archives.restore' & t\\\" role=button> <i class=material-icons>restore</i> </a> </div> </div> </li> </ul> </div> </div> </div> </div> </template> \";","import { QuestionService } from '../../../admin/services/questionaries/question-service';\nimport config from 'config.js';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyCompetenceModal } from '../people-competence/company-competence-modal';\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { QuestionaryGroup } from \"models/test-management/questionary-groups/questionaryGroup\";\nimport { QuestionaryGroupService } from \"../../../admin/services/test-management/questionary-group-service\";\nimport { Language } from \"models/localizations/language\";\nimport { ReportTemplate } from \"models/test-core/report-templates/report-template\";\nimport { ReportTemplateService } from \"../../../admin/services/test-management/report-template-service\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from \"common/store/store-service\";\nimport { Router } from \"aurelia-router\";\nimport { BulkActivation } from '../../../../models/test-person/bulkActivation';\nimport { FileAcceptValidator } from \"common/utils/file-accept-validator\";\nimport { BulkActivationService } from \"main/test/services/people/bulk-activation-service\";\nimport { UserInfoLoadedMessage } from 'messages/userInfoLoadedMessage';\nimport { Subscription, EventAggregator } from 'aurelia-event-aggregator';\nimport { CoreLanguageService } from 'main/admin/services/localizations/core-language-service';\nimport { QuestionaryType } from 'models/questionaries/questionaryType';\nimport { NoDiscType } from 'models/questionaries/noDiscType';\nimport { PersonActivationConfirmationModal } from '../people/person-activation-confirmation-modal';\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { QuestionUse } from 'models/questions/questionUse';\nimport { Test } from '../../../../models/test-perfiltic/test';\nimport { Questionary } from 'models/questionaries/questionary';\nimport { PersonMode } from \"models/test-person/personMode\";\nimport { TestQuestionary } from 'models/test-core/test-questionary';\nimport { CompanyQuestionaryService } from 'main/admin/services/test-management/company-questionary-service';\nimport { I18N } from 'aurelia-i18n';\nimport { Languages } from 'models/localizations/languages';\n\nimport { DimensionSelectorModal, DimensionSelectorModel } from 'main/components/dimension-selector-modal';\nimport { QuestionaryGroupThematicAssociate } from 'models/test-management/questionary-groups/questionary-group-thematic-associate';\nimport { ThematicGroupService } from 'main/admin/services/thematic-groups/thematic-group-service';\nimport { ActivationThematicAssociate } from 'models/test-person/activationThematicAssociate';\n\n\n\n@autoinject()\nexport class BulkActivationModal {\n\n  private logger: Logger;\n\n  public companyId: number;\n  // private company: Company;\n\n  private state: State;\n  private avgTimeModular: { questionaryId: number, averageTime: number }[] = [];\n  private questionaryFilter: string = \"\";\n  private questionaryGroupFilter: string;\n  private reportFilter: string;\n  private hasCompetencesFilter: boolean;\n  private questionaryGroups: QuestionaryGroup[];\n  private searchQuestionaryGroup: QuestionaryGroup[];\n  private reportTemplates: ReportTemplate[];\n  private searchReport: ReportTemplate[];\n  private languages: Language[];\n  private questionaries: TestQuestionary[] = [];\n  private searchQuestionary: TestQuestionary[] = [];\n  private isCompetenceActive: boolean = false;\n  private isModularActive: boolean = false;\n  private selectedQuestionaries = {\n    qty: 0,\n    avg: 0,\n    questionaries: \"\",\n    hasCompetences: false,\n    hasEngineersTest: false,\n    hasModular: false,\n  };\n\n  private model: BulkActivation = new BulkActivation();\n  private validationController: ValidationController;\n\n  private csvExampleUrl: string = \"\";\n  private xlsxExampleUrl: string = \"\";\n\n  private subscription: Subscription;\n  private questionaryGroup: QuestionaryGroup;\n  private isInvalid: boolean;\n  private isEngineersTests: boolean = false;\n  private isCareerPath: boolean = false;\n  private selectedLanguageId: number = Languages.Spanish;\n  private signal: string = this.i18n.tr(\"main.test.pages.people.is_new_test\");\n  constructor(\n    private router: Router,\n    private bulkActivationService: BulkActivationService,\n    private store: StoreService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private questionaryGroupService: QuestionaryGroupService,\n    private reportTemplateService: ReportTemplateService,\n    private languageService: CoreLanguageService,\n    protected ea: EventAggregator,\n    private dialogService: DialogService,\n    private questionService: QuestionService,\n    private companyQuestionaryService: CompanyQuestionaryService,\n    private thematicGroupService: ThematicGroupService,\n    private i18n: I18N\n\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"BulkActivationModal\");\n\n    this.state = this.store.state;\n\n    let backendUrl = config.URLS_BACKEND;\n    this.csvExampleUrl = backendUrl + \"/person-content/bulk-activation-example.csv\";\n    this.xlsxExampleUrl = backendUrl + \"/person-content/bulk-activation-example.xlsx\";\n\n    this.subscription = this.ea.subscribe(UserInfoLoadedMessage, (message: UserInfoLoadedMessage) => this.setUserLanguage.bind(this));\n\n  }\n\n  public detached() {\n    this.subscription.dispose();\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.testperson.pages.masive_activation.list_name\").required()\n      .ensure(\"fileName\").displayName(\"main.testperson.pages.masive_activation.field_file\").required()\n      .ensure(\"activation.languageId\").displayName(\"main.admin.pages.questionaries.language\").required()\n      //.ensure(\"activation.companyCompetenceIds\").displayName(\"main.admin.pages.questionaries.competences\").required()\n      .on(this.model);\n  }\n\n  public async activate(params: any): Promise<any> {\n    this.logger.debug(\"activate\");\n\n    if (!isNaN(params.companyId)) {\n      this.companyId = +params.companyId;\n\n      this.model.companyId = this.companyId;\n\n      // this.personService.client.currentCompanyId = this.companyId;\n      this.questionaryGroupService.client.currentCompanyId = this.companyId;\n      this.reportTemplateService.client.currentCompanyId = this.companyId;\n\n      this.questionaryGroups = await this.getQuestionaryGroups();\n      this.reportTemplates = await this.getReportTemplates();\n      this.questionaries = await this.companyQuestionaryService.getAll();\n      this.configureValidationRules();\n      this.searchQuestionary = this.questionaries;\n      this.searchQuestionaryGroup = this.questionaryGroups;\n      this.searchReport = this.reportTemplates;\n    }\n\n  }\n\n  public setUserLanguage() {\n    this.logger.debug(\"setUserLanguage\");\n    if (this.state && this.state.userBasicInfo) {\n      let activeCulture = this.state.userBasicInfo.culture;\n      let activeLang = this.languages.find(lg => lg.culture === activeCulture);\n      if (activeLang) {\n        this.model.languageId = activeLang.id;\n      }\n    }\n  }\n\n  private async bind(): Promise<any> {\n    // this.logger.debug(\"bind\");\n    try {\n      this.languages = await this.languageService.getAll();\n      this.setUserLanguage();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async selectCompanyCompetence(): Promise<void> {\n    this.logger.debug(\"model.companyCompetenceIds\")\n    return await this.dialogService.open({\n      viewModel: CompanyCompetenceModal,\n      model: this.model.companyCompetenceIds\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        if (this.isCompetenceActive && this.model.companyCompetenceIds.length == 0) {\n          this.notification.warning(\"main.test.pages.people.errors.no_competences_selected\");\n        }\n      }\n    });\n  }\n\n  private async changeBattery(itm) {\n    this.model.reportTemplateId = null;\n    this.model.questionaryIds = [];\n    this.model.engineersTests = null;\n    const qg = this.questionaryGroups.filter(it => it.id === itm);\n    this.model.activationThematicAssociates = [];\n    this.avgTimeModular = [];\n    this.isModularActive = false;\n    if (qg.length) {\n      const questionaries = qg[0].questionaries;\n      const thematicAssociates = qg[0].questionaryGroupThematicAssociates || [];\n      const text = this.signal;\n      const hasModular = questionaries.some(it => it.isModular);\n      let avg = await this.calculateAvgTime(hasModular, thematicAssociates, questionaries);\n\n      // Auto-populate activationThematicAssociates for modular questionaries\n      if (hasModular) {\n        for (let i = 0; i < questionaries.length; i++) {\n          const q = questionaries[i];\n          if (q.isModular) {\n            const associatesForQ = thematicAssociates.filter(a => a.questionaryId === q.id);\n            if (associatesForQ.length > 0) {\n              for (const a of associatesForQ) {\n                let associate = new ActivationThematicAssociate();\n                associate.questionaryId = q.id;\n                associate.thematicGroupId = a.thematicGroupId;\n                associate.thematicVariableId = a.thematicVariableId;\n                this.model.activationThematicAssociates.push(associate);\n              }\n            } else {\n              const availableThematics = await this.companyQuestionaryService.getAvailableByQuestionaryId(q.id);\n              const enabledDimensions = availableThematics.filter(d => !d.isDisabled);\n              for (const dim of enabledDimensions) {\n                let associate = new ActivationThematicAssociate();\n                associate.questionaryId = q.id;\n                associate.thematicGroupId = dim.id;\n                associate.thematicVariableId = dim.thematicVariableId;\n                this.model.activationThematicAssociates.push(associate);\n              }\n            }\n          }\n        }\n        this.isModularActive = true;\n      }\n\n      questionaries.forEach(function (it) {\n        it.isNewTest == true ? it.name = it.name + \" \" + text : it.name;\n      });\n      this.selectedQuestionaries = {\n        qty: questionaries.length,\n        avg: avg,\n        questionaries: questionaries.length > 0 ? questionaries.map(it => it.name).reduce((a, b) => a + \", \" + b) : \"\",\n        hasCompetences: questionaries.length > 0 ? questionaries.some(it => it.questionaryType == QuestionaryType.Competences) : false,\n        hasEngineersTest: questionaries.length > 0 ? questionaries.some(it => it.noDiscType == NoDiscType.EngineersTest) : false,\n        hasModular: questionaries.length > 0 ? questionaries.some(it => it.isModular) : false,\n      };\n\n      this.validateEngineersTests(questionaries);\n      this.validateQuestionaryCareerPath(questionaries);\n    } else {\n      this.selectedQuestionaries = {\n        qty: 0,\n        avg: 0,\n        questionaries: \"\",\n        hasCompetences: false,\n        hasEngineersTest: false,\n        hasModular: false,\n      }\n    }\n\n    this.cleanCompanyCompetences();\n\n    const questionaryGroup = await this.questionaryGroupService.getById(itm);\n    await this.isValidActivationVideoInterview(questionaryGroup);\n  }\n  private async isValidActivationVideoInterview(questionaryGroup: QuestionaryGroup) {\n    const hasVideoInterview = questionaryGroup.questionaries.filter(x => x.noDiscType === NoDiscType.VideoInterview);\n    if (hasVideoInterview.length > 0) {\n      const validate = await this.questionaryGroupService.validateActivationVideoInterview(questionaryGroup.id);\n      if (!validate) {\n        this.isInvalid = true;\n        return this.notification.warning(\"main.test.pages.people.errors.questionarygroup_videinterview_activation_failed\");\n      }\n      else\n        this.isInvalid = false;\n    }\n    else\n      this.isInvalid = false;\n  }\n\n  private async changeQuestionary() {\n    this.model.reportTemplateId = null;\n    this.model.questionaryGroupId = null;\n\n    let questionariesFilter: TestQuestionary[] = [];\n    var testQuestionary = new TestQuestionary();\n    this.model.questionaryIds.forEach(element => {\n      testQuestionary = new TestQuestionary();\n      testQuestionary = this.questionaries.find(it => it.stringId == element.stringId);\n      questionariesFilter.push(testQuestionary)\n    });\n    //this.isDisable = false;\n    this.isModularActive = false;\n\n    if (this.model.activationThematicAssociates && this.model.activationThematicAssociates.length > 0) {\n      const selectedQuestionaryIds = questionariesFilter\n        .filter(q => q != null)\n        .map(q => q.id);\n      this.model.activationThematicAssociates = this.model.activationThematicAssociates\n        .filter(a => selectedQuestionaryIds.indexOf(a.questionaryId) !== -1);\n\n      this.avgTimeModular = this.avgTimeModular\n        .filter(a => selectedQuestionaryIds.indexOf(a.questionaryId) !== -1);\n    }\n    if (questionariesFilter.length > 0) {\n      const nonModular = questionariesFilter.filter(it => !it.isModular);\n      const nonModularAvg = nonModular.length > 0 ? nonModular.map(it => it.averageTime).reduce((a, b) => a + b) : 0;\n      let modularAvg = 0;\n      for (let i = 0; i < this.avgTimeModular.length; i++) {\n        modularAvg += this.avgTimeModular[i].averageTime || 0;\n      }\n      this.selectedQuestionaries = {\n        qty: questionariesFilter.length,\n        avg: nonModularAvg + modularAvg,\n        questionaries: questionariesFilter.length > 0 ? questionariesFilter.map(it => it.name).reduce((a, b) => a + \", \" + b) : \"\",\n        hasCompetences: questionariesFilter.length > 0 ? questionariesFilter.some(it => it.questionaryType == QuestionaryType.Competences) : false,\n        hasEngineersTest: questionariesFilter.length > 0 ? questionariesFilter.some(it => it.noDiscType == NoDiscType.EngineersTest) : false,\n        hasModular: questionariesFilter.length > 0 ? questionariesFilter.some(it => it.isModular) : false,\n      };\n\n      if (this.selectedQuestionaries.hasEngineersTest) {\n        this.validateEngineersTests(questionariesFilter);\n\n      }\n      if (!this.selectedQuestionaries.hasEngineersTest) {\n        this.isEngineersTests = false;\n        this.model.engineersTests = [];\n      }\n      this.validateQuestionaryCareerPath(questionariesFilter);\n      if (this.selectedQuestionaries.hasCompetences && this.hasCompetencesFilter != true) {\n        this.selectCompanyCompetence();\n        this.hasCompetencesFilter = true;\n      }\n      if (!this.selectedQuestionaries.hasCompetences) {\n        this.hasCompetencesFilter = false;\n      }\n\n      if (this.selectedQuestionaries.hasModular) {\n        this.isModularActive = true;\n\n        const modularQuestionaries = questionariesFilter.filter(q => q != null && q.isModular);\n        for (let i = 0; i < modularQuestionaries.length; i++) {\n          const mq = modularQuestionaries[i];\n          const hasThematics = this.model.activationThematicAssociates &&\n            this.model.activationThematicAssociates.some(a => a.questionaryId === mq.id);\n\n          if (!hasThematics) {\n            await this.selectThematics(mq.id, mq.name);\n          }\n        }\n      }\n    } else {\n      this.selectedQuestionaries = {\n        qty: 0,\n        avg: 0,\n        questionaries: \"\",\n        hasCompetences: false,\n        hasEngineersTest: false,\n        hasModular: false,\n      };\n      this.model.activationThematicAssociates = [];\n    }\n\n  }\n\n  private async changeReport(itm) {\n    this.model.questionaryGroupId = null;\n    this.model.questionaryIds = [];\n    this.model.engineersTests = null;\n    this.model.activationThematicAssociates = [];\n    const qg = this.reportTemplates.filter(it => it.id === itm);\n\n    if (qg.length) {\n      const reportTemplate = qg[0];\n      const questionaries = this.resolveQuestionariesForReportTemplate(reportTemplate);\n      const thematicAssociates = reportTemplate.reportTemplateThematicAssociates || [];\n      const text = this.signal;\n      questionaries.forEach(function (it) {\n        it.isNewTest == true ? it.name = it.name + \" \" + text : it.name;\n      });\n\n      const hasModular = questionaries.length > 0 ? questionaries.some(it => it.isModular) : false;\n      let avg = await this.calculateAvgTime(hasModular, thematicAssociates, questionaries);\n\n      // Auto-populate activationThematicAssociates for modular questionaries from report template\n      if (hasModular && thematicAssociates.length > 0) {\n        for (const associate of thematicAssociates) {\n          let activationAssociate = new ActivationThematicAssociate();\n          activationAssociate.questionaryId = associate.questionaryId;\n          activationAssociate.thematicGroupId = associate.thematicGroupId;\n          activationAssociate.thematicVariableId = associate.thematicVariableId;\n          this.model.activationThematicAssociates.push(activationAssociate);\n        }\n      }\n\n      this.selectedQuestionaries = {\n        qty: questionaries.length,\n        avg: avg,\n        questionaries: questionaries.length > 0 ? questionaries.map(it => it.name).reduce((a, b) => a + \", \" + b) : \"\",\n        hasCompetences: questionaries.length > 0 ? questionaries.some(it => it.questionaryType == QuestionaryType.Competences) : false,\n        hasEngineersTest: questionaries.length > 0 ? questionaries.some(it => it.noDiscType == NoDiscType.EngineersTest) : false,\n        hasModular: hasModular,\n      };\n      this.validateEngineersTests(questionaries);\n      this.validateQuestionaryCareerPath(questionaries);\n    } else {\n      this.selectedQuestionaries = {\n        qty: 0,\n        avg: 0,\n        questionaries: \"\",\n        hasCompetences: false,\n        hasEngineersTest: false,\n        hasModular: false,\n\n      }\n    }\n\n    this.cleanCompanyCompetences();\n  }\n\n  private resolveQuestionariesForReportTemplate(reportTemplate: ReportTemplate): TestQuestionary[] {\n    if (!reportTemplate) {\n      return [];\n    }\n\n    const persistedIds = (reportTemplate.reportTemplateQuestionaryIds || [])\n      .filter(x => x > 0);\n\n    if (persistedIds.length > 0) {\n      const selectedFromPersisted = reportTemplate.questionaries\n        .filter(q => persistedIds.indexOf(q.id) !== -1)\n        .map(q => <TestQuestionary><unknown>q);\n\n      if (selectedFromPersisted.length > 0) {\n        return selectedFromPersisted;\n      }\n    }\n\n    // Legacy fallback: if there are no persisted ids yet, keep previous behavior.\n    return reportTemplate.questionaries.map(q => <TestQuestionary><unknown>q);\n  }\n\n  private validateQuestionaryCareerPath(questionaries: Questionary[]) {\n    this.isCareerPath = false;\n    const qCareerPaths = questionaries.filter(q => q.noDiscType == NoDiscType.CareerPath);\n    this.isCareerPath = qCareerPaths.length > 0 ? true : false;\n  }\n\n  private cleanCompanyCompetences() {\n    if (!this.selectedQuestionaries.hasModular) {\n      this.model.activationThematicAssociates = [];\n    }\n    if (!this.selectedQuestionaries.hasCompetences) {\n      this.model.companyCompetenceIds = [];\n    }\n  }\n\n  private async getQuestionaryGroups(): Promise<QuestionaryGroup[]> {\n    return this.questionaryGroupService.getAll();\n  }\n\n  private async getReportTemplates(): Promise<ReportTemplate[]> {\n    return this.reportTemplateService.getAll();\n  }\n\n  private changeTag() {\n    this.model.reportTemplateId = null;\n    this.model.questionaryGroupId = null;\n    this.selectedQuestionaries = {\n      qty: 0,\n      avg: 0,\n      questionaries: \"\",\n      hasCompetences: false,\n      hasEngineersTest: false,\n      hasModular: false,\n    }\n    this.model.questionaryIds = [];\n    this.model.engineersTests = null;\n\n  }\n\n  private OnChangeQuestionary() {\n    this.searchQuestionary = [];\n    if (!this.selectedLanguageId && !this.questionaryFilter) {\n      this.searchQuestionary = this.questionaries;\n    }\n    else if (this.selectedLanguageId == 0 && this.questionaryFilter.length === 0) {\n      this.searchQuestionary = this.questionaries;\n    }\n    else if (this.questionaryFilter.length > 0 && this.selectedLanguageId > 0) {\n      this.searchQuestionary = this.questionaries.filter(q => q.name.toLowerCase().includes(this.questionaryFilter.toLowerCase()) && q.languageId === this.selectedLanguageId);\n    }\n    else if (this.questionaryFilter.length > 0) {\n      this.searchQuestionary = this.questionaries.filter(q => q.name.toLowerCase().includes(this.questionaryFilter.toLowerCase()));\n    }\n    else if (this.selectedLanguageId > 0) {\n      this.searchQuestionary = this.questionaries.filter(q => q.languageId == this.selectedLanguageId);\n    }\n  }\n\n\n  private async OnChangeQuestionaryGroup() {\n    if (this.questionaryGroupFilter.length > 0) {\n      this.searchQuestionaryGroup = this.questionaryGroups.filter(q => q.name.toLowerCase().includes(this.questionaryGroupFilter.toLowerCase()));\n      this.model.questionaryGroupId = this.searchQuestionaryGroup[0].id;\n      await this.changeBattery(this.model.questionaryGroupId);\n    }\n    else if (this.questionaryGroupFilter == null || this.questionaryGroupFilter.length == 0) {\n      this.searchQuestionaryGroup = [];\n      this.searchQuestionaryGroup = this.questionaryGroups;\n      this.model.questionaryGroupId = null;\n    }\n\n  }\n\n  private async OnChangeReport() {\n    if (this.reportFilter.length > 0) {\n      this.searchReport = this.reportTemplates.filter(q => q.name.toLowerCase().includes(this.reportFilter.toLowerCase()));\n      this.model.reportTemplateId = this.searchReport[0].id;\n      await this.changeReport(this.model.reportTemplateId);\n    }\n    else if (this.reportFilter == null || this.reportFilter.length == 0) {\n      this.searchReport = [];\n      this.searchReport = this.reportTemplates\n      this.model.reportTemplateId = null;\n      await this.changeReport(this.model.reportTemplateId);\n    }\n\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          if (this.isCareerPath && this.model.personMode === PersonMode.Direct) {\n            this.notification.warning(\"main.test.pages.people.person_mode.career_path\");\n          }\n          else if (!this.model.filedata) {\n            this.notification.warning(\"main.test.pages.people.errors.file_is_missing\")\n          }\n          else if (!this.model.reportTemplateId && !this.model.questionaryGroupId && !this.model.questionaryIds.length) {\n            this.notification.warning(\"main.test.pages.people.errors.questionarygroup_or_reports_is_missing\");\n          }\n          else if (this.model.invitationExpireDate && this.model.invitationExpireDate < new Date()) {\n            this.notification.warning(\"main.test.pages.people.errors.old_invitation_expire_date\");\n          }\n          const discCount = this.model.questionaryIds.map((sel) =>\n            this.questionaries.find((q) => q.stringId === sel.stringId)\n          ).filter((q) => q && q.questionaryType === QuestionaryType.Disc).length;\n          if (this.model.questionaryIds.length > 1) {\n            let selectedTests = this.model.questionaryIds.map(sel =>\n              this.questionaries.find(q => q.stringId === sel.stringId)\n            ).filter(q => q != null);\n\n            const selectedIds = selectedTests.map(q => q.id);\n            for (let i = 0; i < selectedTests.length; i++) {\n              const q = selectedTests[i];\n              if (q.questionaryIncompatibilities && q.questionaryIncompatibilities.length > 0) {\n                for (let j = 0; j < q.questionaryIncompatibilities.length; j++) {\n                  const incompatibleId = q.questionaryIncompatibilities[j].incompatibleQuestionaryId;\n                  if (selectedIds.indexOf(incompatibleId) !== -1) {\n                    const incompatibleQ = selectedTests.find(y => y.id === incompatibleId);\n                    this.notification.warning(\n                      `${q.name} main.admin.pages.test_management.questionary_groups.errors.incompatible_with ${incompatibleQ ? incompatibleQ.name : incompatibleId}`\n                    );\n                    return;\n                  }\n                }\n              }\n            }\n          }\n\n          if (this.isModularActive &&\n            (!this.model.activationThematicAssociates ||\n              this.model.activationThematicAssociates.length === 0)) {\n            this.notification.warning(\"main.test.pages.people.errors.no_thematics_selected\");\n            return;\n          }\n          if (discCount > 1) {\n            this.notification.warning(\"main.test.pages.people.errors.too_many_disc_questionaries\");\n            return;\n          }\n          else {\n            if (this.model.questionaryGroupId != null) {\n              this.questionaryGroup = await this.questionaryGroupService.getTalentsById(this.model.questionaryGroupId);\n              let hasVideoInterview = this.questionaryGroup.questionaries.filter(x => x.noDiscType === NoDiscType.VideoInterview);\n\n              if (hasVideoInterview.length > 0 && this.questionaryGroup.talentsPrice > 0) {\n                return await this.dialogService.open({\n                  viewModel: PersonActivationConfirmationModal,\n                  model: this.questionaryGroup.talentsPrice\n                }).whenClosed(async (response: DialogCloseResult) => {\n                  if (!response.wasCancelled) {\n                    return await this.save();\n                  }\n                });\n              }\n              else {\n                return await this.save();\n              }\n            }\n            else {\n              return await this.save();\n            }\n          }\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  get canSave() {\n    return !this.bulkActivationService.client.isRequesting;\n  }\n\n  private async save(): Promise<any> {\n    try {\n      this.model = await this.bulkActivationService.create(this.model);\n\n      this.notification.success(\"notifications.item_added\");\n\n      // new activation\n      return await this.router.navigateToRoute(\"bulk-activations\");\n    }\n    catch (error) {\n      this.notification.error(error);\n    };\n  }\n\n  private createQuestionaryGroup() {\n    // this.dialogController.cancel();\n    this.router.navigate(`/company/${this.companyId}/admin/test-management/questionary-groups/questionary-group/create`);\n  }\n\n  private createReportTemplate() {\n    // this.dialogController.cancel();\n    this.router.navigate(`/company/${this.companyId}/admin/test-management/report-templates/report-template/create`);\n  }\n\n  public setFile($event: any): void {\n    this.logger.debug(\"setFile\");\n    let file = <File>$event.target.files[0];\n\n    let fileValidator = FileAcceptValidator.parse(\"csv, xls, xlsx\", 1024 * 500);\n    if (fileValidator.isValid(file)) {\n      let reader: FileReader = new FileReader();\n      reader.readAsDataURL(file);\n      reader.onload = () => {\n        this.model.fileName = file.name;\n\n      };\n    }\n    else {\n      this.notification.error(\"main.test.pages.person.bulk_activation.errors.error_bad_file\");\n\n    }\n  }\n\n  private validateEngineersTests(questionaries: Questionary[]) {\n    this.isEngineersTests = false;\n    var engineersTests: Test[] = [];\n    let existQuestionary: Test[] = [];\n    if (this.model.engineersTests != undefined) {\n      if (this.model.engineersTests.length > 0)\n        engineersTests = this.model.engineersTests;\n    }\n    var test = new Test();\n    questionaries.forEach(function (item: Questionary) {\n      if (item.noDiscType == NoDiscType.EngineersTest) {\n        if (engineersTests != undefined) {\n          if (engineersTests.length > 0)\n            existQuestionary = engineersTests.filter(x => x.questionaryId === item.id);\n\n          if (existQuestionary.length == 0) {\n            test = new Test();\n            test.questionaryId = item.id\n            test.questionaryName = item.name\n            engineersTests.push(test);\n          }\n        }\n\n      }\n    });\n\n    if (engineersTests.length) {\n      this.model.engineersTests = engineersTests;\n      this.isEngineersTests = true;\n    }\n  }\n  public notificationInfo(message: string) {\n    this.notification.info(message);\n  }\n  private async selectThematics(questionaryId: number, questionaryName: string): Promise<void> {\n    // Ensure the array is initialized\n    if (!this.model.activationThematicAssociates) {\n      this.model.activationThematicAssociates = [];\n    }\n\n    // Get available dimensions and filter disabled ones\n    const allDimensions = await this.companyQuestionaryService.getAvailableByQuestionaryId(questionaryId);\n    const enabledDimensions = allDimensions.filter(d => !d.isDisabled);\n\n    // Check if the questionary is a transsversal one (companyId == null)\n    const questionary = this.questionaries.find(q => q.id === questionaryId);\n    if (questionary && questionary.companyId != null && enabledDimensions.length > 0) {\n      // Auto-select ALL dimensions for company questionaries\n      const newAssociates: ActivationThematicAssociate[] = enabledDimensions.map(dim => {\n        let associate = new ActivationThematicAssociate();\n        associate.questionaryId = questionaryId;\n        associate.thematicGroupId = dim.id;\n        associate.thematicVariableId = dim.thematicVariableId;\n        return associate;\n      });\n\n      const remaining = this.model.activationThematicAssociates\n        .filter(a => a.questionaryId !== questionaryId);\n      this.model.activationThematicAssociates = remaining.concat(newAssociates);\n\n      let totalAverageTime = 0;\n      enabledDimensions.forEach(dim => totalAverageTime += +(dim.averageTime || 0));\n      this.avgTimeModular = this.avgTimeModular.filter(a => a.questionaryId !== questionaryId);\n      this.avgTimeModular.push({ questionaryId: questionaryId, averageTime: totalAverageTime });\n      this.selectedQuestionaries.avg += totalAverageTime;\n      return;\n    }\n\n    const modalModel: DimensionSelectorModel = {\n      questionaryId: questionaryId,\n      questionaryName: questionaryName,\n      questionaryGroupThematicAssociates: [...this.model.activationThematicAssociates],\n      isActivation: true\n    };\n\n    return await this.dialogService\n      .open({\n        viewModel: DimensionSelectorModal,\n        model: modalModel,\n      })\n\n      .whenClosed(async (response: any) => {\n        if (!response.wasCancelled && response.output) {\n          // Remove existing associates for this questionary and add the new ones            \n          const remaining = this.model.activationThematicAssociates\n            .filter(a => a.questionaryId !== questionaryId);\n          this.model.activationThematicAssociates = remaining.concat(response.output.associates);\n\n\n          this.avgTimeModular = this.avgTimeModular.filter(a => a.questionaryId !== questionaryId);\n          this.avgTimeModular.push({ questionaryId: questionaryId, averageTime: response.output.totalAverageTime || 0 });\n\n          this.selectedQuestionaries.avg += response.output.totalAverageTime || 0;\n\n          this.logger.debug(\"Updated activationThematicAssociate:\",\n            this.model.activationThematicAssociates.length);\n        }\n        if (\n          this.isModularActive &&\n          (!this.model.activationThematicAssociates ||\n            this.model.activationThematicAssociates.length === 0)\n        ) {\n          this.notification.warning(\n            \"main.test.pages.people.errors.no_thematics_selected\"\n          );\n        }\n      });\n  }\n  private async calculateAvgTime(hasModular: boolean, thematicAssociates: { questionaryId: number; thematicGroupId: number }[], questionaries: Questionary[]): Promise<number> {\n    let avg = 0;\n    if (hasModular) {\n      for (let i = 0; i < questionaries.length; i++) {\n        const q = questionaries[i];\n        if (q.isModular) {\n          const associatesForQ = thematicAssociates.filter(a => a.questionaryId === q.id);\n          if (associatesForQ.length > 0) {\n            const availableThematics = await this.companyQuestionaryService.getAvailableByQuestionaryId(q.id);\n            for (let j = 0; j < associatesForQ.length; j++) {\n              const thematic = availableThematics.find(v => v.id === associatesForQ[j].thematicGroupId);\n              avg += (thematic && thematic.averageTime ? thematic.averageTime : 0);\n            }\n          } else if (q.companyId == null) {\n            // Transversal questionary\n            const availableThematics = await this.companyQuestionaryService.getAvailableByQuestionaryId(q.id);\n            const enabledDimensions = availableThematics.filter(d => !d.isDisabled);\n            for (let j = 0; j < enabledDimensions.length; j++) {\n              avg += +(enabledDimensions[j].averageTime || 0);\n            }\n          }\n        } else {\n          avg += +q.averageTime;\n        }\n      }\n    } else {\n      avg = questionaries.length > 0 ? questionaries.map(it => it.averageTime).reduce((a, b) => a + b) : 0;\n    }\n    return avg;\n  }\n}\n","module.exports = \"<template> <require from=../../../../models/test-person/personModeViewEngineHooks></require> <require from=../../../../models/test-person/questionaryWayViewEngineHooks></require> <require from=../../../../models/test-person/whoCanSeeReportViewEngineHooks></require> <require from=../../../../models/test-perfiltic/difficultyViewEngineHooks></require> <require from=../people-competence/competence-activation-selector></require> <require from=../../../components/multiselect-tht></require> <h2> ${'main.test.pages.bulk_activation.page_title' & t} </h2> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <div class=row> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label for=model.name>${'main.testperson.pages.masive_activation.list_name' & t}</label> <input type=text class=form-control id=name t=[placeholder]main.testperson.pages.masive_activation.list_name value.bind=\\\"model.name & validate\\\"> </div> </div> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label for=model.personMode>${'main.test.pages.people.person_mode' & t} <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.test.pages.bulk_activation.activation_mode')\\\" role=button> <i class=material-icons>info_outline</i> </a> </label> <select value.bind=\\\"model.personMode & validate\\\" class=form-control id=model.personMode> <option repeat.for=\\\"option of PersonModes\\\" model.bind=PersonMode[option]> ${'main.testperson.pages.person.activation_mode.' + option & t}</option> </select> </div> </div> </div> <div class=row> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col> <p>${'main.test.pages.person.file_warning' & t}</p> </div> </div> <div class=row> <div class=col> <i class=\\\"fa fa-file-excel-o\\\" aria-hidden=true></i> <a href=${xlsxExampleUrl}>${'main.testperson.pages.person.download_xlsx_file_text' & t}</a> </div> </div> </div> </div> </div> <div class=row> <div class=col-11> <div class=form-group> <div class=custom-file> <input type=file class=custom-file-input files.bind=model.filedata accept=\\\".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\\\" id=customFile change.delegate=setFile($event)> <label class=custom-file-label for=customFile>${ model.fileName ? model.fileName : 'commons.file' & t} </label> </div> </div> </div> <div class=col-1> <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.test.pages.bulk_activation.browse')\\\" role=button> <i class=material-icons>info_outline</i> </a> </div> </div> <div class=row> <div class=col-12> <label for=model.tags>${'main.testperson.pages.person.tags' & t} <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.test.pages.bulk_activation.tag')\\\" role=button> <i class=material-icons>info_outline</i> </a> </label> <company-tags-input value.bind=model.tags /> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> <a class=\\\"btn btn-link collapse-header\\\" data-toggle=collapse href=#collapseAdvanceOptions role=button aria-expanded=false aria-controls=collapseAdvanceOptions> <i class=material-icons>chevron_right</i> ${'main.testperson.pages.person.advanced_options' & t} </a> </p> <div class=collapse id=collapseAdvanceOptions> <div class=row> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=model.hasMicroSite checked.bind=\\\"model.hasMicroSite & validate\\\"/> <label for=model.hasMicroSite class=form-check-label>${'main.test.pages.people.micro_site' & t}</label> </span> </div> </div> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=model.isConfidentialTest checked.bind=\\\"model.isConfidentialTest & validate\\\"/> <label for=model.isConfidentialTest class=form-check-label>${'main.testperson.pages.person.confidential_test' & t}</label> </span> </div> </div> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=model.isAnonymous checked.bind=\\\"model.isAnonymous & validate\\\"/> <label for=model.isAnonymous class=form-check-label>${'main.testperson.pages.person.anonymous' & t}</label> </span> </div> </div> </div> <div class=row> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label for=model.questionaryWay>${'main.testperson.pages.person.person_questionary_way_label' & t}</label> <select value.bind=\\\"model.questionaryWay & validate\\\" class=form-control id=model.questionaryWay> <option repeat.for=\\\"option of QuestionaryWays\\\" model.bind=QuestionaryWay[option]> ${'main.testperson.pages.person.person_questionary_way.' + option & t}</option> </select> </div> </div> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label for=model.whoCanSeeReport>${'main.testperson.pages.person.who_can_see_report' & t}</label> <select value.bind=\\\"model.whoCanSeeReport & validate\\\" class=form-control id=model.whoCanSeeReport> <option repeat.for=\\\"option of WhoCanSeeReports\\\" model.bind=WhoCanSeeReport[option]> ${'main.testperson.pages.person.who_can_see_report_' + option & t}</option> </select> </div> </div> </div> <div class=row> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label for=model.invitationExpireDate t=main.testperson.pages.person.invitation_expire_date>Date</label> <ux-date-picker value.bind=\\\"model.invitationExpireDate & validate\\\" id=model.invitationExpireDate> </ux-date-picker> </div> </div> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label for=model.languageId>${'main.testperson.pages.person.language' & t}</label> <select value.bind=\\\"model.languageId & validate\\\" class=form-control> <option repeat.for=\\\"option of languages\\\" model.bind=option.id>${option.name & t}</option> </select> </div> </div> </div> </div> </div> </div> <div class=row> <div class=col-12> <h5>${'main.test.pages.people.activation_type' & t} <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.test.pages.bulk_activation.activation_type')\\\" role=button> <i class=material-icons>info_outline</i> </a> </h5> <p t=main.test.pages.people.info_new_test t-params.bind=\\\"{signal: signal}\\\"> </p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-3\\\"> <div class=\\\"nav flex-column nav-pills\\\" id=v-pills-tab role=tablist aria-orientation=vertical> <a class=nav-link id=v-pills-questionary-tab data-toggle=pill href=#v-pills-questionary role=tab click.delegate=changeTag(false) aria-controls=v-pills-questionary aria-selected=false>${'main.admin.pages.test_management.questionary_groups.questionaries.title' & t}</a> <a class=\\\"nav-link active\\\" id=v-pills-questionarygroups-tab data-toggle=pill href=#v-pills-questionarygroups role=tab aria-controls=v-pills-questionarygroups click.delegate=changeTag(false) aria-selected=true>${'main.test.pages.people.questionarygroups_tab.title' & t}</a> <a class=nav-link id=v-pills-report-tab data-toggle=pill href=#v-pills-report role=tab click.delegate=changeTag(false) aria-controls=v-pills-report aria-selected=false>${'main.testperson.pages.person.reports_tab.title' & t}</a> </div> </div> <div class=\\\"col-12 col-md-9\\\"> <div class=tab-content id=v-pills-tabContent> <div class=\\\"tab-pane fade show active\\\" id=v-pills-questionarygroups role=tabpanel aria-labelledby=v-pills-questionarygroups-tab> <div class=row> <div class=col-12> <div class=form-group> <label for=model.questionaryGroupId>${'main.test.pages.people.questionarygroups' & t}</label> <div class=form-group> <input type=text class=form-control id=questionaryGroupFilter input.delegate=OnChangeQuestionaryGroup() t=[placeholder]ux_datatable.search_placeholder value.bind=questionaryGroupFilter> </div> <select value.bind=\\\"model.questionaryGroupId & validate\\\" class=form-control change.delegate=changeBattery(model.questionaryGroupId)> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of searchQuestionaryGroup\\\" model.bind=option.id>${option.name & t}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=model.questionaryGroupId> <div class=col-12> <p t=main.test.pages.people.questionaries_info t-params.bind=\\\"{quantity:selectedQuestionaries.qty, questionaries: selectedQuestionaries.questionaries,  duration: selectedQuestionaries.avg}\\\"> Questionaries quantity </p> </div> </div> <div class=row> <div class=col-12> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: TestManagementQuestionaryGroupCreate\\\" title.bind=\\\"'commands.edit' & t\\\" click.delegate=createQuestionaryGroup()> ${'main.test.pages.people.new_questionarygroups' & t} </button> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=v-pills-report role=tabpanel aria-labelledby=v-pills-report-tab> <div class=row> <div class=col-12> <div class=form-group> <label for=model.reportTemplateId>${'main.testperson.pages.person.reports' & t}</label> <div class=form-group> <input type=text class=form-control id=reportFilter input.delegate=OnChangeReport() t=[placeholder]ux_datatable.search_placeholder value.bind=reportFilter> </div> <select value.bind=\\\"model.reportTemplateId & validate\\\" class=form-control change.delegate=changeReport(model.reportTemplateId)> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of searchReport\\\" model.bind=option.id>${option.name & t}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=model.reportTemplateId> <div class=col-12> <p t=main.test.pages.people.questionaries_info t-params.bind=\\\"{quantity:selectedQuestionaries.qty, questionaries: selectedQuestionaries.questionaries, duration: selectedQuestionaries.avg}\\\"> Questionaries quantity </p> </div> </div> <div class=row> <div class=col-12> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: TestManagementReportCreate\\\" title.bind=\\\"'commands.edit' & t\\\" click.delegate=createReportTemplate() disabled.bind=!canSave> ${'main.testperson.pages.person.commands.new_report' & t} </button> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=v-pills-questionary role=tabpanel aria-labelledby=v-pills-questionary-tab> <div class=row> <div class=col-12> <div class=form-group> <div class=form-group> <div class=row> <div class=col-md-6> <label for=model.activation.questionaryIds>${'main.test.pages.people.questionarygroups' & t}</label> <input type=text class=form-control id=questionaryFilter input.delegate=OnChangeQuestionary() t=[placeholder]ux_datatable.search_placeholder value.bind=questionaryFilter> </div> <div class=col-md-6> <label for=model.activation.languageId>${'main.admin.pages.questionaries.questions.questionnaire_language' & t}</label> <select class=form-control value.bind=selectedLanguageId change.delegate=OnChangeQuestionary()> <option t=forms.select_option value=0></option> <option repeat.for=\\\"language of languages\\\" model.bind=language.id>${language.name} </option> </select> </div> </div> </div> <multiselect-tht params-list.bind=searchQuestionary value.bind=model.questionaryIds change.delegate=changeQuestionary()> </multiselect-tht> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=model.questionaryIds> <div class=col-12> <p t=main.test.pages.people.questionaries_info t-params.bind=\\\"{quantity:selectedQuestionaries.qty, questionaries: selectedQuestionaries.questionaries, duration: selectedQuestionaries.avg}\\\"> Questionaries quantity </p> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> </div> </div> <div if.bind=isEngineersTests> <div class=row> <div class=col-12> <label>${'main.test.pages.people.perfiltic.description' & t}</label> </div> </div> <div class=row> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\"> <thead> <tr class=d-flex> <th class=col-md-6 scope=col> ${'main.test.pages.people.perfiltic.programmingLanguage' & t} </th> <th class=col-md-6 scope=col> ${'main.test.pages.people.perfiltic.difficulty' & t}</th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of model.engineersTests\\\"> <td class=col-md-6>${item.questionaryName}</td> <td class=col-md-6> <select value.bind=\\\"item.difficulty & validate\\\" class=form-control id=item.difficulty> <option repeat.for=\\\"option of Difficulties\\\" model.bind=Difficulty[option]> ${'main.test.pages.perfiltic.difficulty.' + option & t}</option> </select> </td> </tr> </tbody> </table> </div> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> <p>&nbsp;</p> </div> </div> <div class=row style=margin-bottom:50px> <div class=col> <label>${'main.testperson.pages.person.additional_text' & t}</label> <quill-editor value.bind=\\\"model.additionalText & validate\\\"></quill-editor> </div> </div> <div class=clearfix></div> <div class=\\\"row mb-3\\\"> <div class=col> <p>&nbsp;</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mt-3\\\" if.bind=!isInvalid> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestPersonBulkCreate\\\" click.delegate=submit()>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: bulk-activations;\\\" t=main.testperson.pages.person.commands.cancel>Cancel</a> </div> </div> </div> </form> <div class=content-sidebar> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.person.create_card.title' & t} </h5> <p t=[html]main.testperson.pages.person.create_card.info>Create new person</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: person-activation-create;\\\">${'main.testperson.pages.person.create_card.create' & t}</a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonObservationCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.person_observation_activation.create_card.title' & t} </h5> <p t=[html]main.testperson.pages.person_observation_activation.create_card.info>Create new activation by observation</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: observation-child-router; params.bind: {personId:'create'}\\\" t=main.testperson.pages.person_observation_activation.create_card.create>Activation by Observation</a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonHomologationCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.homologation_activation.title' & t} </h5> <p t=[html]main.testperson.pages.homologation_activation.tab_basic>Create new activation by homologation</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: homologation-child-router; params.bind: {personId:'create'}\\\" t=main.testperson.pages.homologation_activation.title>Activation by homologation</a> </div> </div> </div> </div> </div> </div> </template> \";","import { PersonService } from 'main/test/services/people/person-service';\nimport config from 'config.js';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig, NavigationInstruction } from \"aurelia-router\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { BulkActivationService } from \"../../services/people/bulk-activation-service\";\nimport { BulkActivation } from 'models/test-person/bulkActivation';\nimport { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { PersonLoginInfoModal } from '../people/person-login-info-modal';\nimport { DeleteConfirmation } from 'main/components/delete-confirmation';\nimport FileSaver from 'file-saver';\n\n@autoinject()\nexport class BulkActivationItemList {\n\n  private logger: Logger;\n  private params: any = {};\n  private isObservation: boolean = false;\n\n  public companyId: number;\n\n  public model: BulkActivation = new BulkActivation;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private isEmailActivation: boolean = false;\n\n  private isExporting: boolean = false;\n\n  private micrositeUrl: string = \"\";\n\n  private micrositeUrlElement: HTMLElement;\n\n  private csvExampleUrl: string = \"\";\n  private xlsxExampleUrl: string = \"\";\n\n  private addPeopleFiledata: FileList;\n  private addPeopleFileName: string = \"\";\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.bulkActivationService.listItemsById(this.model.id, this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  constructor(\n    private router: Router,\n    private personService: PersonService,\n    private bulkActivationService: BulkActivationService,\n    private notification: Notification,\n    private dialogService: DialogService\n  ) {\n\n    this.logger = LogManager.getLogger(\"BulkActivationItemList\");\n\n    let micrositeUrl = config.URLS_MICROSITE;\n    this.micrositeUrl = micrositeUrl;\n\n    let backendUrl = config.URLS_BACKEND;\n    this.csvExampleUrl = backendUrl + \"/person-content/bulk-activation-example.csv\";\n    this.xlsxExampleUrl = backendUrl + \"/person-content/bulk-activation-example.xlsx\";\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig, navigationInstruction: NavigationInstruction): Promise<any> {\n    this.params = params;\n\n    // isObservation comes from the parent instruction of the current navigation; the parent's currentInstruction is null on deep-link (new tab/F5)\n    const parentInstruction = navigationInstruction && navigationInstruction.parentInstruction;\n    const parentSettings = (parentInstruction && parentInstruction.config && parentInstruction.config.settings) || {};\n    this.isObservation = parentSettings.isObservation || false;\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n      this.companyId = +this.params.companyId;\n\n      this.bulkActivationService.client.currentCompanyId = this.companyId;\n\n      if (!isNaN(this.params.bulkActivationId)) {\n        this.model = await this.bulkActivationService.getById(+this.params.bulkActivationId);\n        this.isEmailActivation = this.model.personMode != 1;\n\n        return await this.databind();\n      }\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  public async exportItems(): Promise<void> {\n    return await this.bulkActivationService.exportItemsById(this.model.id, this.model.name)\n      .then(() => null)\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private focus() {\n    if (this.micrositeUrlElement) {\n      this.micrositeUrlElement.focus();\n    }\n  }\n\n  private async viewLoginInfo(personId: number): Promise<any> {\n\n    return await this.dialogService.open({\n      viewModel: PersonLoginInfoModal,\n      model: personId\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.sendIndividualReminder(personId);\n      }\n    });\n  }\n\n  private async sendIndividualReminder(id: number): Promise<boolean> {\n    try {\n      await this.personService.sendReminder(id);\n      this.notification.success(\"main.test.pages.person.send_reminder\");\n      return true;\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private isSendingReminder: boolean = false;\n\n  private async sendReminder(): Promise<void> {\n    this.isSendingReminder = true;\n    try {\n      await this.bulkActivationService.sendReminder(this.model.id);\n      this.notification.success(\"main.test.pages.person.send_reminder\");\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n    finally {\n      this.isSendingReminder = false;\n    }\n  }\n\n  private async createLogFile(id: number): Promise<any> {\n    this.isExporting = true;\n    try {\n      const result = await this.bulkActivationService.createLogFile(id);\n      if (result && result.queued) {\n        this.notification.info(\"main.person.pages.bulk_activation_items.export_queued\", { minutes: result.estimatedMinutes });\n      }\n      else {\n        this.saveBase64File(result.content, result.fileName, result.contentType);\n        this.notification.success(\"notifications.item_added\");\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n    finally {\n      this.isExporting = false;\n    }\n  }\n\n  private saveBase64File(base64: string, fileName: string, contentType: string): void {\n    const byteCharacters = atob(base64);\n    const byteNumbers = new Array(byteCharacters.length);\n    for (let i = 0; i < byteCharacters.length; i++) {\n      byteNumbers[i] = byteCharacters.charCodeAt(i);\n    }\n    const blob = new Blob([new Uint8Array(byteNumbers)], { type: contentType || \"text/csv\" });\n    FileSaver.saveAs(blob, fileName);\n  }\n\n  private setAddPeopleFile(event: Event): void {\n    let input = event.target as HTMLInputElement;\n    if (input.files && input.files.length > 0) {\n      this.addPeopleFileName = input.files[0].name;\n    }\n  }\n\n  private async addPeople(): Promise<any> {\n    if (!this.addPeopleFiledata || this.addPeopleFiledata.length === 0) {\n      this.notification.warning(\"main.test.bulk_activation.errors.bad_file_format\");\n      return;\n    }\n\n    try {\n      let addModel = new BulkActivation();\n      addModel.filedata = this.addPeopleFiledata;\n      addModel.fileName = this.addPeopleFileName;\n\n      await this.bulkActivationService.addPeople(this.model.id, addModel);\n      this.notification.success(\"notifications.item_added\");\n      this.addPeopleFiledata = null;\n      this.addPeopleFileName = \"\";\n      return await this.databind();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async removePerson(itemId: number, name: string): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    })\n      .whenClosed(async (response: DialogCloseResult) => {\n        if (!response.wasCancelled) {\n          return await this.bulkActivationService.removePerson(this.model.id, itemId)\n            .then(() => {\n              this.notification.success(\"notifications.item_deleted\");\n              this.databind();\n            })\n            .catch(error => {\n              this.notification.error(error);\n            });\n        }\n      });\n  }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { I18N } from \"aurelia-i18n\";\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\n\n@autoinject\nexport class BulkActivationItemListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n\n    this.logger = LogManager.getLogger(\"BulkActivationItemListChildRouter\");\n  }\n\n  public configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./bulk-activation-item-list\"),\n        nav: true,        \n        name: \"bulk-activation-item-list\",\n        title: this.i18n.tr(\"main.test.pages.bulk_activations.bulk_activation\"),\n      },\n      // {\n      //   route: \"evaluator/:evaluator_id\",\n      //   moduleId: PLATFORM.moduleName(\"./organization-evaluator-edit\"),\n      //   name: \"organization-evaluator-edit\",\n      // },\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=../../../../models/test-person/activationQuestionaryStatusViewEngineHooks></require> <h2> ${'main.person.pages.bulk_activation_items.title' & t} / ${model.name} </h2> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> <div class=\\\"col-md-4 col-12 text-right\\\"> <button class=\\\"btn btn-outline-primary btn-round\\\" click.delegate=sendReminder() disabled.bind=isSendingReminder if.bind=\\\"isEmailActivation && !isObservation\\\"> <i class=material-icons>email</i> ${'main.person.pages.bulk_activation_items.send_reminder' & t} </button> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-4 col-12 text-truncate\\\"> <a title=\\\"${item.firstName} ${item.lastName}\\\" route-href=\\\"route: person-child-router; params.bind: {personId:item.personId}\\\"> ${item.firstName} ${item.lastName} </a> </div> <div class=\\\"col-md-2 col-12 text-truncate\\\"> <label class=d-block> <small class=text-muted>${'main.person.pages.bulk_activation_items.email' & t}</small> </label> <span title=${item.email}>${item.email}</span> </div> <div class=\\\"col-md-2 col-12 text-truncate\\\"> <label class=d-block> <small class=text-muted>${'main.person.pages.bulk_activation_items.username' & t}</small> </label> <span title=${item.userName}>${item.userName}</span> </div> <div class=\\\"col-md-1 col-12\\\"> <label class=d-block> <small class=text-muted>${'main.person.pages.bulk_activation_items.is_loaded' & t}</small> </label> ${item.isLoaded ? 'commands.yes' : 'commands.no' & t } </div> <div class=\\\"col-md-2 col-12\\\"> <label class=d-block> <small class=text-muted>${'main.person.pages.bulk_activation_items.exist_email' & t}</small> </label> ${item.existsEmail ? 'commands.yes' : 'commands.no' & t } </div> <div class=\\\"col-md-1 col-12\\\"> <a href=# if.bind=\\\"item.isLoaded && !isObservation\\\" click.delegate=viewLoginInfo(item.personId) title.bind=\\\"'commands.link' & t\\\"> <i class=material-icons>link</i> </a> <a href=# if.bind=!isObservation click.delegate=\\\"removePerson(item.id, item.firstName + ' ' + item.lastName)\\\" title.bind=\\\"'main.person.pages.bulk_activation_items.remove_person' & t\\\"> <i class=material-icons>remove</i> </a> </div> </div> </li> </ul> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\" if.bind=!isObservation> <div class=card-body> <h5 class=card-title> ${'main.person.pages.bulk_activation_items.export_card_title' & t} </h5> <p t=[html]main.person.pages.bulk_activation_items.export_card_info>Export items</p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=createLogFile(model.id) disabled.bind=isExporting> <span if.bind=isExporting><i class=\\\"fa fa-spinner fa-spin\\\"></i></span> <span t=commands.export>Export</span> </button> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\" if.bind=!isObservation> <div class=card-body> <h5 class=card-title> ${'main.person.pages.bulk_activation_items.link_microsite' & t} </h5> <p> <input type=text class=form-control value.bind=micrositeUrl ref=micrositeUrlElement> </p> <button if.bind=micrositeUrl class=\\\"btn btn-primary btn-round\\\" ux-clipboard=${micrositeUrl} click.delegate=focus()> <i class=material-icons>file_copy</i>${'commands.copy' & t} </button> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\" if.bind=!isObservation> <div class=card-body> <h5 class=card-title> ${'main.person.pages.bulk_activation_items.add_people_card_title' & t} </h5> <p t=[html]main.person.pages.bulk_activation_items.add_people_card_info>Activate multiple people at once</p> <div class=mb-3> <i class=\\\"fa fa-file-excel-o\\\" aria-hidden=true></i> <a href=${xlsxExampleUrl}>${'main.testperson.pages.person.download_xlsx_file_text' & t}</a> </div> <div class=\\\"custom-file mb-3\\\"> <input type=file class=custom-file-input files.bind=addPeopleFiledata accept=\\\".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\\\" id=addPeopleFile change.delegate=setAddPeopleFile($event)> <label class=custom-file-label for=addPeopleFile>${ addPeopleFileName ? addPeopleFileName : 'commons.file' & t}</label> </div> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=addPeople()> ${'main.person.pages.bulk_activation_items.add_people_button' & t} </button> </div> </div> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { BulkActivationService } from \"../../services/people/bulk-activation-service\";\nimport { DialogService, DialogCloseResult } from 'aurelia-dialog';\n\n@autoinject()\nexport class BulkActivationList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n  public isObservation: boolean = false;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    let search = this.parameters.search.Query;\n    sessionStorage.setItem('bulkActivationListSearch', search == null ? '' : search);\n\n    const listMethod = this.isObservation\n      ? this.bulkActivationService.listObservation(this.parameters)\n      : this.bulkActivationService.list(this.parameters);\n\n    return await listMethod\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  constructor(\n    private router: Router,\n    private bulkActivationService: BulkActivationService,\n    private notification: Notification,\n    private dialogService: DialogService) {\n\n    this.logger = LogManager.getLogger(\"BulkActivationList\");\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.parameters.search.Query = sessionStorage.getItem('bulkActivationListSearch');\n    this.params = params;\n    this.isObservation = params.isObservation === 'true' || params.isObservation === true\n      || (routeConfig.settings && routeConfig.settings.isObservation === true);\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n      this.companyId = +this.params.companyId;\n\n      this.bulkActivationService.client.currentCompanyId = this.companyId;\n\n      return await this.databind();\n\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async sendReminder(id: number): Promise<boolean> {\n    try {\n      await this.bulkActivationService.sendReminder(id);\n      this.notification.success(\"main.test.pages.person.send_reminder\");\n      return true;\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private clearFilters() {\n    this.parameters.search.Query = this.parameters.search.StartDate = this.parameters.search.EndDate = null;\n  }\n\n  private async getPrivateMedia(id: number) {\n    try {\n      let privateUrl = await this.bulkActivationService.getMediaByBulkActivationId(id);\n      if (privateUrl != null) {\n        return this.router.navigate(privateUrl);\n      }\n    } catch (error){\n      this.notification.error(error);\n    }\n  }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { AuthorizationService } from 'aurelia-permission';\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class BulkActivationListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n\n    this.logger = LogManager.getLogger(\"BulkActivationListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./bulk-activation-list\"),\n        name: \"bulk-activations\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.bulk_activations.title\"),\n      },\n\n      {\n        route: \"create\",\n        moduleId: PLATFORM.moduleName(\"./bulk-activation-create\"),\n        name: \"bulk-activation-create\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.test.pages.bulk_activation.page_title\"),\n      },\n      \n      {\n        route: \"bulk-activation/:bulkActivationId\",\n        moduleId: PLATFORM.moduleName(\"./bulk-activation-item-list-child-router\"),\n        name: \"bulk-activation-item-list\",\n      },\n\n      {\n        route: \"bulk-downloads\",\n        moduleId: PLATFORM.moduleName(\"../bulk-download/bulk-download-list-child-router\"),\n        name: \"bulk-download-list\",\n        //nav: true,\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestPersonBulkDownloadView),\n        title: this.i18n.tr(\"main.test.pages.bulk_downloads.title\"),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestPersonBulkDownloadView]\n          },\n         // info: this.i18n.tr(\"main.admin.pages.test_core.company_competences.info\")\n        }\n      },\n\n      {\n        route: \"convert-bulkactivation/:bulkActivationId\",\n        moduleId: PLATFORM.moduleName(\"../bulk-download/bulk-activation-converted\"),\n        name: \"bulk-activation-converted\",\n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","module.exports = \"<template> <require from=../../../components/three-tags.html></require> <h2> <span if.bind=!isObservation>${'main.testperson.pages.masive_activation.page_title' & t}</span> <span if.bind=isObservation>${'main.test.pages.bulk_observation.page_title' & t}</span> </h2> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <div class=\\\"row mb-3\\\"> <div class=col-12> <p if.bind=!isObservation> ${'main.test.pages.bulk_activation.info' & t} </p> <p if.bind=isObservation> ${'main.test.pages.bulk_observation.info' & t} </p> </div> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <a class=\\\"btn btn-link collapse-header\\\" data-toggle=collapse href=#collapseMoreFilterOptions role=button aria-expanded=false aria-controls=collapseMoreFilterOptions> <i class=material-icons>chevron_right</i> ${'commons.more_filter_options' & t} </a> </div> <div class=\\\"col-md-4 col-12\\\" if.bind=\\\"parameters.search.Query || parameters.search.StartDate || parameters.search.EndDate\\\"> <button class=\\\"btn btn-link\\\" click.delegate=clearFilters()> <i class=material-icons>clear</i> ${'commons.clear_filters' & t} </button> </div> </div> <div class=collapse id=collapseMoreFilterOptions> <div class=row> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=startDate t=commons.start_date>Start_Date</label> <ux-date-picker value.bind=parameters.search.StartDate change.delegate=\\\"databind() & debounce:100\\\" id=startDate></ux-date-picker> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=endDate t=commons.end_date>Start_Date</label> <ux-date-picker value.bind=parameters.search.EndDate change.delegate=\\\"databind() & debounce:100\\\" id=endDate></ux-date-picker> </div> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <a href=# if.bind=!isObservation global-permission-show=\\\"can: TestPersonBulkView\\\" title=${item.name} route-href=\\\"route: bulk-activation-item-list; params.bind: {bulkActivationId:item.id}\\\"> ${item.name} </a> <a href=# if.bind=isObservation global-permission-show=\\\"can: TestPersonBulkView\\\" title=${item.name} route-href=\\\"route: bulk-observation-item-list; params.bind: {bulkActivationId:item.id}\\\"> ${item.name} </a> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.testperson.pages.masive_activation.list_created' & t}</small> </label> ${item.createdOn | dateTimeFormat} </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.testperson.pages.masive_activation.list_evaluator' & t}</small> </label> <span title=${item.createdByName}>${item.createdByName}</span> </div> <div class=\\\"col-md-3 col-12 minh-90 mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.testperson.pages.masive_activation.list_tags' & t}</small> </label> <three-tags tags.bind=item.tags></three-tags> </div> <div class=\\\"col-md-2 col-12 mb-2\\\"> <a href=# if.bind=item.isLoaded click.delegate=sendReminder(item.id) title=\\\"${'commands.send' & t}\\\"> <i class=material-icons>email</i> </a>  <a href=# click.delegate=getPrivateMedia(item.id) if.bind=\\\"item.logFileUrl.indexOf('no-image') < 0\\\" global-permission-show=\\\"can: TestPersonBulkView\\\" title=\\\"${'commands.view' & t}\\\"> <i class=material-icons style=font-size:x-large>cloud_download</i> </a> <a href=# if.bind=!isObservation global-permission-show=\\\"can: TestPersonBulkDownloadCreate\\\" title=\\\"${'commands.convertbulkdownload' & t}\\\" route-href=\\\"route: bulk-activation-converted; params.bind: {bulkActivationId:item.id}\\\"> <i class=material-icons>published_with_changes</i> </a> </div> </div> </li> </ul> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\" if.bind=!isObservation global-permission-show=\\\"can: TestPersonBulkCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.masive_activation.list_create_card_title' & t} </h5> <p t=[html]main.testperson.pages.masive_activation.list_create_card_info>Create new core group</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: bulk-activation-create;\\\" t=main.testperson.pages.masive_activation.list_create_card_command> New bulk activation </a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=isObservation global-permission-show=\\\"can: TestPersonObservationCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.test.pages.bulk_observation.create_card.title' & t} </h5> <p t=[html]main.test.pages.bulk_observation.create_card.info>Create new bulk observation</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: bulk-observation-create;\\\" t=main.test.pages.bulk_observation.create_card.create> New bulk observation </a> </div> </div> </div> </div> </div> </div> </template> \";","import { BulkActivationService } from 'main/test/services/people/bulk-activation-service';\nimport { Parameter } from '../../../../models/test-reports/reports/parameter';\nimport { SelectSheetModal } from '../../../test-reports/pages/reports/select-sheet-modal';\nimport { NoDiscType } from '../../../../models/questionaries/noDiscType';\nimport { QuestionaryType } from '../../../../models/questionaries/questionaryType';\nimport { Questionary } from '../../../../models/questionaries/questionary';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { Language } from \"models/localizations/language\";\nimport { ReportTemplate } from \"models/test-core/report-templates/report-template\";\nimport { ReportTemplateService } from \"../../../admin/services/test-management/report-template-service\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from \"common/store/store-service\";\nimport { Router } from \"aurelia-router\";\nimport { BulkDownloadService } from \"main/test/services/people/bulk-download-service\";\nimport { UserInfoLoadedMessage } from 'messages/userInfoLoadedMessage';\nimport { Subscription, EventAggregator } from 'aurelia-event-aggregator';\nimport { CoreLanguageService } from 'main/admin/services/localizations/core-language-service';\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { Report } from 'models/test-reports/reports/report';\nimport { BulkDownloadConfirmationModal } from './bulk-download-confirmation-modal';\nimport { ItemToQualify } from 'models/questionaries/itemToQualify';\n\n@autoinject()\nexport class BulkActivationConverted {\n\n  private logger: Logger;\n\n  public companyId: number;\n  public bulkActivationId: number;\n\n  private state: State;\n\n  private reportTemplates: ReportTemplate[];\n  private reportTemplate: ReportTemplate = new ReportTemplate();\n  private languages: Language[];\n\n  //private model: BulkDownload = new BulkDownload();\n  private validationController: ValidationController;\n\n  private subscription: Subscription;\n  private isInvalid: boolean;\n  private isDisable: boolean = false;\n  private showDisableParameter: boolean = false;\n  private report: Report = new Report();\n  private reportToPeople: Report = new Report();\n  private parPeople: Parameter; \n  constructor(\n    private router: Router,\n    private bulkDownloadService: BulkDownloadService,\n    private bulkActivationService: BulkActivationService,\n    private store: StoreService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private reportTemplateService: ReportTemplateService,\n    private languageService: CoreLanguageService,\n    protected ea: EventAggregator,\n    private dialogService: DialogService,\n  ) {\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"BulkActivationConverted\");\n\n    this.state = this.store.state;\n\n    this.subscription = this.ea.subscribe(UserInfoLoadedMessage, (message: UserInfoLoadedMessage) => this.setUserLanguage.bind(this));\n  }\n\n  public detached() {\n    this.subscription.dispose();\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n      ValidationRules\n      .ensure(\"reportTemplateId\").displayName(\"main.test_reports.pages.reports.report_template\").required()\n      .ensure(\"discType\").displayName(\"main.test_reports.pages.reports.discType.title\").required()\n      .ensure(\"zeroOrOnepositionId\").displayName(\"main.test_reports.pages.reports.parameters.ZeroOrOnePosition\").maxItems(1)\n      .ensure(\"positionId\").displayName(\"main.test_reports.pages.reports.parameters.Position\").required()\n      .ensure(\"teamId\").displayName(\"main.test_reports.pages.reports.parameters.Team\").required()\n      .ensure(\"organizationId\").displayName(\"main.test_reports.pages.reports.parameters.Organization\").required()\n      .ensure(\"positionIds\").displayName(\"main.test_reports.pages.reports.parameters.Positions\").required().minItems(1).maxItems(1000)\n      .ensure(\"compareToPositionId\").displayName(\"main.test_reports.pages.reports.parameters.ComparePosition\").required()\n      .ensure(\"compareToTeamId\").displayName(\"main.test_reports.pages.reports.parameters.CompareTeam\").required()\n      .ensure(\"compateToOrganizationId\").displayName(\"main.test_reports.pages.reports.parameters.CompareOrganization\").required()\n      .ensure(\"compareToPersonId\").displayName(\"main.test_reports.pages.reports.parameters.ComparePerson\").required()\n      .ensure(\"personId\").displayName(\"main.test_reports.pages.reports.parameters.Person\").required()\n      .ensure(\"personId\").displayName(\"main.test_reports.pages.reports.parameters.Leader\").required()\n      .ensure(\"peopleIds\").displayName(\"main.test_reports.pages.reports.parameters.People\").required().minItems(1)\n      .ensure(\"oneOrTwoPeopleIds\").displayName(\"main.test_reports.pages.reports.parameters.OneOrTwoPeople\").required().minItems(1).maxItems(2)\n      .ensure(\"twoPeopleIds\").displayName(\"main.test_reports.pages.reports.parameters.TwoPeople\").required().minItems(2)\n      .ensure(\"threePeopleIds\").displayName(\"main.test_reports.pages.reports.parameters.ThreePeople\").required().minItems(1).maxItems(3)\n      .ensure(\"observerIds\").displayName(\"main.test_reports.pages.reports.parameters.Observers\").required().minItems(1).maxItems(1000)\n      .on(this.report);\n  }\n\n  public async activate(params: any): Promise<any> {\n    this.logger.debug(\"activate\");\n\n    if (!isNaN(params.companyId)) {\n      this.companyId = +params.companyId;\n\n      //this.model.companyId = this.companyId;\n      this.report.companyId = this.companyId;\n      this.report.personId = 0;\n      \n      this.reportTemplateService.client.currentCompanyId = this.companyId;\n      this.bulkDownloadService.client.currentCompanyId = this.companyId;\n\n      this.reportTemplates = await this.getReportTemplates();\n\n      if (!isNaN(params.bulkActivationId)) {\n        this.configureValidationRules();\n        this.bulkActivationId = +params.bulkActivationId;\n        this.bulkActivationService.client.currentCompanyId = this.companyId;\n        \n        let bulkActivation = await this.bulkActivationService.getById(this.bulkActivationId);\n        \n        if (bulkActivation.reportTemplateId) {\n          this.report.reportTemplateId = bulkActivation.reportTemplateId;\n          this.changeReport();\n        }\n      }\n    \n    }\n\n  }\n\n  public setUserLanguage() {\n    this.logger.debug(\"setUserLanguage\");\n    if (this.state && this.state.userBasicInfo) {\n      let activeCulture = this.state.userBasicInfo.culture;\n      let activeLang = this.languages.find(lg => lg.culture === activeCulture);\n      if (activeLang) {\n        this.report.languageId = activeLang.id;\n      }\n    }\n  }\n\n  private async bind(): Promise<any> {\n    this.logger.debug(\"bind\");\n    try {\n      this.languages = await this.languageService.getAll();\n      this.setUserLanguage();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async getReportTemplates(): Promise<ReportTemplate[]> {     \n    let reportTemplateList = this.reportTemplateService.getAll();\n    let filteredReportTemplates = (await reportTemplateList).filter(x => x.itemToQualify === ItemToQualify.Person);\n    return filteredReportTemplates\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n    //this.model.report = this.report;\n    //this.model.peopleWithReportIds = this.reportToPeople.peopleIds\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          if (!this.report.reportTemplateId) {\n            this.notification.warning(\"main.test.pages.people.errors.reports_is_missing\");\n          }\n          else {\n            let talentsPrice = await this.bulkDownloadService.getGenerationReportCost(this.report);\n            return await this.dialogService.open({\n                  viewModel: BulkDownloadConfirmationModal,\n                  model: talentsPrice\n                }).whenClosed(async (response: DialogCloseResult) => {\n                  if (!response.wasCancelled) {\n                    return await this.save();\n                    }\n                });\n              }\n            }\n          })\n      .catch(error => {\n        this.notification.error(error);\n      });\n    }\n\n  get canSave() {\n    return !this.bulkDownloadService.client.isRequesting;\n  }\n\n  private async save(): Promise<any> {\n    this.logger.info(\"submit\");\n    try {\n      await this.bulkDownloadService.convertBulkActivation(this.bulkActivationId, this.report);\n\n      this.notification.success(\"notifications.item_added\");\n\n      //view new bulkdownload\n      return await this.router.navigateToRoute(\"bulk-download-list\");\n    }\n    catch (error) {\n      this.notification.error(error);\n    };\n  }\n\n  public async changeReport(): Promise<any> {\n\n    this.logger.debug(\"changeReport\");\n\n    try {\n      this.reportTemplate = await this.reportTemplateService.getById(this.report.reportTemplateId);\n\n      // add language\n      this.report.languageId = this.reportTemplate.languageId;\n\n      //let personActivationQuestionaries: ActivationQuestionary[] = await this.activationQuestionaryService.getAll(this.model.personId);\n\n      let questionaries: Questionary[] = [];\n      Object.assign(questionaries, this.reportTemplate.questionaries);\n\n      questionaries.forEach((item, index) => {\n\n        //curriculum\n        if (item.questionaryType === QuestionaryType.NoDisc && item.noDiscType === NoDiscType.Curriculum) {\n          let qIndex = this.reportTemplate.questionaries.findIndex(x => x.id === item.id);\n          this.reportTemplate.questionaries.splice(qIndex, 1);\n          // return;\n        }\n\n        // delete all questionaries selector when only have 1 or none\n        //let questionaryActivations = personActivationQuestionaries.filter(x => x.questionaryId === item.id\n        //  && x.activationQuestionaryStatus === ActivationQuestionaryStatus.Finalized);\n\n        // if (questionaryActivations.length < 2) {\n        //   let qIndex = this.reportTemplate.questionaries.findIndex(x => x.id === item.id);\n        //   this.reportTemplate.questionaries.splice(qIndex, 1);\n        // }\n      });\n\n      this.report.sheets = this.reportTemplate.sheets;\n      this.setParameters(this.report.sheets.map(x => x.id));\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public async sheetSelect(): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: SelectSheetModal, \n      model: this.report\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        this.setParameters(this.report.sheetIds);\n      } else {\n        this.report.sheetIds = [];\n      }\n    });\n  }\n\n  private setParameters(sheetIds: number[]) {\n    // reset variable\n    this.report.parameters = [];\n\n    this.report.sheets.forEach(sheet => {\n      const index = sheetIds.findIndex(x => x == sheet.id);\n      if (index !== -1) {\n        for (let par of sheet.parameters) {\n          const index1 = this.report.parameters.findIndex(x => x === par.parameter);\n          if (index1 === -1) {\n            this.report.parameters.push(par.parameter);\n          }\n        }\n      }\n    });\n\n    this.logger.debug(\"Parameters: \", this.report.parameters);\n    }\n\n    public async showParameters(): Promise<any> {\n      return await this.validationController.validate()\n        .then(async (result: ControllerValidateResult) => {\n          if (result.valid)\n            this.isDisable = true;\n        });  \n    }\n\n    public async hideParameters(): Promise<any> {\n      this.isDisable = false;\n    }\n\n }\n\n","module.exports = \"<template> <require from=../../../test-reports/components/report-parameter></require> <require from=../people-competence/competence-activation-selector></require> <h2> ${'main.test.pages.bulk_download.page_title' & t} </h2> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label for=reportTemplateId>${'main.test_reports.pages.reports.report_template' & t}</label> <select class=form-control value.bind=\\\"report.reportTemplateId & validate\\\" id=reportTemplateId disabled.bind=isDisable change.delegate=changeReport()> <option value=\\\"\\\" selected=selected t=forms.select_option>select an item</option> <option repeat.for=\\\"option of reportTemplates\\\" model.bind=option.id> <span>${option.name & t}</span> </option> </select> <button if.bind=!isDisable class=\\\"btn btn-link\\\" show.bind=report.reportTemplateId click.delegate=sheetSelect() t=main.test-reports.pages.reports.view_sheets>view-sheet</button> </div> </div> </div> <hr> <div if.bind=!isDisable class=\\\"row mb-3\\\"> <div class=col-12> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=showParameters() disabled.bind=isDisable>${'commands.select' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: reports;params.bind:params\\\" t=commands.cancel>Cancel</a> <button show.bind=isDisable class=\\\"btn btn-link\\\" title.bind=\\\"'commands.clear' & t\\\" click.delegate=hideParameters()> <i class=material-icons>clear</i> </button> </div> </div> <report-parameter is-disable.bind=isDisable model.bind=report report-template.bind=report.reportTemplate is-report-activation.bind=false></report-parameter> <div class=clearfix></div> <div class=\\\"row mb-3\\\"> <div class=col> <p>&nbsp;</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mt-3\\\" if.bind=isDisable> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestPersonBulkCreate\\\" click.delegate=submit()>${'commands.generate' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: bulk-activations;\\\" t=main.testperson.pages.person.commands.cancel>Cancel</a> </div> </div> </div> </form> <div class=content-sidebar if.bind=isDisable> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit() disabled.bind=!canSave>${'commands.generate' & t} </button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: bulk-activations;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </div> </div> </div> </div> </div> </template> \";","import { DialogController } from \"aurelia-dialog\";\nimport { autoinject } from \"aurelia-framework\";\n\n@autoinject()\nexport class BulkDownloadConfirmationModal {\n  private talentsPrice: number;\n  constructor(private dialogController: DialogController) {\n  }\n  public async activate(talentsPrice: number) {   \n    this.talentsPrice = talentsPrice;     \n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2> ${'main.testperson.pages.persons_bulkdownload.title' & t} </h2> <p t=main.test.pages.people.send_person_bulkdownload_talents_confirmation t-params.bind=\\\"{talentsPrice: talentsPrice}\\\"></p> </ux-dialog-body> <ux-dialog-footer> <button attach-focus=true class=\\\"btn btn-primary btn-round\\\" click.delegate=dialogController.ok() t=commands.accept>Accept</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel() t=commands.cancel>Cancel</button> </ux-dialog-footer> </ux-dialog> </template> \";","import { Parameter } from '../../../../models/test-reports/reports/parameter';\nimport { SelectSheetModal } from '../../../test-reports/pages/reports/select-sheet-modal';\nimport { NoDiscType } from '../../../../models/questionaries/noDiscType';\nimport { QuestionaryType } from '../../../../models/questionaries/questionaryType';\nimport { Questionary } from '../../../../models/questionaries/questionary';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { Language } from \"models/localizations/language\";\nimport { ReportTemplate } from \"models/test-core/report-templates/report-template\";\nimport { ReportTemplateService } from \"../../../admin/services/test-management/report-template-service\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from \"common/store/store-service\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { BulkDownload } from '../../../../models/test-person/bulkDownload';\nimport { BulkDownloadService } from \"main/test/services/people/bulk-download-service\";\nimport { UserInfoLoadedMessage } from 'messages/userInfoLoadedMessage';\nimport { Subscription, EventAggregator } from 'aurelia-event-aggregator';\nimport { CoreLanguageService } from 'main/admin/services/localizations/core-language-service';\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { Report } from 'models/test-reports/reports/report';\nimport { BulkDownloadConfirmationModal } from './bulk-download-confirmation-modal';\nimport { ItemToQualify } from 'models/questionaries/itemToQualify';\n\n@autoinject()\nexport class BulkDownloadCreate {\n\n  private logger: Logger;\n\n  public companyId: number;\n\n  private state: State;\n\n  private reportTemplates: ReportTemplate[];\n  private reportTemplate: ReportTemplate = new ReportTemplate();\n  private languages: Language[];\n\n  private model: BulkDownload = new BulkDownload();\n  private validationController: ValidationController;\n\n  private selectedQuestionaryIds: number[] = [];\n\n  private subscription: Subscription;\n  private isInvalid: boolean;\n  private isDisable: boolean = false;\n  private showDisableParameter: boolean = false;\n  private report: Report = new Report();\n  private reportToPeople: Report = new Report();\n  private parPeople: Parameter; \n  constructor(\n    private router: Router,\n    private bulkDownloadService: BulkDownloadService,\n    private store: StoreService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private reportTemplateService: ReportTemplateService,\n    private languageService: CoreLanguageService,\n    protected ea: EventAggregator,\n    private dialogService: DialogService,\n  ) {\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"BulkDownloadModal\");\n\n    this.state = this.store.state;\n\n    this.subscription = this.ea.subscribe(UserInfoLoadedMessage, (message: UserInfoLoadedMessage) => this.setUserLanguage.bind(this));\n  }\n\n  public detached() {\n    this.subscription.dispose();\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.testperson.pages.masive_download.list_name\").required()      \n      .on(this.model);\n    \n    ValidationRules\n      .ensure(\"peopleIds\").displayName(\"main.test_reports.pages.reports.parameters.peopleWithReport\").required().minItems(1).maxItems(100)\n      .on(this.reportToPeople);\n\n      ValidationRules\n      .ensure(\"reportTemplateId\").displayName(\"main.test_reports.pages.reports.report_template\").required()\n      .ensure(\"discType\").displayName(\"main.test_reports.pages.reports.discType.title\").required()\n      .ensure(\"zeroOrOnepositionId\").displayName(\"main.test_reports.pages.reports.parameters.ZeroOrOnePosition\").maxItems(1)\n      .ensure(\"positionId\").displayName(\"main.test_reports.pages.reports.parameters.Position\").required()\n      .ensure(\"teamId\").displayName(\"main.test_reports.pages.reports.parameters.Team\").required()\n      .ensure(\"organizationId\").displayName(\"main.test_reports.pages.reports.parameters.Organization\").required()\n      .ensure(\"positionIds\").displayName(\"main.test_reports.pages.reports.parameters.Positions\").required().minItems(1).maxItems(1000)\n      .ensure(\"compareToPositionId\").displayName(\"main.test_reports.pages.reports.parameters.ComparePosition\").required()\n      .ensure(\"compareToTeamId\").displayName(\"main.test_reports.pages.reports.parameters.CompareTeam\").required()\n      .ensure(\"compateToOrganizationId\").displayName(\"main.test_reports.pages.reports.parameters.CompareOrganization\").required()\n      .ensure(\"compareToPersonId\").displayName(\"main.test_reports.pages.reports.parameters.ComparePerson\").required()\n      .ensure(\"personId\").displayName(\"main.test_reports.pages.reports.parameters.Person\").required()\n      .ensure(\"personId\").displayName(\"main.test_reports.pages.reports.parameters.Leader\").required()\n      .ensure(\"peopleIds\").displayName(\"main.test_reports.pages.reports.parameters.People\").required().minItems(1)\n      .ensure(\"oneOrTwoPeopleIds\").displayName(\"main.test_reports.pages.reports.parameters.OneOrTwoPeople\").required().minItems(1).maxItems(2)\n      .ensure(\"twoPeopleIds\").displayName(\"main.test_reports.pages.reports.parameters.TwoPeople\").required().minItems(2)\n      .ensure(\"threePeopleIds\").displayName(\"main.test_reports.pages.reports.parameters.ThreePeople\").required().minItems(1).maxItems(3)\n      .ensure(\"observerIds\").displayName(\"main.test_reports.pages.reports.parameters.Observers\").required().minItems(1).maxItems(1000)\n      .on(this.report);\n  }\n\n  public async activate(params: any): Promise<any> {\n    this.logger.debug(\"activate\");\n\n    if (!isNaN(params.companyId)) {\n      this.companyId = +params.companyId;\n\n      this.model.companyId = this.companyId;\n      this.report.companyId = this.companyId;\n      this.report.personId = 0;\n      this.parPeople = Parameter.People;\n      this.reportToPeople.companyId = this.companyId;      \n\n      this.reportTemplateService.client.currentCompanyId = this.companyId;\n\n      this.reportTemplates = await this.getReportTemplates();\n\n      this.configureValidationRules();\n    }\n\n  }\n\n  public setUserLanguage() {\n    this.logger.debug(\"setUserLanguage\");\n    if (this.state && this.state.userBasicInfo) {\n      let activeCulture = this.state.userBasicInfo.culture;\n      let activeLang = this.languages.find(lg => lg.culture === activeCulture);\n      if (activeLang) {\n        this.model.languageId = activeLang.id;\n      }\n    }\n  }\n\n  private async bind(): Promise<any> {\n    this.logger.debug(\"bind\");\n    try {\n      this.languages = await this.languageService.getAll();\n      this.setUserLanguage();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async getReportTemplates(): Promise<ReportTemplate[]> {     \n    let reportTemplateList = this.reportTemplateService.getAll();\n    let filteredReportTemplates = (await reportTemplateList).filter(x => x.itemToQualify === ItemToQualify.Person);\n    return filteredReportTemplates\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n    this.model.report = this.report;\n    this.model.peopleWithReportIds = this.reportToPeople.peopleIds\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          if (!this.model.report.reportTemplateId) {\n            this.notification.warning(\"main.test.pages.people.errors.reports_is_missing\");\n          }\n          else {\n            let talentsPrice = await this.bulkDownloadService.getGenerationReportCost(this.report);\n            return await this.dialogService.open({\n                  viewModel: BulkDownloadConfirmationModal,\n                  model: talentsPrice\n                }).whenClosed(async (response: DialogCloseResult) => {\n                  if (!response.wasCancelled) {\n                    return await this.save();\n                    }\n                });\n              }\n            }\n          })\n      .catch(error => {\n        this.notification.error(error);\n      });\n    }\n\n  get canSave() {\n    return !this.bulkDownloadService.client.isRequesting;\n  }\n\n  private async save(): Promise<any> {\n    this.logger.info(\"submit\");\n    try {\n      this.model = await this.bulkDownloadService.create(this.model);\n\n      this.notification.success(\"notifications.item_added\");\n\n      //view new bulkdownload\n      return await this.router.navigateToRoute(\"bulk-downloads\");\n    }\n    catch (error) {\n      this.notification.error(error);\n    };\n  }\n\n  public async changeReport(): Promise<any> {\n\n    this.logger.debug(\"changeReport\");\n\n    try {\n      this.reportTemplate = await this.reportTemplateService.getById(this.report.reportTemplateId);\n\n      // add language\n      this.report.languageId = this.reportTemplate.languageId;\n\n      //let personActivationQuestionaries: ActivationQuestionary[] = await this.activationQuestionaryService.getAll(this.model.personId);\n\n      let questionaries: Questionary[] = [];\n      Object.assign(questionaries, this.reportTemplate.questionaries);\n\n      questionaries.forEach((item, index) => {\n\n        //curriculum\n        if (item.questionaryType === QuestionaryType.NoDisc && item.noDiscType === NoDiscType.Curriculum) {\n          let qIndex = this.reportTemplate.questionaries.findIndex(x => x.id === item.id);\n          this.reportTemplate.questionaries.splice(qIndex, 1);\n          // return;\n        }\n\n        // delete all questionaries selector when only have 1 or none\n        //let questionaryActivations = personActivationQuestionaries.filter(x => x.questionaryId === item.id\n        //  && x.activationQuestionaryStatus === ActivationQuestionaryStatus.Finalized);\n\n        // if (questionaryActivations.length < 2) {\n        //   let qIndex = this.reportTemplate.questionaries.findIndex(x => x.id === item.id);\n        //   this.reportTemplate.questionaries.splice(qIndex, 1);\n        // }\n      });\n\n      this.report.sheets = this.reportTemplate.sheets;\n      this.setParameters(this.report.sheets.map(x => x.id));\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public async sheetSelect(): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: SelectSheetModal, \n      model: this.report\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        this.setParameters(this.report.sheetIds);\n      } else {\n        this.report.sheetIds = [];\n      }\n    });\n  }\n\n  private setParameters(sheetIds: number[]) {\n    // reset variable\n    this.report.parameters = [];\n\n    this.report.sheets.forEach(sheet => {\n      const index = sheetIds.findIndex(x => x == sheet.id);\n      if (index !== -1) {\n        for (let par of sheet.parameters) {\n          const index1 = this.report.parameters.findIndex(x => x === par.parameter);\n          if (index1 === -1) {\n            this.report.parameters.push(par.parameter);\n          }\n        }\n      }\n    });\n\n    this.logger.debug(\"Parameters: \", this.report.parameters);\n    }\n\n    public async showParameters(): Promise<any> {\n      return await this.validationController.validate()\n        .then(async (result: ControllerValidateResult) => {\n          if (result.valid)\n            this.isDisable = true;\n        });  \n    }\n\n    public async hideParameters(): Promise<any> {\n      this.isDisable = false;\n    }\n\n }\n\n","module.exports = \"<template> <require from=../../../test-reports/components/report-parameter></require> <require from=../../../components/select-people-list></require> <require from=../people-competence/competence-activation-selector></require> <h2> ${'main.test.pages.bulk_download.page_title' & t} </h2> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <div class=row> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label for=model.name>${'main.testperson.pages.masive_download.list_name' & t}</label> <input type=text class=form-control id=name t=[placeholder]main.testperson.pages.masive_download.list_name value.bind=\\\"model.name & validate\\\"> </div> </div> </div> <div class=row> <div class=col-12> <label for=model.tags>${'main.testperson.pages.person.masive_download.tags' & t}</label> <company-tags-input value.bind=model.tags /> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> <a class=\\\"btn btn-link collapse-header\\\" data-toggle=collapse href=#collapseAdvanceOptions role=button aria-expanded=true aria-controls=collapseAdvanceOptions> <i class=material-icons>chevron_right</i> ${'main.testperson.pages.person.toggle_options' & t} </a> </p> <div class=collapse id=collapseAdvanceOptions> <div class=row> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"card card-body\\\"> <h3> ${'main.test_reports.pages.reports.parameters.peopleWithReport' & t} </h3> <select-people-list report.bind=reportToPeople parameter-current.bind=parPeople selected-amount=1000 id=peopleReportIdsSelector value.bind=\\\"reportToPeople.peopleIds & validate\\\"></select-people-list> </div> </div> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label for=reportTemplateId>${'main.test_reports.pages.reports.report_template' & t}</label> <select class=form-control value.bind=\\\"report.reportTemplateId & validate\\\" id=reportTemplateId disabled.bind=isDisable change.delegate=changeReport()> <option value=\\\"\\\" selected=selected t=forms.select_option>select an item</option> <option repeat.for=\\\"option of reportTemplates\\\" model.bind=option.id> <span>${option.name & t}</span> </option> </select> <button if.bind=!isDisable class=\\\"btn btn-link\\\" show.bind=report.reportTemplateId click.delegate=sheetSelect() t=main.test-reports.pages.reports.view_sheets>view-sheet</button> </div> </div> </div> <hr> <div if.bind=!isDisable class=\\\"row mb-3\\\"> <div class=col-12> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=showParameters() disabled.bind=isDisable>${'commands.select' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: reports;params.bind:params\\\" t=commands.cancel>Cancel</a> <button show.bind=isDisable class=\\\"btn btn-link\\\" title.bind=\\\"'commands.clear' & t\\\" click.delegate=hideParameters()> <i class=material-icons>clear</i> </button> </div> </div> <report-parameter is-disable.bind=isDisable model.bind=report report-template.bind=report.reportTemplate is-report-activation.bind=false></report-parameter> <div class=clearfix></div> <div class=\\\"row mb-3\\\"> <div class=col> <p>&nbsp;</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mt-3\\\" if.bind=isDisable> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestPersonBulkCreate\\\" click.delegate=submit()>${'commands.generate' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: bulk-downloads;\\\" t=main.testperson.pages.person.commands.cancel>Cancel</a> </div> </div> </div> </form> <div class=content-sidebar if.bind=isDisable> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit() disabled.bind=!canSave>${'commands.generate' & t} </button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: bulk-downloads;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </div> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { BulkDownloadService } from \"../../services/people/bulk-download-service\";\nimport { DialogService, DialogCloseResult } from 'aurelia-dialog';\n\n@autoinject()\nexport class BulkDownloadList {\n\n  private logger: Logger;\n  private params: any = {};\n  public companyId: number;\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    let search = this.parameters.search.Query;\n    sessionStorage.setItem('bulkDownloadListSearch', search == null ? '' : search);\n\n    return await this.bulkDownloadService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  constructor(\n    private router: Router,\n    private bulkDownloadService: BulkDownloadService,\n    private notification: Notification,\n    private dialogService: DialogService) {\n\n    this.logger = LogManager.getLogger(\"BulkDownloadList\");\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.parameters.search.Query = sessionStorage.getItem('bulkDownloadListSearch');\n    this.params = params;\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n      this.companyId = +this.params.companyId;\n      this.bulkDownloadService.client.currentCompanyId = this.companyId;\n\n      return await this.databind();\n\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private clearFilters() {\n    this.parameters.search.Query = this.parameters.search.StartDate = this.parameters.search.EndDate = null;\n  }\n\n  private async regenerateBulkDownload(id:number): Promise<any> {\n    this.logger.info(\"Re-generateBulkDownload\");\n    try {\n      await this.bulkDownloadService.regenerateBulkDownload(id);\n\n      this.notification.success(\"notifications.item_edited\");\n      return await this.databind();\n    }\n    catch (error) {\n      this.notification.error(error);\n    };\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { AuthorizationService } from 'aurelia-permission';\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class BulkDownloadListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n\n    this.logger = LogManager.getLogger(\"BulkDownloadListChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./bulk-download-list\"),\n        name: \"bulk-downloads\",\n        //nav: true,\n        //title: this.i18n.tr(\"main.test.pages.bulk_downloads.title\"),\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestPersonBulkDownloadView),\n        settings: {\n          permission: {\n            only: [PredefinedPermissions.TestPersonBulkDownloadView]\n          },\n         // info: this.i18n.tr(\"main.admin.pages.test_core.company_competences.info\")\n        }\n      },\n\n      {\n        route: \"create\",\n        moduleId: PLATFORM.moduleName(\"./bulk-download-create\"),\n        name: \"bulk-download-create\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.test.pages.bulk_download.page_title\"),\n      },\n      \n      {\n        route: \"convert-bulkactivation/:bulkActivationId\",\n        moduleId: PLATFORM.moduleName(\"./bulk-activation-converted\"),\n        name: \"convert-bulkactivation\",\n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=../../../components/three-tags.html></require> <h2> ${'main.testperson.pages.masive_download.page_title' & t} </h2> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.test.pages.bulk_download.info' & t} </p> </div> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <a class=\\\"btn btn-link collapse-header\\\" data-toggle=collapse href=#collapseMoreFilterOptions role=button aria-expanded=false aria-controls=collapseMoreFilterOptions> <i class=material-icons>chevron_right</i> ${'commons.more_filter_options' & t} </a> </div> <div class=\\\"col-md-4 col-12\\\" if.bind=\\\"parameters.search.Query || parameters.search.StartDate || parameters.search.EndDate\\\"> <button class=\\\"btn btn-link\\\" click.delegate=clearFilters()> <i class=material-icons>clear</i> ${'commons.clear_filters' & t} </button> </div> </div> <div class=collapse id=collapseMoreFilterOptions> <div class=row> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=startDate t=commons.start_date>Start_Date</label> <ux-date-picker value.bind=parameters.search.StartDate change.delegate=\\\"databind() & debounce:100\\\" id=startDate></ux-date-picker> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=endDate t=commons.end_date>Start_Date</label> <ux-date-picker value.bind=parameters.search.EndDate change.delegate=\\\"databind() & debounce:100\\\" id=endDate></ux-date-picker> </div> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <span title=${item.name}>${item.name}</span> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.testperson.pages.masive_download.list_created' & t}</small> </label> ${item.createdOn | dateTimeFormat} </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.testperson.pages.masive_download.list_evaluator' & t}</small> </label> <span title=${item.createdByName}>${item.createdByName}</span> </div> <div class=\\\"col-md-3 col-12 minh-90 mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.testperson.pages.masive_download.list_tags' & t}</small> </label> <three-tags tags.bind=item.tags></three-tags> </div> <div class=\\\"col-md-2 col-12 mb-2\\\"> <span title=\\\"${'commands.download_not_available' & t}\\\" if.bind=item.hasExpired> <img class=mb-3 src=\" + require(\"../../../../../assets/images/download-not-available.svg\") + \" width=19 height=19 alt=download_not_available /> </span> <a href.bind=item.logFileUrl if.bind=\\\"item.logFileUrl.indexOf('no-image') < 0 && !item.hasExpired\\\" global-permission-show=\\\"can: TestPersonBulkDownloadView\\\" title=\\\"${'commands.view' & t}\\\"> <i class=material-icons>cloud_download</i> </a> <a href=\\\"\\\" if.bind=item.isLoaded global-permission-show=\\\"can: TestPersonBulkResultsExportUpdate\\\" click.delegate=regenerateBulkDownload(item.id) title=\\\"${'commands.regenerate' & t}\\\"> <i class=material-icons>assessment</i> </a> </div> </div> </li> </ul> </div> </div> </div> <div class=content-sidebar global-permission-show=\\\"can: TestPersonBulkDownloadCreate\\\"> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.masive_download.list_create_card_title' & t} </h5> <p t=[html]main.testperson.pages.masive_download.list_create_card_info>Create new bulk download</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: bulk-download-create;\\\" t=main.testperson.pages.masive_download.list_create_card_command> New bulk download </a> </div> </div> </div> </div> </div> </div> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { AuthorizationService } from 'aurelia-permission';\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class BulkObservationChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n\n    this.logger = LogManager.getLogger(\"BulkObservationChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"../bulk-activation/bulk-activation-list\"),\n        name: \"bulk-observations\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.bulk_observation.page_title\"),\n        settings: {\n          isObservation: true\n        }\n      },\n\n      {\n        route: \"create\",\n        moduleId: PLATFORM.moduleName(\"./bulk-observation-create\"),\n        name: \"bulk-observation-create\",\n      },\n\n      {\n        route: \"bulk-observation/:bulkActivationId\",\n        moduleId: PLATFORM.moduleName(\"../bulk-activation/bulk-activation-item-list-child-router\"),\n        name: \"bulk-observation-item-list\",\n        settings: {\n          isObservation: true\n        }\n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","import config from 'config.js';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { Language } from \"models/localizations/language\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from \"common/store/store-service\";\nimport { Router } from \"aurelia-router\";\nimport { BulkActivation } from '../../../../models/test-person/bulkActivation';\nimport { FileAcceptValidator } from \"common/utils/file-accept-validator\";\nimport { BulkActivationService } from \"main/test/services/people/bulk-activation-service\";\nimport { UserInfoLoadedMessage } from 'messages/userInfoLoadedMessage';\nimport { Subscription, EventAggregator } from 'aurelia-event-aggregator';\nimport { CoreLanguageService } from 'main/admin/services/localizations/core-language-service';\nimport { Questionary } from 'models/questionaries/questionary';\nimport { QuestionaryType } from 'models/questionaries/questionaryType';\nimport { ItemToQualify } from 'models/questionaries/itemToQualify';\nimport { CompanyQuestionaryService } from 'main/admin/services/test-management/company-questionary-service';\n\n@autoinject()\nexport class BulkObservationCreate {\n\n  private logger: Logger;\n  public companyId: number;\n  private state: State;\n  private languages: Language[];\n  private observationQuestionaries: Questionary[] = [];\n  private model: BulkActivation = new BulkActivation();\n  private validationController: ValidationController;\n  private xlsxExampleUrl: string = \"\";\n  private subscription: Subscription;\n\n  constructor(\n    private router: Router,\n    private bulkActivationService: BulkActivationService,\n    private store: StoreService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private languageService: CoreLanguageService,\n    private companyQuestionaryService: CompanyQuestionaryService,\n    protected ea: EventAggregator\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n    this.logger = LogManager.getLogger(\"BulkObservationCreate\");\n    this.state = this.store.state;\n    let backendUrl = config.URLS_BACKEND;\n    this.xlsxExampleUrl = backendUrl + \"/person-content/bulk-activation-example.xlsx\";\n    this.subscription = this.ea.subscribe(UserInfoLoadedMessage, (message: UserInfoLoadedMessage) => this.setUserLanguage.bind(this));\n  }\n\n  public detached() {\n    this.subscription.dispose();\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.testperson.pages.masive_activation.list_name\").required()\n      .ensure(\"fileName\").displayName(\"main.testperson.pages.masive_activation.field_file\").required()\n      .on(this.model);\n  }\n\n  public async activate(params: any): Promise<any> {\n    this.logger.debug(\"activate\");\n\n    if (!isNaN(params.companyId)) {\n      this.companyId = +params.companyId;\n      this.model.companyId = this.companyId;\n      this.companyQuestionaryService.client.currentCompanyId = this.companyId;\n      const questionaries = await this.getQuestionaries();\n\n      this.observationQuestionaries = questionaries.filter(\n        itm => itm.questionaryType != QuestionaryType.Competences && itm.itemToQualify === ItemToQualify.Observed\n      );\n\n      this.model.activationType = undefined;\n      this.model.isObservation = true;\n      this.configureValidationRules();\n    }\n  }\n\n  public setUserLanguage() {\n    this.logger.debug(\"setUserLanguage\");\n    if (this.state && this.state.userBasicInfo) {\n      let activeCulture = this.state.userBasicInfo.culture;\n      let activeLang = this.languages.find(lg => lg.culture === activeCulture);\n      if (activeLang) {\n        this.model.languageId = activeLang.id;\n      }\n    }\n  }\n\n  private async bind(): Promise<any> {\n    try {\n      this.languages = await this.languageService.getAll();\n      this.setUserLanguage();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async getQuestionaries(): Promise<Questionary[]> {\n    return await this.companyQuestionaryService.getAll();\n  }\n\n  public async submit(): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n\n          if (!this.model.filedata) {\n            this.notification.warning(\"main.test.pages.people.errors.file_is_missing\");\n          }\n          else if (!this.model.questionaryId) {\n            this.notification.warning(\"main.test.pages.people.errors.observation_questionary_is_missing\");\n          }\n          else {\n            return await this.save();\n          }\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  get canSave() {\n    return !this.bulkActivationService.client.isRequesting;\n  }\n\n  private async save(): Promise<any> {\n    try {\n      this.model = await this.bulkActivationService.create(this.model);\n      this.notification.success(\"notifications.item_added\");\n      return await this.router.navigateToRoute(\"people\");\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public setFile($event: any): void {\n    this.logger.debug(\"setFile\");\n    let file = <File>$event.target.files[0];\n\n    let fileValidator = FileAcceptValidator.parse(\"csv, xls, xlsx\", 1024 * 500);\n    if (fileValidator.isValid(file)) {\n      let reader: FileReader = new FileReader();\n      reader.readAsDataURL(file);\n      reader.onload = () => {\n        this.model.fileName = file.name;\n      };\n    }\n    else {\n      this.notification.error(\"main.test.pages.person.bulk_activation.errors.error_bad_file\");\n    }\n  }\n\n  public notificationInfo(message: string) {\n    this.notification.info(message);\n  }\n}\n","module.exports = \"<template> <require from=../../../../models/test-person/personModeViewEngineHooks></require> <h2> ${'main.test.pages.bulk_observation.page_title' & t} </h2> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <div class=row> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label for=model.name>${'main.testperson.pages.masive_activation.list_name' & t}</label> <input type=text class=form-control id=name t=[placeholder]main.testperson.pages.masive_activation.list_name value.bind=\\\"model.name & validate\\\"> </div> </div> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label for=model.personMode>${'main.test.pages.people.person_mode' & t} <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.test.pages.bulk_activation.activation_mode')\\\" role=button> <i class=material-icons>info_outline</i> </a> </label> <select value.bind=\\\"model.personMode & validate\\\" class=form-control id=model.personMode> <option repeat.for=\\\"option of PersonModes\\\" model.bind=PersonMode[option]> ${'main.testperson.pages.person.activation_mode.' + option & t}</option> </select> </div> </div> </div> <div class=row> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col> <p>${'main.test.pages.person.file_warning' & t}</p> </div> </div> <div class=row> <div class=col> <i class=\\\"fa fa-file-excel-o\\\" aria-hidden=true></i> <a href=${xlsxExampleUrl}>${'main.testperson.pages.person.download_xlsx_file_text' & t}</a> </div> </div> </div> </div> </div> <div class=row> <div class=col-11> <div class=form-group> <div class=custom-file> <input type=file class=custom-file-input files.bind=model.filedata accept=\\\".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\\\" id=customFile change.delegate=setFile($event)> <label class=custom-file-label for=customFile>${ model.fileName ? model.fileName : 'commons.file' & t} </label> </div> </div> </div> <div class=col-1> <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.test.pages.bulk_activation.browse')\\\" role=button> <i class=material-icons>info_outline</i> </a> </div> </div> <div class=row> <div class=col-12> <label for=model.tags>${'main.testperson.pages.person.tags' & t} <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.test.pages.bulk_activation.tag')\\\" role=button> <i class=material-icons>info_outline</i> </a> </label> <company-tags-input value.bind=model.tags /> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> <a class=\\\"btn btn-link collapse-header\\\" data-toggle=collapse href=#collapseAdvanceOptions role=button aria-expanded=false aria-controls=collapseAdvanceOptions> <i class=material-icons>chevron_right</i> ${'main.testperson.pages.person.advanced_options' & t} </a> </p> <div class=collapse id=collapseAdvanceOptions> <div class=row> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=model.hasMicroSite checked.bind=\\\"model.hasMicroSite & validate\\\"/> <label for=model.hasMicroSite class=form-check-label>${'main.test.pages.people.micro_site' & t}</label> </span> </div> </div> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label for=model.languageId>${'main.testperson.pages.person.language' & t}</label> <select value.bind=\\\"model.languageId & validate\\\" class=form-control> <option repeat.for=\\\"option of languages\\\" model.bind=option.id>${option.name & t}</option> </select> </div> </div> </div> </div> </div> </div> <div class=row> <div class=\\\"col-12 col-md-6\\\" global-permission-show=\\\"can: TestPersonObservationCreate\\\"> <div class=form-group> <label for=model.questionaryId>${'main.test.pages.people.observation.questionaryId' & t}</label> <select value.bind=\\\"model.questionaryId & validate\\\" class=form-control id=model.questionaryId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of observationQuestionaries\\\" model.bind=option.id>${option.name & t}</option> </select> </div> </div> </div> <div class=row style=margin-bottom:50px> <div class=col> <label>${'main.testperson.pages.person.additional_text' & t}</label> <quill-editor value.bind=\\\"model.additionalText & validate\\\"></quill-editor> </div> </div> <div class=row> <div class=col> <p>&nbsp;</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestPersonObservationCreate\\\" click.delegate=submit() disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: people;\\\" t=main.testperson.pages.person.commands.cancel>Cancel</a> </div> </form> <div class=content-sidebar> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.person.create_card.title' & t} </h5> <p t=[html]main.testperson.pages.person.create_card.info>Create new person</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: person-activation-create;\\\">${'main.testperson.pages.person.create_card.create' & t}</a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonObservationCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.person_observation_activation.create_card.title' & t} </h5> <p t=[html]main.testperson.pages.person_observation_activation.create_card.info>Create new activation by observation</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: observation-child-router; params.bind: {personId:'create'}\\\" t=main.testperson.pages.person_observation_activation.create_card.create>Activation by Observation</a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonBulkView\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.person_masive_activation.create_card.title' & t} </h5> <p t=[html]main.testperson.pages.person_masive_activation.create_card.info>Create new bulk activation </p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: bulk-activation-list-child-router;\\\" t=main.testperson.pages.person_masive_activation.create_card.create>Bulk Activation</a> </div> </div> </div> </div> </div> </div> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class BulkResultsExportChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"BulkResultsExportChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./bulk-results-export-list\"),\n        name: \"bulk-results-export-list\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.people.person\"),\n      },\n      {\n        route: \"create\",\n        moduleId: PLATFORM.moduleName(\"./bulk-results-export-create\"),\n        name: \"bulk-results-export-create\",\n         nav: true,\n        title: this.i18n.tr(\"main.test.pages.bulk_activation.page_title\"),\n      },\n      \n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","import { NoDiscType } from 'models/questionaries/noDiscType';\nimport { Questionary } from 'models/questionaries/questionary';\nimport { CustomCompanyQuestionaryService } from 'main/admin/services/questionaries/custom-company-questionary-service';\nimport { UxDatatableSearchCustomElement } from '../../../../common/resources/elements/ux/datatable/ux-datatable';\nimport { BulkResultsExportService } from '../../services/people/bulk-results-export-service';\nimport { ActivationQuestionaryService } from 'main/test/services/people/activation-questionary-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Company } from \"models/companies/company\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { State } from \"aurelia-route-recognizer\";\nimport { StoreService } from \"common/store/store-service\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { PersonService } from \"main/test/services/people/person-service\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { Notification } from \"common/services/notification\";\nimport { CoreUserService } from \"main/admin/services/users/core-user-service\";\nimport { EvaluatorsModal } from \"./evaluators-modal\";\nimport { User } from \"models/security/user\";\nimport { BulkResultsExport } from 'models/test-person/bulkResultsExport';\nimport { Tests } from 'models/test-person/tests';\nimport { UserService } from 'main/admin/services/users/user-service';\nimport { CustomCompanyModularQuestionaryService } from 'main/admin/services/questionaries/custom-company-modular-questionary-service';\n@autoinject()\nexport class BulkResultsExportCreate {\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n  private company: Company;\n  private definedColumns: string[] = [];\n  // private ActivationMode = ActivationMode;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n  private model: BulkResultsExport = new BulkResultsExport();\n  private state: State;\n  private isLoaded: boolean = false;\n  private isResultsExport: boolean = false;\n  private selectionLabel: string;\n  // private coreUsersIds: number[] = [];\n  private questionaries: Questionary[] = [];\n  private generalQuestionaries: Questionary[] = [];\n  private users: User[] = [];\n  private requestSequence: number = 0;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.activationQuestionaryService.listpreviewresults(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    // private coreCompanyService: CoreCompanyService,\n    private activationQuestionaryService: ActivationQuestionaryService,\n    private questionaryByCompanyService: CustomCompanyQuestionaryService,\n    private customCompanyModularQuestionaryService: CustomCompanyModularQuestionaryService,\n    private coreUserService: CoreUserService,\n    private userService: UserService,\n    private bulkResultsExportService: BulkResultsExportService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"PersonList\");\n\n    // this.state = this.store.state;\n    this.definedColumns = [\"fullName\", \"email\"];\n    this.parameters.search.UsersIds = [];\n  }\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n\n    this.logger.debug(\"activate\");\n\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n  }\n\n  private async bind(): Promise<any> {\n    this.logger.debug(\"bind\");\n\n    if (!isNaN(this.params.companyId)) {\n      this.logger.debug(\"activate companyId:\", this.params.companyId);\n      this.companyId = +this.params.companyId;\n\n      if (this.companyId) {\n\n        this.activationQuestionaryService.client.currentCompanyId = this.companyId;\n\n        //this.company = this.state.companies.find(x => x.id == this.companyId);        \n        this.users = await this.userService.getAllEvaluators();\n        this.generalQuestionaries = [\n          ...(await this.questionaryByCompanyService.getAll()),\n          ...(await this.customCompanyModularQuestionaryService.getAll()),\n        ];\n        this.updateQuestionaries();\n        // preselect first questionary if exists\n        this.parameters.search.ResultsExportQuestionaryByCompany =\n          this.questionaries.length > 0 ? this.questionaries[0].id : null;\n        this.isLoaded = true;\n        return await this.databind();\n      }\n    }\n  }\n\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    const currentRequest = ++this.requestSequence;\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        if (currentRequest !== this.requestSequence) return;\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n\n      })\n      .catch(error => {\n        if (currentRequest !== this.requestSequence) return;\n        this.notification.error(error);\n      });\n  }\n\n  // filter questionaries by type before refresh\n  private updateQuestionaries(): void {\n    if (this.parameters.search.ResultsExportQuestionary === Tests.Performance) {\n      this.questionaries = this.generalQuestionaries.filter(x => x.noDiscType === NoDiscType.Performance);\n    } else {\n      this.questionaries = this.generalQuestionaries.filter(x => x.noDiscType === NoDiscType.General);\n    }\n  }\n\n  // first apply filter and then refresh\n  private async onQuestionaryTypeChanged(): Promise<void> {\n    this.updateQuestionaries();\n    this.parameters.search.ResultsExportQuestionaryByCompany =\n      this.questionaries.length > 0 ? this.questionaries[0].id : null;\n    return await this.databind();\n  }\n\n  private async getSelectionLabel(): Promise<any> {\n    this.selectionLabel = '';\n    this.parameters.search.UsersIds.forEach(y => {\n      var selectedUser = this.users.find(x => x.id === y)\n      if (selectedUser !== undefined) {\n        if (this.selectionLabel !== '') {\n          this.selectionLabel += ', ';\n        }\n        this.selectionLabel += selectedUser.fullName;\n      }\n\n    });\n\n    return await this.databind();\n\n  }\n\n  private async setEvaluators(): Promise<any> {\n    return await this.databind();\n  }\n\n  private async save(): Promise<any> {\n    try {\n      if (this.parameters.totalRecords > 1000) {\n        this.notification.warning(\"main.test.pages.people.errors.total_records\");\n      }\n      else {\n        this.model.resultsExportQuestionary = this.parameters.search.ResultsExportQuestionary;\n        if (this.parameters.search.ResultsExportQuestionary === Tests.QuestionaryByCompany || this.parameters.search.ResultsExportQuestionary === Tests.Performance)\n          this.model.questionaryByCompanyId = this.parameters.search.ResultsExportQuestionaryByCompany;\n        this.model.startDate = this.parameters.search.StartDate;\n        this.model.endDate = this.parameters.search.EndDate;\n        this.model.tags = this.parameters.search.Query;\n        this.model.totalResults = this.parameters.totalRecords;\n        this.model.usersIds = this.parameters.search.UsersIds;\n        this.model = await this.bulkResultsExportService.create(this.model);\n        this.notification.success(\"notifications.item_added\");\n        return await this.router.navigateToRoute(\"bulk-results-export-child-router\");\n      }\n\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async clearFilters(): Promise<any> {\n    this.parameters.search.Query = this.parameters.search.StartDate = this.parameters.search.EndDate = null;\n    await this.databind();\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../common/resources/value-converters/filter></require> <require from=../../../../models/test-person/testsViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2> ${'main.test.pages.people.export_results.info.create_title' & t} </h2> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <p> ${'main.test.pages.people.export_results.create_warning' & t} </p> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.firstName>${'main.admin.pages.questionaries.questionary_type.title' & t}</label> <select class=form-control value.bind=parameters.search.ResultsExportQuestionary change.delegate=\\\"onQuestionaryTypeChanged() & debounce:100\\\"> <option repeat.for=\\\"option of Tests\\\" model.bind=Test[option]> ${'main.testperson.pages.person.bulk_results_questionary.' + option & t}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=\\\"parameters.search.ResultsExportQuestionary == Test.QuestionaryByCompany || parameters.search.ResultsExportQuestionary == Test.Performance\\\"> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=model.tags>${'main.testperson.pages.person.questionary_company' & t}</label> <select class=form-control value.bind=parameters.search.ResultsExportQuestionaryByCompany change.delegate=\\\"databind() & debounce:100\\\"> <option repeat.for=\\\"option of questionaries\\\" model.bind=option.id> ${option.name}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <label for=model.tags>${'main.testperson.pages.person.tags' & t}</label> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=startDate t=commons.start_date>Start_Date</label> <ux-date-picker value.bind=parameters.search.StartDate model.bind=model.startDate change.delegate=\\\"databind() & debounce:100\\\" id=startDate></ux-date-picker> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=endDate t=commons.end_date>Start_Date</label> <ux-date-picker value.bind=parameters.search.EndDate model.bind=model.endDate change.delegate=\\\"databind() & debounce:100\\\" id=endDate></ux-date-picker> </div> </div> </div> <div class=\\\"col-md-4 col-12\\\" if.bind=\\\"parameters.search.Query || parameters.search.StartDate || parameters.search.EndDate\\\" global-permission-show=\\\"can: TestPersonUpdate\\\"> <button class=\\\"btn btn-link\\\" click.delegate=clearFilters()> <i class=material-icons>clear</i> ${'commons.clear_filters' & t} </button> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-6\\\"> <p> <a class=\\\"btn btn-link\\\" data-toggle=collapse href=#multiCollapseExample1 role=button aria-expanded=false aria-controls=multiCollapseExample1>${'main.testperson.pages.person.evaluator' & t} <i class=material-icons> arrow_drop_down </i> </a> </p> <div class=\\\"collapse multi-collapse\\\" id=multiCollapseExample1> <div class=\\\"card card-body\\\"> <input type=text t=[placeholder]ux_datatable.search_placeholder name=searchValue class=\\\"form-control mb-3\\\" value.bind=\\\"searchValue & debounce:500\\\"/><br> <div class=\\\"alert alert-info\\\" role=alert> <p> ${'main.test_reports.pages.person.bulk_results.selected_users' & t} </p> <p> ${selectionLabel} </p> </div> <ul class=\\\"list-group list-group-flush\\\"> <li class=list-group-item repeat.for=\\\"item of users | genericFilter:searchValue:definedColumns:true\\\"> <div class=\\\"custom-control custom-checkbox\\\"> <input type=checkbox class=custom-control-input id=users_${item.id} model.bind=item.id checked.bind=parameters.search.UsersIds change.delegate=getSelectionLabel()> <label class=custom-control-label for=users_${item.id}>${item.fullName}</label> </div> </li> </ul> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-1 col-3\\\"> <disc-avatar size.bind=36 disc.bind=item.highestDisc picture-url.bind=item.pictureUrl initials.bind=item.initials></disc-avatar> </div> <div class=\\\"col-md-3 col-9 text-truncate\\\"> <a title=${item.fullName}> ${item.fullName} </a> <br/> <small class=text-mutted>${item.email}</small> </div> <div class=\\\"col-md-2 col-12\\\"> <label class=d-block><small class=text-muted>${'main.testperson.pages.person.activation_date' & t}</small></label> ${item.createdOn | dateTimeFormat}</div> <div class=\\\"col-md-2 col-12 text-truncate\\\"> <label class=d-block><small class=text-muted>${'main.testperson.pages.person.evaluator' & t}</small></label> <span title=${item.createdByName}>${item.createdByName}</span> </div> <div class=\\\"col-md-2 col-12\\\" style=min-height:75px> <label class=d-block><small class=text-muted>${'main.testperson.pages.person.tags' & t}</small></label> <a>${item.tags}</a> </div> </div> </li> </ul> </div> </div> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=save(search)>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: bulk-results-export-list;\\\" t=commands.cancel>Cancel</a> </div> </form> <div class=content-sidebar> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <div class=\\\"row mb-3\\\"> <div class=col-12> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=save(search)>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: bulk-results-export-list;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </div> </div> </div> </div> </div> </template> \";","import { BulkResultsExportService } from '../../services/people/bulk-results-export-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { DialogService } from 'aurelia-dialog';\nimport { Router, RouteConfig } from 'aurelia-router';\nimport { Notification } from \"common/services/notification\";\n@autoinject\nexport class BulkResultsExportList {\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.bulkResultsExportService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n  constructor(\n    private router: Router,\n    private bulkResultsExportService: BulkResultsExportService,\n    private notification: Notification,\n    private dialogService: DialogService) {\n\n    this.logger = LogManager.getLogger(\"BulkResultsExportList\");\n  }\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.params = params;\n  }\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n      this.companyId = +this.params.companyId;\n\n      this.bulkResultsExportService.client.currentCompanyId = this.companyId;\n\n      return await this.databind();\n\n    }\n  }\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async getPrivateMedia(id: number) {\n    try {\n      let privateUrl = await this.bulkResultsExportService.getMediaByBulkActivationId(id);\n      if (privateUrl != null) {\n        return this.router.navigate(privateUrl);\n      }\n    } catch (error){\n      this.notification.error(error);\n    }\n  }\n}\n","module.exports = \"<template> <require from=../../../../models/test-person/testsViewEngineHooks></require> <div class=\\\"content-container row mb-3\\\" global-permission-show=\\\"can: TestPersonBulkResultsExportView\\\"> <div class=content-main> <h2> ${'main.test.pages.people.export_results.info.title' & t} </h2> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.test.pages.people.export_results.description' & t} </p> </div> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=col-2> <ux-datatable-info parameters.bind=parameters t=[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-3 col-12\\\" if.bind=\\\"item.resultsExportQuestionary == Test.QuestionaryByCompany\\\"> <label class=d-block> <small class=text-muted>${'main.admin.pages.questionaries.questionary_type.title' & t}</small> </label> ${item.questionaryByCompanyName} </div> <div class=\\\"col-md-3 col-12\\\" if.bind=\\\"item.resultsExportQuestionary != Test.QuestionaryByCompany\\\"> <label class=d-block> <small class=text-muted>${'main.admin.pages.questionaries.questionary_type.title' & t}</small> </label> ${'main.testperson.pages.person.bulk_results_questionary.' + Test[item.resultsExportQuestionary] & t} </div> <div class=\\\"col-md-2 col-12\\\"> <label class=d-block> <small class=text-muted> ${'main.test.pages.people.export_results.created_on' & t} </small> </label> ${item.createdOn | dateTimeFormat} </div> <div class=\\\"col-md-2 col-12 text-truncate\\\"> <label class=d-block> <small class=text-muted> ${'main.testperson.pages.person.bulk_results_total_results' & t} </small> </label> <span title=${item.createdByName}>${item.totalResults}</span> </div> <div class=\\\"col-md-2 col-12\\\"> <label class=d-block> <small class=text-muted> ${'main.test.pages.people.export_results.dates' & t} </small> </label> <span if.bind=\\\"item.startDate || item.endDate\\\"> ${item.startDate | dateFormat}${item.startDate && item.endDate ? ' a ' : ''}${item.endDate | dateFormat} </span> </div> <div class=\\\"col-md-1 col-12\\\"> <label class=d-block> <small class=text-muted> ${'main.testperson.pages.person.tags' & t} </small> </label> <three-tags tags.bind=item.tags></three-tags> </div> <div class=\\\"col-md-1 col-12\\\"> <a class=\\\"btn btn-link\\\" href=# if.bind=\\\"item.logFileUrl.indexOf('no-image') < 0\\\" title=\\\"${'main.test.pages.people.resume' & t}\\\" click.delegate=getPrivateMedia(item.id)> <i class=material-icons style=font-size:x-large>cloud_download</i> </a> </div> </div> </li> </ul> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\" global-permission-enable=\\\"can: TestPersonBulkResultsExportCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title>${'main.admin.pages.export_results.create_card_title' & t}</h5> <p t=[html]main.admin.pages.export_results.create_card_info> Create new results export </p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: bulk-results-export-create\\\" t=commands.create>create</a> </div> </div> </div> </div> </div> </div> </template> \";","import { Router } from 'aurelia-router';\nimport { autoinject } from \"aurelia-framework\";\n\n@autoinject\nexport class TestHome {\n\n  constructor(private router: Router) {\n\n  }\n\n\n}\n","module.exports = \"<template> <section> <div class=\\\"row mb-4 text-center\\\"> <div class=col-12> <h1 class=display-4>${'main.test.pages.home.title' & t}</h1> <p class=lead>${'main.test.pages.home.info' & t}</p> </div> </div> </section> <section> <div class=\\\"row mb-4\\\"> <div class=\\\"col-xs-6 col-md-3\\\" repeat.for=\\\"route of router.navigation\\\" if.bind=!route.settings.isHome> <div class=\\\"card-selector card mb-4 card-shadow card-round\\\"> <a href.bind=route.href> <i class=\\\"material-icons-outlined large ${route.settings.icon}\\\">${route.settings.icon.startsWith('t') ? '': route.settings.icon}</i> <div class=card-body> <h5 class=card-title>${route.title}</h5> </div> </a> </div> </div> </div> </section> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class HomologationChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"HomologationChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./homologation-edit\"),\n        name: \"homologation-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.people.person\"),\n      },\n      \n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","import { ActivationService } from 'main/test/services/people/activation-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { Person } from \"models/test-person/person\";\nimport { PersonService } from \"../../services/people/person-service\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { PersonActivationType } from \"models/test-person/personActivationType\";\nimport { Result } from \"models/test-result/result\";\nimport { ResultService } from \"main/test/services/result/result-service\";\nimport { DiscAdjectiveService } from \"main/test/services/core/disc-adjective-service\";\nimport { DiscAdjective } from \"models/test-core/discAdjective\";\nimport { Disc } from \"models/questionaries/disc\";\nimport { Activation } from \"models/test-person/activation\";\nimport { DiscType } from \"models/questionaries/discType\";\nimport { WhoCanSeeReport } from \"models/test-person/whoCanSeeReport\";\n\n@autoinject()\nexport class HomologationEdit {\n\n  private logger: Logger;\n\n  private companyId: number;\n\n  private model: Person = new Person();\n\n  private resultDiscNaturalList: Result[] = [];\n  private resultDiscAdaptedList: Result[] = [];\n  private discAdjetives: DiscAdjective[] = [];\n\n  private validationController: ValidationController;\n\n  constructor(\n    private router: Router,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private personService: PersonService,\n    private resultService: ResultService,\n    private discAdjectiveService: DiscAdjectiveService,\n    private activationService: ActivationService\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"HomologationEdit\");\n    this.model.tags = \"\";\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"firstName\").displayName(\"main.test.pages.people.first_name\").required()\n      .ensure(\"lastName\").displayName(\"main.test.pages.people.last_name\").required()\n      .ensure(\"email\").displayName(\"main.test.pages.people.email\").email().required()\n      .ensure(\"document\").displayName(\"main.test.pages.people.document\").required()\n      .ensure(\"activation.applicationDate\").displayName(\"main.test.pages.people.homolotation.activation_date\").required()\n      .on(this.model);\n\n    ValidationRules\n      .ensure(\"applicationDate\").displayName(\"main.test.pages.people.homolotation.activation_date\").required()\n      .on(this.model.activation);\n  }\n\n  public async activate(params: any): Promise<any> {\n    this.logger.debug(\"activate\");\n\n    try {\n\n      if (!isNaN(params.companyId)) {\n        this.companyId = +params.companyId;\n\n        this.personService.client.currentCompanyId = this.companyId;\n\n        if (params.personId == 'create') {\n          this.resultDiscNaturalList = await this.getDiscData();\n          this.resultDiscAdaptedList = await this.getDiscData();\n\n          let activation = new Activation();\n          activation.personActivationType = PersonActivationType.Homologation;\n          activation.whoCanSeeReport = WhoCanSeeReport.OnlyOrganization;\n          this.model.activation = activation;\n        }\n        else if (!isNaN(params.personId) && !isNaN(params.activationId)) {\n\n          this.model = await this.personService.getById(params.personId);\n\n          this.model.activation = await this.activationService.getById(params.activationId);\n\n          this.resultDiscNaturalList = await this.getDiscDataFromActivation(params.personId, params.activationId, DiscType.Natural);\n          this.resultDiscAdaptedList = await this.getDiscDataFromActivation(params.personId, params.activationId, DiscType.Adapted);\n        }\n\n\n        const adjectives = await this.getDiscAdjetives();\n\n        this.discAdjetives = adjectives.map(itm => {\n          let range = itm.scoreRange.split('-');\n          let minRange = parseInt((range[0] || '0').trim());\n          let maxRange = parseInt((range[1] || '0').trim());\n          itm['min'] = minRange;\n          itm['max'] = maxRange;\n          return itm;\n        });\n\n        this.configureValidationRules();\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n\n          if (this.resultDiscNaturalList.map(x => x.value).every(x => x == 0)\n            && this.resultDiscAdaptedList.map(x => x.value).every(x => x == 0)) {\n            this.notification.warning(\"main.test.pages.people.homologation.errors.values_are_zeros\");\n          }\n          else {\n            return await this.save(keepEditing);\n          }\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  get canSave() {\n    return !this.resultService.client.isRequesting;\n  }\n\n  private async save(keepEditing: boolean): Promise<any> {\n\n    try {\n\n      this.model.stamp = Math.random().toString(36).substring(2) + (new Date()).getTime().toString(36);\n      // get highest disc\n      let maxItem: any = { value: 0 };\n      this.resultDiscNaturalList.forEach(itm => {\n        if (maxItem.value < itm.value) {\n          maxItem = itm;\n        }\n      });\n\n      this.model.highestDisc = maxItem.disc;\n      this.model.lastDiscApplicationDate = this.model.activation.applicationDate;\n\n      // create person and activation\n      if (!this.model.id) {\n\n        this.model = await this.personService.create(this.model);\n\n        await this.saveActivation(this.model.id, this.model.activation.id);\n      }\n      else {\n        await this.personService.update(this.model);\n\n        await this.activationService.update(this.model.activation);\n\n        await this.saveActivation(this.model.id, this.model.activation.id);\n      }\n\n      if (!keepEditing) {\n        return await this.router.navigateToRoute(\"people\");\n      }\n    }\n    catch (error) {\n      this.notification.error(error.error);\n    };\n  }\n\n\n  private async getDiscData(): Promise<Result[]> {\n\n    let discIds = Object.keys(Disc).filter(k => typeof Disc[k] !== 'number');\n\n    let resultDiscList: Result[] = [];\n\n    discIds.forEach(itm => {\n      resultDiscList.push({\n        disc: Disc[itm],\n        value: 50\n      });\n\n    });\n\n    return resultDiscList;\n  }\n\n  private async getDiscDataFromActivation(personId: number, activationId: number, discType: DiscType): Promise<Result[]> {\n\n    let allPersonDisc = await this.resultService.getAllByPersonId(personId, activationId);\n\n    let discIds = Object.keys(Disc).filter(k => typeof Disc[k] !== 'number');\n\n    let resultDiscList: Result[] = [];\n\n    discIds.forEach(itm => {\n      let filteredItems = allPersonDisc.filter(p => Disc[p.disc] === Disc[itm] && p.discType == discType);\n\n      if (filteredItems.length) {\n        resultDiscList.push({\n          personId: personId,\n          activationId: personId,\n          disc: Disc[itm],\n          value: filteredItems[0].value\n        })\n      } else {\n        resultDiscList.push({\n          personId: personId,\n          disc: Disc[itm],\n          value: 50\n        })\n      }\n    })\n\n    return resultDiscList;\n  }\n\n  private calculateLabel(value: number, disc: Disc): string {\n    const itm = this.discAdjetives.find((itm: any) => value >= itm.min && value <= itm.max && itm.disc === Disc[disc]);\n    return itm ? itm.name : '';\n  }\n\n  private async getDiscAdjetives(): Promise<DiscAdjective[]> {\n    return await this.discAdjectiveService.getAll();\n  }\n\n  private async saveActivation(personId: number, activationId: number): Promise<any> {\n\n    let promises = [];\n\n    this.resultDiscNaturalList.forEach(itm => {\n      itm.discType = DiscType.Natural;\n      itm.personId = personId;\n      itm.activationId = activationId;\n      itm.stamp = this.model.stamp;\n      promises.push(this.resultService.createToPerson(itm));\n    });\n\n    this.resultDiscAdaptedList.forEach(itm => {\n      itm.discType = DiscType.Adapted;\n      itm.personId = personId;\n      itm.activationId = activationId;\n      itm.stamp = this.model.stamp;\n      promises.push(this.resultService.createToPerson(itm));\n    });\n\n    Promise.all(promises)\n      .then(async () => {\n        this.notification.success(\"notifications.item_edited\");\n        // return await this.router.navigateToRoute(\"people\");\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n\n    return true;\n  }\n\n}\n","module.exports = \"<template> <h2 class=mb-3> ${'main.testperson.pages.homologation.title' & t} </h2> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <div class=row> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.firstName>${'main.test.pages.people.first_name' & t}</label> <input type=text class=form-control id=model.firstName t=[placeholder]main.test.pages.people.first_name value.bind=\\\"model.firstName & validate\\\"> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.lastName>${'main.test.pages.people.last_name' & t}</label> <input type=text class=form-control id=model.lastName t=[placeholder]main.test.pages.people.last_name value.bind=\\\"model.lastName & validate\\\"> </div> </div> </div> <div class=row> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.document>${'main.test.pages.people.document' & t}</label> <input type=text class=form-control id=model.document t=[placeholder]main.test.pages.people.document value.bind=\\\"model.document & validate\\\"> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.email>${'main.test.pages.people.email' & t}</label> <input type=text class=form-control id=model.email t=[placeholder]main.test.pages.people.email value.bind=\\\"model.email & validate\\\" disabled.bind=model.id> </div> </div> </div> <div class=row> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.activation.applicationDate t=main.test.pages.people.homolotation.activation_date>Date</label> <ux-date-picker value.bind=\\\"model.activation.applicationDate & validate\\\" id=model.activation.applicationDate></ux-date-picker> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <label>${'main.testperson.pages.person.tags' & t}</label> <company-tags-input value.bind=model.tags /> </div> </div> <div class=\\\"alert alert-info mt-3\\\" role=alert> <p> ${'main.test.pages.disc_homologation.warning' & t} </p> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <h4>${'main.test.pages.people.homolotation.natural_profile' & t}</h4> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"row align-items-center\\\" repeat.for=\\\"option of resultDiscNaturalList\\\"> <div class=\\\"col-2 col-md-1\\\"> <label>${option.disc}</label> </div> <div class=\\\"col-10 col-md-2\\\"> <label>${calculateLabel(option.value, option.disc) & t}</label> </div> <div class=\\\"col-8 col-md-6\\\"> <ux-range-input value.bind=option.value></ux-range-input> </div> <div class=col> <input type=number class=form-control id=discN[${option.disc}] value.bind=option.value> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <h4>${'main.test.pages.people.homolotation.adapted_profile' & t}</h4> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=row repeat.for=\\\"option of resultDiscAdaptedList\\\"> <div class=\\\"col-2 col-md-1\\\"> <label>${option.disc}</label> </div> <div class=\\\"col-10 col-md-2\\\"> <label>${calculateLabel(option.value, option.disc) & t}</label> </div> <div class=\\\"col-8 col-md-6\\\"> <ux-range-input value.bind=option.value></ux-range-input> </div> <div class=col> <input type=number class=form-control id=discA[${option.disc}] value.bind=option.value> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestPersonHomologationCreate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestPersonHomologationCreate\\\" click.delegate=submit(false)>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: people;\\\" t=commands.cancel>Cancel</a> </div> </form> <div class=content-sidebar> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.person.create_card.title' & t} </h5> <p t=[html]main.testperson.pages.person.create_card.info>Create new person</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: person-activation-create;\\\">${'main.testperson.pages.person.create_card.create' & t}</a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonBulkView\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.person_masive_activation.create_card.title' & t} </h5> <p t=[html]main.testperson.pages.person_masive_activation.create_card.info>Create new bulk activation </p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: bulk-activation-list-child-router;\\\" t=main.testperson.pages.person_masive_activation.create_card.create>Bulk Activation</a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonObservationCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.person_observation_activation.create_card.title' & t} </h5> <p t=[html]main.testperson.pages.person_observation_activation.create_card.info>Create new activation by observation</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: observation-child-router; params.bind: {personId:'create'}\\\" t=main.testperson.pages.person_observation_activation.create_card.create>Activation by Observation</a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonObservationCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.test.pages.bulk_observation.create_card.title' & t} </h5> <p t=[html]main.test.pages.bulk_observation.create_card.info>Crear nueva activación masiva por observación</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: bulk-observation-child-router;\\\" t=commands.view>Bulk Observation</a> <a class=\\\"btn btn-primary btn-round\\\" title=\\\"${&apos;main.test.pages.bulk_observation.create_card.create&apos; & t}\\\" href=company/${companyId}/test/people/bulk-observation/create t=main.test.pages.bulk_observation.create_card.create>Create</a> </div> </div> </div> </div> </div> </div> </template> \";","import { PersonActivationType } from '../../../../models/test-person/personActivationType';\nimport { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { autoinject, LogManager, bindable, Disposable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { Person } from \"models/test-person/person\";\nimport { DeleteConfirmation } from 'main/components/delete-confirmation';\nimport { ActivationService } from 'main/test/services/people/activation-service';\nimport { Activation } from 'models/test-person/activation';\nimport { HomologationModal } from './homologation-modal';\n\n@autoinject()\nexport class HomologationList {\n\n  private logger: Logger;\n  private params: any = {};\n  public companyId: number;\n\n  @bindable\n  private person: Person;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n\n  constructor(\n    private activationService: ActivationService,\n    private notification: Notification,\n    private dialogService: DialogService\n  ) {\n\n    this.logger = LogManager.getLogger(\"HomologationList\");\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.activationService.list(this.parameters, this.person.id)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async bind(): Promise<any> {\n    if (this.person) {\n\n      this.activationService.client.currentCompanyId = this.person.companyId;\n\n      // filter activation by homologation\n      this.parameters.search.PersonActivationType = PersonActivationType.Homologation;\n\n      return await this.databind();\n    }\n\n  }\n\n  private async databind(): Promise<any> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<any> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async view(activation: Activation): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: HomologationModal,\n      model: activation\n    })\n      .whenClosed(async (response: DialogCloseResult) => {\n        return true;\n      });\n  }\n\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-8\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.activation_date' & t}</small> </label> ${item.createdOn | dateTimeFormat} </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.application_date' & t}</small> </label> ${item.applicationDate | dateTimeFormat} </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.evaluator' & t}</small> </label> <span title=${item.createdByName}>${item.createdByName}</span> </div> <div class=\\\"col-md-3 col-12 mb-2\\\"> <a href=# route-href=\\\"route: homologation-child-router; params.bind: {personId:item.personId, activationId:item.id}\\\" title.bind=\\\"'commands.edit' & t\\\" role=button> <i class=material-icons>edit</i> </a> <a href=# click.delegate=view(item) title.bind=\\\"'commands.view' & t\\\"> <i class=material-icons role=button>visibility</i> </a> </div> </div> </li> </ul> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Result } from \"models/test-result/result\";\nimport { ResultService } from \"main/test/services/result/result-service\";\nimport { DiscAdjectiveService } from \"main/test/services/core/disc-adjective-service\";\nimport { DiscAdjective } from \"models/test-core/discAdjective\";\nimport { Disc } from \"models/questionaries/disc\";\nimport { Activation } from \"models/test-person/activation\";\nimport { DiscType } from \"models/questionaries/discType\";\nimport { DialogController } from \"aurelia-dialog\";\n\n@autoinject()\nexport class HomologationModal {\n\n  private logger: Logger;\n\n  public companyId: number;\n\n  private resultDiscNaturalList: Result[] = [];\n  private resultDiscAdaptedList: Result[] = [];\n  private discAdjetives: DiscAdjective[] = [];\n\n  constructor(\n    private dialogController: DialogController,\n    private resultService: ResultService,\n    private discAdjectiveService: DiscAdjectiveService,\n  ) {\n    this.logger = LogManager.getLogger(\"HomologationModal\");\n\n  }\n\n  public async activate(activation: Activation): Promise<any> {\n\n    this.companyId = activation.companyId;\n\n    this.resultService.client.currentCompanyId = this.companyId;\n\n    this.resultDiscNaturalList = await this.getDiscData(activation.personId, activation.id, DiscType.Natural);\n    this.resultDiscAdaptedList = await this.getDiscData(activation.personId, activation.id, DiscType.Adapted);\n\n    const adjectives = await this.getDiscAdjetives();\n\n    this.discAdjetives = adjectives.map(itm => {\n      let range = itm.scoreRange.split('-');\n      let minRange = parseInt((range[0] || '0').trim());\n      let maxRange = parseInt((range[1] || '0').trim());\n      itm['min'] = minRange;\n      itm['max'] = maxRange;\n      return itm;\n    });\n\n  }\n\n\n  private async getDiscData(personId: number, activationId: number, discType: DiscType): Promise<Result[]> {\n\n    let allPersonDisc = await this.resultService.getAllByPersonId(personId, activationId);\n\n    let discIds = Object.keys(Disc).filter(k => typeof Disc[k] !== 'number');\n\n    let resultDiscList: Result[] = [];\n\n    discIds.forEach(itm => {\n      let filteredItems = allPersonDisc.filter(p => Disc[p.disc] === Disc[itm] && p.discType == discType);\n\n      if (filteredItems.length) {\n        resultDiscList.push({\n          personId: personId,\n          activationId: personId,\n          disc: Disc[itm],\n          value: filteredItems[0].value\n        })\n      } else {\n        resultDiscList.push({\n          personId: personId,\n          disc: Disc[itm],\n          value: 50\n        })\n      }\n    })\n\n    return resultDiscList;\n  }\n\n  private calculateLabel(value: number, disc: Disc): string {\n    const itm = this.discAdjetives.find((itm: any) => value >= itm.min && value <= itm.max && itm.disc === Disc[disc]);\n    return itm ? itm.name : '';\n  }\n\n  private async getDiscAdjetives(): Promise<DiscAdjective[]> {\n    return await this.discAdjectiveService.getAll();\n  }\n\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2 class=\\\"row mb-3\\\"> ${'main.testperson.pages.homologation.title' & t} </h2> <div class=\\\"row mb-3\\\"> <div class=col-12> <h4>${'main.test.pages.people.homolotation.natural_profile' & t}</h4> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=row repeat.for=\\\"option of resultDiscNaturalList\\\"> <div class=col-1> <label>${option.disc}</label> </div> <div class=col-2> <label>${calculateLabel(option.value, option.disc) & t}</label> </div> <div class=col-6> <ux-range-input value.bind=option.value disabled=disabled></ux-range-input> </div> <div class=col> <input type=number class=form-control id=discN[${option.disc}] value.bind=option.value disabled=disabled> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <h4>${'main.test.pages.people.homolotation.adapted_profile' & t}</h4> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"row align-items-center\\\" repeat.for=\\\"option of resultDiscAdaptedList\\\"> <div class=\\\"col-2 col-md-1\\\"> <label>${option.disc}</label> </div> <div class=\\\"col-10 col-md-2\\\"> <label>${calculateLabel(option.value, option.disc) & t}</label> </div> <div class=\\\"col-8 col-md-6\\\"> <ux-range-input value.bind=option.value disabled=disabled></ux-range-input> </div> <div class=col> <input type=number class=form-control id=discA[${option.disc}] value.bind=option.value disabled=disabled> </div> </div> </div> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </ux-dialog-body> </ux-dialog> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class ObservationChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"ObservationChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./observation-edit\"),\n        name: \"observation-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.testperson.pages.observation_activation.title\"),\n      },\n\n      {\n        route: \"observers/:activationId\",\n        moduleId: PLATFORM.moduleName(\"./observers/observer-list-child-router\"),\n        name: \"observer-list-child-router\"\n      },\n      \n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { Person } from \"models/test-person/person\";\nimport { PersonService } from \"../../services/people/person-service\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { Activation } from \"models/test-person/activation\";\nimport { ActivationService } from \"main/test/services/people/activation-service\";\nimport { CompanyQuestionaryService } from \"main/admin/services/test-management/company-questionary-service\";\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { QuestionaryType } from \"models/questionaries/questionaryType\";\nimport { ItemToQualify } from \"models/questionaries/itemToQualify\";\nimport { PersonActivationType } from \"models/test-person/personActivationType\";\nimport { Language } from \"models/localizations/language\";\nimport { StoreService } from \"common/store/store-service\";\nimport { State } from \"common/store/store-model\";\nimport { UserInfoLoadedMessage } from \"messages/userInfoLoadedMessage\";\nimport { EventAggregator, Subscription } from \"aurelia-event-aggregator\";\nimport { CoreLanguageService } from \"main/admin/services/localizations/core-language-service\";\n\n@autoinject()\nexport class ObservationEdit {\n\n  private logger: Logger;\n  public companyId: number;\n\n  private state: State;\n\n  private personId: number;\n  private model: Person = new Person();\n  private validationController: ValidationController;\n\n  private observationQuestionaries: Questionary[] = [];\n  private languages: Language[];\n\n  private subscription: Subscription;\n\n  constructor(\n    private router: Router,\n    private store: StoreService,\n    private companyQuestionaryService: CompanyQuestionaryService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private personService: PersonService,\n    private activationService: ActivationService,\n    private languageService: CoreLanguageService,\n    protected ea: EventAggregator\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ObservationEdit\");\n    this.model.tags = \"\";\n\n    this.state = this.store.state;\n\n    this.subscription = this.ea.subscribe(UserInfoLoadedMessage, (message: UserInfoLoadedMessage) => this.setUserLanguage.bind(this));\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"firstName\").displayName(\"main.admin.pages.users.first_name\").required()\n      .ensure(\"lastName\").displayName(\"main.admin.pages.users.last_name\").required()\n      .on(this.model);\n\n    ValidationRules\n      .ensure(\"questionaryId\").displayName(\"main.test.pages.people.observation.questionaryId\").required()\n      .on(this.model.activation);\n\n  }\n\n  public async activate(params: any): Promise<any> {\n    if (!isNaN(params.companyId)) {\n      this.companyId = +params.companyId;\n\n      this.companyQuestionaryService.client.currentCompanyId = this.companyId;\n\n      const questionaries = await this.getQuestionaries();\n\n      this.observationQuestionaries = questionaries.filter(itm => (itm.questionaryType != QuestionaryType.Competences &&  itm.itemToQualify === ItemToQualify.Observed));\n\n      let activation = new Activation();\n      activation.personActivationType = PersonActivationType.Observed;\n      this.model.activation = activation;\n      this.configureValidationRules();\n    }\n\n  }\n\n  public detached() {\n    this.subscription.dispose();\n  }\n\n  private async bind(): Promise<any> {\n    // this.logger.debug(\"bind\");\n    try {\n      this.languages = await this.languageService.getAll();\n      this.setUserLanguage();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n\n  }\n\n  public setUserLanguage() {\n    this.logger.debug(\"setUserLanguage\");\n    if (this.state && this.state.userBasicInfo) {\n      let activeCulture = this.state.userBasicInfo.culture;\n      let activeLang = this.languages.find(lg => lg.culture === activeCulture);\n      if (activeLang) {\n        this.model.activation.languageId = activeLang.id;\n      }\n    }\n  }\n\n  private async getPerson(): Promise<Person> {\n    return await this.personService.getById(this.personId)\n  }\n\n  private async getQuestionaries(): Promise<Questionary[]> {\n    return await this.companyQuestionaryService.getAll();\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.create(keepEditing);\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  get canSave() {\n    return !this.personService.client.isRequesting;\n  }\n\n  private async create(keepEditing: boolean): Promise<any> {\n    return await this.personService.create(this.model)\n      .then(async (result: Person) => {\n\n        this.notification.success(\"notifications.item_edited\");\n\n        if(keepEditing){\n          // return await this.router.navigateToRoute(\"observers\", { observedId: result.id, activationId: result.activation.id });\n          return await this.router.navigate(`/company/${this.companyId}/test/people/person-observation/${result.id}/observers/${result.activation.id}`);\n        }\n        else{\n          return await this.router.navigateToRoute(\"people\");\n        }\n      })\n      .catch(error => {\n        this.notification.error(error.error);\n      });\n  }\n\n\n\n}\n","import { DialogController } from \"aurelia-dialog\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { Activation } from \"models/test-person/activation\";\nimport { CompanyQuestionaryService } from \"main/admin/services/test-management/company-questionary-service\";\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { QuestionaryType } from \"models/questionaries/questionaryType\";\nimport { ItemToQualify } from \"models/questionaries/itemToQualify\";\nimport { EventAggregator, Subscription } from \"aurelia-event-aggregator\";\nimport { Language } from \"models/localizations/language\";\nimport { CoreLanguageService } from \"main/admin/services/localizations/core-language-service\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from \"common/store/store-service\";\nimport { UserInfoLoadedMessage } from \"messages/userInfoLoadedMessage\";\n\n@autoinject()\nexport class ObservationEditModal {\n\n  private logger: Logger;\n\n  public companyId: number;\n\n  private state: State;\n\n  private observationQuestionaries: Questionary[] = [];\n  private languages: Language[]\n\n  private model: Activation = new Activation();\n  private validationController: ValidationController;\n  \n  private subscription: Subscription;\n  \n\n  constructor(\n    private dialogController: DialogController,\n    private store: StoreService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private companyQuestionaryService: CompanyQuestionaryService,\n    protected ea: EventAggregator,\n    private languageService: CoreLanguageService) {\n\n      this.validationController = this.validationControllerFactory.createForCurrentScope();\n      this.validationController.addRenderer(new BootstrapFormRenderer());\n      this.logger = LogManager.getLogger(\"PeopleQuestionaryActivationModal\");\n      this.state = this.store.state;\n      this.subscription = this.ea.subscribe(UserInfoLoadedMessage, (message: UserInfoLoadedMessage) => this.setUserLanguage.bind(this));  \n    }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"questionaryId\").displayName(\"main.test.pages.people.observation.questionaryId\").required()\n      .on(this.model);\n  }\n\n  public async activate(Activation: Activation): Promise<any> {\n    this.logger.debug('Activate');\n\n    this.model = Activation;\n\n    this.companyId = this.model.companyId;\n\n    this.companyQuestionaryService.client.currentCompanyId = this.companyId;\n\n    const questionaries = await this.getQuestionaries();\n    this.observationQuestionaries = questionaries.filter(itm => (itm.questionaryType != QuestionaryType.Competences &&  itm.itemToQualify === ItemToQualify.Observed));\n    this.configureValidationRules();\n  }\n\n  private async bind(): Promise<any> {\n    try {\n      this.languages = await this.languageService.getAll();\n      this.setUserLanguage();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public setUserLanguage() {\n    this.logger.debug(\"setUserLanguage\");\n    if (this.state && this.state.userBasicInfo) {\n      let activeCulture = this.state.userBasicInfo.culture;\n      let activeLang = this.languages.find(lg => lg.culture === activeCulture);\n      if (activeLang) {\n        this.model.languageId = activeLang.id;\n      }\n    }\n  }\n\n  private async getQuestionaries(): Promise<Questionary[]> {\n    return await this.companyQuestionaryService.getAll();\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          if (!this.model.questionaryId) {\n            this.notification.warning(\"main.test.pages.people.errors.questionarygroup_or_reports_is_missing\");\n          } \n          else {\n            return await this.save();\n          }\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async save(): Promise<any> {\n    return await this.dialogController.ok();\n    }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2> ${'main.testperson.pages.observation_activation.title' & t} </h2> <div class=\\\"row mb-3\\\"> <form class=\\\"col-12 mt-5\\\"> <p> Seleccione el cuestionario</p> <div class=row> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.questionaryId>${'main.test.pages.people.observation.questionaryId' & t}</label> <select value.bind=model.questionaryId class=form-control id=model.questionaryId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of observationQuestionaries\\\" model.bind=option.id>${option.name & t} </option> </select> </div> </div> </div> <div class=row> <div class=col-12> <label>${'main.testperson.pages.person.tags' & t}</label> <company-tags-input value.bind=model.tags /> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> <a class=\\\"btn btn-link collapse-header\\\" data-toggle=collapse href=#collapseAdvanceOptions role=button aria-expanded=false aria-controls=collapseAdvanceOptions> <i class=material-icons>chevron_right</i> ${'main.testperson.pages.person.advanced_options' & t} </a> </p> <div class=collapse id=collapseAdvanceOptions> <div class=row> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=model.hasMicroSite checked.bind=\\\"model.hasMicroSite & validate\\\"/> <label for=model.hasMicroSite class=form-check-label>${'main.test.pages.people.micro_site' & t}</label> </span> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.activation.languageId>${'main.testperson.pages.person.language' & t}</label> <select value.bind=\\\"model.activation.languageId & validate\\\" class=form-control> <option repeat.for=\\\"option of languages\\\" model.bind=option.id>${option.name & t}</option> </select> </div> </div> </div> </div> </div> </div> <div class=row style=margin-bottom:50px> <div class=col> <label>${'main.testperson.pages.person.additional_text' & t}</label> <quill-editor value.bind=\\\"model.additionalText & validate\\\"></quill-editor> </div> </div> <div class=row> <div class=col> <p>&nbsp;</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mt-6\\\"> <div class=col-12> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestPersonObservationUpdate\\\" click.delegate=submit()>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </div> </div> </form> </div> </ux-dialog-body> </ux-dialog> </template> \";","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <h2 class=mb-3> ${'main.testperson.pages.observation_activation.title' & t} </h2> <p> ${'main.testperson.pages.observation_activation.observed_data_title' & t}</p> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label>${'main.admin.pages.users.first_name' & t}</label> <input type=text class=form-control id=firstName t=[placeholder]main.admin.pages.users.first_name value.bind=\\\"model.firstName & validate\\\"> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label>${'main.admin.pages.users.last_name' & t}</label> <input type=text class=form-control id=lastName t=[placeholder]main.admin.pages.users.last_name value.bind=\\\"model.lastName & validate\\\"> </div> </div> </div> <div class=row> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label>${'main.testperson.pages.person.doc_number' & t}</label> <input type=text class=form-control id=model.document t=[placeholder]main.testperson.pages.person.doc_number value.bind=\\\"model.document & validate\\\"> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.email>${'main.test.pages.people.email' & t}</label> <input type=text class=form-control id=model.email t=[placeholder]main.test.pages.people.email value.bind=\\\"model.email & validate\\\"> </div> </div> </div> <div class=row> <div class=\\\"col-12 col-md-6\\\" global-permission-show=\\\"can: TestPersonObservationCreate\\\"> <div class=form-group> <label for=model.questionaryId>${'main.test.pages.people.observation.questionaryId' & t}</label> <select value.bind=\\\"model.activation.questionaryId & validate\\\" class=form-control id=model.activation.questionaryId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of observationQuestionaries\\\" model.bind=option.id>${option.name & t}</option> </select> </div> </div> </div> <div class=row> <div class=col-12> <label>${'main.testperson.pages.person.tags' & t}</label> <company-tags-input value.bind=model.tags /> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> <a class=\\\"btn btn-link collapse-header\\\" data-toggle=collapse href=#collapseAdvanceOptions role=button aria-expanded=false aria-controls=collapseAdvanceOptions> <i class=material-icons>chevron_right</i> ${'main.testperson.pages.person.advanced_options' & t} </a> </p> <div class=collapse id=collapseAdvanceOptions> <div class=row> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=model.hasMicroSite checked.bind=\\\"model.hasMicroSite & validate\\\"/> <label for=model.hasMicroSite class=form-check-label>${'main.test.pages.people.micro_site' & t}</label> </span> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.activation.languageId>${'main.testperson.pages.person.language' & t}</label> <select value.bind=\\\"model.activation.languageId & validate\\\" class=form-control> <option repeat.for=\\\"option of languages\\\" model.bind=option.id>${option.name & t}</option> </select> </div> </div> </div> </div> </div> </div> <div class=row style=margin-bottom:50px> <div class=col> <label>${'main.testperson.pages.person.additional_text' & t}</label> <quill-editor value.bind=\\\"model.additionalText & validate\\\"></quill-editor> </div> </div> <div class=row> <div class=col> <p>&nbsp;</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestPersonObservationCreate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestPersonObservationCreate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: people;\\\" t=main.testperson.pages.person.commands.cancel>Cancel</a> </div> </form> <div class=content-right> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.person.create_card.title' & t} </h5> <p t=[html]main.testperson.pages.person.create_card.info>Create new person</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: person-activation-create;\\\">${'main.testperson.pages.person.create_card.create' & t}</a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonBulkView\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.person_masive_activation.create_card.title' & t} </h5> <p t=[html]main.testperson.pages.person_masive_activation.create_card.info>Create new bulk activation </p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: bulk-activation-list-child-router;\\\" t=main.testperson.pages.person_masive_activation.create_card.create>Bulk Activation</a> </div> </div> </div> </div> </div> </div> </template> \";","import { PersonActivationType } from '../../../../models/test-person/personActivationType';\nimport { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { autoinject, LogManager, bindable, Disposable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { Person } from \"models/test-person/person\";\nimport { ActivationService } from 'main/test/services/people/activation-service';\n\n@autoinject()\nexport class ObservationList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  @bindable\n  public companyId: number;\n\n  @bindable\n  private person: Person;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n\n  constructor(\n    private activationService: ActivationService,\n    private notification: Notification\n  ) {\n    this.logger = LogManager.getLogger(\"ObservationList\");\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.activationService.list(this.parameters, this.person.id)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async bind(): Promise<any> {\n    if (this.person) {\n\n      this.activationService.client.currentCompanyId = this.person.companyId;\n\n      // filter activation by homologation\n      this.parameters.search.PersonActivationType = PersonActivationType.Observed;\n\n      return await this.databind();\n    }\n\n  }\n\n  private async databind(): Promise<any> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<any> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-8\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'main.test.pages.person.person_questionary_list.activation_date' & t}</small></label> ${item.createdOn | dateTimeFormat} </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'tipo' & t}</small></label> ${item.questionaryName} </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'main.test.pages.person.person_questionary_list.evaluator' & t}</small></label> ${item.createdByName} </div> <div class=\\\"col-md-3 col-12 mb-2\\\"> <a global-permission-show=\\\"can: TestPersonObservationUpdate\\\" title=\\\"${'commands.view' & t}\\\" href=company/${companyId}/test/people/person-observation/${person.id}/observers/${item.id}> <i class=material-icons>visibility</i> </a> </div> </div> </li> </ul> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from \"common/store/store-service\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { BulkActivation } from \"../../../../../models/test-person/bulkActivation\";\nimport { FileAcceptValidator } from \"common/utils/file-accept-validator\";\nimport { Language } from 'models/localizations/language';\nimport { CoreLanguageService } from 'main/admin/services/localizations/core-language-service';\nimport config from 'config.js';\n\n@autoinject()\nexport class ObserverBulkActivationModal {\n\n  private logger: Logger;\n\n  public companyId: number;\n\n  private state: State;\n\n  private model: BulkActivation = new BulkActivation();\n\n  private validationController: ValidationController;\n\n  private csvExampleUrl: string = \"\";\n  private xlsxExampleUrl: string = \"\";\n\n  private languages: Language[];\n\n  constructor(\n    private dialogController: DialogController,\n    private store: StoreService,\n    private languageService: CoreLanguageService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory\n    ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"BulkActivationModal\");\n\n    this.state = this.store.state;\n\n    let backendUrl = config.URLS_BACKEND;\n    this.csvExampleUrl = backendUrl + \"/person-content/bulk-observer-example.csv\";\n    this.xlsxExampleUrl = backendUrl + \"/person-content/bulk-observer-example.xlsx\";\n\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"fileName\").displayName(\"main.testperson.pages.masive_activation.field_file\").required()\n      .on(this.model);\n  }\n\n  public async activate(model: BulkActivation): Promise<any> {\n    this.logger.debug(\"activate\");\n\n    this.model = model;\n\n    this.configureValidationRules();\n\n  }\n\n  private async bind(): Promise<any> {\n    // this.logger.debug(\"bind\");\n    try {\n      this.languages = await this.languageService.getAll();\n      this.setUserLanguage();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public setUserLanguage() {\n    this.logger.debug(\"setUserLanguage\");\n    if (this.state && this.state.userBasicInfo) {\n      let activeCulture = this.state.userBasicInfo.culture;\n      let activeLang = this.languages.find(lg => lg.culture === activeCulture);\n      if (activeLang) {\n        this.model.languageId = activeLang.id;\n      }\n    }\n  }\n\n  public async submit(): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          if(!this.model.filedata){\n            this.notification.warning(\"main.test.pages.people.errors.file_is_missing\");\n          } else {\n            return await this.save();\n          }\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async save(): Promise<any> {\n    return await this.dialogController.ok()\n    .then(async () => {\n      await this.dialogController.ok();\n  })\n  .catch(error => {\n    this.notification.error(error);\n  });\n  }\n\n  public setFile($event: any): void {\n    this.logger.debug(\"setFile\");\n    let file = <File>$event.target.files[0];\n\n    let fileValidator = FileAcceptValidator.parse(\"csv, xls, xlsx\", 1024 * 500);\n    if (fileValidator.isValid(file)) {\n      let reader: FileReader = new FileReader();\n      reader.readAsDataURL(file);\n      reader.onload = () => {\n        this.model.fileName = file.name;\n      };\n    }\n    else {\n      this.notification.error(\"main.test.pages.position.position_evaluator_list.file_upload.errors.error_bad_file\");\n\n    }\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2> ${'main.test.pages.position.position_evaluator_list.file_upload.title' & t} </h2> <div class=\\\"row mb-3\\\"> <form class=col-12> <div class=row> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col> <p>${'main.test.pages.position.position_evaluator_list.file_upload.warning' & t}</p> </div> </div> <div class=row> <div class=col> <p>${'main.test.pages.observation.observer.observer_list_.excel_file_warning.info' & t}</p> </div> </div> <div class=row> <div class=col> <i class=\\\"fa fa-file-excel-o\\\" aria-hidden=true></i> <a href=${xlsxExampleUrl}>${'main.test.pages.observation.observer.observer_list.excel_file.info' & t}</a> </div> </div> </div> </div> </div> <div class=row> <div class=col-12> <div class=form-group> <div class=custom-file> <input type=file class=custom-file-input files.bind=model.filedata accept=\\\".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\\\" id=customFile change.delegate=setFile($event)> <label class=custom-file-label for=customFile>${ model.fileName ? model.fileName : 'commons.file' & t}</label> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-enable=\\\"can: TestPersonObservationUpdate\\\" click.delegate=submit()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </form> </div> </ux-dialog-body> </ux-dialog> </template> \";","import { DialogController } from 'aurelia-dialog';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { PersonObserver } from 'models/test-person/personObserver';\nimport { PersonObserverService } from \"main/test/services/people/person-observer-service\";\n\n@autoinject()\nexport class ObserverEditModal {\n\n  private logger: Logger;\n\n  public companyId: number;\n\n  public totalWeight: number;\n\n  private model: PersonObserver = new PersonObserver();\n  private validationController: ValidationController;\n\n  constructor(\n    private dialogController: DialogController,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private personObserverService: PersonObserverService\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ObservationEdit\");\n\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"observerRole\").displayName(\"main.testperson.pages.observation_activation.observator_fields.role\").required()\n      .ensure(\"weight\").displayName(\"main.test.pages.position.position_evaluator_list.weight\").required()\n      .on(this.model);\n\n    ValidationRules\n      .ensure(\"firstName\").displayName(\"main.admin.pages.users.first_name\").required()\n      .ensure(\"lastName\").displayName(\"main.admin.pages.users.last_name\").required()\n      // .ensure(\"email\").displayName(\"main.admin.pages.users.email\").email()\n      .on(this.model.observer);\n  }\n  \n  public async activate(model): Promise<any> {\n    this.model = model;\n    this.totalWeight = 0;\n    const ob = await this.personObserverService.getAll(this.model.observedId);\n    ob.filter(e => e.activationId == this.model.activationId).forEach(e => this.totalWeight += +e.weight);\n    \n    this.configureValidationRules();\n  }\n\n  public async submit(): Promise<void> {\n    if(Number(this.model.weight) + this.totalWeight <= 100) {\n      return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n    } else {\n      this.notification.error(\"main.testperson.pages.observation_activation.observator_fields.weight\");\n    }\n  }\n\n  private async save(): Promise<any> {\n    return await this.dialogController.ok()\n    .then(async () => {\n      await this.dialogController.ok();\n  })\n  .catch(error => {\n    this.notification.error(error);\n  });\n  }\n\n  public notificationInfo(message:string){\n    this.notification.info(message);\n  }\n\n\n}\n","module.exports = \"<template> <require from=../../../../../models/test-person/observerRoleViewEngineHooks></require> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2> ${'main.testperson.pages.observation_activation.observator_data_title' & t} <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.test.pages.observer.data')\\\" role=button> <i class=material-icons>info_outline</i> </a> </h2> <div class=row> <form class=col-12> <div class=form-group> <label for=firstName>${'main.test.pages.people.first_name' & t}</label> <input type=text class=form-control id=firstName t=[placeholder]main.admin.pages.users.first_name value.bind=\\\"model.observer.firstName & validate\\\"> </div> <div class=form-group> <label for=lastName>${'main.test.pages.people.last_name' & t}</label> <input type=text class=form-control id=lastName t=[placeholder]main.admin.pages.users.last_name value.bind=\\\"model.observer.lastName & validate\\\"> </div> <div class=form-group> <label for=email>${'main.testperson.pages.observation_activation.observator_fields.email' & t}</label> <input type=text class=form-control id=email t=[placeholder]main.testperson.pages.observation_activation.observator_fields.email value.bind=\\\"model.observer.email & validate\\\" disabled.bind=model.id> </div> <div class=form-group> <label for=phone>${'main.testperson.pages.person.cell_phone' & t}</label> <input type=text class=form-control id=phone t=[placeholder]main.testperson.pages.person.cell_phone value.bind=\\\"model.observer.phone & validate\\\"> </div> <div class=form-group> <label for=observerRole>${'main.test.pages.people.observer_roles.title' & t}</label> <select value.bind=\\\"model.observerRole & validate\\\" class=form-control id=observerRole> <option repeat.for=\\\"option of ObserverRoles\\\" model.bind=ObserverRole[option]>${'main.test.pages.people.observer_roles.' + option & t}</option> </select> </div> <div class=form-group> <label for=weight>${'main.test.pages.observation_activation.observator_fields.weight' & t}</label> <input type=number class=form-control id=weight t=[placeholder]main.test.pages.observation_activation.observator_fields.weight value.bind=\\\"model.weight & validate\\\"> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </form> </div> </ux-dialog-body> </ux-dialog> </template> \";","import { I18N } from 'aurelia-i18n';\nimport { Person } from '../../../../../models/test-person/person';\nimport { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { autoinject, Disposable, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { PersonService } from \"../../../services/people/person-service\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { PersonObserverService } from \"main/test/services/people/person-observer-service\";\nimport { ObserverEditModal } from './observer-edit-modal';\nimport { DeleteConfirmation } from 'main/components/delete-confirmation';\nimport { PersonObserver } from 'models/test-person/personObserver';\nimport { PersonDeleteModal } from '../../people/person-delete-modal';\nimport { PersonLoginInfoModal } from '../../people/person-login-info-modal';\nimport { DeactivateConfirmation } from 'main/components/deactivate-confirmation';\nimport { BulkActivation } from 'models/test-person/bulkActivation';\nimport { Activation } from 'models/test-person/activation';\nimport { ActivationService } from 'main/test/services/people/activation-service';\nimport { ObserverBulkActivationModal } from './observer-bulk-activation-modal';\nimport { QuestionaryService} from \"../../../../admin/services/questionaries/questionary-service\";\nimport { ActivationConfirmation } from 'main/components/activation-confirmation';\nimport { PeopleQuestionaryActivationModal } from '../../people-questionary/people-questionary-activation-modal';\nimport { ActivationType } from 'models/test-person/activationType';\nimport { PersonActivationType } from 'models/test-person/personActivationType';\nimport { Report } from 'models/test-reports/reports/report';\nimport { ReportService } from '../../../../test-reports/services/report-service';\nimport { EventAggregator } from 'aurelia-event-aggregator';\nimport { PersonDemographicDataEditMessage } from 'main/test/messages/personDemographicDataEditMessage';\nimport { DemographicData } from 'models/microsite/demographicData';\nimport { PersonDemographicDataService } from 'main/test/services/people/person-demographic-data-service';\nimport { PersonQuestionaryActivationMessage } from 'main/test/messages/personActivationMessage';\n\n@autoinject()\nexport class ObserverList {\n\n  private logger: Logger;\n\n  public companyId: number;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private observedId: number;\n  private activationId: number;\n  private activation: Activation;\n  private getdemographicData: boolean = true;\n  private demographicData: DemographicData;\n  \n  private person: Person = new Person();\n  private model: PersonObserver = new PersonObserver();\n  private total: number = 0;\n  private validationController: ValidationController;\n\n  private subscriptions: Disposable[] = [];\n\n  constructor(\n    private router: Router,\n    private i18n: I18N,\n    private dialogService: DialogService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private personService: PersonService,\n    private personObserverService: PersonObserverService,\n    private activationService: ActivationService,\n    private questionariesService: QuestionaryService,\n    private reportService: ReportService,\n    private ea: EventAggregator,\n    private personDemographicDataService: PersonDemographicDataService\n    ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"ObservationEdit\");\n\n    // event when new activation is created\n    this.subscriptions.push(this.ea.subscribe(PersonDemographicDataEditMessage, this.getPersonDemographicData.bind(this, true)));\n\n\n  }\n\n  public async activate(params: any): Promise<any> {\n    if (!isNaN(params.companyId)) {\n      this.companyId = +params.companyId;\n\n      this.personObserverService.client.currentCompanyId = this.companyId;\n      this.personService.client.currentCompanyId = this.companyId;\n\n      if (!isNaN(params.observedId) && !isNaN(params.activationId)) {\n\n        this.observedId = +params.observedId;\n        this.activationId = +params.activationId;\n\n        this.person = await this.getPerson();\n        // await this.databind();\n      }\n    }\n  }\n\n  private async bind(): Promise<any> {\n    return await this.databind();\n  }\n\n  private async getPerson(): Promise<Person> {\n    return await this.personService.getById(this.observedId);\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then(async (response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n        if (this.total === 100)\n        {\n          await this.confirmMoreActivations();\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n  \n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async getPersonDemographicData(getAgain: boolean = false): Promise<any> {\n    if(this.getdemographicData || getAgain){\n      this.demographicData = await this.personDemographicDataService.get(this.person.id);\n      this.getdemographicData = false;\n    }\n  }\n\n  public async create(): Promise<any> {\n    this.logger.info(\"createObserver\");\n\n    let item = new PersonObserver();\n    item.observedId = this.observedId;\n    item.activationId = this.activationId;\n    item.observer = new Person();\n\n    return await this.dialogService.open({\n      viewModel: ObserverEditModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.personObserverService.create(item)\n          .then(() => {\n\n            this.notification.success(\"notifications.item_added\");\n            this.databind();\n\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  public async edit(item: PersonObserver): Promise<any> {\n    this.logger.info(\"editObserver\");\n\n    return await this.dialogService.open({\n      viewModel: ObserverEditModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.personObserverService.update(item)\n          .then(() => {\n            this.notification.success(\"notifications.item_edited\");\n            this.databind();\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      } else {\n        await this.router.navigate(`/company/${this.companyId}/test/people/person-observation/${item.observedId}/observers/${this.activationId}`);\n      }\n    });\n\n  }\n\n  private async delete(item: PersonObserver): Promise<void> {\n    this.logger.info(\"deleteObserver\");\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: item.observer.fullName\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n          \n        return await this.personObserverService.delete(item.id)\n          .then(async () => {\n\n            this.notification.success(\"notifications.item_deleted\");\n\n            await this.databind();\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private async createBulkActivation(): Promise<any> {\n    let item = new BulkActivation();\n    item.observedId = this.observedId;\n    item.activationId = this.activationId;\n    item.name = this.person.fullName;\n\n    return await this.dialogService.open({\n      viewModel: ObserverBulkActivationModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.personObserverService.createBulkActivation(item)\n          .then(() => {\n\n            this.notification.success(\"notifications.item_added\");\n            this.databind();\n\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    try {\n      let response: UxDatatableResponse = await this.personObserverService.list(this.observedId, this.activationId, this.parameters);\n      this.total = await this.personObserverService.getWeightAllEvaluatorsByActivation(this.activationId, this.observedId);\n      this.activation = await this.activationService.getById(this.activationId);\n      return response;\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async sendIndividualReminder(id: number): Promise<boolean> {\n    try {\n      await this.personService.sendReminder(id);\n      this.notification.success(\"main.test.pages.person.send_reminder\");\n      return true;\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async viewLoginInfo(personId: number): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: PersonLoginInfoModal,\n      model: personId\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.sendIndividualReminder(personId);\n      }\n    });\n  }\n\n  private async canDeactivate(): Promise<boolean> {\n    if (this.total === 100) {\n      return true;\n    }\n    else if (this.parameters.totalRecords && this.parameters.totalRecords > 0) {\n      return true;\n    }\n\n    return await this.dialogService.open({\n      viewModel: DeactivateConfirmation,\n      model: this.i18n.tr(\"main.testperson.pages.observation_activation.can_deactivate\")\n    }).whenClosed(async (response: DialogCloseResult) => {\n      return !response.wasCancelled;\n    });\n  }\n\n  public async confirmMoreActivations(): Promise<any> {\n    this.logger.info(\"activationConfirmation\");\n    return await this.dialogService.open({\n      viewModel: ActivationConfirmation,\n      model: this.person.id\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        \n        try {\n          await this.createActivation();\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n      }\n    });\n\n  }\n\n  private async createActivation(): Promise<any> {\n    let item: Activation = new Activation();\n    item.companyId = this.companyId;\n    item.activationType = ActivationType.Person;\n    item.personActivationType = PersonActivationType.Normal;\n\n    return await this.dialogService.open({\n      viewModel: PeopleQuestionaryActivationModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        this.logger.debug(\"response.output\", response.output);\n\n        return await this.activationService.create(item, this.person.id)\n          .then(async (model: Activation) => {\n            item.id = model.id;\n\n            if(response.output){\n              let report = new Report();\n              report = response.output;\n              report.activationId = model.id;\n              report.personId = this.person.id;\n              report = await this.reportService.create(report);\n              }\n\n            this.notification.success(\"notifications.item_added\");            \n\n            // new activation\n            this.ea.publish(new PersonQuestionaryActivationMessage());\n\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { I18N } from \"aurelia-i18n\";\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\n\n@autoinject\nexport class ObserverListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n\n    this.logger = LogManager.getLogger(\"ObserverListChildRouter\");\n  }\n\n  public configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./observer-list\"),\n        nav: true,        \n        name: \"observer-list\",\n        title: this.i18n.tr(\"main.testperson.pages.observation_activation.observers\"),\n      },\n      // {\n      //   route: \"evaluator/:evaluator_id\",\n      //   moduleId: PLATFORM.moduleName(\"./organization-evaluator-edit\"),\n      //   name: \"organization-evaluator-edit\",\n      // },\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=../../../../components/person-header.html></require> <require from=../../../../../models/test-person/activationQuestionaryStatusViewEngineHooks></require> <require from=../../../../../models/test-person/observerRoleViewEngineHooks></require> <div if.bind=!observedId> ${'main.admin.pages.observation.observers.observer_list.msg_first_create_item' & t} </div> <div if.bind=observedId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <person-header person.bind=person></person-header> <div class=\\\"row mb-3\\\"> <div class=col> <h4> ${'main.testperson.pages.observation_activation.observers' & t} ${activation.questionaryName} </h4> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\" if.bind=\\\"item.activationQuestionaryStatus == ActivationQuestionaryStatus.Finalized\\\"> <label class=d-block> <small class=text-muted>${'main.testperson.pages.observation_activation.observator_fields.status' & t}</small> </label> <span class=\\\"badge badge-pill badge-success\\\">${'main.test.pages.person.person_questionary_list.state_' + ActivationQuestionaryStatuses[item.activationQuestionaryStatus] & t} </span> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\" if.bind=\\\"item.activationQuestionaryStatus != ActivationQuestionaryStatus.Finalized\\\"> <label class=d-block> <small class=text-muted>${'main.testperson.pages.observation_activation.observator_fields.status' & t}</small> </label> <span class=\\\"badge badge-pill badge-warning\\\">${'main.test.pages.person.person_questionary_list.state_' + ActivationQuestionaryStatuses[item.activationQuestionaryStatus] & t} </span> </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <div class=mb-2> <label class=d-block> <small class=text-muted>${'main.testperson.pages.observation_activation.observator_fields.observer' & t}</small> </label> <a title=${item.observer.fullName} href=company/${companyId}/test/people/person/${item.observer.id}> ${item.observer.fullName} </a> </div> <div> <label class=d-block> <small class=text-muted>${'main.testperson.pages.observation_activation.observator_fields.email' & t}</small> </label> <span title=${item.observer.email}>${item.observer.email}</span> </div> </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <div class=mb-2> <label class=d-block> <small class=text-muted>${'main.testperson.pages.observation_activation.observator_fields.activation_date' & t}</small> </label> <span title=\\\"${item.createdOn | dateTimeFormat}\\\">${item.createdOn | dateTimeFormat}</span> </div> <div> <label class=d-block> <small class=text-muted>${'main.testperson.pages.observation_activation.observator_fields.filling_date' & t}</small> </label> <span title=\\\"${item.applicationDate | dateTimeFormat}\\\">${item.applicationDate | dateTimeFormat}</span> </div> </div> <div class=\\\"col-md-1 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.testperson.pages.observation_activation.observator_fields.role' & t}</small> </label> <span title=\\\"${'main.test.pages.people.observer_roles.' + ObserverRoles[item.observerRole] & t}\\\">${'main.test.pages.people.observer_roles.' + ObserverRoles[item.observerRole] & t}</span> </div> <div class=\\\"col-md-1 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_evaluator_list.weight' & t}</small> </label> ${item.weight} </div> <div class=\\\"col-md-2 col-12 mt-3\\\"> <a href=# if.bind=item.observer.email click.delegate=sendIndividualReminder(item.observer.id) title.bind=\\\"'commands.send' & t\\\" role=button> <i class=material-icons>email</i> </a> <a href=# click.delegate=viewLoginInfo(item.observer.id) title.bind=\\\"'commands.link' & t\\\" role=button> <i class=material-icons>link</i> </a> <a href=# global-permission-show=\\\"can: TestPersonObservationUpdate\\\" click.delegate=edit(item) role=button> <i class=material-icons title=\\\"${'commands.edit' & t}\\\">edit</i> </a> <a href=# global-permission-show=\\\"can: TestPersonObservationUpdate\\\" click.delegate=delete(item) title.bind=\\\"'commands.archive' & t\\\" role=button> <i class=material-icons>archive</i> </a> </div> </div></li></ul> <ul class=list-group> <div class=\\\"col-md-4 offset-md-9\\\"><u>${total}</u></div> </ul> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonObservationCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.observation_activation.observator_card.title' & t} </h5> <p t=[html]main.testperson.pages.observation_activation.observator_card.info>Create new observer</p> <button class=\\\"btn btn-primary btn-round\\\" t=main.testperson.pages.observation_activation.observator_card.command click.delegate=create()>New Person</button> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonObservationUpdate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.test.pages.position.position_evaluator_list.file_upload_card.title' & t} </h5> <p t=[html]main.test.pages.observation.observers.file_upload_card.info>Create news observers</p> <button class=\\\"btn btn-primary btn-round\\\" t=main.test.pages.position.position_evaluator_list.file_upload_card.upload click.delegate=createBulkActivation()>Upload </button> </div> </div> </div> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { Disc } from \"models/questionaries/disc\";\nimport { DiscAdjective } from \"models/test-core/discAdjective\";\nimport { DiscAdjectiveService } from \"../../services/core/disc-adjective-service\";\nimport { Result } from \"models/test-result/result\";\nimport { ResultService } from \"../../services/result/result-service\";\nimport { Organization } from \"models/test-organization/organization\";\nimport { OrganizationService } from \"main/test/services/organization/organization-service\";\n\n@autoinject()\nexport class OrganizationDiscEdit {\n\n  private logger: Logger;\n  public companyId: number;\n\n  private organizationId: number;\n  private model: Organization = new Organization();\n\n  private validationController: ValidationController;\n  private organizationDiscList: Result[] = [];\n  private discAdjetives: DiscAdjective[] = [];\n\n  constructor(\n    private router: Router,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private organizationService: OrganizationService,\n    private resultService: ResultService,\n    private discAdjectiveService: DiscAdjectiveService\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"PositionDiscEdit\");\n  }\n\n  public async activate(params: any): Promise<any> {\n    try {\n      if (!isNaN(params.companyId)) {\n        this.companyId = +params.companyId;\n\n        this.organizationService.client.currentCompanyId = this.companyId;\n        this.resultService.client.currentCompanyId = this.companyId;\n\n\n        if (!isNaN(params.organizationId)) {\n          this.organizationId = +params.organizationId;\n\n          this.model = await this.getItem(this.organizationId);\n          this.organizationDiscList = await this.getOrganizationDisc(this.organizationId);\n        }\n\n        const adjectives = await this.getDiscAdjetives();\n\n        this.discAdjetives = adjectives.map(itm => {\n          let range = itm.scoreRange.split('-');\n          let minRange = parseInt((range[0] || '0').trim());\n          let maxRange = parseInt((range[1] || '0').trim());\n          itm['min'] = minRange;\n          itm['max'] = maxRange;\n          return itm;\n        });\n      }\n    } catch (error) {\n      this.notification.error(error);\n    }\n\n  }\n\n  private async getItem(itemId: number): Promise<Organization> {\n    return await this.organizationService.getById(itemId);\n  }\n\n  private async getDiscAdjetives(): Promise<DiscAdjective[]> {\n    return await this.discAdjectiveService.getAll();\n  }\n\n  private async getOrganizationDisc(organizationId: number): Promise<Result[]> {\n\n    let allOrgDisc = await this.resultService.getAllByOrganizationId(organizationId);\n    let discIds = Object.keys(Disc).filter(k => typeof Disc[k] !== 'number');\n\n    let orgDiscList: Result[] = [];\n\n    discIds.forEach(itm => {\n      let filteredItems = allOrgDisc.filter(p => Disc[p.disc] === Disc[itm]);\n\n      if (filteredItems.length) {\n        orgDiscList.push({\n          organizationId: this.organizationId,\n          disc: Disc[itm],\n          value: filteredItems[0].value\n        })\n      } else {\n        orgDiscList.push({\n          organizationId: this.organizationId,\n          disc: Disc[itm],\n          value: 50\n        })\n      }\n    })\n\n    return orgDiscList;\n  }\n\n  private calculateLabel(value: number, disc: Disc): string {\n    // this.logger.debug(\"calculateLabel: \" + disc + value);\n    const itm = this.discAdjetives.find((itm: any) => value >= itm.min && value <= itm.max && itm.disc === Disc[disc]);\n    return itm ? itm.name : '';\n  }\n\n  private async changeItem(item): Promise<any> {\n    if (item) {\n      this.organizationDiscList = await this.getOrganizationDisc(item);\n    }\n  }\n\n  public async submit(): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  get canSave() {\n    return !this.organizationService.client.isRequesting;\n  }\n\n  private async save(): Promise<any> {\n\n    let promises = [];\n    // Person Data\n    // create stamp\n    this.model.stamp = Math.random().toString(36).substring(2) + (new Date()).getTime().toString(36);\n\n    // get highest disc\n    let maxItem: any = { value: 0 };\n    this.organizationDiscList.forEach(itm => {\n      if (maxItem.value < itm.value) {\n        maxItem = itm;\n      }\n    });\n\n    this.model.highestDisc = maxItem.disc;\n\n    this.organizationDiscList.forEach(itm => {\n      itm.stamp = this.model.stamp;\n      promises.push(this.resultService.createToOrganization(itm));\n    });\n\n    Promise.all(promises)\n      .then(async () => this.organizationService.update(this.model))\n      .then(async () => this.notification.success(\"notifications.item_edited\"))\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n}\n","module.exports = \"<template> <require from=../../../../models/test-organization/organizationActivationTypeViewEngineHooks></require> <require from=../../../../models/questionaries/discViewEngineHooks></require> <require from=../../../../models/questionaries/disc></require> <div if.bind=!organizationId> ${'main.test.pages.organizations.organization_evaluator_list.msg_first_create_item' & t} </div> <div if.bind=organizationId> <h2> ${'main.test.pages.organizations.disc' & t} / ${model.name} </h2> <div class=\\\"content-container row mb-3\\\" if.bind=\\\"model.organizationActivationType != OrganizationActivationType.Direct\\\"> <div class=content-main> <p>${'main.test.pages.organizations.organization_type_is_not_direct' & t}</p> </div> </div> <div class=\\\"content-container row mb-3\\\" if.bind=\\\"model.organizationActivationType == OrganizationActivationType.Direct\\\"> <form class=content-main> <hr/> <div class=\\\"alert alert-info mt-3\\\" role=alert> <p> ${'main.test.pages.disc_homologation.warning' & t} </p> </div> <div class=row> <div class=col-12> <div class=row repeat.for=\\\"option of organizationDiscList\\\"> <div class=col-1> <label>${option.disc}</label> </div> <div class=col-6> <ux-range-input value.bind=option.value></ux-range-input> </div> <div class=col> <input type=number class=form-control id=disc[${option.disc}] value.bind=\\\"option.value & validate\\\"> </div> <div class=col-2> <label>${calculateLabel(option.value, option.disc) & t}</label> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestPositionUpdate\\\" click.delegate=submit() disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: organizations;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from \"common/store/store-service\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { BulkActivation } from '../../../../models/test-person/bulkActivation';\nimport { FileAcceptValidator } from \"common/utils/file-accept-validator\";\nimport { Language } from 'models/localizations/language';\nimport { CoreLanguageService } from 'main/admin/services/localizations/core-language-service';\nimport config from 'config.js';\n\n@autoinject()\nexport class OrganizationEvaluatorBulkActivationModal {\n\n  private logger: Logger;\n\n  public companyId: number;\n\n  private state: State;\n\n  private model: BulkActivation = new BulkActivation();\n\n  private validationController: ValidationController;\n\n  private csvExampleUrl: string = \"\";\n  private xlsxExampleUrl: string = \"\";\n\n  private languages: Language[];\n\n  constructor(\n    private dialogController: DialogController,\n    private store: StoreService,\n    private languageService: CoreLanguageService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory\n    ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"OrganizationEvaluatorBulkActivationModal\");\n\n    this.state = this.store.state;\n\n    let backendUrl = config.URLS_BACKEND;\n    this.csvExampleUrl = backendUrl + \"/person-content/bulk-evaluator-example.csv\";\n    this.xlsxExampleUrl = backendUrl + \"/person-content/bulk-evaluator-example.xlsx\";\n\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"fileName\").displayName(\"main.testperson.pages.masive_activation.field_file\").required()\n      .on(this.model);\n  }\n\n  public async activate(model: BulkActivation): Promise<any> {\n    this.logger.debug(\"activate\");\n\n    this.model = model;\n\n    this.configureValidationRules();\n\n  }\n\n  private async bind(): Promise<any> {\n    // this.logger.debug(\"bind\");\n    try {\n      this.languages = await this.languageService.getAll();\n      this.setUserLanguage();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public setUserLanguage() {\n    this.logger.debug(\"setUserLanguage\");\n    if (this.state && this.state.userBasicInfo) {\n      let activeCulture = this.state.userBasicInfo.culture;\n      let activeLang = this.languages.find(lg => lg.culture === activeCulture);\n      if (activeLang) {\n        this.model.languageId = activeLang.id;\n      }\n    }\n  }\n\n  public async submit(): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          if(!this.model.filedata){\n            this.notification.warning(\"main.test.pages.people.errors.file_is_missing\");\n          } else {\n            return await this.save();\n          }\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async save(): Promise<any> {\n    return await this.dialogController.ok();\n  }\n\n  public setFile($event: any): void {\n    this.logger.debug(\"setFile\");\n    let file = <File>$event.target.files[0];\n\n    let fileValidator = FileAcceptValidator.parse(\"csv, xls, xlsx\", 1024 * 500); // 500kb size\n    if (fileValidator.isValid(file)) {\n      let reader: FileReader = new FileReader();\n      reader.readAsDataURL(file);\n      reader.onload = () => {\n        this.model.fileName = file.name;\n      };\n    }\n    else {\n      this.notification.error(\"main.test.pages.organization.organization_evaluator_list.file_upload.errors.error_bad_file\");\n\n    }\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2> ${'main.test.pages.organization.organization_evaluator_list.file_upload.title' & t} </h2> <div class=\\\"row mb-3\\\"> <form class=col-12> <div class=row> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col> <p>${'main.test.pages.organization.organization_evaluator_list.file_upload.warning' & t}</p> </div> </div> <div class=row> <div class=col> <i class=\\\"fa fa-file-excel-o\\\" aria-hidden=true></i> <a href=${xlsxExampleUrl}>${'main.test.pages.organization.organization_evaluator_list.excel_file.info' & t}</a> </div> </div> </div> </div> </div> <div class=row> <div class=col-12> <div class=form-group> <div class=custom-file> <input type=file class=custom-file-input files.bind=model.filedata accept=\\\".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\\\" id=customFile change.delegate=setFile($event)> <label class=custom-file-label for=customFile>${ model.fileName ? model.fileName : 'commons.file' & t}</label> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-enable=\\\"can: TestorganizationUpdate\\\" click.delegate=submit()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </form> </div> </ux-dialog-body> </ux-dialog> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { OrganizationEvaluator } from \"models/test-organization/organizationEvaluator\";\nimport { DialogController } from \"aurelia-dialog\";\n\n@autoinject()\nexport class OrganizationEvaluatorEditModal {\n\n  private logger: Logger;\n\n  private model: OrganizationEvaluator = new OrganizationEvaluator();\n\n  private validationController: ValidationController;\n\n  constructor(\n    private dialogController: DialogController,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n  ) {\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"OrganizationEvaluatorEdit\");\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"weight\").displayName(\"main.test.pages.organizations.organization_evaluator_edit.weight\").required()\n      .on(this.model);\n\n    ValidationRules\n      .ensure(\"firstName\").displayName(\"main.test.pages.organizations.organization_evaluator_edit.firstName\").required()\n      .ensure(\"lastName\").displayName(\"main.test.pages.organizations.organization_evaluator_edit.lastName\").required()\n      .ensure(\"email\").displayName(\"main.test.pagesorganizations.organization_evaluator_edit.email\").email()\n      .on(this.model.evaluator);\n  }\n  public async activate(model: OrganizationEvaluator): Promise<any> {\n    this.model = model;\n    this.configureValidationRules();\n\n  }\n\n  public async submit(): Promise<void> {\n    // this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          this.save();\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async save(): Promise<any> {\n    this.dialogController.ok();\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2> ${'main.test.pages.organizations.organization_evaluator_edit.title' & t} </h2> <div class=\\\"row mb-3\\\"> <form class=col-12> <div class=form-group> <label>${'main.test.pages.organizations.organization_evaluator_edit.firstName' & t}</label> <input type=text class=form-control id=firstName t=[placeholder]main.test.pages.organizations.organization_evaluator_edit.firstName value.bind=\\\"model.evaluator.firstName & validate\\\" disabled.bind=edit_mode> </div> <div class=form-group> <label>${'main.test.pages.organizations.organization_evaluator_edit.lastName' & t}</label> <input type=text class=form-control id=lastName t=[placeholder]main.test.pages.organizations.organization_evaluator_edit.lastName value.bind=\\\"model.evaluator.lastName & validate\\\" disabled.bind=edit_mode> </div> <div class=form-group> <label>${'main.test.pages.organizations.organization_evaluator_edit.email' & t}</label> <input type=text class=form-control id=email t=[placeholder]main.test.pages.organizations.organization_evaluator_edit.email value.bind=\\\"model.evaluator.email & validate\\\" disabled.bind=edit_mode> </div> <div class=form-group> <label>${'main.test.pages.organizations.organization_evaluator_edit.phone' & t}</label> <input type=text class=form-control id=phone t=[placeholder]main.test.pages.organizations.organization_evaluator_edit.phone value.bind=\\\"mode.evaluatorl.phone & validate\\\" disabled.bind=edit_mode> </div> <div class=form-group> <label>${'main.test.pages.organizations.organization_evaluator_edit.weight' & t}</label> <input type=number class=form-control id=weight t=[placeholder]main.test.pages.organizations.organization_evaluator_edit.weight value.bind=\\\"model.weight & validate\\\"> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-enable=\\\"can: TestOrganizationUpdate\\\" click.delegate=submit()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </div> </div> </form> </div> </ux-dialog-body> </ux-dialog> </template> \";","import { OrganizationService } from 'main/test/services/organization/organization-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { OrganizationEvaluatorService } from \"main/test/services/organization/organization-evaluator-service\";\nimport { Organization } from \"models/test-organization/organization\";\nimport { OrganizationEvaluator } from 'models/test-organization/organizationEvaluator';\nimport { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { OrganizationEvaluatorEditModal } from './organization-evaluator-edit-modal';\nimport { DeleteConfirmation } from 'main/components/delete-confirmation';\nimport { I18N } from 'aurelia-i18n';\nimport { DeactivateConfirmation } from 'main/components/deactivate-confirmation';\nimport { OrganizationActivationType } from 'models/test-organization/organizationActivationType';\nimport { BulkActivation } from 'models/test-person/bulkActivation';\nimport { OrganizationEvaluatorBulkActivationModal } from './organization-evaluator-bulk-activation-modal';\nimport { Person } from 'models/test-person/person';\nimport { PersonLoginInfoModal } from '../people/person-login-info-modal';\nimport { PersonService } from 'main/test/services/people/person-service';\nimport config from 'config.js';\n\n@autoinject()\nexport class OrganizationEvaluatorList {\n\n  private logger: Logger;\n  private params: any = {};\n  public companyId: number;\n\n  private organizationId: number;\n  private model: Organization = new Organization();\n  private total: number = 0;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private csvExampleUrl: string = \"\";\n  private xlsxExampleUrl: string = \"\";\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    try {\n      let response: UxDatatableResponse = await this.organizationEvaluatorService.list(this.parameters, this.organizationId);\n      this.total = await this.organizationEvaluatorService.getWeightAllEvaluators(this.organizationId);\n      return response;\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  constructor(\n    private i18n: I18N,\n    private organizationService: OrganizationService,\n    private organizationEvaluatorService: OrganizationEvaluatorService,\n    private personService: PersonService,\n    private notification: Notification,\n    private dialogService: DialogService\n  ) {\n\n    this.logger = LogManager.getLogger(\"OrganizationEvaluatorList\");\n\n    let backendUrl = config.URLS_BACKEND;\n    this.csvExampleUrl = backendUrl + \"/person-content/bulk-evaluator-example.csv\";\n    this.xlsxExampleUrl = backendUrl + \"/person-content/bulk-evaluator-example.xlsx\";\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.params = params;\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n      this.companyId = +this.params.companyId;\n\n      if (!isNaN(this.params.organizationId)) {\n        this.organizationId = this.params.organizationId;\n\n        this.organizationService.client.currentCompanyId = this.companyId;\n        this.organizationEvaluatorService.client.currentCompanyId = this.companyId;\n\n        this.model = await this.organizationService.getById(this.organizationId);\n\n        return await this.databind();\n      }\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then(async (response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n\n  private async create(): Promise<any> {\n    let item = new OrganizationEvaluator();\n    item.organizationId = this.model.id;\n\n    return await this.dialogService.open({\n      viewModel: OrganizationEvaluatorEditModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.organizationEvaluatorService.create(item)\n          .then(async () => {\n\n            this.notification.success(\"notifications.item_added\");\n\n            await this.databind();\n\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n\n  private async update(item: OrganizationEvaluator): Promise<any> {\n\n    return await this.dialogService.open({\n      viewModel: OrganizationEvaluatorEditModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.organizationEvaluatorService.update(item)\n          .then(async () => {\n\n            this.notification.success(\"notifications.item_added\");\n\n            await this.databind();\n\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private async delete(item: OrganizationEvaluator): Promise<void> {\n    \n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: item.evaluator.fullName\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        return await this.organizationEvaluatorService.delete(item.id)\n          .then(async () => {\n\n            this.notification.success(\"notifications.item_deleted\");\n\n            await this.databind();\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n\n      }\n    });\n  }\n\n  private async createBulkActivation(): Promise<any> {\n    let item = new BulkActivation();\n    item.organizationId = this.model.id;\n    item.name = this.model.name;\n\n    return await this.dialogService.open({\n      viewModel: OrganizationEvaluatorBulkActivationModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.organizationEvaluatorService.createBulkActivation(item)\n          .then(async () => {\n\n            this.notification.success(\"notifications.item_added\");\n\n            await this.databind();\n\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private async sendIndividualReminder(id: number): Promise<boolean> {\n    try {\n      await this.personService.sendReminder(id);\n      this.notification.success(\"main.test.pages.person.send_reminder\");\n      return true;\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async viewLoginInfo(personId: number): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: PersonLoginInfoModal,\n      model: personId\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.sendIndividualReminder(personId);\n      }\n    });\n  }\n\n\n  private async canDeactivate(): Promise<boolean> {\n\n    if (this.total === 100 || this.model.organizationActivationType !== OrganizationActivationType.Concerted) {\n      return true;\n    }\n\n    return await this.dialogService.open({\n      viewModel: DeactivateConfirmation,\n      model: this.i18n.tr(\"main.test.pages.organizations.organization_evaluator_list.can_deactivate\")\n    }).whenClosed(async (response: DialogCloseResult) => {\n      return !response.wasCancelled;\n    });\n  }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { I18N } from \"aurelia-i18n\";\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\n\n@autoinject\nexport class OrganizationEvaluatorListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor (\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n\n    this.logger = LogManager.getLogger( \"OrganizationEvaluatorListChildRouter\" );\n  }\n\n  public configureRouter ( config: RouterConfiguration, router: Router ): void {\n    this.router = router;\n    config.map( [\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./organization-evaluator-list\"),\n        name: \"organization-evaluator-list\",\n      },\n      // {\n      //   route: \"evaluator/:evaluator_id\",\n      //   moduleId: PLATFORM.moduleName(\"./organization-evaluator-edit\"),\n      //   name: \"organization-evaluator-edit\",\n      // },\n    ] );\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=../../../../models/test-person/activationQuestionaryStatusViewEngineHooks></require> <require from=../../../../models/test-organization/organizationActivationTypeViewEngineHooks></require> <div if.bind=!organizationId> ${'main.test.pages.organizations.organization_evaluator_list.msg_first_create_item' & t} </div> <div if.bind=organizationId> <h2> ${'main.test.pages.organizations.organization_evaluator_list.title' & t} / ${model.name} </h2> <hr/> <div class=\\\"content-container row mb-3\\\" if.bind=\\\"model.organizationActivationType != OrganizationActivationType.Concerted\\\"> <div class=content-main> <p>${'main.test.pages.organizations.organization_type_is_not_concerted' & t}</p> </div> </div> <div class=\\\"content-container row mb-3\\\" if.bind=\\\"model.organizationActivationType == OrganizationActivationType.Concerted\\\"> <div class=content-main> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\" if.bind=\\\"item.activationQuestionaryStatus == ActivationQuestionaryStatus.Finalized\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.state' & t}</small> </label> <span class=\\\"badge badge-pill badge-success\\\">${'main.test.pages.person.person_questionary_list.state_' + ActivationQuestionaryStatuses[item.activationQuestionaryStatus] & t}</span></div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\" if.bind=\\\"item.activationQuestionaryStatus != ActivationQuestionaryStatus.Finalized\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.state' & t}</small> </label> <span class=\\\"badge badge-pill badge-warning\\\">${'main.test.pages.person.person_questionary_list.state_' + ActivationQuestionaryStatuses[item.activationQuestionaryStatus] & t}</span></div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <div class=mb-2> <a title=${item.evaluator.fullName} href=company/${companyId}/test/people/person/${item.evaluator.id}> ${item.evaluator.fullName} </a> </div> <div class=\\\"text-truncate mb-2\\\"> <span title=${item.evaluator.email}>${item.evaluator.email}</span> </div> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <div class=mb-2> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.activation_date' & t}</small> </label> <span title=\\\"${item.createdOn | dateTimeFormat}\\\">${item.createdOn | dateTimeFormat}</span> </div> <div> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.application_date' & t}</small> </label> <span title=\\\"${item.applicationDate | dateTimeFormat}\\\">${item.applicationDate | dateTimeFormat}</span> </div> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.evaluator' & t}</small> </label> <span title=${item.createdByName}>${item.createdByName}</span> </div> <div class=\\\"col-md-1 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.organizations.organization_evaluator_list.weight' & t}</small> </label> ${item.weight} </div> <div class=\\\"col-md-2 col-12 mb-2\\\"> <a href=# if.bind=item.evaluator.email click.delegate=sendIndividualReminder(item.id) title.bind=\\\"'commands.send' & t\\\" role=button> <i class=material-icons>email</i> </a> <a href=# click.delegate=viewLoginInfo(item.evaluator.id) title.bind=\\\"'commands.link' & t\\\" role=button> <i class=material-icons>link</i> </a> <a href=# global-permission-show=\\\"can: TestCompanyUpdate\\\" click.delegate=update(item) role=button> <i class=material-icons title=\\\"${'commands.edit' & t}\\\">edit</i> </a> <a href=# global-permission-show=\\\"can: TestCompanyUpdate\\\" click.delegate=delete(item) title.bind=\\\"'commands.archive' & t\\\" role=button> <i class=material-icons>archive</i> </a> </div> </div> </li> </ul> <ul class=list-group> <div class=\\\"col-md-4 offset-md-9\\\"><u>${total}</u></div> </ul> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\" if.bind=\\\"model.highestDisc >= 0\\\"> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=main.test_reports.pages.reports.create_card.title></h5> <p class=card-text t=[html]main.admin.pages.reports.create_card.info>Lorem</p> <a class=\\\"btn btn-primary btn-round\\\" title=\\\"${'commands.generate' & t}\\\" href=\\\"company/${companyId}/test-reports/reports?organizationId=${model.id}\\\"> ${'commands.generate' & t} </a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestOrganizationUpdate\\\" if.bind=\\\"model.highestDisc == null\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.test.pages.organization.organization_evaluator_list.card_create' & t} </h5> <p t=[html]main.test.pages.organization.organization_evaluator_list.card_create_info>Create new </p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create() t=commands.create>New  </button></div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestOrganizationUpdate\\\" if.bind=\\\"model.highestDisc == null\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.test.pages.organization.organization_evaluator_list.file_upload_card.title' & t} </h5> <p t=[html]main.test.pages.organization.organization_evaluator_list.file_upload_card.info>Bulk create </p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=createBulkActivation() t=main.test.pages.organization.organization_evaluator_list.file_upload_card.upload>Upload </button> </div> </div> </div> </div> </div> </div> </div> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class OrganizationChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"OrganizationChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./organization-edit\"),\n        name: \"organization-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.organizations.organization\"),\n      },\n\n      {\n        route: \"evaluators\",\n        moduleId: PLATFORM.moduleName(\"../organization-evaluator/organization-evaluator-list-child-router\"),\n        name: \"organization-evaluator-list-child-router\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.organizations.evaluators\"),\n      },\n\n      {\n        route: \"disc\",\n        moduleId: PLATFORM.moduleName(\"../organization-disc/organization-disc-edit\"),\n        name: \"organization-disc-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.organizations.disc\"),\n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","import { CompanyQuestionaryService } from 'main/admin/services/test-management/company-questionary-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { QuestionaryType } from \"models/questionaries/questionaryType\";\nimport { ItemToQualify } from \"models/questionaries/itemToQualify\";\nimport { OrganizationService } from \"main/test/services/organization/organization-service\";\nimport { Organization } from \"models/test-organization/organization\";\nimport { OrganizationActivationType } from 'models/test-organization/organizationActivationType';\n\n\n@autoinject()\nexport class OrganizationEdit {\n\n  private logger: Logger;\n  public companyId: number;\n\n  private organizationId: number;\n\n  private model: Organization = new Organization();\n  private validationController: ValidationController;\n\n  private orgDiscQuestionaries: Questionary[] = [];\n\n  constructor(\n    private router: Router,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private organizationService: OrganizationService,\n    private companyQuestionaryService: CompanyQuestionaryService,\n  ) {\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"OrganizationEdit\");\n    this.model.tags = \"\";\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.test.pages.organizations.name\").required()\n      .ensure(\"organizationType\").displayName(\"main.test.pages.organizations.organization_types.title\").required()\n      .ensure(\"organizationActivationType\").displayName(\"main.test.pages.organizations.activation_types.title\").required()\n      .ensure(\"questionaryId\").displayName(\"main.test.pages.organizations.questionaryId\").required()\n      .on(this.model);\n  }\n\n  public async activate(params: any): Promise<any> {\n    if (!isNaN(params.companyId)) {\n      try {\n        this.companyId = +params.companyId;\n        this.organizationService.client.currentCompanyId = this.companyId;\n        this.companyQuestionaryService.client.currentCompanyId = this.companyId;\n        const questionaries = await this.getQuestionaries();\n        this.orgDiscQuestionaries = questionaries.filter(itm => (itm.questionaryType === QuestionaryType.Disc && itm.itemToQualify === ItemToQualify.Organization))\n        if (!isNaN(params.organizationId)) {\n          this.organizationId = params.organizationId;\n          this.model = await this.getItem();\n        }\n        this.configureValidationRules();\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n  private async getItem(): Promise<Organization> {\n    return await this.organizationService.getById(this.organizationId)\n  }\n\n  private async getQuestionaries(): Promise<Questionary[]> {\n    return await this.companyQuestionaryService.getAll();\n  }\n\n  get canSave() {\n    return !this.organizationService.client.isRequesting;\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          if (this.organizationId) {\n            return await this.update(keepEditing);\n          } else {\n            return await this.create(keepEditing);\n          }\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async create(keepEditing: boolean): Promise<any> {\n    return await this.organizationService.create(this.model)\n      .then(async (result: Organization) => {\n        this.notification.success(\"notifications.item_edited\");\n        if (keepEditing) {\n          if (this.model.organizationActivationType == OrganizationActivationType.Direct) {\n            return await this.router.parent.navigate(`organization/${result.id}/disc`);\n          }\n          else if (this.model.organizationActivationType == OrganizationActivationType.Concerted) {\n            return await this.router.parent.navigate(`organization/${result.id}/evaluators`);\n          }\n          else if (this.model.organizationActivationType == OrganizationActivationType.Individual) {\n            this.notification.info(\"notifications.email_sent\")\n          }\n\n          else {\n            return await this.router.navigateToRoute(\"organizations\");\n          }\n        }\n        })\n\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async update(keepEditing: boolean): Promise<any> {\n    return await this.organizationService.update(this.model)\n      .then(async () => {\n        this.notification.success(\"notifications.item_edited\");\n\n        if (!keepEditing) {\n          return await this.router.navigateToRoute(\"organizations\");\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n}\n","module.exports = \"<template> <require from=../../../../models/test-organization/organizationActivationTypeViewEngineHooks></require> <require from=../../../../models/questionaries/organizationTypeViewEngineHooks></require> <h2> ${'main.test.pages.organizations.organization' & t} / ${model.name} </h2> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <div class=row if.bind=\\\"model.id > 0\\\"> <div class=\\\"col-md-6 col-12\\\"> <h5> ${'main.test.pages.organizations.activation_types.title' & t} ${'main.test.pages.organizations.activation_types.' + OrganizationActivationType[model.organizationActivationType] & t} </h5> </div> </div> <div class=row> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label>${'main.test.pages.organizations.name' & t}</label> <input type=text class=form-control id=name t=[placeholder]main.test.pages.organizations.name value.bind=\\\"model.name & validate\\\"> </div> <div class=form-group> <div class=\\\"custom-control custom-radio custom-control-inline\\\"> <input class=custom-control-input type=radio name=model.organizationType id=model.organizationType model.bind=OrganizationType.Actual checked.bind=model.organizationType> <label class=custom-control-label for=model.organizationType>${'main.test.pages.organizations.organization_types.Actual' & t}</label> </div> <div class=\\\"custom-control custom-radio custom-control-inline\\\"> <input class=custom-control-input type=radio name=model.organizationType id=model.organizationType2 model.bind=OrganizationType.Ideal checked.bind=model.organizationType> <label class=custom-control-label for=model.organizationType2>${'main.test.pages.organizations.organization_types.Ideal' & t}</label> </div> </div> <div class=form-group> <label>${'main.test.pages.organizations.tags' & t}</label> <company-tags-input value.bind=model.tags /> </div> </div> </div> <div class=row if.bind=!organizationId> <div class=\\\"col-12 col-md-6\\\"> <div class=\\\"alert alert-info mt-3\\\" role=alert> <p> ${'main.test.pages.organizations.activation_types.concerted_suggestion' & t} </p> </div> </div> </div> <div class=row if.bind=!organizationId> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.organizationActivationType>${'main.test.pages.organizations.activation_types.title' & t}</label> <select value.bind=\\\"model.organizationActivationType & validate\\\" class=form-control id=activationType> <option repeat.for=\\\"option of OrganizationActivationTypes\\\" model.bind=OrganizationActivationType[option]>${'main.test.pages.organizations.activation_types.' + option & t}</option> </select> <div class=\\\"alert alert-info mt-3\\\" role=alert> <p if.bind=\\\"model.organizationActivationType == OrganizationActivationType.Individual\\\"> ${'main.test.pages.organizations.activation_types.individual_description' & t} </p> <p if.bind=\\\"model.organizationActivationType == OrganizationActivationType.Direct\\\"> ${'main.test.pages.organizations.activation_types.direct_description' & t} </p> <p if.bind=\\\"model.organizationActivationType == OrganizationActivationType.Concerted\\\"> ${'main.test.pages.organizations.activation_types.concerted_description' & t} </p> </div> </div> <div class=form-group if.bind=\\\"model.organizationActivationType === OrganizationActivationType.Individual || model.organizationActivationType === OrganizationActivationType.Concerted\\\"> <label for=model.questionaryId>${'main.test.pages.organizations.questionaryId' & t}</label> <select value.bind=\\\"model.questionaryId & validate\\\" class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of orgDiscQuestionaries | filter:'organizationType':model.organizationType\\\" model.bind=option.id>${option.name & t}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestCompanyCreate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestCompanyCreate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: organizations;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> <div class=content-sidebar> <div class=\\\"row mb-3\\\" if.bind=\\\"model.highestDisc >= 0\\\"> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=main.test_reports.pages.reports.create_card.title></h5> <p class=card-text t=[html]main.admin.pages.reports.create_card.info>Lorem</p> <a class=\\\"btn btn-primary btn-round\\\" title=\\\"${'main.test_reports.pages.reports.create_card.title' & t}\\\" href=\\\"company/${companyId}/test-reports/reports?organizationId=${model.id}\\\"> ${'commands.view' & t} </a> <a class=\\\"btn btn-primary btn-round\\\" title=\\\"${'commands.generate' & t}\\\" href=\\\"company/${companyId}/test-reports/reports/report/3?organizationId=${model.id}\\\"> ${'commands.generate' & t} </a> </div> </div> </div> </div> </div> </div> </template> \";","import { DialogController, DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { Company } from \"models/companies/company\";\nimport { OrganizationService } from \"main/test/services/organization/organization-service\";\nimport { Organization } from \"models/test-organization/organization\";\nimport { DeleteConfirmation } from 'main/components/delete-confirmation';\nimport { FilteredReminderConfirmationModal } from '../people/filtered-reminder-confirmation-modal';\n\n@autoinject()\nexport class OrganizationList {\n\n  private logger: Logger;\n  private params: any = {};\n  public companyId: number;\n  private company: Company;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    let search = this.parameters.search.Query;\n    sessionStorage.setItem('organizationListSearch', search == null ? '' : search);\n\n    return await this.organizationService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  constructor(\n    private router: Router,\n    private dialogService: DialogService,\n    private organizationService: OrganizationService,\n    private notification: Notification\n  ) {\n\n    this.logger = LogManager.getLogger(\"OrganizationList\");\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.parameters.search.Query = sessionStorage.getItem('organizationListSearch');\n    this.params = params;\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n      this.logger.debug(\"activate companyId:\", this.params.companyId);\n      this.companyId = +this.params.companyId;\n\n      this.organizationService.client.currentCompanyId = this.companyId;\n\n      return await this.databind();\n\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async delete(item: Organization): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: item.name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        return await this.organizationService.delete(item.id)\n          .then(() => {\n            let indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(item.id.toString());\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.notification.success(\"notifications.item_deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n\n      }\n    });\n  }\n\n  private async clearFilters() : Promise<any> {\n    this.parameters.search.Query = this.parameters.search.StartDate = this.parameters.search.EndDate = null;\n    await this.databind();\n  }\n\n  private async sendFilteredReminder(): Promise<boolean| DialogCloseResult> {\n    return await this.dialogService.open({\n      viewModel: FilteredReminderConfirmationModal,\n      model: this.parameters.tableData.length\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        return await this.organizationService.sendRemindersByFilter(this.parameters)\n          .then(() => {\n            this.notification.success(\"main.test.pages.person.send_reminder_list\")\n            return true;\n          });\n      }\n    });\n  }\n\n  private async sendReminder(id: number): Promise<boolean> {\n    try {\n      await this.organizationService.sendReminder(id);\n      this.notification.success(\"main.test.pages.person.send_reminder\");\n      return true;\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { I18N } from \"aurelia-i18n\";\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\n\n@autoinject\nexport class OrganizationListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor (\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n\n    this.logger = LogManager.getLogger( \"OrganizationListChildRouter\" );\n  }\n\n  public configureRouter ( config: RouterConfiguration, router: Router ): void {\n    this.router = router;\n    config.map( [\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./organization-list\"),\n        name: \"organizations\",\n      },\n\n      {\n        route: \"organization/:organizationId\",\n        moduleId: PLATFORM.moduleName(\"./organization-child-router\"),\n        name: \"organization-child-router\",\n      },\n\n    ] );\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","module.exports = \"<template> <require from=../../../components/three-tags.html></require> <require from=../../../../models/test-organization/organizationActivationTypeViewEngineHooks></require> <require from=../../../../models/questionaries/organizationTypeViewEngineHooks></require> <h2> ${'main.test.pages.organizations.title' & t} </h2> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.test.pages.organizations.info' & t} </p> </div> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> <div class=\\\"col-md-4 col-12 text-right\\\" if.bind=\\\"parameters.search.Query || parameters.search.StartDate || parameters.search.EndDate\\\"> <button class=\\\"btn btn-link\\\" click.delegate=sendFilteredReminder()> <i class=material-icons>email</i> ${'main.test.pages.people.send_filtered_reminder' & t} </button> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <a class=\\\"btn btn-link collapse-header\\\" data-toggle=collapse href=#collapseMoreFilterOptions role=button aria-expanded=false aria-controls=collapseMoreFilterOptions> <i class=material-icons>chevron_right</i> ${'commons.more_filter_options' & t} </a> </div> <div class=\\\"col-md-4 col-12\\\" if.bind=\\\"parameters.search.Query || parameters.search.StartDate || parameters.search.EndDate\\\" global-permission-show=\\\"can: TestCompanyUpdate\\\"> <button class=\\\"btn btn-link\\\" click.delegate=clearFilters()> <i class=material-icons>clear</i> ${'commons.clear_filters' & t} </button> </div> </div> <div class=collapse id=collapseMoreFilterOptions> <div class=row> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=startDate t=commons.start_date>Start_Date</label> <ux-date-picker value.bind=parameters.search.StartDate change.delegate=\\\"databind() & debounce:100\\\" id=startDate></ux-date-picker> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=endDate t=commons.end_date>Start_Date</label> <ux-date-picker value.bind=parameters.search.EndDate change.delegate=\\\"databind() & debounce:100\\\" id=endDate></ux-date-picker> </div> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-2 col-3 text-truncate mb-2\\\" if.bind=\\\"item.highestDisc >= 0\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.organizations.status.title' & t}</small> </label> <span class=\\\"badge badge-pill badge-success\\\">${'main.test.pages.organizations.statuses.activated' & t}</span> </div> <div class=\\\"col-md-2 col-3 text-truncate mb-2\\\" if.bind=\\\"item.highestDisc == null\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.organizations.status.title' & t}</small> </label> <span class=\\\"badge badge-pill badge-warning\\\">${'main.test.pages.organizations.statuses.processing' & t}</span> </div> <div class=\\\"col-md-2 col-9 text-truncate minh-40 mb-2\\\"> <a route-href=\\\"route: organization-child-router; params.bind: {organizationId:item.id}\\\" title=\\\" ${item.name}\\\"> ${item.name} </a> <br/> <small if.bind=\\\"item.organizationActivationType === OrganizationActivationType.Concerted\\\" class=text-mutted>${item.finalizedEvaluatorsQuantity} ${'commons.of' & t} ${item.evaluatorsQuantity}</small> </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <div class=mb-2> <label class=d-block> <small class=text-muted>${'main.test.pages.organizations.activation_types.title' & t}</small> </label> <span title=\\\"${'main.test.pages.organizations.activation_types.' +\\n                        OrganizationActivationType[item.organizationActivationType] & t}\\\">${'main.test.pages.organizations.activation_types.' + OrganizationActivationType[item.organizationActivationType] & t}</span> </div> <div> <label class=d-block> <small class=text-muted>${'main.test.pages.organizations.organization_types.title' & t}</small> </label> <span title=\\\"${'main.test.pages.organizations.organization_types.' +\\n                          OrganizationType[item.organizationType] & t}\\\">${'main.test.pages.organizations.organization_types.' + OrganizationType[item.organizationType] & t}</span> </div> </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <div class=mb-2> <label class=d-block> <small class=text-muted>${'main.test.pages.organizations.created_on' & t}</small> </label> ${item.createdOn | dateTimeFormat} </div> <div> <label class=d-block> <small class=text-muted>${'main.test.pages.organizations.created_by_name' & t}</small> </label> <span title=${item.createdByName}>${item.createdByName}</span> </div> </div> <div class=\\\"col-md-1 col-12 minh-90 mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.organizations.tags' & t}</small> </label> <three-tags tags.bind=item.tags></three-tags> </div> <div class=\\\"col-md-1 col-12 mb-2\\\"> <a href=# if.bind=\\\"item.highestDisc == null && (item.organizationActivationType === OrganizationActivationType.Concerted || item.organizationActivationType === OrganizationActivationType.Individual)\\\" click.delegate=sendReminder(item.id) global-permission-show=\\\"can: TestCompanyUpdate\\\" title.bind=\\\"'commands.send' & t\\\"> <i class=material-icons role=button>email</i> </a> <a if.bind=\\\"item.highestDisc >= 0\\\" global-permission-show=\\\"can: TestCompanyUpdate\\\" title=\\\"${'main.testperson.pages.person.view_reports' & t}\\\" href=\\\"company/${companyId}/test-reports/reports?organizationId=${item.id}\\\" role=button> <i class=material-icons>assessment</i> </a> <a href=# global-permission-show=\\\"can: TestCompanyDelete\\\" click.delegate=delete(item) title.bind=\\\"'commands.archive' & t\\\"> <i class=material-icons role=button>archive</i> </a> </div> </div> </li> </ul> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestCompanyCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.test.pages.organizations.card_title' & t} </h5> <p t=[html]main.test.pages.organizations.card_title_info>Create new </p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: organization-child-router; params.bind: {organizationId:'create'}\\\" t=commands.create>New</a> </div> </div> </div> </div> </div> </div>  </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { Comment } from \"models/test-person/comment\";\nimport { DialogController } from \"aurelia-dialog\";\n\n@autoinject()\nexport class PeopleCommentEditModal {\n\n  private logger: Logger;\n  public companyId: number;\n\n  private model: Comment = new Comment();\n  private validationController: ValidationController;\n\n  constructor(\n    private dialogController: DialogController,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"PeopleCommentEditModal\");\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"commentText\").displayName(\"main.test.pages.people.people_comment_edit.comment_text\").required()\n      .on(this.model);\n  }\n\n  public async activate(model: Comment): Promise<any> {\n    this.model = model;\n    this.configureValidationRules();\n  }\n\n  public async submit(): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n\n          return await this.save();\n\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async save(): Promise<any> {\n\n    return await this.dialogController.ok();\n  }\n\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2> ${'main.test.pages.people.people_comment_edit.title' & t} </h2> <div class=\\\"row mb-3\\\"> <form class=col-12> <div class=row style=margin-bottom:50px> <div class=col> <label>${'main.test.pages.people.people_comment_edit.comment_text' & t}</label> <quill-editor value.bind=\\\"model.commentText & validate\\\"></quill-editor> </div> </div> <div class=clearfix></div> <div class=row> <div class=col> <p>&nbsp;</p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-enable=\\\"can: TestPersonUpdate\\\" click.delegate=submit(false)>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </div> </div> </form> </div> </ux-dialog-body> </ux-dialog> </template> \";","import { I18N } from 'aurelia-i18n';\nimport { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { autoinject, LogManager, bindable, Disposable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { CommentService } from \"../../services/people/comment-service\";\nimport { Person } from \"models/test-person/person\";\nimport { EventAggregator } from \"aurelia-event-aggregator\";\nimport { PersonCommentEditMessage } from \"main/test/messages/personCommentEditMessage\";\nimport { DeleteConfirmation } from 'main/components/delete-confirmation';\n\n@autoinject()\nexport class PeopleCommentList {\n\n  private logger: Logger;\n\n  @bindable\n  private person: Person;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private subscriptions: Disposable[] = [];\n\n  constructor(\n    private commentService: CommentService,\n    private notification: Notification,\n    private ea: EventAggregator,\n    private dialogService: DialogService,\n    private i18n: I18N\n  ) {\n\n    this.logger = LogManager.getLogger(\"PeopleCommentList\");\n\n    // event when new activation is created\n    this.subscriptions.push(this.ea.subscribe(PersonCommentEditMessage, this.databind.bind(this)));\n  }\n\n  public unbind() {\n    this.subscriptions.forEach(x => x.dispose());\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.commentService.list(this.parameters, this.person.id)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  // private async delete(itm) {\n  //   await this.commentService.delete(itm.id);\n  //   this.databind();\n  //   this.notification.success(\"notifications.item_deleted\");\n  // }\n\n  private async delete(id: number, name: string): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: this.i18n.tr(\"main.test.pages.people.comments.delete_message\") + \" \" + name\n    })\n      .whenClosed(async (response: DialogCloseResult) => {\n        if (!response.wasCancelled) {\n          return await this.commentService.delete(id)\n            .then(() => {\n\n              this.notification.success(\"notifications.item_deleted\");\n              this.databind();\n\n            })\n            .catch(error => {\n              this.notification.error(error);\n            });\n        }\n      });\n  }\n\n  private async bind(): Promise<any> {\n\n    if (this.person) {\n\n      this.commentService.client.currentCompanyId = this.person.companyId;\n\n      return await this.databind();\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'main.test.pages.people.people_comment_list.date' & t}</small></label> ${item.createdOn | dateTimeFormat} </div> <div class=\\\"col-md-6 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'main.test.pages.people.people_comment_list.comment' & t}</small></label> <p innerhtml.bind=\\\"item.commentText | sanitizeHTML\\\"></p> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'main.test.pages.people.people_comment_list.user' & t}</small></label> <span title=${item.createdByName}>${item.createdByName}</span> </div> <div class=\\\"col-md-1 col-12 text-truncate mb-2\\\"> <a href=# global-permission-show=\\\"can: TestPersonUpdate\\\" click.delegate=\\\"delete(item.id, item.createdByName)\\\" title.bind=\\\"'commands.archive' & t\\\" role=button> <i class=material-icons>archive</i> </a> </div> </div> </li> </ul> </div> </div> </template> \";","import { CompanyCompetence } from 'models/test-core/competences/company-competence';\nimport { CompanyCompetenceService } from '../../../admin/services/test-management/company-competence-service';\nimport { State } from 'common/store/store-model';\nimport { LogManager, autoinject } from 'aurelia-framework';\nimport { Logger } from 'aurelia-logging';\nimport { DialogController } from \"aurelia-dialog\";\nimport { Notification } from \"common/services/notification\";\nimport { StoreService } from 'common/store/store-service';\nimport { Tests } from 'models/test-person/tests';\nimport { CoreCompanyService } from 'main/admin/services/companies/core-company-service';\n@autoinject()\nexport class CompanyCompetenceModal {\n  private companyCompetenceIds: number[] = [];\n  private companyCompetences: CompanyCompetence[] = [];\n  private logger: Logger;\n  public companyId: number;\n  private state: State;\n  private selectionLabel: string[] = [];\n  private definedColumns: string[] = [];\n  private questionaryId: number;\n\n  constructor(private dialogController: DialogController,\n    private store: StoreService,\n    private companyCompetenceService: CompanyCompetenceService,\n    private notification: Notification,\n    private coreCompanyService: CoreCompanyService) {\n    this.logger = LogManager.getLogger(\"CompanyCompetenceModal\");\n    this.state = this.store.state;\n    this.definedColumns = [\"competenceName\"];\n  }\n\n  public activate(companyCompetenceIds: number[]) {\n    this.logger.debug(\"CompanyCompetenceModal\")\n    this.companyCompetenceIds = companyCompetenceIds;\n  }\n\n  private getSelectionLabel(): void {\n    this.selectionLabel = [];\n    this.companyCompetenceIds.forEach(y => {\n      var selectedCompetence = this.companyCompetences.find(x => x.id === y)\n      if (selectedCompetence !== undefined) {        \n        this.selectionLabel.push(selectedCompetence.competenceName);\n      }\n    });\n\n  }\n\n  public async bind(): Promise<any> {\n    this.logger.debug(\"CompetenceActivationSelector\");\n    this.companyId = this.state.currentCompany.id;\n\n    if (!isNaN(this.companyId)) {\n      this.companyCompetenceService.client.currentCompanyId = this.companyId;\n      try {\n         let settings = await this.coreCompanyService.getSettingsById(this.companyId);\n        this.questionaryId = settings.competencesQuestionaryId;\n        \n        if (this.questionaryId == 0)\n          this.questionaryId = Tests['Competences'];\n\n        this.companyCompetences = await this.companyCompetenceService.getAll(this.questionaryId);\n        this.getSelectionLabel();\n      } catch (error) {\n        this.notification.error(error);\n      }\n\n    }\n  }\n}\n","module.exports = \"<template> <require from=../../../../common/resources/value-converters/filter></require> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <input type=text t=[placeholder]ux_datatable.search_placeholder name=searchValue class=form-control value.bind=\\\"searchValue & debounce:500\\\"/> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> ${'main.test_reports.pages.reports.positions.selected_competences' & t} <ul> <li repeat.for=\\\"item of selectionLabel\\\">${item}</li> </ul> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <h4>${'main.admin.pages.questionaries.competences' & t}</h4> <ul class=\\\"list-group list-group-flush\\\"> <li class=list-group-item repeat.for=\\\"item of companyCompetences | genericFilter:searchValue:definedColumns:true\\\"> <div class=\\\"custom-control custom-checkbox\\\"> <input type=checkbox class=custom-control-input id=competences_${item.id} model.bind=item.id checked.bind=companyCompetenceIds change.delegate=getSelectionLabel()> <label class=custom-control-label for=competences_${item.id}>${item.competenceName} ${item.name ? '_' + item.name : ''}</label> </div> </li> </ul> </div> </div> </ux-dialog-body> <ux-dialog-footer> <button attach-focus=true class=\\\"btn btn-primary btn-round\\\" click.delegate=dialogController.ok() t=commands.accept>Accept</button> <button class=\\\"btn btn-default\\\" click.delegate=dialogController.cancel() t=commands.cancel>Cancel</button> </ux-dialog-footer> </ux-dialog> </template> \";","import { DialogController } from 'aurelia-dialog';\nimport { Logger } from 'aurelia-logging';\nimport { LogManager, autoinject } from 'aurelia-framework';\nimport { ActivationQuestionaryService } from 'main/test/services/people/activation-questionary-service';\nimport { ActivationQuestionary } from 'models/test-person/activationQuestionary';\nimport { CompanyCompetence } from 'models/test-core/competences/company-competence';\n\n@autoinject()\nexport class CompetenceActivatedModal {\n\n  private logger: Logger;\n  private activationQuestionary: ActivationQuestionary;\n  private companyCompetences: CompanyCompetence[] = [];\n\n  constructor(private dialogController: DialogController,\n    private activationQuestionaryService: ActivationQuestionaryService) {\n  }\n\n  public async activate(param: number | CompanyCompetence[]) {\n    if (typeof param === \"number\")\n      await this.getByActivationQuestionary(param)\n    else\n      this.companyCompetences = param;\n\n    this.logger = LogManager.getLogger(\"CompetenceActivationModal\")\n  }\n\n  private async getByActivationQuestionary(activationQuestionary: number) {\n    this.activationQuestionary = await this.activationQuestionaryService.getCompanyCompetenceById(activationQuestionary);\n    if (this.activationQuestionary.activation.companyCompetences.length > 0)\n      this.companyCompetences = this.activationQuestionary.activation.companyCompetences\n  }\n\n}","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col-11> <h4>${'main.test_reports.pages.reports.positions.selected_competences' & t}</h4> <ul> <li repeat.for=\\\"item of companyCompetences\\\">${item.competenceName == '' ? item.competence.name : item.competenceName}</li> </ul> </div> </div> </div> </div> </div> </ux-dialog-body> <ux-dialog-footer> <button attach-focus=true class=\\\"btn btn-primary btn-round\\\" click.delegate=dialogController.ok() t=commands.accept>Accept</button> </ux-dialog-footer> </ux-dialog> </template>\";","import { DialogController } from 'aurelia-dialog';\nimport { Logger } from 'aurelia-logging';\nimport { LogManager, autoinject } from 'aurelia-framework';\nimport { ActivationQuestionaryService } from 'main/test/services/people/activation-questionary-service';\nimport { ActivationQuestionary } from 'models/test-person/activationQuestionary';\nimport { CompanyCompetence } from 'models/test-core/competences/company-competence';\nimport { ReportCompetence } from 'models/test-reports/reports/reportCompetence';\nimport { Report } from \"models/test-reports/reports/report\";\nimport { ReportActivation } from 'models/test-reports/reports/reportActivation';\nimport { QuestionaryType } from 'models/questionaries/questionaryType';\n\n@autoinject()\nexport class CompetenceActivatedWeightModal {\n\n  private logger: Logger;\n  private activationQuestionary: ActivationQuestionary;\n  private reportActivation: ReportActivation;\n  private sumWeight: number = 0;\n  private items: ReportCompetence[] = [];\n  private report: Report;\n  private isTeam: boolean = false;\n  constructor(\n    private dialogController: DialogController,\n    private activationQuestionaryService: ActivationQuestionaryService\n  ) {\n  }\n\n  public async activate(param: any) {\n    this.logger = LogManager.getLogger(\"CompetenceActivatedWeightModal\")\n    this.report = param.report;\n    this.reportActivation = param.reportActivation;\n    this.items = this.report.competences;\n    if (param.isTeam || param.isTeam !== undefined) {\n      this.isTeam = true;\n    }\n\n    if (this.items.length < 1) {\n      await this.getByActivationQuestionary(param.reportActivation.activationQuestionaryId)\n    }\n\n    if (this.reportActivation.isAvailable) {\n      this.updateTotal();\n    } else {\n      this.updateTotal(this.reportActivation.weight);\n    }\n  }\n\n  private async getByActivationQuestionary(activationQuestionaryId: number) {\n    this.activationQuestionary = await this.activationQuestionaryService.getCompanyCompetenceById(activationQuestionaryId);\n    if (this.activationQuestionary.activation.companyCompetences.length > 0) {     \n      this.activationQuestionary.activation.companyCompetences.forEach((companyCompetences) => {\n        const newReportCompetence: ReportCompetence = {\n          reportId: Number(this.report.competences.length),\n          companyCompetenceId: companyCompetences.id,\n          companyCompetence: companyCompetences,\n          weight: 0,\n          isAvailable: true,\n        };     \n        this.report.competences.push(newReportCompetence);\n        this.report.competenceIds.push(companyCompetences.id);\n      });\n    }\n  }\n\n  private async updateTotal(initValue?: number): Promise<void> {\n    if (initValue) {\n        this.report.competences.forEach((reportCompetence) => {\n            reportCompetence.weight = initValue;\n        });\n    }\n\n    this.sumWeight = this.report.competences.reduce((sum, reportCompetence) => sum + Number(reportCompetence.weight), 0);\n\n    const index = this.report.activations.findIndex(x => x.activationId === this.reportActivation.activationId && x.activationQuestionaryId === this.reportActivation.activationQuestionaryId);\n   \n    if (index !== -1) {\n        this.report.activations[index].weight = this.sumWeight;\n        this.report.activations[index].isAvailable = this.sumWeight > 0;\n    }\n    if (this.isTeam){\n      const indexCompetencesQuestionary = this.report.questionariesTeam.findIndex(x=> x.questionary.questionaryType == QuestionaryType.Competences)\n      if (indexCompetencesQuestionary !== -1) {\n              this.report.questionariesTeam[indexCompetencesQuestionary].weight = this.sumWeight;\n              this.report.questionariesTeam[indexCompetencesQuestionary].isAvailable = this.sumWeight > 0;\n          }\n    }\n}\n\n  public async selectParameter(reportCompetence: ReportCompetence): Promise<void> {\n    this.logger.debug(\"selectParameter\");\n    let index = this.report.competences.findIndex(x => x.companyCompetenceId == reportCompetence.companyCompetenceId);\n\n    if (!reportCompetence.isAvailable) {\n      reportCompetence.isAvailable = false;\n      reportCompetence.weight = 0;\n    } else {\n      reportCompetence.isAvailable = true;\n    }\n    \n    this.report.competences[index] = reportCompetence;\n    this.updateTotal();\n  }\n\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <h4>${'main.test_reports.pages.reports.positions.selected_competences' & t}</h4> <ul class=\\\"list-group list-group-flush\\\"> <li class=list-group-item repeat.for=\\\"item of items\\\"> <div class=\\\"custom-control custom-checkbox\\\"> <input type=checkbox class=custom-control-input id=competences_${item.companyCompetenceId} model.bind=item.companyCompetenceId checked.bind=item.isAvailable change.delegate=selectParameter(item)> <label class=custom-control-label for=competences_${item.companyCompetenceId}> ${item.companyCompetence.competenceName == '' ? item.companyCompetence.competence.name : item.companyCompetence.competenceName} </label> </div> <div class=\\\"col-md-6 col-12 text-truncate mb-3\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_evaluator_list.weight' & t}</small> </label> <input type=number class=form-control id=weight readonly.bind=!item.isAvailable value.bind=item.weight change.delegate=updateTotal() text> </div> </li> </ul> <ul class=list-group> <div class=\\\"col-md-4 offset-md-10\\\"><u>${sumWeight}</u></div> </ul> </div> </div> </div> </ux-dialog-body> <ux-dialog-footer> <button attach-focus=true class=\\\"btn btn-primary btn-round\\\" click.delegate=dialogController.ok() t=commands.accept>Accept</button> </ux-dialog-footer> </ux-dialog> </template> \";","import { CompanyCompetence } from 'models/test-core/competences/company-competence';\nimport { autoinject, LogManager, bindable, bindingMode } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { StoreService } from \"common/store/store-service\";\nimport { State } from \"common/store/store-model\";\nimport { Notification } from \"common/services/notification\";\nimport { CompanyCompetenceService } from 'main/admin/services/test-management/company-competence-service';\nimport { Tests } from 'models/test-person/tests';\nimport { CoreCompanyService } from 'main/admin/services/companies/core-company-service';\n@autoinject()\nexport class CompetenceActivationSelector {\n  private logger: Logger;\n\n  public companyId: number;\n\n  private state: State;\n\n  private companyCompetences: CompanyCompetence[] = [];\n  private questionaryId: number;\n\n  @bindable({ defaultBindingMode: bindingMode.twoWay })\n  private companyCompetenceIds: number[] = [];\n\n  constructor(\n    private store: StoreService,\n    private companyCompetenceService: CompanyCompetenceService,\n    private notification: Notification,\n    private coreCompanyService: CoreCompanyService) {\n\n    this.logger = LogManager.getLogger(\"CompetenceActivationSelector\");\n\n    this.state = this.store.state;\n  }\n\n  public async bind(): Promise<any> {\n    this.logger.debug(\"CompetenceActivationSelector\");\n    this.companyId = this.state.currentCompany.id;\n\n    if (!isNaN(this.companyId)) {\n\n      this.companyCompetenceService.client.currentCompanyId = this.companyId;\n\n      try {\n        let settings = await this.coreCompanyService.getSettingsById(this.companyId);\n        this.questionaryId = settings.competencesQuestionaryId;\n\n        if (this.questionaryId == 0)\n          this.questionaryId = Tests['Competences'];\n        this.companyCompetences = await this.companyCompetenceService.getAll(this.questionaryId);\n\n      } catch (error) {\n        this.notification.error(error);\n      }\n\n    }\n  }\n}\n","module.exports = \"<template> <h4>${'main.admin.pages.questionaries.competences' & t}</h4> <ul class=\\\"list-group list-group-flush\\\"> <li class=list-group-item repeat.for=\\\"item of companyCompetences\\\"> <div class=\\\"custom-control custom-checkbox\\\"> <input type=checkbox class=custom-control-input id=competences_${item.id} model.bind=item.id checked.bind=companyCompetenceIds> <label class=custom-control-label for=competences_${item.id}>${item.competenceName} ${item.name ? '_' + item.name : ''}</label> </div> </li> </ul> </template> \";","import { PersonDemographicDataService } from 'main/test/services/people/person-demographic-data-service';\nimport { autoinject, bindable, LogManager, bindingMode } from \"aurelia-framework\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from \"common/services/notification\";\nimport { DemographicData } from \"models/microsite/demographicData\";\nimport { PersonDemographicDataModal } from \"./person-demographic-modal\";\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\nimport { PersonDemographicDataEditMessage } from 'main/test/messages/personDemographicDataEditMessage';\nimport { EventAggregator } from 'aurelia-event-aggregator';\nimport { PersonQuestionaryActivationMessage } from 'main/test/messages/personActivationMessage';\nimport { Person } from 'models/test-person/person';\n\n@autoinject()\nexport class PersonDemographicData {\n  private logger: Logger;\n\n  @bindable()\n  public person: Person;\n\n  @bindable({ defaultBindingMode: bindingMode.twoWay })\n  public demographicData: DemographicData;\n\n  private state: State;\n\n  constructor(\n    private store: StoreService,\n    private dialogService: DialogService,\n    private notification: Notification,\n    private personDemographicDataService: PersonDemographicDataService,\n    private ea: EventAggregator,\n  ) {\n\n    this.state = this.store.state;\n\n    this.logger = LogManager.getLogger(\"PersonCreate\");\n  }\n\n  private async edit(): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: PersonDemographicDataModal,\n      model: this.demographicData\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        await this.personDemographicDataService.update(this.demographicData);\n\n        // new activation\n        this.ea.publish(new PersonDemographicDataEditMessage());\n\n        // update questionaries list\n        this.ea.publish(new PersonQuestionaryActivationMessage());\n\n        this.notification.success(\"notifications.item_edited\");\n      }\n    })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../models/catalogs/genreViewEngineHooks></require> <require from=../../../../models/catalogs/educationalLevelViewEngineHooks></require> <label if.bind=!demographicData>${'main.test.pages.person.demographicdata.no_demographic_data' & t}</label> <div class=\\\"row mb-3\\\" if.bind=\\\"person && !person.isTheTalentSystem && demographicData && state && state.userBasicInfo && state.userBasicInfo.roleId < 6\\\"> <div class=col> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: TestPersonUpdate\\\" click.delegate=edit() title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>person_pin_circle</i> ${'main.test.pages.person.demographicdata.edit' & t} </button> </div> </div> <dl class=\\\"row mb-3\\\" if.bind=demographicData> <dt class=col-sm-3>${'main.test.pages.person.demographicdata.genre' & t}</dt> <dd class=col-sm-9>${'main.catalog.genre.' + Genre[demographicData.genre] & t}</dd> <dt class=col-sm-3>${'main.test.pages.person.demographicdata.age' & t}</dt> <dd class=col-sm-9>${demographicData.age}</dd> <dt class=col-sm-3>${'main.test.pages.person.demographicdata.birthdate' & t}</dt> <dd class=col-sm-9>${demographicData.birthday | dateFormat}</dd> <dt class=col-sm-3>${'catalogs.countries.title' & t}</dt> <dd class=col-sm-9>${demographicData.countryName & t}</dd> <dt class=col-sm-3>${'catalogs.regions.title' & t}</dt> <dd class=col-sm-9>${demographicData.regionName & t}</dd> <dt class=col-sm-3>${'catalogs.cities.title' & t}</dt> <dd class=col-sm-9>${demographicData.cityName & t}</dd> <dt class=col-sm-3>${'main.test.pages.person.demographicdata.educationallevel' & t}</dt> <dd class=col-sm-9 if.bind=\\\"!demographicData.educationalLevelName && demographicData.educationalLevel\\\">${'main.catalog.educational_level.' + EducationalLevel[demographicData.educationalLevel] & t}</dd> <dd class=col-sm-9 if.bind=\\\"demographicData.educationalLevelName && demographicData.educationalLevel\\\">${demographicData.educationalLevelName}</dd> <dt class=col-sm-3>${'main.test.pages.person.demographicdata.profession' & t}</dt> <dd class=col-sm-9>${demographicData.professionName & t}</dd> </dl> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from 'aurelia-logging';\nimport { Router } from 'aurelia-router';\nimport { ValidationController } from 'aurelia-validation';\nimport { ValidationRules } from 'aurelia-validation';\nimport { ControllerValidateResult } from 'aurelia-validation';\nimport { ValidationControllerFactory } from 'aurelia-validation';\nimport { BootstrapFormRenderer } from 'common/services/bootstrap-form-renderer';\nimport { Notification } from 'common/services/notification';\nimport { CatalogService } from 'main/services/catalogs/catalog-service';\nimport { CatalogBase } from 'models/catalogs/catalog-base';\nimport { CatalogChild } from 'models/catalogs/catalog-child';\nimport { EducationalLevelCountry } from 'models/educational-levels-by-country/educational-level-country';\nimport { DemographicData } from 'models/microsite/demographicData';\nimport { Person } from 'models/test-person/person';\nimport { StoreService } from \"common/store/store-service\";\nimport { State } from \"common/store/store-model\";\nimport { calculateAge } from \"common/utils/utility\";\nimport { EducationalLevelCountryService } from \"main/admin/services/educational-levels-by-country/educational-level-country-service\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { PersonDemographicDataService } from \"main/test/services/people/person-demographic-data-service\";\n\n@autoinject()\nexport class PersonDemographicDataModal {\n  private logger: Logger;\n  private companyId: number;\n  private model: DemographicData = new DemographicData();\n  private tempModel: DemographicData;\n  // private person: Person;\n  private personId: number;\n  private validationController: ValidationController;\n\n  private countries: CatalogBase[] = [];\n  private regions: CatalogChild[] = [];\n  private cities: CatalogChild[] = [];\n  private professions: CatalogBase[] = [];\n  private educationalLevelCountries: EducationalLevelCountry[] = [];\n\n  private params: any;\n  private maxAge: number = 6;\n\n  private state: State;\n\n  constructor(\n\n    private dialogController: DialogController,\n    private catalogService: CatalogService,\n    private educationalLevelCountryService: EducationalLevelCountryService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private personDemographicDataService: PersonDemographicDataService,\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"DemographicDataInsert\");\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n\n    ValidationRules\n      .ensure(\"genre\").displayName(\"main.microsite.pages.demographicdata.genre\").required()\n      .ensure(\"birthday\").displayName(\"main.microsite.pages.demographicdata.birthdate\").required()\n      .ensure(\"countryId\").displayName(\"catalogs.countries.title\").required()\n      .ensure(\"regionId\").displayName(\"catalogs.regions.title\").required()\n      .ensure(\"cityId\").displayName(\"catalogs.cities.title\").required()\n      .ensure(\"educationalLevel\").displayName(\"main.microsite.pages.demographicdata.educationallevel\").required()\n      .ensure(\"professionId\").displayName(\"main.microsite.pages.demographicdata.profession\").required()\n      .on(this.model);\n  }\n\n  public async activate(model: DemographicData): Promise<void> {\n    // this.logger.info(\"activate personId\", personId);\n    // this.model = model;\n    // this.personId = personId;\n\n    this.tempModel = model;\n\n  }\n\n  public async bind(): Promise<any> {\n    try {\n\n      this.countries = await this.catalogService.getCountryAll();\n\n      this.professions = await this.catalogService.getProfessionAll();\n\n      this.educationalLevelCountries = await this.educationalLevelCountryService.getAll();\n\n      // this.model = await this.personDemographicDataService.get(this.personId);\n\n      this.model = this.tempModel;\n\n      this.regions = await this.catalogService.getRegionsByCountryId(this.model.countryId);\n\n      this.cities = await this.catalogService.getCitiesByRegionId(this.model.regionId);\n\n      this.configureValidationRules();\n\n    }\n    catch (error) {\n      this.notification.error(error);\n    };\n  }\n\n  public async submit(): Promise<void> {\n    if (!this.isValidAge(this.model.birthday)) {\n      this.notification.warning(\"main.microsite.pages.demographicdata.validation_age\");\n    }\n    else {\n      // this.logger.debug(\"model\", this.model);\n      return await this.validationController.validate()\n        .then(async (result: ControllerValidateResult) => {\n          if (result.valid) {\n            return await this.save();\n          }\n        });\n    }\n  }\n\n  public async save(): Promise<any> {\n    return await this.dialogController.ok();\n  }\n\n  public async filterRegionAndEducation(countryId: number): Promise<void> {\n    this.model.regionId = null;\n    this.model.cityId = null;\n    this.model.educationalLevel = null;\n    // this.educationalLevelCountries = await this.educationalLevelCountryService.getByCountry(countryId);\n\n    this.regions = await this.catalogService.getRegionsByCountryId(countryId);\n  }\n\n  public async filterCity(regionId: number): Promise<void> {\n    this.model.cityId = null;\n\n    this.cities = await this.catalogService.getCitiesByRegionId(regionId);\n  }\n\n  public isValidAge(birthday: Date): boolean {\n    let result: boolean = false;\n\n    if (this.model.birthday != null) {\n\n      let birthday = new Date(this.model.birthday);\n\n      let age = calculateAge(birthday);\n\n      // this.model.age = age;\n      if (age < this.maxAge) {\n        // this.logger.debug(\"Birthday:\", birthday)\n        this.logger.debug(\"AgeCalculate:\", age);\n        // this.model.age = null;\n\n      } else {\n        result = true;\n      }\n\n    }\n\n    return result;\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../models/catalogs/genreViewEngineHooks></require> <require from=../../../../models/catalogs/educationalLevelViewEngineHooks></require> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2> ${'main.test.pages.person.demographicdata.title' & t} </h2> <form class=form> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <label for=genre>${'main.test.pages.person.demographicdata.genre' & t}</label> <select id=genre value.bind=\\\"model.genre & validate\\\" class=form-control> <option t=main.test.pages.person.demographicdata.genre value=\\\"\\\"></option> <option repeat.for=\\\"option of Genres\\\" model.bind=Genre[option]>${'main.catalog.genre.' + option & t} </option> </select> </div> <div class=form-group> <label for=birthday t=main.test.pages.person.demographicdata.birthdate>birthday</label> <ux-date-picker value.bind=\\\"model.birthday & validate\\\" id=birthday></ux-date-picker> </div> <div class=form-group> <label for=countryId>${'catalogs.countries.title' & t}</label> <select value.bind=\\\"model.countryId & validate\\\" class=form-control id=countryId change.delegate=\\\"filterRegionAndEducation(model.countryId, true)\\\"> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of countries\\\" model.bind=option.id>${option.name & t}</option> </select> </div> <div class=form-group> <label for=regionId>${'catalogs.regions.title' & t}</label> <select value.bind=\\\"model.regionId & validate\\\" class=form-control id=regionId change.delegate=\\\"filterCity(model.regionId, true)\\\"> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of regions\\\" model.bind=option.id>${option.name & t}</option> </select> </div> <div class=form-group> <label for=cityId>${'catalogs.cities.title' & t}</label> <select value.bind=\\\"model.cityId & validate\\\" class=form-control id=cityId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of cities\\\" model.bind=option.id>${option.name & t}</option> </select> </div> <div class=form-group> <label for=educationalLevel>${'main.test.pages.person.demographicdata.educationallevel' & t}</label> <select id=educationalLevelCountryId value.bind=\\\"model.educationalLevel & validate\\\" class=form-control> <option t=main.test.pages.person.demographicdata.educationallevel value=\\\"\\\"></option> <option repeat.for=\\\"option of educationalLevelCountries | filter:'countryId':model.countryId\\\" model.bind=option.educationalLevel> ${option.id > 0 ? option.name : 'main.catalog.educational_level.' + EducationalLevel[option.educationalLevel] & t} </option> </select> </div> <div class=form-group> <label for=profession>${'main.test.pages.person.demographicdata.profession' & t}</label> <select id=profession change.delegate=\\\"databind() & debounce:100\\\" value.bind=\\\"model.professionId & validate\\\" class=form-control> <option t=main.test.pages.person.demographicdata.profession value=\\\"\\\"></option> <option repeat.for=\\\"option of professions\\\" model.bind=option.id>${option.name & t} </option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-actions> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit()>${'main.test.pages.person.demographicdata.save_and_requalify' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </div> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { EmailHistoryDetails } from '../../../../models/emails-history/email-history-details';\nimport { DialogController } from \"aurelia-dialog\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Notification } from 'common/services/notification';\nimport { EmailHistoryService } from \"main/test/services/people/email-history-service\";\n\n@autoinject()\nexport class PeopleHistoryEmailDetailsModal {\n  private logger: Logger;\n  private model: EmailHistoryDetails\n\n  constructor(\n    private dialogController: DialogController,\n    private historyEmailService: EmailHistoryService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"PeopleHistoryEmailDetailsModal\");\n  }\n\n  public async activate(msgId: string): Promise<any> {\n    this.logger.debug(\"activate\", msgId);\n    try {\n      this.model = await this.historyEmailService.getById(msgId);\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body style=max-width:800px> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2> ${'main.test.pages.person.people_history_email_details.title' & t} </h2> <div class=row> <div class=col-12> <dl class=row> <dt class=col-sm-3>${'main.test.pages.person.people_history_email_details.to' & t}</dt> <dd class=col-sm-9>${model.toEmail}</dd> <dt class=col-sm-3>${'main.test.pages.person.people_history_email_details.from' & t}</dt> <dd class=col-sm-9>${model.fromEmail}</dd> <dt class=col-sm-3>${'main.test.pages.person.people_history_email_details.subject' & t}</dt> <dd class=col-sm-9>${model.subject}</dd> </dl> </div> </div> <hr/> <br> <h4> ${'main.test.pages.person.people_history_email_details.event_history' & t} </h4> <div class=row> <div class=col-12> <div class=row repeat.for=\\\"item of model.events\\\"> <dt if.bind=\\\"item.eventName == 'processed' || item.eventName == 'processed' || item.eventName == 'delivered'  || item.eventName == 'open' || item.eventName == 'click'\\\" class=col-sm-3> <span class=\\\"badge badge-pill badge-success\\\">${'main.test.pages.person.people_history_email_details.state_' + item.eventName & t} </span> </dt> <dt if.bind=\\\"item.eventName == 'drop' || item.eventName == 'bounce' || item.eventName == 'not_delivered'\\\" class=col-sm-3> <span class=\\\"badge badge-pill badge-danger\\\">${'main.test.pages.person.people_history_email_details.state_' + item.eventName & t} </span> </dt> <dd class=col-sm-8>${item.processedDate | dateTimeFormat}</dd> </div> </div> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </ux-dialog-body> </ux-dialog> </template> \";","import { EmailHistoryService } from '../../services/people/email-history-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { PersonService } from \"main/test/services/people/person-service\";\nimport { Person } from \"models/test-person/person\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { EmailHistory } from \"models/emails-history/email-history\";\nimport { Notification } from \"common/services/notification\";\nimport { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { PeopleHistoryEmailDetailsModal } from './people-history-email-details-modal';\n\n@autoinject()\nexport class PeopleHistoryEmailList{\n  private logger: Logger;\n  public companyId: number;\n  private personId: number;\n  private person: Person;\n  private params: any = {};\n  public model: EmailHistory = new EmailHistory;\n  private static readonly MAX_RANGE_DAYS = 3;\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  constructor(\n    private personService: PersonService,\n    private notification: Notification, \n    private dialogService: DialogService,\n    private historyEmailService: EmailHistoryService,   \n  ) {    \n    this.logger = LogManager.getLogger(\"PeopleHistoryEmailList\");\n  }\n\n  public async activate(params: any): Promise<any> {\n\n    if (!isNaN(params.companyId)) {\n      this.companyId = +params.companyId;\n      this.personService.client.currentCompanyId = this.companyId;\n\n      if (!isNaN(params.personId)) {\n        this.personId = params.personId;\n        this.person = await this.getPerson();\n        this.setDefaultDateRange();\n        this.databind();\n      }\n\n    }\n  }\n  private setDefaultDateRange(): void {\n  const end = new Date();\n  const start = new Date();  \n  start.setDate(end.getDate() - (PeopleHistoryEmailList.MAX_RANGE_DAYS - 1));\n  end.setDate(end.getDate() + 1);\n  this.parameters.search.StartDate = start;\n  this.parameters.search.EndDate = end;\n}\n\n  private async getPerson(): Promise<Person> {\n    return this.personService.getById(this.personId);\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.historyEmailService.list(this.person.email, this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private clearFilters() {\n    this.setDefaultDateRange();\n  }\n\n  private async viewDetailsMessages(msgId: string): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: PeopleHistoryEmailDetailsModal,\n      model: msgId      \n    }).whenClosed(async (response: DialogCloseResult) => {});\n  }\n\n}\n","module.exports = \"<template> <require from=../../../components/person-header.html></require> <require from=../../../../models/test-person/activationQuestionaryStatusViewEngineHooks></require> <div if.bind=!personId> ${'main.test.pages.people.people_history_email.msg_first_create_item' & t} </div> <div if.bind=personId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <person-header person.bind=person></person-header> <hr/> <h2> ${'main.testperson.pages.people_history_email.page_title' & t} </h2> <div class=\\\"row mb-4\\\"> <div class=col-12> <div class=\\\"alert alert-primary d-flex align-items-center\\\" role=alert> <i class=\\\"material-icons mr-2\\\">info</i> <div> <strong>${'main.testperson.pages.people_history_email.page_title_alert_title' & t}</strong> ${'main.testperson.pages.people_history_email.page_title_alert' & t} </div> </div> <div class=row> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label t=commons.start_date>Start_Date</label> <div class=form-control-plaintext> ${parameters.search.StartDate | dateFormat} </div> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label t=commons.end_date>End_Date</label> <div class=form-control-plaintext> ${parameters.search.EndDate | dateFormat} </div> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\" if.bind=\\\"item.activationQuestionaryStatus == ActivationQuestionaryStatus.Delivered\\\"> <label class=d-block><small class=text-muted>${'main.testperson.pages.people_history_email.status' & t}</small></label> <span class=\\\"badge badge-pill badge-success\\\">${'main.test.pages.person.person_questionary_list.state_' + ActivationQuestionaryStatuses[item.activationQuestionaryStatus] & t} </span> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\" if.bind=\\\"item.activationQuestionaryStatus == ActivationQuestionaryStatus.Processed\\\"> <label class=d-block><small class=text-muted>${'main.testperson.pages.people_history_email.status' & t}</small></label> <span class=\\\"badge badge-pill badge-warning\\\">${'main.test.pages.person.person_questionary_list.state_' + ActivationQuestionaryStatuses[item.activationQuestionaryStatus] & t}</span> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\" if.bind=\\\"item.activationQuestionaryStatus == ActivationQuestionaryStatus.NotDelivered\\\"> <label class=d-block><small class=text-muted>${'main.testperson.pages.people_history_email.status' & t}</small></label> <span class=\\\"badge badge-pill badge-danger\\\">${'main.test.pages.person.person_questionary_list.state_' + ActivationQuestionaryStatuses[item.activationQuestionaryStatus] & t} </span> </div> <div class=\\\"col-md-4 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.testperson.pages.people_history_email.messages' & t}</small> </label> <label class=text-muted>${'main.testperson.pages.people_history_email.to' & t}: </label> <span title=${item.toEmail}>${item.toEmail}</span> <br/> <span title=${item.subject}> <small class=text-muted>${item.subject}</small> </span> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.testperson.pages.people_history_email.last_event_time' & t}</small> </label> ${item.lastEventTime | dateTimeFormat} </div> <div class=\\\"col-md-1 col-12 text-truncate mb-2\\\"> <div class=row> <label class=d-block> <small class=text-muted>${'main.testperson.pages.people_history_email.opens' & t}</small> </label> </div> <div class=\\\"row mx-auto\\\"> <span title=${item.opensCount}>${item.opensCount}</span> </div> </div> <div class=\\\"col-md-1 col-12 text-truncate mb-2\\\"> <div class=row> <label class=d-block> <small class=text-muted>${'main.testperson.pages.people_history_email.clicks' & t}</small> </label> </div> <div class=\\\"row mx-auto\\\"> <span title=${item.clicksCount}>${item.clicksCount}</span> </div> </div> <div class=\\\"col-md-1 col-12 mb-2\\\"> <a href=# click.delegate=viewDetailsMessages(item.msgId) title=\\\"${'commands.details' & t}\\\"> <i class=material-icons>visibility</i> </a> </div> </div> </li> </ul> </div> </div> </div> </div> </div> </template> \";","import { QuestionService } from '../../../admin/services/questionaries/question-service';\nimport { Activation } from 'models/test-person/activation';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { CompanyCompetenceModal } from '../people-competence/company-competence-modal';\nimport { QuestionaryGroup } from \"models/test-management/questionary-groups/questionaryGroup\";\nimport { QuestionaryGroupService } from \"../../../admin/services/test-management/questionary-group-service\";\nimport { Language } from \"models/localizations/language\";\nimport { ReportTemplate } from \"models/test-core/report-templates/report-template\";\nimport { ReportTemplateService } from \"../../../admin/services/test-management/report-template-service\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from \"common/store/store-service\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { Router } from \"aurelia-router\";\nimport * as $ from \"jquery\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { CoreLanguageService } from 'main/admin/services/localizations/core-language-service';\nimport { QuestionaryType } from 'models/questionaries/questionaryType';\nimport { Report } from 'models/test-reports/reports/report';\nimport { NoDiscType } from 'models/questionaries/noDiscType';\nimport { QuestionUse } from 'models/questions/questionUse';\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { Test } from '../../../../models/test-perfiltic/test';\nimport { TestQuestionary } from 'models/test-core/test-questionary';\nimport { CompanyQuestionaryService } from 'main/admin/services/test-management/company-questionary-service';\nimport { Languages } from 'models/localizations/languages';\nimport { ItemToQualify } from 'models/questionaries/itemToQualify';\nimport { DimensionSelectorModal, DimensionSelectorModel } from 'main/components/dimension-selector-modal';\nimport { QuestionaryGroupThematicAssociate } from 'models/test-management/questionary-groups/questionary-group-thematic-associate';\nimport { ThematicGroupService } from 'main/admin/services/thematic-groups/thematic-group-service';\nimport { ActivationThematicAssociate } from 'models/test-person/activationThematicAssociate';\nimport { QuestionaryLanguage } from 'models/questionaries/questionaryLanguage';\n\n\n@autoinject()\nexport class PeopleQuestionaryActivationModal {\n\n  private logger: Logger;\n\n  public companyId: number;\n\n  private state: State;\n  private questionaryFilter: string = \"\";\n  private questionaryGroupFilter: string;\n  private reportFilter: string;\n  private hasCompetencesFilter: boolean;\n  private questionaryGroups: QuestionaryGroup[];\n  private searchQuestionaryGroup: QuestionaryGroup[];\n  private reportTemplates: ReportTemplate[];\n  private searchReport: ReportTemplate[];\n  private languages: Language[];\n  private questionaries: TestQuestionary[] = [];\n  private searchQuestionary: TestQuestionary[] = [];\n  private isCompetenceActive: boolean = false;\n  private isDisable: boolean = false;\n  private isEngineersTests: boolean = false;\n  private showDisableParameter: boolean = false;\n  private report: Report = new Report();\n  private reportTemplate: ReportTemplate = new ReportTemplate();\n  private selectedQuestionaries = {\n    qty: 0,\n    avg: 0,\n    questionaries: \"\",\n    hasCompetences: false,\n    hasEngineersTest: false,\n    hasModular: false,\n  };\n  private model: Activation = new Activation();\n  private validationController: ValidationController;\n  private avgTimeModular: { questionaryId: number, averageTime: number }[] = [];\n  private isModularActive: boolean = false;\n\n  private questionaryGroup: QuestionaryGroup;\n  private hasTalentsPrice: boolean = false;\n  private talentsPrice: number;\n  private isInvalid: boolean;\n  private isCareerPath: boolean = false;\n  private selectedLanguageId: number = Languages.Spanish;\n  constructor(\n    private router: Router,\n    private dialogController: DialogController,\n    private companyQuestionaryService: CompanyQuestionaryService,\n    private store: StoreService,\n    private dialogService: DialogService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private questionaryGroupService: QuestionaryGroupService,\n    private reportTemplateService: ReportTemplateService,\n    private languageService: CoreLanguageService,\n    private questionService: QuestionService,\n    private thematicGroupService: ThematicGroupService,\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"PeopleQuestionaryActivationModal\");\n\n    this.state = this.store.state;\n\n  }\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"languageId\").displayName(\"main.admin.pages.questionaries.language\").required()\n      //.ensure(\"companyCompetenceIds\").displayName(\"main.admin.pages.questionaries.competences\").required()\n      .on(this.model);\n\n    ValidationRules\n      .ensure(\"reportTemplateId\").displayName(\"main.test_reports.pages.reports.report_template\").required()\n      .ensure(\"discType\").displayName(\"main.test_reports.pages.reports.discType.title\").required()\n      .ensure(\"zeroOrOnepositionId\").displayName(\"main.test_reports.pages.reports.parameters.ZeroOrOnePosition\").maxItems(1)\n      .ensure(\"positionId\").displayName(\"main.test_reports.pages.reports.parameters.Position\").required()\n      .ensure(\"teamId\").displayName(\"main.test_reports.pages.reports.parameters.Team\").required()\n      .ensure(\"organizationId\").displayName(\"main.test_reports.pages.reports.parameters.Organization\").required()\n      .ensure(\"positionIds\").displayName(\"main.test_reports.pages.reports.parameters.Positions\").required().minItems(1).maxItems(1000)\n      .ensure(\"compareToPositionId\").displayName(\"main.test_reports.pages.reports.parameters.ComparePosition\").required()\n      .ensure(\"compareToTeamId\").displayName(\"main.test_reports.pages.reports.parameters.CompareTeam\").required()\n      .ensure(\"compateToOrganizationId\").displayName(\"main.test_reports.pages.reports.parameters.CompareOrganization\").required()\n      .ensure(\"compareToPersonId\").displayName(\"main.test_reports.pages.reports.parameters.ComparePerson\").required()\n      .ensure(\"personId\").displayName(\"main.test_reports.pages.reports.parameters.Person\").required()\n      .ensure(\"personId\").displayName(\"main.test_reports.pages.reports.parameters.Leader\").required()\n      .ensure(\"peopleIds\").displayName(\"main.test_reports.pages.reports.parameters.People\").required().minItems(1)\n      .ensure(\"oneOrTwoPeopleIds\").displayName(\"main.test_reports.pages.reports.parameters.OneOrTwoPeople\").required().minItems(1).maxItems(2)\n      .ensure(\"twoPeopleIds\").displayName(\"main.test_reports.pages.reports.parameters.TwoPeople\").required().minItems(2)\n      .ensure(\"threePeopleIds\").displayName(\"main.test_reports.pages.reports.parameters.ThreePeople\").required().minItems(1).maxItems(3)\n      .ensure(\"observerIds\").displayName(\"main.test_reports.pages.reports.parameters.Observers\").required().minItems(1).maxItems(1000)\n      .on(this.report);\n  }\n\n  // public attached() {\n  //   $('.chevron-accordion').on('click', function () {\n  //     var button = $(this).find('.btn[data-toggle]');\n  //     var header = $(this).find('.collapse-header');\n  //     if (header.length && button.length && button.hasClass('collapsed')) {\n  //       header.removeClass('collapsed');\n  //     } else {\n  //       header.addClass('collapsed');\n  //     }\n  //   });\n  // }\n\n\n  public async activate(activation: Activation): Promise<any> {\n\n    this.logger.debug(\"activate\");\n\n    this.model = activation;\n\n    this.companyId = this.model.companyId;\n\n    // this.personService.client.currentCompanyId = this.companyId;\n    this.questionaryGroupService.client.currentCompanyId = this.companyId;\n    this.reportTemplateService.client.currentCompanyId = this.companyId;\n\n    this.questionaryGroups = await this.getQuestionaryGroups();\n    this.reportTemplates = await this.getReportTemplates();\n\n    this.configureValidationRules();\n    this.questionaries = (await this.companyQuestionaryService.getAll()).filter(q => q.itemToQualify == ItemToQualify.Person || q.questionaryType == QuestionaryType.Competences);\n    this.searchQuestionary = this.questionaries;\n    this.searchQuestionaryGroup = this.questionaryGroups;\n    this.searchReport = this.reportTemplates;\n\n\n    // await this.languageService.getAll()\n    //   .then((languages: Language[]) => {\n    //     this.languages = languages;\n\n    //     let activeCulture = this.state.userBasicInfo.culture || 'es-CO';\n    //     let activeLang = languages.find(lg => lg.culture === activeCulture);\n    //     if (activeLang) {\n    //       this.model.languageId = activeLang.id;\n    //     }\n\n    //   })\n    //   .catch(error => {\n    //     this.notification.error(error);\n    //   });\n  }\n\n  private async bind(): Promise<any> {\n\n    // this.logger.debug(\"bind\");\n    try {\n      this.languages = await this.languageService.getAll();\n      this.setUserLanguage();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n\n  }\n\n  public setUserLanguage() {\n    this.logger.debug(\"setUserLanguage\");\n    if (this.state && this.state.userBasicInfo) {\n      let activeCulture = this.state.userBasicInfo.culture;\n      let activeLang = this.languages.find(lg => lg.culture === activeCulture);\n      if (activeLang) {\n        this.model.languageId = activeLang.id;\n      }\n    }\n  }\n\n  private async selectCompanyCompetence(): Promise<void> {\n    this.logger.debug(\"model.companyCompetenceIds\")\n    return await this.dialogService.open({\n      viewModel: CompanyCompetenceModal,\n      model: this.model.companyCompetenceIds\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        if (this.isCompetenceActive && this.model.companyCompetenceIds.length == 0) {\n          this.notification.warning(\"main.test.pages.people.errors.no_competences_selected\");\n        }\n      }\n    });\n  }\n\n  private async changeQuestionary() {\n\n    this.model.reportTemplateId = null;\n    this.model.questionaryGroupId = null;\n    let questionariesFilter: TestQuestionary[] = [];\n    var testQuestionary = new TestQuestionary();\n    this.model.questionaryIds.forEach(element => {\n      testQuestionary = new TestQuestionary();\n      testQuestionary = this.questionaries.find(it => it.stringId == element.stringId);\n      questionariesFilter.push(testQuestionary)\n    });\n    this.isDisable = false;\n    this.isModularActive = false;\n    // clean thematic associates of deselected questionnaires\n    if (this.model.activationThematicAssociates && this.model.activationThematicAssociates.length > 0) {\n      const selectedQuestionaryIds = questionariesFilter\n        .filter(q => q != null)\n        .map(q => q.id);\n      this.model.activationThematicAssociates = this.model.activationThematicAssociates\n        .filter(a => selectedQuestionaryIds.indexOf(a.questionaryId) !== -1);\n      // clean modular times of deselected questionnaires\n      this.avgTimeModular = this.avgTimeModular\n        .filter(a => selectedQuestionaryIds.indexOf(a.questionaryId) !== -1);\n    }\n    if (questionariesFilter.length > 0) {\n      // Sum non-modular avg + saved modular times\n      const nonModular = questionariesFilter.filter(it => !it.isModular);\n      const nonModularAvg = nonModular.length > 0 ? nonModular.map(it => it.averageTime).reduce((a, b) => a + b) : 0;\n      let modularAvg = 0;\n      for (let i = 0; i < this.avgTimeModular.length; i++) {\n        modularAvg += this.avgTimeModular[i].averageTime || 0;\n      }\n      this.selectedQuestionaries = {\n        qty: questionariesFilter.length,\n        avg: nonModularAvg + modularAvg,\n        questionaries: questionariesFilter.length > 0 ? questionariesFilter.map(it => it.name).reduce((a, b) => a + \", \" + b) : \"\",\n        hasCompetences: questionariesFilter.length > 0 ? questionariesFilter.some(it => it.questionaryType == QuestionaryType.Competences) : false,\n        hasEngineersTest: questionariesFilter.length > 0 ? questionariesFilter.some(it => it.noDiscType == NoDiscType.EngineersTest) : false,\n        hasModular: questionariesFilter.length > 0 ? questionariesFilter.some(it => it.isModular) : false,\n      };\n\n      if (this.selectedQuestionaries.hasEngineersTest) {\n        this.validateEngineersTests(questionariesFilter);\n\n      }\n      if (!this.selectedQuestionaries.hasEngineersTest) {\n        this.isEngineersTests = false;\n        this.model.engineersTests = [];\n      }\n\n      this.validateQuestionaryCareerPath(questionariesFilter);\n      if (this.selectedQuestionaries.hasCompetences && this.hasCompetencesFilter != true) {\n        this.selectCompanyCompetence();\n        this.hasCompetencesFilter = true;\n      }\n      if (!this.selectedQuestionaries.hasCompetences) {\n        this.hasCompetencesFilter = false;\n      }\n\n      if (this.selectedQuestionaries.hasModular) {\n        this.isModularActive = true;\n        const modularQuestionaries = questionariesFilter.filter(q => q != null && q.isModular);\n        for (let i = 0; i < modularQuestionaries.length; i++) {\n          const mq = modularQuestionaries[i];\n          const hasThematics = this.model.activationThematicAssociates &&\n            this.model.activationThematicAssociates.some(a => a.questionaryId === mq.id);\n\n          if (!hasThematics) {\n            await this.selectThematics(mq.id, mq.name);\n          }\n        }\n      }\n\n    } else {\n      this.selectedQuestionaries = {\n        qty: 0,\n        avg: 0,\n        questionaries: \"\",\n        hasCompetences: false,\n        hasEngineersTest: false,\n        hasModular: false,\n      };\n      this.model.activationThematicAssociates = [];\n    }\n  }\n\n  private async changeBattery(itm) {\n\n    this.model.reportTemplateId = null;\n    this.model.questionaryIds = [];\n    this.model.engineersTests = null;\n    this.model.activationThematicAssociates = [];\n    this.avgTimeModular = [];\n    const qg = this.questionaryGroups.filter(it => it.id === itm);\n    this.isDisable = false;\n    this.isModularActive = false;\n\n    if (qg.length) {\n      const questionaries = qg[0].questionaries;\n      const thematicAssociates = qg[0].questionaryGroupThematicAssociates || [];\n      const hasModular = questionaries.some(it => it.isModular);\n      let avg = await this.calculateAvgTime(hasModular, thematicAssociates, questionaries);\n      // Auto-populate activationThematicAssociates for modular questionaries\n      if (hasModular) {\n        for (let i = 0; i < questionaries.length; i++) {\n          const q = questionaries[i];\n          if (q.isModular) {\n            const associatesForQ = thematicAssociates.filter(a => a.questionaryId === q.id);\n            if (associatesForQ.length > 0) {\n              // Use associates from the group\n              for (const a of associatesForQ) {\n                let associate = new ActivationThematicAssociate();\n                associate.questionaryId = q.id;\n                associate.thematicGroupId = a.thematicGroupId;\n                associate.thematicVariableId = a.thematicVariableId;\n                this.model.activationThematicAssociates.push(associate);\n              }\n            } else {\n              const availableThematics = await this.companyQuestionaryService.getAvailableByQuestionaryId(q.id);\n              const enabledDimensions = availableThematics.filter(d => !d.isDisabled);\n              for (const dim of enabledDimensions) {\n                let associate = new ActivationThematicAssociate();\n                associate.questionaryId = q.id;\n                associate.thematicGroupId = dim.id;\n                associate.thematicVariableId = dim.thematicVariableId;\n                this.model.activationThematicAssociates.push(associate);\n              }\n            }\n          }\n        }\n        this.isModularActive = true;\n      }\n\n      this.selectedQuestionaries = {\n        qty: questionaries.length,\n        avg: avg,\n        questionaries: questionaries.length > 0 ? questionaries.map(it => it.name).reduce((a, b) => a + \", \" + b) : \"\",\n        hasCompetences: questionaries.length > 0 ? questionaries.some(it => it.questionaryType == QuestionaryType.Competences) : false,\n        hasEngineersTest: questionaries.length > 0 ? questionaries.some(it => it.noDiscType == NoDiscType.EngineersTest) : false,\n        hasModular: questionaries.length > 0 ? questionaries.some(it => it.isModular) : false,\n      };\n\n      this.validateEngineersTests(questionaries);\n    } else {\n      this.selectedQuestionaries = {\n        qty: 0,\n        avg: 0,\n        questionaries: \"\",\n        hasCompetences: false,\n        hasEngineersTest: false,\n        hasModular: false\n      }\n    }\n\n    this.cleanCompanyCompetences();\n    const questionaryGroup = await this.questionaryGroupService.getById(itm);\n    await this.isValidActivationVideoInterview(questionaryGroup);\n    this.validateHasTalents(itm);\n  }\n  private async isValidActivationVideoInterview(questionaryGroup: QuestionaryGroup) {\n    const hasVideoInterview = questionaryGroup.questionaries.filter(x => x.noDiscType === NoDiscType.VideoInterview);\n    if (hasVideoInterview.length > 0) {\n      const validate = await this.questionaryGroupService.validateActivationVideoInterview(questionaryGroup.id);\n      if (!validate) {\n        this.isInvalid = true;\n        return this.notification.warning(\"main.test.pages.people.errors.questionarygroup_videinterview_activation_failed\");\n      }\n      else\n        this.isInvalid = false;\n    }\n    else\n      this.isInvalid = false;\n  }\n\n  private async validateHasTalents(itm) {\n    this.questionaryGroup = await this.questionaryGroupService.getTalentsById(itm);\n    const hasVideoInterview = this.questionaryGroup.questionaries.filter(x => x.noDiscType === NoDiscType.VideoInterview);\n    if (hasVideoInterview.length > 0 && this.questionaryGroup.talentsPrice > 0) {\n      this.hasTalentsPrice = true;\n      this.talentsPrice = this.questionaryGroup.talentsPrice;\n    } else {\n      this.hasTalentsPrice = false;\n    }\n  }\n\n  private async changeReport(itm) {\n    this.model.questionaryGroupId = null;\n    this.model.questionaryIds = [];\n    this.model.engineersTests = null;\n    this.model.activationThematicAssociates = [];\n\n    const qg = this.reportTemplates.filter(it => it.id === itm);\n\n    if (qg.length) {\n      const reportTemplate = qg[0];\n      const questionaries = this.resolveQuestionariesForReportTemplate(reportTemplate);\n      this.model.questionaryIds = questionaries.map((it: TestQuestionary) => {\n        const questionaryLanguage = new QuestionaryLanguage();\n        questionaryLanguage.questionaryId = it.id;\n        questionaryLanguage.languageId = it.languageId;\n        questionaryLanguage.stringId = it.stringId;\n        return questionaryLanguage;\n      });\n      const thematicAssociates = reportTemplate.reportTemplateThematicAssociates || [];\n\n      const hasModular = questionaries.length > 0 ? questionaries.some(it => it.isModular) : false;\n      let avg = await this.calculateAvgTime(hasModular, thematicAssociates, questionaries);\n\n      // Auto-populate activationThematicAssociates for modular questionaries from report template\n      if (hasModular && thematicAssociates.length > 0) {\n        for (const associate of thematicAssociates) {\n          let activationAssociate = new ActivationThematicAssociate();\n          activationAssociate.questionaryId = associate.questionaryId;\n          activationAssociate.thematicGroupId = associate.thematicGroupId;\n          activationAssociate.thematicVariableId = associate.thematicVariableId;\n          this.model.activationThematicAssociates.push(activationAssociate);\n        }\n      }\n\n      this.selectedQuestionaries = {\n        qty: questionaries.length,\n        avg: avg,\n        questionaries: questionaries.length > 0 ? questionaries.map(it => it.name).reduce((a, b) => a + \", \" + b) : \"\",\n        hasCompetences: questionaries.length > 0 ? questionaries.some(it => it.questionaryType == QuestionaryType.Competences) : false,\n        hasEngineersTest: questionaries.length > 0 ? questionaries.some(it => it.noDiscType == NoDiscType.EngineersTest) : false,\n        hasModular: hasModular,\n      };\n\n      this.report.reportTemplateId = itm;\n      this.validateEngineersTests(questionaries);\n      // Ticket 5100\n      // this.report.activationQuestionaryIds = qg[0].questionaries.map(it => it.id);\n\n      this.changeReportParameter();\n    } else {\n      this.selectedQuestionaries = {\n        qty: 0,\n        avg: 0,\n        questionaries: \"\",\n        hasCompetences: false,\n        hasEngineersTest: false,\n        hasModular: false,\n      }\n    }\n\n    this.cleanCompanyCompetences();\n  }\n\n  private resolveQuestionariesForReportTemplate(reportTemplate: ReportTemplate): TestQuestionary[] {\n    if (!reportTemplate) {\n      return [];\n    }\n\n    const persistedIds = (reportTemplate.reportTemplateQuestionaryIds || [])\n      .filter(x => x > 0);\n\n    if (persistedIds.length > 0) {\n      const selectedFromPersisted = reportTemplate.questionaries\n        .filter(q => persistedIds.indexOf(q.id) !== -1)\n        .map(q => <TestQuestionary><unknown>q);\n\n      if (selectedFromPersisted.length > 0) {\n        return selectedFromPersisted;\n      }\n    }\n\n    // Legacy fallback: if there are no persisted ids yet, keep previous behavior.\n    return reportTemplate.questionaries.map(q => <TestQuestionary><unknown>q);\n  }\n\n  private validateQuestionaryCareerPath(questionaries: Questionary[]) {\n    this.isCareerPath = false;\n    const qCareerPaths = questionaries.filter(q => q.noDiscType == NoDiscType.CareerPath);\n    this.isCareerPath = qCareerPaths.length > 0 ? true : false;\n  }\n\n  private validateEngineersTests(questionaries: Questionary[]) {\n    this.isEngineersTests = false;\n    var engineersTests: Test[] = [];\n    let existQuestionary: Test[] = [];\n\n    if (this.model.engineersTests != undefined) {\n      if (this.model.engineersTests.length > 0)\n        engineersTests = this.model.engineersTests;\n    }\n\n    var test = new Test();\n    questionaries.forEach(function (item: Questionary) {\n      if (item.noDiscType == NoDiscType.EngineersTest) {\n        if (engineersTests != undefined) {\n          if (engineersTests.length > 0)\n            existQuestionary = engineersTests.filter(x => x.questionaryId === item.id);\n\n          if (existQuestionary.length == 0) {\n            test = new Test();\n            test.questionaryId = item.id\n            test.questionaryName = item.name\n            engineersTests.push(test);\n          }\n        }\n\n      }\n    });\n\n    if (engineersTests.length) {\n      this.model.engineersTests = engineersTests;\n      this.isEngineersTests = true;\n    }\n  }\n\n  private cleanCompanyCompetences() {\n    if (!this.selectedQuestionaries.hasModular) {\n      this.model.activationThematicAssociates = [];\n    }\n    if (!this.selectedQuestionaries.hasCompetences) {\n      this.model.companyCompetenceIds = [];\n    }\n  }\n\n  private async getQuestionaryGroups(): Promise<QuestionaryGroup[]> {\n    return this.questionaryGroupService.getAll();\n  }\n\n  private async getReportTemplates(): Promise<ReportTemplate[]> {\n    return this.reportTemplateService.getAll();\n  }\n\n  public async submit(): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          if (!this.model.reportTemplateId && !this.model.questionaryGroupId && !this.model.questionaryIds) {\n            this.notification.warning(\"main.test.pages.people.errors.questionarygroup_or_reports_is_missing\");\n            return;\n          }\n          else if (this.model.invitationExpireDate && this.model.invitationExpireDate < new Date()) {\n            this.notification.warning(\"main.test.pages.people.errors.old_invitation_expire_date\");\n            return;\n          }\n          if (this.model.questionaryIds.length > 1) {\n            let selectedTests = this.model.questionaryIds.map(sel =>\n              this.questionaries.find(q => q.stringId === sel.stringId)\n            ).filter(q => q != null);\n\n            const selectedIds = selectedTests.map(q => q.id);\n            for (let i = 0; i < selectedTests.length; i++) {\n              const q = selectedTests[i];\n              if (q.questionaryIncompatibilities && q.questionaryIncompatibilities.length > 0) {\n                for (let j = 0; j < q.questionaryIncompatibilities.length; j++) {\n                  const incompatibleId = q.questionaryIncompatibilities[j].incompatibleQuestionaryId;\n                  if (selectedIds.indexOf(incompatibleId) !== -1) {\n                    const incompatibleQ = selectedTests.find(y => y.id === incompatibleId);\n                    this.notification.warning(\n                      `${q.name} main.admin.pages.test_management.questionary_groups.errors.incompatible_with ${incompatibleQ ? incompatibleQ.name : incompatibleId}`\n                    );\n                    return;\n                  }\n                }\n              }\n            }\n          }\n          if (this.isModularActive &&\n            (!this.model.activationThematicAssociates ||\n              this.model.activationThematicAssociates.length === 0)) {\n            this.notification.warning(\"main.test.pages.people.errors.no_thematics_selected\");\n            return;\n          }\n          // else if (this.selectedQuestionaries.hasCompetences && this.model.companyCompetenceIds.length == 0) {\n          //   this.notification.warning(\"main.test.pages.people.errors.no_competences_selected\");\n          // }\n          const discCount = this.model.questionaryIds.map((sel) =>\n            this.questionaries.find((q) => q.stringId === sel.stringId)\n          ).filter((q) => q && q.questionaryType === QuestionaryType.Disc).length;\n\n          if (discCount > 1) {\n            this.notification.warning(\"main.test.pages.people.errors.too_many_disc_questionaries\");\n            return;\n          }\n          else {\n            return await this.save();\n          }\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async save(): Promise<any> {\n\n    if (this.isDisable && this.showDisableParameter) {\n      this.report.personId = this.model.personId;\n      return await this.dialogController.ok(this.report);\n    }\n    else {\n      return await this.dialogController.ok();\n    }\n\n  }\n\n  private OnChangeQuestionary() {\n    this.searchQuestionary = [];\n    if (!this.selectedLanguageId && !this.questionaryFilter) {\n      this.searchQuestionary = this.questionaries;\n    }\n    else if (this.selectedLanguageId == 0 && this.questionaryFilter.length === 0) {\n      this.searchQuestionary = this.questionaries;\n    }\n    else if (this.questionaryFilter.length > 0 && this.selectedLanguageId > 0) {\n      this.searchQuestionary = this.questionaries.filter(q => q.name.toLowerCase().includes(this.questionaryFilter.toLowerCase()) && q.languageId === this.selectedLanguageId);\n    }\n    else if (this.questionaryFilter.length > 0) {\n      this.searchQuestionary = this.questionaries.filter(q => q.name.toLowerCase().includes(this.questionaryFilter.toLowerCase()));\n    }\n    else if (this.selectedLanguageId > 0) {\n      this.searchQuestionary = this.questionaries.filter(q => q.languageId == this.selectedLanguageId);\n    }\n  }\n\n  private async OnChangeQuestionaryGroup() {\n    if (this.questionaryGroupFilter.length > 0) {\n      this.searchQuestionaryGroup = this.questionaryGroups.filter(q => q.name.toLowerCase().includes(this.questionaryGroupFilter.toLowerCase()));\n      this.model.questionaryGroupId = this.searchQuestionaryGroup[0].id;\n      await this.changeBattery(this.model.questionaryGroupId);\n    }\n    else if (this.questionaryGroupFilter == null || this.questionaryGroupFilter.length == 0) {\n      this.searchQuestionaryGroup = [];\n      this.searchQuestionaryGroup = this.questionaryGroups;\n      this.model.questionaryGroupId = null;\n    }\n\n  }\n\n  private async OnChangeReport() {\n    if (this.reportFilter.length > 0) {\n      this.searchReport = this.reportTemplates.filter(q => q.name.toLowerCase().includes(this.reportFilter.toLowerCase()));\n      this.model.reportTemplateId = this.searchReport[0].id;\n      await this.changeReport(this.model.reportTemplateId);\n    }\n    else if (this.reportFilter == null || this.reportFilter.length == 0) {\n      this.searchReport = [];\n      this.searchReport = this.reportTemplates;\n      this.model.reportTemplateId = null;\n      await this.changeReport(this.model.reportTemplateId);\n    }\n\n  }\n\n  private createQuestionaryGroup() {\n    this.dialogController.cancel();\n    this.router.navigate(`company/${this.companyId}/admin/test-management/questionary-groups/questionary-group/create`);\n  }\n\n  private createReportTemplate() {\n    this.dialogController.cancel();\n    this.router.navigate(`company/${this.companyId}/admin/test-management/report-templates/report-template/create`);\n  }\n\n  private changeTag(ban: boolean) {\n    this.showDisableParameter = ban;\n    if (!ban) {\n      this.isDisable = ban;\n    }\n    this.model.reportTemplateId = null;\n    this.model.questionaryGroupId = null;\n    this.selectedQuestionaries = {\n      qty: 0,\n      avg: 0,\n      questionaries: \"\",\n      hasCompetences: false,\n      hasEngineersTest: false,\n      hasModular: false,\n    }\n    this.model.questionaryIds = [];\n    this.model.engineersTests = null;\n\n\n  }\n\n  public async changeReportParameter(): Promise<any> {\n\n    this.logger.debug(\"changeReportParameter\");\n\n    try {\n      this.reportTemplate = await this.reportTemplateService.getById(this.report.reportTemplateId);\n      this.report.companyId = this.companyId;\n      this.report.sheets = this.reportTemplate.sheets;\n      this.setParameters(this.report.sheets.map(x => x.id));\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private setParameters(sheetIds: number[]) {\n    this.report.parameters = [];\n\n    this.report.sheets.forEach(sheet => {\n      const index = sheetIds.findIndex(x => x == sheet.id);\n      if (index !== -1) {\n        for (let par of sheet.parameters) {\n          const index1 = this.report.parameters.findIndex(x => x === par.parameter);\n          if (index1 === -1) {\n            this.report.parameters.push(par.parameter);\n          }\n        }\n      }\n    });\n\n    this.logger.debug(\"Parameters: \", this.report.parameters);\n  }\n  private async selectThematics(questionaryId: number, questionaryName: string): Promise<void> {\n    // Ensure the array is initialized\n    if (!this.model.activationThematicAssociates) {\n      this.model.activationThematicAssociates = [];\n    }\n\n    // Get available dimensions and filter disabled ones\n    const allDimensions = await this.companyQuestionaryService.getAvailableByQuestionaryId(questionaryId);\n    const enabledDimensions = allDimensions.filter(d => !d.isDisabled);\n\n    // Check if the questionary is a transversal one (companyId == null)\n    const questionary = this.questionaries.find(q => q.id === questionaryId);\n    if (questionary && questionary.companyId != null && enabledDimensions.length > 0) {\n      // Auto-select ALL dimensions for company questionaries\n      const newAssociates: ActivationThematicAssociate[] = enabledDimensions.map(dim => {\n        let associate = new ActivationThematicAssociate();\n        associate.questionaryId = questionaryId;\n        associate.thematicGroupId = dim.id;\n        associate.thematicVariableId = dim.thematicVariableId;\n        return associate;\n      });\n\n      const remaining = this.model.activationThematicAssociates\n        .filter(a => a.questionaryId !== questionaryId);\n      this.model.activationThematicAssociates = remaining.concat(newAssociates);\n\n      let totalAverageTime = 0;\n      enabledDimensions.forEach(dim => totalAverageTime += +(dim.averageTime || 0));\n      this.avgTimeModular = this.avgTimeModular.filter(a => a.questionaryId !== questionaryId);\n      this.avgTimeModular.push({ questionaryId: questionaryId, averageTime: totalAverageTime });\n      this.selectedQuestionaries.avg += totalAverageTime;\n      return;\n    }\n\n    const modalModel: DimensionSelectorModel = {\n      questionaryId: questionaryId,\n      questionaryName: questionaryName,\n      questionaryGroupThematicAssociates: [...this.model.activationThematicAssociates],\n      isActivation: true\n    };\n\n    return await this.dialogService\n      .open({\n        viewModel: DimensionSelectorModal,\n        model: modalModel,\n      })\n      .whenClosed(async (response: any) => {\n        if (!response.wasCancelled && response.output) {\n          // Remove existing associates for this questionary and add the new ones\n          const remaining = this.model.activationThematicAssociates\n            .filter(a => a.questionaryId !== questionaryId);\n          this.model.activationThematicAssociates = remaining.concat(response.output.associates);\n\n\n          this.avgTimeModular = this.avgTimeModular.filter(a => a.questionaryId !== questionaryId);\n          this.avgTimeModular.push({ questionaryId: questionaryId, averageTime: response.output.totalAverageTime || 0 });\n\n          this.selectedQuestionaries.avg += response.output.totalAverageTime || 0;\n\n          this.logger.debug(\"Updated activationThematicAssociate:\",\n            this.model.activationThematicAssociates.length);\n        }\n        if (\n          this.isModularActive &&\n          (!this.model.activationThematicAssociates ||\n            this.model.activationThematicAssociates.length === 0)\n        ) {\n          this.notification.warning(\n            \"main.test.pages.people.errors.no_thematics_selected\"\n          );\n        }\n      });\n  }\n  private async calculateAvgTime(hasModular: boolean, thematicAssociates: { questionaryId: number; thematicGroupId: number }[], questionaries: Questionary[]): Promise<number> {\n    let avg = 0;\n    if (hasModular) {\n      for (let i = 0; i < questionaries.length; i++) {\n        const q = questionaries[i];\n        if (q.isModular) {\n          const associatesForQ = thematicAssociates.filter(a => a.questionaryId === q.id);\n          if (associatesForQ.length > 0) {\n            const availableThematics = await this.companyQuestionaryService.getAvailableByQuestionaryId(q.id);\n            for (let j = 0; j < associatesForQ.length; j++) {\n              const thematic = availableThematics.find(v => v.id === associatesForQ[j].thematicGroupId);\n              avg += (thematic && thematic.averageTime ? thematic.averageTime : 0);\n            }\n          } else if (q.companyId == null) {\n            // Transversal questionary\n            const availableThematics = await this.companyQuestionaryService.getAvailableByQuestionaryId(q.id);\n            const enabledDimensions = availableThematics.filter(d => !d.isDisabled);\n            for (let j = 0; j < enabledDimensions.length; j++) {\n              avg += +(enabledDimensions[j].averageTime || 0);\n            }\n          }\n        } else {\n          avg += +q.averageTime;\n        }\n      }\n    } else {\n      avg = questionaries.length > 0 ? questionaries.map(it => it.averageTime).reduce((a, b) => a + b) : 0;\n    }\n    return avg;\n  }\n}\n","module.exports = \"<template> <require from=../../../../models/test-person/questionaryWayViewEngineHooks></require> <require from=../../../../models/test-person/whoCanSeeReportViewEngineHooks></require> <require from=../people-competence/competence-activation-selector></require> <require from=../../../test-reports/components/report-parameter></require> <require from=../../../../models/test-perfiltic/difficultyViewEngineHooks></require> <require from=../../../components/multiselect-tht></require> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2> ${'main.testperson.pages.persons_activation.title' & t} </h2> <div class=\\\"row mb-3\\\"> <form class=\\\"col-12 mt-5\\\"> <div class=\\\"row mb-3\\\"> <div class=col> <p class=chevron-accordion> <a class=\\\"btn btn-link collapse-header\\\" data-toggle=collapse href=#collapseAdvanceOptions role=button aria-expanded=false aria-controls=collapseAdvanceOptions> ${'main.testperson.pages.person.advanced_options' & t} </a> </p> <div class=collapse id=collapseAdvanceOptions> <div class=row> <div class=col-6> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=model.isConfidentialTest checked.bind=\\\"model.isConfidentialTest & validate\\\"/> <label for=model.isConfidentialTest class=form-check-label>${'main.testperson.pages.person.confidential_test' & t}</label> </span> </div> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=model.isAnonymous checked.bind=\\\"model.isAnonymous & validate\\\"/> <label for=model.isAnonymous class=form-check-label>${'main.testperson.pages.person.anonymous' & t}</label> </span> </div> </div> </div> <div class=row> <div class=col-6> <div class=form-group> <label for=model.questionaryWay>${'main.testperson.pages.person.person_questionary_way_label' & t}</label> <select value.bind=\\\"model.questionaryWay & validate\\\" class=form-control id=model.questionaryWay> <option repeat.for=\\\"option of QuestionaryWays\\\" model.bind=QuestionaryWay[option]> ${'main.testperson.pages.person.person_questionary_way.' + option & t}</option> </select> </div> </div> <div class=col-6> <div class=form-group> <label for=model.whoCanSeeReport>${'main.testperson.pages.person.who_can_see_report' & t}</label> <select value.bind=\\\"model.whoCanSeeReport & validate\\\" class=form-control id=model.whoCanSeeReport> <option repeat.for=\\\"option of WhoCanSeeReports\\\" model.bind=WhoCanSeeReport[option]> ${'main.testperson.pages.person.who_can_see_report_' + option & t}</option> </select> </div> </div> </div> <div class=row> <div class=col-6> <div class=form-group> <label for=model.invitationExpireDate t=main.testperson.pages.person.invitation_expire_date>Date</label> <ux-date-picker value.bind=\\\"model.invitationExpireDate & validate\\\" id=model.invitationExpireDate></ux-date-picker> </div> </div> <div class=col-6> <div class=form-group> <label for=model.languageId>${'main.testperson.pages.person.language' & t}</label> <select value.bind=\\\"model.languageId & validate\\\" class=form-control> <option repeat.for=\\\"option of languages\\\" model.bind=option.id>${option.name & t}</option> </select> </div> </div> </div> </div> </div> </div> <div class=row> <div class=col-3> <h5>${'main.test.pages.people.activation_type' & t}</h5> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-3\\\"> <div class=\\\"nav flex-column nav-pills\\\" id=v-pills-tab role=tablist aria-orientation=vertical> <a class=nav-link id=v-pills-questionary-tab data-toggle=pill href=#v-pills-questionary role=tab click.delegate=changeTag(false) aria-controls=v-pills-questionary aria-selected=false>${'main.admin.pages.test_management.questionary_groups.questionaries.title' & t}</a> <a class=\\\"nav-link active\\\" id=v-pills-questionarygroups-tab data-toggle=pill href=#v-pills-questionarygroups role=tab aria-controls=v-pills-questionarygroups click.delegate=changeTag(true) aria-selected=true>${'main.test.pages.people.questionarygroups_tab.title' & t}</a> <a class=nav-link id=v-pills-report-tab data-toggle=pill href=#v-pills-report role=tab click.delegate=changeTag(true) aria-controls=v-pills-report aria-selected=false>${'main.testperson.pages.person.reports_tab.title' & t}</a> </div> </div> <div class=\\\"col-12 col-md-9\\\"> <div class=tab-content id=v-pills-tabContent> <div class=\\\"tab-pane fade show active\\\" id=v-pills-questionarygroups role=tabpanel aria-labelledby=v-pills-questionarygroups-tab> <div class=row> <div class=col-12> <div class=form-group> <label for=model.questionaryGroupId>${'main.test.pages.people.questionarygroups' & t}</label> <div class=form-group> <input type=text class=form-control id=questionaryGroupFilter input.delegate=OnChangeQuestionaryGroup() t=[placeholder]ux_datatable.search_placeholder value.bind=questionaryGroupFilter> </div> <select value.bind=\\\"model.questionaryGroupId & validate\\\" class=form-control change.delegate=changeBattery(model.questionaryGroupId)> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of searchQuestionaryGroup\\\" model.bind=option.id>${option.name & t}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=model.questionaryGroupId> <div class=col-12> <p t=main.test.pages.people.questionaries_info t-params.bind=\\\"{quantity:selectedQuestionaries.qty, questionaries: selectedQuestionaries.questionaries,  duration: selectedQuestionaries.avg}\\\"> Questionaries quantity </p> </div> </div> <div class=row> <div class=col-12> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: TestManagementQuestionaryGroupCreate\\\" title.bind=\\\"'commands.edit' & t\\\" click.delegate=createQuestionaryGroup()> ${'main.test.pages.people.new_questionarygroups' & t} </button> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=v-pills-report role=tabpanel aria-labelledby=v-pills-report-tab> <div class=row> <div class=col-12> <div class=form-group> <label for=model.reportTemplateId>${'main.testperson.pages.person.reports' & t}</label> <div class=form-group> <input type=text class=form-control id=reportFilter input.delegate=OnChangeReport() t=[placeholder]ux_datatable.search_placeholder value.bind=reportFilter> </div> <select value.bind=\\\"model.reportTemplateId & validate\\\" class=form-control change.delegate=changeReport(model.reportTemplateId)> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of searchReport\\\" model.bind=option.id>${option.name & t} </option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=model.reportTemplateId> <div class=col-12> <p t=main.test.pages.people.questionaries_info t-params.bind=\\\"{quantity:selectedQuestionaries.qty, questionaries: selectedQuestionaries.questionaries, duration: selectedQuestionaries.avg}\\\"> Questionaries quantity </p> </div> </div> <div class=row> <div class=col-12> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: TestManagementReportCreate\\\" title.bind=\\\"'commands.edit' & t\\\" click.delegate=createReportTemplate()> ${'main.testperson.pages.person.commands.new_report' & t} </button> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=v-pills-questionary role=tabpanel aria-labelledby=v-pills-questionary-tab> <div class=row> <div class=col-12> <div class=form-group> <div class=form-group> <div class=row> <div class=col-md-6> <label for=model.activation.questionaryIds>${'main.test.pages.people.questionarygroups' & t}</label> <input type=text class=form-control id=questionaryFilter input.delegate=OnChangeQuestionary() t=[placeholder]ux_datatable.search_placeholder value.bind=questionaryFilter> </div> <div class=col-md-6> <label for=model.activation.languageId>${'main.admin.pages.questionaries.questions.questionnaire_language' & t}</label> <select class=form-control value.bind=selectedLanguageId change.delegate=OnChangeQuestionary()> <option t=forms.select_option value=0></option> <option repeat.for=\\\"option of languages\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> </div> <multiselect-tht params-list.bind=searchQuestionary value.bind=model.questionaryIds change.delegate=changeQuestionary()> </multiselect-tht> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=model.questionaryIds> <div class=col-12> <p t=main.test.pages.people.questionaries_info t-params.bind=\\\"{quantity:selectedQuestionaries.qty, questionaries: selectedQuestionaries.questionaries, duration: selectedQuestionaries.avg}\\\"> Questionaries quantity </p> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> </div> </div> <div if.bind=isEngineersTests> <div class=row> <div class=col-12> <label>${'main.test.pages.people.perfiltic.description' & t}</label> </div> </div> <div class=row> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\"> <thead> <tr class=d-flex> <th class=col-md-6 scope=col> ${'main.test.pages.people.perfiltic.programmingLanguage' & t}</th> <th class=col-md-6 scope=col> ${'main.test.pages.people.perfiltic.difficulty' & t}</th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of model.engineersTests\\\"> <td class=col-md-6>${item.questionaryName}</td> <td class=col-md-6> <select value.bind=\\\"item.difficulty & validate\\\" class=form-control id=item.difficulty> <option repeat.for=\\\"option of Difficulties\\\" model.bind=Difficulty[option]> ${'main.test.pages.perfiltic.difficulty.' + option & t}</option> </select> </td> </tr> </tbody> </table> </div> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> <p>&nbsp;</p> </div> </div> <div class=row style=margin-bottom:50px> <div class=col> <label>${'main.testperson.pages.person.additional_text' & t}</label> <quill-editor value.bind=\\\"model.additionalText & validate\\\"></quill-editor> </div> </div> <div class=clearfix></div> <div class=\\\"row mb-3\\\"> <div class=col> <p>&nbsp;</p> </div> </div> <div class=form-group if.bind=showDisableParameter> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=isDisable class=switch model.bind=isDisable checked.bind=isDisable> <label for=isDisable>${'main.testperson.pages.person.mail_notification' & t}</label> </span> <report-parameter is-disable.bind=isDisable model.bind=report report-template.bind=reportTemplate is-report-activation.bind=false></report-parameter> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mt-6\\\" if.bind=!isInvalid> <div class=col-12> <div class=\\\"alert alert-warning\\\" if.bind=hasTalentsPrice> <strong> <p t=main.test.pages.people.send_person_activation_talents_confirmation t-params.bind=\\\"{talentsPrice: talentsPrice}\\\">talents?</p> </strong> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-enable=\\\"can: TestUpdateCreate\\\" click.delegate=submit()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </div> </div> </form> </div> </ux-dialog-body> </ux-dialog> </template> \";","import { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { EventAggregator } from 'aurelia-event-aggregator';\nimport { autoinject, LogManager, bindable, Disposable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { Company } from \"models/companies/company\";\nimport { ActivationQuestionaryService } from \"../../services/people/activation-questionary-service\";\nimport { Person } from \"models/test-person/person\";\nimport { PersonQuestionaryActivationMessage } from 'main/test/messages/personActivationMessage';\nimport { DeleteConfirmation } from 'main/components/delete-confirmation';\nimport { CompetenceActivatedModal } from 'main/test/pages/people-competence/competence-activated-modal';\nimport { DefaultColorsReportsService } from 'main/services/reports/default-colors-reports-service';\nimport { QuestionarySheetService } from 'main/admin/services/test-management/questionary-sheet-service';\nimport { ReportTemplateService } from 'main/admin/services/test-management/report-template-service';\nimport { ReportService } from 'main/test-reports/services/report-service';\nimport { Report } from 'models/test-reports/reports/report';\nimport { addSlash } from 'common/utils/utility';\nimport config from 'config';\nimport { DimensionActivatedModal, DimensionActivatedModel } from 'main/components/dimension-activated-modal';\n\n@autoinject()\nexport class PeopleQuestionaryList {\n\n  private logger: Logger;\n  private params: any = {};\n  public companyId: number;\n  private company: Company;\n\n  @bindable\n  private person: Person;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private colorsQuestionaryPrices: Map<number, number> = new Map();\n\n  private subscriptions: Disposable[] = [];\n\n  constructor(\n    private activationQuestionaryService: ActivationQuestionaryService,\n    private notification: Notification,\n    private ea: EventAggregator,\n    private dialogService: DialogService,\n    private defaultColorsReportsService: DefaultColorsReportsService,\n    private questionarySheetService: QuestionarySheetService,\n    private reportTemplateService: ReportTemplateService,\n    private reportService: ReportService\n  ) {\n\n    this.logger = LogManager.getLogger(\"PeopleQuestionaryList\");\n\n    // event when new activation is created\n    this.subscriptions.push(this.ea.subscribe(PersonQuestionaryActivationMessage, this.databind.bind(this)));\n\n    this.parameters.search.ActivationQuestionaryStatus = -1;\n  }\n\n  public unbind() {\n    this.subscriptions.forEach(x => x.dispose());\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.activationQuestionaryService.list(this.parameters, this.person.id)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n  private async requalify(id: number){\n    await this.activationQuestionaryService.requalifyById(id);\n    this.notification.success(\"notifications.item_edited\");\n  }\n  private async bind(): Promise<any> {\n    if (this.person) {\n\n      this.activationQuestionaryService.client.currentCompanyId = this.person.companyId;\n      this.defaultColorsReportsService.client.currentCompanyId = this.person.companyId;\n\n      try {\n        const items = await this.defaultColorsReportsService.getQuestionariesWithColors();\n        this.colorsQuestionaryPrices = new Map<number, number>(items.map(function(x): [number, number] { return [x.questionaryId, x.talentsPrice]; }));\n      } catch (e) {\n        this.colorsQuestionaryPrices = new Map();\n      }\n\n      return await this.databind();\n    }\n\n  }\n\n  public hasColorsReport(questionaryId: number): boolean {\n    return this.colorsQuestionaryPrices.has(questionaryId);\n  }\n\n  public getTalentsPrice(questionaryId: number): number {\n    return this.colorsQuestionaryPrices.get(questionaryId) || 0;\n  }\n\n  private async databind(): Promise<any> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<any> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async delete(id: number, name: string): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: name\n    })\n      .whenClosed(async (response: DialogCloseResult) => {\n        if (!response.wasCancelled) {\n          return await this.activationQuestionaryService.delete(id)\n            .then(() => {\n\n              this.notification.success(\"notifications.item_deleted\");\n              this.databind();\n            })\n            .catch(error => {\n              this.notification.error(error);\n            });\n        }\n      });\n  }\n\n  private clearFilters() {\n    this.parameters.search.Query = this.parameters.search.StartDate = this.parameters.search.EndDate = null;\n    this.parameters.search.ActivationQuestionaryStatus = -1;\n  }\n\n  private async seeActivatedCompetences(id: number): Promise<void> {\n    await this.dialogService.open({\n      viewModel: CompetenceActivatedModal,\n      model: id\n    })\n  }\n\n  public async generateColorsReport(activationId: number, questionaryId: number): Promise<void> {\n    try {\n\n      this.defaultColorsReportsService.client.currentCompanyId = this.person.companyId;\n      this.questionarySheetService.client.currentCompanyId = this.person.companyId;\n      this.reportTemplateService.client.currentCompanyId = this.person.companyId;\n      this.reportService.client.currentCompanyId = this.person.companyId;\n\n      const principalSheet = await this.questionarySheetService.getPrincipalSheetByQuestionary(\n        this.person.companyId, \n        questionaryId\n      );\n      \n      if (!principalSheet) {\n        return;\n      }\n        const colorsTemplate = await this.defaultColorsReportsService.getBySheet(\n        this.person.companyId, \n        principalSheet.id\n      );\n\n      if (!colorsTemplate || !colorsTemplate.id) {\n        return;\n      }\n\n      const templateDetail = await this.reportTemplateService.getById(colorsTemplate.id);\n\n      if (!templateDetail) {\n        return;\n      }\n\n      // Check if a report already exists for this activation + template to avoid duplicate talent charges\n      try {\n        const existingReport = await this.reportService.findExisting(this.person.id, templateDetail.id, activationId);\n        if (existingReport && existingReport.id) {\n          const reportsUrl = addSlash(config.URLS_REPORTS) + \"test-reports/\" + existingReport.id;\n          window.open(reportsUrl, \"_blank\");\n          return;\n        }\n      } catch (e) {\n        // Not found (404) - proceed to create new report\n      }\n\n      const parameters: number[] = [];\n      for (const sheet of templateDetail.sheets) {\n        if (sheet.parameters) {\n          for (const param of sheet.parameters) {\n            if (!parameters.includes(param.parameter)) {\n              parameters.push(param.parameter);\n            }\n          }\n        }\n      }\n\n      const report = new Report();\n      report.companyId = this.person.companyId;\n      report.personId = this.person.id;\n      report.reportTemplateId = templateDetail.id;\n      report.languageId = templateDetail.languageId;\n      report.discType = 0;\n      report.sheets = templateDetail.sheets;\n      report.parameters = parameters;\n      report.activationQuestionaryIds = [activationId];\n\n      const response = await this.reportService.create(report);\n\n      const testReportsUrl = config.URLS_REPORTS;\n      const url = addSlash(testReportsUrl) + \"test-reports/\" + response.id;\n      window.open(url, \"_blank\");\n\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async seeActivatedDimensions(activationId: number, questionaryId: number): Promise<void> {\n    const model: DimensionActivatedModel = {\n      source: 'activation',\n      questionaryId: questionaryId,\n      activationId: activationId\n    };\n\n    await this.dialogService.open({ viewModel: DimensionActivatedModal, model: model });\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../models/test-person/activationQuestionaryStatusViewEngineHooks></require> <require from=../../../../models/questionaries/questionaryTypeViewEngineHooks></require> <require from=../../../../models/questionaries/noDiscTypeViewEngineHooks></require> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-8\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <a class=\\\"btn btn-link collapse-header\\\" data-toggle=collapse href=#collapseMoreFilterOptions role=button aria-expanded=false aria-controls=collapseMoreFilterOptions> <i class=material-icons>chevron_right</i> ${'commons.more_filter_options' & t} </a> </div> <div class=\\\"col-md-4 col-12\\\" if.bind=\\\"parameters.search.Query || parameters.search.StartDate || parameters.search.EndDate || parameters.search.ActivationQuestionaryStatus != -1\\\"> <button class=\\\"btn btn-link\\\" click.delegate=clearFilters()> <i class=material-icons>clear</i> ${'commons.clear_filters' & t} </button> </div> </div> <div class=collapse id=collapseMoreFilterOptions> <div class=row> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=parameters.search.ActivationQuestionaryStatus>${'main.test.pages.person.person_questionary_list.state' & t}</label> <select value.bind=parameters.search.ActivationQuestionaryStatus change.delegate=\\\"databind() & debounce:100\\\" class=form-control id=parameters.search.ActivationQuestionaryStatus> <option t=forms.select_option value=-1></option> <option repeat.for=\\\"option of ActivationQuestionaryStatuses\\\" model.bind=ActivationQuestionaryStatus[option]> ${'main.test.pages.person.person_questionary_list.state_' + option & t}</option> </select> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=parameters.search.StartDate t=commons.start_date>Start_Date</label> <ux-date-picker value.bind=parameters.search.StartDate change.delegate=\\\"databind() & debounce:100\\\" id=parameters.search.StartDate></ux-date-picker> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=parameters.search.EndDate t=commons.end_date>Start_Date</label> <ux-date-picker value.bind=parameters.search.EndDate change.delegate=\\\"databind() & debounce:100\\\" id=parameters.search.EndDate></ux-date-picker> </div> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\" if.bind=\\\"item.activationQuestionaryStatus == ActivationQuestionaryStatus.Finalized\\\"> <label class=d-block><small class=text-muted>${'main.test.pages.person.person_questionary_list.state' & t}</small></label> <span class=\\\"badge badge-pill badge-success\\\">${'main.test.pages.person.person_questionary_list.state_' + ActivationQuestionaryStatuses[item.activationQuestionaryStatus] & t} ${item.noDiscType == NoDiscType.CareerPath ? item.perfilticURL + '%' : ''} </span> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\" if.bind=\\\"item.activationQuestionaryStatus != ActivationQuestionaryStatus.Finalized\\\"> <label class=d-block><small class=text-muted>${'main.test.pages.person.person_questionary_list.state' & t}</small></label> <span class=\\\"badge badge-pill badge-warning\\\">${'main.test.pages.person.person_questionary_list.state_' + ActivationQuestionaryStatuses[item.activationQuestionaryStatus] & t}</span> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'main.test.pages.person.person_questionary_list.test' & t}</small></label> <span title=${item.questionaryName}>${item.questionaryName}</span> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'main.test.pages.person.person_questionary_list.activation_date' & t}</small></label> ${item.createdOn | dateTimeFormat} </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'main.test.pages.person.person_questionary_list.application_date' & t}</small></label> ${item.applicationDate | dateTimeFormat} </div> <div class=\\\"col-md-1 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'main.test.pages.person.person_questionary_list.evaluator' & t}</small></label> <span title=${item.createdByName}>${item.createdByName}</span> </div> <div class=\\\"col-md-1 col-12 mb-2\\\"> <a href=# if.bind=\\\"item.activationQuestionaryStatus !== ActivationQuestionaryStatus.Finalized\\\" global-permission-show=\\\"can: TestPersonUpdate\\\" click.delegate=\\\"delete(item.id, item.questionaryName)\\\" title.bind=\\\"'commands.archive' & t\\\" role=button> <i class=material-icons>archive</i> </a> <a href=# if.bind=\\\"item.activationQuestionaryStatus == ActivationQuestionaryStatus.InQualification && item.canRequalify\\\" global-permission-show=\\\"can: LabelCreate\\\" click.delegate=requalify(item.id) title.bind=\\\"'commands.recalify' & t\\\" role=button> <i class=material-icons>cached</i> </a> <a href=# if.bind=\\\"item.questionaryType == QuestionaryType.Competences\\\" global-permission-show=\\\"can: TestPersonView\\\" title=\\\"${'commands.view' & t}\\\" click.delegate=seeActivatedCompetences(item.id)> <i class=material-icons>visibility</i> </a> <a href=# if.bind=\\\"item.activationQuestionaryStatus == ActivationQuestionaryStatus.Finalized && hasColorsReport(item.questionaryId)\\\" title=\\\"${'main.test.pages.person.person_questionary_list.generate_colors_report' & t}\\\" click.delegate=\\\"generateColorsReport(item.id, item.questionaryId)\\\" role=button> <i class=material-icons>assessment</i> </a> <a href=# if.bind=item.isModular global-permission-show=\\\"can: TestPersonView\\\" title=\\\"${'commands.view' & t}\\\" click.delegate=seeActivatedDimensions(item.activationId,item.questionaryId)> <i class=material-icons>visibility</i> </a> </div> <div class=\\\"col-md-2 col-12 mb-2\\\" if.bind=\\\"item.activationQuestionaryStatus == ActivationQuestionaryStatus.Finalized && hasColorsReport(item.questionaryId) && getTalentsPrice(item.questionaryId) > 0\\\"> <span class=text-primary>${getTalentsPrice(item.questionaryId)} ${'main.test_reports.pages.reports.talents_unit' & t}</span> </div> </div> </li> </ul> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { PersonResumeService } from \"main/test/services/people/people-resume-service\";\nimport { PersonResume } from \"models/test-person/personResume\";\nimport { PersonService } from \"main/test/services/people/person-service\";\nimport { Person } from \"models/test-person/person\";\n\n@autoinject()\nexport class PeopleResumeEdit {\n\n  private logger: Logger;\n  public companyId: number;\n\n  private personId: number;\n  private person: Person;\n\n  private model: PersonResume = new PersonResume();\n\n  private validationController: ValidationController;\n\n  constructor(\n    private router: Router,\n    private personResumeService: PersonResumeService,\n    private personService: PersonService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n  ) {\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"PeopleResumeEdit\");\n  }\n\n  public configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"positions\").displayName(\"main.test.pages.people.people_resume_edit.experience\").maxLength(5000)\n      .ensure(\"educations\").displayName(\"main.test.pages.people.people_resume_edit.education\").maxLength(5000)\n      .ensure(\"skills\").displayName(\"main.test.pages.people.people_resume_edit.skills\").maxLength(5000)\n      .ensure(\"honors\").displayName(\"main.test.pages.people.people_resume_edit.achievement\").maxLength(5000)\n      .ensure(\"languages\").displayName(\"main.test.pages.people.people_resume_edit.language\").maxLength(5000)\n      .ensure(\"observations\").displayName(\"main.test.pages.people.people_resume_edit.observations\").maxLength(5000)\n      .on(this.model);\n  }\n\n  public async activate(params: any): Promise<any> {\n\n    if (!isNaN(params.companyId)) {\n      this.companyId = +params.companyId;\n\n      this.personResumeService.client.currentCompanyId = this.companyId;\n      this.personService.client.currentCompanyId = this.companyId;\n\n      if (!isNaN(params.personId)) {\n        this.personId = params.personId;\n        this.model = await this.getItem();\n        this.person = await this.getPerson();\n      }\n\n      this.configureValidationRules();\n    }\n  }\n\n  private async getItem(): Promise<PersonResume> {\n    return await this.personResumeService.getById(this.personId);\n  }\n\n  private async getPerson(): Promise<Person> {\n    return this.personService.getById(this.personId);\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n    this.model.personId = this.personId;\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          if (this.model.id) {\n            return await this.update(keepEditing);\n          } else {\n            return await this.create(keepEditing);\n          }\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  get canSave() {\n    return !this.personResumeService.client.isRequesting;\n  }\n\n  private async create(keepEditing: boolean): Promise<any> {\n    try {\n      this.model = await this.personResumeService.create(this.model, this.personId);\n      this.notification.success(\"notifications.item_edited\");\n      if (!keepEditing) {\n        return await this.router.navigateToRoute(\"people\");\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    };\n  }\n\n  private async update(keepEditing: boolean): Promise<any> {\n    try {\n\n      await this.personResumeService.update(this.model, this.personId);\n      this.notification.success(\"notifications.item_edited\");\n\n      if (!keepEditing) {\n        return await this.router.navigateToRoute(\"people\");\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    };\n  }\n}\n","module.exports = \"<template> <require from=../../../components/person-header.html></require> <div if.bind=!personId> ${'main.test.pages.person.person_questionary_list.msg_first_create_item' & t} </div> <div if.bind=personId> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <person-header person.bind=person></person-header> <hr/> <h2> ${'main.test.pages.people.people_resume_edit.title' & t} </h2> <dl class=\\\"row mb-3\\\" if.bind=model.linkedInProfileUrl> <dt class=col-sm-3> <h5>${'main.test.pages.people.people_resume_edit.general_data' & t}</h5> </dt> <dd class=col-sm-9> <div class=row>${model.headline}</div> <div class=row>${model.location}</div> <div class=row><a class=\\\"btn btn-link\\\" target=_blank href.bind=model.linkedInProfileUrl> <i class=material-icons> launch </i> ${'main.test.pages.people.people_resume_edit.linkedin_profile_url' & t}</a> </div> </dd> </dl> <div class=\\\"row mb-2\\\"> <div class=col> <h5>${'main.test.pages.people.people_resume_edit.summary' & t}</h5> <p>${model.summary}</p> </div> </div> <div class=\\\"row mt-2\\\"> <div class=col> <h5>${'main.test.pages.people.people_resume_edit.experience' & t}</h5> </div> </div> <div class=\\\"row mb-5\\\"> <div class=col> <quill-editor value.bind=\\\"model.positions & validate\\\"></quill-editor> </div> </div> <br> <div class=clearfix></div> <div class=\\\"row mt-2\\\"> <div class=col> <h5>${'main.test.pages.people.people_resume_edit.education' & t}</h5> </div> </div> <div class=\\\"row mb-5\\\" style=margin-bottom:50px> <div class=col> <quill-editor value.bind=\\\"model.educations & validate\\\"></quill-editor> </div> </div> <br> <div class=clearfix></div> <div class=\\\"row mt-2\\\"> <div class=col> <h5>${'main.test.pages.people.people_resume_edit.skills' & t}</h5> </div> </div> <div class=\\\"row mb-5\\\" style=margin-bottom:50px> <div class=col> <quill-editor value.bind=\\\"model.skills & validate\\\"></quill-editor> </div> </div> <br> <div class=clearfix></div> <div class=\\\"row mt-2\\\"> <div class=col> <h5>${'main.test.pages.people.people_resume_edit.achievement' & t}</h5> </div> </div> <div class=\\\"row mb-5\\\" style=margin-bottom:50px> <div class=col> <quill-editor value.bind=\\\"model.honors & validate\\\"></quill-editor> </div> </div> <br> <div class=clearfix></div> <div class=\\\"row mt-2\\\"> <div class=col> <h5>${'main.test.pages.people.people_resume_edit.language' & t}</h5> </div> </div> <div class=\\\"row mb-5\\\" style=margin-bottom:50px> <div class=col> <quill-editor value.bind=\\\"model.languages & validate\\\"></quill-editor> </div> </div> <br> <div class=clearfix></div> <div class=\\\"row mt-2\\\"> <div class=col> <h5>${'main.test.pages.people.people_resume_edit.observations' & t}</h5> </div> </div> <div class=\\\"row mb-5\\\" style=margin-bottom:50px> <div class=col> <quill-editor value.bind=\\\"model.observations & validate\\\"></quill-editor> </div> </div> <br> <div class=clearfix></div> <div class=\\\"row mt-2\\\"> <div class=col> <p>&nbsp;</p> </div> </div> <div class=\\\"row mb-5\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mt-10\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestPersonUpdate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'main.testperson.pages.person.commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestPersonUpdate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'main.testperson.pages.person.commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: people;\\\" t=main.testperson.pages.person.commands.cancel>Cancel</a> </div> </div> </div> </form> </div> </div> </template> \";","import { autoinject, bindable, LogManager } from \"aurelia-framework\";\nimport { Person } from \"models/test-person/person\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { PersonTagsModal } from \"./person-tags-modal\";\nimport { Logger } from \"aurelia-logging\";\nimport { PersonService } from \"main/test/services/people/person-service\";\nimport { Notification } from \"common/services/notification\";\n\n@autoinject()\nexport class PersonTags {\n  private logger: Logger;\n\n  @bindable()\n  public person: Person;\n\n  constructor(\n    private dialogService: DialogService,\n    private notification: Notification,\n    private personService: PersonService,\n\n  ) {\n    this.logger = LogManager.getLogger(\"PersonCreate\");\n  }\n\n  private async edit(): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: PersonTagsModal,\n      model: this.person\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        await this.personService.updateTags(this.person.id, this.person.tags);\n        this.notification.success(\"notifications.item_edited\");\n      }\n    }).catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n}\n","import { autoinject } from \"aurelia-framework\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { Person } from \"models/test-person/person\";\n\n@autoinject()\nexport class PersonTagsModal {\n\n  public person: Person;\n\n  constructor(\n    private dialogController: DialogController,\n  ) { }\n\n  public activate(person: Person) {\n    this.person = person;\n  }\n\n  public async save(): Promise<any> {\n    return await this.dialogController.ok();\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> <label for=tags>${'main.testperson.pages.person.tags' & t}</label> <company-tags-input value.bind=person.tags /> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-actions> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=save()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </div> </div> </ux-dialog-body> </ux-dialog> </template> \";","module.exports = \"<template> <span class=\\\"badge badge-pill badge-dark\\\" if.bind=person repeat.for=\\\"item of person.tags.split(',')\\\">${item}</span> <label if.bind=\\\"person && !person.tags\\\">${'main.test.pages.person.no_tags' & t}</label> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: TestPersonUpdate\\\" click.delegate=edit() title.bind=\\\"'commands.edit' & t\\\"> <i class=material-icons>edit</i> </button> </template> \";","import { autoinject } from \"aurelia-framework\";\nimport { PersonService } from \"main/test/services/people/person-service\";\nimport { Person } from \"models/test-person/person\";\nimport { Notification } from \"common/services/notification\";\nimport { UxDatatableCustomAttribute, UxDatatableParameters, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable-pagination\";\nimport { ActivationQuestionaryService } from \"main/test/services/people/activation-questionary-service\";\nimport { Router } from \"aurelia-router\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { TestControlImageGalleryModal } from \"./test-control-image-gallery-modal\";\nimport { TestControlImage } from \"models/test-core/test-control/testControlImage\";\nimport { CompanySettings } from \"models/companies/company-settings\";\nimport { AgreementService } from \"main/admin/services/agreements/agreement-service\";\n\n@autoinject()\nexport class PeopleTestControlEdit {\n \n  private personId: number;\n  private companyId: number;\n  private person: Person;\n  private companySettings: CompanySettings;\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  constructor(\n     private personService: PersonService,\n     private notification: Notification,\n     private router: Router,\n     private agreementService: AgreementService,\n     private activationQuestionaryService: ActivationQuestionaryService,\n     private dialogService: DialogService\n  ) {\n    this.parameters.search.TestControlStatusId = -1;\n  }\n\n  public async activate(params: any): Promise<any> {\n    this.companySettings = await this.agreementService.getTestControlCompanySettingsByCompanyId(params.companyId);\n    if(!this.companySettings || !this.companySettings.hasTestControl){\n      this.notification.error('main.test.pages.people.test_control_edit.company_has_no_test_control');\n      this.router.navigateToRoute(\"people\");\n      return;\n    }\n\n    if (!isNaN(params.companyId)) {\n      this.companyId = +params.companyId;\n      this.personService.client.currentCompanyId = this.companyId;\n\n      if (!isNaN(params.personId)) {\n        this.personId = params.personId;\n        this.person = await this.getPerson();\n\n        if(this.person.testControlPerson && this.person.testControlPerson.allowTestControl && this.person.testControlPerson.logFileUrl){\n          this.person.pictureUrl = this.person.testControlPerson.logFileUrl;\n        }\n\n        await this.databind();\n      }\n    }\n  }\n\n  private async getPerson(): Promise<Person> {\n    return this.personService.getById(this.personId);\n  }\n\n  private async databind(): Promise<any> {\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    return await this.activationQuestionaryService.listWithTestControl(this.parameters, this.person.id)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private clearFilters(): void {\n    this.parameters.search.Query = this.parameters.search.StartDate = this.parameters.search.EndDate = null;\n    this.parameters.search.TestControlStatusId = -1;\n    this.databind();\n  }\n\n  public async openImageGallery(images: TestControlImage[], selectedIndex: number = 0): Promise<any> {\n    // Only filter images that have a valid logFileUrl\n    const validImages = images.filter(image => image.logFileUrl && image.logFileUrl.trim() !== '');\n    \n    if (validImages.length === 0) {\n      this.notification.warning('main.test.pages.people.test_control_edit.no_images_available');\n      return;\n    }\n\n    // Adjust the selected index if necessary\n    const adjustedIndex = Math.min(selectedIndex, validImages.length - 1);\n\n    return await this.dialogService.open({\n      viewModel: TestControlImageGalleryModal,\n      model: {\n        images: validImages,\n        selectedIndex: adjustedIndex\n      }\n    }).whenClosed((response: DialogCloseResult) => {\n    });\n  }\n}\n","module.exports = \"<template> <require from=../../../components/person-header.html></require> <require from=../../../../models/test-core/test-control/testControlStatusViewEngineHook></require> <div class=\\\"m-0 p-0\\\" if.bind=\\\"companySettings && companySettings.hasTestControl\\\"> <div if.bind=!personId> ${'main.test.pages.person.person_questionary_list.msg_first_create_item' & t} </div> <div if.bind=personId> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <person-header person.bind=person></person-header> <hr/> <h2> ${'main.test.pages.people.test_control_edit.test_control' & t} </h2> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-8\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <a class=\\\"btn btn-link collapse-header\\\" data-toggle=collapse href=#collapseMoreFilterOptions role=button aria-expanded=false aria-controls=collapseMoreFilterOptions> <i class=material-icons>chevron_right</i> ${'commons.more_filter_options' & t} </a> </div> <div class=\\\"col-md-4 col-12\\\" if.bind=\\\"parameters.search.Query || parameters.search.StartDate || parameters.search.EndDate || parameters.search.TestControlStatusId != -1\\\"> <button class=\\\"btn btn-link\\\" click.delegate=clearFilters()> <i class=material-icons>clear</i> ${'commons.clear_filters' & t} </button> </div> </div> <div class=collapse id=collapseMoreFilterOptions> <div class=row> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=parameters.search.TestControlStatusId>${'main.test.pages.people.test_control_edit.status' & t}</label> <select value.bind=parameters.search.TestControlStatusId change.delegate=\\\"databind() & debounce:100\\\" class=form-control id=parameters.search.TestControlStatusId> <option t=forms.select_option value=-1></option> <option repeat.for=\\\"option of TestControlStatuses\\\" model.bind=TestControlStatus[option]> ${'main.test.pages.people.test_control_edit.state_' + option & t}</option> </select> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=parameters.search.StartDate t=commons.start_date>Start_Date</label> <ux-date-picker value.bind=parameters.search.StartDate change.delegate=\\\"databind() & debounce:100\\\" id=parameters.search.StartDate></ux-date-picker> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=parameters.search.EndDate t=commons.end_date>Start_Date</label> <ux-date-picker value.bind=parameters.search.EndDate change.delegate=\\\"databind() & debounce:100\\\" id=parameters.search.EndDate></ux-date-picker> </div> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted t=main.test.pages.people.test_control_edit.test>Test</small></label> <span title=${item.questionaryName}>${item.questionaryName}</span> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted t=main.test.pages.people.test_control_edit.status>Status</small></label> <div> <span if.bind=\\\"item.testControlStatusId !== null && item.testControlStatusId !== undefined\\\"> ${'main.test.pages.people.test_control_edit.state_' + TestControlStatuses[item.testControlStatusId] & t} </span> </div> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'main.test.pages.person.person_questionary_list.application_date' & t}</small></label> ${item.applicationDate | dateTimeFormat} </div> <div class=\\\"col-md-2 col-12 text-wrap mb-2\\\"> <label class=d-block><small class=text-muted></small></label> <div if.bind=\\\"item.testControlStatusId !== TestControlStatus.Undefined && item.testControlActivationQuestionaries && item.testControlActivationQuestionaries.length > 0\\\"> <span class=\\\"square-photo mr-1 mb-1 rounded cursor-pointer\\\" repeat.for=\\\"image of item.testControlActivationQuestionaries\\\" title=\\\"${'main.test.pages.people.test_control_edit.click_to_view_gallery' & t}\\\" click.delegate=\\\"openImageGallery(item.testControlActivationQuestionaries, $index)\\\"> <img if.bind=\\\"image.logFileUrl && image.logFileUrl.trim() !== ''\\\" src=${image.logFileUrl}> </span> </div> <div if.bind=\\\"item.testControlStatusId === TestControlStatus.Undefined\\\"> <span class=\\\"square-photo mr-1 rounded\\\"> <img src=\" + require(\"../../../../../assets/images/tht_photo_check_insufficient_data.svg\") + \"> </span> </div> </div> <div class=\\\"col-md-4 col-12 mb-2\\\"> <label class=d-block><small class=text-muted t=main.test.pages.people.test_control_edit.result>Result</small></label> <span t-html.bind=item.resultMessage></span> </div> </div> </li> </ul> </div> </div> </form> </div> </div> </div> </template> \";","import { autoinject } from \"aurelia-framework\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { UxDatatableParameters } from \"common/resources/elements/ux/datatable/ux-datatable-pagination\";\nimport { TestControlImage } from \"models/test-core/test-control/testControlImage\";\n\n\n@autoinject()\nexport class TestControlImageGalleryModal {\n\n    public images: TestControlImage[] = [];\n    public currentImageIndex: number = 0;\n    public currentImage: TestControlImage;\n    public totalImages: number = 0;\n    public parameters: UxDatatableParameters = new UxDatatableParameters();\n\n    constructor(\n      private controller: DialogController\n    ) {\n      // Dialog settings\n      this.controller.settings.overlayDismiss = true;\n      this.controller.settings.centerHorizontally = true;\n      this.controller.settings.centerVertically = true;\n    }\n\n    public activate(model: { images: TestControlImage[], selectedIndex?: number }): void {\n      this.images = model.images || [];\n      this.currentImageIndex = model.selectedIndex || 0;\n      this.totalImages = this.images.length;\n      \n      // Pagination settings\n      this.parameters.pageSize = 1; // One image per page\n      this.parameters.currentPage = this.currentImageIndex + 1;\n      this.parameters.totalRecords = this.totalImages;\n      this.parameters.totalPages = this.totalImages;\n\n      this.updateCurrentImage();\n    }\n\n    private updateCurrentImage(): void {\n      if (this.images.length > 0 && this.currentImageIndex >= 0 && this.currentImageIndex < this.images.length) {\n        this.currentImage = this.images[this.currentImageIndex];\n      } else {\n        this.currentImage = null;\n      }\n    }\n\n    public nextImage(): void {\n      if (this.currentImageIndex < this.totalImages - 1) {\n        this.currentImageIndex++;\n        this.parameters.currentPage = this.currentImageIndex + 1;\n        this.updateCurrentImage();\n      }\n    }\n\n    public previousImage(): void {\n      if (this.currentImageIndex > 0) {\n        this.currentImageIndex--;\n        this.parameters.currentPage = this.currentImageIndex + 1;\n        this.updateCurrentImage();\n      }\n    }\n\n    public selectImage(index: number): void {\n      if (index >= 0 && index < this.totalImages) {\n        this.currentImageIndex = index;\n        this.parameters.currentPage = this.currentImageIndex + 1;\n        this.updateCurrentImage();\n      }\n    }\n\n    public onPageChange(): void {\n      const newIndex = this.parameters.currentPage - 1;\n      this.selectImage(newIndex);\n    }\n\n    public cancel(): void {\n      this.controller.cancel();\n    }\n\n    goToFirst() {\n    this.currentImageIndex = 0;\n    this.updateCurrentImage();\n  }\n\n    goToLast() {\n    this.currentImageIndex = this.totalImages - 1;\n    this.updateCurrentImage();\n}\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=controller.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2> ${'main.test.pages.people.test_control_image_gallery_modal.title' & t} </h2> <div class=\\\"row gallery-modal-body mt-4 mb-2\\\"> <div class=col-12> <div class=container-fluid> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 text-center\\\"> <div class=\\\"square-photo square-photo-gallery rounded\\\"> <img if.bind=currentImage src=${currentImage.logFileUrl} alt=\\\"Test Control Image\\\"> <div if.bind=!currentImage class=text-muted> <i class=material-icons style=font-size:48px>image</i> <p>${'main.test.pages.people.test_control_edit.no_image' & t}</p> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 text-center\\\"> <nav aria-label=\\\"Photo pagination\\\"> <ul class=\\\"pagination justify-content-center\\\"> <li class=page-item class.bind=\\\"currentImageIndex === 0 ? 'disabled' : ''\\\"> <a class=page-link href=# click.delegate=goToFirst()>«</a> </li> <li class=page-item class.bind=\\\"currentImageIndex === 0 ? 'disabled' : ''\\\"> <a class=page-link href=# click.delegate=previousImage()>‹</a> </li> <li repeat.for=\\\"page of totalImages\\\" class=page-item class.bind=\\\"$index === currentImageIndex ? 'active' : ''\\\"> <a class=page-link href=# click.delegate=selectImage($index)>${$index + 1}</a> </li> <li class=page-item class.bind=\\\"currentImageIndex === totalImages - 1 ? 'disabled' : ''\\\"> <a class=page-link href=# click.delegate=nextImage()>›</a> </li> <li class=page-item class.bind=\\\"currentImageIndex === totalImages - 1 ? 'disabled' : ''\\\"> <a class=page-link href=# click.delegate=goToLast()>»</a> </li> </ul> </nav> </div> </div> </div> </div> </div> </ux-dialog-body> </ux-dialog> </template> \";","import { AuthorizationService } from 'aurelia-permission';\n\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class PeopleVideoInterviewChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n\n    this.logger = LogManager.getLogger(\"PeopleVideoInterviewChildRouter\");\n  }\n\n  public configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"../people-videointerview/people-videointerview-edit\"),\n        name: \"people-videointerview\",\n      },\n\n      {\n        route: \"/:activationQuestionaryId?\",\n        moduleId: PLATFORM.moduleName(\"../people-videointerview/people-videointerview-edit\"),\n        name: \"people-videointerview-id\",\n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","import { ResponseRatedQuestion } from '../../../../models/videointerview/responseRatedQuestion';\nimport { ResponseQuestionary } from '../../../../models/microsite/responseQuestionary';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { Notification } from \"common/services/notification\";\nimport { PersonService } from \"main/test/services/people/person-service\";\nimport { Person } from \"models/test-person/person\";\nimport { ActivationQuestionaryService } from 'main/test/services/people/activation-questionary-service';\nimport { ActivationQuestionary } from 'models/test-person/activationQuestionary';\nimport { ResponseQuestionaryVideoInterviewService } from 'main/test/services/people/response-questionary-videointerview-service';\nimport { Result } from 'models/test-result/result';\nimport { Topic } from 'models/questions/topic';\nimport { CryptoService } from 'main/test/services/people/crypto-service';\nimport config from 'config.js';\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\nimport { RequestQualificatoniVideoInterview } from 'models/test-person/requestQualificationVideoInterview';\nimport { DialogCloseResult, DialogService } from 'aurelia-dialog';\nimport { RequestQualificationVideoInterviewModal } from './request-qualification-video-interview-modal';\nimport { RequestVideoInterviewQualification } from 'models/videointerview/requestVideoInterviewQualification';\n\n\n@autoinject()\nexport class PeopleVideoInterviewEdit {\n\n  private logger: Logger;\n  public companyId: number;\n  public state: State;\n\n  public generalTopic: number = Topic.General;\n\n  private personId: number;\n  private person: Person;\n  private validationController: ValidationController;\n  private numQuestion: string;\n  private question: string;\n  private exampleFormControlTextarea1: string;\n  private hideDiv: boolean;\n  private vToken: string;\n\n  private vValidate: boolean;\n  private imagenHide: boolean;\n  private backendToken: string;\n  private backendRating: string;\n  private backendResponseQuestionary: string;\n  private idPregunta: number;\n  private Questions: string;\n  private videoSrc: string;\n\n  private stars: number;\n\n  private options = [];\n  private selectedOption: any = null;\n\n  //parameters for save/update qualification\n\n  private pCompanyId: number;\n  private pPersonId: number;\n  private pActivationQuestionaryId: number;\n  private pResponseQuestionaryId: number;\n  private pActivationId: number;\n  private pTopic: number;\n  private pQuestionaryId: number;\n  private responseRatedQuestionModel: ResponseRatedQuestion[];\n  private activationQuestionaryId: number;\n  private hasListActivation: boolean = false;\n  private noActivation: boolean = false;\n  selectedActivationQuestionaryId: number;\n  constructor(\n    private router: Router,\n    private personService: PersonService,\n    private responseQuestionaryVideoInterviewService: ResponseQuestionaryVideoInterviewService,\n    private store: StoreService,\n    private notification: Notification,\n    private activationQuestionaryService: ActivationQuestionaryService,\n    private activationQuestionary: ActivationQuestionary,\n    private cryptoService: CryptoService,\n    private dialogService: DialogService,\n    private activations: ActivationQuestionary[],\n    private testQuestionService: ResponseQuestionaryVideoInterviewService,\n    private responseQuestionary: ResponseQuestionary,\n    private result: Result\n\n\n  ) {\n    this.options = [{ id: 1, value: \"10\", selected: false }, { id: 2, value: \"20\", selected: false }, { id: 3, value: \"30\", selected: false }, { id: 4, value: \"40\", selected: false }, { id: 5, value: \"50\", selected: false }, { id: 6, value: \"60\", selected: false }, { id: 7, value: \"70\", selected: false }, { id: 8, value: \"80\", selected: false }, { id: 9, value: \"90\", selected: false }, { id: 10, value: \"100\", selected: false }];\n    this.vValidate = false;\n    this.imagenHide = false;\n\n    this.logger = LogManager.getLogger(\"PeopleResumeEdit\");\n  }\n\n  public async activate(params: any): Promise<any> {\n\n    if (!isNaN(params.companyId)) {\n      this.state = this.store.state;\n      this.companyId = +params.companyId;\n      this.personService.client.currentCompanyId = this.companyId;\n      this.pActivationQuestionaryId = params.activationQuestionaryId;\n      if (!isNaN(params.personId)) {\n        this.personId = params.personId;\n\n        this.activations = await this.activationQuestionaryService.listActivationVideoInterview(this.personId);\n        if (this.activations.length == 0) {\n          this.noActivation = true;\n          this.hasListActivation = false;\n        }\n        else if (this.activations.length > 0 && !isNaN(this.pActivationQuestionaryId)) {\n          this.activationQuestionary = await this.activationQuestionaryService.getById(this.pActivationQuestionaryId);\n          this.noActivation = false;\n          this.hasListActivation = false;\n          this.person = await this.getPerson();\n          this.pActivationQuestionaryId = this.activationQuestionary.id;\n          this.pActivationId = this.activationQuestionary.activationId;\n          var responseQuestionary = await this.testQuestionService.getByActivationQuestionaryId(this.pActivationQuestionaryId);\n          this.pResponseQuestionaryId = responseQuestionary.id;\n          this.getNewToken(Topic.Question1);\n        }\n        else if (this.activations.length == 1) {\n          this.activationQuestionary = await this.activationQuestionaryService.getLastActivationVideoInterview(this.personId);\n          this.noActivation = false;\n          this.hasListActivation = false;\n          this.person = await this.getPerson();\n          this.pActivationQuestionaryId = this.activationQuestionary.id;\n          this.pActivationId = this.activationQuestionary.activationId;\n          var responseQuestionary = await this.testQuestionService.getByActivationQuestionaryId(this.pActivationQuestionaryId);\n          this.pResponseQuestionaryId = responseQuestionary.id;\n          this.getNewToken(Topic.Question1);\n        } else {\n          this.hasListActivation = true;\n        }\n      }\n\n    }\n  }\n  private async viewResponse(activationQuestionaryId: number) {\n    try {\n      this.person = await this.getPerson();\n      this.activationQuestionary = await this.activationQuestionaryService.getByActivationQuestionaryId(activationQuestionaryId);\n      this.pActivationQuestionaryId = activationQuestionaryId;\n      this.pActivationId = this.activationQuestionary.activationId;\n      var responseQuestionary = await this.testQuestionService.getByActivationQuestionaryId(this.pActivationQuestionaryId);\n      this.pResponseQuestionaryId = responseQuestionary.id;\n      this.getNewToken(Topic.Question1);\n      this.hasListActivation = false;\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n\n  }\n  public getNewToken(topic: number): void {\n    this.vValidate = false;\n    if (this.responseRatedQuestionModel) {\n      this.selectResponse(topic);\n      return;\n    }\n\n    this.loadQuestions(topic);\n  }\n\n  private async loadQuestions(topic: number): Promise<void> {\n\n    this.logger.info(\"loadQuestions\");\n    try {\n      this.responseQuestionary.id = this.pResponseQuestionaryId;\n      this.responseQuestionary.personId = this.personId;\n      this.responseQuestionary.activationQuestionaryId = this.pActivationQuestionaryId;\n      this.responseQuestionary.activationId = this.pActivationId;\n\n      let obj = await this.testQuestionService.getResponsesToRateByQuestionaryId(this.responseQuestionary);\n      let activationQuestionary = obj.activationQuestionary;\n      this.pQuestionaryId = activationQuestionary['questionaryId'];\n\n      let responseRatedQuestionary = obj.responseRatedQuestionary;\n\n      this.responseRatedQuestionModel = responseRatedQuestionary.responseRatedQuestions;\n      this.selectResponse(topic);\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private selectResponse(topic: number): void {\n    this.resetSelectedResponse();\n\n    let selectedResponse = this.responseRatedQuestionModel.find(item => item.topic == topic);\n    if (!selectedResponse) {\n      return;\n    }\n\n    this.question = selectedResponse.question.formulation;\n    this.idPregunta = selectedResponse.order;\n    this.pTopic = selectedResponse.topic;\n\n    if (selectedResponse.topic != this.generalTopic && selectedResponse.answer) {\n      this.videoSrc = selectedResponse.answer.openResponseText;\n    }\n\n    if (selectedResponse.ratedAnswer) {\n      this.exampleFormControlTextarea1 = selectedResponse.ratedAnswer.observation;\n      this.selectRatedOption(selectedResponse.ratedAnswer.value);\n    }\n  }\n\n  private resetSelectedResponse(): void {\n    this.question = '';\n    this.idPregunta = null;\n    this.videoSrc = '';\n    this.exampleFormControlTextarea1 = \"\";\n    this.selectedOption = null;\n    for (let option of this.options) {\n      option.selected = false;\n    }\n  }\n\n  private selectRatedOption(value: number): void {\n    if (!value) {\n      return;\n    }\n\n    let selectedOptionId = (110 - value) / 10;\n    let option = this.options.find(item => item.id == selectedOptionId);\n    if (option) {\n      option.selected = true;\n      this.selectedOption = option;\n    }\n  }\n\n  private async getPerson(): Promise<Person> {\n    return this.personService.getById(this.personId);\n  }\n\n  private async sendQualification() {\n    this.logger.info(\"sendQualification\");\n\n    if (!this.exampleFormControlTextarea1 || !this.selectedOption) {\n      this.vValidate = true;\n      return false;\n    }\n\n    this.vValidate = false;\n    this.stars = this.selectedOption['id'];\n    this.imagenHide = true;\n    this.logger.debug(\"validation\", this.stars);\n\n    let pStamp = Math.random().toString(36).substring(2) + (new Date()).getTime().toString(36);\n    this.stars = this.stars * 10;\n    this.stars = 110 - this.stars;\n    if (this.stars >= 110) { this.stars = 0; }\n\n    this.result.personId = this.personId;\n    this.result.activationId = this.pActivationId;\n    this.result.value = this.stars;\n    this.result.stamp = pStamp;\n    this.result.observation = this.exampleFormControlTextarea1;\n    this.result.topic = this.pTopic;\n    this.result.questionaryId = this.pQuestionaryId;\n    try {\n      await this.testQuestionService.save(this.result);\n      this.notification.success(\"main.test.pages.people.people_videointerview_edit.success_message\");\n      await this.loadQuestions(this.pTopic);\n    } catch (error) {\n      this.notification.error(error);\n    }\n    finally {\n      this.imagenHide = false;\n    }\n  }\n\n  public async shareVideoInterview(): Promise<void> {\n    let data: RequestQualificatoniVideoInterview = {\n      companyId: this.companyId,\n      personId: this.person.id,\n      url: \"\",\n      destinationEmail: \"\"\n    }\n\n    try {\n      const response = await this.dialogService.open({\n        viewModel: RequestQualificationVideoInterviewModal,\n        model: data\n      }).whenClosed();\n\n      if (!response.wasCancelled) {\n        let date = new Date();\n        let body: RequestVideoInterviewQualification = {\n          activationQuestionaryId: this.activationQuestionary.id,\n          activationId: this.activationQuestionary.activationId,\n          personId: this.person.id,\n          date: date.getTime(),\n          companyId: this.person.companyId,\n          email: data.destinationEmail\n        };\n        let encode = await this.cryptoService.encode(JSON.stringify(body), config.KEY_CRYPTO);\n        let reference = encode.replace(/\\+/g, config.KEY_PLUS).replace(/\\//g, config.KEY_SLASH).replace(/=/g, config.KEY_EQUAL);\n        let notManualUrl = config.URLS_ROBOTHUNTER + \"RequestVideoInterview/\" + reference;\n        data.url = notManualUrl;\n        await this.responseQuestionaryVideoInterviewService.requestQualificationVideoInterview(data)\n          .then(() => {\n            this.notification.success(\"main.admin.pages.people-videointerview.request-qualification-video-interview-modal.notifications.succes_send_email\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    } catch (error) {\n      this.notification.error(error.message);\n    }\n  }\n}\n","module.exports = \"<template> <require from=../../../components/person-header.html></require> <div if.bind=!personId> ${'main.test.pages.person.person_questionary_list.msg_first_create_item' & t} </div> <div if.bind=personId> <div class=\\\"content-container row mb-3\\\"> <form class=col-12> <person-header person.bind=person></person-header> <hr/> <div if.bind=noActivation> ${'main.test.pages.people.people_videointerview_edit.validate_navigate' & t} </div> <div if.bind=\\\"hasListActivation && !noActivation\\\"> <h2> ${'main.test.pages.people.people_videointerview_edit.select_activation' & t} </h2> <select class=form-control value.bind=selectedActivationQuestionaryId> <option repeat.for=\\\"activation of activations\\\" model.bind=activation.id> ${activation.questionaryName} | ${activation.applicationDate | dateTimeFormat} </option> </select> <hr/> <div> <button class=\\\"btn btn-primary\\\" click.delegate=viewResponse(selectedActivationQuestionaryId) t=main.test.pages.people.people_videointerview_edit.calification>Enviar Calificación</button> </div> </div> <hr/> <section if.bind=!hasListActivation class=video-interview-review> <header class=video-interview-review__header> <h2>${'main.test.pages.people.people_videointerview_edit.title' & t}</h2> <button type=button class=\\\"btn btn-outline-primary btn-round\\\" click.delegate=shareVideoInterview()> <i class=material-icons aria-hidden=true>share</i> ${'main.admin.pages.people-videointerview.request-qualification-video-interview-modal.share' & t} </button> </header> <div class=video-interview-review__workspace> <nav class=video-interview-review__navigation> <button type=button repeat.for=\\\"item of responseRatedQuestionModel\\\" class=\\\"video-interview-review__question ${item.topic == pTopic ? 'video-interview-review__question--active' : ''}\\\" click.delegate=getNewToken(item.topic)> <span if.bind=\\\"item.topic != generalTopic\\\"> ${'main.test.pages.people.people_videointerview_edit.question_number' & t} ${item.order} </span> <span if.bind=\\\"item.topic == generalTopic\\\"> ${'main.test.pages.people.people_videointerview_edit.general_text' & t} </span> <i if.bind=item.ratedAnswer class=material-icons aria-hidden=true>check_circle</i> </button> </nav> <div class=\\\"video-interview-review__content ${pTopic == generalTopic ? 'video-interview-review__content--general' : ''}\\\"> <section if.bind=\\\"pTopic != generalTopic\\\" class=video-interview-review__response> <div class=video-interview-review__question-copy> <span>${'main.test.pages.people.people_videointerview_edit.question_number' & t} ${idPregunta}</span> <p innerhtml.bind=question></p> </div> <video class=video-interview-review__video src.bind=videoSrc playsinline controls controlslist=nodownload></video> </section> <section class=video-interview-review__rating> <h5>${'main.test.pages.people.people_videointerview_edit.qualify' & t}</h5> <div class=\\\"clasification video-interview-review__stars\\\"> <template repeat.for=\\\"option of options\\\"> <input type=radio id=video-interview-rating-${option.id} name=video-interview-rating model.bind=option checked.bind=$parent.selectedOption> <label for=video-interview-rating-${option.id}>★</label> </template> </div> <label for=video-interview-observation> ${'main.test.pages.people.people_videointerview_edit.observation' & t} </label> <textarea class=form-control id=video-interview-observation value.bind=exampleFormControlTextarea1 rows=4></textarea> <p class=video-interview-review__validation if.bind=vValidate> ${'main.test.pages.people.people_videointerview_edit.validate' & t} </p> <button type=button class=\\\"btn btn-primary btn-round video-interview-review__submit\\\" click.delegate=sendQualification() disabled.bind=imagenHide t=main.test.pages.people.people_videointerview_edit.send_qualification> Enviar Calificación </button> </section> </div> </div> </section> </form> </div> </div> </template>\";","import { DialogController } from \"aurelia-dialog\";\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { ControllerValidateResult, ValidationController, ValidationControllerFactory, ValidationRules } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { RequestQualificatoniVideoInterview } from \"models/test-person/requestQualificationVideoInterview\";\nimport { Logger } from \"oidc-client\";\n\n@autoinject()\nexport class RequestQualificationVideoInterviewModal{\n  private logger: Logger;\n  private model: RequestQualificatoniVideoInterview;\n  private validationController: ValidationController;\n\n  constructor(\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory){\n      this.validationController = this.validationControllerFactory.createForCurrentScope();\n      this.validationController.addRenderer(new BootstrapFormRenderer());\n      this.logger = LogManager.getLogger(\"RequestQualificatoniVideoInterview\");\n    }\n\n    private async activate(model: RequestQualificatoniVideoInterview): Promise<any> {\n      this.model = model;\n      // this.configureValidationRules();\n    }\n    \n    private configureValidationRules(): void {\n      ValidationRules\n        .ensure(\"destinationEmail\").displayName(\"main.admin.pages.labels.name\").required()\n        .on(this.model);\n    }\n\n    public async submit(): Promise<void> {\n      return await this.validationController.validate()\n        .then(async (result: ControllerValidateResult) => {\n          if (result.valid) {\n            return await this.save();\n          }\n        });\n    }\n  \n    public async save(): Promise<any> {\n      return await this.dialogController.ok();\n  \n    }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div style=overflow:auto> <h2 style=\\\"display:inline-block;margin:0 15px 0 0;padding-left:0;padding-right:0\\\" class=col-5 t=main.admin.pages.people-videointerview.request-qualification-video-interview-modal.share>Compartir</h2> <button style=text-align:right;margin:0;padding-left:0;padding-right:0 class=\\\"btn btn-link col-6\\\" click.delegate=dialogController.cancel() title.bind=\\\"'commands.edit' & t\\\"> <a class=material-icons>close</a> </button> </div> <form> <div class=form-group> <label for=destinationEmail t=main.admin.pages.people-videointerview.request-qualification-video-interview-modal.email_to_share>Indique el correo a compartir la video entrevista</label> <input attach-focus=true type=text value.bind=\\\"model.destinationEmail & validate\\\" class=form-control id=destinationEmail t=[placeholder]main.admin.pages.labels.name> </div> <div class=\\\"form-group text-center\\\" style=position:relative;height:50px> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=submit() type=submit>${'commands.save' & t}</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { AgreementService } from \"main/admin/services/agreements/agreement-service\";\n\n@autoinject()\nexport class AgreementExpirationModal {\n\n\tprivate companyId: number;\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate dialogController: DialogController,\n\t\tprivate agreementService: AgreementService) {\n\n\t\tthis.logger = LogManager.getLogger(\"AgreementExpirationModal\");\n\t}\n\n\tpublic async activate(model: { companyId: number }): Promise<any> {\n\t\tthis.companyId = model.companyId;\n\t}\n\n\tpublic async accept(): Promise<void> {\n\t\treturn await this.agreementService.hasSeenExpirationMessage(this.companyId)\n\t\t\t.then(() => {\n\t\t\t\tthis.dialogController.ok();\n\t\t\t});\n\t}\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> </div> </div> <h2 class=mb-3> ${'main.test.pages.people.agreement_expiration.title' & t} </h2> <div class=\\\"row mb-3\\\"> <div class=col-12> <p t=main.test.pages.people.agreement_expiration.information> Agreement expiration information </p> </div> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=accept()>${'commands.accept' & t}</button> </div> </ux-dialog-body> </ux-dialog> </template>\";","import { autoinject } from 'aurelia-framework';\nimport { DialogController } from \"aurelia-dialog\";\n\n@autoinject()\nexport class FilteredReminderConfirmationModal {\n  private quantity: number;\n\n  constructor(private dialogController: DialogController) {\n  }\n\n  public activate(quantity: number) {\n    this.quantity = quantity;\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <div class=\\\"row justify-content-md-center\\\"> <div class=\\\"col-md-10 col-12\\\"> <h2>${'main.test.pages.people.send_filtered_reminder' & t}</h2> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"row mt-3\\\"> <div class=col-12> <p t=main.test.pages.people.send_filtered_reminder_info t-params.bind=\\\"{quantity: quantity}\\\">re-send?</p> </div> </div> </div> </div> </div> </div> </ux-dialog-body> <ux-dialog-footer> <button class=\\\"btn btn-primary btn-round\\\" attach-focus=true click.delegate=dialogController.ok() t=commands.send_email>send</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </ux-dialog-footer> </ux-dialog> </template> \";","import { Person } from 'models/test-person/person';\nimport { DialogController } from \"aurelia-dialog\";\nimport { autoinject } from \"aurelia-framework\";\nimport { PersonService } from 'main/test/services/people/person-service';\n\n@autoinject()\nexport class PersonActivationConfirmationModal {\n  private talentsPrice: number;\n  constructor(private dialogController: DialogController) {\n  }\n  public async activate(talentsPrice: number) {        \n    this.talentsPrice = talentsPrice;  \n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2> ${'main.testperson.pages.persons_activation.title' & t} </h2> <p t=main.test.pages.people.send_person_activation_talents_confirmation t-params.bind=\\\"{talentsPrice: talentsPrice}\\\">talents</p> </ux-dialog-body> <ux-dialog-footer> <button attach-focus=true class=\\\"btn btn-primary btn-round\\\" click.delegate=dialogController.ok() t=commands.accept>Accept</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel() t=commands.cancel>Cancel</button> </ux-dialog-footer> </ux-dialog> </template> \";","import { Test } from '../../../../models/test-perfiltic/test';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { CompanyCompetenceModal } from '../people-competence/company-competence-modal';\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { Person } from \"models/test-person/person\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { PersonMode } from \"models/test-person/personMode\";\nimport { QuestionaryGroup } from \"models/test-management/questionary-groups/questionaryGroup\";\nimport { QuestionaryGroupService } from \"../../../admin/services/test-management/questionary-group-service\";\nimport { Language } from \"models/localizations/language\";\nimport { ReportTemplate } from \"models/test-core/report-templates/report-template\";\nimport { ReportTemplateService } from \"../../../admin/services/test-management/report-template-service\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from \"common/store/store-service\";\nimport { Router } from \"aurelia-router\";\nimport { PersonActivationType } from \"models/test-person/personActivationType\";\nimport { PersonService } from \"main/test/services/people/person-service\";\nimport { Activation } from \"models/test-person/activation\";\nimport { Subscription, EventAggregator } from \"aurelia-event-aggregator\";\nimport { UserInfoLoadedMessage } from \"messages/userInfoLoadedMessage\";\nimport { CoreLanguageService } from \"main/admin/services/localizations/core-language-service\";\nimport { QuestionaryType } from \"models/questionaries/questionaryType\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { EmailExists } from \"./person-email-exists-modal\";\nimport { Report } from 'models/test-reports/reports/report';\nimport { ReportService } from '../../../test-reports/services/report-service';\nimport { SessionService } from 'common/services/session-service';\nimport { Wootric } from 'main/components/wootric';\nimport { OpenIdProfile } from 'models/security/open-id-profile';\nimport { WootricComponentName } from \"models/wootric/WootricComponentName\";\nimport { NoDiscType } from 'models/questionaries/noDiscType';\nimport { PersonActivationConfirmationModal } from './person-activation-confirmation-modal';\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { CatalogService } from \"../../../services/catalogs/catalog-service\";\nimport { CatalogBase } from \"models/catalogs/catalog-base\";\nimport { TestQuestionary } from 'models/test-core/test-questionary';\nimport { CompanyQuestionaryService } from 'main/admin/services/test-management/company-questionary-service';\nimport { I18N } from 'aurelia-i18n';\nimport config from 'config.js';\nimport { Languages } from 'models/localizations/languages';\nimport { ItemToQualify } from 'models/questionaries/itemToQualify';\nimport { DimensionSelectorModal, DimensionSelectorModel } from 'main/components/dimension-selector-modal';\nimport { QuestionaryGroupThematicAssociate } from 'models/test-management/questionary-groups/questionary-group-thematic-associate';\nimport { ThematicGroupService } from 'main/admin/services/thematic-groups/thematic-group-service';\nimport { ActivationThematicAssociate } from 'models/test-person/activationThematicAssociate';\nimport { QuestionaryLanguage } from 'models/questionaries/questionaryLanguage';\n\n\ninterface DisableSetMap {\n  [questionary: string]: boolean;\n}\n\n@autoinject()\nexport class PersonActivationCreate {\n\n  private logger: Logger;\n  private countries: CatalogBase[] = [];\n  private host: string;\n  private sessionStorageModel: any = {};\n\n  public companyId: number;\n\n  private state: State;\n  private avgTimeModular: { questionaryId: number, averageTime: number }[] = [];\n  private profile: OpenIdProfile;\n  private questionaryFilter: string = \"\";\n  private questionaryGroupFilter: string;\n  private hasCompetencesFilter: boolean;\n  private reportFilter: string;\n  private questionaryGroups: QuestionaryGroup[];\n  private searchQuestionaryGroup: QuestionaryGroup[];\n  private reportTemplates: ReportTemplate[];\n  private searchReport: ReportTemplate[];\n  private reportTemplate: ReportTemplate = new ReportTemplate();\n  private languages: Language[];\n  private questionaries: TestQuestionary[] = [];\n  private searchQuestionary: TestQuestionary[] = [];\n  private isCompetenceActive: boolean = false;\n  private isModularActive: boolean = false;\n  private signal: string = this.i18n.tr(\"main.test.pages.people.is_new_test\");\n  private selectedQuestionaries = {\n    qty: 0,\n    avg: 0,\n    questionaries: \"\",\n    hasCompetences: false,\n    hasEngineersTest: false,\n    hasModular: false,\n  };\n\n\n  private model: Person = new Person();\n  private validationController: ValidationController;\n\n  //  private selectedQuestionaryIds: number[] = [];\n  private subscription: Subscription;\n\n  private isDisable: boolean = false;\n  private isEngineersTests: boolean = false;\n  private showDisableParameter: boolean = false;\n  private report: Report = new Report();\n  private questionaryGroup: QuestionaryGroup;\n  private isInvalid: boolean = false;\n  private isCareerPath: boolean = false;\n  private selectedLanguageId: number = Languages.Spanish;\n  constructor(\n    private catalogService: CatalogService,\n    private router: Router,\n    private store: StoreService,\n    private reportService: ReportService,\n    private personService: PersonService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private questionaryGroupService: QuestionaryGroupService,\n    private reportTemplateService: ReportTemplateService,\n    private languageService: CoreLanguageService,\n    protected ea: EventAggregator,\n    private dialogService: DialogService,\n    private sessionService: SessionService,\n    private wootric: Wootric,\n    private companyQuestionaryService: CompanyQuestionaryService,\n    private thematicGroupService: ThematicGroupService,\n    private i18n: I18N\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"PersonActivationCreate\");\n\n    this.state = this.store.state;\n\n    this.subscription = this.ea.subscribe(UserInfoLoadedMessage, (message: UserInfoLoadedMessage) => this.setUserLanguage.bind(this));\n\n    let backendUrl = config.URLS_BACKEND;\n\n    this.host = backendUrl + \"/modules/localization/assets/images/flags/\";\n  }\n\n  public detached() {\n    this.subscription.dispose();\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"firstName\").displayName(\"main.test.pages.people.first_name\").required()\n      .ensure(\"lastName\").displayName(\"main.test.pages.people.last_name\").required()\n      .ensure(\"email\").displayName(\"main.test.pages.people.email\").email().required()\n      .when(x => this.model.personMode === PersonMode.Linkedin)\n      .ensure(\"email\").displayName(\"main.test.pages.people.email\").email().required()\n      .when(x => this.isCareerPath)\n      .ensure(\"activation.languageId\").displayName(\"main.admin.pages.questionaries.language\").required()\n      .ensure(\"phone\").displayName(\"main.test.pages.people.phone\").required()\n      .when(x => this.model.indicativeCountry != 0)\n      .ensure(\"indicativeCountry\").displayName(\"main.test.pages.people.indicative\").required()\n      .when(x => this.model.phone > '0')\n      .on(this.model);\n\n    ValidationRules\n      .ensure(\"reportTemplateId\").displayName(\"main.test_reports.pages.reports.report_template\").required()\n      .ensure(\"discType\").displayName(\"main.test_reports.pages.reports.discType.title\").required()\n      .ensure(\"zeroOrOnepositionId\").displayName(\"main.test_reports.pages.reports.parameters.ZeroOrOnePosition\").maxItems(1)\n      .ensure(\"positionId\").displayName(\"main.test_reports.pages.reports.parameters.Position\").required()\n      .ensure(\"teamId\").displayName(\"main.test_reports.pages.reports.parameters.Team\").required()\n      .ensure(\"organizationId\").displayName(\"main.test_reports.pages.reports.parameters.Organization\").required()\n      .ensure(\"positionIds\").displayName(\"main.test_reports.pages.reports.parameters.Positions\").required().minItems(1).maxItems(1000)\n      .ensure(\"compareToPositionId\").displayName(\"main.test_reports.pages.reports.parameters.ComparePosition\").required()\n      .ensure(\"compareToTeamId\").displayName(\"main.test_reports.pages.reports.parameters.CompareTeam\").required()\n      .ensure(\"compateToOrganizationId\").displayName(\"main.test_reports.pages.reports.parameters.CompareOrganization\").required()\n      .ensure(\"compareToPersonId\").displayName(\"main.test_reports.pages.reports.parameters.ComparePerson\").required()\n      .ensure(\"personId\").displayName(\"main.test_reports.pages.reports.parameters.Person\").required()\n      .ensure(\"personId\").displayName(\"main.test_reports.pages.reports.parameters.Leader\").required()\n      .ensure(\"peopleIds\").displayName(\"main.test_reports.pages.reports.parameters.People\").required().minItems(1)\n      .ensure(\"oneOrTwoPeopleIds\").displayName(\"main.test_reports.pages.reports.parameters.OneOrTwoPeople\").required().minItems(1).maxItems(2)\n      .ensure(\"twoPeopleIds\").displayName(\"main.test_reports.pages.reports.parameters.TwoPeople\").required().minItems(2)\n      .ensure(\"threePeopleIds\").displayName(\"main.test_reports.pages.reports.parameters.ThreePeople\").required().minItems(1).maxItems(3)\n      .ensure(\"observerIds\").displayName(\"main.test_reports.pages.reports.parameters.Observers\").required().minItems(1).maxItems(1000)\n      .on(this.report);\n  }\n\n  public async activate(params: any): Promise<any> {\n    this.sessionStorageModel = this.checkIsThereSessionStageObject();\n    this.model.firstName = this.checkUndefined(this.sessionStorageModel, 'firstName');\n    this.model.lastName = this.checkUndefined(this.sessionStorageModel, 'lastName');\n    this.model.document = this.checkUndefined(this.sessionStorageModel, 'document');\n    this.model.email = this.checkUndefined(this.sessionStorageModel, 'email');\n    let indicativeCountry = this.checkUndefined(this.sessionStorageModel, 'indicativeCountry');\n\n    if (typeof indicativeCountry === 'number') {\n      this.model.indicativeCountry = parseInt(indicativeCountry);\n    }\n    this.model.phone = this.checkUndefined(this.sessionStorageModel, 'phone');\n\n    this.profile = await this.sessionService.getProfile();\n    this.wootric.attached(this.profile, WootricComponentName.personActivationCreate);\n\n    if (!isNaN(params.companyId)) {\n      this.companyId = +params.companyId;\n\n      this.model.companyId = this.companyId;\n\n      // set new activation\n      this.model.activation = new Activation();\n      this.model.activation.personActivationType = PersonActivationType.Normal;\n\n      // this.personService.client.currentCompanyId = this.companyId;\n      this.questionaryGroupService.client.currentCompanyId = this.companyId;\n      this.reportTemplateService.client.currentCompanyId = this.companyId;\n\n      this.questionaryGroups = await this.getQuestionaryGroups();\n      this.reportTemplates = await this.getReportTemplates();\n      this.countries = await this.catalogService.getCountryAll();\n      this.configureValidationRules();\n      this.questionaries = (await this.companyQuestionaryService.getAll()).filter(q => q.itemToQualify == ItemToQualify.Person || q.questionaryType == QuestionaryType.Competences);\n      this.searchQuestionary = this.questionaries;\n      this.searchQuestionaryGroup = this.questionaryGroups;\n      this.searchReport = this.reportTemplates;\n\n    }\n  }\n\n  public setUserLanguage() {\n    // this.logger.debug(\"setUserLanguage\");\n    if (this.state && this.state.userBasicInfo) {\n      let activeCulture = this.state.userBasicInfo.culture;\n      let activeLang = this.languages.find(lg => lg.culture === activeCulture);\n      if (activeLang) {\n        this.model.activation.languageId = activeLang.id;\n      }\n    }\n  }\n\n  private async bind(): Promise<any> {\n    try {\n      this.languages = await this.languageService.getAll();\n      this.setUserLanguage();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async selectCompanyCompetence(): Promise<void> {\n    this.logger.debug(\"model.companyCompetenceIds\")\n    return await this.dialogService.open({\n      viewModel: CompanyCompetenceModal,\n      model: this.model.activation.companyCompetenceIds\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        if (this.isCompetenceActive && this.model.activation.companyCompetenceIds.length == 0) {\n          this.notification.warning(\"main.test.pages.people.errors.no_competences_selected\");\n        }\n      }\n    });\n  }\n  private async selectThematics(questionaryId: number, questionaryName: string): Promise<void> {\n    // Ensure the array is initialized\n    if (!this.model.activation.activationThematicAssociates) {\n      this.model.activation.activationThematicAssociates = [];\n    }\n\n    // Get available dimensions and filter disabled ones\n    const allDimensions = await this.companyQuestionaryService.getAvailableByQuestionaryId(questionaryId);\n    const enabledDimensions = allDimensions.filter(d => !d.isDisabled);\n\n    // Check if the questionary is a transversal one (companyId == null)\n    const questionary = this.questionaries.find(q => q.id === questionaryId);\n    if (questionary && questionary.companyId != null && enabledDimensions.length > 0) {\n      // Auto-select ALL dimensions for company questionaries\n      const newAssociates: ActivationThematicAssociate[] = enabledDimensions.map(dim => {\n        let associate = new ActivationThematicAssociate();\n        associate.questionaryId = questionaryId;\n        associate.thematicGroupId = dim.id;\n        associate.thematicVariableId = dim.thematicVariableId;\n        return associate;\n      });\n\n      const remaining = this.model.activation.activationThematicAssociates\n        .filter(a => a.questionaryId !== questionaryId);\n      this.model.activation.activationThematicAssociates = remaining.concat(newAssociates);\n\n      let totalAverageTime = 0;\n      enabledDimensions.forEach(dim => totalAverageTime += +(dim.averageTime || 0));\n      this.avgTimeModular = this.avgTimeModular.filter(a => a.questionaryId !== questionaryId);\n      this.avgTimeModular.push({ questionaryId: questionaryId, averageTime: totalAverageTime });\n      this.selectedQuestionaries.avg += totalAverageTime;\n      return;\n    }\n\n    const modalModel: DimensionSelectorModel = {\n      questionaryId: questionaryId,\n      questionaryName: questionaryName,\n      questionaryGroupThematicAssociates: [...this.model.activation.activationThematicAssociates],\n      isActivation: true\n    };\n\n    return await this.dialogService\n      .open({\n        viewModel: DimensionSelectorModal,\n        model: modalModel,\n      })\n      .whenClosed(async (response: any) => {\n        if (!response.wasCancelled && response.output) {\n          // Remove existing associates for this questionary and add the new ones\n          const remaining = this.model.activation.activationThematicAssociates\n            .filter(a => a.questionaryId !== questionaryId);\n          this.model.activation.activationThematicAssociates = remaining.concat(response.output.associates);\n\n          this.avgTimeModular = this.avgTimeModular.filter(a => a.questionaryId !== questionaryId);\n          this.avgTimeModular.push({ questionaryId: questionaryId, averageTime: response.output.totalAverageTime || 0 });\n\n          this.selectedQuestionaries.avg += response.output.totalAverageTime || 0;\n\n          this.logger.debug(\"Updated activationThematicAssociate:\",\n            this.model.activation.activationThematicAssociates.length);\n        }\n        if (\n          this.isModularActive &&\n          (!this.model.activation.activationThematicAssociates ||\n            this.model.activation.activationThematicAssociates.length === 0)\n        ) {\n          this.notification.warning(\n            \"main.test.pages.people.errors.no_thematics_selected\"\n          );\n        }\n      });\n  }\n  private async calculateAvgTime(hasModular: boolean, thematicAssociates: { questionaryId: number; thematicGroupId: number }[], questionaries: Questionary[]): Promise<number> {\n    let avg = 0;\n    if (hasModular) {\n      for (let i = 0; i < questionaries.length; i++) {\n        const q = questionaries[i];\n        if (q.isModular) {\n          const associatesForQ = thematicAssociates.filter(a => a.questionaryId === q.id);\n          if (associatesForQ.length > 0) {\n            const availableThematics = await this.companyQuestionaryService.getAvailableByQuestionaryId(q.id);\n            for (let j = 0; j < associatesForQ.length; j++) {\n              const thematic = availableThematics.find(v => v.id === associatesForQ[j].thematicGroupId);\n              avg += (thematic && thematic.averageTime ? thematic.averageTime : 0);\n            }\n          } else if (q.companyId == null) {\n            // Transversal questionary\n            const availableThematics = await this.companyQuestionaryService.getAvailableByQuestionaryId(q.id);\n            const enabledDimensions = availableThematics.filter(d => !d.isDisabled);\n            for (let j = 0; j < enabledDimensions.length; j++) {\n              avg += +(enabledDimensions[j].averageTime || 0);\n            }\n          }\n        } else {\n          avg += +q.averageTime;\n        }\n      }\n    } else {\n      avg = questionaries.length > 0 ? questionaries.map(it => it.averageTime).reduce((a, b) => a + b) : 0;\n    }\n    return avg;\n  }\n  private async changeBattery(itm) {\n    this.model.activation.reportTemplateId = null;\n    this.model.activation.questionaryIds = [];\n    this.model.engineersTests = null;\n    this.model.activation.activationThematicAssociates = [];\n    this.avgTimeModular = [];\n    const qg = this.questionaryGroups.filter(it => it.id === itm);\n    this.isDisable = false;\n    this.isModularActive = false;\n    if (qg.length) {\n      const questionaries = qg[0].questionaries;\n      const thematicAssociates = qg[0].questionaryGroupThematicAssociates || [];\n      const text = this.signal;\n\n      const hasModular = questionaries.some(it => it.isModular);\n      let avg = await this.calculateAvgTime(hasModular, thematicAssociates, questionaries);\n\n      // Auto-populate activationThematicAssociates for modular questionaries\n      if (hasModular) {\n        for (let i = 0; i < questionaries.length; i++) {\n          const q = questionaries[i];\n          if (q.isModular) {\n            const associatesForQ = thematicAssociates.filter(a => a.questionaryId === q.id);\n            if (associatesForQ.length > 0) {\n              for (const a of associatesForQ) {\n                let associate = new ActivationThematicAssociate();\n                associate.questionaryId = q.id;\n                associate.thematicGroupId = a.thematicGroupId;\n                associate.thematicVariableId = a.thematicVariableId;\n                this.model.activation.activationThematicAssociates.push(associate);\n              }\n            } else {\n              const availableThematics = await this.companyQuestionaryService.getAvailableByQuestionaryId(q.id);\n              const enabledDimensions = availableThematics.filter(d => !d.isDisabled);\n              for (const dim of enabledDimensions) {\n                let associate = new ActivationThematicAssociate();\n                associate.questionaryId = q.id;\n                associate.thematicGroupId = dim.id;\n                associate.thematicVariableId = dim.thematicVariableId;\n                this.model.activation.activationThematicAssociates.push(associate);\n              }\n            }\n          }\n        }\n        this.isModularActive = true;\n      }\n\n      questionaries.forEach(function (it) {\n        it.isNewTest == true ? it.name = it.name + \" \" + text : it.name;\n      });\n      this.selectedQuestionaries = {\n        qty: questionaries.length,\n        avg: avg,\n        questionaries: questionaries.length > 0 ? questionaries.map(it => it.name).reduce((a, b) => a + \", \" + b) : \"\",\n        hasCompetences: questionaries.length > 0 ? questionaries.some(it => it.questionaryType == QuestionaryType.Competences) : false,\n        hasEngineersTest: questionaries.length > 0 ? questionaries.some(it => it.noDiscType == NoDiscType.EngineersTest) : false,\n        hasModular: questionaries.length > 0 ? questionaries.some(it => it.isModular) : false,\n      };\n\n      this.validateEngineersTests(questionaries);\n      this.validateQuestionaryCareerPath(questionaries);\n\n    } else {\n      this.selectedQuestionaries = {\n        qty: 0,\n        avg: 0,\n        questionaries: \"\",\n        hasCompetences: false,\n        hasEngineersTest: false,\n        hasModular: false,\n      };\n\n    }\n    this.cleanCompanyCompetences();\n    const questionaryGroup = await this.questionaryGroupService.getById(itm);\n    await this.isValidActivationVideoInterview(questionaryGroup);\n  }\n\n  private async changeQuestionary() {\n    this.model.activation.reportTemplateId = null;\n    this.model.activation.questionaryGroupId = null;\n    let questionariesFilter: TestQuestionary[] = [];\n    var testQuestionary = new TestQuestionary();\n    this.model.activation.questionaryIds.forEach(element => {\n      testQuestionary = new TestQuestionary();\n      testQuestionary = this.questionaries.find(it => it.stringId == element.stringId);\n      questionariesFilter.push(testQuestionary)\n    });\n    this.isDisable = false;\n    this.isModularActive = false;\n\n\n    if (this.model.activation.activationThematicAssociates && this.model.activation.activationThematicAssociates.length > 0) {\n      const selectedQuestionaryIds = questionariesFilter\n        .filter(q => q != null)\n        .map(q => q.id);\n      this.model.activation.activationThematicAssociates = this.model.activation.activationThematicAssociates\n        .filter(a => selectedQuestionaryIds.indexOf(a.questionaryId) !== -1);\n\n      this.avgTimeModular = this.avgTimeModular\n        .filter(a => selectedQuestionaryIds.indexOf(a.questionaryId) !== -1);\n    }\n\n    if (questionariesFilter.length > 0) {\n      const nonModular = questionariesFilter.filter(it => !it.isModular);\n      const nonModularAvg = nonModular.length > 0 ? nonModular.map(it => it.averageTime).reduce((a, b) => a + b) : 0;\n      let modularAvg = 0;\n      for (let i = 0; i < this.avgTimeModular.length; i++) {\n        modularAvg += this.avgTimeModular[i].averageTime || 0;\n      }\n      this.selectedQuestionaries = {\n        qty: questionariesFilter.length,\n        avg: nonModularAvg + modularAvg,\n        questionaries: questionariesFilter.length > 0 ? questionariesFilter.map(it => it.name).reduce((a, b) => a + \", \" + b) : \"\",\n        hasCompetences: questionariesFilter.length > 0 ? questionariesFilter.some(it => it.questionaryType == QuestionaryType.Competences) : false,\n        hasEngineersTest: questionariesFilter.length > 0 ? questionariesFilter.some(it => it.noDiscType == NoDiscType.EngineersTest) : false,\n        hasModular: questionariesFilter.length > 0 ? questionariesFilter.some(it => it.isModular) : false,\n      };\n      if (this.selectedQuestionaries.hasEngineersTest) {\n        this.validateEngineersTests(questionariesFilter);\n\n      }\n      if (!this.selectedQuestionaries.hasEngineersTest) {\n        this.isEngineersTests = false;\n        this.model.engineersTests = [];\n      }\n\n      this.validateQuestionaryCareerPath(questionariesFilter);\n      if (this.selectedQuestionaries.hasCompetences && this.hasCompetencesFilter != true) {\n        this.selectCompanyCompetence();\n        this.hasCompetencesFilter = true;\n      }\n      if (!this.selectedQuestionaries.hasCompetences) {\n        this.hasCompetencesFilter = false;\n      }\n\n      if (this.selectedQuestionaries.hasModular) {\n        this.isModularActive = true;\n\n        const modularQuestionaries = questionariesFilter.filter(q => q != null && q.isModular);\n        for (let i = 0; i < modularQuestionaries.length; i++) {\n          const mq = modularQuestionaries[i];\n          const hasThematics = this.model.activation.activationThematicAssociates &&\n            this.model.activation.activationThematicAssociates.some(a => a.questionaryId === mq.id);\n\n          if (!hasThematics) {\n            await this.selectThematics(mq.id, mq.name);\n          }\n        }\n      }\n\n    } else {\n      this.selectedQuestionaries = {\n        qty: 0,\n        avg: 0,\n        questionaries: \"\",\n        hasCompetences: false,\n        hasEngineersTest: false,\n        hasModular: false,\n      };\n      this.model.activation.activationThematicAssociates = [];\n    }\n  }\n\n  private async changeReport(itm) {\n    this.model.activation.questionaryGroupId = null;\n    this.model.activation.questionaryIds = [];\n    this.model.engineersTests = null;\n    this.model.activation.activationThematicAssociates = [];\n    this.avgTimeModular = [];\n    const qg = this.reportTemplates.filter(it => it.id === itm);\n    if (qg.length) {\n      const reportTemplate = qg[0];\n      const questionaries = this.resolveQuestionariesForReportTemplate(reportTemplate);\n      this.model.activation.questionaryIds = questionaries.map((it: TestQuestionary) => {\n        const questionaryLanguage = new QuestionaryLanguage();\n        questionaryLanguage.questionaryId = it.id;\n        questionaryLanguage.languageId = it.languageId;\n        questionaryLanguage.stringId = it.stringId;\n        return questionaryLanguage;\n      });\n      const thematicAssociates = reportTemplate.reportTemplateThematicAssociates || [];\n      const text = this.signal;\n      questionaries.forEach(function (it) {\n        it.isNewTest == true ? it.name = it.name + \" \" + text : it.name;\n      });\n\n      const hasModular = questionaries.length > 0 ? questionaries.some(it => it.isModular) : false;\n      let avg = await this.calculateAvgTime(hasModular, thematicAssociates, questionaries);\n\n      // Auto-populate activationThematicAssociates for modular questionaries from report template\n      if (hasModular && thematicAssociates.length > 0) {\n        for (const associate of thematicAssociates) {\n          let activationAssociate = new ActivationThematicAssociate();\n          activationAssociate.questionaryId = associate.questionaryId;\n          activationAssociate.thematicGroupId = associate.thematicGroupId;\n          activationAssociate.thematicVariableId = associate.thematicVariableId;\n          this.model.activation.activationThematicAssociates.push(activationAssociate);\n        }\n      }\n\n      this.selectedQuestionaries = {\n        qty: questionaries.length,\n        avg: avg,\n        questionaries: questionaries.length > 0 ? questionaries.map(it => it.name).reduce((a, b) => a + \", \" + b) : \"\",\n        hasCompetences: questionaries.length > 0 ? questionaries.some(it => it.questionaryType == QuestionaryType.Competences) : false,\n        hasEngineersTest: questionaries.length > 0 ? questionaries.some(it => it.noDiscType == NoDiscType.EngineersTest) : false,\n        hasModular: hasModular,\n      };\n\n      this.report.reportTemplateId = itm;\n      this.validateEngineersTests(questionaries);\n      this.changeReportParameter();\n      this.validateQuestionaryCareerPath(questionaries);\n\n    } else {\n      this.selectedQuestionaries = {\n        qty: 0,\n        avg: 0,\n        questionaries: \"\",\n        hasCompetences: false,\n        hasEngineersTest: false,\n        hasModular: false,\n      };\n    }\n  }\n\n  private resolveQuestionariesForReportTemplate(reportTemplate: ReportTemplate): TestQuestionary[] {\n    if (!reportTemplate) {\n      return [];\n    }\n\n    const persistedIds = (reportTemplate.reportTemplateQuestionaryIds || [])\n      .filter(x => x > 0);\n\n    if (persistedIds.length > 0) {\n      const selectedFromPersisted = reportTemplate.questionaries\n        .filter(q => persistedIds.indexOf(q.id) !== -1)\n        .map(q => <TestQuestionary><unknown>q);\n\n      if (selectedFromPersisted.length > 0) {\n        return selectedFromPersisted;\n      }\n    }\n\n    // Legacy fallback: if there are no persisted ids yet, keep previous behavior.\n    return reportTemplate.questionaries.map(q => <TestQuestionary><unknown>q);\n  }\n\n  private validateQuestionaryCareerPath(questionaries: Questionary[]) {\n    this.isCareerPath = false;\n    const qCareerPaths = questionaries.filter(q => q.noDiscType == NoDiscType.CareerPath);\n    this.isCareerPath = qCareerPaths.length > 0 ? true : false;\n  }\n\n  private validateEngineersTests(questionaries: Questionary[]) {\n    this.isEngineersTests = false;\n    var engineersTests: Test[] = [];\n    let existQuestionary: Test[] = [];\n    if (this.model.engineersTests != undefined) {\n      if (this.model.engineersTests.length > 0)\n        engineersTests = this.model.engineersTests;\n    }\n\n    var test = new Test();\n    questionaries.forEach(function (item: Questionary) {\n      if (item.noDiscType == NoDiscType.EngineersTest) {\n        if (engineersTests != undefined) {\n          if (engineersTests.length > 0)\n            existQuestionary = engineersTests.filter(x => x.questionaryId === item.id);\n\n          if (existQuestionary.length == 0) {\n            test = new Test();\n            test.questionaryId = item.id\n            test.questionaryName = item.name\n            engineersTests.push(test);\n          }\n        }\n\n      }\n    });\n\n    if (engineersTests.length) {\n      this.model.engineersTests = engineersTests;\n      this.isEngineersTests = true;\n    }\n  }\n\n  private async isValidActivationVideoInterview(questionaryGroup: QuestionaryGroup) {\n    const hasVideoInterview = questionaryGroup.questionaries.filter(x => x.noDiscType === NoDiscType.VideoInterview);\n    if (hasVideoInterview.length > 0) {\n      const validate = await this.questionaryGroupService.validateActivationVideoInterview(questionaryGroup.id);\n      if (!validate) {\n        this.isInvalid = true;\n        return this.notification.warning(\"main.test.pages.people.errors.questionarygroup_videinterview_activation_failed\");\n      }\n      else\n        this.isInvalid = false;\n    }\n    else\n      this.isInvalid = false;\n  }\n\n  private cleanCompanyCompetences() {\n    if (!this.selectedQuestionaries.hasModular) {\n      this.model.activation.activationThematicAssociates = [];\n    }\n    if (!this.selectedQuestionaries.hasCompetences) {\n      this.model.activation.companyCompetenceIds = [];\n    }\n  }\n\n  private async getQuestionaryGroups(): Promise<QuestionaryGroup[]> {\n    return this.questionaryGroupService.getAll();\n  }\n\n  private async getReportTemplates(): Promise<ReportTemplate[]> {\n    return this.reportTemplateService.getAll();\n  }\n\n  private checkIsThereSessionStageObject() {\n    return JSON.parse(sessionStorage.getItem('personActivation')) == null\n      ? new Object() :\n      JSON.parse(sessionStorage.getItem('personActivation'));\n  }\n\n  private checkUndefined(obj: Object, prop: string): string {\n    return obj[prop] == undefined ? '' : obj[prop];\n  }\n\n  public handleChange(target: any) {\n    let prop: string = target.id.split('.')[1];\n    this.sessionStorageModel[prop] = this.model[prop];\n    sessionStorage.setItem(`personActivation`, JSON.stringify(this.sessionStorageModel));\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n\n        if (result.valid) {\n          if (!this.model.activation.reportTemplateId && !this.model.activation.questionaryGroupId && !this.model.activation.questionaryIds.length) {\n            this.notification.warning(\"main.test.pages.people.errors.questionarygroup_or_reports_is_missing\");\n            return;\n          }\n          else if (this.model.activation.invitationExpireDate && this.model.activation.invitationExpireDate < new Date()) {\n            this.notification.warning(\"main.test.pages.people.errors.old_invitation_expire_date\");\n            return;\n          }\n          if (this.model.activation.questionaryIds.length > 1) {\n\n            let selectedTests = this.model.activation.questionaryIds.map(sel =>\n              this.questionaries.find(q => q.stringId === sel.stringId)\n            ).filter(q => q != null);\n\n            const selectedIds = selectedTests.map(q => q.id);\n            for (let i = 0; i < selectedTests.length; i++) {\n              const q = selectedTests[i];\n              if (q.questionaryIncompatibilities && q.questionaryIncompatibilities.length > 0) {\n                for (let j = 0; j < q.questionaryIncompatibilities.length; j++) {\n                  const incompatibleId = q.questionaryIncompatibilities[j].incompatibleQuestionaryId;\n                  if (selectedIds.indexOf(incompatibleId) !== -1) {\n                    const incompatibleQ = selectedTests.find(y => y.id === incompatibleId);\n                    this.notification.warning(\n                      `${q.name} main.admin.pages.test_management.questionary_groups.errors.incompatible_with ${incompatibleQ ? incompatibleQ.name : incompatibleId}`\n                    );\n                    return;\n                  }\n                }\n              }\n            }\n          }\n          // Validate modular has thematics selected\n          if (this.isModularActive &&\n            (!this.model.activation.activationThematicAssociates ||\n              this.model.activation.activationThematicAssociates.length === 0)) {\n            this.notification.warning(\"main.test.pages.people.errors.no_thematics_selected\");\n            return;\n          }\n          // else if (this.selectedQuestionaries.hasCompetences && this.model.activation.companyCompetenceIds.length == 0) {\n          //   this.notification.warning(\"main.test.pages.people.errors.no_competences_selected\");\n          // }\n          const discCount = this.model.activation.questionaryIds.map((sel) =>\n            this.questionaries.find((q) => q.stringId === sel.stringId)\n          ).filter((q) => q && q.questionaryType === QuestionaryType.Disc).length;\n\n          if (discCount > 1) {\n            this.notification.warning(\"main.test.pages.people.errors.too_many_disc_questionaries\");\n            return;\n          }\n          else {\n            if (this.model.activation.questionaryGroupId != null) {\n              this.questionaryGroup = await this.questionaryGroupService.getTalentsById(this.model.activation.questionaryGroupId);\n              let hasVideoInterview = this.questionaryGroup.questionaries.filter(x => x.noDiscType === NoDiscType.VideoInterview);\n\n              if (hasVideoInterview.length > 0 && this.questionaryGroup.talentsPrice > 0) {\n                return await this.dialogService.open({\n                  viewModel: PersonActivationConfirmationModal,\n                  model: this.questionaryGroup.talentsPrice\n                }).whenClosed(async (response: DialogCloseResult) => {\n                  if (!response.wasCancelled) {\n                    return await this.save(keepEditing);\n                  }\n                });\n              }\n              else {\n                return await this.save(keepEditing);\n              }\n            }\n            else {\n              return await this.save(keepEditing);\n            }\n          }\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  get canSave() {\n    return !this.personService.client.isRequesting;\n  }\n\n  private concatenatePhone() {\n\n    if ((this.model.phone != null && this.model.phone != '') && !isNaN(this.model.indicativeCountry)) {\n      let country = this.countries.filter(f => f.id === this.model.indicativeCountry);\n      this.model.phone = \"(\" + country[0].phoneCode + \")\" + this.model.phone\n    }\n\n  }\n\n  private async save(saveAndContinue: boolean): Promise<any> {\n    try {\n      this.concatenatePhone();\n      if (this.model.email) {\n        let emailExists: number = await this.personService.existsEmail(this.model.email);\n        if (emailExists) {\n          return await this.dialogService.open({\n            viewModel: EmailExists,\n            model: emailExists\n          }).whenClosed(async (response: DialogCloseResult) => {\n            if (!response.wasCancelled) {\n\n              this.model = await this.personService.create(this.model);\n              if (this.isDisable && this.showDisableParameter) {\n                this.saveReport();\n              }\n\n              this.notification.success(\"notifications.item_added\");\n              if (saveAndContinue) {\n                sessionStorage.removeItem('personActivation');\n                // this.logger.debug(\"Save and continue id: \", model.id);\n                return await this.router.navigateToRoute(\"person-child-router\", { personId: this.model.id });\n              } else {\n                sessionStorage.removeItem('personActivation');\n                return await this.router.navigateToRoute(\"people\");\n              }\n\n            }\n          });\n        }\n        else {\n          this.model = await this.personService.create(this.model);\n          if (this.isDisable && this.showDisableParameter) {\n            this.saveReport();\n          }\n          this.notification.success(\"notifications.item_added\");\n        }\n        if (saveAndContinue) {\n          sessionStorage.removeItem('personActivation');\n          // this.logger.debug(\"Save and continue id: \", model.id);\n          return await this.router.navigateToRoute(\"person-child-router\", { personId: this.model.id });\n        } else {\n          sessionStorage.removeItem('personActivation');\n          return await this.router.navigateToRoute(\"people\");\n        }\n      }\n      else {\n        this.model = await this.personService.create(this.model);\n        if (this.isDisable && this.showDisableParameter) {\n          this.saveReport();\n        }\n        this.notification.success(\"notifications.item_added\");\n        if (saveAndContinue) {\n          sessionStorage.removeItem('personActivation');\n          // this.logger.debug(\"Save and continue id: \", model.id);\n          return await this.router.navigateToRoute(\"person-child-router\", { personId: this.model.id });\n        } else {\n          sessionStorage.removeItem('personActivation');\n          return await this.router.navigateToRoute(\"people\");\n        }\n      }\n    }\n    catch (error) {\n      this.notification.error(error.error);\n    };\n  }\n\n  private changeTag(ban: boolean) {\n    this.showDisableParameter = ban;\n    if (!ban) {\n      this.isDisable = ban;\n    }\n    this.model.activation.reportTemplateId = null;\n    this.model.activation.questionaryGroupId = null;\n    this.selectedQuestionaries = {\n      qty: 0,\n      avg: 0,\n      questionaries: \"\",\n      hasCompetences: false,\n      hasEngineersTest: false,\n      hasModular: false,\n    }\n    this.model.activation.questionaryIds = [];\n    this.model.engineersTests = null;\n\n\n\n  }\n\n  private createQuestionaryGroup() {\n    // this.dialogController.cancel();\n    this.router.navigate(`/company/${this.companyId}/admin/test-management/questionary-groups/questionary-group/create`);\n  }\n\n  private OnChangeQuestionary() {\n    this.searchQuestionary = [];\n\n    if (!this.selectedLanguageId && !this.questionaryFilter) {\n      this.searchQuestionary = this.questionaries;\n    }\n    else if (this.selectedLanguageId == 0 && this.questionaryFilter.length === 0) {\n      this.searchQuestionary = this.questionaries;\n    }\n    else if (this.questionaryFilter.length > 0 && this.selectedLanguageId > 0) {\n      this.searchQuestionary = this.questionaries.filter(q => q.name.toLowerCase().includes(this.questionaryFilter.toLowerCase()) && q.languageId === this.selectedLanguageId);\n    }\n    else if (this.questionaryFilter.length > 0) {\n      this.searchQuestionary = this.questionaries.filter(q => q.name.toLowerCase().includes(this.questionaryFilter.toLowerCase()));\n    }\n    else if (this.selectedLanguageId > 0) {\n\n      this.searchQuestionary = this.questionaries.filter(q => q.languageId == this.selectedLanguageId);\n    }\n  }\n\n  private async OnChangeQuestionaryGroup() {\n    if (this.questionaryGroupFilter.length > 0) {\n      this.searchQuestionaryGroup = this.questionaryGroups.filter(q => q.name.toLowerCase().includes(this.questionaryGroupFilter.toLowerCase()));\n      this.model.activation.questionaryGroupId = this.searchQuestionaryGroup[0].id;\n      await this.changeBattery(this.model.activation.questionaryGroupId);\n\n    }\n\n    else if (this.questionaryGroupFilter == null || this.questionaryGroupFilter.length == 0) {\n      this.searchQuestionaryGroup = [];\n      this.searchQuestionaryGroup = this.questionaryGroups;\n      this.model.activation.questionaryGroupId = null;\n    }\n\n  }\n\n  private async OnChangeReport() {\n    if (this.reportFilter.length > 0) {\n      this.searchReport = this.reportTemplates.filter(q => q.name.toLowerCase().includes(this.reportFilter.toLowerCase()));\n      this.model.activation.reportTemplateId = this.searchReport[0].id;\n      await this.changeReport(this.model.activation.reportTemplateId);\n    }\n    else if (this.reportFilter == null || this.reportFilter.length == 0) {\n      this.searchReport = [];\n      this.searchReport = this.reportTemplates\n      this.model.activation.reportTemplateId = null;\n      await this.changeReport(this.model.activation.reportTemplateId);\n    }\n\n  }\n\n  private createReportTemplate() {\n    // this.dialogController.cancel();\n    this.router.navigate(`/company/${this.companyId}/admin/test-management/report-templates/report-template/create`);\n  }\n\n  public async changeReportParameter(): Promise<any> {\n\n    this.logger.debug(\"changeReport\");\n\n    try {\n      this.reportTemplate = await this.reportTemplateService.getById(this.report.reportTemplateId);\n      this.report.companyId = this.companyId;\n      this.report.sheets = this.reportTemplate.sheets;\n      this.setParameters(this.report.sheets.map(x => x.id));\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private setParameters(sheetIds: number[]) {\n    // reset variable\n    this.report.parameters = [];\n\n    this.report.sheets.forEach(sheet => {\n      const index = sheetIds.findIndex(x => x == sheet.id);\n      if (index !== -1) {\n        for (let par of sheet.parameters) {\n          const index1 = this.report.parameters.findIndex(x => x === par.parameter);\n          if (index1 === -1) {\n            this.report.parameters.push(par.parameter);\n          }\n        }\n      }\n    });\n\n    this.logger.debug(\"Parameters: \", this.report.parameters);\n  }\n\n  private async saveReport(): Promise<any> {\n    try {\n      this.report.personId = this.model.id;\n      this.report.activationId = this.model.activation.id;\n      this.report = await this.reportService.create(this.report);\n    } catch (error) {\n      this.notification.error(error);\n    }\n\n  }\n\n  public notificationInfo(message: string) {\n    this.notification.info(message);\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../models/test-person/personModeViewEngineHooks></require> <require from=../../../../models/test-person/questionaryWayViewEngineHooks></require> <require from=../../../../models/test-person/whoCanSeeReportViewEngineHooks></require> <require from=../../../../models/test-perfiltic/difficultyViewEngineHooks></require> <require from=../../../test-reports/components/report-parameter></require> <require from=../people-competence/competence-activation-selector></require> <require from=../../../components/multiselect-tht></require> <h2> ${'main.testperson.pages.persons_activation.title' & t} </h2> <div class=\\\"row mb-3\\\"> <form class=content-main> <div class=row> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.firstName>${'main.test.pages.people.first_name' & t}</label> <input type=text class=form-control id=model.firstName change.delegate=handleChange($event.target) t=[placeholder]main.test.pages.people.first_name value.bind=\\\"model.firstName & validate\\\"> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.lastName>${'main.test.pages.people.last_name' & t}</label> <input type=text class=form-control id=model.lastName change.delegate=handleChange($event.target) t=[placeholder]main.test.pages.people.last_name value.bind=\\\"model.lastName & validate\\\"> </div> </div> </div> <div class=row> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.document>${'main.test.pages.people.document' & t}</label> <input type=text class=form-control id=model.document change.delegate=handleChange($event.target) t=[placeholder]main.test.pages.people.document value.bind=\\\"model.document & validate\\\"> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.email>${'main.test.pages.people.email' & t}</label> <input type=text class=form-control id=model.email change.delegate=handleChange($event.target) t=[placeholder]main.test.pages.people.email value.bind=\\\"model.email & validate\\\"> </div> </div> </div> <div class=row> <div class=col-md-2> <div class=form-group> <label for=model.indicativeCountry>${'main.test.pages.people.indicative' & t} </label> <select class=form-control change.delegate=handleChange($event.target) id=model.indicativeCountry value.bind=\\\"model.indicativeCountry & validate\\\"> <option t=forms.select_option value=\\\"\\\"> </option> <option repeat.for=\\\"option of countries\\\" model.bind=option.id> ${option.name}</option> </select> </div> </div> <div class=col-md-4> <div class=form-group> <label for=model.phone>${'main.test.pages.people.phone' & t}</label> <input type=text class=form-control id=model.phone change.delegate=handleChange($event.target) t=[placeholder]main.test.pages.people.phone value.bind=\\\"model.phone & validate\\\"> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.personMode>${'main.test.pages.people.person_mode' & t} <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.test.pages.people.activation_mode')\\\" role=button> <i class=material-icons>info_outline</i> </a> </label> <select value.bind=\\\"model.personMode & validate\\\" class=form-control id=model.personMode> <option repeat.for=\\\"option of PersonModes\\\" model.bind=PersonMode[option]> ${'main.testperson.pages.person.activation_mode.' + option & t}</option> </select> </div> </div> </div> <div class=row> <div class=col> <label for=model.tags>${'main.testperson.pages.person.tags' & t} <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.test.pages.people.tag')\\\" role=button> <i class=material-icons>info_outline</i> </a> </label> <company-tags-input value.bind=model.tags /> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> <p> <a class=\\\"btn btn-link collapse-header\\\" data-toggle=collapse href=#collapseAdvanceOptions role=button aria-expanded=false aria-controls=collapseAdvanceOptions> <i class=material-icons>chevron_right</i> ${'main.testperson.pages.person.advanced_options' & t} </a> </p> <div class=collapse id=collapseAdvanceOptions> <div class=row> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=model.hasMicroSite checked.bind=\\\"model.hasMicroSite & validate\\\"/> <label for=model.hasMicroSite class=form-check-label>${'main.test.pages.people.micro_site' & t} <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.test.pages.people.microsite')\\\" role=button> <i class=material-icons>info_outline</i> </a> </label> </span> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=model.activation.isConfidentialTest checked.bind=\\\"model.activation.isConfidentialTest & validate\\\"/> <label for=model.activation.isConfidentialTest class=form-check-label>${'main.testperson.pages.person.confidential_test' & t} <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.test.pages.people.confidential_test')\\\" role=button> <i class=material-icons>info_outline</i> </a> </label> </span> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox class=switch id=model.activation.isAnonymous checked.bind=\\\"model.activation.isAnonymous & validate\\\"/> <label for=model.activation.isAnonymous class=form-check-label>${'main.testperson.pages.person.anonymous' & t} <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.test.pages.people.disable_name')\\\" role=button> <i class=material-icons>info_outline</i> </a> </label> </span> </div> </div> </div> <div class=row> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.activation.questionaryWay>${'main.testperson.pages.person.person_questionary_way_label' & t} </label> <select value.bind=\\\"model.activation.questionaryWay & validate\\\" class=form-control id=model.activation.questionaryWay> <option repeat.for=\\\"option of QuestionaryWays\\\" model.bind=QuestionaryWay[option]> ${'main.testperson.pages.person.person_questionary_way.' + option & t}</option> </select> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.activation.whoCanSeeReport>${'main.testperson.pages.person.who_can_see_report' & t} <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.test.pages.people.see_report')\\\" role=button> <i class=material-icons>info_outline</i> </a> </label> <select value.bind=\\\"model.activation.whoCanSeeReport & validate\\\" class=form-control id=model.activation.whoCanSeeReport> <option repeat.for=\\\"option of WhoCanSeeReports\\\" model.bind=WhoCanSeeReport[option]> ${'main.testperson.pages.person.who_can_see_report_' + option & t}</option> </select> </div> </div> </div> <div class=row> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.activation.invitationExpireDate t=main.testperson.pages.person.invitation_expire_date>Date</label> <ux-date-picker value.bind=\\\"model.activation.invitationExpireDate & validate\\\" id=model.activation.invitationExpireDate></ux-date-picker> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.activation.languageId>${'main.testperson.pages.person.language' & t}</label> <select value.bind=\\\"model.activation.languageId & validate\\\" class=form-control> <option repeat.for=\\\"option of languages\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> </div> </div> </div> </div> <div class=row> <div class=col-12> <h5>${'main.test.pages.people.activation_type' & t} <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.test.pages.people.activation_type')\\\" role=button> <i class=material-icons>info_outline</i> </a> </h5> <p t=main.test.pages.people.info_new_test t-params.bind=\\\"{signal: signal}\\\"> </p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-3\\\"> <div class=\\\"nav flex-column nav-pills\\\" id=v-pills-tab role=tablist aria-orientation=vertical> <a class=nav-link id=v-pills-questionary-tab data-toggle=pill href=#v-pills-questionary role=tab click.delegate=changeTag(false) aria-controls=v-pills-questionary aria-selected=false>${'main.admin.pages.test_management.questionary_groups.questionaries.title' & t}</a> <a class=\\\"nav-link active\\\" id=v-pills-questionarygroups-tab data-toggle=pill href=#v-pills-questionarygroups role=tab aria-controls=v-pills-questionarygroups click.delegate=changeTag(false) aria-selected=true>${'main.test.pages.people.questionarygroups_tab.title' & t}</a> <a class=nav-link id=v-pills-report-tab data-toggle=pill href=#v-pills-report role=tab click.delegate=changeTag(true) aria-controls=v-pills-report aria-selected=false>${'main.testperson.pages.person.reports_tab.title' & t}</a> </div> </div> <div class=\\\"col-12 col-md-9\\\"> <div class=tab-content id=v-pills-tabContent> <div class=\\\"tab-pane fade show active\\\" id=v-pills-questionarygroups role=tabpanel aria-labelledby=v-pills-questionarygroups-tab> <div class=row> <div class=col-12> <div class=form-group> <label for=model.activation.questionaryGroupId>${'main.test.pages.people.questionarygroups' & t}</label> <div class=form-group> <input type=text class=form-control id=questionaryGroupFilter input.delegate=OnChangeQuestionaryGroup() t=[placeholder]ux_datatable.search_placeholder value.bind=questionaryGroupFilter> </div> <select value.bind=\\\"model.activation.questionaryGroupId & validate\\\" class=form-control change.delegate=changeBattery(model.activation.questionaryGroupId)> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of searchQuestionaryGroup\\\" model.bind=option.id>${option.name & t}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=model.activation.questionaryGroupId> <div class=col-12> <p t=main.test.pages.people.questionaries_info t-params.bind=\\\"{quantity:selectedQuestionaries.qty, questionaries: selectedQuestionaries.questionaries,  duration: selectedQuestionaries.avg}\\\"> Questionaries quantity </p> </div> </div> <div class=row> <div class=col-12> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: TestManagementQuestionaryGroupCreate\\\" title.bind=\\\"'commands.edit' & t\\\" click.delegate=createQuestionaryGroup()> ${'main.test.pages.people.new_questionarygroups' & t} </button> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=v-pills-report role=tabpanel aria-labelledby=v-pills-report-tab> <div class=row> <div class=col-12> <div class=form-group> <label for=model.activation.reportTemplateId>${'main.testperson.pages.person.reports' & t}</label> <div class=form-group> <input type=text class=form-control id=reportFilter input.delegate=OnChangeReport() t=[placeholder]ux_datatable.search_placeholder value.bind=reportFilter> </div> <select value.bind=\\\"model.activation.reportTemplateId & validate\\\" class=form-control change.delegate=changeReport(model.activation.reportTemplateId)> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of searchReport\\\" model.bind=option.id>${option.name & t}</option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=model.activation.reportTemplateId> <div class=col-12> <p t=main.test.pages.people.questionaries_info t-params.bind=\\\"{quantity:selectedQuestionaries.qty, questionaries: selectedQuestionaries.questionaries, duration: selectedQuestionaries.avg}\\\"> Questionaries quantity </p> </div> </div> <div class=row> <div class=col-12> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: TestManagementReportCreate\\\" title.bind=\\\"'commands.edit' & t\\\" click.delegate=createReportTemplate()> ${'main.testperson.pages.person.commands.new_report' & t} </button> </div> </div> </div> <div class=\\\"tab-pane fade\\\" id=v-pills-questionary role=tabpanel aria-labelledby=v-pills-questionary-tab> <div class=row> <div class=col-12> <div class=form-group> <div class=form-group> <div class=row> <div class=col-md-6> <label for=model.activation.questionaryIds>${'main.test.pages.people.questionarygroups' & t}</label> <input type=text class=form-control id=questionaryFilter input.delegate=OnChangeQuestionary() t=[placeholder]ux_datatable.search_placeholder value.bind=questionaryFilter> </div> <div class=col-md-6> <label for=selectedLanguageId>${'main.admin.pages.questionaries.questions.questionnaire_language' & t}</label> <select class=form-control value.bind=selectedLanguageId change.delegate=OnChangeQuestionary()> <option t=forms.select_option value=0></option> <option repeat.for=\\\"language of languages\\\" model.bind=language.id>${language.name & t}</option> </select> </div> </div> </div> <multiselect-tht params-list.bind=searchQuestionary value.bind=model.activation.questionaryIds change.delegate=changeQuestionary()> </multiselect-tht> </div> </div> </div> <div class=\\\"row mb-3\\\" if.bind=model.activation.questionaryIds> <div class=col-12> <p t=main.test.pages.people.questionaries_info t-params.bind=\\\"{quantity:selectedQuestionaries.qty, questionaries: selectedQuestionaries.questionaries, duration: selectedQuestionaries.avg}\\\"> Questionaries quantity </p> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> </div> </div> <div if.bind=isEngineersTests> <div class=row> <div class=col-12> <label>${'main.test.pages.people.perfiltic.description' & t}</label> </div> </div> <div class=row> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\"> <thead> <tr class=d-flex> <th class=col-md-6 scope=col> ${'main.test.pages.people.perfiltic.programmingLanguage' & t} </th> <th class=col-md-6 scope=col> ${'main.test.pages.people.perfiltic.difficulty' & t}</th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of model.engineersTests\\\"> <td class=col-md-6>${item.questionaryName}</td> <td class=col-md-6> <select value.bind=\\\"item.difficulty & validate\\\" class=form-control id=item.difficulty> <option repeat.for=\\\"option of Difficulties\\\" model.bind=Difficulty[option]> ${'main.test.pages.perfiltic.difficulty.' + option & t}</option> </select> </td> </tr> </tbody> </table> </div> </div> </div> </div> </div> </div> <div class=row style=margin-bottom:50px> <div class=col> <label>${'main.testperson.pages.person.additional_text' & t}</label> <quill-editor value.bind=\\\"model.activation.additionalText & validate\\\"></quill-editor> </div> </div> <div class=clearfix></div> <div class=\\\"row mb-3\\\"> <div class=col> <p>&nbsp;</p> </div> </div> <div class=form-group if.bind=showDisableParameter> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=isDisable class=switch model.bind=isDisable checked.bind=isDisable> <label for=isDisable>${'main.testperson.pages.person.mail_notification' & t} </label> </span> <report-parameter is-disable.bind=isDisable model.bind=report report-template.bind=reportTemplate is-report-activation.bind=false></report-parameter> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mt-5\\\" if.bind=!isInvalid> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestPersonCreate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestPersonCreate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: people;\\\" onclick='sessionStorage.removeItem(\\\"personActivation\\\")' t=main.testperson.pages.person.commands.cancel>Cancel</a> </div> </div> </div> </form> <div class=content-sidebar> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonBulkView\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.person_masive_activation.create_card.title' & t} </h5> <p t=[html]main.testperson.pages.person_masive_activation.create_card.info>Create new bulk activation </p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: bulk-activation-list-child-router;\\\" t=main.testperson.pages.person_masive_activation.create_card.create>Bulk Activation</a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonObservationCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.person_observation_activation.create_card.title' & t} </h5> <p t=[html]main.testperson.pages.person_observation_activation.create_card.info>Create new activation by observation</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: observation-child-router; params.bind: {personId:'create'}\\\" t=main.testperson.pages.person_observation_activation.create_card.create>Activation by Observation</a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonObservationCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.test.pages.bulk_observation.create_card.title' & t} </h5> <p t=[html]main.test.pages.bulk_observation.create_card.info>Crear nueva activación masiva por observación</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: bulk-observation-child-router;\\\" t=commands.view>Bulk Observation</a> <a class=\\\"btn btn-primary btn-round\\\" title=\\\"${&apos;main.test.pages.bulk_observation.create_card.create&apos; & t}\\\" href=company/${companyId}/test/people/bulk-observation/create t=main.test.pages.bulk_observation.create_card.create>Create</a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonHomologationCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.homologation_activation.title' & t} </h5> <p t=[html]main.testperson.pages.homologation_activation.tab_basic>Create new activation by homologation</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: homologation-child-router; params.bind: {personId:'create'}\\\" t=main.testperson.pages.homologation_activation.title>Activation by homologation</a> </div> </div> </div> </div> </div> </div> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { I18N } from \"aurelia-i18n\";\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { AgreementService } from \"main/admin/services/agreements/agreement-service\";\nimport { UrlParamService } from \"common/utils/url-param-service\";\nimport { PersonService } from \"main/test/services/people/person-service\";\nimport { CompanySettings } from \"models/companies/company-settings\";\n\n@autoinject\nexport class PersonChildRouter {\n\n  private logger: Logger;\n\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private agreementService: AgreementService,\n    private personService: PersonService,\n    private urlParamService: UrlParamService,\n    private authorizationService: AuthorizationService) {\n\n    this.logger = LogManager.getLogger(\"PersonChildRouter\");\n  }\n\n\n\n  public async configureRouter(config: RouterConfiguration, router: Router): Promise<void> {\n    const companyId = this.urlParamService.getCompanyIdFromPath();\n    const personId = this.urlParamService.getPersonIdFromPath();\n\n    let companySettings : CompanySettings = null; \n    let hasTestControlInfo : boolean = false;\n\n    if (companyId){\n      \n      companySettings = await this.agreementService.getTestControlCompanySettingsByCompanyId(companyId);\n      var person = await this.personService.getById(personId);\n      hasTestControlInfo = person.hasTestControlInfo;\n    }\n      \n    \n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./person-edit\"),\n        name: \"person-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.people.person.title\"),\n      },\n\n      {\n        route: \"resume\",\n        moduleId: PLATFORM.moduleName(\"../people-resume/people-resume-edit\"),\n        name: \"people-resume-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.person.person_tabs.tab_resume\"),\n      },   \n      {\n        route: \"videointerview\",\n        moduleId: PLATFORM.moduleName(\"../people-videointerview/people-videointerview-child-router\"),\n        name: \"people-videointerview-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.people.people_videointerview_edit.video_interview\")      \n      },\n\n      {\n        route: \"emailhistory\",\n        moduleId: PLATFORM.moduleName(\"../people-history-email/people-history-email-list\"),\n        name: \"people-history-email-list\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.people.people_history_email.email_history\")      \n      },\n\n      {\n        route: \"testcontrol\",\n        moduleId: PLATFORM.moduleName(\"../people-test-control/people-test-control-edit\"),\n        name: \"people-test-control-edit\",\n        nav: !!(companySettings && companySettings.hasTestControl && hasTestControlInfo),\n        title: this.i18n.tr('main.test.pages.people.test_control_edit.test_control')\n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\n\nimport { Notification } from \"common/services/notification\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { PersonService } from \"main/test/services/people/person-service\";\nimport { Person } from \"models/test-person/person\";\n\n\n@autoinject()\nexport class PersonDeleteModal {\n\n  private logger: Logger;\n  private personToDelete: Person;\n  private groupIdToTransferUsers: number;\n  private validationController: ValidationController;\n\n  constructor(\n    private dialogController: DialogController,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private personService: PersonService) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"PersonDeleteModal\");\n    this.configureValidationRules();\n  }\n\n  private async activate(item: Person): Promise<void> {\n    this.personToDelete = Object.assign(new Person(), item);  }\n\n  private configureValidationRules(): void {\n    // ValidationRules\n    //   .ensure(\"groupIdToTransferUsers\").displayName(\"main.admin.pages.groups.group_to_transfer\").required()\n    //   .on(this);\n  }\n\n  public async submit(): Promise<any> {\n    return await this.dialogController.ok();\n  }\n}\n\n\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'commands.archive' & t}</h2> <div class=row> <div class=col-12> <p t=modals.delete_confirmation.message t-params.bind=\\\"{name: personToDelete.firstName + ' '  +personToDelete.lastName}\\\">Delete?</p> </div> </div> <form> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> <button type=submit class=\\\"btn btn-danger\\\" attach-focus=true click.delegate=submit() t=commands.archive>Delete</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { ActivationType } from '../../../../models/test-person/activationType';\nimport { Activation } from 'models/test-person/activation';\nimport { autoinject, LogManager, Disposable } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { Person } from \"models/test-person/person\";\nimport { Comment } from \"models/test-person/comment\";\nimport { PersonService } from \"../../services/people/person-service\";\nimport { Notification } from \"common/services/notification\";\nimport { Company } from \"models/companies/company\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from \"common/store/store-service\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { PersonActivationType } from \"models/test-person/personActivationType\";\nimport { PeopleQuestionaryActivationModal } from '../people-questionary/people-questionary-activation-modal';\nimport { ActivationService } from 'main/test/services/people/activation-service';\nimport { EventAggregator } from 'aurelia-event-aggregator';\nimport { PersonQuestionaryActivationMessage } from 'main/test/messages/personActivationMessage';\nimport { PeopleCommentEditModal } from '../people-comment/people-comment-edit-modal';\nimport { CommentService } from 'main/test/services/people/comment-service';\nimport { PersonCommentEditMessage } from 'main/test/messages/personCommentEditMessage';\nimport { PersonLoginInfoModal } from './person-login-info-modal';\nimport { DemographicData } from 'models/microsite/demographicData';\nimport { PersonDemographicDataService } from 'main/test/services/people/person-demographic-data-service';\nimport { PersonDemographicDataEditMessage } from 'main/test/messages/personDemographicDataEditMessage';\nimport { ObservationEditModal } from 'main/test/pages/observation/observation-edit-modal';\nimport { Report } from 'models/test-reports/reports/report';\nimport { ReportService } from '../../../test-reports/services/report-service';\n\n@autoinject()\nexport class PersonEdit {\n\n  private logger: Logger;\n\n  public companyId: number;\n  private company: Company;\n\n  private state: State;\n  private person: Person = new Person();\n  private demographicData: DemographicData;\n  private getdemographicData: boolean = true;\n\n  private activations: Activation[];\n  private showHomologations: boolean = false;\n  private showObservations: boolean = false;\n\n  private subscriptions: Disposable[] = [];\n\n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private notification: Notification,\n    private personService: PersonService,\n    private reportService: ReportService,\n    private personDemographicDataService: PersonDemographicDataService,\n    private activationService: ActivationService,\n    private commentService: CommentService,\n    private dialogService: DialogService,\n    private ea: EventAggregator\n  ) {\n\n    this.logger = LogManager.getLogger(\"PersonCreate\");\n\n    this.state = this.store.state;\n\n    // event when new activation is created\n    this.subscriptions.push(this.ea.subscribe(PersonDemographicDataEditMessage, this.getPersonDemographicData.bind(this, true)));\n\n  }\n\n  public async activate(params: any, routerConfig: RouteConfig): Promise<any> {\n    this.logger.debug(\"activate\");\n\n    try {\n      if (!isNaN(params.companyId)) {\n        this.companyId = +params.companyId;\n\n        if (this.companyId) {\n\n          this.personService.client.currentCompanyId = this.companyId;\n\n          if (!isNaN(params.personId)) {\n\n            this.person = await this.personService.getById(+params.personId);\n\n            // routerConfig.title = this.person.fullName;\n\n\n            await this.getActivations();\n            await this.setShowHomologationList();\n            await this.setShowObservationList();\n          }\n        }\n      }\n    }\n    catch (error) {\n      this.notification.error(error.error);\n    }\n  }\n\n  private async getPersonDemographicData(getAgain: boolean = false): Promise<any> {\n    if(this.getdemographicData || getAgain){\n      this.demographicData = await this.personDemographicDataService.get(this.person.id);\n      this.getdemographicData = false;\n    }\n  }\n\n  private async getActivations() {\n    this.activations = await this.activationService.getAllByPersonId(this.person.id);\n  }\n\n  private async setShowHomologationList() {\n    this.showHomologations = this.activations.filter(x => x.personActivationType == PersonActivationType.Homologation).length > 0;\n  }\n\n  private async setShowObservationList() {\n    this.showObservations = this.activations.filter(x => x.personActivationType == PersonActivationType.Observed).length > 0;\n  }\n\n  private async createActivation(): Promise<any> {\n    let item: Activation = new Activation();\n    item.companyId = this.companyId;\n    item.activationType = ActivationType.Person;\n    item.personActivationType = PersonActivationType.Normal;\n\n    return await this.dialogService.open({\n      viewModel: PeopleQuestionaryActivationModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        this.logger.debug(\"response.output\", response.output);\n\n        return await this.activationService.create(item, this.person.id)\n          .then(async (model: Activation) => {\n            item.id = model.id;\n\n            if(response.output){\n              let report = new Report();\n              report = response.output;\n              report.activationId = model.id;\n              report.personId = this.person.id;\n              report = await this.reportService.create(report);\n              }\n\n            this.notification.success(\"notifications.item_added\");            \n\n            // new activation\n            this.ea.publish(new PersonQuestionaryActivationMessage());\n\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }   \n\n  private async createObservation(): Promise<any> {\n    let item: Activation = new Activation();\n    item.companyId = this.companyId;\n    item.activationType = ActivationType.Person;\n    item.personActivationType = PersonActivationType.Observed;\n\n    return await this.dialogService.open({\n      viewModel: ObservationEditModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.activationService.create(item, this.person.id)\n          .then(async (model: Activation) => {\n            item.id = model.id;\n            this.notification.success(\"notifications.item_added\");\n            // new activation\n            this.ea.publish(new PersonQuestionaryActivationMessage());\n            return await this.router.navigate(`/company/${this.companyId}/test/people/person-observation/${this.person.id}/observers/${item.id}`);\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n\n  private async createComment(): Promise<any> {\n    let item: Comment = new Comment();\n    item.personId = this.person.id;\n\n    return await this.dialogService.open({\n      viewModel: PeopleCommentEditModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        this.logger.debug(\"response.output\", response.output);\n\n        return await this.commentService.create(item, this.person.id)\n          .then(async (model: Comment) => {\n            item.id = model.id;\n\n            this.notification.success(\"notifications.item_added\");\n\n            // new activation\n            this.ea.publish(new PersonCommentEditMessage());\n\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private async sendIndividualReminder(id: number): Promise<boolean> {\n    try {\n      await this.personService.sendReminder(id);\n      this.notification.success(\"main.test.pages.person.send_reminder\");\n      return true;\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async viewLoginInfo(personId: number): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: PersonLoginInfoModal,\n      model: personId\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.sendIndividualReminder(personId);\n      }\n    });\n  }\n\n  // private async editdemographicData(): Promise<any> {\n  //   return await this.dialogService.open({\n  //     viewModel: PersonDemographicDataModal,\n  //     model: this.demographicData\n  //   }).whenClosed(async (response: DialogCloseResult) => {\n  //     if (!response.wasCancelled) {\n  //       this.logger.debug(\"response.output\", response.output);\n\n  //       await this.personDemographicDataService.update(this.demographicData);\n  //       this.notification.success(\"notifications.item_added\");\n  //     }\n  //   })\n  //     .catch(error => {\n  //       this.notification.error(error);\n  //     });\n  // }\n\n  // private async updateTags(): Promise<any> {\n  //   try {\n  //     await this.personService.updateTags(this.person.id, this.person.tags);\n  //     this.notification.success(\"notifications.item_edited\");\n  //   }\n  //   catch (error) {\n  //     this.notification.error(error);\n  //   }\n  // }\n\n}\n","module.exports = \"<template> <require from=../../../components/person-header.html></require> <require from=../people-tags/person-tags></require> <require from=../people-demographic/person-demographic-data></require> <require from=../people-questionary/people-questionary-list></require> <require from=../people-comment/people-comment-list></require> <require from=../homologation/homologation-list></require> <require from=../observation/observation-list></require> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <person-header person.bind=person></person-header> <person-tags person.bind=person></person-tags> <div class=\\\"row mb-3\\\" if.bind=\\\"person.areTermsAccepted !== null && !person.areTermsAccepted\\\"> <div class=col-12> <div class=\\\"alert alert-danger\\\" role=alert> ${'main.test.pages.people.person_does_not_accept_terms' & t} </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 text-right\\\"> <a class=\\\"btn btn-link collapse-header\\\" type=button click.delegate=getPersonDemographicData() data-toggle=collapse href=#collapseViewDemographicData role=button aria-expanded=false aria-controls=collapseViewDemographicData> ${'commands.view_more' & t} <i class=material-icons>more_horiz</i> </a> </div> </div> <div class=collapse id=collapseViewDemographicData> <person-demographic-data person.bind=person demographic-data.bind=demographicData> </person-demographic-data> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-12> <h3 id=questionaries>${'main.test.pages.people.questionaries.title' & t}</h3> <people-questionary-list person.bind=person></people-questionary-list> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <h3 id=comments>${'main.test.pages.people.comments.title' & t}</h3> <people-comment-list person.bind=person></people-comment-list> <button class=\\\"btn btn-primary btn-round\\\" global-permission-show=\\\"can: TestPersonUpdate\\\" click.delegate=createComment()> <i class=material-icons>comment</i> ${'main.test.pages.people.comments.create' & t} </button> </div> </div> <div class=\\\"row mb-3\\\" if.bind=showHomologations> <div class=col-12> <h3 id=homologations>${'main.testperson.pages.homologation.title' & t}</h3> <homologation-list person.bind=person></homologation-list> </div> </div> <div class=\\\"row mb-3\\\" if.bind=showObservations> <div class=col-12> <h3 id=obsrvations>${'main.testperson.pages.observation.title' & t}</h3> <observation-list person.bind=person company-id.bind=companyId></observation-list> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonUpdate\\\"> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=main.test.pages.people.new_activation></h5> <p class=card-text t=[html]main.test.pages.people.new_activation_info>Lorem</p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=createActivation()> ${'main.test.pages.people.new_activation' & t} </button> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonObservationUpdate\\\"> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=main.test.pages.people.new_activation_observation></h5> <p class=card-text t=[html]main.test.pages.people.new_activation_observation_info>Lorem</p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=createObservation(person)> ${'main.testperson.pages.person_observation_activation.create_card.create' & t} </button> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonUpdate\\\"> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=main.test_reports.pages.reports.create_card.title></h5> <p class=card-text t=[html]main.admin.pages.reports.create_card.info>Lorem</p> <a class=\\\"btn btn-primary btn-round\\\" title=\\\"${'main.test_reports.pages.reports.create_card.title' & t}\\\" href=\\\"company/${companyId}/test-reports/reports?personId=${person.id}\\\"> ${'commands.view' & t} </a> <a class=\\\"btn btn-primary btn-round\\\" title=\\\"${'commands.generate' & t}\\\" href=\\\"company/${companyId}/test-reports/reports/report/0?personId=${person.id}\\\"> ${'commands.generate' & t} </a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonUpdate\\\"> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=main.test.pages.people.card.view_login_info.title></h5> <p class=card-text t=[html]main.test.pages.people.card.view_login_info.info>Lorem</p> <button class=\\\"btn btn-primary btn-round\\\" title=\\\"${'commands.view' & t}\\\" click.delegate=viewLoginInfo(person.id)> ${'commands.view' & t} </button> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonUpdate\\\" if.bind=person.email> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=main.test.pages.people.card.send_test_reminder.title></h5> <p class=card-text t=[html]main.test.pages.people.card.send_test_reminder.info>Lorem</p> <button class=\\\"btn btn-primary btn-round\\\" title=\\\"${'commands.send' & t}\\\" click.delegate=sendIndividualReminder(person.id)> ${'commands.send' & t} </button> </div> </div> </div> </div> </div> </div> </template> \";","import { Person } from 'models/test-person/person';\nimport { DialogController } from \"aurelia-dialog\";\nimport { autoinject } from \"aurelia-framework\";\nimport { PersonService } from 'main/test/services/people/person-service';\n\n@autoinject()\nexport class EmailExists {\n  private id: number;\n  private model: Person;\n  constructor\n  (\n    private dialogController: DialogController,\n    private personService: PersonService)\n   {\n    this.id = null;\n    \n  }\n  public async activate(id: number) {    \n    this.model = await this.personService.getById(id);\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2 t=main.test.pages.people.email_validation_title>Warning</h2> <p t=main.test.pages.people.email_validation_text></p> </ux-dialog-body> <ux-dialog-footer> <button attach-focus=true class=\\\"btn btn-primary btn-round\\\" click.delegate=dialogController.ok() t=commands.accept>Accept</button> &nbsp;<a class=\\\"btn btn-primary btn-round\\\" title=\\\"${'commands.view' & t}\\\" click.delegate=dialogController.cancel() href=company/${model.companyId}/test/people/person/${model.id}>${'commands.view' & t}</a> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel() t=commands.cancel>Cancel</button> </ux-dialog-footer> </ux-dialog> </template> \";","import { addSlash } from 'common/utils/utility';\nimport { AgreementService } from '../../../admin/services/agreements/agreement-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable-pagination\";\nimport { PersonService } from \"../../services/people/person-service\";\nimport { Notification } from \"common/services/notification\";\nimport { Company } from \"models/companies/company\";\nimport { PersonDeleteModal } from \"./person-delete-modal\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from \"common/store/store-service\";\nimport { PersonLoginInfoModal } from \"./person-login-info-modal\";\nimport { FilteredReminderConfirmationModal } from \"./filtered-reminder-confirmation-modal\";\nimport { CompanyTestPlanService } from \"main/admin/services/test-management/company-test-plan-service\";\nimport { Wootric } from '../../../components/wootric';\nimport { OpenIdProfile } from 'models/security/open-id-profile';\nimport { SessionService } from 'common/services/session-service';\nimport { WootricComponentName } from \"models/wootric/WootricComponentName\";\nimport { Plan } from 'models/plans/plan';\nimport { PersonPredictorConfirmationModal } from './person-predictor-confirmation-modal'\nimport { TransactionService } from '../../../admin/services/talents/transaction-service';\nimport { SpendMode } from '../../../../models/plans/spendMode';\nimport { TransactionType } from 'models/talents/transaction-type';\nimport { Person } from 'models/test-person/person';\nimport { AgreementExpirationModal } from './agreement-expiration-modal';\nimport config from 'config.js';\n\n@autoinject()\nexport class PersonList {\n\n\tprivate logger: Logger;\n\tprivate params: any = {};\n\n\tpublic companyId: number;\n\tprivate profile: OpenIdProfile;\n\tprivate company: Company;\n\tprivate plan: Plan;\n\tprivate hasPredictorByPerson: boolean = false;\n\n\t// private ActivationMode = ActivationMode;\n\n\tprivate parameters: UxDatatableParameters = new UxDatatableParameters();\n\tprivate parametersAgreemnt: UxDatatableParameters = new UxDatatableParameters();\n\tprivate uxDatatable: UxDatatableCustomAttribute;\n\n\tprivate state: State;\n\tprivate isLoaded: boolean = false;\n\tprivate isResultsExport: boolean = false;\n\t// Network\n\tprivate imageAddr = \"https://s3.us-east-1.amazonaws.com/pro-s3-objectstore/488c1078-ace4-42c6-a5a5-c07b1955173f.png\" + \"?n=\" + Math.random();\n\tprivate startTime: number;\n\tprivate endTime: number;\n\t// kbps\n\tprivate downloadSize = 1000000;\n\tprivate download = new Image();\n  private random : number;\n\n  private hasTestControl : boolean = false;\n\n\tprivate refresh = async (): Promise<void | UxDatatableResponse> => {\n\t\tthis.logger.debug(\"refreshing\");\n\t\tlet search = this.parameters.search.Query;\n\t\tsessionStorage.setItem('personListSearch', search == null ? '' : search);\n\t\treturn await this.personService.list(this.parameters)\n\t\t\t.then((response: UxDatatableResponse) => {\n\t\t\t\treturn response;\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tthis.notification.error(error);\n\t\t\t});\n\t}\n\n\tconstructor(\n\t\tprivate store: StoreService,\n\t\tprivate personService: PersonService,\n\t\tprivate agreementService: AgreementService,\n\t\tprivate companyTestPlanService: CompanyTestPlanService,\n\t\tprivate dialogService: DialogService,\n\t\tprivate notification: Notification,\n\t\tprivate sessionService: SessionService,\n\t\tprivate transactionService: TransactionService,\n\t\tprivate wootric: Wootric) {\n\n\t\tthis.logger = LogManager.getLogger(\"PersonList\");\n\n\t\tthis.state = this.store.state;\n\t}\n\n\tprivate async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n\t\tthis.logger.debug(\"activate\");\n\t\tthis.parameters.search.Query = sessionStorage.getItem('personListSearch');\n\n\t\tthis.profile = await this.sessionService.getProfile();\n\t\tthis.wootric.attached(this.profile, WootricComponentName.personList);\n\n\t\tif (this.params.companyId != params.companyId && this.isLoaded) {\n\t\t\tthis.params = params;\n\t\t\treturn await this.bind();\n\t\t}\n\t\telse {\n\t\t\tthis.params = params;\n\t\t}\n\t}\n\n\tprivate async bind(): Promise<any> {\n\t\tthis.logger.debug(\"bind\");\n\n\t\tif (!isNaN(this.params.companyId)) {\n\t\t\tthis.logger.debug(\"activate companyId:\", this.params.companyId);\n\t\t\tthis.companyId = +this.params.companyId;\n\t\t\tif (this.companyId) {\n\n\t\t\t\tthis.personService.client.currentCompanyId = this.companyId;\n\t\t\t\tthis.companyTestPlanService.client.currentCompanyId = this.companyId;\n\t\t\t\tthis.company = this.state.companies.find(x => x.id == this.companyId);\n\n\t\t\t\tawait this.planByCompanyId(this.companyId);\n\n\t\t\t\tvar warning = await this.agreementService.getExpirationWarning(this.companyId);\n\t\t\t\tif (warning && warning.showExpirationWarning && !warning.hasSeen) {\n\t\t\t\t\tawait this.showAgreementExpirationModal();\n\t\t\t\t}\n\n\t\t\t\tthis.validateIsResultExport();\n\n\t\t\t\tthis.isLoaded = true;\n\n\t\t\t\tthis.random = Math.floor(Math.random() * 10);\n\t\t\t\t// Random para que valide el internet\n\t\t\t\tif (this.random == 2)\n\t\t\t\t\tthis.networkInfo();\n\n\t\t\t\treturn await this.databind();\n\t\t\t}\n\t\t}\n\t}\n\n\n\tprivate async databind(): Promise<void> {\n\t\tthis.logger.debug(\"databind\");\n\t\treturn await this.refresh()\n\t\t\t.then((response: UxDatatableResponse) => {\n\n\t\t\t\tthis.parameters.tableData = response.data;\n\t\t\t\tthis.parameters.totalRecords = response.totalRecords;\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tthis.notification.error(error);\n\t\t\t});\n\t}\n\n\tprivate async showAgreementExpirationModal(): Promise<any> {\n\t\treturn await this.dialogService.open({\n\t\t\tviewModel: AgreementExpirationModal,\n\t\t\tmodel: { companyId: this.companyId }\n\t\t});\n\t}\n\n\tprivate async getMore(scrollContext: any): Promise<void> {\n\t\treturn await this.uxDatatable.getMoreItems(scrollContext);\n\t}\n\n\tprivate async delete(item): Promise<void> {\n\t\treturn await this.dialogService.open({\n\t\t\tviewModel: PersonDeleteModal,\n\t\t\tmodel: item\n\t\t}).whenClosed(async (response: DialogCloseResult) => {\n\t\t\tif (!response.wasCancelled) {\n\n\t\t\t\treturn await this.personService.delete(item.id)\n\t\t\t\t\t.then(() => {\n\t\t\t\t\t\tlet indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(item.id.toString());\n\t\t\t\t\t\tthis.parameters.tableData.splice(indexOfEditedModel, 1);\n\t\t\t\t\t\tthis.notification.success(\"notifications.item_deleted\");\n\t\t\t\t\t})\n\t\t\t\t\t.catch(error => {\n\t\t\t\t\t\tthis.notification.error(error);\n\t\t\t\t\t});\n\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate async sendIndividualReminder(id: number): Promise<boolean> {\n\t\ttry {\n\t\t\tawait this.personService.sendReminder(id);\n\t\t\tthis.notification.success(\"main.test.pages.person.send_reminder\");\n\t\t\treturn true;\n\t\t}\n\t\tcatch (error) {\n\t\t\tthis.notification.error(error);\n\t\t}\n\n\t}\n\n\tprivate async sendFilteredReminder(): Promise<any> {\n\t\tlet personList = await this.personService.getListByFilter(this.parameters);\n\t\treturn await this.dialogService.open({\n\t\t\tviewModel: FilteredReminderConfirmationModal,\n\t\t\tmodel: personList.length\n\t\t}).whenClosed(async (response: DialogCloseResult) => {\n\t\t\tif (!response.wasCancelled) {\n\n\t\t\t\treturn await this.personService.sendRemindersByFilter(personList)\n\t\t\t\t\t.then(() => {\n\t\t\t\t\t\tthis.notification.success(\"main.test.pages.person.send_reminder_list\")\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate async viewLoginInfo(personId: number): Promise<any> {\n\n\t\treturn await this.dialogService.open({\n\t\t\tviewModel: PersonLoginInfoModal,\n\t\t\tmodel: personId\n\t\t}).whenClosed(async (response: DialogCloseResult) => {\n\t\t\tif (!response.wasCancelled) {\n\t\t\t\t// this.logger.debug(\"response.output\", response.output);\n\t\t\t\treturn await this.sendIndividualReminder(personId);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate async clearFilters(): Promise<any> {\n\t\tthis.parameters.search.Query = this.parameters.search.StartDate = this.parameters.search.EndDate = null;\n\t\tawait this.databind();\n\t}\n\n\tprivate async validateIsResultExport() {\n\t\ttry {\n\t\t\tthis.isResultsExport = await this.companyTestPlanService.isResultsExport();\n\t\t} catch (error) {\n\t\t\tthis.notification.error(error);\n\t\t}\n\t}\n\n\tprivate async planByCompanyId(companyId: number) {\n\t\ttry {\n      let plan =  await this.agreementService.robothunterByCompany(companyId);\n\n      if(plan != null)\n\t\t\t\tthis.plan = plan;\n\n\t\t\tconst companySettings = await this.agreementService.getTestControlCompanySettingsByCompanyId(companyId);\n      if(companySettings){\n\t\t\t\tthis.hasTestControl = companySettings.hasTestControl;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthis.notification.error(error);\n\t\t}\n\t}\n\n\tprivate async predictor(personId: number): Promise<any> {\n    let predictorTalents = await this.personService.getPredictorTalentsConsumption(personId,TransactionType.Predictor);   \n\n    if(predictorTalents > 0) {\n\t\t\treturn await this.dialogService.open({\n\t\t\t\tviewModel: PersonPredictorConfirmationModal,\n\t\t\t\tmodel: predictorTalents\n\t\t\t}).whenClosed(async (response: DialogCloseResult) => {\n\t\t\t\tif (!response.wasCancelled)\n\t\t\t\t\tawait this.toPredictor(personId);\n\t\t\t});\n\t\t}\n\n\t\tawait this.toPredictor(personId);\n\t}\n\n\tprivate async toPredictor(personId: number): Promise<void> {\n\t\ttry {\n\t\t\t//  await this.personService.predictorConsumption(personId,TransactionType.Predictor);\n\t\t\tlet testReportsUrl = config.URLS_PREDICTOR;\n\t\t\tconst url = addSlash(testReportsUrl) + `dashboard/${this.companyId}/${personId}`;\n\t\t\twindow.open(url, \"_blank\");\n\t\t} catch (error) {\n\t\t\tthis.notification.error(error.error);\n\t\t}\n\t}\n  public networkInfo(){\n    this.download.onload = () =>{\n\t\t\tthis.endTime = (new Date()).getTime();\n\t\t\tthis.showNetworkResults();\n\t\t}\n\t\tthis.startTime = (new Date()).getTime();\n\t\tthis.download.src = this.imageAddr;\n\t}\n    public showNetworkResults(): any{  \n\t\tlet speedBps: number;\n\t\tlet speedKbps: number;\n\t\tlet duration = (this.endTime - this.startTime) / 1000;\n\t\tlet bitsLoaded = this.downloadSize * 8;\n\t\t// Valores de carga de la imagen\n\t\tspeedBps = Number((bitsLoaded / duration).toFixed(2));\n\t\tspeedKbps = Number((speedBps / 1024).toFixed(2));\n\t\tlet speedMbps = Number((speedKbps / 1024).toFixed(2));\n\t\t// Validacion a 0.5 Mbps de navegacion.\n\t\tif (speedMbps < 5)\n\t\t\tthis.notification.warning(\"main.test.pages.person.network_speed\");\n\t}\n\n\n}\n","import { AuthorizationService } from 'aurelia-permission';\n\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class PersonListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n\n    this.logger = LogManager.getLogger(\"PersonListChildRouter\");\n  }\n\n  public configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./person-list\"),\n        name: \"people\",\n      },\n\n      {\n        route: \"bulk-activations\",\n        moduleId: PLATFORM.moduleName(\"../bulk-activation/bulk-activation-list-child-router\"),\n        name: \"bulk-activation-list-child-router\",        \n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.bulk_activations.bulks\"),\n      },\n\n      {\n        route: \"create\",\n        moduleId: PLATFORM.moduleName(\"./person-activation-create\"),\n        name: \"person-activation-create\",\n        nav: true,\n        title: this.i18n.tr(\"main.testperson.pages.persons_activation.title\"),\n      },   \n\n      {\n        route: \"person/:personId\",\n        moduleId: PLATFORM.moduleName(\"./person-child-router\"),\n        name: \"person-child-router\",\n      },   \n\n      {\n        route: \"person-observation/:observedId?\",\n        moduleId: PLATFORM.moduleName(\"../observation/observation-child-router\"),\n        name: \"observation-child-router\",\n      },\n\n      {\n        route: \"bulk-observation\",\n        moduleId: PLATFORM.moduleName(\"../bulk-observation/bulk-observation-child-router\"),\n        name: \"bulk-observation-child-router\",\n      },\n\n      {\n        route: \"homologation/:personId/:activationId?\",\n        moduleId: PLATFORM.moduleName(\"../homologation/homologation-child-router\"),\n        name: \"homologation-child-router\",\n        title: this.i18n.tr(\"main.testperson.pages.homologation_activation.title\")\n      },\n      {\n        route: \"bulk-results-export\",\n        moduleId: PLATFORM.moduleName(\"../bulk-results-export/bulk-results-export-child-router\"),\n        name: \"bulk-results-export-child-router\",\n        title: this.i18n.tr(\"main.admin.pages.plans.test_plan_items.export_results_card.title\")\n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","module.exports = \"<template> <require from=../../../components/three-tags.html></require> <require from=../../../../models/test-person/personActivationTypeViewEngineHooks></require> <h2> ${'main.test.pages.people.title' & t} </h2> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.test.pages.people.info' & t} </p> </div> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-pagination-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-pagination-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-pagination-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-pagination-info> </div> <div class=\\\"col-md-4 col-12 text-right\\\" if.bind=\\\"parameters.search.Query || parameters.search.StartDate || parameters.search.EndDate\\\"> <button class=\\\"btn btn-link\\\" click.delegate=sendFilteredReminder()> <i class=material-icons>email</i> ${'main.test.pages.people.send_filtered_reminder' & t} </button> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <a class=\\\"btn btn-link collapse-header\\\" data-toggle=collapse href=#collapseMoreFilterOptions role=button aria-expanded=false aria-controls=collapseMoreFilterOptions> <i class=material-icons>chevron_right</i> ${'commons.more_filter_options' & t} </a> </div> <div class=\\\"col-md-4 col-12\\\" if.bind=\\\"parameters.search.Query || parameters.search.StartDate || parameters.search.EndDate\\\" global-permission-show=\\\"can: TestPersonUpdate\\\"> <button class=\\\"btn btn-link\\\" click.delegate=clearFilters()> <i class=material-icons>clear</i> ${'commons.clear_filters' & t} </button> </div> </div> <div class=collapse id=collapseMoreFilterOptions> <div class=row> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=startDate t=commons.start_date>Start_Date</label> <ux-date-picker value.bind=parameters.search.StartDate change.delegate=\\\"databind() & debounce:100\\\" id=startDate></ux-date-picker> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=endDate t=commons.end_date>Start_Date</label> <ux-date-picker value.bind=parameters.search.EndDate change.delegate=\\\"databind() & debounce:100\\\" id=endDate></ux-date-picker> </div> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\"> <div class=row> <div class=\\\"col-md-1 col-3 mb-2\\\"> <disc-avatar size.bind=36 disc.bind=item.highestDisc picture-url.bind=item.pictureUrl initials.bind=item.initials></disc-avatar> </div> <div class=\\\"col-md-3 col-9 text-truncate minh-40 mb-2\\\"> <a title=${item.fullName} route-href=\\\"route: person-child-router; params.bind: {personId:item.id}\\\"> ${item.fullName} </a> <br/> <small class=text-mutted>${item.email}</small> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'main.testperson.pages.person.activation_date' & t}</small></label> ${item.createdOn | dateTimeFormat}</div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block><small class=text-muted>${'main.testperson.pages.person.evaluator' & t}</small></label> <span title=${item.createdByName}>${item.createdByName}</span> </div> <div class=\\\"col-md-2 col-12 minh-90\\\"> <label class=d-block><small class=text-muted>${'main.testperson.pages.person.tags' & t}</small></label> <three-tags tags.bind=item.tags></three-tags> </div> <div class=\\\"col-md-2 col-12 pull-right vertical-align\\\"> <a href=# if.bind=plan.isRobotHunter title=\\\"${'main.testperson.pages.person.view_predictor' & t}\\\" click.delegate=predictor(item.id)> <img class=mb-3 src=\" + require(\"../../../../../assets/images/logo-tht-blue.svg\") + \" width=24 height=24 alt=predictor /> </a> <a if.bind=item.hasResume title=\\\"${'main.test.pages.people.resume' & t}\\\" href=company/${companyId}/test/people/person/${item.id}/resume role=button> <i class=material-icons>work</i> </a> <a if.bind=item.hasVideoInterview title=\\\"${'main.test.pages.people.people_videointerview_edit.video_interview' & t}\\\" href=company/${companyId}/test/people/person/${item.id}/videointerview role=button> <span class=\\\"appcomponenticons icon-video_background_blue\\\"></span> <span class=material-icons> videocam </span> </a> <a title=\\\"${'main.testperson.pages.person.view_reports' & t}\\\" href=\\\"company/${companyId}/test-reports/reports?personId=${item.id}\\\" role=button> <i class=material-icons>assessment</i> </a> <a href=# if.bind=item.email global-permission-show=\\\"can: TestPersonUpdate\\\" click.delegate=sendIndividualReminder(item.id) title.bind=\\\"'commands.send' & t\\\" role=button> <i class=material-icons>email</i> </a> <a href=# click.delegate=viewLoginInfo(item.id) title.bind=\\\"'commands.link' & t\\\" role=button> <i class=material-icons>link</i> </a> <a href=# global-permission-show=\\\"can: TestPersonDelete\\\" click.delegate=delete(item) title.bind=\\\"'commands.archive' & t\\\" role=button> <i class=material-icons>archive</i> </a> <a title=\\\"${'main.testperson.pages.person.view_email_history' & t}\\\" href=company/${companyId}/test/people/person/${item.id}/emailhistory role=button> <img class=mb-3 src=\" + require(\"../../../../../assets/images/notification-icon.svg\") + \" width=19 height=19 alt=invitation /> </a> <a if.bind=\\\"hasTestControl && item.hasTestControlInfo\\\" href=company/${companyId}/test/people/person/${item.id}/testcontrol title.bind=\\\"'main.test.pages.people.has_test_control' & t\\\" role=button> <img class=mb-3 src=\" + require(\"../../../../../assets/images/tht_photo_check_match.svg\") + \" width=21 height=21 alt=\\\"test control\\\"/> </a> </div> </div> </li> </ul> <br> <ux-datatable-pagination-selector parameters.bind=parameters input-classes=form-control on-refresh.bind=refresh> </ux-datatable-pagination-selector> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.person.create_card.title' & t} </h5> <p t=[html]main.testperson.pages.person.create_card.info>Create new person</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: person-activation-create;\\\">${'commands.create' & t}</a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonBulkView\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.person_masive_activation.create_card.title' & t} </h5> <p t=[html]main.testperson.pages.person_masive_activation.create_card.info>Create new bulk activation </p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: bulk-activation-list-child-router;\\\" t=commands.view>Bulk Activation</a> <a class=\\\"btn btn-primary btn-round\\\" title=\\\"${'main.testperson.pages.masive_activation.list_create_card_command' & t}\\\" href=company/${companyId}/test/people/bulk-activations/create> ${'main.testperson.pages.masive_activation.list_create_card_command' & t} </a> </div> </div> </div> </div> <div if.bind=isResultsExport class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonBulkResultsExportCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.admin.pages.plans.test_plan_items.export_results_card.title' & t} </h5> <p t=[html]main.admin.pages.plans.test_plan_items.export_results_card.info>Create new results export </p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: bulk-results-export-child-router\\\" t=main.admin.pages.plans.test_plan_items.export_results_card.title>Export</a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonObservationCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.person_observation_activation.create_card.title' & t} </h5> <p t=[html]main.testperson.pages.person_observation_activation.create_card.info>Create new activation by observation</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: observation-child-router; params.bind: {observedId:'create'}\\\" t=main.testperson.pages.person_observation_activation.create_card.create>Activation by Observation</a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonObservationCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.test.pages.bulk_observation.create_card.title' & t} </h5> <p t=[html]main.test.pages.bulk_observation.create_card.info>Crear nueva activación masiva por observación</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: bulk-observation-child-router;\\\" t=commands.view>Bulk Observation</a> <a class=\\\"btn btn-primary btn-round\\\" title=\\\"${&apos;main.test.pages.bulk_observation.create_card.create&apos; & t}\\\" href=company/${companyId}/test/people/bulk-observation/create t=main.test.pages.bulk_observation.create_card.create>Create</a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonHomologationCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testperson.pages.homologation_activation.title' & t} </h5> <p t=[html]main.testperson.pages.homologation_activation.tab_basic>Create new activation by homologation</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: homologation-child-router; params.bind: {personId:'create', activationId:'create'}\\\" t=main.testperson.pages.homologation_activation.title>Activation by homologation</a> </div> </div> </div> </div> </div> </div> </template> \";","import { PersonService } from 'main/test/services/people/person-service';\nimport { Notification } from 'common/services/notification';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Person } from \"models/test-person/person\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { PersonLoginInfo } from 'models/test-person/person-login-info';\nimport config from 'config.js';\n\n@autoinject()\nexport class PersonLoginInfoModal {\n\n  private logger: Logger;\n  private personId: number;\n\n  // private model: Person = new Person();\n  private loginInfo: PersonLoginInfo;\n\n  private micrositeUrl: string = null;\n  private directLoginUrl: string = null;\n  private directLoginUrlElement: HTMLElement;\n\n  constructor(\n    private dialogController: DialogController,\n    private personService: PersonService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"PersonLoginInfoModal\");\n\n\n    let micrositeUrl = config.URLS_MICROSITE;\n    this.micrositeUrl = micrositeUrl;\n  }\n\n  public async activate(personId: number): Promise<any> {\n    this.logger.debug(\"activate\", personId);\n    this.personId = personId;\n\n    // this.model = person;\n\n    try {\n      this.loginInfo = await this.personService.getLoginInfoById(personId);\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private focus() {\n    if (this.directLoginUrlElement) {\n      this.directLoginUrlElement.focus();\n    }\n  }\n\n  private async regeneratePassword() {\n    try {\n      await this.personService.regeneratePassword(this.personId)\n      .then((response) => {\n        this.loginInfo = response;\n        this.notification.success(\"main.test.pages.person.login_info.regenerate_password_successful\");\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n}\n","module.exports = \"<template> <ux-dialog class=person-login-info-modal> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2 class=mb-4> ${'main.test.pages.person.login_info.title' & t} </h2> <div class=row> <div class=col-12> <dl class=row> <dt class=col-sm-3>${'main.test.pages.person.login_info.user_name' & t}</dt> <dd class=col-sm-9>${loginInfo.userName}</dd> <dt if.bind=loginInfo.password class=col-sm-3>${'main.test.pages.person.login_info.password' & t }</dt> <dd if.bind=loginInfo.password class=col-sm-9>${loginInfo.password}</dd> <dt class=\\\"col-12 col-md-3 d-flex align-items-center\\\">${'main.test.pages.person.login_info.activation_url' & t }</dt> <dd class=\\\"col-12 col-md-9\\\"> <div class=input-group> <input type=text class=form-control value.bind=loginInfo.loginUrl ref=directLoginUrlElement readonly=readonly style=min-width:400px;overflow-x:auto;white-space:nowrap> </div> </dd> </dl> </div> </div> <div class=\\\"form-group text-right mt-4\\\"> <button global-permission-show=\\\"can: UserRegeneratePassword\\\" if.bind=!loginInfo.password class=\\\"btn btn-primary btn-round me-2\\\" click.delegate=regeneratePassword()> <i class=material-icons>refresh</i> ${'main.test.pages.person.login_info.regenerate_password' & t} </button> <button class=\\\"btn btn-primary btn-round me-2\\\" ux-clipboard=${loginInfo.loginUrl} click.delegate=focus()> <i class=\\\"material-icons me-1\\\">content_copy</i> ${'commands.copy' & t} </button> <button if.bind=loginInfo.email class=\\\"btn btn-primary btn-round me-2\\\" click.delegate=dialogController.ok()> <i class=material-icons>email</i> ${'commands.send_email' & t} </button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()> ${'commands.cancel' & t} </button> </div> </ux-dialog-body> </ux-dialog> </template> \";","import { DialogController } from \"aurelia-dialog\";\nimport { autoinject } from \"aurelia-framework\";\n\n@autoinject()\nexport class PersonPredictorConfirmationModal {\n\n  private predictorTalents: number;\n\n  constructor(private dialogController: DialogController) {\n  }\n\n  public async activate(predictorTalents: number) { \n    this.predictorTalents = predictorTalents;  \n  }\n\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2> ${'main.testperson.pages.persons_predictor.title' & t} </h2> <p t=main.test.pages.people.send_person_activation_talents_confirmation t-params.bind=\\\"{talentsPrice: predictorTalents}\\\">talents</p> </ux-dialog-body> <ux-dialog-footer> <button attach-focus=true class=\\\"btn btn-primary btn-round\\\" click.delegate=dialogController.ok() t=commands.accept>Accept</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel() t=commands.cancel>Cancel</button> </ux-dialog-footer> </ux-dialog> </template> \";","import { DialogService } from \"aurelia-dialog\";\nimport { EventAggregator, Subscription } from \"aurelia-event-aggregator\";\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { I18N } from 'aurelia-i18n';\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { ControllerValidateResult, ValidationController, ValidationControllerFactory, ValidationRules } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport config from 'config.js';\nimport { SuccessRegistrationModal } from \"main/components/success-registration-modal\";\nimport { PublicPersonService } from \"main/test/services/people/public-person-service\";\nimport { CatalogBase } from \"models/catalogs/catalog-base\";\nimport { Language } from \"models/localizations/language\";\nimport { Languages } from 'models/localizations/languages';\nimport { OpenIdProfile } from 'models/security/open-id-profile';\nimport { QuestionaryGroup } from \"models/test-management/questionary-groups/questionaryGroup\";\nimport { Activation } from \"models/test-person/activation\";\nimport { Person } from \"models/test-person/person\";\nimport { PersonActivationType } from \"models/test-person/personActivationType\";\nimport { PersonMode } from \"models/test-person/personMode\";\nimport { Report } from 'models/test-reports/reports/report';\n\n\ninterface DisableSetMap {\n    [questionary: string]: boolean;\n}\n\n@autoinject()\nexport class PublicPersonForm {\n\n    private logger: Logger;\n    private countries: CatalogBase[] = [];\n    private host: string;\n    public companyId: number;\n    private profile: OpenIdProfile;\n    private languages: Language[];\n    private model: Person = new Person();\n    private validationController: ValidationController;\n\n    // Token and validation state\n    private activationToken: string = '';\n    private isTokenValid: boolean = false;\n    private isLoadingToken: boolean = true;\n    private tokenErrorMessage: string = '';\n    private canSave: boolean = false;\n    \n    // reCAPTCHA v2 state\n    private recaptchaToken: string = '';\n    private isRecaptchaLoaded: boolean = false;\n    private recaptchaWidgetId: number | null = null;\n    private report: Report = new Report();\n    private recaptchaSiteKey: string = '';\n    constructor(\n        private publicPersonService: PublicPersonService,\n        private notification: Notification,\n        private validationControllerFactory: ValidationControllerFactory,\n        protected ea: EventAggregator,\n        private router: Router,\n        private i18n: I18N,\n        private dialogService: DialogService\n    ) {\n\n        this.validationController = this.validationControllerFactory.createForCurrentScope();\n        this.validationController.addRenderer(new BootstrapFormRenderer());\n\n        this.logger = LogManager.getLogger(\"PersonActivationCreate\");\n\n        let backendUrl = config.URLS_BACKEND;\n\n        this.host = backendUrl + \"/modules/localization/assets/images/flags/\";\n    }\n\n    public configureValidationRules(): void {\n        this.logger.info(\"configureValidationRules\");\n        ValidationRules\n            .ensure(\"firstName\").displayName(\"main.test.pages.people.first_name\").required()\n            .ensure(\"lastName\").displayName(\"main.test.pages.people.last_name\").required()\n            .ensure(\"email\").displayName(\"main.test.pages.people.email\").email().required()\n            .on(this.model);\n\n        ValidationRules\n            .ensure(\"reportTemplateId\").displayName(\"main.test_reports.pages.reports.report_template\").required()\n            .ensure(\"discType\").displayName(\"main.test_reports.pages.reports.discType.title\").required()\n            .ensure(\"zeroOrOnepositionId\").displayName(\"main.test_reports.pages.reports.parameters.ZeroOrOnePosition\").maxItems(1)\n            .ensure(\"positionId\").displayName(\"main.test_reports.pages.reports.parameters.Position\").required()\n            .ensure(\"teamId\").displayName(\"main.test_reports.pages.reports.parameters.Team\").required()\n            .ensure(\"organizationId\").displayName(\"main.test_reports.pages.reports.parameters.Organization\").required()\n            .ensure(\"positionIds\").displayName(\"main.test_reports.pages.reports.parameters.Positions\").required().minItems(1).maxItems(1000)\n            .ensure(\"compareToPositionId\").displayName(\"main.test_reports.pages.reports.parameters.ComparePosition\").required()\n            .ensure(\"compareToTeamId\").displayName(\"main.test_reports.pages.reports.parameters.CompareTeam\").required()\n            .ensure(\"compateToOrganizationId\").displayName(\"main.test_reports.pages.reports.parameters.CompareOrganization\").required()\n            .ensure(\"compareToPersonId\").displayName(\"main.test_reports.pages.reports.parameters.ComparePerson\").required()\n            .ensure(\"personId\").displayName(\"main.test_reports.pages.reports.parameters.Person\").required()\n            .ensure(\"personId\").displayName(\"main.test_reports.pages.reports.parameters.Leader\").required()\n            .ensure(\"peopleIds\").displayName(\"main.test_reports.pages.reports.parameters.People\").required().minItems(1)\n            .ensure(\"oneOrTwoPeopleIds\").displayName(\"main.test_reports.pages.reports.parameters.OneOrTwoPeople\").required().minItems(1).maxItems(2)\n            .ensure(\"twoPeopleIds\").displayName(\"main.test_reports.pages.reports.parameters.TwoPeople\").required().minItems(2)\n            .ensure(\"threePeopleIds\").displayName(\"main.test_reports.pages.reports.parameters.ThreePeople\").required().minItems(1).maxItems(3)\n            .ensure(\"observerIds\").displayName(\"main.test_reports.pages.reports.parameters.Observers\").required().minItems(1).maxItems(1000)\n            .on(this.report);\n    }\n\n    public async activate(params: any): Promise<any> {\n        this.logger.info(\"Activating PublicPersonForm\");\n\n        // Validate token first and wait for it to complete\n        await this.validateActivationToken();\n\n        // Load data if token is valid\n        if (this.isTokenValid) {\n            try {\n                this.countries = await this.publicPersonService.getCountries();\n\n                if (!isNaN(params.companyId)) {\n                    this.companyId = +params.companyId;\n                    this.model.companyId = this.companyId;\n                }\n\n                this.model.activation = new Activation();\n                this.model.activation.personActivationType = PersonActivationType.Normal;\n\n                this.configureValidationRules();\n                this.canSave = true;\n            } catch (error) {\n                this.logger.error('Failed to load initial data:', error);\n                // Let normal error handling take care of this\n                this.canSave = false;\n            }\n        } else {\n            this.canSave = false;\n        }\n\n        this.isLoadingToken = false;\n        \n        // Load reCAPTCHA v2 after component is initialized\n        this.loadRecaptcha();\n    }\n\n    private async validateActivationToken(): Promise<void> {\n        const urlParams = new URLSearchParams(window.location.search);\n        this.activationToken = urlParams.get('token') || '';\n\n        if (!this.activationToken.trim()) {\n            this.tokenErrorMessage = this.i18n.tr('main.test.pages.people.public_person_form.invalid_activation_link');\n            this.isTokenValid = false;\n            return;\n        }\n\n        try {\n            this.logger.info('Validating activation token with backend');\n            const response = await this.publicPersonService.validateToken(this.activationToken);\n\n            // Switch i18n locale to the culture resolved server-side from the\n            // token (same mechanism used in app.ts after loading the user profile)\n            // so error messages and the form UI are shown in the proper language.\n            if (response && response.culture) {\n                await this.i18n.setLocale(response.culture);\n            }\n\n            if (response && response.isValid) {\n                this.isTokenValid = true;\n                this.tokenErrorMessage = '';\n                if (response.recaptchaSiteKey) {\n                    this.recaptchaSiteKey = response.recaptchaSiteKey;\n                }\n                if (response.companyLogoUrl) {\n                    this.ea.publish('public-company-logo-changed', response.companyLogoUrl);\n                    setTimeout(() => {\n                        this.ea.publish('public-company-logo-changed', response.companyLogoUrl);\n                    }, 100);\n\n                    setTimeout(() => {\n                        this.ea.publish('public-company-logo-changed', response.companyLogoUrl);\n                    }, 1000);\n                                    }\n            } else {\n                this.isTokenValid = false;\n                const messageKey = (response && response.message)\n                    ? response.message\n                    : 'main.test.pages.people.public_person_form.invalid_activation_link';\n                this.tokenErrorMessage = this.i18n.tr(messageKey);\n            }\n\n        } catch (error) {\n            this.logger.error('Token validation failed:', error);\n            this.isTokenValid = false;\n            this.tokenErrorMessage = this.i18n.tr('main.test.pages.people.public_person_form.invalid_activation_link');\n        }\n    }\n\n    private checkUndefined(obj: Object, prop: string): string {\n        return obj[prop] == undefined ? '' : obj[prop];\n    }\n\n    public async submit(keepEditing: boolean): Promise<void> {\n        this.logger.info(\"submit\");\n        \n        // Check reCAPTCHA v2 before validation\n        if (this.isRecaptchaLoaded && !this.recaptchaToken) {\n            this.notification.error(this.i18n.tr('main.test.pages.people.public_person_form.recaptcha_required'));\n            return;\n        }\n\n        return await this.validationController.validate()\n            .then(async (result: ControllerValidateResult) => {\n                if (result.valid) {\n                    return await this.save();\n                }\n            })\n            .catch(error => {\n                this.notification.error(error);\n            });\n    }\n\n    private concatenatePhone() {\n\n        if ((this.model.phone != null && this.model.phone != '') && !isNaN(this.model.indicativeCountry)) {\n            let country = this.countries.filter(f => f.id === this.model.indicativeCountry);\n            this.model.phone = \"(\" + country[0].phoneCode + \")\" + this.model.phone\n        }\n\n    }\n\n    private async save(): Promise<any> {\n        try {\n            this.concatenatePhone();\n            this.canSave = false;\n\n            if (this.model) {\n                \n                this.model = await this.publicPersonService.createPublicPerson(this.model, this.activationToken, this.recaptchaToken);\n                await this.showSuccessModal();\n            }\n        }\n        catch (error) {\n            this.logger.error('Registration failed:', error);\n            this.notification.error(this.i18n.tr('main.test.pages.people.public_person_form.invalid_activation_link'));\n            this.isTokenValid = false;\n            this.tokenErrorMessage = this.i18n.tr('main.test.pages.people.public_person_form.invalid_activation_link');\n\n        } finally {\n            this.canSave = this.isTokenValid;\n        }\n    }\n\n    private async showSuccessModal(): Promise<void> {\n        try {\n            await this.dialogService.open({\n                viewModel: SuccessRegistrationModal\n            }).whenClosed();\n\n        } catch (error) {\n            this.logger.error('Failed to show success modal:', error);\n            this.redirectToMicrosite();\n        }\n    }\n\n    private redirectToMicrosite(): void {\n        // Redirect to microsite instead of login\n        const micrositeUrl = this.companyId ? \n            `/microsite?companyId=${this.companyId}` : \n            '/microsite';\n        \n        this.router.navigate(micrositeUrl);\n    }\n\n    public notificationInfo(message: string) {\n        this.notification.info(message);\n    }\n    \n    private loadRecaptcha(): void {\n        // Resolve current UI locale so reCAPTCHA renders its texts in the\n        // same language as the form (set previously via this.i18n.setLocale).\n        const locale = (this.i18n && this.i18n.getLocale()) ? this.i18n.getLocale() : 'es';\n        const hl = encodeURIComponent(locale);\n\n        // Load reCAPTCHA v2 script\n        if (typeof (window as any).grecaptcha === 'undefined') {\n            const script = document.createElement('script');\n            script.src = `https://www.google.com/recaptcha/api.js?onload=onRecaptchaLoad&render=explicit&hl=${hl}`;\n            script.async = true;\n            script.defer = true;\n            \n            // Define global callback for reCAPTCHA v2\n            (window as any).onRecaptchaLoad = () => {\n                this.renderRecaptchaWidget();\n            };\n            \n            script.onerror = () => {\n                this.logger.error('Failed to load reCAPTCHA v2');\n            };\n            document.head.appendChild(script);\n        } else {\n            this.renderRecaptchaWidget();\n        }\n    }\n    \n    private renderRecaptchaWidget(): void {\n        const container = document.getElementById('recaptcha-widget');\n        if (container && typeof (window as any).grecaptcha !== 'undefined') {\n            try {\n                const siteKey = this.recaptchaSiteKey;\n                this.recaptchaWidgetId = (window as any).grecaptcha.render('recaptcha-widget', {\n                    'sitekey': siteKey,\n                    'callback': (token: string) => {\n                        this.recaptchaToken = token;\n                        this.logger.info('reCAPTCHA v2 token received');\n                    },\n                    'expired-callback': () => {\n                        this.recaptchaToken = '';\n                        this.logger.warn('reCAPTCHA v2 token expired');\n                    },\n                    'error-callback': () => {\n                        this.recaptchaToken = '';\n                        this.logger.error('reCAPTCHA v2 error occurred');\n                    }\n                });\n                this.isRecaptchaLoaded = true;\n                this.logger.info('reCAPTCHA v2 widget rendered successfully');\n            } catch (error) {\n                this.logger.error('Failed to render reCAPTCHA v2 widget:', error);\n            }\n        }\n    }\n    \n    private resetRecaptcha(): void {\n        if (this.isRecaptchaLoaded && this.recaptchaWidgetId !== null && typeof (window as any).grecaptcha !== 'undefined') {\n            (window as any).grecaptcha.reset(this.recaptchaWidgetId);\n            this.recaptchaToken = '';\n        }\n    }\n\n}\n","module.exports = \"<template> <require from=../../../../models/test-person/personModeViewEngineHooks></require> <require from=../../../../models/test-person/questionaryWayViewEngineHooks></require> <require from=../../../../models/test-person/whoCanSeeReportViewEngineHooks></require> <require from=../../../../models/test-perfiltic/difficultyViewEngineHooks></require> <require from=../../../test-reports/components/report-parameter></require> <require from=../people-competence/competence-activation-selector></require> <require from=../../../components/multiselect-tht></require> <div if.bind=isLoadingToken class=\\\"text-center mt-5\\\"> <div class=\\\"spinner-border text-primary\\\" role=status> <span class=sr-only>${'main.test.pages.people.public_person_form.validating_link' & t}</span> </div> <p class=mt-3>${'main.test.pages.people.public_person_form.validating_link' & t}</p> </div> <div if.bind=\\\"!isLoadingToken && !isTokenValid\\\" class=\\\"alert alert-danger mt-4\\\" role=alert> <h4 if.bind=\\\"tokenErrorMessage == ''\\\" class=alert-heading>${'main.test.pages.people.public_person_form.invalid_activation_link' & t}</h4> <h4 if.bind=\\\"tokenErrorMessage != ''\\\" class=alert-heading>${tokenErrorMessage}</h4> <hr> <p class=mb-0>${'main.test.pages.people.public_person_form.contact_administrator' & t}</p> </div> <div if.bind=\\\"!isLoadingToken && isTokenValid\\\" style=transform:scale(1.1)> <div class=container> <div class=\\\"row justify-content-center mt-4\\\"> <div class=\\\"col-12 col-md-8 col-lg-6\\\"> <h2 class=\\\"text-center mb-4\\\"> ${'main.testperson.pages.persons_activation_url.title' & t} </h2> </div> </div> <div class=\\\"row justify-content-center\\\"> <div class=\\\"col-12 col-md-8 col-lg-6\\\"> <form class=\\\"content-main w-100\\\"> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.firstName>${'main.test.pages.people.first_name' & t} *</label> <input type=text class=form-control id=model.firstName t=[placeholder]main.test.pages.people.first_name value.bind=\\\"model.firstName & validate\\\"> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.lastName>${'main.test.pages.people.last_name' & t} *</label> <input type=text class=form-control id=model.lastName t=[placeholder]main.test.pages.people.last_name value.bind=\\\"model.lastName & validate\\\"> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.document>${'main.test.pages.people.document' & t}</label> <input type=text class=form-control id=model.document t=[placeholder]main.test.pages.people.document value.bind=\\\"model.document & validate\\\"> </div> </div> <div class=\\\"col-12 col-md-6\\\"> <div class=form-group> <label for=model.email>${'main.test.pages.people.email' & t} *</label> <input type=text class=form-control id=model.email t=[placeholder]main.test.pages.people.email value.bind=\\\"model.email & validate\\\"> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-sm-6 col-md-3\\\"> <div class=form-group> <label for=model.indicativeCountry>${'main.test.pages.people.indicative' & t}</label> <select class=form-control id=model.indicativeCountry value.bind=\\\"model.indicativeCountry & validate\\\"> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of countries\\\" model.bind=option.id> ${option.name} </option> </select> </div> </div> <div class=\\\"col-12 col-sm-6 col-md-9\\\"> <div class=form-group> <label for=model.phone>${'main.test.pages.people.phone' & t}</label> <input type=text class=form-control id=model.phone t=[placeholder]main.test.pages.people.phone value.bind=\\\"model.phone & validate\\\"> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> </form> </div> </div> <div class=\\\"row justify-content-center mt-3\\\" if.bind=canSave> <div class=col-auto> <div id=recaptcha-widget style=\\\"transform:scale(.8);transform-origin:bottom center\\\"></div> </div> </div> <div class=\\\"row justify-content-center mt-3\\\" if.bind=canSave> <div class=col-auto> <button class=\\\"mb-2 btn btn-primary btn-round\\\" type=submit click.delegate=submit(false) disabled.bind=\\\"!canSave || !recaptchaToken\\\"> <span if.bind=!canSave class=\\\"spinner-border spinner-border-sm me-2\\\" role=status></span> ${'commands.activate' & t} </button> </div> </div> <div class=\\\"row justify-content-center mt-2\\\"> <div class=\\\"col-12 col-md-8 col-lg-6\\\"> <small class=\\\"form-text text-muted text-center d-block\\\"> ${'main.test.pages.people.public_person_form.agreement_text' & t} </small> </div> </div> </div> </div> </template> \";","import { DialogController } from 'aurelia-dialog';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { PositionCompetence } from \"models/test-position/positionCompetence\";\nimport { PositionCompetenceService } from \"main/test/services/position/position-competence-service\";\nimport { CompanyCompetence } from \"../../../../models/test-core/competences/company-competence\";\nimport { DichotomousCouple } from \"../../../../models/test-core/competences/dichotomous-couple\";\nimport { CompanyCompetenceService } from 'main/admin/services/test-management/company-competence-service';\nimport { Tests } from 'models/test-person/tests';\nimport { CoreCompanyService } from 'main/admin/services/companies/core-company-service';\n@autoinject()\nexport class PositionCompetenceEditModal {\n\n  private logger: Logger;\n  public companyId: number;\n\n  private positionCompetenceId: number;\n  private selectedCompetenceName: string;\n  private dichotomousCouples: DichotomousCouple[] = [];\n\n  private model: PositionCompetence = new PositionCompetence();\n  private validationController: ValidationController;\n\n  private competences: CompanyCompetence[] = [];\n  private questionaryId: number;\n  private competenceDescription: string;\n  private directCompetenceValue: number = 0;\n\n  constructor(\n    private router: Router,\n    private dialogController: DialogController,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private positionCompetenceService: PositionCompetenceService,\n    private companyCompetenceService: CompanyCompetenceService,\n    private coreCompanyService: CoreCompanyService\n  ) {\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"PositionCompetenceEditModal\");\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"companyCompetenceId\").displayName(\"main.test.pages.position.position_competence_edit.competence\").required()\n      .ensure(\"complementaryName\").displayName(\"main.test.pages.position.position_competence_edit.complementary_name\").required()\n      .on(this.model);\n  }\n\n  public async activate(params: any): Promise<any> {\n\n    this.positionCompetenceId = params.id;\n    this.companyId = params.companyId;\n\n    this.logger.debug(\"activate\", this.positionCompetenceId);\n    // this.positionCompetenceService.client.currentCompanyId = this.companyId;\n\n    if (this.positionCompetenceId) {\n      this.model = await this.getItem();      \n      this.directCompetenceValue = this.model.directCompetenceValue;\n      this.competences = await this.getCompetences();\n      this.fillCompetenceData();\n      this.configureValidationRules();\n    }\n    else {\n      \n      this.model.positionId = +params.positionId;\n      this.competences = await this.getCompetences();\n      this.fillCompetenceData();\n      this.configureValidationRules();\n    }\n  }\n\n  // private onChangeVal(itm) {\n  //   if (itm.value < 60) return 60;\n  //   if (itm.value > 100) return 100;\n  //   return itm.value;\n  // }\n\n  private fillCompetenceData() {\n    const { companyCompetenceId: competenceId, dichotomousCouples } = this.model;\n    this.changeSelectedCompetence(competenceId);\n    dichotomousCouples.forEach(ittm => {\n      let dc = this.dichotomousCouples.find(itm => itm.id === ittm.id);\n      if (dc) {\n        dc.value = ittm.value;\n      }\n\n    });\n  }\n\n  private async getItem(): Promise<PositionCompetence> {\n    return await this.positionCompetenceService.getById(this.positionCompetenceId)\n  }\n\n  private async getCompetences(): Promise<CompanyCompetence[]> {\n    // return await this.positionCompetenceService.getAllCompetences();\n    let settings = await this.coreCompanyService.getSettingsById(this.companyId);\n    this.questionaryId = settings.competencesQuestionaryId;\n\n    if (this.questionaryId == 0)\n      this.questionaryId = Tests['Competences'];\n    return await this.companyCompetenceService.getAll(this.questionaryId);\n  }\n\n  private changeSelectedCompetence(companyCompetenceId: number) {\n\n    if (!companyCompetenceId) return;\n    let competence = this.competences.find(cpt => cpt.id == companyCompetenceId);\n\n    // this.logger.debug(\"companyCompetence\", competence);\n\n    this.selectedCompetenceName = competence.name || competence.competenceName || '';\n    this.dichotomousCouples = [...competence.dichotomousCouples];\n    this.competenceDescription = competence.competenceDescription;\n\n    // this.logger.debug(\"dichotomousCouples\", this.dichotomousCouples);\n  }\n\n  public async submit(): Promise<void> {\n    this.logger.info(\"submit\");\n    this.model.dichotomousCouples = this.dichotomousCouples;    \n    if (this.questionaryId != Tests['Competences'])\n      this.model.directCompetenceValue = this.directCompetenceValue;\n\n    let result = await this.validationController.validate();\n    if (result.valid) {\n      this.save();\n    }\n  }\n\n  private async save(): Promise<any> {\n    try {\n      if (!this.model.id) {\n        await this.positionCompetenceService.create(this.model, this.model.positionId);\n        this.notification.success(\"notifications.item_added\");\n      }\n      else {\n        await this.positionCompetenceService.update(this.model);\n        this.notification.success(\"notifications.item_edited\");\n      }\n      this.dialogController.ok();\n    }\n    catch (error) {\n      this.notification.error(error.error);\n    }\n  }\n}\n","module.exports = \"<template> <require from=../../../../models/test-person/testsViewEngineHooks></require> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <div class=\\\"row justify-content-md-center\\\"> <div class=\\\"col-md-10 col-12\\\"> <h2> ${'main.test.pages.position.position_competence_edit.title' & t} </h2> <div class=\\\"row mb-3\\\"> <form class=col-12> <div class=\\\"row mt-3\\\"> <div class=col-12> <div class=form-group> <label for=model.companyCompetenceId> ${'main.test.pages.position.position_competence_edit.competence' & t} </label> <select value.bind=\\\"model.companyCompetenceId & validate\\\" class=form-control id=model.companyCompetenceId change.delegate=changeSelectedCompetence(model.companyCompetenceId)> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of competences\\\" model.bind=option.id> ${option.name || option.competenceName & t} </option> </select> </div> </div> </div> <div if.bind=\\\"questionaryId == Test.Competences\\\"> <div class=row> <div class=col-12> <div class=\\\"alert alert-info mt-3\\\" role=alert> <p> ${'main.test.pages.position.position_competence_edit.info' & t} </p> </div> </div> </div> <div class=\\\"row mt-3\\\" repeat.for=\\\"item of dichotomousCouples\\\"> <div class=col> <label>${item.leftThesis.name & t}</label> <p>${item.leftThesis.description & t}</p> </div> <div class=col> <p>${item.value}</p> <ux-range-input value.bind=item.value min.bind=60 max.bind=100 max-range.bind=100> </ux-range-input> </div> <div class=col> <label>${item.rightThesis.name & t}</label> <p>${item.rightThesis.description & t}</p> </div> </div> </div> <div if.bind=\\\"questionaryId == Test.CompetencesV2\\\"> <div class=row> <div class=col-12> <div class=\\\"alert alert-info mt-3\\\" role=alert> <p> ${'main.test.pages.position.position_competence_second_version_edit.info' & t} </p> </div> </div> </div> <div class=\\\"row mt-3\\\" if.bind=selectedCompetenceName> <div class=col> <label>${selectedCompetenceName & t}</label> <p>${competenceDescription & t}</p> </div> <div class=col> <p>${directCompetenceValue}</p> <ux-range-input value.bind=directCompetenceValue min.bind=1 max.bind=100 max-range.bind=100> </ux-range-input> </div> </div> </div> <div class=form-group> <span class=\\\"switch switch-sm\\\"> <input type=checkbox id=model.isToAllPositions class=switch checked.bind=model.isToAllPositions> <label for=model.isToAllPositions> ${'main.test.pages.position.position_competence_edit.apply' & t} </label> </span> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-enable=\\\"can: TestPositionUpdate\\\" click.delegate=submit()> ${'commands.save' & t} </button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()> ${'commands.cancel' & t} </button> </div> </form> </div> </div> </div> </ux-dialog-body> </ux-dialog> </template> \";","import { PositionCompetence } from 'models/test-position/positionCompetence';\nimport { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { PositionService } from '../../services/position/position-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { PositionCompetenceService } from \"../../services/position/position-competence-service\";\nimport { Position } from \"models/test-position/position\";\nimport { PositionCompetenceEditModal } from './position-competence-edit-modal';\nimport { DeleteConfirmation } from 'main/components/delete-confirmation';\nimport { Tests } from 'models/test-person/tests';\nimport { CoreCompanyService } from 'main/admin/services/companies/core-company-service';\nimport { QuestionaryService } from 'main/admin/services/questionaries/questionary-service';\nimport { Questionary } from 'models/questionaries/questionary';\n@autoinject()\nexport class PositionCompetenceList {\n\n  private logger: Logger;\n  private params: any = {};\n  public companyId: number;\n\n  private positionId: number;\n  private model: Position = new Position();\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n  private questionaryId: number;\n  private competenceQuestionary: Questionary;\n  private isEditable: boolean;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    // this.logger.debug(\"refreshing\");\n    return await this.positionCompetenceService.list(this.parameters, this.positionId, this.questionaryId);    \n  }\n\n  constructor(\n    private router: Router,\n    private dialogService: DialogService,\n    private positionService: PositionService,\n    private positionCompetenceService: PositionCompetenceService,\n    private notification: Notification,\n    private questionaryService: QuestionaryService,\n    private coreCompanyService: CoreCompanyService\n  ) {\n\n    this.logger = LogManager.getLogger(\"PositionCompetenceList\");\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.params = params;\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n      this.companyId = +this.params.companyId;\n\n      this.positionCompetenceService.client.currentCompanyId = this.companyId;\n\n      if (!isNaN(this.params.positionId)) {\n        this.positionId = this.params.positionId;\n\n        this.positionId = this.positionId;\n        this.model = await this.getItem(this.positionId);\n\n        let settings = await this.coreCompanyService.getSettingsById(this.companyId);\n        this.questionaryId = settings.competencesQuestionaryId;\n        \n        if (this.questionaryId == 0)\n          this.questionaryId = Tests['Competences'];\n\n        this.competenceQuestionary  = await this.questionaryService.getById(this.questionaryId);\n   \n        return await this.databind();\n      }\n    }\n  }\n\n  private async getItem(itemId: number): Promise<Position> {\n    return await this.positionService.getById(itemId);\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;        \n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  public async create(): Promise<void> {\n    // this.logger.info(\"createCompetence\");\n\n    return await this.dialogService.open({\n      viewModel: PositionCompetenceEditModal,\n      model: { id: null, companyId: this.companyId, positionId: this.positionId }\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        this.databind();\n      }\n    });\n\n  }\n\n  public async edit(item: PositionCompetence): Promise<void> {\n    // this.logger.info(\"createCompetence\");\n\n    return await this.dialogService.open({\n      viewModel: PositionCompetenceEditModal,\n      model: { id: item.id, companyId: this.companyId }\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        // this.notification.success(\"notifications.item_edited\");\n        this.databind();\n\n      }\n    });\n\n  }\n\n  private async delete(item: PositionCompetence): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: item.complementaryName\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        return await this.positionCompetenceService.delete(item.id)\n          .then(() => {\n            let indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(item.id.toString());\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.notification.success(\"notifications.item_deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n\n      }\n    });\n  }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { I18N } from \"aurelia-i18n\";\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\n\n@autoinject\nexport class PositionCompetenceListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor (\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n\n    this.logger = LogManager.getLogger( \"PositionCompetenceListChildRouter\" );\n  }\n\n  public configureRouter ( config: RouterConfiguration, router: Router ): void {\n    this.router = router;\n    config.map( [\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./position-competence-list\"),\n        name: \"position-competences\",\n      },\n      // {\n      //   route: \"competence/:competenceId\",\n      //   moduleId: PLATFORM.moduleName(\"./position-competence-edit\"),\n      //   name: \"position-competence-edit\",\n      // },\n    ] );\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=../../../../models/test-position/positionActivationTypeViewEngineHooks></require> <div if.bind=!positionId> ${'main.test.pages.position.position_competence_list.msg_first_create_item' & t} </div> <div if.bind=positionId> <h2> ${'main.test.pages.position.position_competence_list.title' & t} / ${model.name} / ${competenceQuestionary.name} </h2> <div class=\\\"content-container row mb-3\\\" if.bind=\\\"model.positionActivationType == PositionActivationType.Reference\\\"> <div class=content-main> <p>${'main.test.pages.position.position_type_is_not_organization' & t}</p> </div> </div> <div class=\\\"content-container row mb-3\\\" if.bind=\\\"model.positionActivationType != PositionActivationType.Reference\\\"> <div class=content-main> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.test.pages.position.position_competence_list.info' & t} </p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <span title=${item.complementaryName}>${item.complementaryName}</span> </div> <div class=\\\"col-md-3 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_list.evaluator' & t}</small> </label> <span title=${item.createdByName}>${item.createdByName}</span> </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_competence_list.date' & t}</small> </label> ${item.createdOn | dateTimeFormat} </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <a href=# global-permission-show=\\\"can: TestPositionUpdate\\\" click.delegate=edit(item) role=button> <i class=material-icons title=\\\"${'commands.edit' & t}\\\">edit</i> </a> <a href=# global-permission-show=\\\"can: TestPositionUpdate\\\" click.delegate=delete(item) title.bind=\\\"'commands.archive' & t\\\" role=button> <i class=material-icons>archive</i> </a> </div> </div> </li> </ul> </div> </div> </div> <div class=content-sidebar global-permission-show=\\\"can: TestPositionUpdate\\\"> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.test.pages.position.position_competence_list.card_title' & t} </h5> <p t=[html]main.test.pages.position.position_competence_list.card_info>Create new </p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create() t=main.test.pages.position.position_competence_list.card_command>New </button> </div> </div> </div> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { Position } from \"models/test-position/position\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { PositionService } from \"../../services/position/position-service\";\nimport { Disc } from \"models/questionaries/disc\";\nimport { DiscAdjective } from \"models/test-core/discAdjective\";\nimport { DiscAdjectiveService } from \"../../services/core/disc-adjective-service\";\nimport { Result } from \"models/test-result/result\";\nimport { ResultService } from \"../../services/result/result-service\";\n\n@autoinject()\nexport class PositionDiscEdit {\n\n  private logger: Logger;\n  public companyId: number;\n\n  private positionId: number;\n  private model: Position = new Position();\n\n  private positions: Position[] = [];\n  private validationController: ValidationController;\n  private positionDiscList: Result[] = [];\n  private discAdjetives: DiscAdjective[] = [];\n\n  private static readonly DISC_LEVEL_LOW_MAX = 29;\n  private static readonly DISC_LEVEL_MEDIUM_MAX = 69;\n\n  constructor(\n    private router: Router,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private positionService: PositionService,\n    private resultService: ResultService,\n    private discAdjectiveService: DiscAdjectiveService\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"PositionDiscEdit\");\n  }\n\n  public async activate(params: any): Promise<any> {\n    try {\n      if (!isNaN(params.companyId)) {\n        this.companyId = +params.companyId;\n\n        this.positionService.client.currentCompanyId = this.companyId;\n        this.resultService.client.currentCompanyId = this.companyId;\n\n\n        if (!isNaN(params.positionId)) {\n          this.positionId = +params.positionId;\n          this.model = await this.getItem(this.positionId);\n\n          this.positions = await this.getPositions();\n          // filter by positions with disc\n          this.positions = this.positions.filter(x => x.highestDisc >= 0);\n\n          this.positionDiscList = await this.getPositionDisc(this.positionId);\n        }\n\n        const adjectives = await this.getDiscAdjetives();\n\n        this.discAdjetives = adjectives.map(itm => {\n          let range = itm.scoreRange.split('-');\n          let minRange = parseInt((range[0] || '0').trim());\n          let maxRange = parseInt((range[1] || '0').trim());\n          itm['min'] = minRange;\n          itm['max'] = maxRange;\n          return itm;\n        });\n      }\n    } catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async getItem(itemId: number): Promise<Position> {\n    return await this.positionService.getById(itemId);\n  }\n\n  private async getPositions(): Promise<Position[]> {\n    return await this.positionService.getAll();\n  }\n\n  private async getDiscAdjetives(): Promise<DiscAdjective[]> {\n    return await this.discAdjectiveService.getAll();\n  }\n\n  private async getPositionDisc(positionId: number): Promise<Result[]> {\n\n    let allPositionDisc = await this.resultService.getAllByPositionId(positionId);\n    let discIds = Object.keys(Disc).filter(k => typeof Disc[k] !== 'number');\n\n    let positionDiscList: Result[] = [];\n\n    discIds.forEach(itm => {\n      let filteredItems = allPositionDisc.filter(p => Disc[p.disc] === Disc[itm]);\n\n      if (filteredItems.length) {\n        positionDiscList.push({\n          positionId: this.positionId,\n          disc: Disc[itm],\n          value: filteredItems[0].value\n        })\n      } else {\n        positionDiscList.push({\n          positionId: this.positionId,\n          disc: Disc[itm],\n          value: 50\n        })\n      }\n    })\n\n    return positionDiscList;\n  }\n\n  private calculateLabel(value: number, disc: Disc): string {\n    // this.logger.debug(\"calculateLabel: \" + disc + value);\n    const itm = this.discAdjetives.find((itm: any) => value >= itm.min && value <= itm.max && itm.disc === Disc[disc]);\n    return itm ? itm.name : '';\n  }\n\n  private getLevel(value: number): string {\n    if (value <= PositionDiscEdit.DISC_LEVEL_LOW_MAX) return 'main.test.pages.position.position_disc_edit.level_low';\n    if (value <= PositionDiscEdit.DISC_LEVEL_MEDIUM_MAX) return 'main.test.pages.position.position_disc_edit.level_medium';\n    return 'main.test.pages.position.position_disc_edit.level_high';\n  }\n\n  private async changeItem(item): Promise<any> {\n    if (item) {\n      this.positionDiscList = await this.getPositionDisc(item);\n    }\n  }\n\n  public async submit(): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.save();\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n\n  get canSave() {\n    return !this.resultService.client.isRequesting;\n  }\n\n  private async save(): Promise<any> {\n\n    let promises = [];\n    // Person Data\n    // create stamp\n    this.model.stamp = Math.random().toString(36).substring(2) + (new Date()).getTime().toString(36);\n\n    // get highest disc\n    let maxItem: any = { value: 0 };\n    this.positionDiscList.forEach(itm => {\n      if (maxItem.value < itm.value) {\n        maxItem = itm;\n      }\n    });\n\n    this.model.highestDisc = maxItem.disc;\n\n    this.positionDiscList.forEach(itm => {\n      itm.stamp = this.model.stamp;\n      promises.push(this.resultService.createToPosition(itm));\n    });\n\n    Promise.all(promises)\n      .then(async () => this.positionService.update(this.model))\n      .then(async () => {\n        this.notification.success(\"notifications.item_edited\");\n        this.router.navigateToRoute(\"positions\");\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  // private async save ( keepEditing: boolean ): Promise<any> {\n  //   return await this.positionCompetenceService.create( this.model, this.positionId )\n  //     .then( async ( result: PositionCompetence ) => {\n  //       this.notification.success( \"notifications.item_edited\" );\n  //       if ( keepEditing ) {\n  //         return await this.router.navigateToRoute( \"position-competence-edit\", { competence_id: result.id } );\n  //       }\n  //       else {\n  //         return await this.router.navigateToRoute( \"position-competence-list-child-router\" );\n  //       }\n\n  //     } )\n  //     .catch( error => {\n  //       this.notification.error( error.message );\n  //     } );\n  // }\n\n  // private async update ( keepEditing: boolean ): Promise<any> {\n  //   return await this.positionCompetenceService.update( this.model, this.positionId )\n  //     .then( async () => {\n  //       this.notification.success( \"notifications.item_edited\" );\n\n  //       if ( keepEditing ) {\n  //         return await this.router.navigateToRoute( \"position-competence-edit\", { competence_id: this.positionCompetenceId } );\n  //       }\n  //       else {\n  //         return await this.router.navigateToRoute( \"position-competence-list-child-router\" );\n  //       }\n  //     } )\n  //     .catch( error => {\n  //       this.notification.error( error.message );\n  //     } );\n  // }\n}\n","module.exports = \"<template> <require from=../../../../models/test-position/positionActivationTypeViewEngineHooks></require> <require from=../../../../models/questionaries/discViewEngineHooks></require> <require from=../../../../models/questionaries/disc></require> <div if.bind=!positionId> ${'main.test.pages.position.position_evaluator_list.msg_first_create_item' & t} </div> <div if.bind=positionId> <h2> ${'main.test.pages.position.position_disc_edit.title' & t} / ${model.name} </h2> <div class=\\\"content-container row mb-3\\\" if.bind=\\\"(model.positionActivationType != PositionActivationType.Direct && model.positionActivationType != PositionActivationType.Reference)\\\"> <div class=content-main> <p>${'main.test.pages.position.position_type_is_not_direct' & t}</p> </div> </div> <div class=\\\"content-container row mb-3\\\" if.bind=\\\"(model.positionActivationType == PositionActivationType.Direct || model.positionActivationType == PositionActivationType.Reference ) \\\"> <form class=content-main> <hr/> <div class=\\\"alert alert-info mt-3\\\" role=alert> <p> ${'main.test.pages.disc_homologation.warning' & t} </p> </div> <div class=row> <div class=col-12> <div class=form-group if.bind=\\\"model.positionActivationType == PositionActivationType.Direct\\\"> <label for=culture>${'main.test.pages.position.position_disc_edit.profile' & t}</label> <select value.bind=\\\"model.profilePositionId & validate\\\" class=form-control id=profilePositionId change.delegate=changeItem(model.profilePositionId)> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of positions\\\" model.bind=option.id>${option.name}</option> </select> </div> <div class=\\\"row mb-1 mt-1 pt-2 disc-${option.disc}\\\" repeat.for=\\\"option of positionDiscList\\\" css=\\\"--range-pct: ${option.value}%\\\"> <div class=col-1> <label>${option.disc}</label> </div> <div class=\\\"col-6 disc-slider-wrapper\\\"> <ux-range-input value.bind=option.value></ux-range-input> <span class=disc-level-label>${getLevel(option.value) & t}</span> </div> <div class=col> <input type=number class=form-control id=disc[${option.disc}] value.bind=\\\"option.value & validate\\\"> </div> <div class=col-2> <label>${calculateLabel(option.value, option.disc) & t}</label> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" if.bind=\\\"model.positionActivationType != PositionActivationType.Reference\\\" type=submit global-permission-show=\\\"can: TestPositionUpdate\\\" click.delegate=submit() disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: positions;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> <div class=content-sidebar if.bind=\\\"model.positionActivationType == PositionActivationType.Direct\\\"> <div class=\\\"row mb-3\\\" if.bind=\\\"model.highestDisc >= 0\\\"> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=main.test_reports.pages.reports.create_card.title></h5> <p class=card-text t=[html]main.admin.pages.reports.create_card.info>Lorem</p> <a class=\\\"btn btn-primary btn-round\\\" title=\\\"${'commands.generate' & t}\\\" href=\\\"company/${companyId}/test-reports/reports?positionId=${model.id}\\\"> ${'commands.generate' & t} </a> </div> </div> </div> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { State } from \"common/store/store-model\";\nimport { StoreService } from \"common/store/store-service\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { BulkActivation } from '../../../../models/test-person/bulkActivation';\nimport { FileAcceptValidator } from \"common/utils/file-accept-validator\";\nimport { Language } from 'models/localizations/language';\nimport { CoreLanguageService } from 'main/admin/services/localizations/core-language-service';\nimport config from 'config.js';\n\n@autoinject()\nexport class PositionEvaluatorBulkActivationModal {\n\n  private logger: Logger;\n\n  public companyId: number;\n\n  private state: State;\n\n  private model: BulkActivation = new BulkActivation();\n\n  private validationController: ValidationController;\n\n  private csvExampleUrl: string = \"\";\n  private xlsxExampleUrl: string = \"\";\n\n  private languages: Language[];\n\n  constructor(\n    private dialogController: DialogController,\n    private store: StoreService,\n    private languageService: CoreLanguageService,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory\n    ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"BulkActivationModal\");\n\n    this.state = this.store.state;\n\n    let backendUrl = config.URLS_BACKEND;\n    this.csvExampleUrl = backendUrl + \"/person-content/bulk-evaluator-example.csv\";\n    this.xlsxExampleUrl = backendUrl + \"/person-content/bulk-evaluator-example.xlsx\";\n\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"fileName\").displayName(\"main.testperson.pages.masive_activation.field_file\").required()\n      .on(this.model);\n  }\n\n  public async activate(model: BulkActivation): Promise<any> {\n    this.logger.debug(\"activate\");\n\n    this.model = model;\n\n    this.configureValidationRules();\n\n  }\n\n  private async bind(): Promise<any> {\n    // this.logger.debug(\"bind\");\n    try {\n      this.languages = await this.languageService.getAll();\n      this.setUserLanguage();\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  public setUserLanguage() {\n    this.logger.debug(\"setUserLanguage\");\n    if (this.state && this.state.userBasicInfo) {\n      let activeCulture = this.state.userBasicInfo.culture;\n      let activeLang = this.languages.find(lg => lg.culture === activeCulture);\n      if (activeLang) {\n        this.model.languageId = activeLang.id;\n      }\n    }\n  }\n\n  public async submit(): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          if(!this.model.filedata){\n            this.notification.warning(\"main.test.pages.people.errors.file_is_missing\");\n          } else {\n            return await this.save();\n          }\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async save(): Promise<any> {\n    return await this.dialogController.ok();\n  }\n\n  public setFile($event: any): void {\n    this.logger.debug(\"setFile\");\n    let file = <File>$event.target.files[0];\n\n    let fileValidator = FileAcceptValidator.parse(\"csv, xls, xlsx\", 1024 * 500);\n    if (fileValidator.isValid(file)) {\n      let reader: FileReader = new FileReader();\n      reader.readAsDataURL(file);\n      reader.onload = () => {\n        this.model.fileName = file.name;\n      };\n    }\n    else {\n      this.notification.error(\"main.test.pages.position.position_evaluator_list.file_upload.errors.error_bad_file\");\n\n    }\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2> ${'main.test.pages.position.position_evaluator_list.file_upload.title' & t} </h2> <div class=\\\"row mb-3\\\"> <form class=col-12> <div class=row> <div class=col-12> <div class=\\\"alert alert-info\\\" role=alert> <div class=row> <div class=col> <p>${'main.test.pages.position.position_evaluator_list.file_upload.warning' & t}</p> </div> </div> <div class=row> <div class=col> <i class=\\\"fa fa-file-excel-o\\\" aria-hidden=true></i> <a href=${xlsxExampleUrl}>${'main.test.pages.position.position_evaluator_list.excel_file.info' & t}</a> </div> </div> </div> </div> </div> <div class=row> <div class=col-12> <div class=form-group> <div class=custom-file> <input type=file class=custom-file-input files.bind=model.filedata accept=\\\".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\\\" id=customFile change.delegate=setFile($event)> <label class=custom-file-label for=customFile>${ model.fileName ? model.fileName : 'commons.file' & t}</label> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-enable=\\\"can: TestPositionUpdate\\\" click.delegate=submit()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </form> </div> </ux-dialog-body> </ux-dialog> </template> \";","import { DialogController } from 'aurelia-dialog';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { PositionEvaluator } from \"models/test-position/positionEvaluator\";\n\n@autoinject()\nexport class PositionEvaluatorEditModal {\n\n  private logger: Logger;\n\n  private model: PositionEvaluator = new PositionEvaluator();\n\n  private validationController: ValidationController;\n\n  constructor(\n    private dialogController: DialogController,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"PositionEvaluatorEditModal\");\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"weight\").displayName(\"main.test.pages.position.position_evaluator_edit.weight\").required()\n      .on(this.model);\n\n    ValidationRules\n      .ensure(\"firstName\").displayName(\"main.test.pages.position.position_evaluator_edit.firstName\").required()\n      .ensure(\"lastName\").displayName(\"main.test.pages.position.position_evaluator_edit.lastName\").required()\n      .ensure(\"email\").displayName(\"main.test.pages.position.position_evaluator_edit.email\").email()\n      .on(this.model.evaluator);\n  }\n\n  public async activate(model: PositionEvaluator): Promise<any> {\n    this.model = model;\n    this.configureValidationRules();\n\n  }\n\n  public async submit(): Promise<void> {\n    // this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          this.save();\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async save(): Promise<any> {\n    this.dialogController.ok();\n  }\n\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2> ${'main.test.pages.position.position_evaluator_edit.title' & t} </h2> <div class=row> <form class=col-12> <div class=form-group> <label>${'main.test.pages.position.position_evaluator_edit.firstName' & t}</label> <input type=text class=form-control id=firstName t=[placeholder]main.test.pages.position.position_evaluator_edit.firstName value.bind=\\\"model.evaluator.firstName & validate\\\"> </div> <div class=form-group> <label>${'main.test.pages.position.position_evaluator_edit.lastName' & t}</label> <input type=text class=form-control id=lastName t=[placeholder]main.test.pages.position.position_evaluator_edit.lastName value.bind=\\\"model.evaluator.lastName & validate\\\"> </div> <div class=form-group> <label>${'main.test.pages.position.position_evaluator_edit.email' & t}</label> <input type=email class=form-control id=email t=[placeholder]main.test.pages.position.position_evaluator_edit.email value.bind=\\\"model.evaluator.email & validate\\\"> </div> <div class=form-group> <label>${'main.test.pages.position.position_evaluator_edit.phone' & t}</label> <input type=text class=form-control id=phone t=[placeholder]main.test.pages.position.position_evaluator_edit.phone value.bind=\\\"model.evaluator.phone & validate\\\"> </div> <div class=form-group> <label>${'main.test.pages.position.position_evaluator_edit.weight' & t}</label> <input type=number step=0.01 class=form-control id=weight t=[placeholder]main.test.pages.position.position_evaluator_edit.weight value.bind=\\\"model.weight & validate\\\"> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-enable=\\\"can: TestPositionUpdate\\\" click.delegate=submit()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </div> </div> </form> </div> </ux-dialog-body> </ux-dialog> </template> \";","import { DialogService, DialogCloseResult } from 'aurelia-dialog';\nimport { PositionService } from '../../services/position/position-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { PositionEvaluatorService } from \"../../services/position/position-evaluator-service\";\nimport { Position } from \"models/test-position/position\";\nimport { PositionEvaluator } from 'models/test-position/positionEvaluator';\nimport { PositionEvaluatorEditModal } from './position-evaluator-edit-modal';\nimport { RouteConfig } from 'aurelia-router';\nimport { DeleteConfirmation } from 'main/components/delete-confirmation';\nimport { DeactivateConfirmation } from 'main/components/deactivate-confirmation';\nimport { I18N } from 'aurelia-i18n';\nimport { PositionActivationType } from 'models/test-position/positionActivationType';\nimport { BulkActivation } from 'models/test-person/bulkActivation';\nimport { PositionEvaluatorBulkActivationModal } from './position-evaluator-bulk-activation-modal';\nimport { PersonLoginInfoModal } from '../people/person-login-info-modal';\nimport { Person } from 'models/test-person/person';\nimport { PersonService } from 'main/test/services/people/person-service';\nimport config from 'config.js';\n\n@autoinject()\nexport class PositionEvaluatorList {\n\n  private logger: Logger;\n  private params: any = {};\n  public companyId: number;\n\n  private positionId: number;\n  private model: Position = new Position();\n  private total: number = 0;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private csvExampleUrl: string = \"\";\n  private xlsxExampleUrl: string = \"\";\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    try {\n      let response: UxDatatableResponse = await this.positionEvaluatorService.list(this.parameters, this.positionId);\n      this.total = await this.positionEvaluatorService.getWeightAllEvaluators(this.positionId);\n      return response;\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  constructor(\n    private i18n: I18N,\n    private positionService: PositionService,\n    private positionEvaluatorService: PositionEvaluatorService,\n    private personService: PersonService,\n    private notification: Notification,\n    private dialogService: DialogService\n  ) {\n\n    this.logger = LogManager.getLogger(\"PositionEvaluatorList\");\n\n    let backendUrl = config.URLS_BACKEND;\n    this.csvExampleUrl = backendUrl + \"/person-content/bulk-evaluator-example.csv\";\n    this.xlsxExampleUrl = backendUrl + \"/person-content/bulk-evaluator-example.xlsx\";\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.params = params;\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n      this.companyId = +this.params.companyId;\n\n      if (!isNaN(this.params.positionId)) {\n        this.positionId = this.params.positionId;\n\n        this.positionService.client.currentCompanyId = this.companyId;\n        this.positionEvaluatorService.client.currentCompanyId = this.companyId;\n\n        this.model = await this.getItem();\n\n        return await this.databind();\n      }\n    }\n  }\n\n  private async getItem(): Promise<Position> {\n    return await this.positionService.getById(this.positionId);\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async create(): Promise<any> {\n    let item = new PositionEvaluator();\n    item.positionId = this.model.id;\n\n    return await this.dialogService.open({\n      viewModel: PositionEvaluatorEditModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.positionEvaluatorService.create(item)\n          .then(async () => {\n\n            this.notification.success(\"notifications.item_added\");\n\n            await this.databind();\n\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private async update(item: PositionEvaluator): Promise<any> {\n\n    return await this.dialogService.open({\n      viewModel: PositionEvaluatorEditModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.positionEvaluatorService.update(item)\n          .then(async () => {\n\n            this.notification.success(\"notifications.item_added\");\n\n            await this.databind();\n\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private async delete(item: PositionEvaluator): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: item.evaluator.fullName\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        return await this.positionEvaluatorService.delete(item.id)\n          .then(async () => {\n\n            this.notification.success(\"notifications.item_deleted\");\n\n            await this.databind();\n\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n\n      }\n    });\n  }\n\n  private async createBulkActivation(): Promise<any> {\n    let item = new BulkActivation();\n    item.positionId = this.model.id;\n    item.name = this.model.name;\n\n    return await this.dialogService.open({\n      viewModel: PositionEvaluatorBulkActivationModal,\n      model: item\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.positionEvaluatorService.createBulkActivation(item)\n          .then(async () => {\n\n            this.notification.success(\"notifications.item_added\");\n\n            await this.databind();\n\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n\n  private async sendIndividualReminder(id: number): Promise<boolean> {\n    try {\n      await this.personService.sendReminder(id);\n      this.notification.success(\"main.test.pages.person.send_reminder\");\n      return true;\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async viewLoginInfo(personId: number): Promise<any> {\n\n    return await this.dialogService.open({\n      viewModel: PersonLoginInfoModal,\n      model: personId\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.sendIndividualReminder(personId);\n      }\n    });\n  }\n\n  private async canDeactivate(): Promise<boolean> {\n\n    if (this.total === 100 || this.model.positionActivationType !== PositionActivationType.Concerted) {\n      return true;\n    }\n\n    return await this.dialogService.open({\n      viewModel: DeactivateConfirmation,\n      model: this.i18n.tr(\"main.test.pages.positions.position_evaluator_list.can_deactivate\")\n    }).whenClosed(async (response: DialogCloseResult) => {\n      return !response.wasCancelled;\n    });\n  }\n\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { I18N } from \"aurelia-i18n\";\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\n\n@autoinject\nexport class PositionEvaluatorListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor (\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n\n    this.logger = LogManager.getLogger( \"PositionEvaluatorListChildRouter\" );\n  }\n\n  public configureRouter ( config: RouterConfiguration, router: Router ): void {\n    this.router = router;\n    config.map( [\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./position-evaluator-list\"),\n        name: \"position-evaluator-list\",\n      },\n      // {\n      //   route: \"evaluator/:evaluator_id\",\n      //   moduleId: PLATFORM.moduleName(\"./position-evaluator-edit\"),\n      //   name: \"position-evaluator-edit\",\n      // },\n    ] );\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=../../../../models/test-person/activationQuestionaryStatusViewEngineHooks></require> <require from=../../../../models/test-position/positionActivationTypeViewEngineHooks></require> <div if.bind=!positionId> ${'main.test.pages.position.position_evaluator_list.msg_first_create_item' & t} </div> <div if.bind=positionId> <h2> ${'main.test.pages.position.position_evaluator_list.title' & t} / ${model.name} </h2> <hr/> <div class=\\\"content-container row mb-3\\\" if.bind=\\\"model.positionActivationType != PositionActivationType.Concerted\\\"> <div class=content-main> <p>${'main.test.pages.position.position_type_is_not_concerted' & t}</p> </div> </div> <div class=\\\"content-container row mb-3\\\" if.bind=\\\"model.positionActivationType == PositionActivationType.Concerted\\\"> <div class=content-main> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\" if.bind=\\\"item.activationQuestionaryStatus == ActivationQuestionaryStatus.Finalized\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.state' & t}</small> </label> <span class=\\\"badge badge-pill badge-success\\\">${'main.test.pages.person.person_questionary_list.state_' + ActivationQuestionaryStatuses[item.activationQuestionaryStatus] & t}</span> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\" if.bind=\\\"item.activationQuestionaryStatus != ActivationQuestionaryStatus.Finalized\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.state' & t}</small> </label> <span class=\\\"badge badge-pill badge-warning\\\">${'main.test.pages.person.person_questionary_list.state_' + ActivationQuestionaryStatuses[item.activationQuestionaryStatus] & t}</span> </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <div class=mb-2> <a title=${item.evaluator.fullName} href=company/${companyId}/test/people/person/${item.evaluator.id}> ${item.evaluator.fullName} </a> </div> <div> <span title=${item.evaluator.email}>${item.evaluator.email}</span> </div> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <div class=mb-2> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.activation_date' & t}</small> </label> <span title=\\\"${item.createdOn | dateTimeFormat}\\\">${item.createdOn | dateTimeFormat}</span> </div> <div> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.application_date' & t}</small> </label> <span title=\\\"${item.applicationDate | dateTimeFormat}\\\">${item.applicationDate | dateTimeFormat}</span> </div> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.evaluator' & t}</small> </label> <span title=${item.createdByName}>${item.createdByName}</span> </div> <div class=\\\"col-md-1 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_evaluator_list.weight' & t}</small> </label> ${item.weight} </div> <div class=\\\"col-md-2 col-12 mb-2\\\"> <a href=# if.bind=item.evaluator.email click.delegate=sendIndividualReminder(item.id) title.bind=\\\"'commands.send' & t\\\" role=button> <i class=material-icons>email</i> </a> <a href=# click.delegate=viewLoginInfo(item.evaluator.id) title.bind=\\\"'commands.link' & t\\\" role=button> <i class=material-icons>link</i> </a> <a href=# global-permission-show=\\\"can: TestPositionUpdate\\\" click.delegate=update(item) role=button> <i class=material-icons title=\\\"${'commands.edit' & t}\\\">edit</i> </a> <a href=# global-permission-show=\\\"can: TestPositionUpdate\\\" click.delegate=delete(item) title.bind=\\\"'commands.archive' & t\\\" role=button> <i class=material-icons>archive</i> </a> </div> </div> </li>  </ul> <ul class=list-group> <div class=\\\"col-md-4 offset-md-9\\\"><u>${total}</u></div> </ul> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\" if.bind=\\\"model.highestDisc >= 0\\\"> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=main.test_reports.pages.reports.create_card.title></h5> <p class=card-text t=[html]main.admin.pages.reports.create_card.info>Lorem</p> <a class=\\\"btn btn-primary btn-round\\\" title=\\\"${'commands.generate' & t}\\\" href=\\\"company/${companyId}/test-reports/reports?positionId=${model.id}\\\"> ${'commands.generate' & t} </a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPositionUpdate\\\" if.bind=\\\"model.highestDisc == null\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.test.pages.position.position_evaluator_list.card_create' & t} </h5> <p t=[html]main.test.pages.position.position_evaluator_list.card_create_info>Create new </p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=create() t=commands.create>New  </button></div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPositionUpdate\\\" if.bind=\\\"model.highestDisc == null\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.test.pages.position.position_evaluator_list.file_upload_card.title' & t} </h5> <p t=[html]main.test.pages.position.position_evaluator_list.file_upload_card.info>Bulk create</p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=createBulkActivation() t=main.test.pages.position.position_evaluator_list.file_upload_card.upload>Upload </button> </div> </div> </div> </div> </div> </div> </div> </template> \";","\nimport { autoinject, LogManager } from \"aurelia-framework\";\n\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\n\nimport { Notification } from \"common/services/notification\";\n\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { User } from \"models/security/user\";\n\nimport { Company } from \"models/companies/company\";\nimport { State } from 'common/store/store-model';\nimport { StoreService } from 'common/store/store-service';\nimport { PositionService } from 'main/test/services/position/position-service';\n\n\n\n@autoinject()\nexport class PositionReferenceList {\n\n  private logger: Logger;\n  private params: any = {};\n  private users: User[];\n  public companyId: number;\n  private company: Company;\n\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private state: State;\n  private isLoaded: boolean = false;\n\n  constructor(\n    private store: StoreService,\n    private router: Router,    \n    private positionService: PositionService,\n    private dialogService: DialogService,\n    private notification: Notification) {\n\n    this.logger = LogManager.getLogger(\"TalentConsolidatedList\");\n\n    this.state = this.store.state;\n\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    return await this.positionService.listPositionReference(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n   \n    // company page\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      return await this.bind();\n    }\n    else {\n      this.params = params;\n    }\n\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n\n      this.companyId = +this.params.companyId;\n\n      if (this.companyId) {\n\n        this.positionService.client.currentCompanyId = this.companyId;\n        this.isLoaded = true;\n        return await this.databind();\n      }\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  // private async getMore(scrollContext: any): Promise<void> {\n  //   return await this.uxDatatable.getMoreItems(scrollContext);\n  // }\n\n}\n","module.exports = \"<template> <require from=../../../components/three-tags.html></require> <require from=../../../../models/test-position/positionActivationTypeViewEngineHooks></require> <h2> ${'main.test.pages.position.position_reference_list.title' & t} </h2> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.test.pages.position.position_reference_list.info' & t} </p> </div> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-2 col-3 text-truncate mb-2\\\" if.bind=\\\"item.highestDisc >= 0\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_list.status.title' & t}</small> </label> <span class=\\\"badge badge-pill badge-success\\\">${'main.test.pages.position.position_list.statuses.activated' & t}</span> </div> <div class=\\\"col-md-2 col-3 text-truncate mb-2\\\" if.bind=\\\"item.highestDisc == null\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_list.status.title' & t}</small> </label> <span class=\\\"badge badge-pill badge-warning\\\">${'main.test.pages.position.position_list.statuses.processing' & t}</span> </div> <div class=\\\"col-md-4 col-9 mb-2 minh-40 text-truncate\\\"> <a route-href=\\\"route: position-child-router; params.bind: {positionId:item.id }\\\" title=${item.name}> ${item.name} </a> <br/> </div> <div class=\\\"col-md-5 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_list.activation_type' & t}</small> </label> ${'main.test.pages.position.position_edit.activation_type.' + PositionActivationType[item.positionActivationType] & t} </div> <div class=\\\"col-md-1 col-12 mb-2\\\"> <a if.bind=\\\"item.highestDisc >= 0\\\" global-permission-show=\\\"can: TestPositionUpdate\\\" title=\\\"${'main.testperson.pages.person.view_reports' & t}\\\" href=\\\"company/${companyId}/test-reports/reports?positionId=${item.id}\\\" role=button> <i class=material-icons>assessment</i> </a> </div> </div> </li> </ul> </div> </div> </div> </div> </template> \";","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class PositionChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N\n  ) {\n\n    this.logger = LogManager.getLogger(\"PositionChildRouter\");\n\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./position-edit\"),\n        name: \"position-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.positions.position\"),\n      },\n\n      {\n        route: \"competences\",\n        moduleId: PLATFORM.moduleName(\"../position-competence/position-competence-list-child-router\"),\n        name: \"position-competence-list-child-router\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.position.position_tabs.tab_competences\"),\n      },\n\n      {\n        route: \"evaluators\",\n        moduleId: PLATFORM.moduleName(\"../position-evaluator/position-evaluator-list-child-router\"),\n        name: \"position-evaluator-list-child-router\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.position.position_tabs.tab_evaluators\"),\n      },\n\n      {\n        route: \"disc\",\n        moduleId: PLATFORM.moduleName(\"../position-disc/position-disc-edit\"),\n        name: \"position-disc-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.position.position_tabs.tab_disc\"),\n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","import { CompanyInfoService } from '../../../services/companies/company-info-service';\nimport { CompanyDetail } from '../../../../models/companies/company-detail';\nimport { I18N } from 'aurelia-i18n';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { Position } from \"models/test-position/position\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { PositionService } from \"../../services/position/position-service\";\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { QuestionaryType } from \"models/questionaries/questionaryType\";\nimport { ItemToQualify } from \"models/questionaries/itemToQualify\";\nimport { CompanyQuestionaryService } from 'main/admin/services/test-management/company-questionary-service';\nimport { EducationalLevelCountry } from \"models/educational-levels-by-country/educational-level-country\";\nimport { EducationalLevelCountryService } from \"main/admin/services/educational-levels-by-country/educational-level-country-service\";\nimport { StoreService } from 'common/store/store-service';\nimport { State } from 'common/store/store-model';\nimport { PositionActivationType } from 'models/test-position/positionActivationType';\nimport { EducationalLevel } from 'models/catalogs/educationalLevel';\n\n@autoinject()\nexport class PositionEdit {\n\n  private logger: Logger;\n  public companyId: number;\n  public companyDetail: CompanyDetail;\n\n  private positionId: number;\n\n  private model: Position = new Position();\n  private validationController: ValidationController;\n\n  private positionDiscQuestionaries: Questionary[] = [];\n  private educationalLevelCountries: EducationalLevelCountry[] = [];\n\n  private params: any = {};\n\n  private state: State;\n  private isLoaded: boolean = false;\n  \n  constructor(\n    private store: StoreService,\n    private router: Router,\n    private companyQuestionaryService: CompanyQuestionaryService,\n    private notification: Notification,\n    private educationalLevelCountryService: EducationalLevelCountryService,\n    private validationControllerFactory: ValidationControllerFactory,\n    private positionService: PositionService,\n    private companyInfoService: CompanyInfoService,\n    private i18n: I18N\n  ) {\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"PositionEdit\");\n\n    this.state = this.store.state;\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.test.pages.position.position_edit.name\").required()\n      .ensure(\"positionActivationType\").displayName(\"main.test.pages.position.position_edit.activation_type.title\").required()\n      .ensure(\"questionaryId\").displayName(\"main.test.pages.position.position_edit.questionary_type\").required()\n      .on(this.model);\n  }\n\n  public async activate(params: any): Promise<any> {\n\n    if (this.params.companyId != params.companyId && this.isLoaded) {\n      this.params = params;\n      \n    }\n    else {\n      this.params = params;\n    }\n\n\n    if (!isNaN(params.companyId)) {\n      try {\n        this.companyId = +params.companyId;\n        this.positionService.client.currentCompanyId = this.companyId;\n        this.companyQuestionaryService.client.currentCompanyId = this.companyId;\n\n        if (!isNaN(params.positionId)) {\n          this.positionId = params.positionId;\n          this.model = await this.positionService.getById(this.positionId);\n         \n        }\n       \n        this.configureValidationRules();\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n\n  }\n  public  getEducationalLevelName(code: EducationalLevel) : string {  \n    const educationalLevel = this.educationalLevelCountries.find(x=> x.educationalLevel == code);    \n    let educationalLevelName = this.i18n.tr('main.catalog.educational_level.' + EducationalLevel[code]);\n    if (educationalLevel != undefined)\n      if (educationalLevel.id > 0)      \n        educationalLevelName = educationalLevel.name;      \n    return educationalLevelName;\n  }\n  public async bind() {\n    // this.logger.debug(\"bind\");\n    if (!isNaN(this.params.companyId)) {\n      try {\n\n        this.companyDetail = await this.companyInfoService.getById(this.params.companyId);\n\n\n        this.educationalLevelCountries = await this.educationalLevelCountryService.getAll();    \n        this.educationalLevelCountries = this.educationalLevelCountries.filter(x => x.countryId === this.companyDetail.countryId)\n        const questionaries = await this.companyQuestionaryService.getAll();\n        this.positionDiscQuestionaries = questionaries.filter(itm => (itm.questionaryType === QuestionaryType.Disc && itm.itemToQualify === ItemToQualify.Position));\n\n        this.isLoaded = true;\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          if (this.positionId) {\n            return await this.update(keepEditing);\n          } else {\n            return await this.create(keepEditing);\n          }\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  get canSave() {\n    return !this.positionService.client.isRequesting;\n  }\n\n  private async create(keepEditing: boolean): Promise<any> {\n    return await this.positionService.create(this.model)\n      .then(async (result: Position) => {\n        this.notification.success(\"notifications.item_edited\");\n        if (keepEditing) {\n          if(this.model.positionActivationType === PositionActivationType.Individual) {\n            this.notification.info(\"main.test.pages.position.position_edit.email_sent\"); \n            return await this.router.navigateToRoute(\"position-child-router\", { positionId: result.id });\n          }\n          else if(this.model.positionActivationType === PositionActivationType.Concerted){\n            return await this.router.parent.navigate(`position/${result.id}/evaluators`);\n          } else{// se va por directa\n            return await this.router.parent.navigate(`position/${result.id}/disc`);            \n          }\n          // return await this.router.navigateToRoute(\"position-child-router\", { positionId: result.id });\n\n        }\n        else {\n          return await this.router.navigateToRoute(\"positions\");\n        }\n\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async update(keepEditing: boolean): Promise<any> {    \n    return await this.positionService.update(this.model)\n      .then(async () => {\n        this.notification.success(\"notifications.item_edited\");\n\n        if (!keepEditing) {\n          return await this.router.navigateToRoute(\"positions\");\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n  public notificationInfo(message:string){\n    this.notification.info(message);\n  }\n}\n","module.exports = \"<template> <require from=../../../../models/test-position/positionActivationTypeViewEngineHooks></require> <require from=../../../../models/test-position/positionLevelViewEngineHooks></require> <require from=../../../../models/test-position/positionQuestionaryTypeViewEngineHooks></require> <require from=../../../../models/catalogs/educationalLevelViewEngineHooks></require> <h2> ${'main.test.pages.position.position_edit.title' & t} / ${model.name} </h2> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <div class=row if.bind=\\\"model.id > 0\\\"> <div class=\\\"col-md-6 col-12\\\"> <h5> ${'main.test.pages.position.position_edit.activation_type.title' & t} ${'main.test.pages.position.position_edit.activation_type.' + PositionActivationType[model.positionActivationType] & t} </h5> </div> </div> <div class=row> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label for=model.name>${'main.test.pages.position.position_edit.name' & t}</label> <input type=text class=form-control id=model.name t=[placeholder]main.test.pages.position.position_edit.name value.bind=\\\"model.name & validate\\\"> </div> <div class=form-group> <label for=model.mission>${'main.test.pages.position.position_edit.mission' & t}</label> <input type=text class=form-control id=model.mission t=[placeholder]main.test.pages.position.position_edit.mission value.bind=\\\"model.mission & validate\\\"> </div> <div class=form-group> <label for=model.tags>${'main.test.pages.position.position_edit.tags' & t} <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.test.pages.position.tag')\\\" role=button> <i class=material-icons>info_outline</i> </a> </label> <company-tags-input value.bind=model.tags /> </div> </div> </div> <div class=row> <div class=\\\"col-md-6 col-12\\\"> <p> <a class=\\\"btn btn-link\\\" data-toggle=collapse href=#collapseAdvanceOptions role=button aria-expanded=false aria-controls=collapseAdvanceOptions> ${'main.test.pages.position.position_edit.advanced_options' & t} </a> </p> <div class=collapse id=collapseAdvanceOptions> <div class=form-group> <label for=model.positionLevel>${'main.test.pages.position.position_edit.position_level' & t}</label> <select value.bind=\\\"model.positionLevel & validate\\\" class=form-control id=model.positionLevel> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of PositionLevels\\\" model.bind=PositionLevel[option]> ${'main.test.pages.position.position_edit.position_level_' + option & t}</option> </select> </div> <div class=form-group> <label for=model.subPositions>${'main.test.pages.position.position_edit.sub_positions' & t}</label> <input type=text class=form-control id=model.subPositions t=[placeholder]main.test.pages.position.position_edit.sub_positions value.bind=\\\"model.subPositions & validate\\\"> </div> <div class=form-group> <label for=educationalLevel>${'main.catalog.educational_level.title' & t}</label> <select id=educationalLevel if.bind=\\\"educationalLevelCountries.length > 0\\\" value.bind=model.educationalLevel class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of EducationalLevels\\\" value.bind=EducationalLevel[option] model.bind=EducationalLevel[option]> ${getEducationalLevelName(EducationalLevel[option])} </option> </select> </div> <div class=row style=margin-bottom:100px> <div class=col> <label>${'main.test.pages.position.position_edit.functions' & t}</label> <quill-editor value.bind=\\\"model.functions & validate\\\"></quill-editor> </div> </div> <div class=clearfix></div> <div class=row> <div class=col> <p>&nbsp;</p> </div> </div> <div class=form-group> <label for=model.salary>${'main.test.pages.position.position_edit.salary' & t}</label> <input type=text class=form-control id=model.salary t=[placeholder]main.test.pages.position.position_edit.salary value.bind=\\\"model.salary & validate\\\"> </div> <div class=form-group> <label for=model.requiredStudies>${'main.test.pages.position.position_edit.required_studies' & t}</label> <input type=text class=form-control id=model.requiredStudies t=[placeholder]main.test.pages.position.position_edit.required_studies value.bind=\\\"model.requiredStudies & validate\\\"> </div> <div class=form-group> <label for=model.dominatedLanguages>${'main.test.pages.position.position_edit.dominated_languages' & t}</label> <input type=text class=form-control id=model.dominatedLanguages t=[placeholder]main.test.pages.position.position_edit.dominated_languages value.bind=\\\"model.dominatedLanguages & validate\\\"> </div> <div class=row> <div class=col> <p>&nbsp;</p> </div> </div> <div class=row style=margin-bottom:50px> <div class=col> <label>${'main.test.pages.position.position_edit.others' & t}</label> <quill-editor value.bind=\\\"model.others & validate\\\"></quill-editor> </div> </div> <div class=clearfix></div> <div class=row> <div class=col> <p>&nbsp;</p> </div> </div> </div> </div> </div> <div class=row if.bind=!positionId> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label for=model.positionActivationType>${'main.test.pages.position.position_edit.activation_type.title' & t} <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.test.pages.position.activation_type')\\\" role=button> <i class=material-icons>info_outline</i> </a> </label> <select value.bind=\\\"model.positionActivationType & validate\\\" class=form-control id=model.positionActivationType> <option repeat.for=\\\"option of PositionActivationTypes\\\" model.bind=PositionActivationType[option] if.bind=\\\"PositionActivationType[option] != PositionActivationType.Reference\\\"> ${'main.test.pages.position.position_edit.activation_type.' + option & t} </option> </select> <div class=\\\"alert alert-info mt-3\\\" role=alert> <p if.bind=\\\"model.positionActivationType == PositionActivationType.Individual\\\"> ${'main.test.pages.position.position_edit.activation_type.individual_description' & t} </p> <p if.bind=\\\"model.positionActivationType == PositionActivationType.Direct\\\"> ${'main.test.pages.position.position_edit.activation_type.direct_description' & t} </p> <p if.bind=\\\"model.positionActivationType == PositionActivationType.Concerted\\\"> ${'main.test.pages.position.position_edit.activation_type.concerted_description' & t} </p> </div> </div> <div class=form-group if.bind=\\\"model.positionActivationType === PositionActivationType.Individual || model.positionActivationType === PositionActivationType.Concerted\\\"> <label for=model.questionaryId>${'main.test.pages.position.position_edit.questionary_type' & t}</label> <select value.bind=\\\"model.questionaryId & validate\\\" class=form-control id=model.questionaryId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of positionDiscQuestionaries\\\" model.bind=option.id>${option.name & t} </option> </select> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit if.bind=\\\"model.positionActivationType != PositionActivationType.Reference\\\" global-permission-show=\\\"can: TestPositionCreate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'main.test.pages.position.position_edit.commands.save_and_continue' & t}</button> <button if.bind=\\\"model.positionActivationType != PositionActivationType.Reference\\\" class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestPositionCreate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'main.test.pages.position.position_edit.commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: positions;\\\" t=main.test.pages.position.position_edit.commands.cancel>Cancel</a> </div> </div> </div> </form> <div class=content-sidebar> <div class=\\\"row mb-3\\\" if.bind=\\\"model.highestDisc >= 0\\\"> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=main.test_reports.pages.reports.create_card.title></h5> <p class=card-text t=[html]main.admin.pages.reports.create_card.info>Lorem</p> <a class=\\\"btn btn-primary btn-round\\\" title=\\\"${'main.test_reports.pages.reports.create_card.title' & t}\\\" href=\\\"company/${companyId}/test-reports/reports?positionId=${model.id}\\\"> ${'commands.view' & t} </a> <a class=\\\"btn btn-primary btn-round\\\" title=\\\"${'commands.generate' & t}\\\" href=\\\"company/${companyId}/test-reports/reports/report/1?positionId=${model.id}\\\"> ${'commands.generate' & t} </a> </div> </div> </div> </div> </div> </div> </template>\";","import { autoinject, bindable, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { Notification } from \"common/services/notification\";\nimport { PositionExportByCompany } from \"models/test-position/positionExportByCompany\";\nimport { PositionExportStatus } from \"models/test-position/positionExportStatus\";\nimport { PositionExportByCompanyService } from \"../../services/position/position-export-by-company-service\";\n\nconst POLLING_INTERVAL_MS = 5000;\n\n@autoinject()\nexport class PositionExportCard {\n\n  private logger: Logger;\n\n  @bindable\n  public totalRecords: number = 0;\n\n  public model: PositionExportByCompany = new PositionExportByCompany();\n  public PositionExportStatus = PositionExportStatus;\n  private pollingHandle: any;\n\n  constructor(\n    private positionExportByCompanyService: PositionExportByCompanyService,\n    private notification: Notification,\n    private router: Router) {\n\n    this.logger = LogManager.getLogger(\"PositionExportCard\");\n  }\n\n  private async bind(): Promise<any> {\n    return await this.refreshStatus();\n  }\n\n  private detached(): void {\n    this.stopPolling();\n  }\n\n  private get isExporting(): boolean {\n    return this.model.status === PositionExportStatus.Processing;\n  }\n\n  private get canExport(): boolean {\n    return this.totalRecords > 0 && this.model.status !== PositionExportStatus.Processing;\n  }\n\n  private async refreshStatus(): Promise<void> {\n    try {\n      this.model = await this.positionExportByCompanyService.getStatus();\n      if (this.model.status === PositionExportStatus.Processing) {\n        this.startPolling();\n      }\n      else {\n        this.stopPolling();\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async exportPositions(): Promise<void> {\n    try {\n      this.model = await this.positionExportByCompanyService.create();\n      this.startPolling();\n    }\n    catch (error) {\n      if (error === \"main.test.pages.position.position_list.export_card.errors.already_in_progress\") {\n        this.notification.error(error);\n        this.startPolling();\n      }\n      else {\n        this.notification.error(error);\n      }\n    }\n  }\n\n  private downloadFile(): void {\n    if (this.model.logFileUrl) {\n      this.router.navigate(this.model.logFileUrl);\n    }\n  }\n\n  private startPolling(): void {\n    if (this.pollingHandle) {\n      return;\n    }\n\n    this.pollingHandle = setInterval(async () => {\n      await this.refreshStatus();\n    }, POLLING_INTERVAL_MS);\n  }\n\n  private stopPolling(): void {\n    if (this.pollingHandle) {\n      clearInterval(this.pollingHandle);\n      this.pollingHandle = null;\n    }\n  }\n}\n","module.exports = \"<template> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.test.pages.position.position_list.export_card.title' & t} </h5> <p> ${'main.test.pages.position.position_list.export_card.info' & t} </p> <p if.bind=\\\"totalRecords === 0\\\" class=text-muted> ${'main.test.pages.position.position_list.export_card.no_positions' & t} </p> <p if.bind=isExporting> <span class=\\\"spinner-border spinner-border-sm mr-2\\\" role=status aria-hidden=true></span> ${'main.test.pages.position.position_list.export_card.processing' & t} </p> <p if.bind=\\\"model.status === PositionExportStatus.Error\\\" class=text-danger> ${'main.test.pages.position.position_list.export_card.errors.generation_failed' & t} </p> <p if.bind=\\\"model.status === PositionExportStatus.Ready && model.generatedOn\\\"> <small class=text-muted> ${'main.test.pages.position.position_list.export_card.last_generated_on' & t} ${model.generatedOn | dateTimeFormat} </small> </p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=exportPositions() disabled.bind=!canExport t=main.test.pages.position.position_list.export_card.export_button> Exportar </button> <a href=# class=\\\"btn btn-link\\\" if.bind=\\\"model.status === PositionExportStatus.Ready && model.logFileUrl\\\" click.delegate=downloadFile()> <i class=material-icons>cloud_download</i> ${'main.test.pages.position.position_list.export_card.download_link' & t} </a> </div> </div> </template>\";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { Company } from \"models/companies/company\";\nimport { PositionService } from \"../../services/position/position-service\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { DeleteConfirmation } from \"main/components/delete-confirmation\";\nimport { Position } from \"models/test-position/position\";\nimport { FilteredReminderConfirmationModal } from \"../people/filtered-reminder-confirmation-modal\";\n\n@autoinject()\nexport class PositionList {\n\n  private logger: Logger;\n  private params: any = {};\n  public companyId: number;\n  private company: Company;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    let search = this.parameters.search.Query;\n    sessionStorage.setItem('positionListSearch', search == null ? '' : search);\n\n    return await this.positionService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  constructor(\n    private router: Router,\n    private positionService: PositionService,\n    private notification: Notification,\n    private dialogService: DialogService,\n  ) {\n\n    this.logger = LogManager.getLogger(\"PositionList\");\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.parameters.search.Query = sessionStorage.getItem('positionListSearch');\n    this.params = params;\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n      this.logger.debug(\"activate companyId:\", this.params.companyId);\n      this.companyId = +this.params.companyId;\n\n      this.positionService.client.currentCompanyId = this.companyId;\n\n      return await this.databind();\n\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async delete(item: Position): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: item.name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        return await this.positionService.delete(item.id)\n          .then(() => {\n            let indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(item.id.toString());\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.notification.success(\"notifications.item_deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n\n      }\n    });\n  }\n\n  private async clearFilters(): Promise<any> {\n    this.parameters.search.Query = this.parameters.search.StartDate = this.parameters.search.EndDate = null;\n    await this.databind();\n  }\n\n  private async sendFilteredReminder(): Promise<boolean | DialogCloseResult> {\n    return await this.dialogService.open({\n      viewModel: FilteredReminderConfirmationModal,\n      model: this.parameters.tableData.length\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        return await this.positionService.sendRemindersByFilter(this.parameters)\n          .then(() => {\n            this.notification.success(\"main.test.pages.person.send_reminder_list\")\n            return true;\n          });\n      }\n    });\n  }\n\n  private async sendReminder(id: number): Promise<boolean> {\n    try {\n      await this.positionService.sendReminder(id);\n      this.notification.success(\"main.test.pages.person.send_reminder\");\n      return true;\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { I18N } from \"aurelia-i18n\";\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\n\n@autoinject\nexport class PositionListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n\n    this.logger = LogManager.getLogger(\"PositionListChildRouter\");\n  }\n\n  public configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./position-list\"),\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.position.position_tabs.tab_disc\"),\n        name: \"positions\",\n      },\n      {\n        route: \"position-reference\",\n        moduleId: PLATFORM.moduleName(\"../position-reference/position-reference-list\"),\n        name: \"position-reference\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.position.position_reference_list.title\"),\n      },\n      {\n        route: \"position/:positionId\",\n        moduleId: PLATFORM.moduleName(\"./position-child-router\"),\n        name: \"position-child-router\",\n      },\n\n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> </div> </div> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=../../../components/three-tags.html></require> <require from=../../../../models/test-position/positionActivationTypeViewEngineHooks></require> <require from=./position-export-card></require> <h2> ${'main.test.pages.position.position_list.title' & t} </h2> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.test.pages.position.position_list.info' & t} </p> </div> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> <div class=\\\"col-md-4 col-12 text-right\\\" if.bind=\\\"parameters.search.Query || parameters.search.StartDate || parameters.search.EndDate\\\"> <button class=\\\"btn btn-link\\\" click.delegate=sendFilteredReminder()> <i class=material-icons>email</i> ${'main.test.pages.people.send_filtered_reminder' & t} </button> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <a class=\\\"btn btn-link collapse-header\\\" data-toggle=collapse href=#collapseMoreFilterOptions role=button aria-expanded=false aria-controls=collapseMoreFilterOptions> <i class=material-icons>chevron_right</i> ${'commons.more_filter_options' & t} </a> </div> <div class=\\\"col-md-4 col-12\\\" if.bind=\\\"parameters.search.Query || parameters.search.StartDate || parameters.search.EndDate\\\" global-permission-show=\\\"can: TestPositionUpdate\\\"> <button class=\\\"btn btn-link\\\" click.delegate=clearFilters()> <i class=material-icons>clear</i> ${'commons.clear_filters' & t} </button> </div> </div> <div class=collapse id=collapseMoreFilterOptions> <div class=row> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=startDate t=commons.start_date>Start_Date</label> <ux-date-picker value.bind=parameters.search.StartDate change.delegate=\\\"databind() & debounce:100\\\" id=startDate></ux-date-picker> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=endDate t=commons.end_date>Start_Date</label> <ux-date-picker value.bind=parameters.search.EndDate change.delegate=\\\"databind() & debounce:100\\\" id=endDate></ux-date-picker> </div> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-2 col-3 text-truncate mb-2\\\" if.bind=\\\"item.highestDisc >= 0\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_list.status.title' & t}</small> </label> <span class=\\\"badge badge-pill badge-success\\\">${'main.test.pages.position.position_list.statuses.activated' & t}</span> </div> <div class=\\\"col-md-2 col-3 text-truncate mb-2\\\" if.bind=\\\"item.highestDisc == null\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_list.status.title' & t}</small> </label> <span class=\\\"badge badge-pill badge-warning\\\">${'main.test.pages.position.position_list.statuses.processing' & t}</span> </div> <div class=\\\"col-md-2 col-9 mb-2 minh-40 text-truncate\\\"> <a route-href=\\\"route: position-child-router; params.bind: {positionId:item.id}\\\" title=${item.name}> ${item.name} </a> <br/> <small if.bind=\\\"item.positionActivationType === PositionActivationType.Concerted\\\" class=text-mutted>${item.finalizedEvaluatorsQuantity} ${'commons.of' & t} ${item.evaluatorsQuantity}</small> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_list.activation_type' & t}</small> </label> ${'main.test.pages.position.position_edit.activation_type.' + PositionActivationType[item.positionActivationType] & t} </div> <div class=\\\"col-md-3 col-12 mb-2 text-truncate\\\"> <div class=mb-2> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_list.date' & t}</small> </label> <span title=\\\"${item.createdOn | dateTimeFormat}\\\">${item.createdOn | dateTimeFormat}</span> </div> <div> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_list.evaluator' & t}</small> </label> <span title=${item.createdByName}>${item.createdByName}</span> </div> </div> <div class=\\\"col-md-2 col-12 minh-90 mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.position.position_list.tags' & t}</small> </label> <three-tags tags.bind=item.tags></three-tags> </div> <div class=\\\"col-md-1 col-12 mb-2\\\"> <a href=# if.bind=\\\"item.highestDisc == null && (item.positionActivationType === PositionActivationType.Concerted || item.positionActivationType === PositionActivationType.Individual)\\\" global-permission-show=\\\"can: TestPositionUpdate\\\" click.delegate=sendReminder(item.id) title.bind=\\\"'commands.send' & t\\\" role=button> <i class=material-icons>email</i> </a> <a if.bind=\\\"item.highestDisc >= 0\\\" global-permission-show=\\\"can: TestPositionUpdate\\\" title=\\\"${'main.testperson.pages.person.view_reports' & t}\\\" href=\\\"company/${companyId}/test-reports/reports?positionId=${item.id}\\\" role=button> <i class=material-icons>assessment</i> </a> <a href=# global-permission-show=\\\"can: TestPositionDelete\\\" click.delegate=delete(item) title.bind=\\\"'commands.archive' & t\\\" role=button> <i class=material-icons>archive</i> </a> </div> </div> </li> </ul> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPositionCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.test.pages.position.position_list.card_title' & t} </h5> <p t=[html]main.test.pages.position.position_list.card_info>Create new </p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: position-child-router; params.bind: {positionId:'create'} \\\" t=commands.create>New </a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPositionCreate\\\"> <div class=col-12> <position-export-card total-records.bind=parameters.totalRecords></position-export-card> </div> </div> </div> </div> </template>\";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable-pagination\";\nimport { Notification } from \"common/services/notification\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { TagManagmentService } from \"main/test/services/tags/tags-managment-service\";\nimport { Tag } from \"models/tag/tag\";\nimport { TagManagment } from \"models/tag/tag-managment\";\nimport { TagsModal } from \"./tags-modal\";\n\n@autoinject()\nexport class TagsList {\n\n  private logger: Logger;\n  private params: any = {};\n  public companyId: number;\n  public modal: TagManagment = {\n    tagId:0,\n    tagName:'',\n    tagNewName:'',\n    tagCount: 0,\n    personCount: 0,\n    positionCount: 0,\n    teamCount: 0,\n    organizationCount: 0,\n    bulkActivationCount: 0,\n    bulkResultCount: 0,\n    bulkDownloadCount: 0,\n    isUpdate: true\n  };\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  constructor(\n    private router: Router,\n    private tagManagmentService: TagManagmentService,\n    private notification: Notification,\n    private dialogService: DialogService,\n  ) {\n\n    this.logger = LogManager.getLogger(\"TagsList\");\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    let search = this.parameters.search.Query;\n    sessionStorage.setItem('tagsListSearch', search == null ? '' : search);\n\n    return await this.tagManagmentService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.parameters.search.Query = sessionStorage.getItem('tagsListSearch');\n    this.params = params;\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n      this.logger.debug(\"activate companyId:\", this.params.companyId);\n      this.companyId = +this.params.companyId;\n      this.tagManagmentService.client.currentCompanyId = this.companyId;\n      return await this.databind();\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async clearFilters() {\n    this.parameters.search.Query = this.parameters.search.StartDate = this.parameters.search.EndDate = null;\n    return await this.databind();\n  }\n\n  public async editOrDelete(item: TagManagment,isUpdate: boolean): Promise<void> {\n    let tagInfo = await this.tagManagmentService.getByTagName(item);\n    let oldTagName = item.tagName;\n    tagInfo.isUpdate = isUpdate;\n    return await this.dialogService.open({\n      viewModel: TagsModal,\n      model: tagInfo\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled && oldTagName!=tagInfo.tagName) {\n        this.modal = tagInfo;\n        this.modal.tagNewName = tagInfo.tagName;\n        this.modal.tagName = oldTagName;\n        return await this.tagManagmentService.updateOrDelete(this.modal)\n          .then(async () => {\n            let indexOfEditedModel: number = this.parameters.tableData.findIndex(({tagId}) => tagId === this.modal.tagId);\n            this.parameters.tableData[indexOfEditedModel] = this.modal;\n            this.notification.warning(\"main.admin.pages.tags.notifications.edited\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n      else if(!response.wasCancelled) {\n        this.modal = tagInfo;\n        return await this.tagManagmentService.updateOrDelete(this.modal)\n          .then(() => {\n            let indexOfEditedModel: number = this.parameters.tableData.findIndex(({tagId}) => tagId === this.modal.tagId);\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.parameters.totalRecords--;\n            this.notification.warning(\"main.admin.pages.tags.notifications.deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n      }\n    });\n  }\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { I18N } from \"aurelia-i18n\";\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\n\n@autoinject\nexport class TagsListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor (\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n\n    this.logger = LogManager.getLogger( \"TagsListChildRouter\" );\n  }\n\n  public configureRouter ( config: RouterConfiguration, router: Router ): void {\n    this.router = router;\n    config.map( [\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./tags-list\"),\n        name: \"tags-list\",\n      },\n    ] );\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template>\";","module.exports = \"<template> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <h2>${'main.test.pages.tags.title' & t}</h2> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.test.pages.tags.info' & t} </p> </div> </div> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-4\\\"> <ux-datatable-pagination-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-pagination-search> </div> <div class=col-2> <ux-datatable-pagination-info parameters.bind=parameters t=[message]ux_datatable.message> </ux-datatable-pagination-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <table class=\\\"table table-shadow table-responsive\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <thead> <tr class=d-flex> <th class=col-md-4 scope=col t=main.admin.pages.labels.name>Name</th> <th class=col-md-3 scope=col></th> </tr> </thead> <tbody> <tr class=d-flex virtual-repeat.for=\\\"item of parameters.tableData\\\"> <td class=\\\"col-md-4 text-truncate\\\"><span title=${item.tagName}>${item.tagName}</span></td> <td class=\\\"col-md-3 d-flex\\\"> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: TestPersonUpdate\\\" click.delegate=editOrDelete(item,true) title.bind=\\\"'commands.edit' & t\\\"><i class=material-icons>edit</i></button> <button class=\\\"btn btn-link\\\" global-permission-show=\\\"can: TestPersonUpdate\\\" click.delegate=editOrDelete(item,false) title.bind=\\\"'commands.archive' & t\\\"><i class=material-icons>archive</i></button> </td> </tr> </tbody> </table> </div> </div> <ux-datatable-pagination-selector parameters.bind=parameters input-classes=form-control on-refresh.bind=refresh> </ux-datatable-pagination-selector> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { TagManagment } from \"models/tag/tag-managment\";\n\n@autoinject()\nexport class TagsModal {\n\n  private logger: Logger;\n  private model: TagManagment;\n  private validationController: ValidationController;\n  private tagName: string;\n\n  constructor(\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n    this.logger = LogManager.getLogger(\"TagsModal\");\n\n  }\n\n  private async activate(model: TagManagment): Promise<any> {\n    this.model = model;\n    this.tagName = this.model.tagName;\n    this.configureValidationRules();\n  }\n\n  private configureValidationRules(): void {\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.admin.pages.labels.name\").required()\n      .on(this.model);\n  }\n\n  public async submit(): Promise<void> {\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          \n          return await this.save();\n        }\n      });\n  }\n\n  public async save(): Promise<any> {\n    return await this.dialogController.ok();\n\n  }\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${tagName & t}</h2> <form> <div class=form-group> <input if.bind=model.isUpdate attach-focus=true type=text value.bind=\\\"model.tagName & validate\\\" class=form-control id=name> </div> <div class=form-group> <label for=personCount>${'main.admin.pages.tags.person.count' & t}</label> <label>${model.personCount & t}</label> </div> <div class=form-group> <label for=personCount>${'main.admin.pages.tags.position.count' & t}</label> <label>${model.positionCount & t}</label> </div> <div class=form-group> <label for=personCount>${'main.admin.pages.tags.organization.count' & t}</label> <label>${model.organizationCount & t}</label> </div> <div class=form-group> <label for=personCount>${'main.admin.pages.tags.team.count' & t}</label> <label>${model.teamCount & t}</label> </div> <div class=form-group> <label for=personCount>${'main.admin.pages.tags.bulk-activation.count' & t}</label> <label>${model.bulkActivationCount & t}</label> </div> <div class=form-group> <label for=personCount>${'main.admin.pages.tags.bulk-download.count' & t}</label> <label>${model.bulkDownloadCount & t}</label> </div> <div class=form-group> <label for=personCount>${'main.admin.pages.tags.bulk-result.count' & t}</label> <label>${model.bulkResultCount & t}</label> </div> <div class=\\\"form-group text-right\\\"> <button if.bind=\\\"model.tagName==tagName && model.isUpdate\\\" class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit() disabled=disabled>${'commands.save' & t}</button> <button if.bind=\\\"model.tagName!=tagName && model.isUpdate\\\" class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit()>${'commands.save' & t}</button> <button if.bind=!model.isUpdate class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit()>${'commands.delete' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { TeamService } from \"main/test/services/team/team-service\";\nimport { TeamActivationService } from \"main/test/services/team/team-activation-service\";\nimport { Team } from \"models/team/team\";\nimport { Activation } from 'models/test-person/activation';\nimport { QuestionaryService } from 'main/admin/services/questionaries/questionary-service';\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { QuestionaryType } from \"models/questionaries/questionaryType\";\nimport { ItemToQualify } from \"models/questionaries/itemToQualify\";\n\n@autoinject()\nexport class TeamActivationCreate {\n\n  private logger: Logger;\n  public companyId: number;\n\n  private teamId: number;\n\n  private model: Activation = new Activation();\n  private modelTeam: Team = new Team();\n  private validationController: ValidationController;\n  private questionaries: Questionary[] = [];\n\n  constructor(\n    private router: Router,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private teamService: TeamService,\n    private companyQuestionaryService: QuestionaryService,\n    private teamActivation: TeamActivationService\n\n  ) {\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"TeamActivationCreate\");\n    //this.model.tags = \"\";\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.test.pages.position.position_edit.name\").required()\n      .on(this.model);\n  }\n\n  public async activate(params: any): Promise<any> {\n    if (!isNaN(params.companyId)) {\n      this.companyId = +params.companyId;\n\n      this.teamService.client.currentCompanyId = this.companyId;\n      if (!isNaN(params.teamId)) {\n        this.teamId = params.teamId;\n        this.modelTeam = await this.teamService.getById(this.teamId);\n\n        const questionaries = await this.getQuestionaries();\n        this.questionaries = questionaries.filter(itm => (itm.questionaryType === QuestionaryType.NoDisc && itm.itemToQualify === ItemToQualify.Team && itm.isActive === true));\n        this.configureValidationRules();\n      } else {\n        this.configureValidationRules();\n      }\n    }\n  }\n  private async getQuestionaries(): Promise<Questionary[]> {\n    return await this.companyQuestionaryService.getAll();\n  }\n\n  public async submit(keepEditing: boolean, teamId: number): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          return await this.create(keepEditing, teamId);\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  get canSave() {\n    return !this.teamService.client.isRequesting;\n  }\n\n  private async create(keepEditing: boolean, teamId: number): Promise<any> {\n    return await this.teamActivation.create(this.model, teamId)\n      .then(async (result: Activation) => {\n        this.notification.success(\"notifications.item_edited\");\n        if (keepEditing) {\n          return await this.router.navigateToRoute(\"team-child-router\", { teamId: result.id });\n        }\n        else {\n          return await this.router.navigateToRoute(\"team-activation-list\");\n        }\n\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n}\n","module.exports = \"<template> <require from=../../../../models/questionaries/noDiscTypeViewEngineHooks></require> <h2> ${modelTeam.name} / ${'main.test.pages.teams.activation.description' & t} </h2> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.test.pages.teams.team_activation.info' & t} </p> </div> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-6> <div class=form-group> <label for=model.activation.questionaryId>${'main.test.pages.people.questionary' & t}</label> <select value.bind=\\\"model.questionaryId & validate\\\" class=form-control id=questionaryId> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of questionaries\\\" model.bind=option.id>${option.name}</option> </select> </div> </div> <div class=col-12> <div class=form-group> <label for=model.tags>${'main.test.pages.teams.team_edit.tags' & t}</label> <company-tags-input value.bind=model.tags /> </div> </div> <div class=col-12> <div class=row style=margin-bottom:50px> <div class=col> <label>${'main.testperson.pages.person.additional_text' & t}</label> <quill-editor value.bind=\\\"model.additionalText & validate\\\"></quill-editor> </div> </div> </div> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestTeamActivationCreate\\\" click.delegate=submit(false,modelTeam.id) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: team-list;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </div> </div> </template> \";","import { PersonService } from 'main/test/services/people/person-service';\nimport { TeamService } from '../../services/team/team-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { TeamActivationService } from \"main/test/services/team/team-activation-service\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { Team } from 'models/team/team';\n\n@autoinject()\nexport class TeamActivationList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n  private teamId: number;\n\n\n  private peopleParameters: UxDatatableParameters = new UxDatatableParameters();\n  private peopleUxDatatable: UxDatatableCustomAttribute;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  // private uxDatatable: UxDatatableCustomAttribute;\n\n  private refresh = async (): Promise<UxDatatableResponse> => {\n    // this.logger.debug(\"refreshing\");\n    return await this.teamActivationService.list(this.parameters, this.teamId);\n  }\n  private modelTeam: Team = new Team();\n\n\n  constructor(\n    private router: Router,\n    private personService: PersonService,\n    private teamService: TeamService,\n    private teamActivationService: TeamActivationService,\n    private dialogService: DialogService,\n    private notification: Notification\n\n  ) {\n\n    this.logger = LogManager.getLogger(\"TeamActivationList\");\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.params = params;\n    \n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n      this.companyId = +this.params.companyId;\n      // this.teamService.client.currentCompanyId = this.companyId;\n      this.teamActivationService.client.currentCompanyId = this.companyId;\n\n      if (!isNaN(this.params.teamId)) {\n        this.teamId = this.params.teamId;\n        this.modelTeam = await this.teamService.getById(this.teamId);\n\n        await this.databind();\n\n      }\n    }\n  }\n\n  private async databind(): Promise<void> {\n    // this.logger.debug(\"databind\");\n    try {\n      let response: UxDatatableResponse = await this.refresh();\n      this.parameters.tableData = response.data;\n      this.parameters.totalRecords = response.totalRecords;\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n\n\n  private async getMorePeople(scrollContext: any): Promise<void> {\n    return await this.peopleUxDatatable.getMoreItems(scrollContext);\n  }\n\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { I18N } from \"aurelia-i18n\";\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\n\n@autoinject\nexport class TeamActivationListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n\n    this.logger = LogManager.getLogger(\"TeamActivationListChildRouter\");\n  }\n\n  public configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./team-activation-list\"),\n        name: \"team-activation-list\",\n      },\n      {\n        route: \"create\",\n        moduleId: PLATFORM.moduleName(\"./team-activation-create\"),\n        name: \"team-activation-create\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.test.pages.bulk_activation.page_title\"),\n      },\n      {\n        route: \"evaluators/:activationId\",\n        moduleId: PLATFORM.moduleName(\"../team-evaluator/team-evaluator-list-child-router\"),\n        name: \"team-evaluator-list-child-router\",\n        // nav: true,\n        // title: this.i18n.tr(\"main.test.pages.bulk_activation.page_title\"),\n      },\n\n\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=../../../../models/questionaries/noDiscTypeViewEngineHooks></require> <div if.bind=\\\"modelTeam.peopleQuantity == 0 || !teamId\\\"> ${'main.test.pages.teams.team_activation_list.msg_first_create_item' & t} </div> <div if.bind=\\\"modelTeam.peopleQuantity > 0 && teamId\\\"> <h2> ${'main.test.pages.teams.team_edit.title' & t} / ${modelTeam.name} </h2> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.testperson.pages.team_activation.list_created' & t}</small> </label> ${item.createdOn | dateTimeFormat} </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.testperson.pages.team_activation.list_type' & t}</small> </label> <span title=\\\"${'main.admin.pages.questionaries.no_disc_type.' + NoDiscType[item.noDiscType] & t}\\\">${'main.admin.pages.questionaries.no_disc_type.' + NoDiscType[item.noDiscType] & t}</span> </div> <div class=\\\"col-md-3 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.testperson.pages.team_activation.list_user' & t}</small> </label> <span title=${item.userName}>${item.userName}</span> </div> <div class=\\\"col-md-3 col-12 mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.testperson.pages.team_activation.list_evaluators' & t}</small> </label> <a global-permission-show=\\\"can: TestTeamActivationView\\\" title=\\\"${'commands.view' & t}\\\" route-href=\\\"route: team-evaluator-list-child-router ; params.bind: {activationId: item.id} \\\" role=button> <i class=material-icons>visibility</i> </a> </div> </div> </li> </ul> </div> </div> </div> <div class=content-sidebar global-permission-show=\\\"can: TestTeamActivationCreate\\\"> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.testteam.pages.masive_activation.list_create_card_title' & t} </h5> <p t=[html]main.testteam.pages.masive_activation.list_create_card_info>Create new core group</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: team-activation-create;\\\" t=main.testperson.pages.masive_activation.list_create_card_command>New bulk activation</a> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=main.test_reports.pages.reports.create_card.title></h5> <p class=card-text t=[html]main.admin.pages.reports.create_card.info>Lorem</p> <a class=\\\"btn btn-primary btn-round\\\" title=\\\"${'commands.generate' & t}\\\" href=\\\"company/${companyId}/test-reports/reports?teamId=${modelTeam.id}\\\"> ${'commands.generate' & t} </a> </div> </div> </div> </div> </div> </div> </div> </template> \";","import { PersonService } from 'main/test/services/people/person-service';\nimport { TeamService } from '../../services/team/team-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { TeamEvaluatorService } from \"main/test/services/team/team-evaluator-service\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { Activation } from 'models/test-person/activation';\nimport { TeamActivationService } from 'main/test/services/team/team-activation-service';\nimport { ActivationService } from 'main/test/services/people/activation-service';\nimport { PersonLoginInfoModal } from '../people/person-login-info-modal';\n\n@autoinject()\nexport class TeamEvaluatorList {\n\n  private logger: Logger;\n  private params: any = {};\n  private questionaryName: string;\n  public companyId: number;\n  private teamId: number;\n  private activationId: number;\n\n  private peopleParameters: UxDatatableParameters = new UxDatatableParameters();\n  private peopleUxDatatable: UxDatatableCustomAttribute;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  // private uxDatatable: UxDatatableCustomAttribute;\n\n  private refresh = async (): Promise<UxDatatableResponse> => {\n    // this.logger.debug(\"refreshing\");\n    return await this.teamEvaluatorService.list(this.parameters, this.activationId);\n  }\n  private modelActivation: Activation = new Activation();\n  constructor(\n    private router: Router,\n    private personService: PersonService,\n    private teamService: TeamService,\n    private teamEvaluatorService: TeamEvaluatorService,\n    private dialogService: DialogService,\n    private notification: Notification,\n    private teamActivation: ActivationService\n  ) {\n\n    this.logger = LogManager.getLogger(\"TeamActivationList\");\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.params = params;\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n      this.companyId = +this.params.companyId;\n\n      if (!isNaN(this.params.teamId)) {\n        this.teamId = this.params.teamId;\n        this.activationId = this.params.activationId;\n        this.teamService.client.currentCompanyId = this.companyId;\n        this.modelActivation = await this.teamActivation.getById(this.activationId);\n        this.teamEvaluatorService.client.currentCompanyId = this.companyId;\n        this.questionaryName = this.modelActivation.questionaryName;\n        await this.databind();\n\n      }\n    }\n  }\n\n  private async databind(): Promise<void> {\n    // this.logger.debug(\"databind\");\n    try {\n      let response: UxDatatableResponse = await this.refresh();\n      this.parameters.tableData = response.data;\n      this.parameters.totalRecords = response.totalRecords;\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n\n\n  private async getMorePeople(scrollContext: any): Promise<void> {\n    return await this.peopleUxDatatable.getMoreItems(scrollContext);\n  }\n  private async sendIndividualReminder(id: number): Promise<boolean> {\n    try {\n      await this.personService.sendReminder(id);\n      this.notification.success(\"main.test.pages.person.send_reminder\");\n      return true;\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n  private async viewLoginInfo(personId: number): Promise<any> {\n    return await this.dialogService.open({\n      viewModel: PersonLoginInfoModal,\n      model: personId\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        return await this.sendIndividualReminder(personId);\n      }\n    });\n  }\n\n}\n","import { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { I18N } from \"aurelia-i18n\";\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\n\n@autoinject\nexport class TeamvaluatorListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n\n    this.logger = LogManager.getLogger(\"TeamvaluatorListChildRouter\");\n  }\n\n  public configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./team-evaluator-list\"),\n        name: \"team-evaluator-list\",\n      }\n    ]);\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=../../../../models/test-person/activationQuestionaryStatusViewEngineHooks></require> <require from=../../../../models/test-organization/organizationActivationTypeViewEngineHooks></require> <h2> ${'main.testperson.pages.team_activation.list_evaluators' & t} / ${questionaryName} - ${modelActivation.createdOn | dateTimeFormat} </h2> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\" if.bind=\\\"item.activationQuestionaryStatus == ActivationQuestionaryStatus.Finalized\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.state' & t}</small> </label> <span class=\\\"badge badge-pill badge-success\\\">${'main.test.pages.person.person_questionary_list.state_' + ActivationQuestionaryStatuses[item.activationQuestionaryStatus] & t}</span> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\" if.bind=\\\"item.activationQuestionaryStatus != ActivationQuestionaryStatus.Finalized\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.state' & t}</small> </label> <span class=\\\"badge badge-pill badge-warning\\\">${'main.test.pages.person.person_questionary_list.state_' + ActivationQuestionaryStatuses[item.activationQuestionaryStatus] & t}</span> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <a title=${item.evaluator.fullName} href=company/${companyId}/test/people/person/${item.evaluator.id}> ${item.evaluator.fullName} </a> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.organizations.organization_evaluator_list.email' & t}</small> </label> <span title=${item.evaluator.email}>${item.evaluator.email}</span> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.activation_date' & t}</small> </label> <span title=\\\"${item.createdOn | dateTimeFormat}\\\">${item.createdOn | dateTimeFormat}</span> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.person.person_questionary_list.application_date' & t}</small> </label> <span title=\\\"${item.applicationDate | dateTimeFormat}\\\">${item.applicationDate | dateTimeFormat}</span> </div> <div class=\\\"col-md-2 col-12 mb-2\\\"> <a href=# if.bind=item.evaluator.email click.delegate=sendIndividualReminder(item.evaluator.id) title.bind=\\\"'commands.send' & t\\\" role=button> <i class=material-icons>email</i> </a> <a href=# click.delegate=viewLoginInfo(item.evaluator.id) title.bind=\\\"'commands.link' & t\\\" role=button> <i class=material-icons>link</i> </a> </div> </div> </li> </ul> </div> </div> </div> </div> </template> \";","import { Activation } from '../../../../models/test-person/activation';\nimport { TeamPerson } from 'models/team/teamPerson';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { Notification } from \"common/services/notification\";\nimport { TeamPersonActivationService } from 'main/test/services/team/team-person-activation-service';\n\n@autoinject()\nexport class TeamPersonActivationListModal {\n\n  private model: TeamPerson = new TeamPerson();\n\n  private activations: Array<Activation> = [];\n\n  private logger: Logger;\n\n  constructor(\n    private dialogController: DialogController,\n    private notification: Notification,\n    private teamPersonActivationService: TeamPersonActivationService,\n  ) {\n\n    this.logger = LogManager.getLogger(\"TeamPersonActivationListModal\");\n\n  }\n\n  public async activate(model: TeamPerson): Promise<void> {\n    this.logger.debug(\"activate\");\n    this.model = model;\n\n    try {\n      this.activations = await this.teamPersonActivationService.getByPersonId(this.model.personId);\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n\n  }\n\n  private async submit(): Promise<any> {\n    return await this.dialogController.ok();\n  }\n\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'main.test.pages.team.team_person_activation_list.title' & t}</h2> <p t=main.test.pages.team.team_person_activation_list.info t-params.bind=\\\"{name: model.person.fullName}\\\">Info </p> <form> <div class=\\\"custom-control custom-radio\\\" repeat.for=\\\"item of activations\\\"> <input class=custom-control-input type=radio name=activations id=radio${$index} model.bind=item.id checked.bind=model.activationId> <label if.bind=item.applicationDate class=custom-control-label for=radio${$index}> ${item.applicationDate | dateFormat} </label> <label if.bind=!item.applicationDate class=custom-control-label for=radio${$index}> ${'main.test.pages.team.team_person_activation_list.no_application_date' & t} </label> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit()>${'commands.select' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { DialogController } from \"aurelia-dialog\";\nimport { Notification } from \"common/services/notification\";\nimport { Person } from 'models/test-person/person';\nimport { ValidationController, ValidationRules, ControllerValidateResult, ValidationControllerFactory } from 'aurelia-validation';\nimport { CompanyQuestionaryService } from 'main/admin/services/test-management/company-questionary-service';\nimport { Questionary } from \"models/questionaries/questionary\";\nimport { QuestionaryType } from \"models/questionaries/questionaryType\";\nimport { ItemToQualify } from \"models/questionaries/itemToQualify\";\nimport { Activation } from \"models/test-person/activation\";\nimport { PersonActivationType } from \"models/test-person/personActivationType\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\n\n@autoinject()\nexport class TeamPersonDiscActivationModal {\n\n  private logger: Logger;\n  public companyId: number;\n\n  private model: Person = new Person();\n  private validationController: ValidationController;\n\n  private questionaries: Questionary[] = [];\n\n  constructor(\n    private dialogController: DialogController,\n    private validationControllerFactory: ValidationControllerFactory,\n    private notification: Notification,\n    private companyQuestionaryService: CompanyQuestionaryService,\n  ) {\n\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"TeamPersonDiscActivationModal\");\n\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"firstName\").displayName(\"main.test.pages.people.first_name\").required()\n      .ensure(\"lastName\").displayName(\"main.test.pages.people.last_name\").required()\n      .ensure(\"activation.questionaryId\").displayName(\"main.test.pages.people.questionary\").required()\n      .on(this.model);\n  }\n\n  public async activate(companyId: number): Promise<any> {\n    if (!isNaN(companyId)) {\n      try {\n        this.companyId = companyId;\n        this.companyQuestionaryService.client.currentCompanyId = this.companyId;\n\n        // set new activation\n        this.model.activation = new Activation();\n        this.model.activation.personActivationType = PersonActivationType.Normal;\n\n        const questionaries = await this.getQuestionaries();\n        this.questionaries = questionaries.filter(itm => (itm.questionaryType === QuestionaryType.Disc && itm.itemToQualify === ItemToQualify.Person));\n\n        this.configureValidationRules();\n      }\n      catch (error) {\n        this.notification.error(error);\n      }\n    }\n  }\n\n  private async getQuestionaries(): Promise<Questionary[]> {\n    return await this.companyQuestionaryService.getAll();\n  }\n\n  public async submit(): Promise<void> {\n    this.logger.info(\"submit\");\n\n    try {\n      let result: ControllerValidateResult = await this.validationController.validate();\n      if (result.valid) {\n        return await this.save();\n      }\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async save(): Promise<any> {\n    return await this.dialogController.ok(this.model);\n  }\n\n}\n","module.exports = \"<template> <ux-dialog> <ux-dialog-body> <div class=row> <div class=\\\"col-12 text-right\\\"> <button class=\\\"btn btn-link\\\" click.delegate=dialogController.cancel()> <i class=material-icons> close </i> </button> </div> </div> <h2>${'main.test.pages.team.team_person_disc_activation.title' & t}</h2> <p t=main.test.pages.team.team_person_disc_activation.info>Info </p> <div class=\\\"alert alert-primary\\\" role=alert> ${'main.test.pages.team.team_person_disc_activation.warning' & t} </div> <form> <div class=form-group> <label for=model.firstName>${'main.test.pages.people.first_name' & t}</label> <input type=text class=form-control id=model.firstName t=[placeholder]main.test.pages.people.first_name value.bind=\\\"model.firstName & validate\\\"> </div> <div class=form-group> <label for=model.lastName>${'main.test.pages.people.last_name' & t}</label> <input type=text class=form-control id=model.lastName t=[placeholder]main.test.pages.people.last_name value.bind=\\\"model.lastName & validate\\\"> </div> <div class=form-group> <label for=model.email>${'main.test.pages.people.email' & t}</label> <input type=text class=form-control id=model.email t=[placeholder]main.test.pages.people.email value.bind=\\\"model.email & validate\\\"> </div> <div class=form-group> <label for=model.phone>${'main.test.pages.people.phone' & t}</label> <input type=text class=form-control id=model.phone t=[placeholder]main.test.pages.people.phone value.bind=\\\"model.phone & validate\\\"> </div> <div class=form-group> <label for=model.document>${'main.test.pages.people.document' & t}</label> <input type=text class=form-control id=model.document t=[placeholder]main.test.pages.people.document value.bind=\\\"model.document & validate\\\"> </div> <div class=form-group> <label for=model.tags>${'main.testperson.pages.person.tags' & t}</label> <company-tags-input value.bind=model.tags /> </div> <div class=form-group> <label for=model.activation.questionaryId>${'main.test.pages.people.questionary' & t}</label> <select value.bind=\\\"model.activation.questionaryId & validate\\\" class=form-control> <option t=forms.select_option value=\\\"\\\"></option> <option repeat.for=\\\"option of questionaries\\\" model.bind=option.id>${option.name}</option> </select> </div> <div class=form-group> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> <div class=\\\"form-group text-right\\\"> <button class=\\\"btn btn-primary btn-round\\\" type=submit click.delegate=submit()>${'commands.save' & t}</button> <button class=\\\"btn btn-outline-secondary btn-round\\\" click.delegate=dialogController.cancel()>${'commands.cancel' & t}</button> </div> </form> </ux-dialog-body> </ux-dialog> </template> \";","import { PersonService } from 'main/test/services/people/person-service';\nimport { TeamService } from '../../services/team/team-service';\nimport { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { TeamPersonService } from \"main/test/services/team/team-person-service\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { TeamPerson } from \"models/team/teamPerson\";\nimport { Team } from \"models/team/team\";\nimport { TeamPersonActivationListModal } from './team-person-activation-list-modal';\nimport { TeamPersonDiscActivationModal } from './team-person-disc-activation-modal';\nimport { Person } from 'models/test-person/person';\n\ninterface ItemSetMap {\n  [id: number]: boolean;\n}\n\n\n@autoinject()\nexport class TeamPersonList {\n\n  private logger: Logger;\n  private params: any = {};\n\n  public companyId: number;\n  private teamId: number;\n  private model: Team;\n\n  private peopleToInclude: ItemSetMap = {};\n  private peopleToExclude: ItemSetMap = {};\n\n  private peopleParameters: UxDatatableParameters = new UxDatatableParameters();\n  private peopleUxDatatable: UxDatatableCustomAttribute;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  // private uxDatatable: UxDatatableCustomAttribute;\n\n  private refresh = async (): Promise<UxDatatableResponse> => {\n    // this.logger.debug(\"refreshing\");\n    return await this.teamPersonService.list(this.parameters, this.teamId);\n  }\n\n  private peopleRefresh = async (): Promise<UxDatatableResponse> => {\n    // this.logger.debug(\"refreshing\");\n    return await this.teamPersonService.peopleList(this.peopleParameters, this.teamId);\n  }\n\n  constructor(\n    private router: Router,\n    private personService: PersonService,\n    private teamService: TeamService,\n    private teamPersonService: TeamPersonService,\n    private dialogService: DialogService,\n    private notification: Notification\n  ) {\n\n    this.logger = LogManager.getLogger(\"TeamPersonList\");\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.params = params;\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n      this.companyId = +this.params.companyId;\n\n      if (!isNaN(this.params.teamId)) {\n        this.teamId = this.params.teamId;\n\n        this.teamService.client.currentCompanyId = this.companyId;\n        this.teamPersonService.client.currentCompanyId = this.companyId;\n\n        this.model = await this.teamService.getById(this.teamId);\n\n        await this.peopleDatabind();\n\n        await this.databind();\n\n      }\n    }\n  }\n\n  private async databind(): Promise<void> {\n    // this.logger.debug(\"databind\");\n    try {\n      let response: UxDatatableResponse = await this.refresh();\n      this.parameters.tableData = response.data;\n      this.parameters.totalRecords = response.totalRecords;\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async peopleDatabind(): Promise<void> {\n    // this.logger.debug(\"databind\");\n    try {\n      let response: UxDatatableResponse = await this.peopleRefresh();\n      this.peopleParameters.tableData = response.data;\n      this.peopleParameters.totalRecords = response.totalRecords;\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async getMorePeople(scrollContext: any): Promise<void> {\n    return await this.peopleUxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async addItem(teamPerson: TeamPerson): Promise<any> {\n\n    teamPerson.teamId = this.teamId;\n\n    try {\n\n      teamPerson = await this.teamPersonService.create(teamPerson, this.teamId);\n      // delete from people list\n      let indexOfEditedModel: number = this.peopleParameters.tableData.findIndex(x => x.personId === teamPerson.personId);\n      this.peopleParameters.tableData.splice(indexOfEditedModel, 1);\n      this.peopleParameters.totalRecords--;\n\n      // add to team people\n      this.parameters.tableData.unshift(teamPerson);\n      this.parameters.totalRecords++;\n\n      this.notification.success(\"notifications.item_added\");\n\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async removeItem(teamPerson: TeamPerson) {\n    try {\n\n      await this.teamPersonService.delete(teamPerson.id);\n\n      // await this.peopleDatabind();\n\n      // await this.databind();\n\n      // delete from team people list\n      let indexOfEditedModel: number = this.parameters.tableData.findIndex(x => x.id === teamPerson.id);\n      this.parameters.tableData.splice(indexOfEditedModel, 1);\n      this.parameters.totalRecords--;\n\n      // add to team people\n      this.peopleParameters.tableData.unshift(teamPerson);\n      this.peopleParameters.totalRecords++;\n\n      this.notification.success(\"notifications.item_deleted\");\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  private async addWithCustomActivation(model: TeamPerson): Promise<void> {\n\n    return await this.dialogService.open({\n      viewModel: TeamPersonActivationListModal,\n      model: model\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n        await this.addItem(model);\n      }\n    });\n  }\n\n  private async addWithPersonActivation(): Promise<void> {\n\n    return await this.dialogService.open({\n      viewModel: TeamPersonDiscActivationModal,\n      model: this.companyId\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        try {\n          let person: Person = await this.personService.create(response.output);\n\n          let model: TeamPerson = new TeamPerson();\n          model.teamId = this.teamId;\n          model.personId = person.id;\n\n          model = await this.teamPersonService.create(model, this.teamId);\n\n          // add to team people\n          this.parameters.tableData.unshift(model);\n          this.parameters.totalRecords++;\n\n          this.notification.success(\"notifications.item_added\");\n\n        }\n        catch (error) {\n          this.notification.error(error);\n        }\n\n      }\n    });\n  }\n\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { I18N } from \"aurelia-i18n\";\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\n\n@autoinject\nexport class TeamPersonListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor (\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n\n    this.logger = LogManager.getLogger( \"TeamPersonListChildRouter\" );\n  }\n\n  public configureRouter ( config: RouterConfiguration, router: Router ): void {\n    this.router = router;\n    config.map( [\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./team-person-list\"),\n        name: \"team-person-list\",\n      },\n\n    ] );\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <div if.bind=!teamId> ${'main.test.pages.teams.team_member_list.msg_first_create_item' & t} </div> <div if.bind=teamId> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <div class=\\\"row mb-3\\\"> <div class=\\\"col-12 col-md-5\\\"> <h3> ${'main.test.pages.teams.team_member_list.team_title' & t} ${model.name} </h3> <p> ${'main.test.pages.teams.team_member_list.team_list' & t} </p> <div class=card> <div class=\\\"row p-3\\\"> <div class=\\\"col-12 col-md-7\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-5\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <ul class=\\\"list-group list-group-flush\\\" ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\"> <li class=list-group-item repeat.for=\\\"item of parameters.tableData\\\"> <div class=row> <div class=col-2> <button class=\\\"btn btn-link\\\" click.delegate=removeItem(item) title.bind=\\\"'commands.remove' & t\\\" global-permission-show=\\\"can: TestTeamUpdate\\\"> <i class=material-icons>remove</i> </button> </div> <div class=col-2> <disc-avatar size.bind=36 disc.bind=item.person.highestDisc picture-url.bind=item.person.pictureUrl initials.bind=item.person.initials> </disc-avatar> </div> <div class=\\\"col-8 text-truncate\\\"> <a title=${item.person.fullName} href=company/${companyId}/test/people/person/${item.person.id}> ${item.person.fullName} </a> </div> </div> </li> </ul> </div> </div> <div class=\\\"col-12 col-md-1\\\"> &nbsp; </div> <div class=\\\"col-12 col-md-5\\\"> <h3> ${'main.test.pages.people.title' & t} </h3> <p> ${'main.test.pages.teams.team_member_list.people_list' & t} : ${model.name} </p> <div class=card> <div class=\\\"row p-3\\\"> <div class=\\\"col-12 col-md-7\\\"> <ux-datatable-search parameters.bind=peopleParameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=peopleRefresh> </ux-datatable-search> </div> <div class=\\\"col-12 col-md-5\\\"> <ux-datatable-info parameters.bind=peopleParameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> </div> <ul class=\\\"list-group list-group-flush\\\" ux-datatable=\\\"parameters.bind: peopleParameters; on-refresh.bind:peopleRefresh;\\\" ux-datatable.ref=peopleUxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of peopleParameters.tableData\\\" infinite-scroll-next.call=getMorePeople($scrollContext)> <div class=row> <div class=col-2> <button class=\\\"btn btn-link\\\" click.delegate=addItem(item) title.bind=\\\"'commands.add' & t\\\" global-permission-show=\\\"can: TestTeamUpdate\\\"> <i class=material-icons>add</i> </button> </div> <div class=col-10> <div class=row> <div class=col-2> <disc-avatar size.bind=36 disc.bind=item.person.highestDisc picture-url.bind=item.person.pictureUrl initials.bind=item.person.initials> </disc-avatar> </div> <div class=\\\"col-10 text-truncate\\\"> <a title=${item.person.fullName} href=company/${companyId}/test/people/person/${item.person.id}> ${item.person.fullName} </a> <br/> <small class=text-mutted>${item.person.email}</small> </div> </div> <div class=row> <div class=col-12> <hr/> </div> </div> <div class=row> <div class=col-10> <small if.bind=item.person.lastDiscApplicationDate> ${'main.test.pages.people.person.last_disc_application_date' & t} ${item.person.lastDiscApplicationDate | dateFormat} </small> <small if.bind=!item.person.lastDiscApplicationDate> ${'main.test.pages.team.team_person_activation_list.no_application_date' & t} </small> </div> <div class=col-2> <button class=\\\"btn btn-link\\\" click.delegate=addWithCustomActivation(item) global-permission-show=\\\"can: TestTeamUpdate\\\" title=\\\"${'main.test.pages.team.team_person_activation_list.button_title' & t}\\\"> <i class=material-icons> more_horiz </i> </button> </div> </div> </div> </div> </li> </ul> </div> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestPersonCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.test.pages.team.tema_person_disc_activation.create_card.title' & t} </h5> <p t=[html]main.test.pages.team.tema_person_disc_activation.create_card.info>info</p> <button class=\\\"btn btn-primary btn-round\\\" click.delegate=addWithPersonActivation()>${'commands.create' & t}</button> </div> </div> </div> </div> </div> </div> </div> </template> \";","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\nimport { I18N } from \"aurelia-i18n\";\n\n@autoinject\nexport class TeamChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n  ) {\n\n    this.logger = LogManager.getLogger(\"TeamChildRouter\");\n  }\n\n  configureRouter(config: RouterConfiguration, router: Router): void {\n    this.router = router;\n    config.map([\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./team-edit\"),\n        name: \"team-edit\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.teams.team_edit.title\"),\n      },\n\n      {\n        route: \"team-person\",\n        moduleId: PLATFORM.moduleName(\"../team-person/team-person-list-child-router\"),\n        name: \"team-person-list-child-router\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.teams.team_edit.members.title\"),\n      },\n\n      {\n        route: \"team-activation\",\n        moduleId: PLATFORM.moduleName(\"../team-activation/team-activation-list-child-router\"),\n        name: \"team-activation-list-child-router\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.teams.team_activations.title\"),\n      },\n    ]);\n  }\n}\n","module.exports = \"<template> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-well router.bind=router></ux-well> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <router-view></router-view> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router } from \"aurelia-router\";\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ControllerValidateResult } from \"aurelia-validation\";\nimport { BootstrapFormRenderer } from \"common/services/bootstrap-form-renderer\";\nimport { Notification } from \"common/services/notification\";\nimport { TeamService } from \"main/test/services/team/team-service\";\nimport { Team } from \"models/team/team\";\n\n@autoinject()\nexport class TeamEdit {\n\n  private logger: Logger;\n  public companyId: number;\n\n  private teamId: number;\n\n  private model: Team = new Team();\n  private validationController: ValidationController;\n\n\n  constructor(\n    private router: Router,\n    private notification: Notification,\n    private validationControllerFactory: ValidationControllerFactory,\n    private teamService: TeamService\n  ) {\n    this.validationController = this.validationControllerFactory.createForCurrentScope();\n    this.validationController.addRenderer(new BootstrapFormRenderer());\n\n    this.logger = LogManager.getLogger(\"TeamEdit\");\n    this.model.tags = \"\";\n  }\n\n  public configureValidationRules(): void {\n    this.logger.info(\"configureValidationRules\");\n    ValidationRules\n      .ensure(\"name\").displayName(\"main.test.pages.position.position_edit.name\").required()\n      .on(this.model);\n  }\n\n  public async activate(params: any): Promise<any> {\n    if (!isNaN(params.companyId)) {\n      this.companyId = +params.companyId;\n\n      this.teamService.client.currentCompanyId = this.companyId;\n\n      if (!isNaN(params.teamId)) {\n        this.teamId = params.teamId;\n        this.model = await this.getItem();\n        this.configureValidationRules();\n      } else {\n        this.configureValidationRules();\n      }\n    }\n  }\n\n  private async getItem(): Promise<Team> {\n    return await this.teamService.getById(this.teamId)\n  }\n\n  public async submit(keepEditing: boolean): Promise<void> {\n    this.logger.info(\"submit\");\n\n    return await this.validationController.validate()\n      .then(async (result: ControllerValidateResult) => {\n        if (result.valid) {\n          if (this.teamId) {\n            return await this.update(keepEditing);\n          } else {\n            return await this.create(keepEditing);\n          }\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  get canSave() {\n    return !this.teamService.client.isRequesting;\n  }\n\n  private async create(keepEditing: boolean): Promise<any> {\n    return await this.teamService.create(this.model)\n      .then(async (result: Team) => {\n        this.notification.success(\"notifications.item_edited\");\n        if (keepEditing) {\n          return await this.router.parent.navigate(`team/${result.id}/team-person`);\n        }\n        else {\n          return await this.router.navigateToRoute(\"team-list\");\n        }\n\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async update(keepEditing: boolean): Promise<any> {\n    return await this.teamService.update(this.model)\n      .then(async () => {\n        this.notification.success(\"notifications.item_edited\");\n\n        if (keepEditing) {\n          return await this.router.navigateToRoute(\"team-child-router\", { teamId: this.teamId });\n        }\n        else {\n          return await this.router.navigateToRoute(\"team-list\");\n        }\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n  public notificationInfo(message:string){\n    this.notification.info(message);\n  }\n}\n","module.exports = \"<template> <h2> ${'main.test.pages.teams.team_edit.title' & t} / ${model.name} </h2> <div class=\\\"content-container row mb-3\\\"> <form class=content-main> <div class=row> <div class=\\\"col-md-6 col-12\\\"> <div class=form-group> <label>${'main.test.pages.teams.team_edit.name' & t}</label> <input type=text class=form-control id=name t=[placeholder]main.test.pages.position.position_edit.name value.bind=\\\"model.name & validate\\\"> </div> <div class=form-group> <label>${'main.test.pages.teams.team_edit.tags' & t} <a href=# click.delegate=\\\"notificationInfo('notifications.helpers.test.pages.team.tag')\\\" role=button> <i class=material-icons>info_outline</i> </a> </label> <company-tags-input value.bind=model.tags /> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ux-validation-summary errors.bind=validationController.errors></ux-validation-summary> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=form-group> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestTeamCreate\\\" click.delegate=submit(true) disabled.bind=!canSave>${'commands.save_and_continue' & t}</button> <button class=\\\"btn btn-primary btn-round\\\" type=submit global-permission-show=\\\"can: TestTeamCreate\\\" click.delegate=submit(false) disabled.bind=!canSave>${'commands.save' & t}</button> <a class=\\\"btn btn-outline-secondary btn-round\\\" route-href=\\\"route: team-list;\\\" t=commands.cancel>Cancel</a> </div> </div> </div> </form> <div class=content-sidebar> <div class=\\\"row mb-3\\\"> <div class=col> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title t=main.test_reports.pages.reports.create_card.title></h5> <p class=card-text t=[html]main.admin.pages.reports.create_card.info>Lorem</p> <a class=\\\"btn btn-primary btn-round\\\" title=\\\"${'main.test_reports.pages.reports.create_card.title' & t}\\\" href=\\\"company/${companyId}/test-reports/reports?teamId=${model.id}\\\"> ${'commands.view' & t} </a> <a class=\\\"btn btn-primary btn-round\\\" title=\\\"${'commands.generate' & t}\\\" href=\\\"company/${companyId}/test-reports/reports/report/2?teamId=${model.id}\\\"> ${'commands.generate' & t} </a> </div> </div> </div> </div> </div> </div> </template> \";","import { autoinject, LogManager } from \"aurelia-framework\";\nimport { Logger } from \"aurelia-logging\";\nimport { Router, RouteConfig } from \"aurelia-router\";\nimport { UxDatatableParameters, UxDatatableCustomAttribute, UxDatatableResponse } from \"common/resources/elements/ux/datatable/ux-datatable\";\nimport { Notification } from \"common/services/notification\";\nimport { TeamService } from \"main/test/services/team/team-service\";\nimport { DialogService, DialogCloseResult } from \"aurelia-dialog\";\nimport { FilteredReminderConfirmationModal } from \"../people/filtered-reminder-confirmation-modal\";\nimport { DeleteConfirmation } from \"main/components/delete-confirmation\";\nimport { Team } from \"models/team/team\";\n\n@autoinject()\nexport class TeamList {\n\n  private logger: Logger;\n  private params: any = {};\n  public companyId: number;\n\n  private parameters: UxDatatableParameters = new UxDatatableParameters();\n  private uxDatatable: UxDatatableCustomAttribute;\n\n  constructor(\n    private router: Router,\n    private teamService: TeamService,\n    private notification: Notification,\n    private dialogService: DialogService,\n  ) {\n\n    this.logger = LogManager.getLogger(\"TeamList\");\n  }\n\n  private refresh = async (): Promise<void | UxDatatableResponse> => {\n    this.logger.debug(\"refreshing\");\n    let search = this.parameters.search.Query;\n    sessionStorage.setItem('teamListSearch', search == null ? '' : search);\n\n    return await this.teamService.list(this.parameters)\n      .then((response: UxDatatableResponse) => {\n        return response;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async activate(params: any, routeConfig: RouteConfig): Promise<any> {\n    this.parameters.search.Query = sessionStorage.getItem('teamListSearch');\n    this.params = params;\n  }\n\n  private async bind(): Promise<any> {\n    if (!isNaN(this.params.companyId)) {\n      this.logger.debug(\"activate companyId:\", this.params.companyId);\n      this.companyId = +this.params.companyId;\n\n      this.teamService.client.currentCompanyId = this.companyId;\n\n      return await this.databind();\n\n    }\n  }\n\n  private async databind(): Promise<void> {\n    this.logger.debug(\"databind\");\n    return await this.refresh()\n      .then((response: UxDatatableResponse) => {\n        this.parameters.tableData = response.data;\n        this.parameters.totalRecords = response.totalRecords;\n      })\n      .catch(error => {\n        this.notification.error(error);\n      });\n  }\n\n  private async getMore(scrollContext: any): Promise<void> {\n    return await this.uxDatatable.getMoreItems(scrollContext);\n  }\n\n  private async clearFilters() {\n    this.parameters.search.Query = this.parameters.search.StartDate = this.parameters.search.EndDate = null;\n    await this.databind();\n  }\n\n  private async sendFilteredReminder(): Promise<boolean | DialogCloseResult> {\n    return await this.dialogService.open({\n      viewModel: FilteredReminderConfirmationModal,\n      model: this.parameters.tableData.length\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        return await this.teamService.sendRemindersByFilter(this.parameters)\n          .then(() => {\n            this.notification.success(\"main.test.pages.person.send_reminder_list\")\n            return true;\n          });\n      }\n    });\n  }\n\n  private async sendReminder(id: number): Promise<boolean> {\n    try {\n      await this.teamService.sendReminder(id);\n      this.notification.success(\"main.test.pages.person.send_reminder\");\n      return true;\n    }\n    catch (error) {\n      this.notification.error(error);\n    }\n  }\n\n  \n  private async delete(item: Team): Promise<void> {\n    return await this.dialogService.open({\n      viewModel: DeleteConfirmation,\n      model: item.name\n    }).whenClosed(async (response: DialogCloseResult) => {\n      if (!response.wasCancelled) {\n\n        return await this.teamService.delete(item.id)\n          .then(() => {\n            let indexOfEditedModel: number = this.parameters.tableData.map(x => x.id.toString()).indexOf(item.id.toString());\n            this.parameters.tableData.splice(indexOfEditedModel, 1);\n            this.notification.success(\"notifications.item_deleted\");\n          })\n          .catch(error => {\n            this.notification.error(error);\n          });\n\n      }\n    });\n  }\n}\n","\nimport { LogManager, autoinject } from \"aurelia-framework\";\nimport { PLATFORM } from \"aurelia-pal\";\nimport { Router, RouterConfiguration } from \"aurelia-router\";\nimport { Logger } from \"aurelia-logging\";\n\nimport { I18N } from \"aurelia-i18n\";\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\n\n@autoinject\nexport class TeamListChildRouter {\n\n  private logger: Logger;\n  private router: Router;\n\n  constructor (\n    private i18n: I18N,\n    private authorizationService: AuthorizationService\n  ) {\n\n    this.logger = LogManager.getLogger( \"TeamListChildRouter\" );\n  }\n\n  public configureRouter ( config: RouterConfiguration, router: Router ): void {\n    this.router = router;\n    config.map( [\n      {\n        route: \"\",\n        moduleId: PLATFORM.moduleName(\"./team-list\"),\n        name: \"team-list\",\n      },\n      {\n        route: \"team/:teamId\",\n        moduleId: PLATFORM.moduleName(\"./team-child-router\"),\n        name: \"team-child-router\",\n      },\n    ] );\n  }\n}\n","module.exports = \"<template> <router-view></router-view> </template> \";","module.exports = \"<template> <require from=../../../components/three-tags.html></require> <h2> ${'main.test.pages.teams.team_list.title' & t} </h2> <div class=\\\"content-container row mb-3\\\"> <div class=content-main> <div class=\\\"row mb-3\\\"> <div class=col-12> <p> ${'main.test.pages.teams.team_list.info' & t} </p> </div> </div> <hr/> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-search parameters.bind=parameters t=[placeholder]ux_datatable.search_placeholder input-classes=form-control on-search-change.bind=refresh> </ux-datatable-search> </div> <div class=\\\"col-md-4 col-12\\\"> <ux-datatable-info parameters.bind=parameters t=[label-filtered]ux_datatable.filtered;[message]ux_datatable.message> </ux-datatable-info> </div> <div class=\\\"col-md-4 col-12 text-right\\\" if.bind=\\\"parameters.search.Query || parameters.search.StartDate || parameters.search.EndDate\\\"> <button class=\\\"btn btn-link\\\" click.delegate=sendFilteredReminder()> <i class=material-icons>email</i> ${'main.test.pages.people.send_filtered_reminder' & t} </button> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <div class=\\\"row mb-3\\\"> <div class=\\\"col-md-4 col-12\\\"> <a class=\\\"btn btn-link collapse-header\\\" data-toggle=collapse href=#collapseMoreFilterOptions role=button aria-expanded=false aria-controls=collapseMoreFilterOptions> <i class=material-icons>chevron_right</i> ${'commons.more_filter_options' & t} </a> </div> <div class=\\\"col-md-4 col-12\\\" if.bind=\\\"parameters.search.Query || parameters.search.StartDate || parameters.search.EndDate\\\" global-permission-show=\\\"can: TestTeamUpdate\\\"> <button class=\\\"btn btn-link\\\" click.delegate=clearFilters()> <i class=material-icons>clear</i> ${'commons.clear_filters' & t} </button> </div> </div> <div class=collapse id=collapseMoreFilterOptions> <div class=row> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=startDate t=commons.start_date>Start_Date</label> <ux-date-picker value.bind=parameters.search.StartDate change.delegate=\\\"databind() & debounce:100\\\" id=startDate></ux-date-picker> </div> </div> <div class=\\\"col-md-4 col-12\\\"> <div class=form-group> <label for=endDate t=commons.end_date>Start_Date</label> <ux-date-picker value.bind=parameters.search.EndDate change.delegate=\\\"databind() & debounce:100\\\" id=endDate></ux-date-picker> </div> </div> </div> </div> </div> </div> <div class=\\\"row mb-3\\\"> <div class=col-12> <ul class=list-group ux-datatable=\\\"parameters.bind: parameters; on-refresh.bind:refresh;\\\" ux-datatable.ref=uxDatatable> <li class=list-group-item virtual-repeat.for=\\\"item of parameters.tableData\\\" infinite-scroll-next.call=getMore($scrollContext)> <div class=row> <div class=\\\"col-md-4 col-12 text-truncate minh-40 mb-2\\\"> <a class=\\\"row btn btn-link\\\" global-permission-show=\\\"can: TestTeamUpdate\\\" route-href=\\\"route: team-child-router; params.bind: {teamId:item.id}\\\" title=${item.name}> ${item.name} </a> <small class=\\\"row text-mutted pl-3\\\">${item.peopleWithDiscQuantity} ${'commons.of' & t} ${item.peopleQuantity}</small> </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.teams.created_on' & t}</small> </label> ${item.createdOn | dateTimeFormat} </div> <div class=\\\"col-md-2 col-12 text-truncate mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.teams.evaluator' & t}</small> </label> <span title=${item.createdByName}>${item.createdByName}</span> </div> <div class=\\\"col-md-2 col-12 minh-90 mb-2\\\"> <label class=d-block> <small class=text-muted>${'main.test.pages.teams.tags' & t}</small> </label> <three-tags tags.bind=item.tags></three-tags> </div> <div class=\\\"col-md-2 col-12 mb-2\\\"> <a href=# if.bind=\\\"item.peopleWithDiscQuantity < item.peopleQuantity\\\" global-permission-show=\\\"can: TestTeamUpdate\\\" click.delegate=sendReminder(item.id) title.bind=\\\"'commands.send' & t\\\" role=button> <i class=material-icons>email</i> </a> <a title.bind=\\\"'main.testperson.pages.person.view_reports' & t\\\" href=\\\"company/${companyId}/test-reports/reports?teamId=${item.id}\\\" role=button> <i class=material-icons>assessment</i> </a> <a href=# global-permission-show=\\\"can: TestTeamDelete\\\" click.delegate=delete(item) title.bind=\\\"'commands.archive' & t\\\" role=button> <i class=material-icons>archive</i> </a> </div> </div> </li> </ul> </div> </div> </div> <div class=content-sidebar> <div class=\\\"row mb-3\\\" global-permission-show=\\\"can: TestTeamCreate\\\"> <div class=col-12> <div class=\\\"card card-shadow card-round\\\"> <div class=card-body> <h5 class=card-title> ${'main.test.pages.teams.create_card.title' & t} </h5> <p t=[html]main.test.pages.teams.create_card.info>Create new team</p> <a class=\\\"btn btn-primary btn-round\\\" route-href=\\\"route: team-child-router; params.bind: {teamId:'create'} \\\">${'commands.create' & t}</a> </div> </div> </div> </div> </div> </div> </template> \";","import { I18N } from 'aurelia-i18n';\nimport { autoinject, LogManager } from \"aurelia-framework\";\n\nimport { Logger } from \"aurelia-logging\";\n\nimport { Router, RouterConfiguration, RouteConfig } from \"aurelia-router\";\nimport { PLATFORM } from \"aurelia-pal\";\n\nimport { AuthorizationService } from \"aurelia-permission\";\nimport PredefinedPermissions from \"config/predefined-permissions\";\n\n@autoinject()\nexport class TestChildRouter {\n\n  private logger: Logger;\n\n  private router: Router;\n\n  constructor(\n    private i18n: I18N,\n    private authorizationService: AuthorizationService) {\n\n    this.logger = LogManager.getLogger(\"TestChildRouter\");\n  }\n\n  public configureRouter(config: RouterConfiguration, router: Router) {\n    this.router = router;\n    config.map([\n      {\n        route: [\"\", \"test-home\"],\n        moduleId: PLATFORM.moduleName(\"./pages/home/home\"),\n        name: \"test-home\",\n        nav: true,\n        title: this.i18n.tr(\"main.test.pages.home.title\"),\n        settings: {\n          icon: \"ticon-modulo-test\",\n          isHome: true\n        }\n      },\n\n      {\n        route: \"people\",\n        moduleId: PLATFORM.moduleName(\"./pages/people/person-list-child-router\"),\n        name: \"person-list-child-router\",\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestPersonView),\n        title: this.i18n.tr(\"main.test.pages.people.title\"),\n        settings: {\n          icon: \"ticon-persona\"\n        }\n      },\n\n      {\n        route: \"positions\",\n        moduleId: PLATFORM.moduleName(\"./pages/position/position-list-child-router\"),\n        name: \"position-list-child-router\",\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestPositionView),\n        title: this.i18n.tr(\"main.test.pages.positions.title\"),\n        settings: {\n          icon: \"ticon-puesto\"\n        }\n      },\n\n      {\n        route: \"teams\",\n        moduleId: PLATFORM.moduleName(\"./pages/team/team-list-child-router\"),\n        name: \"team-list-child-router\",\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestPositionView),\n        title: this.i18n.tr(\"main.test.pages.teams.title\"),\n        settings: {\n          icon: \"ticon-equipo\"\n        }\n      },\n      \n      {\n        route: \"organizations\",\n        moduleId: PLATFORM.moduleName(\"./pages/organization/organization-list-child-router\"),\n        name: \"organization-list-child-router\",\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestPositionView),\n        title: this.i18n.tr(\"main.test.pages.organizations.title\"),\n        settings: {\n          icon: \"ticon-organizacion\"\n        }\n      },\n\n      {\n        route: \"tags\",\n        moduleId: PLATFORM.moduleName(\"./pages/tags/tags-list-child-router\"),\n        name: \"tags-list-child-router\",\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestPersonView),\n        title: this.i18n.tr(\"main.test.pages.tags.title\"),\n        settings: {\n          icon: \"bookmarks\"\n        }\n      },\n\n      {\n        route: \"archives\",\n        moduleId: PLATFORM.moduleName(\"./pages/archive/archive-list-child-router\"),\n        name: \"archive-list-child-router\",\n        nav: this.authorizationService.isAuthorized(PredefinedPermissions.TestArchiveView),\n        title: this.i18n.tr(\"main.test.pages.archive.title\"),\n        settings: {\n          icon: \"archive\"\n        }\n      },\n\n    ]);\n\n  }\n\n}\n","module.exports = \"<template> <router-view swap-order=after></router-view> </template> \";","export enum Operator {\n  GreaterThanOrEqualTo,\n  LessThanOrEqualTo\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { Operator } from './operator';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class OperatorViewEngineHooks implements ViewEngineHooks {\n  \n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['Operator'] = Operator;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['Operators'] = \n      Object.keys(Operator)\n        .filter((key) => typeof Operator[key] === 'number');\n  }\n}\n","import { ActivityStatus } from './activityStatus';\nimport { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\n\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class ActivityStatusViewEngineHooks implements ViewEngineHooks {\n\n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['ActivityStatus'] = ActivityStatus;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['ActivityStatuses'] =\n      Object.keys(ActivityStatus)\n        .filter((key) => typeof ActivityStatus[key] === 'number');\n  }\n}\n","export enum AgreementDuration {\n  Monthly = 30,\n  Biannual = 180,\n  Annual = 360,\n  Biennial = 720\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { AgreementDuration } from './agreementDuration';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class AgreementDurationViewEngineHooks implements ViewEngineHooks {\n\n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['AgreementDuration'] = AgreementDuration;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['AgreementDurations'] =\n      Object.keys(AgreementDuration)\n        .filter((key) => typeof AgreementDuration[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { AgreementStatus } from './agreementStatus';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class AgreementStatusViewEngineHooks implements ViewEngineHooks {\n\n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['AgreementStatus'] = AgreementStatus;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['AgreementStatuses'] =\n      Object.keys(AgreementStatus)\n        .filter((key) => typeof AgreementStatus[key] === 'number');\n  }\n}\n","export enum CompanyType {\n  Natural,\n  Legal \n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { CompanyType } from './companyType';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class AgreementStatusViewEngineHooks implements ViewEngineHooks {\n\n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['CompanyType'] = CompanyType;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['CompanyTypes'] =\n      Object.keys(CompanyType)\n        .filter((key) => typeof CompanyType[key] === 'number');\n  }\n}\n","export enum CorporateIdType {\n  CC,\n  NIT,\n  CE,\n  PASS,\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { CorporateIdType } from './corporateIdType';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class AgreementStatusViewEngineHooks implements ViewEngineHooks {\n\n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['CorporateIdType'] = CorporateIdType;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['CorporateIdTypes'] =\n      Object.keys(CorporateIdType)\n        .filter((key) => typeof CorporateIdType[key] === 'number');\n  }\n}\n","export enum Notify {\n  OnDate = 0,\n  OneDayBefore = -1,\n  OneWeekBefore = -7,\n  AMonthBefore = -30\n}\n","import { Notify } from './notify';\nimport { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\n\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class NotifyViewEngineHooks implements ViewEngineHooks {\n\n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['Notify'] = Notify;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['Notifies'] =\n      Object.keys(Notify)\n        .filter((key) => typeof Notify[key] === 'number');\n  }\n}\n","export enum archetypeType {\n  Archetype = 0, \n  VacationalProfile = 1,\n  InterculturalProfile = 2\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { archetypeType } from './archetypeType';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class archetypeTypeViewEngineHooks implements ViewEngineHooks {\n  \n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['archetypeType'] = archetypeType;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['archetypeTypes'] = \n      Object.keys(archetypeType)\n        .filter((key) => typeof archetypeType[key] === 'number');\n  }\n}\n","// export class AgeRange{\n//     items = [\n//         {\"id\":1,\"name\": \"main.admin.pages.scales.age_range_enum.from_zero_to_five\", \"code\": \"from.zero.to.five\"},\n//         {\"id\":2,\"name\": \"main.admin.pages.scales.age_range_enum.from_six_to_ten\", \"code\": \"from.six.to.ten\"},\n//         {\"id\":3,\"name\": \"main.admin.pages.scales.age_range_enum.from_eleven_to_nineteen\", \"code\": \"from.eleven.to.nineteen\"},\n//         {\"id\":4,\"name\": \"main.admin.pages.scales.age_range_enum.from_twenty_to_thirty_nine\", \"code\": \"from.twenty.to.thirty.nine\"},\n//         {\"id\":5,\"name\": \"main.admin.pages.scales.age_range_enum.from_forty_to_sixty_four\", \"code\": \"from.forty.to.sixty.four\"},\n//         {\"id\":6,\"name\": \"main.admin.pages.scales.age_range_enum.from_sixty_five_to_older\", \"code\": \"from.sixty.five.to.older\"}\n//     ];\n\n//     getNameById(id: number): string{\n//         return this.items.find(x => x.id == id)['name'];\n//     }\n\n//     getIdByCode(code: string): number{\n//         return this.items.find(x => x.code == code)['id'];\n//     }\n// }\n\nexport enum AgeRange {\n  FromZeroToFive,\n  FromSixToTen,\n  FromElevenToFourteen,\n  FromFifteenToFifteen,\n  FromSixteenToSixteen,\n  FromSeventeenToSeventeen,\n  FromEighteenToNineTeen,\n  FromTwentyToTwentyNine,\n  FromThirtyToThirtyNine,\n  FromFortyToFortyNine,\n  FromFiftyToFiftyNine,\n  FromSixteenToOlder,\n}\n","\nimport { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { AgeRange } from './ageRange';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class AgeRangeViewEngineHooks implements ViewEngineHooks {\n  \n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['AgeRange'] = AgeRange;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['AgeRanges'] = \n      Object.keys(AgeRange)\n        .filter((key) => typeof AgeRange[key] === 'number');\n  }\n}\n","\nimport { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { EducationalLevel } from './educationalLevel';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class EducationalLevelViewEngineHooks implements ViewEngineHooks {\n  \n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['EducationalLevel'] = EducationalLevel;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['EducationalLevels'] = \n      Object.keys(EducationalLevel)\n        .filter((key) => typeof EducationalLevel[key] === 'number');\n  }\n}\n","// export class Genre{\n//     items = [\n//         {\"id\":1,\"name\": \"main.admin.pages.scales.genre_enum.male\", \"code\": \"male\"},\n//         {\"id\":2,\"name\": \"main.admin.pages.scales.genre_enum.female\", \"code\": \"female\"}\n//     ];\n\n//     getNameById(id: number): string{\n//         return this.items.find(x => x.id == id)['name'];\n//     }\n\n//     getIdByCode(code: string): number{\n//         return this.items.find(x => x.code == code)['id'];\n//     }\n// }\nexport enum Genre {\n  Male,\n  Female,\n  Undefined\n}\n","\nimport { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { Genre } from './genre';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class GenreViewEngineHooks implements ViewEngineHooks {\n  \n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['Genre'] = Genre;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['Genres'] = \n      Object.keys(Genre)\n        .filter((key) => typeof Genre[key] === 'number');\n  }\n}\n","\nexport enum CompanyOrganizationType {\n  EducationalInstitution,\n  University,\n  Organization,\n  NaturalPerson,\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { CompanyOrganizationType } from './companyOrganizationType';\n\nexport class CompanyOrganizationTypeViewEngineHooks implements ViewEngineHooks {\n\n  beforeBind(view: View) {\n\n    view.overrideContext['CompanyOrganizationType'] = CompanyOrganizationType;\n\n    view.overrideContext['CompanyOrganizationTypes'] =\n      Object.keys(CompanyOrganizationType)\n        .filter((key) => typeof CompanyOrganizationType[key] === 'number');\n  }\n}\n","export enum PasswordChangingPeriod\n{\n    Monthly = 30,\n\n    Quartely = 90,\n\n    Biannual = 180,\n\n    Annual = 360\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { PasswordChangingPeriod } from './passwordChangingPeriod';\n\nexport class PasswordChangingPeriodViewEngineHooks implements ViewEngineHooks {\n  \n  beforeBind(view: View) {\n\n    view.overrideContext['PasswordChangingPeriod'] = PasswordChangingPeriod;\n\n    view.overrideContext['PasswordChangingPeriods'] = \n      Object.keys(PasswordChangingPeriod)\n        .filter((key) => typeof PasswordChangingPeriod[key] === 'number');\n  }\n}\n","export enum LabelModule {\n  Backend,\n  Core,        \n  Microsite,\n  Reports,\n  Predictor,\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { LabelModule } from './labelModule';\n\nexport class LabelModuleViewEngineHooks implements ViewEngineHooks {\n  \n  beforeBind(view: View) {\n\n    view.overrideContext['LabelModule'] = LabelModule;\n\n    view.overrideContext['LabelModules'] = \n      Object.keys(LabelModule)\n        .filter((key) => typeof LabelModule[key] === 'number');\n  }\n}\n","export enum MessagePeriod\n{\n    Daily = 1,\n\n    Weekly = 7,\n\n    Monthly = 30\n   \n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { MessagePeriod } from './message-period';\n\nexport class MessagePeriodViewEngineHooks implements ViewEngineHooks {\n  \n  beforeBind(view: View) {\n\n    view.overrideContext['MessagePeriod'] = MessagePeriod;\n\n    view.overrideContext['MessagePeriods'] = \n      Object.keys(MessagePeriod)\n        .filter((key) => typeof MessagePeriod[key] === 'number');\n  }\n}\n","\nexport enum DemoLimitTime {\n  Monthly,\n  Annual,\n  Biannual\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { DemoLimitTime } from './demoLimitTime';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class DemoLimitTimeViewEngineHooks implements ViewEngineHooks {\n\n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['DemoLimitTime'] = DemoLimitTime;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['DemoLimitTimes'] =\n      Object.keys(DemoLimitTime)\n        .filter((key) => typeof DemoLimitTime[key] === 'number');\n  }\n}\n","export enum OtherPlanItemType\n{\n    Training,\n    Climate,\n    Competences360,\n    Workloads\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { OtherPlanItemType } from './otherPlanItemType';\n\nexport class OtherPlanItemTypeViewEngineHooks implements ViewEngineHooks {\n\n  beforeBind(view: View) {\n\n    view.overrideContext['OtherPlanItemType'] = OtherPlanItemType;\n\n    view.overrideContext['OtherPlanItemTypes'] =\n      Object.keys(OtherPlanItemType)\n        .filter((key) => typeof OtherPlanItemType[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { PlanType } from './planType';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class PlanTypeViewEngineHooks implements ViewEngineHooks {\n\n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['PlanType'] = PlanType;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['PlanTypes'] =\n      Object.keys(PlanType)\n        .filter((key) => typeof PlanType[key] === 'number');\n  }\n}\n","\nexport enum SelectionPlanComponentType {\n  Predictor,\n  SelectionPanel,\n  ProcessSelection,\n  TalentTracker,\n  Admin,\n  BrainHunter\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { SelectionPlanComponentType } from './selectionPlanComponentType';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class SelectionPlanComponentTypeViewEngineHooks implements ViewEngineHooks {\n\n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['SelectionPlanComponentType'] = SelectionPlanComponentType;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['SelectionPlanComponentTypes'] =\n      Object.keys(SelectionPlanComponentType)\n        .filter((key) => typeof SelectionPlanComponentType[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { SpendMode } from './spendMode';\n\nexport class SpendModeViewEngineHooks implements ViewEngineHooks {\n  \n  beforeBind(view: View) {\n\n    view.overrideContext['SpendMode'] = SpendMode;\n\n    view.overrideContext['SpendModes'] =\n      Object.keys(SpendMode)\n        .filter((key) => typeof SpendMode[key] === 'number');\n  }\n}\n","\nexport enum TalentChargeFrequency {\n  None,\n  Monthly,\n  Quarterly,\n  Annual,\n  Biannual,\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { TalentChargeFrequency } from './talentChargeFrequency';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class TalentChargeFrequencyViewEngineHooks implements ViewEngineHooks {\n\n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['TalentChargeFrequency'] = TalentChargeFrequency;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['TalentChargeFrequencies'] =\n      Object.keys(TalentChargeFrequency)\n        .filter((key) => typeof TalentChargeFrequency[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { TestPlanItemType } from './testPlanItemType';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class TestPlanItemTypeViewEngineHooks implements ViewEngineHooks {\n\n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['TestPlanItemType'] = TestPlanItemType;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['TestPlanItemTypes'] =\n      Object.keys(TestPlanItemType)\n        .filter((key) => typeof TestPlanItemType[key] === 'number');\n  }\n}\n","\nexport enum VisualizationType {\n  Active,         \n  Blurred,\n  Hidden\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { VisualizationType } from './visualizationType';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class VisualizationTypeViewEngineHooks implements ViewEngineHooks {\n\n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['VisualizationType'] = VisualizationType;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['VisualizationTypes'] =\n      Object.keys(VisualizationType)\n        .filter((key) => typeof VisualizationType[key] === 'number');\n  }\n}\n","\nexport enum Disc {\n    D,\n    I,\n    S,\n    C\n  }\n  ","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { DiscType } from './discType';\n\nexport class DiscTypeModeViewEngineHooks implements ViewEngineHooks {\n  \n  beforeBind(view: View) {\n\n    view.overrideContext['DiscType'] = DiscType;\n\n    view.overrideContext['DiscTypes'] = \n      Object.keys(DiscType)\n        .filter((key) => typeof DiscType[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { Disc } from './disc';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class DiscViewEngineHooks implements ViewEngineHooks {\n\n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['Disc'] = Disc;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['Discs'] =\n      Object.keys(Disc)\n        .filter((key) => typeof Disc[key] === 'number');\n  }\n}\n","export enum GameTest {\n  DiscGame = 0,\n  NeuroGame = 1,\n  ColorsGame = 2,\n  StylesGame = 3,\n  Integrity = 4,\n  LeadershipV4 = 5,\n  WorkplaceWellbeing = 6,\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { GameTest } from './gameTest';\n\nexport class GameTestViewEngineHooks implements ViewEngineHooks {\n\n  beforeBind(view: View) {\n\n    view.overrideContext['GameTest'] = GameTest;\n\n    view.overrideContext['GameTests'] = \n      Object.keys(GameTest)\n        .filter((key) => typeof GameTest[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { ItemToQualify } from './itemToQualify';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class ItemToQualifyViewEngineHooks implements ViewEngineHooks {\n\n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['ItemToQualify'] = ItemToQualify;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['ItemsToQualify'] =\n      Object.keys(ItemToQualify)\n        .filter((key) => typeof ItemToQualify[key] === 'number' && ItemToQualify[key] !== ItemToQualify.Observed);\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { NoDiscType } from './noDiscType';\n\nexport class ModularQuestionaryNoDiscTypeViewEngineHooks implements ViewEngineHooks {\n\n  beforeBind(view: View) {\n\n    view.overrideContext['NoDiscType'] = NoDiscType;\n\n    // Only general and performance for modular questionaries\n    view.overrideContext['NoDiscTypes'] = \n      Object.keys(NoDiscType)\n        .filter((key) => \n          typeof NoDiscType[key] === 'number' && \n          (NoDiscType[key] === NoDiscType.General || NoDiscType[key] === NoDiscType.Performance)\n        );\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { NoDiscType } from './noDiscType';\n\nexport class NoDiscTypeViewEngineHooks implements ViewEngineHooks {\n\n  beforeBind(view: View) {\n\n    view.overrideContext['NoDiscType'] = NoDiscType;\n\n    view.overrideContext['NoDiscTypes'] = \n      Object.keys(NoDiscType)\n        .filter((key) => typeof NoDiscType[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { OrganizationType } from './organizationType';\n\nexport class OrganizationActivationTypeViewEngineHooks implements ViewEngineHooks {\n\n  beforeBind(view: View) {\n\n    view.overrideContext['OrganizationType'] = OrganizationType;\n\n    view.overrideContext['OrganizationTypes'] = \n      Object.keys(OrganizationType)\n        .filter((key) => typeof OrganizationType[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { QuestionaryType } from './questionaryType';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class QuestionaryTypeViewEngineHooks implements ViewEngineHooks {\n\n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['QuestionaryType'] = QuestionaryType;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['QuestionaryTypes'] =\n      Object.keys(QuestionaryType)\n        .filter((key) => typeof QuestionaryType[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { QuestionInteractionType } from './questionInteractionType';\n\nexport class QuestionInteractionTypeViewEngineHooks implements ViewEngineHooks {\n  beforeBind(view: View) {\n    view.overrideContext['QuestionInteractionType'] = QuestionInteractionType;\n    view.overrideContext['QuestionInteractionTypes'] = \n      Object.keys(QuestionInteractionType)\n        .filter((key) => typeof QuestionInteractionType[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { QuestionType } from './questionType';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class QuestionTypeViewEngineHooks implements ViewEngineHooks {\n  \n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['QuestionType'] = QuestionType;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['QuestionTypes'] = \n      Object.keys(QuestionType)\n        .filter((key) => typeof QuestionType[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { ReviewerStatusType } from './reviewerStatusType';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class ReviewerStatusTypeViewEngineHooks implements ViewEngineHooks {\n  \n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our ReviewerStatusType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['ReviewerStatusType'] = ReviewerStatusType;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['ReviewerStatusTypes'] = \n      Object.keys(ReviewerStatusType)\n        .filter((key) => typeof ReviewerStatusType[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { Role } from './role';\n\nexport class RoleViewEngineHooks implements ViewEngineHooks {\n  \n  beforeBind(view: View) {\n    view.overrideContext['Role'] = Role;\n    view.overrideContext['Roles'] = \n      Object.keys(Role)\n        .filter((key) => typeof Role[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { UserState } from './userState';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class UserStateViewEngineHooks implements ViewEngineHooks {\n  \n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['UserState'] = UserState;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['QuestionTypes'] = \n      Object.keys(UserState)\n        .filter((key) => typeof UserState[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { ExportTransactionType } from './export-transaction-type';\n\nexport class TransactionTypeViewEngineHooks implements ViewEngineHooks {\n  \n  beforeBind(view: View) {\n\n    view.overrideContext['ExportTransactionType'] = ExportTransactionType;\n\n    view.overrideContext['ExportTransactionTypes'] = \n      Object.keys(ExportTransactionType)\n        .filter((key) => typeof ExportTransactionType[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { TransactionType } from './transaction-type';\n\nexport class TransactionTypeViewEngineHooks implements ViewEngineHooks {\n  \n  beforeBind(view: View) {\n\n    view.overrideContext['TransactionType'] = TransactionType;\n\n    view.overrideContext['TransactionTypes'] = \n      Object.keys(TransactionType)\n        .filter((key) => typeof TransactionType[key] === 'number');\n  }\n}\n","export enum archiveType {\n  Person = 1,\n  Position = 2,\n  Team = 3,\n  Organization = 4,\n  ReportTemplate = 5,\n  QuestionaryGroup = 6\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { archiveType } from './archiveType';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class archetypeTypeViewEngineHooks implements ViewEngineHooks {\n  \n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['archiveType'] = archiveType;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['archiveTypes'] = \n      Object.keys(archiveType)\n        .filter((key) => typeof archiveType[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { InboxByUserStatus } from './inboxByUserStatus';\n\n// import { viewEngineHooks } from 'aurelia-binding';\n\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class InboxByUserStatusViewEngineHooks implements ViewEngineHooks {\n\n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['InboxByUserStatus'] = InboxByUserStatus;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['InboxByUserStatuses'] =\n      Object.keys(InboxByUserStatus)\n        .filter((key) => typeof InboxByUserStatus[key] === 'number');\n  }\n}\n","export enum TestControlStatus {\n  High,\n  Low,\n  Undefined,\n  NoInformation\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { TestControlStatus } from './testControlStatus';\n\nexport class TestControlStatusViewEngineHooks implements ViewEngineHooks {\n\n  beforeBind(view: View) {\n\n    view.overrideContext['TestControlStatus'] = TestControlStatus;\n\n    view.overrideContext['TestControlStatuses'] = \n      Object.keys(TestControlStatus)\n        .filter((key) => typeof TestControlStatus[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { OrganizationActivationType } from './organizationActivationType';\n\nexport class OrganizationActivationTypeViewEngineHooks implements ViewEngineHooks {\n\n  beforeBind(view: View) {\n\n    view.overrideContext['OrganizationActivationType'] = OrganizationActivationType;\n\n    view.overrideContext['OrganizationActivationTypes'] = \n      Object.keys(OrganizationActivationType)\n        .filter((key) => typeof OrganizationActivationType[key] === 'number');\n  }\n}\n","export enum Difficulty{\n  EASY, \n  MEDIUM, \n  HARD\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { Difficulty } from './difficulty';\n\nexport class DifficultyViewEngineHooks implements ViewEngineHooks {\n  \n  beforeBind(view: View) {\n\n    view.overrideContext['Difficulty'] = Difficulty;\n\n    view.overrideContext['Difficulties'] = \n      Object.keys(Difficulty)\n        .filter((key) => typeof Difficulty[key] === 'number');\n  }\n}\n","export enum ActivationQuestionaryStatus {\n  Created,\n  Sent,\n  Processed,\n  Delivered,\n  NotDelivered,\n  Open,\n  Clicked,\n  ByFillOut,\n  InQualification,\n  Finalized,\n  Expired\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { ActivationQuestionaryStatus } from './activationQuestionaryStatus';\n\nexport class ActivationQuestionaryStatusViewEngineHooks implements ViewEngineHooks {\n\n  beforeBind(view: View) {\n\n    view.overrideContext['ActivationQuestionaryStatus'] = ActivationQuestionaryStatus;\n\n    view.overrideContext['ActivationQuestionaryStatuses'] = \n      Object.keys(ActivationQuestionaryStatus)\n        .filter((key) => typeof ActivationQuestionaryStatus[key] === 'number');\n  }\n}\n","export enum ObserverRole {\n  Boss,\n  Partner,\n  Subaltern,\n  Other\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { ObserverRole } from './observerRole';\n\nexport class ObserverRoleViewEngineHooks implements ViewEngineHooks {\n  \n  beforeBind(view: View) {\n\n    view.overrideContext['ObserverRole'] = ObserverRole;\n\n    view.overrideContext['ObserverRoles'] = \n      Object.keys(ObserverRole)\n        .filter((key) => typeof ObserverRole[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { PersonActivationType } from './personActivationType';\n\nexport class PersonActivationViewEngineHooks implements ViewEngineHooks {\n  \n  beforeBind(view: View) {\n\n    view.overrideContext['PersonActivationType'] = PersonActivationType;\n\n    view.overrideContext['PersonActivationTypes'] = \n      Object.keys(PersonActivationType)\n        .filter((key) => typeof PersonActivationType[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { PersonMode } from './personMode';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class PersonModeViewEngineHooks implements ViewEngineHooks {\n  \n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['PersonMode'] = PersonMode;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['PersonModes'] = \n      Object.keys(PersonMode)\n        .filter((key) => typeof PersonMode[key] === 'number');\n  }\n}\n","export enum QuestionaryWay {\n    Online\n  }\n  ","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { QuestionaryWay } from './questionaryWay';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class QuestionaryWayViewEngineHooks implements ViewEngineHooks {\n  \n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['QuestionaryWay'] = QuestionaryWay;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['QuestionaryWays'] = \n      Object.keys(QuestionaryWay)\n        .filter((key) => typeof QuestionaryWay[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { Tests } from './tests';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class TestsViewEngineHooks implements ViewEngineHooks {\n  \n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['Test'] = Tests;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['Tests'] = \n      Object.keys(Tests)\n        .filter((key) => typeof Tests[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { WhoCanSeeReport } from './whoCanSeeReport';\n\nexport class WhoCanSeeReportViewEngineHooks implements ViewEngineHooks {\n\n  beforeBind(view: View) {\n\n    view.overrideContext['WhoCanSeeReport'] = WhoCanSeeReport;\n\n    view.overrideContext['WhoCanSeeReports'] = \n      Object.keys(WhoCanSeeReport)\n        .filter((key) => typeof WhoCanSeeReport[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { PositionActivationType } from './positionActivationType';\n\nexport class PositionActivationTypeViewEngineHooks implements ViewEngineHooks {\n\n  beforeBind(view: View) {\n\n    view.overrideContext['PositionActivationType'] = PositionActivationType;\n\n    view.overrideContext['PositionActivationTypes'] = \n      Object.keys(PositionActivationType)\n        .filter((key) => typeof PositionActivationType[key] === 'number');\n  }\n}\n","export enum PositionLevel {\n  Estrategico,\n  Tactico,\n  Operativo\n}","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { PositionLevel } from './positionLevel';\n\nexport class PositionLevelViewEngineHooks implements ViewEngineHooks {\n\n  beforeBind(view: View) {\n\n    view.overrideContext['PositionLevel'] = PositionLevel;\n\n    view.overrideContext['PositionLevels'] = \n      Object.keys(PositionLevel)\n        .filter((key) => typeof PositionLevel[key] === 'number');\n  }\n}\n","export enum PositionQuestionaryType {\n    PerfilDisc\n  }","import { ViewEngineHooks, View } from 'aurelia-framework';\nimport { PositionQuestionaryType } from './positionQuestionaryType';\n\nexport class PositionQuestionaryTypeViewEngineHooks implements ViewEngineHooks {\n\n  beforeBind(view: View) {\n\n    view.overrideContext['PositionQuestionaryType'] = PositionQuestionaryType;\n\n    view.overrideContext['PositionQuestionaryTypes'] = \n      Object.keys(PositionQuestionaryType)\n        .filter((key) => typeof PositionQuestionaryType[key] === 'number');\n  }\n}\n","import { ViewEngineHooks, View } from 'aurelia-framework';\n// import { viewEngineHooks } from 'aurelia-binding';\nimport { Parameter } from './parameter';\n\n// By convention, Aurelia will look for any classes of the form \n// {name}ViewEngineHooks and load them as a ViewEngineHooks resource. We can\n// use the @viewEngineHooks decorator instead if we want to give the class a\n// different name.\nexport class ParameterModeViewEngineHooks implements ViewEngineHooks {\n  \n  // The `beforeBind` method is called before the ViewModel is bound to\n  // the view. We want to expose the enum to the binding context so that\n  // when Aurelia binds the data it will find our MediaType enum.\n  beforeBind(view: View) {\n\n    // We add the enum to the override context. This will expose the enum\n    // to the view without interfering with any properties on the\n    // bindingContext itself.\n    view.overrideContext['Parameter'] = Parameter;\n\n    // Since TypeScript enums are not iterable, we need to do a bit of extra\n    // legwork if we plan on iterating over the enum keys.\n    view.overrideContext['Parameters'] = \n      Object.keys(Parameter)\n        .filter((key) => typeof Parameter[key] === 'number');\n  }\n}\n"],"sourceRoot":""}